*.a
*.bck
-*.cgi
+/cgi-bin/*.cgi
*.o
autom4te.cache
config.h
- exclude: cpp/integer-multiplication-cast-to-long
- exclude: cpp/missing-header-guard
- exclude: cpp/short-global-name
+ - exclude: cpp/tainted-format-string
+ - exclude: cpp/toctou-race-condition
+ - exclude: cpp/constant-comparison
-CHANGES - 2.3.1 - 2019-11-18
-============================
+Change History
+==============
+
+Changes in CUPS v2.3.6
+----------------------
+- CVE-2022-26691: An incorrect comparison in local admin authentication.
+
+
+Changes in CUPS v2.3.5
+----------------------
+
+- The automated test suite can now be activated using `make test` for
+ consistency with other projects and CI environments - the old `make check`
+ continues to work as well, and the previous test server behavior can be
+ accessed by running `make testserver`.
+- ippeveprinter now supports multiple icons and strings files.
+- ippeveprinter now uses the system's FQDN with Avahi.
+- ippeveprinter now supports Get-Printer-Attributes on "/".
+- ippeveprinter now uses a deterministic "printer-uuid" value.
+- ippeveprinter now uses system sounds on macOS for Identify-Printer.
+- Updated ippfind to look for files in "~/Desktop" on Windows.
+- Updated ippfind to honor `SKIP-XXX` directives with `PAUSE`.
+- Updated IPP Everywhere support to work around printers that only advertise
+ color raster support but really also support grayscale (OpenPrinting #1)
+- ipptool now supports DNS-SD URIs like `ipps://My%20Printer._ipps._tcp.local`
+ (OpenPrinting #5)
+- ipptool now supports monitoring the printer state while submitting a job
+ with the `MONITOR-PRINTER-STATE` directive (OpenPrinting #153)
+- ipptool now supports testing for unique values with the `WITH-DISTINCT-VALUES`
+ predicate (OpenPrinting #153)
+- ipptool now supports retrying requests on a `server-error-busy` status code
+ (OpenPrinting #153)
+- ipptool now supports `value-tag(MAX)` and `value-tag(MIN:MAX)` for the
+ `OF-TYPE` predicate (OpenPrinting #153)
+- The scheduler now allows root backends to have world read permissions but not
+ world execute permissions (OpenPrinting #21)
+- Failures to bind IPv6 listener sockets no longer cause errors if IPv6 is
+ disabled on the host (OpenPrinting #25)
+- The SNMP backend now supports the HP and Ricoh vendor MIBs (OpenPrinting #28)
+- The scheduler no longer includes a timestamp in files it writes (OpenPrinting #29)
+- IPP Everywhere PPDs could have an "unknown" default InputSlot (OpenPrinting #44)
+- The `httpAddrListen` function now uses a listen backlog of 128.
+- The PPD functions now treat boolean values as case-insensitive (OpenPrinting #106)
+- Temporary queue names no longer end with an underscore (OpenPrinting #110)
+- Added USB quirks (Issue #5789, #5766, #5823, #5831, #5838, #5843, #5867)
+- Fixed IPP Everywhere v1.1 conformance issues in ippeveprinter.
+- Fixed DNS-SD name collision support in ippeveprinter.
+- Fixed compiler and code analyzer warnings.
+- Fixed TLS support on Windows.
+- Fixed ippfind sub-type searches with Avahi.
+- Fixed the default hostname used by ippeveprinter on macOS.
+- Fixed resolution of local IPP-USB printers with Avahi.
+- Fixed coverity issues (OpenPrinting #2)
+- Fixed `httpAddrConnect` issues (OpenPrinting #3)
+- Fixed web interface device URI issue (OpenPrinting #4)
+- Fixed lp/lpr "printer/class not found" error reporting (OpenPrinting #6)
+- Fixed a memory leak in the scheduler (OpenPrinting #12)
+- Fixed a potential integer overflow in the PPD hashing code (OpenPrinting #13)
+- Fixed output-bin and print-quality handling issues (OpenPrinting #18)
+- Fixed PPD options getting mapped to odd IPP values like "tray---4" (OpenPrinting #23)
+- Fixed remote access to the cupsd.conf and log files (OpenPrinting #24)
+- Fixed a logging regression caused by a previous change for Issue #5604
+ (OpenPrinting #25)
+- Fixed the "uri-security-supported" value from the scheduler (OpenPrinting #42)
+- Fixed IPP backend crash bug with "printer-alert" values (OpenPrinting #43)
+- Fixed default options that incorrectly use the "custom" prefix (OpenPrinting #48)
+- Fixed a memory leak when resolving DNS-SD URIs (OpenPrinting #49)
+- Fixed cupsManualCopies values in IPP Everywhere PPDs (Issue #5807)
+- Fixed duplicate ColorModel entries for AirPrint printers (Issue 59)
+- Fixed crash bug in `ppdOpen` (OpenPrinting #64, OpenPrinting #78)
+- Fixed regression in `snprintf` emulation function (OpenPrinting #67)
+- Fixed reporting of printer instances when enumerating and when no options are
+ set for the main instance (OpenPrinting #71)
+- Fixed segfault in help.cgi when searching in man pages (OpenPrinting #81)
+- Fixed a bug in ipptool that caused the reuse of request IDs when repeating a
+ test (OpenPrinting #153)
+- Root certificates were incorrectly stored in "~/.cups/ssl".
+- Fixed a PPD memory leak caused by emulator definitions (OpenPrinting #124)
+- Fixed a `DISPLAY` bug in `ipptool` (OpenPrinting #139)
+- `httpReconnect2` did not reset the socket file descriptor when the TLS
+ negotiation failed (Issue #5907)
+- `httpUpdate` did not reset the socket file descriptor when the TLS
+ negotiation failed (Apple #5915)
+- The `ippeveprinter` tool now automatically uses an available port.
+- The IPP backend now retries Validate-Job requests (OpenPrinting #132)
+- Removed support for the (long deprecated and unused) `KeepAliveTimeout`
+ directive in `cupsd.conf` (Issue #5733)
+- Fixed `@IF(name)` handling in `cupsd.conf` (Issue #5918)
+- The scheduler now supports the "everywhere" model directly (Issue #5919)
+- Fixed documentation and added examples for CUPS' limited CGI support
+ (Issue #5940)
+- Fixed the `lpc` command prompt (Issue #5946)
+- Fixed `job-pages-per-set` value for duplex print jobs.
+
+
+Changes in CUPS v2.3.4
+----------------------
+
+- CVE-2020-10001: Fixed a buffer (read) overflow in the `ippReadIO` function.
+
+
+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
----------------------
- Documentation updates (Issue #5661, #5674, #5682)
+- CVE-2019-2228: The `ippSetValuetag` function did not validate the default
+ language value.
- Fixed a crash bug in the web interface (Issue #5621)
+- The PPD cache code now looks up page sizes using their dimensions
+ (Issue #5633)
- PPD files containing "custom" option keywords did not work (Issue #5639)
- Added a workaround for the scheduler's systemd support (Issue #5640)
- On Windows, TLS certificates generated on February 29 would likely fail
- The libusb-based USB backend now reports an error when the distribution
permissions are wrong (Issue #5658)
- Added paint can labels to Dymo driver (Issue #5662)
+- The `ippeveprinter` program now supports authentication (Issue #5665)
+- The `ippeveprinter` program now advertises DNS-SD services on the correct
+ interfaces, and provides a way to turn them off (Issue #5666)
- The `--with-dbusdir` option was ignored by the configure script (Issue #5671)
- Sandboxed applications were not able to get the default printer (Issue #5676)
- Log file access controls were not preserved by `cupsctl` (Issue #5677)
- Default printers set with `lpoptions` did not work in all cases (Issue #5681,
Issue #5683, Issue #5684)
+- Fixed an error in the jobs web interface template (Issue #5694)
+- Fixed an off-by-one error in `ippEnumString` (Issue #5695)
+- Fixed some new compiler warnings (Issue #5700)
+- Fixed a few issues with the Apple Raster support (rdar://55301114)
- The IPP backend did not detect all cases where a job should be retried using
a raster format (rdar://56021091)
- Fixed spelling of "fold-accordion".
- Fixed the default common name for TLS certificates used by `ippeveprinter`.
- Fixed the option names used for IPP Everywhere finishing options.
+- Added support for the second roll of the DYMO Twin/DUO label printers.
Changes in CUPS v2.3.0
-INSTALL - CUPS v2.3.0 - 2019-08-21
+INSTALL - CUPS v2.3.6 - 2022-05-25
==================================
This file describes how to compile and install CUPS from source code. For more
#
# Top-level Makefile for CUPS.
#
-# Copyright © 2007-2019 by Apple Inc.
+# Copyright © 2007-2021 by Apple Inc.
# Copyright © 1997-2007 by Easy Software Products, all rights reserved.
#
# Licensed under Apache License v2.0. See the file "LICENSE" for more
# Run the test suite...
#
-test: all unittests
- echo Running CUPS test suite...
+testserver: all unittests
+ echo Running CUPS test server...
cd test; ./run-stp-tests.sh $(TESTOPTIONS)
-check: all unittests
+check test: all unittests
echo Running CUPS test suite with defaults...
cd test; ./run-stp-tests.sh 1 0 n n
-debugcheck: all unittests
+debugcheck debugtest: all unittests
echo Running CUPS test suite with debug printfs...
cd test; ./run-stp-tests.sh 1 0 n y
-README - CUPS v2.3.1 - 2019-10-07
-=================================
+README - Apple CUPS v2.3.6 - 2022-05-25
+=======================================
+
+> Note: Apple CUPS is the version of CUPS that is shipped with macOS and iOS.
+> For the current version of CUPS that is used on other operating systems, see
+> <https://openprinting.github.io/cups> for details.
+
INTRODUCTION
------------
LEGAL STUFF
-----------
-Copyright © 2007-2019 by Apple Inc.
+Copyright © 2007-2021 by Apple Inc.
Copyright © 1997-2007 by Easy Software Products.
CUPS is provided under the terms of the Apache License, Version 2.0 with
/*
* Backend support definitions for CUPS.
*
- * Copyright © 2007-2014 by Apple Inc.
+ * Copyright © 2021 by OpenPrinting
+ * Copyright © 2007-2021 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
# endif /* __cplusplus */
+/*
+ * Log messages in backend signal handlers or other places where stdio cannot
+ * be used...
+ */
+
+# define backendMessage(msg) {const char *s = msg; write(2, s, strlen(s));}
+
+
/*
* OID constants...
*/
extern int backendWaitLoop(int snmp_fd, http_addr_t *addr,
int use_bc, _cups_sccb_t side_cb);
-
# ifdef __cplusplus
}
# endif /* __cplusplus */
/*
* IPP backend for CUPS.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2021 by OpenPrinting
+ * Copyright © 2007-2021 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
int waitjob, /* Wait for job complete? */
waitjob_tries = 0, /* Number of times we've waited */
waitprinter; /* Wait for printer ready? */
- time_t waittime; /* Wait time for held jobs */
_cups_monitor_t monitor; /* Monitoring data */
ipp_attribute_t *job_id_attr; /* job-id attribute */
int job_id; /* job-id value */
get_job_attrs = 0, /* Does printer support Get-Job-Attributes? */
send_document = 0, /* Does printer support Send-Document? */
validate_job = 0, /* Does printer support Validate-Job? */
+ validate_retried = 0, /* Was Validate-Job request retried? */
copies, /* Number of copies for job */
copies_remaining; /* Number of copies remaining */
const char *content_type, /* CONTENT_TYPE environment variable */
ipp_status == IPP_STATUS_ERROR_BAD_REQUEST)
break;
else if (job_auth == NULL && ipp_status > IPP_STATUS_ERROR_BAD_REQUEST)
+ {
+ if (!validate_retried)
+ {
+ // Retry Validate-Job operation once, to work around known printer bug...
+ validate_retried = 1;
+ sleep(10);
+ continue;
+ }
+
goto cleanup;
+ }
}
/*
_cupsLangPrintFilter(stderr, "INFO", _("Waiting for job to complete."));
- for (delay = _cupsNextDelay(0, &prev_delay), waittime = time(NULL) + 30; !job_canceled;)
+ for (delay = _cupsNextDelay(0, &prev_delay); !job_canceled;)
{
/*
* Check for side-channel requests...
job_sheets->values[0].integer);
/*
- * Stop polling if the job is finished or pending-held for 30 seconds...
+ * Stop polling if the job is finished or pending-held...
*/
- if (job_state->values[0].integer > IPP_JSTATE_STOPPED ||
- (job_state->values[0].integer == IPP_JSTATE_HELD && time(NULL) > waittime))
+ if (job_state->values[0].integer > IPP_JSTATE_STOPPED || job_state->values[0].integer == IPP_JSTATE_HELD)
{
ippDelete(response);
break;
else if (ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED)
fputs("JOBSTATE: account-authorization-failed\n", stderr);
- if (job_canceled)
+ // job_canceled can be -1 which should not be treated as CUPS_BACKEND_OK
+ if (job_canceled > 0)
return (CUPS_BACKEND_OK);
else if (ipp_status == IPP_STATUS_ERROR_NOT_AUTHORIZED || ipp_status == IPP_STATUS_ERROR_FORBIDDEN || ipp_status == IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED)
return (CUPS_BACKEND_AUTH_REQUIRED);
*/
_httpDecodeURI(phone, keyword, sizeof(phone));
- for (ptr = phone; *ptr;)
+ ptr = phone;
+
+ /*
+ * Weed out "Custom." in the beginning, this allows to put the
+ * "phone" option as custom string option into the PPD so that
+ * print dialogs not supporting fax display the option and
+ * allow entering the phone number. Print dialogs also send "None"
+ * if no phone number got entered, filter this, too.
+ */
+ if (!_cups_strcasecmp(phone, "None"))
+ *ptr = '\0';
+ if (!_cups_strncasecmp(phone, "Custom.", 7))
+ _cups_strcpy(ptr, ptr + 7);
+
+ for (; *ptr;)
{
if (*ptr == ',')
*ptr = 'p';
ptr ++;
}
- httpAssembleURI(HTTP_URI_CODING_ALL, tel_uri, sizeof(tel_uri), "tel", NULL, NULL, 0, phone);
- ippAddString(destination, IPP_TAG_JOB, IPP_TAG_URI, "destination-uri", NULL, tel_uri);
-
- if ((keyword = cupsGetOption("faxPrefix", num_options,
- options)) != NULL && *keyword)
+ if (strlen(phone) > 0)
{
- char predial[1024]; /* Pre-dial string */
+ httpAssembleURI(HTTP_URI_CODING_ALL, tel_uri, sizeof(tel_uri), "tel", NULL, NULL, 0, phone);
+ ippAddString(destination, IPP_TAG_JOB, IPP_TAG_URI, "destination-uri", NULL, tel_uri);
+ fprintf(stderr, "DEBUG: Faxing to phone %s; destination-uri: %s\n", phone, tel_uri);
- _httpDecodeURI(predial, keyword, sizeof(predial));
- ippAddString(destination, IPP_TAG_JOB, IPP_TAG_TEXT, "pre-dial-string", NULL, predial);
- }
+ if ((keyword = cupsGetOption("faxPrefix", num_options, options)) != NULL && *keyword)
+ {
+ char predial[1024]; /* Pre-dial string */
+
+ _httpDecodeURI(predial, keyword, sizeof(predial));
+ ptr = predial;
+ if (!_cups_strcasecmp(ptr, "None"))
+ *ptr = '\0';
+ if (!_cups_strncasecmp(ptr, "Custom.", 7))
+ ptr += 7;
+ if (strlen(ptr) > 0)
+ {
+ ippAddString(destination, IPP_TAG_JOB, IPP_TAG_TEXT, "pre-dial-string", NULL, ptr);
+ fprintf(stderr, "DEBUG: Pre-dialing %s; pre-dial-string: %s\n", ptr, ptr);
+ }
+ else
+ fprintf(stderr, "WARNING: Pre-dial number for fax not valid! Sending fax without pre-dial number.\n");
+ }
- ippAddCollection(request, IPP_TAG_JOB, "destination-uris", destination);
- ippDelete(destination);
+ ippAddCollection(request, IPP_TAG_JOB, "destination-uris", destination);
+ ippDelete(destination);
+ }
+ else
+ fprintf(stderr, "ERROR: Phone number for fax not valid! Fax cannot be sent.\n");
}
}
else
* Report alerts and messages...
*/
- if ((pa = ippFindAttribute(ipp, "printer-alert", IPP_TAG_TEXT)) != NULL)
+ if ((pa = ippFindAttribute(ipp, "printer-alert", IPP_TAG_STRING)) != NULL)
report_attr(pa);
if ((pam = ippFindAttribute(ipp, "printer-alert-message",
if (*ptr < ' ' && *ptr > 0 && *ptr != '\t')
{
/*
- * Substitute "<XX>" for the control character; sprintf is safe because
- * we always leave 6 chars free at the end...
+ * Substitute "<XX>" for the control character...
*/
- sprintf(valptr, "<%02X>", *ptr);
+ snprintf(valptr, sizeof(value) - (size_t)(valptr - value), "<%02X>", *ptr);
valptr += 4;
}
else
const char *device_uri, /* I - Device URI */
int fd) /* I - File to print */
{
- const char *auth_negotiate;/* AUTH_NEGOTIATE env var */
+ const char *auth_negotiate,/* AUTH_NEGOTIATE env var */
+ *content_type; /* [FINAL_]CONTENT_TYPE env vars */
xpc_connection_t conn; /* Connection to XPC service */
xpc_object_t request; /* Request message dictionary */
__block xpc_object_t response; /* Response message dictionary */
getenv("AUTH_INFO_REQUIRED"));
if ((auth_negotiate = getenv("AUTH_NEGOTIATE")) != NULL)
xpc_dictionary_set_string(request, "auth-negotiate", auth_negotiate);
+ if ((content_type = getenv("CONTENT_TYPE")) != NULL)
+ xpc_dictionary_set_string(request, "content-type", content_type);
+ if ((content_type = getenv("FINAL_CONTENT_TYPE")) != NULL)
+ xpc_dictionary_set_string(request, "final-content-type", content_type);
xpc_dictionary_set_fd(request, "stdin", fd);
xpc_dictionary_set_fd(request, "stderr", 2);
xpc_dictionary_set_fd(request, "side-channel", CUPS_SC_FD);
{
(void)sig; /* remove compiler warnings... */
- write(2, "DEBUG: Got SIGTERM.\n", 20);
+ backendMessage("DEBUG: Got SIGTERM.\n");
#if defined(HAVE_GSSAPI) && defined(HAVE_XPC)
if (child_pid)
* Flag that the job should be canceled...
*/
- write(2, "DEBUG: sigterm_handler: job_canceled = 1.\n", 25);
+ backendMessage("DEBUG: sigterm_handler: job_canceled = 1.\n");
job_canceled = 1;
return;
* Send the control file...
*/
- if (lpd_command(fd, "\002%d cfA%03.3d%.15s\n", (int)strlen(control),
+ if (lpd_command(fd, "\002%d cfA%03d%.15s\n", (int)strlen(control),
(int)getpid() % 1000, localhost))
{
close(fd);
* Send the print file...
*/
- if (lpd_command(fd, "\003" CUPS_LLFMT " dfA%03.3d%.15s\n",
+ if (lpd_command(fd, "\003" CUPS_LLFMT " dfA%03d%.15s\n",
CUPS_LLCAST filestats.st_size, (int)getpid() % 1000,
localhost))
{
* Send control file...
*/
- if (lpd_command(fd, "\002%d cfA%03.3d%.15s\n", (int)strlen(control),
+ if (lpd_command(fd, "\002%d cfA%03d%.15s\n", (int)strlen(control),
(int)getpid() % 1000, localhost))
{
close(fd);
i < packet.object_value.string.num_bytes &&
dataptr < (data + sizeof(data) - 3);
i ++, dataptr += 2)
- sprintf(dataptr, "%02X", packet.object_value.string.bytes[i]);
+ snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%02X", packet.object_value.string.bytes[i]);
datalen += (int)strlen(dataptr);
break;
# Canon, Inc. PIXMA iP6000D Printer (https://bugs.launchpad.net/bugs/1160638)
0x04a9 0x1095 unidir
-# Canon, Inc. PIXMA iP4200 Printer (Issue #4155)
+# Canon, Inc. PIXMA iP4200 Printer (Apple #4155)
0x04a9 0x10a2 unidir
# Canon, Inc. PIXMA iP4300 Printer (https://bugs.launchpad.net/bugs/1032385)
# Canon, Inc. MP540 Printer, https://bugzilla.redhat.com/967873
0x04a9 0x1730 unidir
-# Canon, Inc. MP550 Printer (Issue #4155)
+# Canon, Inc. MP550 Printer (Apple #4155)
0x04a9 0x173d unidir
-# Canon, Inc. MP560 Printer (Issue #4155)
+# Canon, Inc. MP560 Printer (Apple #4155)
0x04a9 0x173e unidir
+# Canon, Inc. PIXMA G1501 Printer (Apple #5831)
+0x04a9 0x1796 unidir
+
# Canon, Inc. MF4150 Printer (https://bugs.launchpad.net/bugs/1160638)
0x04a9 0x26a3 no-reattach
# Samsung ML-2160 Series (https://bugzilla.redhat.com/show_bug.cgi?id=873123)
0x04e8 0x330f unidir
-# All Zebra devices (https://bugs.launchpad.net/bugs/1001028) (Issue #5395)
+# All Zebra devices (https://bugs.launchpad.net/bugs/1001028) (Apple #5395)
0x0a5f unidir no-reattach
# Canon CP-10
# Lexmark E238 (<rdar://problem/14493054>)
0x043d 0x00d7 no-reattach
-# Lexmark E238 (Issue #4448)
+# Lexmark E238 (Apple #4448)
0x043d 0x009a no-reattach
-# Canon MX310 (Issue #4482)
+# Canon MX310 (Apple #4482)
0x04a9 0x1728 unidir
-# Canon MX320 (Issue #4482)
+# Canon MX320 (Apple #4482)
0x04A9 0x1736 unidir
-# All Intermec devices (Issue #4553)
+# All Intermec devices (Apple #4553)
0x067e no-reattach
-# HP LaserJet 1015 (Issue #5617)
+# HP LaserJet 1010 (Apple #5789)
+0x03f0 0x0c17 delay-close
+
+# HP LaserJet 1015 (Apple #5617)
0x03f0 0x0e17 delay-close
-# HP LaserJet 1150 (Issue #4549)
+# HP LaserJet 1150 (Apple #4549)
0x03f0 0x0f17 delay-close
-# HP LaserJet 1300 (Issue #4549)
+# HP LaserJet 1300 (Apple #4549)
0x03f0 0x1017 delay-close
0x03f0 0x1117 delay-close
-# HP LaserJet 1320 (Issue #4549)
+# HP LaserJet 1320 (Apple #4549)
0x03f0 0x1d17 delay-close
# Canon, Inc. MP530 Printer
0x04a9 0x1712 unidir
-# Xerox WorkCentre 3220 (https://bugs.launchpad.net/bugs/1406203, Issue #4789)
+# Xerox WorkCentre 3220 (https://bugs.launchpad.net/bugs/1406203, Apple #4789)
0x0924 0x4294 no-reattach
-# Lexmark C540n (Issue #4778)
+# Lexmark C540n (Apple #4778)
0x043d 0x0139 no-reattach
-# Kyocera Ecosys P6026cdn (Issue #4900)
+# Kyocera Ecosys P6026cdn (Apple #4900)
0x0482 0x063f no-reattach
-# Kyocera Ecosys P6130cdn (Issue #5102)
+# Kyocera Ecosys P6130cdn (Apple #5102)
0x0482 0x0677 no-reattach
-# Lexmark E260dn (Issue #4994)
+# Lexmark E260dn (Apple #4994)
0x043d 0x0123 no-reattach
-# HP LaserJet 1160 (Issue #5121)
+# HP LaserJet 1160 (Apple #5121)
0x03f0 0x1e17 delay-close
-# Canon, Inc. MP280 series (Issue #5221)
+# Canon, Inc. MP280 series (Apple #5221)
0x04a9 0x1746 unidir
-# Star Micronics printers (Issue #5251)
+# Star Micronics printers (Apple #5251)
0x0519 unidir
-# Lexmark Optra E310 (Issue #5259)
+# Lexmark Optra E310 (Apple #5259)
0x043d 0x000c no-reattach
-# HP LaserJet P1102 (Issue #5310)
+# HP LaserJet P1102 (Apple #5310)
0x03F0 0x002A no-reattach
# Lexmark MS317dn
0x043d 0x0226 no-reattach
-# Star TSP743 (Issue #5443)
+# Star TSP743 (Apple #5443)
0x0519 0x0001 delay-close
-# Lexmark E120n (Issue #5478)
+# Lexmark E120n (Apple #5478)
0x043d 0x00cc no-reattach
-# All Xerox printers (Issue #5523)
+# Lexmark E120n MT4506-100 (Apple #5766)
+0x043d 0x00cd no-reattach
+
+# All Xerox printers (Apple #5523)
0x0924 no-reattach
-# Dymo 450 Turbo (Issue #5521)
-0x0922 0x0021 unidir
+# Citizen CT-S4000 (Apple #5823)
+0x2730 0x2008 unidir delay-close
+
+# All Arkscan label printers (Apple #5867)
+0x2d84 unidir no-reattach
+
+# HP DesignJet 130 (Apple #5838)
+0x03f0 0x0314 no-reattach
static const int LexmarkProductOID[] = { 1,3,6,1,4,1,641,2,1,2,1,2,1,-1 };
static const int LexmarkProductOID2[] = { 1,3,6,1,4,1,674,10898,100,2,1,2,1,2,1,-1 };
static const int LexmarkDeviceIdOID[] = { 1,3,6,1,4,1,641,2,1,2,1,3,1,-1 };
+static const int HPDeviceIdOID[] = { 1,3,6,1,4,1,11,2,3,9,1,1,7,0,-1 };
+static const int RicohDeviceIdOID[] = { 1,3,6,1,4,1,367,3,2,1,1,1,11,0,-1 };
static const int XeroxProductOID[] = { 1,3,6,1,4,1,128,2,1,3,1,2,0,-1 };
static cups_array_t *DeviceURIs = NULL;
static int HostNameLookups = 0;
#endif /* !HAVE_SIGSET && !HAVE_SIGACTION */
if (DebugLevel)
- write(2, "DEBUG: ALARM!\n", 14);
+ backendMessage("DEBUG: ALARM!\n");
}
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
packet.community, CUPS_ASN1_GET_REQUEST,
DEVICE_ID, LexmarkDeviceIdOID);
+ _cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
+ packet.community, CUPS_ASN1_GET_REQUEST,
+ DEVICE_ID, RicohDeviceIdOID);
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
packet.community, CUPS_ASN1_GET_REQUEST,
DEVICE_PRODUCT, XeroxProductOID);
+ _cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
+ packet.community, CUPS_ASN1_GET_REQUEST,
+ DEVICE_ID, HPDeviceIdOID);
break;
case DEVICE_DESCRIPTION :
#include <fcntl.h>
#include <sys/wait.h>
#include <signal.h>
+#include "backend-private.h"
/*
data = ps_data;
write(1, data, strlen(data));
- write(2, "DEBUG: START\n", 13);
+ backendMessage("DEBUG: START\n");
timeout = 60.0;
while ((bytes = cupsBackChannelRead(buffer, sizeof(buffer),
timeout)) > 0)
write(2, buffer, (size_t)bytes);
timeout = 5.0;
}
- write(2, "\nDEBUG: END\n", 12);
+ backendMessage("\nDEBUG: END\n");
}
exit(0);
/*
- * Copyright 2005-2016 Apple Inc. All rights reserved.
+ * USB backend for macOS.
+ *
+ * Copyright © 2005-2021 Apple Inc. All rights reserved.
*
* IMPORTANT: This Apple software is supplied to you by Apple Computer,
* Inc. ("Apple") in consideration of your agreement to the following
#define IS_64BIT 1
#define IS_NOT_64BIT 0
-#if defined(__i386__) || defined(__x86_64__)
+#if defined(__arm64e__)
static pid_t child_pid; /* Child PID */
-static void run_legacy_backend(int argc, char *argv[], int fd) _CUPS_NORETURN; /* Starts child backend process running as a ppc executable */
-#endif /* __i386__ || __x86_64__ */
-static void sigterm_handler(int sig); /* SIGTERM handler */
+static void run_legacy_backend(int argc, char *argv[], int fd) _CUPS_NORETURN; /* Starts child backend process running as a x86_64 executable */
+static void sigterm_handler(int sig); /* SIGTERM handler */
+#endif /* __arm64e__ */
static void sigquit_handler(int sig, siginfo_t *si, void *unused) _CUPS_NORETURN;
#ifdef PARSE_PS_ERRORS
(void)uri;
+ (void)argc;
+ (void)argv;
/*
* Catch SIGQUIT to determine who is sending it...
status = registry_open(&driverBundlePath);
-#if defined(__i386__) || defined(__x86_64__)
+#if defined(__arm64e__)
/*
* If we were unable to load the class drivers for this printer it's
- * probably because they're ppc or i386. In this case try to run this
- * backend as i386 or ppc executables so we can use them...
+ * probably because they're x86_64 (or older). In this case try to run this
+ * backend as x86_64 so we can use them...
*/
if (status == -2)
{
run_legacy_backend(argc, argv, print_fd);
/* Never returns here */
}
-#endif /* __i386__ || __x86_64__ */
+#endif /* __arm64e__ */
if (status == -2)
{
SInt32 score;
kern_return_t kr;
printer_interface_t interface;
- HRESULT res;
kr = IOCreatePlugInInterfaceForService(g.printer_obj, kIOUSBInterfaceUserClientTypeID, kIOCFPlugInInterfaceID, &iodev, &score);
if (kr == kIOReturnSuccess)
{
- if ((res = (*iodev)->QueryInterface(iodev, USB_INTERFACE_KIND, (LPVOID *) &interface)) == noErr)
+ if ((*iodev)->QueryInterface(iodev, USB_INTERFACE_KIND, (LPVOID *) &interface) == noErr)
{
*driverBundlePath = IORegistryEntryCreateCFProperty(g.printer_obj, kUSBClassDriverProperty, NULL, kNilOptions);
/* This request takes the 0 based configuration index. IOKit returns a 1 based configuration index */
configurationIndex -= 1;
- bzero(&request, sizeof(request));
+ memset(&request, 0, sizeof(request));
request.bmRequestType = USBmakebmRequestType(kUSBIn, kUSBClass, kUSBInterface);
request.bRequest = kUSBPrintClassGetDeviceID;
if (actualLength > 2 && actualLength <= bufferLength - 2)
{
- ret = CFStringCreateWithBytes(NULL, (const UInt8 *) &request.pData[2], actualLength - 2, kCFStringEncodingUTF8, false);
+ ret = CFStringCreateWithBytes(NULL, (const UInt8 *)request.pData + 2, actualLength - 2, kCFStringEncodingUTF8, false);
}
else if (actualLength > 2) {
err = sendRequest(actualLength);
if (err == kIOReturnSuccess && request.wLenDone > 0)
{
actualLength = OSSwapBigToHostInt16(*((UInt16 *)request.pData));
- ret = CFStringCreateWithBytes(NULL, (const UInt8 *) &request.pData[2], actualLength - 2, kCFStringEncodingUTF8, false);
+ ret = CFStringCreateWithBytes(NULL, (const UInt8 *)request.pData + 2, actualLength - 2, kCFStringEncodingUTF8, false);
}
}
}
IOUSBDevRequestTO request;
IOUSBDeviceDescriptor desc;
- bzero(&request, sizeof(request));
+ memset(&request, 0, sizeof(request));
request.bmRequestType = USBmakebmRequestType( kUSBIn, kUSBStandard, kUSBDevice );
request.bRequest = kUSBRqGetDescriptor;
CFStringAppendFormat(extras, NULL, CFSTR("MDL:%@;"), model);
}
- if (serial == NULL && desc.iSerialNumber != 0)
+ if (desc.iSerialNumber != 0)
{
- serial = copy_printer_interface_indexed_description(printer, desc.iSerialNumber, kUSBLanguageEnglish);
- if (serial && CFStringGetLength(serial) > 0)
- CFStringAppendFormat(extras, NULL, CFSTR("SERN:%@;"), serial);
+ // Always look at the USB serial number since some printers
+ // incorrectly include a bogus static serial number in their
+ // IEEE-1284 device ID string...
+ CFStringRef userial = copy_printer_interface_indexed_description(printer, desc.iSerialNumber, kUSBLanguageEnglish);
+ if (userial && CFStringGetLength(userial) > 0 && (serial == NULL || CFStringCompare(serial, userial, kCFCompareCaseInsensitive) != kCFCompareEqualTo))
+ {
+ if (serial != NULL)
+ {
+ // 1284 serial number doesn't match USB serial number, so replace the existing SERN: in device ID
+ CFRange range = CFStringFind(ret, serial, 0);
+ CFMutableStringRef deviceIDString = CFStringCreateMutableCopy(NULL, 0, ret);
+ CFStringReplace(deviceIDString, range, userial);
+ CFRelease(ret);
+ ret = deviceIDString;
+
+ CFRelease(serial);
+ }
+ else
+ {
+ // No 1284 serial number so add SERN: with USB serial number to device ID
+ CFStringAppendFormat(extras, NULL, CFSTR("SERN:%@;"), userial);
+ }
+ serial = userial;
+ }
+ else if (userial != NULL)
+ CFRelease(userial);
}
if (ret != NULL)
{
CFStringAppend(extras, ret);
CFRelease(ret);
-
- ret = extras;
- }
- else
- {
- ret = extras;
}
+ ret = extras;
}
}
if (ret != NULL)
{
- /* Remove special characters from the serial number */
- CFRange range = (serial != NULL ? CFStringFind(serial, CFSTR("+"), 0) : CFRangeMake(0, 0));
- if (range.length == 1)
- {
- range = CFStringFind(ret, serial, 0);
+ /* Remove special characters from the serial number */
+ CFRange range = (serial != NULL ? CFStringFind(serial, CFSTR("+"), 0) : CFRangeMake(0, 0));
+ if (range.length == 1)
+ {
+ range = CFStringFind(ret, serial, 0);
- CFMutableStringRef deviceIDString = CFStringCreateMutableCopy(NULL, 0, ret);
- CFRelease(ret);
+ CFMutableStringRef deviceIDString = CFStringCreateMutableCopy(NULL, 0, ret);
+ CFRelease(ret);
- ret = deviceIDString;
- CFStringFindAndReplace(deviceIDString, CFSTR("+"), CFSTR(""), range, 0);
- }
+ ret = deviceIDString;
+ CFStringFindAndReplace(deviceIDString, CFSTR("+"), CFSTR(""), range, 0);
+ }
}
if (manufacturer != NULL)
UInt8 description[256]; // Max possible descriptor length
IOUSBDevRequestTO request;
- bzero(description, 2);
+ memset(description, 0, 2);
request.bmRequestType = USBmakebmRequestType(kUSBIn, kUSBStandard, kUSBDevice);
request.bRequest = kUSBRqGetDescriptor;
err = (*printer)->ControlRequestTO(printer, 0, &request);
if (err != kIOReturnSuccess && err != kIOReturnOverrun)
{
- bzero(description, request.wLength);
+ memset(description, 0, request.wLength);
// Let's try again full length. Here's why:
// On USB 2.0 controllers, we will not get an overrun error. We just get a "babble" error
request.wValue = (kUSBStringDesc << 8) | index;
request.wIndex = language;
- bzero(description, length);
+ memset(description, 0, length);
request.wLength = (UInt16)length;
request.pData = &description;
request.completionTimeout = 0;
if ((description[0] & 1) != 0)
description[0] &= 0xfe;
- char buffer[258] = {};
+ char buffer[258] = {0};
unsigned int maxLength = sizeof buffer;
if (description[0] > 1)
{
}
#pragma mark -
-#if defined(__i386__) || defined(__x86_64__)
+#if defined(__arm64e__)
/*!
* @function run_legacy_backend
*
- * @abstract Starts child backend process running as a ppc or i386 executable.
+ * @abstract Starts child backend process running as a x86_64 executable.
*
* @result Never returns; always calls exit().
*
/*
- * If we're running as x86_64 or i386 and couldn't load the class driver
- * (because it's ppc or i386), then try to re-exec ourselves in ppc or i386
- * mode to try again. If we don't have a ppc or i386 architecture we may be
+ * If we're running as ARM and couldn't load the class driver
+ * (because it's x86_64, i386 or ppc), then try to re-exec ourselves in x86_64
+ * mode to try again. If we don't have that architecture we may be
* running with the same architecture again so guard against this by setting
* and testing an environment variable...
*/
-# ifdef __x86_64__
- usb_legacy_status = getenv("USB_I386_STATUS");
-# else
- usb_legacy_status = getenv("USB_PPC_STATUS");
-# endif /* __x86_64__ */
+ usb_legacy_status = getenv("USB_LEGACY_STATUS");
if (!usb_legacy_status)
{
* Set the environment variable...
*/
-# ifdef __x86_64__
- setenv("USB_I386_STATUS", "1", false);
-# else
- setenv("USB_PPC_STATUS", "1", false);
-# endif /* __x86_64__ */
+ setenv("USB_LEGACY_STATUS", "1", false);
/*
* Tell the kernel to use the specified CPU architecture...
*/
-# ifdef __x86_64__
- cpu_type_t cpu = CPU_TYPE_I386;
-# else
- cpu_type_t cpu = CPU_TYPE_POWERPC;
-# endif /* __x86_64__ */
+ cpu_type_t cpu = CPU_TYPE_X86_64;
size_t ocount = 1;
posix_spawnattr_t attrs;
posix_spawnattr_setsigdefault(&attrs, &oldmask);
if (posix_spawnattr_setbinpref_np(&attrs, 1, &cpu, &ocount) || ocount != 1)
{
-# ifdef __x86_64__
- perror("DEBUG: Unable to set binary preference to i386");
-# else
- perror("DEBUG: Unable to set binary preference to ppc");
-# endif /* __x86_64__ */
+ perror("DEBUG: Unable to set binary preference to X86_64");
_cupsLangPrintFilter(stderr, "ERROR",
_("Unable to use legacy USB class driver."));
exit(CUPS_BACKEND_STOP);
exit(exitstatus);
}
-#endif /* __i386__ || __x86_64__ */
-
/*
* 'sigterm_handler()' - SIGTERM handler.
static void
sigterm_handler(int sig) /* I - Signal */
{
-#if defined(__i386__) || defined(__x86_64__)
/*
* If we started a child process pass the signal on to it...
*/
_exit(0);
else
{
- write(2, "DEBUG: Child crashed.\n", 22);
+ backendMessage("DEBUG: Child crashed.\n");
_exit(CUPS_BACKEND_STOP);
}
}
-#endif /* __i386__ || __x86_64__ */
}
+#endif /* __arm64e__ */
/*
/*
* LIBUSB interface code for CUPS.
*
- * Copyright 2007-2019 by Apple Inc.
+ * Copyright 2007-2020 by Apple Inc.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
protocol = 0;
for (altset = 0, altptr = ifaceptr->altsetting;
- altset < (uint8_t)ifaceptr->num_altsetting;
+ altset < ifaceptr->num_altsetting; // lgtm [cpp/comparison-with-wider-type]
altset ++, altptr ++)
{
/*
* for USB printer devices. We get the honor of trying them all...
*/
- sprintf(device, "/dev/usblp%d", i);
+ snprintf(device, sizeof(device), "/dev/usblp%d", i);
if ((fd = open(device, O_RDWR | O_EXCL)) < 0)
{
if (errno != ENOENT)
continue;
- sprintf(device, "/dev/usb/lp%d", i);
+ snprintf(device, sizeof(device), "/dev/usb/lp%d", i);
if ((fd = open(device, O_RDWR | O_EXCL)) < 0)
{
if (errno != ENOENT)
continue;
- sprintf(device, "/dev/usb/usblp%d", i);
+ snprintf(device, sizeof(device), "/dev/usb/usblp%d", i);
if ((fd = open(device, O_RDWR | O_EXCL)) < 0)
continue;
for (i = 0; i < 8; i ++)
{
- sprintf(device, "/dev/usb/printer%d", i);
+ snprintf(device, sizeof(device), "/dev/usb/printer%d", i);
if ((fd = open(device, O_WRONLY | O_EXCL)) >= 0)
{
for (i = 0; i < 8; i ++)
{
- sprintf(device, "/dev/ulpt%d", i);
+ snprintf(device, sizeof(device), "/dev/ulpt%d", i);
if (!access(device, 0))
printf("direct usb:%s \"Unknown\" \"USB Printer #%d\"\n", device, i + 1);
- sprintf(device, "/dev/unlpt%d", i);
+ snprintf(device, sizeof(device), "/dev/unlpt%d", i);
if (!access(device, 0))
printf("direct usb:%s \"Unknown\" \"USB Printer #%d (no reset)\"\n", device, i + 1);
}
* for USB printer devices. We get the honor of trying them all...
*/
- sprintf(device, "/dev/usblp%d", i);
+ snprintf(device, sizeof(device), "/dev/usblp%d", i);
if ((fd = open(device, O_RDWR | O_EXCL)) < 0 && errno == ENOENT)
{
- sprintf(device, "/dev/usb/lp%d", i);
+ snprintf(device, sizeof(device), "/dev/usb/lp%d", i);
if ((fd = open(device, O_RDWR | O_EXCL)) < 0 && errno == ENOENT)
{
- sprintf(device, "/dev/usb/usblp%d", i);
+ snprintf(device, sizeof(device), "/dev/usb/usblp%d", i);
if ((fd = open(device, O_RDWR | O_EXCL)) < 0 && errno == ENOENT)
continue;
{
for (i = 0, busy = 0; i < 8; i ++)
{
- sprintf(device, "/dev/usb/printer%d", i);
+ snprintf(device, sizeof(device), "/dev/usb/printer%d", i);
if ((fd = open(device, O_WRONLY | O_EXCL)) >= 0)
backendGetDeviceID(fd, device_id, sizeof(device_id),
static int compare_strings(const char *, const char *, size_t);
static void do_command(http_t *, const char *, const char *);
static void show_help(const char *);
+static void show_prompt(const char *message);
static void show_status(http_t *, const char *);
* Do the command prompt thing...
*/
- _cupsLangPuts(stdout, _("lpc> ")); /* TODO: Need no-newline version */
+ show_prompt(_("lpc> "));
while (fgets(line, sizeof(line), stdin) != NULL)
{
/*
* Nothing left, just show a prompt...
*/
- _cupsLangPuts(stdout, _("lpc> ")); /* TODO: Need no newline version */
+ show_prompt(_("lpc> "));
continue;
}
* Put another prompt out to the user...
*/
- _cupsLangPuts(stdout, _("lpc> ")); /* TODO: Need no newline version */
+ show_prompt(_("lpc> "));
}
}
}
+/*
+ * 'show_prompt()' - Show a localized prompt message.
+ */
+
+static void
+show_prompt(const char *message) /* I - Message string to use */
+{
+ ssize_t bytes; /* Number of bytes formatted */
+ char output[8192]; /* Message buffer */
+ cups_lang_t *lang = cupsLangDefault();
+ /* Default language */
+
+ /*
+ * Transcode to the destination charset and write the prompt...
+ */
+
+ if ((bytes = cupsUTF8ToCharset(output, (cups_utf8_t *)_cupsLangString(lang, message), sizeof(output), lang->encoding)) > 0)
+ {
+ fwrite(output, 1, (size_t)bytes, stdout);
+ fflush(stdout);
+ }
+}
+
+
/*
* 'show_status()' - Show printers.
*/
/*
* Administration CGI for CUPS.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2007-2021 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
static char *get_option_value(ppd_file_t *ppd, const char *name,
char *buffer, size_t bufsize);
static double get_points(double number, const char *uval);
-static char *get_printer_ppd(const char *uri, char *buffer, size_t bufsize);
/*
* bytes left in the array...
*/
- sprintf(ptr, "%%%02X", *url & 255);
+ snprintf(ptr, sizeof(encoded) - (size_t)(ptr - encoded), "%%%02X", *url & 255);
ptr += 3;
}
else
cgiSetVariable("TEMPLATE_NAME", template);
}
+
+ /*
+ * Set DEVICE_URI to the actual device uri, without make and model from
+ * html form.
+ */
+
+ cgiSetVariable("DEVICE_URI", var);
}
}
break;
else
{
- sprintf(baudrate, "%d", baudrates[i]);
+ snprintf(baudrate, sizeof(baudrate), "%d", baudrates[i]);
cgiSetArray("BAUDRATES", i, baudrate);
}
if (!file)
{
var = cgiGetVariable("PPD_NAME");
- if (!strcmp(var, "everywhere"))
- get_printer_ppd(cgiGetVariable("DEVICE_URI"), evefile, sizeof(evefile));
- else if (strcmp(var, "__no_change__"))
+ if (strcmp(var, "__no_change__"))
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name",
NULL, var);
}
else /* Points */
return (number);
}
-
-
-/*
- * 'get_printer_ppd()' - Get an IPP Everywhere PPD file for the given URI.
- */
-
-static char * /* O - Filename or NULL */
-get_printer_ppd(const char *uri, /* I - Printer URI */
- char *buffer, /* I - Filename buffer */
- size_t bufsize) /* I - Size of filename buffer */
-{
- http_t *http; /* Connection to printer */
- ipp_t *request, /* Get-Printer-Attributes request */
- *response; /* Get-Printer-Attributes response */
- char resolved[1024], /* Resolved URI */
- scheme[32], /* URI scheme */
- userpass[256], /* Username:password */
- host[256], /* Hostname */
- resource[256]; /* Resource path */
- int port; /* Port number */
- static const char * const pattrs[] = /* Printer attributes we need */
- {
- "all",
- "media-col-database"
- };
-
-
- /*
- * Connect to the printer...
- */
-
- if (strstr(uri, "._tcp"))
- {
- /*
- * Resolve URI...
- */
-
- if (!_httpResolveURI(uri, resolved, sizeof(resolved), _HTTP_RESOLVE_DEFAULT, NULL, NULL))
- {
- fprintf(stderr, "ERROR: Unable to resolve \"%s\".\n", uri);
- return (NULL);
- }
-
- uri = resolved;
- }
-
- if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
- {
- fprintf(stderr, "ERROR: Bad printer URI \"%s\".\n", uri);
- return (NULL);
- }
-
- http = httpConnect2(host, port, NULL, AF_UNSPEC, !strcmp(scheme, "ipps") ? HTTP_ENCRYPTION_ALWAYS : HTTP_ENCRYPTION_IF_REQUESTED, 1, 30000, NULL);
- if (!http)
- {
- fprintf(stderr, "ERROR: Unable to connect to \"%s:%d\": %s\n", host, port, cupsLastErrorString());
- return (NULL);
- }
-
- /*
- * Send a Get-Printer-Attributes request...
- */
-
- request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
- ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
- ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", (int)(sizeof(pattrs) / sizeof(pattrs[0])), NULL, pattrs);
- response = cupsDoRequest(http, request, resource);
-
- if (!_ppdCreateFromIPP(buffer, bufsize, response))
- fprintf(stderr, "ERROR: Unable to create PPD file: %s\n", strerror(errno));
-
- ippDelete(response);
- httpClose(http);
-
- if (buffer[0])
- return (buffer);
- else
- return (NULL);
-}
if (first < 0)
first = 0;
- sprintf(val, "%d", count);
+ snprintf(val, sizeof(val), "%d", count);
cgiSetVariable("TOTAL", val);
for (i = 0, pclass = (ipp_attribute_t *)cupsArrayIndex(classes, first);
if (first > 0)
{
- sprintf(val, "%d", first - CUPS_PAGE_MAX);
+ snprintf(val, sizeof(val), "%d", first - CUPS_PAGE_MAX);
cgiSetVariable("PREV", val);
}
if ((first + CUPS_PAGE_MAX) < count)
{
- sprintf(val, "%d", first + CUPS_PAGE_MAX);
+ snprintf(val, sizeof(val), "%d", first + CUPS_PAGE_MAX);
cgiSetVariable("NEXT", val);
}
*/
for (; node; node = (help_node_t *)cupsArrayNext(hi->nodes))
- if (section && strcmp(node->section, section))
+ if (node->section && section && strcmp(node->section, section))
continue;
else if (filename && strcmp(node->filename, filename))
continue;
char buf[255]; /* Number buffer */
- sprintf(buf, "%d", attr->values[i].integer);
+ snprintf(buf, sizeof(buf), "%d", attr->values[i].integer);
if (cgiDoSearch(search, buf))
add = 1;
char temp[255]; /* Temporary string */
- sprintf(temp, "%d", job_id);
+ snprintf(temp, sizeof(temp), "%d", job_id);
cgiSetVariable("JOB_ID", temp);
}
cgiSetVariable("SECTION", section);
- sprintf(val, "%d", count);
+ snprintf(val, sizeof(val), "%d", count);
cgiSetVariable("TOTAL", val);
if (which_jobs)
if (first > 0)
{
- sprintf(val, "%d", first - CUPS_PAGE_MAX);
+ snprintf(val, sizeof(val), "%d", first - CUPS_PAGE_MAX);
cgiSetVariable("PREV", val);
}
if ((first + CUPS_PAGE_MAX) < count)
{
- sprintf(val, "%d", first + CUPS_PAGE_MAX);
+ snprintf(val, sizeof(val), "%d", first + CUPS_PAGE_MAX);
cgiSetVariable("NEXT", val);
}
if (first < 0)
first = 0;
- sprintf(val, "%d", count);
+ snprintf(val, sizeof(val), "%d", count);
cgiSetVariable("TOTAL", val);
for (i = 0, printer = (ipp_attribute_t *)cupsArrayIndex(printers, first);
if (first > 0)
{
- sprintf(val, "%d", first - CUPS_PAGE_MAX);
+ snprintf(val, sizeof(val), "%d", first - CUPS_PAGE_MAX);
cgiSetVariable("PREV", val);
}
if ((first + CUPS_PAGE_MAX) < count)
{
- sprintf(val, "%d", first + CUPS_PAGE_MAX);
+ snprintf(val, sizeof(val), "%d", first + CUPS_PAGE_MAX);
cgiSetVariable("NEXT", val);
}
{
FILE *in; /* Input file */
-
fprintf(stderr, "DEBUG2: cgiCopyTemplateFile(out=%p, tmpl=\"%s\")\n", out,
tmpl ? tmpl : "(null)");
if ((in = fopen(tmpl, "r")) == NULL)
{
fprintf(stderr, "ERROR: Unable to open template file \"%s\" - %s\n",
- tmpl ? tmpl : "(null)", strerror(errno));
+ tmpl, strerror(errno));
return;
}
* Convert the language to a locale name...
*/
- locale[0] = '\0';
-
if ((lang = getenv("LANG")) != NULL)
{
locale[0] = '/';
if ((locptr = strchr(locale, '.')) != NULL)
*locptr = '\0'; /* Strip charset */
}
+ else
+ {
+ locale[0] = '\0';
+ }
fprintf(stderr, "DEBUG2: lang=\"%s\", locale=\"%s\"...\n",
lang ? lang : "(null)", locale);
*/
if (name[1])
- sprintf(outval, "%d", cgiGetSize(name + 1));
+ snprintf(outval, sizeof(outval), "%d", cgiGetSize(name + 1));
else
- sprintf(outval, "%d", element + 1);
+ snprintf(outval, sizeof(outval), "%d", element + 1);
outptr = outval;
}
continue;
else if (ch == '#')
{
- sprintf(s, "%d", element + 1);
+ snprintf(s, sizeof(compare) - (size_t)(s - compare), "%d", element + 1);
s += strlen(s);
}
else if (ch == '{')
*innerptr = '\0';
if (innername[0] == '#')
- sprintf(s, "%d", cgiGetSize(innername + 1));
+ snprintf(s, sizeof(compare) - (size_t)(s - compare), "%d", cgiGetSize(innername + 1));
else if ((innerptr = strrchr(innername, '-')) != NULL &&
isdigit(innerptr[1] & 255))
{
/*
* CGI form variable and array functions for CUPS.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2007-2020 by Apple Inc.
* Copyright © 1997-2005 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
if (boundary)
boundary += 9;
- if (content_type && !strncmp(content_type, "multipart/form-data; ", 21))
+ if (!strncmp(content_type, "multipart/form-data; ", 21))
{
if (!cgi_initialize_multipart(boundary))
return (0);
*/
length = (size_t)strtol(content_length, NULL, 10);
- data = malloc(length + 1); /* lgtm [cpp/uncontrolled-allocation-size] */
+ data = malloc(length + 1); // lgtm [cpp/uncontrolled-allocation-size]
if (data == NULL)
return (0);
--- /dev/null
+application/x-httpd-cgi cgi php
dnl
dnl Compiler stuff for CUPS.
dnl
-dnl Copyright 2007-2018 by Apple Inc.
+dnl Copyright 2007-2020 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
fi
# Add useful warning options for tracking down problems...
- WARNING_OPTIONS="-Wall -Wno-format-y2k -Wunused -Wno-unused-result -Wsign-conversion"
+ WARNING_OPTIONS="-Wall -Wno-format-y2k -Wunused -Wno-unused-result -Wsign-conversion -Wno-unused-but-set-variable -Wno-unused-variable"
# Test GCC version for certain warning flags since -Werror
# 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.* | 9.*)
+ WARNING_OPTIONS="$WARNING_OPTIONS -Wno-format-truncation -Wno-tautological-compare"
;;
esac
# Additional warning options for development testing...
if test -d .git; then
- WARNING_OPTIONS="-Werror -Wno-error=deprecated-declarations $WARNING_OPTIONS"
+ WARNING_OPTIONS="-Werror -Wno-error=deprecated-declarations -Wno-unknown-warning-option $WARNING_OPTIONS"
fi
else
# Add vendor-specific compiler options...
#! /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.6.
#
# Report bugs to <https://github.com/apple/cups/issues>.
#
# 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.6'
+PACKAGE_STRING='CUPS 2.3.6'
PACKAGE_BUGREPORT='https://github.com/apple/cups/issues'
PACKAGE_URL='https://www.cups.org/'
# 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.6 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
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.6:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-CUPS configure 2.3.1
+CUPS configure 2.3.6
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
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.6, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
ac_config_headers="$ac_config_headers config.h"
-CUPS_VERSION="2.3.1"
+CUPS_VERSION="2.3.6"
CUPS_REVISION=""
CUPS_BUILD="cups-$CUPS_VERSION"
fi
# Add useful warning options for tracking down problems...
- WARNING_OPTIONS="-Wall -Wno-format-y2k -Wunused -Wno-unused-result -Wsign-conversion"
+ WARNING_OPTIONS="-Wall -Wno-format-y2k -Wunused -Wno-unused-result -Wsign-conversion -Wno-unused-but-set-variable -Wno-unused-variable"
# Test GCC version for certain warning flags since -Werror
# 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
# Additional warning options for development testing...
if test -d .git; then
- WARNING_OPTIONS="-Werror -Wno-error=deprecated-declarations $WARNING_OPTIONS"
+ WARNING_OPTIONS="-Werror -Wno-error=deprecated-declarations -Wno-unknown-warning-option $WARNING_OPTIONS"
fi
else
# Add vendor-specific compiler options...
# 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.6, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
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.6
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
dnl
dnl Configuration script for CUPS.
dnl
-dnl Copyright © 2007-2019 by Apple Inc.
+dnl Copyright © 2007-2021 by Apple Inc.
dnl Copyright © 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more
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.6], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
sinclude(config-scripts/cups-opsys.m4)
sinclude(config-scripts/cups-common.m4)
# define cups_gss_printf(major, minor, message)
# endif /* DEBUG */
#endif /* HAVE_GSSAPI */
+static int cups_is_local_connection(http_t *http);
static int cups_local_auth(http_t *http);
DEBUG_printf(("2cupsDoAuthentication: Trying scheme \"%s\"...", scheme));
#ifdef HAVE_GSSAPI
- if (!_cups_strcasecmp(scheme, "Negotiate"))
+ if (!_cups_strcasecmp(scheme, "Negotiate") && !cups_is_local_connection(http))
{
/*
- * Kerberos authentication...
+ * Kerberos authentication to remote server...
*/
int gss_status; /* Auth status */
}
else
#endif /* HAVE_GSSAPI */
- if (_cups_strcasecmp(scheme, "Basic") && _cups_strcasecmp(scheme, "Digest"))
+ if (_cups_strcasecmp(scheme, "Basic") &&
+ _cups_strcasecmp(scheme, "Digest") &&
+ _cups_strcasecmp(scheme, "Negotiate"))
{
/*
* Other schemes not yet supported...
* See if we should retry the current username:password...
*/
- if ((http->digest_tries > 1 || !http->userpass[0]) && (!_cups_strcasecmp(scheme, "Basic") || (!_cups_strcasecmp(scheme, "Digest"))))
+ if (http->digest_tries > 1 || !http->userpass[0])
{
/*
* Nope - get a new password from the user...
}
}
- if (http->authstring)
+ if (http->authstring && http->authstring[0])
{
DEBUG_printf(("1cupsDoAuthentication: authstring=\"%s\".", http->authstring));
gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
/* Output token */
-
- (void)method;
- (void)resource;
-
# ifdef __APPLE__
/*
* If the weak-linked GSSAPI/Kerberos library is not present, don't try
}
}
}
+# else
+ (void)method;
+ (void)resource;
# endif /* HAVE_GSS_ACQUIRED_CRED_EX_F */
if (major_status == GSS_S_NO_CRED)
* Skip quoted value...
*/
- www_authenticate ++;
- while (*www_authenticate && *www_authenticate != '\"')
+ do
www_authenticate ++;
+ while (*www_authenticate && *www_authenticate != '\"');
DEBUG_printf(("9cups_auth_find: After quoted: \"%s\"", www_authenticate));
}
# endif /* DEBUG */
#endif /* HAVE_GSSAPI */
+static int /* O - 0 if not a local connection */
+ /* 1 if local connection */
+cups_is_local_connection(http_t *http) /* I - HTTP connection to server */
+{
+ if (!httpAddrLocalhost(http->hostaddr) && _cups_strcasecmp(http->hostname, "localhost") != 0)
+ return 0;
+ return 1;
+}
/*
* 'cups_local_auth()' - Get the local authorization certificate if
* See if we are accessing localhost...
*/
- if (!httpAddrLocalhost(http->hostaddr) && _cups_strcasecmp(http->hostname, "localhost") != 0)
+ if (!cups_is_local_connection(http))
{
DEBUG_puts("8cups_local_auth: Not a local connection!");
return (1);
}
# endif /* HAVE_AUTHORIZATION_H */
-# ifdef HAVE_GSSAPI
- if (cups_auth_find(www_auth, "Negotiate"))
- return (1);
-# endif /* HAVE_GSSAPI */
-
# if defined(SO_PEERCRED) && defined(AF_LOCAL)
/*
* See if we can authenticate using the peer credentials provided over a
/*
* API definitions for CUPS.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2007-2022 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* Constants...
*/
-# define CUPS_VERSION 2.0301
+# define CUPS_VERSION 2.0306
# define CUPS_VERSION_MAJOR 2
# define CUPS_VERSION_MINOR 3
-# define CUPS_VERSION_PATCH 1
+# define CUPS_VERSION_PATCH 6
# define CUPS_BC_FD 3
/* Back-channel file descriptor for
---
title: CUPS Programming Manual
author: Michael R Sweet
-copyright: Copyright © 2007-2019 by Apple Inc. All Rights Reserved.
-version: 2.3.1
+copyright: Copyright © 2007-2022 by Apple Inc. All Rights Reserved.
+version: 2.3.6
...
> Please [file issues on Github](https://github.com/apple/cups/issues) to
if (!cupsGetDest(name, instance, num_dests, *dests))
{
if (instance && !cupsGetDest(name, NULL, num_dests, *dests))
- return (num_dests);
+ {
+ // Add destination first...
+ if ((dest = cups_add_dest(name, NULL, &num_dests, dests)) == NULL)
+ return (num_dests);
+ }
if ((dest = cups_add_dest(name, instance, &num_dests, dests)) == NULL)
return (num_dests);
cupsEnumDests(0, 1000, NULL, 0, 0, (cups_dest_cb_t)cups_name_cb, &data);
if (!data.dest)
+ {
+ _cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, _("The printer or class does not exist."), 1);
return (NULL);
+ }
dest = data.dest;
}
cups_dest_cb_t cb, /* I - Callback function */
void *user_data) /* I - User data */
{
- int i, j, /* Looping vars */
+ int i, j, k, /* Looping vars */
num_dests; /* Number of destinations */
cups_dest_t *dests = NULL, /* Destinations */
*dest; /* Current destination */
const char *device_uri; /* Device URI */
#endif /* HAVE_DNSSD || HAVE_AVAHI */
- if ((user_dest = cupsGetDest(dest->name, dest->instance, data.num_dests, data.dests)) != NULL)
+ if ((user_dest = cupsGetDest(dest->name, NULL, data.num_dests, data.dests)) != NULL)
{
/*
- * Apply user defaults to this destination...
+ * Apply user defaults to this destination for all instances...
*/
- for (j = user_dest->num_options, option = user_dest->options; j > 0; j --, option ++)
- dest->num_options = cupsAddOption(option->name, option->value, dest->num_options, &dest->options);
- }
+ for (j = user_dest - data.dests; j < data.num_dests; j ++, user_dest ++)
+ {
+ if (_cups_strcasecmp(user_dest->name, dest->name))
+ {
+ j = data.num_dests;
+ break;
+ }
- if (!(*cb)(user_data, i > 1 ? CUPS_DEST_FLAGS_MORE : CUPS_DEST_FLAGS_NONE, dest))
+ for (k = dest->num_options, option = dest->options; k > 0; k --, option ++)
+ user_dest->num_options = cupsAddOption(option->name, option->value, user_dest->num_options, &user_dest->options);
+
+ if (!(*cb)(user_data, i > 1 ? CUPS_DEST_FLAGS_MORE : CUPS_DEST_FLAGS_NONE, user_dest))
+ break;
+ }
+
+ if (j < data.num_dests)
+ break;
+ }
+ else if (!(*cb)(user_data, i > 1 ? CUPS_DEST_FLAGS_MORE : CUPS_DEST_FLAGS_NONE, dest))
break;
#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
if ((user_dest = cupsGetDest(dest->name, dest->instance, data.num_dests, data.dests)) != NULL)
{
/*
- * Apply user defaults to this destination...
+ * Apply user defaults to this destination for all instances...
*/
- for (j = user_dest->num_options, option = user_dest->options; j > 0; j --, option ++)
- dest->num_options = cupsAddOption(option->name, option->value, dest->num_options, &dest->options);
- }
+ for (j = user_dest - data.dests; j < data.num_dests; j ++, user_dest ++)
+ {
+ if (_cups_strcasecmp(user_dest->name, dest->name))
+ {
+ j = data.num_dests;
+ break;
+ }
- if (!strcasecmp(dest->name, data.def_name) && !data.def_instance)
- {
- DEBUG_printf(("1cups_enum_dests: Setting is_default on discovered \"%s\".", dest->name));
- dest->is_default = 1;
+ for (k = dest->num_options, option = dest->options; k > 0; k --, option ++)
+ user_dest->num_options = cupsAddOption(option->name, option->value, user_dest->num_options, &user_dest->options);
+
+ if (!(*cb)(user_data, CUPS_DEST_FLAGS_NONE, user_dest))
+ break;
+ }
+
+ if (j < data.num_dests)
+ {
+ remaining = -1;
+ break;
+ }
}
+ else
+ {
+ if (!strcasecmp(dest->name, data.def_name) && !data.def_instance)
+ {
+ DEBUG_printf(("1cups_enum_dests: Setting is_default on discovered \"%s\".", dest->name));
+ dest->is_default = 1;
+ }
- DEBUG_printf(("1cups_enum_dests: Add callback for \"%s\".", device->dest.name));
- if (!(*cb)(user_data, CUPS_DEST_FLAGS_NONE, dest))
- {
- remaining = -1;
- break;
- }
+ DEBUG_printf(("1cups_enum_dests: Add callback for \"%s\".", device->dest.name));
+ if (!(*cb)(user_data, CUPS_DEST_FLAGS_NONE, dest))
+ {
+ remaining = -1;
+ break;
+ }
+ }
}
device->state = _CUPS_DNSSD_ACTIVE;
* Out of memory!
*/
- DEBUG_puts("9cups_get_dests: Out of memory!");
+ DEBUG_puts("9cups_get_dests: Could not find destination after adding, must be out of memory.");
break;
}
}
*nameptr++ = '_';
}
+ /*
+ * Remove an underscore if it is the last character and isn't the only
+ * character in the name...
+ */
+
+ if (nameptr > (name + 1) && nameptr[-1] == '_')
+ nameptr --;
+
*nameptr = '\0';
}
httpBlocking(http, blocking);
httpFlush(http);
- if (status == HTTP_STATUS_ERROR)
- _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(http->error), 0);
- else
- {
- attr = ippFindAttribute(response, "status-message", IPP_TAG_TEXT);
+ attr = ippFindAttribute(response, "status-message", IPP_TAG_TEXT);
- DEBUG_printf(("cupsGetDevices: status-code=%s, status-message=\"%s\"",
- ippErrorString(response->request.status.status_code),
- attr ? attr->values[0].string.text : ""));
+ DEBUG_printf(("cupsGetDevices: status-code=%s, status-message=\"%s\"",
+ ippErrorString(response->request.status.status_code),
+ attr ? attr->values[0].string.text : ""));
- _cupsSetError(response->request.status.status_code,
- attr ? attr->values[0].string.text :
- ippErrorString(response->request.status.status_code), 0);
- }
+ _cupsSetError(response->request.status.status_code,
+ attr ? attr->values[0].string.text : ippErrorString(response->request.status.status_code), 0);
ippDelete(response);
# include <unistd.h>
# include <fcntl.h>
# include <sys/socket.h>
+# include <netinet/in.h>
# define CUPS_SOCAST
# endif /* _WIN32 */
goto too_small;
_cupsMD5Init(&state);
- _cupsMD5Append(&state, data, datalen);
+ _cupsMD5Append(&state, data, (int)datalen);
_cupsMD5Finish(&state, hash);
return (16);
* Listen...
*/
- if (listen(fd, 5))
+ if (listen(fd, 128))
{
_cupsSetHTTPError(HTTP_STATUS_ERROR);
}
if (!addrlist && nfds == 0)
+ {
+#ifdef _WIN32
+ errno = WSAEHOSTDOWN;
+#else
+ errno = EHOSTDOWN;
+#endif // _WIN32
break;
+ }
/*
* See if we can connect to any of the addresses so far...
remaining -= 250;
}
+ if (remaining <= 0)
+ errno = ETIMEDOUT;
+
while (nfds > 0)
{
nfds --;
DEBUG_printf(("4httpGetDateTime: day=%d, mon=\"%s\", year=%d, hour=%d, "
"min=%d, sec=%d", day, mon, year, hour, min, sec));
+ /*
+ * Check for invalid year (RFC 7231 says it's 4DIGIT)
+ */
+
+ if (year > 9999)
+ return (0);
+
/*
* Convert the month name to a number from 0 to 11.
*/
/*
* HTTP routines for CUPS.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2007-2021 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* This file contains Kerberos support code, copyright 2006 by
if (_httpTLSStart(http) != 0)
{
httpAddrClose(NULL, http->fd);
+ http->fd = -1;
return (-1);
}
if (_httpTLSStart(http) != 0)
{
httpAddrClose(NULL, http->fd);
+ http->fd = -1;
*status = http->status = HTTP_STATUS_ERROR;
return (0);
HTTP_TRUST_CHANGED, /* Credentials have changed */
HTTP_TRUST_EXPIRED, /* Credentials are expired */
HTTP_TRUST_RENEWED, /* Credentials have been renewed */
- HTTP_TRUST_UNKNOWN, /* Credentials are unknown/new */
+ HTTP_TRUST_UNKNOWN /* Credentials are unknown/new */
} http_trust_t;
typedef enum http_uri_status_e /**** URI separation status @since CUPS 1.2@ ****/
* Start of quoted text or regular expression...
*/
- if (ch == '<')
- quote = '>';
- else
- quote = ch;
+ quote = ch;
DEBUG_printf(("1_ippFileReadToken: Start of quoted string, quote=%c, pos=%ld", quote, (long)cupsFileTell(f->fp)));
}
{
case IPP_TAG_BOOLEAN :
return (ippSetBoolean(ipp, attr, element, !_cups_strcasecmp(value, "true")));
- break;
case IPP_TAG_ENUM :
case IPP_TAG_INTEGER :
return (ippSetInteger(ipp, attr, element, (int)strtol(value, NULL, 0)));
- break;
case IPP_TAG_DATE :
{
return (ippSetDate(ipp, attr, element, date));
}
- break;
case IPP_TAG_RESOLUTION :
{
else
return (ippSetResolution(ipp, attr, element, (ipp_res_t)0, xres, yres));
}
- break;
case IPP_TAG_RANGE :
{
return (ippSetRange(ipp, attr, element, lower, upper));
}
- break;
case IPP_TAG_STRING :
valuelen = strlen(value);
}
else
return (ippSetOctetString(ipp, attr, element, value, (int)valuelen));
- break;
case IPP_TAG_TEXTLANG :
case IPP_TAG_NAMELANG :
case IPP_TAG_LANGUAGE :
case IPP_TAG_MIMETYPE :
return (ippSetString(ipp, attr, element, value));
- break;
case IPP_TAG_BEGIN_COLLECTION :
{
return (status);
}
- break;
default :
report_error(f, v, user_data, "Unsupported value on line %d of \"%s\".", f->linenum, f->filename);
return (0);
}
-
- return (1);
}
{
if (enumvalue >= 3 && enumvalue < (3 + (int)(sizeof(ipp_finishings) / sizeof(ipp_finishings[0]))))
return (ipp_finishings[enumvalue - 3]);
- else if (enumvalue >= 0x40000000 && enumvalue <= (0x40000000 + (int)(sizeof(ipp_finishings_vendor) / sizeof(ipp_finishings_vendor[0]))))
+ else if (enumvalue >= 0x40000000 && enumvalue < (0x40000000 + (int)(sizeof(ipp_finishings_vendor) / sizeof(ipp_finishings_vendor[0]))))
return (ipp_finishings_vendor[enumvalue - 0x40000000]);
}
else if ((!strcmp(attrname, "job-collation-type") || !strcmp(attrname, "job-collation-type-actual")) && enumvalue >= 3 && enumvalue < (3 + (int)(sizeof(ipp_job_collation_types) / sizeof(ipp_job_collation_types[0]))))
* No, build an "0xxxxx" error string...
*/
- sprintf(cg->ipp_unknown, "0x%04x", error);
+ snprintf(cg->ipp_unknown, sizeof(cg->ipp_unknown), "0x%04x", error);
return (cg->ipp_unknown);
}
* No, build an "0xxxxx" operation string...
*/
- sprintf(cg->ipp_unknown, "0x%04x", op);
+ snprintf(cg->ipp_unknown, sizeof(cg->ipp_unknown), "0x%04x", op);
return (cg->ipp_unknown);
}
* Include necessary headers...
*/
-#include <cups/cups.h>
+#include "cups-private.h"
#include "ipp-private.h"
#include "string-private.h"
#include "debug-internal.h"
{
if (!strcmp(name, "uri"))
{
- char uri[1024]; /* New printer URI */
- http_uri_status_t uri_status; /* URI status */
+ char uri[1024]; /* New printer URI */
+ char resolved[1024]; /* Resolved mDNS URI */
- if ((uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, value, v->scheme, sizeof(v->scheme), v->username, sizeof(v->username), v->host, sizeof(v->host), &(v->port), v->resource, sizeof(v->resource))) < HTTP_URI_STATUS_OK)
+ if (strstr(value, "._tcp"))
+ {
+ /*
+ * Resolve URI...
+ */
+
+ if (!_httpResolveURI(value, resolved, sizeof(resolved), _HTTP_RESOLVE_DEFAULT, NULL, NULL))
+ return (0);
+
+ value = resolved;
+ }
+
+ if (httpSeparateURI(HTTP_URI_CODING_ALL, value, v->scheme, sizeof(v->scheme), v->username, sizeof(v->username), v->host, sizeof(v->host), &(v->port), v->resource, sizeof(v->resource)) < HTTP_URI_STATUS_OK)
return (0);
if (v->username[0])
/*
* Internet Printing Protocol functions for CUPS.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2007-2021 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
unsigned char *buffer, /* Data buffer */
string[IPP_MAX_TEXT],
/* Small string buffer */
- *bufptr; /* Pointer into buffer */
- ipp_attribute_t *attr; /* Current attribute */
+ *bufptr, /* Pointer into buffer */
+ *bufend; /* End of buffer */
+ ipp_attribute_t *attr = NULL; /* Current attribute */
ipp_tag_t tag; /* Current tag */
ipp_tag_t value_tag; /* Current value tag */
_ipp_value_t *value; /* Current value */
if ((*cb)(src, buffer, 8) < 8)
{
DEBUG_puts("1ippReadIO: Unable to read header.");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
/*
if ((*cb)(src, buffer, 1) < 1)
{
DEBUG_puts("1ippReadIO: Callback returned EOF/error");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
DEBUG_printf(("2ippReadIO: ipp->current=%p, ipp->prev=%p", (void *)ipp->current, (void *)ipp->prev));
* Read 32-bit "extension" tag...
*/
- if ((*cb)(src, buffer, 4) < 1)
+ if ((*cb)(src, buffer, 4) < 4)
{
DEBUG_puts("1ippReadIO: Callback returned EOF/error");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
tag = (ipp_tag_t)((((((buffer[0] << 8) | buffer[1]) << 8) |
_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);
+ goto rollback;
}
}
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Invalid group tag."), 1);
DEBUG_printf(("1ippReadIO: bad tag 0x%02x.", tag));
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
else if (tag < IPP_TAG_UNSUPPORTED_VALUE)
{
* Group tag... Set the current group and continue...
*/
- if (ipp->curtag == tag)
+ if (parent)
+ {
+ _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Invalid group tag."), 1);
+ DEBUG_printf(("1ippReadIO: bad tag 0x%02x.", tag));
+ goto rollback;
+ }
+ else if (ipp->curtag == tag)
ipp->prev = ippAddSeparator(ipp);
else if (ipp->current)
ipp->prev = ipp->current;
ipp->curtag = tag;
ipp->current = NULL;
+ attr = NULL;
DEBUG_printf(("2ippReadIO: group tag=%x(%s), ipp->prev=%p", tag, ippTagString(tag), (void *)ipp->prev));
continue;
}
if ((*cb)(src, buffer, 2) < 2)
{
DEBUG_puts("1ippReadIO: unable to read name length.");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
n = (buffer[0] << 8) | buffer[1];
{
_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);
+ goto rollback;
}
DEBUG_printf(("2ippReadIO: name length=%d", n));
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Invalid named IPP attribute in collection."), 1);
DEBUG_puts("1ippReadIO: bad attribute name in collection.");
- return (IPP_STATE_ERROR);
+ goto rollback;
}
else if (n == 0 && tag != IPP_TAG_MEMBERNAME && tag != IPP_TAG_END_COLLECTION)
{
{
_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);
+ goto rollback;
}
attr = ipp->current;
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);
+ goto rollback;
}
if (value_tag != tag)
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);
+ goto rollback;
}
if (value_tag == IPP_TAG_INTEGER && tag == IPP_TAG_RANGE)
DEBUG_printf(("1ippReadIO: value tag %x(%s) != %x(%s)",
value_tag, ippTagString(value_tag), tag,
ippTagString(tag)));
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
/*
*/
if ((value = ipp_set_value(ipp, &attr, attr->num_values)) == NULL)
- {
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
- }
+ goto rollback;
}
else if (tag == IPP_TAG_MEMBERNAME)
{
{
_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);
+ goto rollback;
+ }
+ else if (!parent)
+ {
+ _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("IPP member attribute outside of collection."), 1);
+ DEBUG_puts("1ippReadIO: member attribute outside of collection.");
+ goto rollback;
}
if (ipp->current)
{
_cupsSetHTTPError(HTTP_STATUS_ERROR);
DEBUG_puts("1ippReadIO: unable to allocate attribute.");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
DEBUG_printf(("2ippReadIO: membername, ipp->current=%p, ipp->prev=%p", (void *)ipp->current, (void *)ipp->prev));
if ((*cb)(src, buffer, (size_t)n) < n)
{
DEBUG_puts("1ippReadIO: unable to read name.");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
buffer[n] = '\0';
{
_cupsSetHTTPError(HTTP_STATUS_ERROR);
DEBUG_puts("1ippReadIO: unable to allocate attribute.");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
DEBUG_printf(("2ippReadIO: name=\"%s\", ipp->current=%p, ipp->prev=%p", buffer, (void *)ipp->current, (void *)ipp->prev));
if ((*cb)(src, buffer, 2) < 2)
{
DEBUG_puts("1ippReadIO: unable to read value length.");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
n = (buffer[0] << 8) | buffer[1];
_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);
+ goto rollback;
}
switch (tag)
_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);
+ goto rollback;
}
if ((*cb)(src, buffer, 4) < 4)
{
DEBUG_puts("1ippReadIO: Unable to read integer value.");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
n = (((((buffer[0] << 8) | buffer[1]) << 8) | buffer[2]) << 8) |
_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);
+ goto rollback;
}
if ((*cb)(src, buffer, 1) < 1)
{
DEBUG_puts("1ippReadIO: Unable to read boolean value.");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
value->boolean = (char)buffer[0];
if ((*cb)(src, buffer, (size_t)n) < n)
{
DEBUG_puts("1ippReadIO: unable to read string value.");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
}
{
_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);
+ goto rollback;
}
if ((*cb)(src, value->date, 11) < 11)
{
DEBUG_puts("1ippReadIO: Unable to read date value.");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
break;
_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);
+ goto rollback;
}
if ((*cb)(src, buffer, 9) < 9)
{
DEBUG_puts("1ippReadIO: Unable to read resolution value.");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
value->resolution.xres =
_("IPP rangeOfInteger value not 8 bytes."), 1);
DEBUG_printf(("1ippReadIO: bad rangeOfInteger value length "
"%d.", n));
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
if ((*cb)(src, buffer, 8) < 8)
{
DEBUG_puts("1ippReadIO: Unable to read range value.");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
value->range.lower =
"minimum 4 bytes."), 1);
DEBUG_printf(("1ippReadIO: bad stringWithLanguage value "
"length %d.", n));
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
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);
+ goto rollback;
}
bufptr = buffer;
+ bufend = buffer + n;
/*
* text-with-language and name-with-language are composite
n = (bufptr[0] << 8) | bufptr[1];
- if ((bufptr + 2 + n) >= (buffer + IPP_BUF_SIZE) || n >= (int)sizeof(string))
+ if ((bufptr + 2 + n + 2) > bufend || 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);
+ goto rollback;
}
else if (n >= IPP_MAX_LANGUAGE)
{
_("IPP language length too large."), 1);
DEBUG_printf(("1ippReadIO: bad language value length %d.",
n));
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
memcpy(string, bufptr + 2, (size_t)n);
bufptr += 2 + n;
n = (bufptr[0] << 8) | bufptr[1];
- if ((bufptr + 2 + n) >= (buffer + IPP_BUF_SIZE))
+ if ((bufptr + 2 + n) > bufend)
{
_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);
+ goto rollback;
}
bufptr[2 + n] = '\0';
_("IPP begCollection value not 0 bytes."), 1);
DEBUG_puts("1ippReadIO: begCollection tag with value length "
"> 0.");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
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);
+ goto rollback;
}
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);
+ goto rollback;
}
+ _cupsBufferRelease((char *)buffer);
+
DEBUG_puts("1ippReadIO: endCollection tag...");
return (ipp->state = IPP_STATE_DATA);
_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);
+ goto rollback;
}
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);
+ goto rollback;
}
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);
+ goto rollback;
}
buffer[n] = '\0';
_("IPP octetString length too large."), 1);
DEBUG_printf(("1ippReadIO: bad octetString value length %d.",
n));
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
value->unknown.length = n;
{
_cupsSetHTTPError(HTTP_STATUS_ERROR);
DEBUG_puts("1ippReadIO: Unable to allocate value");
- _cupsBufferRelease((char *)buffer);
- return (IPP_STATE_ERROR);
+ goto rollback;
}
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);
+ goto rollback;
}
}
else
_cupsBufferRelease((char *)buffer);
return (ipp->state);
+
+ // If we get here, there was an error that required us to roll back the last
+ // attribute read in order to keep the IPP message valid...
+ rollback:
+
+ _cupsBufferRelease((char *)buffer);
+
+ if (attr)
+ ippDeleteAttribute(ipp, attr);
+
+ return (IPP_STATE_ERROR);
}
return (0);
if (ipp->attrs && ipp->attrs->next && ipp->attrs->next->name &&
- !strcmp(ipp->attrs->next->name, "attributes-natural-language"))
+ !strcmp(ipp->attrs->next->name, "attributes-natural-language") && (ipp->attrs->next->value_tag & IPP_TAG_CUPS_MASK) == IPP_TAG_LANGUAGE)
{
/*
* Use the language code from the IPP message...
if (ptr < (value + sizeof(value) - 1))
*ptr++ = *device_id;
- if (!*device_id)
- break;
-
while (ptr > value && _cups_isspace(ptr[-1]))
ptr --;
*ptr = '\0';
- device_id ++;
-
num_values = cupsAddOption(key, value, num_values, values);
+
+ if (!*device_id)
+ break;
+ device_id ++;
}
return (num_values);
int num_finishings = 0, /* Number of finishing values */
finishings[10]; /* Finishing enum values */
ppd_choice_t *choice; /* Marked choice */
- int finishings_copies = copies;
+ int finishings_copies = copies,
/* Number of copies for finishings */
+ job_pages = 0, /* job-pages value */
+ number_up = 1; /* number-up value */
+ const char *value; /* Option value */
/*
* Map finishing options...
*/
+ if (copies != finishings_copies)
+ {
+ // Figure out the proper job-pages-per-set value...
+ if ((value = cupsGetOption("job-pages", num_options, options)) == NULL)
+ value = cupsGetOption("com.apple.print.PrintSettings.PMTotalBeginPages..n.", num_options, options);
+
+ if (value)
+ job_pages = atoi(value);
+
+ // Adjust for number-up
+ if ((value = cupsGetOption("number-up", num_options, options)) != NULL)
+ number_up = atoi(value);
+
+ job_pages = (job_pages + number_up - 1) / number_up;
+
+ // When duplex printing, raster data will include an extra (blank) page to
+ // make the total number of pages even. Make sure this is reflected in the
+ // page count...
+ if ((job_pages & 1) && (keyword = cupsGetOption("sides", num_options, options)) != NULL && strcmp(keyword, "one-sided"))
+ job_pages ++;
+ }
+
if ((finishing_template = cupsGetOption("cupsFinishingTemplate", num_options, options)) == NULL)
finishing_template = cupsGetOption("finishing-template", num_options, options);
ippAddCollection(request, IPP_TAG_JOB, "finishings-col", fin_col);
ippDelete(fin_col);
- if (copies != finishings_copies && (keyword = cupsGetOption("job-impressions", num_options, options)) != NULL)
+ if (copies != finishings_copies && job_pages > 0)
{
/*
* Send job-pages-per-set attribute to apply finishings correctly...
*/
- ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-pages-per-set", atoi(keyword) / finishings_copies);
+ ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-pages-per-set", job_pages);
}
}
else
{
ippAddIntegers(request, IPP_TAG_JOB, IPP_TAG_ENUM, "finishings", num_finishings, finishings);
- if (copies != finishings_copies && (keyword = cupsGetOption("job-impressions", num_options, options)) != NULL)
+ if (copies != finishings_copies && job_pages > 0)
{
/*
* Send job-pages-per-set attribute to apply finishings correctly...
*/
- ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-pages-per-set", atoi(keyword) / finishings_copies);
+ ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-pages-per-set", job_pages);
}
}
}
* Convert the PPD size name to the corresponding PWG keyword name.
*/
- if ((pwg_media = pwgMediaForPPD(ppd_size->name)) != NULL)
+ if ((pwg_media = pwgMediaForSize(PWG_FROM_POINTS(ppd_size->width), PWG_FROM_POINTS(ppd_size->length))) != NULL)
{
/*
* Standard name, do we have conflicts?
cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 10 -\"\n");
}
else
- cupsFilePuts(fp, "*cupsManualCopies: true\n");
+ cupsFilePuts(fp, "*cupsManualCopies: True\n");
if (is_apple)
cupsFilePuts(fp, "*cupsFilter2: \"image/urf image/urf 100 -\"\n");
if (is_pwg)
if ((attr = ippFindAttribute(ippGetCollection(defattr, 0), "media-source", IPP_TAG_ZERO)) != NULL)
pwg_ppdize_name(ippGetString(attr, 0, NULL), ppdname, sizeof(ppdname));
else
- strlcpy(ppdname, "Unknown", sizeof(ppdname));
+ ppdname[0] = '\0';
if ((attr = ippFindAttribute(response, "media-source-supported", IPP_TAG_ZERO)) != NULL && (count = ippGetCount(attr)) > 1)
{
+ int have_default = ppdname[0] != '\0';
+ /* Do we have a default InputSlot? */
static const char * const sources[] =
{ /* Standard "media-source" strings */
"auto",
"roll-10"
};
- cupsFilePrintf(fp, "*OpenUI *InputSlot: PickOne\n"
- "*OrderDependency: 10 AnySetup *InputSlot\n"
- "*DefaultInputSlot: %s\n", ppdname);
- for (i = 0, count = ippGetCount(attr); i < count; i ++)
+ cupsFilePuts(fp, "*OpenUI *InputSlot: PickOne\n"
+ "*OrderDependency: 10 AnySetup *InputSlot\n");
+ if (have_default)
+ cupsFilePrintf(fp, "*DefaultInputSlot: %s\n", ppdname);
+
+ for (i = 0; i < count; i ++)
{
keyword = ippGetString(attr, i, NULL);
pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
+ if (i == 0 && !have_default)
+ cupsFilePrintf(fp, "*DefaultInputSlot: %s\n", ppdname);
+
for (j = 0; j < (int)(sizeof(sources) / sizeof(sources[0])); j ++)
if (!strcmp(sources[j], keyword))
{
snprintf(msgid, sizeof(msgid), "media-source.%s", keyword);
+
+ if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
+ if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
+ msgstr = keyword;
+
cupsFilePrintf(fp, "*InputSlot %s: \"<</MediaPosition %d>>setpagedevice\"\n", ppdname, j);
- cupsFilePrintf(fp, "*%s.InputSlot %s/%s: \"\"\n", lang->language, ppdname, _cupsLangString(lang, msgid));
+ cupsFilePrintf(fp, "*%s.InputSlot %s/%s: \"\"\n", lang->language, ppdname, msgstr);
break;
}
}
int wrote_color = 0;
const char *default_color = NULL; /* Default */
+ cupsFilePrintf(fp, "*%% ColorModel from %s\n", ippGetName(attr));
+
for (i = 0, count = ippGetCount(attr); i < count; i ++)
{
keyword = ippGetString(attr, i, NULL);
PRINTF_COLOROPTION("RGB", _("Color"), CUPS_CSPACE_SRGB, 8)
default_color = "RGB";
+
+ // Apparently some printers only advertise color support, so make sure
+ // we also do grayscale for these printers...
+ if (!ippContainsString(attr, "sgray_8") && !ippContainsString(attr, "black_1") && !ippContainsString(attr, "black_8") && !ippContainsString(attr, "W8") && !ippContainsString(attr, "W8-16"))
+ PRINTF_COLOROPTION("Gray", _("GrayScale"), CUPS_CSPACE_SW, 8)
}
else if (!strcasecmp(keyword, "adobe-rgb_16") || !strcmp(keyword, "ADOBERGB48") || !strcmp(keyword, "ADOBERGB24-48"))
{
else
strlcpy(ppdname, "Unknown", sizeof(ppdname));
- if ((attr = ippFindAttribute(response, "output-bin-supported", IPP_TAG_ZERO)) != NULL && (count = ippGetCount(attr)) > 1)
+ if ((attr = ippFindAttribute(response, "output-bin-supported", IPP_TAG_ZERO)) != NULL && (count = ippGetCount(attr)) > 0)
{
ipp_attribute_t *trays = ippFindAttribute(response, "printer-output-tray", IPP_TAG_STRING);
/* printer-output-tray attribute, if any */
{
char *ptr, /* Pointer into name buffer */
*end; /* End of name buffer */
+ int nodash = 1; /* Next char in IPP name cannot be a
+ dash (first char or after a dash) */
if (_cups_islower(*ppd))
const char *ppdptr; /* Pointer into PPD keyword */
for (ppdptr = ppd + 1; *ppdptr; ppdptr ++)
- if (_cups_isupper(*ppdptr) || strchr(dashchars, *ppdptr))
+ if (_cups_isupper(*ppdptr) || strchr(dashchars, *ppdptr) ||
+ (*ppdptr == '-' && *(ppdptr - 1) == '-') ||
+ (*ppdptr == '-' && *(ppdptr + 1) == '\0'))
break;
if (!*ppdptr)
for (ptr = name, end = name + namesize - 1; *ppd && ptr < end; ppd ++)
{
- if (_cups_isalnum(*ppd) || *ppd == '-')
+ if (_cups_isalnum(*ppd))
+ {
*ptr++ = (char)tolower(*ppd & 255);
- else if (strchr(dashchars, *ppd))
- *ptr++ = '-';
+ nodash = 0;
+ }
+ else if (*ppd == '-' || strchr(dashchars, *ppd))
+ {
+ if (nodash == 0)
+ {
+ *ptr++ = '-';
+ nodash = 1;
+ }
+ }
else
+ {
*ptr++ = *ppd;
+ nodash = 0;
+ }
- if (!_cups_isupper(*ppd) && _cups_isalnum(*ppd) &&
- _cups_isupper(ppd[1]) && ptr < end)
- *ptr++ = '-';
- else if (!isdigit(*ppd & 255) && isdigit(ppd[1] & 255))
- *ptr++ = '-';
+ if (nodash == 0)
+ {
+ if (!_cups_isupper(*ppd) && _cups_isalnum(*ppd) &&
+ _cups_isupper(ppd[1]) && ptr < end)
+ {
+ *ptr++ = '-';
+ nodash = 1;
+ }
+ else if (!isdigit(*ppd & 255) && isdigit(ppd[1] & 255))
+ {
+ *ptr++ = '-';
+ nodash = 1;
+ }
+ }
}
+ /* Remove trailing dashes */
+ while (ptr > name && *(ptr - 1) == '-')
+ ptr --;
+
*ptr = '\0';
}
* Look it up in the PPD file...
*/
- sprintf(s, "%d", j);
+ snprintf(s, sizeof(s), "%d", j);
if ((attr = ppdFindAttr(ppd, "cupsIPPFinishings", s)) == NULL)
continue;
* Constants...
*/
-# define _PPD_CACHE_VERSION 9 /* Version number in cache file */
+# define _PPD_CACHE_VERSION 10 /* Version number in cache file */
/*
free(ppd->lang_encoding);
free(ppd->nickname);
free(ppd->patches);
+ free(ppd->emulations);
free(ppd->jcl_begin);
free(ppd->jcl_end);
free(ppd->jcl_ps);
ppd_decode(ppd->jcl_ps); /* Decode quoted string */
}
else if (!strcmp(keyword, "AccurateScreensSupport"))
- ppd->accurate_screens = !strcmp(string, "True");
+ ppd->accurate_screens = !strcasecmp(string, "True");
else if (!strcmp(keyword, "ColorDevice"))
- ppd->color_device = !strcmp(string, "True");
+ ppd->color_device = !strcasecmp(string, "True");
else if (!strcmp(keyword, "ContoneOnly"))
- ppd->contone_only = !strcmp(string, "True");
+ ppd->contone_only = !strcasecmp(string, "True");
else if (!strcmp(keyword, "cupsFlipDuplex"))
- ppd->flip_duplex = !strcmp(string, "True");
+ ppd->flip_duplex = !strcasecmp(string, "True");
else if (!strcmp(keyword, "cupsManualCopies"))
- ppd->manual_copies = !strcmp(string, "True");
+ ppd->manual_copies = !strcasecmp(string, "True");
else if (!strcmp(keyword, "cupsModelNumber"))
ppd->model_number = atoi(string);
else if (!strcmp(keyword, "cupsColorProfile"))
goto error;
}
+ if (option && (!_cups_strcasecmp(option->defchoice, "custom") || !_cups_strncasecmp(option->defchoice, "custom.", 7)))
+ {
+ /*
+ * "*DefaultOption: Custom..." may set the default to a custom value
+ * or (for a very small number of incompatible PPD files) select a
+ * standard choice for the option, which CUPS renames to "_Custom..."
+ * to avoid compatibility issues. See which this is...
+ */
+
+ char tchoice[PPD_MAX_NAME]; /* Temporary choice name */
+
+ snprintf(tchoice, sizeof(tchoice), "_%s", option->defchoice);
+
+ if (ppdFindChoice(option, tchoice))
+ {
+ strlcpy(option->defchoice, tchoice, sizeof(option->defchoice));
+
+ DEBUG_printf(("2_ppdOpen: Reset Default%s to %s...", option->keyword, tchoice));
+ }
+ }
+
option = NULL;
free(string);
goto error;
}
+ if (option && (!_cups_strcasecmp(option->defchoice, "custom") || !_cups_strncasecmp(option->defchoice, "custom.", 7)))
+ {
+ /*
+ * "*DefaultOption: Custom..." may set the default to a custom value
+ * or (for a very small number of incompatible PPD files) select a
+ * standard choice for the option, which CUPS renames to "_Custom..."
+ * to avoid compatibility issues. See which this is...
+ */
+
+ char tchoice[PPD_MAX_NAME]; /* Temporary choice name */
+
+ snprintf(tchoice, sizeof(tchoice), "_%s", option->defchoice);
+
+ if (ppdFindChoice(option, tchoice))
+ {
+ strlcpy(option->defchoice, tchoice, sizeof(option->defchoice));
+
+ DEBUG_printf(("2_ppdOpen: Reset Default%s to %s...", option->keyword, tchoice));
+ }
+ }
+
option = NULL;
free(string);
* Set the default as part of the current option...
*/
- DEBUG_printf(("2_ppdOpen: Setting %s to %s...", keyword, string));
-
- strlcpy(option->defchoice, string, sizeof(option->defchoice));
+ strlcpy(option->defchoice, string, sizeof(option->defchoice));
- DEBUG_printf(("2_ppdOpen: %s is now %s...", keyword, option->defchoice));
+ DEBUG_printf(("2_ppdOpen: Set %s to %s...", keyword, option->defchoice));
}
else
{
ppd_option_t *toption; /* Temporary option */
-
if ((toption = ppdFindOption(ppd, keyword + 7)) != NULL)
{
- DEBUG_printf(("2_ppdOpen: Setting %s to %s...", keyword, string));
- strlcpy(toption->defchoice, string, sizeof(toption->defchoice));
+ if (!_cups_strcasecmp(string, "custom") || !_cups_strncasecmp(string, "custom.", 7))
+ {
+ /*
+ * "*DefaultOption: Custom..." may set the default to a custom value
+ * or (for a very small number of incompatible PPD files) select a
+ * standard choice for the option, which CUPS renames to "_Custom..."
+ * to avoid compatibility issues. See which this is...
+ */
+
+ snprintf(toption->defchoice, sizeof(toption->defchoice), "_%s", string);
+ if (!ppdFindChoice(toption, toption->defchoice))
+ strlcpy(toption->defchoice, string, sizeof(toption->defchoice));
+ }
+ else
+ {
+ strlcpy(toption->defchoice, string, sizeof(toption->defchoice));
+ }
+
+ DEBUG_printf(("2_ppdOpen: Set %s to %s...", keyword, toption->defchoice));
}
}
}
constraint->choice1, constraint->option2,
constraint->choice2))
{
- case 0 : /* Error */
- case 1 : /* Error */
+ default : /* Error */
pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
goto error;
* Copy data over...
*/
+ if (!_cups_strcasecmp(spec, "custom") || !_cups_strncasecmp(spec, "custom.", 7))
+ {
+ temp->spec[0] = '_';
+ strlcpy(temp->spec + 1, spec, sizeof(temp->spec) - 1);
+ }
+ else {
+ strlcpy(temp->spec, spec, sizeof(temp->spec));
+ }
+
strlcpy(temp->name, name, sizeof(temp->name));
- strlcpy(temp->spec, spec, sizeof(temp->spec));
strlcpy(temp->text, text, sizeof(temp->text));
temp->value = (char *)value;
for (hash = option->keyword[0], k = option->keyword + 1; *k;)
- hash = 33 * hash + *k++;
+ hash = (int)(33U * (unsigned)hash) + *k++;
return (hash & 511);
}
size->width = x_dimension->values[0].integer;
size->length = y_dimension->values[0].integer;
}
- else if (!x_dimension)
+ else if (!x_dimension) /* x_dimension is missing */
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL,
_("Missing x-dimension in media-size."), 1);
return (0);
}
- else if (!y_dimension)
+ else /* y_dimension must be missing */
{
_cupsSetError(IPP_STATUS_ERROR_INTERNAL,
_("Missing y-dimension in media-size."), 1);
/*
* Raster file routines for CUPS.
*
- * Copyright 2007-2018 by Apple Inc.
+ * Copyright 2007-2019 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* This file is part of the CUPS Imaging library.
* Local globals...
*/
+static const char * const apple_media_types[] =
+{ /* media-type values for Apple Raster */
+ "auto",
+ "stationery",
+ "transparency",
+ "envelope",
+ "cardstock",
+ "labels",
+ "stationery-letterhead",
+ "disc",
+ "photographic-matte",
+ "photographic-satin",
+ "photographic-semi-gloss",
+ "photographic-glossy",
+ "photographic-high-gloss",
+ "other"
+};
+
#ifdef DEBUG
static const char * const cups_modes[] =
{ /* Open modes */
{
CUPS_CSPACE_SW,
CUPS_CSPACE_SRGB,
- CUPS_CSPACE_RGBW,
+ CUPS_CSPACE_CIELab,
CUPS_CSPACE_ADOBERGB,
CUPS_CSPACE_W,
CUPS_CSPACE_RGB,
{
1,
3,
- 4,
+ 3,
3,
1,
3,
r->header.cupsPageSize[1] = (float)(r->header.cupsHeight * 72.0 / r->header.HWResolution[1]);
}
- r->header.cupsInteger[0] = r->apple_page_count;
- r->header.cupsInteger[7] = 0xffffff;
+ r->header.cupsInteger[CUPS_RASTER_PWG_TotalPageCount] = r->apple_page_count;
+ r->header.cupsInteger[CUPS_RASTER_PWG_AlternatePrimary] = 0xffffff;
+ r->header.cupsInteger[CUPS_RASTER_PWG_PrintQuality] = appleheader[3];
+
+ if (appleheader[2] >= 2)
+ r->header.Duplex = 1;
+ if (appleheader[2] == 2)
+ r->header.Tumble = 1;
+
+ r->header.MediaPosition = appleheader[5];
+
+ if (appleheader[4] < (int)(sizeof(apple_media_types) / sizeof(apple_media_types[0])))
+ strlcpy(r->header.MediaType, apple_media_types[appleheader[4]], sizeof(r->header.MediaType));
+ else
+ strlcpy(r->header.MediaType, "other", sizeof(r->header.MediaType));
}
break;
}
* zeroed.
*/
- unsigned char appleheader[32]; /* Raw page header */
- unsigned height = r->header.cupsHeight * r->rowheight;
+ int i; /* Looping var */
+ unsigned char appleheader[32];/* Raw page header */
+ unsigned height = r->header.cupsHeight * r->rowheight;
/* Computed page height */
if (r->apple_page_count == 0xffffffffU)
appleheader[0] = (unsigned char)r->header.cupsBitsPerPixel;
appleheader[1] = r->header.cupsColorSpace == CUPS_CSPACE_SRGB ? 1 :
- r->header.cupsColorSpace == CUPS_CSPACE_RGBW ? 2 :
+ r->header.cupsColorSpace == CUPS_CSPACE_CIELab ? 2 :
r->header.cupsColorSpace == CUPS_CSPACE_ADOBERGB ? 3 :
r->header.cupsColorSpace == CUPS_CSPACE_W ? 4 :
r->header.cupsColorSpace == CUPS_CSPACE_RGB ? 5 :
r->header.cupsColorSpace == CUPS_CSPACE_CMYK ? 6 : 0;
+ appleheader[2] = r->header.Duplex ? (r->header.Tumble ? 2 : 3) : 1;
+ appleheader[3] = (unsigned char)(r->header.cupsInteger[CUPS_RASTER_PWG_PrintQuality]);
+ appleheader[5] = (unsigned char)(r->header.MediaPosition);
appleheader[12] = (unsigned char)(r->header.cupsWidth >> 24);
appleheader[13] = (unsigned char)(r->header.cupsWidth >> 16);
appleheader[14] = (unsigned char)(r->header.cupsWidth >> 8);
appleheader[22] = (unsigned char)(r->header.HWResolution[0] >> 8);
appleheader[23] = (unsigned char)(r->header.HWResolution[0]);
+ for (i = 0; i < (int)(sizeof(apple_media_types) / sizeof(apple_media_types[0])); i ++)
+ {
+ if (!strcmp(r->header.MediaType, apple_media_types[i]))
+ {
+ appleheader[4] = (unsigned char)i;
+ break;
+ }
+ }
+
return (cups_raster_io(r, appleheader, sizeof(appleheader)) == sizeof(appleheader));
}
else
ippDelete(response);
response = NULL;
- http->status = status = HTTP_STATUS_ERROR;
+ http->status = HTTP_STATUS_ERROR;
http->error = EINVAL;
}
}
if (!cupsDoAuthentication(http, "POST", resource))
httpReconnect2(http, 30000, NULL);
else
- http->status = status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
+ http->status = HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED;
}
#ifdef HAVE_SSL
/*
* snprintf functions for CUPS.
*
+ * Copyright © 2021 by OpenPrinting
* Copyright © 2007-2019 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products.
*
format ++;
width = va_arg(ap, int);
- snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", width);
+ /* Note: Can't use snprintf here since we are implementing this function... */
+ sprintf(tptr, "%d", width);
tptr += strlen(tptr);
}
else
format ++;
prec = va_arg(ap, int);
- snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", prec);
+ /* Note: Can't use snprintf here since we are implementing this function... */
+ sprintf(tptr, "%d", prec);
tptr += strlen(tptr);
}
else
if ((width + 2) > sizeof(temp))
break;
+ /* Note: Can't use snprintf here since we are implementing this function... */
sprintf(temp, tformat, va_arg(ap, double));
templen = strlen(temp);
if ((width + 2) > sizeof(temp))
break;
+ /* Note: Can't use snprintf here since we are implementing this function... */
sprintf(temp, tformat, va_arg(ap, int));
templen = strlen(temp);
if ((width + 2) > sizeof(temp))
break;
+ /* Note: Can't use snprintf here since we are implementing this function... */
sprintf(temp, tformat, va_arg(ap, void *));
templen = strlen(temp);
* Nul-terminate the string and return the number of characters needed.
*/
- *bufptr = '\0';
+ if (bufptr && bufptr < bufend)
+ *bufptr = '\0';
return (bytes);
}
* Constants...
*/
-#define MAX_CLIENTS 16 /* Maximum number of client threads */
+#define MAX_CLIENTS 100 /* Maximum number of client threads */
/*
int grayscale, /* Force grayscale? */
keepfile; /* Keep temporary file? */
ipp_pstate_t printer_state; /* Current printer state */
- char printer_state_reasons[1024];
- /* Current printer-state-reasons */
+ char printer_state_reasons[1024];
+ /* Current printer-state-reasons */
int job_id; /* Job ID for submitted job */
ipp_jstate_t job_state; /* Current job state */
- char job_state_reasons[1024];
- /* Current job-state-reasons */
+ char job_state_reasons[1024];
+ /* Current job-state-reasons */
} _client_data_t;
* Local functions...
*/
-static const char *make_raster_file(ipp_t *response, int grayscale, char *tempname, size_t tempsize, const char **format);
-static void *monitor_printer(_client_data_t *data);
+static const char *make_raster_file(ipp_t *response, int grayscale, char *tempname, size_t tempsize, const char **format);
+static void *monitor_printer(_client_data_t *data);
static void *run_client(_client_data_t *data);
-static void show_attributes(const char *title, int request, ipp_t *ipp);
-static void show_capabilities(ipp_t *response);
-static void usage(void);
+static void show_attributes(const char *title, int request, ipp_t *ipp);
+static void show_capabilities(ipp_t *response);
+static void usage(void);
/*
* Figure out the the media, resolution, and color mode...
*/
- if ((attr = ippFindAttribute(response, "media-default", IPP_TAG_KEYWORD)) != NULL)
- {
- /*
- * Use default media...
- */
-
- media = pwgMediaForPWG(ippGetString(attr, 0, NULL));
- }
- else if ((attr = ippFindAttribute(response, "media-ready", IPP_TAG_KEYWORD)) != NULL)
+ if ((attr = ippFindAttribute(response, "media-ready", IPP_TAG_KEYWORD)) != NULL)
{
/*
* Use ready media...
else
media = pwgMediaForPWG(ippGetString(attr, 0, NULL));
}
+ else if ((attr = ippFindAttribute(response, "media-default", IPP_TAG_KEYWORD)) != NULL)
+ {
+ /*
+ * Use default media...
+ */
+
+ media = pwgMediaForPWG(ippGetString(attr, 0, NULL));
+ }
else
{
puts("No default or ready media reported by printer, aborting.");
header.cupsInteger[CUPS_RASTER_PWG_TotalPageCount] = 1;
- if (header.cupsWidth > (4 * header.HWResolution[0]))
+ if (header.cupsWidth > (2 * header.HWResolution[0]))
{
xoff = header.HWResolution[0] / 2;
yoff = header.HWResolution[1] / 2;
}
else
{
- xoff = 0;
- yoff = 0;
+ xoff = header.HWResolution[0] / 4;
+ yoff = header.HWResolution[1] / 4;
}
xrep = (header.cupsWidth - 2 * xoff) / 140;
for (y = 0; y < header.cupsHeight; y ++)
cupsRasterWritePixels(ras, line, header.cupsBytesPerLine);
+ free(line);
+
cupsRasterClose(ras);
close(fd);
ipp_attribute_t *attr; /* Attribute in response */
static const char * const pattrs[] = /* Printer attributes we are interested in */
{
- "job-template",
- "printer-defaults",
- "printer-description",
- "media-col-database",
- "media-col-ready"
+ "all",
+ "media-col-database"
};
{
cups_file_t *fp; /* File to print */
int job_id; /* Job ID */
- ipp_status_t status; /* Submission status */
const char *title; /* Title of job */
char buffer[32768]; /* File buffer */
ssize_t bytes; /* Bytes read/to write */
else
title = filename;
- if ((status = cupsCreateDestJob(http, dest, dinfo, &job_id, title, num_options, options)) > IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED)
+ if (cupsCreateDestJob(http, dest, dinfo, &job_id, title, num_options, options) > IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED)
{
printf("Unable to create job: %s\n", cupsLastErrorString());
cupsFileClose(fp);
cupsFileClose(fp);
- if ((status = cupsFinishDestDocument(http, dest, dinfo)) > IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED)
+ if (cupsFinishDestDocument(http, dest, dinfo) > IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED)
{
printf("Unable to send document: %s\n", cupsLastErrorString());
return;
/*
* Raster test program routines for CUPS.
*
- * Copyright © 2007-2018 by Apple Inc.
+ * Copyright © 2007-2019 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
static int do_ras_file(const char *filename);
static int do_raster_tests(cups_mode_t mode);
-static void print_changes(cups_page_header2_t *header,
- cups_page_header2_t *expected);
+static void print_changes(cups_page_header2_t *header, cups_page_header2_t *expected);
/*
header.cupsPageSize[0] = 288.0f;
header.cupsPageSize[1] = 288.0f;
+ strlcpy(header.MediaType, "auto", sizeof(header.MediaType));
+
if (page & 1)
{
header.cupsBytesPerLine *= 4;
expected.PageSize[0] = 288;
expected.PageSize[1] = 288;
+ strlcpy(expected.MediaType, "auto", sizeof(expected.MediaType));
+
if (mode != CUPS_RASTER_WRITE_PWG)
{
expected.cupsPageSize[0] = 288.0f;
/*
* TLS support code for CUPS on macOS.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2021 by OpenPrinting
+ * Copyright © 2007-2021 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
else
tls_selfsigned = ident;
- _cupsMutexLock(&tls_mutex);
+ _cupsMutexUnlock(&tls_mutex);
# if 0 /* Someday perhaps SecItemCopyMatching will work for identities, at which point */
CFTypeRef itemKeys[] = { kSecClass, kSecAttrLabel, kSecValueRef };
if (!buffer)
return (0);
- if (buffer && bufsize > 0)
+ if (bufsize > 0)
*buffer = '\0';
if ((first = (http_credential_t *)cupsArrayFirst(credentials)) != NULL &&
/* Pointer to library globals */
- if (cg->home)
+ if (cg->home && getuid())
{
snprintf(buffer, bufsize, "%s/.cups", cg->home);
if (access(buffer, 0))
DEBUG_printf(("4_httpTLSStart: Using certificate \"%s\" and private key \"%s\".", crtfile, keyfile));
- if (!status)
- status = gnutls_certificate_set_x509_key_file(*credentials, crtfile, keyfile, GNUTLS_X509_FMT_PEM);
+ status = gnutls_certificate_set_x509_key_file(*credentials, crtfile, keyfile, GNUTLS_X509_FMT_PEM);
}
if (!status)
SecBufferDesc outBuffer; /* Array of SecBuffer structs */
SecBuffer outBuffers[1]; /* Security package buffer */
int ret = 0; /* Return value */
- char username[1024], /* Current username */
- common_name[1024]; /* CN=username */
DEBUG_printf(("4http_sspi_client(http=%p, hostname=\"%s\")", http, hostname));
* Lookup the client certificate...
*/
- dwSize = sizeof(username);
- GetUserNameA(username, &dwSize);
- snprintf(common_name, sizeof(common_name), "CN=%s", username);
-
- if (!http_sspi_find_credentials(http, L"ClientContainer", common_name))
- if (!http_sspi_make_credentials(http->tls, L"ClientContainer", common_name, _HTTP_MODE_CLIENT, 10))
- {
- DEBUG_puts("5http_sspi_client: Unable to get client credentials.");
- return (-1);
- }
+ if (!http_sspi_find_credentials(http, L"ClientContainer", NULL))
+ {
+ DEBUG_puts("5http_sspi_client: Unable to get client credentials.");
+ return (-1);
+ }
/*
* Initiate a ClientHello message and generate a token.
goto cleanup;
}
- dwSize = 0;
-
- if (!CertStrToNameA(X509_ASN_ENCODING, common_name, CERT_OID_NAME_STR, NULL, NULL, &dwSize, NULL))
+ if (common_name)
{
- DEBUG_printf(("5http_sspi_find_credentials: CertStrToName failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
- ok = FALSE;
- goto cleanup;
- }
+ dwSize = 0;
- p = (PBYTE)malloc(dwSize);
+ if (!CertStrToNameA(X509_ASN_ENCODING, common_name, CERT_OID_NAME_STR, NULL, NULL, &dwSize, NULL))
+ {
+ DEBUG_printf(("5http_sspi_find_credentials: CertStrToName failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+ ok = FALSE;
+ goto cleanup;
+ }
- if (!p)
- {
- DEBUG_printf(("5http_sspi_find_credentials: malloc failed for %d bytes.", dwSize));
- ok = FALSE;
- goto cleanup;
- }
+ p = (PBYTE)malloc(dwSize);
- if (!CertStrToNameA(X509_ASN_ENCODING, common_name, CERT_OID_NAME_STR, NULL, p, &dwSize, NULL))
- {
- DEBUG_printf(("5http_sspi_find_credentials: CertStrToName failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
- ok = FALSE;
- goto cleanup;
- }
+ if (!p)
+ {
+ DEBUG_printf(("5http_sspi_find_credentials: malloc failed for %d bytes.", dwSize));
+ ok = FALSE;
+ goto cleanup;
+ }
- sib.cbData = dwSize;
- sib.pbData = p;
+ if (!CertStrToNameA(X509_ASN_ENCODING, common_name, CERT_OID_NAME_STR, NULL, p, &dwSize, NULL))
+ {
+ DEBUG_printf(("5http_sspi_find_credentials: CertStrToName failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+ ok = FALSE;
+ goto cleanup;
+ }
- storedContext = CertFindCertificateInStore(store, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, CERT_FIND_SUBJECT_NAME, &sib, NULL);
+ sib.cbData = dwSize;
+ sib.pbData = p;
- if (!storedContext)
- {
- DEBUG_printf(("5http_sspi_find_credentials: Unable to find credentials for \"%s\".", common_name));
- ok = FALSE;
- goto cleanup;
+ storedContext = CertFindCertificateInStore(store, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, CERT_FIND_SUBJECT_NAME, &sib, NULL);
+
+ if (!storedContext)
+ {
+ DEBUG_printf(("5http_sspi_find_credentials: Unable to find credentials for \"%s\".", common_name));
+ ok = FALSE;
+ goto cleanup;
+ }
}
ZeroMemory(&SchannelCred, sizeof(SchannelCred));
SchannelCred.dwVersion = SCHANNEL_CRED_VERSION;
- SchannelCred.cCreds = 1;
- SchannelCred.paCred = &storedContext;
+
+ if (common_name)
+ {
+ SchannelCred.cCreds = 1;
+ SchannelCred.paCred = &storedContext;
+ }
/*
* Set supported protocols (can also be overriden in the registry...)
SchannelCred.cCreds = 1;
SchannelCred.paCred = &storedContext;
- /*
- * SSPI doesn't seem to like it if grbitEnabledProtocols is set for a client.
- */
-
- if (mode == _HTTP_MODE_SERVER)
- SchannelCred.grbitEnabledProtocols = SP_PROT_SSL3TLS1;
-
/*
* Create an SSPI credential.
*/
* Local functions...
*/
-static void usage(void);
+static void usage(void) _CUPS_NORETURN;
/*
-<HTML>
+<!DOCTYPE html>
+<html>
<!-- SECTION: Getting Started -->
-<HEAD>
- <TITLE>Using CGI Programs</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
+ <head>
+ <title>Using CGI Programs</title>
+ <link rel="stylesheet" type="text/css" href="../cups-printable.css">
+ </head>
+ <body>
+ <h1 class="title">Using CGI Programs</h1>
-<H1 CLASS="title">Using CGI Programs</H1>
+ <p>CUPS provides a dynamic web interface through dedicated CGI programs that are executed when users open special directories on the CUPS server. Each CGI performs administration, class, help, job, and printer functions as directed by the user, but the actual programs that are run and functions that are available are limited to those that were originally designed into the scheduler.</p>
-<P>CUPS provides a dynamic web interface through dedicated CGI programs that
-are executed when users open special directories on the CUPS server. Each CGI
-performs administration, class, help, job, and printer functions as directed by
-the user, but the actual programs that are run and functions that are available
-are limited to those that were originally designed into the scheduler.</P>
+ <p>CUPS also supports CGI scripts/programs for pages you want to provide, although this functionality is disabled by default. The "application/x-httpd-cgi" MIME media type is used to identify CGI content and can be associated with any filename extension. The scheduler requires CGI content to have the execute bit set, not have world or group write permissions, and any CGI scripts need to include a <tt>#!</tt> line as the first line of a script to identify the script interpreter. For example, a PHP script would look like:</p>
-<P>CUPS also supports CGI programs and specific scripting languages (Java, Perl,
-PHP, and Python) for pages you want to provide. The interpreters for these
-languages are currently configured at compile time and are associated with
-MIME media types. <a href="#TABLE1">Table 1</a> shows the MIME media types that
-are reserved for each type of page and are the same as those used by the Apache
-web server.</P>
+ <pre class="example">
+#!/usr/bin/php -fn
+<?php
+...
+?>
+</pre>
-<DIV CLASS="table"><TABLE SUMMARY="CGI MIME Media Types">
-<CAPTION><A NAME="TABLE1">Table 1</A>: CGI MIME Media Types</CAPTION>
-<TR>
- <TH>MIME Media Type</TH>
- <TH>Description</TH>
-</TR>
-<TR>
- <TD>application/x-httpd-cgi</TD>
- <TD>CGI script/program</TD>
-</TR>
-<TR>
- <TD>application/x-httpd-java</TD>
- <TD>Java program</TD>
-</TR>
-<TR>
- <TD>application/x-httpd-perl</TD>
- <TD>Perl script</TD>
-</TR>
-<TR>
- <TD>application/x-httpd-php</TD>
- <TD>PHP script</TD>
-</TR>
-<TR>
- <TD>application/x-httpd-python</TD>
- <TD>Python script</TD>
-</TR>
-</TABLE></DIV>
-<H2><A NAME="CONFIG">Configuring the Server</A></H2>
+ <h2><a name="CONFIG">Configuring the Server</a></h2>
-<P>In order to enable the corresponding type, you must create a
-new <VAR>/etc/cups/cgi.types</VAR> file which maps the filename
-extensions to the appropriate MIME types, for example:</P>
+ <p>In order to enable the corresponding type, you must create a new <var>/etc/cups/cgi.types</var> file which maps the filename extensions you use to the appropriate MIME types. For example, the following will support CGI programs/scripts with the "cgi" extension:</p>
-<PRE CLASS="command">
+ <pre class="command">
application/x-httpd-cgi cgi
-application/x-httpd-java class
-application/x-httpd-perl pl
-application/x-httpd-php php
-application/x-httpd-python py
-</PRE>
+</pre>
-<P>CGI scripts/programs (application/x-httpd-cgi) also must be owned by root, have execution permissions, and not have world or group write permissions to be treated as a CGI script or program.</P>
-<H2><A NAME="LIMITS">Limitations</A></H2>
+ <h2><a name="LIMITS">Limitations</a></h2>
-<P>CUPS implements most of the CGI/1.1 specification, with the
-following exceptions:</P>
+ <p>CUPS implements most of the CGI/1.1 specification, with the following exceptions:</p>
-<UL>
-
- <LI>No PATH_INFO or PATH_TRANSLATED support</LI>
-
- <LI>Limited HTTP field support; only the Content-Length (CONTENT_LENGTH), Content-Type (CONTENT_TYPE), Cookie (HTTP_COOKIE), Referrer (HTTP_REFERRER), and User-Agent (HTTP_USER_AGENT) fields are placed in environment variables at this time</LI>
-
-</UL>
-
-</BODY>
-</HTML>
+ <ul>
+ <li>No PATH_INFO or PATH_TRANSLATED support</li>
+ <li>Limited HTTP field support; only the Content-Length (<tt>CONTENT_LENGTH</tt>), Content-Type (<tt>CONTENT_TYPE</tt>), Cookie (<tt>HTTP_COOKIE</tt>), Referrer (<tt>HTTP_REFERRER</tt>), and User-Agent (<tt>HTTP_USER_AGENT</tt>) fields are placed in environment variables at this time</li>
+ </ul>
+ </body>
+</html>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="creator" content="codedoc v3.1">
<meta name="author" content="Michael R Sweet">
- <meta name="copyright" content="Copyright © 2007-2019 by Apple Inc. All Rights Reserved.">
- <meta name="version" content="2.3.1">
+ <meta name="copyright" content="Copyright © 2007-2022 by Apple Inc. All Rights Reserved.">
+ <meta name="version" content="2.3.6">
<style type="text/css"><!--
body, p, h1, h2, h3, h4 {
font-family: sans-serif;
<body>
<h1 class="title">CUPS Programming Manual</h1>
<p>Michael R Sweet</p>
- <p>Copyright © 2007-2019 by Apple Inc. All Rights Reserved.</p>
+ <p>Copyright © 2007-2020 by Apple Inc. All Rights Reserved.</p>
<div class="contents">
<h2 class="title">Contents</h2>
<ul class="contents">
<dd style="margin-left: 5.0em"><dt><b>KeepAlive No</b>
<dd style="margin-left: 5.0em">Specifies whether to support HTTP keep-alive connections.
The default is "Yes".
-<dt><a name="KeepAliveTimeout"></a><b>KeepAliveTimeout </b><i>seconds</i>
-<dd style="margin-left: 5.0em">Specifies how long an idle client connection remains open.
-The default is "30".
<dt><a name="LimitIPP"></a><b><Limit </b><i>operation </i>...<b>> </b>... <b></Limit></b>
<dd style="margin-left: 5.0em">Specifies the IPP operations that are being limited inside a Policy section. IPP operation names are listed below in the section "IPP OPERATION NAMES".
<dt><a name="Limit"></a><b><Limit </b><i>method </i>...<b>> </b>... <b></Limit></b>
<dd style="margin-left: 5.0em">Listens to the specified address and port or domain socket path for connections.
Multiple Listen directives can be provided to listen on multiple addresses.
The Listen directive is similar to the Port directive but allows you to restrict access to specific interfaces or networks.
-<dt><a name="ListenBackLog"></a><b>ListenBackLog </b><i>number</i>
-<dd style="margin-left: 5.0em">Specifies the number of pending connections that will be allowed.
-This normally only affects very busy servers that have reached the MaxClients limit, but can also be triggered by large numbers of simultaneous connections.
-When the limit is reached, the operating system will refuse additional connections until the scheduler can accept the pending ones.
-The default is the OS-defined default limit, typically either "5" for older operating systems or "128" for newer operating systems.
<dt><a name="Location"></a><b><Location </b><i>/path</i><b>> </b>... <b></Location></b>
<dd style="margin-left: 5.0em">Specifies access control for the named location.
Paths are documented below in the section "LOCATION PATHS".
<dd style="margin-left: 5.0em"><br>
Specifies whether users may override the classification (cover page) of individual print jobs using the "job-sheets" option.
The default is "No".
+<dt><a name="ListenBackLog"></a><b>ListenBackLog </b><i>number</i>
+<dd style="margin-left: 5.0em">Specified the number of pending connections that will be allowed.
+The scheduler now uses the value "128" on all platforms.
<dt><a name="PageLogFormat"></a><b>PageLogFormat </b><i>format-string</i>
<dd style="margin-left: 5.0em">Specifies the format of PageLog lines.
Sequences beginning with percent (%) characters are replaced with the corresponding information, while all other characters are copied literally.
<b>subscriptions.conf</b>(5),
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright © 2007-2019 by Apple Inc.
+Copyright © 2007-2021 by Apple Inc.
</body>
</html>
] [
<b>--no-web-forms</b>
] [
+<b>--pam-service</b>
+<i>service</i>
+] [
<b>--version</b>
] [
<b>-2</b>
] [
+<b>-A</b>
+] [
<b>-D</b>
<i>device-uri</i>
] [
<dd style="margin-left: 5.0em">Show program usage.
<dt><b>--no-web-forms</b>
<dd style="margin-left: 5.0em">Disable the web interface forms used to update the media and supply levels.
+<dt><b>--pam-service </b><i>service</i>
+<dd style="margin-left: 5.0em">Set the PAM service name.
+The default service is "cups".
<dt><b>--version</b>
<dd style="margin-left: 5.0em">Show the CUPS version.
<dt><b>-2</b>
<dd style="margin-left: 5.0em">Report support for two-sided (duplex) printing.
+<dt><b>-A</b>
+<dd style="margin-left: 5.0em">Enable authentication for the created printer.
+<b>ippeveprinter</b>
+uses PAM to authenticate HTTP Basic credentials.
<dt><b>-D </b><i>device-uri</i>
<dd style="margin-left: 5.0em">Set the device URI for print output.
The URI can be a filename, directory, or a network socket URI of the form "socket://ADDRESS[:PORT]" (where the default port number is 9100).
<dt><b>-p </b><i>port</i>
<dd style="margin-left: 5.0em">Specifies the port number to listen on.
The default is a user-specific number from 8000 to 8999.
+<dt><b>-r</b><b>off</b>
+<dd style="margin-left: 5.0em">Turns off DNS-SD service advertisements entirely.
<dt><b>-r </b><i>subtype[,subtype]</i>
<dd style="margin-left: 5.0em">Specifies the DNS-SD subtype(s) to advertise.
Separate multiple subtypes with a comma.
<b>-P</b>
<i>filename.plist</i>
] [
+<b>-R</b>
+] [
<b>-S</b>
] [
<b>-T</b>
<dt><b>-P</b><i> filename.plist</i>
<dd style="margin-left: 5.0em">Specifies that the test results should be written to the named XML (Apple plist) file in addition to the regular test report (<b>-t</b>).
This option is incompatible with the <b>-i</b> (interval) and <b>-n</b> (repeat-count) options.
+<dt><b>-R</b>
+<dd style="margin-left: 5.0em">Retries tests when the "server-error-busy" status code is returned.
<dt><b>-S</b>
<dd style="margin-left: 5.0em">Forces (dedicated) TLS encryption when connecting to the server.
<dt><b>-T</b><i> seconds</i>
PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp">http://www.pwg.org/ipp</a>)
RFC 8011 (<a href="http://tools.ietf.org/html/rfc8011)">http://tools.ietf.org/html/rfc8011)</a>,
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright © 2007-2019 by Apple Inc.
+Copyright © 2007-2021 by Apple Inc.
</body>
</html>
<dd style="margin-left: 5.0em">Specifies whether
<b>ipptool</b>(8)
will ignore errors and continue with subsequent tests.
+<dt><b>MONITOR-PRINTER-STATE </b>[ <i>printer-uri </i>] <b>{ EXPECT </b><i>attribute-name </i>[ <i>predicate(s) </i>] <b>}</b>
+<dd style="margin-left: 5.0em">Specifies printer state monitoring tests to run in parallel with the test operation.
+The monitoring tests will run until all of the <b>EXPECT</b> conditions are satisfied or the primary test operation has completed, whichever occurs first.
<dt><b>NAME "</b><i>literal string</i><b>"</b>
<dd style="margin-left: 5.0em">Specifies the human-readable name of the test.
<dt><b>OPERATION </b><i>operation-code</i>
<dt><b>COUNT </b><i>number</i>
<dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to have the specified number of values.
<dt><b>DEFINE-MATCH </b><i>variable-name</i>
-<dd style="margin-left: 5.0em">Defines the variable to "1" when the <b>EXPECT</b> condition matches. A side-effect of this predicate is that this <b>EXPECT</b> will never fail a test.
+<dd style="margin-left: 5.0em">Defines the variable to "1" when the <b>EXPECT</b> condition matches.
+A side-effect of this predicate is that this <b>EXPECT</b> will never fail a test.
<dt><b>DEFINE-NO-MATCH </b><i>variable-name</i>
-<dd style="margin-left: 5.0em">Defines the variable to "1" when the <b>EXPECT</b> condition does not match. A side-effect of this predicate is that this <b>EXPECT</b> will never fail a test.
+<dd style="margin-left: 5.0em">Defines the variable to "1" when the <b>EXPECT</b> condition does not match.
+A side-effect of this predicate is that this <b>EXPECT</b> will never fail a test.
<dt><b>DEFINE-VALUE </b><i>variable-name</i>
-<dd style="margin-left: 5.0em">Defines the variable to the value of the attribute when the <b>EXPECT</b> condition matches. A side-effect of this predicate is that this <b>EXPECT</b> will never fail a test.
+<dd style="margin-left: 5.0em">Defines the variable to the value of the attribute when the <b>EXPECT</b> condition matches.
+A side-effect of this predicate is that this <b>EXPECT</b> will never fail a test.
+<dt><b>DISPLAY-MATCH </b><i>"message"</i>
+<dd style="margin-left: 5.0em">Displays the specified message when the <b>EXPECT</b> condition matches.
<dt><b>IF-DEFINED </b><i>variable-name</i>
<dd style="margin-left: 5.0em">Makes the <b>EXPECT</b> conditions apply only if the specified variable is defined.
<dt><b>IF-NOT-DEFINED </b><i>variable-name</i>
<dd style="margin-left: 5.0em">Makes the <b>EXPECT</b> conditions apply only if the specified variable is not defined.
<dt><b>IN-GROUP </b><i>tag</i>
<dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to be in the specified group tag.
-<dt><b>OF-TYPE </b><i>tag[|tag,...]</i>
+<dt><b>OF-TYPE </b><i>tag[(limits)|tag|...]</i>
<dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to use one of the specified value tag(s).
+Most value tags also support the specification of limits in parenthesis, for example "name(42)" would allow nameWith/WithoutLanguage strings up to 42 octets in length, "name(4:MAX)" would allow nameWith/WithoutLanguage strings between 4 and 255 octets in length, and "integer(-273:MAX)" would allow integers between -273 and 2147483647.
<dt><b>REPEAT-LIMIT </b><i>number</i>
<dd style="margin-left: 5.0em"><br>
Specifies the maximum number of times to repeat if the <b>REPEAT-MATCH</b> or <b>REPEAT-NO-MATCH</b> predicate is specified. The default value is 1000.
<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-VALUES "true"</b>
<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute match the boolean value given.
<dt><b>WITH-ALL-VALUES "/</b><i>regular expression</i><b>/"</b>
-<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute match the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
+<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute match the regular expression, which must conform to the POSIX regular expression syntax.
+Comparisons are case-sensitive.
+<dt><b>WITH-DISTINCT-VALUES</b>
+<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute are unique.
+Comparisons are case-sensitive.
+Only charset, collection, enum, integer, keyword, mimeMediaType, naturalLanguage, rangeOfInteger, resolution, uriScheme attributes support this predicate.
<dt><b>WITH-HOSTNAME "</b><i>literal string</i><b>"</b>
<dd style="margin-left: 5.0em"><dt><b>WITH-HOSTNAME "/</b><i>regular expression</i><b>/"</b>
<dd style="margin-left: 5.0em">Requires that at least one URI value contains a matching hostname.
PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp)">http://www.pwg.org/ipp)</a>,
RFC 8011 (<a href="http://tools.ietf.org/html/rfc8011">http://tools.ietf.org/html/rfc8011</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright © 2007-2019 by Apple Inc.
+Copyright © 2007-2021 by Apple Inc.
</body>
</html>
<!--
IPP specification for CUPS.
- Copyright © 2007-2016 by Apple Inc.
+ Copyright © 2007-2023 by Apple Inc.
Copyright © 1997-2007 by Easy Software Products.
Licensed under Apache License v2.0. See the file "LICENSE" for more
<h4>printer-type-mask (type2 enum)<span class='info'>CUPS 1.1</span></h4>
<p>The "printer-type-mask" attribute is used to choose printers or classes with the CUPS-Get-Printers and CUPS-Get-Classes operations. The bits are defined identically to the printer-type attribute and default to all 1's.
+</p>
+
+<h4>printer-wifi-password (octetString(MAX))</h4>
+
+<p>The optional "printer-wifi-password" description attribute provides the wireless network password for a printer.
+Printers must not return this attribute in the response to a Get-Printer-Attributes request.
+This attribute can only be set via an authenticated Set-Printer-Attributes request over a secure channel,
+or via an unauthenticated IPP USB connection when the printer is in its initial setup state.
+When a value for this attribute is not set, the 'wifi-not-configured-report' keyword must be present in the
+"printer-state-reasons" printer attribute values. If a printer supports this attribute, it must also support
+the "printer-wifi-ssid" and "printer-wifi-state" attributes.</p>
+
+<h4>printer-wifi-ssid (name(MAX))</h4>
+
+<p>The optional "printer-wifi-ssid" description attribute specifies the wireless network name for the printer.
+When set to the empty string, the printer must not join infrastructure or ad-hoc networks.
+This attribute can only be set via an authenticated Set-Printer-Attributes request over a secure channel,
+or via an unauthenticated IPP USB connection when the printer is in its initial setup state.
+This attribute also must reflect any configuration done by the user through the printer's web interface,
+control panel, or other interface. When a value for this attribute is not set, the 'wifi-not-configured-report'
+keyword must be present in the "printer-state-reasons" printer attribute values.
+If a printer supports this attribute, it must also support the "printer-wifi-password" and
+"printer-wifi-state" attributes.</p>
+
+<p>Printers that support the Set-Printer-Attribtes operation and "printer-wifi-password" and "printer-wifi-ssid"
+printer description attributes must also support unauthenticated Set-Printer-Attributes requests over USB when Wi-Fi
+networking has not yet been configured. This allows a client to configure the Wi-Fi networking of a printer over USB.</p>
+
+<p>When configuring a wireless network, clients must send both the "printer-wifi-ssid" and "printer-wifi-password"
+printer description attributes. If only one attribute is supplied, the printer must reject the request with the
+client-error-bad-request status code. If either attribute is supplied with an invalid value,
+the printer must reject the request with the client-error-attributes-or-values-not-supported status code.</p>
+
+In addition to other defined printer-state-reasons, the 'wifi-not-configured-report' reason is returned when the
+"printer-wifi-password" and "printer-wifi-ssid" printer description attributes are not set,
+regardless of the value of the "printer-wifi-state" printer status attribute.
+
+<h4>printer-wifi-state (type2 enum)</h4>
+
+<p>The optional "printer-wifi-state" status attribute specifies a printer's current wireless network state as
+an enumerated value. The following values are currently defined:</p>
+
+<div class='table'><table align='center' border='1' width='80%' summary='Wireless Networking State'>
+<tbody>
+<tr>
+ <td>3</td>
+ <td>(off) wireless networking is turned off</td>
+</tr>
+<tr>
+ <td>4</td>
+ <td>(not-configured) wireless networking is not yet configured</td>
+</tr>
+<tr>
+ <td>5</td>
+ <td>(not-visible) the configured wireless network is not visible</td>
+</tr>
+<tr>
+ <td>6</td>
+ <td>(cannot-join) unable to join the configured wireless network</td>
+</tr>
+<tr>
+ <td>7</td>
+ <td>(joining) joining the configured wireless network</td>
+</tr>
+<tr>
+ <td>8</td>
+ <td>(on) joined to the configured wireless network</td>
+</tr>
+</tbody>
+</table></div>
<h4>requesting-user-name-allowed (1setof name(127))<span class='info'>CUPS 1.1</span></h4>
--- /dev/null
+#!/bin/sh
+echo "Content-Type: text/plain"
+echo ""
+echo "POSIX shell CGI test page."
+echo ""
+echo "ps ax"
+ps ax
--- /dev/null
+#!/usr/bin/php -nf
+<?php
+print("Content-Type: text/html\n\n");
+print("<!DOCTYPE html>\n"
+ ."<html>\n"
+ ." <head>\n"
+ ." <title>PHP script CGI test page</title>\n"
+ ." </head>\n"
+ ." <body>\n"
+ ." <h1>PHP script CGI test page</h1>\n"
+ ." <pre><kbd>ps ax</kbd>\n");
+$fp = popen("ps ax", "r");
+while ($line = fgets($fp, 1024))
+{
+ print(htmlspecialchars($line));
+}
+print("</pre>\n"
+ ." </body>\n"
+ ."</html>\n");
+?>
-All work and no play makes Johhny a dull boy. All work and no\r
-play makes Johhny a dull boy. All work and no play makes Johhny\r
-a dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy. All\r
-work and no play makes Johhny a dull boy. All work and no play\r
-makes Johhny a dull boy. All work and no play makes Johhny a\r
-dull boy. All work and no play makes Johhny a dull boy.\r
+All work and no play makes Johhny a dull boy. All work and no
+play makes Johhny a dull boy. All work and no play makes Johhny
+a dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy. All
+work and no play makes Johhny a dull boy. All work and no play
+makes Johhny a dull boy. All work and no play makes Johhny a
+dull boy. All work and no play makes Johhny a dull boy.
if ((classification = getenv("CLASSIFICATION")) == NULL)
classification = "";
- if (strcmp(classification, "none") == 0)
+ else if (strcmp(classification, "none") == 0)
classification = "";
/*
Shutdown();
- if (ppd)
- ppdClose(ppd);
+ ppdClose(ppd);
/*
* Close the raster stream...
/*
- * This driver filter currently supports Dymo, Intellitech, and Zebra
+ * This driver filter currently supports DYMO, Intellitech, and Zebra
* label printers.
*
- * The Dymo portion of the driver has been tested with the 300, 330,
- * and 330 Turbo label printers; it may also work with other models.
- * The Dymo printers support printing at 136, 203, and 300 DPI.
+ * The DYMO portion of the driver has been tested with the 300, 330,
+ * 330 Turbo, and 450 Twin Turbo label printers; it may also work with other
+ * models. The DYMO printers support printing at 136, 203, and 300 DPI.
*
* The Intellitech portion of the driver has been tested with the
* Intellibar 408, 412, and 808 and supports their PCL variant.
* Model number constants...
*/
-#define DYMO_3x0 0 /* Dymo Labelwriter 300/330/330 Turbo */
+#define DYMO_3x0 0 /* DYMO Labelwriter 300/330/330 Turbo */
#define ZEBRA_EPL_LINE 0x10 /* Zebra EPL line mode printers */
#define ZEBRA_EPL_PAGE 0x11 /* Zebra EPL page mode printers */
printf("\033D%c", header->cupsBytesPerLine);
printf("\033%c", header->cupsCompression + 'c'); /* Darkness */
+ printf("\033q%d", header->MediaPosition + 1); /* Roll Select */
break;
case ZEBRA_EPL_LINE :
--- /dev/null
+/*
+ * Raster filter to pdf
+ *
+ * Copyright © 2022 by Apple Inc.
+ *
+ * Licensed under Apache License v2.0. See the file "LICENSE" for more
+ * information.
+ *
+ * see <https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf> for complete spec
+ * see <https://zlib.net/manual.html> for zlib documentation
+ *
+ * To build with zlib:
+ * g++ -c -g -Os -o rastertopdf.o rastertopdf.cpp
+ * cc -o rasterToPDF rastertopdf.o -lz -lstdc++ `cups-config --libs`
+ *
+ * To build without zlib: This will produce very large pdf files.
+ * g++ -DDeflateData=0 -c -g -Os -o rastertopdf.o rastertopdf.cpp
+ * cc -o rasterToPDF rastertopdf.o -lstdc++ `cups-config --libs`
+ */
+
+#include <cups/cups.h>
+#include <cups/raster.h>
+#include <cups/backend.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <libgen.h>
+#include <limits.h>
+#include <signal.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <vector>
+
+
+#ifndef __has_include
+ static_assert(false, "__has_include not supported");
+#endif
+
+#if ( !defined(DeflateData) )
+ #if __has_include(<zlib.h>)
+ #define DeflateData 1
+ #include <zlib.h>
+ #else
+ #define DeflateData 0
+ #endif
+#elif ( DeflateData )
+ #if __has_include(<zlib.h>)
+ #include <zlib.h>
+ #else
+ #warning 'zlib.h' does not exits.
+ #undef DeflateData
+ #define DeflateData 0
+ #endif
+#endif
+
+static int Canceled = 0; /* Has the current job been canceled? */
+
+// MARK: - Misc -
+static int rasterToPDFColorSpace( cups_cspace_t colorSpace, int bitsPerPixel, int *bitsPerComponent, char *cs, size_t csLen )
+{
+ switch (colorSpace)
+ {
+ case CUPS_CSPACE_W:
+ case CUPS_CSPACE_SW:
+ *bitsPerComponent = bitsPerPixel;
+ strncpy( cs, "[/CalGray << /Gamma 2.2 /WhitePoint[ 0.9505 1.0 1.089 ] >>]", csLen );
+ break;
+
+ case CUPS_CSPACE_RGB:
+ case CUPS_CSPACE_SRGB:
+ *bitsPerComponent = bitsPerPixel/3;
+ strncpy( cs, "[/CalRGB <<\n"
+ " /Gamma[ 2.2 2.2 2.2 ]\n"
+ " /Matrix[ 0.4124 0.2126 0.0193\n"
+ " 0.3576 0.7152 0.1192\n"
+ " 0.1805 0.0722 0.9505 ]\n"
+ " /WhitePoint[ 0.9505 1.0 1.089 ]\n"
+ ">>]", csLen );
+ break;
+
+ default :
+ // AirPrint only requires sRGB and 2.2 gray.
+ // NOTE: This is not a general solution.
+ fprintf(stderr, "DEBUG: Unsupported colorspace %u.\n", colorSpace);
+ return -1;
+ }
+ return 0;
+}
+
+static void compressImageData(const unsigned char *inData,
+ size_t inSize,
+ unsigned char **outData,
+ size_t *outSize )
+{
+ if (outData == NULL || outSize == NULL)
+ {
+ fprintf(stderr, "Invalid Parameters, Line:%d\n", __LINE__);
+ exit( EXIT_FAILURE );
+ }
+#if DeflateData
+ int err = ENOMEM;
+
+ *outSize = compressBound( (uLongf)inSize );
+ *outData = (unsigned char *)malloc( *outSize );
+
+ if (*outData != NULL) err = compress( *outData, outSize, inData, inSize );
+
+ if (err != 0)
+ {
+ fprintf( stderr, "Failed to %s data, Line:%d\n", (*outData ? "compress" : "allocate"), __LINE__);
+
+ if (*outData) free( *outData );
+
+ *outData = (unsigned char *)inData;
+ *outSize = inSize;
+ }
+#else
+ *outData = (unsigned char *)inData;
+ *outSize = inSize;
+#endif
+}
+
+// MARK: - PDF Stuff -
+static long writeImageObject(FILE *pdfFile,
+ unsigned int imageReference,
+ unsigned int width,
+ unsigned int height,
+ int interpolate,
+ int bitsPerComponent,
+ char colorspace[64],
+ const unsigned char *rasterData,
+ size_t rasterDataSize )
+{
+ unsigned char *data = NULL;
+ size_t size;
+ long objectOffset = 0;
+
+ compressImageData( rasterData, rasterDataSize, &data, &size );
+
+ fprintf(pdfFile, "\n%u 0 obj\n", imageReference );
+ objectOffset = ftell(pdfFile);
+ fprintf(pdfFile, "<< /Type /XObject\n"
+ " /Subtype /Image\n"
+ " /Width %u\n"
+ " /Height %u\n"
+ " /Interpolate %s\n"
+ " /ColorSpace %s\n"
+ " /BitsPerComponent %d\n"
+ " /Length %zu\n", width, height, (interpolate ? "true" : "false"), colorspace, bitsPerComponent, rasterDataSize );
+
+ if (rasterData != data)
+ fprintf(pdfFile, " /Filter /FlateDecode\n");
+
+ fprintf(pdfFile, ">>\nstream\n" );
+ fwrite( data, size, 1, pdfFile );
+ fprintf(pdfFile, "\nendstream"
+ "\nendobj\n");
+
+ // free the data the was allocated in compressImageData
+ if (rasterData != data) free( data );
+
+ return objectOffset;
+}
+
+static long writePageStream(FILE *pdfFile,
+ unsigned int streamReference,
+ int width,
+ int height,
+ int pageNumber)
+{
+ long objectOffset = 0;
+ char imageStream[64];
+
+ snprintf( imageStream, sizeof( imageStream ), "q %d 0 0 %d 0 0 cm /Im%u Do Q", width, height, pageNumber );
+
+ fprintf(pdfFile, "\n%u 0 obj\n", streamReference );
+ objectOffset = ftell(pdfFile);
+ fprintf(pdfFile, "<< /Length %zu >>\n"
+ "stream\n"
+ "%s"
+ "\nendstream"
+ "\nendobj\n", strlen(imageStream), imageStream );
+
+ return objectOffset;
+}
+
+static long writePageObject(FILE *pdfFile,
+ unsigned int pageReference,
+ unsigned int resouceReference,
+ unsigned int contentReference,
+ int width,
+ int height)
+{
+ long objectOffset = 0;
+
+ fprintf(pdfFile, "\n%u 0 obj\n", pageReference );
+ objectOffset = ftell(pdfFile);
+ fprintf(pdfFile, "<< /Type /Page\n"
+ " /Parent 2 0 R\n"
+ " /Resources %u 0 R\n"
+ " /Contents %u 0 R\n"
+ " /MediaBox [0 0 %d %d]\n"
+ ">>\nendobj\n", resouceReference, contentReference, width, height );
+
+ return objectOffset;
+}
+
+static long writeResourceObject(FILE *pdfFile,
+ unsigned int rsrcReference,
+ unsigned int contentReference,
+ unsigned int page )
+{
+ long objectOffset = 0;
+
+ fprintf(pdfFile, "\n%u 0 obj\n", rsrcReference );
+ objectOffset = ftell(pdfFile);
+ fprintf(pdfFile, "<< /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im%u %u 0 R >> >>\nendobj\n", page, contentReference );
+
+ return objectOffset;
+}
+
+static long writePagesObject( FILE *pdfFile, std::vector<unsigned int> pages )
+{
+ long objectOffset = 0;
+
+ fprintf(pdfFile, "\n2 0 obj\n");
+ objectOffset = ftell(pdfFile);
+ fprintf(pdfFile, "<< /Type /Pages /Count %lu /Kids [", (unsigned long)pages.size());
+ for (unsigned int i : pages )
+ {
+ fprintf( pdfFile, " %d 0 R", i );
+ }
+ fprintf(pdfFile, " ] >>\nendobj\n");
+
+ return objectOffset;
+}
+
+static long writeCatalogObject( FILE *pdfFile, unsigned int objectReference )
+{
+ long objectOffset = 0;
+
+ fprintf(pdfFile, "\n%u 0 obj\n", objectReference);
+ objectOffset = ftell(pdfFile);
+ fprintf(pdfFile, "<< /Type /Catalog /Pages 2 0 R >>\n");
+ fprintf(pdfFile, "endobj\n");
+
+ return objectOffset;
+}
+
+static void writeTrailerObject(FILE *pdfFile,
+ unsigned int catalogReference,
+ unsigned long numObjects,
+ long startXOffset)
+{
+ fprintf( pdfFile, "trailer\n"
+ "<< /Root %u 0 R\n"
+ " /Size %lu >>\n"
+ "startxref\n"
+ "%ld\n"
+ "%%%%EOF\n", catalogReference, numObjects, startXOffset);
+}
+
+static long writeXRefTable( FILE *pdfFile, std::vector<long> offsets, long startOffset )
+{
+ long objectOffset = ftell(pdfFile);
+ fprintf( pdfFile, "xref\n"
+ "0 %lu\n"
+ "0000000000 65535 f\n", (unsigned long)(offsets.size() + 1) );
+ for (long offset : offsets )
+ {
+ fprintf( pdfFile, "%010ld 00000 n\n", offset - startOffset );
+ }
+ return objectOffset;
+}
+
+static long writeHeader( FILE *pdfFile )
+{
+ fprintf(pdfFile, "%%PDF-1.3\n");
+
+ return ftell(pdfFile);
+}
+
+// MARK: - Work -
+static int convertCUPSRasterToPDF( int rasterIn )
+{
+ #define kInitialImageReferenceID 10
+ int err = 0;
+ int pages = 0;
+ unsigned int objectReference = kInitialImageReferenceID;
+ unsigned int catalogReference = objectReference++;
+
+ long startOffset;
+ long offset;
+
+ float width = 0;
+ float height = 0;
+
+ size_t largestAllocatedMemory = 0;
+ unsigned char *rasterData = NULL;
+
+ std::vector<unsigned int> pageReferences;
+ std::vector<long> objectOffsets;
+ cups_raster_t *rasterFile = NULL;
+ cups_page_header2_t pageHeader;
+
+ FILE *pdfFile = stdout;
+
+ rasterFile = cupsRasterOpen(rasterIn, CUPS_RASTER_READ);
+ if (rasterFile == NULL)
+ {
+ err = errno;
+ fprintf(stderr, "ERROR: Error reading raster data.\n");
+ perror("DEBUG: cupsRasterOpen failed to open the file");
+ goto bail;
+ }
+
+ startOffset = writeHeader( pdfFile );
+ while ( !Canceled && cupsRasterReadHeader2(rasterFile, &pageHeader) )
+ {
+ char colorspace[256];
+ int bitsPerComponent = 8;
+
+ fprintf(stderr, "PAGE: %d %d\n", pages+1, pageHeader.NumCopies);
+ fprintf(stderr, "DEBUG:%04d] pageHeader.colorSpace=%u, .bitsPerPixel=%u, .duplexMode=%u\n",
+ pages, pageHeader.cupsColorSpace, pageHeader.cupsBitsPerPixel, pageHeader.Duplex);
+ fprintf(stderr, "DEBUG: pageHeader.width=%u, .height=%u, .resolution=%u x %u\n",
+ pageHeader.cupsWidth, pageHeader.cupsHeight, pageHeader.HWResolution[0], pageHeader.HWResolution[1]);
+
+ int status = rasterToPDFColorSpace( pageHeader.cupsColorSpace, pageHeader.cupsBitsPerPixel, &bitsPerComponent, colorspace, sizeof(colorspace) );
+ if (status)
+ {
+ fprintf( stderr, "INFO: Unable to determine a colorspace. skipping this page.\n" );
+ continue;
+ }
+
+ size_t imageSize = pageHeader.cupsHeight * pageHeader.cupsBytesPerLine;
+ if (imageSize > largestAllocatedMemory)
+ {
+ rasterData = (unsigned char *)(rasterData == NULL ? malloc(imageSize) : realloc(rasterData, imageSize));
+ largestAllocatedMemory = imageSize;
+ }
+
+ if (rasterData == NULL)
+ {
+ fprintf(stderr, "ERROR: Unable to allocate memory for page info\n");
+ err = -1;
+ break;
+ }
+
+ size_t result = (size_t) cupsRasterReadPixels(rasterFile, rasterData, (unsigned int)imageSize);
+ if (result != imageSize)
+ {
+ err = -2;
+ fprintf(stderr, "ERROR: Unable to read print data.\n");
+ fprintf(stderr, "DEBUG: cupsRasterReadPixels faild on page:%d (%zu of %zu bytes read)\n", pages+1, result, imageSize );
+ break;
+ }
+
+ width = 72.0 * pageHeader.cupsWidth / pageHeader.HWResolution[1];
+ height = 72.0 * pageHeader.cupsHeight / pageHeader.HWResolution[0];
+
+ unsigned int pageReference = objectReference++;
+ unsigned int rsrcReference = objectReference++;
+ unsigned int streamReference = objectReference++;
+ unsigned int imageReference = objectReference++;
+ int interpolate = 0;
+
+ offset = writePageStream(pdfFile, streamReference, width, height, pages+1 );
+ objectOffsets.push_back( offset );
+
+ offset = writePageObject(pdfFile,
+ pageReference,
+ rsrcReference,
+ streamReference,
+ width,
+ height);
+ objectOffsets.push_back( offset );
+
+ offset = writeResourceObject(pdfFile, rsrcReference, imageReference, pages+1 );
+ objectOffsets.push_back( offset );
+
+ offset = writeImageObject(pdfFile,
+ imageReference,
+ pageHeader.cupsWidth,
+ pageHeader.cupsHeight,
+ interpolate,
+ bitsPerComponent,
+ colorspace,
+ rasterData,
+ imageSize);
+ objectOffsets.push_back( offset );
+
+ pageReferences.push_back( pageReference );
+ pages++;
+ }
+
+ offset = writePagesObject( pdfFile, pageReferences );
+ objectOffsets.push_back( offset );
+
+ offset = writeCatalogObject( pdfFile, catalogReference );
+ objectOffsets.push_back( offset );
+
+ offset = writeXRefTable( pdfFile, objectOffsets, startOffset );
+
+ writeTrailerObject( pdfFile, catalogReference,
+ objectOffsets.size() + 1, offset - startOffset );
+bail:
+ if ( pdfFile != NULL ) fclose( pdfFile );
+ if ( rasterFile != NULL ) cupsRasterClose(rasterFile);
+ if ( rasterIn != -1 ) close( rasterIn );
+ if ( rasterData ) free( rasterData );
+
+ return err;
+}
+
+static void sigterm_handler(int sig)
+{
+ (void)sig;
+
+ Canceled = 1;
+}
+
+static void installSignalHandler( void )
+{
+#ifdef HAVE_SIGSET
+ sigset(SIGTERM, sigterm_handler);
+#elif defined(HAVE_SIGACTION)
+ struct sigaction action; /* Actions for POSIX signals */
+ memset(&action, 0, sizeof(action));
+
+ sigemptyset(&action.sa_mask);
+ sigaddset(&action.sa_mask, SIGTERM);
+
+ action.sa_handler = sigterm_handler;
+ sigaction(SIGTERM, &action, NULL);
+#else
+ signal(SIGTERM, sigterm_handler);
+#endif /* HAVE_SIGSET */
+}
+
+// MARK: -
+int main(int argc, const char * argv[])
+{
+ int err = 0;
+
+ /*
+ * Make sure status messages are not buffered...
+ */
+ setbuf(stderr, NULL);
+
+ /*
+ * Check the command-line...
+ */
+ if (argc < 6 || argc > 7)
+ {
+ fprintf(stderr, "Usage: %s job-id user title copies options [file]\n",
+ argv[0]);
+ return (CUPS_BACKEND_FAILED);
+ }
+
+ /*
+ * Register a signal handler to eject the current page if the
+ * job is cancelled.
+ */
+ installSignalHandler();
+
+ int fd = fileno(stdin);
+ if (argc == 7)
+ {
+ if ((fd = open(argv[6], O_RDONLY)) < 0)
+ {
+ perror("ERROR: Unable to open file");
+ return (1);
+ }
+ }
+
+ err = convertCUPSRasterToPDF( fd );
+ return err;
+}
#
# Message catalog template for CUPS.
#
-# Copyright © 2007-2019 by Apple Inc.
+# Copyright © 2007-2020 by Apple Inc.
# Copyright © 2005-2007 by Easy Software Products.
#
# Licensed under Apache License v2.0. See the file "LICENSE" for more
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: CUPS 2.3.0\n"
+"Project-Id-Version: CUPS 2.3.6\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"
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 ""
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 ""
msgid "--false Always false"
msgstr ""
-#: tools/ippeveprinter.c:7665
+#: tools/ippeveprinter.c:7923
msgid "--help Show program help"
msgstr ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
#: 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 ""
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 ""
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 ""
" 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 ""
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 ""
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 ""
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 ""
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 ""
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"
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 ""
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 ""
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 ""
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 ""
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 ""
msgid "-e Show available destinations on the network"
msgstr ""
-#: scheduler/main.c:2135
+#: scheduler/main.c:2137
msgid "-f Run in the foreground."
msgstr ""
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 ""
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 ""
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 ""
msgid "-l Produce plain text output"
msgstr ""
-#: scheduler/main.c:2139
+#: scheduler/main.c:2141
msgid "-l Run cupsd on demand."
msgstr ""
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 ""
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 ""
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 ""
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 ""
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 ""
" 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"
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 ""
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 ""
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 ""
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 ""
msgid "-t Show all status information"
msgstr ""
-#: scheduler/main.c:2142
+#: scheduler/main.c:2144
msgid "-t Test the configuration file."
msgstr ""
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 ""
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 ""
" 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 ""
msgid "1.25x2.25\""
msgstr ""
-#: ppdc/sample.c:427
+#: ppdc/sample.c:430
msgid "1.5 inch/sec."
msgstr ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
msgid "Accept Jobs"
msgstr ""
-#: cups/http-support.c:1494
+#: cups/http-support.c:1499
msgid "Accepted"
msgstr ""
msgid "Administration"
msgstr ""
-#: ppdc/sample.c:424
+#: ppdc/sample.c:427
msgid "Always"
msgstr ""
msgid "AppSocket/HP JetDirect"
msgstr ""
-#: ppdc/sample.c:445
+#: ppdc/sample.c:448
msgid "Applicator"
msgstr ""
msgid "Bad PPD file."
msgstr ""
-#: cups/http-support.c:1512
+#: cups/http-support.c:1517
msgid "Bad Request"
msgstr ""
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 ""
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 ""
msgid "Bad filename buffer"
msgstr ""
-#: cups/http-support.c:1615
+#: cups/http-support.c:1620
msgid "Bad hostname/address in URI"
msgstr ""
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 ""
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 ""
msgid "Bad value string"
msgstr ""
-#: cups/http-support.c:1624
+#: cups/http-support.c:1629
msgid "Bad/empty URI"
msgstr ""
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 ""
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 ""
msgid "Cancel Jobs"
msgstr ""
-#: backend/ipp.c:2287
+#: backend/ipp.c:2295
msgid "Canceling print job."
msgstr ""
msgid "Cannot share a remote Kerberized printer."
msgstr ""
-#: ppdc/sample.c:271
+#: ppdc/sample.c:274
msgid "Cassette"
msgstr ""
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 ""
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 ""
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 ""
msgid "Delete Printer"
msgstr ""
-#: ppdc/sample.c:273
+#: ppdc/sample.c:276
msgid "DeskJet Series"
msgstr ""
" location = %s"
msgstr ""
-#: ppdc/sample.c:431
+#: ppdc/sample.c:434
msgid "Direct Thermal Media"
msgstr ""
msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
msgstr ""
-#: ppdc/sample.c:340
+#: ppdc/sample.c:343
msgid "Disabled"
msgstr ""
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 ""
msgid "Envelope DL"
msgstr ""
-#: ppdc/sample.c:261
+#: ppdc/sample.c:264
msgid "Envelope Feed"
msgstr ""
msgid "Environment Variables:"
msgstr ""
-#: ppdc/sample.c:240
+#: ppdc/sample.c:244
msgid "Epson"
msgstr ""
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 ""
msgid "Executive"
msgstr ""
-#: cups/http-support.c:1540
+#: cups/http-support.c:1545
msgid "Expectation Failed"
msgstr ""
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 ""
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 ""
msgid "General"
msgstr ""
-#: ppdc/sample.c:251
+#: ppdc/sample.c:255
msgid "Generic"
msgstr ""
msgid "Get-Response-PDU uses indefinite length"
msgstr ""
-#: ppdc/sample.c:285
+#: ppdc/sample.c:288
msgid "Glossy Paper"
msgstr ""
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 ""
msgid "Hanging Folder"
msgstr ""
-#: cups/hash.c:292
+#: cups/hash.c:289
msgid "Hash buffer too small."
msgstr ""
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 ""
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 ""
msgid "Internet Postage 3-Part"
msgstr ""
-#: backend/ipp.c:319
+#: backend/ipp.c:318
msgid "Internet Printing Protocol"
msgstr ""
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 ""
msgid "Large Address"
msgstr ""
-#: ppdc/sample.c:286
+#: ppdc/sample.c:289
msgid "LaserJet Series PCL 4/5"
msgstr ""
msgid "Letter Oversize Long Edge"
msgstr ""
-#: ppdc/sample.c:236
+#: ppdc/sample.c:240
msgid "Light"
msgstr ""
msgid "List Available Printers"
msgstr ""
-#: tools/ippeveprinter.c:604
+#: tools/ippeveprinter.c:642
#, c-format
msgid "Listening on port %d."
msgstr ""
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 ""
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 ""
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 ""
msgid "Move Job"
msgstr ""
-#: cups/http-support.c:1500
+#: cups/http-support.c:1505
msgid "Moved Permanently"
msgstr ""
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 ""
msgid "No"
msgstr ""
-#: cups/http-support.c:1497
+#: cups/http-support.c:1502
msgid "No Content"
msgstr ""
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 ""
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 ""
msgstr ""
#: filter/rastertoepson.c:1161 filter/rastertohp.c:833
-#: filter/rastertolabel.c:1288
+#: filter/rastertolabel.c:1289
msgid "No pages were found."
msgstr ""
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 ""
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 ""
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 ""
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:"
msgid "Output Mode"
msgstr ""
-#: ppdc/sample.c:252
+#: ppdc/sample.c:256
msgid "PCL Laser Printer"
msgstr ""
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 ""
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 ""
msgid "Pause Printer"
msgstr ""
-#: ppdc/sample.c:443
+#: ppdc/sample.c:446
msgid "Peel-Off"
msgstr ""
msgid "Photo Labels"
msgstr ""
-#: ppdc/sample.c:281
+#: ppdc/sample.c:284
msgid "Plain Paper"
msgstr ""
msgid "Port Monitor"
msgstr ""
-#: ppdc/sample.c:270
+#: ppdc/sample.c:273
msgid "PostScript Printer"
msgstr ""
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 ""
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 ""
msgid "Print Self-Test Page"
msgstr ""
-#: ppdc/sample.c:322
+#: ppdc/sample.c:325
msgid "Print Speed"
msgstr ""
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 ""
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 ""
msgid "Printer Added"
msgstr ""
-#: ppdc/sample.c:255
+#: ppdc/sample.c:258
msgid "Printer Default"
msgstr ""
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 ""
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 ""
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 ""
msgid "Return Address"
msgstr ""
-#: ppdc/sample.c:444
+#: ppdc/sample.c:447
msgid "Rewind"
msgstr ""
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 ""
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 ""
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 ""
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 ""
msgstr ""
#: filter/rastertoepson.c:1083 filter/rastertohp.c:750
-#: filter/rastertolabel.c:1211
+#: filter/rastertolabel.c:1212
#, c-format
msgid "Starting page %d."
msgstr ""
msgid "Super B/A3"
msgstr ""
-#: cups/http-support.c:1485
+#: cups/http-support.c:1490
msgid "Switching Protocols"
msgstr ""
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 ""
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 ""
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 ""
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 ""
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 ""
msgid "There was an unrecoverable USB error."
msgstr ""
-#: ppdc/sample.c:430
+#: ppdc/sample.c:433
msgid "Thermal Transfer Media"
msgstr ""
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 ""
msgid "Unable to add class"
msgstr ""
-#: backend/ipp.c:1880
+#: backend/ipp.c:1887
msgid "Unable to add document to print job."
msgstr ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
msgid "Unable to get printer status"
msgstr ""
-#: backend/ipp.c:1017
+#: backend/ipp.c:1016
msgid "Unable to get printer status."
msgstr ""
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 ""
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 ""
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 ""
msgid "Unable to rename job document file."
msgstr ""
-#: cups/dest.c:3265
+#: cups/dest.c:3252
msgid "Unable to resolve printer-uri."
msgstr ""
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 ""
msgid "Unable to write uncompressed print data: %s"
msgstr ""
-#: cups/http-support.c:1516
+#: cups/http-support.c:1521
msgid "Unauthorized"
msgstr ""
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 ""
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 ""
msgid "Unknown media size name."
msgstr ""
-#: backend/ipp.c:583
+#: backend/ipp.c:582
#, c-format
msgid "Unknown option \"%s\" with value \"%s\"."
msgstr ""
msgid "Unknown option \"%s\"."
msgstr ""
-#: backend/lpd.c:313
+#: backend/lpd.c:317
#, c-format
msgid "Unknown print mode: \"%s\"."
msgstr ""
msgid "Unknown request version."
msgstr ""
-#: cups/http-support.c:1633
+#: cups/http-support.c:1638
msgid "Unknown scheme in URI"
msgstr ""
msgid "Unknown service name."
msgstr ""
-#: backend/ipp.c:548
+#: backend/ipp.c:547
#, c-format
msgid "Unknown version option value: \"%s\"."
msgstr ""
msgid "Unsupported value type"
msgstr ""
-#: cups/http-support.c:1531
+#: cups/http-support.c:1536
msgid "Upgrade Required"
msgstr ""
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
msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
msgstr ""
-#: scheduler/main.c:2132
+#: scheduler/main.c:2134
msgid "Usage: cupsd [options]"
msgstr ""
" program | cupstestppd [options] -"
msgstr ""
-#: tools/ippeveprinter.c:7663
+#: tools/ippeveprinter.c:7921
msgid "Usage: ippeveprinter [options] \"name\""
msgstr ""
msgid "Usage: snmp [host-or-ip-address]"
msgstr ""
-#: tools/ippeveprinter.c:631
+#: tools/ippeveprinter.c:669
#, c-format
msgid "Using spool directory \"%s\"."
msgstr ""
msgid "Version uses indefinite length"
msgstr ""
-#: backend/ipp.c:2000
+#: backend/ipp.c:2009
msgid "Waiting for job to complete."
msgstr ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
msgid "{} URI"
msgstr ""
-#: cups/dest.c:1864
+#: cups/dest.c:1863
msgid "~/.cups/lpoptions file names default destination that does not exist."
msgstr ""
"--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";
"-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";
"-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";
"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";
"CustominTearInterval" = "CustominTearInterval";
"Cut" = "Cut";
"Cutter" = "Cutter";
+"DYMO" = "DYMO";
"Dark" = "Dark";
"Darkness" = "Darkness";
"Data file sent successfully." = "Data file sent successfully.";
"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";
"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";
"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.";
"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
// 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
// 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
"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
"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
// 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
// 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
// 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
"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
// 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
// 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
// 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
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"
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 ""
msgid "-95"
msgstr "-95"
+msgid "-A Enable authentication"
+msgstr ""
+
msgid "-C Send requests using chunking (default)"
msgstr ""
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 ""
msgid "300dpi"
msgstr "300ppp"
+msgid "30859 Paint Can Label"
+msgstr ""
+
msgid "35"
msgstr "35"
msgid "Cutter"
msgstr "Ganiveta"
+msgid "DYMO"
+msgstr ""
+
msgid "Dark"
msgstr "Fosc"
msgid "Duplexer"
msgstr "Unitat d'impressió a dues cares"
-msgid "Dymo"
-msgstr "Dymo"
-
msgid "EPL1 Label Printer"
msgstr "Impressora d'etiquetes EPL1"
msgid "Looking for printer."
msgstr "S'està buscant la impressora."
+msgid "Main Roll"
+msgstr ""
+
msgid "Manual Feed"
msgstr "Alimentació manual"
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"
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 ""
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 ""
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 ""
#~ "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"
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"
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 ""
msgid "-95"
msgstr "-95"
+msgid "-A Enable authentication"
+msgstr ""
+
msgid "-C Send requests using chunking (default)"
msgstr ""
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 ""
msgid "300dpi"
msgstr "300 dpi"
+msgid "30859 Paint Can Label"
+msgstr ""
+
msgid "35"
msgstr "35"
msgid "Cutter"
msgstr "Výstřižek"
+msgid "DYMO"
+msgstr ""
+
msgid "Dark"
msgstr "Tmavý"
msgid "Duplexer"
msgstr "Duplexní jednotka"
-msgid "Dymo"
-msgstr "Dymo"
-
msgid "EPL1 Label Printer"
msgstr "Tiskárna štítků EPL1"
msgid "Looking for printer."
msgstr ""
+msgid "Main Roll"
+msgstr ""
+
msgid "Manual Feed"
msgstr "Ruční podávání"
msgid "SSL/TLS Negotiation Error"
msgstr ""
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
msgid "See Other"
msgstr "Viz další"
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 ""
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 ""
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 ""
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"
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"
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 ""
msgid "-95"
msgstr "-95"
+msgid "-A Enable authentication"
+msgstr ""
+
msgid "-C Send requests using chunking (default)"
msgstr ""
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 ""
msgid "300dpi"
msgstr "300 dpi"
+msgid "30859 Paint Can Label"
+msgstr ""
+
msgid "35"
msgstr "35"
msgid "Cutter"
msgstr "Abschneider"
+msgid "DYMO"
+msgstr ""
+
msgid "Dark"
msgstr "Dunkel"
msgid "Duplexer"
msgstr "Duplexer"
-msgid "Dymo"
-msgstr "Dymo"
-
msgid "EPL1 Label Printer"
msgstr "EPL1 Etikettendrucker"
msgid "Looking for printer."
msgstr "Suche nach Drucker."
+msgid "Main Roll"
+msgstr ""
+
msgid "Manual Feed"
msgstr "Manuelle Papierzufuhr"
msgid "SSL/TLS Negotiation Error"
msgstr "SSL/TLS Verhandlungsfehler"
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
msgid "See Other"
msgstr "Siehe auch"
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 ""
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 ""
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 ""
#~ msgstr ""
#~ "Ein Samba-Benutzername ist erforderlich, um Druckertreiber zu exportieren"
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
#~ msgid "Export Printers to Samba"
#~ msgstr "Drucker zu Samba exportieren"
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"
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"
msgid "-95"
msgstr "-95"
+msgid "-A Enable authentication"
+msgstr ""
+
msgid "-C Send requests using chunking (default)"
msgstr "-C Send requests using chunking (default)"
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"
msgid "300dpi"
msgstr "300dpi"
+msgid "30859 Paint Can Label"
+msgstr ""
+
msgid "35"
msgstr "35"
msgid "Cutter"
msgstr "Cutter"
+msgid "DYMO"
+msgstr ""
+
msgid "Dark"
msgstr "Dark"
msgid "Duplexer"
msgstr "Duplexer"
-msgid "Dymo"
-msgstr "Dymo"
-
msgid "EPL1 Label Printer"
msgstr "EPL1 Label Printer"
msgid "Looking for printer."
msgstr "Looking for printer."
+msgid "Main Roll"
+msgstr ""
+
msgid "Manual Feed"
msgstr "Manual Feed"
msgid "SSL/TLS Negotiation Error"
msgstr "SSL/TLS Negotiation Error"
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
msgid "See Other"
msgstr "See Other"
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"
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"
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"
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"
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"
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"
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 ""
msgid "-95"
msgstr "-95"
+msgid "-A Enable authentication"
+msgstr ""
+
msgid "-C Send requests using chunking (default)"
msgstr ""
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 ""
msgid "300dpi"
msgstr "300ppp"
+msgid "30859 Paint Can Label"
+msgstr ""
+
msgid "35"
msgstr "35"
msgid "Cutter"
msgstr "Cortadora"
+msgid "DYMO"
+msgstr ""
+
msgid "Dark"
msgstr "Oscuro"
msgid "Duplexer"
msgstr "Unidad de impresión dúplex"
-msgid "Dymo"
-msgstr "Dymo"
-
msgid "EPL1 Label Printer"
msgstr "Impresora de etiquetas EPL1"
msgid "Looking for printer."
msgstr ""
+msgid "Main Roll"
+msgstr ""
+
msgid "Manual Feed"
msgstr "Alimentación manual"
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"
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 ""
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 ""
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 ""
#~ "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"
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"
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 ""
msgid "-95"
msgstr "-95"
+msgid "-A Enable authentication"
+msgstr ""
+
msgid "-C Send requests using chunking (default)"
msgstr ""
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 ""
msgid "300dpi"
msgstr "300 ppp"
+msgid "30859 Paint Can Label"
+msgstr ""
+
msgid "35"
msgstr "35"
msgid "Cutter"
msgstr "Cutter"
+msgid "DYMO"
+msgstr ""
+
msgid "Dark"
msgstr "Foncé"
msgid "Duplexer"
msgstr "Duplexeur"
-msgid "Dymo"
-msgstr "Dymo"
-
msgid "EPL1 Label Printer"
msgstr "Imprimante pour étiquettes EPL1"
msgid "Looking for printer."
msgstr "Recherche d'imprimante en cours."
+msgid "Main Roll"
+msgstr ""
+
msgid "Manual Feed"
msgstr ""
msgid "SSL/TLS Negotiation Error"
msgstr "Erreur de négotiation SSL/TLS"
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
msgid "See Other"
msgstr "Autres"
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 ""
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 ""
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 ""
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"
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"
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 ""
msgid "-95"
msgstr "-95"
+msgid "-A Enable authentication"
+msgstr ""
+
msgid "-C Send requests using chunking (default)"
msgstr ""
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 ""
msgid "300dpi"
msgstr "300dpi"
+msgid "30859 Paint Can Label"
+msgstr ""
+
msgid "35"
msgstr "35"
msgid "Cutter"
msgstr "Taglierino"
+msgid "DYMO"
+msgstr ""
+
msgid "Dark"
msgstr "Scuro"
msgid "Duplexer"
msgstr "Duplexer"
-msgid "Dymo"
-msgstr "Dymo"
-
msgid "EPL1 Label Printer"
msgstr "EPL1 Label Printer"
msgid "Looking for printer."
msgstr "Cerca una stampante."
+msgid "Main Roll"
+msgstr ""
+
msgid "Manual Feed"
msgstr "Alimentazione manuale"
msgid "SSL/TLS Negotiation Error"
msgstr "Errore di negoziazione SSL/TLS"
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
msgid "See Other"
msgstr "Vedi altro"
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 ""
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 ""
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 ""
#~ 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"
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"
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 ""
msgid "-95"
msgstr "-95"
+msgid "-A Enable authentication"
+msgstr ""
+
msgid "-C Send requests using chunking (default)"
msgstr ""
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 ""
msgid "300dpi"
msgstr "300dpi"
+msgid "30859 Paint Can Label"
+msgstr ""
+
msgid "35"
msgstr "35"
msgid "Cutter"
msgstr "カッター"
+msgid "DYMO"
+msgstr ""
+
msgid "Dark"
msgstr "濃い"
msgid "Duplexer"
msgstr "両面オプション"
-msgid "Dymo"
-msgstr "Dymo"
-
msgid "EPL1 Label Printer"
msgstr "EPL1 ラベルプリンター"
msgid "Looking for printer."
msgstr "プリンターを探しています。"
+msgid "Main Roll"
+msgstr ""
+
msgid "Manual Feed"
msgstr "手差し"
msgid "SSL/TLS Negotiation Error"
msgstr "SSL/TLS のネゴシエーションエラー"
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
msgid "See Other"
msgstr "残りを見てください"
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 ""
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 ""
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 ""
#~ msgstr ""
#~ "プリンタードライバーをエクスポートするには、Samba のユーザー名が必要です。"
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
#~ msgid "Export Printers to Samba"
#~ msgstr "Samba へプリンターをエクスポート"
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"
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 ""
msgid "-95"
msgstr "-95"
+msgid "-A Enable authentication"
+msgstr ""
+
msgid "-C Send requests using chunking (default)"
msgstr ""
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 ""
msgid "300dpi"
msgstr "300dpi"
+msgid "30859 Paint Can Label"
+msgstr ""
+
msgid "35"
msgstr "35"
msgid "Cutter"
msgstr "Cortador"
+msgid "DYMO"
+msgstr ""
+
msgid "Dark"
msgstr "Escuro"
msgid "Duplexer"
msgstr "Duplexador"
-msgid "Dymo"
-msgstr "Dymo"
-
msgid "EPL1 Label Printer"
msgstr "Impressora de etiqueta EPL1"
msgid "Looking for printer."
msgstr "Procurando impressoras."
+msgid "Main Roll"
+msgstr ""
+
msgid "Manual Feed"
msgstr "Alimentação manual"
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"
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 ""
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 ""
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 ""
#~ "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"
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"
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 ""
msgid "-95"
msgstr "-95"
+msgid "-A Enable authentication"
+msgstr ""
+
msgid "-C Send requests using chunking (default)"
msgstr ""
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 ""
msgid "300dpi"
msgstr "300dpi"
+msgid "30859 Paint Can Label"
+msgstr ""
+
msgid "35"
msgstr "35"
msgid "Cutter"
msgstr "Резак"
+msgid "DYMO"
+msgstr ""
+
msgid "Dark"
msgstr "Темный"
msgid "Duplexer"
msgstr "Дуплексер"
-msgid "Dymo"
-msgstr "Dymo"
-
msgid "EPL1 Label Printer"
msgstr "Принтер для печати этикеток EPL1"
msgid "Looking for printer."
msgstr "Поиск принтера."
+msgid "Main Roll"
+msgstr ""
+
msgid "Manual Feed"
msgstr "Ручная подача"
msgid "SSL/TLS Negotiation Error"
msgstr "SSL/TLS Negotiation Error"
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
msgid "See Other"
msgstr "Посмотреть другие"
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 ""
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 ""
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 ""
#~ msgid "A Samba username is required to export printer drivers"
#~ msgstr "Для экспорта драйверов принтера требуется имя пользователя Samba"
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
#~ msgid "Export Printers to Samba"
#~ msgstr "Экспортировать принтеры в Samba"
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"
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 ""
msgid "-95"
msgstr "-95"
+msgid "-A Enable authentication"
+msgstr ""
+
msgid "-C Send requests using chunking (default)"
msgstr ""
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 ""
msgid "300dpi"
msgstr "300 dpi"
+msgid "30859 Paint Can Label"
+msgstr ""
+
msgid "35"
msgstr "35"
msgid "Cutter"
msgstr "车床刀具"
+msgid "DYMO"
+msgstr ""
+
msgid "Dark"
msgstr "暗色"
msgid "Duplexer"
msgstr "双工器"
-msgid "Dymo"
-msgstr "Dymo"
-
msgid "EPL1 Label Printer"
msgstr "EPL1 标签打印机"
msgid "Looking for printer."
msgstr "正在寻找打印机。"
+msgid "Main Roll"
+msgstr ""
+
msgid "Manual Feed"
msgstr "手动喂纸"
msgid "SSL/TLS Negotiation Error"
msgstr "SSL/TLS 协商错误"
+msgid "Second Roll (DUO/Twin Only)"
+msgstr ""
+
msgid "See Other"
msgstr "查看其他"
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 ""
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 ""
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 ""
#~ msgid "A Samba username is required to export printer drivers"
#~ msgstr "需要 Samba 用户名以导出打印机驱动"
+#~ msgid "Dymo"
+#~ msgstr "Dymo"
+
#~ msgid "Export Printers to Samba"
#~ msgstr "将打印机导出到 Samba"
_("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 */
_("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 */
_("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 */
.\"
.\" cupsd.conf man page for CUPS.
.\"
-.\" Copyright © 2007-2019 by Apple Inc.
+.\" Copyright © 2007-2021 by Apple Inc.
.\" Copyright © 1997-2006 by Easy Software Products.
.\"
.\" Licensed under Apache License v2.0. See the file "LICENSE" for more
.\" information.
.\"
-.TH cupsd.conf 5 "CUPS" "16 July 2019" "Apple Inc."
+.TH cupsd.conf 5 "CUPS" "1 October 2021" "Apple Inc."
.SH NAME
cupsd.conf \- server configuration file for cups
.SH DESCRIPTION
\fBKeepAlive No\fR
Specifies whether to support HTTP keep-alive connections.
The default is "Yes".
-.\"#KeepAliveTimeout
-.TP 5
-\fBKeepAliveTimeout \fIseconds\fR
-Specifies how long an idle client connection remains open.
-The default is "30".
.\"#LimitIPP
.TP 5
\fB<Limit \fIoperation \fR...\fB> \fR... \fB</Limit>\fR
Listens to the specified address and port or domain socket path for connections.
Multiple Listen directives can be provided to listen on multiple addresses.
The Listen directive is similar to the Port directive but allows you to restrict access to specific interfaces or networks.
-.\"#ListenBackLog
-.TP 5
-\fBListenBackLog \fInumber\fR
-Specifies the number of pending connections that will be allowed.
-This normally only affects very busy servers that have reached the MaxClients limit, but can also be triggered by large numbers of simultaneous connections.
-When the limit is reached, the operating system will refuse additional connections until the scheduler can accept the pending ones.
-The default is the OS-defined default limit, typically either "5" for older operating systems or "128" for newer operating systems.
.\"#Location
.TP 5
\fB<Location \fI/path\fB> \fR... \fB</Location>\fR
.br
Specifies whether users may override the classification (cover page) of individual print jobs using the "job-sheets" option.
The default is "No".
+.\"#ListenBackLog
+.TP 5
+\fBListenBackLog \fInumber\fR
+Specified the number of pending connections that will be allowed.
+The scheduler now uses the value "128" on all platforms.
.\"#PageLogFormat
.TP 5
\fBPageLogFormat \fIformat-string\fR
.BR subscriptions.conf (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2019 by Apple Inc.
+Copyright \[co] 2007-2021 by Apple Inc.
.\" Licensed under Apache License v2.0. See the file "LICENSE" for more
.\" information.
.\"
-.TH ippeveprinter 1 "CUPS" "17 May 2019" "Apple Inc."
+.TH ippeveprinter 1 "CUPS" "2 December 2019" "Apple Inc."
.SH NAME
ippeveprinter \- an ipp everywhere printer application for cups
.SH SYNOPSIS
] [
.B \-\-no\-web\-forms
] [
+.B \-\-pam\-service
+.I service
+] [
.B \-\-version
] [
.B \-2
] [
+.B \-A
+] [
.B \-D
.I device-uri
] [
.B \-\-no\-web\-forms
Disable the web interface forms used to update the media and supply levels.
.TP 5
+\fB\-\-pam\-service \fIservice\fR
+Set the PAM service name.
+The default service is "cups".
+.TP 5
.B \-\-version
Show the CUPS version.
.TP 5
.B \-2
Report support for two-sided (duplex) printing.
.TP 5
+.B \-A
+Enable authentication for the created printer.
+.B ippeveprinter
+uses PAM to authenticate HTTP Basic credentials.
+.TP 5
\fB\-D \fIdevice-uri\fR
Set the device URI for print output.
The URI can be a filename, directory, or a network socket URI of the form "socket://ADDRESS[:PORT]" (where the default port number is 9100).
Specifies the port number to listen on.
The default is a user-specific number from 8000 to 8999.
.TP 5
+.B \-r off
+Turns off DNS-SD service advertisements entirely.
+.TP 5
\fB\-r \fIsubtype[,subtype]\fR
Specifies the DNS-SD subtype(s) to advertise.
Separate multiple subtypes with a comma.
.\"
.\" ipptool man page.
.\"
-.\" Copyright © 2010-2019 by Apple Inc.
+.\" Copyright © 2010-2021 by Apple Inc.
.\"
.\" Licensed under Apache License v2.0. See the file "LICENSE" for more
.\" information.
.\"
-.TH ipptool 1 "CUPS" "26 April 2019" "Apple Inc."
+.TH ipptool 1 "CUPS" "5 April 2021" "Apple Inc."
.SH NAME
ipptool \- perform internet printing protocol requests
.SH SYNOPSIS
.B \-P
.I filename.plist
] [
+.B \-R
+] [
.B \-S
] [
.B \-T
Specifies that the test results should be written to the named XML (Apple plist) file in addition to the regular test report (\fB\-t\fR).
This option is incompatible with the \fB\-i\fR (interval) and \fB\-n\fR (repeat\-count) options.
.TP 5
+.B \-R
+Retries tests when the "server-error-busy" status code is returned.
+.TP 5
.B \-S
Forces (dedicated) TLS encryption when connecting to the server.
.TP 5
PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)
RFC 8011 (http://tools.ietf.org/html/rfc8011),
.SH COPYRIGHT
-Copyright \[co] 2007-2019 by Apple Inc.
+Copyright \[co] 2007-2021 by Apple Inc.
.\"
.\" ipptoolfile man page.
.\"
-.\" Copyright © 2010-2019 by Apple Inc.
+.\" Copyright © 2010-2021 by Apple Inc.
.\"
.\" Licensed under Apache License v2.0. See the file "LICENSE" for more
.\" information.
.\"
-.TH ipptoolfile 5 "CUPS" "15 August 2019" "Apple Inc."
+.TH ipptoolfile 5 "CUPS" "12 May 2021" "Apple Inc."
.SH NAME
ipptoolfile \- ipptool file format
.SH DESCRIPTION
.BR ipptool (8)
will ignore errors and continue with subsequent tests.
.TP 5
+\fBMONITOR-PRINTER-STATE \fR[ \fIprinter-uri \fR] \fB{ EXPECT \fIattribute-name \fR[ \fIpredicate(s) \fR] \fB}\fR
+Specifies printer state monitoring tests to run in parallel with the test operation.
+The monitoring tests will run until all of the \fBEXPECT\fR conditions are satisfied or the primary test operation has completed, whichever occurs first.
+.TP 5
\fBNAME "\fIliteral string\fB"\fR
Specifies the human-readable name of the test.
.TP 5
Requires the \fBEXPECT\fR attribute to have the specified number of values.
.TP 5
\fBDEFINE\-MATCH \fIvariable-name\fR
-Defines the variable to "1" when the \fBEXPECT\fR condition matches. A side-effect of this predicate is that this \fBEXPECT\fR will never fail a test.
+Defines the variable to "1" when the \fBEXPECT\fR condition matches.
+A side-effect of this predicate is that this \fBEXPECT\fR will never fail a test.
.TP 5
\fBDEFINE\-NO\-MATCH \fIvariable-name\fR
-Defines the variable to "1" when the \fBEXPECT\fR condition does not match. A side-effect of this predicate is that this \fBEXPECT\fR will never fail a test.
+Defines the variable to "1" when the \fBEXPECT\fR condition does not match.
+A side-effect of this predicate is that this \fBEXPECT\fR will never fail a test.
.TP 5
\fBDEFINE\-VALUE \fIvariable-name\fR
-Defines the variable to the value of the attribute when the \fBEXPECT\fR condition matches. A side-effect of this predicate is that this \fBEXPECT\fR will never fail a test.
+Defines the variable to the value of the attribute when the \fBEXPECT\fR condition matches.
+A side-effect of this predicate is that this \fBEXPECT\fR will never fail a test.
+.TP 5
+\fBDISPLAY\-MATCH \fI"message"\fR
+Displays the specified message when the \fBEXPECT\fR condition matches.
.TP 5
\fBIF\-DEFINED \fIvariable-name\fR
Makes the \fBEXPECT\fR conditions apply only if the specified variable is defined.
\fBIN\-GROUP \fItag\fR
Requires the \fBEXPECT\fR attribute to be in the specified group tag.
.TP 5
-\fBOF\-TYPE \fItag[|tag,...]\fR
+\fBOF\-TYPE \fItag[(limits)|tag|...]\fR
Requires the \fBEXPECT\fR attribute to use one of the specified value tag(s).
+Most value tags also support the specification of limits in parenthesis, for example "name(42)" would allow nameWith/WithoutLanguage strings up to 42 octets in length, "name(4:MAX)" would allow nameWith/WithoutLanguage strings between 4 and 255 octets in length, and "integer(-273:MAX)" would allow integers between -273 and 2147483647.
.TP 5
\fBREPEAT\-LIMIT \fInumber\fR
.br
Requires that all values of the \fBEXPECT\fR attribute match the boolean value given.
.TP 5
\fBWITH\-ALL\-VALUES "/\fIregular expression\fB/"\fR
-Requires that all values of the \fBEXPECT\fR attribute match the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
+Requires that all values of the \fBEXPECT\fR attribute match the regular expression, which must conform to the POSIX regular expression syntax.
+Comparisons are case-sensitive.
+.TP 5
+\fBWITH\-DISTINCT\-VALUES\fR
+Requires that all values of the \fBEXPECT\fR attribute are unique.
+Comparisons are case-sensitive.
+Only charset, collection, enum, integer, keyword, mimeMediaType, naturalLanguage, rangeOfInteger, resolution, uriScheme attributes support this predicate.
.TP 5
\fBWITH\-HOSTNAME "\fIliteral string\fB"\fR
.TP 5
PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp),
RFC 8011 (http://tools.ietf.org/html/rfc8011)
.SH COPYRIGHT
-Copyright \[co] 2007-2019 by Apple Inc.
+Copyright \[co] 2007-2021 by Apple Inc.
*/
static int compare_rss(_cups_rss_t *a, _cups_rss_t *b);
-static void delete_message(_cups_rss_t *rss);
+static void delete_message(_cups_rss_t *msg);
static void load_rss(cups_array_t *rss, const char *filename);
static _cups_rss_t *new_message(int sequence_number, char *subject,
char *text, char *link_url,
%system darwin
f 0555 root sys $LIBDIR/libcups.2.dylib cups/libcups.2.dylib nostrip()
l 0755 root sys $LIBDIR/libcups.dylib libcups.2.dylib
-f 0555 root sys $LIBDIR/libcupsimage.2.dylib filter/libcupsimage.2.dylib nostrip()
+f 0555 root sys $LIBDIR/libcupsimage.2.dylib cups/libcupsimage.2.dylib nostrip()
l 0755 root sys $LIBDIR/libcupsimage.dylib libcupsimage.2.dylib
%system !darwin
f 0555 root sys $LIBDIR/libcups.so.2 cups/libcups.so.2 nostrip()
l 0755 root sys $LIBDIR/libcups.so libcups.so.2
-f 0555 root sys $LIBDIR/libcupsimage.so.2 filter/libcupsimage.so.2 nostrip()
+f 0555 root sys $LIBDIR/libcupsimage.so.2 cups/libcupsimage.so.2 nostrip()
l 0755 root sys $LIBDIR/libcupsimage.so libcupsimage.so.2
%system all
%subpackage
}
}
+ if (ppd)
+ ppdClose(ppd);
+
return (1);
}
//
// Source class for the CUPS PPD Compiler.
//
-// Copyright 2007-2018 by Apple Inc.
+// Copyright 2007-2020 by Apple Inc.
// Copyright 2002-2007 by Easy Software Products.
//
// Licensed under Apache License v2.0. See the file "LICENSE" for more
for (i = 0; i < 9; i ++)
m[i] = get_float(fp);
- return (new ppdcProfile(resolution, media_type, g, d, m));
+ return (new ppdcProfile(resolution, media_type, d, g, m));
}
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),
}
// Return the new profile...
- return (new ppdcProfile(resolution, media_type, g, kd, m));
+ return (new ppdcProfile(resolution, media_type, kd, g, m));
}
// Local functions...
//
-static void usage(void);
+static void usage(void) _CUPS_NORETURN;
//
default : // Unknown
usage();
- break;
}
}
else
return (1);
}
- if (templocales != locales)
+ if (templocales && templocales != locales)
templocales->release();
cupsFileClose(fp);
// Local functions...
//
-static void usage(void);
+static void usage(void) _CUPS_NORETURN;
//
// Local functions...
//
-static void usage(void);
+static void usage(void) _CUPS_NORETURN;
//
//
static const char *ppd_locale(ppd_file_t *ppd);
-static void usage(void);
+static void usage(void) _CUPS_NORETURN;
//
//
static void add_ui_strings(ppdcDriver *d, ppdcCatalog *catalog);
-static void usage(void);
+static void usage(void) _CUPS_NORETURN;
//
#media "w108h36/1.50x0.50\"" 108 36
#media "w108h72/1.50x1.00\"" 108 72
#media "w108h144/1.50x2.00\"" 108 144
+#media "w142h227/80x50mm" 142 227
#media "w144h26/2.00x0.37\"" 144 26
#media "w144h36/2.00x0.50\"" 144 36
#media "w144h72/2.00x1.00\"" 144 72
#media "w216h90/3.00x1.25\"" 216 90
#media "w216h144/3.00x2.00\"" 216 144
#media "w216h216/3.00x3.00\"" 216 216
+#media "w216h288/3.00x4.00\"" 216 288
#media "w216h360/3.00x5.00\"" 216 360
+#media "w216h432/3.00x6.00\"" 216 432
+#media "w216h576/3.00x8.00\"" 216 576
#media "w234h144/3.25x2.00\"" 234 144
#media "w234h360/3.25x5.00\"" 234 360
#media "w234h396/3.25x5.50\"" 234 396
#media "w288h360/4.00x5.00\"" 288 360
#media "w288h432/4.00x6.00\"" 288 432
#media "w288h468/4.00x6.50\"" 288 468
+#media "w288h576/4.00x8.00\"" 288 576
#media "w288h936/4.00x13.00\"" 288 936
#media "w432h72/6.00x1.00\"" 432 72
#media "w432h144/6.00x2.00\"" 432 144
#media "w432h360/6.00x5.00\"" 432 360
#media "w432h432/6.00x6.00\"" 432 432
#media "w432h468/6.00x6.50\"" 432 468
+#media "w432h576/6.00x8.00\"" 432 576
#media "w576h72/8.00x1.00\"" 576 72
#media "w576h144/8.00x2.00\"" 576 144
#media "w576h216/8.00x3.00\"" 576 216
#media "w576h360/8.00x5.00\"" 576 360
#media "w576h432/8.00x6.00\"" 576 432
#media "w576h468/8.00x6.50\"" 576 468
+#media "w595h72/8.26x1.00\"" 595 72
// Common stuff for all drivers...
Attribute "cupsVersion" "" "2.3"
Attribute "LandscapeOrientation" "" "Plus90"
Attribute "TTRasterizer" "" "Type42"
-Copyright "Copyright (c) 2007-2018 by Apple Inc."
+Copyright "Copyright (c) 2007-2021 by Apple Inc."
Copyright "Copyright (c) 1997-2007 by Easy Software Products."
Copyright ""
Copyright "Licensed under Apache License v2.0. See the file \"LICENSE\" for more"
Version "2.3"
-// Dymo Label Printer
+// DYMO Label Printer
{
- Manufacturer "Dymo"
+ Manufacturer "DYMO"
ModelName "Label Printer"
- Attribute NickName "" "Dymo Label Printer"
+ Attribute NickName "" "DYMO Label Printer"
PCFileName "dymo.ppd"
DriverType label
ModelNumber $DYMO_3x0
Resolution k 1 0 0 0 203dpi
*Resolution k 1 0 0 0 300dpi
+ *InputSlot 0 "Roll/Main Roll"
+ InputSlot 1 "Roll2/Second Roll (DUO/Twin Only)"
+
Darkness 0 Light
Darkness 1 Medium
*Darkness 2 Normal
MinSize 36 36
MaxSize 576 3600
+ MediaSize A4
+ MediaSize A5
+ MediaSize A5Rotated
MediaSize w90h18
MediaSize w90h162
MediaSize w108h18
MediaSize w108h36
MediaSize w108h72
MediaSize w108h144
+ MediaSize w142h227
MediaSize w144h26
MediaSize w144h36
MediaSize w144h72
MediaSize w216h72
MediaSize w216h90
MediaSize w216h144
+ MediaSize w216h288
MediaSize w216h216
MediaSize w216h360
+ MediaSize w216h432
+ MediaSize w216h576
MediaSize w234h144
MediaSize w234h360
MediaSize w234h396
*MediaSize w288h360
MediaSize w288h432
MediaSize w288h468
+ MediaSize w288h576
MediaSize w288h936
MediaSize w432h72
MediaSize w432h144
MediaSize w432h360
MediaSize w432h432
MediaSize w432h468
+ MediaSize w432h576
MediaSize w576h72
MediaSize w576h144
MediaSize w576h216
MediaSize w576h360
MediaSize w576h432
MediaSize w576h468
+ MediaSize w595h72
*Resolution k 1 0 0 0 203dpi
Resolution k 1 0 0 0 300dpi
if (ifptr >= ifname && *ifptr == ')')
{
- ifptr --;
*ifptr = '\0';
}
b ++;
}
+ // either both *a and *b == '\0', or one points inside a string,
+ // so factor that in.
+ result |= (*a ^ *b);
+
return (result);
}
{
cups_file_t *fp; /* classes.conf file */
char filename[1024], /* classes.conf filename */
- temp[1024], /* Temporary string */
value[2048], /* Value string */
*name; /* Current user name */
cupsd_printer_t *pclass; /* Current printer class */
int i; /* Looping var */
- time_t curtime; /* Current time */
- struct tm curdate; /* Current date */
cups_option_t *option; /* Current option */
* Write a small header to the file...
*/
- time(&curtime);
- localtime_r(&curtime, &curdate);
- strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", &curdate);
-
cupsFilePuts(fp, "# Class configuration file for " CUPS_SVERSION "\n");
- cupsFilePrintf(fp, "# Written by cupsd on %s\n", temp);
+ cupsFilePrintf(fp, "# Written by cupsd\n");
cupsFilePuts(fp, "# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING\n");
/*
/*
* Client routines for the CUPS scheduler.
*
- * Copyright © 2007-2019 by Apple Inc.
- * Copyright © 1997-2007 by Easy Software Products, all rights reserved.
+ * Copyright © 2021 by OpenPrinting.
+ * Copyright © 2007-2021 by Apple Inc.
+ * Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* This file contains Kerberos support code, copyright 2006 by
* Jelmer Vernooij.
}
else if (auth_type == CUPSD_AUTH_NEGOTIATE)
{
-#if defined(SO_PEERCRED) && defined(AF_LOCAL)
- if (httpAddrFamily(httpGetAddress(con->http)) == AF_LOCAL)
- strlcpy(auth_str, "PeerCred", sizeof(auth_str));
- else
-#endif /* SO_PEERCRED && AF_LOCAL */
strlcpy(auth_str, "Negotiate", sizeof(auth_str));
}
- if (con->best && auth_type != CUPSD_AUTH_NEGOTIATE && !con->is_browser && !_cups_strcasecmp(httpGetHostname(con->http, NULL, 0), "localhost"))
+ if (con->best && !con->is_browser && !_cups_strcasecmp(httpGetHostname(con->http, NULL, 0), "localhost"))
{
/*
- * Add a "trc" (try root certification) parameter for local non-Kerberos
+ * Add a "trc" (try root certification) parameter for local
* requests when the request requires system group membership - then the
* client knows the root certificate can/should be used.
*
perm_check = 0;
}
+ else if (!strcmp(con->uri, "/admin/conf/cupsd.conf"))
+ {
+ strlcpy(filename, ConfigurationFile, len);
+
+ perm_check = 0;
+ }
+ else if (!strncmp(con->uri, "/admin/log/", 11))
+ {
+ if (!strncmp(con->uri + 11, "access_log", 10) && AccessLog[0] == '/')
+ strlcpy(filename, AccessLog, len);
+ else if (!strncmp(con->uri + 11, "error_log", 9) && ErrorLog[0] == '/')
+ strlcpy(filename, ErrorLog, len);
+ else if (!strncmp(con->uri + 11, "page_log", 8) && PageLog[0] == '/')
+ strlcpy(filename, PageLog, len);
+ else
+ return (NULL);
+
+ perm_check = 0;
+ }
else if (!strncmp(con->uri, "/admin", 6) || !strncmp(con->uri, "/classes", 8) || !strncmp(con->uri, "/jobs", 5) || !strncmp(con->uri, "/printers", 9))
{
/*
perm_check = 0;
}
- else if (!strcmp(con->uri, "/admin/conf/cupsd.conf"))
- {
- strlcpy(filename, ConfigurationFile, len);
-
- perm_check = 0;
- }
- else if (!strncmp(con->uri, "/admin/log/", 11))
- {
- if (!strncmp(con->uri + 11, "access_log", 10) && AccessLog[0] == '/')
- strlcpy(filename, AccessLog, len);
- else if (!strncmp(con->uri + 11, "error_log", 9) && ErrorLog[0] == '/')
- strlcpy(filename, ErrorLog, len);
- else if (!strncmp(con->uri + 11, "page_log", 8) && PageLog[0] == '/')
- strlcpy(filename, PageLog, len);
- else
- return (NULL);
-
- perm_check = 0;
- }
else if (con->language)
{
snprintf(language, sizeof(language), "/%s", con->language->language);
*/
if (language[3])
- language[0] = '\0'; /* Strip country code */
+ language[3] = '\0'; /* Strip country code */
else
language[0] = '\0'; /* Strip language */
}
return (0);
}
- if (!_cups_strcasecmp(type->type, "x-httpd-cgi") &&
- (filestats->st_mode & 0111))
+ if (!_cups_strcasecmp(type->type, "x-httpd-cgi") && (filestats->st_mode & 0111) && (getuid() || !(filestats->st_mode & 022)))
{
/*
* "application/x-httpd-cgi" is a CGI script.
}
else
{
- sprintf(content_length, "CONTENT_LENGTH=" CUPS_LLFMT,
- CUPS_LLCAST con->bytes);
+ snprintf(content_length, sizeof(content_length), "CONTENT_LENGTH=" CUPS_LLFMT, CUPS_LLCAST con->bytes);
snprintf(content_type, sizeof(content_type), "CONTENT_TYPE=%s",
httpGetField(con->http, HTTP_FIELD_CONTENT_TYPE));
{ "JobKillDelay", &JobKillDelay, CUPSD_VARTYPE_TIME },
{ "JobRetryLimit", &JobRetryLimit, CUPSD_VARTYPE_INTEGER },
{ "JobRetryInterval", &JobRetryInterval, CUPSD_VARTYPE_TIME },
- { "KeepAliveTimeout", &KeepAliveTimeout, CUPSD_VARTYPE_TIME },
{ "KeepAlive", &KeepAlive, CUPSD_VARTYPE_BOOLEAN },
#ifdef HAVE_LAUNCHD
{ "LaunchdTimeout", &IdleExitTimeout, CUPSD_VARTYPE_TIME },
FilterNice = 0;
HostNameLookups = FALSE;
KeepAlive = TRUE;
- KeepAliveTimeout = DEFAULT_KEEPALIVE;
ListenBackLog = SOMAXCONN;
LogDebugHistory = 200;
LogFilePerm = CUPS_DEFAULT_LOG_FILE_PERM;
/* Timeout during requests */
KeepAlive VALUE(TRUE),
/* Support the Keep-Alive option? */
- KeepAliveTimeout VALUE(DEFAULT_KEEPALIVE),
- /* Timeout between requests */
FileDevice VALUE(FALSE),
/* Allow file: devices? */
FilterLimit VALUE(0),
* all others run as the unprivileged user...
*/
- start_backend(dent->filename, !(dent->fileinfo.st_mode & (S_IWGRP | S_IRWXO)));
+ start_backend(dent->filename, !(dent->fileinfo.st_mode & (S_IWGRP | S_IWOTH | S_IXOTH)));
}
cupsDirClose(dir);
request = ippNewRequest(IPP_OP_CANCEL_JOB);
- sprintf(uri, "ipp://localhost/jobs/%d", id);
+ snprintf(uri, sizeof(uri), "ipp://localhost/jobs/%d", id);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri", NULL, uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
/*
* IPP routines for the CUPS scheduler.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2007-2021 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* This file contains Kerberos support code, copyright 2006 by
cups_array_t *ra,
cups_array_t *exclude);
static void create_job(cupsd_client_t *con, ipp_attribute_t *uri);
+static void *create_local_bg_thread(cupsd_printer_t *printer);
static void create_local_printer(cupsd_client_t *con);
static cups_array_t *create_requested_array(ipp_t *request);
static void create_subscriptions(cupsd_client_t *con, ipp_attribute_t *uri);
* Class doesn't exist; see if we have a printer of the same name...
*/
- if ((pclass = cupsdFindPrinter(resource + 9)) != NULL)
+ if (cupsdFindPrinter(resource + 9))
{
/*
* Yes, return an error...
* Printer doesn't exist; see if we have a class of the same name...
*/
- if ((printer = cupsdFindClass(resource + 10)) != NULL)
+ if (cupsdFindClass(resource + 10))
{
/*
* Yes, return an error...
need_restart_job = 1;
changed_driver = 1;
- if (!strcmp(ppd_name, "raw"))
+ if (!strcmp(ppd_name, "everywhere"))
+ {
+ // Create IPP Everywhere PPD...
+ if (!printer->device_uri || (strncmp(printer->device_uri, "dnssd://", 8) && strncmp(printer->device_uri, "ipp://", 6) && strncmp(printer->device_uri, "ipps://", 7) && strncmp(printer->device_uri, "ippusb://", 9)))
+ {
+ send_ipp_status(con, IPP_INTERNAL_ERROR, _("IPP Everywhere driver requires an IPP connection."));
+ if (!modify)
+ cupsdDeletePrinter(printer, 0);
+
+ return;
+ }
+
+ // Run a background thread to create the PPD...
+ _cupsThreadCreate((_cups_thread_func_t)create_local_bg_thread, printer);
+ }
+ else if (!strcmp(ppd_name, "raw"))
{
/*
* Raw driver, remove any existing PPD file.
}
if (printer->alert && (!ra || cupsArrayFind(ra, "printer-alert")))
- ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_STRING, "printer-alert", NULL, printer->alert);
+ ippAddOctetString(con->response, IPP_TAG_PRINTER, "printer-alert", printer->alert, (int)strlen(printer->alert));
if (printer->alert_description && (!ra || cupsArrayFind(ra, "printer-alert-description")))
ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-alert-description", NULL, printer->alert_description);
if (!ra || cupsArrayFind(ra, "queued-job-count"))
add_queued_job_count(con, printer);
+ if (!ra || cupsArrayFind(ra, "uri-security-supported"))
+ ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "uri-security-supported", NULL, is_encrypted ? "tls" : "none");
+
copy_attrs(con->response, printer->attrs, ra, IPP_TAG_ZERO, 0, NULL);
if (printer->ppd_attrs)
copy_attrs(con->response, printer->ppd_attrs, ra, IPP_TAG_ZERO, 0, NULL);
cupsdLogJob(job, CUPSD_LOG_DEBUG,
"Restarted by \"%s\" with job-hold-until=%s.",
username, attr->values[0].string.text);
- cupsdSetJobHoldUntil(job, attr->values[0].string.text, 0);
-
- cupsdAddEvent(CUPSD_EVENT_JOB_CONFIG_CHANGED | CUPSD_EVENT_JOB_STATE,
- NULL, job, "Job restarted by user with job-hold-until=%s",
- attr->values[0].string.text);
+ cupsdSetJobHoldUntil(job, attr->values[0].string.text, 1);
+ cupsdSetJobState(job, IPP_JOB_HELD, CUPSD_JOB_DEFAULT,
+ "Job restarted by user with job-hold-until=%s",
+ attr->values[0].string.text);
}
else
{
case IPP_TAG_INTEGER :
case IPP_TAG_ENUM :
- sprintf(value, "%d", attr->values[0].integer);
- printer->num_options = cupsAddOption(name, value,
- printer->num_options,
- &(printer->options));
+ printer->num_options = cupsAddIntegerOption(name, attr->values[0].integer, printer->num_options, &(printer->options));
cupsdLogMessage(CUPSD_LOG_DEBUG,
"Setting %s to %s...", attr->name, value);
break;
case IPP_TAG_RANGE :
- sprintf(value, "%d-%d", attr->values[0].range.lower,
- attr->values[0].range.upper);
+ snprintf(value, sizeof(value), "%d-%d", attr->values[0].range.lower, attr->values[0].range.upper);
printer->num_options = cupsAddOption(name, value,
printer->num_options,
&(printer->options));
break;
case IPP_TAG_RESOLUTION :
- sprintf(value, "%dx%d%s", attr->values[0].resolution.xres,
- attr->values[0].resolution.yres,
- attr->values[0].resolution.units == IPP_RES_PER_INCH ?
- "dpi" : "dpcm");
+ snprintf(value, sizeof(value), "%dx%d%s", attr->values[0].resolution.xres, attr->values[0].resolution.yres, attr->values[0].resolution.units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
printer->num_options = cupsAddOption(name, value,
printer->num_options,
&(printer->options));
goto abort_job;
}
- sprintf(jobid, "%d", job->id);
+ snprintf(jobid, sizeof(jobid), "%d", job->id);
argv[0] = job->printer->name;
argv[1] = jobid;
else if (stat(command, &backinfo))
backroot = 0;
else
- backroot = !(backinfo.st_mode & (S_IWGRP | S_IRWXO));
+ backroot = !(backinfo.st_mode & (S_IWGRP | S_IWOTH | S_IXOTH));
argv[0] = job->printer->sanitized_device_uri;
{
int i; /* Looping var */
cups_file_t *fp; /* job.cache file */
- char filename[1024], /* job.cache filename */
- temp[1024]; /* Temporary string */
+ char filename[1024]; /* job.cache filename */
cupsd_job_t *job; /* Current job */
- time_t curtime; /* Current time */
- struct tm curdate; /* Current date */
snprintf(filename, sizeof(filename), "%s/job.cache", CacheDir);
* Write a small header to the file...
*/
- time(&curtime);
- localtime_r(&curtime, &curdate);
- strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", &curdate);
-
cupsFilePuts(fp, "# Job cache file for " CUPS_SVERSION "\n");
- cupsFilePrintf(fp, "# Written by cupsd on %s\n", temp);
+ cupsFilePrintf(fp, "# Written by cupsd\n");
cupsFilePrintf(fp, "NextJobId %d\n", NextJobId);
/*
else
cupsdAddEvent(CUPSD_EVENT_JOB_STATE, job->printer, job, "%s", buffer);
- if (newstate == IPP_JOB_STOPPED || newstate == IPP_JOB_ABORTED || newstate == IPP_JOB_HELD)
+ if (newstate == IPP_JOB_STOPPED || newstate == IPP_JOB_ABORTED)
cupsdLogJob(job, CUPSD_LOG_ERROR, "%s", buffer);
else
cupsdLogJob(job, CUPSD_LOG_INFO, "%s", buffer);
* rarely have current information for network devices...
*/
- if (strncmp(job->printer->device_uri, "usb:", 4) &&
- strncmp(job->printer->device_uri, "ippusb:", 7))
+ if (!strstr(job->printer->device_uri, "usb:"))
cupsdSetPrinterReasons(job->printer, "-offline-report");
/*
exit_code = job->status;
}
- cupsdLogJob(job, CUPSD_LOG_INFO, "Backend returned status %d (%s)",
+ cupsdLogJob(job, CUPSD_LOG_WARN, "Backend returned status %d (%s)",
exit_code,
exit_code == CUPS_BACKEND_FAILED ? "failed" :
exit_code == CUPS_BACKEND_AUTH_REQUIRED ?
if (lis->fd == -1)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
+ cupsdLogMessage(errno == EAFNOSUPPORT ? CUPSD_LOG_INFO : CUPSD_LOG_ERROR,
"Unable to open listen socket for address %s:%d - %s.",
s, p, strerror(errno));
* Format and write the log message...
*/
-#ifdef HAVE_SYSTEMD_SD_JOURNAL_H
- if (job && strcmp(ErrorLog, "syslog"))
-#else
if (job)
-#endif /* HAVE_SYSTEMD_SD_JOURNAL_H */
snprintf(jobmsg, sizeof(jobmsg), "[Job %d] %s", job->id, message);
else
strlcpy(jobmsg, message, sizeof(jobmsg));
case 'h' : /* Show usage/help */
usage(0);
- break;
case 'l' : /* Started by launchd/systemd/upstart... */
#ifdef HAVE_ONDEMAND
_cupsLangPrintf(stderr, _("cupsd: Unknown option \"%c\" - "
"aborting."), *opt);
usage(1);
- break;
}
}
}
* Clean out old temp files and printer cache data.
*/
- if (!strncmp(TempDir, RequestRoot, strlen(RequestRoot)))
+ if (!RequestRoot || !strncmp(TempDir, RequestRoot, strlen(RequestRoot)))
cupsdCleanFiles(TempDir, NULL);
cupsdCleanFiles(CacheDir, "*.ipp");
{
cupsdLogMessage(CUPSD_LOG_ERROR, "service_add_listener: Unable to allocate listener: %s.", strerror(errno));
exit(EXIT_FAILURE);
- return;
}
cupsArrayAdd(Listeners, lis);
{
cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Unable to get listener sockets: %s", strerror(error));
exit(EXIT_FAILURE);
- return; /* anti-compiler-warning */
}
/*
/*
* Printer routines for the CUPS scheduler.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2007-2020 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
/* 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,
ippDelete(p->attrs);
ippDelete(p->ppd_attrs);
+ _ppdCacheDestroy(p->pc);
+
mimeDeleteType(MimeDatabase, p->filetype);
mimeDeleteType(MimeDatabase, p->prefiltertype);
cupsdFreeStrings(&(p->users));
cupsdFreeQuotas(p);
+ cupsdClearString(&p->uuid);
cupsdClearString(&p->uri);
cupsdClearString(&p->hostname);
cupsdClearString(&p->name);
int i; /* Looping var */
cups_file_t *fp; /* printers.conf file */
char filename[1024], /* printers.conf filename */
- temp[1024], /* Temporary string */
value[2048], /* Value string */
*ptr, /* Pointer into value */
*name; /* Current user/group name */
cupsd_printer_t *printer; /* Current printer class */
- time_t curtime; /* Current time */
- struct tm curdate; /* Current date */
cups_option_t *option; /* Current option */
ipp_attribute_t *marker; /* Current marker attribute */
* Write a small header to the file...
*/
- time(&curtime);
- localtime_r(&curtime, &curdate);
- strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", &curdate);
-
cupsFilePuts(fp, "# Printer configuration file for " CUPS_SVERSION "\n");
- cupsFilePrintf(fp, "# Written by cupsd on %s\n", temp);
+ cupsFilePrintf(fp, "# Written by cupsd\n");
cupsFilePuts(fp, "# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING\n");
cupsFilePrintf(fp, "NextPrinterId %d\n", NextPrinterId);
ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
"uri-authentication-supported", NULL, auth_supported);
- ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
- "uri-security-supported", NULL, "none");
if (p->printer_id)
ippAddInteger(p->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "printer-id", p->printer_id);
ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_NAME, "printer-name", NULL,
num_qualities = 0;
- if ((output_mode = ppdFindOption(ppd, "OutputMode")) != NULL)
+ if ((output_mode = ppdFindOption(ppd, "OutputMode")) ||
+ (output_mode = ppdFindOption(ppd, "cupsPrintQuality")))
{
if (ppdFindChoice(output_mode, "draft") ||
ppdFindChoice(output_mode, "fast"))
{
int i; /* Looping var */
cups_file_t *fp; /* subscriptions.conf file */
- char filename[1024], /* subscriptions.conf filename */
- temp[1024]; /* Temporary string */
+ char filename[1024]; /* subscriptions.conf filename */
cupsd_subscription_t *sub; /* Current subscription */
- time_t curtime; /* Current time */
- struct tm curdate; /* Current date */
unsigned mask; /* Current event mask */
const char *name; /* Current event name */
int hex; /* Non-zero if we are writing hex data */
* Write a small header to the file...
*/
- time(&curtime);
- localtime_r(&curtime, &curdate);
- strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", &curdate);
-
cupsFilePuts(fp, "# Subscription configuration file for " CUPS_SVERSION "\n");
- cupsFilePrintf(fp, "# Written by cupsd on %s\n", temp);
+ cupsFilePrintf(fp, "# Written by cupsd\n");
cupsFilePrintf(fp, "NextSubscriptionId %d\n", NextSubscriptionId);
* Register for power state change notifications
*/
- bzero(&threadData, sizeof(threadData));
+ memset(&threadData, 0, sizeof(threadData));
threadData.sysevent.powerKernelPort =
IORegisterForSystemPower(&threadData, &powerNotifierPort,
* Register for system configuration change notifications
*/
- bzero(&storeContext, sizeof(storeContext));
+ memset(&storeContext, 0, sizeof(storeContext));
storeContext.info = &threadData;
store = SCDynamicStoreCreate(kCFAllocatorDefault, CFSTR("cupsd"),
* this later.
*/
- bzero(&timerContext, sizeof(timerContext));
+ memset(&timerContext, 0, sizeof(timerContext));
timerContext.info = &threadData;
threadData.timerRef =
return (-1);
else if (digits > 0)
return (1);
- else if (diff)
+ else
return (diff);
}
else if (tolower(*s) < tolower(*t))
cups_array_t * /* O - CUPS array */
cupsdCreateStringsArray(const char *s) /* I - Comma-delimited strings */
{
- if (!s || !*s)
- return (NULL);
- else
+ if (s && *s)
return (_cupsArrayNewStrings(s, ','));
+ else
+ return (NULL);
}
--- /dev/null
+#!/bin/sh
+#
+# Script to configure and make CUPS with the standard build options. When no
+# targets are specified, the "clean" and "check" targets are used.
+#
+# Usage:
+#
+# scripts/makecups [configure option(s)] [make target(s)]
+#
+
+# Scan the command-line arguments...
+confopts="--enable-debug --enable-debug-guards --enable-debug-printfs --enable-sanitizer --enable-unit-tests"
+makeopts=""
+
+while test $# -gt 0; do
+ opt="$1"
+ shift
+
+ case "$opt" in
+ -*)
+ confopts="$confopts $opt"
+ ;;
+ *)
+ makeopts="$makeopts $opt"
+ ;;
+ esac
+done
+
+if test "x$makeopts" = x; then
+ makeopts="clean check"
+fi
+
+case "`uname`" in
+ Darwin)
+ makeopts="-j`sysctl -n hw.activecpu` $makeopts"
+ ;;
+ Linux*)
+ ASAN_OPTIONS="leak_check_at_exit=false"; export ASAN_OPTIONS
+ ;;
+esac
+
+# Run the configure script...
+echo ./configure $confopts
+./configure $confopts || exit 1
+
+# Build the software...
+echo make $makeopts
+make $makeopts
exit 1
fi
- temp=`head -1 README.md | awk '{print $4}'`
+ temp=`head -1 README.md | awk '{print $5}'`
if test "$temp" != "v$version"; then
echo "Still need to update version to v$version in README.md (saw $temp)"
exit 1
}
else
{
- sprintf(uri, "ipp://localhost/jobs/%d", job_id);
+ snprintf(uri, sizeof(uri), "ipp://localhost/jobs/%d", job_id);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri", NULL,
uri);
}
op == IPP_PURGE_JOBS ? "purge-jobs" : "cancel-job",
cupsLastErrorString());
- if (response)
- ippDelete(response);
+ ippDelete(response);
return (1);
}
op == IPP_PURGE_JOBS ? "purge-jobs" : "cancel-job",
cupsLastErrorString());
- if (response)
- ippDelete(response);
+ ippDelete(response);
return (1);
}
default :
usage();
- break;
}
}
else
"name."), argv[0]);
return (1);
}
+ else if (cupsLastError() == IPP_STATUS_ERROR_NOT_FOUND)
+ {
+ _cupsLangPrintf(stderr,
+ _("%s: Error - The printer or class does not exist."), argv[0]);
+ return (1);
+ }
break;
case 'f' : /* Form */
return (1);
}
- sprintf(buffer, "%d", num_copies);
- num_options = cupsAddOption("copies", buffer, num_options,
- &options);
+ num_options = cupsAddIntegerOption("copies", num_copies, num_options, &options);
break;
case 'o' : /* Option */
return (1);
}
- sprintf(buffer, "%d", priority);
- num_options = cupsAddOption("job-priority", buffer, num_options,
- &options);
+ num_options = cupsAddIntegerOption("job-priority", priority, num_options, &options);
break;
case 's' : /* Silent */
request = ippNewRequest(IPP_RESTART_JOB);
- sprintf(uri, "ipp://localhost/jobs/%d", job_id);
+ snprintf(uri, sizeof(uri), "ipp://localhost/jobs/%d", job_id);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"job-uri", NULL, uri);
request = ippNewRequest(IPP_SET_JOB_ATTRIBUTES);
- sprintf(uri, "ipp://localhost/jobs/%d", job_id);
+ snprintf(uri, sizeof(uri), "ipp://localhost/jobs/%d", job_id);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"job-uri", NULL, uri);
/*
* "lpadmin" command for CUPS.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2021 by OpenPrinting.
+ * Copyright © 2007-2021 by Apple Inc.
* Copyright © 1997-2006 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
static int delete_printer_option(http_t *http, char *printer,
char *option);
static int enable_printer(http_t *http, char *printer);
-static char *get_printer_ppd(const char *uri, char *buffer, size_t bufsize, int *num_options, cups_option_t **options);
static cups_ptype_t get_printer_type(http_t *http, char *printer, char *uri,
size_t urisize);
static int set_printer_options(http_t *http, char *printer,
case 'E' : /* Enable the printer/enable encryption */
if (printer == NULL)
{
-#ifdef HAVE_SSL
+#ifdef HAVE_TLS
cupsSetEncryption(HTTP_ENCRYPTION_REQUIRED);
if (http)
httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
#else
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
-#endif /* HAVE_SSL */
+#endif /* HAVE_TLS */
break;
}
return (1);
#endif /* __APPLE__ */
}
- else if (ppd_name && !strcmp(ppd_name, "everywhere") && device_uri)
- {
- if ((file = get_printer_ppd(device_uri, evefile, sizeof(evefile), &num_options, &options)) == NULL)
- return (1);
-
- num_options = cupsRemoveOption("ppd-name", num_options, &options);
- }
- else if (ppd_name || file)
+ else if ((ppd_name && strcmp(ppd_name, "everywhere")) || file)
{
_cupsLangPuts(stderr, _("lpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS."));
}
}
-/*
- * 'get_printer_ppd()' - Get an IPP Everywhere PPD file for the given URI.
- */
-
-static char * /* O - Filename or NULL */
-get_printer_ppd(
- const char *uri, /* I - Printer URI */
- char *buffer, /* I - Filename buffer */
- size_t bufsize, /* I - Size of filename buffer */
- int *num_options, /* IO - Number of options */
- cups_option_t **options) /* IO - Options */
-{
- http_t *http; /* Connection to printer */
- ipp_t *request, /* Get-Printer-Attributes request */
- *response; /* Get-Printer-Attributes response */
- ipp_attribute_t *attr; /* Attribute from response */
- char resolved[1024], /* Resolved URI */
- scheme[32], /* URI scheme */
- userpass[256], /* Username:password */
- host[256], /* Hostname */
- resource[256]; /* Resource path */
- int port; /* Port number */
- static const char * const pattrs[] = /* Attributes to use */
- {
- "all",
- "media-col-database"
- };
-
-
- /*
- * Connect to the printer...
- */
-
- if (strstr(uri, "._tcp"))
- {
- /*
- * Resolve URI...
- */
-
- if (!_httpResolveURI(uri, resolved, sizeof(resolved), _HTTP_RESOLVE_DEFAULT, NULL, NULL))
- {
- _cupsLangPrintf(stderr, _("%s: Unable to resolve \"%s\"."), "lpadmin", uri);
- return (NULL);
- }
-
- uri = resolved;
- }
-
- if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
- {
- _cupsLangPrintf(stderr, _("%s: Bad printer URI \"%s\"."), "lpadmin", uri);
- return (NULL);
- }
-
- http = httpConnect2(host, port, NULL, AF_UNSPEC, !strcmp(scheme, "ipps") ? HTTP_ENCRYPTION_ALWAYS : HTTP_ENCRYPTION_IF_REQUESTED, 1, 30000, NULL);
- if (!http)
- {
- _cupsLangPrintf(stderr, _("%s: Unable to connect to \"%s:%d\": %s"), "lpadmin", host, port, cupsLastErrorString());
- return (NULL);
- }
-
- /*
- * Send a Get-Printer-Attributes request...
- */
-
- request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
- ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
- ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", sizeof(pattrs) / sizeof(pattrs[0]), NULL, pattrs);
- response = cupsDoRequest(http, request, resource);
-
- if (cupsLastError() >= IPP_STATUS_REDIRECTION_OTHER_SITE)
- {
- _cupsLangPrintf(stderr, _("%s: Unable to query printer: %s"), "lpadmin", cupsLastErrorString());
- buffer[0] = '\0';
- }
- else if (_ppdCreateFromIPP(buffer, bufsize, response))
- {
- if (!cupsGetOption("printer-geo-location", *num_options, *options) && (attr = ippFindAttribute(response, "printer-geo-location", IPP_TAG_URI)) != NULL)
- *num_options = cupsAddOption("printer-geo-location", ippGetString(attr, 0, NULL), *num_options, options);
-
- if (!cupsGetOption("printer-info", *num_options, *options) && (attr = ippFindAttribute(response, "printer-info", IPP_TAG_TEXT)) != NULL)
- *num_options = cupsAddOption("printer-info", ippGetString(attr, 0, NULL), *num_options, options);
-
- if (!cupsGetOption("printer-location", *num_options, *options) && (attr = ippFindAttribute(response, "printer-location", IPP_TAG_TEXT)) != NULL)
- *num_options = cupsAddOption("printer-location", ippGetString(attr, 0, NULL), *num_options, options);
- }
- else
- _cupsLangPrintf(stderr, _("%s: Unable to create PPD file: %s"), "lpadmin", strerror(errno));
-
- ippDelete(response);
- httpClose(http);
-
- if (buffer[0])
- return (buffer);
- else
- return (NULL);
-}
-
-
/*
* 'get_printer_type()' - Determine the printer type and URI.
*/
if (file)
ppdfile = file;
- else if ((ppdname = cupsGetOption("ppd-name", num_options, options)) != NULL && strcmp(ppdname, "raw") && num_options > 1)
+ else if ((ppdname = cupsGetOption("ppd-name", num_options, options)) != NULL && strcmp(ppdname, "everywhere") && strcmp(ppdname, "raw") && num_options > 1)
{
if ((ppdfile = cupsGetServerPPD(http, ppdname)) != NULL)
{
if (!name)
return (0);
- while (*list)
+ do
{
/*
* Skip leading whitespace and commas...
while (*list && !isspace(*list & 255) && *list != ',')
list ++;
}
+ while (*list);
return (0);
}
_cupsLangPrintf(stdout, _("%s not accepting requests since %s -"),
printer, printer_state_time);
_cupsLangPrintf(stdout, _("\t%s"),
- (message == NULL || !*message) ?
- "reason unknown" : message);
+ (message && *message) ?
+ message : "reason unknown");
}
for (i = 0; i < num_dests; i ++)
_("%s/%s not accepting requests since %s -"),
printer, dests[i].instance, printer_state_time);
_cupsLangPrintf(stdout, _("\t%s"),
- (message == NULL || !*message) ?
- "reason unknown" : message);
+ (message && *message) ?
+ message : "reason unknown");
}
}
}
printer_uri = NULL;
members = NULL;
- while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER)
+ do
{
if (!strcmp(attr->name, "printer-name") &&
attr->value_tag == IPP_TAG_NAME)
attr = attr->next;
}
+ while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER);
/*
* If this is a remote class, grab the class info from the
if ((message && *message) || pstate == IPP_PRINTER_STOPPED)
{
- if (!message || !*message)
- _cupsLangPuts(stdout, _("\treason unknown"));
+ if (message && *message)
+ _cupsLangPrintf(stdout, "\t%s", message);
else
- _cupsLangPrintf(stdout, "\t%s", message);
+ _cupsLangPuts(stdout, _("\treason unknown"));
}
if (long_status > 1)
if ((message && *message) || pstate == IPP_PRINTER_STOPPED)
{
- if (!message || !*message)
- _cupsLangPuts(stdout, _("\treason unknown"));
- else
+ if (message && *message)
_cupsLangPrintf(stdout, "\t%s", message);
+ else
+ _cupsLangPuts(stdout, _("\treason unknown"));
}
if (long_status > 1)
printers.tmpl \
printers-header.tmpl \
restart.tmpl \
- samba-export.tmpl \
- samba-exported.tmpl \
search.tmpl \
set-printer-options-header.tmpl \
set-printer-options-trailer.tmpl \
<TD>
<SELECT NAME="PPD_NAME" SIZE="10">
{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Current Driver - {current_make_and_model}</OPTION>:}
-{show_ipp_everywhere?<OPTION VALUE="everywhere" SELECTED>{current_make_and_model} - IPP Everywhere ™</OPTION>:}
+{show_ipp_everywhere?<OPTION VALUE="everywhere" SELECTED>{current_make_and_model?{current_make_and_model} -:} IPP Everywhere ™</OPTION>:}
{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
}</SELECT>
</TD>
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}"><INPUT TYPE="SUBMIT" VALUE="Reprint Job"></FORM>:}:}
{job_state=4?{job_hold_until=auth-info-required?Held for authentication.:
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Release Job"></FORM>:}}
+<INPUT TYPE="SUBMIT" VALUE="Release Job"></FORM>:}:}
{job_state=3?
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
<INPUT TYPE="SUBMIT" VALUE="Hold Job"></FORM>:}
# Perform the complete set of IPP compliance tests specified in the
# CUPS Software Test Plan.
#
-# Copyright © 2007-2019 by Apple Inc.
+# Copyright © 2007-2021 by Apple Inc.
# Copyright © 1997-2007 by Easy Software Products, all rights reserved.
#
# Licensed under Apache License v2.0. See the file "LICENSE" for more
EOF
ln -s $root/data $BASE/share
ln -s $root/ppdc/sample.drv $BASE/share/drv
+ln -s $root/conf/cgi.types $BASE/share/mime
ln -s $root/conf/mime.types $BASE/share/mime
ln -s $root/conf/mime.convs $BASE/share/mime
ln -s $root/data/*.h $BASE/share/ppdc
ippeveprinter: ippeveprinter.o ../cups/$(LIBCUPS)
echo Linking $@...
- $(LD_CC) $(ALL_LDFLAGS) -o $@ ippeveprinter.o $(DNSSDLIBS) $(LINKCUPS)
+ $(LD_CC) $(ALL_LDFLAGS) -o $@ ippeveprinter.o $(DNSSDLIBS) $(PAMLIBS) $(LINKCUPS)
$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
ippeveprinter-static: ippeveprinter.o ../cups/$(LIBCUPSSTATIC)
echo Linking $@...
- $(LD_CC) $(ALL_LDFLAGS) -o $@ ippeveprinter.o $(LINKCUPSSTATIC)
+ $(LD_CC) $(ALL_LDFLAGS) -o $@ ippeveprinter.o $(PAMLIBS) $(LINKCUPSSTATIC)
$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
/*
* IPP Everywhere printer application for CUPS.
*
- * Copyright © 2010-2019 by Apple Inc.
+ * Copyright © 2021 by OpenPrinting.
+ * Copyright © 2020 by the IEEE-ISTO Printer Working Group.
+ * Copyright © 2010-2021 by Apple Inc.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
- * information.º
+ * information.
*
* Note: This program began life as the "ippserver" sample code that first
* appeared in CUPS 1.4. The name has been changed in order to distinguish it
#else
extern char **environ;
+# include <spawn.h>
# include <sys/fcntl.h>
# include <sys/wait.h>
# include <poll.h>
#elif defined(HAVE_AVAHI)
# include <avahi-client/client.h>
# include <avahi-client/publish.h>
+# include <avahi-common/alternative.h>
# include <avahi-common/error.h>
+# include <avahi-common/malloc.h>
# include <avahi-common/thread-watch.h>
#endif /* HAVE_DNSSD */
+
#ifdef HAVE_SYS_MOUNT_H
# include <sys/mount.h>
#endif /* HAVE_SYS_MOUNT_H */
# include <sys/vfs.h>
#endif /* HAVE_SYS_VFS_H */
+#if HAVE_LIBPAM
+# ifdef HAVE_PAM_PAM_APPL_H
+# include <pam/pam_appl.h>
+# else
+# include <security/pam_appl.h>
+# endif /* HAVE_PAM_PAM_APPL_H */
+#endif /* HAVE_LIBPAM */
+
#include "printer-png.h"
+#include "printer-lg-png.h"
+#include "printer-sm-png.h"
/*
typedef void *ippeve_txt_t; /* TXT record */
#endif /* HAVE_DNSSD */
+#if HAVE_LIBPAM
+typedef struct ippeve_authdata_s /* Authentication data */
+{
+ char username[HTTP_MAX_VALUE], /* Username string */
+ *password; /* Password string */
+} ippeve_authdata_t;
+#endif /* HAVE_LIBPAM */
+
typedef struct ippeve_filter_s /**** Attribute filter ****/
{
cups_array_t *ra; /* Requested attributes */
/* TODO: One IPv4 and one IPv6 listener are really not sufficient */
int ipv4, /* IPv4 listener */
ipv6; /* IPv6 listener */
- ippeve_srv_t ipp_ref, /* Bonjour IPP service */
- ipps_ref, /* Bonjour IPPS service */
- http_ref, /* Bonjour HTTP service */
- printer_ref; /* Bonjour LPD service */
- char *dnssd_name, /* printer-dnssd-name */
+#ifdef HAVE_DNSSD
+ ippeve_srv_t ipp_ref, /* DNS-SD IPP service */
+ ipps_ref, /* DNS-SD IPPS service */
+ http_ref, /* DNS-SD HTTP service */
+ printer_ref; /* DNS-SD LPD service */
+#elif defined(HAVE_AVAHI)
+ ippeve_srv_t dnssd_ref; /* DNS-SD services */
+#endif /* HAVE_DNSSD */
+ char *dnssd_subtypes;/* DNS-SD subtypes */
+ int dnssd_collision;/* Name collision? */
+ char *dnssd_name, /* printer-dns-sd-name */
*name, /* printer-name */
- *icon, /* Icon filename */
+ *icons[3], /* Icon filenames */
+ *strings, /* Strings filename */
*directory, /* Spool directory */
*hostname, /* Hostname */
- *uri, /* printer-uri-supported */
*device_uri, /* Device URI (if any) */
*output_format, /* Output format */
#if !CUPS_LITE
http_state_t operation; /* Request operation */
ipp_op_t operation_id; /* IPP operation-id */
char uri[1024], /* Request URI */
- *options; /* URI options */
+ *options, /* URI options */
+ host_field[HTTP_MAX_VALUE];
+ /* Host: header */
+ int host_port; /* Port number from Host: header */
http_addr_t addr; /* Client address */
- char hostname[256]; /* Client hostname */
+ char hostname[256], /* Client hostname */
+ username[HTTP_MAX_VALUE];
+ /* Authenticated username, if any */
ippeve_printer_t *printer; /* Printer */
ippeve_job_t *job; /* Current job, if any */
} ippeve_client_t;
* Local functions...
*/
+static http_status_t authenticate_request(ippeve_client_t *client);
static void clean_jobs(ippeve_printer_t *printer);
static int compare_jobs(ippeve_job_t *a, ippeve_job_t *b);
static void copy_attributes(ipp_t *to, ipp_t *from, cups_array_t *ra, ipp_tag_t group_tag, int quickcopy);
static int create_listener(const char *name, int port, int family);
static ipp_t *create_media_col(const char *media, const char *source, const char *type, int width, int length, int bottom, int left, int right, int top);
static ipp_t *create_media_size(int width, int length);
-static ippeve_printer_t *create_printer(const char *servername, int serverport, const char *name, const char *location, const char *icon, cups_array_t *docformats, const char *subtypes, const char *directory, const char *command, const char *device_uri, const char *output_format, ipp_t *attrs);
+static ippeve_printer_t *create_printer(const char *servername, int serverport, const char *name, const char *location, const char *icons, const char *strings, cups_array_t *docformats, const char *subtypes, const char *directory, const char *command, const char *device_uri, const char *output_format, ipp_t *attrs);
static void debug_attributes(const char *title, ipp_t *ipp, int response);
static void delete_client(ippeve_client_t *client);
static void delete_job(ippeve_job_t *job);
static ippeve_job_t *find_job(ippeve_client_t *client);
static void finish_document_data(ippeve_client_t *client, ippeve_job_t *job);
static void finish_document_uri(ippeve_client_t *client, ippeve_job_t *job);
+static void flush_document_data(ippeve_client_t *client);
+static int have_document_data(ippeve_client_t *client);
static void html_escape(ippeve_client_t *client, const char *s, size_t slen);
static void html_footer(ippeve_client_t *client);
static void html_header(ippeve_client_t *client, const char *title, int refresh);
static void html_printf(ippeve_client_t *client, const char *format, ...) _CUPS_FORMAT(2, 3);
static void ipp_cancel_job(ippeve_client_t *client);
+static void ipp_cancel_my_jobs(ippeve_client_t *client);
static void ipp_close_job(ippeve_client_t *client);
static void ipp_create_job(ippeve_client_t *client);
static void ipp_get_job_attributes(ippeve_client_t *client);
#if !CUPS_LITE
static ipp_t *load_ppd_attributes(const char *ppdfile, cups_array_t *docformats);
#endif /* !CUPS_LITE */
+#if HAVE_LIBPAM
+static int pam_func(int, const struct pam_message **, struct pam_response **, void *);
+#endif /* HAVE_LIBPAM */
static int parse_options(ippeve_client_t *client, cups_option_t **options);
static void process_attr_message(ippeve_job_t *job, char *message);
static void *process_client(ippeve_client_t *client);
static int process_ipp(ippeve_client_t *client);
static void *process_job(ippeve_job_t *job);
static void process_state_message(ippeve_job_t *job, char *message);
-static int register_printer(ippeve_printer_t *printer, const char *subtypes);
+static int register_printer(ippeve_printer_t *printer);
static int respond_http(ippeve_client_t *client, http_status_t code, const char *content_coding, const char *type, size_t length);
static void respond_ipp(ippeve_client_t *client, ipp_status_t status, const char *message, ...) _CUPS_FORMAT(3, 4);
static void respond_unsupported(ippeve_client_t *client, ipp_attribute_t *attr);
static int KeepFiles = 0, /* Keep spooled job files? */
MaxVersion = 20,/* Maximum IPP version (20 = 2.0, 11 = 1.1, etc.) */
Verbosity = 0; /* Verbosity level */
+static const char *PAMService = NULL;
+ /* PAM service */
/*
#if !CUPS_LITE
*ppdfile = NULL, /* PPD file */
#endif /* !CUPS_LITE */
+ *strings = NULL, /* Strings file */
*subtypes = "_print"; /* DNS-SD service subtype */
int legacy = 0, /* Legacy mode? */
duplex = 0, /* Duplex mode */
{
web_forms = 0;
}
+ else if (!strcmp(argv[i], "--pam-service"))
+ {
+ i ++;
+ if (i >= argc)
+ usage(1);
+
+ PAMService = argv[i];
+ }
else if (!strcmp(argv[i], "--version"))
{
puts(CUPS_SVERSION);
legacy = 1;
break;
+ case 'A' : /* -A (enable authentication) */
+ if (!PAMService)
+ PAMService = "cups";
+ break;
+
case 'D' : /* -D device-uri */
i ++;
if (i >= argc)
break;
#endif /* !CUPS_LITE */
+ case 'S' : /* -S filename.strings */
+ i ++;
+ if (i >= argc)
+ usage(1);
+
+ strings = argv[i];
+ break;
+
case 'V' : /* -V max-version */
i ++;
if (i >= argc)
* Apply defaults as needed...
*/
- if (!serverport)
- {
-#ifdef _WIN32
- /*
- * Windows is almost always used as a single user system, so use a default
- * port number of 8631.
- */
-
- serverport = 8631;
-
-#else
- /*
- * Use 8000 + UID mod 1000 for the default port number...
- */
-
- serverport = 8000 + ((int)getuid() % 1000);
-#endif /* _WIN32 */
-
- _cupsLangPrintf(stderr, _("Listening on port %d."), serverport);
- }
-
if (!directory[0])
{
const char *tmpdir; /* Temporary directory */
else
attrs = load_legacy_attributes(make, model, ppm, ppm_color, duplex, docformats);
- if ((printer = create_printer(servername, serverport, name, location, icon, docformats, subtypes, directory, command, device_uri, output_format, attrs)) == NULL)
+ if ((printer = create_printer(servername, serverport, name, location, icon, strings, docformats, subtypes, directory, command, device_uri, output_format, attrs)) == NULL)
return (1);
printer->web_forms = web_forms;
}
+/*
+ * 'authenticate_request()' - Try to authenticate the request.
+ */
+
+static http_status_t /* O - HTTP_STATUS_CONTINUE to keep going, otherwise status to return */
+authenticate_request(
+ ippeve_client_t *client) /* I - Client */
+{
+#if HAVE_LIBPAM
+ /*
+ * If PAM isn't enabled, return 'continue' now...
+ */
+
+ const char *authorization; /* Pointer into Authorization string */
+ int userlen; /* Username:password length */
+ pam_handle_t *pamh; /* PAM authentication handle */
+ int pamerr; /* PAM error code */
+ struct pam_conv pamdata; /* PAM conversation data */
+ ippeve_authdata_t data; /* Authentication data */
+
+
+ if (!PAMService)
+ return (HTTP_STATUS_CONTINUE);
+
+ /*
+ * Try authenticating using PAM...
+ */
+
+ authorization = httpGetField(client->http, HTTP_FIELD_AUTHORIZATION);
+
+ if (!*authorization)
+ return (HTTP_STATUS_UNAUTHORIZED);
+
+ if (strncmp(authorization, "Basic ", 6))
+ {
+ fputs("Unsupported scheme in Authorization header.\n", stderr);
+ return (HTTP_STATUS_BAD_REQUEST);
+ }
+
+ authorization += 5;
+ while (isspace(*authorization & 255))
+ authorization ++;
+
+ userlen = sizeof(data.username);
+ httpDecode64_2(data.username, &userlen, authorization);
+
+ if ((data.password = strchr(data.username, ':')) == NULL)
+ {
+ fputs("No password in Authorization header.\n", stderr);
+ return (HTTP_STATUS_BAD_REQUEST);
+ }
+
+ *(data.password)++ = '\0';
+
+ if (!data.username[0])
+ {
+ fputs("No username in Authorization header.\n", stderr);
+ return (HTTP_STATUS_BAD_REQUEST);
+ }
+
+ pamdata.conv = pam_func;
+ pamdata.appdata_ptr = &data;
+
+ if ((pamerr = pam_start(PAMService, data.username, &pamdata, &pamh)) != PAM_SUCCESS)
+ {
+ fprintf(stderr, "pam_start() returned %d (%s)\n", pamerr, pam_strerror(pamh, pamerr));
+ return (HTTP_STATUS_SERVER_ERROR);
+ }
+
+ if ((pamerr = pam_authenticate(pamh, PAM_SILENT)) != PAM_SUCCESS)
+ {
+ fprintf(stderr, "pam_authenticate() returned %d (%s)\n", pamerr, pam_strerror(pamh, pamerr));
+ pam_end(pamh, 0);
+ return (HTTP_STATUS_UNAUTHORIZED);
+ }
+
+ if ((pamerr = pam_acct_mgmt(pamh, PAM_SILENT)) != PAM_SUCCESS)
+ {
+ fprintf(stderr, "pam_acct_mgmt() returned %d (%s)\n", pamerr, pam_strerror(pamh, pamerr));
+ pam_end(pamh, 0);
+ return (HTTP_STATUS_SERVER_ERROR);
+ }
+
+ strlcpy(client->username, data.username, sizeof(client->username));
+
+ pam_end(pamh, PAM_SUCCESS);
+
+ return (HTTP_STATUS_CONTINUE);
+
+#else
+ /*
+ * No authentication support built-in, return 'continue'...
+ */
+
+ return (HTTP_STATUS_CONTINUE);
+#endif /* HAVE_LIBPAM */
+}
+
+
/*
* 'clean_jobs()' - Clean out old (completed) jobs.
*/
job->id = client->printer->next_job_id ++;
- snprintf(uri, sizeof(uri), "%s/%d", client->printer->uri, job->id);
+ if ((attr = ippFindAttribute(client->request, "printer-uri", IPP_TAG_URI)) != NULL)
+ snprintf(uri, sizeof(uri), "%s/%d", ippGetString(attr, 0, NULL), job->id);
+ else
+ httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL, client->printer->hostname, client->printer->port, "/ipp/print/%d", job->id);
+
httpAssembleUUID(client->printer->hostname, client->printer->port, client->printer->name, job->id, uuid, sizeof(uuid));
ippAddDate(job->attrs, IPP_TAG_JOB, "date-time-at-creation", ippTimeToDate(time(&job->created)));
ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-uri", NULL, uri);
ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-uuid", NULL, uuid);
if ((attr = ippFindAttribute(client->request, "printer-uri", IPP_TAG_URI)) != NULL)
+ {
ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL, ippGetString(attr, 0, NULL));
+ }
else
- ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL, client->printer->uri);
+ {
+ char printer_uri[1024]; /* job-printer-uri value */
+
+ httpAssembleURI(HTTP_URI_CODING_ALL, printer_uri, sizeof(printer_uri), "ipp", NULL, client->printer->hostname, client->printer->port, "/ipp/print");
+ ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL, printer_uri);
+ }
+
ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "time-at-creation", (int)(job->created - client->printer->start_time));
cupsArrayAdd(client->printer->jobs, job);
int serverport, /* I - Server port */
const char *name, /* I - printer-name */
const char *location, /* I - printer-location */
- const char *icon, /* I - printer-icons */
+ const char *icons, /* I - printer-icons */
+ const char *strings, /* I - printer-strings-uri */
cups_array_t *docformats, /* I - document-format-supported */
- const char *subtypes, /* I - Bonjour service subtype(s) */
+ const char *subtypes, /* I - DNS-SD service subtype(s) */
const char *directory, /* I - Spool directory */
const char *command, /* I - Command to run on job files, if any */
const char *device_uri, /* I - Output device, if any */
#ifndef _WIN32
char path[1024]; /* Full path to command */
#endif /* !_WIN32 */
- char uri[1024], /* Printer URI */
-#ifdef HAVE_SSL
- securi[1024], /* Secure printer URI */
- *uris[2], /* All URIs */
-#endif /* HAVE_SSL */
- icons[1024], /* printer-icons URI */
- adminurl[1024], /* printer-more-info URI */
- supplyurl[1024],/* printer-supply-info-uri URI */
- uuid[128]; /* printer-uuid */
+ unsigned char sha256[32]; /* SHA-256 digest/sum */
+ char uuid_data[1024],/* Data to hash for printer-uuid */
+ uuid[128], /* printer-uuid */
+ *iconsptr; /* Pointer into icons string */
int k_supported; /* Maximum file size supported */
int num_formats; /* Number of supported document formats */
const char *formats[100], /* Supported document formats */
"none",
"none"
};
+ static const char * const uri_authentication_basic[] =
+ { /* uri-authentication-supported values with authentication */
+ "basic",
+ "basic"
+ };
static const char * const uri_security_supported[] =
{ /* uri-security-supported values */
"none",
return (NULL);
}
- printer->ipv4 = -1;
- printer->ipv6 = -1;
- printer->name = strdup(name);
- printer->dnssd_name = strdup(name);
- printer->command = command ? strdup(command) : NULL;
- printer->device_uri = device_uri ? strdup(device_uri) : NULL;
- printer->output_format = output_format ? strdup(output_format) : NULL;
- printer->directory = strdup(directory);
- printer->icon = icon ? strdup(icon) : NULL;
- printer->port = serverport;
- printer->start_time = time(NULL);
- printer->config_time = printer->start_time;
- printer->state = IPP_PSTATE_IDLE;
- printer->state_reasons = IPPEVE_PREASON_NONE;
- printer->state_time = printer->start_time;
- printer->jobs = cupsArrayNew((cups_array_func_t)compare_jobs, NULL);
- printer->next_job_id = 1;
+ printer->ipv4 = -1;
+ printer->ipv6 = -1;
+ printer->name = strdup(name);
+ printer->dnssd_name = strdup(name);
+ printer->dnssd_subtypes = subtypes ? strdup(subtypes) : NULL;
+ printer->command = command ? strdup(command) : NULL;
+ printer->device_uri = device_uri ? strdup(device_uri) : NULL;
+ printer->output_format = output_format ? strdup(output_format) : NULL;
+ printer->directory = strdup(directory);
+ printer->icons[0] = icons ? strdup(icons) : NULL;
+ printer->strings = strings ? strdup(strings) : NULL;
+ printer->port = serverport;
+ printer->start_time = time(NULL);
+ printer->config_time = printer->start_time;
+ printer->state = IPP_PSTATE_IDLE;
+ printer->state_reasons = IPPEVE_PREASON_NONE;
+ printer->state_time = printer->start_time;
+ printer->jobs = cupsArrayNew((cups_array_func_t)compare_jobs, NULL);
+ printer->next_job_id = 1;
+
+ if (printer->icons[0])
+ {
+ /*
+ * Extract up to 3 icons...
+ */
+
+ for (i = 1, iconsptr = strchr(icons, ','); iconsptr && i < 3; i ++, iconsptr = strchr(iconsptr, ','))
+ {
+ *iconsptr++ = '\0';
+ printer->icons[i] = iconsptr;
+ }
+
+ if (iconsptr)
+ *iconsptr = '\0'; /* Strip any icons after the third... */
+
+ while (i < 3)
+ {
+ printer->icons[i] = printer->icons[i - 1];
+ i ++;
+ }
+ }
if (servername)
{
}
else
{
- char temp[1024]; /* Temporary string */
+ char temp[1024], /* Temporary string */
+ *tempptr; /* Pointer into temporary string */
+
+#ifdef HAVE_AVAHI
+ const char *avahi_name = avahi_client_get_host_name_fqdn(DNSSDClient);
+
+ if (avahi_name)
+ strlcpy(temp, avahi_name, sizeof(temp));
+ else
+#endif /* HAVE_AVAHI */
- printer->hostname = strdup(httpGetHostname(NULL, temp, sizeof(temp)));
+ if ((tempptr = strstr(httpGetHostname(NULL, temp, sizeof(temp)), ".lan")) != NULL && !tempptr[5])
+ strlcpy(tempptr, ".local", sizeof(temp) - (size_t)(tempptr - temp));
+
+ printer->hostname = strdup(temp);
}
_cupsRWInit(&(printer->rwlock));
* Create the listener sockets...
*/
- if ((printer->ipv4 = create_listener(servername, printer->port, AF_INET)) < 0)
+ if (printer->port)
{
- perror("Unable to create IPv4 listener");
- goto bad_printer;
+ if ((printer->ipv4 = create_listener(servername, printer->port, AF_INET)) < 0)
+ {
+ perror("Unable to create IPv4 listener");
+ goto bad_printer;
+ }
+ }
+ else
+ {
+#ifdef _WIN32
+ /*
+ * Windows is almost always used as a single user system, so use a default
+ * port number of 8631.
+ */
+
+ serverport = 8631;
+
+#else
+ /*
+ * Use 8000 + UID mod 1000 for the default port number...
+ */
+
+ serverport = 8000 + ((int)getuid() % 1000);
+#endif /* _WIN32 */
+
+ while (serverport < 10000)
+ {
+ if ((printer->ipv4 = create_listener(servername, serverport, AF_INET)) >= 0)
+ break;
+
+ serverport ++;
+ }
+
+ if (serverport < 10000)
+ {
+ _cupsLangPrintf(stderr, _("Listening on port %d."), serverport);
+ printer->port = serverport;
+ }
+ else
+ {
+ perror("Unable to create IPv4 listener");
+ goto bad_printer;
+ }
}
if ((printer->ipv6 = create_listener(servername, printer->port, AF_INET6)) < 0)
}
/*
- * Prepare URI values for the printer attributes...
+ * Prepare values for the printer attributes...
*/
- httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL, printer->hostname, printer->port, "/ipp/print");
- printer->uri = strdup(uri);
- printer->urilen = strlen(uri);
-
-#ifdef HAVE_SSL
- httpAssembleURI(HTTP_URI_CODING_ALL, securi, sizeof(securi), "ipps", NULL, printer->hostname, printer->port, "/ipp/print");
-#endif /* HAVE_SSL */
-
- httpAssembleURI(HTTP_URI_CODING_ALL, icons, sizeof(icons), WEB_SCHEME, NULL, printer->hostname, printer->port, "/icon.png");
- httpAssembleURI(HTTP_URI_CODING_ALL, adminurl, sizeof(adminurl), WEB_SCHEME, NULL, printer->hostname, printer->port, "/");
- httpAssembleURI(HTTP_URI_CODING_ALL, supplyurl, sizeof(supplyurl), WEB_SCHEME, NULL, printer->hostname, printer->port, "/supplies");
- httpAssembleUUID(printer->hostname, serverport, name, 0, uuid, sizeof(uuid));
+ snprintf(uuid_data, sizeof(uuid_data), "_IPPEVEPRINTER_:%s:%d:%s", printer->hostname, printer->port, printer->name);
+ cupsHashData("sha2-256", (unsigned char *)uuid_data, strlen(uuid_data), sha256, sizeof(sha256));
+ snprintf(uuid, sizeof(uuid), "urn:uuid:%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", sha256[0], sha256[1], sha256[3], sha256[4], sha256[5], sha256[6], (sha256[10] & 15) | 0x30, sha256[11], (sha256[15] & 0x3f) | 0x40, sha256[16], sha256[20], sha256[21], sha256[25], sha256[26], sha256[30], sha256[31]);
if (Verbosity)
{
- fprintf(stderr, "printer-more-info=\"%s\"\n", adminurl);
- fprintf(stderr, "printer-supply-info-uri=\"%s\"\n", supplyurl);
#ifdef HAVE_SSL
- fprintf(stderr, "printer-uri=\"%s\",\"%s\"\n", uri, securi);
+ fprintf(stderr, "printer-uri-supported=\"ipp://%s:%d/ipp/print\",\"ipps://%s:%d/ipp/print\"\n", printer->hostname, printer->port, printer->hostname, printer->port);
#else
- fprintf(stderr, "printer-uri=\"%s\"\n", uri);
+ fprintf(stderr, "printer-uri-supported=\"ipp://%s:%d/ipp/print\"\n", printer->hostname, printer->port);
#endif /* HAVE_SSL */
+ fprintf(stderr, "printer-uuid=\"%s\"\n", uuid);
}
/*
/* printer-geo-location */
ippAddOutOfBand(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_UNKNOWN, "printer-geo-location");
- /* printer-icons */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-icons", NULL, icons);
-
/* printer-is-accepting-jobs */
ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "printer-is-accepting-jobs", 1);
/* printer-location */
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-location", NULL, location);
- /* printer-more-info */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-more-info", NULL, adminurl);
-
/* printer-name */
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_NAME, "printer-name", NULL, name);
/* printer-organizational-unit */
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-organizational-unit", NULL, "");
- /* printer-supply-info-uri */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-supply-info-uri", NULL, supplyurl);
-
- /* printer-uri-supported */
-#ifdef HAVE_SSL
- uris[0] = uri;
- uris[1] = securi;
-
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uri-supported", 2, NULL, (const char **)uris);
-
-#else
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uri-supported", NULL, uri);
-#endif /* HAVE_SSL */
+ /* printer-strings-languages-supported */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_LANGUAGE, "printer-strings-languages-supported", NULL, "en");
/* printer-uuid */
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uuid", NULL, uuid);
/* uri-authentication-supported */
#ifdef HAVE_SSL
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "uri-authentication-supported", 2, NULL, uri_authentication_supported);
+ if (PAMService)
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "uri-authentication-supported", 2, NULL, uri_authentication_basic);
+ else
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "uri-authentication-supported", 2, NULL, uri_authentication_supported);
#else
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "uri-authentication-supported", NULL, "none");
+ if (PAMService)
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "uri-authentication-supported", NULL, "basic");
+ else
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "uri-authentication-supported", NULL, "none");
#endif /* HAVE_SSL */
/* uri-security-supported */
debug_attributes("Printer", printer->attrs, 0);
/*
- * Register the printer with Bonjour...
+ * Register the printer with DNS-SD...
*/
- if (!register_printer(printer, subtypes))
+ if (!register_printer(printer))
goto bad_printer;
/*
#elif defined(HAVE_AVAHI)
avahi_threaded_poll_lock(DNSSDMaster);
- if (printer->printer_ref)
- avahi_entry_group_free(printer->printer_ref);
- if (printer->ipp_ref)
- avahi_entry_group_free(printer->ipp_ref);
- if (printer->ipps_ref)
- avahi_entry_group_free(printer->ipps_ref);
- if (printer->http_ref)
- avahi_entry_group_free(printer->http_ref);
+ if (printer->dnssd_ref)
+ avahi_entry_group_free(printer->dnssd_ref);
avahi_threaded_poll_unlock(DNSSDMaster);
#endif /* HAVE_DNSSD */
free(printer->dnssd_name);
if (printer->name)
free(printer->name);
- if (printer->icon)
- free(printer->icon);
+ if (printer->icons[0])
+ free(printer->icons[0]);
+ if (printer->strings)
+ free(printer->strings);
if (printer->command)
free(printer->command);
if (printer->device_uri)
free(printer->directory);
if (printer->hostname)
free(printer->hostname);
- if (printer->uri)
- free(printer->uri);
ippDelete(printer->attrs);
cupsArrayDelete(printer->jobs);
#ifdef HAVE_DNSSD
/*
- * 'dnssd_callback()' - Handle Bonjour registration events.
+ * 'dnssd_callback()' - Handle DNS-SD registration events.
*/
static void DNSSD_API
const char *name, /* I - Service name */
const char *regtype, /* I - Service type */
const char *domain, /* I - Domain for service */
- ippeve_printer_t *printer) /* I - Printer */
+ ippeve_printer_t *printer) /* I - Printer */
{
(void)sdRef;
(void)flags;
(void)domain;
+ (void)name;
- if (errorCode)
+ if (errorCode == kDNSServiceErr_NameConflict)
{
- fprintf(stderr, "DNSServiceRegister for %s failed with error %d.\n", regtype, (int)errorCode);
- return;
+ fputs("DNS-SD service name collision detected.\n", stderr);
+ printer->dnssd_collision = 1;
}
- else if (strcasecmp(name, printer->dnssd_name))
+ else if (errorCode)
{
- if (Verbosity)
- fprintf(stderr, "Now using DNS-SD service name \"%s\".\n", name);
-
- /* No lock needed since only the main thread accesses/changes this */
- free(printer->dnssd_name);
- printer->dnssd_name = strdup(name);
+ fprintf(stderr, "DNSServiceRegister for %s failed with error %d.\n", regtype, (int)errorCode);
+ return;
}
}
#elif defined(HAVE_AVAHI)
/*
- * 'dnssd_callback()' - Handle Bonjour registration events.
+ * 'dnssd_callback()' - Handle DNS-SD registration events.
*/
static void
AvahiEntryGroupState state, /* I - Registration state */
void *context) /* I - Printer */
{
+ ippeve_printer_t *printer = (ippeve_printer_t *)context;
+ /* Printer */
+
+
(void)srv;
- (void)state;
- (void)context;
+
+ if (state == AVAHI_ENTRY_GROUP_COLLISION)
+ {
+ fputs("DNS-SD service name collision detected.\n", stderr);
+ printer->dnssd_collision = 1;
+ }
}
dnssd_client_cb(
AvahiClient *c, /* I - Client */
AvahiClientState state, /* I - Current state */
- void *userdata) /* I - User data (unused) */
+ void *userdata) /* I - User data (printer) */
{
- (void)userdata;
-
if (!c)
return;
#ifdef HAVE_DNSSD
if (DNSServiceCreateConnection(&DNSSDMaster) != kDNSServiceErr_NoError)
{
- fputs("Error: Unable to initialize Bonjour.\n", stderr);
+ fputs("Error: Unable to initialize DNS-SD.\n", stderr);
exit(1);
}
if ((DNSSDMaster = avahi_threaded_poll_new()) == NULL)
{
- fputs("Error: Unable to initialize Bonjour.\n", stderr);
+ fputs("Error: Unable to initialize DNS-SD.\n", stderr);
exit(1);
}
if ((DNSSDClient = avahi_client_new(avahi_threaded_poll_get(DNSSDMaster), AVAHI_CLIENT_NO_FAIL, dnssd_client_cb, NULL, &error)) == NULL)
{
- fputs("Error: Unable to initialize Bonjour.\n", stderr);
+ fputs("Error: Unable to initialize DNS-SD.\n", stderr);
exit(1);
}
if ((attr = ippFindAttribute(client->request, "job-uri", IPP_TAG_URI)) != NULL)
{
const char *uri = ippGetString(attr, 0, NULL);
+ /* URI value */
+ const char *uriptr = strrchr(uri, '/');
+ /* Pointer to the last slash in the URI */
- if (!strncmp(uri, client->printer->uri, client->printer->urilen) &&
- uri[client->printer->urilen] == '/')
- key.id = atoi(uri + client->printer->urilen + 1);
+ if (uriptr && isdigit(uriptr[1] & 255))
+ key.id = atoi(uriptr + 1);
else
return (NULL);
}
* Do we have a file to print?
*/
- if (httpGetState(client->http) == HTTP_STATE_POST_RECV)
+ if (have_document_data(client))
{
+ flush_document_data(client);
respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Unexpected document data following request.");
goto abort_job;
}
+/*
+ * 'flush_document_data()' - Safely flush remaining document data.
+ */
+
+static void
+flush_document_data(
+ ippeve_client_t *client) /* I - Client */
+{
+ char buffer[8192]; /* Read buffer */
+
+
+ if (httpGetState(client->http) == HTTP_STATE_POST_RECV)
+ {
+ while (httpRead2(client->http, buffer, sizeof(buffer)) > 0);
+ }
+}
+
+
+/*
+ * 'have_document_data()' - Determine whether we have more document data.
+ */
+
+static int /* O - 1 if data is present, 0 otherwise */
+have_document_data(
+ ippeve_client_t *client) /* I - Client */
+{
+ char temp; /* Data */
+
+
+ if (httpGetState(client->http) != HTTP_STATE_POST_RECV)
+ return (0);
+ else
+ return (httpPeek(client->http, &temp, 1) > 0);
+}
+
+
/*
* 'html_escape()' - Write a HTML-safe string.
*/
if ((size_t)(width + 2) > sizeof(temp))
break;
- sprintf(temp, tformat, va_arg(ap, double));
+ snprintf(temp, sizeof(temp), tformat, va_arg(ap, double));
httpWrite2(client->http, temp, strlen(temp));
break;
# ifdef HAVE_LONG_LONG
if (size == 'L')
- sprintf(temp, tformat, va_arg(ap, long long));
+ snprintf(temp, sizeof(temp), tformat, va_arg(ap, long long));
else
# endif /* HAVE_LONG_LONG */
if (size == 'l')
- sprintf(temp, tformat, va_arg(ap, long));
+ snprintf(temp, sizeof(temp), tformat, va_arg(ap, long));
else
- sprintf(temp, tformat, va_arg(ap, int));
+ snprintf(temp, sizeof(temp), tformat, va_arg(ap, int));
httpWrite2(client->http, temp, strlen(temp));
break;
if ((size_t)(width + 2) > sizeof(temp))
break;
- sprintf(temp, tformat, va_arg(ap, void *));
+ snprintf(temp, sizeof(temp), tformat, va_arg(ap, void *));
httpWrite2(client->http, temp, strlen(temp));
break;
}
+/*
+ * 'ipp_cancel_my_jobs()' - Cancel all jobs.
+ *
+ * Note: Since ippeveprinter doesn't do spooling, this really just cancels the
+ * current job.
+ */
+
+static void
+ipp_cancel_my_jobs(
+ ippeve_client_t *client) /* I - Client */
+{
+ ippeve_job_t *job; /* Job information */
+
+
+ _cupsRWLockWrite(&client->printer->rwlock);
+
+ if ((job = client->printer->active_job) != NULL)
+ {
+ /*
+ * See if the job is already completed, canceled, or aborted; if so,
+ * we can't cancel...
+ */
+
+ if (job->state < IPP_JSTATE_CANCELED)
+ {
+ /*
+ * Cancel the job...
+ */
+
+ if (job->state == IPP_JSTATE_PROCESSING || (job->state == IPP_JSTATE_HELD && job->fd >= 0))
+ {
+ job->cancel = 1;
+ }
+ else
+ {
+ job->state = IPP_JSTATE_CANCELED;
+ job->completed = time(NULL);
+ }
+ }
+ }
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+
+ _cupsRWUnlock(&client->printer->rwlock);
+}
+
+
/*
* 'ipp_close_job()' - Close an open job.
*/
/*
- * Validate print job attributes...
+ * Do we have a file to print?
*/
- if (!valid_job_attributes(client))
+ if (have_document_data(client))
{
- httpFlush(client->http);
+ flush_document_data(client);
+ respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
+ "Unexpected document data following request.");
return;
}
/*
- * Do we have a file to print?
+ * Validate print job attributes...
*/
- if (httpGetState(client->http) == HTTP_STATE_POST_RECV)
- {
- respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
- "Unexpected document data following request.");
+ if (!valid_job_attributes(client))
return;
- }
/*
* Create the job...
if (!ra || cupsArrayFind(ra, "printer-current-time"))
ippAddDate(client->response, IPP_TAG_PRINTER, "printer-current-time", ippTimeToDate(time(NULL)));
+ if (!ra || cupsArrayFind(ra, "printer-icons"))
+ {
+ char uris[3][1024]; /* Buffers for URIs */
+ const char *values[3]; /* Values for attribute */
+
+ httpAssembleURI(HTTP_URI_CODING_ALL, uris[0], sizeof(uris[0]), WEB_SCHEME, NULL, client->host_field, client->host_port, "/icon-sm.png");
+ httpAssembleURI(HTTP_URI_CODING_ALL, uris[1], sizeof(uris[1]), WEB_SCHEME, NULL, client->host_field, client->host_port, "/icon.png");
+ httpAssembleURI(HTTP_URI_CODING_ALL, uris[2], sizeof(uris[2]), WEB_SCHEME, NULL, client->host_field, client->host_port, "/icon-lg.png");
+
+ values[0] = uris[0];
+ values[1] = uris[1];
+ values[2] = uris[2];
+
+ ippAddStrings(client->response, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-icons", 3, NULL, values);
+ }
+
+ if (!ra || cupsArrayFind(ra, "printer-more-info"))
+ {
+ char uri[1024]; /* URI value */
+
+ httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), WEB_SCHEME, NULL, client->host_field, client->host_port, "/");
+ ippAddString(client->response, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-more-info", NULL, uri);
+ }
if (!ra || cupsArrayFind(ra, "printer-state"))
ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-state", (int)printer->state);
}
}
+ if (!ra || cupsArrayFind(ra, "printer-strings-uri"))
+ {
+ char uri[1024]; /* URI value */
+
+ httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), WEB_SCHEME, NULL, client->host_field, client->host_port, "/en.strings");
+ ippAddString(client->response, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-strings-uri", NULL, uri);
+ }
+
+ if (!ra || cupsArrayFind(ra, "printer-supply-info-uri"))
+ {
+ char uri[1024]; /* URI value */
+
+ httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), WEB_SCHEME, NULL, client->host_field, client->host_port, "/supplies");
+ ippAddString(client->response, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-supply-info-uri", NULL, uri);
+ }
+
if (!ra || cupsArrayFind(ra, "printer-up-time"))
ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "printer-up-time", (int)(time(NULL) - printer->start_time));
+ if (!ra || cupsArrayFind(ra, "printer-uri-supported"))
+ {
+ char uris[2][1024]; /* Buffers for URIs */
+ const char *values[2]; /* Values for attribute */
+ int num_values = 0; /* Number of values */
+
+ httpAssembleURI(HTTP_URI_CODING_ALL, uris[0], sizeof(uris[0]), "ipp", NULL, client->host_field, client->host_port, "/ipp/print");
+ values[num_values ++] = uris[0];
+
+#ifdef HAVE_SSL
+ httpAssembleURI(HTTP_URI_CODING_ALL, uris[1], sizeof(uris[1]), "ipps", NULL, client->host_field, client->host_port, "/ipp/print");
+ values[num_values ++] = uris[1];
+#endif /* HAVE_SSL */
+
+ ippAddStrings(client->response, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uri-supported", num_values, NULL, values);
+ }
+
if (!ra || cupsArrayFind(ra, "queued-job-count"))
ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "queued-job-count", printer->active_job && printer->active_job->state < IPP_JSTATE_CANCELED);
if (!actions || ippContainsString(actions, "sound"))
{
+#ifdef __APPLE__
+ pid_t pid; /* Process ID for "afplay" utility */
+ static const char * const afplay[3] =
+ { /* Arguments for "afplay" utility */
+ "/usr/bin/afplay",
+ "/System/Library/Sounds/Ping.aiff",
+ NULL
+ };
+
+ posix_spawn(&pid, afplay[0], NULL, NULL, (char **)afplay, NULL);
+
+#else
putchar(0x07);
fflush(stdout);
+#endif /* __APPLE__ */
}
if (ippContainsString(actions, "display"))
if (!valid_job_attributes(client))
{
- httpFlush(client->http);
+ flush_document_data(client);
return;
}
* Do we have a file to print?
*/
- if (httpGetState(client->http) == HTTP_STATE_POST_SEND)
+ if (!have_document_data(client))
{
respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "No file in request.");
return;
if (!valid_job_attributes(client))
{
- httpFlush(client->http);
+ flush_document_data(client);
return;
}
{
ippeve_job_t *job; /* Job information */
ipp_attribute_t *attr; /* Current attribute */
+ int have_data; /* Have document data? */
/*
if ((job = find_job(client)) == NULL)
{
+ flush_document_data(client);
respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
- httpFlush(client->http);
return;
}
/*
* See if we already have a document for this job or the job has already
- * in a non-pending state...
+ * in a terminating state...
*/
- if (job->state > IPP_JSTATE_HELD)
+ have_data = have_document_data(client);
+
+ if ((job->filename || job->fd >= 0) && have_data)
{
- respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job is not in a pending state.");
- httpFlush(client->http);
+ flush_document_data(client);
+ respond_ipp(client, IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED, "Multiple document jobs are not supported.");
return;
}
- else if (job->filename || job->fd >= 0)
+ else if (job->state > IPP_JSTATE_HELD && have_data)
{
- respond_ipp(client, IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED, "Multiple document jobs are not supported.");
- httpFlush(client->http);
+ flush_document_data(client);
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job is not in a pending state.");
return;
}
if ((attr = ippFindAttribute(client->request, "last-document", IPP_TAG_ZERO)) == NULL)
{
+ flush_document_data(client);
respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Missing required last-document attribute.");
- httpFlush(client->http);
return;
}
else if (ippGetGroupTag(attr) != IPP_TAG_OPERATION)
{
+ flush_document_data(client);
respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "The last-document attribute is not in the operation group.");
- httpFlush(client->http);
return;
}
- else if (ippGetValueTag(attr) != IPP_TAG_BOOLEAN || ippGetCount(attr) != 1 || !ippGetBoolean(attr, 0))
+ else if (ippGetValueTag(attr) != IPP_TAG_BOOLEAN || ippGetCount(attr) != 1)
{
+ flush_document_data(client);
respond_unsupported(client, attr);
- httpFlush(client->http);
return;
}
* Validate document attributes...
*/
- if (!valid_doc_attributes(client))
+ if (have_data && !valid_doc_attributes(client))
{
- httpFlush(client->http);
+ flush_document_data(client);
return;
}
+ if (!have_data && !job->filename)
+ job->state = IPP_JSTATE_ABORTED;
+
/*
* Then finish getting the document data and process things...
*/
_cupsRWUnlock(&(client->printer->rwlock));
- finish_document_data(client, job);
+ if (have_data)
+ finish_document_data(client, job);
}
if ((job = find_job(client)) == NULL)
{
respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
- httpFlush(client->http);
return;
}
/*
* See if we already have a document for this job or the job has already
- * in a non-pending state...
+ * in a non-terminating state...
*/
- if (job->state > IPP_JSTATE_HELD)
+ if (job->filename || job->fd >= 0)
{
- respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job is not in a pending state.");
- httpFlush(client->http);
+ respond_ipp(client, IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED, "Multiple document jobs are not supported.");
return;
}
- else if (job->filename || job->fd >= 0)
+ else if (job->state > IPP_JSTATE_HELD)
{
- respond_ipp(client, IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED, "Multiple document jobs are not supported.");
- httpFlush(client->http);
+ flush_document_data(client);
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job is not in a pending state.");
return;
}
if ((attr = ippFindAttribute(client->request, "last-document", IPP_TAG_ZERO)) == NULL)
{
respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Missing required last-document attribute.");
- httpFlush(client->http);
return;
}
else if (ippGetGroupTag(attr) != IPP_TAG_OPERATION)
{
respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "The last-document attribute is not in the operation group.");
- httpFlush(client->http);
return;
}
- else if (ippGetValueTag(attr) != IPP_TAG_BOOLEAN || ippGetCount(attr) != 1 || !ippGetBoolean(attr, 0))
+ else if (ippGetValueTag(attr) != IPP_TAG_BOOLEAN || ippGetCount(attr) != 1)
{
respond_unsupported(client, attr);
- httpFlush(client->http);
return;
}
if (!valid_doc_attributes(client))
{
- httpFlush(client->http);
+ flush_document_data(client);
return;
}
"oe_photo-l_3.5x5in", /* Photo L */
"na_index-4x6_4x6in", /* Photo 4x6 */
"iso_a6_105x148mm", /* A6 */
- "na_5x7_5x7in" /* Photo 5x7 aka 2L */
+ "na_5x7_5x7in", /* Photo 5x7 aka 2L */
"iso_a5_148x210mm", /* A5 */
};
static const char * const media_ready[] =
if (cupsArrayFind(docformats, (void *)"application/pdf"))
ippAddInteger(attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "document-password-supported", 1023);
+ /* finishing-template-supported */
+ ippAddString(attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "finishing-template-supported", NULL, "none");
+
+ /* finishings-col-database */
+ col = ippNew();
+ ippAddString(col, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "finishing-template", NULL, "none");
+ ippAddCollection(attrs, IPP_TAG_PRINTER, "finishings-col-database", col);
+ ippDelete(col);
+
+ /* finishings-col-default */
+ col = ippNew();
+ ippAddString(col, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "finishing-template", NULL, "none");
+ ippAddCollection(attrs, IPP_TAG_PRINTER, "finishings-col-default", col);
+ ippDelete(col);
+
+ /* finishings-col-ready */
+ col = ippNew();
+ ippAddString(col, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "finishing-template", NULL, "none");
+ ippAddCollection(attrs, IPP_TAG_PRINTER, "finishings-col-ready", col);
+ ippDelete(col);
+
+ /* finishings-col-supported */
+ ippAddString(attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "finishings-col-supported", NULL, "finishing-template");
+
/* finishings-default */
ippAddInteger(attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "finishings-default", IPP_FINISHINGS_NONE);
+ /* finishings-ready */
+ ippAddInteger(attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "finishings-ready", IPP_FINISHINGS_NONE);
+
/* finishings-supported */
ippAddInteger(attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "finishings-supported", IPP_FINISHINGS_NONE);
}
/* finishings-col-supported */
- ippAddString(attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "finishings-col-supported", NULL, "finishing-template");
+ ippAddString(attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "finishings-col-supported", NULL, "finishing-template");
/* finishings-default */
ippAddInteger(attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "finishings-default", IPP_FINISHINGS_NONE);
#endif /* !CUPS_LITE */
+#if HAVE_LIBPAM
+/*
+ * 'pam_func()' - PAM conversation function.
+ */
+
+static int /* O - Success or failure */
+pam_func(
+ int num_msg, /* I - Number of messages */
+ const struct pam_message **msg, /* I - Messages */
+ struct pam_response **resp, /* O - Responses */
+ void *appdata_ptr)
+ /* I - Pointer to connection */
+{
+ int i; /* Looping var */
+ struct pam_response *replies; /* Replies */
+ ippeve_authdata_t *data; /* Pointer to auth data */
+
+
+ /*
+ * Allocate memory for the responses...
+ */
+
+ if ((replies = malloc(sizeof(struct pam_response) * (size_t)num_msg)) == NULL)
+ return (PAM_CONV_ERR);
+
+ /*
+ * Answer all of the messages...
+ */
+
+ data = (ippeve_authdata_t *)appdata_ptr;
+
+ for (i = 0; i < num_msg; i ++)
+ {
+ switch (msg[i]->msg_style)
+ {
+ case PAM_PROMPT_ECHO_ON:
+ replies[i].resp_retcode = PAM_SUCCESS;
+ replies[i].resp = strdup(data->username);
+ break;
+
+ case PAM_PROMPT_ECHO_OFF:
+ replies[i].resp_retcode = PAM_SUCCESS;
+ replies[i].resp = strdup(data->password);
+ break;
+
+ case PAM_TEXT_INFO:
+ replies[i].resp_retcode = PAM_SUCCESS;
+ replies[i].resp = NULL;
+ break;
+
+ case PAM_ERROR_MSG:
+ replies[i].resp_retcode = PAM_SUCCESS;
+ replies[i].resp = NULL;
+ break;
+
+ default:
+ free(replies);
+ return (PAM_CONV_ERR);
+ }
+ }
+
+ /*
+ * Return the responses back to PAM...
+ */
+
+ *resp = replies;
+
+ return (PAM_SUCCESS);
+}
+#endif /* HAVE_LIBPAM */
+
+
/*
* 'parse_options()' - Parse URL options into CUPS options.
*
ipp_state_t ipp_state; /* State of IPP transfer */
char scheme[32], /* Method/scheme */
userpass[128], /* Username:password */
- hostname[HTTP_MAX_HOST];
+ hostname[HTTP_MAX_HOST],
/* Hostname */
+ *ptr; /* Pointer into value */
int port; /* Port number */
static const char * const http_states[] =
{ /* Strings for logging HTTP method */
* Clear state variables...
*/
+ client->username[0] = '\0';
+
ippDelete(client->request);
ippDelete(client->response);
return (0);
}
+ /*
+ * Validate the host header...
+ */
+
if (!httpGetField(client->http, HTTP_FIELD_HOST)[0] &&
httpGetVersion(client->http) >= HTTP_VERSION_1_1)
{
* HTTP/1.1 and higher require the "Host:" field...
*/
+ fprintf(stderr, "%s Missing Host: header.\n", client->hostname);
+ respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
+ return (0);
+ }
+
+ strlcpy(client->host_field, httpGetField(client->http, HTTP_FIELD_HOST), sizeof(client->host_field));
+ if ((ptr = strrchr(client->host_field, ':')) != NULL)
+ {
+ /*
+ * Grab port number from Host: header...
+ */
+
+ *ptr++ = '\0';
+ client->host_port = atoi(ptr);
+ }
+ else
+ {
+ /*
+ * Use the default port number...
+ */
+
+ client->host_port = client->printer->port;
+ }
+
+ ptr = strrchr(client->host_field, '.');
+
+ if (!isdigit(client->host_field[0] & 255) && client->host_field[0] != '[' && strcmp(client->host_field, client->printer->hostname) && strcmp(client->host_field, "localhost") &&
+ (!ptr || (strcmp(ptr, ".local") && strcmp(ptr, ".local."))))
+ {
+ fprintf(stderr, "%s Bad Host: header '%s'.\n", client->hostname, client->host_field);
respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
return (0);
}
* Handle HTTP Upgrade...
*/
- if (!strcasecmp(httpGetField(client->http, HTTP_FIELD_CONNECTION),
- "Upgrade"))
+ if (!strcasecmp(httpGetField(client->http, HTTP_FIELD_CONNECTION), "Upgrade"))
{
#ifdef HAVE_SSL
if (strstr(httpGetField(client->http, HTTP_FIELD_UPGRADE), "TLS/") != NULL && !httpIsEncrypted(client->http))
return (0);
}
- /*
- * Handle HTTP Expect...
- */
-
- if (httpGetExpect(client->http) &&
- (client->operation == HTTP_STATE_POST ||
- client->operation == HTTP_STATE_PUT))
- {
- if (httpGetExpect(client->http) == HTTP_STATUS_CONTINUE)
- {
- /*
- * Send 100-continue header...
- */
-
- if (!respond_http(client, HTTP_STATUS_CONTINUE, NULL, NULL, 0))
- return (0);
- }
- else
- {
- /*
- * Send 417-expectation-failed header...
- */
-
- if (!respond_http(client, HTTP_STATUS_EXPECTATION_FAILED, NULL, NULL, 0))
- return (0);
- }
- }
-
/*
* Handle new transfers...
*/
return (respond_http(client, HTTP_STATUS_OK, NULL, NULL, 0));
case HTTP_STATE_HEAD :
- if (!strcmp(client->uri, "/icon.png"))
+ if (!strcmp(client->uri, "/en.strings"))
+ return (respond_http(client, HTTP_STATUS_OK, NULL, "text/strings", 0));
+ else if (!strcmp(client->uri, "/icon.png") || !strcmp(client->uri, "/icon-lg.png") || !strcmp(client->uri, "/icon-sm.png"))
return (respond_http(client, HTTP_STATUS_OK, NULL, "image/png", 0));
else if (!strcmp(client->uri, "/") || !strcmp(client->uri, "/media") || !strcmp(client->uri, "/supplies"))
return (respond_http(client, HTTP_STATUS_OK, NULL, "text/html", 0));
return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
case HTTP_STATE_GET :
- if (!strcmp(client->uri, "/icon.png"))
+ if (!strcmp(client->uri, "/en.strings"))
{
/*
- * Send PNG icon file.
+ * Send strings file.
*/
- if (client->printer->icon)
+ if (client->printer->strings)
{
int fd; /* Icon file */
struct stat fileinfo; /* Icon file information */
char buffer[4096]; /* Copy buffer */
ssize_t bytes; /* Bytes */
- fprintf(stderr, "Icon file is \"%s\".\n", client->printer->icon);
+ if (!stat(client->printer->strings, &fileinfo) && (fd = open(client->printer->strings, O_RDONLY)) >= 0)
+ {
+ if (!respond_http(client, HTTP_STATUS_OK, NULL, "text/strings", (size_t)fileinfo.st_size))
+ {
+ close(fd);
+ return (0);
+ }
+
+ while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
+ httpWrite2(client->http, buffer, (size_t)bytes);
+
+ httpFlushWrite(client->http);
+
+ close(fd);
+ }
+ else
+ return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
+ }
+ else
+ return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
+ }
+ else if (!strcmp(client->uri, "/icon.png"))
+ {
+ /*
+ * Send medium PNG icon file.
+ */
+
+ if (client->printer->icons[1])
+ {
+ int fd; /* Icon file */
+ struct stat fileinfo; /* Icon file information */
+ char buffer[4096]; /* Copy buffer */
+ ssize_t bytes; /* Bytes */
- if (!stat(client->printer->icon, &fileinfo) && (fd = open(client->printer->icon, O_RDONLY)) >= 0)
+ if (!stat(client->printer->icons[1], &fileinfo) && (fd = open(client->printer->icons[1], O_RDONLY)) >= 0)
{
if (!respond_http(client, HTTP_STATUS_OK, NULL, "image/png", (size_t)fileinfo.st_size))
{
httpFlushWrite(client->http);
}
}
- else if (!strcmp(client->uri, "/"))
+ else if (!strcmp(client->uri, "/icon-lg.png"))
{
/*
- * Show web status page...
+ * Send large PNG icon file.
*/
- return (show_status(client));
+ if (client->printer->icons[2])
+ {
+ int fd; /* Icon file */
+ struct stat fileinfo; /* Icon file information */
+ char buffer[4096]; /* Copy buffer */
+ ssize_t bytes; /* Bytes */
+
+ if (!stat(client->printer->icons[2], &fileinfo) && (fd = open(client->printer->icons[2], O_RDONLY)) >= 0)
+ {
+ if (!respond_http(client, HTTP_STATUS_OK, NULL, "image/png", (size_t)fileinfo.st_size))
+ {
+ close(fd);
+ return (0);
+ }
+
+ while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
+ httpWrite2(client->http, buffer, (size_t)bytes);
+
+ httpFlushWrite(client->http);
+
+ close(fd);
+ }
+ else
+ return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
+ }
+ else
+ {
+ fputs("Icon file is internal printer-lg.png.\n", stderr);
+
+ if (!respond_http(client, HTTP_STATUS_OK, NULL, "image/png", sizeof(printer_lg_png)))
+ return (0);
+
+ httpWrite2(client->http, (const char *)printer_lg_png, sizeof(printer_lg_png));
+ httpFlushWrite(client->http);
+ }
}
- else if (!strcmp(client->uri, "/media"))
+ else if (!strcmp(client->uri, "/icon-sm.png"))
{
/*
- * Show web media page...
+ * Send small PNG icon file.
*/
- return (show_media(client));
+ if (client->printer->icons[0])
+ {
+ int fd; /* Icon file */
+ struct stat fileinfo; /* Icon file information */
+ char buffer[4096]; /* Copy buffer */
+ ssize_t bytes; /* Bytes */
+
+ if (!stat(client->printer->icons[0], &fileinfo) && (fd = open(client->printer->icons[0], O_RDONLY)) >= 0)
+ {
+ if (!respond_http(client, HTTP_STATUS_OK, NULL, "image/png", (size_t)fileinfo.st_size))
+ {
+ close(fd);
+ return (0);
+ }
+
+ while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
+ httpWrite2(client->http, buffer, (size_t)bytes);
+
+ httpFlushWrite(client->http);
+
+ close(fd);
+ }
+ else
+ return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
+ }
+ else
+ {
+ fputs("Icon file is internal printer-sm.png.\n", stderr);
+
+ if (!respond_http(client, HTTP_STATUS_OK, NULL, "image/png", sizeof(printer_sm_png)))
+ return (0);
+
+ httpWrite2(client->http, (const char *)printer_sm_png, sizeof(printer_sm_png));
+ httpFlushWrite(client->http);
+ }
}
- else if (!strcmp(client->uri, "/supplies"))
+ else
{
/*
- * Show web supplies page...
+ * Authenticate if needed...
*/
- return (show_supplies(client));
+ if ((http_status = authenticate_request(client)) != HTTP_STATUS_CONTINUE)
+ {
+ return (respond_http(client, http_status, NULL, NULL, 0));
+ }
+
+ if (!strcmp(client->uri, "/"))
+ {
+ /*
+ * Show web status page...
+ */
+
+ return (show_status(client));
+ }
+ else if (!strcmp(client->uri, "/media"))
+ {
+ /*
+ * Show web media page...
+ */
+
+ return (show_media(client));
+ }
+ else if (!strcmp(client->uri, "/supplies"))
+ {
+ /*
+ * Show web supplies page...
+ */
+
+ return (show_supplies(client));
+ }
+ else
+ return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
}
- else
- return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
break;
case HTTP_STATE_POST :
ipp_attribute_t *uri; /* Printer URI attribute */
int major, minor; /* Version number */
const char *name; /* Name of attribute */
+ http_status_t status; /* Authentication status */
debug_attributes("Request", client->request, 1);
else if ((!strcmp(name, "job-uri") &&
strncmp(resource, "/ipp/print/", 11)) ||
(!strcmp(name, "printer-uri") &&
- strcmp(resource, "/ipp/print")))
+ strcmp(resource, "/ipp/print") &&
+ (strcmp(resource, "/") || ippGetOperation(client->request) != IPP_OP_GET_PRINTER_ATTRIBUTES)))
respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "%s %s not found.",
name, ippGetString(uri, 0, NULL));
- else
+ else if (client->operation_id != IPP_OP_GET_PRINTER_ATTRIBUTES && (status = authenticate_request(client)) != HTTP_STATUS_CONTINUE)
+ {
+ flush_document_data(client);
+
+ return (respond_http(client, status, NULL, NULL, 0));
+ }
+ else
{
+ /*
+ * Handle HTTP Expect...
+ */
+
+ if (httpGetExpect(client->http))
+ {
+ if (httpGetExpect(client->http) == HTTP_STATUS_CONTINUE)
+ {
+ /*
+ * Send 100-continue header...
+ */
+
+ if (!respond_http(client, HTTP_STATUS_CONTINUE, NULL, NULL, 0))
+ return (0);
+ }
+ else
+ {
+ /*
+ * Send 417-expectation-failed header...
+ */
+
+ if (!respond_http(client, HTTP_STATUS_EXPECTATION_FAILED, NULL, NULL, 0))
+ return (0);
+
+ flush_document_data(client);
+ return (1);
+ }
+ }
+
/*
* Try processing the operation...
*/
- switch (ippGetOperation(client->request))
+ switch (client->operation_id)
{
case IPP_OP_PRINT_JOB :
ipp_print_job(client);
ipp_cancel_job(client);
break;
+ case IPP_OP_CANCEL_MY_JOBS :
+ ipp_cancel_my_jobs(client);
+ break;
+
case IPP_OP_GET_JOB_ATTRIBUTES :
ipp_get_job_attributes(client);
break;
/*
- * 'register_printer()' - Register a printer object via Bonjour.
+ * 'register_printer()' - Register a printer object via DNS-SD.
*/
static int /* O - 1 on success, 0 on error */
register_printer(
- ippeve_printer_t *printer, /* I - Printer */
- const char *subtypes) /* I - Service subtype(s) */
+ ippeve_printer_t *printer) /* I - Printer */
{
#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
- ippeve_txt_t ipp_txt; /* Bonjour IPP TXT record */
+ ippeve_txt_t ipp_txt; /* DNS-SD IPP TXT record */
int i, /* Looping var */
count; /* Number of values */
ipp_attribute_t *color_supported,
*document_format_supported,
*printer_location,
*printer_make_and_model,
- *printer_more_info,
*printer_uuid,
*sides_supported,
*urf_supported; /* Printer attributes */
const char *value; /* Value string */
- char formats[252], /* List of supported formats */
+ char adminurl[247], /* adminurl value */
+ formats[252], /* List of supported formats */
urf[252], /* List of supported URF values */
*ptr; /* Pointer into string */
+
+ if (printer->dnssd_subtypes && !strcmp(printer->dnssd_subtypes, "off"))
+ return (1);
+
color_supported = ippFindAttribute(printer->attrs, "color-supported", IPP_TAG_BOOLEAN);
document_format_supported = ippFindAttribute(printer->attrs, "document-format-supported", IPP_TAG_MIMETYPE);
printer_location = ippFindAttribute(printer->attrs, "printer-location", IPP_TAG_TEXT);
printer_make_and_model = ippFindAttribute(printer->attrs, "printer-make-and-model", IPP_TAG_TEXT);
- printer_more_info = ippFindAttribute(printer->attrs, "printer-more-info", IPP_TAG_URI);
printer_uuid = ippFindAttribute(printer->attrs, "printer-uuid", IPP_TAG_URI);
sides_supported = ippFindAttribute(printer->attrs, "sides-supported", IPP_TAG_KEYWORD);
urf_supported = ippFindAttribute(printer->attrs, "urf-supported", IPP_TAG_KEYWORD);
+ httpAssembleURI(HTTP_URI_CODING_ALL, adminurl, sizeof(adminurl), WEB_SCHEME, NULL, printer->hostname, printer->port, "/");
+
for (i = 0, count = ippGetCount(document_format_supported), ptr = formats; i < count; i ++)
{
value = ippGetString(document_format_supported, i, NULL);
break;
}
-#endif /* HAVE_DNSSD || HAVE_AVAHI */
+ /*
+ * Rename the service as needed...
+ */
+
+ if (printer->dnssd_collision)
+ {
+ char new_dnssd_name[256]; /* New DNS-SD name */
+ const char *uuid = ippGetString(printer_uuid, 0, NULL);
+ /* "printer-uuid" value */
+
+ _cupsRWLockWrite(&printer->rwlock);
+
+ snprintf(new_dnssd_name, sizeof(new_dnssd_name), "%s (%c%c%c%c%c%c)", printer->dnssd_name, toupper(uuid[39]), toupper(uuid[40]), toupper(uuid[41]), toupper(uuid[42]), toupper(uuid[43]), toupper(uuid[44]));
+
+ free(printer->dnssd_name);
+ printer->dnssd_name = strdup(new_dnssd_name);
+
+ fprintf(stderr, "DNS-SD name collision, trying new DNS-SD service name '%s'.\n", printer->dnssd_name);
+
+ _cupsRWUnlock(&printer->rwlock);
+
+ printer->dnssd_collision = 0;
+ }
+#endif /* HAVE_DNSSD || HAVE_AVAHI */
+
#ifdef HAVE_DNSSD
- DNSServiceErrorType error; /* Error from Bonjour */
- char regtype[256]; /* Bonjour service type */
+ DNSServiceErrorType error; /* Error from DNS-SD */
+ char regtype[256]; /* DNS-SD service type */
+ uint32_t ifindex; /* Interface index */
/*
TXTRecordSetValue(&ipp_txt, "rp", 9, "ipp/print");
if ((value = ippGetString(printer_make_and_model, 0, NULL)) != NULL)
TXTRecordSetValue(&ipp_txt, "ty", (uint8_t)strlen(value), value);
- if ((value = ippGetString(printer_more_info, 0, NULL)) != NULL)
- TXTRecordSetValue(&ipp_txt, "adminurl", (uint8_t)strlen(value), value);
+ TXTRecordSetValue(&ipp_txt, "adminurl", (uint8_t)strlen(adminurl), adminurl);
if ((value = ippGetString(printer_location, 0, NULL)) != NULL)
TXTRecordSetValue(&ipp_txt, "note", (uint8_t)strlen(value), value);
TXTRecordSetValue(&ipp_txt, "pdl", (uint8_t)strlen(formats), formats);
* defend our service name but not actually support LPD...
*/
+ ifindex = !strcmp(printer->hostname, "localhost") ? kDNSServiceInterfaceIndexLocalOnly : kDNSServiceInterfaceIndexAny;
+
+ if (printer->printer_ref)
+ DNSServiceRefDeallocate(printer->printer_ref);
+
printer->printer_ref = DNSSDMaster;
- if ((error = DNSServiceRegister(&(printer->printer_ref), kDNSServiceFlagsShareConnection, 0 /* interfaceIndex */, printer->dnssd_name, "_printer._tcp", NULL /* domain */, NULL /* host */, 0 /* port */, 0 /* txtLen */, NULL /* txtRecord */, (DNSServiceRegisterReply)dnssd_callback, printer)) != kDNSServiceErr_NoError)
+ if ((error = DNSServiceRegister(&(printer->printer_ref), kDNSServiceFlagsShareConnection | kDNSServiceFlagsNoAutoRename, ifindex, printer->dnssd_name, "_printer._tcp", NULL /* domain */, NULL /* host */, 0 /* port */, 0 /* txtLen */, NULL /* txtRecord */, (DNSServiceRegisterReply)dnssd_callback, printer)) != kDNSServiceErr_NoError)
{
_cupsLangPrintf(stderr, _("Unable to register \"%s.%s\": %d"), printer->dnssd_name, "_printer._tcp", error);
return (0);
* advertise our IPP printer...
*/
+ if (printer->ipp_ref)
+ DNSServiceRefDeallocate(printer->ipp_ref);
+
printer->ipp_ref = DNSSDMaster;
- if (subtypes && *subtypes)
- snprintf(regtype, sizeof(regtype), "_ipp._tcp,%s", subtypes);
+ if (printer->dnssd_subtypes && *(printer->dnssd_subtypes))
+ snprintf(regtype, sizeof(regtype), "_ipp._tcp,%s", printer->dnssd_subtypes);
else
strlcpy(regtype, "_ipp._tcp", sizeof(regtype));
- if ((error = DNSServiceRegister(&(printer->ipp_ref), kDNSServiceFlagsShareConnection, 0 /* interfaceIndex */, printer->dnssd_name, regtype, NULL /* domain */, NULL /* host */, htons(printer->port), TXTRecordGetLength(&ipp_txt), TXTRecordGetBytesPtr(&ipp_txt), (DNSServiceRegisterReply)dnssd_callback, printer)) != kDNSServiceErr_NoError)
+ if ((error = DNSServiceRegister(&(printer->ipp_ref), kDNSServiceFlagsShareConnection | kDNSServiceFlagsNoAutoRename, ifindex, printer->dnssd_name, regtype, NULL /* domain */, NULL /* host */, htons(printer->port), TXTRecordGetLength(&ipp_txt), TXTRecordGetBytesPtr(&ipp_txt), (DNSServiceRegisterReply)dnssd_callback, printer)) != kDNSServiceErr_NoError)
{
_cupsLangPrintf(stderr, _("Unable to register \"%s.%s\": %d"), printer->dnssd_name, regtype, error);
return (0);
* advertise our IPPS printer...
*/
+ if (printer->ipps_ref)
+ DNSServiceRefDeallocate(printer->ipps_ref);
+
printer->ipps_ref = DNSSDMaster;
- if (subtypes && *subtypes)
- snprintf(regtype, sizeof(regtype), "_ipps._tcp,%s", subtypes);
+ if (printer->dnssd_subtypes && *(printer->dnssd_subtypes))
+ snprintf(regtype, sizeof(regtype), "_ipps._tcp,%s", printer->dnssd_subtypes);
else
strlcpy(regtype, "_ipps._tcp", sizeof(regtype));
- if ((error = DNSServiceRegister(&(printer->ipps_ref), kDNSServiceFlagsShareConnection, 0 /* interfaceIndex */, printer->dnssd_name, regtype, NULL /* domain */, NULL /* host */, htons(printer->port), TXTRecordGetLength(&ipp_txt), TXTRecordGetBytesPtr(&ipp_txt), (DNSServiceRegisterReply)dnssd_callback, printer)) != kDNSServiceErr_NoError)
+ if ((error = DNSServiceRegister(&(printer->ipps_ref), kDNSServiceFlagsShareConnection | kDNSServiceFlagsNoAutoRename, ifindex, printer->dnssd_name, regtype, NULL /* domain */, NULL /* host */, htons(printer->port), TXTRecordGetLength(&ipp_txt), TXTRecordGetBytesPtr(&ipp_txt), (DNSServiceRegisterReply)dnssd_callback, printer)) != kDNSServiceErr_NoError)
{
_cupsLangPrintf(stderr, _("Unable to register \"%s.%s\": %d"), printer->dnssd_name, regtype, error);
return (0);
* real port number to advertise our IPP printer...
*/
+ if (printer->http_ref)
+ DNSServiceRefDeallocate(printer->http_ref);
+
printer->http_ref = DNSSDMaster;
- if ((error = DNSServiceRegister(&(printer->http_ref), kDNSServiceFlagsShareConnection, 0 /* interfaceIndex */, printer->dnssd_name, "_http._tcp,_printer", NULL /* domain */, NULL /* host */, htons(printer->port), 0 /* txtLen */, NULL /* txtRecord */, (DNSServiceRegisterReply)dnssd_callback, printer)) != kDNSServiceErr_NoError)
+ if ((error = DNSServiceRegister(&(printer->http_ref), kDNSServiceFlagsShareConnection | kDNSServiceFlagsNoAutoRename, ifindex, printer->dnssd_name, "_http._tcp,_printer", NULL /* domain */, NULL /* host */, htons(printer->port), 0 /* txtLen */, NULL /* txtRecord */, (DNSServiceRegisterReply)dnssd_callback, printer)) != kDNSServiceErr_NoError)
{
_cupsLangPrintf(stderr, _("Unable to register \"%s.%s\": %d"), printer->dnssd_name, "_http._tcp,_printer", error);
return (0);
ipp_txt = avahi_string_list_add_printf(ipp_txt, "rp=ipp/print");
if ((value = ippGetString(printer_make_and_model, 0, NULL)) != NULL)
ipp_txt = avahi_string_list_add_printf(ipp_txt, "ty=%s", value);
- if ((value = ippGetString(printer_more_info, 0, NULL)) != NULL)
- ipp_txt = avahi_string_list_add_printf(ipp_txt, "adminurl=%s", value);
+ ipp_txt = avahi_string_list_add_printf(ipp_txt, "adminurl=%s", adminurl);
if ((value = ippGetString(printer_location, 0, NULL)) != NULL)
ipp_txt = avahi_string_list_add_printf(ipp_txt, "note=%s", value);
ipp_txt = avahi_string_list_add_printf(ipp_txt, "pdl=%s", formats);
avahi_threaded_poll_lock(DNSSDMaster);
- printer->ipp_ref = avahi_entry_group_new(DNSSDClient, dnssd_callback, NULL);
+ if (printer->dnssd_ref)
+ avahi_entry_group_free(printer->dnssd_ref);
+
+ printer->dnssd_ref = avahi_entry_group_new(DNSSDClient, dnssd_callback, printer);
- avahi_entry_group_add_service_strlst(printer->ipp_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_printer._tcp", NULL, NULL, 0, NULL);
+ avahi_entry_group_add_service_strlst(printer->dnssd_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_printer._tcp", NULL, NULL, 0, NULL);
/*
* Then register the _ipp._tcp (IPP)...
*/
- avahi_entry_group_add_service_strlst(printer->ipp_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_ipp._tcp", NULL, NULL, printer->port, ipp_txt);
- if (subtypes && *subtypes)
+ avahi_entry_group_add_service_strlst(printer->dnssd_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_ipp._tcp", NULL, NULL, printer->port, ipp_txt);
+ if (printer->dnssd_subtypes && *(printer->dnssd_subtypes))
{
- char *temptypes = strdup(subtypes), *start, *end;
+ char *temptypes = strdup(printer->dnssd_subtypes), *start, *end;
for (start = temptypes; *start; start = end)
{
end = start + strlen(start);
snprintf(temp, sizeof(temp), "%s._sub._ipp._tcp", start);
- avahi_entry_group_add_service_subtype(printer->ipp_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_ipp._tcp", NULL, temp);
+ avahi_entry_group_add_service_subtype(printer->dnssd_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_ipp._tcp", NULL, temp);
}
free(temptypes);
* _ipps._tcp (IPPS) for secure printing...
*/
- avahi_entry_group_add_service_strlst(printer->ipp_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_ipps._tcp", NULL, NULL, printer->port, ipp_txt);
- if (subtypes && *subtypes)
+ avahi_entry_group_add_service_strlst(printer->dnssd_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_ipps._tcp", NULL, NULL, printer->port, ipp_txt);
+ if (printer->dnssd_subtypes && *(printer->dnssd_subtypes))
{
- char *temptypes = strdup(subtypes), *start, *end;
+ char *temptypes = strdup(printer->dnssd_subtypes), *start, *end;
for (start = temptypes; *start; start = end)
{
end = start + strlen(start);
snprintf(temp, sizeof(temp), "%s._sub._ipps._tcp", start);
- avahi_entry_group_add_service_subtype(printer->ipp_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_ipps._tcp", NULL, temp);
+ avahi_entry_group_add_service_subtype(printer->dnssd_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_ipps._tcp", NULL, temp);
}
free(temptypes);
* Finally _http.tcp (HTTP) for the web interface...
*/
- avahi_entry_group_add_service_strlst(printer->ipp_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_http._tcp", NULL, NULL, printer->port, NULL);
- avahi_entry_group_add_service_subtype(printer->ipp_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_http._tcp", NULL, "_printer._sub._http._tcp");
+ avahi_entry_group_add_service_strlst(printer->dnssd_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_http._tcp", NULL, NULL, printer->port, NULL);
+ avahi_entry_group_add_service_subtype(printer->dnssd_ref, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, printer->dnssd_name, "_http._tcp", NULL, "_printer._sub._http._tcp");
/*
* Commit it...
*/
- avahi_entry_group_commit(printer->ipp_ref);
+ avahi_entry_group_commit(printer->dnssd_ref);
avahi_threaded_poll_unlock(DNSSDMaster);
avahi_string_list_free(ipp_txt);
client->operation == HTTP_STATE_OPTIONS)
httpSetField(client->http, HTTP_FIELD_ALLOW, "GET, HEAD, OPTIONS, POST");
+ if (code == HTTP_STATUS_UNAUTHORIZED)
+ {
+ char value[256]; /* WWW-Authenticate value */
+
+ snprintf(value, sizeof(value), "Basic realm=\"%s\"", PAMService);
+ httpSetField(client->http, HTTP_FIELD_WWW_AUTHENTICATE, value);
+ }
+
if (type)
{
if (!strcmp(type, "text/html"))
static void
run_printer(ippeve_printer_t *printer) /* I - Printer */
{
- int num_fds; /* Number of file descriptors */
- struct pollfd polldata[3]; /* poll() data */
- int timeout; /* Timeout for poll() */
- ippeve_client_t *client; /* New client */
+ int num_fds; /* Number of file descriptors */
+ struct pollfd polldata[3]; /* poll() data */
+ ippeve_client_t *client; /* New client */
/*
- * Setup poll() data for the Bonjour service socket and IPv4/6 listeners...
+ * Setup poll() data for the DNS-SD service socket and IPv4/6 listeners...
*/
polldata[0].fd = printer->ipv4;
for (;;)
{
- if (cupsArrayCount(printer->jobs))
- timeout = 10;
- else
- timeout = -1;
-
- if (poll(polldata, (nfds_t)num_fds, timeout) < 0 && errno != EINTR)
+ if (poll(polldata, (nfds_t)num_fds, 1000) < 0 && errno != EINTR)
{
perror("poll() failed");
break;
}
}
+ /*
+ * Process DNS-SD messages...
+ */
+
#ifdef HAVE_DNSSD
if (polldata[2].revents & POLLIN)
DNSServiceProcessResult(DNSSDMaster);
#endif /* HAVE_DNSSD */
+#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ if (printer->dnssd_collision)
+ register_printer(printer);
+#endif /* HAVE_DNSSD || HAVE_AVAHI */
+
/*
* Clean out old jobs...
*/
{
_cupsLangPuts(stdout, _("Usage: ippeveprinter [options] \"name\""));
_cupsLangPuts(stdout, _("Options:"));
- _cupsLangPuts(stderr, _("--help Show program help"));
- _cupsLangPuts(stderr, _("--no-web-forms Disable web forms for media and supplies"));
- _cupsLangPuts(stderr, _("--version Show program version"));
+ _cupsLangPuts(stdout, _("--help Show program help"));
+ _cupsLangPuts(stdout, _("--no-web-forms Disable web forms for media and supplies"));
+ _cupsLangPuts(stdout, _("--pam-service service Use the named PAM service"));
+ _cupsLangPuts(stdout, _("--version Show program version"));
_cupsLangPuts(stdout, _("-2 Set 2-sided printing support (default=1-sided)"));
+ _cupsLangPuts(stdout, _("-A Enable authentication"));
_cupsLangPuts(stdout, _("-D device-uri Set the device URI for the printer"));
_cupsLangPuts(stdout, _("-F output-type/subtype Set the output format for the printer"));
#ifdef HAVE_SSL
_cupsLangPuts(stdout, _("-K keypath Set location of server X.509 certificates and keys."));
#endif /* HAVE_SSL */
_cupsLangPuts(stdout, _("-M manufacturer Set manufacturer name (default=Test)"));
+#if !CUPS_LITE
_cupsLangPuts(stdout, _("-P filename.ppd Load printer attributes from PPD file"));
+#endif /* !CUPS_LITE */
+ _cupsLangPuts(stdout, _("-S filename.strings Set strings file"));
_cupsLangPuts(stdout, _("-V version Set default IPP version"));
_cupsLangPuts(stdout, _("-a filename.conf Load printer attributes from conf file"));
_cupsLangPuts(stdout, _("-c command Set print command"));
_cupsLangPuts(stdout, _("-d spool-directory Set spool directory"));
_cupsLangPuts(stdout, _("-f type/subtype[,...] Set supported file types"));
- _cupsLangPuts(stdout, _("-i iconfile.png Set icon file"));
+ _cupsLangPuts(stdout, _("-i iconfile.png[,...] Set icon file(s)"));
_cupsLangPuts(stdout, _("-k Keep job spool files"));
_cupsLangPuts(stdout, _("-l location Set location of printer"));
_cupsLangPuts(stdout, _("-m model Set model name (default=Printer)"));
_cupsLangPuts(stdout, _("-p port Set port number for printer"));
_cupsLangPuts(stdout, _("-r subtype,[subtype] Set DNS-SD service subtype"));
_cupsLangPuts(stdout, _("-s speed[,color-speed] Set speed in pages per minute"));
- _cupsLangPuts(stderr, _("-v Be verbose"));
+ _cupsLangPuts(stdout, _("-v Be verbose"));
exit(status);
}
memset(header, 0, sizeof(header));
httpPeek(client->http, (char *)header, sizeof(header));
+ fprintf(stderr, "%s %s Auto-type header: %02X%02X%02X%02X%02X%02X%02X%02X\n", client->hostname, op_name, header[0], header[1], header[2], header[3], header[4], header[5], header[6], header[7]);
if (!memcmp(header, "%PDF", 4))
format = "application/pdf";
else if (!memcmp(header, "%!", 2))
format = "image/jpeg";
else if (!memcmp(header, "\211PNG", 4))
format = "image/png";
- else if (!memcmp(header, "RAS2", 4))
+ else if (!memcmp(header, "RaS2PwgR", 8))
format = "image/pwg-raster";
else if (!memcmp(header, "UNIRAST", 8))
format = "image/urf";
if (length > 0)
{
// Copy any remainder into the leftdata array...
- if ((length - leftcount) > 0)
+ if (length > leftcount)
memcpy(leftdata + leftcount, data, (size_t)(length - leftcount));
memset(leftdata + length, 0, (size_t)(4 - length));
* commands such as IPP and Bonjour conformance tests. This tool is
* inspired by the UNIX "find" command, thus its name.
*
+ * Copyright © 2021 by OpenPrinting.
+ * Copyright © 2020 by the IEEE-ISTO Printer Working Group
* Copyright © 2008-2018 by Apple Inc.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
static void client_callback(AvahiClient *client,
AvahiClientState state,
void *context);
-#endif /* HAVE_AVAHI */
+#endif /* HAVE_DNSSD */
static int compare_services(ippfind_srv_t *a, ippfind_srv_t *b);
static const char *dnssd_error_string(int error);
}
#elif defined(HAVE_AVAHI)
+ char *subtype, /* Sub-type, if any */
+ subtype_buf[256]; /* Sub-type buffer */
+
+ if ((subtype = strstr(regtype, ",_")) != NULL)
+ {
+ *subtype++ = '\0';
+ snprintf(subtype_buf, sizeof(subtype_buf), "%s._sub.%s", subtype, regtype);
+ regtype = subtype_buf;
+ }
+
if (avahi_service_browser_new(avahi_client, AVAHI_IF_UNSPEC,
AVAHI_PROTO_UNSPEC, regtype, domain, 0,
browse_callback, services))
_cupsLangPuts(stderr, _("-h regex Match hostname to regular expression"));
_cupsLangPuts(stderr, _("-l List attributes"));
_cupsLangPuts(stderr, _("-n regex Match service name to regular expression"));
+ _cupsLangPuts(stderr, _("-N name Match service name to literal name value"));
_cupsLangPuts(stderr, _("-p Print URI if true"));
_cupsLangPuts(stderr, _("-q Quietly report match via exit code"));
_cupsLangPuts(stderr, _("-r True if service is remote"));
_cupsLangPuts(stderr, _("--exec utility [argument ...] ;\n"
" Execute program if true"));
_cupsLangPuts(stderr, _("--host regex Match hostname to regular expression"));
- _cupsLangPuts(stderr, _("--ls List attributes"));
+ _cupsLangPuts(stderr, _("--literal-name name Match service name to literal name value"));
_cupsLangPuts(stderr, _("--local True if service is local"));
+ _cupsLangPuts(stderr, _("--ls List attributes"));
_cupsLangPuts(stderr, _("--name regex Match service name to regular expression"));
_cupsLangPuts(stderr, _("--path regex Match resource path to regular expression"));
_cupsLangPuts(stderr, _("--port number[-number] Match port to number or range"));
/*
* ipptool command for CUPS.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2021 by OpenPrinting.
+ * Copyright © 2020 by The Printer Working Group.
+ * Copyright © 2007-2021 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
#endif /* !O_BINARY */
+/*
+ * Limits...
+ */
+
+#define MAX_EXPECT 200 // Maximum number of EXPECT directives
+#define MAX_DISPLAY 200 // Maximum number of DISPLAY directives
+#define MAX_MONITOR 10 // Maximum number of MONITOR-PRINTER-STATE EXPECT directives
+
+
/*
* Types...
*/
-typedef enum _cups_transfer_e /**** How to send request data ****/
+typedef enum ipptool_transfer_e /**** How to send request data ****/
{
- _CUPS_TRANSFER_AUTO, /* Chunk for files, length for static */
- _CUPS_TRANSFER_CHUNKED, /* Chunk always */
- _CUPS_TRANSFER_LENGTH /* Length always */
-} _cups_transfer_t;
+ IPPTOOL_TRANSFER_AUTO, /* Chunk for files, length for static */
+ IPPTOOL_TRANSFER_CHUNKED, /* Chunk always */
+ IPPTOOL_TRANSFER_LENGTH /* Length always */
+} ipptool_transfer_t;
-typedef enum _cups_output_e /**** Output mode ****/
+typedef enum ipptool_output_e /**** Output mode ****/
{
- _CUPS_OUTPUT_QUIET, /* No output */
- _CUPS_OUTPUT_TEST, /* Traditional CUPS test output */
- _CUPS_OUTPUT_PLIST, /* XML plist test output */
- _CUPS_OUTPUT_IPPSERVER, /* ippserver attribute file output */
- _CUPS_OUTPUT_LIST, /* Tabular list output */
- _CUPS_OUTPUT_CSV /* Comma-separated values output */
-} _cups_output_t;
-
-typedef enum _cups_with_e /**** WITH flags ****/
+ IPPTOOL_OUTPUT_QUIET, /* No output */
+ IPPTOOL_OUTPUT_TEST, /* Traditional CUPS test output */
+ IPPTOOL_OUTPUT_PLIST, /* XML plist test output */
+ IPPTOOL_OUTPUT_IPPSERVER, /* ippserver attribute file output */
+ IPPTOOL_OUTPUT_LIST, /* Tabular list output */
+ IPPTOOL_OUTPUT_CSV /* Comma-separated values output */
+} ipptool_output_t;
+
+typedef enum ipptool_with_e /**** WITH flags ****/
{
- _CUPS_WITH_LITERAL = 0, /* Match string is a literal value */
- _CUPS_WITH_ALL = 1, /* Must match all values */
- _CUPS_WITH_REGEX = 2, /* Match string is a regular expression */
- _CUPS_WITH_HOSTNAME = 4, /* Match string is a URI hostname */
- _CUPS_WITH_RESOURCE = 8, /* Match string is a URI resource */
- _CUPS_WITH_SCHEME = 16 /* Match string is a URI scheme */
-} _cups_with_t;
-
-typedef struct _cups_expect_s /**** Expected attribute info ****/
+ IPPTOOL_WITH_LITERAL = 0, /* Match string is a literal value */
+ IPPTOOL_WITH_ALL = 1, /* Must match all values */
+ IPPTOOL_WITH_REGEX = 2, /* Match string is a regular expression */
+ IPPTOOL_WITH_HOSTNAME = 4, /* Match string is a URI hostname */
+ IPPTOOL_WITH_RESOURCE = 8, /* Match string is a URI resource */
+ IPPTOOL_WITH_SCHEME = 16 /* Match string is a URI scheme */
+} ipptool_with_t;
+
+typedef struct ipptool_expect_s /**** Expected attribute info ****/
{
int optional, /* Optional attribute? */
not_expect, /* Don't expect attribute? */
*with_value_from, /* Attribute must have one of the values in this attribute */
*define_match, /* Variable to define on match */
*define_no_match, /* Variable to define on no-match */
- *define_value; /* Variable to define with value */
+ *define_value, /* Variable to define with value */
+ *display_match; /* Message to display on a match */
int repeat_limit, /* Maximum number of times to repeat */
repeat_match, /* Repeat test on match */
repeat_no_match, /* Repeat test on no match */
- with_flags, /* WITH flags */
+ with_distinct, /* WITH-DISTINCT-VALUES? */
+ with_flags, /* WITH flags */
count; /* Expected count if > 0 */
ipp_tag_t in_group; /* IN-GROUP value */
-} _cups_expect_t;
+} ipptool_expect_t;
-typedef struct _cups_status_s /**** Status info ****/
+typedef struct ipptool_status_s /**** Status info ****/
{
ipp_status_t status; /* Expected status code */
char *if_defined, /* Only if variable is defined */
int repeat_limit, /* Maximum number of times to repeat */
repeat_match, /* Repeat the test when it does not match */
repeat_no_match; /* Repeat the test when it matches */
-} _cups_status_t;
+} ipptool_status_t;
-typedef struct _cups_testdata_s /**** Test Data ****/
+typedef struct ipptool_test_s /**** Test Data ****/
{
/* Global Options */
+ _ipp_vars_t *vars; /* Variables */
http_encryption_t encryption; /* Encryption for connection */
int family; /* Address family */
- _cups_output_t output; /* Output mode */
+ ipptool_output_t output; /* Output mode */
+ int repeat_on_busy; /* Repeat tests on server-error-busy */
int stop_after_include_error;
/* Stop after include errors? */
double timeout; /* Timeout for connection */
/* Test Defaults */
int def_ignore_errors; /* Default IGNORE-ERRORS value */
- _cups_transfer_t def_transfer; /* Default TRANSFER value */
+ ipptool_transfer_t def_transfer; /* Default TRANSFER value */
int def_version; /* Default IPP version */
/* Global State */
char compression[16]; /* COMPRESSION value */
useconds_t delay; /* Initial delay */
int num_displayed; /* Number of displayed attributes */
- char *displayed[200]; /* Displayed attributes */
+ char *displayed[MAX_DISPLAY];/* Displayed attributes */
int num_expects; /* Number of expected attributes */
- _cups_expect_t expects[200], /* Expected attributes */
+ ipptool_expect_t expects[MAX_EXPECT], /* Expected attributes */
*expect, /* Current expected attribute */
*last_expect; /* Last EXPECT (for predicates) */
char file[1024], /* Data filename */
file_id[1024]; /* File identifier */
int ignore_errors; /* Ignore test failures? */
char name[1024]; /* Test name */
+ char pause[1024]; /* PAUSE value */
useconds_t repeat_interval; /* Repeat interval (delay) */
int request_id; /* Current request ID */
char resource[512]; /* Resource for request */
- int skip_test, /* Skip this test? */
+ int pass_test, /* Pass this test? */
+ skip_test, /* Skip this test? */
num_statuses; /* Number of valid status codes */
- _cups_status_t statuses[100], /* Valid status codes */
+ ipptool_status_t statuses[100], /* Valid status codes */
*last_status; /* Last STATUS (for predicates) */
char test_id[1024]; /* Test identifier */
- _cups_transfer_t transfer; /* To chunk or not to chunk */
+ ipptool_transfer_t transfer; /* To chunk or not to chunk */
int version; /* IPP version number to use */
-} _cups_testdata_t;
+ _cups_thread_t monitor_thread; /* Monitoring thread ID */
+ int monitor_done; /* Set to 1 to stop monitor thread */
+ char *monitor_uri; /* MONITOR-PRINTER-STATE URI */
+ useconds_t monitor_delay, /* MONITOR-PRINTER-STATE DELAY value, if any */
+ monitor_interval; /* MONITOR-PRINTER-STATE DELAY interval */
+ int num_monitor_expects; /* Number MONITOR-PRINTER-STATE EXPECTs */
+ ipptool_expect_t monitor_expects[MAX_MONITOR];
+ /* MONITOR-PRINTER-STATE EXPECTs */
+} ipptool_test_t;
/*
static void add_stringf(cups_array_t *a, const char *s, ...) _CUPS_FORMAT(2, 3);
static int compare_uris(const char *a, const char *b);
static void copy_hex_string(char *buffer, unsigned char *data, int datalen, size_t bufsize);
-static int do_test(_ipp_file_t *f, _ipp_vars_t *vars, _cups_testdata_t *data);
-static int do_tests(const char *testfile, _ipp_vars_t *vars, _cups_testdata_t *data);
-static int error_cb(_ipp_file_t *f, _cups_testdata_t *data, const char *error);
-static int expect_matches(_cups_expect_t *expect, ipp_tag_t value_tag);
+static void *do_monitor_printer_state(ipptool_test_t *data);
+static int do_test(_ipp_file_t *f, ipptool_test_t *data);
+static int do_tests(const char *testfile, ipptool_test_t *data);
+static int error_cb(_ipp_file_t *f, ipptool_test_t *data, const char *error);
+static int expect_matches(ipptool_expect_t *expect, ipp_attribute_t *attr);
static char *get_filename(const char *testfile, char *dst, const char *src, size_t dstsize);
static const char *get_string(ipp_attribute_t *attr, int element, int flags, char *buffer, size_t bufsize);
-static void init_data(_cups_testdata_t *data);
+static void init_data(ipptool_test_t *data);
static char *iso_date(const ipp_uchar_t *date);
+static int parse_monitor_printer_state(_ipp_file_t *f, ipptool_test_t *data);
static void pause_message(const char *message);
-static void print_attr(cups_file_t *outfile, _cups_output_t output, ipp_attribute_t *attr, ipp_tag_t *group);
-static void print_csv(_cups_testdata_t *data, ipp_t *ipp, ipp_attribute_t *attr, int num_displayed, char **displayed, size_t *widths);
-static void print_fatal_error(_cups_testdata_t *data, const char *s, ...) _CUPS_FORMAT(2, 3);
-static void print_ippserver_attr(_cups_testdata_t *data, ipp_attribute_t *attr, int indent);
-static void print_ippserver_string(_cups_testdata_t *data, const char *s, size_t len);
-static void print_line(_cups_testdata_t *data, ipp_t *ipp, ipp_attribute_t *attr, int num_displayed, char **displayed, size_t *widths);
-static void print_xml_header(_cups_testdata_t *data);
+static void print_attr(cups_file_t *outfile, ipptool_output_t output, ipp_attribute_t *attr, ipp_tag_t *group);
+static ipp_attribute_t *print_csv(ipptool_test_t *data, ipp_t *ipp, ipp_attribute_t *attr, int num_displayed, char **displayed, size_t *widths);
+static void print_fatal_error(ipptool_test_t *data, const char *s, ...) _CUPS_FORMAT(2, 3);
+static void print_ippserver_attr(ipptool_test_t *data, ipp_attribute_t *attr, int indent);
+static void print_ippserver_string(ipptool_test_t *data, const char *s, size_t len);
+static ipp_attribute_t *print_line(ipptool_test_t *data, ipp_t *ipp, ipp_attribute_t *attr, int num_displayed, char **displayed, size_t *widths);
+static void print_xml_header(ipptool_test_t *data);
static void print_xml_string(cups_file_t *outfile, const char *element, const char *s);
-static void print_xml_trailer(_cups_testdata_t *data, int success, const char *message);
+static void print_xml_trailer(ipptool_test_t *data, int success, const char *message);
#ifndef _WIN32
static void sigterm_handler(int sig);
#endif /* _WIN32 */
static int timeout_cb(http_t *http, void *user_data);
-static int token_cb(_ipp_file_t *f, _ipp_vars_t *vars, _cups_testdata_t *data, const char *token);
+static int token_cb(_ipp_file_t *f, _ipp_vars_t *vars, ipptool_test_t *data, const char *token);
static void usage(void) _CUPS_NORETURN;
+static int with_distinct_values(cups_array_t *errors, ipp_attribute_t *attr);
static const char *with_flags_string(int flags);
-static int with_value(_cups_testdata_t *data, cups_array_t *errors, char *value, int flags, ipp_attribute_t *attr, char *matchbuf, size_t matchlen);
+static int with_value(ipptool_test_t *data, cups_array_t *errors, char *value, int flags, ipp_attribute_t *attr, char *matchbuf, size_t matchlen);
static int with_value_from(cups_array_t *errors, ipp_attribute_t *fromattr, ipp_attribute_t *attr, char *matchbuf, size_t matchlen);
*testfile; /* Test file to use */
int interval, /* Test interval in microseconds */
repeat; /* Repeat count */
- _cups_testdata_t data; /* Test data */
_ipp_vars_t vars; /* Variables */
+ ipptool_test_t data; /* Test data */
_cups_globals_t *cg = _cupsGlobals();
/* Global data */
init_data(&data);
_ippVarsInit(&vars, NULL, (_ipp_ferror_cb_t)error_cb, (_ipp_ftoken_cb_t)token_cb);
+ data.vars = &vars;
- _ippVarsSet(&vars, "date-start", iso_date(ippTimeToDate(time(NULL))));
+ _ippVarsSet(data.vars, "date-start", iso_date(ippTimeToDate(time(NULL))));
/*
* We need at least:
exit(1);
}
- data.output = _CUPS_OUTPUT_IPPSERVER;
+ data.output = IPPTOOL_OUTPUT_IPPSERVER;
}
else if (!strcmp(argv[i], "--stop-after-include-error"))
{
#endif /* AF_INET6 */
case 'C' : /* Enable HTTP chunking */
- data.def_transfer = _CUPS_TRANSFER_CHUNKED;
+ data.def_transfer = IPPTOOL_TRANSFER_CHUNKED;
break;
case 'E' : /* Encrypt with TLS */
-#ifdef HAVE_SSL
+#ifdef HAVE_TLS
data.encryption = HTTP_ENCRYPT_REQUIRED;
#else
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."),
argv[0]);
-#endif /* HAVE_SSL */
+#endif /* HAVE_TLS */
break;
case 'I' : /* Ignore errors */
break;
case 'L' : /* Disable HTTP chunking */
- data.def_transfer = _CUPS_TRANSFER_LENGTH;
+ data.def_transfer = IPPTOOL_TRANSFER_LENGTH;
break;
case 'P' : /* Output to plist file */
exit(1);
}
- data.output = _CUPS_OUTPUT_PLIST;
+ data.output = IPPTOOL_OUTPUT_PLIST;
if (interval || repeat)
{
}
break;
+ case 'R' : /* Repeat on server-error-busy */
+ data.repeat_on_busy = 1;
+ break;
+
case 'S' : /* Encrypt with SSL */
-#ifdef HAVE_SSL
+#ifdef HAVE_TLS
data.encryption = HTTP_ENCRYPT_ALWAYS;
#else
- _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."),
- argv[0]);
-#endif /* HAVE_SSL */
+ _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), "ipptool");
+#endif /* HAVE_TLS */
break;
case 'T' : /* Set timeout */
if (i >= argc)
{
- _cupsLangPrintf(stderr,
- _("%s: Missing timeout for \"-T\"."),
- "ipptool");
+ _cupsLangPrintf(stderr, _("%s: Missing timeout for \"-T\"."), "ipptool");
usage();
}
if (i >= argc)
{
- _cupsLangPrintf(stderr,
- _("%s: Missing version for \"-V\"."),
- "ipptool");
+ _cupsLangPrintf(stderr, _("%s: Missing version for \"-V\"."), "ipptool");
usage();
}
break;
case 'X' : /* Produce XML output */
- data.output = _CUPS_OUTPUT_PLIST;
+ data.output = IPPTOOL_OUTPUT_PLIST;
if (interval || repeat)
{
break;
case 'c' : /* CSV output */
- data.output = _CUPS_OUTPUT_CSV;
+ data.output = IPPTOOL_OUTPUT_CSV;
break;
case 'd' : /* Define a variable */
if (i >= argc)
{
- _cupsLangPuts(stderr,
- _("ipptool: Missing name=value for \"-d\"."));
+ _cupsLangPuts(stderr, _("ipptool: Missing name=value for \"-d\"."));
usage();
}
else
value = name + strlen(name);
- _ippVarsSet(&vars, name, value);
+ _ippVarsSet(data.vars, name, value);
break;
case 'f' : /* Set the default test filename */
if (i >= argc)
{
- _cupsLangPuts(stderr,
- _("ipptool: Missing filename for \"-f\"."));
+ _cupsLangPuts(stderr, _("ipptool: Missing filename for \"-f\"."));
usage();
}
else
strlcpy(filename, argv[i], sizeof(filename));
- _ippVarsSet(&vars, "filename", filename);
+ _ippVarsSet(data.vars, "filename", filename);
if ((ext = strrchr(filename, '.')) != NULL)
{
*/
if (!_cups_strcasecmp(ext, ".gif"))
- _ippVarsSet(&vars, "filetype", "image/gif");
+ _ippVarsSet(data.vars, "filetype", "image/gif");
else if (!_cups_strcasecmp(ext, ".htm") ||
!_cups_strcasecmp(ext, ".htm.gz") ||
!_cups_strcasecmp(ext, ".html") ||
!_cups_strcasecmp(ext, ".html.gz"))
- _ippVarsSet(&vars, "filetype", "text/html");
+ _ippVarsSet(data.vars, "filetype", "text/html");
else if (!_cups_strcasecmp(ext, ".jpg") ||
!_cups_strcasecmp(ext, ".jpeg"))
- _ippVarsSet(&vars, "filetype", "image/jpeg");
+ _ippVarsSet(data.vars, "filetype", "image/jpeg");
else if (!_cups_strcasecmp(ext, ".pcl") ||
!_cups_strcasecmp(ext, ".pcl.gz"))
- _ippVarsSet(&vars, "filetype", "application/vnd.hp-PCL");
+ _ippVarsSet(data.vars, "filetype", "application/vnd.hp-PCL");
else if (!_cups_strcasecmp(ext, ".pdf"))
- _ippVarsSet(&vars, "filetype", "application/pdf");
+ _ippVarsSet(data.vars, "filetype", "application/pdf");
else if (!_cups_strcasecmp(ext, ".png"))
- _ippVarsSet(&vars, "filetype", "image/png");
+ _ippVarsSet(data.vars, "filetype", "image/png");
else if (!_cups_strcasecmp(ext, ".ps") ||
!_cups_strcasecmp(ext, ".ps.gz"))
- _ippVarsSet(&vars, "filetype", "application/postscript");
+ _ippVarsSet(data.vars, "filetype", "application/postscript");
else if (!_cups_strcasecmp(ext, ".pwg") ||
!_cups_strcasecmp(ext, ".pwg.gz") ||
!_cups_strcasecmp(ext, ".ras") ||
!_cups_strcasecmp(ext, ".ras.gz"))
- _ippVarsSet(&vars, "filetype", "image/pwg-raster");
+ _ippVarsSet(data.vars, "filetype", "image/pwg-raster");
else if (!_cups_strcasecmp(ext, ".tif") ||
!_cups_strcasecmp(ext, ".tiff"))
- _ippVarsSet(&vars, "filetype", "image/tiff");
+ _ippVarsSet(data.vars, "filetype", "image/tiff");
else if (!_cups_strcasecmp(ext, ".txt") ||
!_cups_strcasecmp(ext, ".txt.gz"))
- _ippVarsSet(&vars, "filetype", "text/plain");
+ _ippVarsSet(data.vars, "filetype", "text/plain");
else if (!_cups_strcasecmp(ext, ".urf") ||
!_cups_strcasecmp(ext, ".urf.gz"))
- _ippVarsSet(&vars, "filetype", "image/urf");
+ _ippVarsSet(data.vars, "filetype", "image/urf");
else if (!_cups_strcasecmp(ext, ".xps"))
- _ippVarsSet(&vars, "filetype", "application/openxps");
+ _ippVarsSet(data.vars, "filetype", "application/openxps");
else
- _ippVarsSet(&vars, "filetype", "application/octet-stream");
+ _ippVarsSet(data.vars, "filetype", "application/octet-stream");
}
else
{
* Use the "auto-type" MIME media type...
*/
- _ippVarsSet(&vars, "filetype", "application/octet-stream");
+ _ippVarsSet(data.vars, "filetype", "application/octet-stream");
}
break;
}
}
- if ((data.output == _CUPS_OUTPUT_PLIST || data.output == _CUPS_OUTPUT_IPPSERVER) && interval)
+ if ((data.output == IPPTOOL_OUTPUT_PLIST || data.output == IPPTOOL_OUTPUT_IPPSERVER) && interval)
{
_cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are incompatible with \"--ippserver\", \"-P\", and \"-X\"."));
usage();
break;
case 'l' : /* List as a table */
- data.output = _CUPS_OUTPUT_LIST;
+ data.output = IPPTOOL_OUTPUT_LIST;
break;
case 'n' : /* Repeat count */
else
repeat = atoi(argv[i]);
- if ((data.output == _CUPS_OUTPUT_PLIST || data.output == _CUPS_OUTPUT_IPPSERVER) && repeat)
+ if ((data.output == IPPTOOL_OUTPUT_PLIST || data.output == IPPTOOL_OUTPUT_IPPSERVER) && repeat)
{
_cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are incompatible with \"--ippserver\", \"-P\", and \"-X\"."));
usage();
break;
case 'q' : /* Be quiet */
- data.output = _CUPS_OUTPUT_QUIET;
+ data.output = IPPTOOL_OUTPUT_QUIET;
break;
case 't' : /* CUPS test output */
- data.output = _CUPS_OUTPUT_TEST;
+ data.output = IPPTOOL_OUTPUT_TEST;
break;
case 'v' : /* Be verbose */
}
}
else if (!strncmp(argv[i], "ipp://", 6) || !strncmp(argv[i], "http://", 7)
-#ifdef HAVE_SSL
+#ifdef HAVE_TLS
|| !strncmp(argv[i], "ipps://", 7) || !strncmp(argv[i], "https://", 8)
-#endif /* HAVE_SSL */
+#endif /* HAVE_TLS */
)
{
/*
* Set URI...
*/
- if (vars.uri)
+ if (data.vars->uri)
{
_cupsLangPuts(stderr, _("ipptool: May only specify a single URI."));
usage();
}
-#ifdef HAVE_SSL
+#ifdef HAVE_TLS
if (!strncmp(argv[i], "ipps://", 7) || !strncmp(argv[i], "https://", 8))
data.encryption = HTTP_ENCRYPT_ALWAYS;
-#endif /* HAVE_SSL */
+#endif /* HAVE_TLS */
- if (!_ippVarsSet(&vars, "uri", argv[i]))
+ if (!_ippVarsSet(data.vars, "uri", argv[i]))
{
_cupsLangPrintf(stderr, _("ipptool: Bad URI \"%s\"."), argv[i]);
return (1);
}
- if (vars.username[0] && vars.password)
- cupsSetPasswordCB2(_ippVarsPasswordCB, &vars);
+ if (data.vars->username[0] && data.vars->password)
+ cupsSetPasswordCB2(_ippVarsPasswordCB, data.vars);
}
else
{
* Run test...
*/
- if (!vars.uri)
+ if (!data.vars->uri)
{
_cupsLangPuts(stderr, _("ipptool: URI required before test file."));
_cupsLangPuts(stderr, argv[i]);
else
testfile = argv[i];
- if (!do_tests(testfile, &vars, &data))
+ if (access(testfile, 0))
+ {
+ _cupsLangPrintf(stderr, _("%s: Unable to open \"%s\": %s"), "ipptool", testfile, strerror(errno));
+ status = 1;
+ }
+ else if (!do_tests(testfile, &data))
status = 1;
}
}
- if (!vars.uri || !testfile)
+ if (!data.vars->uri || !testfile)
usage();
/*
* Loop if the interval is set...
*/
- if (data.output == _CUPS_OUTPUT_PLIST)
+ if (data.output == IPPTOOL_OUTPUT_PLIST)
print_xml_trailer(&data, !status, NULL);
else if (interval > 0 && repeat > 0)
{
while (repeat > 1)
{
usleep((useconds_t)interval);
- do_tests(testfile, &vars, &data);
+ do_tests(testfile, &data);
repeat --;
}
}
for (;;)
{
usleep((useconds_t)interval);
- do_tests(testfile, &vars, &data);
+ do_tests(testfile, &data);
}
}
- if ((data.output == _CUPS_OUTPUT_TEST || (data.output == _CUPS_OUTPUT_PLIST && data.outfile)) && data.test_count > 1)
+ if ((data.output == IPPTOOL_OUTPUT_TEST || (data.output == IPPTOOL_OUTPUT_PLIST && data.outfile)) && data.test_count > 1)
{
/*
* Show a summary report if there were multiple tests...
cupsFileClose(data.outfile);
-/*
+ /*
* Exit...
*/
}
+/*
+ * 'do_monitor_printer_state()' - Do the MONITOR-PRINTER-STATE tests in the background.
+ */
+
+static void * // O - Thread exit status
+do_monitor_printer_state(
+ ipptool_test_t *data) // I - Test data
+{
+ int i, j; // Looping vars
+ char scheme[32], // URI scheme
+ userpass[32], // URI username:password
+ host[256], // URI hostname/IP address
+ resource[256]; // URI resource path
+ int port; // URI port number
+ http_encryption_t encryption; // Encryption to use
+ http_t *http; // Connection to printer
+ ipp_t *request, // IPP request
+ *response = NULL; // IPP response
+ http_status_t status; // Request status
+ ipp_attribute_t *found; // Found attribute
+ ipptool_expect_t *expect; // Current EXPECT test
+ char buffer[131072]; // Copy buffer
+ int num_pattrs; // Number of printer attributes
+ const char *pattrs[100]; // Printer attributes we care about
+
+
+ // Connect to the printer...
+ if (httpSeparateURI(HTTP_URI_CODING_ALL, data->monitor_uri, scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
+ {
+ print_fatal_error(data, "Bad printer URI \"%s\".", data->monitor_uri);
+ return (NULL);
+ }
+
+ if (!_cups_strcasecmp(scheme, "https") || !_cups_strcasecmp(scheme, "ipps") || port == 443)
+ encryption = HTTP_ENCRYPTION_ALWAYS;
+ else
+ encryption = data->encryption;
+
+ if ((http = httpConnect2(host, port, NULL, data->family, encryption, 1, 30000, NULL)) == NULL)
+ {
+ print_fatal_error(data, "Unable to connect to \"%s\" on port %d - %s", host, port, cupsLastErrorString());
+ return (0);
+ }
+
+#ifdef HAVE_LIBZ
+ httpSetDefaultField(http, HTTP_FIELD_ACCEPT_ENCODING, "deflate, gzip, identity");
+#else
+ httpSetDefaultField(http, HTTP_FIELD_ACCEPT_ENCODING, "identity");
+#endif /* HAVE_LIBZ */
+
+ if (data->timeout > 0.0)
+ httpSetTimeout(http, data->timeout, timeout_cb, NULL);
+
+ // Wait for the initial delay as needed...
+ if (data->monitor_delay)
+ usleep(data->monitor_delay);
+
+ // Create a query request that we'll reuse...
+ request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
+ ippSetRequestId(request, data->request_id * 100 - 1);
+ ippSetVersion(request, data->version / 10, data->version % 10);
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, data->monitor_uri);
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name", NULL, cupsUser());
+
+ for (i = data->num_monitor_expects, expect = data->monitor_expects, num_pattrs = 0; i > 0; i --, expect ++)
+ {
+ // Add EXPECT attribute names...
+ for (j = 0; j < num_pattrs; j ++)
+ {
+ if (!strcmp(expect->name, pattrs[j]))
+ break;
+ }
+
+ if (j >= num_pattrs && num_pattrs < (int)(sizeof(pattrs) / sizeof(pattrs[0])))
+ pattrs[num_pattrs ++] = expect->name;
+ }
+
+ if (num_pattrs > 0)
+ ippAddStrings(request, IPP_TAG_OPERATION, IPP_CONST_TAG(IPP_TAG_KEYWORD), "requested-attributes", num_pattrs, NULL, pattrs);
+
+ // Loop until we need to stop...
+ while (!data->monitor_done && !Cancel)
+ {
+ // Poll the printer state...
+ ippSetRequestId(request, ippGetRequestId(request) + 1);
+
+ if ((status = cupsSendRequest(http, request, resource, ippLength(request))) != HTTP_STATUS_ERROR)
+ {
+ response = cupsGetResponse(http, resource);
+ status = httpGetStatus(http);
+ }
+
+ if (!data->monitor_done && !Cancel && status == HTTP_STATUS_ERROR && httpError(data->http) != EINVAL &&
+#ifdef _WIN32
+ httpError(data->http) != WSAETIMEDOUT)
+#else
+ httpError(data->http) != ETIMEDOUT)
+#endif // _WIN32
+ {
+ if (httpReconnect2(http, 30000, NULL))
+ break;
+ }
+ else if (status == HTTP_STATUS_ERROR || status == HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED)
+ {
+ break;
+ }
+ else if (status != HTTP_STATUS_OK)
+ {
+ httpFlush(http);
+
+ if (status == HTTP_STATUS_UNAUTHORIZED)
+ continue;
+
+ break;
+ }
+
+ for (i = data->num_monitor_expects, expect = data->monitor_expects; i > 0; i --, expect ++)
+ {
+ if (expect->if_defined && !_ippVarsGet(data->vars, expect->if_defined))
+ continue;
+
+ if (expect->if_not_defined && _ippVarsGet(data->vars, expect->if_not_defined))
+ continue;
+
+ found = ippFindAttribute(response, expect->name, IPP_TAG_ZERO);
+
+ if ((found && expect->not_expect) ||
+ (!found && !(expect->not_expect || expect->optional)) ||
+ (found && !expect_matches(expect, found)) ||
+ (expect->in_group && ippGetGroupTag(found) != expect->in_group) ||
+ (expect->with_distinct && !with_distinct_values(NULL, found)))
+ {
+ if (expect->define_no_match)
+ {
+ _ippVarsSet(data->vars, expect->define_no_match, "1");
+ data->monitor_done = 1;
+ }
+ break;
+ }
+
+ if (found)
+ ippAttributeString(found, buffer, sizeof(buffer));
+
+ if (found && !with_value(data, NULL, expect->with_value, expect->with_flags, found, buffer, sizeof(buffer)))
+ {
+ if (expect->define_no_match)
+ {
+ _ippVarsSet(data->vars, expect->define_no_match, "1");
+ data->monitor_done = 1;
+ }
+ break;
+ }
+
+ if (found && expect->count > 0 && ippGetCount(found) != expect->count)
+ {
+ if (expect->define_no_match)
+ {
+ _ippVarsSet(data->vars, expect->define_no_match, "1");
+ data->monitor_done = 1;
+ }
+ break;
+ }
+
+ if (found && expect->display_match && (data->output == IPPTOOL_OUTPUT_TEST || (data->output == IPPTOOL_OUTPUT_PLIST && data->outfile != cupsFileStdout())))
+ cupsFilePrintf(cupsFileStdout(), "CONT]\n\n%s\n\n %-68.68s [", expect->display_match, data->name);
+
+ if (found && expect->define_match)
+ {
+ _ippVarsSet(data->vars, expect->define_match, "1");
+ data->monitor_done = 1;
+ }
+
+ if (found && expect->define_value)
+ {
+ if (!expect->with_value)
+ {
+ int last = ippGetCount(found) - 1;
+ // Last element in attribute
+
+ switch (ippGetValueTag(found))
+ {
+ case IPP_TAG_ENUM :
+ case IPP_TAG_INTEGER :
+ snprintf(buffer, sizeof(buffer), "%d", ippGetInteger(found, last));
+ break;
+
+ case IPP_TAG_BOOLEAN :
+ if (ippGetBoolean(found, last))
+ strlcpy(buffer, "true", sizeof(buffer));
+ else
+ strlcpy(buffer, "false", sizeof(buffer));
+ break;
+
+ case IPP_TAG_CHARSET :
+ case IPP_TAG_KEYWORD :
+ case IPP_TAG_LANGUAGE :
+ case IPP_TAG_MIMETYPE :
+ case IPP_TAG_NAME :
+ case IPP_TAG_NAMELANG :
+ case IPP_TAG_TEXT :
+ case IPP_TAG_TEXTLANG :
+ case IPP_TAG_URI :
+ case IPP_TAG_URISCHEME :
+ strlcpy(buffer, ippGetString(found, last, NULL), sizeof(buffer));
+ break;
+
+ default :
+ ippAttributeString(found, buffer, sizeof(buffer));
+ break;
+ }
+ }
+
+ _ippVarsSet(data->vars, expect->define_value, buffer);
+ data->monitor_done = 1;
+ }
+ }
+
+ if (i == 0)
+ data->monitor_done = 1; // All tests passed
+
+ ippDelete(response);
+ response = NULL;
+
+ // Sleep between requests...
+ if (data->monitor_done || Cancel)
+ break;
+
+ usleep(data->monitor_interval);
+ }
+
+ // Close the connection to the printer and return...
+ httpClose(http);
+ ippDelete(request);
+ ippDelete(response);
+
+ return (NULL);
+}
+
+
/*
* 'do_test()' - Do a single test from the test file.
*/
static int /* O - 1 on success, 0 on failure */
-do_test(_ipp_file_t *f, /* I - IPP data file */
- _ipp_vars_t *vars, /* I - IPP variables */
- _cups_testdata_t *data) /* I - Test data */
+do_test(_ipp_file_t *f, /* I - IPP data file */
+ ipptool_test_t *data) /* I - Test data */
{
int i, /* Looping var */
status_ok, /* Did we get a matching status? */
repeat_count = 0, /* Repeat count */
repeat_test; /* Repeat the test? */
- _cups_expect_t *expect; /* Current expected attribute */
+ ipptool_expect_t *expect; /* Current expected attribute */
ipp_t *request, /* IPP request */
*response; /* IPP response */
size_t length; /* Length of IPP request */
if (Cancel)
return (0);
+ /*
+ * Show any PAUSE message, as needed...
+ */
+
+ if (data->pause[0])
+ {
+ if (!data->skip_test && !data->pass_test)
+ pause_message(data->pause);
+
+ data->pause[0] = '\0';
+ }
+
+ /*
+ * Start the background thread as needed...
+ */
+
+ if (data->monitor_uri)
+ {
+ data->monitor_done = 0;
+ data->monitor_thread = _cupsThreadCreate((_cups_thread_func_t)do_monitor_printer_state, data);
+ }
+
/*
* Take over control of the attributes in the request...
*/
ippSetVersion(request, data->version / 10, data->version % 10);
ippSetRequestId(request, data->request_id);
- if (data->output == _CUPS_OUTPUT_PLIST)
+ if (data->output == IPPTOOL_OUTPUT_PLIST)
{
cupsFilePuts(data->outfile, "<dict>\n");
cupsFilePuts(data->outfile, "<key>Name</key>\n");
cupsFilePuts(data->outfile, "</array>\n");
}
- if (data->output == _CUPS_OUTPUT_TEST || (data->output == _CUPS_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
+ if (data->output == IPPTOOL_OUTPUT_TEST || (data->output == IPPTOOL_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
{
if (data->verbosity)
{
cupsFilePrintf(cupsFileStdout(), " %s:\n", ippOpString(ippGetOperation(request)));
for (attrptr = ippFirstAttribute(request); attrptr; attrptr = ippNextAttribute(request))
- print_attr(cupsFileStdout(), _CUPS_OUTPUT_TEST, attrptr, NULL);
+ print_attr(cupsFileStdout(), IPPTOOL_OUTPUT_TEST, attrptr, NULL);
}
cupsFilePrintf(cupsFileStdout(), " %-68.68s [", data->name);
}
- if ((data->skip_previous && !data->prev_pass) || data->skip_test)
+ if ((data->skip_previous && !data->prev_pass) || data->skip_test || data->pass_test)
{
- data->skip_count ++;
+ if (!data->pass_test)
+ data->skip_count ++;
ippDelete(request);
request = NULL;
response = NULL;
- if (data->output == _CUPS_OUTPUT_PLIST)
+ if (data->output == IPPTOOL_OUTPUT_PLIST)
{
cupsFilePuts(data->outfile, "<key>Successful</key>\n");
cupsFilePuts(data->outfile, "<true />\n");
cupsFilePuts(data->outfile, "<key>Skipped</key>\n");
- cupsFilePuts(data->outfile, "<true />\n");
+ if (data->pass_test)
+ cupsFilePuts(data->outfile, "<false />\n");
+ else
+ cupsFilePuts(data->outfile, "<true />\n");
cupsFilePuts(data->outfile, "<key>StatusCode</key>\n");
- print_xml_string(data->outfile, "string", "skip");
+ if (data->pass_test)
+ print_xml_string(data->outfile, "string", "pass");
+ else
+ print_xml_string(data->outfile, "string", "skip");
cupsFilePuts(data->outfile, "<key>ResponseAttributes</key>\n");
cupsFilePuts(data->outfile, "<dict />\n");
}
- if (data->output == _CUPS_OUTPUT_TEST || (data->output == _CUPS_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
- cupsFilePuts(cupsFileStdout(), "SKIP]\n");
+ if (data->output == IPPTOOL_OUTPUT_TEST || (data->output == IPPTOOL_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
+ {
+ if (data->pass_test)
+ cupsFilePuts(cupsFileStdout(), "PASS]\n");
+ else
+ cupsFilePuts(cupsFileStdout(), "SKIP]\n");
+ }
goto skip_error;
}
- vars->password_tries = 0;
+ data->vars->password_tries = 0;
do
{
status = HTTP_STATUS_OK;
- if (data->transfer == _CUPS_TRANSFER_CHUNKED || (data->transfer == _CUPS_TRANSFER_AUTO && data->file[0]))
+ if (data->transfer == IPPTOOL_TRANSFER_CHUNKED || (data->transfer == IPPTOOL_TRANSFER_AUTO && data->file[0]))
{
/*
* Send request using chunking - a 0 length means "chunk".
{
while (!response && !Cancel && data->prev_pass)
{
+ ippSetRequestId(request, ++ data->request_id);
+
status = cupsSendRequest(data->http, request, data->resource, length);
#ifdef HAVE_LIBZ
if ((attrptr = ippFindAttribute(response, "job-id", IPP_TAG_INTEGER)) != NULL)
{
snprintf(temp, sizeof(temp), "%d", ippGetInteger(attrptr, 0));
- _ippVarsSet(vars, "job-id", temp);
+ _ippVarsSet(data->vars, "job-id", temp);
}
if ((attrptr = ippFindAttribute(response, "job-uri", IPP_TAG_URI)) != NULL)
- _ippVarsSet(vars, "job-uri", ippGetString(attrptr, 0, NULL));
+ _ippVarsSet(data->vars, "job-uri", ippGetString(attrptr, 0, NULL));
if ((attrptr = ippFindAttribute(response, "notify-subscription-id", IPP_TAG_INTEGER)) != NULL)
{
snprintf(temp, sizeof(temp), "%d", ippGetInteger(attrptr, 0));
- _ippVarsSet(vars, "notify-subscription-id", temp);
+ _ippVarsSet(data->vars, "notify-subscription-id", temp);
}
/*
major = ippGetVersion(response, &minor);
if (major != (data->version / 10) || minor != (data->version % 10))
- add_stringf(data->errors, "Bad version %d.%d in response - expected %d.%d (RFC 2911 section 3.1.8).", major, minor, data->version / 10, data->version % 10);
+ add_stringf(data->errors, "Bad version %d.%d in response - expected %d.%d (RFC 8011 section 4.1.8).", major, minor, data->version / 10, data->version % 10);
}
if (ippGetRequestId(response) != data->request_id)
- add_stringf(data->errors, "Bad request ID %d in response - expected %d (RFC 2911 section 3.1.1)", ippGetRequestId(response), data->request_id);
+ add_stringf(data->errors, "Bad request ID %d in response - expected %d (RFC 8011 section 4.1.1)", ippGetRequestId(response), data->request_id);
attrptr = ippFirstAttribute(response);
if (!attrptr)
{
- add_stringf(data->errors, "Missing first attribute \"attributes-charset (charset)\" in group operation-attributes-tag (RFC 2911 section 3.1.4).");
+ add_stringf(data->errors, "Missing first attribute \"attributes-charset (charset)\" in group operation-attributes-tag (RFC 8011 section 4.1.4).");
}
else
{
if (!ippGetName(attrptr) || ippGetValueTag(attrptr) != IPP_TAG_CHARSET || ippGetGroupTag(attrptr) != IPP_TAG_OPERATION || ippGetCount(attrptr) != 1 ||strcmp(ippGetName(attrptr), "attributes-charset"))
- add_stringf(data->errors, "Bad first attribute \"%s (%s%s)\" in group %s, expected \"attributes-charset (charset)\" in group operation-attributes-tag (RFC 2911 section 3.1.4).", ippGetName(attrptr) ? ippGetName(attrptr) : "(null)", ippGetCount(attrptr) > 1 ? "1setOf " : "", ippTagString(ippGetValueTag(attrptr)), ippTagString(ippGetGroupTag(attrptr)));
+ add_stringf(data->errors, "Bad first attribute \"%s (%s%s)\" in group %s, expected \"attributes-charset (charset)\" in group operation-attributes-tag (RFC 8011 section 4.1.4).", ippGetName(attrptr) ? ippGetName(attrptr) : "(null)", ippGetCount(attrptr) > 1 ? "1setOf " : "", ippTagString(ippGetValueTag(attrptr)), ippTagString(ippGetGroupTag(attrptr)));
attrptr = ippNextAttribute(response);
if (!attrptr)
- add_stringf(data->errors, "Missing second attribute \"attributes-natural-language (naturalLanguage)\" in group operation-attributes-tag (RFC 2911 section 3.1.4).");
+ add_stringf(data->errors, "Missing second attribute \"attributes-natural-language (naturalLanguage)\" in group operation-attributes-tag (RFC 8011 section 4.1.4).");
else if (!ippGetName(attrptr) || ippGetValueTag(attrptr) != IPP_TAG_LANGUAGE || ippGetGroupTag(attrptr) != IPP_TAG_OPERATION || ippGetCount(attrptr) != 1 || strcmp(ippGetName(attrptr), "attributes-natural-language"))
- add_stringf(data->errors, "Bad first attribute \"%s (%s%s)\" in group %s, expected \"attributes-natural-language (naturalLanguage)\" in group operation-attributes-tag (RFC 2911 section 3.1.4).", ippGetName(attrptr) ? ippGetName(attrptr) : "(null)", ippGetCount(attrptr) > 1 ? "1setOf " : "", ippTagString(ippGetValueTag(attrptr)), ippTagString(ippGetGroupTag(attrptr)));
+ add_stringf(data->errors, "Bad first attribute \"%s (%s%s)\" in group %s, expected \"attributes-natural-language (naturalLanguage)\" in group operation-attributes-tag (RFC 8011 section 4.1.4).", ippGetName(attrptr) ? ippGetName(attrptr) : "(null)", ippGetCount(attrptr) > 1 ? "1setOf " : "", ippTagString(ippGetValueTag(attrptr)), ippTagString(ippGetGroupTag(attrptr)));
}
if ((attrptr = ippFindAttribute(response, "status-message", IPP_TAG_ZERO)) != NULL)
/* String value */
if (ippGetValueTag(attrptr) != IPP_TAG_TEXT)
- add_stringf(data->errors, "status-message (text(255)) has wrong value tag %s (RFC 2911 section 3.1.6.2).", ippTagString(ippGetValueTag(attrptr)));
+ add_stringf(data->errors, "status-message (text(255)) has wrong value tag %s (RFC 8011 section 4.1.6.2).", ippTagString(ippGetValueTag(attrptr)));
if (ippGetGroupTag(attrptr) != IPP_TAG_OPERATION)
- add_stringf(data->errors, "status-message (text(255)) has wrong group tag %s (RFC 2911 section 3.1.6.2).", ippTagString(ippGetGroupTag(attrptr)));
+ add_stringf(data->errors, "status-message (text(255)) has wrong group tag %s (RFC 8011 section 4.1.6.2).", ippTagString(ippGetGroupTag(attrptr)));
if (ippGetCount(attrptr) != 1)
- add_stringf(data->errors, "status-message (text(255)) has %d values (RFC 2911 section 3.1.6.2).", ippGetCount(attrptr));
+ add_stringf(data->errors, "status-message (text(255)) has %d values (RFC 8011 section 4.1.6.2).", ippGetCount(attrptr));
if (status_message && strlen(status_message) > 255)
- add_stringf(data->errors, "status-message (text(255)) has bad length %d (RFC 2911 section 3.1.6.2).", (int)strlen(status_message));
+ add_stringf(data->errors, "status-message (text(255)) has bad length %d (RFC 8011 section 4.1.6.2).", (int)strlen(status_message));
}
if ((attrptr = ippFindAttribute(response, "detailed-status-message",
/* String value */
if (ippGetValueTag(attrptr) != IPP_TAG_TEXT)
- add_stringf(data->errors,
- "detailed-status-message (text(MAX)) has wrong "
- "value tag %s (RFC 2911 section 3.1.6.3).",
- ippTagString(ippGetValueTag(attrptr)));
+ add_stringf(data->errors, "detailed-status-message (text(MAX)) has wrong value tag %s (RFC 8011 section 4.1.6.3).", ippTagString(ippGetValueTag(attrptr)));
if (ippGetGroupTag(attrptr) != IPP_TAG_OPERATION)
- add_stringf(data->errors,
- "detailed-status-message (text(MAX)) has wrong "
- "group tag %s (RFC 2911 section 3.1.6.3).",
- ippTagString(ippGetGroupTag(attrptr)));
+ add_stringf(data->errors, "detailed-status-message (text(MAX)) has wrong group tag %s (RFC 8011 section 4.1.6.3).", ippTagString(ippGetGroupTag(attrptr)));
if (ippGetCount(attrptr) != 1)
- add_stringf(data->errors,
- "detailed-status-message (text(MAX)) has %d values"
- " (RFC 2911 section 3.1.6.3).",
- ippGetCount(attrptr));
+ add_stringf(data->errors, "detailed-status-message (text(MAX)) has %d values (RFC 8011 section 4.1.6.3).", ippGetCount(attrptr));
if (detailed_status_message && strlen(detailed_status_message) > 1023)
- add_stringf(data->errors,
- "detailed-status-message (text(MAX)) has bad "
- "length %d (RFC 2911 section 3.1.6.3).",
- (int)strlen(detailed_status_message));
+ add_stringf(data->errors, "detailed-status-message (text(MAX)) has bad length %d (RFC 8011 section 4.1.6.3).", (int)strlen(detailed_status_message));
}
a = cupsArrayNew((cups_array_func_t)strcmp, NULL);
}
if (out_of_order)
- add_stringf(data->errors, "Attribute groups out of order (%s < %s)",
- ippTagString(ippGetGroupTag(attrptr)),
- ippTagString(group));
+ add_stringf(data->errors, "Attribute groups out of order (%s < %s)", ippTagString(ippGetGroupTag(attrptr)), ippTagString(group));
if (ippGetGroupTag(attrptr) != IPP_TAG_ZERO)
group = ippGetGroupTag(attrptr);
if (ippGetName(attrptr))
{
- if (cupsArrayFind(a, (void *)ippGetName(attrptr)) && data->output < _CUPS_OUTPUT_LIST)
- add_stringf(data->errors, "Duplicate \"%s\" attribute in %s group",
- ippGetName(attrptr), ippTagString(group));
+ if (cupsArrayFind(a, (void *)ippGetName(attrptr)) && data->output < IPPTOOL_OUTPUT_LIST)
+ add_stringf(data->errors, "Duplicate \"%s\" attribute in %s group", ippGetName(attrptr), ippTagString(group));
cupsArrayAdd(a, (void *)ippGetName(attrptr));
}
* values...
*/
+ if (ippGetStatusCode(response) == IPP_STATUS_ERROR_BUSY && data->repeat_on_busy)
+ {
+ // Repeat on a server-error-busy status code...
+ status_ok = 1;
+ repeat_test = 1;
+ }
+
for (i = 0, status_ok = 0; i < data->num_statuses; i ++)
{
if (data->statuses[i].if_defined &&
- !_ippVarsGet(vars, data->statuses[i].if_defined))
+ !_ippVarsGet(data->vars, data->statuses[i].if_defined))
continue;
if (data->statuses[i].if_not_defined &&
- _ippVarsGet(vars, data->statuses[i].if_not_defined))
+ _ippVarsGet(data->vars, data->statuses[i].if_not_defined))
continue;
if (ippGetStatusCode(response) == data->statuses[i].status)
repeat_test = 1;
if (data->statuses[i].define_match)
- _ippVarsSet(vars, data->statuses[i].define_match, "1");
+ _ippVarsSet(data->vars, data->statuses[i].define_match, "1");
}
else
{
if (data->statuses[i].define_no_match)
{
- _ippVarsSet(vars, data->statuses[i].define_no_match, "1");
+ _ippVarsSet(data->vars, data->statuses[i].define_no_match, "1");
status_ok = 1;
}
}
for (i = 0; i < data->num_statuses; i ++)
{
if (data->statuses[i].if_defined &&
- !_ippVarsGet(vars, data->statuses[i].if_defined))
+ !_ippVarsGet(data->vars, data->statuses[i].if_defined))
continue;
if (data->statuses[i].if_not_defined &&
- _ippVarsGet(vars, data->statuses[i].if_not_defined))
+ _ippVarsGet(data->vars, data->statuses[i].if_not_defined))
continue;
if (!data->statuses[i].repeat_match || repeat_count >= data->statuses[i].repeat_limit)
- add_stringf(data->errors, "EXPECTED: STATUS %s (got %s)",
- ippErrorString(data->statuses[i].status),
- ippErrorString(cupsLastError()));
+ add_stringf(data->errors, "EXPECTED: STATUS %s (got %s)", ippErrorString(data->statuses[i].status), ippErrorString(cupsLastError()));
}
- if ((attrptr = ippFindAttribute(response, "status-message",
- IPP_TAG_TEXT)) != NULL)
+ if ((attrptr = ippFindAttribute(response, "status-message", IPP_TAG_TEXT)) != NULL)
add_stringf(data->errors, "status-message=\"%s\"", ippGetString(attrptr, 0, NULL));
}
{
ipp_attribute_t *group_found; /* Found parent attribute for group tests */
- if (expect->if_defined && !_ippVarsGet(vars, expect->if_defined))
+ if (expect->if_defined && !_ippVarsGet(data->vars, expect->if_defined))
continue;
if (expect->if_not_defined &&
- _ippVarsGet(vars, expect->if_not_defined))
+ _ippVarsGet(data->vars, expect->if_not_defined))
continue;
if ((found = ippFindAttribute(response, expect->name, IPP_TAG_ZERO)) != NULL && expect->in_group && expect->in_group != ippGetGroupTag(found))
if ((found && expect->not_expect) ||
(!found && !(expect->not_expect || expect->optional)) ||
- (found && !expect_matches(expect, ippGetValueTag(found))) ||
- (group_found && expect->in_group && ippGetGroupTag(group_found) != expect->in_group))
+ (found && !expect_matches(expect, found)) ||
+ (group_found && expect->in_group && ippGetGroupTag(group_found) != expect->in_group) ||
+ (expect->with_distinct && !with_distinct_values(NULL, found)))
{
if (expect->define_no_match)
- _ippVarsSet(vars, expect->define_no_match, "1");
+ _ippVarsSet(data->vars, expect->define_no_match, "1");
else if (!expect->define_match && !expect->define_value)
{
if (found && expect->not_expect && !expect->with_value && !expect->with_value_from)
add_stringf(data->errors, "EXPECTED: %s", expect->name);
else if (found)
{
- if (!expect_matches(expect, ippGetValueTag(found)))
+ if (!expect_matches(expect, found))
add_stringf(data->errors, "EXPECTED: %s OF-TYPE %s (got %s)",
expect->name, expect->of_type,
ippTagString(ippGetValueTag(found)));
add_stringf(data->errors, "EXPECTED: %s IN-GROUP %s (got %s).",
expect->name, ippTagString(expect->in_group),
ippTagString(ippGetGroupTag(group_found)));
+
+ if (expect->with_distinct)
+ with_distinct_values(data->errors, found);
}
}
if (found && expect->with_value_from && !with_value_from(NULL, ippFindAttribute(response, expect->with_value_from, IPP_TAG_ZERO), found, buffer, sizeof(buffer)))
{
if (expect->define_no_match)
- _ippVarsSet(vars, expect->define_no_match, "1");
+ _ippVarsSet(data->vars, expect->define_no_match, "1");
else if (!expect->define_match && !expect->define_value && ((!expect->repeat_match && !expect->repeat_no_match) || repeat_count >= expect->repeat_limit))
{
add_stringf(data->errors, "EXPECTED: %s WITH-VALUES-FROM %s", expect->name, expect->with_value_from);
else if (found && !with_value(data, NULL, expect->with_value, expect->with_flags, found, buffer, sizeof(buffer)))
{
if (expect->define_no_match)
- _ippVarsSet(vars, expect->define_no_match, "1");
+ _ippVarsSet(data->vars, expect->define_no_match, "1");
else if (!expect->define_match && !expect->define_value &&
!expect->repeat_match && (!expect->repeat_no_match || repeat_count >= expect->repeat_limit))
{
- if (expect->with_flags & _CUPS_WITH_REGEX)
+ if (expect->with_flags & IPPTOOL_WITH_REGEX)
add_stringf(data->errors, "EXPECTED: %s %s /%s/", expect->name, with_flags_string(expect->with_flags), expect->with_value);
else
add_stringf(data->errors, "EXPECTED: %s %s \"%s\"", expect->name, with_flags_string(expect->with_flags), expect->with_value);
if (found && expect->count > 0 && ippGetCount(found) != expect->count)
{
if (expect->define_no_match)
- _ippVarsSet(vars, expect->define_no_match, "1");
+ _ippVarsSet(data->vars, expect->define_no_match, "1");
else if (!expect->define_match && !expect->define_value)
{
- add_stringf(data->errors, "EXPECTED: %s COUNT %d (got %d)", expect->name,
- expect->count, ippGetCount(found));
+ add_stringf(data->errors, "EXPECTED: %s COUNT %d (got %d)", expect->name, expect->count, ippGetCount(found));
}
if (expect->repeat_no_match &&
if (!attrptr || ippGetCount(attrptr) != ippGetCount(found))
{
if (expect->define_no_match)
- _ippVarsSet(vars, expect->define_no_match, "1");
+ _ippVarsSet(data->vars, expect->define_no_match, "1");
else if (!expect->define_match && !expect->define_value)
{
if (!attrptr)
- add_stringf(data->errors,
- "EXPECTED: %s (%d values) SAME-COUNT-AS %s "
- "(not returned)", expect->name,
- ippGetCount(found), expect->same_count_as);
+ add_stringf(data->errors, "EXPECTED: %s (%d values) SAME-COUNT-AS %s (not returned)", expect->name, ippGetCount(found), expect->same_count_as);
else if (ippGetCount(attrptr) != ippGetCount(found))
- add_stringf(data->errors,
- "EXPECTED: %s (%d values) SAME-COUNT-AS %s "
- "(%d values)", expect->name, ippGetCount(found),
- expect->same_count_as, ippGetCount(attrptr));
+ add_stringf(data->errors, "EXPECTED: %s (%d values) SAME-COUNT-AS %s (%d values)", expect->name, ippGetCount(found), expect->same_count_as, ippGetCount(attrptr));
}
if (expect->repeat_no_match &&
}
}
+ if (found && expect->display_match && (data->output == IPPTOOL_OUTPUT_TEST || (data->output == IPPTOOL_OUTPUT_PLIST && data->outfile != cupsFileStdout())))
+ cupsFilePrintf(cupsFileStdout(), "\n%s\n\n", expect->display_match);
+
if (found && expect->define_match)
- _ippVarsSet(vars, expect->define_match, "1");
+ _ippVarsSet(data->vars, expect->define_match, "1");
if (found && expect->define_value)
{
}
}
- _ippVarsSet(vars, expect->define_value, buffer);
+ _ippVarsSet(data->vars, expect->define_value, buffer);
}
if (found && expect->repeat_match &&
if (repeat_test)
{
- if (data->output == _CUPS_OUTPUT_TEST || (data->output == _CUPS_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
+ if (data->output == IPPTOOL_OUTPUT_TEST || (data->output == IPPTOOL_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
{
cupsFilePrintf(cupsFileStdout(), "%04d]\n", repeat_count);
\
{
if (!strcmp(data->displayed[i], attrname))
{
- print_attr(cupsFileStdout(), _CUPS_OUTPUT_TEST, attrptr, NULL);
+ print_attr(cupsFileStdout(), IPPTOOL_OUTPUT_TEST, attrptr, NULL);
break;
}
}
}
}
- if (data->output == _CUPS_OUTPUT_TEST || (data->output == _CUPS_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
+ if (data->output == IPPTOOL_OUTPUT_TEST || (data->output == IPPTOOL_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
{
cupsFilePrintf(cupsFileStdout(), " %-68.68s [", data->name);
}
else
data->fail_count ++;
- if (data->output == _CUPS_OUTPUT_PLIST)
+ if (data->output == IPPTOOL_OUTPUT_PLIST)
{
cupsFilePuts(data->outfile, "<key>Successful</key>\n");
cupsFilePuts(data->outfile, data->prev_pass ? "<true />\n" : "<false />\n");
cupsFilePuts(data->outfile, "</dict>\n");
cupsFilePuts(data->outfile, "</array>\n");
}
- else if (data->output == _CUPS_OUTPUT_IPPSERVER && response)
+ else if (data->output == IPPTOOL_OUTPUT_IPPSERVER && response)
{
for (attrptr = ippFirstAttribute(response); attrptr; attrptr = ippNextAttribute(response))
{
}
}
- if (data->output == _CUPS_OUTPUT_TEST || (data->output == _CUPS_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
+ if (data->output == IPPTOOL_OUTPUT_TEST || (data->output == IPPTOOL_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
{
cupsFilePuts(cupsFileStdout(), data->prev_pass ? "PASS]\n" : "FAIL]\n");
if (data->verbosity && response)
{
for (attrptr = ippFirstAttribute(response); attrptr; attrptr = ippNextAttribute(response))
- print_attr(cupsFileStdout(), _CUPS_OUTPUT_TEST, attrptr, NULL);
+ print_attr(cupsFileStdout(), IPPTOOL_OUTPUT_TEST, attrptr, NULL);
}
}
}
- else if (!data->prev_pass && data->output != _CUPS_OUTPUT_QUIET)
+ else if (!data->prev_pass && data->output != IPPTOOL_OUTPUT_QUIET)
fprintf(stderr, "%s\n", cupsLastErrorString());
- if (data->prev_pass && data->output >= _CUPS_OUTPUT_LIST && !data->verbosity && data->num_displayed > 0)
+ if (data->prev_pass && data->output >= IPPTOOL_OUTPUT_LIST && !data->verbosity && data->num_displayed > 0)
{
size_t width; /* Length of value */
}
}
- if (data->output == _CUPS_OUTPUT_CSV)
+ if (data->output == IPPTOOL_OUTPUT_CSV)
print_csv(data, NULL, NULL, data->num_displayed, data->displayed, widths);
else
print_line(data, NULL, NULL, data->num_displayed, data->displayed, widths);
if (attrptr)
{
- if (data->output == _CUPS_OUTPUT_CSV)
- print_csv(data, response, attrptr, data->num_displayed, data->displayed, widths);
+ if (data->output == IPPTOOL_OUTPUT_CSV)
+ attrptr = print_csv(data, response, attrptr, data->num_displayed, data->displayed, widths);
else
- print_line(data, response, attrptr, data->num_displayed, data->displayed, widths);
+ attrptr = print_line(data, response, attrptr, data->num_displayed, data->displayed, widths);
while (attrptr && ippGetGroupTag(attrptr) > IPP_TAG_OPERATION)
attrptr = ippNextAttribute(response);
}
else if (!data->prev_pass)
{
- if (data->output == _CUPS_OUTPUT_PLIST)
+ if (data->output == IPPTOOL_OUTPUT_PLIST)
{
cupsFilePuts(data->outfile, "<key>Errors</key>\n");
cupsFilePuts(data->outfile, "<array>\n");
cupsFilePuts(data->outfile, "</array>\n");
}
- if (data->output == _CUPS_OUTPUT_TEST || (data->output == _CUPS_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
+ if (data->output == IPPTOOL_OUTPUT_TEST || (data->output == IPPTOOL_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
{
for (error = (char *)cupsArrayFirst(data->errors);
error;
}
}
- if (data->num_displayed > 0 && !data->verbosity && response && (data->output == _CUPS_OUTPUT_TEST || (data->output == _CUPS_OUTPUT_PLIST && data->outfile != cupsFileStdout())))
+ if (data->num_displayed > 0 && !data->verbosity && response && (data->output == IPPTOOL_OUTPUT_TEST || (data->output == IPPTOOL_OUTPUT_PLIST && data->outfile != cupsFileStdout())))
{
for (attrptr = ippFirstAttribute(response); attrptr; attrptr = ippNextAttribute(response))
{
skip_error:
- if (data->output == _CUPS_OUTPUT_PLIST)
+ if (data->monitor_thread)
+ {
+ data->monitor_done = 1;
+ _cupsThreadWait(data->monitor_thread);
+ }
+
+ if (data->output == IPPTOOL_OUTPUT_PLIST)
cupsFilePuts(data->outfile, "</dict>\n");
ippDelete(response);
for (i = 0; i < data->num_statuses; i ++)
{
- if (data->statuses[i].if_defined)
- free(data->statuses[i].if_defined);
- if (data->statuses[i].if_not_defined)
- free(data->statuses[i].if_not_defined);
- if (data->statuses[i].define_match)
- free(data->statuses[i].define_match);
- if (data->statuses[i].define_no_match)
- free(data->statuses[i].define_no_match);
+ free(data->statuses[i].if_defined);
+ free(data->statuses[i].if_not_defined);
+ free(data->statuses[i].define_match);
+ free(data->statuses[i].define_no_match);
}
data->num_statuses = 0;
for (i = data->num_expects, expect = data->expects; i > 0; i --, expect ++)
{
free(expect->name);
- if (expect->of_type)
- free(expect->of_type);
- if (expect->same_count_as)
- free(expect->same_count_as);
- if (expect->if_defined)
- free(expect->if_defined);
- if (expect->if_not_defined)
- free(expect->if_not_defined);
- if (expect->with_value)
- free(expect->with_value);
- if (expect->define_match)
- free(expect->define_match);
- if (expect->define_no_match)
- free(expect->define_no_match);
- if (expect->define_value)
- free(expect->define_value);
+ free(expect->of_type);
+ free(expect->same_count_as);
+ free(expect->if_defined);
+ free(expect->if_not_defined);
+ free(expect->with_value);
+ free(expect->define_match);
+ free(expect->define_no_match);
+ free(expect->define_value);
+ free(expect->display_match);
}
data->num_expects = 0;
free(data->displayed[i]);
data->num_displayed = 0;
+ free(data->monitor_uri);
+ data->monitor_uri = NULL;
+
+ for (i = data->num_monitor_expects, expect = data->monitor_expects; i > 0; i --, expect ++)
+ {
+ free(expect->name);
+ free(expect->of_type);
+ free(expect->same_count_as);
+ free(expect->if_defined);
+ free(expect->if_not_defined);
+ free(expect->with_value);
+ free(expect->define_match);
+ free(expect->define_no_match);
+ free(expect->define_value);
+ free(expect->display_match);
+ }
+ data->num_monitor_expects = 0;
+
return (data->ignore_errors || data->prev_pass);
}
*/
static int /* O - 1 on success, 0 on failure */
-do_tests(const char *testfile, /* I - Test file to use */
- _ipp_vars_t *vars, /* I - Variables */
- _cups_testdata_t *data) /* I - Test data */
+do_tests(const char *testfile, /* I - Test file to use */
+ ipptool_test_t *data) /* I - Test data */
{
http_encryption_t encryption; /* Encryption mode */
* Connect to the printer/server...
*/
- if (!_cups_strcasecmp(vars->scheme, "https") || !_cups_strcasecmp(vars->scheme, "ipps"))
+ if (!_cups_strcasecmp(data->vars->scheme, "https") || !_cups_strcasecmp(data->vars->scheme, "ipps") || data->vars->port == 443)
encryption = HTTP_ENCRYPTION_ALWAYS;
else
encryption = data->encryption;
- if ((data->http = httpConnect2(vars->host, vars->port, NULL, data->family, encryption, 1, 30000, NULL)) == NULL)
+ if ((data->http = httpConnect2(data->vars->host, data->vars->port, NULL, data->family, encryption, 1, 30000, NULL)) == NULL)
{
- print_fatal_error(data, "Unable to connect to \"%s\" on port %d - %s", vars->host, vars->port, cupsLastErrorString());
+ print_fatal_error(data, "Unable to connect to \"%s\" on port %d - %s", data->vars->host, data->vars->port, cupsLastErrorString());
return (0);
}
* Run tests...
*/
- _ippFileParse(vars, testfile, (void *)data);
+ _ippFileParse(data->vars, testfile, (void *)data);
/*
* Close connection and return...
static int /* O - 1 to continue, 0 to stop */
error_cb(_ipp_file_t *f, /* I - IPP file data */
- _cups_testdata_t *data, /* I - Test data */
+ ipptool_test_t *data, /* I - Test data */
const char *error) /* I - Error message */
{
(void)f;
static int /* O - 1 if matches, 0 otherwise */
expect_matches(
- _cups_expect_t *expect, /* I - Expected attribute */
- ipp_tag_t value_tag) /* I - Value tag for attribute */
+ ipptool_expect_t *expect, /* I - Expected attribute */
+ ipp_attribute_t *attr) /* I - Attribute */
{
- int match; /* Match? */
- char *of_type, /* Type name to match */
- *next, /* Next name to match */
- sep; /* Separator character */
+ int i, /* Looping var */
+ count, /* Number of values */
+ match; /* Match? */
+ char *of_type, /* Type name to match */
+ *paren, /* Pointer to opening parenthesis */
+ *next, /* Next name to match */
+ sep; /* Separator character */
+ ipp_tag_t value_tag; /* Syntax/value tag */
+ int lower, upper; /* Lower and upper bounds for syntax */
/*
* types separated by "," or "|"...
*/
+ value_tag = ippGetValueTag(attr);
+ count = ippGetCount(attr);
+
for (of_type = expect->of_type, match = 0; !match && *of_type; of_type = next)
{
/*
* Support some meta-types to make it easier to write the test file.
*/
+ if ((paren = strchr(of_type, '(')) != NULL)
+ {
+ char *ptr; // Pointer into syntax string
+
+ *paren = '\0';
+
+ if (!strncmp(paren + 1, "MIN:", 4))
+ {
+ lower = INT_MIN;
+ ptr = paren + 5;
+ }
+ else if ((ptr = strchr(paren + 1, ':')) != NULL)
+ {
+ lower = atoi(paren + 1);
+ }
+ else
+ {
+ lower = 0;
+ ptr = paren + 1;
+ }
+
+ if (!strcmp(ptr, "MAX)"))
+ upper = INT_MAX;
+ else
+ upper = atoi(ptr);
+ }
+ else
+ {
+ lower = INT_MIN;
+ upper = INT_MAX;
+ }
+
if (!strcmp(of_type, "text"))
- match = value_tag == IPP_TAG_TEXTLANG || value_tag == IPP_TAG_TEXT;
+ {
+ if (upper == INT_MAX)
+ upper = 1023;
+
+ if (value_tag == IPP_TAG_TEXTLANG || value_tag == IPP_TAG_TEXT)
+ {
+ for (i = 0; i < count; i ++)
+ {
+ if (strlen(ippGetString(attr, i, NULL)) > (size_t)upper)
+ break;
+ }
+
+ match = (i == count);
+ }
+ }
else if (!strcmp(of_type, "name"))
- match = value_tag == IPP_TAG_NAMELANG || value_tag == IPP_TAG_NAME;
+ {
+ if (upper == INT_MAX)
+ upper = 255;
+
+ if (value_tag == IPP_TAG_NAMELANG || value_tag == IPP_TAG_NAME)
+ {
+ for (i = 0; i < count; i ++)
+ {
+ if (strlen(ippGetString(attr, i, NULL)) > (size_t)upper)
+ break;
+ }
+
+ match = (i == count);
+ }
+ }
else if (!strcmp(of_type, "collection"))
+ {
match = value_tag == IPP_TAG_BEGIN_COLLECTION;
- else
- match = value_tag == ippTagValue(of_type);
+ }
+ else if (value_tag == ippTagValue(of_type))
+ {
+ switch (value_tag)
+ {
+ case IPP_TAG_KEYWORD :
+ case IPP_TAG_URI :
+ if (upper == INT_MAX)
+ {
+ if (value_tag == IPP_TAG_KEYWORD)
+ upper = 255;
+ else
+ upper = 1023;
+ }
+
+ for (i = 0; i < count; i ++)
+ {
+ if (strlen(ippGetString(attr, i, NULL)) > (size_t)upper)
+ break;
+ }
+
+ match = (i == count);
+ break;
+
+ case IPP_TAG_STRING :
+ if (upper == INT_MAX)
+ upper = 1023;
+
+ for (i = 0; i < count; i ++)
+ {
+ int datalen; // Length of octetString value
+
+ ippGetOctetString(attr, i, &datalen);
+
+ if (datalen > upper)
+ break;
+ }
+
+ match = (i == count);
+ break;
+
+ case IPP_TAG_INTEGER :
+ for (i = 0; i < count; i ++)
+ {
+ int value = ippGetInteger(attr, i);
+ // Integer value
+
+ if (value < lower || value > upper)
+ break;
+ }
+
+ match = (i == count);
+ break;
+
+ case IPP_TAG_RANGE :
+ for (i = 0; i < count; i ++)
+ {
+ int vupper, vlower = ippGetRange(attr, i, &vupper);
+ // Range value
+
+ if (vlower < lower || vlower > upper || vupper < lower || vupper > upper)
+ break;
+ }
+
+ match = (i == count);
+ break;
+
+ default :
+ // No other constraints, so this is a match
+ match = 1;
+ break;
+ }
+ }
/*
- * Restore the separator if we have one...
+ * Restore the separators if we have them...
*/
+ if (paren)
+ *paren = '(';
+
if (sep)
*next++ = sep;
}
dstptr = dst; /* Should never happen */
strlcpy(dstptr, src, dstsize - (size_t)(dstptr - dst));
+
+#if _WIN32
+ if (_access(dst, 0))
+ {
+ /*
+ * Not available relative to the testfile, see if it can be found on the
+ * desktop...
+ */
+ const char *userprofile = getenv("USERPROFILE");
+ /* User home directory */
+
+ if (userprofile)
+ snprintf(dst, dstsize, "%s/Desktop/%s", userprofile, src);
+ }
+#endif /* _WIN32 */
}
return (dst);
value = ippGetString(attr, element, NULL);
- if (flags & _CUPS_WITH_HOSTNAME)
+ if (flags & IPPTOOL_WITH_HOSTNAME)
{
if (httpSeparateURI(HTTP_URI_CODING_ALL, value, scheme, sizeof(scheme), userpass, sizeof(userpass), buffer, (int)bufsize, &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
buffer[0] = '\0';
return (buffer);
}
- else if (flags & _CUPS_WITH_RESOURCE)
+ else if (flags & IPPTOOL_WITH_RESOURCE)
{
if (httpSeparateURI(HTTP_URI_CODING_ALL, value, scheme, sizeof(scheme), userpass, sizeof(userpass), hostname, sizeof(hostname), &port, buffer, (int)bufsize) < HTTP_URI_STATUS_OK)
buffer[0] = '\0';
return (buffer);
}
- else if (flags & _CUPS_WITH_SCHEME)
+ else if (flags & IPPTOOL_WITH_SCHEME)
{
if (httpSeparateURI(HTTP_URI_CODING_ALL, value, buffer, (int)bufsize, userpass, sizeof(userpass), hostname, sizeof(hostname), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
buffer[0] = '\0';
httpAssembleURI(HTTP_URI_CODING_ALL, buffer, (int)bufsize, scheme, userpass, hostname, port, resource);
}
- return (buffer);
- }
- else
- return (value);
-}
+ return (buffer);
+ }
+ else
+ return (value);
+}
+
+
+/*
+ * 'init_data()' - Initialize test data.
+ */
+
+static void
+init_data(ipptool_test_t *data) /* I - Data */
+{
+ memset(data, 0, sizeof(ipptool_test_t));
+
+ data->output = IPPTOOL_OUTPUT_LIST;
+ data->outfile = cupsFileStdout();
+ data->family = AF_UNSPEC;
+ data->def_transfer = IPPTOOL_TRANSFER_AUTO;
+ data->def_version = 11;
+ data->errors = cupsArrayNew3(NULL, NULL, NULL, 0, (cups_acopy_func_t)strdup, (cups_afree_func_t)free);
+ data->pass = 1;
+ data->prev_pass = 1;
+ data->request_id = (CUPS_RAND() % 1000) * 137;
+ data->show_header = 1;
+}
+
+
+/*
+ * 'iso_date()' - Return an ISO 8601 date/time string for the given IPP dateTime
+ * value.
+ */
+
+static char * /* O - ISO 8601 date/time string */
+iso_date(const ipp_uchar_t *date) /* I - IPP (RFC 1903) date/time value */
+{
+ time_t utctime; /* UTC time since 1970 */
+ struct tm utcdate; /* UTC date/time */
+ static char buffer[255]; /* String buffer */
+
+
+ utctime = ippDateToTime(date);
+ gmtime_r(&utctime, &utcdate);
+
+ snprintf(buffer, sizeof(buffer), "%04d-%02d-%02dT%02d:%02d:%02dZ",
+ utcdate.tm_year + 1900, utcdate.tm_mon + 1, utcdate.tm_mday,
+ utcdate.tm_hour, utcdate.tm_min, utcdate.tm_sec);
+
+ return (buffer);
+}
+
+
+/*
+ * 'parse_monitor_printer_state()' - Parse the MONITOR-PRINTER-STATE directive.
+ *
+ * MONITOR-PRINTER-STATE [printer-uri] {
+ * DELAY nnn
+ * EXPECT attribute-name ...
+ * }
+ */
+
+static int /* O - 1 to continue, 0 to stop */
+parse_monitor_printer_state(
+ _ipp_file_t *f, /* I - IPP file data */
+ ipptool_test_t *data) /* I - Test data */
+{
+ char token[256], /* Token string */
+ name[1024], /* Name string */
+ temp[1024], /* Temporary string */
+ value[1024], /* Value string */
+ *ptr; /* Pointer into value */
+
+
+ if (!_ippFileReadToken(f, temp, sizeof(temp)))
+ {
+ print_fatal_error(data, "Missing printer URI on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ if (strcmp(temp, "{"))
+ {
+ // Got a printer URI so copy it...
+ _ippVarsExpand(data->vars, value, temp, sizeof(value));
+ data->monitor_uri = strdup(value);
+
+ // Then see if we have an opening brace...
+ if (!_ippFileReadToken(f, temp, sizeof(temp)) || strcmp(temp, "{"))
+ {
+ print_fatal_error(data, "Missing opening brace on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+ }
+ else
+ {
+ // Use the default printer URI...
+ data->monitor_uri = strdup(data->vars->uri);
+ }
+
+ // Loop until we get a closing brace...
+ while (_ippFileReadToken(f, token, sizeof(token)))
+ {
+ if (_cups_strcasecmp(token, "COUNT") &&
+ _cups_strcasecmp(token, "DEFINE-MATCH") &&
+ _cups_strcasecmp(token, "DEFINE-NO-MATCH") &&
+ _cups_strcasecmp(token, "DEFINE-VALUE") &&
+ _cups_strcasecmp(token, "DISPLAY-MATCH") &&
+ _cups_strcasecmp(token, "IF-DEFINED") &&
+ _cups_strcasecmp(token, "IF-NOT-DEFINED") &&
+ _cups_strcasecmp(token, "IN-GROUP") &&
+ _cups_strcasecmp(token, "OF-TYPE") &&
+ _cups_strcasecmp(token, "WITH-DISTINCT-VALUES") &&
+ _cups_strcasecmp(token, "WITH-VALUE"))
+ data->last_expect = NULL;
+
+ if (!strcmp(token, "}"))
+ return (1);
+ else if (!_cups_strcasecmp(token, "EXPECT"))
+ {
+ /*
+ * Expected attributes...
+ */
+
+ if (data->num_monitor_expects >= (int)(sizeof(data->monitor_expects) / sizeof(data->monitor_expects[0])))
+ {
+ print_fatal_error(data, "Too many EXPECT's on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ if (!_ippFileReadToken(f, name, sizeof(name)))
+ {
+ print_fatal_error(data, "Missing EXPECT name on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ data->last_expect = data->monitor_expects + data->num_monitor_expects;
+ data->num_monitor_expects ++;
+
+ memset(data->last_expect, 0, sizeof(ipptool_expect_t));
+ data->last_expect->repeat_limit = 1000;
+
+ if (name[0] == '!')
+ {
+ data->last_expect->not_expect = 1;
+ data->last_expect->name = strdup(name + 1);
+ }
+ else if (name[0] == '?')
+ {
+ data->last_expect->optional = 1;
+ data->last_expect->name = strdup(name + 1);
+ }
+ else
+ data->last_expect->name = strdup(name);
+ }
+ else if (!_cups_strcasecmp(token, "COUNT"))
+ {
+ int count; /* Count value */
+
+ if (!_ippFileReadToken(f, temp, sizeof(temp)))
+ {
+ print_fatal_error(data, "Missing COUNT number on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ if ((count = atoi(temp)) <= 0)
+ {
+ print_fatal_error(data, "Bad COUNT \"%s\" on line %d of \"%s\".", temp, f->linenum, f->filename);
+ return (0);
+ }
+
+ if (data->last_expect)
+ {
+ data->last_expect->count = count;
+ }
+ else
+ {
+ print_fatal_error(data, "COUNT without a preceding EXPECT on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+ }
+ else if (!_cups_strcasecmp(token, "DEFINE-MATCH"))
+ {
+ if (!_ippFileReadToken(f, temp, sizeof(temp)))
+ {
+ print_fatal_error(data, "Missing DEFINE-MATCH variable on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ if (data->last_expect)
+ {
+ data->last_expect->define_match = strdup(temp);
+ }
+ else
+ {
+ print_fatal_error(data, "DEFINE-MATCH without a preceding EXPECT on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+ }
+ else if (!_cups_strcasecmp(token, "DEFINE-NO-MATCH"))
+ {
+ if (!_ippFileReadToken(f, temp, sizeof(temp)))
+ {
+ print_fatal_error(data, "Missing DEFINE-NO-MATCH variable on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ if (data->last_expect)
+ {
+ data->last_expect->define_no_match = strdup(temp);
+ }
+ else
+ {
+ print_fatal_error(data, "DEFINE-NO-MATCH without a preceding EXPECT on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+ }
+ else if (!_cups_strcasecmp(token, "DEFINE-VALUE"))
+ {
+ if (!_ippFileReadToken(f, temp, sizeof(temp)))
+ {
+ print_fatal_error(data, "Missing DEFINE-VALUE variable on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ if (data->last_expect)
+ {
+ data->last_expect->define_value = strdup(temp);
+ }
+ else
+ {
+ print_fatal_error(data, "DEFINE-VALUE without a preceding EXPECT on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+ }
+ else if (!_cups_strcasecmp(token, "DISPLAY-MATCH"))
+ {
+ if (!_ippFileReadToken(f, temp, sizeof(temp)))
+ {
+ print_fatal_error(data, "Missing DISPLAY-MATCH message on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ if (data->last_expect)
+ {
+ data->last_expect->display_match = strdup(temp);
+ }
+ else
+ {
+ print_fatal_error(data, "DISPLAY-MATCH without a preceding EXPECT on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+ }
+ else if (!_cups_strcasecmp(token, "DELAY"))
+ {
+ /*
+ * Delay before operation...
+ */
+
+ double dval; /* Delay value */
+
+ if (!_ippFileReadToken(f, temp, sizeof(temp)))
+ {
+ print_fatal_error(data, "Missing DELAY value on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ _ippVarsExpand(data->vars, value, temp, sizeof(value));
+
+ if ((dval = _cupsStrScand(value, &ptr, localeconv())) < 0.0 || (*ptr && *ptr != ','))
+ {
+ print_fatal_error(data, "Bad DELAY value \"%s\" on line %d of \"%s\".", value, f->linenum, f->filename);
+ return (0);
+ }
+
+ data->monitor_delay = (useconds_t)(1000000.0 * dval);
+
+ if (*ptr == ',')
+ {
+ if ((dval = _cupsStrScand(ptr + 1, &ptr, localeconv())) <= 0.0 || *ptr)
+ {
+ print_fatal_error(data, "Bad DELAY value \"%s\" on line %d of \"%s\".", value, f->linenum, f->filename);
+ return (0);
+ }
+
+ data->monitor_interval = (useconds_t)(1000000.0 * dval);
+ }
+ else
+ data->monitor_interval = data->monitor_delay;
+ }
+ else if (!_cups_strcasecmp(token, "OF-TYPE"))
+ {
+ if (!_ippFileReadToken(f, temp, sizeof(temp)))
+ {
+ print_fatal_error(data, "Missing OF-TYPE value tag(s) on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ if (data->last_expect)
+ {
+ data->last_expect->of_type = strdup(temp);
+ }
+ else
+ {
+ print_fatal_error(data, "OF-TYPE without a preceding EXPECT on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+ }
+ else if (!_cups_strcasecmp(token, "IN-GROUP"))
+ {
+ ipp_tag_t in_group; /* IN-GROUP value */
+
+ if (!_ippFileReadToken(f, temp, sizeof(temp)))
+ {
+ print_fatal_error(data, "Missing IN-GROUP group tag on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ if ((in_group = ippTagValue(temp)) == IPP_TAG_ZERO || in_group >= IPP_TAG_UNSUPPORTED_VALUE)
+ {
+ print_fatal_error(data, "Bad IN-GROUP group tag \"%s\" on line %d of \"%s\".", temp, f->linenum, f->filename);
+ return (0);
+ }
+ else if (data->last_expect)
+ {
+ data->last_expect->in_group = in_group;
+ }
+ else
+ {
+ print_fatal_error(data, "IN-GROUP without a preceding EXPECT on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+ }
+ else if (!_cups_strcasecmp(token, "IF-DEFINED"))
+ {
+ if (!_ippFileReadToken(f, temp, sizeof(temp)))
+ {
+ print_fatal_error(data, "Missing IF-DEFINED name on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ if (data->last_expect)
+ {
+ data->last_expect->if_defined = strdup(temp);
+ }
+ else
+ {
+ print_fatal_error(data, "IF-DEFINED without a preceding EXPECT on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+ }
+ else if (!_cups_strcasecmp(token, "IF-NOT-DEFINED"))
+ {
+ if (!_ippFileReadToken(f, temp, sizeof(temp)))
+ {
+ print_fatal_error(data, "Missing IF-NOT-DEFINED name on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ if (data->last_expect)
+ {
+ data->last_expect->if_not_defined = strdup(temp);
+ }
+ else
+ {
+ print_fatal_error(data, "IF-NOT-DEFINED without a preceding EXPECT on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+ }
+ else if (!_cups_strcasecmp(token, "WITH-DISTINCT-VALUES"))
+ {
+ if (data->last_expect)
+ {
+ data->last_expect->with_distinct = 1;
+ }
+ else
+ {
+ print_fatal_error(data, "%s without a preceding EXPECT on line %d of \"%s\".", token, f->linenum, f->filename);
+ return (0);
+ }
+ }
+ else if (!_cups_strcasecmp(token, "WITH-VALUE"))
+ {
+ off_t lastpos; /* Last file position */
+ int lastline; /* Last line number */
+
+ if (!_ippFileReadToken(f, temp, sizeof(temp)))
+ {
+ print_fatal_error(data, "Missing %s value on line %d of \"%s\".", token, f->linenum, f->filename);
+ return (0);
+ }
+
+ /*
+ * Read additional comma-delimited values - needed since legacy test files
+ * will have unquoted WITH-VALUE values with commas...
+ */
+
+ ptr = temp + strlen(temp);
+
+ for (;;)
+ {
+ lastpos = cupsFileTell(f->fp);
+ lastline = f->linenum;
+ ptr += strlen(ptr);
+
+ if (!_ippFileReadToken(f, ptr, (sizeof(temp) - (size_t)(ptr - temp))))
+ break;
+
+ if (!strcmp(ptr, ","))
+ {
+ /*
+ * Append a value...
+ */
+
+ ptr += strlen(ptr);
+
+ if (!_ippFileReadToken(f, ptr, (sizeof(temp) - (size_t)(ptr - temp))))
+ break;
+ }
+ else
+ {
+ /*
+ * Not another value, stop here...
+ */
+
+ cupsFileSeek(f->fp, lastpos);
+ f->linenum = lastline;
+ *ptr = '\0';
+ break;
+ }
+ }
+ if (data->last_expect)
+ {
+ /*
+ * Expand any variables in the value and then save it.
+ */
-/*
- * 'init_data()' - Initialize test data.
- */
+ _ippVarsExpand(data->vars, value, temp, sizeof(value));
-static void
-init_data(_cups_testdata_t *data) /* I - Data */
-{
- memset(data, 0, sizeof(_cups_testdata_t));
+ ptr = value + strlen(value) - 1;
- data->output = _CUPS_OUTPUT_LIST;
- data->outfile = cupsFileStdout();
- data->family = AF_UNSPEC;
- data->def_transfer = _CUPS_TRANSFER_AUTO;
- data->def_version = 11;
- data->errors = cupsArrayNew3(NULL, NULL, NULL, 0, (cups_acopy_func_t)strdup, (cups_afree_func_t)free);
- data->pass = 1;
- data->prev_pass = 1;
- data->request_id = (CUPS_RAND() % 1000) * 137 + 1;
- data->show_header = 1;
-}
+ if (value[0] == '/' && ptr > value && *ptr == '/')
+ {
+ /*
+ * WITH-VALUE is a POSIX extended regular expression.
+ */
+ data->last_expect->with_value = calloc(1, (size_t)(ptr - value));
+ data->last_expect->with_flags |= IPPTOOL_WITH_REGEX;
-/*
- * 'iso_date()' - Return an ISO 8601 date/time string for the given IPP dateTime
- * value.
- */
+ if (data->last_expect->with_value)
+ memcpy(data->last_expect->with_value, value + 1, (size_t)(ptr - value - 1));
+ }
+ else
+ {
+ /*
+ * WITH-VALUE is a literal value...
+ */
-static char * /* O - ISO 8601 date/time string */
-iso_date(const ipp_uchar_t *date) /* I - IPP (RFC 1903) date/time value */
-{
- time_t utctime; /* UTC time since 1970 */
- struct tm utcdate; /* UTC date/time */
- static char buffer[255]; /* String buffer */
+ for (ptr = value; *ptr; ptr ++)
+ {
+ if (*ptr == '\\' && ptr[1])
+ {
+ /*
+ * Remove \ from \foo...
+ */
+ _cups_strcpy(ptr, ptr + 1);
+ }
+ }
- utctime = ippDateToTime(date);
- gmtime_r(&utctime, &utcdate);
+ data->last_expect->with_value = strdup(value);
+ data->last_expect->with_flags |= IPPTOOL_WITH_LITERAL;
+ }
+ }
+ else
+ {
+ print_fatal_error(data, "%s without a preceding EXPECT on line %d of \"%s\".", token, f->linenum, f->filename);
+ return (0);
+ }
+ }
+ }
- snprintf(buffer, sizeof(buffer), "%04d-%02d-%02dT%02d:%02d:%02dZ",
- utcdate.tm_year + 1900, utcdate.tm_mon + 1, utcdate.tm_mday,
- utcdate.tm_hour, utcdate.tm_min, utcdate.tm_sec);
+ print_fatal_error(data, "Missing closing brace on line %d of \"%s\".", f->linenum, f->filename);
- return (buffer);
+ return (0);
}
* Display the prompt...
*/
- cupsFilePrintf(cupsFileStdout(), "%s\n---- PRESS ANY KEY ----", message);
+ cupsFilePrintf(cupsFileStdout(), "\n%s\n\n---- PRESS ANY KEY ----", message);
#ifdef _WIN32
/*
*/
static void
-print_attr(cups_file_t *outfile, /* I - Output file */
- _cups_output_t output, /* I - Output format */
- ipp_attribute_t *attr, /* I - Attribute to print */
- ipp_tag_t *group) /* IO - Current group */
+print_attr(cups_file_t *outfile, /* I - Output file */
+ ipptool_output_t output, /* I - Output format */
+ ipp_attribute_t *attr, /* I - Attribute to print */
+ ipp_tag_t *group) /* IO - Current group */
{
int i, /* Looping var */
count; /* Number of values */
ipp_attribute_t *colattr; /* Collection attribute */
- if (output == _CUPS_OUTPUT_PLIST)
+ if (output == IPPTOOL_OUTPUT_PLIST)
{
if (!ippGetName(attr) || (group && *group != ippGetGroupTag(attr)))
{
{
char buffer[131072]; /* Value buffer */
- if (output == _CUPS_OUTPUT_TEST)
+ if (output == IPPTOOL_OUTPUT_TEST)
{
if (!ippGetName(attr))
{
* 'print_csv()' - Print a line of CSV text.
*/
-static void
+static ipp_attribute_t * /* O - Next attribute */
print_csv(
- _cups_testdata_t *data, /* I - Test data */
- ipp_t *ipp, /* I - Response message */
- ipp_attribute_t *attr, /* I - First attribute for line */
- int num_displayed, /* I - Number of attributes to display */
- char **displayed, /* I - Attributes to display */
- size_t *widths) /* I - Column widths */
+ ipptool_test_t *data, /* I - Test data */
+ ipp_t *ipp, /* I - Response message */
+ ipp_attribute_t *attr, /* I - First attribute for line */
+ int num_displayed, /* I - Number of attributes to display */
+ char **displayed, /* I - Attributes to display */
+ size_t *widths) /* I - Column widths */
{
int i; /* Looping var */
size_t maxlength; /* Max length of all columns */
- char *buffer, /* String buffer */
- *bufptr; /* Pointer into buffer */
- ipp_attribute_t *current; /* Current attribute */
-
+ ipp_attribute_t *current = attr; /* Current attribute */
+ char *values[MAX_DISPLAY], /* Strings to display */
+ *valptr; /* Pointer into value */
/*
* Get the maximum string length we have to show and allocate...
maxlength += 2;
- if ((buffer = malloc(maxlength)) == NULL)
- return;
-
/*
* Loop through the attributes to display...
*/
if (attr)
{
- for (i = 0; i < num_displayed; i ++)
- {
- if (i)
- cupsFilePutChar(data->outfile, ',');
+ // Collect the values...
+ memset(values, 0, sizeof(values));
- buffer[0] = '\0';
+ for (; current; current = ippNextAttribute(ipp))
+ {
+ if (!ippGetName(current))
+ break;
- for (current = attr; current; current = ippNextAttribute(ipp))
+ for (i = 0; i < num_displayed; i ++)
{
- if (!ippGetName(current))
- break;
- else if (!strcmp(ippGetName(current), displayed[i]))
+ if (!strcmp(ippGetName(current), displayed[i]))
{
- ippAttributeString(current, buffer, maxlength);
+ if ((values[i] = (char *)calloc(1, maxlength)) != NULL)
+ ippAttributeString(current, values[i], maxlength);
break;
- }
+ }
}
+ }
- if (strchr(buffer, ',') != NULL || strchr(buffer, '\"') != NULL ||
- strchr(buffer, '\\') != NULL)
+ // Output the line...
+ for (i = 0; i < num_displayed; i ++)
+ {
+ if (i)
+ cupsFilePutChar(data->outfile, ',');
+
+ if (!values[i])
+ continue;
+
+ if (strchr(values[i], ',') != NULL || strchr(values[i], '\"') != NULL || strchr(values[i], '\\') != NULL)
{
- cupsFilePutChar(cupsFileStdout(), '\"');
- for (bufptr = buffer; *bufptr; bufptr ++)
+ // Quoted value...
+ cupsFilePutChar(data->outfile, '\"');
+ for (valptr = values[i]; *valptr; valptr ++)
{
- if (*bufptr == '\\' || *bufptr == '\"')
- cupsFilePutChar(cupsFileStdout(), '\\');
- cupsFilePutChar(cupsFileStdout(), *bufptr);
+ if (*valptr == '\\' || *valptr == '\"')
+ cupsFilePutChar(data->outfile, '\\');
+ cupsFilePutChar(data->outfile, *valptr);
}
- cupsFilePutChar(cupsFileStdout(), '\"');
+ cupsFilePutChar(data->outfile, '\"');
}
else
- cupsFilePuts(data->outfile, buffer);
+ {
+ // Unquoted value...
+ cupsFilePuts(data->outfile, values[i]);
+ }
+
+ free(values[i]);
}
- cupsFilePutChar(cupsFileStdout(), '\n');
+ cupsFilePutChar(data->outfile, '\n');
}
else
{
+ // Show column headings...
for (i = 0; i < num_displayed; i ++)
{
if (i)
- cupsFilePutChar(cupsFileStdout(), ',');
+ cupsFilePutChar(data->outfile, ',');
cupsFilePuts(data->outfile, displayed[i]);
}
- cupsFilePutChar(cupsFileStdout(), '\n');
+ cupsFilePutChar(data->outfile, '\n');
}
- free(buffer);
+ return (current);
}
static void
print_fatal_error(
- _cups_testdata_t *data, /* I - Test data */
+ ipptool_test_t *data, /* I - Test data */
const char *s, /* I - Printf-style format string */
...) /* I - Additional arguments as needed */
{
* Then output it...
*/
- if (data->output == _CUPS_OUTPUT_PLIST)
+ if (data->output == IPPTOOL_OUTPUT_PLIST)
{
print_xml_header(data);
print_xml_trailer(data, 0, buffer);
static void
print_ippserver_attr(
- _cups_testdata_t *data, /* I - Test data */
+ ipptool_test_t *data, /* I - Test data */
ipp_attribute_t *attr, /* I - Attribute to print */
int indent) /* I - Indentation level */
{
static void
print_ippserver_string(
- _cups_testdata_t *data, /* I - Test data */
+ ipptool_test_t *data, /* I - Test data */
const char *s, /* I - String to print */
size_t len) /* I - Length of string */
{
* 'print_line()' - Print a line of formatted or CSV text.
*/
-static void
+static ipp_attribute_t * /* O - Next attribute */
print_line(
- _cups_testdata_t *data, /* I - Test data */
+ ipptool_test_t *data, /* I - Test data */
ipp_t *ipp, /* I - Response message */
ipp_attribute_t *attr, /* I - First attribute for line */
int num_displayed, /* I - Number of attributes to display */
{
int i; /* Looping var */
size_t maxlength; /* Max length of all columns */
- char *buffer; /* String buffer */
- ipp_attribute_t *current; /* Current attribute */
+ ipp_attribute_t *current = attr; /* Current attribute */
+ char *values[MAX_DISPLAY]; /* Strings to display */
/*
maxlength += 2;
- if ((buffer = malloc(maxlength)) == NULL)
- return;
-
/*
* Loop through the attributes to display...
*/
if (attr)
{
- for (i = 0; i < num_displayed; i ++)
- {
- if (i)
- cupsFilePutChar(cupsFileStdout(), ' ');
+ // Collect the values...
+ memset(values, 0, sizeof(values));
- buffer[0] = '\0';
+ for (; current; current = ippNextAttribute(ipp))
+ {
+ if (!ippGetName(current))
+ break;
- for (current = attr; current; current = ippNextAttribute(ipp))
+ for (i = 0; i < num_displayed; i ++)
{
- if (!ippGetName(current))
- break;
- else if (!strcmp(ippGetName(current), displayed[i]))
+ if (!strcmp(ippGetName(current), displayed[i]))
{
- ippAttributeString(current, buffer, maxlength);
+ if ((values[i] = (char *)calloc(1, maxlength)) != NULL)
+ ippAttributeString(current, values[i], maxlength);
break;
- }
+ }
}
+ }
+
+ // Output the line...
+ for (i = 0; i < num_displayed; i ++)
+ {
+ if (i)
+ cupsFilePutChar(data->outfile, ' ');
- cupsFilePrintf(data->outfile, "%*s", (int)-widths[i], buffer);
+ cupsFilePrintf(data->outfile, "%*s", (int)-widths[i], values[i] ? values[i] : "");
+ free(values[i]);
}
- cupsFilePutChar(cupsFileStdout(), '\n');
+ cupsFilePutChar(data->outfile, '\n');
}
else
{
+ // Show column headings...
+ char *buffer = (char *)malloc(maxlength);
+ // Buffer for separator lines
+
+ if (!buffer)
+ return (current);
+
for (i = 0; i < num_displayed; i ++)
{
if (i)
- cupsFilePutChar(cupsFileStdout(), ' ');
+ cupsFilePutChar(data->outfile, ' ');
cupsFilePrintf(data->outfile, "%*s", (int)-widths[i], displayed[i]);
}
- cupsFilePutChar(cupsFileStdout(), '\n');
+ cupsFilePutChar(data->outfile, '\n');
for (i = 0; i < num_displayed; i ++)
{
if (i)
- cupsFilePutChar(cupsFileStdout(), ' ');
+ cupsFilePutChar(data->outfile, ' ');
memset(buffer, '-', widths[i]);
buffer[widths[i]] = '\0';
cupsFilePuts(data->outfile, buffer);
}
- cupsFilePutChar(cupsFileStdout(), '\n');
+ cupsFilePutChar(data->outfile, '\n');
+ free(buffer);
}
- free(buffer);
+ return (current);
}
*/
static void
-print_xml_header(_cups_testdata_t *data)/* I - Test data */
+print_xml_header(ipptool_test_t *data)/* I - Test data */
{
if (!data->xml_header)
{
cupsFilePuts(data->outfile, "<key>ipptoolVersion</key>\n");
cupsFilePuts(data->outfile, "<string>" CUPS_SVERSION "</string>\n");
cupsFilePuts(data->outfile, "<key>Transfer</key>\n");
- cupsFilePrintf(data->outfile, "<string>%s</string>\n", data->transfer == _CUPS_TRANSFER_AUTO ? "auto" : data->transfer == _CUPS_TRANSFER_CHUNKED ? "chunked" : "length");
+ cupsFilePrintf(data->outfile, "<string>%s</string>\n", data->transfer == IPPTOOL_TRANSFER_AUTO ? "auto" : data->transfer == IPPTOOL_TRANSFER_CHUNKED ? "chunked" : "length");
cupsFilePuts(data->outfile, "<key>Tests</key>\n");
cupsFilePuts(data->outfile, "<array>\n");
static void
print_xml_trailer(
- _cups_testdata_t *data, /* I - Test data */
+ ipptool_test_t *data, /* I - Test data */
int success, /* I - 1 on success, 0 on failure */
const char *message) /* I - Error message or NULL */
{
*/
static int /* O - 1 to continue, 0 to stop */
-token_cb(_ipp_file_t *f, /* I - IPP file data */
- _ipp_vars_t *vars, /* I - IPP variables */
- _cups_testdata_t *data, /* I - Test data */
- const char *token) /* I - Current token */
+token_cb(_ipp_file_t *f, /* I - IPP file data */
+ _ipp_vars_t *vars, /* I - IPP variables */
+ ipptool_test_t *data, /* I - Test data */
+ const char *token) /* I - Current token */
{
char name[1024], /* Name string */
temp[1024], /* Temporary string */
_cups_strcasecmp(token, "DEFINE-MATCH") &&
_cups_strcasecmp(token, "DEFINE-NO-MATCH") &&
_cups_strcasecmp(token, "DEFINE-VALUE") &&
+ _cups_strcasecmp(token, "DISPLAY-MATCH") &&
_cups_strcasecmp(token, "IF-DEFINED") &&
_cups_strcasecmp(token, "IF-NOT-DEFINED") &&
_cups_strcasecmp(token, "IN-GROUP") &&
_cups_strcasecmp(token, "WITH-ALL-HOSTNAMES") &&
_cups_strcasecmp(token, "WITH-ALL-RESOURCES") &&
_cups_strcasecmp(token, "WITH-ALL-SCHEMES") &&
+ _cups_strcasecmp(token, "WITH-DISTINCT-VALUES") &&
_cups_strcasecmp(token, "WITH-HOSTNAME") &&
_cups_strcasecmp(token, "WITH-RESOURCE") &&
_cups_strcasecmp(token, "WITH-SCHEME") &&
if (!strcmp(token, "}"))
{
- return (do_test(f, vars, data));
+ return (do_test(f, data));
+ }
+ else if (!strcmp(token, "MONITOR-PRINTER-STATE"))
+ {
+ if (data->monitor_uri)
+ {
+ print_fatal_error(data, "Extra MONITOR-PRINTER-STATE seen on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ return (parse_monitor_printer_state(f, data));
}
else if (!strcmp(token, "COMPRESSION"))
{
if (_ippFileReadToken(f, temp, sizeof(temp)))
{
- pause_message(temp);
+ strlcpy(data->pause, temp, sizeof(data->pause));
}
else
{
{
if (isdigit(temp[0] & 255))
{
- data->request_id = atoi(temp);
+ data->request_id = atoi(temp) - 1;
}
else if (!_cups_strcasecmp(temp, "random"))
{
- data->request_id = (CUPS_RAND() % 1000) * 137 + 1;
+ data->request_id = (CUPS_RAND() % 1000) * 137;
}
else
{
return (0);
}
}
+ else if (!strcmp(token, "PASS-IF-DEFINED"))
+ {
+ /*
+ * PASS-IF-DEFINED variable
+ */
+
+ if (_ippFileReadToken(f, name, sizeof(name)))
+ {
+ if (_ippVarsGet(vars, name))
+ data->pass_test = 1;
+ }
+ else
+ {
+ print_fatal_error(data, "Missing PASS-IF-DEFINED value on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+ }
+ else if (!strcmp(token, "PASS-IF-NOT-DEFINED"))
+ {
+ /*
+ * PASS-IF-NOT-DEFINED variable
+ */
+
+ if (_ippFileReadToken(f, name, sizeof(name)))
+ {
+ if (!_ippVarsGet(vars, name))
+ data->pass_test = 1;
+ }
+ else
+ {
+ print_fatal_error(data, "Missing PASS-IF-NOT-DEFINED value on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+ }
else if (!strcmp(token, "SKIP-IF-DEFINED"))
{
/*
{
if (!strcmp(temp, "auto"))
{
- data->transfer = _CUPS_TRANSFER_AUTO;
+ data->transfer = IPPTOOL_TRANSFER_AUTO;
}
else if (!strcmp(temp, "chunked"))
{
- data->transfer = _CUPS_TRANSFER_CHUNKED;
+ data->transfer = IPPTOOL_TRANSFER_CHUNKED;
}
else if (!strcmp(temp, "length"))
{
- data->transfer = _CUPS_TRANSFER_LENGTH;
+ data->transfer = IPPTOOL_TRANSFER_LENGTH;
}
else
{
data->last_expect = data->expects + data->num_expects;
data->num_expects ++;
- memset(data->last_expect, 0, sizeof(_cups_expect_t));
+ memset(data->last_expect, 0, sizeof(ipptool_expect_t));
data->last_expect->repeat_limit = 1000;
data->last_expect->expect_all = expect_all;
return (0);
}
}
+ else if (!_cups_strcasecmp(token, "DISPLAY-MATCH"))
+ {
+ if (!_ippFileReadToken(f, temp, sizeof(temp)))
+ {
+ print_fatal_error(data, "Missing DISPLAY-MATCH mesaage on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+
+ if (data->last_expect)
+ {
+ data->last_expect->display_match = strdup(temp);
+ }
+ else
+ {
+ print_fatal_error(data, "DISPLAY-MATCH without a preceding EXPECT on line %d of \"%s\".", f->linenum, f->filename);
+ return (0);
+ }
+ }
else if (!_cups_strcasecmp(token, "OF-TYPE"))
{
if (!_ippFileReadToken(f, temp, sizeof(temp)))
return (0);
}
}
+ else if (!_cups_strcasecmp(token, "WITH-DISTINCT-VALUES"))
+ {
+ if (data->last_expect)
+ {
+ data->last_expect->with_distinct = 1;
+ }
+ else
+ {
+ print_fatal_error(data, "%s without a preceding EXPECT on line %d of \"%s\".", token, f->linenum, f->filename);
+ return (0);
+ }
+ }
else if (!_cups_strcasecmp(token, "WITH-ALL-VALUES") ||
!_cups_strcasecmp(token, "WITH-ALL-HOSTNAMES") ||
!_cups_strcasecmp(token, "WITH-ALL-RESOURCES") ||
if (data->last_expect)
{
if (!_cups_strcasecmp(token, "WITH-ALL-HOSTNAMES") || !_cups_strcasecmp(token, "WITH-HOSTNAME"))
- data->last_expect->with_flags = _CUPS_WITH_HOSTNAME;
+ data->last_expect->with_flags = IPPTOOL_WITH_HOSTNAME;
else if (!_cups_strcasecmp(token, "WITH-ALL-RESOURCES") || !_cups_strcasecmp(token, "WITH-RESOURCE"))
- data->last_expect->with_flags = _CUPS_WITH_RESOURCE;
+ data->last_expect->with_flags = IPPTOOL_WITH_RESOURCE;
else if (!_cups_strcasecmp(token, "WITH-ALL-SCHEMES") || !_cups_strcasecmp(token, "WITH-SCHEME"))
- data->last_expect->with_flags = _CUPS_WITH_SCHEME;
+ data->last_expect->with_flags = IPPTOOL_WITH_SCHEME;
if (!_cups_strncasecmp(token, "WITH-ALL-", 9))
- data->last_expect->with_flags |= _CUPS_WITH_ALL;
+ data->last_expect->with_flags |= IPPTOOL_WITH_ALL;
}
if (!_ippFileReadToken(f, temp, sizeof(temp)))
*/
data->last_expect->with_value = calloc(1, (size_t)(ptr - value));
- data->last_expect->with_flags |= _CUPS_WITH_REGEX;
+ data->last_expect->with_flags |= IPPTOOL_WITH_REGEX;
if (data->last_expect->with_value)
memcpy(data->last_expect->with_value, value + 1, (size_t)(ptr - value - 1));
}
data->last_expect->with_value = strdup(value);
- data->last_expect->with_flags |= _CUPS_WITH_LITERAL;
+ data->last_expect->with_flags |= IPPTOOL_WITH_LITERAL;
}
}
else
_ippVarsExpand(vars, value, temp, sizeof(value));
data->last_expect->with_value_from = strdup(value);
- data->last_expect->with_flags = _CUPS_WITH_LITERAL;
+ data->last_expect->with_flags = IPPTOOL_WITH_LITERAL;
}
else
{
if (data->show_header)
{
- if (data->output == _CUPS_OUTPUT_PLIST)
+ if (data->output == IPPTOOL_OUTPUT_PLIST)
print_xml_header(data);
- if (data->output == _CUPS_OUTPUT_TEST || (data->output == _CUPS_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
+ if (data->output == IPPTOOL_OUTPUT_TEST || (data->output == IPPTOOL_OUTPUT_PLIST && data->outfile != cupsFileStdout()))
cupsFilePrintf(cupsFileStdout(), "\"%s\":\n", f->filename);
data->show_header = 0;
if ((ptr = strrchr(data->name, '.')) != NULL)
*ptr = '\0';
data->repeat_interval = 5000000;
- data->request_id ++;
- strlcpy(data->resource, vars->resource, sizeof(data->resource));
+ strlcpy(data->resource, data->vars->resource, sizeof(data->resource));
data->skip_previous = 0;
+ data->pass_test = 0;
data->skip_test = 0;
data->num_statuses = 0;
data->last_status = NULL;
data->transfer = data->def_transfer;
data->version = data->def_version;
+ free(data->monitor_uri);
+ data->monitor_uri = NULL;
+ data->monitor_delay = 0;
+ data->monitor_interval = 5000000;
+ data->num_monitor_expects = 0;
+
_ippVarsSet(vars, "date-current", iso_date(ippTimeToDate(time(NULL))));
f->attrs = ippNew();
* Map the filename to and then run the tests...
*/
- _cups_testdata_t inc_data; /* Data for included file */
+ ipptool_test_t inc_data; /* Data for included file */
char filename[1024]; /* Mapped filename */
memcpy(&inc_data, data, sizeof(inc_data));
inc_data.prev_pass = 1;
inc_data.show_header = 1;
- if (!do_tests(get_filename(f->filename, filename, temp, sizeof(filename)), vars, &inc_data) && data->stop_after_include_error)
+ if (!do_tests(get_filename(f->filename, filename, temp, sizeof(filename)), &inc_data) && data->stop_after_include_error)
{
data->pass = data->prev_pass = 0;
return (0);
* Map the filename to and then run the tests...
*/
- _cups_testdata_t inc_data; /* Data for included file */
+ ipptool_test_t inc_data; /* Data for included file */
char filename[1024]; /* Mapped filename */
memcpy(&inc_data, data, sizeof(inc_data));
inc_data.prev_pass = 1;
inc_data.show_header = 1;
- if (!do_tests(get_filename(f->filename, filename, temp, sizeof(filename)), vars, &inc_data) && data->stop_after_include_error)
+ if (!do_tests(get_filename(f->filename, filename, temp, sizeof(filename)), &inc_data) && data->stop_after_include_error)
{
data->pass = data->prev_pass = 0;
return (0);
* Map the filename to and then run the tests...
*/
- _cups_testdata_t inc_data; /* Data for included file */
+ ipptool_test_t inc_data; /* Data for included file */
char filename[1024]; /* Mapped filename */
memcpy(&inc_data, data, sizeof(inc_data));
inc_data.prev_pass = 1;
inc_data.show_header = 1;
- if (!do_tests(get_filename(f->filename, filename, temp, sizeof(filename)), vars, &inc_data) && data->stop_after_include_error)
+ if (!do_tests(get_filename(f->filename, filename, temp, sizeof(filename)), &inc_data) && data->stop_after_include_error)
{
data->pass = data->prev_pass = 0;
return (0);
if (_ippFileReadToken(f, temp, sizeof(temp)))
{
if (!strcmp(temp, "auto"))
- data->def_transfer = _CUPS_TRANSFER_AUTO;
+ data->def_transfer = IPPTOOL_TRANSFER_AUTO;
else if (!strcmp(temp, "chunked"))
- data->def_transfer = _CUPS_TRANSFER_CHUNKED;
+ data->def_transfer = IPPTOOL_TRANSFER_CHUNKED;
else if (!strcmp(temp, "length"))
- data->def_transfer = _CUPS_TRANSFER_LENGTH;
+ data->def_transfer = IPPTOOL_TRANSFER_LENGTH;
else
{
print_fatal_error(data, "Bad TRANSFER value \"%s\" on line %d of \"%s\".", temp, f->linenum, f->filename);
_cupsLangPuts(stderr, _("-I Ignore errors"));
_cupsLangPuts(stderr, _("-L Send requests using content-length"));
_cupsLangPuts(stderr, _("-P filename.plist Produce XML plist to a file and test report to standard output"));
+ _cupsLangPuts(stderr, _("-R Repeat tests on server-error-busy"));
_cupsLangPuts(stderr, _("-S Test with encryption using HTTPS"));
_cupsLangPuts(stderr, _("-T seconds Set the receive/send timeout in seconds"));
_cupsLangPuts(stderr, _("-V version Set default IPP version"));
}
+/*
+ * 'with_distinct_values()' - Verify that an attribute contains unique values.
+ */
+
+static int // O - 1 if distinct, 0 if duplicate
+with_distinct_values(
+ cups_array_t *errors, // I - Array of errors
+ ipp_attribute_t *attr) // I - Attribute to test
+{
+ int i, // Looping var
+ count; // Number of values
+ ipp_tag_t value_tag; // Value syntax
+ const char *value; // Current value
+ char buffer[8192]; // Temporary buffer
+ cups_array_t *values; // Array of values as strings
+
+
+ // If there is only 1 value, it must be distinct
+ if ((count = ippGetCount(attr)) == 1)
+ return (1);
+
+ // Only check integers, enums, rangeOfInteger, resolution, and nul-terminated
+ // strings...
+ switch (value_tag = ippGetValueTag(attr))
+ {
+ case IPP_TAG_INTEGER :
+ case IPP_TAG_ENUM :
+ case IPP_TAG_RANGE :
+ case IPP_TAG_RESOLUTION :
+ case IPP_TAG_KEYWORD :
+ case IPP_TAG_URISCHEME :
+ case IPP_TAG_CHARSET :
+ case IPP_TAG_LANGUAGE :
+ case IPP_TAG_MIMETYPE :
+ case IPP_TAG_BEGIN_COLLECTION :
+ break;
+
+ default :
+ add_stringf(errors, "WITH-DISTINCT-VALUES %s not supported for 1setOf %s", ippGetName(attr), ippTagString(value_tag));
+ return (0);
+ }
+
+ // Collect values and determine they are all unique...
+ values = cupsArrayNew3((cups_array_func_t)strcmp, NULL, NULL, 0, (cups_acopy_func_t)strdup, (cups_afree_func_t)free);
+
+ for (i = 0; i < count; i ++)
+ {
+ switch (value_tag)
+ {
+ case IPP_TAG_INTEGER :
+ case IPP_TAG_ENUM :
+ snprintf(buffer, sizeof(buffer), "%d", ippGetInteger(attr, i));
+ value = buffer;
+ break;
+ case IPP_TAG_RANGE :
+ {
+ int upper, lower = ippGetRange(attr, i, &upper);
+ // Range values
+
+ snprintf(buffer, sizeof(buffer), "%d-%d", lower, upper);
+ value = buffer;
+ }
+ break;
+ case IPP_TAG_RESOLUTION :
+ {
+ ipp_res_t units; // Resolution units
+ int yres, xres = ippGetResolution(attr, i, &yres, &units);
+ // Resolution values
+
+ if (xres == yres)
+ snprintf(buffer, sizeof(buffer), "%d%s", xres, units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+ else
+ snprintf(buffer, sizeof(buffer), "%dx%d%s", xres, yres, units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+ value = buffer;
+ }
+ break;
+ case IPP_TAG_KEYWORD :
+ case IPP_TAG_URISCHEME :
+ case IPP_TAG_CHARSET :
+ case IPP_TAG_LANGUAGE :
+ case IPP_TAG_MIMETYPE :
+ value = ippGetString(attr, i, NULL);
+ break;
+ case IPP_TAG_BEGIN_COLLECTION :
+ {
+ ipp_t *col = ippGetCollection(attr, i);
+ // Collection value
+ ipp_attribute_t *member; // Member attribute
+ char *bufptr, // Pointer into buffer
+ *bufend, // End of buffer
+ prefix; // Prefix character
+
+ for (prefix = '{', bufptr = buffer, bufend = buffer + sizeof(buffer) - 2, member = ippFirstAttribute(col); member && bufptr < bufend; member = ippNextAttribute(col))
+ {
+ *bufptr++ = prefix;
+ prefix = ' ';
+
+ ippAttributeString(member, bufptr, (size_t)(bufend - bufptr));
+ bufptr += strlen(bufptr);
+ }
+
+ *bufptr++ = '}';
+ *bufptr = '\0';
+ value = buffer;
+ }
+ break;
+ default : // Should never happen
+ value = "unsupported";
+ break;
+ }
+
+ if (cupsArrayFind(values, (void *)value))
+ add_stringf(errors, "DUPLICATE: %s=%s", ippGetName(attr), value);
+ else
+ cupsArrayAdd(values, (void *)value);
+ }
+
+ // Cleanup...
+ i = cupsArrayCount(values) == count;
+ cupsArrayDelete(values);
+
+ return (i);
+}
+
+
/*
* 'with_flags_string()' - Return the "WITH-xxx" predicate that corresponds to
- the flags.
+ * the flags.
*/
static const char * /* O - WITH-xxx string */
with_flags_string(int flags) /* I - WITH flags */
{
- if (flags & _CUPS_WITH_ALL)
+ if (flags & IPPTOOL_WITH_ALL)
{
- if (flags & _CUPS_WITH_HOSTNAME)
+ if (flags & IPPTOOL_WITH_HOSTNAME)
return ("WITH-ALL-HOSTNAMES");
- else if (flags & _CUPS_WITH_RESOURCE)
+ else if (flags & IPPTOOL_WITH_RESOURCE)
return ("WITH-ALL-RESOURCES");
- else if (flags & _CUPS_WITH_SCHEME)
+ else if (flags & IPPTOOL_WITH_SCHEME)
return ("WITH-ALL-SCHEMES");
else
return ("WITH-ALL-VALUES");
}
- else if (flags & _CUPS_WITH_HOSTNAME)
+ else if (flags & IPPTOOL_WITH_HOSTNAME)
return ("WITH-HOSTNAME");
- else if (flags & _CUPS_WITH_RESOURCE)
+ else if (flags & IPPTOOL_WITH_RESOURCE)
return ("WITH-RESOURCE");
- else if (flags & _CUPS_WITH_SCHEME)
+ else if (flags & IPPTOOL_WITH_SCHEME)
return ("WITH-SCHEME");
else
return ("WITH-VALUE");
*/
static int /* O - 1 on match, 0 on non-match */
-with_value(_cups_testdata_t *data, /* I - Test data */
+with_value(ipptool_test_t *data, /* I - Test data */
cups_array_t *errors, /* I - Errors array */
char *value, /* I - Value string */
int flags, /* I - Flags for match */
*matchbuf = '\0';
- match = (flags & _CUPS_WITH_ALL) ? 1 : 0;
+ match = (flags & IPPTOOL_WITH_ALL) ? 1 : 0;
/*
* NULL matches everything.
}
}
- if (flags & _CUPS_WITH_ALL)
+ if (flags & IPPTOOL_WITH_ALL)
{
if (!valmatch)
{
}
}
- if (flags & _CUPS_WITH_ALL)
+ if (flags & IPPTOOL_WITH_ALL)
{
if (!valmatch)
{
if (!matchbuf[0])
strlcpy(matchbuf, value, matchlen);
- if (!(flags & _CUPS_WITH_ALL))
+ if (!(flags & IPPTOOL_WITH_ALL))
{
match = 1;
break;
}
}
- else if (flags & _CUPS_WITH_ALL)
+ else if (flags & IPPTOOL_WITH_ALL)
{
match = 0;
break;
if (!matchbuf[0])
strlcpy(matchbuf, value, matchlen);
- if (!(flags & _CUPS_WITH_ALL))
+ if (!(flags & IPPTOOL_WITH_ALL))
{
match = 1;
break;
}
}
- else if (flags & _CUPS_WITH_ALL)
+ else if (flags & IPPTOOL_WITH_ALL)
{
match = 0;
break;
case IPP_TAG_TEXTLANG :
case IPP_TAG_URI :
case IPP_TAG_URISCHEME :
- if (flags & _CUPS_WITH_REGEX)
+ if (flags & IPPTOOL_WITH_REGEX)
{
/*
* Value is an extended, case-sensitive POSIX regular expression...
if (!matchbuf[0])
strlcpy(matchbuf, get_string(attr, i, flags, temp, sizeof(temp)), matchlen);
- if (!(flags & _CUPS_WITH_ALL))
+ if (!(flags & IPPTOOL_WITH_ALL))
{
match = 1;
break;
}
}
- else if (flags & _CUPS_WITH_ALL)
+ else if (flags & IPPTOOL_WITH_ALL)
{
match = 0;
break;
regfree(&re);
}
- else if (ippGetValueTag(attr) == IPP_TAG_URI && !(flags & (_CUPS_WITH_SCHEME | _CUPS_WITH_HOSTNAME | _CUPS_WITH_RESOURCE)))
+ else if (ippGetValueTag(attr) == IPP_TAG_URI && !(flags & (IPPTOOL_WITH_SCHEME | IPPTOOL_WITH_HOSTNAME | IPPTOOL_WITH_RESOURCE)))
{
/*
* Value is a literal URI string, see if the value(s) match...
if (!matchbuf[0])
strlcpy(matchbuf, get_string(attr, i, flags, temp, sizeof(temp)), matchlen);
- if (!(flags & _CUPS_WITH_ALL))
+ if (!(flags & IPPTOOL_WITH_ALL))
{
match = 1;
break;
}
}
- else if (flags & _CUPS_WITH_ALL)
+ else if (flags & IPPTOOL_WITH_ALL)
{
match = 0;
break;
* Some URI components are case-sensitive, some not...
*/
- if (flags & (_CUPS_WITH_SCHEME | _CUPS_WITH_HOSTNAME))
+ if (flags & (IPPTOOL_WITH_SCHEME | IPPTOOL_WITH_HOSTNAME))
result = _cups_strcasecmp(value, get_string(attr, i, flags, temp, sizeof(temp)));
else
result = strcmp(value, get_string(attr, i, flags, temp, sizeof(temp)));
if (!matchbuf[0])
strlcpy(matchbuf, get_string(attr, i, flags, temp, sizeof(temp)), matchlen);
- if (!(flags & _CUPS_WITH_ALL))
+ if (!(flags & IPPTOOL_WITH_ALL))
{
match = 1;
break;
}
}
- else if (flags & _CUPS_WITH_ALL)
+ else if (flags & IPPTOOL_WITH_ALL)
{
match = 0;
break;
break;
case IPP_TAG_STRING :
- if (flags & _CUPS_WITH_REGEX)
+ if (flags & IPPTOOL_WITH_REGEX)
{
/*
* Value is an extended, case-sensitive POSIX regular expression...
if (!matchbuf[0])
strlcpy(matchbuf, temp, matchlen);
- if (!(flags & _CUPS_WITH_ALL))
+ if (!(flags & IPPTOOL_WITH_ALL))
{
match = 1;
break;
}
}
- else if (flags & _CUPS_WITH_ALL)
+ else if (flags & IPPTOOL_WITH_ALL)
{
match = 0;
break;
if (!matchbuf[0])
copy_hex_string(matchbuf, adata, adatalen, matchlen);
- if (!(flags & _CUPS_WITH_ALL))
+ if (!(flags & IPPTOOL_WITH_ALL))
{
match = 1;
break;
}
}
- else if (flags & _CUPS_WITH_ALL)
+ else if (flags & IPPTOOL_WITH_ALL)
{
match = 0;
break;
--- /dev/null
+static const unsigned char printer_lg_png[] =
+{
+ 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,
+ 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x08,0x06,0x00,0x00,0x00,0xf4,0x78,0xd4,
+ 0xfa,0x00,0x00,0x04,0x19,0x69,0x43,0x43,0x50,0x6b,0x43,0x47,0x43,0x6f,0x6c,0x6f,
+ 0x72,0x53,0x70,0x61,0x63,0x65,0x47,0x65,0x6e,0x65,0x72,0x69,0x63,0x52,0x47,0x42,
+ 0x00,0x00,0x38,0x8d,0x8d,0x55,0x5d,0x68,0x1c,0x55,0x14,0x3e,0xbb,0x73,0x67,0x23,
+ 0x24,0xce,0x53,0x6c,0x34,0x85,0x74,0xa8,0x3f,0x0d,0x25,0x0d,0x93,0x56,0x34,0xa1,
+ 0xb4,0xba,0x7f,0xdd,0xdd,0x36,0x6e,0x96,0x49,0x36,0xda,0x22,0xe8,0x64,0xf6,0xee,
+ 0xce,0x98,0xc9,0xce,0x38,0x33,0xbb,0xfd,0xa1,0x4f,0x45,0x50,0x7c,0x31,0xea,0x9b,
+ 0x14,0xc4,0xbf,0xb7,0x80,0x20,0x28,0xf5,0x0f,0xdb,0x3e,0xb4,0x2f,0x95,0x0a,0x25,
+ 0xda,0xd4,0x20,0x28,0x3e,0xb4,0xf8,0x83,0x50,0xe8,0x8b,0xa6,0xeb,0x99,0x3b,0x33,
+ 0x99,0x69,0xba,0xb1,0xde,0x65,0xee,0x7c,0xf3,0x9d,0xef,0x9e,0x7b,0xee,0xb9,0x67,
+ 0xef,0x05,0xe8,0xb9,0xaa,0x58,0x96,0x91,0x14,0x01,0x16,0x9a,0xae,0x2d,0x17,0x32,
+ 0xe2,0x73,0x87,0x8f,0x88,0x3d,0x2b,0x90,0x84,0x87,0xa0,0x17,0x06,0xa1,0x57,0x51,
+ 0x1d,0x2b,0x5d,0xa9,0x4c,0x02,0x36,0x4f,0x0b,0x77,0xb5,0x5b,0xdf,0x43,0xc2,0x7b,
+ 0x5f,0xd9,0xd5,0xdd,0xfe,0x9f,0xad,0xb7,0x46,0x1d,0x15,0x20,0x71,0x1f,0x62,0xb3,
+ 0xe6,0xa8,0x0b,0x88,0x8f,0x01,0xf0,0xa7,0x55,0xcb,0x76,0x01,0x7a,0xfa,0x91,0x1f,
+ 0x3f,0xea,0x5a,0x1e,0xf6,0x62,0xe8,0xb7,0x31,0x40,0xc4,0x2f,0x7a,0xb8,0xe1,0x63,
+ 0xd7,0xc3,0x73,0x3e,0x7e,0x8d,0x69,0x66,0xe4,0x2c,0xe2,0xd3,0x88,0x05,0x55,0x53,
+ 0x6a,0x88,0x97,0x10,0x8f,0xcc,0xc5,0xf8,0x46,0x0c,0xfb,0x31,0xb0,0xd6,0x5f,0xa0,
+ 0x4d,0x6a,0xeb,0xaa,0xe8,0xe5,0xa2,0x62,0x9b,0x75,0xdd,0xa0,0xb1,0x70,0xef,0x61,
+ 0xfe,0x9f,0x6d,0xc1,0x68,0x85,0xf3,0x6d,0xc3,0xa7,0xcf,0x99,0x9f,0x3e,0x84,0xef,
+ 0x61,0x5c,0xfb,0x2b,0x35,0x25,0xe7,0xe1,0x51,0xc4,0x4b,0xaa,0x92,0x9f,0x46,0xfc,
+ 0x08,0xe2,0x6b,0x6d,0x7d,0xb6,0x1c,0xe0,0xdb,0x96,0x9b,0x91,0x11,0x3f,0x06,0x90,
+ 0xdc,0xde,0x9a,0xaf,0xa6,0x11,0xef,0x44,0x5c,0xac,0xdb,0x07,0xaa,0xbe,0x9f,0xa4,
+ 0xad,0xb5,0x8a,0x21,0x7e,0xe7,0x84,0x36,0xf3,0x2c,0xe2,0x2d,0x88,0xcf,0x37,0xe7,
+ 0xca,0x53,0xc1,0xd8,0xab,0xaa,0x93,0xc5,0x9c,0xc1,0x76,0xc4,0xb7,0x35,0x5a,0xf2,
+ 0xf2,0x3b,0x04,0xc0,0x89,0xba,0x5b,0x9a,0xf1,0xc7,0x72,0xfb,0x6d,0x53,0x9e,0xf2,
+ 0xe7,0xe5,0xea,0x35,0x9a,0xcb,0x7b,0x79,0x44,0xfc,0xfa,0xbc,0x79,0x48,0xf6,0x7d,
+ 0x72,0x9f,0x39,0xed,0xe9,0x7c,0xe8,0xf3,0x84,0x96,0x2d,0x07,0xfc,0xa5,0x97,0x94,
+ 0x83,0x15,0xc4,0x83,0x88,0x7f,0xa1,0x46,0x41,0xf6,0xe7,0xe2,0xfe,0xb1,0xdc,0x4a,
+ 0x10,0x03,0x19,0x6a,0x1a,0xe5,0x49,0x7f,0x2e,0x92,0xa3,0x0e,0x5b,0x2f,0xe3,0x5d,
+ 0x6d,0xa6,0xe8,0xcf,0x4b,0x0c,0x17,0x37,0xd4,0x1f,0x4b,0x16,0xeb,0xfa,0x81,0x52,
+ 0xa0,0xff,0x44,0xb3,0x8b,0x72,0x80,0xaf,0x59,0x06,0xab,0x51,0x8c,0x8d,0x4f,0xda,
+ 0x2d,0xb9,0xea,0xeb,0xf9,0x51,0xc5,0xce,0x17,0x7c,0x9f,0x7c,0x85,0x36,0xab,0x81,
+ 0x7f,0xbe,0x0d,0xb3,0x09,0x05,0x28,0x98,0x30,0x87,0xbd,0x0a,0x4d,0x58,0x03,0x11,
+ 0x64,0x28,0x40,0x06,0xdf,0x16,0xd8,0x68,0xa9,0x83,0x0e,0x06,0x32,0x14,0xad,0x14,
+ 0x19,0x8a,0x5f,0xa1,0x66,0x17,0x1b,0xe7,0xc0,0x3c,0xf2,0x3a,0xb4,0x99,0xcd,0xc1,
+ 0xbe,0xc2,0x94,0xfe,0xc8,0xc8,0x5f,0x83,0xf9,0xb8,0xce,0xb4,0x2a,0x64,0x87,0x3e,
+ 0x82,0x16,0xb2,0x1a,0xfc,0x8e,0xac,0x16,0xd3,0x65,0xf1,0xab,0x85,0x5c,0x63,0x13,
+ 0x3f,0x7e,0x2c,0x37,0x02,0x3f,0x26,0x19,0x20,0x12,0xd9,0x83,0xcf,0x5e,0x32,0x49,
+ 0xf6,0x91,0x71,0x32,0x01,0x22,0x79,0x8a,0x3c,0x4d,0xf6,0x93,0x1c,0xb2,0x13,0x64,
+ 0xef,0xfa,0xd8,0x4a,0x6c,0x45,0x5e,0x3c,0x37,0xd6,0xfd,0xbc,0x8c,0x33,0x52,0xa6,
+ 0x9b,0x45,0xdd,0x39,0xb4,0xbb,0xa0,0x60,0xff,0x33,0x2a,0x4c,0x5c,0x53,0xd7,0xac,
+ 0x2c,0x0e,0xb6,0x86,0x23,0xcb,0x29,0xfb,0x05,0x5d,0xbd,0xfc,0xc6,0x5f,0xb1,0x5c,
+ 0xe9,0x2c,0x37,0x51,0xb6,0xe2,0x19,0x9d,0xba,0x57,0xce,0xf9,0x5f,0xf9,0xeb,0xfc,
+ 0x32,0xf6,0x2b,0xfc,0x6a,0xa4,0xe0,0x7f,0xe4,0x57,0xf1,0xb7,0x72,0xc7,0x5a,0xcc,
+ 0xbb,0xb2,0x4c,0xc3,0xec,0x6c,0x58,0x73,0x77,0x55,0x1a,0x6d,0x06,0xe3,0x16,0xf0,
+ 0xd1,0x99,0xc5,0x89,0xc5,0x1d,0xf3,0x71,0xf1,0xe4,0x57,0x0f,0x46,0x7e,0x96,0xc9,
+ 0x99,0xe7,0xaf,0xf4,0x5d,0x3c,0x59,0x6f,0x2e,0x0e,0x46,0xac,0x97,0x05,0xfa,0x6a,
+ 0xf9,0x56,0x19,0x4e,0x8d,0x44,0xac,0xf4,0x83,0xf4,0x87,0xb4,0x2c,0xbd,0x27,0x7d,
+ 0x28,0xfd,0xc6,0xbd,0xcd,0x7d,0xca,0x7d,0xcd,0x7d,0xce,0x7d,0xc1,0x5d,0x02,0x91,
+ 0x3b,0xcb,0x9d,0xe3,0xbe,0xe1,0x2e,0x70,0x1f,0x73,0x5f,0xc6,0xf6,0x6a,0xf3,0x1a,
+ 0x5a,0xdf,0x7b,0x16,0x79,0x18,0xb7,0x67,0xe9,0x96,0x6b,0xac,0x4a,0x21,0x23,0x6c,
+ 0x15,0x1e,0x16,0x72,0xc2,0x36,0xe1,0x51,0x61,0x32,0xf2,0x27,0x0c,0x08,0x63,0x42,
+ 0x51,0xd8,0x81,0x96,0xad,0xeb,0xfb,0x16,0x9f,0x2f,0x9e,0x3d,0x1d,0x0e,0x63,0x1f,
+ 0xe6,0xa7,0xfb,0x5c,0xbe,0x2e,0x56,0x01,0x89,0xfb,0xb1,0x02,0xf4,0x4d,0xfe,0x55,
+ 0x55,0x54,0xe9,0x70,0x94,0x29,0x1d,0x56,0x6f,0x4d,0x38,0xbe,0x41,0x13,0x8c,0x24,
+ 0x43,0x64,0x8c,0x94,0x36,0x54,0xf7,0xb8,0x57,0xf3,0xa1,0x22,0x95,0x4f,0xe5,0x52,
+ 0x69,0x10,0x53,0x3b,0x53,0x13,0xa9,0xb1,0xd4,0x41,0x0f,0x87,0xb3,0xa6,0x76,0xa0,
+ 0x6d,0x02,0xfb,0xfc,0x1d,0xd5,0xa9,0x6e,0xb2,0x52,0xea,0xd2,0x63,0xde,0x7d,0x02,
+ 0x59,0xd3,0x3a,0x6e,0xeb,0x0d,0xcd,0x15,0x77,0x4b,0xd2,0x93,0x62,0x1a,0xaf,0x36,
+ 0x2a,0x96,0x9a,0xea,0xe8,0x88,0xa8,0x18,0x86,0xc8,0x4c,0x8e,0x68,0x53,0x87,0xda,
+ 0x6d,0x5a,0x1b,0x05,0xef,0xde,0xf4,0x8f,0xf4,0x9b,0x32,0xbb,0x0f,0x13,0x5b,0x2e,
+ 0x47,0x9c,0xfb,0x0c,0xc0,0xbe,0x3f,0xf1,0xec,0xfb,0x2e,0xe2,0x8e,0xb4,0x00,0x96,
+ 0x1c,0x80,0x81,0xc7,0x23,0x6e,0x18,0xcf,0xca,0x07,0xde,0x05,0x38,0xf3,0x84,0xda,
+ 0xb2,0xdb,0xc1,0x1d,0x91,0x48,0x7c,0x0b,0xe0,0xd4,0xf7,0xec,0xf6,0xbf,0xfa,0x32,
+ 0x78,0x7e,0xfd,0xd4,0xe9,0xdc,0xc4,0x73,0xac,0xe7,0x2d,0x80,0xb5,0x37,0x3b,0x9d,
+ 0xbf,0xdf,0xef,0x74,0xd6,0x3e,0x40,0xff,0xab,0x00,0x67,0x8d,0x7f,0x01,0xa0,0x9f,
+ 0x7c,0x55,0x03,0x5c,0x0b,0xef,0x00,0x00,0x00,0x38,0x65,0x58,0x49,0x66,0x4d,0x4d,
+ 0x00,0x2a,0x00,0x00,0x00,0x08,0x00,0x01,0x87,0x69,0x00,0x04,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x00,0x00,0x02,0xa0,0x02,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0x00,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x02,0x00,0x00,0x00,0x00,0x00,0x28,0x30,0x97,0xbf,0x00,0x00,0x03,0x62,0x69,0x54,
+ 0x58,0x74,0x58,0x4d,0x4c,0x3a,0x63,0x6f,0x6d,0x2e,0x61,0x64,0x6f,0x62,0x65,0x2e,
+ 0x78,0x6d,0x70,0x00,0x00,0x00,0x00,0x00,0x3c,0x78,0x3a,0x78,0x6d,0x70,0x6d,0x65,
+ 0x74,0x61,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x3d,0x22,0x61,0x64,0x6f,0x62,
+ 0x65,0x3a,0x6e,0x73,0x3a,0x6d,0x65,0x74,0x61,0x2f,0x22,0x20,0x78,0x3a,0x78,0x6d,
+ 0x70,0x74,0x6b,0x3d,0x22,0x58,0x4d,0x50,0x20,0x43,0x6f,0x72,0x65,0x20,0x35,0x2e,
+ 0x34,0x2e,0x30,0x22,0x3e,0x0a,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x52,0x44,
+ 0x46,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x72,0x64,0x66,0x3d,0x22,0x68,0x74,0x74,
+ 0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,
+ 0x39,0x39,0x39,0x2f,0x30,0x32,0x2f,0x32,0x32,0x2d,0x72,0x64,0x66,0x2d,0x73,0x79,
+ 0x6e,0x74,0x61,0x78,0x2d,0x6e,0x73,0x23,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x3c,0x72,0x64,0x66,0x3a,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,
+ 0x6e,0x20,0x72,0x64,0x66,0x3a,0x61,0x62,0x6f,0x75,0x74,0x3d,0x22,0x22,0x0a,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,
+ 0x3a,0x64,0x63,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x70,0x75,0x72,0x6c,
+ 0x2e,0x6f,0x72,0x67,0x2f,0x64,0x63,0x2f,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,
+ 0x2f,0x31,0x2e,0x31,0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x49,0x70,0x74,0x63,0x34,0x78,0x6d,
+ 0x70,0x45,0x78,0x74,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x69,0x70,0x74,
+ 0x63,0x2e,0x6f,0x72,0x67,0x2f,0x73,0x74,0x64,0x2f,0x49,0x70,0x74,0x63,0x34,0x78,
+ 0x6d,0x70,0x45,0x78,0x74,0x2f,0x32,0x30,0x30,0x38,0x2d,0x30,0x32,0x2d,0x32,0x39,
+ 0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78,
+ 0x6d,0x6c,0x6e,0x73,0x3a,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3d,0x22,
+ 0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64,0x6f,0x62,0x65,0x2e,
+ 0x63,0x6f,0x6d,0x2f,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x2f,0x31,0x2e,
+ 0x30,0x2f,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x64,
+ 0x63,0x3a,0x63,0x72,0x65,0x61,0x74,0x6f,0x72,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x53,0x65,0x71,0x3e,
+ 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x3c,0x72,0x64,0x66,0x3a,0x6c,0x69,0x3e,0x4d,0x69,0x63,0x68,0x61,0x65,0x6c,0x20,
+ 0x53,0x77,0x65,0x65,0x74,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x6c,0x69,0x3e,0x0a,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,
+ 0x3a,0x53,0x65,0x71,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,
+ 0x2f,0x64,0x63,0x3a,0x63,0x72,0x65,0x61,0x74,0x6f,0x72,0x3e,0x0a,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x64,0x63,0x3a,0x72,0x69,0x67,0x68,0x74,0x73,
+ 0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,
+ 0x64,0x66,0x3a,0x41,0x6c,0x74,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x6c,0x69,0x20,0x78,
+ 0x6d,0x6c,0x3a,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x78,0x2d,0x64,0x65,0x66,0x61,0x75,
+ 0x6c,0x74,0x22,0x3e,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x32,0x30,
+ 0x31,0x30,0x20,0x41,0x70,0x70,0x6c,0x65,0x20,0x49,0x6e,0x63,0x2e,0x3c,0x2f,0x72,
+ 0x64,0x66,0x3a,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x41,0x6c,0x74,0x3e,0x0a,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x64,0x63,0x3a,0x72,0x69,0x67,0x68,
+ 0x74,0x73,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x49,0x70,
+ 0x74,0x63,0x34,0x78,0x6d,0x70,0x45,0x78,0x74,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69,
+ 0x6e,0x65,0x3e,0x4e,0x65,0x77,0x20,0x49,0x6d,0x61,0x67,0x65,0x3c,0x2f,0x49,0x70,
+ 0x74,0x63,0x34,0x78,0x6d,0x70,0x45,0x78,0x74,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69,
+ 0x6e,0x65,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x70,0x68,
+ 0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69,0x6e,0x65,
+ 0x3e,0x4e,0x65,0x77,0x20,0x49,0x6d,0x61,0x67,0x65,0x3c,0x2f,0x70,0x68,0x6f,0x74,
+ 0x6f,0x73,0x68,0x6f,0x70,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69,0x6e,0x65,0x3e,0x0a,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x44,0x65,0x73,0x63,
+ 0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,
+ 0x66,0x3a,0x52,0x44,0x46,0x3e,0x0a,0x3c,0x2f,0x78,0x3a,0x78,0x6d,0x70,0x6d,0x65,
+ 0x74,0x61,0x3e,0x0a,0xa0,0x50,0x98,0x64,0x00,0x00,0x6b,0x41,0x49,0x44,0x41,0x54,
+ 0x78,0xda,0xed,0x9d,0x07,0xfc,0x1c,0x55,0xb9,0xb0,0x4f,0x7a,0xef,0x40,0x0a,0x49,
+ 0x20,0x10,0x9a,0x54,0xe9,0x46,0x7a,0x13,0x14,0x2e,0x52,0x42,0x53,0x54,0x04,0x2f,
+ 0x28,0x02,0xf7,0x7e,0x82,0x15,0x51,0x51,0x11,0x14,0x6c,0x28,0xc2,0xfd,0x79,0x51,
+ 0x41,0x41,0xa4,0x37,0xf9,0x40,0x3a,0x48,0x07,0x29,0x86,0x96,0x90,0x00,0x09,0x24,
+ 0x90,0x46,0x7a,0xcf,0x7e,0xe7,0x1d,0x32,0xff,0x6f,0x72,0x72,0xce,0x9c,0x33,0xbb,
+ 0x33,0xbb,0xb3,0xbb,0xcf,0x93,0xdf,0xc9,0xee,0x7f,0x77,0x76,0x66,0xce,0xb4,0xb7,
+ 0x9c,0xf7,0x7d,0x4f,0x27,0x55,0x52,0x2a,0x95,0x4a,0x1f,0xfd,0xb2,0xad,0x6e,0xdb,
+ 0xe9,0x36,0x56,0xb7,0x31,0xba,0x8d,0xd4,0x6d,0x3d,0xdd,0x06,0xeb,0xd6,0x4b,0xb7,
+ 0xee,0xba,0x75,0x51,0x00,0x00,0x00,0xf5,0x67,0x95,0x6e,0xcb,0x75,0x5b,0xa2,0xdb,
+ 0x1c,0xdd,0x66,0xe9,0x36,0x4d,0xb7,0x29,0xba,0x4d,0xd2,0xed,0x45,0xdd,0x5e,0xea,
+ 0xd4,0xa9,0xd3,0xa2,0x32,0xee,0x7c,0xa7,0x12,0x09,0xfc,0x7e,0xfa,0x65,0x7f,0xdd,
+ 0x0e,0xd0,0x6d,0x8f,0x35,0xc2,0xbf,0x33,0xd7,0x17,0x00,0x00,0x34,0x31,0xab,0x45,
+ 0x09,0xd0,0xed,0x51,0xdd,0xee,0xd5,0xed,0x3e,0xad,0x10,0x2c,0x68,0x7b,0x05,0x40,
+ 0x0b,0xfd,0x41,0xfa,0xe5,0x08,0xdd,0x8e,0xd5,0x6d,0x5f,0xdd,0xba,0x71,0xad,0x00,
+ 0x00,0x40,0x0b,0xb3,0x42,0xb7,0x07,0x74,0xbb,0x4e,0xb7,0x9b,0xb5,0x32,0x30,0xb7,
+ 0xad,0x14,0x00,0x2d,0xf8,0xf7,0xd4,0x2f,0xa7,0xea,0x76,0xb4,0x6e,0x3d,0xb8,0x1e,
+ 0x00,0x00,0xa0,0x0d,0x59,0xaa,0xdb,0x8d,0xba,0x5d,0xa1,0x15,0x81,0x47,0x5a,0x56,
+ 0x01,0xd0,0x42,0x5f,0xdc,0xf9,0xe3,0x75,0x3b,0x5b,0xb7,0x9d,0x39,0xef,0x00,0x00,
+ 0x00,0x1d,0x3c,0xa3,0xdb,0xc5,0xba,0x5d,0xaf,0x95,0x81,0xd5,0x2d,0xa3,0x00,0x68,
+ 0xe1,0x7f,0xa4,0x7e,0x39,0x5f,0xb7,0xad,0x39,0xc7,0x00,0x00,0x00,0x4e,0x26,0xe8,
+ 0x76,0x9e,0x56,0x02,0x6e,0x6a,0x6a,0x05,0x40,0x0b,0xfe,0x2d,0xf5,0xcb,0x65,0xea,
+ 0xc3,0xf1,0x7d,0x00,0x00,0x00,0x08,0x43,0xe2,0x04,0xbe,0xa2,0x15,0x81,0x57,0x8b,
+ 0xda,0x40,0x21,0x51,0xf6,0x5a,0xf0,0xf7,0xd6,0xed,0x02,0xfd,0xf6,0x05,0x84,0x3f,
+ 0x00,0x00,0x40,0x66,0x44,0x76,0xbe,0x20,0xb2,0x54,0x64,0x6a,0x53,0x78,0x00,0xf4,
+ 0x8e,0xee,0xae,0x5f,0xae,0x51,0x1f,0xe6,0xed,0x03,0x00,0x00,0x40,0x6d,0x48,0x5d,
+ 0x81,0x13,0xb4,0x37,0xe0,0x89,0xd2,0x7a,0x00,0xb4,0xf0,0xff,0x9a,0x7e,0x79,0x18,
+ 0xe1,0x0f,0x00,0x00,0x90,0x1b,0x22,0x53,0x1f,0x5e,0x23,0x63,0xcb,0xe5,0x01,0xd0,
+ 0x3b,0x25,0x95,0xf9,0xfe,0xa8,0xdb,0x61,0x9c,0x27,0x00,0x00,0x80,0xc2,0xb8,0x5d,
+ 0xb7,0x2f,0x68,0x6f,0xc0,0x9c,0x86,0x2b,0x00,0x5a,0xf8,0x8b,0x66,0x72,0x8f,0xfa,
+ 0xb0,0x5c,0x2f,0x00,0x00,0x00,0x14,0x8b,0x94,0x19,0x3e,0x48,0x2b,0x01,0x53,0x6a,
+ 0x59,0x49,0x4d,0x43,0x00,0x5a,0xf8,0x6f,0xaf,0x5f,0x1e,0x43,0xf8,0x03,0x00,0x00,
+ 0xd4,0x0d,0x91,0xb9,0x8f,0xad,0x91,0xc1,0xf5,0x57,0x00,0xf4,0x86,0xf7,0xd6,0x2f,
+ 0x0f,0xe9,0x36,0x8c,0x73,0x01,0x00,0x00,0x50,0x57,0x44,0xf6,0x3e,0xb4,0x46,0x16,
+ 0x57,0x45,0x55,0x43,0x00,0x6b,0x36,0xf8,0x7f,0x75,0xeb,0xc9,0x39,0x00,0x00,0x00,
+ 0x68,0x18,0x52,0x4e,0xf8,0x60,0x3d,0x1c,0xf0,0x50,0xe1,0x0a,0xc0,0x1a,0x97,0x83,
+ 0x6c,0x68,0x00,0xc7,0x1d,0x00,0x00,0xa0,0xe1,0xcc,0xd3,0x6d,0x6f,0xad,0x04,0xbc,
+ 0x50,0x98,0x02,0xb0,0x26,0xe0,0x4f,0xc6,0xfc,0x71,0xfb,0x03,0x00,0x00,0x94,0x87,
+ 0x19,0xba,0x8d,0xcb,0x12,0x18,0x18,0xac,0x00,0xac,0x49,0xf5,0x7b,0x52,0x11,0xf0,
+ 0x07,0x00,0x00,0x50,0x46,0x24,0x3b,0x60,0xb7,0xd0,0x14,0xc1,0x2c,0x41,0x80,0x7f,
+ 0x44,0xf8,0x03,0x00,0x00,0x94,0x96,0xb1,0x6b,0x64,0x75,0x10,0x41,0x0a,0xc0,0x9a,
+ 0xea,0x43,0x14,0xf9,0x01,0x00,0x00,0x28,0x37,0x87,0x85,0x56,0x0c,0xf4,0x0e,0x01,
+ 0xac,0xa9,0xed,0x2f,0xe5,0x7d,0xbb,0x71,0x5c,0x01,0x00,0x00,0x4a,0xcf,0x0a,0xdd,
+ 0xf6,0xf2,0xcd,0x1d,0xd0,0xc9,0x23,0xfc,0x65,0x06,0xa2,0x7f,0x2b,0x6a,0xfb,0x03,
+ 0x00,0x00,0x34,0x13,0x12,0x0c,0xb8,0x8d,0x56,0x02,0x16,0xbb,0x16,0xf0,0x0d,0x01,
+ 0x9c,0x8b,0xf0,0x07,0x00,0x00,0x68,0x3a,0xc6,0xac,0x91,0xe1,0xd9,0x3d,0x00,0xda,
+ 0xfa,0xdf,0x52,0xbf,0x48,0x4e,0x61,0x77,0x8e,0x23,0x00,0x00,0x40,0xd3,0xb1,0x5c,
+ 0xb7,0xed,0xb5,0x17,0xe0,0xd5,0xac,0x0a,0xc0,0xfd,0xfa,0x65,0xdf,0x5a,0xb7,0xbe,
+ 0x72,0xe5,0x4a,0x35,0x77,0xee,0xdc,0xd4,0x65,0xba,0x75,0xeb,0xa6,0x06,0x0e,0x1c,
+ 0xc8,0xa9,0x02,0x00,0x00,0xc8,0x97,0x07,0xb4,0x02,0xb0,0x5f,0xb0,0x02,0xa0,0x85,
+ 0xff,0x51,0xfa,0xe5,0x86,0x3c,0xb6,0x7c,0xe9,0xa5,0x97,0xaa,0x33,0xcf,0x3c,0x33,
+ 0x75,0x99,0xee,0xdd,0xbb,0xab,0x65,0xcb,0x96,0x71,0x9a,0x00,0x00,0x00,0xf2,0xe7,
+ 0x68,0xad,0x04,0xdc,0x68,0x7e,0xd8,0xd9,0x22,0xfc,0xe5,0xb3,0x1f,0xe4,0xb5,0xd5,
+ 0xe5,0xcb,0x97,0xe7,0xb2,0x0c,0x00,0x00,0x00,0x54,0xc5,0x0f,0xd6,0xc8,0xf6,0x74,
+ 0x05,0x40,0x33,0x5e,0xb7,0xad,0x39,0x5e,0x00,0x00,0x00,0x2d,0xc1,0xd6,0x6b,0x64,
+ 0xbb,0x57,0x01,0x38,0x9b,0x63,0x05,0x00,0x00,0xd0,0x52,0x9c,0x9d,0xaa,0x00,0x68,
+ 0x17,0xc1,0x9e,0xfa,0x65,0x67,0x8e,0x13,0x00,0x00,0x40,0x4b,0xb1,0xf3,0x1a,0x19,
+ 0xef,0xf4,0x00,0x9c,0xca,0x31,0x02,0x00,0x00,0x68,0x49,0x4e,0xb5,0x2a,0x00,0x5a,
+ 0x33,0x18,0xa4,0x5f,0x8e,0xe2,0xf8,0x00,0x00,0x00,0xb4,0x24,0x47,0xad,0x91,0xf5,
+ 0xeb,0x78,0x00,0x8e,0xd0,0xad,0x27,0xc7,0x07,0x00,0x00,0xa0,0x25,0xe9,0xb9,0x46,
+ 0xd6,0xaf,0xa3,0x00,0x1c,0xcb,0xb1,0x01,0x00,0x00,0x68,0x69,0x3a,0x64,0x7d,0x57,
+ 0xf9,0x4f,0xbb,0x04,0xfa,0xa9,0x1c,0xaa,0xfe,0xd9,0x18,0x3f,0x7e,0xbc,0xda,0x60,
+ 0x83,0x0d,0x52,0x97,0xe9,0xdb,0xb7,0x2f,0xa7,0x04,0x00,0x00,0xa0,0x78,0xf6,0x15,
+ 0x99,0xaf,0x0b,0x03,0x2d,0xe8,0xb4,0x46,0x01,0x10,0x97,0xc0,0x4d,0x1c,0x17,0x00,
+ 0x00,0x80,0x96,0xe7,0x08,0xad,0x00,0xdc,0x12,0x0f,0x01,0xec,0xcf,0xf1,0x00,0x00,
+ 0x00,0x68,0x0b,0x0e,0x90,0xff,0x62,0x05,0x60,0x0f,0x8e,0x07,0x00,0x00,0x40,0x5b,
+ 0x10,0xc9,0xfc,0x4e,0xda,0xfd,0x2f,0x03,0xf0,0xf3,0x94,0xbd,0x2a,0x20,0x00,0x00,
+ 0x00,0xb4,0x16,0xab,0x75,0xeb,0x2f,0x42,0x7f,0x1b,0x84,0x3f,0x00,0x00,0x40,0xdb,
+ 0x20,0x32,0x7f,0x5b,0xf9,0x6f,0x3b,0x8e,0x05,0x00,0x00,0x40,0x5b,0xb1,0x9d,0xa4,
+ 0x01,0x8e,0xe5,0x38,0xb8,0x99,0x37,0x6f,0x9e,0x7a,0xf3,0xcd,0x37,0xa3,0xf6,0xd6,
+ 0x5b,0x6f,0xa9,0xd5,0xab,0x57,0xab,0xa1,0x43,0x87,0xaa,0xe1,0xc3,0x87,0xab,0x61,
+ 0xc3,0x86,0xa9,0x51,0xa3,0x46,0xa9,0x3e,0x7d,0xfa,0xd0,0xcf,0x12,0xb0,0x68,0xd1,
+ 0x22,0x35,0x75,0xea,0x54,0x35,0x7d,0xfa,0x74,0xf5,0xee,0xbb,0xef,0x46,0xaf,0x0b,
+ 0x17,0x2e,0x54,0x43,0x86,0x0c,0x89,0xfa,0x20,0x6d,0xc4,0x88,0x11,0x6a,0x93,0x4d,
+ 0x36,0x51,0x3a,0x02,0x96,0x8b,0x9b,0x73,0x01,0xd0,0xce,0x8c,0x15,0x05,0x60,0x4c,
+ 0x91,0x5b,0x98,0x32,0x65,0x8a,0x7a,0xe0,0x81,0x07,0x52,0x97,0x11,0xc1,0x72,0xec,
+ 0xb1,0xc7,0x96,0x62,0x3b,0x2b,0x57,0xae,0x54,0x37,0xde,0x78,0xa3,0xfa,0xdd,0xef,
+ 0x7e,0xa7,0x5e,0x78,0xe1,0x05,0xf5,0xc1,0x07,0x1f,0xa4,0x2e,0xdf,0xb5,0x6b,0x57,
+ 0xb5,0xef,0xbe,0xfb,0xaa,0xa3,0x8e,0x3a,0x4a,0x1d,0x71,0xc4,0x11,0xde,0x9a,0x07,
+ 0x65,0x39,0x9e,0x65,0xef,0x67,0x28,0xb3,0x67,0xcf,0x56,0xb7,0xde,0x7a,0xab,0xba,
+ 0xfe,0xfa,0xeb,0xd5,0x7d,0xf7,0xdd,0xa7,0x56,0xac,0x58,0xe1,0xfd,0x8d,0x28,0x33,
+ 0xd2,0x87,0x23,0x8f,0x3c,0x52,0xed,0xb1,0xc7,0x1e,0xaa,0x4b,0x97,0x2e,0x35,0xed,
+ 0xc3,0x8b,0x2f,0xbe,0xa8,0x9e,0x79,0xe6,0x99,0xd4,0x65,0x06,0x0c,0x18,0x10,0x1d,
+ 0xbb,0x7a,0x72,0xd7,0x5d,0x77,0x45,0x82,0xd7,0x45,0xe7,0xce,0x9d,0xd5,0xe7,0x3e,
+ 0xf7,0xb9,0xe8,0xb5,0x55,0xce,0x05,0x00,0x04,0x33,0x46,0x6a,0x00,0x3c,0x5e,0x29,
+ 0x90,0x8b,0x2f,0xbe,0xb8,0xa2,0x37,0xe4,0x6d,0x8d,0xde,0x8e,0x7e,0x78,0x55,0x7e,
+ 0xf2,0x93,0x9f,0x54,0x46,0x8e,0x1c,0x19,0xb4,0x1e,0x5b,0xd3,0x0f,0xd2,0xca,0xf1,
+ 0xc7,0x1f,0x5f,0xd1,0x0f,0xdd,0xd2,0x1e,0xcf,0x66,0xe9,0xa7,0x8f,0x89,0x13,0x27,
+ 0x56,0x0e,0x3f,0xfc,0xf0,0x8a,0x56,0x4c,0xaa,0xee,0x87,0xb4,0x8d,0x37,0xde,0xb8,
+ 0x72,0xc7,0x1d,0x77,0xd4,0xb4,0x2f,0xe7,0x9c,0x73,0x4e,0xd0,0x31,0x7b,0xfb,0xed,
+ 0xb7,0xeb,0x76,0x7c,0xb4,0x47,0xa7,0xd2,0xbb,0x77,0xef,0xd4,0x7d,0x92,0x63,0x37,
+ 0x73,0xe6,0xcc,0x96,0x3a,0x17,0x00,0x10,0xcc,0xe3,0x22,0x29,0x26,0xb6,0xbb,0x02,
+ 0x70,0xd3,0x4d,0x37,0x55,0xb4,0xd5,0x5c,0xd3,0xc3,0x2b,0xd9,0xb4,0xb5,0x57,0xb9,
+ 0xec,0xb2,0xcb,0x2a,0xab,0x56,0xad,0x2a,0xd5,0xf1,0x6c,0xa6,0x7e,0xba,0x58,0xba,
+ 0x74,0x69,0xe5,0x7b,0xdf,0xfb,0x5e,0xa5,0x47,0x8f,0x1e,0xb9,0xf5,0x43,0x9a,0xb6,
+ 0x40,0x2b,0xd3,0xa6,0x4d,0xab,0x6a,0x9f,0x9e,0x7b,0xee,0xb9,0xa0,0x6d,0x5c,0x70,
+ 0xc1,0x05,0x75,0x3b,0x4e,0x97,0x5f,0x7e,0xb9,0x77,0x7f,0x44,0x68,0xb7,0xda,0xb9,
+ 0x00,0x80,0x70,0xdd,0x5d,0x24,0xc5,0xec,0x76,0x56,0x00,0xe4,0x77,0x62,0x9d,0xe5,
+ 0xf9,0x00,0x8b,0xdb,0x21,0x87,0x1c,0x12,0x3d,0x24,0xcb,0x70,0x3c,0x9b,0xad,0x9f,
+ 0x36,0x9e,0x7d,0xf6,0xd9,0xca,0xd8,0xb1,0x63,0x0b,0xe9,0x83,0xb4,0xf5,0xd6,0x5b,
+ 0xaf,0xf2,0xd2,0x4b,0x2f,0x55,0xb5,0x6f,0xdb,0x6d,0xb7,0x9d,0x77,0xfd,0x5b,0x6e,
+ 0xb9,0x65,0xdd,0xee,0xec,0x5d,0x76,0xd9,0xc5,0xbb,0x3f,0xb5,0x58,0xdb,0x65,0x3e,
+ 0x17,0x00,0x10,0xc4,0x6c,0x19,0xfc,0xeb,0xd5,0x8e,0x83,0x1f,0x32,0x06,0x7e,0xda,
+ 0x69,0xa7,0xa9,0xb3,0xcf,0x3e,0x3b,0x0a,0x78,0x2b,0x6a,0x0c,0x56,0xc6,0x7d,0x97,
+ 0x2f,0x5f,0x4e,0x3f,0x6b,0xe4,0x89,0x27,0x9e,0x50,0xfb,0xed,0xb7,0x9f,0x9a,0x34,
+ 0x69,0x52,0x61,0xdb,0x98,0x35,0x6b,0x96,0x3a,0xe0,0x80,0x03,0xd4,0x6b,0xaf,0xbd,
+ 0x96,0xf9,0xb7,0x9f,0xff,0xfc,0xe7,0xbd,0xcb,0xbc,0xfa,0xea,0xab,0xea,0xa9,0xa7,
+ 0x9e,0x2a,0xfc,0x9c,0x4b,0x4c,0xc2,0xd3,0x4f,0x3f,0x9d,0xba,0x8c,0x1e,0x02,0x52,
+ 0x07,0x1f,0x7c,0x70,0x4b,0x9e,0x0b,0x00,0x08,0xa2,0x97,0x28,0x00,0xdd,0xdb,0xb1,
+ 0xe7,0x9f,0xfd,0xec,0x67,0xd5,0x15,0x57,0x5c,0x51,0xf8,0x76,0xee,0xbc,0xf3,0x4e,
+ 0x75,0xcc,0x31,0xc7,0x04,0x05,0x44,0xd1,0x4f,0x3b,0x0f,0x3f,0xfc,0xb0,0x3a,0xe8,
+ 0xa0,0x83,0xa2,0x4c,0x85,0xa2,0x79,0xef,0xbd,0xf7,0xd4,0xfe,0xfb,0xef,0x1f,0x65,
+ 0x43,0x64,0xe1,0x84,0x13,0x4e,0x88,0x02,0x25,0x7d,0xfc,0xe9,0x4f,0x7f,0x2a,0xbc,
+ 0x0f,0xff,0xfb,0xbf,0xff,0xeb,0x5d,0xe6,0x8b,0x5f,0xfc,0x62,0x55,0x01,0x77,0xcd,
+ 0x70,0x2e,0x00,0x20,0x88,0xee,0xa2,0x00,0xb4,0x5d,0xd8,0xed,0xd5,0x57,0x5f,0xad,
+ 0xae,0xbb,0xee,0xba,0xba,0x6d,0x4f,0x22,0xa3,0x7f,0xf4,0xa3,0x1f,0xd1,0xcf,0x2a,
+ 0x78,0xf4,0xd1,0x47,0x95,0x1e,0x62,0x50,0x0b,0x16,0x2c,0x08,0xfe,0x4d,0xb7,0x6e,
+ 0xdd,0xd4,0xe8,0xd1,0xa3,0xd5,0x8e,0x3b,0xee,0xa8,0xb6,0xde,0x7a,0xeb,0x28,0xf5,
+ 0x2c,0x0b,0xef,0xbc,0xf3,0x8e,0x3a,0xf9,0xe4,0x93,0x33,0xfd,0x46,0xd2,0xda,0x42,
+ 0x2c,0xea,0xbf,0xfe,0xf5,0xaf,0x85,0x7a,0x4a,0x96,0x2d,0x5b,0xa6,0xfe,0xfc,0xe7,
+ 0x3f,0xa7,0x2e,0x23,0x51,0xff,0x59,0xfb,0xd7,0x4c,0xe7,0x02,0x00,0x82,0xe8,0xa2,
+ 0x8a,0x1e,0x64,0x28,0x5b,0x0c,0x80,0xce,0x4d,0xae,0x0c,0x1c,0x38,0x30,0x73,0xd4,
+ 0xbb,0xaa,0x71,0x4c,0xb3,0x7b,0xf7,0xee,0x95,0x97,0x5f,0x7e,0x99,0x7e,0x66,0x40,
+ 0xa7,0x26,0x56,0x74,0x9a,0x58,0xd0,0x76,0x75,0x2e,0x79,0x45,0x5b,0xe1,0x15,0xad,
+ 0x84,0x54,0x74,0x0e,0xfa,0x3a,0xeb,0xd2,0xae,0xe4,0xca,0x4f,0x7f,0xfa,0xd3,0xca,
+ 0x86,0x1b,0x6e,0x18,0xdc,0x97,0x6b,0xae,0xb9,0x26,0xd3,0xfe,0xea,0xf4,0xb7,0xa0,
+ 0xf5,0xea,0xf4,0xcb,0xc2,0xee,0xb7,0x6b,0xaf,0xbd,0xd6,0xbb,0x7d,0xad,0xa8,0xb4,
+ 0xfc,0xb9,0x00,0x00,0x3f,0x6d,0xa7,0x00,0x68,0xf7,0xa5,0x77,0x19,0x79,0xd0,0x9d,
+ 0x7f,0xfe,0xf9,0x95,0x7f,0xfc,0xe3,0x1f,0x95,0xc9,0x93,0x27,0x57,0xf4,0x38,0x7a,
+ 0x47,0xd4,0xf3,0x2b,0xaf,0xbc,0x12,0x45,0x73,0x6f,0xb3,0xcd,0x36,0x99,0x85,0xe3,
+ 0x9e,0x7b,0xee,0x59,0xd1,0xe3,0xf0,0xf4,0x33,0x90,0x13,0x4f,0x3c,0x31,0x68,0x7b,
+ 0x3b,0xec,0xb0,0x43,0x45,0x8f,0x79,0x07,0xad,0x53,0x5b,0xaf,0x95,0x33,0xce,0x38,
+ 0x23,0x68,0xbd,0xba,0x08,0x52,0x94,0x4e,0x97,0x25,0x2a,0x7e,0xd0,0xa0,0x41,0x85,
+ 0x47,0xdf,0xa7,0xa1,0x5d,0xe6,0x85,0x28,0x20,0xcd,0x76,0x2e,0x00,0x00,0x05,0x20,
+ 0x53,0x3b,0xf0,0xc0,0x03,0x2b,0xb7,0xdc,0x72,0x4b,0x87,0x20,0xf4,0xa1,0x8b,0xe8,
+ 0x64,0x4e,0xab,0xd3,0x6e,0x79,0xfa,0x19,0xc0,0x0d,0x37,0xdc,0x10,0xb4,0x1d,0x5d,
+ 0x3c,0xa6,0x2a,0xc1,0xf0,0x9d,0xef,0x7c,0x27,0x68,0xfd,0xdf,0xff,0xfe,0xf7,0x33,
+ 0xad,0xf7,0xcb,0x5f,0xfe,0xb2,0x77,0x9d,0xda,0x2d,0x9e,0x4b,0xfe,0xbd,0xc9,0x1b,
+ 0x6f,0xbc,0x11,0x59,0xdf,0x69,0xdb,0xd6,0xd5,0x1d,0x2b,0x3a,0x4e,0xa3,0x2d,0xce,
+ 0x05,0x00,0xa0,0x00,0x78,0x9b,0x1e,0x97,0xac,0xda,0x2d,0xab,0x23,0xbb,0x2b,0xeb,
+ 0xaf,0xbf,0x7e,0xf0,0xb6,0x3e,0xf6,0xb1,0x8f,0xd1,0xcf,0x00,0xcb,0x50,0xd2,0xc0,
+ 0x7c,0xdb,0xd0,0x65,0x64,0xa3,0x65,0xab,0xe5,0xb0,0xc3,0x0e,0x0b,0xda,0x46,0x16,
+ 0x9e,0x7c,0xf2,0xc9,0xa0,0xe3,0xf3,0xeb,0x5f,0xff,0x3a,0xf7,0x7b,0xed,0xdc,0x73,
+ 0xcf,0xf5,0x6e,0xf7,0x9b,0xdf,0xfc,0x66,0xdb,0x9c,0x0b,0x00,0x40,0x01,0xf0,0x8e,
+ 0x87,0xea,0x5a,0xe5,0x35,0x6d,0xfb,0x9f,0xff,0xfc,0x67,0xa6,0x62,0x28,0xb5,0x8c,
+ 0x91,0xb7,0x43,0x3f,0x2f,0xbd,0xf4,0xd2,0xa0,0x71,0xe6,0x87,0x1e,0x7a,0xa8,0xa6,
+ 0xfe,0x48,0x05,0x3b,0x89,0x59,0xf0,0x6d,0x4b,0x07,0xbf,0x65,0x5a,0xaf,0xe4,0xfb,
+ 0xfb,0xd6,0xb9,0xd3,0x4e,0x3b,0xe5,0x7a,0x9f,0x89,0x37,0xc7,0x57,0xdd,0x51,0x8e,
+ 0x99,0x4e,0xdd,0x6b,0xab,0x73,0x01,0x00,0x6e,0xda,0x7a,0x1a,0xe0,0x8b,0x2e,0xba,
+ 0x28,0xca,0x61,0x97,0x09,0x6f,0x6a,0x61,0xdc,0xb8,0x71,0x4a,0xbb,0x27,0x83,0x97,
+ 0xbf,0xf2,0xca,0x2b,0xe9,0xa7,0x03,0x51,0x4a,0xb5,0x75,0xec,0x5d,0x4e,0xea,0xc7,
+ 0xef,0xb5,0xd7,0x5e,0x35,0xf5,0x47,0x17,0xb2,0x51,0xe3,0xc7,0x8f,0xf7,0x2e,0x77,
+ 0xd5,0x55,0x57,0x65,0x5a,0x6f,0x48,0x4d,0x00,0x5d,0x48,0x47,0x69,0x05,0x29,0xb7,
+ 0x73,0x7c,0xf7,0xdd,0x77,0x2b,0x5d,0x3d,0x2f,0x75,0x19,0x99,0xcb,0x61,0xd3,0x4d,
+ 0x37,0x6d,0xab,0x73,0x01,0x00,0xe9,0x37,0x79,0x5b,0x7a,0x00,0xf2,0x76,0xc1,0xea,
+ 0x99,0xce,0x2a,0x7a,0x82,0x9c,0xa0,0x6d,0xcb,0x38,0x6c,0xb5,0x41,0x72,0xad,0xde,
+ 0xcf,0xdb,0x6f,0xbf,0x3d,0x68,0xdd,0x7a,0x42,0xa4,0x5c,0xfa,0x73,0xdb,0x6d,0xb7,
+ 0x79,0xb7,0x35,0x78,0xf0,0xe0,0x4c,0xfd,0x90,0x0c,0x8c,0x90,0x8c,0x8a,0xaf,0x7f,
+ 0xfd,0xeb,0xb9,0x9d,0x17,0x2d,0x84,0xbd,0xdb,0x93,0x0c,0x81,0x76,0x3b,0x17,0x00,
+ 0x80,0x07,0x60,0x2d,0x7e,0xf3,0x9b,0xdf,0x28,0x1d,0x7d,0x9c,0xeb,0x3a,0x65,0x06,
+ 0xbe,0xaf,0x7d,0xed,0x6b,0x41,0xcb,0x4a,0x81,0x13,0x1d,0xb0,0x45,0x3f,0x2d,0x68,
+ 0x97,0xb3,0x77,0x99,0xcd,0x36,0xdb,0x4c,0xed,0xb3,0xcf,0x3e,0xb9,0xf4,0xe7,0x13,
+ 0x9f,0xf8,0x84,0xea,0xd9,0xb3,0x67,0xea,0x32,0x73,0xe6,0xcc,0x89,0x66,0x61,0x0c,
+ 0x45,0xaa,0xec,0x49,0x01,0x1b,0x1f,0x7f,0xf9,0xcb,0x5f,0x72,0xa9,0xce,0x28,0xc7,
+ 0x59,0x97,0xf5,0x4d,0x5d,0x46,0xf2,0xef,0xc5,0x52,0x6f,0xb7,0x73,0x01,0x00,0x6e,
+ 0xda,0x4e,0x01,0xd0,0x93,0xd7,0xa8,0xd3,0x4f,0x3f,0xbd,0x90,0x75,0x4b,0x25,0xbc,
+ 0x50,0x7c,0xd3,0xc7,0xb6,0x63,0x3f,0x75,0x1a,0x9d,0x7a,0xf0,0xc1,0x07,0xbd,0xcb,
+ 0xe9,0x2c,0x86,0xdc,0xfa,0xa2,0xc7,0x9d,0xd5,0x56,0x5b,0x6d,0xe5,0x5d,0xee,0xf9,
+ 0xe7,0x9f,0xcf,0xb4,0xde,0x2f,0x7c,0xe1,0x0b,0xde,0x65,0xa4,0xc8,0xcd,0xbd,0xf7,
+ 0xde,0x5b,0x73,0x1f,0xc4,0x2d,0xee,0xab,0xc0,0x28,0xd3,0xfe,0xea,0xf8,0x8d,0xb6,
+ 0x3c,0x17,0x00,0x80,0x02,0x10,0xa1,0xd3,0xb4,0x0a,0x5b,0xb7,0x9e,0xce,0x54,0xe9,
+ 0xbc,0xf9,0x52,0x28,0x00,0xcd,0xd8,0x4f,0xa9,0x5f,0x1f,0x52,0x25,0x2f,0xc4,0xba,
+ 0xce,0x42,0x48,0x5f,0xb2,0x0a,0x9d,0x4f,0x7f,0xfa,0xd3,0xaa,0x7f,0xff,0xfe,0x41,
+ 0xc2,0xbb,0x56,0x42,0x4a,0xff,0x7e,0xe9,0x4b,0x5f,0xca,0xb4,0xce,0x56,0x3a,0x17,
+ 0x00,0x80,0x02,0x50,0x17,0x42,0x27,0x58,0x29,0x5a,0x01,0x68,0xc6,0x7e,0x4a,0xa9,
+ 0xd9,0x10,0x76,0xdb,0x6d,0xb7,0x5c,0xfb,0x32,0x66,0xcc,0x98,0xdc,0x85,0x4e,0xef,
+ 0xde,0xbd,0x83,0x82,0xda,0x6e,0xbe,0xf9,0xe6,0x4c,0xa5,0x75,0x6d,0xc7,0xcc,0x37,
+ 0x61,0x8e,0xce,0xcf,0x0f,0xb2,0xac,0x5b,0xf5,0x5c,0x00,0x00,0x0a,0x40,0x5d,0x08,
+ 0xb5,0x8c,0x75,0xa5,0x3d,0xfa,0x59,0x85,0xd0,0x91,0x31,0xe2,0x11,0x23,0x46,0xe4,
+ 0xda,0x97,0x7e,0xfd,0xfa,0x79,0x97,0x79,0xfd,0xf5,0xd7,0x33,0xaf,0x37,0x24,0x1b,
+ 0x60,0xf1,0xe2,0xc5,0x4a,0x17,0xda,0xa9,0x7a,0xdf,0x7f,0xff,0xfb,0xdf,0xe7,0x6e,
+ 0xfd,0xb7,0xe2,0xb9,0x00,0x80,0x75,0xe9,0xca,0x21,0xc8,0x97,0x2d,0xb6,0xd8,0x22,
+ 0x68,0xb9,0xb9,0x73,0xe7,0xd2,0x4f,0x83,0x90,0xa9,0x72,0x57,0xad,0x5a,0x15,0xcd,
+ 0x48,0x97,0x27,0x13,0x26,0x4c,0xf0,0x2e,0x53,0xcd,0xec,0x77,0x62,0x79,0xeb,0xe2,
+ 0x35,0x4a,0x97,0x59,0x4e,0x5d,0x4e,0x66,0x08,0x3c,0xe9,0xa4,0x93,0x32,0xaf,0x7f,
+ 0xfe,0xfc,0xf9,0x4a,0xcf,0x3f,0x90,0xba,0xcc,0x80,0x01,0x03,0x82,0x3c,0x11,0xad,
+ 0x7e,0x2e,0xfe,0xfe,0xf7,0xbf,0xab,0xc7,0x1e,0x7b,0xac,0xb4,0xf7,0x93,0x78,0x3e,
+ 0x98,0xf4,0x08,0x50,0x00,0xda,0x44,0x01,0x90,0xa0,0xad,0x25,0x4b,0x96,0xa8,0x5e,
+ 0xbd,0x7a,0xd1,0x4f,0x8d,0x2e,0x64,0xa3,0x66,0xcf,0x9e,0x1d,0xb4,0xbe,0xbc,0xa2,
+ 0xce,0xb3,0x0a,0xdb,0xac,0xe8,0x02,0x39,0x51,0xf0,0x9d,0xaf,0x76,0x82,0x08,0x51,
+ 0x99,0xf2,0x56,0x62,0x2b,0xb2,0xa0,0xd3,0xfa,0x22,0x0f,0x42,0x1a,0x32,0x1d,0x74,
+ 0xd6,0x6b,0xac,0x15,0xcf,0x85,0xcc,0x90,0x28,0xc7,0xab,0xac,0xc8,0x10,0x0d,0x0a,
+ 0x00,0xd4,0x1b,0x86,0x00,0x72,0x46,0x4f,0x06,0x13,0x1c,0x6d,0x5d,0x8f,0x39,0xd5,
+ 0x9b,0xa5,0x9f,0x7a,0xb6,0xb9,0xa8,0xf0,0x4c,0x59,0x11,0x41,0x2b,0x16,0x6f,0x56,
+ 0xf4,0x24,0x3a,0x91,0x22,0x90,0x86,0xf4,0x5b,0xa6,0x6e,0xce,0x4a,0x11,0xc1,0x7f,
+ 0xad,0x7c,0x2e,0x00,0x00,0x05,0xa0,0x70,0x24,0x57,0x3e,0xf4,0x41,0x4b,0x3f,0x3f,
+ 0x24,0xc4,0xe2,0x6c,0x34,0xd5,0x58,0x9e,0x32,0x04,0x10,0x52,0x25,0x2f,0xab,0x02,
+ 0xf0,0xe2,0x8b,0x2f,0x46,0x91,0xfa,0x69,0xec,0xb2,0xcb,0x2e,0x6a,0xfb,0xed,0xb7,
+ 0xcf,0xbc,0xcf,0xad,0x7a,0x2e,0x00,0x00,0x05,0xa0,0x34,0x82,0xb1,0x96,0xe8,0xef,
+ 0x56,0xeb,0xa7,0x14,0x78,0x29,0x3b,0xd5,0x9e,0xaf,0x90,0x60,0x40,0x5d,0x0b,0x3f,
+ 0xd3,0x18,0x75,0x51,0xd6,0x7f,0xab,0x9f,0x0b,0x00,0x40,0x01,0x28,0x14,0x49,0x01,
+ 0x0b,0xa1,0x6b,0xd7,0xae,0xf4,0x73,0x0d,0xcd,0x10,0x14,0x59,0x6d,0xd5,0xbe,0xa3,
+ 0x8f,0x3e,0x3a,0xe8,0x58,0x85,0xd6,0x04,0x58,0xb6,0x6c,0x59,0x34,0xa6,0x9d,0x46,
+ 0xdf,0xbe,0x7d,0xd5,0xf1,0xc7,0x1f,0x5f,0xd5,0xfe,0xb6,0xf2,0xb9,0x00,0x00,0x14,
+ 0x80,0x42,0xf1,0x55,0x65,0x8b,0x91,0x08,0x6d,0xfa,0xd9,0x3c,0x0f,0xf4,0x6a,0x15,
+ 0x36,0x49,0x6d,0x3b,0xf2,0xc8,0x23,0xbd,0xcb,0x5d,0x77,0xdd,0x75,0x91,0x70,0xf7,
+ 0x71,0xd3,0x4d,0x37,0x79,0xad,0x74,0x11,0xfe,0xa2,0x04,0xb4,0xaa,0x70,0x6d,0x76,
+ 0xe5,0x19,0xa0,0x14,0xf7,0x11,0x87,0x20,0x7f,0x16,0x2d,0x5a,0x14,0xb4,0xdc,0xc0,
+ 0x81,0x03,0xe9,0xe7,0x1a,0xf4,0x24,0x2f,0x2d,0x2d,0x74,0xa4,0x34,0xb0,0xcf,0x6a,
+ 0x97,0x58,0x09,0x3d,0x21,0x8e,0x37,0x6d,0xaf,0x48,0xf7,0x7f,0xab,0x9e,0x8b,0xdd,
+ 0x77,0xdf,0x5d,0xcd,0x9a,0x35,0xab,0xb4,0xfd,0xc9,0x5a,0xa8,0x09,0x00,0x05,0xa0,
+ 0xc9,0x05,0x63,0xb3,0x7b,0x00,0xf2,0xec,0xe7,0x7a,0xeb,0xad,0x17,0xb4,0xae,0xef,
+ 0x7d,0xef,0x7b,0x99,0xa6,0x24,0x2e,0x0b,0x32,0x15,0xef,0xa8,0x51,0xa3,0x94,0x9e,
+ 0x29,0x30,0x75,0x39,0xa9,0x09,0x90,0xa6,0x00,0x48,0x4d,0x81,0xfb,0xef,0xbf,0x3f,
+ 0x75,0x1d,0x12,0xf8,0x27,0x01,0x80,0xd5,0xd2,0x8a,0xe7,0xe2,0xcc,0x33,0xcf,0x8c,
+ 0x1a,0x00,0xfc,0x7f,0x18,0x02,0x28,0x00,0x5f,0x6e,0xb6,0x20,0x6e,0xe1,0x2e,0x5d,
+ 0xba,0xd0,0xcf,0x8c,0x42,0x27,0xa4,0x50,0x4c,0x29,0x6f,0xb4,0xce,0x9d,0xa3,0x94,
+ 0x40,0x1f,0x77,0xdf,0x7d,0xb7,0x7a,0xff,0xfd,0xf7,0x9d,0xdf,0xff,0xe1,0x0f,0x7f,
+ 0xf0,0xa6,0xe8,0xd5,0x62,0xfd,0xb7,0xc3,0xb9,0x00,0x00,0x14,0x80,0x42,0x90,0xa9,
+ 0x59,0x43,0xc6,0x50,0x9b,0xdd,0xfd,0x9f,0x77,0x3f,0xa5,0xae,0x40,0x88,0xa2,0xd0,
+ 0xcc,0x42,0x47,0x8a,0x02,0xf9,0x90,0x22,0x3c,0x32,0x4d,0xb0,0x0d,0xc9,0x7d,0x17,
+ 0x05,0x20,0x0d,0x29,0xfa,0xf3,0x99,0xcf,0x7c,0xa6,0xa6,0xfd,0x6c,0x87,0x73,0x01,
+ 0x00,0x28,0x00,0xb9,0xe3,0x9b,0x98,0x25,0x66,0xf3,0xcd,0x37,0xa7,0x9f,0x09,0xa4,
+ 0x58,0x8e,0xcc,0x59,0xef,0x43,0xd2,0xe5,0x42,0x87,0x1e,0xca,0x86,0x54,0x4f,0x94,
+ 0xb1,0x68,0x1f,0xae,0x6c,0x00,0xf1,0x0e,0xc8,0x14,0xc2,0x69,0xc8,0xf0,0x41,0xad,
+ 0xca,0x65,0x3b,0x9c,0x0b,0x00,0x40,0x01,0x68,0x98,0x60,0xac,0x65,0x8c,0xb6,0x55,
+ 0xfb,0xb9,0xd3,0x4e,0x3b,0x05,0x59,0xc8,0x22,0x08,0x9b,0x15,0x09,0x06,0xf4,0x21,
+ 0xb3,0xdd,0x49,0xa1,0x1f,0x93,0xa2,0x26,0xfe,0x69,0xd7,0x73,0x01,0x80,0x02,0x00,
+ 0x28,0x00,0x25,0xe9,0x67,0xe8,0xdc,0xf2,0xb7,0xdc,0x72,0x4b,0xd3,0x1e,0xb7,0x63,
+ 0x8e,0x39,0x26,0xa8,0x84,0xb2,0xe9,0x05,0x90,0x21,0x97,0x3b,0xee,0xb8,0x23,0xf5,
+ 0x37,0x12,0x49,0x2e,0x13,0x10,0xe5,0x41,0x3b,0x9c,0x0b,0x00,0x14,0x00,0xc8,0x95,
+ 0xd0,0x79,0xd4,0x9b,0x5d,0x01,0x28,0xa2,0x9f,0xfb,0xed,0xb7,0x5f,0xd0,0x72,0x77,
+ 0xde,0x79,0x67,0x64,0x7d,0x36,0x23,0x32,0xbe,0x7e,0xf8,0xe1,0x87,0x7b,0x97,0x93,
+ 0x38,0x80,0x64,0xbd,0x7b,0x51,0x08,0x7c,0x75,0x17,0xf2,0xb2,0xfe,0xdb,0xe5,0x5c,
+ 0x00,0xa0,0x00,0x40,0x6e,0x48,0xf4,0xb6,0xaf,0x3e,0xbb,0x30,0x74,0xe8,0xd0,0x28,
+ 0x25,0x8c,0x7e,0xae,0x8d,0xa4,0xaf,0x85,0x8c,0x3d,0x4b,0x11,0x9c,0xbf,0xfd,0xed,
+ 0x6f,0x4d,0x7b,0xfc,0x42,0x4a,0x03,0xcf,0x98,0x31,0x43,0xdd,0x73,0xcf,0x3d,0x1d,
+ 0x7f,0xfb,0x72,0xff,0xc5,0xab,0x10,0x12,0x64,0xc8,0xb9,0x00,0x00,0x14,0x80,0x02,
+ 0x90,0x39,0xc7,0x43,0x22,0xe3,0x0f,0x39,0xe4,0x10,0xfa,0x69,0xbb,0x18,0x75,0xaa,
+ 0x5c,0xa8,0xe5,0x79,0xfe,0xf9,0xe7,0x37,0xed,0x8c,0x70,0x07,0x1d,0x74,0x90,0x1a,
+ 0x36,0x6c,0x98,0x77,0x39,0xa9,0x09,0x20,0x88,0xb7,0xc5,0x37,0xe4,0x72,0xc4,0x11,
+ 0x47,0x04,0x09,0x6c,0xce,0x05,0x00,0xa0,0x00,0x14,0x80,0x2b,0x7d,0xcb,0xe4,0x94,
+ 0x53,0x4e,0xa1,0x9f,0x0e,0xce,0x38,0xe3,0x8c,0xa0,0xe5,0x44,0x20,0x5e,0x73,0xcd,
+ 0x35,0x4d,0x79,0xfc,0xa4,0x8a,0x5d,0x48,0xaa,0xde,0xad,0xb7,0xde,0x1a,0x4d,0xa5,
+ 0x5c,0xcf,0xe0,0xbf,0x76,0x3b,0x17,0x00,0x28,0x00,0x6d,0xc4,0xd2,0xa5,0x4b,0x0b,
+ 0x59,0xaf,0x58,0x69,0xf7,0xde,0x7b,0xaf,0x77,0xb9,0x2d,0xb7,0xdc,0x52,0x7d,0xfc,
+ 0xe3,0x1f,0xa7,0x9f,0x0e,0xf6,0xdc,0x73,0x4f,0xb5,0xf7,0xde,0x7b,0x07,0x2d,0x7b,
+ 0xce,0x39,0xe7,0xa8,0x77,0xdf,0x7d,0xb7,0x29,0xaf,0xc3,0x10,0x77,0xbd,0x9c,0x43,
+ 0x11,0xfe,0xd7,0x5f,0x7f,0x7d,0xea,0x72,0x9b,0x6e,0xba,0x69,0x54,0x69,0x30,0x6f,
+ 0xda,0xe5,0x5c,0x00,0xa0,0x00,0xb4,0x09,0x22,0x94,0xde,0x7a,0xeb,0xad,0xdc,0xd7,
+ 0x7b,0xde,0x79,0xe7,0x05,0x2d,0x77,0xf2,0xc9,0x27,0xd3,0x4f,0x0f,0xe7,0x9e,0x7b,
+ 0x6e,0xd0,0x72,0x12,0x19,0x2f,0x33,0xed,0x2d,0x5f,0xbe,0xbc,0xe9,0xae,0xc3,0xed,
+ 0xb6,0xdb,0x4e,0xed,0xb8,0xe3,0x8e,0xde,0xe5,0xce,0x3e,0xfb,0x6c,0x6f,0xc5,0x45,
+ 0xf1,0xb4,0x48,0xee,0x7e,0x11,0xb4,0xc3,0xb9,0x00,0x40,0x01,0x68,0x13,0x9e,0x7b,
+ 0xee,0xb9,0x28,0xc7,0x39,0xc4,0x8a,0x0d,0xe5,0xb2,0xcb,0x2e,0x53,0x0f,0x3c,0xf0,
+ 0x80,0x77,0xb9,0x9e,0x3d,0x7b,0xe6,0x1a,0xa8,0xd5,0xaa,0xfd,0x3c,0xe0,0x80,0x03,
+ 0xd4,0x6e,0xbb,0xed,0x16,0xb4,0xec,0xe3,0x8f,0x3f,0x1e,0x09,0xc0,0xd0,0x99,0x09,
+ 0xcb,0x44,0x48,0x30,0xa0,0x0f,0x19,0x4e,0x08,0xa9,0x2d,0xc0,0xb9,0x00,0x80,0xb6,
+ 0x57,0x00,0x84,0xd9,0xb3,0x67,0xab,0x83,0x0f,0x3e,0x38,0x9a,0xc8,0xa4,0x56,0x57,
+ 0xb9,0x44,0x6a,0x9f,0x75,0xd6,0x59,0xc1,0xd6,0xd4,0x06,0x1b,0x6c,0x40,0x3f,0x03,
+ 0xb8,0xf4,0xd2,0x4b,0x55,0xf7,0xee,0xdd,0x83,0x96,0xbd,0xfa,0xea,0xab,0x23,0x41,
+ 0x35,0x73,0xe6,0xcc,0x42,0x8e,0xa3,0x04,0xb8,0xf9,0xa6,0xdf,0xad,0x06,0x99,0xb2,
+ 0xb7,0x5b,0xb7,0x6e,0x35,0xad,0xe3,0xb0,0xc3,0x0e,0x0b,0x0a,0x28,0xe4,0x5c,0x00,
+ 0xc0,0x3a,0x54,0x0a,0xe6,0xe2,0x8b,0x2f,0x96,0x99,0x4b,0xbc,0xad,0x5e,0xdb,0x31,
+ 0xdb,0x46,0x1b,0x6d,0x54,0xd1,0x63,0xac,0x55,0x6d,0x53,0xd7,0x65,0xaf,0xe8,0x39,
+ 0xd7,0x83,0xb6,0xf3,0x91,0x8f,0x7c,0xa4,0xa2,0xdd,0xa3,0xf4,0x33,0x03,0xda,0xe3,
+ 0x90,0xa9,0x8f,0xa3,0x47,0x8f,0xae,0xe8,0x60,0xb4,0x8a,0x16,0x12,0x35,0x6f,0x5b,
+ 0x4f,0xcd,0x5b,0xb9,0xee,0xba,0xeb,0x2a,0x9f,0xfd,0xec,0x67,0x2b,0x3a,0xba,0xbe,
+ 0xb2,0xe1,0x86,0x1b,0x16,0x72,0x7f,0xe8,0x9a,0x00,0x55,0x9d,0xcf,0xb8,0xdd,0x75,
+ 0xd7,0x5d,0x95,0x7a,0xd0,0x0e,0xe7,0x02,0xa0,0xdd,0x68,0x7b,0x05,0x20,0x6e,0xba,
+ 0x82,0x5a,0x45,0xcf,0xd7,0x5e,0x59,0xb8,0x70,0xa1,0x77,0x5b,0x2f,0xbf,0xfc,0x72,
+ 0x45,0xa7,0x5d,0x05,0xaf,0x5b,0x8f,0xcf,0x56,0x1e,0x79,0xe4,0x91,0xba,0x1e,0xcf,
+ 0x66,0xef,0x67,0x8c,0x9e,0x41,0x2f,0x73,0x1f,0x75,0xcd,0xfd,0x48,0x69,0xd1,0x56,
+ 0x68,0xa6,0x6d,0x4d,0x9a,0x34,0xa9,0xf2,0x8b,0x5f,0xfc,0xa2,0xa2,0xab,0xe0,0x55,
+ 0xb4,0x65,0xbe,0xd6,0x3a,0x75,0x4d,0x83,0x42,0xee,0x8f,0x9b,0x6f,0xbe,0xb9,0xea,
+ 0x73,0x29,0x42,0x36,0x0f,0x01,0xcb,0xb9,0x00,0x68,0x4f,0xba,0xe2,0x03,0xf9,0x10,
+ 0x89,0x6e,0x97,0xd6,0xa7,0x4f,0x9f,0xa8,0x52,0x9b,0x8c,0x7b,0x6a,0xab,0x59,0x69,
+ 0x6b,0x23,0x72,0x9f,0x4b,0x84,0xb3,0x7e,0x28,0x45,0x11,0xd9,0x52,0xab,0x3d,0x0b,
+ 0xa7,0x9e,0x7a,0x6a,0x6e,0x25,0x5a,0xdb,0xad,0x9f,0x97,0x5f,0x7e,0x79,0xb4,0x1f,
+ 0x2f,0xbd,0xf4,0x52,0xf0,0x6f,0x24,0x2d,0xed,0xa4,0x93,0x4e,0x8a,0x02,0xe3,0x24,
+ 0xd8,0x6e,0x9f,0x7d,0xf6,0x51,0x9b,0x6c,0xb2,0x49,0x94,0x27,0xdf,0xbb,0x77,0xef,
+ 0x68,0x02,0x9b,0xb9,0x73,0xe7,0x46,0x41,0x92,0xd2,0xde,0x7e,0xfb,0xed,0xe8,0x55,
+ 0x02,0xd9,0xea,0xcd,0x27,0x3f,0xf9,0xc9,0x68,0xfa,0xdd,0x59,0xb3,0x66,0x65,0xfe,
+ 0xad,0x04,0x5a,0x4a,0xbe,0x7e,0xbd,0x68,0xf5,0x73,0x01,0xc0,0x10,0x40,0x9b,0x7a,
+ 0x00,0x8a,0x6a,0x87,0x1e,0x7a,0x68,0x6e,0x2e,0xf1,0x76,0xea,0x67,0x12,0x5d,0x15,
+ 0xaf,0xb2,0xeb,0xae,0xbb,0x36,0xb4,0x7f,0x45,0x5a,0x9d,0x3a,0xdf,0x3e,0xf3,0xfe,
+ 0xe8,0xe9,0x7a,0x2b,0x53,0xa7,0x4e,0xad,0xbb,0xc5,0xd0,0xea,0xe7,0x02,0xa0,0x9d,
+ 0x68,0xbb,0x20,0xc0,0x6f,0x7f,0xfb,0xdb,0x75,0xdb,0x96,0x54,0x52,0x13,0x4b,0xba,
+ 0xd6,0x40,0xaf,0x76,0xef,0xa7,0x94,0x14,0x7e,0xf0,0xc1,0x07,0xd5,0x51,0x47,0x1d,
+ 0xd5,0x92,0xd7,0x64,0x35,0xd9,0x00,0x12,0xdc,0x39,0x72,0xe4,0xc8,0xba,0xef,0x6b,
+ 0xab,0x9f,0x0b,0x80,0x76,0xa2,0xed,0x14,0x80,0x1f,0xff,0xf8,0xc7,0xea,0x82,0x0b,
+ 0x2e,0x28,0x7c,0x3b,0xe3,0xc6,0x8d,0x53,0xb7,0xdd,0x76,0x5b,0x94,0x12,0x47,0x3f,
+ 0x6b,0xa7,0x57,0xaf,0x5e,0x91,0x92,0x21,0x05,0x67,0x5a,0x0d,0x49,0xd7,0xdc,0x7a,
+ 0xeb,0xad,0x33,0xfd,0xa6,0x88,0xca,0x7f,0x9c,0x0b,0x00,0x14,0x80,0x96,0xe7,0x5b,
+ 0xdf,0xfa,0x96,0xd2,0x81,0x49,0xd1,0xcc,0x6c,0x79,0xa3,0x5d,0xb3,0xea,0x1b,0xdf,
+ 0xf8,0x86,0xba,0xef,0xbe,0xfb,0xa2,0x71,0x76,0xfa,0x99,0x1f,0x32,0x8e,0xfc,0xd3,
+ 0x9f,0xfe,0x54,0xe9,0xc8,0xf7,0x68,0x3c,0xb9,0x95,0xc8,0x92,0xcb,0x3f,0x7c,0xf8,
+ 0x70,0xf5,0xa9,0x4f,0x7d,0xaa,0xa1,0xfb,0xdb,0xca,0xe7,0x02,0x00,0x05,0xa0,0xc5,
+ 0x91,0x07,0xae,0x04,0x28,0xc9,0x6b,0x5e,0x55,0xd4,0xb6,0xdd,0x76,0x5b,0xf5,0xe4,
+ 0x93,0x4f,0xaa,0x0b,0x2f,0xbc,0xb0,0x61,0x96,0x7f,0x3b,0xf4,0x53,0xdc,0xdf,0xff,
+ 0xfa,0xd7,0xbf,0xa2,0x29,0x72,0x25,0x80,0xb1,0x48,0x64,0x58,0x43,0xbc,0x1c,0xa7,
+ 0x9f,0x7e,0x7a,0xa1,0xdb,0x39,0xe1,0x84,0x13,0x22,0xa5,0x2a,0x04,0x09,0xaa,0x93,
+ 0x02,0x40,0x65,0xa0,0x15,0xcf,0x05,0x40,0xdb,0x50,0x74,0x90,0x81,0x8e,0x1c,0xf6,
+ 0x06,0xf5,0x68,0x0b,0xb2,0xa1,0xc1,0x86,0x3a,0x2a,0xbe,0x32,0x7e,0xfc,0xf8,0x68,
+ 0x3f,0x54,0xc6,0x80,0x24,0x1d,0x85,0x5d,0xd1,0x63,0xe0,0x15,0x5d,0xb3,0xbd,0xb0,
+ 0x20,0xb8,0x76,0xec,0x67,0x28,0x3a,0x73,0xa1,0x72,0xe5,0x95,0x57,0x46,0xe9,0x8a,
+ 0xfd,0xfa,0xf5,0xab,0x39,0xc0,0x4c,0x2b,0x34,0x15,0x5d,0xff,0xbe,0xa2,0x4b,0x1e,
+ 0x57,0x74,0x15,0xc5,0x8a,0x8e,0x52,0xaf,0x5b,0x5f,0xf4,0xec,0x89,0x41,0xa9,0x96,
+ 0x93,0x27,0x4f,0x2e,0x65,0x40,0x51,0x2b,0x9d,0x0b,0x80,0x76,0xa0,0x93,0xfc,0xd7,
+ 0x0a,0x8a,0xcc,0x25,0x97,0x5c,0x12,0xd5,0x4d,0x0f,0x50,0x78,0x9c,0xdf,0x2d,0x59,
+ 0xb2,0x24,0x72,0x69,0xea,0xdc,0xec,0xc8,0x6a,0x96,0x94,0x38,0x49,0x47,0x5a,0xb9,
+ 0x72,0x65,0x34,0xdf,0xba,0x94,0x38,0x95,0x0a,0x77,0x23,0x46,0x8c,0x88,0x02,0xb0,
+ 0x24,0xf8,0xed,0x98,0x63,0x8e,0x89,0x5c,0xb2,0xf4,0xb3,0xf1,0xc8,0x7e,0xeb,0x3a,
+ 0x04,0xd1,0x74,0xc5,0x92,0xaa,0xf6,0xfe,0xfb,0xef,0x47,0x4d,0xaa,0xd2,0xc9,0x77,
+ 0xd2,0xb7,0x65,0xcb,0x96,0x29,0x2d,0x9c,0xa2,0xbe,0x48,0x05,0x3d,0x79,0x95,0x26,
+ 0x69,0x90,0x92,0x12,0xa9,0x23,0xdc,0xa3,0xe5,0x80,0x73,0x01,0xd0,0xea,0xa0,0x00,
+ 0x78,0x90,0x79,0xef,0x25,0x4f,0x59,0x5c,0xae,0x32,0xd6,0xdd,0x68,0xd7,0x6b,0xbb,
+ 0xf4,0x33,0x67,0x2f,0x57,0xd4,0x37,0x71,0xb1,0xc7,0xfd,0x03,0xce,0x05,0x40,0xbb,
+ 0x43,0x21,0x20,0x0f,0x52,0x68,0x45,0x8a,0x96,0xd0,0xcf,0x26,0xd6,0x72,0x75,0xec,
+ 0xc3,0xe0,0xc1,0x83,0xb9,0x98,0x39,0x17,0x00,0x90,0x7c,0xee,0x73,0x08,0x00,0x00,
+ 0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,
+ 0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,
+ 0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x50,0x00,0x00,
+ 0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x05,0x00,
+ 0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x20,0x23,0x2d,0x33,0x1d,0xf0,0x56,0x5b,
+ 0x6d,0xa5,0xf6,0xdd,0x77,0xdf,0xd4,0x65,0xfa,0xf6,0xed,0x4b,0x3f,0x01,0x00,0x00,
+ 0x34,0x9d,0x2a,0x1a,0x0e,0x03,0x00,0x00,0x40,0x7b,0xc1,0x10,0x00,0x00,0x00,0x00,
+ 0x0a,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,
+ 0xa0,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x00,
+ 0x00,0x0a,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,
+ 0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,
+ 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,
+ 0x00,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,
+ 0x00,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,
+ 0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,
+ 0x00,0x00,0x00,0x94,0x8a,0xae,0x1c,0x02,0x00,0x28,0x33,0x2b,0x57,0xae,0x54,0x73,
+ 0xe7,0xce,0x4d,0x5d,0xa6,0x5b,0xb7,0x6e,0x6a,0xe0,0xc0,0x81,0x1c,0x2c,0x00,0x14,
+ 0x00,0x00,0x68,0x15,0x7e,0xf7,0xbb,0xdf,0xa9,0x33,0xcf,0x3c,0x33,0x75,0x99,0xee,
+ 0xdd,0xbb,0xab,0x65,0xcb,0x96,0x71,0xb0,0x00,0x32,0xc0,0x10,0x00,0x00,0x94,0x9a,
+ 0xe5,0xcb,0x97,0xe7,0xb2,0x0c,0x00,0xa0,0x00,0x00,0x00,0x00,0xa0,0x00,0x70,0x08,
+ 0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x50,0x00,
+ 0x00,0x00,0x00,0xa0,0x25,0x20,0x0d,0x10,0x00,0xa0,0x4d,0x59,0xb0,0x60,0x81,0x7a,
+ 0xf3,0xcd,0x37,0xa3,0x36,0x65,0xca,0x94,0xe8,0x75,0xda,0xb4,0x69,0xea,0xdc,0x73,
+ 0xcf,0x55,0xdb,0x6d,0xb7,0x1d,0x07,0x08,0x05,0x00,0x00,0x00,0x5a,0x81,0xf9,0xf3,
+ 0xe7,0xab,0x93,0x4f,0x3e,0xb9,0x43,0xe0,0xcf,0x9e,0x3d,0xdb,0xba,0xdc,0xe1,0x87,
+ 0x1f,0x8e,0x02,0x80,0x02,0x00,0x00,0xd0,0x58,0xc6,0x8f,0x1f,0xaf,0x36,0xd8,0x60,
+ 0x83,0xd4,0x65,0xfa,0xf6,0xed,0xcb,0x81,0x0a,0x60,0xc9,0x92,0x25,0xea,0x86,0x1b,
+ 0x6e,0xe0,0x40,0x00,0x0a,0x00,0x00,0x94,0x9f,0xd1,0xa3,0x47,0xab,0x13,0x4f,0x3c,
+ 0x91,0x03,0x01,0x90,0x33,0x04,0x01,0x02,0x00,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,
+ 0x0a,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,
+ 0x34,0x29,0x64,0x01,0x00,0x34,0x88,0x79,0xf3,0xe6,0x75,0x14,0x61,0x79,0xeb,0xad,
+ 0xb7,0xd4,0xea,0xd5,0xab,0xd5,0xd0,0xa1,0x43,0xd5,0xf0,0xe1,0xc3,0xd5,0xb0,0x61,
+ 0xc3,0xd4,0xa8,0x51,0xa3,0x54,0x9f,0x3e,0x7d,0x9a,0xba,0x8f,0x92,0x76,0x36,0x79,
+ 0xf2,0xe4,0xa8,0x49,0xde,0xf9,0xaa,0x55,0xab,0xd4,0x7a,0xeb,0xad,0x17,0xb5,0xfd,
+ 0xf7,0xdf,0x5f,0x75,0xef,0xde,0xbd,0x6d,0xce,0x75,0x7c,0x1c,0xde,0x7e,0xfb,0x6d,
+ 0xd5,0xb9,0x73,0x67,0xb5,0xfe,0xfa,0xeb,0x47,0xe9,0x8d,0x5b,0x6c,0xb1,0x45,0x74,
+ 0xae,0xc1,0xcf,0xa2,0x45,0x8b,0xd4,0xd4,0xa9,0x53,0xd5,0xf4,0xe9,0xd3,0xd5,0xbb,
+ 0xef,0xbe,0x1b,0xbd,0x2e,0x5c,0xb8,0x50,0x0d,0x19,0x32,0x24,0xba,0x67,0xa4,0x8d,
+ 0x18,0x31,0x42,0x6d,0xb2,0xc9,0x26,0xaa,0x53,0xa7,0x4e,0xdc,0x3b,0x28,0x00,0x00,
+ 0xb5,0x21,0x37,0xdf,0x03,0x0f,0x3c,0x90,0xba,0x8c,0x08,0xea,0x63,0x8f,0x3d,0x36,
+ 0x75,0x99,0x95,0x2b,0x57,0xaa,0x1b,0x6f,0xbc,0x51,0xfd,0xee,0x77,0xbf,0x53,0x2f,
+ 0xbc,0xf0,0x82,0xfa,0xe0,0x83,0x0f,0xd2,0x6f,0xce,0xae,0x5d,0xd5,0xbe,0xfb,0xee,
+ 0xab,0x8e,0x3a,0xea,0x28,0x75,0xc4,0x11,0x47,0x78,0x73,0xe1,0xcb,0xd2,0xcf,0xd7,
+ 0x5f,0x7f,0x5d,0xfd,0xec,0x67,0x3f,0x53,0x7f,0xff,0xfb,0xdf,0xa3,0x07,0x74,0xa5,
+ 0x52,0xb1,0x2e,0xf7,0xce,0x3b,0xef,0x44,0x0f,0xeb,0x7a,0xed,0x57,0x3d,0xb7,0x23,
+ 0x0f,0xeb,0xdb,0x6e,0xbb,0x4d,0x5d,0x76,0xd9,0x65,0xea,0xd9,0x67,0x9f,0x55,0x73,
+ 0xe7,0xce,0x4d,0x5d,0x7e,0xab,0xad,0xb6,0x52,0x07,0x1f,0x7c,0xb0,0xfa,0xea,0x57,
+ 0xbf,0x1a,0x09,0xaf,0x3c,0x84,0xc7,0x5f,0xff,0xfa,0xd7,0x75,0x8e,0xfd,0xcc,0x99,
+ 0x33,0x83,0x7e,0x7f,0xe7,0x9d,0x77,0xaa,0x65,0xcb,0x96,0x65,0xda,0xe6,0xae,0xbb,
+ 0xee,0xaa,0xb6,0xd9,0x66,0x9b,0xdc,0xaf,0x4b,0x29,0x56,0x74,0xeb,0xad,0xb7,0xaa,
+ 0xeb,0xaf,0xbf,0x5e,0xdd,0x77,0xdf,0x7d,0x6a,0xc5,0x8a,0x15,0xde,0xdf,0x88,0x42,
+ 0x25,0xf7,0xcc,0x91,0x47,0x1e,0xa9,0xf6,0xd8,0x63,0x0f,0xd5,0xa5,0x4b,0x97,0xb6,
+ 0xbc,0x77,0xbc,0x54,0x00,0x20,0x95,0x8b,0x2f,0xbe,0x58,0xee,0x42,0x6f,0x73,0xa1,
+ 0x1f,0x60,0x95,0x9f,0xfc,0xe4,0x27,0x95,0x91,0x23,0x47,0x06,0xad,0xc7,0xd6,0xb4,
+ 0xc5,0x58,0x39,0xfe,0xf8,0xe3,0x2b,0xfa,0xa1,0x50,0xda,0x7e,0x3e,0xf5,0xd4,0x53,
+ 0x15,0xad,0xac,0x44,0xfb,0x1a,0xb2,0x1e,0xfd,0x10,0xab,0xcb,0x7e,0xd5,0xab,0xff,
+ 0xf1,0xb9,0xbe,0xe8,0xa2,0x8b,0x2a,0x1b,0x6d,0xb4,0x51,0x55,0xe7,0xb9,0x5b,0xb7,
+ 0x6e,0x95,0xaf,0x7c,0xe5,0x2b,0x15,0x2d,0xa8,0x6b,0xea,0xcb,0x33,0xcf,0x3c,0x53,
+ 0xf5,0xb5,0x56,0x6d,0x3b,0xeb,0xac,0xb3,0x72,0xbd,0x1e,0x27,0x4e,0x9c,0x58,0xd1,
+ 0x15,0x09,0x2b,0x5a,0x11,0xae,0x69,0xbf,0x36,0xde,0x78,0xe3,0xca,0x1d,0x77,0xdc,
+ 0x51,0xea,0x67,0x44,0x51,0xf7,0x8e,0x0f,0x62,0x00,0x00,0x0a,0xe4,0xe6,0x9b,0x6f,
+ 0x8e,0x0a,0xd9,0x7c,0xeb,0x5b,0xdf,0x8a,0x6a,0xac,0x57,0x8b,0x0c,0x0f,0x5c,0x7b,
+ 0xed,0xb5,0x6a,0xcb,0x2d,0xb7,0x8c,0x3c,0x08,0xf2,0x77,0x59,0x90,0x7d,0x39,0xfd,
+ 0xf4,0xd3,0x23,0x0b,0x50,0x3c,0x1c,0x65,0xda,0xb7,0x7a,0xf2,0xe7,0x3f,0xff,0x39,
+ 0x3a,0xd7,0xdf,0xf8,0xc6,0x37,0xa2,0x21,0x9d,0x6a,0x10,0xeb,0x56,0xbc,0x06,0xbb,
+ 0xec,0xb2,0x8b,0x7a,0xf9,0xe5,0x97,0xdb,0xf2,0x38,0x8a,0xe7,0xe1,0xfb,0xdf,0xff,
+ 0x7e,0xe4,0x4d,0x10,0xcb,0x5f,0x3c,0x67,0xb5,0x20,0x43,0x6c,0x87,0x1e,0x7a,0x68,
+ 0xe4,0x49,0x13,0xcb,0xb9,0x4c,0x34,0xfa,0xde,0x41,0x01,0x00,0x28,0x88,0x4b,0x2e,
+ 0xb9,0x44,0x1d,0x7d,0xf4,0xd1,0xd1,0xb8,0x65,0x5e,0xc8,0x58,0xb2,0xb6,0x10,0xa3,
+ 0x07,0x5a,0x56,0x17,0x6d,0x51,0x0f,0x6b,0x71,0x6b,0x8a,0xd0,0x6a,0x57,0x44,0x68,
+ 0x8b,0xeb,0x5e,0xaa,0x15,0xe6,0x75,0xae,0x45,0x68,0x8d,0x1b,0x37,0x4e,0x3d,0xfe,
+ 0xf8,0xe3,0x6d,0x75,0x2c,0x9f,0x7b,0xee,0xb9,0x48,0xf0,0xff,0xe0,0x07,0x3f,0xc8,
+ 0xfd,0xfa,0xbe,0xe9,0xa6,0x9b,0xd4,0x0e,0x3b,0xec,0xa0,0xfe,0xfd,0xef,0x7f,0x97,
+ 0x46,0xd1,0x69,0xf4,0xbd,0x83,0x02,0x00,0x90,0x33,0x62,0xb1,0x9c,0x76,0xda,0x69,
+ 0xea,0xec,0xb3,0xcf,0x2e,0x4c,0xa3,0xbf,0xeb,0xae,0xbb,0x22,0x8b,0x66,0xf9,0xf2,
+ 0xe5,0x0d,0xeb,0xa7,0x4c,0x2c,0x73,0xc8,0x21,0x87,0xb4,0x75,0x6d,0x79,0xb1,0x28,
+ 0xf7,0xde,0x7b,0x6f,0xf5,0xdb,0xdf,0xfe,0x36,0xf7,0x75,0x8b,0xb2,0x27,0x0a,0x64,
+ 0xe8,0xb8,0x7d,0xb3,0xf3,0xc4,0x13,0x4f,0xa8,0xfd,0xf6,0xdb,0x4f,0x4d,0x9a,0x34,
+ 0xa9,0xb0,0x6d,0xcc,0x9a,0x35,0x4b,0x1d,0x70,0xc0,0x01,0xea,0xb5,0xd7,0x5e,0x6b,
+ 0x68,0x5f,0xcb,0x72,0xef,0xa0,0x00,0x00,0xe4,0xcc,0x67,0x3f,0xfb,0x59,0x75,0xc5,
+ 0x15,0x57,0x14,0xbe,0x1d,0x09,0xd4,0x3a,0xe6,0x98,0x63,0x82,0x82,0xa2,0xf2,0x46,
+ 0x82,0xdc,0x24,0x68,0xcd,0x17,0xf8,0xd4,0xca,0xbc,0xf1,0xc6,0x1b,0x6a,0xa7,0x9d,
+ 0x76,0x2a,0xd4,0x4a,0x97,0x48,0x77,0xb9,0x9e,0x5a,0x9d,0x87,0x1f,0x7e,0x58,0x1d,
+ 0x74,0xd0,0x41,0x91,0xd2,0x53,0x34,0xef,0xbd,0xf7,0x5e,0x14,0x45,0x2f,0x5e,0x96,
+ 0x46,0x50,0xa6,0x7b,0x07,0x05,0x00,0x20,0x47,0xae,0xbe,0xfa,0x6a,0x75,0xdd,0x75,
+ 0xd7,0xd5,0x6d,0x7b,0x32,0x46,0xfa,0xa3,0x1f,0xfd,0xa8,0xee,0xfd,0xfc,0xf9,0xcf,
+ 0x7f,0xde,0x76,0xee,0x69,0xd3,0x82,0x3b,0xec,0xb0,0xc3,0x22,0x61,0x52,0x34,0xf7,
+ 0xdc,0x73,0x8f,0xfa,0xc7,0x3f,0xfe,0xd1,0xb2,0xc7,0xf2,0xd1,0x47,0x1f,0x8d,0xac,
+ 0xe1,0x05,0x0b,0x16,0x04,0xff,0x46,0x07,0x4b,0x46,0xf1,0x16,0x3b,0xee,0xb8,0xa3,
+ 0xda,0x7a,0xeb,0xad,0xa3,0x34,0xc0,0x2c,0x88,0xe7,0x46,0xa6,0x45,0x6e,0x04,0x65,
+ 0xba,0x77,0x48,0x03,0x04,0xc8,0x09,0x09,0xf2,0x3b,0xf3,0xcc,0x33,0xb3,0x69,0xe0,
+ 0x3a,0x1f,0xbc,0xd6,0x61,0x82,0x0b,0x2f,0xbc,0x50,0x1d,0x77,0xdc,0x71,0x51,0x2a,
+ 0x59,0x3d,0xd0,0xd1,0xd9,0xea,0xbc,0xf3,0xce,0xcb,0xf4,0x1b,0xc9,0x59,0x6e,0xe4,
+ 0x70,0x45,0x9e,0xc8,0xf9,0xd2,0x19,0x19,0xea,0x95,0x57,0x5e,0xc9,0xf4,0x3b,0xc9,
+ 0xfb,0x97,0xdf,0x4a,0x5a,0x5b,0x35,0xe7,0xf8,0xc0,0x03,0x0f,0x0c,0x5e,0x7e,0xd0,
+ 0xa0,0x41,0x6a,0xec,0xd8,0xb1,0xeb,0xa4,0x91,0x2d,0x5e,0xbc,0x38,0x4a,0x2f,0xf3,
+ 0xd1,0xbb,0x77,0xef,0xa8,0x1e,0x45,0x16,0x74,0xe6,0x43,0xe6,0x7e,0x89,0xc5,0x7f,
+ 0xc2,0x09,0x27,0x44,0xfb,0xe5,0x43,0xf2,0xfa,0xe5,0xb8,0xcb,0xb8,0xb9,0xb8,0xf1,
+ 0x65,0x1f,0x93,0x48,0x0a,0x9d,0x28,0xc4,0xbf,0xfa,0xd5,0xaf,0x82,0x82,0xfd,0xee,
+ 0xbf,0xff,0xfe,0x28,0xb0,0x56,0xd6,0x59,0x2f,0x4a,0x77,0xef,0x90,0xe4,0x05,0x90,
+ 0x4f,0x8a,0x8f,0x76,0x61,0x7a,0x97,0xd1,0xf9,0xc9,0x95,0xf3,0xcf,0x3f,0xbf,0xa2,
+ 0x2d,0xba,0x8a,0x2e,0xf0,0x51,0xd1,0xf1,0x02,0xd1,0x36,0x96,0x2e,0x5d,0x5a,0xd1,
+ 0x02,0xa5,0x72,0xc1,0x05,0x17,0x54,0x74,0x10,0x54,0xe6,0x54,0xa7,0x3d,0xf7,0xdc,
+ 0xb3,0xa2,0x85,0x4b,0x5d,0xfa,0x29,0xdb,0xf2,0x2d,0xb3,0xd7,0x5e,0x7b,0x55,0xf4,
+ 0xb8,0x78,0x45,0xe7,0x6d,0x77,0xa4,0x2c,0xe9,0x5c,0xf8,0xca,0x83,0x0f,0x3e,0x58,
+ 0xf9,0xc5,0x2f,0x7e,0x51,0x39,0xe7,0x9c,0x73,0x2a,0xfa,0xa1,0xdf,0x94,0x69,0x80,
+ 0x3a,0xb6,0x23,0x68,0x39,0x9d,0xb1,0x51,0xb9,0xf4,0xd2,0x4b,0x2b,0xda,0xbd,0x5d,
+ 0xd1,0x63,0xcf,0x1d,0xdb,0xd1,0x6e,0xfd,0x8a,0xce,0xf3,0xae,0x6c,0xbf,0xfd,0xf6,
+ 0x99,0xce,0xb1,0x16,0x70,0x35,0xf7,0x71,0xc6,0x8c,0x19,0x41,0xdb,0xd2,0x19,0x0d,
+ 0x75,0xb9,0xb7,0x74,0xe0,0x64,0xd0,0xfe,0xe8,0xe0,0xbd,0xca,0xd3,0x4f,0x3f,0x1d,
+ 0xb4,0x4e,0xed,0x49,0xa8,0x9c,0x71,0xc6,0x19,0x41,0xeb,0xd5,0x4a,0x4e,0x45,0x2b,
+ 0x21,0x75,0xbb,0x76,0xea,0x7d,0xef,0xf8,0x40,0x01,0x00,0xc8,0xe9,0xe6,0x4e,0x6b,
+ 0xda,0x7a,0xab,0xdc,0x72,0xcb,0x2d,0x1d,0x02,0xdf,0x87,0x4e,0xf5,0xab,0xe8,0xc2,
+ 0x21,0x99,0xb6,0xa1,0x87,0x1f,0x1a,0xde,0x4f,0x1d,0xb9,0x5e,0xb9,0xf7,0xde,0x7b,
+ 0x4b,0x95,0x63,0x5d,0xcf,0xfe,0x4b,0xd3,0x85,0x7c,0x2a,0x7f,0xfa,0xd3,0x9f,0xbc,
+ 0xe7,0x5a,0x57,0xb0,0x8b,0x72,0xbf,0x43,0xd7,0xab,0xe3,0x4a,0x5a,0x4a,0x01,0xd0,
+ 0x01,0x70,0x41,0xfb,0xa2,0x0b,0xf9,0x54,0x25,0xa4,0xbf,0xf3,0x9d,0xef,0x04,0xad,
+ 0x5f,0xa7,0x1c,0x96,0xe2,0xda,0x29,0xe2,0xde,0xa1,0x0e,0x00,0x40,0x03,0x91,0xb1,
+ 0x49,0xc9,0xef,0x95,0x71,0x5c,0x5d,0xd4,0x24,0xb8,0x22,0x99,0x64,0x11,0x48,0x05,
+ 0x39,0x71,0x1b,0x87,0xd2,0xc8,0x74,0xa2,0xfe,0xfd,0xfb,0x47,0x95,0xef,0xfe,0xf9,
+ 0xcf,0x7f,0x46,0x01,0x56,0xed,0x88,0x8c,0x4b,0xff,0xfa,0xd7,0xbf,0x8e,0x22,0xcc,
+ 0x3f,0xf7,0xb9,0xcf,0x79,0xcf,0xb5,0x54,0x86,0x93,0xea,0x76,0x52,0xdb,0x21,0x84,
+ 0x87,0x1e,0x7a,0xa8,0x65,0x8e,0x95,0x94,0xef,0x95,0x6b,0xdc,0x87,0x54,0x45,0x94,
+ 0x8c,0x17,0xb9,0xbe,0xb2,0x22,0xb1,0x31,0x12,0xa7,0xe1,0xe3,0xaa,0xab,0xae,0x6a,
+ 0xe8,0xb1,0x68,0xe4,0xbd,0x83,0x02,0x00,0x50,0x10,0x12,0xe9,0xfb,0xd2,0x4b,0x2f,
+ 0x45,0xe5,0x48,0xab,0x41,0x6a,0xc4,0x6b,0xaf,0x81,0xea,0xd1,0xa3,0x47,0xd0,0xf2,
+ 0x12,0x58,0x94,0x75,0x5c,0x3a,0x0f,0xa4,0x36,0xb9,0x44,0x34,0x87,0x3c,0x6c,0x5b,
+ 0x95,0x7e,0xfd,0xfa,0x45,0x59,0x19,0xda,0xf5,0x1c,0x95,0x70,0x0e,0x45,0xc6,0xb5,
+ 0xbf,0xf8,0xc5,0x2f,0x06,0x2d,0x2b,0xe5,0xa3,0x5b,0x85,0x3f,0xfe,0xf1,0x8f,0x51,
+ 0x4a,0x9e,0xef,0xd8,0xfc,0xe1,0x0f,0x7f,0x50,0x7d,0xfb,0xf6,0xad,0x7a,0x3b,0x12,
+ 0x70,0xe7,0xab,0x99,0x2f,0xb5,0xf6,0x45,0xf8,0x36,0x82,0x46,0xdf,0x3b,0x28,0x00,
+ 0x00,0x05,0xa0,0xcb,0xc1,0x46,0x96,0x4b,0xd6,0x40,0x2a,0x13,0x29,0x06,0x23,0x55,
+ 0xd1,0x42,0xb9,0xf2,0xca,0x2b,0xeb,0xda,0x4f,0x5d,0xde,0x58,0x3d,0xf2,0xc8,0x23,
+ 0x51,0x34,0x76,0xbb,0x22,0x35,0xd9,0xe5,0x18,0x64,0x09,0xd2,0x4b,0x22,0xde,0x82,
+ 0x10,0xa5,0xa1,0x9a,0xe0,0xc1,0x32,0x22,0x43,0xcf,0xe2,0x29,0xf1,0x21,0xb5,0xfc,
+ 0xf5,0x78,0x78,0x4d,0xdb,0x92,0x40,0xc8,0xf1,0xe3,0xc7,0x97,0xd2,0x0b,0x50,0x86,
+ 0x7b,0x07,0x05,0x00,0x20,0x67,0xe4,0xe1,0xf6,0xf5,0xaf,0x7f,0x3d,0xb7,0xf5,0x89,
+ 0x55,0x19,0x3a,0x11,0x90,0xa4,0x21,0x56,0x1c,0x13,0x88,0xe4,0x8d,0xcc,0xbc,0x26,
+ 0x96,0x53,0xa8,0x0b,0xbb,0x15,0x91,0xbe,0x4b,0x01,0x1b,0x1d,0xd0,0x57,0xf5,0x3a,
+ 0x64,0x06,0xc8,0x10,0x21,0x30,0x67,0xce,0x9c,0x96,0x38,0x66,0xe2,0x29,0x91,0x68,
+ 0xf8,0x90,0xeb,0x3e,0x0f,0x42,0x26,0x6f,0x92,0x82,0x3c,0xf5,0xba,0x6f,0xca,0x74,
+ 0xef,0xa0,0x00,0x00,0xe4,0xc8,0x6f,0x7e,0xf3,0x9b,0xdc,0x1e,0x5c,0x31,0x32,0x56,
+ 0xfc,0xb5,0xaf,0x7d,0x2d,0x68,0x59,0xc9,0x4b,0x97,0x02,0x35,0xf5,0xe0,0xf7,0xbf,
+ 0xff,0x7d,0x94,0x8b,0xdd,0xae,0x0c,0x1c,0x38,0x50,0xe9,0x49,0x66,0x72,0x99,0xca,
+ 0x57,0x04,0x82,0x0f,0x49,0x05,0x93,0x59,0xfe,0x9a,0x1d,0x9d,0x19,0xe1,0x5d,0x66,
+ 0xb3,0xcd,0x36,0x53,0xfb,0xec,0xb3,0x4f,0x2e,0xdb,0xfb,0xc4,0x27,0x3e,0xa1,0x7a,
+ 0xf6,0xec,0xe9,0x55,0xae,0x64,0x46,0xbf,0x7a,0x51,0x96,0x7b,0x07,0x05,0x00,0x20,
+ 0x27,0x24,0x08,0x4f,0x26,0xf6,0x28,0x02,0xa9,0xf8,0x17,0x8a,0x9e,0x09,0xae,0xf0,
+ 0xbe,0x9e,0x72,0xca,0x29,0xea,0x53,0x9f,0xfa,0x54,0xdb,0x9e,0x6b,0x19,0x9f,0x96,
+ 0xc9,0x7f,0x36,0xdd,0x74,0xd3,0x5c,0xd6,0x17,0x1a,0xec,0x59,0x4f,0x2b,0xb5,0x08,
+ 0x74,0xba,0xab,0xd2,0xe9,0x6c,0xde,0xe5,0xaa,0x1d,0x4e,0xb1,0x21,0x31,0x00,0x21,
+ 0x35,0x32,0x9e,0x7f,0xfe,0xf9,0xba,0x1c,0x83,0x32,0xdd,0x3b,0x28,0x00,0x00,0x39,
+ 0xf1,0xe5,0x2f,0x7f,0xb9,0xb0,0x75,0xeb,0x29,0x4d,0x83,0xe7,0x5a,0x2f,0x5a,0x01,
+ 0x18,0x33,0x66,0x8c,0xd2,0xf9,0xc8,0x6d,0x7d,0xae,0xbf,0xfb,0xdd,0xef,0xe6,0xfa,
+ 0x10,0x0f,0x1d,0xe2,0x69,0x76,0x74,0x2e,0x7f,0x50,0x51,0x9b,0xbc,0xa3,0xe1,0x43,
+ 0xee,0x9d,0x7a,0x28,0x00,0x65,0xbb,0x77,0x50,0x00,0x00,0x9a,0x04,0xc9,0x2a,0x28,
+ 0x83,0x02,0xa0,0x73,0xdc,0x6b,0x8a,0xcc,0x6e,0x76,0xa4,0x6c,0xed,0xf7,0xbe,0xf7,
+ 0xbd,0x5c,0xd7,0xd9,0x2e,0x0a,0x80,0x94,0xfd,0x0d,0x61,0xb7,0xdd,0x76,0xcb,0x5d,
+ 0xf0,0x96,0x41,0x01,0x28,0xdb,0xbd,0x83,0x02,0x00,0xd0,0x24,0x84,0x7a,0x00,0x8a,
+ 0x4e,0x05,0xd4,0xd5,0xcc,0xda,0xfa,0x3c,0xfc,0xe5,0x2f,0x7f,0x89,0x4a,0x38,0xe7,
+ 0x89,0x6f,0x8c,0xba,0x9d,0x14,0x00,0x39,0x16,0x92,0x59,0x91,0x27,0x92,0xa6,0xe9,
+ 0x43,0x4a,0x09,0x17,0x4d,0xd9,0xee,0x1d,0xe6,0x02,0x00,0x68,0x12,0xa4,0x2e,0x40,
+ 0x08,0xba,0x6c,0x28,0x07,0xab,0x40,0xa4,0xce,0x3e,0x54,0xc7,0x53,0x4f,0x3d,0xe5,
+ 0x5d,0x46,0x66,0xcb,0x93,0xd9,0x01,0xf3,0x64,0xc2,0x84,0x09,0xde,0x65,0xea,0x31,
+ 0x13,0x61,0xd9,0x40,0x01,0x00,0x68,0x31,0x05,0x40,0xa6,0x07,0x96,0x68,0xf1,0x5e,
+ 0xbd,0x7a,0x71,0xd0,0xa0,0x34,0xe8,0xd2,0xc8,0x41,0xb5,0x0c,0xe4,0xfa,0xcd,0x2b,
+ 0x03,0x20,0x0b,0x32,0xc3,0x63,0xbb,0xc1,0x10,0x00,0x40,0x13,0x59,0x9e,0xa1,0x55,
+ 0x01,0xdb,0xd1,0x9a,0x81,0x72,0xf3,0xc1,0x07,0x1f,0x94,0x3a,0x8b,0x41,0x66,0x24,
+ 0x14,0xef,0x03,0x0a,0x00,0x00,0x94,0x12,0xa9,0x09,0x10,0xfa,0xb0,0x05,0x28,0x13,
+ 0xcd,0x50,0xc9,0xb0,0xdd,0xbc,0x00,0x28,0x00,0x00,0x2d,0xa8,0x00,0xe8,0x29,0x51,
+ 0x39,0x58,0x50,0x2a,0x9a,0xa1,0x92,0x61,0xbb,0xdd,0x37,0x28,0x00,0x00,0x4d,0x44,
+ 0xef,0xde,0xbd,0x83,0x96,0xcb,0x32,0x21,0x0d,0x40,0x3d,0x68,0x86,0xe0,0xd4,0xd5,
+ 0xab,0x57,0xa3,0x00,0x00,0x40,0x39,0x91,0x00,0xa9,0x10,0x06,0x0c,0x18,0xc0,0xc1,
+ 0x02,0x84,0x6b,0x46,0xda,0x4d,0x71,0x46,0x01,0x00,0x68,0x22,0x16,0x2d,0x5a,0x14,
+ 0xb4,0x9c,0xd4,0xa9,0x07,0x28,0x13,0x83,0x07,0x0f,0x46,0x01,0x40,0x01,0x00,0x80,
+ 0xa2,0x15,0x00,0x3c,0x00,0x50,0x36,0xd6,0x5b,0x6f,0xbd,0xa0,0xe5,0xa4,0xca,0xa2,
+ 0x64,0x0b,0x34,0xa2,0x85,0x4c,0xca,0x84,0x02,0x00,0x00,0x0d,0x41,0x52,0x95,0x7c,
+ 0x48,0xd5,0xb3,0x2e,0x5d,0xba,0x70,0xb0,0xa0,0x29,0x15,0x80,0x90,0xa2,0x3d,0x80,
+ 0x02,0x00,0xd0,0x56,0xc8,0x54,0xbf,0x21,0xe3,0xa8,0xb8,0xff,0xa1,0x8c,0x48,0x1d,
+ 0x8b,0x10,0xc5,0x14,0x05,0x00,0x05,0x00,0x00,0x0c,0x5e,0x7b,0xed,0xb5,0xa0,0xe5,
+ 0x36,0xdf,0x7c,0x73,0x0e,0x16,0x94,0x0e,0x99,0x42,0x79,0xc8,0x90,0x21,0xde,0xe5,
+ 0x26,0x4e,0x9c,0x18,0x3c,0xd4,0x05,0x28,0x00,0x00,0x28,0x00,0x09,0x76,0xd9,0x65,
+ 0x17,0x0e,0x16,0x94,0x92,0x9d,0x76,0xda,0xc9,0xbb,0x8c,0x94,0x0c,0xbe,0xfb,0xee,
+ 0xbb,0x39,0x58,0x28,0x00,0x00,0x80,0x02,0x00,0xad,0xc2,0xfe,0xfb,0xef,0x1f,0xb4,
+ 0xdc,0x2d,0xb7,0xdc,0xc2,0xc1,0x42,0x01,0x00,0x80,0x98,0xd0,0xb9,0xd4,0x51,0x00,
+ 0xa0,0xac,0xec,0xb7,0xdf,0x7e,0x41,0xcb,0xdd,0x79,0xe7,0x9d,0x91,0x27,0x00,0x50,
+ 0x00,0x00,0xda,0x9e,0xf7,0xdf,0x7f,0x5f,0x3d,0xfd,0xf4,0xd3,0xde,0xe5,0x86,0x0e,
+ 0x1d,0xaa,0x46,0x8d,0x1a,0xc5,0x01,0x83,0x9a,0x58,0xb6,0x6c,0x59,0x21,0xeb,0xdd,
+ 0x7e,0xfb,0xed,0x83,0xe2,0x00,0xa4,0x6c,0xf0,0xdf,0xfe,0xf6,0x37,0x4e,0x04,0x0a,
+ 0x00,0x00,0xfc,0xfd,0xef,0x7f,0x0f,0xca,0x00,0x38,0xe4,0x90,0x43,0x38,0x58,0x50,
+ 0x33,0xef,0xbe,0xfb,0x6e,0x31,0x02,0xa7,0x73,0xe7,0x60,0x2f,0xc0,0xf9,0xe7,0x9f,
+ 0xdf,0x76,0xb3,0xf3,0xa1,0x00,0x00,0xc0,0x3a,0xfc,0xe5,0x2f,0x7f,0x09,0x5a,0xee,
+ 0x94,0x53,0x4e,0xe1,0x60,0x81,0x93,0xd0,0xfa,0x10,0xd3,0xa6,0x4d,0x2b,0x6c,0x1f,
+ 0xce,0x38,0xe3,0x8c,0xa0,0xe5,0x24,0xe6,0xe5,0x9a,0x6b,0xae,0xe1,0xa4,0xa1,0x00,
+ 0x00,0x94,0x9f,0xa5,0x4b,0x97,0x16,0xb2,0x5e,0x19,0xfb,0xbf,0xf7,0xde,0x7b,0xbd,
+ 0xcb,0x6d,0xb9,0xe5,0x96,0xea,0xe3,0x1f,0xff,0x38,0x27,0x02,0x9c,0x48,0x8d,0x08,
+ 0x49,0xc7,0xf3,0xf1,0xce,0x3b,0xef,0x14,0xb6,0x0f,0x7b,0xee,0xb9,0xa7,0xda,0x7b,
+ 0xef,0xbd,0x83,0x96,0x3d,0xe7,0x9c,0x73,0x0a,0xf3,0x46,0x00,0x0a,0x00,0x40,0x6e,
+ 0x88,0xf0,0x7d,0xeb,0xad,0xb7,0x72,0x5f,0xef,0x79,0xe7,0x9d,0x17,0xb4,0xdc,0xc9,
+ 0x27,0x9f,0xcc,0x49,0x80,0x54,0xa4,0xd6,0xbd,0x14,0xe4,0xf1,0xf1,0xe6,0x9b,0x6f,
+ 0x16,0xba,0x1f,0xe7,0x9e,0x7b,0x6e,0xd0,0x72,0x52,0xfc,0xea,0xe8,0xa3,0x8f,0x56,
+ 0xcb,0x97,0x2f,0xe7,0xe4,0xa1,0x00,0x00,0x94,0x97,0xe7,0x9e,0x7b,0x2e,0xca,0x73,
+ 0x0e,0xb1,0xd6,0x43,0xb9,0xec,0xb2,0xcb,0xd4,0x03,0x0f,0x3c,0xe0,0x5d,0xae,0x67,
+ 0xcf,0x9e,0xea,0x73,0x9f,0xfb,0x1c,0x27,0x01,0xbc,0xac,0xbf,0xfe,0xfa,0xde,0x65,
+ 0xfe,0xfd,0xef,0x7f,0xab,0x27,0x9f,0x7c,0xb2,0xb0,0x7d,0x38,0xe0,0x80,0x03,0xd4,
+ 0x6e,0xbb,0xed,0x16,0xb4,0xec,0xe3,0x8f,0x3f,0x1e,0x0d,0x6d,0x85,0xce,0x84,0x09,
+ 0x28,0x00,0x00,0x0d,0x61,0xf6,0xec,0xd9,0xea,0xe0,0x83,0x0f,0x56,0xdf,0xff,0xfe,
+ 0xf7,0x6b,0x1e,0x12,0xb8,0xe7,0x9e,0x7b,0xd4,0x59,0x67,0x9d,0x15,0x6c,0x51,0x6d,
+ 0xb0,0xc1,0x06,0x9c,0x00,0xf0,0xb2,0xd9,0x66,0x9b,0x05,0x2d,0xf7,0xa3,0x1f,0xfd,
+ 0xa8,0xd0,0xfd,0xb8,0xf4,0xd2,0x4b,0x55,0xf7,0xee,0xdd,0x83,0x96,0xbd,0xfa,0xea,
+ 0xab,0x23,0xa5,0x61,0xe6,0xcc,0x99,0x85,0xec,0x8b,0x04,0x1b,0x4a,0xe6,0x01,0x0a,
+ 0x00,0x00,0xd4,0xfc,0x30,0xf9,0xc1,0x0f,0x7e,0x10,0x8d,0xc9,0xdf,0x70,0xc3,0x0d,
+ 0x55,0xad,0xe3,0x8f,0x7f,0xfc,0xa3,0x3a,0xea,0xa8,0xa3,0x82,0x72,0xa1,0x3f,0xf2,
+ 0x91,0x8f,0xa8,0xaf,0x7f,0xfd,0xeb,0x1c,0x78,0x08,0x22,0x34,0x53,0xe4,0x8e,0x3b,
+ 0xee,0x50,0xf7,0xdf,0x7f,0x7f,0x61,0xfb,0x21,0xf5,0x2a,0x7e,0xf9,0xcb,0x5f,0x06,
+ 0x2f,0xff,0xf0,0xc3,0x0f,0xab,0x9d,0x77,0xde,0x59,0x5d,0x7b,0xed,0xb5,0x41,0x19,
+ 0x31,0x3e,0xe6,0xcd,0x9b,0x17,0xa5,0x1a,0x9e,0x78,0xe2,0x89,0x51,0xfa,0xec,0x76,
+ 0xdb,0x6d,0xd7,0x76,0xd7,0x42,0x57,0x6e,0x87,0xe6,0x44,0xdc,0x73,0x7f,0xfd,0xeb,
+ 0x5f,0xd5,0xeb,0xaf,0xbf,0xae,0xfa,0xf4,0xe9,0xa3,0x7a,0xf7,0xee,0xad,0x7a,0xf5,
+ 0xea,0x15,0xbd,0x97,0x57,0xf9,0x3b,0xd9,0x42,0xbe,0x93,0x14,0x1d,0xc8,0x0f,0x89,
+ 0x07,0x18,0x3f,0x7e,0xbc,0xda,0x63,0x8f,0x3d,0xd4,0x69,0xa7,0x9d,0xa6,0x3e,0xfd,
+ 0xe9,0x4f,0x47,0xc7,0x39,0x8d,0x57,0x5e,0x79,0x45,0x7d,0xe7,0x3b,0xdf,0x51,0x37,
+ 0xdf,0x7c,0x73,0xd0,0x36,0x24,0xa0,0xeb,0x8a,0x2b,0xae,0x50,0xdd,0xba,0x75,0xe3,
+ 0x80,0x43,0x10,0x9f,0xfc,0xe4,0x27,0x83,0x97,0x3d,0xf0,0xc0,0x03,0xa3,0xa8,0xfd,
+ 0x1f,0xff,0xf8,0xc7,0xde,0x6b,0xb7,0x1a,0xbe,0xfc,0xe5,0x2f,0x47,0x2e,0x7e,0xb1,
+ 0xf0,0x43,0x78,0xfb,0xed,0xb7,0xd5,0x09,0x27,0x9c,0x10,0x29,0xd8,0xdf,0xfc,0xe6,
+ 0x37,0xd5,0xa1,0x87,0x1e,0x1a,0x3c,0xcb,0xa0,0xf0,0xc6,0x1b,0x6f,0xa8,0xdb,0x6f,
+ 0xbf,0x3d,0x52,0x6e,0x44,0xa1,0x48,0x0e,0x2b,0x88,0x12,0x80,0x02,0x00,0xa5,0x45,
+ 0xb4,0x5e,0x19,0x0f,0xbe,0xee,0xba,0xeb,0xd4,0x94,0x29,0x53,0xa2,0x87,0xbf,0xcc,
+ 0x61,0x2d,0x17,0xf1,0x07,0x1f,0x7c,0x10,0xbd,0x8f,0x3f,0x8b,0x85,0x43,0xfc,0x59,
+ 0x08,0xb2,0xac,0x6c,0x43,0xac,0x4e,0xb1,0x62,0xa5,0xc9,0xba,0xe3,0x57,0x69,0xb1,
+ 0x45,0x2a,0xcb,0xc5,0xdb,0x49,0x6e,0x43,0xd2,0x8c,0x7a,0xf4,0xe8,0x11,0xb9,0xf6,
+ 0x64,0x5c,0x3a,0x56,0x38,0x62,0x25,0x45,0xa6,0xaa,0xed,0xdb,0xb7,0x6f,0xf4,0x2a,
+ 0x4d,0xe6,0xad,0x8f,0x9b,0x44,0x28,0x4b,0x80,0x92,0x34,0xf9,0x2e,0x74,0xbf,0xcb,
+ 0x8e,0x44,0xf1,0x4b,0x93,0x63,0x70,0xf8,0xe1,0x87,0x47,0x63,0x9f,0x1b,0x6d,0xb4,
+ 0x91,0xda,0x70,0xc3,0x0d,0xa3,0x61,0x02,0x89,0x72,0x9e,0x34,0x69,0x92,0xba,0xfe,
+ 0xfa,0xeb,0xd5,0xf3,0xcf,0x3f,0x9f,0x69,0xdd,0xa7,0x9e,0x7a,0x6a,0xa4,0x60,0x00,
+ 0x84,0xb2,0xf1,0xc6,0x1b,0x47,0xd6,0x77,0x48,0x61,0x29,0xb9,0xcf,0x7f,0xf5,0xab,
+ 0x5f,0x45,0x0a,0xe9,0x41,0x07,0x1d,0x14,0x79,0xb5,0xb6,0xd8,0x62,0x8b,0x68,0x1d,
+ 0xe2,0x8e,0x7f,0xf9,0xe5,0x97,0x23,0xa5,0x55,0x84,0xe7,0x77,0xbf,0xfb,0xdd,0xaa,
+ 0xf6,0xe7,0xf2,0xcb,0x2f,0x8f,0xae,0xfb,0x97,0x5e,0x7a,0x29,0xf8,0x37,0x92,0x22,
+ 0x78,0xd2,0x49,0x27,0x45,0xcf,0x08,0xb1,0xdc,0xf7,0xd9,0x67,0x1f,0xb5,0xc9,0x26,
+ 0x9b,0x44,0x45,0x86,0xe4,0x39,0x23,0x93,0x09,0xcd,0x9d,0x3b,0x37,0x52,0xc2,0xa5,
+ 0x89,0xe2,0x20,0xaf,0x12,0x54,0x08,0x28,0x00,0x4d,0x41,0x2c,0x60,0xa5,0x2a,0x97,
+ 0x4c,0x8e,0x21,0xee,0x64,0xa9,0x08,0x97,0x14,0xb8,0x49,0x21,0x29,0x16,0xbc,0x7c,
+ 0x17,0x5b,0xf2,0xf1,0xfb,0x78,0x3d,0x3e,0x64,0x59,0x59,0x9f,0x44,0x0a,0x27,0x05,
+ 0x7b,0xa8,0x42,0x91,0x5c,0x5e,0x9a,0x28,0x0b,0xd2,0xe4,0x46,0x94,0x87,0x85,0x28,
+ 0x12,0xf1,0x67,0xf1,0x7b,0xf3,0xb3,0x58,0xe1,0x90,0xdf,0xf7,0xef,0xdf,0xbf,0x43,
+ 0x29,0x10,0x2d,0x5f,0x9a,0x04,0x30,0x49,0x93,0x07,0x8e,0x8c,0x79,0xcb,0xeb,0xb0,
+ 0x61,0xc3,0xa2,0xef,0xca,0xee,0xc1,0x90,0x87,0x92,0xe4,0x35,0xe7,0x95,0xdb,0x2c,
+ 0xd6,0xcf,0xaf,0x7f,0xfd,0x6b,0x6e,0x14,0xc8,0xcc,0x25,0x97,0x5c,0xa2,0xf6,0xda,
+ 0x6b,0xaf,0xe0,0xe5,0x45,0x80,0xfe,0xfe,0xf7,0xbf,0x77,0x7e,0x2f,0xca,0x6c,0xb5,
+ 0x0a,0x80,0x08,0xec,0x7f,0xfc,0xe3,0x1f,0xea,0x3f,0xfe,0xe3,0x3f,0xd4,0x53,0x4f,
+ 0x3d,0x95,0xf9,0x19,0xf9,0xc2,0x0b,0x2f,0x44,0x0d,0x50,0x00,0x5a,0x4a,0xf0,0x2f,
+ 0x58,0xb0,0x40,0xdd,0x7a,0xeb,0xad,0x91,0xf6,0x9d,0x9c,0x1e,0x33,0xcd,0x32,0x4e,
+ 0x7e,0x67,0x53,0x12,0x7c,0xf8,0x7e,0x1f,0xb2,0x6d,0x79,0x95,0x26,0x5e,0x80,0xd0,
+ 0x20,0x1f,0xdf,0xf1,0x98,0x3f,0x7f,0x7e,0x14,0xa4,0x23,0xd6,0x46,0xac,0x30,0x24,
+ 0x15,0x08,0xb1,0x54,0xc4,0xdb,0x20,0x9e,0x03,0x51,0x1a,0xc4,0x12,0x10,0x05,0x61,
+ 0xc4,0x88,0x11,0x6a,0xf4,0xe8,0xd1,0x91,0xc5,0x3d,0x76,0xec,0xd8,0xe8,0xbb,0xa2,
+ 0xf8,0xf6,0xb7,0xbf,0xad,0x2e,0xb8,0xe0,0x82,0xba,0x5c,0x23,0x52,0x4d,0x4d,0x3c,
+ 0x06,0xb8,0xfe,0xa1,0x1a,0x24,0x17,0xff,0xd8,0x63,0x8f,0x8d,0xbc,0x89,0x65,0x40,
+ 0x14,0xf9,0x07,0x1f,0x7c,0x30,0x1a,0x8f,0xbf,0xf1,0xc6,0x1b,0x39,0x41,0x28,0x00,
+ 0xed,0x29,0xf4,0x45,0xa0,0x89,0x36,0x2c,0xd6,0xbe,0x54,0xe3,0x4a,0x5a,0xe0,0x36,
+ 0x81,0x9b,0xb4,0xc8,0x4d,0x8b,0x3d,0xeb,0xf2,0xd5,0x0c,0x19,0xd4,0xf2,0xfb,0xd0,
+ 0xf5,0x0b,0x22,0xe8,0x4c,0x61,0xe7,0xea,0x8f,0x78,0x11,0x66,0xcc,0x98,0x11,0xb5,
+ 0x17,0x5f,0x7c,0x31,0xfa,0x4e,0x14,0x08,0x19,0x92,0x88,0x83,0x9a,0x8a,0x18,0x5e,
+ 0x90,0x71,0x52,0x19,0xde,0x10,0x45,0xa0,0x48,0xc6,0x8d,0x1b,0xa7,0x6e,0xbb,0xed,
+ 0xb6,0xa8,0x3f,0x00,0xd5,0x22,0x51,0xf8,0x13,0x26,0x4c,0x88,0x52,0xfe,0xca,0x80,
+ 0x28,0xf0,0xa2,0xd4,0x7e,0xe3,0x1b,0xdf,0x50,0x3f,0xfb,0xd9,0xcf,0x38,0x41,0x75,
+ 0x80,0xa8,0xaf,0x12,0x08,0xfe,0x25,0x4b,0x96,0x44,0x17,0xfe,0x71,0xc7,0x1d,0xa7,
+ 0x3e,0xf6,0xb1,0x8f,0x45,0x91,0xb1,0x52,0x89,0x2b,0x76,0x69,0xcb,0x6b,0xec,0x9e,
+ 0x8f,0x5f,0x5d,0x43,0x00,0xb5,0x2c,0x9f,0xfc,0xcc,0x66,0xd1,0x67,0xfd,0x7d,0xcd,
+ 0x17,0x67,0x0e,0xfd,0x17,0x2f,0xca,0xc2,0x85,0x0b,0xd5,0xc8,0x91,0x23,0x23,0xaf,
+ 0x40,0x32,0x6e,0x21,0x6e,0x79,0xf2,0xad,0x6f,0x7d,0x4b,0xfd,0xe1,0x0f,0x7f,0x08,
+ 0x2a,0xb6,0x92,0x15,0x89,0xaf,0x90,0x87,0xe3,0x7d,0xf7,0xdd,0x57,0x48,0x40,0x16,
+ 0xb4,0x17,0x32,0x94,0x26,0x0a,0xf1,0xb6,0xdb,0x6e,0x5b,0x9a,0x7d,0x92,0x7b,0xf6,
+ 0xa7,0x3f,0xfd,0xa9,0xba,0xeb,0xae,0xbb,0xda,0x32,0x2a,0x1f,0x05,0xa0,0x4d,0x84,
+ 0xbe,0xb4,0x7f,0xfe,0xf3,0x9f,0xea,0x8b,0x5f,0xfc,0xa2,0xda,0x7c,0xf3,0xcd,0xd5,
+ 0x45,0x17,0x5d,0x14,0x59,0xa9,0xf1,0x58,0x76,0x9a,0xfb,0x3d,0x16,0x80,0x66,0xcb,
+ 0x7b,0xf9,0x5a,0xbf,0xaf,0xb5,0xd5,0xd2,0x1f,0x09,0x8a,0x94,0x21,0x83,0xe1,0xc3,
+ 0x87,0x47,0xc3,0x00,0xe6,0xb1,0x4f,0x0a,0xfe,0xbc,0x95,0x80,0x2f,0x7c,0xe1,0x0b,
+ 0x51,0x90,0x92,0xbc,0xe6,0xe5,0x69,0x90,0x87,0xb4,0x64,0x7e,0x5c,0x78,0xe1,0x85,
+ 0x58,0xfe,0x90,0xab,0x12,0x20,0x81,0xc5,0x5f,0xf9,0xca,0x57,0x72,0x19,0xae,0xcb,
+ 0x0b,0xa9,0xa5,0xf1,0xaf,0x7f,0xfd,0x4b,0x5d,0x75,0xd5,0x55,0xd1,0xf0,0x5d,0x91,
+ 0x88,0x67,0x51,0xbc,0x6a,0xa7,0x9f,0x7e,0x3a,0x0a,0x00,0x14,0x2b,0xf4,0xc5,0xc5,
+ 0x2f,0xb9,0xa7,0x62,0xe9,0x1f,0x79,0xe4,0x91,0xea,0xd5,0x57,0x5f,0x8d,0x1e,0xee,
+ 0x32,0x06,0x66,0x0a,0xb4,0xa4,0xd5,0x6b,0xb3,0x80,0xf3,0x6e,0xb5,0x6e,0x2f,0xef,
+ 0xfd,0xad,0x66,0x7d,0x12,0x70,0x38,0x7d,0xfa,0xf4,0x68,0xfc,0x5f,0xc6,0xfe,0x93,
+ 0x41,0x89,0xf1,0x79,0x88,0x33,0x18,0xcc,0xcf,0xf3,0x54,0x04,0xe4,0xc1,0x2a,0x9e,
+ 0x80,0x47,0x1e,0x79,0x24,0x4a,0x05,0xac,0xc6,0x62,0x8f,0x67,0x4e,0x93,0xe0,0xab,
+ 0x67,0x9f,0x7d,0x36,0xaa,0x32,0x58,0x24,0x32,0x7c,0xe1,0xa3,0x11,0x9e,0x87,0x7a,
+ 0xed,0x57,0x23,0xfb,0x1f,0xb2,0x5e,0x51,0xfc,0x42,0x27,0xf3,0xc9,0x82,0x78,0xc6,
+ 0x7e,0xfb,0xdb,0xdf,0x46,0x29,0xc5,0x62,0x90,0x14,0xb1,0x8d,0x6a,0x3d,0x80,0x12,
+ 0x13,0x20,0xca,0xf4,0x95,0x57,0x5e,0xa9,0x8e,0x38,0xe2,0x88,0x28,0xc6,0xa7,0x56,
+ 0xe4,0x38,0xca,0x5c,0x04,0x52,0x62,0x5b,0xaa,0x76,0x8a,0xb1,0x20,0xc6,0x58,0xb5,
+ 0x41,0x8c,0x65,0xbe,0x77,0xbc,0x1e,0x97,0x4a,0xde,0xe6,0x0f,0xac,0x23,0xf8,0x63,
+ 0x64,0x6c,0x5f,0x5c,0xc4,0x92,0x8a,0xb2,0xe9,0xa6,0x9b,0x06,0x5d,0x34,0xf5,0xde,
+ 0xd7,0x6a,0xa3,0xfe,0x43,0x96,0x2f,0x12,0xb1,0xf6,0xc5,0x83,0x22,0xd6,0x42,0x7c,
+ 0xa3,0xd9,0x62,0x22,0x24,0x02,0xdf,0xe6,0x35,0x48,0x0b,0x74,0x94,0x88,0xe9,0xb3,
+ 0xcf,0x3e,0x3b,0xd3,0xb9,0x36,0x91,0x61,0x1e,0x71,0x6b,0x4a,0x40,0xa7,0x3c,0xd0,
+ 0x24,0xf5,0x4f,0xae,0x03,0x09,0x60,0x94,0xb4,0x49,0x89,0x5b,0x88,0x83,0x16,0x65,
+ 0xb8,0x42,0x04,0xff,0x31,0xc7,0x1c,0x13,0x79,0x30,0x00,0xea,0xc9,0xc4,0x89,0x13,
+ 0xa3,0x40,0x3c,0xc9,0x99,0x97,0xf4,0x54,0x69,0x32,0x24,0x29,0x1e,0x02,0xc9,0x48,
+ 0x12,0x05,0x61,0xf0,0xe0,0xc1,0x6a,0xcc,0x98,0x31,0x51,0x61,0x1e,0x49,0x43,0x95,
+ 0x34,0xbc,0x7a,0x5c,0xab,0x72,0x9f,0x88,0x52,0x2d,0xd3,0x63,0x4b,0xda,0xa0,0x64,
+ 0x45,0x49,0x93,0x2c,0x23,0xf9,0x4e,0xee,0x25,0xd9,0x47,0x51,0x14,0x64,0x7f,0x24,
+ 0x43,0x48,0x5e,0xa5,0x49,0xa6,0x82,0xa4,0xe0,0xee,0xba,0xeb,0xae,0xd1,0x72,0x80,
+ 0x02,0x50,0x17,0xc1,0x2f,0x0f,0xfa,0xaf,0x7e,0xf5,0xab,0x91,0x15,0x27,0xb9,0xaa,
+ 0xb1,0x0b,0xb7,0xd6,0xa0,0x3c,0xdf,0xf2,0x59,0x83,0x02,0x6b,0x5d,0x7f,0xbd,0x83,
+ 0x12,0xe5,0xbb,0x38,0xc5,0x50,0xf2,0x92,0xa5,0x96,0x80,0x0f,0x29,0x38,0x92,0xe6,
+ 0x45,0x28,0x4a,0x01,0xb0,0x21,0x9e,0x08,0xd9,0x7f,0x49,0xbb,0x14,0xa5,0x25,0x4e,
+ 0xbf,0x04,0x28,0x1b,0x52,0xaf,0x42,0x04,0xab,0x5c,0xb3,0xa1,0x33,0x0a,0xd6,0xfb,
+ 0x79,0x2b,0xf7,0x92,0x28,0x27,0xf1,0xfd,0x04,0x7e,0x78,0xe2,0x14,0x28,0xf8,0xe5,
+ 0xfd,0x2d,0xb7,0xdc,0xa2,0x7e,0xf8,0xc3,0x1f,0x46,0xd6,0xdd,0x36,0xdb,0x6c,0xb3,
+ 0x8e,0xc0,0x4b,0xe6,0xe9,0x9b,0x02,0xc8,0x7c,0xb5,0x09,0xc8,0xb4,0x57,0x9b,0x30,
+ 0xb3,0x09,0x61,0xdf,0x77,0xae,0xf5,0x65,0xfd,0xde,0x26,0xf0,0xab,0xed,0xbf,0x58,
+ 0xfc,0x62,0x95,0x88,0x9b,0x7f,0xfb,0xed,0xb7,0xcf,0x24,0x74,0xe3,0x75,0xda,0x02,
+ 0x16,0xeb,0xe9,0xc5,0x90,0xed,0x8b,0xfb,0x15,0xa0,0xec,0x88,0xd1,0x52,0xe6,0xd8,
+ 0x13,0xb9,0x5f,0xc5,0x2b,0x01,0x28,0x00,0xa5,0x10,0xfc,0x62,0x95,0x4a,0x49,0x57,
+ 0x71,0xf5,0x8a,0x4b,0x37,0x54,0xe0,0x9a,0xc2,0x27,0x4b,0x5e,0x7f,0xde,0x16,0x7b,
+ 0x11,0x69,0x81,0xb5,0xf6,0x5f,0x04,0xbf,0x54,0xf4,0x12,0x57,0xb9,0x54,0x33,0x33,
+ 0x8f,0xbb,0xaf,0x7f,0x71,0x91,0x21,0x33,0x6b,0xc1,0x3c,0x06,0x00,0x00,0x28,0x00,
+ 0x10,0x2c,0xfc,0xe5,0x55,0x2a,0x66,0xdd,0x74,0xd3,0x4d,0x51,0x51,0x0b,0x41,0x5c,
+ 0x52,0xd5,0x16,0xee,0xa9,0x46,0x20,0x9b,0xdf,0xf9,0x2c,0xf2,0x5a,0x3c,0x08,0xd5,
+ 0x78,0x24,0xaa,0xed,0xbf,0x08,0xfe,0xc9,0x93,0x27,0x47,0x9e,0x14,0x11,0xfc,0x49,
+ 0xcf,0x41,0x16,0x85,0x46,0xc6,0xdc,0xcd,0x20,0x27,0x9b,0x17,0x02,0x45,0x00,0x00,
+ 0x50,0x00,0x20,0x48,0xf0,0x4b,0x60,0x97,0x08,0xfe,0xb8,0x94,0x65,0x2c,0x78,0xd2,
+ 0x4a,0xf1,0xd6,0xea,0x62,0x0f,0x59,0x9f,0x8f,0x5a,0x84,0x5c,0x56,0x17,0x7f,0x35,
+ 0xfd,0x97,0xe9,0x75,0x25,0x08,0x49,0xc6,0x1d,0x45,0xf0,0x27,0x8b,0x01,0x85,0xc4,
+ 0x1c,0x98,0xdb,0xb6,0xcd,0xae,0x67,0xfe,0x06,0xc1,0x0f,0x00,0x28,0x00,0x90,0x2a,
+ 0xf8,0x85,0x67,0x9e,0x79,0x26,0x12,0xfc,0x32,0x29,0x46,0x1e,0x02,0x39,0xeb,0x7e,
+ 0x14,0xe9,0xd2,0xaf,0x45,0x29,0xa8,0xb5,0xff,0x22,0xf8,0x45,0xa9,0x92,0x3a,0xe1,
+ 0x92,0xfe,0x26,0x55,0xc2,0xd2,0x14,0x30,0xdb,0xb9,0xb1,0x1d,0x0f,0x51,0x00,0xcc,
+ 0xe8,0x7f,0x89,0x0b,0x70,0x29,0x31,0x00,0x00,0x28,0x00,0xd0,0x21,0x5c,0x44,0x60,
+ 0xc8,0x54,0x92,0x92,0xd2,0x25,0xe3,0xd1,0x59,0x2c,0x52,0x9f,0xf0,0xcc,0x1a,0x45,
+ 0x9f,0x66,0x41,0xfb,0x26,0x07,0xaa,0x75,0x7f,0x6b,0xdd,0x7f,0xdb,0xef,0x67,0xcd,
+ 0x9a,0x15,0x09,0x7e,0x71,0xd3,0x4b,0x70,0x5f,0x48,0x64,0x7f,0x88,0x87,0x26,0xe9,
+ 0x01,0xb0,0x15,0x14,0x92,0x73,0x2a,0xdb,0x44,0xf8,0x03,0x00,0x0a,0x00,0xac,0x23,
+ 0x48,0x96,0x2f,0x5f,0x1e,0xe5,0xf2,0x4b,0x1d,0x76,0x09,0xf2,0xb3,0xb9,0xb8,0x8b,
+ 0x9e,0x8c,0x27,0xab,0xc0,0xad,0x25,0x6a,0xbf,0x88,0xed,0xa5,0x59,0xfc,0x52,0x14,
+ 0x49,0x04,0xb4,0x64,0x4b,0xc8,0x58,0x7f,0x11,0xc8,0xfa,0x93,0x45,0x85,0x62,0xeb,
+ 0x1f,0xcb,0x1f,0x00,0x50,0x00,0x60,0x1d,0xab,0x51,0xea,0xc9,0x4b,0xe1,0x09,0x29,
+ 0xe4,0x32,0x6f,0xde,0xbc,0x60,0x01,0x19,0xb2,0x8d,0x5a,0x5d,0xf4,0x59,0xa3,0xea,
+ 0xb3,0x1e,0x83,0x5a,0x3c,0x18,0x21,0xeb,0x8f,0x67,0xf8,0x5b,0xbc,0x78,0xb1,0xda,
+ 0x7a,0xeb,0xad,0xa3,0x8c,0x89,0x22,0xb3,0x12,0x92,0x0a,0x80,0x58,0xfc,0xa2,0x00,
+ 0xc4,0x4a,0x9c,0x59,0x1d,0x10,0x65,0x00,0x00,0x50,0x00,0xda,0x54,0xf0,0x8b,0x3b,
+ 0xfa,0xf6,0xdb,0x6f,0x8f,0xac,0x7e,0x29,0x84,0xe1,0x2a,0x18,0x93,0x25,0xe8,0x2d,
+ 0xcf,0x34,0x3f,0x13,0x9f,0xcb,0xbf,0x1a,0x01,0x9e,0x25,0x8b,0x20,0x4b,0xff,0xe5,
+ 0xd8,0x8a,0xc5,0x2f,0x0a,0xd5,0x16,0x5b,0x6c,0x11,0x55,0x46,0x34,0xf3,0xf2,0x7d,
+ 0x1e,0x8b,0x6a,0x14,0x04,0x49,0x03,0x94,0x26,0xc2,0x5f,0x5e,0x63,0x2f,0x40,0x96,
+ 0xe3,0x04,0x00,0x80,0x02,0xd0,0xa2,0x82,0x7f,0xea,0xd4,0xa9,0xea,0xd6,0x5b,0x6f,
+ 0x8d,0xc6,0xf9,0x45,0x48,0x84,0x08,0xe7,0xac,0xcb,0x84,0x08,0xb8,0x22,0xd6,0x9f,
+ 0xc5,0xa3,0x50,0xc4,0xfe,0xc5,0xae,0x7e,0xb1,0xfc,0xa5,0x2a,0xe2,0xee,0xbb,0xef,
+ 0xde,0x51,0x01,0x2f,0xab,0x00,0xce,0x9a,0x05,0x10,0x07,0x01,0xc6,0xc2,0x3f,0x1e,
+ 0xf3,0x37,0xe7,0x04,0x00,0x00,0x40,0x01,0x68,0x33,0xc1,0x2f,0x82,0x49,0x2a,0xf7,
+ 0x49,0xc9,0xde,0x32,0xb8,0x81,0x8b,0xae,0xcd,0x5f,0xcf,0x2c,0x01,0xb1,0xf8,0xc5,
+ 0xd5,0x2f,0xaf,0xa3,0x46,0x8d,0x52,0x07,0x1e,0x78,0x60,0x14,0xe1,0x5f,0x4b,0xa1,
+ 0xa2,0xb4,0x2c,0x00,0x89,0xd7,0x88,0x67,0x57,0x4c,0x2a,0x0c,0xb1,0x07,0x20,0x9e,
+ 0x10,0xc8,0x35,0x31,0x10,0x31,0x01,0x00,0x80,0x02,0xd0,0x06,0x82,0x5f,0x04,0xbe,
+ 0x08,0x7e,0x51,0x00,0x42,0x2c,0xdd,0x7a,0x91,0x87,0x05,0x9e,0xe7,0xf2,0xd5,0x0a,
+ 0x7e,0x49,0x91,0x94,0xa0,0x49,0x09,0xec,0x93,0x49,0x6e,0xfa,0xf7,0xef,0xef,0x15,
+ 0xe0,0x21,0xdf,0xdb,0xfa,0x23,0x13,0x82,0xc8,0xb0,0xc2,0xa2,0x45,0x8b,0xd6,0x0a,
+ 0xee,0x8b,0x7f,0x1b,0x0b,0xff,0xb8,0xe5,0x3d,0x0b,0x20,0x00,0x00,0x0a,0x40,0xc9,
+ 0x05,0xbf,0x3c,0xfc,0x1f,0x7d,0xf4,0xd1,0xc8,0xd5,0x2f,0xd5,0xfb,0xaa,0xb1,0x80,
+ 0xeb,0x9d,0x67,0x9f,0x77,0x50,0x9c,0x4d,0x80,0xe6,0xd5,0xff,0x58,0xf0,0xcb,0x4c,
+ 0x5d,0x52,0xc4,0x47,0x66,0x0c,0x13,0x6b,0xbc,0xa8,0xe3,0x25,0x82,0x5d,0x2c,0x7e,
+ 0x09,0xd8,0x4c,0x4e,0x01,0x6c,0xf6,0xd5,0x26,0xfc,0x6d,0x01,0x80,0x00,0x00,0x28,
+ 0x00,0x2d,0x26,0xf8,0x65,0x5a,0xd6,0xeb,0xaf,0xbf,0x3e,0x2a,0xd5,0xbb,0x70,0xe1,
+ 0x42,0xab,0x25,0x5c,0x6d,0x1e,0x7e,0xd6,0xdf,0x87,0x78,0x00,0x7c,0xb5,0xf4,0xab,
+ 0x19,0xdf,0x4f,0xcb,0x62,0xa8,0xb5,0xff,0x49,0xc1,0x2f,0x2e,0x7e,0x99,0x2e,0x54,
+ 0x5c,0xfe,0xb6,0xdf,0xe5,0x31,0x5b,0xa0,0x08,0x7e,0x11,0xfa,0x62,0xf1,0xbb,0x84,
+ 0x7a,0x72,0x7d,0xc9,0x65,0xf0,0x00,0x00,0x00,0x0a,0x40,0x0b,0x0b,0x7d,0x79,0xc8,
+ 0xbf,0xf8,0xe2,0x8b,0xea,0xf1,0xc7,0x1f,0x8f,0xca,0xf4,0x8a,0xd0,0x37,0x27,0x80,
+ 0x71,0x09,0xd4,0x5a,0xa3,0xf2,0xf3,0xa8,0x04,0x98,0x57,0x65,0xbd,0x22,0xb6,0x97,
+ 0xec,0x7f,0x52,0xf0,0xcb,0xbc,0xe1,0x92,0xcb,0x2f,0x91,0xfd,0xb5,0x44,0xed,0xa7,
+ 0x05,0xf5,0xc9,0x79,0x15,0xa1,0x2f,0xe7,0x33,0x2e,0xef,0x1b,0x9f,0xef,0xe4,0x72,
+ 0xb6,0xdf,0xc7,0x82,0x3f,0xb9,0x9c,0xa9,0x08,0x30,0xfe,0x0f,0x00,0x28,0x00,0x4d,
+ 0x28,0xf4,0x25,0x00,0xec,0xa1,0x87,0x1e,0x52,0x0f,0x3c,0xf0,0x80,0x7a,0xf2,0xc9,
+ 0x27,0xa3,0x68,0xef,0x78,0x0e,0xeb,0x64,0xaa,0x59,0x1e,0x41,0x72,0x59,0x26,0xf3,
+ 0xa9,0xc6,0xc2,0xad,0x65,0xff,0x6a,0x75,0xf9,0x87,0xec,0x8f,0x08,0xfe,0x09,0x13,
+ 0x26,0x44,0x82,0x5f,0x8e,0xf3,0x66,0x9b,0x6d,0xa6,0x36,0xdf,0x7c,0xf3,0xb5,0x6a,
+ 0xf6,0xe7,0x55,0xaa,0x38,0xb6,0xe0,0xa5,0x66,0x80,0x8c,0xf3,0x8b,0xf5,0x9f,0x74,
+ 0xf7,0x9b,0x0a,0x42,0xf2,0xef,0xa4,0x90,0xf7,0x45,0xfe,0x9b,0xfb,0xb0,0xd5,0x56,
+ 0x5b,0xa9,0x7d,0xf7,0xdd,0x37,0xf5,0xba,0xeb,0xdb,0xb7,0x2f,0x4f,0x13,0x00,0x40,
+ 0x01,0x68,0x84,0xd0,0x17,0x9e,0x7f,0xfe,0xf9,0xa8,0x3c,0xef,0xfd,0xf7,0xdf,0x1f,
+ 0x05,0x83,0xc9,0xfc,0xd0,0xeb,0xaf,0xbf,0x7e,0xb0,0xc5,0x6b,0xe2,0xcb,0xab,0x0f,
+ 0x29,0xb5,0x6b,0xbe,0xa6,0x4d,0x96,0x93,0x75,0x48,0xa1,0xd6,0xd9,0xfc,0x6a,0xe9,
+ 0xbf,0x08,0x61,0x49,0xe9,0x13,0xcf,0x8a,0xac,0x63,0xf4,0xe8,0xd1,0x91,0xa0,0xb4,
+ 0xd5,0xec,0x37,0xcf,0x53,0xb5,0x41,0x7f,0x62,0xf1,0xcb,0x38,0xbf,0x9c,0xdb,0xa4,
+ 0xe0,0x77,0x59,0xf4,0x2e,0x85,0xc7,0x54,0x06,0x6c,0xfb,0x98,0xe4,0x93,0x9f,0xfc,
+ 0x64,0xd4,0x00,0x00,0x50,0x00,0x4a,0x24,0xf4,0xe5,0xe1,0x7f,0xef,0xbd,0xf7,0xaa,
+ 0xab,0xaf,0xbe,0x3a,0xb2,0x44,0x45,0x00,0x0d,0x19,0x32,0x44,0xf5,0xe9,0xd3,0xa7,
+ 0x2a,0x8b,0x36,0x4d,0x40,0x56,0x13,0x65,0xef,0x1b,0xc3,0xcf,0xb2,0x7c,0x9e,0xd3,
+ 0xeb,0x56,0xdb,0x7f,0x11,0xfc,0x62,0xf5,0x4b,0x2c,0x85,0x20,0x91,0xfd,0x52,0xc1,
+ 0xcf,0x56,0xb3,0x3f,0xaf,0x20,0x49,0x29,0xc2,0x24,0x16,0xbf,0xb8,0xfa,0xd3,0x82,
+ 0xf7,0x62,0x65,0x20,0xf6,0x14,0x98,0xa4,0x8d,0xf9,0x13,0x07,0x00,0x00,0x28,0x00,
+ 0x4d,0x22,0xf8,0x05,0xb1,0x3e,0x7f,0xf5,0xab,0x5f,0xa9,0xd7,0x5f,0x7f,0xbd,0xe3,
+ 0x33,0x11,0x4c,0xd3,0xa6,0x4d,0xe3,0xcc,0xd6,0x89,0x71,0xe3,0xc6,0x79,0x95,0x87,
+ 0x6a,0x2b,0xf9,0x2d,0x5b,0xb6,0x2c,0x12,0xfc,0x32,0xa4,0x63,0x0a,0xf1,0xa4,0x90,
+ 0xb7,0x8d,0xfd,0xbb,0x3c,0x00,0x00,0x00,0xd0,0x64,0x0a,0x40,0xf2,0x81,0x2e,0xae,
+ 0xe7,0x0b,0x2f,0xbc,0x50,0xdd,0x77,0xdf,0x7d,0x9c,0xc1,0x12,0x9c,0x97,0x6a,0x63,
+ 0x0e,0x5c,0x1e,0x8a,0xb8,0x88,0x8f,0x28,0x00,0xb6,0x31,0x7d,0x9b,0xb5,0x1f,0xbf,
+ 0x4f,0x7e,0x67,0x5e,0x37,0x28,0x00,0x00,0x00,0x4d,0xa4,0x00,0x98,0xe3,0xc1,0x92,
+ 0xbb,0x7f,0xde,0x79,0xe7,0x45,0x96,0x21,0x94,0x9b,0xac,0x41,0x89,0x71,0x2e,0xbf,
+ 0x78,0x71,0x4c,0x57,0xbe,0x29,0xf8,0x93,0x9f,0x99,0x55,0xfd,0xd2,0x66,0x28,0x04,
+ 0x00,0x80,0x92,0x2b,0x00,0xb6,0x40,0xb0,0x2b,0xae,0xb8,0x42,0xfd,0xcf,0xff,0xfc,
+ 0x0f,0x67,0xad,0x84,0x42,0x3e,0x44,0xe0,0xbb,0xbe,0x97,0xb1,0x7d,0x49,0xe7,0x93,
+ 0x20,0xbf,0xd8,0xda,0xb7,0x09,0xfa,0xf8,0xbd,0x4d,0x39,0x30,0x3d,0x00,0x71,0xd5,
+ 0x3f,0xf3,0x5a,0x02,0x00,0x80,0x12,0x2b,0x00,0xe6,0x38,0xae,0x3c,0xc8,0x7f,0xf8,
+ 0xc3,0x1f,0x46,0x33,0xf3,0x41,0xf9,0x15,0xb5,0xd0,0xd2,0xbd,0xc9,0x5c,0x7e,0x9b,
+ 0x90,0x37,0xd7,0xe9,0x1a,0xe7,0x4f,0x0b,0x0a,0x4c,0x7a,0x00,0x50,0x04,0x00,0x00,
+ 0x4a,0xac,0x00,0x98,0x0f,0x75,0xb1,0x0e,0xbf,0xfb,0xdd,0xef,0x46,0x53,0xf2,0x42,
+ 0x6b,0x28,0x0b,0xa2,0xd0,0x25,0x05,0x7f,0xd2,0xa2,0x4f,0xcb,0xe7,0xb7,0xb9,0xfe,
+ 0x6d,0xd5,0xfd,0x5c,0xb5,0x01,0x00,0x00,0xa0,0x84,0x0a,0x80,0xab,0x60,0xcb,0x45,
+ 0x17,0x5d,0x84,0xf0,0x6f,0x22,0x01,0xef,0x73,0xf9,0x4b,0x1a,0xa1,0x08,0xfe,0x78,
+ 0x52,0x1e,0x57,0xe0,0x9e,0xcd,0xda,0x4f,0x2a,0x05,0xbe,0x3a,0x00,0x71,0x60,0x20,
+ 0x00,0x00,0x94,0x58,0x01,0x70,0xb9,0x74,0xaf,0xbd,0xf6,0xda,0xa8,0xb0,0x0f,0x34,
+ 0x07,0x69,0x75,0x07,0x24,0xb0,0x2f,0x59,0xb6,0xd7,0x96,0xcf,0xef,0xf2,0x04,0xb8,
+ 0x14,0x04,0xd7,0xf0,0x80,0xd9,0x18,0x02,0x00,0x09,0x2e,0x9d,0x31,0x63,0x46,0xd4,
+ 0xde,0x7b,0xef,0xbd,0x8e,0xf7,0x71,0x93,0xcc,0x93,0xe3,0x8f,0x3f,0x5e,0x1d,0x77,
+ 0xdc,0x71,0xd1,0x1c,0x16,0x00,0x28,0x00,0x0d,0x12,0xfe,0xf2,0x30,0x7f,0xec,0xb1,
+ 0xc7,0xd4,0x2f,0x7f,0xf9,0x4b,0xce,0x50,0x93,0x7b,0x00,0x44,0xf0,0x8b,0xbb,0x3f,
+ 0xce,0xe5,0x4f,0x5a,0xef,0xf1,0xfb,0xb8,0xa4,0x6f,0x52,0x80,0xbb,0xb2,0x00,0x4c,
+ 0x21,0x9f,0x54,0x26,0x4c,0x0f,0x80,0x29,0xf0,0xc9,0x06,0x68,0x2d,0xe4,0x9a,0x32,
+ 0x05,0xb9,0xab,0xc5,0x85,0xab,0x4c,0x06,0x0d,0x1a,0xa4,0xfe,0xcf,0xff,0xf9,0x3f,
+ 0xea,0xcc,0x33,0xcf,0x54,0xfd,0xfa,0xf5,0xe3,0x1a,0x01,0x14,0x80,0x46,0x08,0xff,
+ 0x64,0x93,0xb9,0xe3,0x65,0xdc,0x1f,0x17,0x6e,0x73,0x08,0x7d,0xdb,0xdf,0xf2,0x70,
+ 0x16,0x8b,0x5f,0xca,0xf6,0x26,0xdd,0xf1,0xb6,0x68,0x7d,0x53,0x60,0xbb,0xaa,0xfd,
+ 0x99,0xc3,0x02,0xbe,0x21,0x83,0xe4,0xb6,0xa0,0x39,0x90,0x73,0x26,0x95,0x26,0x43,
+ 0x84,0xfa,0xdc,0xb9,0x73,0xab,0xde,0x8e,0x08,0xfe,0xff,0xfe,0xef,0xff,0x5e,0x47,
+ 0xf0,0x93,0x3e,0x0a,0x28,0x00,0x0d,0x14,0xfe,0xf2,0x00,0x90,0x88,0x7f,0x99,0xe2,
+ 0x15,0x9a,0x03,0xd3,0xe5,0x2f,0xe7,0x70,0xce,0x9c,0x39,0xce,0x40,0x3c,0x9b,0x80,
+ 0x77,0x09,0x74,0xdb,0xb0,0x80,0x29,0xd8,0x6d,0xf1,0x01,0xb1,0xd2,0xc1,0x10,0x40,
+ 0x39,0x48,0xba,0xe0,0xd3,0x9a,0x4c,0x2a,0x15,0xa7,0x6f,0x16,0x41,0x2c,0xf8,0xbf,
+ 0xfa,0xd5,0xaf,0xaa,0xfe,0xfd,0xfb,0xaf,0xf3,0x3c,0xb2,0x55,0xaa,0x04,0x40,0x01,
+ 0x28,0x48,0xf8,0x27,0x1f,0xe0,0xf2,0xc0,0x96,0xea,0x7e,0x4f,0x3c,0xf1,0x04,0x67,
+ 0xa6,0x49,0xbd,0x00,0xbe,0x4a,0x7d,0x49,0xc1,0x6e,0x73,0xf3,0x9b,0x02,0xdd,0xe7,
+ 0x11,0xf0,0xa5,0x04,0x22,0xf8,0x8b,0x23,0x0f,0x17,0x7c,0xbd,0x10,0xc1,0xff,0x5f,
+ 0xff,0xf5,0x5f,0xea,0xf4,0xd3,0x4f,0xef,0x10,0xfc,0x69,0xd7,0x85,0xa9,0xd4,0x02,
+ 0xa0,0x00,0x14,0xe8,0x01,0x90,0x87,0xb9,0x3c,0x24,0x18,0xf7,0x6f,0x5e,0x05,0x20,
+ 0x39,0xb6,0x6f,0x56,0xe7,0xf3,0xa5,0xe9,0xb9,0x82,0xf7,0x42,0x32,0x03,0xd2,0xd6,
+ 0x05,0xd9,0xa8,0x97,0x0b,0xbe,0xde,0x82,0xff,0xb4,0xd3,0x4e,0xeb,0x10,0xfc,0xc9,
+ 0x6b,0x30,0xf9,0x6a,0xfb,0x0c,0x25,0x00,0x50,0x00,0x0a,0xb4,0x16,0x63,0x61,0x21,
+ 0xed,0xa6,0x9b,0x6e,0x8a,0xc6,0xff,0xa1,0xb9,0x30,0x1f,0x94,0xe2,0xc2,0xb5,0x59,
+ 0xe8,0x36,0xeb,0xdd,0x54,0x0a,0x6c,0x31,0x02,0xae,0xc0,0xc0,0xb4,0xba,0x01,0xb6,
+ 0x99,0xff,0xda,0xf9,0x21,0x5e,0x16,0x17,0x7c,0xe8,0xf5,0x24,0xd3,0x4e,0xbb,0x9a,
+ 0x7c,0x2f,0x33,0x44,0x26,0xe7,0x8a,0xb0,0x09,0xfe,0xb3,0xce,0x3a,0x4b,0x9d,0x7a,
+ 0xea,0xa9,0xaa,0x6f,0xdf,0xbe,0x6b,0x05,0x9b,0xc6,0x2d,0xde,0x96,0x39,0x59,0x95,
+ 0x4d,0x09,0x00,0x40,0x01,0xc8,0xd9,0xea,0x4f,0x36,0xb9,0xa1,0xff,0xfc,0xe7,0x3f,
+ 0x73,0x46,0x5a,0x40,0x11,0xb0,0x09,0x77,0x5b,0x10,0xa0,0x2b,0x9f,0xdf,0x15,0x1f,
+ 0x10,0x62,0xed,0xb7,0x53,0x10,0x60,0x33,0xb9,0xe0,0x85,0x58,0x80,0x77,0xe9,0xd2,
+ 0x65,0x1d,0xa1,0x2e,0x9f,0xc5,0x82,0xdf,0x14,0xba,0xc9,0x6b,0x44,0xea,0x48,0x48,
+ 0x4b,0x13,0xfc,0x12,0xd8,0x77,0xca,0x29,0xa7,0x38,0x05,0xbf,0xa9,0x04,0xd8,0xae,
+ 0x63,0x53,0xf8,0xa3,0x0c,0x00,0x0a,0x40,0x4e,0x4a,0x40,0xf2,0x81,0x2f,0x4d,0x6e,
+ 0xd0,0x7b,0xee,0xb9,0xa7,0x29,0x5c,0x8a,0xe0,0xf6,0xe8,0xc4,0xc4,0x45,0x7e,0x4c,
+ 0x45,0x20,0x79,0xfe,0x5d,0x13,0xf8,0xd8,0xd2,0xfe,0xd2,0x84,0xbd,0x2b,0x33,0x20,
+ 0xb9,0xed,0x66,0x0a,0x02,0x6c,0x36,0x17,0xbc,0x29,0xc4,0x6d,0x7f,0xcb,0xf1,0x97,
+ 0xf7,0xae,0x02,0x51,0xb6,0x6b,0xca,0x0c,0xf2,0x94,0x54,0x52,0x9f,0xe0,0x3f,0xe3,
+ 0x8c,0x33,0xd4,0x49,0x27,0x9d,0xa4,0xfa,0xf4,0xe9,0xd3,0x31,0xc7,0x84,0x4b,0xf0,
+ 0xc7,0xfb,0x15,0xbf,0xf7,0x79,0xb5,0x00,0x50,0x00,0x72,0x12,0x14,0x36,0x25,0x80,
+ 0x82,0x3f,0xad,0xe1,0x01,0xc8,0x9a,0xba,0x67,0xfb,0x4d,0xda,0xf2,0x49,0x2f,0x82,
+ 0x99,0x19,0x60,0x7a,0x18,0x7c,0xb3,0x0f,0xd6,0x93,0x66,0x73,0xc1,0x27,0x85,0xb9,
+ 0xeb,0x7d,0x52,0x88,0x86,0x4c,0x02,0x15,0x0b,0xda,0xf8,0x7d,0xda,0xb4,0xd1,0x49,
+ 0xc1,0x2f,0x2d,0x4d,0xf0,0x4b,0x60,0xdf,0x89,0x27,0x9e,0x18,0x59,0xfc,0x42,0x5c,
+ 0x6c,0x2a,0x4d,0xe0,0xc7,0xfb,0x20,0x4d,0xae,0x99,0xa4,0x12,0x80,0xf0,0x07,0x14,
+ 0x80,0x3a,0x59,0xff,0xd2,0x26,0x4f,0x9e,0xac,0x5e,0x7b,0xed,0x35,0xce,0x46,0x8b,
+ 0x78,0x03,0xe4,0x01,0x9c,0xf4,0x00,0x98,0x82,0xd9,0xb4,0xd0,0x6d,0x4a,0x81,0x4d,
+ 0x71,0x08,0xcd,0x02,0xb0,0x0d,0x17,0x14,0x41,0x33,0xb9,0xe0,0x63,0xc1,0x17,0x0b,
+ 0x70,0x79,0x75,0xbd,0x77,0xb9,0xe0,0x43,0xa7,0x75,0xce,0xe3,0x3a,0x92,0x34,0x60,
+ 0x69,0x69,0x82,0xff,0x2b,0x5f,0xf9,0x8a,0x3a,0xe1,0x84,0x13,0x3a,0x2a,0xf7,0x49,
+ 0xcd,0x09,0x53,0xf0,0xc7,0xfd,0x8e,0x85,0x7c,0x2c,0xe8,0x93,0x7d,0x4c,0x2a,0x23,
+ 0xa6,0xe2,0x02,0x80,0x02,0x90,0xa3,0xe0,0x37,0x1f,0xe0,0x62,0xed,0x3c,0xfc,0xf0,
+ 0xc3,0x9c,0x89,0x16,0x22,0x1e,0x02,0xf0,0x95,0xe8,0x75,0x55,0xef,0x73,0x95,0x05,
+ 0x0e,0x59,0x97,0x4d,0x29,0xc8,0x7a,0xad,0x8a,0x15,0x2e,0xc1,0xa8,0x52,0x32,0xd6,
+ 0x56,0x36,0xb6,0x6c,0x2e,0xf8,0x58,0x80,0xc7,0x42,0xbc,0x6b,0xd7,0xae,0xd6,0xcf,
+ 0x6b,0xb9,0x7f,0x93,0x42,0x32,0x69,0x41,0xe7,0x89,0x9c,0x3b,0x11,0xfa,0xe2,0x2d,
+ 0x49,0x13,0xfc,0x12,0xd1,0x7f,0xcc,0x31,0xc7,0x74,0x08,0x7e,0x51,0xc4,0x92,0x63,
+ 0xfa,0xa6,0xb5,0x1f,0x0b,0xff,0xe4,0xb5,0x12,0x0f,0x49,0x98,0x59,0x27,0x21,0x43,
+ 0x13,0x00,0x28,0x00,0x35,0x2a,0x03,0x49,0x0f,0xc0,0xa3,0x8f,0x3e,0xca,0x99,0x68,
+ 0x01,0xcb,0x3f,0x7e,0x80,0xda,0xb2,0x00,0x7c,0x56,0x7e,0x5a,0xb3,0xb9,0xfe,0x4d,
+ 0x61,0x6f,0x0b,0x2e,0x4c,0x56,0x92,0x14,0xeb,0x50,0x02,0x4d,0x27,0x4e,0x9c,0x18,
+ 0x55,0x28,0xfc,0xe0,0x83,0x0f,0xa2,0x62,0x45,0x32,0xde,0x2e,0x02,0x3f,0x16,0xf6,
+ 0x65,0x70,0xc1,0xc7,0x96,0xaa,0x08,0x72,0x9f,0x50,0xaf,0x87,0x40,0x32,0xe7,0x78,
+ 0xc8,0xdb,0x3a,0x96,0xf3,0x24,0x42,0x5f,0x84,0xbf,0xab,0xfa,0xa7,0x08,0xfe,0xff,
+ 0xfc,0xcf,0xff,0x54,0x47,0x1e,0x79,0xa4,0xea,0xd5,0xab,0x57,0x87,0xe0,0xb7,0x59,
+ 0xfc,0xc9,0x2c,0x02,0x59,0x9f,0x1c,0x2b,0xb3,0x3f,0xae,0xe1,0x27,0x02,0x00,0x01,
+ 0x05,0xa0,0x00,0xe1,0xe0,0x0a,0xfe,0x93,0x07,0xf1,0xeb,0xaf,0xbf,0xce,0x99,0x68,
+ 0x62,0x4c,0xd7,0x70,0x5c,0xfe,0xd7,0x67,0xe5,0xa7,0x05,0xf5,0xa5,0xcd,0x01,0xe0,
+ 0xca,0x24,0x48,0x2e,0x23,0x81,0x60,0xa3,0x46,0x8d,0x52,0xaf,0xbe,0xfa,0xaa,0x7a,
+ 0xeb,0xad,0xb7,0x3a,0x84,0xc5,0x83,0x0f,0x3e,0xd8,0xb0,0x63,0x94,0x14,0xde,0x66,
+ 0x4b,0x0a,0xf8,0xd8,0x5a,0x6d,0x94,0xd0,0x09,0x99,0xd5,0x31,0xed,0xfb,0x2c,0x82,
+ 0x7f,0xde,0xbc,0x79,0x91,0xf0,0x4f,0x13,0xfc,0x5f,0xfa,0xd2,0x97,0xd4,0x61,0x87,
+ 0x1d,0xa6,0x7a,0xf6,0xec,0x19,0x24,0xf8,0x93,0x0a,0x80,0x4d,0xf8,0x53,0x2b,0x02,
+ 0xa0,0x8e,0x1e,0x80,0x34,0x25,0xe0,0x95,0x57,0x5e,0xe1,0x2c,0x34,0xb9,0xf5,0x6f,
+ 0x5a,0x88,0xb1,0x07,0xc0,0x1c,0x8f,0xb7,0x59,0xfb,0xa6,0x65,0xef,0x8a,0x15,0x48,
+ 0x2e,0x17,0xbf,0xb7,0x15,0x19,0xea,0xd6,0xad,0x9b,0x1a,0x3e,0x7c,0x78,0x24,0x54,
+ 0x9e,0x7d,0xf6,0xd9,0xc2,0x1f,0xf0,0x36,0x41,0x6e,0x7e,0x26,0xfb,0x94,0x74,0x51,
+ 0x87,0x8c,0xa1,0x67,0x11,0xa6,0x79,0x8f,0xd1,0xfb,0x2c,0xfe,0xac,0x1e,0x01,0x73,
+ 0xff,0xe4,0xfa,0x10,0xc1,0x2f,0x2d,0x4d,0xf0,0x9f,0x7c,0xf2,0xc9,0xea,0x90,0x43,
+ 0x0e,0x51,0x3d,0x7a,0xf4,0x58,0x47,0xf0,0xc7,0xaf,0x49,0x81,0x9f,0x14,0xfc,0xb6,
+ 0x7d,0xb5,0x15,0xa0,0x4a,0xbe,0xe6,0x71,0x2e,0x00,0x50,0x00,0x02,0x04,0x7f,0xec,
+ 0x01,0x98,0x34,0x69,0x12,0x67,0xa1,0xc5,0x94,0x81,0x38,0x08,0x30,0xc4,0xca,0x4f,
+ 0x2b,0xfa,0x13,0xe2,0x01,0x48,0x5a,0xa1,0x43,0x86,0x0c,0x89,0xdc,0xc8,0x2f,0xbf,
+ 0xfc,0x72,0x4d,0xfd,0x88,0x2d,0xc7,0xa4,0x30,0x37,0xdf,0xc7,0x6e,0xf9,0x10,0xe1,
+ 0x60,0x0a,0xe4,0xbc,0xc7,0xd0,0xcd,0x31,0x7a,0x53,0x40,0x67,0x4d,0xbb,0xcb,0xdb,
+ 0xe2,0x8f,0xf7,0x2f,0xf6,0xf8,0xf9,0x04,0xbf,0xa4,0xf2,0x1d,0x70,0xc0,0x01,0x1d,
+ 0x82,0x5f,0x0a,0xfe,0x98,0xc5,0x7b,0x6c,0x82,0x3f,0x69,0xed,0x27,0x05,0x7e,0x16,
+ 0x45,0x07,0x45,0x00,0x50,0x00,0xea,0xa0,0x04,0xc8,0xc3,0x40,0xda,0xdb,0x6f,0xbf,
+ 0xcd,0x59,0x68,0x01,0xc1,0x9f,0x7c,0x2f,0x0a,0x40,0x5a,0x0c,0x40,0x68,0xb3,0x29,
+ 0x0c,0xb6,0x6b,0x49,0x66,0x73,0x13,0x8b,0xff,0xcd,0x37,0xdf,0x4c,0x7d,0x78,0x27,
+ 0x05,0x79,0xda,0x6b,0xde,0x0f,0xfa,0xa2,0xc7,0xd0,0x7d,0x02,0x3f,0x34,0xed,0x2e,
+ 0x2f,0x8b,0xdf,0x44,0xce,0x91,0x08,0x7e,0x09,0x9a,0x4c,0x13,0xfc,0x9f,0xff,0xfc,
+ 0xe7,0xd5,0x3e,0xfb,0xec,0xa3,0xba,0x77,0xef,0xbe,0x8e,0xc5,0xef,0x1a,0xe3,0x4f,
+ 0x2a,0x52,0x66,0xff,0x43,0x5c,0xfc,0xb6,0x8a,0x80,0x08,0x7a,0x40,0x01,0xc8,0x59,
+ 0x40,0x98,0xd6,0x7f,0xac,0x04,0x4c,0x9f,0x3e,0x9d,0xb3,0xd0,0x62,0x24,0x3d,0x00,
+ 0x69,0x2e,0xfd,0xac,0xb9,0xfe,0xe6,0xb5,0x24,0x82,0x42,0x72,0xc4,0x25,0x22,0xdf,
+ 0x85,0xb8,0xdf,0x45,0xb8,0x48,0x1d,0xf8,0xd8,0x42,0xcc,0x6b,0x0c,0xbb,0x5a,0x0b,
+ 0xda,0x26,0x84,0xf2,0x1c,0xf3,0xf7,0x45,0xed,0xe7,0x39,0x86,0x2f,0xe7,0x5a,0x9a,
+ 0xdc,0xcb,0xf1,0x6b,0xfc,0x3e,0xf9,0x79,0x5a,0x54,0xbf,0xe4,0xf0,0xef,0xb1,0xc7,
+ 0x1e,0xd1,0xb9,0x92,0xe5,0x5c,0x82,0x3f,0x69,0xed,0x9b,0x25,0x9e,0x6d,0x65,0x9f,
+ 0xb3,0x34,0xac,0x7c,0x40,0x01,0x28,0xd8,0xf2,0x37,0x03,0x00,0xa5,0x49,0x14,0x36,
+ 0xb4,0x96,0x37,0x20,0x8e,0xa2,0x77,0x4d,0x02,0x64,0xcb,0x02,0xb0,0x59,0xf7,0xae,
+ 0xef,0x44,0x00,0x88,0x5b,0x58,0x84,0xbf,0x0b,0x49,0x11,0x13,0xe1,0x12,0x97,0x83,
+ 0x2d,0xd2,0x22,0xaf,0xc6,0x82,0x4e,0x53,0x00,0x1a,0x39,0x86,0x1f,0x0b,0x75,0x9b,
+ 0x10,0x37,0xdf,0xd7,0x12,0x5f,0x21,0xe7,0xe6,0x33,0x9f,0xf9,0x8c,0xda,0x7d,0xf7,
+ 0xdd,0x3b,0x04,0x7f,0x5a,0x1e,0x7f,0xac,0xbc,0x98,0xe9,0x7c,0x36,0x81,0x6f,0xa6,
+ 0x01,0xa6,0xcd,0x2d,0x60,0x53,0x04,0x7c,0xa5,0x82,0x01,0x50,0x00,0x32,0x28,0x01,
+ 0x69,0x5e,0x00,0x19,0xb3,0x85,0xe6,0x16,0xf8,0xc9,0x07,0x65,0x32,0x05,0x30,0x69,
+ 0xc9,0x87,0xb8,0xfa,0xcd,0xc0,0xc0,0xe4,0xe7,0xf1,0x67,0x62,0x1d,0xa6,0x09,0x9f,
+ 0x01,0x03,0x06,0xa8,0xc1,0x83,0x07,0x77,0xa4,0x8a,0x55,0x63,0xf1,0xd6,0xdb,0x43,
+ 0x90,0x55,0x61,0xc8,0x4a,0xac,0x6c,0x8b,0x80,0x35,0xad,0xf5,0x58,0x98,0xe7,0x21,
+ 0xd4,0x43,0x05,0xbf,0x14,0xef,0xd9,0x79,0xe7,0x9d,0xa3,0xe1,0x16,0x97,0xe0,0x4f,
+ 0x0a,0x6e,0x53,0x51,0x72,0x59,0xf8,0xb6,0xf9,0x05,0x5c,0x73,0x0f,0xd8,0x84,0xbf,
+ 0x4d,0xe8,0x33,0x2c,0x00,0x28,0x00,0x35,0x0a,0x08,0x33,0x22,0x3c,0x7e,0x20,0x49,
+ 0x8b,0xdd,0x7d,0xd0,0x1a,0xb8,0x02,0x00,0x4d,0x97,0xbe,0xaf,0x78,0x8f,0xe9,0x01,
+ 0x10,0x21,0x21,0xcd,0x26,0xa0,0xe4,0x01,0x2f,0x82,0x45,0x04,0xbf,0x58,0x93,0x26,
+ 0x36,0x17,0x78,0x2d,0x63,0xe2,0xb5,0x5a,0xe4,0x79,0x58,0xfc,0xa6,0xab,0x3d,0xad,
+ 0x95,0x21,0xd5,0x4d,0xce,0xcd,0xb1,0xc7,0x1e,0xab,0x3e,0xfa,0xd1,0x8f,0xae,0x25,
+ 0xf8,0x5d,0x6e,0xfe,0xf8,0xbc,0xd9,0x8e,0xa1,0x29,0xec,0x5d,0x69,0x95,0xae,0x94,
+ 0xcb,0x50,0x65,0x00,0x00,0x05,0x20,0x27,0xe1,0xef,0xca,0x02,0x68,0x74,0xd1,0x15,
+ 0xc8,0xd7,0xd3,0x93,0x54,0x00,0x92,0x1e,0x80,0xf8,0xbd,0x39,0xf9,0x4f,0x52,0xc8,
+ 0x27,0xd7,0x15,0xff,0x4e,0x14,0x44,0x69,0x36,0x21,0x26,0x31,0x00,0xeb,0xad,0xb7,
+ 0x5e,0x24,0xfc,0x93,0xc2,0xc2,0x66,0x71,0xa7,0xbd,0xd6,0xea,0x21,0xb0,0x09,0x7c,
+ 0x9f,0x80,0xb7,0x29,0x17,0xb1,0x50,0xf4,0x09,0x76,0x97,0x22,0x54,0x6f,0xe4,0x98,
+ 0x4b,0xa4,0xbe,0xe4,0xe7,0x9b,0xaf,0xf1,0xfb,0xf8,0x6f,0x39,0x57,0x52,0x64,0xe9,
+ 0xee,0xbb,0xef,0x6e,0xb8,0xb7,0xaa,0x9e,0x9e,0x9d,0x32,0x7a,0xeb,0xe8,0x7f,0xfd,
+ 0xfb,0x3f,0x62,0xc4,0x88,0x48,0x29,0xfd,0xf9,0xcf,0x7f,0xde,0xfa,0x0a,0x80,0x6d,
+ 0x26,0x37,0xd3,0xf5,0x1f,0x2b,0x00,0xd0,0xfc,0x24,0x05,0x98,0x2d,0xf8,0x2f,0x64,
+ 0x82,0x20,0x53,0xf0,0x8b,0xa0,0x13,0xc1,0x6f,0x8b,0x1a,0x97,0x22,0x3f,0xeb,0xaf,
+ 0xbf,0x7e,0x14,0xfd,0x6f,0xbb,0xd9,0xaa,0xc9,0x53,0xaf,0x75,0x79,0xd7,0x32,0x36,
+ 0x61,0x1e,0xbb,0xe2,0xcb,0x2c,0xd4,0x6d,0x82,0xdd,0xfc,0x3c,0x8e,0xd6,0x0f,0xc1,
+ 0x76,0x1e,0xeb,0x91,0x7e,0x68,0xfe,0x3e,0xa9,0x90,0xd6,0x52,0x32,0xda,0xa6,0xfc,
+ 0x66,0x5d,0x1f,0xfd,0x6f,0xfd,0xfe,0x4b,0x6a,0xb2,0xb4,0x97,0x5e,0x7a,0xc9,0x1a,
+ 0xb7,0xd2,0x76,0x1e,0x80,0x64,0x1a,0xa0,0x2b,0x25,0x08,0x9a,0xd7,0x03,0x10,0x0b,
+ 0x32,0x9b,0xeb,0xdf,0x25,0xec,0xcd,0xe5,0xe3,0x71,0x7e,0x13,0xb1,0xf4,0x45,0xf0,
+ 0xc7,0x35,0xe0,0xeb,0x65,0x89,0x98,0xeb,0x4f,0x0a,0xf5,0xd8,0x62,0x4f,0x0a,0xf5,
+ 0xf8,0x7d,0x99,0x84,0xba,0x08,0xeb,0xd8,0x12,0x37,0x05,0x7a,0xdc,0xe4,0x3b,0x69,
+ 0xa1,0x9e,0x8d,0xd8,0x85,0x1f,0xda,0xc7,0x7a,0x5b,0x9c,0x8d,0xf0,0xec,0xd0,0x7f,
+ 0xfa,0x1f,0xdf,0x1b,0x52,0xef,0x42,0x26,0x01,0x7b,0xf7,0xdd,0x77,0x9d,0xfb,0xd2,
+ 0x68,0x65,0xa0,0xae,0x31,0x00,0xa6,0x85,0x88,0x02,0xd0,0x1a,0xc2,0x3f,0x79,0xf1,
+ 0x26,0x67,0x02,0x4c,0x9e,0x7f,0x9f,0x47,0x20,0x4e,0xff,0x32,0xc7,0xac,0x65,0xcc,
+ 0x56,0x84,0xbe,0xb8,0xfa,0xe3,0xc2,0x30,0xb5,0xa6,0xdd,0xd9,0x6e,0xec,0x38,0x28,
+ 0x4e,0x6e,0x5c,0xd9,0x8f,0x38,0x3e,0x25,0x29,0xd4,0x63,0xc1,0x5e,0x86,0xeb,0x36,
+ 0x16,0xea,0xa6,0x00,0x77,0x09,0xf5,0xd0,0x07,0x62,0x5a,0xdf,0x6c,0x16,0x4e,0x16,
+ 0x05,0xc7,0x36,0x47,0x43,0x96,0x07,0xac,0x69,0xc1,0x85,0xac,0x2f,0x6d,0x79,0x57,
+ 0xdd,0x7f,0xfa,0x4f,0xff,0xab,0xed,0x7f,0x5c,0xf3,0x42,0xbc,0x93,0x62,0xb0,0x98,
+ 0xbf,0x33,0x97,0x6f,0xf4,0xd4,0xd3,0x85,0xa7,0x01,0x9a,0x42,0xc0,0x6c,0xd0,0xdc,
+ 0x98,0x17,0x6d,0x2c,0xc0,0x5d,0xd1,0xfc,0xb6,0x80,0x3f,0x11,0xb4,0xa6,0xb5,0x2c,
+ 0xc2,0x6b,0xe8,0xd0,0xa1,0x91,0xfb,0xcc,0x56,0xcf,0xdd,0xdc,0xb6,0x2b,0xa5,0x2d,
+ 0x29,0xb8,0x6d,0xef,0xcb,0x2a,0xd4,0xcd,0xd7,0xb8,0x49,0x90,0xa3,0x58,0xf0,0xb6,
+ 0x60,0x47,0x9f,0xfb,0xbd,0x56,0x8b,0xad,0x56,0x0b,0xc9,0x7c,0x20,0xd7,0x2a,0x20,
+ 0xb2,0x3e,0xb0,0xe9,0x3f,0xfd,0x2f,0xb2,0xff,0x22,0xf8,0xc5,0x3b,0x39,0x70,0xe0,
+ 0xc0,0x75,0xac,0x7c,0x33,0x05,0x3a,0x6f,0xef,0x48,0xa9,0x87,0x00,0x4c,0x4f,0x80,
+ 0x39,0x55,0x2c,0xb4,0x86,0xfb,0x3f,0x16,0xe6,0xa6,0x07,0xc0,0x2c,0xe8,0x13,0x5f,
+ 0x07,0xb1,0x00,0x4e,0x5e,0x07,0xa2,0x39,0x0f,0x1b,0x36,0x2c,0xba,0x89,0x6c,0x37,
+ 0x5e,0xec,0x7e,0x8f,0xad,0xf3,0xa4,0x20,0x37,0x5b,0x99,0xdc,0xef,0x49,0x6b,0x3c,
+ 0x29,0xd8,0x63,0x81,0x2e,0x7f,0xc7,0x55,0x08,0x43,0x3c,0x1b,0x21,0xf1,0x33,0xb5,
+ 0x8e,0xa9,0xda,0x2c,0x26,0x73,0x0c,0xd5,0xb7,0xbe,0xe4,0x39,0xf0,0x59,0x60,0xbe,
+ 0xf5,0xf9,0x04,0x04,0xfd,0xa7,0xff,0x8d,0xe8,0xbf,0x54,0x21,0x95,0xfb,0x37,0xb6,
+ 0xf8,0x93,0x9e,0x4e,0xb3,0x48,0x55,0xfc,0x7b,0xb3,0xee,0x44,0xc8,0x74,0xd4,0x4d,
+ 0x39,0x04,0x60,0x1b,0x06,0x60,0x08,0xa0,0x35,0xbd,0x00,0xc9,0xa9,0x80,0xd3,0xa6,
+ 0xe9,0x8d,0xdd,0xec,0xc9,0xf3,0x2f,0x05,0x7b,0xc4,0xda,0x97,0x1b,0x49,0xbe,0x97,
+ 0x71,0x33,0x53,0xa0,0xbb,0xb2,0x01,0x1a,0x25,0xd4,0xa5,0x89,0x00,0x4f,0x0a,0x77,
+ 0xb3,0x89,0x50,0x0f,0x7d,0x20,0xc5,0xc7,0x2e,0x4f,0x8b,0x2b,0xcf,0x31,0xdb,0xbc,
+ 0x2b,0x1e,0x96,0x6d,0x7d,0xf4,0x9f,0xfe,0x67,0x59,0xbf,0x8c,0xef,0x0b,0xb1,0xc5,
+ 0xef,0xf2,0x7e,0xdb,0x94,0x0a,0x57,0x8d,0x8b,0x7a,0x2b,0x01,0x85,0x65,0x01,0x98,
+ 0x82,0xdf,0xa6,0x08,0xa0,0x00,0xb4,0x9e,0x17,0x20,0xad,0x0e,0x40,0x5a,0x80,0xdf,
+ 0xc2,0x85,0x0b,0xa3,0xd6,0x48,0xa1,0x2e,0xc2,0xdc,0x14,0xe0,0xb6,0xcf,0x92,0x42,
+ 0x3d,0xd4,0xfd,0x5e,0xc4,0x03,0x29,0xab,0x45,0x54,0xab,0x8b,0x33,0x0f,0x45,0x91,
+ 0xfe,0xd3,0xff,0x66,0xef,0x7f,0x3c,0x64,0x29,0x71,0x49,0xe6,0xba,0xcc,0xe7,0xa2,
+ 0x29,0xc8,0x45,0xc9,0x4f,0xd6,0xba,0x48,0x2a,0x02,0x2d,0x1b,0x03,0xe0,0xf2,0x02,
+ 0x30,0x17,0x77,0x6b,0xb1,0x74,0xe9,0xd2,0x8e,0xb9,0xdd,0x4d,0xa5,0x4f,0x4a,0xf7,
+ 0xd6,0xbb,0x28,0x4d,0x52,0xa8,0x27,0x05,0xb9,0x29,0xd4,0xe5,0xef,0xa4,0xfb,0xdd,
+ 0xf7,0x40,0x08,0x75,0x61,0x16,0xfd,0x40,0xf2,0xb9,0x64,0xab,0xd9,0x7e,0x96,0xf5,
+ 0xd1,0x7f,0xfa,0xdf,0x4e,0xfd,0x97,0xe7,0x97,0x3c,0xe3,0x24,0x28,0x59,0xe2,0x92,
+ 0x7c,0xc1,0x90,0xb6,0x00,0x3f,0x59,0x47,0x5c,0x8c,0x2a,0x7e,0x46,0xd9,0x02,0x03,
+ 0xeb,0xe5,0x05,0xa8,0x6b,0x16,0x80,0x4d,0x11,0x80,0xe6,0xb7,0xfe,0xa5,0x9c,0xf3,
+ 0x94,0x29,0x53,0x22,0xb7,0x7d,0x5c,0x7b,0x3f,0x3e,0xb7,0x22,0xf8,0xf3,0x1c,0x8f,
+ 0x8f,0x85,0xba,0x29,0xd8,0x6d,0xaf,0xd5,0x5a,0xea,0x45,0x51,0x6f,0x8b,0xab,0x6c,
+ 0xd0,0x7f,0xfa,0xdf,0x8c,0xfd,0x97,0xfd,0x93,0x79,0x47,0xc4,0xe2,0x97,0x52,0xe3,
+ 0x2e,0x81,0x6f,0xeb,0x53,0x72,0x5a,0x6a,0x79,0x4d,0xce,0x93,0x62,0x3e,0xd7,0x5a,
+ 0xc2,0x03,0x90,0xa6,0x15,0xe1,0x01,0x68,0x2d,0xc1,0x2f,0xd6,0xbe,0x4c,0xe7,0x3c,
+ 0x67,0xce,0x9c,0x75,0xbe,0x8b,0xdd,0x64,0x21,0x82,0x35,0x2e,0x3e,0x63,0x4b,0x6b,
+ 0x13,0x8d,0x5b,0xd6,0x13,0x97,0xf9,0xcd,0x22,0xd4,0x6d,0x43,0x0d,0x00,0x00,0xa1,
+ 0x88,0xe0,0x97,0xd8,0xa4,0xe1,0xc3,0x87,0x07,0x3d,0x13,0x5d,0x55,0x46,0x63,0x25,
+ 0x20,0xf6,0x82,0xc6,0x1e,0x47,0xd7,0xd4,0xd5,0x4d,0x1d,0x03,0x90,0xc5,0x0b,0x00,
+ 0xcd,0x85,0x08,0x74,0x11,0xf8,0x33,0x67,0xce,0x8c,0xac,0x7b,0x9b,0xd0,0x8d,0x3f,
+ 0x77,0x09,0x75,0xf3,0xbd,0x4d,0xa8,0x4b,0x4a,0x8d,0x78,0x16,0x92,0xe3,0x6c,0x66,
+ 0x1a,0x61,0xbd,0x27,0xf5,0x09,0x7d,0x00,0xd4,0xab,0x20,0x11,0xfd,0xa7,0xff,0xf4,
+ 0xbf,0x98,0xfe,0x4b,0x80,0x9f,0x4c,0x21,0x3e,0x72,0xe4,0xc8,0x54,0x41,0x9f,0x26,
+ 0xf4,0x6d,0x1e,0x8e,0xd8,0x28,0xf1,0xcd,0x0f,0xd2,0xb4,0x1e,0x80,0x34,0x8f,0x00,
+ 0xc2,0xbf,0x79,0x11,0x2b,0x7c,0xf6,0xec,0xd9,0x51,0x75,0x2b,0xb9,0x48,0x45,0x70,
+ 0x8b,0xbb,0x5f,0x52,0x5f,0x92,0xa9,0x6d,0x71,0x8e,0x7a,0x48,0x9e,0xba,0xcd,0x25,
+ 0x28,0x37,0x9e,0x6c,0x43,0xc6,0xc9,0x64,0x5d,0xa6,0x07,0x21,0x6b,0xe9,0xd1,0x5a,
+ 0x4a,0x95,0xe6,0xe5,0x01,0xcb,0x73,0x7b,0xf4,0x9f,0xfe,0xd3,0xff,0xe2,0xfa,0x2f,
+ 0xc6,0x8b,0xcc,0x24,0x6a,0x13,0xfc,0x69,0xbf,0xf5,0xd5,0x27,0x48,0xc6,0x00,0x24,
+ 0xd3,0x00,0x6d,0x05,0xd2,0x5a,0x2e,0x0d,0x30,0x54,0x39,0x80,0xf2,0x22,0x02,0x59,
+ 0xf2,0xf3,0xa5,0x25,0x49,0x73,0x8d,0xf9,0xc6,0xfc,0x92,0xaf,0x32,0x64,0x20,0x59,
+ 0x00,0x72,0x43,0xb8,0xdc,0xfc,0x8c,0xa1,0xd2,0x7f,0xfa,0x4f,0xff,0x8b,0xe8,0x7f,
+ 0x5c,0xd6,0x7a,0xc3,0x0d,0x37,0xb4,0x0a,0x72,0x57,0x8d,0x03,0x9b,0xa5,0x6f,0xfb,
+ 0x2c,0x19,0x48,0x98,0x4c,0x03,0x94,0xe7,0x5d,0x1c,0x08,0x68,0x2e,0xdb,0xb4,0x41,
+ 0x80,0x36,0x0b,0x1f,0xcb,0xbf,0xb9,0x49,0xe6,0xac,0x66,0x55,0xf0,0x5c,0xaf,0x71,
+ 0x09,0xde,0x38,0x43,0x20,0x9e,0x9a,0xd5,0x76,0x83,0x95,0xe1,0x81,0x51,0xf4,0xfa,
+ 0x5c,0x56,0x05,0xfd,0xa7,0xff,0xf4,0xbf,0x98,0xfd,0x8d,0x4b,0x7e,0x8b,0x61,0x63,
+ 0x7b,0xf6,0xb8,0x66,0xed,0x0c,0x11,0xce,0x36,0x2f,0x40,0xf2,0x39,0x17,0xb7,0x58,
+ 0x09,0xc8,0xb2,0xee,0xa6,0xf0,0x00,0xa4,0xb9,0x4b,0x50,0x06,0xda,0x8f,0xe4,0x78,
+ 0x97,0x5c,0xf4,0x22,0xf8,0xcd,0xe2,0x3e,0xc9,0x1b,0x34,0xd6,0x8c,0x5d,0xca,0x47,
+ 0xc8,0x18,0x9f,0xed,0x7d,0x2d,0x63,0x86,0x69,0xeb,0xab,0x66,0xcc,0xd1,0x65,0x51,
+ 0xd0,0x7f,0xfa,0x4f,0xff,0x8b,0xeb,0xbf,0x2c,0xb7,0x78,0xf1,0xe2,0x28,0xa5,0x2f,
+ 0x1e,0xae,0x34,0xc7,0xf3,0x5d,0x0a,0x88,0x69,0xd9,0x9b,0xcb,0xb8,0x9e,0x67,0x71,
+ 0x10,0xa0,0x78,0x53,0xa5,0x25,0xa7,0x47,0x6f,0x94,0x3c,0xac,0x5b,0x10,0x20,0xb4,
+ 0x2e,0x59,0x83,0x72,0xc4,0xdd,0x26,0xc2,0xdf,0xa6,0x65,0x9b,0xcb,0x27,0xf3,0x64,
+ 0x6b,0x2d,0xed,0xe9,0xb3,0x28,0x7c,0x0f,0x1c,0xdf,0xfa,0xcc,0xdf,0xfb,0xf6,0x3f,
+ 0x64,0xfd,0xf4,0x9f,0xfe,0xd3,0xff,0x7c,0xfb,0x2f,0xc1,0xc5,0x92,0x55,0x14,0x57,
+ 0xf0,0xb3,0x3d,0x87,0x5c,0x55,0xf9,0xd2,0x94,0x01,0x73,0x9a,0x61,0xdb,0xf2,0xe2,
+ 0x71,0x88,0x5b,0x5c,0x4b,0xc0,0xd6,0xea,0x15,0x14,0xd8,0x15,0xf1,0x05,0xb5,0x0a,
+ 0xff,0x2c,0xb5,0xbc,0x45,0xf0,0x27,0x0b,0xe9,0x84,0x7a,0x0c,0x42,0x2d,0x9a,0x10,
+ 0x6b,0x23,0xd4,0x22,0xc9,0xe2,0xd1,0xc8,0x63,0xff,0xe8,0x3f,0xfd,0xa7,0xff,0xc5,
+ 0xad,0x5f,0x2c,0x7e,0x09,0xf0,0x1b,0x31,0x62,0x84,0xd7,0x8b,0x60,0x13,0xf0,0xb6,
+ 0xdf,0x84,0xce,0x8c,0x98,0xac,0x03,0x20,0xcd,0x56,0x2d,0xb5,0x11,0xa0,0x00,0x40,
+ 0xcd,0x6e,0x7d,0x9f,0x86,0x1e,0xcf,0xca,0x17,0x47,0xbc,0x9a,0xb3,0xfb,0x99,0xeb,
+ 0x2a,0x4b,0xed,0xf2,0x46,0x1d,0x4b,0xfa,0x4f,0xff,0xe9,0x7f,0x7e,0xfd,0x97,0x5c,
+ 0x7e,0x79,0xe6,0xc8,0xec,0xa2,0xa6,0xd1,0x62,0xfe,0xd6,0x25,0xdc,0xcd,0x67,0x5d,
+ 0x5a,0xaa,0x9f,0x4d,0xf0,0xc7,0xdb,0x8b,0x85,0x7f,0xb2,0x35,0x52,0x11,0x40,0x01,
+ 0x80,0x9a,0x3d,0x00,0xe6,0xfb,0xe4,0x67,0xc9,0x62,0x40,0xa6,0x6b,0xd1,0xf6,0x80,
+ 0xf2,0x69,0xfc,0x3e,0x17,0x5f,0xd2,0x65,0xe8,0x73,0x49,0x66,0x75,0x79,0x16,0xe5,
+ 0x3d,0xa1,0xff,0xf4,0x9f,0xfe,0xe7,0xdf,0xff,0x78,0x02,0x31,0x29,0xe4,0x13,0x62,
+ 0xf1,0xa7,0x79,0x02,0x6c,0x16,0x7e,0x48,0x5a,0xa1,0xcd,0x18,0x2a,0x53,0x41,0x3c,
+ 0x14,0x00,0x28,0x04,0xb9,0xd0,0x45,0xdb,0x4d,0x1b,0xe3,0x0f,0x19,0x33,0xcc,0xf2,
+ 0x40,0xa8,0xc6,0xe2,0xc9,0x73,0x8c,0x2d,0xab,0x05,0x43,0xff,0xe9,0x3f,0xfd,0xcf,
+ 0xbf,0xff,0x22,0xf8,0xe3,0x0a,0x7e,0xae,0xe7,0x4f,0x9a,0x80,0x77,0xd5,0xf5,0x0f,
+ 0x71,0xf1,0xbb,0xde,0x27,0xff,0x4e,0x2a,0x01,0xf1,0x67,0x21,0x13,0x09,0xa1,0x00,
+ 0x40,0x29,0x3d,0x00,0x66,0x90,0x8c,0x69,0xf1,0x67,0x19,0x73,0xcc,0xd3,0xe2,0x71,
+ 0x3d,0x3c,0x8a,0xbc,0xb1,0xb2,0x6e,0x8f,0xfe,0xd3,0x7f,0xfa,0x9f,0x4f,0xff,0x65,
+ 0x39,0x29,0x22,0x26,0xc1,0x7d,0x32,0xd6,0x1f,0x52,0x99,0xaf,0x16,0xeb,0x3f,0x4d,
+ 0xe0,0x9b,0x25,0x80,0x93,0x53,0xa2,0xbb,0xac,0x7f,0x73,0x78,0x01,0x0f,0x00,0x94,
+ 0x16,0x29,0xd6,0xd3,0xa7,0x4f,0x1f,0xeb,0x0d,0xec,0x1a,0xe3,0xaf,0x37,0x14,0x4e,
+ 0xa1,0xff,0xf4,0xbf,0x3d,0xfa,0x3f,0x77,0xee,0x5c,0xd5,0xbb,0x77,0xef,0x75,0x4a,
+ 0x87,0x9b,0xc7,0xc1,0xf5,0x59,0x68,0x30,0x5f,0x9a,0xa2,0x63,0x4b,0x23,0x74,0x6d,
+ 0xcb,0x65,0xfd,0x13,0x03,0x00,0xa5,0x46,0x72,0x66,0xa5,0x04,0xb0,0x94,0xe9,0x8d,
+ 0xc7,0xb4,0xcc,0x22,0x16,0x79,0xd5,0xea,0xce,0xe3,0xfb,0x34,0x97,0x62,0xad,0x69,
+ 0x53,0x79,0xa7,0x65,0xd1,0x7f,0xfa,0x4f,0xff,0xb3,0xf5,0x4f,0x26,0x24,0x93,0x3e,
+ 0x4a,0x5a,0x9f,0x6f,0x3c,0xdd,0x66,0xe1,0xfb,0xac,0xfe,0x2c,0xfb,0x1e,0x32,0x4c,
+ 0xe0,0xb3,0xfe,0xeb,0x6e,0xc8,0x21,0xd2,0x20,0x0b,0x32,0xbe,0x26,0xda,0x36,0x00,
+ 0x40,0xa3,0x89,0x4b,0x91,0xbb,0x02,0x0a,0x93,0x82,0xd6,0x15,0xdd,0xef,0x12,0xc0,
+ 0x21,0x63,0xfa,0x69,0x93,0x02,0xd9,0xb6,0x5f,0x36,0x3a,0x73,0x09,0x01,0x00,0x40,
+ 0xb3,0x62,0x0b,0xde,0xb3,0x09,0x5e,0xdf,0xb8,0xbe,0xb9,0x2e,0x9f,0x77,0xc0,0x15,
+ 0x34,0x68,0x5a,0xf8,0xae,0xed,0xa3,0x00,0x00,0x00,0x00,0xd4,0x28,0xfc,0xd3,0x8a,
+ 0x01,0xa5,0x0d,0x61,0x98,0xcb,0x25,0xad,0x78,0xdf,0x04,0x3f,0x69,0xef,0x43,0xb6,
+ 0x8f,0x02,0x00,0x00,0x00,0x90,0x93,0x22,0x10,0x62,0xe9,0xa7,0xd5,0xed,0x37,0xbd,
+ 0x00,0xa1,0xc3,0x06,0x65,0x18,0xcf,0x47,0x01,0x00,0x00,0x00,0x70,0x58,0xfa,0x69,
+ 0x15,0xfb,0xd2,0xfe,0xb6,0xb9,0xf1,0xd3,0x52,0x18,0x51,0x00,0x00,0x00,0x00,0x1a,
+ 0xe4,0x09,0x30,0x3f,0xb3,0x15,0xe5,0xb1,0xa5,0xe8,0xd9,0x52,0xf9,0xd2,0x3c,0x05,
+ 0xc9,0xed,0xf8,0xb6,0x8f,0x02,0x00,0x00,0x00,0x50,0xb0,0x22,0xe0,0x4a,0x7f,0x0c,
+ 0x15,0xc4,0xa1,0xde,0x82,0x50,0x4f,0x01,0x59,0x00,0x00,0x00,0x00,0x39,0x5b,0xfc,
+ 0x36,0xeb,0xdd,0x54,0x06,0xcc,0xc9,0x7e,0x4c,0x2f,0x80,0x4d,0xc0,0xa7,0xd5,0x01,
+ 0x48,0xfb,0xcc,0xdc,0x46,0xa3,0x6b,0xfe,0xa3,0x00,0x00,0x00,0x40,0x4b,0x61,0x96,
+ 0xdd,0x4d,0x0a,0x63,0xb3,0x70,0x50,0x48,0x3a,0x60,0x35,0x11,0xfc,0xb6,0xe8,0x7f,
+ 0x5b,0x49,0x60,0x3c,0x00,0x00,0x00,0x00,0x39,0x7a,0x00,0xcc,0x48,0xfd,0x34,0x4b,
+ 0xbc,0x1a,0xcb,0xde,0xf4,0x34,0x98,0xca,0x84,0x2b,0x7b,0x20,0xb9,0x7d,0x3c,0x00,
+ 0x00,0x00,0x00,0x05,0x79,0x02,0x6c,0x02,0xd9,0x25,0xf4,0x43,0x2d,0x7b,0x5b,0x1c,
+ 0x41,0xc8,0xac,0x80,0xe6,0x90,0x43,0x9a,0xd2,0x81,0x02,0x00,0x00,0x00,0x50,0x85,
+ 0xe0,0x37,0x05,0xad,0xab,0x86,0x7f,0x56,0x0b,0xdc,0xcc,0x18,0xb0,0x09,0xf8,0x90,
+ 0xed,0x93,0x05,0x00,0x00,0x00,0x50,0x20,0xb5,0x14,0xe3,0xf1,0x15,0xf5,0x31,0x2d,
+ 0x7f,0x9f,0x82,0xe1,0xaa,0x23,0x50,0x36,0xda,0x76,0x32,0xa0,0x85,0x0b,0x17,0xaa,
+ 0x19,0x33,0x66,0x70,0xd7,0x00,0x00,0x14,0x44,0x8f,0x1e,0x3d,0xd4,0xa8,0x51,0xa3,
+ 0x0a,0x17,0xfa,0xae,0xb2,0xbc,0xe6,0xb2,0x69,0x13,0xfc,0x98,0x16,0x7e,0xb2,0x1c,
+ 0xb0,0x6b,0x08,0x20,0x74,0xfb,0x65,0xad,0x0e,0xd8,0x16,0x0a,0x80,0xcc,0x5d,0x3f,
+ 0x70,0xe0,0xc0,0xb5,0x3e,0x93,0x79,0xa3,0x37,0xde,0x78,0x63,0xe7,0x6f,0x1a,0x3d,
+ 0x97,0x76,0xad,0x53,0x75,0xe6,0xbd,0x7d,0xfa,0x4f,0xff,0xe9,0x3f,0xfd,0xaf,0x66,
+ 0x7b,0x32,0x83,0xe8,0xbc,0x79,0xf3,0x0a,0xdd,0xcf,0x10,0xeb,0xdf,0x95,0x31,0xe0,
+ 0x9a,0xd1,0x2f,0x6d,0x1e,0x80,0x6a,0xb6,0x8f,0x02,0xd0,0x20,0x7a,0xf7,0xee,0x5d,
+ 0x95,0x0b,0x26,0xed,0x37,0xbe,0x1b,0x34,0xaf,0x8b,0xdb,0xf7,0x5d,0x23,0xb7,0x4f,
+ 0xff,0xe9,0x3f,0xfd,0xa7,0xff,0x3e,0x96,0x2d,0x5b,0x56,0xb8,0x07,0x20,0xd4,0xca,
+ 0x77,0x29,0x34,0xe6,0xe4,0x3f,0xa1,0xde,0x86,0x90,0x80,0x40,0x14,0x80,0x06,0x5b,
+ 0xff,0x3d,0x7b,0xf6,0xcc,0xac,0xe1,0x86,0x68,0xe0,0x9d,0x3b,0x77,0xce,0xb4,0x7c,
+ 0xd6,0xf5,0xa7,0x5d,0x90,0xb5,0x6a,0xe8,0xf4,0x9f,0xfe,0xd3,0x7f,0xfa,0x5f,0x74,
+ 0xff,0xe5,0xb3,0x22,0x15,0x80,0x34,0xa5,0x25,0x2d,0x55,0xcf,0xd5,0x7f,0xdb,0x6f,
+ 0xcd,0xdf,0x64,0x39,0xc6,0x65,0x57,0x04,0x5a,0x5e,0x01,0xe8,0xd3,0xa7,0x8f,0xf3,
+ 0xe0,0xdb,0x4e,0x78,0xda,0xb4,0x92,0x3e,0x0d,0x3c,0xcf,0xe5,0xe3,0x9b,0x4b,0x5e,
+ 0x5d,0x37,0x78,0xf2,0xf7,0x21,0xcb,0xd3,0x7f,0xfa,0x4f,0xff,0xe9,0x7f,0x3d,0xfb,
+ 0xbf,0x64,0xc9,0x92,0xc2,0x5d,0xe2,0x3e,0x45,0x26,0x74,0x1c,0xdf,0xe5,0x59,0xc8,
+ 0x22,0xf8,0x43,0xb6,0x8f,0x02,0x50,0x27,0xba,0x74,0xe9,0xa2,0x7a,0xf5,0xea,0xd5,
+ 0xb4,0xfb,0x9f,0xbc,0x60,0x44,0x8b,0x5e,0xb4,0x68,0x51,0x74,0x43,0x2d,0x5f,0xbe,
+ 0x5c,0xad,0x5e,0xbd,0xba,0xe1,0x63,0x4d,0xf2,0xb0,0xe9,0xde,0xbd,0xbb,0xea,0xdb,
+ 0xb7,0xaf,0xea,0xdf,0xbf,0x7f,0x74,0xbc,0x8b,0xd6,0xe6,0x43,0x1e,0x4a,0xf5,0x72,
+ 0x91,0x36,0xc2,0x9a,0xa1,0xff,0xf4,0xbf,0x99,0xfa,0x2f,0xcf,0xab,0x7a,0xe1,0x9a,
+ 0xb0,0xc7,0x14,0xc2,0xbe,0xc0,0xbd,0x10,0x05,0xc1,0xa7,0x88,0xb8,0xb6,0x8f,0x02,
+ 0x50,0x47,0x44,0x30,0x55,0xeb,0x92,0xab,0xd5,0x65,0x97,0xd7,0xf2,0x0b,0x16,0x2c,
+ 0x50,0x73,0xe7,0xce,0xb5,0xba,0xd1,0x5c,0xa5,0x27,0xf3,0xd8,0x7e,0xc8,0xfa,0x62,
+ 0xf7,0x9e,0xb4,0x0f,0x3e,0xf8,0x40,0x0d,0x1b,0x36,0xac,0x43,0xe1,0xca,0xfb,0x78,
+ 0x55,0xa3,0x79,0x17,0xdd,0xff,0x7a,0x9c,0x7f,0xfa,0x4f,0xff,0x9b,0xb5,0xff,0xf2,
+ 0x5c,0x58,0xb9,0x72,0x65,0xdd,0xac,0xff,0xb4,0x59,0xfe,0x7c,0x0a,0x43,0x16,0x81,
+ 0xef,0x1a,0x3a,0xc8,0xba,0x7d,0x14,0x80,0x82,0xad,0x7f,0x09,0xfe,0xcb,0xe2,0x62,
+ 0x4b,0x8e,0x69,0xf9,0xbe,0x77,0xd5,0x99,0x4e,0x5e,0x04,0xbe,0x31,0xb2,0x34,0x8d,
+ 0x7d,0xe9,0xd2,0xa5,0x6a,0xe6,0xcc,0x99,0x6b,0x34,0x68,0xad,0x41,0x76,0x1e,0xa0,
+ 0xbf,0x13,0x85,0xa6,0x97,0x6e,0x5d,0xa3,0xcf,0x72,0xbc,0x8d,0xd6,0xac,0x2f,0xbe,
+ 0x50,0x3b,0x25,0x3e,0x73,0x2d,0x2f,0x1e,0x88,0x65,0xda,0x13,0x31,0x4f,0x55,0x74,
+ 0x5b,0xb5,0x6a,0x95,0x9a,0x3e,0x7d,0x7a,0x94,0xf2,0x23,0xa9,0x3f,0xb5,0xf6,0x3f,
+ 0xeb,0x03,0xc8,0x77,0xfc,0x9b,0xed,0xfc,0xd3,0x7f,0xfa,0xdf,0xec,0xfd,0x5f,0xbc,
+ 0x78,0x71,0x5d,0xad,0xff,0xb4,0x4a,0x7f,0x59,0xc7,0xef,0x43,0xbc,0x0c,0x59,0xb7,
+ 0x8f,0x02,0x50,0x47,0xfa,0xf5,0xeb,0xd7,0x71,0xf1,0x56,0xeb,0x32,0x2b,0x72,0x8c,
+ 0xcc,0x76,0xe3,0xc4,0x17,0x91,0xa4,0xcc,0xbc,0xf7,0xde,0x7b,0x4a,0xae,0xa1,0x2e,
+ 0x5d,0xd7,0x53,0x9d,0xbb,0x0c,0xd1,0xa2,0xb8,0x6b,0x87,0x80,0x36,0xc5,0xf5,0x3a,
+ 0xdb,0x36,0xc4,0xb7,0x7f,0x79,0x7d,0x63,0xeb,0x7f,0x9d,0xd6,0xd4,0x85,0x8a,0xdf,
+ 0x57,0x1c,0xbf,0xd0,0xea,0x88,0xfe,0xa6,0xb3,0xfe,0xd7,0x55,0x2b,0x5a,0x7d,0xb4,
+ 0x12,0x30,0x40,0xad,0x5a,0x39,0x35,0xda,0xff,0xd9,0xb3,0x67,0xab,0x0d,0x37,0xdc,
+ 0xb0,0xa6,0xfe,0xdb,0x1e,0x80,0x59,0x6f,0xa2,0x3c,0x5c,0xa6,0x8d,0x3a,0xff,0xf4,
+ 0x9f,0xfe,0x37,0x7b,0xff,0xeb,0x15,0xfc,0x97,0xe6,0xda,0x4f,0x9b,0x07,0x20,0xab,
+ 0x20,0x77,0x79,0x40,0xab,0xd9,0x3e,0x0a,0x40,0xc1,0x88,0xe0,0x4f,0x0b,0xfe,0x2b,
+ 0x83,0xcb,0xce,0x75,0x31,0x8b,0xd5,0x3f,0x67,0xce,0x1c,0xdd,0x87,0x1e,0xaa,0x5b,
+ 0x8f,0xd1,0xfa,0xb5,0xa7,0xea,0xd6,0xbd,0x97,0x1a,0x32,0x64,0x13,0xd5,0xb7,0xff,
+ 0x50,0x6d,0x5d,0xf7,0xd5,0x42,0xb7,0x5b,0x6d,0xdb,0xce,0x6a,0xf0,0x1b,0xac,0x5a,
+ 0xb5,0x42,0x2d,0x59,0x3c,0x57,0xbd,0x37,0xe3,0x15,0xb5,0x68,0xe1,0x2c,0xd5,0x45,
+ 0x89,0x77,0x42,0xbb,0xfb,0x56,0xbc,0x17,0x69,0xfd,0xe2,0x0d,0x90,0xec,0x8b,0x6a,
+ 0xfa,0x9f,0xe5,0x01,0x96,0x87,0xc5,0x50,0xb6,0xf3,0x4f,0xff,0xe9,0x7f,0x2b,0xf4,
+ 0x5f,0xe2,0x95,0xea,0x29,0xf4,0x7c,0x81,0x7c,0x21,0x9f,0xdb,0x3c,0x30,0xbe,0xac,
+ 0x82,0x6a,0xbc,0x05,0x28,0x00,0x75,0xb0,0xfe,0xcd,0x13,0x54,0x6f,0x97,0x5d,0x9a,
+ 0xa6,0xea,0xba,0xa1,0x44,0xf8,0xcb,0x78,0x7f,0x97,0xae,0xfd,0x54,0xf7,0x9e,0x1b,
+ 0xe9,0xfd,0xe9,0xa6,0x86,0x0d,0xdf,0x5a,0xad,0x3f,0x74,0x33,0xfd,0x7d,0x9e,0x55,
+ 0x9b,0x3d,0x3e,0x02,0x8f,0x82,0xd0,0xa5,0x6b,0x17,0xd5,0xbd,0xc7,0x70,0xd5,0x7f,
+ 0xe0,0x30,0x35,0x79,0xd2,0x23,0x6a,0xc1,0xfc,0xf7,0x54,0xd7,0xee,0x43,0xb4,0x17,
+ 0xe0,0xfd,0xa8,0x3f,0x12,0xa4,0x68,0x2a,0x00,0x45,0x8f,0xb1,0x66,0x3d,0xfe,0x65,
+ 0x3c,0xff,0xf4,0x9f,0xfe,0xb7,0x4a,0xff,0xeb,0xe5,0xfe,0xb7,0xf5,0x3b,0x4b,0xb4,
+ 0x7e,0x9a,0xa5,0xef,0x2b,0xfe,0x13,0xb2,0x7d,0x62,0x00,0xea,0x8c,0x1c,0x70,0x57,
+ 0xf0,0x5f,0xd6,0xb4,0x9b,0xac,0x63,0x62,0x69,0x2e,0x3d,0xdb,0xf6,0x93,0x7f,0x8b,
+ 0xdb,0x5f,0x2c,0xff,0x2e,0x5d,0xfb,0xaa,0xee,0xbd,0xc6,0xa8,0x6e,0xdd,0x7a,0xab,
+ 0x4d,0x37,0xdb,0x53,0xf5,0xee,0x33,0xd8,0x2b,0x91,0x65,0x35,0xb2,0x1b,0xf1,0xea,
+ 0xe2,0xf7,0xa1,0xd7,0x9d,0xef,0xf7,0x69,0xea,0xc2,0x88,0x91,0xdb,0xaa,0x89,0xaf,
+ 0xce,0xd4,0xef,0xba,0xeb,0x0f,0xbb,0xea,0xcf,0x57,0xae,0x75,0xbc,0x42,0xfb,0x1f,
+ 0x32,0x06,0x9a,0xf6,0x1a,0x62,0x2d,0x95,0xf9,0xfc,0xd3,0x7f,0xfa,0xdf,0x2a,0xfd,
+ 0x97,0xf8,0xa5,0xa2,0x83,0xff,0xf2,0xb4,0xb4,0x6d,0xe7,0xc9,0x54,0x02,0x5c,0xdb,
+ 0xb2,0x0d,0xd3,0x34,0x53,0x55,0xc0,0x96,0x53,0x00,0xc4,0xf5,0x5f,0x6d,0x3a,0x9a,
+ 0x6f,0x8c,0x2e,0xcf,0x1b,0x2e,0xb9,0x3e,0x19,0x2b,0x7b,0xff,0xfd,0xf7,0x75,0xa0,
+ 0x5f,0x37,0xd5,0xa3,0xf7,0x87,0xc2,0x7f,0xf3,0x8f,0xec,0xaf,0x23,0xea,0x07,0x04,
+ 0x5a,0x0f,0x1e,0x01,0x5e,0x6b,0xd1,0x90,0x14,0x05,0xa0,0x4f,0xbf,0xc1,0x3a,0x46,
+ 0xa1,0xf3,0x5a,0xdb,0x8c,0xad,0xff,0x3c,0xc7,0x48,0xeb,0xe1,0x32,0x6d,0xd4,0xf9,
+ 0xa7,0xff,0xf4,0xbf,0x95,0xfa,0x2f,0x99,0x4b,0x65,0xc3,0x56,0xe3,0x3f,0xcd,0xb3,
+ 0x92,0x66,0xc1,0x9b,0xb3,0x00,0x86,0x0e,0x3b,0x50,0x07,0xa0,0x0e,0x48,0x3e,0x7a,
+ 0x11,0xc5,0x17,0xaa,0xd1,0xf8,0x43,0x5d,0x78,0xe2,0xfa,0x97,0xf7,0xbd,0xfb,0x8d,
+ 0xd1,0xae,0xf4,0x1e,0x6a,0xd3,0x2d,0x3e,0xae,0x06,0x0e,0xde,0xc0,0x69,0x81,0x7b,
+ 0xa3,0xfc,0x8c,0xef,0xd7,0x55,0x08,0xd6,0x56,0x18,0xd6,0xdd,0xd9,0xf4,0xf5,0x25,
+ 0xbf,0xef,0xb4,0x6c,0x55,0x34,0x24,0x50,0x59,0xbd,0x4a,0xff,0xbd,0xaa,0xa3,0xf6,
+ 0x82,0xad,0x22,0x58,0x9e,0x69,0x47,0x59,0x5d,0xa4,0x65,0x3e,0xff,0xf4,0x9f,0xfe,
+ 0xb7,0x4a,0xff,0x25,0xfe,0x47,0x3c,0x00,0x8d,0x16,0xf4,0xe6,0xdf,0xbe,0xf3,0xe4,
+ 0x9a,0xe2,0x37,0xcd,0xf5,0x1f,0xe2,0xe6,0xb7,0xc5,0x12,0xa0,0x00,0x14,0x84,0x08,
+ 0x1e,0x29,0x4c,0x13,0xe2,0x52,0xab,0x56,0x3b,0x4e,0x8b,0xda,0xad,0x26,0xed,0x46,
+ 0x66,0x25,0x94,0x80,0x99,0x6e,0xdd,0xfb,0xab,0x6e,0x3d,0x07,0xaa,0x01,0x03,0x86,
+ 0xe9,0x31,0xff,0x31,0x1e,0x81,0xed,0x93,0xf0,0x3e,0x05,0x21,0x9b,0xcf,0x3f,0xed,
+ 0xeb,0x45,0x73,0x66,0x69,0xcf,0x45,0x67,0xb5,0x72,0xf9,0xdc,0xd4,0xe1,0x97,0x5a,
+ 0x5d,0x8c,0xb6,0xf3,0x91,0xe7,0x18,0x6d,0xa3,0xce,0x3f,0xfd,0xa7,0xff,0xad,0xd4,
+ 0x7f,0xc9,0x02,0x6a,0x24,0x2e,0xc1,0x6e,0x73,0xed,0xbb,0xbe,0x77,0x1d,0xab,0x3c,
+ 0x82,0x0a,0x51,0x00,0xea,0x60,0xfd,0xe7,0xe1,0x22,0xcb,0x9a,0x96,0xe3,0x5b,0xbf,
+ 0xcb,0x85,0x26,0xe3,0xfe,0xf2,0xda,0xa3,0xcf,0x88,0xe8,0x06,0x1a,0xb9,0xf1,0xf6,
+ 0xaa,0x6b,0xb7,0xae,0x3e,0x35,0x37,0xd5,0xa4,0x5f,0x47,0xfe,0x9b,0xfb,0xee,0x75,
+ 0x01,0x84,0x33,0x67,0xf6,0x9b,0xaa,0xb3,0x5e,0xcf,0x8a,0xe5,0x1f,0xde,0xf8,0x32,
+ 0xeb,0x62,0x5a,0xfc,0x45,0xb5,0x63,0xa2,0x45,0xaf,0xaf,0x51,0xe7,0x9f,0xfe,0xd3,
+ 0xff,0x56,0xe9,0xbf,0x7c,0x27,0x41,0xcc,0x32,0x04,0x58,0x6f,0x61,0x17,0x3a,0xd5,
+ 0xaf,0xcf,0xb5,0xef,0x12,0xea,0x21,0x13,0x05,0x85,0x4c,0x42,0x84,0x02,0x50,0x10,
+ 0xe2,0x7a,0x96,0xf1,0xff,0xa2,0xb4,0x49,0xdf,0x0d,0x14,0xe2,0x82,0x33,0xdf,0x4b,
+ 0xb4,0xbc,0x44,0xcb,0x76,0xe9,0xda,0x53,0x47,0xfd,0x0f,0xd4,0x1e,0x8c,0xfe,0x6a,
+ 0xc8,0x06,0xeb,0xce,0x9d,0xbd,0x6e,0x96,0xde,0xda,0x9f,0x7c,0x98,0xb7,0xdf,0xc9,
+ 0x99,0xb7,0x9f,0xfd,0x6e,0x5a,0xdb,0x63,0xb0,0x8e,0xc3,0x60,0xcd,0xd7,0x8b,0x17,
+ 0xcf,0x57,0xf3,0xe7,0xcd,0xd0,0xdf,0x2d,0xd7,0x1e,0x80,0xf9,0x1d,0x65,0x81,0xab,
+ 0xb1,0x50,0x8a,0x3e,0x3f,0x65,0x3c,0xff,0xf4,0x9f,0xfe,0xb7,0x52,0xff,0x65,0xec,
+ 0x5f,0xa6,0xfe,0x15,0x43,0x26,0xef,0xb2,0xe0,0x59,0x85,0xbf,0xad,0x04,0xb0,0x4d,
+ 0x90,0x87,0x94,0x02,0x8e,0x97,0x0b,0x55,0x32,0x5c,0xdb,0xa7,0x14,0x70,0x81,0xc4,
+ 0xae,0xe7,0x22,0xf3,0x74,0xf3,0xbe,0x61,0xa4,0x7c,0xae,0xbc,0xf6,0xea,0x33,0x3c,
+ 0xd2,0x9a,0x47,0x8d,0xd9,0x56,0xf5,0xe8,0xd9,0xc3,0x27,0x8f,0xbd,0x31,0x01,0xbe,
+ 0x11,0x01,0xef,0xfa,0x4d,0x07,0x81,0x23,0x4b,0x70,0xea,0xdb,0x93,0x55,0x67,0x3d,
+ 0xfe,0xbf,0x64,0xd1,0xcc,0xe8,0xf3,0xc1,0x83,0x07,0xa7,0x06,0x0d,0x65,0x7d,0x60,
+ 0x56,0xf3,0x10,0x68,0xa6,0xf3,0x4f,0xff,0xe9,0x7f,0x2b,0xf5,0x5f,0xbc,0x99,0x82,
+ 0x64,0x00,0xd4,0x53,0x01,0xb0,0x29,0x02,0x2e,0x81,0xee,0x1a,0x0e,0x08,0x89,0xdc,
+ 0xb7,0x05,0x11,0x26,0xcf,0xb1,0x6f,0xfb,0x0c,0x01,0x14,0x48,0x32,0xf8,0x2f,0xe4,
+ 0xa0,0xe7,0xad,0x95,0x65,0x1d,0xc3,0x93,0xcf,0x25,0xf5,0xaf,0x73,0xe7,0xae,0xaa,
+ 0x57,0xbf,0xa1,0xda,0x0b,0xd0,0x4d,0x8d,0x18,0xbd,0x95,0xea,0xa2,0xdd,0xff,0x99,
+ 0x03,0x86,0x3c,0x02,0xde,0x94,0xe8,0x59,0x7f,0x6f,0x53,0x40,0x56,0xad,0x5a,0xa9,
+ 0x66,0xce,0x98,0xa4,0xd7,0xa3,0xf3,0xfe,0x17,0xcf,0x8a,0x14,0x98,0x41,0x83,0x06,
+ 0x75,0xdc,0xf8,0x21,0x63,0x98,0x3e,0x17,0x66,0x35,0x0f,0xdf,0x66,0x39,0xff,0xf4,
+ 0x9f,0xfe,0xb7,0x52,0xff,0xc5,0xf2,0x97,0x58,0x26,0x41,0x26,0x2a,0xab,0xa7,0xd0,
+ 0x4f,0xfb,0xdb,0xf7,0xbb,0x50,0xb7,0x7e,0x88,0xc2,0x15,0xb2,0x3e,0x14,0x80,0x22,
+ 0x3a,0xa1,0x85,0x4f,0xcf,0x9e,0x3d,0x53,0x35,0xf2,0x90,0x1b,0xb0,0x9e,0x16,0x80,
+ 0xb8,0xcb,0x24,0x62,0xb6,0x67,0x1f,0x11,0xfe,0xdd,0xd5,0xf0,0x91,0x9b,0xab,0x9e,
+ 0xbd,0x7a,0xdb,0x4d,0xfa,0x8c,0x95,0xfa,0x2c,0x57,0x5e,0x7a,0x61,0x00,0x5f,0x4c,
+ 0x80,0x25,0xe6,0xe0,0x7d,0x2d,0xfc,0x57,0xad,0x5a,0xae,0x96,0x2f,0x9d,0xad,0x3f,
+ 0x5e,0xa9,0x83,0x17,0x07,0xae,0x55,0xfc,0xa7,0x0c,0xb3,0x91,0x95,0xf9,0xfc,0xd3,
+ 0x7f,0xfa,0xdf,0x4a,0xfd,0x9f,0x35,0x6b,0xd6,0x5a,0x82,0x4e,0x94,0x00,0x5f,0x29,
+ 0xf6,0x3c,0xfb,0x99,0x16,0xdc,0x57,0x6b,0xe0,0x63,0x5a,0xd6,0x80,0xcb,0xf5,0x6f,
+ 0x53,0x32,0xf0,0x00,0x14,0x84,0xad,0xf2,0x5f,0x51,0xee,0xa5,0xbc,0x2a,0x77,0xc5,
+ 0xee,0xb2,0x3e,0x03,0x46,0x44,0x51,0xf4,0xa3,0x36,0xd9,0x36,0xb2,0xfe,0x83,0x4c,
+ 0xf0,0x75,0xae,0x54,0x95,0x29,0x2d,0x30,0x8e,0x17,0xe8,0xe4,0x8a,0x21,0x08,0x48,
+ 0x03,0x9c,0xfe,0xce,0xab,0xd1,0x7e,0x2f,0x5d,0x38,0x23,0xfa,0x68,0xc8,0x90,0x21,
+ 0x35,0xcd,0x4e,0x58,0x76,0xca,0x58,0x3a,0x96,0xfe,0xd3,0xff,0x32,0xf4,0x5f,0x84,
+ 0xbd,0x04,0xff,0x25,0xa9,0x97,0x02,0xe0,0x12,0xf4,0x21,0x69,0x7a,0x2e,0xa1,0x6d,
+ 0xf6,0xd3,0x57,0x10,0xc8,0xdc,0x7e,0x51,0x13,0x11,0xa1,0x00,0x38,0x88,0x03,0xcf,
+ 0x42,0x35,0xb4,0x6a,0x6f,0xc8,0xbc,0xa2,0x74,0x65,0x86,0x3f,0xc9,0x95,0xed,0xde,
+ 0xb3,0xbf,0xea,0xd9,0x7b,0xa0,0xea,0x3f,0x68,0x03,0xb5,0xfe,0xb0,0x51,0x89,0x20,
+ 0x3e,0xa3,0xd2,0x5f,0x36,0xf9,0xee,0xbf,0x99,0x55,0x70,0x9a,0xbf,0xf5,0xfb,0x0f,
+ 0xe6,0xea,0x9a,0xff,0x0b,0x67,0xab,0xd5,0xab,0x16,0xeb,0xe0,0xbf,0x85,0xd1,0xac,
+ 0x8b,0xe6,0xcc,0x8b,0xd5,0x4c,0x1e,0x52,0x4b,0x29,0xd5,0x66,0x3a,0xff,0xf4,0x9f,
+ 0xfe,0xb7,0x52,0xff,0x25,0x96,0x49,0xbc,0x99,0x66,0x7f,0xea,0xa5,0x98,0xa4,0x09,
+ 0xf9,0xb4,0x7d,0xb1,0xa5,0x4a,0xda,0xac,0xff,0x10,0x2f,0x43,0x5a,0x10,0x21,0xa5,
+ 0x80,0x0b,0x24,0x9e,0xf8,0xc7,0x76,0xe0,0x6b,0x99,0xcd,0xaa,0xd6,0x1b,0x3a,0x8d,
+ 0xd8,0xfa,0xef,0x3b,0x68,0x64,0x64,0x45,0x6f,0x3c,0x76,0x87,0xa8,0x98,0x8e,0x5b,
+ 0x40,0xa7,0x5b,0xec,0xd9,0x67,0xff,0xab,0x6d,0x7d,0xd3,0xdf,0x7e,0x39,0xda,0xef,
+ 0xc5,0xf3,0xdf,0xb5,0x5a,0xff,0xb5,0xb8,0xdb,0x42,0x2b,0x9f,0xd9,0xc6,0x5c,0x9b,
+ 0xe5,0xfc,0xd3,0x7f,0xfa,0xdf,0x4a,0xfd,0x4f,0xba,0xff,0x93,0x1e,0x80,0x7a,0x7b,
+ 0x28,0x42,0x2c,0xfc,0xe4,0xe7,0xe6,0x7b,0x97,0x3b,0xdf,0x65,0xbd,0xbb,0x84,0x7c,
+ 0x33,0x4c,0x02,0xd4,0x32,0x0a,0x80,0x59,0x75,0xae,0x2c,0xb3,0x67,0xb9,0x10,0x4d,
+ 0x79,0xfe,0xfc,0xf9,0xfa,0xc6,0xd5,0x69,0x8b,0xfd,0x87,0xe9,0x71,0x73,0x3d,0xfe,
+ 0xbf,0xd1,0x16,0x5a,0x01,0xe8,0x9a,0x10,0xc0,0x6b,0x0b,0xe8,0xec,0x4f,0x93,0x8c,
+ 0x1a,0x41,0x06,0x9f,0xc2,0xd2,0xc5,0x0b,0xd4,0xf4,0x77,0x27,0xea,0xca,0x7f,0xcb,
+ 0xd5,0x92,0x05,0xef,0x45,0xa9,0x7f,0xae,0xdc,0xff,0x7a,0xb8,0xff,0xb2,0x3c,0x40,
+ 0xcb,0x70,0xfe,0xe9,0x3f,0xfd,0x6f,0xa5,0xfe,0x4b,0xe0,0x9f,0x6d,0xe2,0x9f,0x7a,
+ 0x2b,0x00,0xa1,0x4a,0x4b,0xd6,0x69,0x80,0x4d,0x8f,0x4a,0xda,0xd0,0x42,0xd9,0x27,
+ 0xfe,0x69,0x49,0x05,0x20,0x76,0x3d,0x17,0x3d,0xdb,0x96,0xef,0x86,0x0b,0x8d,0xdc,
+ 0x97,0xca,0x7f,0x72,0x73,0xf4,0xec,0x33,0x44,0xd7,0xd0,0xef,0xaa,0x06,0x0e,0x19,
+ 0xa6,0x03,0x18,0x7b,0xa7,0xbb,0xef,0x7c,0x63,0xf4,0xb5,0xdf,0x29,0xc1,0xb3,0x09,
+ 0xbd,0x36,0xe1,0x51,0xb9,0xbd,0xd5,0xfc,0xd9,0x53,0xa2,0x1d,0x18,0x3a,0x74,0x68,
+ 0x14,0xf9,0x9f,0xf7,0x6c,0x65,0x79,0xbb,0x48,0xcb,0x72,0xfe,0xe9,0x3f,0xfd,0x6f,
+ 0xa5,0xfe,0x4f,0x9f,0x3e,0xdd,0xb9,0xbe,0x7a,0x06,0x02,0xfa,0x04,0x79,0x9a,0x27,
+ 0x20,0xad,0xef,0x69,0xa5,0x7f,0x7d,0xb5,0x02,0x6c,0xdb,0x47,0x01,0x28,0x40,0x01,
+ 0x88,0x2f,0x32,0xdf,0x0d,0x9a,0xa5,0x54,0xa7,0x4d,0x9b,0x4e,0xfb,0x3b,0x74,0xb6,
+ 0xac,0xb8,0x4e,0x76,0xf7,0x9e,0x7d,0xa2,0x8a,0x7f,0x3d,0x7b,0xeb,0xf2,0xc5,0x3a,
+ 0xf7,0x3f,0x7d,0xf6,0xbe,0xb5,0x25,0xfe,0xba,0x0a,0x42,0xb6,0x98,0x80,0x75,0xe4,
+ 0xbb,0x27,0xe9,0x20,0x5e,0x7e,0xd2,0x2b,0x4f,0xab,0xf7,0xa7,0x4f,0x56,0xcb,0x16,
+ 0xcf,0x56,0x8b,0xe6,0xbd,0x1b,0x0d,0xbd,0x48,0xea,0x5f,0x96,0xfe,0x87,0x96,0x52,
+ 0x0d,0x79,0x00,0x65,0x7d,0x40,0x97,0xe1,0xfc,0xd3,0x7f,0xfa,0xdf,0x2a,0xfd,0x17,
+ 0x4f,0xa6,0xb4,0x2c,0x6e,0xf9,0x7a,0x0f,0x09,0xf8,0xf2,0xf5,0xb3,0x0e,0x2b,0x84,
+ 0xf6,0x2b,0x6d,0xfb,0x28,0x00,0x39,0xd2,0xa3,0x47,0x8f,0xaa,0xdc,0x41,0x59,0x6b,
+ 0x79,0xe7,0x35,0x3b,0x97,0x14,0xc9,0x88,0x22,0x4b,0xf5,0xb6,0x3a,0x75,0xd6,0x1e,
+ 0x81,0x05,0x73,0xa2,0xf1,0xff,0x0f,0x17,0x0b,0xf3,0xd9,0x67,0x4e,0x0a,0xf0,0xcd,
+ 0x0e,0xe8,0xf1,0x30,0xc8,0x62,0x13,0x27,0x3c,0xa5,0x5e,0x79,0xe1,0x21,0x1d,0xf4,
+ 0xb7,0x40,0xcd,0x7e,0xe7,0xdf,0x51,0xca,0xdf,0xe8,0xd1,0xa3,0x9d,0x0f,0x8c,0x3c,
+ 0x8e,0x57,0x91,0x63,0x98,0x8d,0x3a,0xff,0xf4,0x9f,0xfe,0xb7,0x42,0xff,0xc5,0xba,
+ 0x7f,0xfb,0xed,0xb7,0x53,0xb7,0x29,0xcb,0x14,0x5d,0x10,0x28,0xab,0xf5,0x6e,0x5a,
+ 0xe3,0x36,0xcf,0x4a,0xa8,0x80,0x77,0x79,0x5d,0x6c,0xdb,0x60,0x08,0xa0,0xa0,0x31,
+ 0x1e,0x19,0x83,0x0e,0xd5,0xe6,0xb2,0xce,0xaf,0x9d,0xd7,0x85,0x98,0x44,0x6e,0x08,
+ 0xf9,0x6c,0xc5,0xd2,0x85,0xfa,0x55,0xa7,0xd1,0x2d,0x59,0xa4,0xa6,0x4e,0x7e,0x49,
+ 0x6d,0xbc,0xf9,0x0e,0xa5,0x4c,0x29,0x5a,0xb2,0x68,0xbe,0x7a,0xf1,0xe9,0x7b,0xd5,
+ 0xbb,0x6f,0xbf,0xa6,0xf7,0x79,0x81,0x9a,0x31,0xe5,0x99,0x48,0x55,0xd8,0x64,0x93,
+ 0x4d,0xd6,0xaa,0xbd,0x90,0xb7,0xcb,0xb1,0x1e,0x95,0xd2,0x1a,0x71,0xfe,0xe9,0x3f,
+ 0xfd,0x6f,0x85,0xfe,0xbf,0xf5,0xd6,0x5b,0xd1,0x34,0xe6,0x3e,0x05,0xa0,0x1e,0x32,
+ 0xc0,0xe6,0x09,0xb1,0xb9,0xf7,0x43,0xa6,0xf0,0xcd,0xea,0xaa,0x77,0x55,0x07,0x74,
+ 0x05,0x20,0xa2,0x00,0xe4,0x48,0x2c,0x4c,0x43,0x6e,0xa0,0xac,0x95,0xba,0x7c,0x17,
+ 0x5a,0xb5,0xeb,0x8f,0x85,0xe6,0xd2,0x45,0x73,0xd4,0xaa,0x15,0x8b,0xf5,0x0c,0x80,
+ 0x7d,0xd5,0x8b,0xcf,0xfc,0x43,0x2d,0x5e,0x32,0x5f,0x8d,0xd9,0x6c,0x3b,0xd5,0xa7,
+ 0xef,0x20,0x1d,0x1b,0xd0,0xc5,0x67,0xd3,0x67,0xf2,0x10,0xac,0x1b,0x54,0xb8,0xf6,
+ 0x12,0xe6,0xf2,0xcb,0x97,0x2e,0x56,0x73,0x67,0xcf,0x50,0xef,0xbc,0xf9,0x8a,0x56,
+ 0x4e,0x26,0x44,0x55,0xff,0x16,0xcc,0x9d,0xa6,0x66,0x4d,0x9d,0xa0,0xfb,0xd4,0x49,
+ 0x8d,0xd1,0xc2,0x5f,0xdc,0xff,0xb5,0x1c,0x5f,0x9f,0x45,0xe3,0x73,0x49,0x66,0x7d,
+ 0x80,0x96,0xe5,0xfc,0xd3,0x7f,0xfa,0xdf,0xec,0xfd,0x7f,0xff,0xfd,0xf7,0xa3,0xe6,
+ 0xa3,0x1e,0x0a,0x40,0x5a,0x6a,0x5e,0x9a,0x25,0x9e,0x56,0x1b,0x20,0xc4,0xe2,0xf7,
+ 0x29,0x6a,0xd5,0x2a,0x14,0x28,0x00,0x19,0xb5,0xbf,0x50,0x97,0x59,0x88,0x8b,0xad,
+ 0xd6,0xd9,0xbf,0x42,0xd2,0x74,0x64,0xcc,0x5c,0x02,0x67,0xe4,0xe6,0x78,0xef,0xad,
+ 0x7f,0xa9,0x91,0x9b,0x8f,0x8b,0x2a,0x01,0x4e,0x7e,0xf5,0x69,0x35,0x45,0xb7,0x10,
+ 0x17,0x7f,0xee,0xc7,0x31,0x45,0xbd,0x58,0xb6,0x78,0x9e,0x9a,0x39,0x6d,0x82,0x4e,
+ 0xf9,0x9b,0x15,0x29,0x2f,0x63,0xc6,0x8c,0x59,0x6b,0xd8,0x25,0x6b,0xff,0xb3,0x3c,
+ 0x70,0x92,0xaf,0x3e,0x0b,0xa6,0x59,0xce,0x3f,0xfd,0xa7,0xff,0xcd,0xdc,0x7f,0xc9,
+ 0xf9,0x7f,0xe3,0x8d,0x37,0x82,0xbd,0xae,0xf5,0xb2,0x80,0x6d,0x53,0xf9,0xfa,0x5c,
+ 0xff,0x2e,0x21,0x6f,0x2a,0x03,0x21,0x25,0xe6,0x43,0xb7,0x8f,0x02,0x50,0x80,0xf6,
+ 0x97,0xe5,0x22,0xc9,0xba,0x6c,0xde,0xb3,0x75,0x75,0xeb,0xd6,0x4d,0x0d,0x1f,0x3e,
+ 0x5c,0xbd,0xfb,0xee,0xbb,0x6a,0xf9,0x92,0x05,0xea,0xad,0x09,0x0f,0xa8,0xc1,0xc3,
+ 0xc7,0xaa,0x3e,0x03,0x87,0xa9,0x6e,0x3d,0x7a,0x47,0xe9,0x81,0x9d,0x12,0x82,0xb9,
+ 0x6e,0xca,0xd4,0x9a,0xd7,0x55,0x2b,0x57,0xa8,0x95,0x2b,0x96,0xa8,0xc5,0xf3,0x66,
+ 0x6a,0xab,0x7f,0xba,0x4e,0xf5,0x9b,0x1d,0xed,0xfb,0x06,0x1b,0x6c,0xa0,0x86,0x0d,
+ 0x1b,0x96,0x69,0x4c,0xaf,0xd6,0x34,0x25,0xdf,0xf8,0x69,0x33,0x9e,0x7f,0xfa,0x4f,
+ 0xff,0x9b,0xb5,0xff,0x92,0xc1,0xf4,0xec,0xb3,0xcf,0x66,0x9a,0x75,0xb5,0xe8,0x38,
+ 0x00,0x9b,0xf5,0xed,0x52,0xb6,0x7c,0xca,0x97,0x2b,0xe8,0x31,0x6b,0x31,0xa0,0x6a,
+ 0xb7,0x8f,0x02,0x90,0x91,0xb8,0xfa,0x94,0x2f,0x95,0xa3,0x1a,0x17,0x5c,0x91,0x48,
+ 0xea,0x5c,0xe4,0x01,0x78,0xef,0x3d,0x2d,0x70,0x97,0xab,0x99,0x53,0x5f,0x8e,0x5a,
+ 0x19,0x3d,0x2c,0x32,0xc3,0x9f,0x08,0x7f,0xa9,0xb7,0x50,0x86,0xfd,0xc9,0x62,0x21,
+ 0x95,0xf5,0xfc,0xd3,0x7f,0xfa,0xdf,0x6c,0xfd,0x97,0x5c,0xff,0xc7,0x1e,0x7b,0xcc,
+ 0x3a,0xe7,0x4a,0x23,0x15,0x00,0x97,0x80,0xcd,0x2a,0x6c,0x43,0xa7,0xfa,0xb5,0x29,
+ 0x1e,0x21,0xdb,0x27,0x0d,0xb0,0xa0,0x13,0x2e,0x81,0x28,0xc9,0x62,0x40,0xb5,0xb8,
+ 0xb8,0xaa,0xd1,0x3c,0xab,0x5d,0xdf,0x86,0x1b,0x6e,0x18,0x15,0xd0,0x91,0xaa,0x80,
+ 0x92,0x4a,0xb3,0x7c,0xf9,0xf2,0x86,0x5f,0x20,0xb2,0xff,0xe2,0xa1,0x90,0xe3,0x29,
+ 0xf3,0x2b,0xc8,0xfe,0xc9,0xdf,0x45,0xf4,0xbf,0x9a,0x3c,0x69,0xdf,0xf9,0x6d,0xa6,
+ 0xf3,0x4f,0xff,0xe9,0x7f,0xb3,0xf4,0x7f,0xf6,0xec,0xd9,0xea,0xc9,0x27,0x9f,0xec,
+ 0x78,0x3e,0x64,0x55,0x00,0xea,0x21,0xf4,0xd3,0xc6,0xe1,0xb3,0x0a,0x79,0x73,0xac,
+ 0xdf,0x15,0xdd,0x9f,0x65,0xfb,0xcc,0x05,0x50,0x10,0xe2,0x96,0x32,0xeb,0xd0,0x17,
+ 0xe5,0x92,0xcb,0x7b,0x7d,0xe2,0x4a,0xcb,0xe2,0x4e,0x6b,0x26,0x8b,0xa4,0x11,0xe7,
+ 0xa3,0xd9,0xce,0x3f,0xfd,0xa7,0xff,0x65,0xef,0xff,0x9b,0x6f,0xbe,0xa9,0xfe,0xf5,
+ 0xaf,0x7f,0x45,0xb1,0x0c,0x71,0xcd,0x8f,0x32,0x29,0x00,0x59,0xac,0x7f,0x57,0xc4,
+ 0xbe,0x4d,0x41,0xf0,0xa5,0x16,0x9a,0xeb,0x0c,0xdd,0x3e,0x0a,0x40,0xce,0xcc,0x9c,
+ 0x39,0x33,0x72,0xa9,0xe7,0x71,0x01,0x15,0x99,0x96,0x53,0xf6,0xd9,0xc1,0xe8,0x3f,
+ 0xfd,0xa7,0xff,0xf4,0x3f,0xde,0x3f,0xa9,0x57,0xf2,0xfc,0xf3,0xcf,0x77,0xe4,0xfa,
+ 0xf7,0xef,0xdf,0xbf,0xaa,0xaa,0x7e,0x45,0x07,0x02,0x86,0xd6,0xf9,0x4f,0xab,0x02,
+ 0xe8,0x52,0x24,0x42,0xbc,0x0d,0xbe,0xe5,0xcb,0x3e,0xac,0xd4,0xf4,0x0a,0x80,0x0c,
+ 0x01,0x48,0x4e,0xea,0x46,0x1b,0x6d,0x54,0x93,0x0b,0xce,0xa7,0x21,0xfb,0x2a,0x6b,
+ 0x85,0xdc,0xd0,0x59,0x34,0xf0,0xbc,0x67,0x07,0xa3,0xff,0xf4,0x9f,0xfe,0xd3,0xff,
+ 0x90,0xfe,0x8b,0xd5,0x3f,0x61,0xc2,0x84,0x8e,0xaa,0xa5,0x32,0xdb,0x6a,0x56,0xd7,
+ 0xbf,0xe9,0x05,0x28,0x2a,0x0e,0x20,0xad,0x5a,0x61,0xa8,0xf0,0xf7,0x05,0xf7,0xd9,
+ 0x82,0xfc,0xb2,0xec,0x5b,0x99,0x15,0x81,0x96,0x98,0x0e,0x78,0xd2,0xa4,0x49,0x51,
+ 0x6a,0x9a,0x44,0xd7,0x67,0x49,0xbb,0xa9,0xa5,0xd2,0x56,0xde,0x79,0xbf,0x21,0xeb,
+ 0x4f,0x4b,0x4b,0xaa,0x26,0xed,0x88,0xfe,0xd3,0x7f,0xfa,0x4f,0xff,0x63,0xa6,0x4e,
+ 0x9d,0xaa,0x5e,0x79,0xe5,0x15,0xb5,0x60,0xc1,0x82,0x8e,0xdf,0x49,0x3c,0x50,0xe8,
+ 0x10,0x6b,0x23,0x14,0x00,0x97,0xa5,0x6f,0xa6,0xf0,0xf9,0xdc,0xfb,0xa6,0x35,0x1f,
+ 0x5a,0xfb,0x3f,0xc4,0x53,0x54,0xe6,0x82,0x40,0x2d,0xa1,0x00,0xc8,0x81,0x7d,0xea,
+ 0xa9,0xa7,0xd4,0xa6,0x9b,0x6e,0xaa,0xb6,0xdc,0x72,0xcb,0xb5,0xaa,0x03,0x16,0x55,
+ 0x59,0x2b,0xab,0x46,0x5f,0x8d,0x8b,0xd0,0x67,0x81,0xd4,0xba,0x3c,0xfd,0xa7,0xff,
+ 0xf4,0xbf,0xbd,0xfb,0x2f,0x79,0xfd,0xd3,0xa6,0x4d,0x8b,0xac,0xfe,0xd8,0xe2,0x8f,
+ 0xbf,0x17,0xa3,0x4a,0xac,0xff,0x5a,0x69,0x44,0x1c,0x80,0x4b,0xd0,0xfb,0x52,0xf8,
+ 0xcc,0xf7,0x69,0x6e,0x7e,0xf3,0x5c,0xa7,0x4d,0x2d,0x4c,0x16,0x40,0x91,0x9d,0xd0,
+ 0x75,0xe9,0xe5,0x00,0x4f,0x9e,0x3c,0x39,0x1a,0x0e,0x18,0x31,0x62,0x44,0x94,0xba,
+ 0x26,0x91,0xec,0x12,0x64,0x27,0xdf,0x9b,0x13,0x06,0xf9,0x5c,0x78,0xb5,0xce,0xee,
+ 0x95,0xd5,0x65,0x97,0xb5,0xf2,0x57,0xc8,0xe4,0x23,0xb6,0x0b,0x92,0xfe,0xd3,0x7f,
+ 0xfa,0xdf,0x7e,0xfd,0x97,0x94,0x69,0x19,0x2e,0x95,0xa0,0x69,0xc9,0x3a,0x92,0xc8,
+ 0xfe,0x59,0xb3,0x66,0x59,0xa7,0xf2,0x15,0xc4,0x88,0x92,0xe7,0x67,0x1e,0x56,0x6b,
+ 0x91,0x0a,0x80,0xcf,0x0a,0x4f,0x73,0xdb,0xbb,0x84,0xbc,0x39,0x4f,0x40,0x88,0xc7,
+ 0xc1,0xa5,0x6c,0x51,0x09,0xb0,0x0e,0x24,0x2b,0xd3,0xc9,0x85,0x2e,0xae,0x2c,0x69,
+ 0x69,0x48,0x90,0x4b,0xb3,0xcd,0xdd,0x0c,0x00,0x50,0x34,0xe2,0xf6,0x8f,0x4b,0x7d,
+ 0xe7,0x25,0xa4,0xeb,0xed,0x02,0x0f,0x89,0xd6,0xcf,0xe2,0xe1,0xf1,0x79,0x03,0x5c,
+ 0x55,0x04,0x6d,0xde,0x88,0x32,0xd1,0xb9,0x15,0x2e,0x58,0xb1,0xf0,0xa5,0x55,0xeb,
+ 0xbe,0x03,0x00,0x68,0x77,0xe4,0x99,0x28,0x56,0xbf,0xb8,0xfd,0xf3,0x7e,0x3e,0x16,
+ 0xe5,0x05,0xb0,0x59,0xfa,0x36,0x41,0x1c,0x2a,0x7c,0xd3,0xf2,0xf7,0x4d,0x77,0xbe,
+ 0xcb,0xd3,0xd0,0x4c,0x33,0x02,0x76,0x6d,0x95,0x8b,0x57,0x2e,0xdc,0xb9,0x73,0xe7,
+ 0x86,0x6b,0x3e,0x6b,0xdc,0x65,0x65,0x4f,0xcf,0xa9,0x87,0xa6,0x4c,0xff,0xe9,0x3f,
+ 0xfd,0x6f,0xef,0xfe,0x4b,0x90,0x9e,0x3c,0x43,0xb3,0x1a,0x52,0x65,0xea,0x47,0x11,
+ 0xc7,0x25,0x2d,0xab,0xc0,0x17,0x27,0xd0,0x0c,0x1e,0xe6,0x96,0x51,0x00,0xc4,0x6d,
+ 0xb5,0x64,0xc9,0x92,0x68,0x9c,0x2b,0xcb,0x0d,0xdc,0x8c,0x25,0x41,0xf3,0xd6,0xa0,
+ 0xe9,0x3f,0xfd,0xa7,0xff,0xed,0xd9,0x7f,0x31,0x84,0x24,0xca,0x5f,0x4a,0xfc,0x36,
+ 0x63,0xbf,0x43,0x85,0xb1,0xeb,0x77,0xe6,0x6f,0x5c,0x53,0x08,0xdb,0xbc,0x0e,0x21,
+ 0xdb,0x27,0x06,0xa0,0x8e,0x48,0xe9,0x5a,0xf1,0x02,0x48,0x59,0xdd,0x90,0x1b,0x5f,
+ 0x2e,0xfe,0x7a,0x45,0xa8,0x02,0x00,0x94,0x49,0xf1,0x11,0xa3,0x49,0x04,0x7f,0x35,
+ 0x05,0x7e,0x5a,0xc9,0xfa,0xb7,0xd5,0x43,0xb0,0x05,0x17,0xc6,0xcb,0xa6,0x15,0x0f,
+ 0xaa,0x46,0x19,0x41,0x01,0xc8,0x51,0x9b,0x95,0xc9,0x6b,0x16,0x2d,0x5a,0x14,0x45,
+ 0xbb,0xfa,0x0e,0x7e,0x72,0x18,0x00,0x00,0xa0,0xd5,0x91,0x82,0x3e,0x12,0x34,0x2d,
+ 0xad,0x9e,0x16,0x7f,0xa3,0x95,0x0c,0x5b,0x8d,0x7f,0x9b,0x05,0x6f,0xab,0xb5,0x60,
+ 0x93,0x0f,0x69,0xf3,0x0d,0x84,0x28,0x19,0x28,0x00,0x05,0x6a,0xb6,0x12,0xc4,0x22,
+ 0x6e,0x2d,0x19,0x0e,0x90,0x26,0x11,0xff,0x92,0x1d,0x60,0x0a,0xfb,0xd8,0x0b,0x10,
+ 0xcf,0x2a,0x08,0x00,0xd0,0x2a,0xcf,0x41,0x79,0xb6,0xc9,0xd8,0xbe,0x34,0x19,0xdb,
+ 0x17,0xe1,0xdf,0x08,0x41,0xec,0xaa,0xbd,0x5f,0x94,0x27,0xc0,0x36,0x8d,0xaf,0x19,
+ 0x98,0x67,0xab,0x20,0x68,0xc6,0x84,0xf9,0x5c,0xff,0x3e,0x65,0x20,0x29,0xf8,0xa9,
+ 0x04,0xd8,0x00,0x6f,0x80,0xb8,0xb8,0x42,0xa6,0xb1,0x15,0x25,0xa1,0x0c,0x4a,0x00,
+ 0x9e,0x88,0xda,0x1e,0x32,0x00,0x50,0x3e,0xea,0x35,0x1d,0xb0,0xab,0x2c,0x70,0xd6,
+ 0x62,0x40,0xa1,0xf3,0x04,0x84,0x56,0x5b,0x34,0x15,0x13,0x14,0x80,0x92,0x21,0x45,
+ 0x2f,0x44,0x09,0x68,0x74,0x3c,0x00,0x42,0x0c,0x00,0x5a,0x8d,0x7a,0x64,0x16,0x98,
+ 0xc5,0x79,0x6c,0xd6,0xbe,0xcf,0x6a,0xcf,0x3a,0x76,0x5f,0xcd,0x24,0x44,0xa5,0x33,
+ 0x94,0xb9,0x3c,0xff,0x7f,0xd9,0x4b,0x04,0x30,0x00,0x40,0xbe,0xd6,0x7f,0xd1,0xc3,
+ 0x0e,0x3e,0xe1,0x9b,0x56,0xd7,0x3f,0x8b,0xd7,0xd5,0x54,0x10,0x6c,0x15,0x03,0x43,
+ 0x26,0x15,0x42,0x01,0x40,0x09,0x00,0x00,0x68,0x79,0x6a,0x99,0x45,0xb0,0x16,0x45,
+ 0xc0,0x25,0x90,0x6d,0xe3,0xfa,0x59,0x64,0x84,0xcd,0x9d,0xef,0x2a,0x0b,0x6c,0x2b,
+ 0x16,0x84,0x02,0x50,0x62,0x44,0x53,0x95,0xb4,0x98,0x7a,0x8d,0x59,0x01,0x00,0xb4,
+ 0x2a,0x32,0xb4,0x5a,0x0f,0xeb,0xdf,0xfc,0x3b,0x4b,0x66,0x57,0xe8,0x30,0x40,0xda,
+ 0xf8,0xbf,0xcd,0x33,0xd0,0x2c,0x85,0x81,0x50,0x00,0x2c,0x5a,0x9e,0x5c,0xb8,0xf5,
+ 0xd4,0x5c,0x01,0x00,0x5a,0x4d,0xf8,0xd7,0xab,0xaa,0xa0,0xcd,0xc2,0x4e,0xab,0xcb,
+ 0xef,0x5b,0x57,0x9a,0x65,0x6f,0xf3,0x2a,0xd8,0x26,0x9e,0x72,0x15,0x19,0x42,0x01,
+ 0x68,0x12,0x25,0x40,0x14,0x00,0xbc,0x01,0x00,0x00,0xd9,0x9e,0x9d,0x32,0x94,0x5a,
+ 0x6f,0xe1,0x9f,0x66,0xb1,0xbb,0x04,0x6f,0xda,0xef,0x92,0x56,0x7c,0x5a,0x6d,0x00,
+ 0xdb,0xf6,0x6d,0xe9,0xe6,0x65,0xf5,0x00,0x90,0x05,0x90,0xa6,0x1d,0x69,0xf7,0x95,
+ 0x5c,0xcc,0x92,0x1d,0xb0,0x62,0xc5,0x0a,0xea,0x05,0x00,0x00,0xb8,0x84,0xc9,0x9a,
+ 0x5a,0x03,0x8d,0x98,0xf5,0xcf,0x97,0x8b,0xef,0xb3,0xf6,0x6d,0xcb,0xb9,0xac,0xfc,
+ 0xb4,0x14,0x42,0xdb,0xbe,0x50,0x0a,0xb8,0x45,0x14,0x01,0x39,0x91,0xa2,0x04,0x88,
+ 0x42,0x20,0x8d,0x2a,0x82,0x00,0xd0,0xce,0xcf,0xc5,0x78,0x22,0x21,0x69,0x8d,0x74,
+ 0x71,0xbb,0xc6,0xdc,0x5d,0xe5,0x7c,0x6d,0x41,0x82,0xae,0xcf,0x42,0xc6,0xf4,0x5d,
+ 0x5e,0x84,0xb2,0x07,0x95,0xa3,0x00,0x64,0x40,0x4e,0x66,0xb3,0xce,0x96,0x05,0x00,
+ 0xd0,0x6e,0xcf,0x6b,0xd3,0xd2,0xaf,0x36,0x38,0x30,0x4d,0x11,0xf0,0x6d,0xbf,0xd4,
+ 0x4a,0x1c,0x97,0x09,0x00,0x00,0x34,0x2b,0xbe,0x68,0x7d,0xd3,0x22,0xf7,0x59,0xfa,
+ 0x66,0x2a,0x9f,0xb9,0xde,0x34,0xc1,0xee,0xdb,0x3e,0x1e,0x00,0x00,0x00,0x80,0x9c,
+ 0x2d,0x7d,0x9b,0x20,0x0e,0x89,0xea,0x77,0x09,0xe7,0xac,0x31,0x05,0xa1,0xdb,0xc7,
+ 0x03,0x00,0x00,0x00,0x90,0x93,0xf5,0x9f,0x56,0x74,0x27,0x99,0x9b,0x6f,0x2b,0x0c,
+ 0x14,0xa2,0x0c,0xa4,0x6d,0x37,0xf9,0x99,0x6b,0xd8,0xa1,0xac,0xf1,0x62,0x28,0x00,
+ 0x00,0x00,0xd0,0xb4,0xd6,0xbf,0xe9,0xda,0x37,0xdd,0xfa,0xb6,0xea,0x80,0xd5,0x5a,
+ 0xff,0xae,0xed,0xdb,0x84,0xbe,0x6b,0xfb,0x28,0x00,0x00,0x00,0x00,0x39,0x78,0x00,
+ 0xd2,0xea,0xfb,0x57,0x33,0x8e,0x6f,0xfb,0xde,0x5c,0x87,0x2d,0x8e,0x20,0xcb,0xf6,
+ 0x51,0x00,0x00,0x00,0x00,0x72,0xf2,0x04,0x24,0x05,0x72,0xfc,0xde,0x25,0xf4,0x43,
+ 0xac,0x7e,0xb3,0x18,0x90,0x29,0xd0,0x6b,0xd9,0x3e,0x0a,0x00,0x00,0x00,0x40,0x0e,
+ 0x5e,0x80,0x90,0x29,0x78,0x7d,0xae,0x7f,0xf3,0x37,0xf1,0xb0,0x82,0x2d,0x93,0xc0,
+ 0x8c,0x27,0xa8,0x66,0xfb,0x28,0x00,0x00,0x00,0x00,0x35,0x5a,0xfe,0xa6,0x80,0x0d,
+ 0x11,0xb6,0xb6,0x40,0x3d,0xdb,0xfb,0xa4,0x22,0x10,0x2a,0xe0,0x6b,0x99,0x75,0x10,
+ 0x05,0x00,0x00,0x00,0x20,0xc0,0xfa,0xaf,0x66,0xd9,0x34,0x21,0x6f,0xa6,0xee,0xa5,
+ 0xd5,0xf5,0x0f,0x4d,0xf7,0x23,0x0b,0x00,0x00,0x00,0xa0,0x81,0xde,0x82,0xa4,0xc0,
+ 0xb6,0x05,0xfa,0x99,0x63,0xfd,0xb6,0xb4,0x41,0x9b,0x65,0x1f,0xe2,0x7d,0x20,0x06,
+ 0x00,0x00,0x00,0xa0,0x20,0x0f,0x80,0xaf,0x3e,0xbf,0xf9,0xb7,0x2b,0xf0,0xaf,0xda,
+ 0x92,0xc1,0xcd,0x32,0x09,0x10,0x0a,0x00,0x00,0x00,0x34,0xbd,0x55,0x9f,0x14,0xb6,
+ 0x21,0x95,0xff,0x5c,0xb3,0xfa,0xb9,0xdc,0xf8,0xd5,0xd6,0xff,0x2f,0xf3,0x34,0xc0,
+ 0x28,0x00,0x00,0x00,0xd0,0x12,0x5e,0x00,0xdb,0xd8,0xbc,0x6b,0x7a,0x5e,0xd7,0xd4,
+ 0xbd,0x2e,0xeb,0xdd,0xe5,0xba,0x4f,0xfb,0x5d,0xda,0xf6,0xcb,0x04,0x73,0x01,0x00,
+ 0x00,0x40,0x4b,0x28,0x02,0xa6,0x35,0x6e,0xb3,0xf2,0x6d,0x82,0x39,0x4d,0x48,0x87,
+ 0x8e,0xe9,0xa7,0x05,0x0b,0x96,0x55,0x09,0xc0,0x03,0x00,0x00,0x00,0x4d,0x6d,0xfd,
+ 0xdb,0x22,0xf9,0x6d,0x9e,0x01,0x97,0xc0,0x4e,0xfb,0xde,0x37,0xce,0x6f,0xdb,0xbe,
+ 0xcb,0x33,0x81,0x02,0x00,0x00,0x00,0x50,0xa0,0x17,0x20,0x24,0x5a,0xdf,0x87,0x6b,
+ 0x62,0x9f,0x6a,0xbd,0x11,0x28,0x00,0x00,0x00,0x00,0x05,0x79,0x01,0x5c,0x02,0x3b,
+ 0x4d,0x70,0xfb,0xb2,0x05,0x5c,0xf5,0x02,0x4c,0xeb,0xdf,0xac,0x08,0x58,0xf6,0x79,
+ 0x00,0x50,0x00,0x00,0x00,0xa0,0x69,0xc9,0xc3,0xc5,0x9e,0x56,0xb8,0xc7,0x9c,0x65,
+ 0x30,0xa9,0x08,0xa4,0x59,0xfc,0x65,0x16,0xfa,0x28,0x00,0x00,0x00,0xd0,0x32,0xd6,
+ 0x7f,0x88,0xe0,0x75,0x45,0xeb,0x9b,0x02,0xdf,0x96,0x36,0x98,0x6c,0xbe,0xb2,0xc0,
+ 0xcd,0x20,0xf8,0x51,0x00,0x00,0x00,0xa0,0x25,0x94,0x80,0x90,0xcf,0x6c,0x96,0xbe,
+ 0x19,0xc0,0x97,0xfc,0xcc,0x14,0xf0,0x2e,0x6f,0x43,0xd9,0x67,0xfc,0x4b,0x83,0x34,
+ 0x40,0x00,0x00,0x68,0x29,0x5c,0x65,0x7e,0xb3,0xa4,0x00,0xba,0xea,0xfe,0xa7,0xfd,
+ 0x26,0xcd,0xfb,0x40,0x29,0x60,0x00,0x00,0x80,0x82,0x3c,0x01,0xae,0x09,0x7f,0x6c,
+ 0x11,0xfd,0xbe,0xf7,0x69,0x25,0x81,0x43,0x84,0xbf,0x6d,0xfb,0x78,0x00,0x00,0x00,
+ 0x00,0x72,0x14,0xfc,0xb6,0xc9,0x7d,0x5c,0xc5,0x78,0x7c,0x9e,0x00,0x73,0x19,0xdf,
+ 0x76,0x5d,0x5e,0x87,0xb4,0x32,0xc5,0x78,0x00,0x00,0x00,0x00,0x6a,0x24,0x29,0xb8,
+ 0x4d,0xcb,0xdb,0x57,0xa0,0xc7,0x65,0xc1,0x87,0x04,0xf2,0xb9,0xea,0x03,0xf8,0xb6,
+ 0x8f,0x02,0x00,0x00,0x00,0x90,0xb3,0x07,0xc0,0xac,0xbe,0x67,0x9b,0x07,0x20,0x29,
+ 0xb0,0xb3,0x08,0x65,0x9f,0x90,0x77,0x79,0x05,0x98,0x0c,0x08,0x00,0x00,0xa0,0x0e,
+ 0x8a,0x40,0x9a,0xa0,0xaf,0xa5,0x42,0x9f,0xab,0xd8,0x90,0x4d,0xf8,0xdb,0xbc,0x12,
+ 0x0c,0x01,0x00,0x00,0x00,0xe4,0x28,0xf4,0xcd,0xbf,0xcd,0xe0,0xbd,0x34,0xc1,0xbb,
+ 0x7a,0xf5,0xea,0x54,0x2b,0x3f,0x6d,0x3b,0xa6,0x90,0xf7,0x6d,0x9f,0x21,0x00,0x00,
+ 0x00,0x80,0x1c,0xb1,0x15,0xef,0x09,0xad,0xdf,0xef,0x0a,0xdc,0x73,0x59,0xf6,0xa6,
+ 0xf0,0xcf,0xb2,0x7d,0x3c,0x00,0x00,0x00,0x00,0x39,0x0b,0x7f,0x9f,0xc5,0x9e,0xe6,
+ 0x3d,0x70,0x55,0x08,0x74,0xd5,0x09,0x70,0x65,0x11,0xb8,0xb6,0x8f,0x07,0x00,0x00,
+ 0x00,0x20,0x67,0xf2,0x9c,0x03,0xc0,0x16,0x1f,0xe0,0x9a,0xf4,0xc7,0xa6,0x08,0x84,
+ 0xae,0x17,0x05,0x00,0x00,0x00,0xa0,0x0e,0xca,0x81,0xab,0x74,0xaf,0x4d,0xb8,0x9b,
+ 0x82,0x3e,0xcd,0x7a,0xf7,0xc5,0x0b,0x94,0x7d,0x26,0x40,0x14,0x00,0x00,0x00,0x68,
+ 0x49,0x6c,0xd5,0xff,0x42,0x83,0x03,0x5d,0xd9,0x02,0x59,0x84,0xb9,0x6d,0xfb,0x65,
+ 0x83,0x4a,0x80,0x00,0x00,0xd0,0xd4,0x96,0x7e,0x5a,0xc0,0x5e,0x9a,0x20,0xb7,0xb9,
+ 0xf6,0x93,0xcb,0x66,0xb5,0xe2,0x5d,0xdb,0x2f,0x6b,0x3d,0x00,0x14,0x00,0x00,0x00,
+ 0x68,0x7a,0x4b,0xdf,0x66,0xc1,0xbb,0xa6,0xf7,0x35,0x05,0xb2,0x2d,0xc8,0xaf,0x16,
+ 0x81,0x1d,0x12,0x1b,0x50,0x06,0x18,0x02,0x00,0x00,0x80,0xa6,0xb5,0xfe,0xe3,0xd7,
+ 0xb4,0xa2,0x3b,0xc9,0xfc,0x7c,0x5f,0x59,0xe0,0x6a,0x32,0x08,0x6c,0xf1,0x04,0xb6,
+ 0x6d,0xa3,0x00,0x00,0x00,0x00,0xe4,0x64,0xfd,0x27,0x03,0xf8,0xd2,0xea,0xfe,0xbb,
+ 0xc6,0xf1,0xb3,0x4c,0xeb,0xeb,0xdb,0xbe,0xf9,0x99,0x6d,0xfb,0x65,0x82,0x21,0x00,
+ 0x00,0x00,0x68,0x5a,0x0f,0x80,0x2f,0x35,0xcf,0x36,0x8e,0xef,0x1b,0x93,0xf7,0x8d,
+ 0xe3,0xbb,0xe6,0x1b,0x48,0xab,0x19,0x80,0x07,0x00,0x00,0x00,0xa0,0x00,0x4f,0x80,
+ 0x69,0xf1,0xa7,0xb9,0xdd,0x5d,0x56,0xbf,0xad,0xac,0xaf,0x69,0xdd,0x57,0xbb,0x7d,
+ 0x3c,0x00,0x00,0x00,0x00,0x39,0x7b,0x01,0x92,0xd6,0x76,0xb5,0x11,0xfb,0xae,0xb2,
+ 0xc0,0xbe,0x8c,0x01,0xdb,0xf6,0x6d,0x1e,0x06,0x3c,0x00,0x00,0x00,0x00,0x39,0x5b,
+ 0xfe,0x69,0x56,0x7d,0xe8,0x6f,0x5d,0x01,0x85,0x49,0xe1,0x6e,0x2a,0x0e,0xae,0xed,
+ 0x97,0xb9,0xf8,0x0f,0x0a,0x00,0x00,0x00,0xb4,0x8c,0xf5,0x9f,0x26,0xe4,0x5d,0xb5,
+ 0xfa,0x4d,0x81,0xee,0x9b,0xd4,0xc7,0xe6,0x15,0xc8,0x32,0xd1,0x0f,0x1e,0x00,0x00,
+ 0x00,0x80,0x06,0x78,0x09,0x5c,0xb5,0xfb,0x93,0x02,0xda,0x5c,0x36,0xb4,0xac,0x6f,
+ 0x88,0x70,0xa7,0x0e,0x00,0x00,0x00,0x40,0x41,0x1e,0x00,0x5f,0x7d,0x7e,0x53,0xd8,
+ 0xdb,0x3e,0xcf,0x12,0xbc,0x57,0xed,0xf6,0x51,0x00,0x00,0x00,0x00,0x72,0xb0,0xee,
+ 0xd3,0x2a,0xef,0xf9,0x2a,0x01,0xfa,0x5c,0xff,0xa1,0x71,0x04,0xa1,0xdb,0x47,0x01,
+ 0x00,0x00,0x00,0xc8,0xc9,0x0b,0x60,0x1b,0x9b,0x0f,0xc9,0xcd,0x4f,0x8b,0x11,0xf0,
+ 0x79,0x00,0xd2,0x7e,0x97,0xb6,0xfd,0x32,0x41,0x1a,0x20,0x00,0x00,0xb4,0x84,0x22,
+ 0x60,0x5a,0xe3,0x69,0x82,0x3e,0xad,0x80,0x4f,0xda,0x7a,0x5d,0x8a,0x81,0x4d,0x69,
+ 0x28,0xbb,0x12,0x80,0x07,0x00,0x00,0x00,0x9a,0xda,0xfa,0xb7,0x45,0xf2,0xdb,0x3c,
+ 0x03,0x59,0xd2,0xf6,0x5c,0x81,0x7f,0xe6,0xef,0x6c,0xdb,0x77,0x79,0x26,0x50,0x00,
+ 0x00,0x00,0x00,0x0a,0xf4,0x02,0xf8,0xa6,0x01,0x0e,0xc1,0x97,0xeb,0x5f,0xcd,0xf6,
+ 0xcb,0x06,0x43,0x00,0x00,0x00,0xd0,0x12,0x5e,0x80,0x50,0x81,0x6c,0xfb,0xbd,0xf9,
+ 0x3e,0x44,0x91,0xb0,0x55,0x07,0xb4,0x7d,0x46,0x0c,0x00,0x00,0x00,0x40,0x8e,0xd8,
+ 0xca,0xff,0x66,0x1d,0x6f,0x77,0xd5,0x04,0x48,0xfb,0xce,0x55,0x0e,0xd8,0xb6,0x8e,
+ 0x32,0xc3,0x10,0x00,0x00,0x00,0x34,0xb5,0xf5,0x1f,0x22,0x78,0x5d,0xd1,0xfa,0xf1,
+ 0xab,0x2d,0x76,0x20,0xf9,0x9d,0xad,0xce,0x7f,0xb5,0xdb,0x47,0x01,0x00,0x00,0x00,
+ 0xc8,0x41,0x09,0x08,0xf9,0xcc,0x66,0xcd,0x9b,0x01,0x7c,0xa6,0x07,0xc1,0x56,0xf7,
+ 0x3f,0x2d,0x28,0x30,0x6d,0xac,0x9f,0xd9,0x00,0x01,0x00,0x00,0x0a,0xc6,0x66,0x95,
+ 0xbb,0xd2,0xfe,0x5c,0x43,0x06,0xae,0xba,0xff,0x59,0x95,0x11,0x97,0xa7,0x00,0x05,
+ 0x20,0xc1,0xca,0x95,0x2b,0xb9,0x6a,0x01,0x00,0x20,0x98,0xb9,0x73,0xe7,0x46,0xaf,
+ 0x83,0x06,0x0d,0x4a,0x2d,0xfc,0x63,0x5a,0xfc,0x21,0xef,0xb3,0xba,0xec,0x5d,0x01,
+ 0x84,0x49,0xef,0x02,0x0a,0x00,0x00,0x00,0x40,0x81,0x56,0x7f,0x5a,0xbe,0xbf,0x2b,
+ 0x80,0x2f,0x29,0xf8,0x43,0x02,0x09,0x6d,0x35,0x00,0xd2,0x3c,0x08,0x4c,0x06,0x04,
+ 0x00,0x00,0x90,0x33,0xe6,0xcc,0x7d,0x69,0x55,0xff,0x6c,0xe3,0xfa,0x36,0x45,0x21,
+ 0x54,0xe1,0xb0,0x29,0x14,0xae,0xa9,0x86,0x51,0x00,0x00,0x00,0x00,0x72,0xb6,0xfe,
+ 0x6d,0xd5,0xff,0x7c,0x56,0x79,0x16,0xa1,0xec,0x13,0xf2,0xb6,0x6d,0x96,0x79,0x1e,
+ 0x00,0xa1,0x34,0x43,0x00,0x5d,0xbb,0x32,0x1a,0x01,0x00,0x00,0xe1,0xf4,0xeb,0xd7,
+ 0x6f,0x1d,0x41,0x9c,0x7c,0xb5,0xa5,0xfb,0xd5,0xa2,0x64,0xa4,0x59,0xf4,0xb6,0xed,
+ 0x9b,0xdf,0xe1,0x01,0x00,0x00,0x00,0xc8,0x01,0x57,0x4a,0x5e,0x68,0x6a,0x9e,0xaf,
+ 0xce,0x7f,0xda,0x72,0x2e,0x25,0xc0,0xb5,0x7d,0x86,0x00,0x00,0x00,0x00,0x72,0xc4,
+ 0x56,0xbc,0x27,0xb4,0x7e,0x7f,0x5a,0xa0,0x9e,0x19,0x14,0xe8,0x12,0xfe,0xa1,0xdb,
+ 0x27,0x0d,0x10,0x00,0x00,0xa0,0x00,0x2f,0x40,0x48,0x10,0x9f,0x4f,0x78,0xdb,0xbe,
+ 0xb7,0x59,0xf4,0x69,0xd3,0x0c,0xbb,0xb6,0x5f,0x46,0x0f,0x00,0x0a,0x00,0x00,0x00,
+ 0xb4,0x8d,0xb7,0xc0,0x65,0x8d,0xdb,0x26,0xfe,0x09,0x99,0xf4,0xa7,0x99,0x61,0x08,
+ 0x00,0x00,0x00,0x9a,0xda,0xfa,0xf7,0x79,0x06,0x5c,0xf3,0x00,0xd8,0x72,0xf9,0xf3,
+ 0x9a,0xec,0xa7,0xec,0x33,0x01,0xa2,0x00,0x00,0x00,0x40,0xd3,0x5b,0xf4,0x3e,0x6b,
+ 0xdf,0xe5,0xca,0xf7,0x09,0x6f,0xdf,0x3c,0x00,0xd5,0x7a,0x1b,0xca,0x02,0x43,0x00,
+ 0x00,0x00,0xd0,0xd4,0x5e,0x00,0x57,0x1e,0xbe,0xcd,0xad,0x6f,0x0a,0xf8,0xb4,0xca,
+ 0x7f,0x69,0x56,0xbc,0x6b,0x26,0xc0,0xd0,0x00,0x44,0x14,0x00,0x00,0x00,0x80,0x9c,
+ 0xbd,0x00,0x69,0x11,0xfa,0x79,0x05,0xe8,0x85,0x7a,0x10,0xca,0x5a,0x03,0x40,0x60,
+ 0x08,0x00,0x00,0x00,0x9a,0xd6,0xfa,0x8f,0x5f,0x6d,0x95,0xf9,0x92,0xcb,0xa5,0xa5,
+ 0xf4,0xd5,0xb2,0xdd,0xe4,0xfa,0x5d,0x02,0xbf,0x9a,0xc9,0x85,0x50,0x00,0x00,0x00,
+ 0x00,0x52,0xac,0x70,0x73,0xd6,0x3d,0x5f,0xdd,0xff,0xb4,0xe2,0x3f,0x59,0x3d,0x02,
+ 0xb6,0xc9,0x80,0x42,0xe6,0x1d,0x28,0x0b,0x0c,0x01,0x00,0x00,0x40,0xd3,0x7a,0x00,
+ 0x5c,0xd3,0xf7,0xd6,0x52,0xf7,0xdf,0x55,0xc8,0x27,0xeb,0xfb,0x6a,0xb7,0x8f,0x07,
+ 0x00,0x00,0x00,0x20,0xa3,0xc0,0x4e,0x0a,0xee,0xac,0x93,0xfd,0xd8,0x26,0xfc,0x31,
+ 0xad,0x7b,0xdb,0x36,0x6d,0x41,0x88,0x65,0x75,0xfb,0xe3,0x01,0x00,0x00,0x80,0x96,
+ 0xf1,0x02,0x98,0xd6,0x77,0x16,0xef,0x81,0x4b,0x89,0x08,0xcd,0x18,0x30,0xbf,0x6f,
+ 0xa6,0xe2,0x40,0x78,0x00,0x00,0x00,0xa0,0x65,0x14,0x01,0xdf,0x67,0x36,0x81,0x6f,
+ 0x06,0x11,0x9a,0x6e,0xfb,0x90,0x71,0xfd,0x66,0xac,0x0a,0x88,0x02,0x00,0x00,0x00,
+ 0x2d,0x49,0x5a,0xad,0x7e,0x53,0xa0,0xbb,0xe6,0x05,0x48,0xf3,0x0a,0x64,0xf5,0x38,
+ 0xa0,0x00,0x00,0x00,0x00,0xd4,0x51,0x09,0x30,0x95,0x01,0x57,0x9a,0x9e,0x2b,0x63,
+ 0xa0,0xd6,0x40,0xbe,0xb2,0xd6,0x02,0x40,0x01,0x00,0x00,0x80,0xa6,0xc4,0x96,0xd2,
+ 0x17,0x32,0x3b,0x5f,0xda,0xac,0x7f,0x59,0xc6,0xf1,0xd3,0x52,0x0a,0xcd,0x7d,0x59,
+ 0xbd,0x7a,0x35,0x0a,0x00,0x00,0x00,0x40,0x9e,0xd6,0xbd,0x59,0x0b,0x20,0x69,0xf1,
+ 0xbb,0x8a,0xff,0xa4,0x55,0xeb,0x0b,0xb5,0xd6,0x7d,0xb3,0x0a,0x96,0x55,0xf0,0xc7,
+ 0x90,0x05,0x00,0x00,0x00,0x4d,0xed,0x05,0x30,0xc7,0xed,0x5d,0xb9,0xf8,0x49,0x81,
+ 0x6f,0xbe,0xf7,0xcd,0xfe,0xe7,0xda,0xae,0xf9,0x3b,0xf9,0x4c,0x84,0x7e,0x72,0xbf,
+ 0xe4,0x6f,0x0a,0x01,0x01,0x00,0x00,0x14,0xa4,0x08,0x98,0xd6,0x79,0x9a,0xa0,0x77,
+ 0x7d,0x1f,0xba,0x1d,0xd3,0xc3,0x60,0x1b,0x3a,0xc8,0xaa,0x54,0xd4,0x1b,0x86,0x00,
+ 0x00,0x00,0xa0,0xa9,0xad,0x7f,0x57,0xae,0xbe,0x6d,0x88,0x20,0x54,0x38,0x9b,0x69,
+ 0x81,0xa6,0x02,0x21,0x56,0x7d,0xec,0xde,0x4f,0xfe,0x3e,0xb6,0xfe,0xe3,0xd7,0xac,
+ 0x71,0x05,0x78,0x00,0x00,0x00,0x00,0x32,0xe0,0x72,0xe7,0xa7,0x79,0x09,0x42,0xbd,
+ 0x09,0xa6,0x70,0x37,0x97,0x35,0x15,0x11,0x9b,0x72,0x81,0x02,0x00,0x00,0x00,0x50,
+ 0xa0,0x17,0x20,0x54,0xe0,0x9b,0x9e,0x02,0x9b,0x17,0x21,0x19,0xc0,0xe7,0x2b,0xf3,
+ 0x6b,0xfb,0xcc,0xfc,0x3d,0x0a,0x00,0x00,0x00,0x40,0x8e,0x56,0x7f,0x35,0xc2,0xd5,
+ 0x36,0x1c,0x60,0x9b,0xde,0xd7,0xf6,0xb9,0x4b,0xc9,0x30,0xe3,0x01,0x5c,0xd3,0x03,
+ 0xa3,0x00,0x00,0x00,0x00,0xd4,0x68,0xfd,0x67,0xf5,0x10,0xd8,0xca,0xfa,0x26,0x05,
+ 0xb6,0x39,0xae,0x9f,0x65,0xfa,0x60,0xd7,0x70,0x40,0x59,0x63,0x00,0x08,0x02,0x04,
+ 0x00,0x80,0x96,0x55,0x0c,0x4c,0x37,0xbf,0x29,0x8c,0x6d,0x6e,0xfa,0xb4,0x57,0x73,
+ 0x1d,0xb6,0xb8,0x00,0x5b,0x70,0x20,0x1e,0x00,0x00,0x00,0x80,0x3a,0x92,0x14,0xc6,
+ 0xa6,0x85,0x1e,0xe7,0xe7,0xbb,0x2c,0x74,0xd7,0x04,0x41,0xb6,0xdf,0xd8,0x0a,0xfe,
+ 0x94,0x3d,0x0d,0x10,0x05,0x00,0x00,0x00,0x5a,0xc6,0xea,0x4f,0x13,0xe8,0x66,0x60,
+ 0x9f,0xcd,0xca,0x77,0x09,0x6f,0x5b,0x51,0xa1,0xd0,0x54,0x42,0x3c,0x00,0x00,0x00,
+ 0x00,0x05,0x08,0xfd,0x50,0x21,0xec,0x9b,0xdc,0xc7,0x55,0x4f,0x20,0x2d,0x66,0xc0,
+ 0x37,0xe7,0x00,0x0a,0x00,0x00,0x00,0x40,0x81,0x4a,0x80,0x2b,0x75,0xcf,0xb6,0x7c,
+ 0x68,0xce,0x7e,0xb2,0x84,0xaf,0x6b,0x38,0xc0,0xa5,0x00,0x54,0x5b,0x69,0x10,0x05,
+ 0x00,0x00,0x00,0x20,0x40,0xf8,0xbb,0xd2,0xf5,0xd2,0x84,0x72,0x9a,0x7b,0xdf,0x14,
+ 0xd6,0xc9,0x18,0x02,0xd7,0x30,0x40,0x9a,0x27,0x20,0xa9,0x4c,0xa0,0x00,0x00,0x00,
+ 0x00,0xe4,0x6c,0xfd,0x87,0x4c,0xff,0xeb,0xf2,0x0e,0xd8,0x4a,0xfd,0xfa,0xaa,0xf9,
+ 0xd9,0x3c,0x09,0xc9,0xbf,0xcb,0x5e,0x04,0x08,0x05,0x00,0x00,0x00,0x9a,0x16,0x9b,
+ 0x8b,0x3e,0x8b,0xd5,0x6f,0xce,0xd2,0x17,0x32,0x9e,0x9f,0xfc,0x9d,0x99,0x02,0x98,
+ 0x26,0xf4,0x19,0x02,0x00,0x00,0x00,0x28,0xc0,0x0b,0xe0,0x12,0xba,0x3e,0xd7,0xbc,
+ 0xed,0x33,0x9b,0x52,0xe1,0xf2,0x14,0x84,0x2a,0x22,0x9f,0xf9,0xcc,0x67,0x50,0x00,
+ 0x00,0x00,0x00,0x8a,0x52,0x00,0x92,0xae,0xfe,0x58,0x28,0x27,0xf3,0xfd,0x43,0x14,
+ 0x88,0xb4,0xd8,0x02,0x73,0xfd,0xbe,0xcc,0x02,0xe1,0xd8,0x63,0x8f,0x55,0xbb,0xec,
+ 0xb2,0x4b,0xe9,0x8e,0x1d,0x95,0x00,0x01,0x00,0xa0,0x69,0x85,0xbf,0x59,0x91,0xcf,
+ 0x35,0x69,0x8f,0x2f,0x8a,0xdf,0x35,0xe5,0x6f,0x48,0x6c,0x80,0x6b,0x5d,0xf2,0xfb,
+ 0xa3,0x8f,0x3e,0x5a,0x7d,0xf4,0xa3,0x1f,0x2d,0xe5,0x7c,0x00,0x78,0x00,0x00,0x00,
+ 0xa0,0x29,0xb1,0x59,0xf6,0xc9,0xf1,0x79,0xd3,0x82,0x77,0x59,0xec,0x49,0xa5,0xc1,
+ 0x5c,0xa7,0xf9,0x77,0x9a,0x17,0x21,0xb9,0x5d,0xf9,0xec,0xa8,0xa3,0x8e,0x52,0xdb,
+ 0x6c,0xb3,0x4d,0xc7,0x72,0xf2,0x79,0xdc,0x92,0xc4,0x7f,0xd7,0x5b,0x49,0x40,0x01,
+ 0x00,0x00,0x80,0x96,0xf0,0x02,0xb8,0x2c,0xf3,0xe4,0x72,0x69,0x69,0x83,0xbe,0x39,
+ 0x00,0x6c,0xdb,0x76,0xcd,0x35,0xb0,0xf7,0xde,0x7b,0xab,0x2d,0xb7,0xdc,0x32,0x55,
+ 0xe8,0xa7,0x29,0x03,0x28,0x00,0x00,0x00,0x00,0x29,0xc2,0xdf,0xf6,0x3e,0xe9,0x0d,
+ 0x30,0xbf,0xb3,0xcd,0xfe,0x67,0xce,0x0d,0x90,0xb6,0x7e,0x33,0x06,0x20,0x7e,0x9f,
+ 0xcc,0x00,0x18,0x31,0x62,0x84,0xda,0x75,0xd7,0x5d,0xd7,0x12,0xf2,0x66,0x33,0x49,
+ 0x7e,0x56,0x2f,0x25,0x00,0x05,0x00,0x00,0x00,0x5a,0x46,0x09,0x48,0x2b,0xd5,0x6b,
+ 0x0a,0xea,0x90,0x71,0x7d,0x53,0x20,0x27,0x87,0x18,0x5c,0xeb,0x91,0x71,0xff,0xce,
+ 0x9d,0x3b,0xa7,0x2a,0x00,0x3e,0x85,0xa0,0x1e,0x10,0x04,0x08,0x00,0x00,0x4d,0x89,
+ 0x6d,0xa6,0x3f,0xdb,0x67,0xf1,0xe7,0xb6,0x80,0x41,0x73,0x7a,0x5f,0xdb,0xdf,0xb2,
+ 0x7c,0xdc,0x92,0xdb,0x35,0xd7,0x33,0x7f,0xfe,0x7c,0x75,0xf2,0xc9,0x27,0xab,0xae,
+ 0x5d,0xbb,0x5a,0x85,0xbc,0x4d,0x29,0x68,0x24,0x0d,0x57,0x00,0xe4,0x40,0x01,0x00,
+ 0x00,0x54,0x23,0xfc,0xcd,0x62,0x3c,0xa6,0x62,0x60,0xbe,0xda,0x04,0xbd,0x2b,0x86,
+ 0xc0,0x35,0xee,0x6f,0xcb,0x3e,0x98,0x33,0x67,0x8e,0xfa,0xc2,0x17,0xbe,0xa0,0xfa,
+ 0xf4,0xe9,0xd3,0x21,0xec,0xcd,0xe6,0x52,0x02,0x1a,0xa5,0x10,0x34,0x5c,0x01,0xe8,
+ 0xdb,0xb7,0x2f,0x57,0x32,0x00,0x00,0x64,0x56,0x00,0x92,0x6e,0xf8,0xa4,0x35,0xee,
+ 0xb2,0xe4,0xd3,0xd2,0xfe,0xe2,0xdf,0xbb,0xbc,0x0a,0xa6,0x17,0x21,0xf9,0xfb,0xd9,
+ 0xb3,0x67,0x47,0x85,0x7e,0x86,0x0f,0x1f,0x1e,0x09,0xf8,0x2e,0x5d,0xba,0x74,0xbc,
+ 0xc6,0xcd,0x54,0x02,0x4c,0x45,0x20,0xa6,0x9e,0x19,0x01,0x0d,0x57,0x00,0x7a,0xf5,
+ 0xea,0xc5,0x95,0x0c,0x00,0x00,0x99,0x58,0xb5,0x6a,0x95,0xd5,0x92,0x77,0xb5,0xa4,
+ 0x05,0x6f,0x0a,0x79,0xdb,0xe7,0xb1,0x82,0xe1,0xab,0x06,0x28,0x96,0xbf,0x14,0xfa,
+ 0xd9,0x78,0xe3,0x8d,0xd7,0x11,0xfe,0x49,0xeb,0xdf,0x54,0x06,0x4c,0xe1,0xdf,0x96,
+ 0x1e,0x80,0x81,0x03,0x07,0x72,0x25,0x03,0x00,0x40,0x4d,0x0a,0x40,0x88,0x32,0x60,
+ 0x0a,0x78,0xf3,0xf7,0x69,0x7f,0xdb,0x94,0x85,0x79,0xf3,0xe6,0xa9,0xcf,0x7f,0xfe,
+ 0xf3,0x6a,0xec,0xd8,0xb1,0xeb,0x08,0x79,0x69,0x32,0xc4,0x2d,0xcd,0xf4,0x02,0x98,
+ 0xc3,0x02,0x8d,0x8a,0x07,0x68,0xb8,0x02,0xb0,0xe1,0x86,0x1b,0x72,0x25,0x03,0x00,
+ 0x40,0x26,0x42,0x2c,0xfe,0xb4,0x21,0x80,0xf8,0x33,0xc1,0x15,0x14,0x98,0xf6,0xfb,
+ 0xa5,0x4b,0x97,0xaa,0x2f,0x7d,0xe9,0x4b,0x6b,0xb9,0xfd,0x5d,0x82,0x3f,0xf9,0xde,
+ 0x36,0x1c,0x60,0xba,0xfd,0xdb,0x26,0x0d,0x70,0x83,0x0d,0x36,0xe0,0x4a,0x06,0x00,
+ 0x80,0x4c,0xd6,0x7f,0xf7,0xee,0xdd,0xd7,0x49,0xf7,0x33,0x0b,0xf3,0x98,0x42,0xde,
+ 0x95,0xef,0x9f,0x5c,0xce,0xf5,0x3e,0xb9,0x1e,0x09,0xf4,0x93,0x80,0xbf,0x1e,0x3d,
+ 0x7a,0x58,0x05,0xbf,0xad,0xb9,0xbc,0x00,0xb6,0xa1,0x80,0x7a,0xd1,0x70,0x05,0x60,
+ 0xe8,0xd0,0xa1,0x5c,0xcd,0x00,0x00,0x10,0x2c,0xfc,0x63,0x8b,0x3d,0x6d,0x32,0x9e,
+ 0x90,0x7c,0x7f,0x73,0xaa,0x60,0x57,0xc9,0xdf,0xe4,0x3a,0xb7,0xda,0x6a,0x2b,0xb5,
+ 0xe7,0x9e,0x7b,0xae,0x35,0xd6,0xef,0x12,0xfa,0xdd,0xba,0x75,0xf3,0x2a,0x02,0x8d,
+ 0xcc,0x02,0x28,0x85,0x07,0x40,0x0e,0x46,0x3c,0x9e,0x03,0x00,0x00,0x90,0x26,0xfc,
+ 0x93,0xc5,0x78,0x42,0xa6,0xe5,0xf5,0x59,0xf5,0xf1,0x7b,0x9b,0x17,0x21,0xb9,0xcc,
+ 0xc1,0x07,0x1f,0xac,0x46,0x8f,0x1e,0x6d,0xb5,0xf8,0x45,0xd8,0xbb,0x9a,0x29,0xfc,
+ 0x93,0x81,0x80,0x49,0x45,0xa0,0xde,0xd4,0x25,0x06,0xc0,0xd5,0x31,0xf9,0x5c,0x0e,
+ 0x8e,0xd4,0x4b,0x06,0x00,0x00,0x48,0x13,0xfe,0x2b,0x57,0xae,0xb4,0x96,0xf7,0x75,
+ 0xa5,0xe7,0xb9,0xc6,0xf1,0x4d,0xcb,0xdf,0x57,0x37,0x40,0xda,0xa7,0x3f,0xfd,0xe9,
+ 0xb5,0x84,0x7f,0x52,0x01,0x48,0x0a,0x7b,0x19,0x9a,0x88,0x9b,0x4d,0x09,0x90,0x96,
+ 0xcc,0x12,0x68,0x64,0x26,0x40,0xa1,0x0a,0x80,0xab,0xde,0xb1,0xd9,0xc9,0xad,0xb7,
+ 0xde,0x9a,0xab,0x1b,0x00,0x00,0xac,0x88,0xe0,0x97,0x96,0x14,0xd8,0xb6,0xbc,0x7f,
+ 0x9b,0xd0,0xb7,0x7d,0x66,0x56,0x05,0x34,0x97,0x31,0x97,0x17,0xe1,0xbf,0xfe,0xfa,
+ 0xeb,0x7b,0x85,0xbf,0xcf,0x03,0xe0,0x1b,0x02,0xf0,0x19,0xcd,0x79,0x53,0xc8,0x10,
+ 0x40,0xda,0xcc,0x47,0xb6,0x65,0x37,0xdb,0x6c,0x33,0xae,0x70,0x00,0x00,0x70,0x0a,
+ 0xff,0xa4,0x30,0x37,0x05,0xbb,0xe9,0xaa,0x37,0x95,0x02,0x73,0xd2,0x1f,0xdf,0x94,
+ 0xc0,0xc9,0x75,0x1d,0x71,0xc4,0x11,0x1d,0x43,0xd5,0x49,0xe1,0x6f,0x13,0xf4,0x36,
+ 0xeb,0xdf,0x14,0xfe,0xb6,0xca,0x80,0x8d,0xb0,0xfe,0x0b,0xf7,0x00,0x84,0x7a,0x01,
+ 0xa4,0x18,0xd0,0x76,0xdb,0x6d,0xc7,0x95,0x0e,0x00,0x00,0x6b,0x09,0xff,0x15,0x2b,
+ 0x56,0xac,0x25,0xa4,0x6d,0x29,0x7b,0x2e,0x8b,0x3e,0x7e,0x75,0xe5,0xff,0xbb,0xaa,
+ 0x07,0xc6,0xef,0x45,0xf8,0x4b,0xa0,0x7a,0x9a,0xf0,0x4f,0x0a,0xfd,0xa4,0xf0,0xb7,
+ 0x0d,0x01,0xb8,0x52,0x01,0x1b,0x61,0xfd,0x17,0xe6,0x01,0x70,0x29,0x01,0x69,0x9e,
+ 0x01,0x99,0x3a,0xf1,0xc5,0x17,0x5f,0xe4,0x8a,0x07,0x00,0x80,0x48,0xf0,0xc7,0x96,
+ 0xbf,0xad,0x5e,0xbf,0x29,0xe4,0x93,0xd6,0xbd,0x6b,0x26,0xc0,0xb4,0x38,0x81,0x78,
+ 0xf9,0xfe,0xfd,0xfb,0xab,0x71,0xe3,0xc6,0x75,0x8c,0xf7,0x27,0x23,0xfd,0xe5,0xd5,
+ 0x27,0xfc,0x5d,0xe3,0xff,0x69,0x95,0x00,0x1b,0x55,0x08,0xa8,0x6e,0x59,0x00,0xa6,
+ 0x86,0x63,0x36,0x29,0xa6,0x30,0x72,0xe4,0x48,0x35,0x6d,0xda,0x34,0xae,0x7c,0x00,
+ 0x80,0x36,0x17,0xfe,0xb1,0xe5,0x6f,0x0a,0xef,0xe4,0x54,0xbc,0x49,0xd7,0x7e,0x32,
+ 0xed,0x2f,0x29,0xd8,0x4d,0x65,0xc0,0x1c,0x06,0x88,0x3f,0xfb,0xe8,0x47,0x3f,0x1a,
+ 0xc5,0xa3,0xf5,0xee,0xdd,0x3b,0xfa,0xcc,0x55,0xdc,0xc7,0x25,0xfc,0xa5,0x26,0x80,
+ 0x4d,0x09,0xf0,0x0d,0x01,0x34,0xaa,0x06,0x40,0x21,0x0a,0x80,0x79,0xa0,0x6d,0xd6,
+ 0xbe,0xab,0xed,0xb7,0xdf,0x7e,0xea,0xaa,0xab,0xae,0xe2,0xea,0x07,0x00,0x68,0x73,
+ 0xe1,0x6f,0x0a,0xe8,0x18,0xd3,0xc5,0xef,0xca,0xdd,0x37,0x2d,0x7e,0x9b,0xe5,0x2f,
+ 0x95,0x68,0xc5,0xfb,0x2c,0x01,0x7e,0x49,0x19,0x95,0xac,0xdf,0x9f,0xb4,0xfc,0x63,
+ 0x05,0x20,0x4d,0xf8,0xdb,0x02,0x00,0x7d,0xf3,0x00,0x34,0x8a,0xc2,0x3d,0x00,0xae,
+ 0x09,0x0f,0x6c,0xf3,0x24,0x0f,0x1b,0x36,0x4c,0x6d,0xb2,0xc9,0x26,0x6a,0xf2,0xe4,
+ 0xc9,0xdc,0x05,0x00,0x00,0x6d,0xc6,0xf2,0xe5,0xcb,0xad,0x96,0xbf,0x59,0xac,0x27,
+ 0x69,0xf5,0xbb,0x02,0x00,0x6d,0x7f,0xcb,0xfb,0x9e,0x3d,0x7b,0xaa,0xdd,0x76,0xdb,
+ 0x4d,0x6d,0xba,0xe9,0xa6,0x91,0x40,0x8e,0x89,0x05,0xb3,0x39,0x93,0x9f,0x2f,0xd5,
+ 0xaf,0x1a,0xcb,0xbf,0x0c,0xd6,0x7f,0xa1,0x0a,0x40,0x88,0xf5,0x6f,0x1e,0x04,0x39,
+ 0x48,0x07,0x1d,0x74,0x90,0xba,0xfc,0xf2,0xcb,0xb9,0x13,0x00,0x00,0xda,0xd0,0xf2,
+ 0x8f,0x05,0xb5,0x6d,0x0c,0xdf,0x66,0xd5,0x27,0x5d,0xff,0xae,0xdf,0x08,0x9b,0x6f,
+ 0xbe,0x79,0xe4,0xe6,0x97,0x31,0xfe,0x58,0x71,0x30,0x65,0x51,0x56,0xe1,0x5f,0xcd,
+ 0xd8,0x7f,0x59,0x84,0x7f,0x61,0x0a,0x40,0xb2,0x8a,0x92,0xaf,0x99,0x1a,0x91,0xd4,
+ 0x58,0x96,0xa1,0x80,0xfb,0xef,0xbf,0x9f,0x3b,0x02,0x00,0xa0,0x4d,0x2c,0x7f,0x69,
+ 0xa6,0xf0,0xb7,0xb9,0xf0,0x6d,0xa9,0x7a,0x36,0x17,0xbf,0x2c,0x27,0xc2,0xfe,0x63,
+ 0x1f,0xfb,0x58,0x14,0x5f,0x96,0x5c,0x36,0x29,0x84,0x4d,0xcb,0x3c,0xe9,0xf6,0xb7,
+ 0x09,0xff,0xf8,0xd5,0x74,0xfb,0x9b,0xc2,0xdf,0x9c,0x19,0xd0,0x55,0xf6,0xb7,0x91,
+ 0xc3,0x00,0x0d,0xc9,0x02,0xb0,0x1d,0xf4,0xe4,0x67,0x12,0x88,0x31,0x71,0xe2,0x44,
+ 0x35,0x75,0xea,0x54,0xee,0x0c,0x00,0x80,0x36,0x10,0xfe,0xb6,0x2a,0x7d,0x36,0x81,
+ 0x6f,0xab,0xe7,0x9f,0xfc,0x3c,0x19,0xd0,0x27,0x42,0xda,0x26,0x83,0xcc,0x99,0xf8,
+ 0x5c,0x96,0xbf,0x19,0xf4,0x97,0x96,0xf6,0x67,0x0a,0x7f,0xd3,0xf5,0x6f,0x7a,0xbd,
+ 0x1b,0x2d,0xfc,0x0b,0x55,0x00,0x7c,0xd6,0xbe,0x4d,0xeb,0x4a,0xfe,0x2d,0x35,0x97,
+ 0xaf,0xbe,0xfa,0xea,0x68,0xca,0x45,0x00,0x00,0x68,0x4d,0xe1,0x2f,0xcf,0xf8,0xa4,
+ 0x40,0xf4,0x05,0xf2,0x99,0xc2,0x3f,0x1e,0x02,0x18,0x31,0x62,0x44,0x34,0xb6,0xbf,
+ 0xde,0x7a,0xeb,0xad,0xa5,0x0c,0xa4,0xc9,0xa2,0x50,0xe1,0xef,0x52,0x00,0x92,0x9f,
+ 0x27,0x27,0xff,0x49,0x5a,0xfd,0xf2,0x5a,0x46,0xe1,0x1f,0x2b,0x00,0x32,0x0b,0x4f,
+ 0x97,0xa2,0xad,0xff,0x34,0x97,0x8b,0xa9,0x04,0xc8,0xab,0x1c,0xd4,0xa3,0x8e,0x3a,
+ 0x4a,0x5d,0x73,0xcd,0x35,0xce,0x31,0x1d,0x00,0x00,0x68,0x4e,0x96,0x2d,0x5b,0xd6,
+ 0xe1,0xf6,0x77,0x4d,0xe2,0x63,0x8b,0xf4,0x4f,0x0a,0x4e,0x91,0x13,0xbb,0xef,0xbe,
+ 0x7b,0x14,0x3c,0x2e,0x82,0x37,0x5e,0x26,0x59,0x5d,0xcf,0x74,0xbd,0xdb,0xe4,0x4e,
+ 0x48,0x89,0x5f,0x53,0xe0,0xbb,0x6a,0xfd,0xdb,0xc6,0xfb,0xcd,0xc9,0x7e,0xca,0x20,
+ 0xfc,0x45,0xf6,0x8b,0x02,0x20,0x67,0xa0,0x57,0x91,0x5b,0xf1,0x79,0x01,0x4c,0x6d,
+ 0x29,0xfe,0xbc,0x6f,0xdf,0xbe,0xea,0xc8,0x23,0x8f,0x54,0x37,0xde,0x78,0x23,0x77,
+ 0x0b,0x00,0x40,0x8b,0x20,0x56,0x7f,0x72,0xcc,0xdf,0x25,0xf8,0xcd,0xef,0x63,0x8b,
+ 0x7f,0x8b,0x2d,0xb6,0xe8,0x08,0xe8,0x4b,0x0e,0x03,0xd8,0x84,0xbd,0x4f,0xf6,0xc8,
+ 0x6b,0x72,0xcc,0xdf,0xa7,0x00,0x98,0xef,0x6d,0x75,0xfe,0xcd,0xd9,0xfe,0xca,0x64,
+ 0xf5,0x27,0x1d,0x30,0xa2,0x00,0x2c,0x29,0x4a,0x01,0x70,0x45,0xfd,0xbb,0x34,0x2f,
+ 0xd3,0x15,0x23,0xef,0x07,0x0d,0x1a,0xa4,0x0e,0x3d,0xf4,0x50,0x75,0xc7,0x1d,0x77,
+ 0x70,0xd7,0x00,0x00,0xb4,0x80,0xe5,0x2f,0xcd,0xb4,0xec,0xcd,0xbf,0xcd,0x98,0x80,
+ 0x01,0x03,0x06,0x44,0x01,0x7d,0xa3,0x46,0x8d,0x5a,0x6b,0x7d,0xae,0xaa,0x7a,0xa6,
+ 0xbc,0x09,0xb5,0xfc,0x43,0x14,0x00,0x97,0xcb,0x3f,0x44,0xf8,0x97,0x48,0x09,0x58,
+ 0xd2,0x49,0x1f,0xd8,0x89,0xfa,0xcd,0xd8,0xbc,0xd7,0x1c,0xd7,0x59,0x8e,0x5b,0x3c,
+ 0x95,0x63,0x9c,0xea,0x11,0x5f,0x04,0xd2,0x44,0x1b,0x34,0x5b,0xfc,0x5d,0x9c,0x17,
+ 0x3a,0x6f,0xde,0x3c,0x75,0xf3,0xcd,0x37,0x33,0x1c,0x00,0x00,0xd0,0xc4,0x96,0xbf,
+ 0x3c,0xd7,0x6d,0x81,0x7c,0xb6,0xb2,0xbe,0xf2,0xba,0xe3,0x8e,0x3b,0xa6,0x06,0xf4,
+ 0xb9,0x02,0xfb,0x42,0x05,0xbf,0x2d,0xea,0x3f,0xa9,0x00,0xd8,0x94,0x01,0x53,0x59,
+ 0x30,0x3d,0xd8,0x4d,0x20,0xfc,0x85,0x49,0xe2,0x01,0x98,0x55,0x84,0x02,0x60,0x3b,
+ 0x41,0x3e,0xeb,0xdf,0xd5,0x44,0x81,0xe8,0xd7,0xaf,0x9f,0x1a,0x3f,0x7e,0xbc,0xba,
+ 0xed,0xb6,0xdb,0x08,0x0c,0x04,0x00,0x68,0x42,0xe1,0x9f,0x7c,0x76,0xbb,0x66,0xea,
+ 0x13,0xa4,0x34,0xbc,0x8c,0xed,0x87,0x06,0xf4,0xf9,0x04,0xbf,0xe9,0x5d,0x76,0x09,
+ 0xff,0xa4,0xf5,0x6f,0x53,0x02,0x6c,0x82,0xdf,0x37,0xe6,0x5f,0x52,0xe1,0x2f,0xcc,
+ 0x12,0x05,0xa0,0xd0,0xe2,0xfb,0x21,0xc1,0x17,0xe6,0x41,0x95,0x26,0x1e,0x03,0x69,
+ 0x49,0x2f,0x82,0x54,0x70,0x3a,0xfa,0xe8,0xa3,0xd5,0x43,0x0f,0x3d,0x44,0x8a,0x20,
+ 0x00,0x40,0x93,0x09,0x7f,0x33,0x72,0x3f,0xf9,0x5e,0x5c,0xec,0x12,0xc5,0x3f,0x76,
+ 0xec,0xd8,0xcc,0x01,0x7d,0xa6,0x7c,0x49,0x0a,0x64,0xdb,0xf0,0x72,0x9a,0xf0,0x37,
+ 0x95,0x00,0xf3,0x7d,0xf2,0x77,0x65,0xad,0xf0,0x17,0xc8,0x34,0x51,0x00,0xa6,0x14,
+ 0x29,0xfc,0x6d,0x05,0x81,0x42,0xc6,0x5f,0x62,0x05,0x40,0x5a,0xec,0x05,0x88,0xc7,
+ 0x84,0xf6,0xda,0x6b,0xaf,0x68,0xd2,0x20,0x51,0x04,0x00,0x00,0xa0,0xbc,0x2c,0x59,
+ 0xb2,0x24,0x72,0xfb,0xbb,0xca,0xf6,0xca,0x74,0xbb,0xfb,0xee,0xbb,0x6f,0x47,0x40,
+ 0x5f,0x4c,0x48,0x40,0x9f,0xe9,0x55,0x0e,0xb1,0xf8,0x6d,0xc2,0xdf,0xa5,0x04,0xd8,
+ 0x84,0xbe,0xcf,0xe5,0xdf,0x24,0xc2,0x5f,0x98,0x22,0x0a,0xc0,0xa4,0xa2,0x85,0x7f,
+ 0xfc,0xea,0xaa,0xb8,0x14,0x0b,0xfa,0x58,0xd3,0x4a,0x0a,0xff,0xd8,0x0b,0x60,0xce,
+ 0xfb,0x2c,0x39,0x9f,0xc7,0x1d,0x77,0x9c,0x7a,0xf2,0xc9,0x27,0xd5,0x94,0x29,0x53,
+ 0xb8,0xcb,0x00,0x00,0x4a,0x28,0xfc,0xa5,0x25,0x05,0x7e,0x5c,0x89,0x4f,0x82,0xf9,
+ 0x0e,0x38,0xe0,0x00,0x6b,0x3d,0xfe,0xac,0x01,0x7d,0xa1,0x42,0x3f,0x44,0x01,0x70,
+ 0x7d,0xe7,0xca,0x56,0x2b,0x63,0x85,0xbf,0x40,0xa2,0x18,0x80,0x17,0x8b,0xde,0x8a,
+ 0x2b,0x06,0x40,0x84,0x79,0x52,0x09,0x88,0x85,0x7f,0xfc,0x1a,0xbb,0xfe,0x4d,0xe1,
+ 0x1f,0x5f,0x48,0xf2,0xf7,0x2e,0xbb,0xec,0xa2,0x76,0xd8,0x61,0x07,0xf5,0xd4,0x53,
+ 0x4f,0xa9,0x77,0xde,0x79,0x87,0x3b,0x0e,0x00,0xa0,0xa4,0xc2,0x5f,0x9e,0xed,0x5b,
+ 0x6d,0xb5,0x55,0x14,0xcd,0x9f,0x4c,0xdf,0xab,0x25,0xa0,0xcf,0x14,0xfa,0xe6,0xf0,
+ 0x72,0x9a,0xf0,0x4f,0x7b,0xef,0xb2,0xf6,0xd3,0xac,0xfe,0x26,0x12,0xfe,0xc2,0x8b,
+ 0x92,0x05,0xd0,0x57,0xbf,0x99,0x27,0xca,0x57,0xde,0x6b,0x37,0x85,0x75,0x9c,0x0d,
+ 0x60,0x66,0x04,0xc4,0xa5,0x20,0x93,0x59,0x01,0xc9,0x2c,0x81,0x64,0x36,0x40,0xdc,
+ 0xe2,0x75,0x24,0xd7,0x2b,0xdb,0x79,0xf5,0xd5,0x57,0xd5,0x84,0x09,0x13,0xb8,0xfb,
+ 0x00,0x00,0x1a,0x2c,0xfc,0x63,0x21,0x2f,0xee,0xfd,0x71,0xe3,0xc6,0xa9,0x8d,0x36,
+ 0xda,0x68,0x9d,0x89,0x78,0xd2,0xaa,0xf4,0x85,0x08,0x7d,0x5f,0x70,0x5f,0xe8,0xe7,
+ 0xae,0x66,0x6e,0xd7,0x54,0x4c,0x92,0x0a,0x4c,0x13,0x09,0x7f,0x09,0xbc,0xe8,0xdf,
+ 0x55,0xef,0xec,0x42,0x7d,0x92,0x5e,0xd2,0x7f,0x6c,0x5f,0x84,0xe5,0x6f,0x46,0x70,
+ 0xca,0x01,0x8b,0x5d,0x40,0xb1,0x17,0x40,0x4e,0x48,0x2c,0xc4,0x93,0xaf,0xa6,0x07,
+ 0xc0,0x9c,0x16,0x52,0x90,0x65,0x93,0x0a,0x87,0x68,0x97,0xdb,0x6c,0xb3,0x8d,0x9a,
+ 0x3f,0x7f,0xbe,0x7a,0xf3,0xcd,0x37,0xd5,0xeb,0xaf,0xbf,0xbe,0xd6,0x32,0x00,0x00,
+ 0x50,0x1c,0x8b,0x17,0x2f,0x8e,0x8c,0x38,0x99,0xd8,0x6d,0xfb,0xed,0xb7,0x8f,0x9e,
+ 0xc9,0xb1,0xa0,0x34,0x27,0xe2,0xa9,0x36,0x8a,0x3f,0x74,0x7c,0xdf,0xf5,0xb9,0xaf,
+ 0x0e,0x8d,0xcd,0xcd,0x1f,0x32,0xd6,0xdf,0x24,0xc2,0x5f,0x78,0x49,0xef,0xeb,0xa2,
+ 0x78,0x2e,0x80,0x47,0x8b,0x50,0x00,0x92,0x8a,0x80,0xa9,0x04,0x24,0x15,0x80,0xa4,
+ 0x12,0x20,0x4d,0xa2,0x41,0xd3,0x84,0xbe,0xa9,0x71,0xc5,0x7f,0xc7,0xd1,0xa4,0xf2,
+ 0x2a,0x17,0xdf,0x47,0x3e,0xf2,0x91,0x28,0x7f,0x54,0x7e,0x2b,0xda,0xa8,0xd4,0x12,
+ 0x98,0x39,0x73,0x66,0xa4,0x1c,0xc8,0xdf,0x8b,0x16,0x2d,0x8a,0xbc,0x08,0x00,0x00,
+ 0x90,0x1d,0xc9,0xcd,0x17,0xeb,0x5e,0xd2,0xb4,0xa5,0x50,0x4f,0x3c,0xac,0x3b,0x66,
+ 0xcc,0x98,0x75,0x02,0xc0,0xe3,0xe7,0xb4,0x2f,0x98,0xcf,0x26,0xf4,0x43,0xc7,0xf6,
+ 0xb3,0x58,0xf7,0xa6,0x42,0x91,0x45,0xe8,0x9b,0xfd,0x6a,0x32,0xe1,0x1f,0xcb,0xfc,
+ 0x8e,0xc9,0x80,0xee,0xd5,0xed,0xf4,0xa2,0x84,0xbf,0x2d,0x8f,0x33,0xf6,0x04,0xc8,
+ 0x01,0x4f,0x8e,0xf1,0xc7,0x16,0xbf,0x69,0xfd,0xc7,0xda,0xa3,0x4b,0xa9,0x88,0x3d,
+ 0x07,0xf1,0xf6,0x92,0xbf,0x95,0xcf,0x7a,0xf5,0xea,0x15,0x35,0x89,0x38,0x4d,0x42,
+ 0x61,0x21,0x00,0x80,0xda,0x8c,0x3b,0xd7,0x73,0x39,0xeb,0xd8,0x7e,0x35,0x42,0x3f,
+ 0x8b,0xf0,0xf7,0x59,0xf8,0xb6,0xc0,0x3e,0xdf,0x38,0x7f,0x93,0x09,0x7e,0x95,0x90,
+ 0xf9,0x1d,0x0a,0xc0,0x7d,0xba,0xad,0xd0,0xad,0x5b,0x3d,0xbd,0x00,0x49,0x05,0x20,
+ 0xf6,0x02,0xd8,0xac,0xfe,0x34,0xc1,0x2f,0x16,0xbc,0xbc,0xc6,0xc2,0x3f,0x56,0x1c,
+ 0x64,0xfd,0xe6,0xf0,0x81,0xb9,0xae,0x64,0x10,0x0a,0x00,0x00,0xd4,0xa6,0x04,0xa4,
+ 0x29,0x00,0x45,0x8d,0xeb,0xa7,0x09,0xfe,0xb4,0xb9,0x66,0xd2,0x2c,0xfd,0x34,0xa1,
+ 0xdf,0xc4,0x56,0x7f,0xcc,0x8a,0x35,0x32,0xff,0x43,0x05,0x40,0x77,0x62,0x81,0x16,
+ 0x86,0x0f,0xe8,0xb7,0x07,0xd5,0xc3,0x0b,0x90,0x1c,0x0f,0x32,0xbd,0x00,0x3e,0x05,
+ 0xc0,0x54,0x22,0x4c,0x57,0x52,0x32,0x7e,0xc0,0x54,0x02,0x92,0xdb,0xc4,0x03,0x00,
+ 0x00,0x90,0xbf,0xe0,0xf7,0x3d,0xa3,0xab,0x4d,0xdd,0x0b,0x15,0xfe,0x79,0x0a,0x7d,
+ 0x97,0xb5,0xdf,0xe4,0x86,0xe3,0x03,0x22,0xf3,0x93,0x1e,0x00,0xe1,0xba,0xa2,0x14,
+ 0x00,0xd7,0x05,0x13,0x2b,0x02,0x49,0xc1,0xec,0x1a,0xf7,0xf7,0x69,0x94,0x71,0x56,
+ 0x40,0x2c,0xf4,0xd3,0x82,0x08,0x6d,0x9e,0x00,0x00,0x00,0xc8,0xd7,0xf2,0x4f,0xab,
+ 0xd2,0xe7,0xab,0xce,0x17,0xf2,0x99,0xed,0xf7,0xa1,0xee,0xfd,0xb4,0x71,0x7d,0x57,
+ 0x54,0x7f,0x8b,0x78,0x8c,0xaf,0x8b,0xdf,0x24,0x15,0x80,0x9b,0x75,0xfb,0xad,0x6e,
+ 0x3d,0x8b,0xf6,0x02,0x24,0x15,0x80,0x64,0x46,0x80,0x2d,0xd8,0xcf,0xb6,0x1e,0xdb,
+ 0x05,0x15,0x0b,0x7f,0x5b,0x09,0x61,0x33,0x26,0x20,0x29,0xf4,0x6d,0xdb,0x43,0x21,
+ 0x00,0x00,0x70,0x0b,0x7c,0x9f,0xe0,0x0f,0x99,0xfe,0x3d,0xc4,0xd2,0x0f,0x0d,0xea,
+ 0x73,0x55,0x02,0x34,0x15,0x90,0x90,0x80,0xbe,0x16,0x16,0xfc,0xc2,0xd2,0x35,0xb2,
+ 0x7e,0x6d,0x05,0x40,0x77,0x70,0xae,0x16,0x7c,0x37,0xea,0xb7,0x9f,0xa9,0xe7,0x45,
+ 0x94,0x1c,0x0e,0x48,0x56,0x84,0xb2,0x09,0xfd,0x34,0x8d,0x32,0x6e,0x66,0x05,0x41,
+ 0x5b,0x31,0xa1,0xa4,0xc7,0x01,0xa1,0x0f,0x00,0x50,0x9b,0xf5,0x1f,0x22,0xfc,0x43,
+ 0x2d,0xfe,0x50,0x05,0x20,0x34,0x65,0xcf,0x15,0xd0,0x67,0xee,0xbb,0x4d,0x3e,0xb5,
+ 0x60,0x8c,0xd8,0x8d,0x22,0xeb,0x6d,0x1e,0x00,0xe1,0x8a,0x22,0x15,0x80,0x64,0x59,
+ 0x60,0x53,0x01,0x08,0xb1,0xfa,0x4d,0x05,0x20,0xbe,0x10,0xa4,0x30,0x50,0x7c,0xb1,
+ 0x88,0x27,0x20,0xa9,0x00,0xc4,0x05,0x82,0x4c,0x4f,0x80,0xcb,0x0b,0x80,0x22,0x00,
+ 0x00,0x10,0x26,0xf8,0x93,0xcf,0xe7,0xf8,0x79,0x6e,0x7b,0x4e,0xa7,0x59,0xfe,0x21,
+ 0x95,0xf8,0xb2,0x8c,0xed,0xdb,0x04,0x7f,0x9b,0x5a,0xfb,0x36,0xae,0x48,0xfe,0xd1,
+ 0xd5,0x38,0xb9,0x8f,0x68,0x01,0xf8,0x8c,0x7e,0xbb,0x73,0x3d,0x95,0x00,0x33,0x1e,
+ 0x20,0x4d,0x01,0x48,0x5e,0x54,0x22,0xf8,0x93,0x43,0x00,0xd2,0x92,0x4a,0x80,0x19,
+ 0x0b,0x10,0x12,0x0f,0x80,0x22,0x00,0x00,0xa0,0x52,0x2d,0x61,0x5f,0xd0,0x5f,0x16,
+ 0xb7,0xbf,0xad,0xde,0x7e,0x88,0x9b,0xbf,0xd6,0x28,0xfe,0x36,0x12,0xfa,0x31,0xcf,
+ 0x88,0x8c,0x77,0x2a,0x00,0x6b,0xb8,0x58,0xb7,0xbf,0x16,0x7d,0x31,0x25,0x95,0x80,
+ 0x38,0x70,0xcf,0xa6,0x04,0xa4,0xb9,0x95,0xe2,0x0b,0x23,0x16,0xfe,0xb1,0xe0,0x4f,
+ 0x2a,0x00,0xe6,0x9c,0x02,0xc4,0x02,0x00,0x00,0x54,0x2f,0xfc,0x6d,0x82,0xdf,0xe6,
+ 0xa5,0xb5,0x4d,0xc9,0x9b,0xc5,0xfd,0x6f,0x2b,0xd4,0x53,0x6d,0x40,0x5f,0x9b,0x5a,
+ 0xfb,0x36,0xd9,0xbe,0xf6,0x79,0xb4,0x08,0x3d,0x91,0xc2,0x32,0x41,0xd0,0xd6,0x45,
+ 0xee,0x89,0x4d,0x00,0x27,0x85,0x74,0x52,0x80,0x27,0x85,0x7a,0x52,0xd8,0xdb,0x9a,
+ 0x6d,0x26,0x41,0xdf,0x30,0x80,0x29,0xe8,0x11,0xfc,0x00,0x00,0x6e,0x45,0xc0,0xa7,
+ 0x00,0x84,0xa6,0xfa,0xb9,0xac,0x7e,0x57,0x50,0x1f,0x01,0x7d,0x55,0x23,0x13,0xe4,
+ 0x6c,0xa7,0xfb,0xbe,0x3a,0xd5,0x03,0x20,0x0b,0x68,0x01,0xf8,0x3d,0xfd,0xf6,0x86,
+ 0x7a,0x79,0x01,0x92,0xd3,0x05,0x27,0x3d,0x01,0x3e,0xf7,0x92,0x79,0x21,0xb9,0x14,
+ 0x80,0x90,0x79,0x05,0xd2,0x84,0x3e,0x0a,0x01,0x00,0x60,0xf9,0xfb,0x3d,0x00,0x69,
+ 0x41,0xda,0x21,0x19,0x00,0xa1,0x82,0x9f,0x80,0xbe,0xcc,0x9c,0x67,0x0a,0x7f,0xab,
+ 0x07,0x20,0x21,0xf4,0xee,0xd7,0x2f,0xfb,0x16,0xbd,0x57,0x36,0x4f,0x40,0xb2,0x14,
+ 0x70,0xb2,0x99,0xc2,0xdd,0xf4,0x0e,0xf8,0x84,0x7f,0xa8,0x02,0x80,0xc0,0x07,0x00,
+ 0xc8,0xc7,0x03,0x10,0x32,0x6d,0xaf,0x4d,0xf0,0x63,0xed,0xe7,0x86,0x14,0xfe,0xd9,
+ 0xcf,0x7a,0x4e,0x53,0x04,0xf3,0x96,0xfa,0xe5,0x05,0xdd,0xba,0x37,0x4a,0x09,0xf0,
+ 0x29,0x02,0x2e,0xa5,0xc0,0x36,0xa3,0xa0,0x2d,0x06,0x00,0xe1,0x0f,0x00,0x50,0xbd,
+ 0x12,0x90,0x25,0x08,0x30,0xed,0x35,0x6b,0x3d,0x7e,0xdb,0xf6,0x11,0xfa,0x56,0x96,
+ 0xeb,0xb6,0xbd,0x3e,0x26,0xaf,0xda,0xbe,0xec,0x9a,0x72,0xa2,0x5f,0xd5,0xc2,0xf0,
+ 0x12,0xfd,0xf6,0x5b,0xf5,0xb8,0xa8,0x5c,0x75,0xf9,0x5d,0x5a,0x5f,0x72,0xb8,0x20,
+ 0xce,0xff,0x77,0x09,0xfe,0x34,0xeb,0x1f,0xe1,0x0f,0x00,0x50,0x9b,0x12,0x10,0x5a,
+ 0xf3,0x3f,0x8f,0x2a,0x7d,0x58,0xfb,0x99,0xb8,0xc4,0x25,0xfc,0x53,0x3d,0x00,0x6b,
+ 0x04,0x62,0x6f,0xfd,0xf2,0x6f,0xdd,0xc6,0xd4,0x6b,0x6f,0x6d,0xc1,0x79,0xa6,0xe5,
+ 0xee,0x12,0xf0,0x69,0x82,0x1f,0xf7,0x3f,0x00,0x40,0xbe,0xc2,0x3f,0xab,0x12,0xe0,
+ 0x52,0x0c,0xd2,0x52,0xf8,0xb0,0xf6,0xab,0x66,0x8a,0x6e,0xdb,0xe8,0x63,0xb4,0xb8,
+ 0x2a,0x05,0x60,0x8d,0x40,0xdc,0x5d,0xbf,0x3c,0xac,0x0a,0x9c,0x29,0x30,0x4d,0x09,
+ 0x48,0x2a,0x03,0xe6,0xd0,0x80,0x6b,0x0a,0x61,0x53,0xe8,0x23,0xfc,0x01,0x00,0x1a,
+ 0xa7,0x04,0xd8,0xc6,0xf3,0xb3,0x58,0xfb,0x04,0xf4,0x65,0x46,0x66,0xfc,0xdb,0x4b,
+ 0x1f,0xa7,0x27,0x52,0xcf,0x65,0xa0,0x40,0xfe,0x9a,0xb2,0xe4,0x10,0xd6,0x43,0x09,
+ 0x08,0x55,0x04,0x5c,0x02,0xdf,0x57,0xfc,0x27,0x24,0x0b,0x00,0x00,0x00,0x94,0x55,
+ 0xf0,0xdb,0x2c,0x74,0x9b,0x60,0x77,0x09,0x7c,0x57,0x34,0x3f,0xd6,0x7e,0x4d,0x9c,
+ 0xad,0x8f,0xd7,0x25,0xde,0xf3,0x98,0x41,0x20,0xdf,0xa6,0x5f,0x0e,0xab,0x77,0x2f,
+ 0x4c,0x45,0x20,0x4d,0x19,0x70,0x29,0x07,0xb6,0xe5,0x6d,0x42,0x1f,0x25,0x00,0x00,
+ 0xa0,0x3a,0x0f,0x80,0xcb,0x13,0x10,0xda,0x6c,0xeb,0x43,0xf0,0x57,0xc5,0xed,0xfa,
+ 0x98,0xfd,0x47,0xd0,0xb9,0xcc,0x20,0x88,0x07,0xeb,0x97,0x27,0x75,0x1b,0xdb,0x88,
+ 0x1e,0xf9,0x3c,0x02,0x2e,0xa5,0xc0,0xb5,0x5c,0x9a,0xd0,0x47,0x11,0x00,0x00,0x70,
+ 0x0b,0x7e,0x97,0x32,0x90,0x96,0x93,0x4f,0x69,0xde,0xba,0x30,0x49,0xb7,0xdd,0xf4,
+ 0xf1,0x9b,0x93,0xab,0x02,0xb0,0x46,0x30,0x4a,0x30,0xe0,0x63,0xba,0x0d,0x6b,0x54,
+ 0xef,0x5c,0x8a,0x80,0xcd,0x43,0x90,0xf6,0x19,0x02,0x1f,0x00,0x20,0x3f,0x85,0x20,
+ 0x64,0x58,0xc0,0xb5,0x1c,0x82,0x3f,0x17,0x66,0xe8,0x36,0x4e,0x1f,0xc3,0x29,0xc1,
+ 0xe7,0xb0,0x0a,0x01,0xbc,0xbd,0x7e,0x79,0x48,0xb7,0x01,0x8d,0xec,0xa9,0x4b,0x88,
+ 0xa7,0x59,0xf9,0xa1,0x01,0x7f,0x28,0x04,0x00,0x00,0x7e,0x0f,0x80,0xcb,0x13,0xe0,
+ 0x13,0xf0,0x04,0xf5,0xe5,0xce,0x3c,0xdd,0xf6,0xd6,0xc7,0xf1,0x85,0x4c,0xe7,0xb4,
+ 0x4a,0xe1,0xbb,0xb7,0x7e,0xf9,0xbf,0xba,0xf5,0x2c,0x43,0xcf,0x7d,0x16,0x7d,0x88,
+ 0xe0,0x47,0xe8,0x03,0x00,0xd4,0xa6,0x0c,0xa4,0x59,0xf3,0x08,0xfd,0xc2,0x58,0xaa,
+ 0xdb,0xc1,0xfa,0x78,0x3e,0x94,0xf9,0x3c,0xd6,0x20,0x74,0x45,0x09,0xb8,0xb5,0xd1,
+ 0x9e,0x80,0x2c,0xc2,0x3c,0x54,0xc8,0xa3,0x0c,0x00,0x00,0x84,0x7b,0x00,0xb2,0x2a,
+ 0x07,0x90,0xab,0xe5,0x7f,0x78,0x35,0xc2,0xbf,0x26,0x05,0x60,0x8d,0xa0,0xdc,0x7e,
+ 0x8d,0x27,0x60,0x58,0x33,0x1d,0x31,0x04,0x3c,0x00,0x40,0x63,0x14,0x04,0xc8,0x8d,
+ 0x19,0x6b,0x2c,0xff,0x17,0xaa,0x3e,0x67,0x39,0x08,0x53,0x09,0x0c,0xbc,0x47,0x35,
+ 0x28,0x3b,0x00,0x00,0x00,0xa0,0xcd,0x90,0x68,0xff,0x83,0xb2,0x04,0xfc,0xd9,0xe8,
+ 0x9c,0x83,0xd6,0x27,0x3b,0xb0,0x9b,0x6e,0xb7,0x73,0x4e,0x00,0x00,0x00,0x0a,0x45,
+ 0x64,0xed,0x6e,0xb5,0x0a,0xff,0x5c,0x14,0x80,0x35,0x4a,0xc0,0x9c,0x35,0x85,0x07,
+ 0xce,0x56,0x1f,0x96,0x20,0x04,0x00,0x00,0x80,0xfc,0x10,0xd9,0x2a,0x15,0xfe,0xfe,
+ 0x23,0x34,0xcf,0xdf,0x2b,0xbb,0xf3,0xde,0xc3,0x35,0x73,0x07,0x5c,0xa3,0xea,0x38,
+ 0x81,0x10,0x00,0x00,0x40,0x0b,0x23,0xd6,0xfe,0x09,0xbe,0xda,0xfe,0x0d,0xf1,0x00,
+ 0x18,0xde,0x00,0xd9,0xc1,0x6d,0x74,0xfb,0x89,0xfa,0x70,0x2e,0x62,0x00,0x00,0x00,
+ 0xc8,0xce,0xf2,0x35,0xb2,0x74,0x9b,0xbc,0x85,0x7f,0x21,0x1e,0x00,0xc3,0x1b,0xb0,
+ 0xa5,0x7e,0xb9,0x4c,0xb7,0x7d,0x39,0x8f,0x00,0x00,0x00,0xc1,0x3c,0xa0,0xdb,0x57,
+ 0xb4,0xe0,0x7f,0xb5,0xa8,0x0d,0x74,0x2e,0x72,0xef,0x65,0xc7,0x75,0xdb,0x4f,0xbf,
+ 0x3d,0x5a,0xb7,0x09,0x9c,0x4f,0x00,0x00,0x80,0x54,0x44,0x56,0x1e,0x2d,0xb2,0xb3,
+ 0x48,0xe1,0x5f,0xb8,0x07,0xc0,0xf0,0x06,0x88,0xb2,0x31,0x5e,0x7d,0x18,0x28,0xb8,
+ 0x33,0xe7,0x18,0x00,0x00,0xa0,0x83,0x67,0x74,0xbb,0x58,0xb7,0xeb,0xb5,0xe0,0x5f,
+ 0x5d,0x8f,0x0d,0x36,0xa4,0x72,0x83,0x56,0x06,0xf6,0xd4,0x2f,0xa7,0xea,0x76,0x94,
+ 0x2a,0x49,0x39,0x61,0x00,0x00,0x80,0x3a,0x23,0x65,0x7c,0x6f,0xd4,0xed,0x0a,0x2d,
+ 0xf4,0x1f,0xa9,0xf7,0xc6,0x1b,0x5a,0xba,0x49,0x2b,0x02,0x83,0xf4,0xcb,0x11,0xba,
+ 0x1d,0xab,0x3e,0x8c,0x13,0xe8,0xc6,0xf5,0x00,0x00,0x00,0x2d,0x8c,0xa4,0xf3,0xc9,
+ 0xf8,0xfe,0x75,0xba,0xdd,0xac,0x05,0xff,0xdc,0x46,0xed,0x48,0x69,0x6a,0x37,0x6a,
+ 0x65,0xa0,0x9f,0x7e,0x39,0x40,0xb7,0xfd,0x75,0xdb,0x43,0xb7,0x6d,0x55,0xc1,0x31,
+ 0x0a,0x00,0x00,0x00,0x05,0x23,0xee,0xfc,0x97,0x74,0x7b,0x54,0xb7,0xfb,0x74,0xbb,
+ 0x57,0x0b,0xfd,0x05,0x65,0xd8,0xb1,0xd2,0x16,0x6f,0xd6,0x0a,0x41,0x5f,0xf5,0x61,
+ 0x3a,0xe1,0x76,0xea,0xc3,0x32,0xc3,0x52,0x57,0x60,0xa4,0x6e,0xeb,0xe9,0x36,0x58,
+ 0xb7,0x5e,0xba,0x75,0xd7,0xad,0x0b,0xd7,0x17,0x00,0x00,0x34,0x80,0x55,0xea,0xc3,
+ 0x54,0xbd,0x25,0xba,0x49,0x71,0x9e,0x59,0xba,0x4d,0x53,0x1f,0xe6,0xed,0x4b,0xb9,
+ 0xde,0x17,0x45,0xf8,0x6b,0x81,0xbf,0xa8,0x8c,0x3b,0xff,0xff,0x00,0xa9,0xd9,0x66,
+ 0x33,0x79,0x3c,0x5d,0x0d,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,
+ 0x82,
+
+};
{
0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,
0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x08,0x06,0x00,0x00,0x00,0xc3,0x3e,0x61,
- 0xcb,0x00,0x00,0x12,0x8c,0x49,0x44,0x41,0x54,0x78,0x01,0xec,0xd5,0x01,0x44,0x2c,
- 0x51,0x14,0xc6,0xf1,0xcf,0x06,0x10,0x25,0x45,0xa9,0x01,0x12,0x48,0x02,0x01,0x10,
- 0x64,0x42,0x28,0x28,0x03,0xa1,0x24,0x01,0xc5,0x14,0x04,0x29,0x50,0x29,0x54,0x01,
- 0x50,0x51,0xa0,0xc8,0xc0,0x50,0xa1,0x28,0x80,0x0a,0x02,0x01,0xad,0x10,0xb2,0xc4,
- 0x32,0xbb,0xcb,0xff,0xed,0xbb,0x76,0xc7,0x1a,0xdb,0xbe,0x17,0xc0,0x6d,0x7e,0x1c,
- 0xec,0x39,0xe3,0x0c,0xf7,0xdb,0xbb,0xab,0x46,0x00,0x07,0xf0,0x81,0x10,0xc8,0x02,
- 0x11,0x16,0xb0,0x5c,0x54,0xc9,0x2a,0xac,0x64,0xe7,0xe8,0xa7,0x80,0x6e,0xe0,0x18,
- 0x28,0x61,0x3b,0xfb,0x95,0x2a,0x59,0x76,0xff,0x6f,0xf8,0x2e,0x90,0xc3,0x36,0xa9,
- 0x1c,0xe0,0xaa,0x11,0x60,0xce,0xea,0x5b,0x9f,0x2a,0x01,0x73,0x8d,0x6e,0x7e,0x09,
- 0xdb,0xa5,0x4a,0x80,0x5b,0xef,0x3f,0x3f,0xc7,0x6f,0x91,0xca,0x01,0xdd,0xaa,0x02,
- 0x8e,0x49,0x18,0x1c,0x1c,0xa4,0xa7,0xa7,0x87,0xf5,0xf5,0x75,0xac,0x94,0x3a,0x56,
- 0x59,0x06,0x70,0x24,0x79,0x4a,0xc8,0x66,0xb3,0xa6,0x3e,0x3f,0x3f,0x65,0xa5,0x94,
- 0x67,0xb2,0x07,0x7c,0xea,0x58,0x5e,0x5e,0x66,0x7e,0x7e,0x9e,0xf3,0xf3,0x73,0x52,
- 0xd6,0xf2,0x05,0x84,0xa4,0x7e,0xab,0x30,0x23,0xa9,0x5f,0x75,0x1c,0x1c,0x1c,0x68,
- 0x73,0x73,0x53,0xb7,0xb7,0xb7,0xaa,0xf5,0xfc,0xfc,0x6c,0xfa,0x5b,0x5b,0x5b,0x2a,
- 0x16,0x8b,0xfa,0xf8,0xf8,0xd0,0xc9,0xc9,0x89,0xa6,0xa7,0xa7,0x35,0x35,0x35,0xa5,
- 0xed,0xed,0x6d,0xbd,0xbf,0xbf,0xeb,0x5f,0x3b,0x01,0x3d,0x3c,0x3c,0x68,0x6d,0x6d,
- 0x4d,0x63,0x63,0x63,0x5a,0x5a,0x5a,0x52,0x10,0x04,0x6a,0xe4,0xed,0xed,0x4d,0xbb,
- 0xbb,0xbb,0xf2,0x3c,0x4f,0x13,0x13,0x13,0xda,0xd8,0xd8,0xd0,0xeb,0xeb,0xab,0x6a,
- 0xed,0xed,0xed,0x99,0x77,0x5c,0x5d,0x5d,0xe9,0x3b,0x37,0x37,0x37,0xe6,0x99,0xa3,
- 0xa3,0x23,0x25,0x5d,0x5e,0x5e,0xca,0xf7,0x7d,0x8d,0x8e,0x8e,0x6a,0x61,0x61,0x41,
- 0xa7,0xa7,0xa7,0x02,0x64,0xa9,0x7e,0x01,0x11,0x75,0xb4,0xb7,0xb7,0x23,0x89,0xc5,
- 0xc5,0x45,0x6a,0xed,0xef,0xef,0x23,0xc9,0xd4,0xd3,0xd3,0x13,0x9d,0x9d,0x9d,0x48,
- 0xaa,0x2d,0xd3,0x2b,0x87,0xdb,0x70,0xe7,0xca,0xca,0x0a,0x92,0x48,0xd6,0xec,0xec,
- 0x2c,0x85,0x42,0x81,0xa4,0x30,0x0c,0x69,0x6b,0x6b,0x23,0xf9,0x7c,0x4b,0x4b,0x8b,
- 0x99,0x55,0xb9,0xae,0x6b,0xfa,0xbd,0xbd,0xbd,0x7c,0xa7,0xaf,0xaf,0x0f,0x49,0x94,
- 0x03,0xa6,0xea,0xeb,0xeb,0x8b,0xc9,0xc9,0x49,0xd3,0x4f,0xd6,0xf8,0xf8,0x38,0xf9,
- 0x7c,0x1e,0x0b,0x45,0x22,0xf6,0xf3,0x2f,0x40,0x57,0x57,0x17,0x99,0x4c,0x86,0xa1,
- 0xa1,0x21,0x73,0x98,0xc3,0xc3,0xc3,0xf1,0xcc,0x71,0x1c,0xa2,0x28,0xaa,0xbb,0xb3,
- 0xb5,0xb5,0x15,0x49,0x7f,0x3f,0x9b,0x43,0x9f,0x99,0x99,0xa9,0xce,0x4c,0x1d,0x1e,
- 0x1e,0x52,0xeb,0xe5,0xe5,0x85,0xa6,0xa6,0x26,0x33,0x1b,0x19,0x19,0x21,0x08,0x02,
- 0x2e,0x2e,0x2e,0x18,0x18,0x18,0x30,0xbd,0x8e,0x8e,0x8e,0x38,0xa0,0xb3,0xb3,0xb3,
- 0x78,0xcf,0xfd,0xfd,0x3d,0x49,0x77,0x77,0x77,0xf1,0xfc,0xf1,0xf1,0x91,0x2a,0xcf,
- 0xf3,0x4c,0xaf,0xb9,0xb9,0x99,0x9d,0x9d,0x1d,0xae,0xaf,0xaf,0x59,0x5d,0x5d,0x8d,
- 0xdf,0x5b,0xfe,0xc5,0xc3,0x46,0x7f,0xd8,0x33,0x03,0x8f,0xda,0x82,0x20,0x8c,0x7f,
- 0x3d,0xb7,0xaa,0x22,0x88,0x50,0x54,0x49,0x52,0x10,0x08,0x55,0x55,0x10,0x08,0x22,
- 0x80,0x0a,0xa8,0xa0,0x84,0x82,0x42,0xe8,0x9f,0xa8,0x92,0x84,0x90,0x00,0xa9,0x28,
- 0x54,0x14,0x92,0x84,0x40,0x44,0x29,0x52,0xa9,0x54,0x29,0x85,0x6a,0xde,0x67,0x98,
- 0x63,0x9d,0xb7,0x75,0xea,0x7a,0x91,0xea,0xc7,0x70,0xdf,0xee,0xdb,0xdd,0x75,0x76,
- 0x76,0x67,0xbe,0x29,0x6e,0x07,0xb0,0xdb,0xb7,0xb8,0xb8,0x28,0x0e,0xea,0x08,0xd6,
- 0x3f,0x3a,0x3a,0xea,0x9b,0x53,0xad,0xb9,0xb9,0x59,0xee,0xef,0xef,0xc5,0xd8,0xdb,
- 0xdb,0x93,0x8c,0x8c,0x8c,0xc0,0x79,0x18,0x5e,0xc4,0x68,0x6c,0x6c,0xd4,0xf6,0xd2,
- 0xd2,0x52,0x79,0x7a,0x7a,0x12,0x83,0xa1,0x46,0x92,0x92,0x92,0xb4,0x8f,0xe1,0x45,
- 0xdb,0x1e,0x1e,0x1e,0x74,0x5f,0x00,0xa4,0xb3,0xb3,0x53,0xc2,0x30,0x54,0x69,0x5f,
- 0x79,0x79,0xb9,0x18,0x9b,0x9b,0x9b,0x92,0x90,0x90,0x20,0x00,0xd4,0x81,0x5c,0xba,
- 0xba,0xba,0xcc,0xd9,0x6d,0x4f,0xc6,0xaf,0x03,0x6c,0x6f,0x6f,0x4b,0x98,0xe3,0xe3,
- 0xe3,0xe0,0xd6,0xb4,0xb4,0xb4,0x78,0xe7,0x6c,0x6a,0x6a,0x92,0x97,0x97,0x17,0x09,
- 0xa1,0xaa,0xc3,0xe6,0x66,0x6c,0xd7,0xb6,0xf3,0xf3,0xf3,0xa0,0x8d,0xf9,0x85,0x84,
- 0xa9,0xaa,0xaa,0xd2,0xbe,0xb6,0xb6,0x36,0x31,0x3a,0x3a,0x3a,0x82,0x97,0xe6,0xf1,
- 0xf1,0x51,0x8c,0x9b,0x9b,0x1b,0x49,0x4b,0x4b,0xd3,0xbe,0xb1,0xb1,0xb1,0xf0,0x21,
- 0xab,0x03,0x86,0xf7,0xc5,0x5c,0x22,0x58,0x7f,0x7f,0x7f,0xdf,0xe9,0xf9,0x75,0x00,
- 0xfd,0xa0,0x3e,0x72,0x73,0x73,0xb5,0x9f,0x87,0x13,0x39,0xa7,0xcb,0xc4,0xc4,0x84,
- 0xcd,0xad,0x1f,0x9e,0xe8,0x33,0x6e,0x6d,0x65,0x65,0x65,0xc2,0xe4,0xcf,0x35,0xc9,
- 0xcc,0xcc,0xd4,0xbe,0xfa,0xfa,0x7a,0x31,0xdc,0x31,0x33,0x33,0x33,0x62,0x8c,0x8c,
- 0x8c,0xd8,0x33,0xaf,0x31,0xdf,0x68,0x68,0x68,0xd0,0xf6,0xc4,0xc4,0xc4,0x7f,0xe6,
- 0xaf,0xae,0xae,0x0e,0xe6,0x5a,0x5d,0x5d,0x15,0x63,0x7a,0x7a,0x5a,0xd7,0x8c,0xb2,
- 0x9e,0x9e,0x1e,0xf9,0xca,0xfc,0xc1,0x27,0xc0,0x83,0x06,0xc1,0xc5,0xc5,0x45,0x5c,
- 0xe3,0xdc,0xb1,0xbc,0x75,0xae,0x02,0x01,0x63,0xbf,0x6b,0xb8,0xbc,0xbc,0x04,0x51,
- 0x35,0x62,0x54,0x56,0x56,0xa2,0xa8,0xa8,0x08,0xc4,0xcd,0xf4,0x31,0x3e,0x3e,0x0e,
- 0xa2,0x6a,0x85,0x4e,0x00,0xe2,0xae,0xa1,0xaa,0x26,0x3c,0xff,0xfa,0xfa,0x3a,0x0c,
- 0x77,0x8d,0x83,0x83,0x03,0xd0,0x21,0x22,0x6d,0x6b,0x6b,0x0b,0x5f,0x99,0x4f,0x71,
- 0x80,0xdb,0xdb,0x5b,0x10,0xb0,0x94,0x1c,0xd7,0x38,0x77,0x2c,0x13,0x3c,0x18,0x94,
- 0x8c,0x58,0x59,0x59,0xf1,0xda,0xe4,0xe4,0x24,0x5c,0x18,0x12,0x40,0xc0,0x1c,0x05,
- 0x67,0x67,0x67,0xea,0x3c,0x76,0x18,0xed,0xed,0xed,0x30,0xdc,0x35,0x0a,0x0a,0x0a,
- 0xbc,0x73,0x9b,0xf1,0x46,0x83,0xd8,0x1c,0x3a,0x67,0x84,0xa9,0x44,0xfe,0xca,0xc4,
- 0xf0,0x9f,0x61,0x92,0x86,0x93,0x93,0x93,0xe0,0x83,0x7e,0x84,0xa3,0xa3,0x23,0x18,
- 0x36,0x96,0x89,0x1f,0x0c,0x11,0xb1,0x43,0x88,0xa4,0xb5,0xb5,0x15,0x83,0x83,0x83,
- 0xba,0x1f,0x6a,0x79,0xbd,0xb1,0x04,0x54,0x0e,0xa0,0x6a,0x81,0x61,0x6b,0x6c,0x6c,
- 0x6c,0xe8,0xbe,0x2b,0x2a,0x2a,0x90,0x9c,0x9c,0x8c,0x28,0x18,0x7a,0xd4,0xe2,0xe0,
- 0xfb,0xbc,0x00,0xd4,0xeb,0x08,0x33,0x3f,0x3f,0x0f,0x66,0xf7,0x20,0x60,0x0e,0x10,
- 0x3d,0xce,0x81,0xf1,0x3a,0x38,0xfc,0xec,0xec,0x6c,0x80,0x50,0x11,0x20,0x3f,0x3f,
- 0x1f,0x20,0xc3,0xc3,0xc3,0xb8,0xbe,0xbe,0xc6,0x7b,0xc8,0xcb,0xcb,0x03,0x65,0x29,
- 0x40,0x98,0xf0,0x61,0x6a,0x6a,0xca,0x77,0xfb,0x95,0x9a,0x9a,0x1a,0x80,0x30,0x61,
- 0x04,0x25,0x20,0xe2,0xe0,0x67,0x3a,0x40,0x6d,0x6d,0xad,0x1b,0xe3,0xb4,0x52,0xc7,
- 0x02,0x0f,0x88,0x1e,0x1a,0x55,0x00,0x7c,0x30,0x19,0x43,0x7f,0x7f,0xbf,0xeb,0x08,
- 0x5a,0x99,0x63,0x61,0x09,0x20,0x03,0x03,0x03,0xa0,0x2c,0x83,0x5b,0xdd,0x23,0xfa,
- 0x94,0xb3,0x28,0x83,0xc3,0xc3,0x43,0x18,0xcf,0xcf,0xcf,0x3a,0x6e,0x69,0x69,0x09,
- 0x61,0x28,0xf9,0x00,0xb2,0xbb,0xbb,0x8b,0xab,0xab,0x2b,0xa4,0xa6,0xa6,0xfa,0xf6,
- 0xa4,0xe1,0x82,0xb2,0x10,0x20,0x43,0x43,0x43,0xea,0x30,0x22,0x02,0x83,0x4a,0x04,
- 0x73,0x73,0x73,0xfa,0x42,0x7c,0x3b,0xe2,0x55,0x01,0xae,0x15,0x17,0x17,0x0b,0x6f,
- 0x91,0xa4,0xa7,0xa7,0xeb,0xbf,0xf9,0x84,0xca,0xec,0xec,0xec,0x6b,0x73,0x9a,0x69,
- 0x36,0x5e,0x57,0x57,0xa7,0x55,0x3b,0x6b,0xa3,0x53,0x79,0x2b,0x81,0xdd,0xdd,0xdd,
- 0xc1,0xff,0xa1,0xf6,0x57,0x45,0xc0,0xa7,0xdc,0xd6,0xd4,0xdf,0x61,0xee,0xee,0xee,
- 0x74,0x0d,0x00,0x8e,0x54,0xf4,0xb3,0xb3,0xb3,0x23,0x39,0x39,0x39,0x6e,0x91,0x4b,
- 0x55,0x4c,0x61,0x61,0x61,0xd0,0xb6,0xb0,0xb0,0xf0,0x73,0x64,0x60,0x56,0x56,0x96,
- 0x00,0x90,0xde,0xde,0xde,0x57,0x1d,0x60,0x79,0x79,0x59,0x4a,0x4a,0x4a,0xdc,0x43,
- 0xd5,0x0f,0xc6,0xcc,0xf9,0x2d,0xa7,0x52,0xdd,0xdd,0xd7,0xd7,0x27,0x29,0x29,0x29,
- 0xc1,0x38,0xfe,0x16,0x3e,0xcf,0x56,0x3d,0xf4,0xc2,0x3a,0xbd,0xeb,0x2c,0x6a,0xb1,
- 0x58,0x4c,0x0b,0x44,0x7c,0x79,0x44,0xf1,0x17,0x7e,0xd4,0xd6,0xd6,0xd6,0xe4,0x2d,
- 0xf8,0xa7,0x6f,0xad,0x5d,0x58,0xad,0xc0,0x8c,0xb1,0x5e,0x25,0x1d,0x93,0xba,0x6f,
- 0xea,0x00,0x1f,0xc0,0x57,0x07,0x38,0x3d,0x3d,0xd5,0x43,0xe7,0x13,0x29,0xca,0x3b,
- 0x5f,0x15,0xde,0x74,0x2d,0xc7,0xd2,0xf4,0xf7,0x7b,0x61,0x1e,0x20,0x4c,0xda,0x74,
- 0xdc,0x5f,0x76,0xce,0x40,0x23,0xde,0x26,0x0a,0xe3,0x07,0xdd,0x40,0xd7,0x51,0xa1,
- 0x44,0x00,0x54,0x20,0x29,0x50,0x04,0xd0,0x05,0xa4,0x1b,0x88,0x80,0x82,0xa8,0x00,
- 0xba,0x82,0x84,0x2e,0x23,0x21,0x20,0x52,0x74,0x2d,0xf3,0xfd,0x3c,0x3c,0x2c,0x8d,
- 0xf5,0x1d,0xbb,0xfd,0x8d,0xed,0xfc,0x18,0x6f,0x6f,0xb3,0xdb,0xf6,0xce,0x9c,0x9d,
- 0x99,0x39,0xe7,0x3c,0x23,0x47,0xcf,0x9c,0x61,0x5a,0x69,0x9f,0x9f,0x9f,0x0d,0x83,
- 0x91,0xb7,0x71,0x3a,0x65,0x00,0xd3,0x48,0x39,0x82,0x8a,0xa1,0x1d,0x41,0x45,0xed,
- 0x02,0x8a,0x32,0x00,0x56,0xed,0x71,0x7b,0x7b,0x1b,0x77,0x77,0x77,0xc1,0x62,0x29,
- 0x32,0x5c,0x5d,0x5d,0xe9,0xbd,0xf8,0xd8,0xa3,0x18,0x84,0x56,0xfc,0x69,0xa2,0xf5,
- 0x29,0xca,0x00,0x8a,0x32,0x80,0xa2,0x0c,0xa0,0x28,0x03,0x28,0xca,0x11,0x54,0xac,
- 0xaf,0xaf,0x2b,0x34,0x8d,0x16,0xe1,0x2f,0xfa,0x01,0x8a,0xdf,0xd4,0x4a,0x92,0x88,
- 0x3a,0xba,0x01,0x14,0xa7,0xa7,0xa7,0x41,0xd6,0x72,0x90,0x24,0x1a,0x73,0x42,0x0e,
- 0xb1,0xe5,0xe5,0x65,0xe5,0x2d,0xfc,0x41,0x47,0x50,0xb1,0xb2,0xb2,0xd2,0x22,0x42,
- 0xa2,0x94,0x24,0xb5,0x06,0x98,0x5d,0x77,0xd8,0xd7,0x3a,0x32,0xcc,0x2b,0xf5,0x0c,
- 0xe1,0x8a,0x32,0x97,0xb2,0x5a,0x49,0x84,0x29,0xca,0x1e,0x3a,0x3b,0x3b,0x8b,0xc3,
- 0xc3,0xc3,0x40,0x5d,0xe4,0xcc,0x65,0xe1,0x0c,0x25,0xde,0xa3,0x0c,0xa7,0x80,0xf7,
- 0xf7,0xf7,0xe0,0x5e,0xe5,0xfe,0xfe,0x3e,0xaf,0x89,0xcc,0x3f,0xcf,0xe2,0x8d,0x00,
- 0x39,0xdd,0x61,0x3f,0xbc,0x4d,0x8e,0x81,0x65,0x6b,0xd6,0x0e,0xa6,0x32,0xa4,0x48,
- 0x3c,0x6d,0x9b,0x9b,0x9b,0xbe,0x9f,0xcc,0x2e,0x92,0xc0,0xc5,0x90,0x9f,0xd8,0xfd,
- 0xff,0x9c,0x25,0x95,0xd7,0x44,0xe6,0x9f,0xc7,0x2c,0x9c,0x01,0x24,0x75,0x87,0x6e,
- 0x30,0x6b,0x0c,0x2d,0x40,0x51,0x63,0xd1,0x51,0x09,0x03,0x90,0x20,0xd5,0x1d,0x2e,
- 0x63,0x5b,0x5d,0x5d,0x75,0x9d,0x32,0xa0,0xcc,0xc7,0xc7,0x47,0xbb,0xbe,0xbe,0xf6,
- 0xdf,0x6c,0x6b,0x6b,0x6b,0xba,0xa7,0x34,0x82,0x65,0x69,0x4d,0x64,0xe2,0x79,0x16,
- 0xdb,0x00,0x12,0xba,0xc3,0x5e,0x83,0x49,0xe8,0xfa,0xfc,0xfc,0x3c,0x53,0x8e,0x24,
- 0xd3,0x8d,0x32,0x8a,0x40,0x57,0xe7,0x24,0x92,0xa1,0x9c,0x5e,0x03,0x24,0x34,0x91,
- 0x89,0xe7,0x59,0x70,0x3f,0x00,0xba,0xc3,0x78,0x7a,0x7a,0x72,0xa8,0x5a,0xf0,0xcd,
- 0xd4,0xfc,0xe9,0xf9,0x54,0x59,0xc5,0x1d,0x98,0x37,0xf5,0xfe,0x59,0x76,0x0a,0x37,
- 0x37,0x37,0x41,0xc3,0x07,0xe8,0xba,0xb1,0xb1,0x11,0xa0,0x75,0x40,0x06,0x94,0x51,
- 0x4a,0xb1,0xf7,0xdf,0x65,0x24,0x08,0xc3,0x08,0xe3,0x2c,0xe6,0x78,0x7d,0x7d,0x0d,
- 0x48,0x3c,0xcf,0x82,0x6f,0x03,0xd1,0x14,0x38,0xa5,0xdc,0x08,0x8b,0x41,0x2c,0xeb,
- 0xea,0xc1,0xb0,0x1d,0x33,0xa0,0xce,0x37,0x86,0xb3,0x12,0x22,0x0d,0x7c,0x7d,0x7d,
- 0x85,0x41,0x5d,0xa4,0x45,0xdc,0x64,0x61,0x21,0xf9,0x43,0x4c,0x93,0x7e,0x1e,0x58,
- 0x8a,0x45,0x23,0xa1,0x3b,0x9c,0x37,0xfa,0xe6,0xcf,0x4e,0x4f,0x13,0xa9,0xd2,0x43,
- 0x7a,0xc5,0x72,0x04,0xe5,0x75,0x87,0xa3,0x93,0xd3,0x44,0x4e,0xa1,0x46,0x80,0xbe,
- 0xee,0x70,0x24,0xac,0x42,0x32,0x79,0x4d,0x64,0x8d,0x00,0x69,0xdd,0xe1,0x08,0x78,
- 0x61,0xf7,0xfd,0xfd,0x1d,0x06,0xf2,0x9a,0xc8,0x32,0x80,0xbc,0xee,0x70,0x00,0xb4,
- 0x3b,0x09,0x78,0x7b,0x7b,0xeb,0xcc,0xe5,0x09,0x4d,0xe4,0xe0,0x06,0xa0,0x68,0xd7,
- 0xe3,0xe3,0xa3,0x24,0xdb,0x7b,0x7b,0x7b,0xe1,0xc2,0x89,0x5e,0x81,0x83,0x23,0x76,
- 0x76,0x76,0x54,0x76,0x77,0x77,0x55,0xf8,0x9d,0x5c,0xb8,0x47,0x47,0x47,0x0a,0x94,
- 0x70,0xca,0x46,0x5c,0x5e,0x5e,0x06,0x7b,0xdc,0x60,0x5f,0x1b,0x34,0x98,0xc4,0x9e,
- 0x1d,0xd4,0x30,0x38,0x54,0x24,0xdd,0x66,0xd8,0xd4,0x41,0x11,0x78,0x06,0x2d,0x66,
- 0xd5,0xdf,0x1b,0x04,0x3d,0xa3,0xff,0x67,0x9c,0x46,0xc1,0xbd,0x5c,0xc8,0x66,0x7f,
- 0x7f,0x3f,0xd0,0x44,0x06,0xe8,0xb0,0x09,0x4e,0x37,0x0b,0x8e,0xf0,0x8d,0xad,0xad,
- 0xad,0xc0,0x13,0xa8,0x10,0xf5,0xc5,0xc5,0xc5,0x98,0xc1,0x20,0x3a,0xbd,0xe1,0x37,
- 0x97,0x53,0x86,0x8e,0x68,0x9c,0xbb,0xa7,0x42,0xa7,0xfb,0xda,0x2d,0xae,0x9b,0xf6,
- 0x7a,0x4e,0x00,0x91,0x63,0x85,0x86,0xd3,0xe7,0xcc,0xa0,0x3b,0x94,0x67,0xd0,0xaf,
- 0x63,0xa1,0xd8,0xfe,0x97,0x56,0x32,0xf1,0xfe,0x93,0x93,0x13,0xd5,0xd1,0x71,0xad,
- 0x07,0x1d,0x68,0x51,0xaa,0x0a,0x9d,0x9b,0xd6,0x44,0xe6,0x9f,0x47,0x88,0xf8,0x8d,
- 0x8e,0xe7,0xdb,0xd9,0x8e,0x8f,0x8f,0x1b,0xdf,0x6a,0x79,0xb3,0x26,0x0b,0x56,0xed,
- 0xeb,0xe4,0xcf,0xbd,0xfa,0x1f,0x85,0x50,0xac,0x3a,0x1f,0xa3,0x52,0x21,0xf0,0x22,
- 0x0f,0x19,0x9f,0x99,0xd0,0x1d,0x8e,0x86,0xda,0x4c,0xea,0x64,0x8e,0xb0,0x93,0x40,
- 0x35,0xaf,0x89,0x1c,0x23,0x25,0x4c,0x5a,0x41,0x9c,0x16,0x8d,0x28,0x58,0x3b,0x38,
- 0x38,0x98,0x57,0x51,0xc7,0xe3,0xf9,0xd2,0xe9,0x62,0x93,0x07,0x38,0xb1,0x9f,0x57,
- 0x43,0x30,0x12,0xe4,0x75,0x87,0xa2,0x58,0x8a,0x39,0x40,0xa4,0x4b,0xe1,0x56,0x0e,
- 0x57,0x0c,0x3a,0x64,0x5e,0x0e,0x11,0x39,0x6c,0xd0,0xf8,0x6b,0xdf,0xce,0x09,0x5e,
- 0x61,0x0c,0x75,0x3a,0xce,0x85,0xe1,0x30,0x8a,0x7f,0xeb,0x07,0xd0,0xc2,0xe5,0xe5,
- 0xe5,0x45,0xb1,0x6f,0x5c,0xab,0xba,0xf7,0xd6,0xa6,0xb5,0xd6,0x5d,0x69,0x83,0xeb,
- 0x74,0x05,0xff,0xac,0xab,0xeb,0xf1,0x9b,0xcb,0xa8,0xd8,0x0a,0x69,0x31,0xe7,0xd7,
- 0xf8,0x24,0x2f,0x46,0x1a,0x79,0xf6,0x98,0x02,0x82,0x29,0x40,0x75,0x22,0x4f,0x91,
- 0x9d,0xab,0x58,0x81,0xb7,0xf3,0xf3,0x73,0x0d,0xc7,0x84,0x5b,0x7f,0x14,0xe6,0x7e,
- 0x5f,0xbb,0xc5,0x75,0xbd,0xd7,0x33,0xcf,0xeb,0x1c,0xdf,0xed,0xed,0xed,0xc6,0xb6,
- 0x47,0x9f,0xe1,0x2b,0x53,0x81,0x16,0x93,0x04,0x57,0x14,0xde,0xe4,0x77,0x9a,0x37,
- 0x31,0x16,0x45,0xf7,0x1e,0x1e,0x1e,0x14,0x4a,0xfd,0xaf,0xbd,0x73,0x80,0xb5,0x2d,
- 0x87,0xc2,0x70,0xc7,0x7c,0xf6,0xbb,0x1a,0xdb,0xb6,0xad,0x60,0x3c,0xc1,0xd8,0x88,
- 0x86,0xe1,0x8d,0xed,0x0c,0xc3,0x61,0xcc,0xb1,0x1d,0x8c,0x6d,0xdb,0xf3,0x6c,0xf5,
- 0x7b,0xc9,0x9f,0xa4,0x3b,0xdd,0x39,0x7d,0xa7,0xe9,0x3e,0xf7,0xec,0xbb,0xfe,0x64,
- 0xa5,0x3d,0xdd,0x3c,0xfd,0x57,0xd7,0xaa,0x76,0xcb,0x37,0xfd,0x05,0x60,0x2e,0x00,
- 0xd3,0xce,0x4c,0x14,0x46,0xa8,0x0a,0x42,0x3d,0x60,0x28,0xa6,0x9a,0x90,0x98,0x7a,
- 0x4a,0x3d,0xa5,0x1f,0x4b,0x83,0x70,0x5c,0x92,0x31,0x90,0x63,0xd8,0x38,0xc1,0x42,
- 0x40,0x3e,0xed,0xd3,0xd2,0xe4,0x83,0x80,0x58,0x3f,0xd9,0xc1,0xb1,0xf4,0x3c,0x75,
- 0x01,0xde,0xc1,0x37,0xe3,0x1c,0x1d,0x3c,0x84,0xbd,0x06,0x4a,0xe8,0x57,0x46,0x71,
- 0x7e,0x25,0x91,0xf6,0xd6,0x01,0x20,0x81,0x3f,0xca,0xa7,0xe0,0x6f,0xbf,0xfd,0x76,
- 0x63,0xfd,0xe2,0x90,0x4c,0x89,0x87,0x68,0x9e,0x4f,0x88,0x25,0x20,0x8e,0xcf,0x27,
- 0x2c,0x05,0xba,0x5c,0x21,0x56,0xc2,0xca,0x60,0x28,0x21,0xbd,0x70,0xcc,0xaf,0xa3,
- 0x57,0x8e,0xa9,0xe1,0xbc,0x07,0x56,0xc7,0xef,0xac,0xa2,0x3a,0x4c,0xfb,0x14,0x80,
- 0x4c,0xf7,0xb3,0x69,0xe8,0xc5,0x6b,0x74,0x60,0x84,0x6e,0x51,0x9e,0x2d,0xb2,0x31,
- 0xfd,0x8a,0x13,0x72,0x0c,0x49,0x04,0xd6,0x23,0x20,0x54,0x71,0x48,0x65,0x82,0x08,
- 0x69,0x58,0x19,0xc8,0xa7,0x05,0xc3,0x72,0x72,0x6a,0x59,0xe8,0xf9,0x00,0xc5,0xe4,
- 0xfd,0x98,0xa0,0x01,0xf1,0x4c,0xcc,0xa0,0xd2,0xcb,0xbb,0x70,0x1d,0x4a,0xd0,0x1a,
- 0x05,0x10,0x01,0x74,0xbd,0x36,0x5d,0xcb,0x26,0xa3,0xe5,0xeb,0x45,0x3c,0x69,0x22,
- 0x5f,0x35,0x7f,0x08,0xc3,0x52,0x30,0xd4,0x8b,0xd2,0x40,0x2a,0x84,0x32,0xf2,0x47,
- 0xa9,0x25,0x8d,0xd2,0x0a,0x81,0xcc,0x10,0xf2,0xd3,0xa8,0x20,0x4a,0x56,0x86,0x38,
- 0x04,0x22,0x34,0x33,0x99,0xbc,0x11,0x90,0x28,0x05,0x40,0x81,0x68,0x71,0xd0,0x95,
- 0xcd,0xb7,0x01,0x0c,0xd5,0x72,0x2f,0xd2,0x7c,0x2f,0x23,0xd7,0xa8,0xe9,0xdb,0x2a,
- 0x05,0xc0,0xf4,0xf6,0x64,0xb1,0x63,0x99,0x7e,0x44,0xa4,0x4b,0x01,0xc8,0x78,0x32,
- 0xdd,0xaf,0xd9,0xc7,0x78,0x38,0x71,0xc8,0x83,0xd4,0xa0,0x29,0x8a,0x50,0x8a,0x21,
- 0x95,0x78,0x2a,0x20,0x53,0xf7,0x62,0xc5,0x53,0x2a,0xa0,0xbe,0x85,0xe2,0xce,0x3b,
- 0xef,0x3c,0xe7,0x27,0x9c,0xf2,0x2e,0x28,0x9c,0xf3,0xeb,0x13,0x42,0x3a,0xef,0xd3,
- 0xbe,0x3a,0x80,0x32,0x00,0x0d,0xf7,0xeb,0xff,0x37,0xdd,0x2c,0x0d,0x2c,0x80,0x94,
- 0x00,0x62,0x10,0x4a,0x3d,0x5f,0xd3,0x30,0xc8,0x03,0xc1,0x9d,0xfa,0x15,0xaa,0xf7,
- 0xd6,0xfd,0x24,0x58,0x07,0x14,0x84,0xf3,0x65,0x5d,0x28,0xf1,0xa4,0x33,0x18,0xe5,
- 0x97,0x92,0x67,0x65,0x71,0x8e,0x51,0x29,0x85,0x78,0x07,0xa4,0x60,0xfd,0x6a,0xfa,
- 0x85,0x8d,0x68,0x0b,0xc6,0x4a,0x3f,0xe4,0xe3,0x17,0x99,0x54,0xd8,0x24,0x18,0xab,
- 0xf7,0x1b,0x51,0x88,0x0c,0x85,0x10,0x87,0xe9,0x85,0x7c,0x99,0x5b,0x91,0x1a,0x90,
- 0xa9,0x50,0xd7,0xe8,0xb7,0xd2,0x20,0x8d,0xde,0x43,0x59,0x12,0x84,0xdf,0x31,0xa9,
- 0x27,0x36,0xde,0x81,0xa5,0xb4,0xfa,0xf3,0xd3,0x3a,0xc8,0x72,0x81,0xd5,0xe2,0xff,
- 0xfa,0xb1,0x05,0xee,0xd9,0x9d,0x05,0x20,0xb3,0x7a,0xd5,0xdc,0xc2,0x02,0xc8,0xec,
- 0x53,0x1a,0xfd,0x87,0x11,0xf8,0x70,0x7d,0xe9,0x12,0x25,0x15,0x42,0x25,0x90,0xc7,
- 0xf9,0x8a,0x13,0x4a,0xc8,0x90,0x14,0x2b,0xc4,0x7f,0xcf,0x21,0x38,0x83,0xd0,0x6e,
- 0x15,0x48,0xf9,0x45,0xef,0x29,0x8a,0xcd,0x6f,0xf2,0x46,0x2e,0x30,0xdd,0x02,0x90,
- 0xa9,0x7e,0x47,0x0d,0x2a,0x52,0x5a,0x5c,0xb9,0x09,0xf0,0xf2,0xf8,0x5d,0x2c,0x0f,
- 0xa5,0x57,0x04,0xe2,0xe3,0x51,0x08,0xe2,0xf2,0xf9,0x1c,0x23,0x44,0xc8,0x94,0x08,
- 0x01,0xe9,0xae,0xa1,0xfc,0xf9,0x65,0x15,0x48,0x95,0x64,0x2c,0xa4,0xf2,0x02,0x3c,
- 0xfa,0xe8,0xa3,0x2a,0x08,0xa4,0xa5,0x5b,0x00,0xbd,0x00,0x99,0xde,0x14,0x78,0x16,
- 0xcf,0xc4,0xb7,0xfb,0x0f,0x26,0xe4,0x93,0x35,0xf1,0x03,0xb3,0x9f,0xff,0x69,0x75,
- 0x79,0xc2,0x1b,0xaf,0x2f,0xe1,0xaa,0xfd,0x5c,0x05,0x0a,0x42,0x90,0x2e,0x57,0x40,
- 0x7a,0xdc,0x0a,0x24,0x28,0x00,0xd2,0x14,0xd4,0xfe,0xa6,0x94,0xf3,0x5c,0x2c,0x10,
- 0x69,0x94,0x78,0x90,0x5b,0xc2,0x0b,0x12,0x5a,0xbe,0xc4,0x47,0xce,0xa7,0x25,0x42,
- 0xab,0x84,0x3a,0x51,0xec,0x3a,0xf5,0xa4,0x4e,0x98,0x30,0x81,0x78,0x5f,0xcc,0x0a,
- 0x46,0x53,0x71,0x03,0x68,0x2d,0xca,0x90,0x91,0x81,0x79,0xc7,0x13,0x90,0xa7,0x90,
- 0x19,0xef,0x43,0xc1,0x20,0x7f,0x66,0xcd,0x9a,0x15,0xdc,0x2b,0xf6,0x7e,0xaa,0x4b,
- 0xf5,0xcd,0xb4,0x70,0xea,0x1e,0x32,0xf9,0x06,0x21,0xf9,0x4b,0xa3,0xaa,0x32,0x49,
- 0x5a,0x3a,0x2b,0xd8,0x20,0x72,0x43,0xa2,0x23,0xbf,0x4d,0x01,0x5a,0x48,0x3c,0xa2,
- 0xb8,0x10,0x4b,0x2b,0xa6,0x00,0x34,0x2d,0x68,0x76,0x98,0x94,0x11,0xa6,0x7d,0x47,
- 0x50,0x5b,0xd2,0xc3,0xb0,0xec,0x94,0x30,0x7c,0x0c,0x2f,0x48,0x65,0x24,0xb5,0x62,
- 0x44,0x73,0x05,0xe9,0xf8,0x82,0x54,0xfe,0x68,0xbb,0xf6,0x15,0x0a,0x74,0x06,0x31,
- 0xc8,0x15,0x83,0xee,0x59,0x7d,0x66,0xfc,0x78,0x21,0x0b,0x00,0x41,0x34,0xcf,0x34,
- 0x9a,0x46,0x88,0xf0,0x60,0x85,0x8a,0x83,0xbf,0xfe,0x5e,0xe4,0x96,0x2c,0x1f,0x70,
- 0xdb,0x4c,0x3a,0xc1,0xcb,0x89,0x0e,0xd9,0x76,0xb2,0x42,0xc4,0x8b,0x8f,0x6f,0xb9,
- 0xed,0x91,0xfe,0xdc,0x95,0xea,0x9f,0xaf,0x4a,0xf5,0x79,0x41,0x5a,0x81,0xf3,0x25,
- 0x75,0xd7,0xa7,0xfc,0x7f,0xc2,0xe4,0xe7,0x4b,0xf8,0xff,0xd4,0xe0,0x37,0xd4,0xff,
- 0x57,0x95,0xaf,0x98,0x05,0xf0,0xab,0x6d,0x24,0x0f,0x7f,0xfe,0xfd,0xcf,0x02,0x37,
- 0x77,0xe4,0x14,0x37,0x77,0x70,0x5f,0xe7,0x5f,0xd5,0xf9,0xac,0x71,0x80,0xc0,0xff,
- 0x24,0x0c,0xb0,0x62,0xf9,0x6f,0x2c,0xa7,0xc0,0xfd,0xfb,0xb7,0x04,0xe7,0x7f,0xc9,
- 0x9c,0x40,0x7e,0x7d,0x9a,0xe2,0x45,0x14,0x80,0x92,0xcf,0x88,0x58,0x0a,0xd0,0xe4,
- 0xb5,0x9b,0x4c,0x75,0xbb,0xec,0x75,0xa4,0xdb,0xa8,0x23,0xa1,0x90,0xbf,0xc4,0xad,
- 0x5e,0x33,0x0f,0x05,0x23,0xe3,0x73,0x08,0xeb,0x5b,0x97,0x41,0x3b,0x9f,0xee,0xf0,
- 0xf8,0x54,0xf7,0xfa,0x52,0xae,0x74,0x42,0xc5,0x4b,0x28,0x00,0x3d,0x4b,0x98,0xa9,
- 0xa4,0xce,0x8c,0xff,0xe7,0xcd,0x77,0x7b,0x1d,0x74,0xa1,0x9b,0x39,0x94,0xb6,0x4a,
- 0xc6,0xd7,0x9f,0xbe,0xe9,0x26,0x6c,0xbd,0x9a,0xfb,0xa7,0x76,0xa6,0x60,0x29,0x82,
- 0xe7,0x2b,0x2c,0xdf,0x59,0x53,0xe4,0x7e,0x9a,0x0d,0x95,0x66,0x01,0xe2,0xc7,0x8a,
- 0xba,0x00,0x4a,0x3f,0x95,0xbf,0xa4,0x3f,0xb8,0x6a,0xed,0x96,0x6e,0xbb,0xdd,0xf6,
- 0x71,0x13,0xa6,0x4c,0x8c,0xa9,0x3f,0x17,0x10,0x3a,0xb0,0x64,0xd1,0x3c,0xf7,0xc3,
- 0x97,0x2f,0xb9,0x99,0x33,0xa6,0xa7,0x29,0x58,0x01,0xf4,0xb8,0x7b,0x19,0xd3,0x4f,
- 0xe9,0x97,0xfb,0x4b,0xb7,0x00,0x21,0xf9,0x65,0x15,0x40,0x93,0x20,0x92,0xb0,0x66,
- 0x99,0xfb,0xfa,0x93,0x57,0xdd,0xc0,0x0e,0x7b,0x05,0x99,0x53,0xad,0x02,0x2c,0x5e,
- 0xf0,0x8f,0xfb,0xf2,0x83,0x17,0xdc,0xa4,0xad,0x56,0x78,0xe5,0xda,0xba,0xbc,0xc9,
- 0x2f,0x74,0xbf,0x9c,0xe7,0x51,0xea,0x7f,0xf8,0xe1,0x07,0x92,0x89,0xeb,0x58,0xf2,
- 0xb0,0x70,0x24,0xad,0x8c,0x02,0xa0,0xa1,0xb8,0x81,0x14,0x0c,0x0d,0xcc,0x72,0x7f,
- 0x7d,0xf3,0xb2,0xfb,0xe3,0xab,0x17,0x6b,0x4b,0x88,0xfa,0x14,0x66,0xae,0x9f,0xe8,
- 0x31,0xa1,0xe9,0x01,0x9b,0xc0,0x85,0x28,0x4e,0x98,0x8f,0xf4,0xe7,0x21,0xfe,0x83,
- 0x4f,0xea,0x4c,0x1d,0x09,0xcd,0xef,0x00,0xca,0x54,0x00,0x96,0x28,0xc5,0x05,0xf0,
- 0x69,0x16,0xa6,0x5a,0xa4,0x44,0x10,0x0c,0xea,0x44,0x50,0x74,0x00,0xa7,0xbc,0xcf,
- 0xce,0x9f,0x05,0xc4,0xa4,0x13,0x26,0xb2,0xb2,0xe2,0x57,0x75,0xc8,0x56,0x33,0x8d,
- 0x53,0xfa,0xfd,0xeb,0xd3,0x0b,0x35,0x03,0xd9,0x6b,0x1f,0x68,0xae,0x7e,0xea,0xc3,
- 0x9a,0xaf,0x64,0x35,0x72,0x7e,0xce,0xff,0x87,0x78,0x5a,0x3d,0x01,0xf9,0xca,0xdb,
- 0x84,0x0a,0x20,0xe7,0x05,0xef,0xa1,0x78,0xa9,0x3a,0x00,0x9d,0x40,0x9a,0x30,0x9a,
- 0xdc,0xec,0x50,0x66,0x25,0xa7,0xe7,0xfb,0xda,0x84,0x4a,0x53,0xde,0x00,0x4c,0xee,
- 0x71,0x08,0xd7,0x9c,0x44,0xde,0x2f,0x3f,0x5f,0x9a,0xa9,0x04,0xf2,0x62,0x68,0x2c,
- 0x12,0x4c,0x1f,0xcf,0xce,0x5c,0x83,0x20,0x05,0x49,0xb1,0x42,0x4a,0x8b,0x59,0xce,
- 0x66,0x46,0x03,0x35,0x6b,0x07,0x53,0xc6,0x43,0x0d,0xf9,0xf9,0xc9,0xac,0xa8,0x14,
- 0xff,0x1f,0x49,0xcf,0xe8,0x07,0xc8,0x34,0xb9,0x45,0x3f,0x90,0x30,0xa4,0x5a,0x83,
- 0x8c,0xe1,0xe0,0xd6,0xc0,0xe6,0x03,0x80,0xd6,0x29,0x80,0x21,0x7d,0x3e,0x80,0x59,
- 0x80,0xf6,0x2b,0x80,0xc2,0x68,0x85,0xb0,0xfd,0x16,0xc0,0x90,0x3e,0x1f,0xc0,0x14,
- 0xa0,0xa5,0xe4,0x27,0xa4,0xb5,0x4d,0x01,0x0c,0xa1,0xe9,0x4f,0xa8,0x03,0xb4,0x60,
- 0xb9,0x78,0x43,0xde,0x7c,0x80,0xf6,0x5b,0x00,0x6b,0x05,0x44,0x49,0x6f,0x9f,0x02,
- 0x18,0xa2,0xa6,0x3f,0x85,0x70,0x73,0x01,0xed,0xaf,0x00,0x8e,0xe3,0x8e,0x20,0xeb,
- 0x0d,0x14,0xac,0x23,0x68,0x1c,0x12,0xaf,0x79,0x03,0x4a,0xb3,0x7e,0x80,0x71,0xaa,
- 0x14,0xe5,0x46,0x03,0xf9,0x64,0xbb,0x3f,0x60,0x23,0x80,0xa4,0x87,0xf1,0x7c,0x05,
- 0xe8,0x93,0xb5,0xf8,0xad,0x22,0x68,0xcd,0x40,0x1b,0x18,0x1a,0x17,0xeb,0x03,0x18,
- 0x6c,0x3e,0x80,0x91,0x2f,0xd8,0x58,0x80,0x55,0x02,0x15,0x0f,0xd6,0x0c,0x54,0xfa,
- 0xf8,0x50,0x00,0x53,0x04,0x48,0x8f,0xc5,0xcd,0x05,0xb4,0x14,0xfa,0x96,0x50,0x02,
- 0xe9,0x92,0x60,0x6d,0xe5,0xf6,0x29,0x80,0x41,0x24,0x8b,0x68,0x91,0x1d,0x84,0xed,
- 0x55,0x00,0x43,0x95,0xf8,0x5a,0x61,0xff,0xe5,0xf6,0x29,0x80,0x21,0x20,0xbe,0xae,
- 0xf4,0x8f,0x8c,0x8c,0xb8,0xa3,0x8f,0x3e,0x5a,0x6b,0x14,0x65,0x29,0xc0,0x18,0x5b,
- 0xb1,0xcb,0xcc,0xbf,0x56,0x06,0xaf,0xf3,0xfb,0x2c,0xad,0xef,0xb7,0xd5,0xd5,0x2a,
- 0xeb,0xfa,0x82,0xbb,0x7b,0x05,0x60,0x4d,0x5a,0xc3,0xd8,0x40,0xb5,0xa4,0x57,0xdd,
- 0x81,0xdf,0x61,0xdc,0x5d,0x72,0xc9,0x25,0xac,0xdf,0x80,0x68,0xf3,0xab,0xee,0x14,
- 0x80,0x8b,0x90,0xbd,0xf7,0xde,0xdb,0xf5,0x1c,0x06,0x11,0x0e,0xd1,0x0a,0x83,0xb4,
- 0x53,0x4f,0x3d,0x15,0xbf,0xcf,0x0a,0xe2,0x6c,0x18,0xc1,0x2a,0xe2,0x5a,0xce,0xa7,
- 0x7b,0x05,0xc0,0x7c,0xb0,0x93,0x27,0x61,0xef,0x60,0xd0,0x3e,0x46,0xd5,0x5a,0x3e,
- 0x04,0xb3,0xa7,0xd1,0xd5,0x57,0x5f,0xed,0x76,0xdd,0x75,0x57,0xcc,0x3f,0x7b,0x07,
- 0x60,0xb5,0x51,0x00,0x2c,0x40,0x77,0x2e,0x40,0xe4,0x63,0x3e,0xb8,0xd1,0x69,0xa7,
- 0x9d,0xe6,0x7a,0x02,0x83,0xb6,0x81,0x09,0x9a,0x7f,0xfb,0xed,0xb7,0x1f,0x5b,0xd8,
- 0xb9,0x8b,0x2f,0xbe,0xd8,0xed,0xb8,0xe3,0x8e,0x70,0xc4,0x8a,0x2d,0xac,0x24,0x8e,
- 0x10,0xc7,0x05,0x68,0x9b,0xbc,0x8e,0x3d,0x81,0x2b,0x58,0xa6,0x27,0xa6,0x00,0x54,
- 0x24,0xd0,0xa2,0xdd,0x76,0xdb,0x8d,0xe5,0xcb,0x1a,0xda,0x3d,0xd4,0x20,0x68,0xbb,
- 0x5c,0xd5,0xc5,0x0e,0x3b,0xec,0x30,0x42,0xed,0x73,0xc8,0x67,0xf9,0x54,0xd2,0x59,
- 0xab,0x81,0xd2,0x0f,0xf1,0x84,0x90,0x0f,0x77,0x1d,0x4b,0x3f,0xdc,0xa3,0x1e,0x7f,
- 0xc7,0x2c,0x00,0xa5,0x1f,0xf2,0xb9,0x19,0x0f,0x38,0xf0,0xc0,0x03,0xf1,0x31,0xe6,
- 0x0e,0x1a,0x24,0x1f,0xa1,0x84,0x5f,0x76,0xd9,0x65,0xec,0xde,0xc6,0x76,0xfa,0x6c,
- 0x61,0x07,0xc9,0x28,0x02,0x3b,0xac,0x91,0xe6,0x86,0x87,0x87,0xdd,0xc0,0xc0,0x00,
- 0x8b,0x4c,0xc3,0x55,0x2a,0xf9,0xe0,0x6f,0x36,0x8d,0x7a,0xc6,0x47,0x4e,0x8d,0xf9,
- 0x1d,0xb6,0x1c,0x61,0x2f,0x7f,0xf6,0x0e,0xd4,0x26,0xce,0xa4,0x61,0x0d,0xbe,0xfa,
- 0xea,0x2b,0xf6,0xf8,0xe7,0xb7,0xcb,0x87,0x41,0x80,0x60,0x0a,0x1e,0x15,0xb9,0x7d,
- 0xf6,0xd9,0x47,0x3b,0xa2,0x51,0xda,0x49,0xc7,0xef,0x73,0x4e,0x20,0xa4,0x71,0x8c,
- 0x73,0x36,0x70,0x2f,0xc3,0x67,0x71,0x01,0x2f,0xc6,0x14,0x40,0x2e,0x00,0x0b,0x80,
- 0x69,0x41,0x21,0x00,0x3b,0x7a,0x70,0x8c,0x34,0x6d,0xe3,0x0e,0x08,0x0d,0xf9,0xeb,
- 0x1a,0x11,0x42,0xa0,0x88,0x17,0xe9,0xf0,0x00,0xd9,0x84,0xfc,0xc6,0xf4,0x73,0x4c,
- 0xdb,0xe2,0x89,0x78,0x24,0x15,0x70,0xbf,0xc9,0xe8,0xe8,0xe8,0xcf,0x3e,0x72,0x0b,
- 0x15,0xc2,0x48,0x33,0x10,0xb2,0x03,0xe1,0x41,0xda,0xae,0x4d,0xdb,0xba,0x21,0x68,
- 0x9f,0x49,0xd7,0xa2,0x3c,0x0c,0x08,0x97,0x5f,0xc7,0xdc,0x53,0xbb,0xc7,0xc4,0x63,
- 0x19,0x58,0xaa,0x9f,0xe3,0x28,0x41,0xa4,0xc3,0x27,0x15,0x0c,0x16,0x5c,0xbd,0xb1,
- 0xbf,0x08,0x05,0x78,0xcc,0x45,0xa0,0xbd,0x71,0x65,0x05,0xf0,0x33,0xf8,0x1b,0x09,
- 0xfe,0x67,0x70,0x70,0x10,0xe1,0x58,0x86,0x98,0x28,0x1f,0x11,0xf2,0x95,0xee,0x5c,
- 0x09,0x69,0xec,0x54,0x8e,0x02,0xd0,0xce,0x57,0x27,0x4f,0x97,0xc4,0x0b,0x8f,0xc1,
- 0xbd,0xe6,0x03,0xdc,0xe5,0xe5,0x1c,0x2f,0x93,0xaa,0x56,0x40,0x4a,0xa0,0x10,0xad,
- 0xa3,0xd9,0x41,0xed,0x94,0x95,0x2d,0xb5,0xac,0xa9,0x21,0x1f,0xca,0x6f,0xb9,0x5f,
- 0x44,0xd6,0x41,0x64,0xcb,0xbf,0x67,0x62,0x3e,0x9c,0x13,0xd1,0x9d,0x20,0x91,0xc6,
- 0xfe,0x13,0xb8,0xff,0x9a,0x31,0xe8,0xea,0x20,0x44,0xc1,0x3a,0x80,0xd5,0x01,0xe4,
- 0x6e,0x09,0x11,0xd2,0x91,0x4c,0xc8,0xf4,0x9f,0xe5,0xef,0xf5,0x8c,0x14,0x40,0x80,
- 0xc4,0x6b,0x7c,0x70,0x4f,0x8d,0x12,0xe8,0x9c,0x40,0x0c,0x45,0x94,0x21,0x90,0x00,
- 0xf9,0xe4,0xdf,0xe0,0xef,0xf9,0x80,0xab,0x03,0x96,0xc0,0xcb,0xbc,0xb5,0x6d,0x83,
- 0x61,0x1e,0xdc,0xa6,0x4e,0x39,0x1a,0xf0,0xf2,0x90,0x97,0x55,0x96,0x6f,0x7d,0x0f,
- 0x38,0x84,0xcb,0x81,0x6e,0xe6,0x9e,0x0d,0x79,0xb9,0x8d,0xce,0x22,0x2f,0xbf,0x78,
- 0x59,0x6e,0xf9,0x39,0xe6,0xb1,0x1c,0xae,0xe0,0x0c,0xee,0xe0,0xd0,0xd5,0xc3,0xad,
- 0x03,0x63,0x75,0xc1,0xae,0xdd,0xd9,0xb0,0x20,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,
- 0x44,0xae,0x42,0x60,0x82,
+ 0xcb,0x00,0x00,0x04,0x19,0x69,0x43,0x43,0x50,0x6b,0x43,0x47,0x43,0x6f,0x6c,0x6f,
+ 0x72,0x53,0x70,0x61,0x63,0x65,0x47,0x65,0x6e,0x65,0x72,0x69,0x63,0x52,0x47,0x42,
+ 0x00,0x00,0x38,0x8d,0x8d,0x55,0x5d,0x68,0x1c,0x55,0x14,0x3e,0xbb,0x73,0x67,0x23,
+ 0x24,0xce,0x53,0x6c,0x34,0x85,0x74,0xa8,0x3f,0x0d,0x25,0x0d,0x93,0x56,0x34,0xa1,
+ 0xb4,0xba,0x7f,0xdd,0xdd,0x36,0x6e,0x96,0x49,0x36,0xda,0x22,0xe8,0x64,0xf6,0xee,
+ 0xce,0x98,0xc9,0xce,0x38,0x33,0xbb,0xfd,0xa1,0x4f,0x45,0x50,0x7c,0x31,0xea,0x9b,
+ 0x14,0xc4,0xbf,0xb7,0x80,0x20,0x28,0xf5,0x0f,0xdb,0x3e,0xb4,0x2f,0x95,0x0a,0x25,
+ 0xda,0xd4,0x20,0x28,0x3e,0xb4,0xf8,0x83,0x50,0xe8,0x8b,0xa6,0xeb,0x99,0x3b,0x33,
+ 0x99,0x69,0xba,0xb1,0xde,0x65,0xee,0x7c,0xf3,0x9d,0xef,0x9e,0x7b,0xee,0xb9,0x67,
+ 0xef,0x05,0xe8,0xb9,0xaa,0x58,0x96,0x91,0x14,0x01,0x16,0x9a,0xae,0x2d,0x17,0x32,
+ 0xe2,0x73,0x87,0x8f,0x88,0x3d,0x2b,0x90,0x84,0x87,0xa0,0x17,0x06,0xa1,0x57,0x51,
+ 0x1d,0x2b,0x5d,0xa9,0x4c,0x02,0x36,0x4f,0x0b,0x77,0xb5,0x5b,0xdf,0x43,0xc2,0x7b,
+ 0x5f,0xd9,0xd5,0xdd,0xfe,0x9f,0xad,0xb7,0x46,0x1d,0x15,0x20,0x71,0x1f,0x62,0xb3,
+ 0xe6,0xa8,0x0b,0x88,0x8f,0x01,0xf0,0xa7,0x55,0xcb,0x76,0x01,0x7a,0xfa,0x91,0x1f,
+ 0x3f,0xea,0x5a,0x1e,0xf6,0x62,0xe8,0xb7,0x31,0x40,0xc4,0x2f,0x7a,0xb8,0xe1,0x63,
+ 0xd7,0xc3,0x73,0x3e,0x7e,0x8d,0x69,0x66,0xe4,0x2c,0xe2,0xd3,0x88,0x05,0x55,0x53,
+ 0x6a,0x88,0x97,0x10,0x8f,0xcc,0xc5,0xf8,0x46,0x0c,0xfb,0x31,0xb0,0xd6,0x5f,0xa0,
+ 0x4d,0x6a,0xeb,0xaa,0xe8,0xe5,0xa2,0x62,0x9b,0x75,0xdd,0xa0,0xb1,0x70,0xef,0x61,
+ 0xfe,0x9f,0x6d,0xc1,0x68,0x85,0xf3,0x6d,0xc3,0xa7,0xcf,0x99,0x9f,0x3e,0x84,0xef,
+ 0x61,0x5c,0xfb,0x2b,0x35,0x25,0xe7,0xe1,0x51,0xc4,0x4b,0xaa,0x92,0x9f,0x46,0xfc,
+ 0x08,0xe2,0x6b,0x6d,0x7d,0xb6,0x1c,0xe0,0xdb,0x96,0x9b,0x91,0x11,0x3f,0x06,0x90,
+ 0xdc,0xde,0x9a,0xaf,0xa6,0x11,0xef,0x44,0x5c,0xac,0xdb,0x07,0xaa,0xbe,0x9f,0xa4,
+ 0xad,0xb5,0x8a,0x21,0x7e,0xe7,0x84,0x36,0xf3,0x2c,0xe2,0x2d,0x88,0xcf,0x37,0xe7,
+ 0xca,0x53,0xc1,0xd8,0xab,0xaa,0x93,0xc5,0x9c,0xc1,0x76,0xc4,0xb7,0x35,0x5a,0xf2,
+ 0xf2,0x3b,0x04,0xc0,0x89,0xba,0x5b,0x9a,0xf1,0xc7,0x72,0xfb,0x6d,0x53,0x9e,0xf2,
+ 0xe7,0xe5,0xea,0x35,0x9a,0xcb,0x7b,0x79,0x44,0xfc,0xfa,0xbc,0x79,0x48,0xf6,0x7d,
+ 0x72,0x9f,0x39,0xed,0xe9,0x7c,0xe8,0xf3,0x84,0x96,0x2d,0x07,0xfc,0xa5,0x97,0x94,
+ 0x83,0x15,0xc4,0x83,0x88,0x7f,0xa1,0x46,0x41,0xf6,0xe7,0xe2,0xfe,0xb1,0xdc,0x4a,
+ 0x10,0x03,0x19,0x6a,0x1a,0xe5,0x49,0x7f,0x2e,0x92,0xa3,0x0e,0x5b,0x2f,0xe3,0x5d,
+ 0x6d,0xa6,0xe8,0xcf,0x4b,0x0c,0x17,0x37,0xd4,0x1f,0x4b,0x16,0xeb,0xfa,0x81,0x52,
+ 0xa0,0xff,0x44,0xb3,0x8b,0x72,0x80,0xaf,0x59,0x06,0xab,0x51,0x8c,0x8d,0x4f,0xda,
+ 0x2d,0xb9,0xea,0xeb,0xf9,0x51,0xc5,0xce,0x17,0x7c,0x9f,0x7c,0x85,0x36,0xab,0x81,
+ 0x7f,0xbe,0x0d,0xb3,0x09,0x05,0x28,0x98,0x30,0x87,0xbd,0x0a,0x4d,0x58,0x03,0x11,
+ 0x64,0x28,0x40,0x06,0xdf,0x16,0xd8,0x68,0xa9,0x83,0x0e,0x06,0x32,0x14,0xad,0x14,
+ 0x19,0x8a,0x5f,0xa1,0x66,0x17,0x1b,0xe7,0xc0,0x3c,0xf2,0x3a,0xb4,0x99,0xcd,0xc1,
+ 0xbe,0xc2,0x94,0xfe,0xc8,0xc8,0x5f,0x83,0xf9,0xb8,0xce,0xb4,0x2a,0x64,0x87,0x3e,
+ 0x82,0x16,0xb2,0x1a,0xfc,0x8e,0xac,0x16,0xd3,0x65,0xf1,0xab,0x85,0x5c,0x63,0x13,
+ 0x3f,0x7e,0x2c,0x37,0x02,0x3f,0x26,0x19,0x20,0x12,0xd9,0x83,0xcf,0x5e,0x32,0x49,
+ 0xf6,0x91,0x71,0x32,0x01,0x22,0x79,0x8a,0x3c,0x4d,0xf6,0x93,0x1c,0xb2,0x13,0x64,
+ 0xef,0xfa,0xd8,0x4a,0x6c,0x45,0x5e,0x3c,0x37,0xd6,0xfd,0xbc,0x8c,0x33,0x52,0xa6,
+ 0x9b,0x45,0xdd,0x39,0xb4,0xbb,0xa0,0x60,0xff,0x33,0x2a,0x4c,0x5c,0x53,0xd7,0xac,
+ 0x2c,0x0e,0xb6,0x86,0x23,0xcb,0x29,0xfb,0x05,0x5d,0xbd,0xfc,0xc6,0x5f,0xb1,0x5c,
+ 0xe9,0x2c,0x37,0x51,0xb6,0xe2,0x19,0x9d,0xba,0x57,0xce,0xf9,0x5f,0xf9,0xeb,0xfc,
+ 0x32,0xf6,0x2b,0xfc,0x6a,0xa4,0xe0,0x7f,0xe4,0x57,0xf1,0xb7,0x72,0xc7,0x5a,0xcc,
+ 0xbb,0xb2,0x4c,0xc3,0xec,0x6c,0x58,0x73,0x77,0x55,0x1a,0x6d,0x06,0xe3,0x16,0xf0,
+ 0xd1,0x99,0xc5,0x89,0xc5,0x1d,0xf3,0x71,0xf1,0xe4,0x57,0x0f,0x46,0x7e,0x96,0xc9,
+ 0x99,0xe7,0xaf,0xf4,0x5d,0x3c,0x59,0x6f,0x2e,0x0e,0x46,0xac,0x97,0x05,0xfa,0x6a,
+ 0xf9,0x56,0x19,0x4e,0x8d,0x44,0xac,0xf4,0x83,0xf4,0x87,0xb4,0x2c,0xbd,0x27,0x7d,
+ 0x28,0xfd,0xc6,0xbd,0xcd,0x7d,0xca,0x7d,0xcd,0x7d,0xce,0x7d,0xc1,0x5d,0x02,0x91,
+ 0x3b,0xcb,0x9d,0xe3,0xbe,0xe1,0x2e,0x70,0x1f,0x73,0x5f,0xc6,0xf6,0x6a,0xf3,0x1a,
+ 0x5a,0xdf,0x7b,0x16,0x79,0x18,0xb7,0x67,0xe9,0x96,0x6b,0xac,0x4a,0x21,0x23,0x6c,
+ 0x15,0x1e,0x16,0x72,0xc2,0x36,0xe1,0x51,0x61,0x32,0xf2,0x27,0x0c,0x08,0x63,0x42,
+ 0x51,0xd8,0x81,0x96,0xad,0xeb,0xfb,0x16,0x9f,0x2f,0x9e,0x3d,0x1d,0x0e,0x63,0x1f,
+ 0xe6,0xa7,0xfb,0x5c,0xbe,0x2e,0x56,0x01,0x89,0xfb,0xb1,0x02,0xf4,0x4d,0xfe,0x55,
+ 0x55,0x54,0xe9,0x70,0x94,0x29,0x1d,0x56,0x6f,0x4d,0x38,0xbe,0x41,0x13,0x8c,0x24,
+ 0x43,0x64,0x8c,0x94,0x36,0x54,0xf7,0xb8,0x57,0xf3,0xa1,0x22,0x95,0x4f,0xe5,0x52,
+ 0x69,0x10,0x53,0x3b,0x53,0x13,0xa9,0xb1,0xd4,0x41,0x0f,0x87,0xb3,0xa6,0x76,0xa0,
+ 0x6d,0x02,0xfb,0xfc,0x1d,0xd5,0xa9,0x6e,0xb2,0x52,0xea,0xd2,0x63,0xde,0x7d,0x02,
+ 0x59,0xd3,0x3a,0x6e,0xeb,0x0d,0xcd,0x15,0x77,0x4b,0xd2,0x93,0x62,0x1a,0xaf,0x36,
+ 0x2a,0x96,0x9a,0xea,0xe8,0x88,0xa8,0x18,0x86,0xc8,0x4c,0x8e,0x68,0x53,0x87,0xda,
+ 0x6d,0x5a,0x1b,0x05,0xef,0xde,0xf4,0x8f,0xf4,0x9b,0x32,0xbb,0x0f,0x13,0x5b,0x2e,
+ 0x47,0x9c,0xfb,0x0c,0xc0,0xbe,0x3f,0xf1,0xec,0xfb,0x2e,0xe2,0x8e,0xb4,0x00,0x96,
+ 0x1c,0x80,0x81,0xc7,0x23,0x6e,0x18,0xcf,0xca,0x07,0xde,0x05,0x38,0xf3,0x84,0xda,
+ 0xb2,0xdb,0xc1,0x1d,0x91,0x48,0x7c,0x0b,0xe0,0xd4,0xf7,0xec,0xf6,0xbf,0xfa,0x32,
+ 0x78,0x7e,0xfd,0xd4,0xe9,0xdc,0xc4,0x73,0xac,0xe7,0x2d,0x80,0xb5,0x37,0x3b,0x9d,
+ 0xbf,0xdf,0xef,0x74,0xd6,0x3e,0x40,0xff,0xab,0x00,0x67,0x8d,0x7f,0x01,0xa0,0x9f,
+ 0x7c,0x55,0x03,0x5c,0x0b,0xef,0x00,0x00,0x00,0x38,0x65,0x58,0x49,0x66,0x4d,0x4d,
+ 0x00,0x2a,0x00,0x00,0x00,0x08,0x00,0x01,0x87,0x69,0x00,0x04,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x00,0x00,0x02,0xa0,0x02,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0x80,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x80,0x00,0x00,0x00,0x00,0x6b,0x46,0x26,0x4d,0x00,0x00,0x03,0x62,0x69,0x54,
+ 0x58,0x74,0x58,0x4d,0x4c,0x3a,0x63,0x6f,0x6d,0x2e,0x61,0x64,0x6f,0x62,0x65,0x2e,
+ 0x78,0x6d,0x70,0x00,0x00,0x00,0x00,0x00,0x3c,0x78,0x3a,0x78,0x6d,0x70,0x6d,0x65,
+ 0x74,0x61,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x3d,0x22,0x61,0x64,0x6f,0x62,
+ 0x65,0x3a,0x6e,0x73,0x3a,0x6d,0x65,0x74,0x61,0x2f,0x22,0x20,0x78,0x3a,0x78,0x6d,
+ 0x70,0x74,0x6b,0x3d,0x22,0x58,0x4d,0x50,0x20,0x43,0x6f,0x72,0x65,0x20,0x35,0x2e,
+ 0x34,0x2e,0x30,0x22,0x3e,0x0a,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x52,0x44,
+ 0x46,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x72,0x64,0x66,0x3d,0x22,0x68,0x74,0x74,
+ 0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,
+ 0x39,0x39,0x39,0x2f,0x30,0x32,0x2f,0x32,0x32,0x2d,0x72,0x64,0x66,0x2d,0x73,0x79,
+ 0x6e,0x74,0x61,0x78,0x2d,0x6e,0x73,0x23,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x3c,0x72,0x64,0x66,0x3a,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,
+ 0x6e,0x20,0x72,0x64,0x66,0x3a,0x61,0x62,0x6f,0x75,0x74,0x3d,0x22,0x22,0x0a,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,
+ 0x3a,0x64,0x63,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x70,0x75,0x72,0x6c,
+ 0x2e,0x6f,0x72,0x67,0x2f,0x64,0x63,0x2f,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,
+ 0x2f,0x31,0x2e,0x31,0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x49,0x70,0x74,0x63,0x34,0x78,0x6d,
+ 0x70,0x45,0x78,0x74,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x69,0x70,0x74,
+ 0x63,0x2e,0x6f,0x72,0x67,0x2f,0x73,0x74,0x64,0x2f,0x49,0x70,0x74,0x63,0x34,0x78,
+ 0x6d,0x70,0x45,0x78,0x74,0x2f,0x32,0x30,0x30,0x38,0x2d,0x30,0x32,0x2d,0x32,0x39,
+ 0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78,
+ 0x6d,0x6c,0x6e,0x73,0x3a,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3d,0x22,
+ 0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64,0x6f,0x62,0x65,0x2e,
+ 0x63,0x6f,0x6d,0x2f,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x2f,0x31,0x2e,
+ 0x30,0x2f,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x64,
+ 0x63,0x3a,0x63,0x72,0x65,0x61,0x74,0x6f,0x72,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x53,0x65,0x71,0x3e,
+ 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x3c,0x72,0x64,0x66,0x3a,0x6c,0x69,0x3e,0x4d,0x69,0x63,0x68,0x61,0x65,0x6c,0x20,
+ 0x53,0x77,0x65,0x65,0x74,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x6c,0x69,0x3e,0x0a,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,
+ 0x3a,0x53,0x65,0x71,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,
+ 0x2f,0x64,0x63,0x3a,0x63,0x72,0x65,0x61,0x74,0x6f,0x72,0x3e,0x0a,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x64,0x63,0x3a,0x72,0x69,0x67,0x68,0x74,0x73,
+ 0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,
+ 0x64,0x66,0x3a,0x41,0x6c,0x74,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x6c,0x69,0x20,0x78,
+ 0x6d,0x6c,0x3a,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x78,0x2d,0x64,0x65,0x66,0x61,0x75,
+ 0x6c,0x74,0x22,0x3e,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x32,0x30,
+ 0x31,0x30,0x20,0x41,0x70,0x70,0x6c,0x65,0x20,0x49,0x6e,0x63,0x2e,0x3c,0x2f,0x72,
+ 0x64,0x66,0x3a,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x41,0x6c,0x74,0x3e,0x0a,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x64,0x63,0x3a,0x72,0x69,0x67,0x68,
+ 0x74,0x73,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x49,0x70,
+ 0x74,0x63,0x34,0x78,0x6d,0x70,0x45,0x78,0x74,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69,
+ 0x6e,0x65,0x3e,0x4e,0x65,0x77,0x20,0x49,0x6d,0x61,0x67,0x65,0x3c,0x2f,0x49,0x70,
+ 0x74,0x63,0x34,0x78,0x6d,0x70,0x45,0x78,0x74,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69,
+ 0x6e,0x65,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x70,0x68,
+ 0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69,0x6e,0x65,
+ 0x3e,0x4e,0x65,0x77,0x20,0x49,0x6d,0x61,0x67,0x65,0x3c,0x2f,0x70,0x68,0x6f,0x74,
+ 0x6f,0x73,0x68,0x6f,0x70,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69,0x6e,0x65,0x3e,0x0a,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x44,0x65,0x73,0x63,
+ 0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,
+ 0x66,0x3a,0x52,0x44,0x46,0x3e,0x0a,0x3c,0x2f,0x78,0x3a,0x78,0x6d,0x70,0x6d,0x65,
+ 0x74,0x61,0x3e,0x0a,0xa0,0x50,0x98,0x64,0x00,0x00,0x13,0xdb,0x49,0x44,0x41,0x54,
+ 0x78,0xda,0xed,0x9d,0x07,0x90,0x55,0x35,0x17,0xc7,0xd7,0x5e,0xc7,0xde,0xd7,0x55,
+ 0xec,0xbd,0x0b,0x0a,0x28,0x88,0x88,0xae,0x05,0x7b,0xd7,0xc1,0xbe,0x2a,0x28,0x22,
+ 0xba,0xe8,0x88,0x8d,0xcf,0x82,0x34,0xa5,0x0a,0xa2,0x28,0xae,0xa8,0x58,0x41,0x71,
+ 0x64,0x11,0x07,0xc5,0x2e,0xa2,0xa0,0xa8,0xe8,0x88,0xd8,0x16,0x15,0xb0,0x20,0x56,
+ 0x14,0xcd,0xb7,0xbf,0xb8,0xe7,0x9a,0xcd,0xe6,0xbe,0x77,0xef,0x6b,0xbb,0xdc,0x97,
+ 0xcc,0xfc,0x27,0xf7,0xdd,0x92,0x77,0x6f,0xce,0x3f,0x27,0x27,0xc9,0x49,0x52,0x52,
+ 0x92,0x22,0x28,0xa5,0xca,0x6a,0x51,0x59,0x8b,0xea,0x5a,0xd4,0xd4,0x62,0x89,0xf2,
+ 0xa1,0xa9,0x87,0x25,0x75,0xb2,0xaa,0xae,0x93,0x5d,0x59,0x49,0xdc,0x50,0xfb,0x50,
+ 0x69,0x2d,0xaa,0x6a,0xb1,0xd4,0xe7,0xe7,0x32,0x1f,0x96,0xd6,0xc9,0xb2,0x34,0xaa,
+ 0xf0,0xcb,0x6b,0xb1,0xc8,0xe7,0x5b,0xe2,0x02,0x32,0x2d,0x4f,0x27,0xfc,0x0a,0x5f,
+ 0xea,0x13,0xaf,0x0d,0x2a,0x52,0x95,0x7c,0x2f,0xfc,0xe2,0x20,0x41,0xb9,0xab,0xce,
+ 0xf7,0x6a,0xbf,0xb8,0xaa,0x83,0x52,0x93,0x00,0x55,0xf6,0x1d,0x7b,0xee,0xb9,0xa7,
+ 0xda,0x7c,0xf3,0xcd,0xd5,0x4d,0x37,0xdd,0xe4,0xb3,0x2b,0x99,0xa1,0xca,0x6c,0xea,
+ 0x35,0x50,0xfd,0x1b,0x6c,0xb0,0x81,0xe2,0xf2,0xe5,0x97,0x5f,0xee,0xb3,0x2a,0xb9,
+ 0x55,0x41,0x59,0x49,0x5d,0x5b,0xb1,0x41,0xe8,0xd1,0xa3,0x87,0xba,0xe8,0xa2,0x8b,
+ 0xd4,0x13,0x4f,0x3c,0xe1,0xb3,0x2a,0xb9,0xa1,0xb2,0xa4,0xae,0xc3,0xc0,0x87,0xe2,
+ 0x0c,0xd5,0x10,0xa0,0xc6,0x75,0x65,0xe8,0xd0,0xa1,0xaa,0x4f,0x9f,0x3e,0xea,0xc5,
+ 0x17,0x5f,0xac,0x77,0x7e,0xe6,0xcc,0x99,0xfa,0x7c,0xdf,0xbe,0x7d,0xd5,0x9f,0x7f,
+ 0xfe,0xa9,0xe6,0xcf,0x9f,0xaf,0xaa,0xaa,0xaa,0x54,0xa7,0x4e,0x9d,0xd4,0x29,0xa7,
+ 0x9c,0xa2,0xfa,0xf5,0xeb,0xa7,0xe6,0xcd,0x9b,0xa7,0xd2,0xa5,0xf9,0xcf,0x3f,0xff,
+ 0xa8,0x57,0x5f,0x7d,0x55,0xdd,0x78,0xe3,0x8d,0xea,0xa8,0xa3,0x8e,0xd2,0x55,0xcd,
+ 0xd3,0x4f,0x3f,0x9d,0xf2,0x6d,0xbf,0xfc,0xf2,0x4b,0x75,0xfb,0xed,0xb7,0xab,0xd3,
+ 0x4e,0x3b,0x4d,0x1d,0x77,0xdc,0x71,0xda,0x3e,0xf9,0xe4,0x93,0x4f,0xea,0xdd,0x33,
+ 0x78,0xf0,0x60,0xfd,0x1f,0xcf,0x3d,0xf7,0x5c,0x68,0x3a,0xcf,0x3f,0xff,0xbc,0xbe,
+ 0x67,0xf4,0xe8,0xd1,0x0d,0xae,0x8d,0x1f,0x3f,0x5e,0x5d,0x79,0xe5,0x95,0xaa,0xbc,
+ 0xbc,0x5c,0x5d,0x7c,0xf1,0xc5,0xea,0xc1,0x07,0x1f,0xd4,0xef,0x9a,0xd0,0x50,0x03,
+ 0x01,0x9c,0xdd,0xbb,0x61,0x36,0x00,0x42,0xe4,0x3c,0x80,0x0c,0x9b,0x6c,0xb2,0x49,
+ 0xf0,0x5b,0xc0,0xb9,0xd7,0x5e,0x7b,0x2d,0x65,0x9a,0x57,0x5d,0x75,0x55,0x83,0xe7,
+ 0xc0,0xf9,0xe7,0x9f,0xaf,0x89,0xd5,0x80,0xaa,0xd5,0xd5,0x6a,0xbd,0xf5,0xd6,0x6b,
+ 0x70,0xff,0xda,0x6b,0xaf,0xad,0xaf,0x49,0x40,0x70,0x9c,0xdf,0x76,0xdb,0x6d,0x43,
+ 0xbf,0x7a,0xfb,0xed,0xb7,0xd7,0xf7,0x74,0xee,0xdc,0x39,0x38,0xf7,0xf3,0xcf,0x3f,
+ 0x6b,0x02,0xbb,0xde,0x09,0xb2,0xfd,0xf6,0xdb,0x6f,0x49,0x24,0xc0,0x92,0x92,0xb0,
+ 0x2b,0x51,0x08,0xb0,0xe9,0xa6,0x9b,0xaa,0xe5,0x97,0x5f,0x5e,0xb5,0x68,0xd1,0x42,
+ 0x67,0x66,0xbb,0x76,0xed,0x82,0x6b,0x65,0x65,0x65,0x6a,0xc9,0x92,0x25,0xce,0x34,
+ 0xd7,0x59,0x67,0x1d,0x1d,0xf3,0x9b,0x4c,0x3f,0xef,0xbc,0xf3,0x82,0x6b,0xe0,0xce,
+ 0x3b,0xef,0xac,0xf7,0xdc,0x87,0x1f,0x7e,0xa8,0x56,0x58,0x61,0x05,0x7d,0xed,0xd0,
+ 0x43,0x0f,0x55,0x13,0x26,0x4c,0x50,0x4f,0x3e,0xf9,0xa4,0xda,0x7d,0xf7,0xdd,0xf5,
+ 0xb9,0x0d,0x37,0xdc,0x30,0x10,0xd0,0xc3,0x0f,0x3f,0x1c,0xa4,0x83,0x86,0xb1,0xc3,
+ 0x4b,0x2f,0xbd,0x14,0x5c,0x9f,0x31,0x63,0x46,0x70,0xfe,0xf4,0xd3,0x4f,0xd7,0xe7,
+ 0xd6,0x5c,0x73,0x4d,0xad,0x65,0xd0,0x12,0xd7,0x5e,0x7b,0x6d,0xf0,0xbf,0x68,0xb6,
+ 0x24,0x86,0xac,0x08,0x40,0xe9,0x9b,0x34,0x69,0x52,0xbd,0xeb,0x10,0x41,0xae,0xdf,
+ 0x75,0xd7,0x5d,0xce,0x34,0xc1,0x09,0x27,0x9c,0xa0,0x7e,0xfd,0xf5,0xd7,0xe0,0x1a,
+ 0xaa,0x7c,0xad,0xb5,0xd6,0x0a,0xc8,0xf3,0xd7,0x5f,0x7f,0x05,0xd7,0x8e,0x3c,0xf2,
+ 0x48,0x7d,0x7e,0xe7,0x9d,0x77,0x56,0x4b,0x97,0xfe,0xd7,0x60,0xf9,0xfa,0xeb,0xaf,
+ 0xd5,0xca,0x2b,0xaf,0xac,0xaf,0x0d,0x1b,0x36,0x4c,0x9f,0xfb,0xfd,0xf7,0xdf,0xf5,
+ 0x7b,0x71,0xee,0xc2,0x0b,0x2f,0x6c,0xf0,0x5d,0x67,0x9d,0x75,0x96,0xbe,0xd6,0xbc,
+ 0x79,0xf3,0xe0,0xdc,0xb4,0x69,0xd3,0xd4,0x72,0xcb,0x2d,0xa7,0xcf,0x43,0x20,0x33,
+ 0x5c,0x72,0xc9,0x25,0x01,0xd9,0xcd,0x77,0xf2,0x04,0xa8,0xc5,0x3b,0xef,0xbc,0xd3,
+ 0xe0,0x39,0xea,0x7f,0x29,0x35,0x67,0x9e,0x79,0xa6,0x33,0xcd,0x63,0x8f,0x3d,0xd6,
+ 0x59,0xaf,0xd2,0xea,0x90,0xb4,0xe7,0xcc,0x99,0xa3,0xcf,0x2d,0x5c,0xb8,0x30,0x38,
+ 0xd7,0xbf,0x7f,0xff,0x06,0xcf,0xb4,0x6e,0xdd,0x5a,0x5f,0xc3,0x06,0x91,0x50,0x51,
+ 0x51,0x11,0x68,0x9a,0x3f,0xfe,0xf8,0x23,0x38,0xff,0xd3,0x4f,0x3f,0xa9,0xd5,0x57,
+ 0x5f,0x5d,0x5f,0x1b,0x39,0x72,0x64,0x03,0x21,0x43,0x40,0xfb,0xbd,0x26,0x4f,0x9e,
+ 0x1c,0xfc,0xff,0xdc,0xb9,0x73,0x3d,0x01,0x4c,0x02,0x90,0xa1,0xae,0xb0,0xc5,0x16,
+ 0x5b,0xe8,0xeb,0x08,0x27,0x4e,0xdf,0xc2,0xbd,0xf7,0xde,0x1b,0xa4,0x4d,0xc6,0x13,
+ 0x50,0xe3,0x72,0x6e,0x8f,0x3d,0xf6,0x50,0xc7,0x1f,0x7f,0x7c,0x3d,0xac,0xbf,0xfe,
+ 0xfa,0xfa,0xda,0x41,0x07,0x1d,0x14,0xa4,0x63,0x3e,0xf3,0xe8,0xa3,0x8f,0x06,0xe7,
+ 0x47,0x8c,0x18,0x11,0xa8,0x79,0xea,0x7c,0x09,0x1d,0x3a,0x74,0xd0,0xe7,0x57,0x5a,
+ 0x69,0xa5,0x06,0xe9,0x1f,0x70,0xc0,0x01,0x41,0x5a,0xa6,0x41,0x3c,0x76,0xec,0x58,
+ 0xfd,0x9f,0xe9,0x70,0xd9,0x65,0x97,0x15,0x1f,0x01,0xf6,0xde,0x7b,0x6f,0x7d,0x7d,
+ 0x87,0x1d,0x76,0x88,0x45,0x00,0x5a,0x01,0x92,0xb6,0xa8,0xe2,0x07,0x1e,0x78,0xc0,
+ 0x69,0x98,0xd9,0xa0,0x7a,0x30,0xc3,0x76,0xdb,0x6d,0xa7,0xcf,0x53,0x7d,0x48,0xd8,
+ 0x77,0xdf,0x7d,0x03,0x43,0xd3,0x0c,0xdb,0x6c,0xb3,0x4d,0xa4,0xff,0x30,0xc9,0xd4,
+ 0xbb,0x77,0xef,0x48,0xcf,0xd8,0x85,0xa0,0x28,0x08,0x80,0x05,0xce,0xf5,0xf6,0xed,
+ 0xdb,0xc7,0x22,0xc0,0x98,0x31,0x63,0x82,0xb4,0x5f,0x7e,0xf9,0xe5,0xc0,0xfa,0x97,
+ 0x73,0xbd,0x7a,0xf5,0x52,0x2f,0xbc,0xf0,0x82,0x13,0xd4,0xe3,0x66,0xa0,0x89,0xc8,
+ 0x33,0x2b,0xae,0xb8,0xa2,0xfa,0xf6,0xdb,0x6f,0x75,0x8b,0x45,0xd2,0x79,0xf3,0xcd,
+ 0x37,0xeb,0xdd,0xbb,0xff,0xfe,0xfb,0xeb,0xf3,0x5b,0x6d,0xb5,0x55,0x68,0xfa,0x60,
+ 0xc1,0x82,0x05,0xc1,0x33,0xdf,0x7d,0xf7,0x9d,0x7a,0xf7,0xdd,0x77,0xd3,0xa2,0xa9,
+ 0x57,0x1b,0x39,0x27,0x00,0x86,0xd2,0x1a,0x6b,0xac,0xe1,0x2c,0x69,0xe9,0x08,0x70,
+ 0xeb,0xad,0xb7,0x06,0x69,0xd7,0xd4,0xd4,0x04,0x6d,0x7f,0x39,0x47,0x9f,0x41,0xd4,
+ 0xf0,0xf9,0xe7,0x9f,0x07,0x86,0x1d,0x56,0xfd,0xa5,0x97,0x5e,0xaa,0x8f,0x69,0x39,
+ 0xd8,0xe1,0xdc,0x73,0xcf,0xd5,0xd7,0x56,0x5d,0x75,0xd5,0x7a,0x36,0x43,0x31,0x84,
+ 0xac,0x08,0x80,0x81,0xe6,0xea,0x48,0x91,0xeb,0xf7,0xdd,0x77,0x9f,0x33,0xcd,0x2e,
+ 0x5d,0xba,0x38,0xff,0x93,0x01,0x28,0x29,0x89,0xa6,0x31,0xd6,0xac,0x59,0x33,0x7d,
+ 0x7e,0xe3,0x8d,0x37,0x56,0x3f,0xfe,0xf8,0x63,0xe4,0x8f,0x3b,0xf8,0xe0,0x83,0xf5,
+ 0x73,0x3b,0xee,0xb8,0xa3,0x5a,0x77,0xdd,0x75,0xf5,0xf1,0x90,0x21,0x43,0x1a,0xdc,
+ 0xc7,0x7b,0xca,0x3b,0x43,0x42,0x4f,0x80,0x88,0x04,0xd8,0x69,0xa7,0x9d,0xd4,0x5b,
+ 0x6f,0xbd,0x55,0xaf,0xa7,0x8e,0x7a,0x9f,0x6b,0x08,0xcd,0x6e,0x36,0x49,0x9a,0xb4,
+ 0x12,0xae,0xbe,0xfa,0xea,0x7a,0xfd,0x04,0xf4,0xcc,0x49,0xba,0x77,0xdf,0x7d,0x77,
+ 0xbd,0xe7,0x68,0xf7,0xcb,0x35,0x0c,0x2b,0x4a,0xb7,0x04,0x9a,0x85,0xb4,0xe7,0xed,
+ 0xe6,0x28,0xe1,0xfe,0xfb,0xef,0xaf,0x57,0x1f,0xaf,0xb6,0xda,0x6a,0x4e,0x02,0xfd,
+ 0xfd,0xf7,0xdf,0xba,0x59,0x28,0x5a,0x80,0xe6,0xab,0x49,0x40,0x54,0x3f,0xef,0x40,
+ 0xb3,0xd3,0x13,0xc0,0x20,0x80,0x00,0xa1,0x1f,0x78,0xe0,0x81,0x81,0xea,0x5f,0x65,
+ 0x95,0x55,0x9c,0xdd,0xba,0x66,0x3f,0x80,0x58,0xe3,0x6d,0xdb,0xb6,0x0d,0x6c,0x06,
+ 0xd0,0xa6,0x4d,0x1b,0x67,0x4f,0xa0,0xa8,0x70,0x40,0xdb,0x9f,0x16,0x01,0x1d,0x50,
+ 0xf2,0x9f,0x1c,0xdb,0xe1,0x97,0x5f,0x7e,0xd1,0xff,0x21,0xcf,0x99,0x4d,0x45,0x3b,
+ 0xbc,0xf7,0xde,0x7b,0xaa,0xb4,0xb4,0xb4,0x5e,0x27,0x17,0x06,0x9c,0x69,0x20,0x3e,
+ 0xfb,0xec,0xb3,0xc5,0x43,0x80,0x8d,0x36,0xda,0x48,0x7f,0xf4,0x15,0x57,0x5c,0x11,
+ 0x4a,0x80,0x29,0x53,0xa6,0x68,0x2d,0x60,0x0a,0x95,0x0c,0x7b,0xe5,0x95,0x57,0x52,
+ 0x92,0x8a,0x76,0x37,0xfd,0xed,0x94,0x36,0x79,0x8e,0xe3,0x0b,0x2e,0xb8,0xa0,0x41,
+ 0xef,0xa1,0x19,0x9e,0x7a,0xea,0xa9,0x7a,0x64,0x11,0x23,0x8f,0x16,0x00,0x5d,0xcb,
+ 0xae,0x20,0x1d,0x3f,0xa6,0x61,0x19,0x16,0x7e,0xf8,0xe1,0x07,0xdd,0x77,0x21,0x7d,
+ 0x05,0x02,0x9a,0x9a,0x68,0x1e,0x8c,0xba,0xa2,0x21,0x40,0x58,0x70,0x19,0x81,0x58,
+ 0xd9,0x08,0xfd,0x9b,0x6f,0xbe,0x49,0xf9,0xac,0xad,0x55,0x28,0xe9,0xa8,0x6f,0xe0,
+ 0x2a,0xf5,0x61,0x61,0xd1,0xa2,0x45,0xea,0x8d,0x37,0xde,0xd0,0xcf,0xe5,0xc3,0x68,
+ 0xa3,0x4a,0xf8,0xf8,0xe3,0x8f,0x35,0x61,0x92,0xa8,0xf6,0x73,0x4e,0x80,0xa8,0xc1,
+ 0x3b,0x99,0x78,0x02,0x78,0x02,0x78,0x02,0x78,0x02,0x2c,0xd3,0x04,0x98,0x35,0x6b,
+ 0x96,0x1a,0x38,0x70,0xa0,0x1a,0x34,0x68,0x50,0xec,0xd1,0x31,0x9a,0x77,0x3c,0x9b,
+ 0xce,0x18,0xf3,0xa1,0x09,0x13,0xc0,0x07,0x4f,0x00,0x1f,0x3c,0x01,0x7c,0xf0,0x04,
+ 0xf0,0xc1,0x13,0xc0,0x07,0x4f,0x00,0x1f,0x3c,0x01,0x8a,0x23,0x24,0x75,0xae,0xa4,
+ 0x27,0x40,0xc4,0x90,0xcf,0x4e,0x2c,0xc6,0x1e,0x3c,0x01,0x9a,0x78,0xc8,0xc7,0x5c,
+ 0x49,0x26,0x9c,0xe0,0xb9,0x6c,0x7b,0x4f,0x7b,0x02,0x14,0x49,0xd8,0x65,0x97,0x5d,
+ 0xb4,0x56,0x61,0x52,0x8a,0x27,0x40,0x96,0x21,0xd3,0x79,0x87,0xf6,0x5c,0xc7,0xaf,
+ 0xbe,0xfa,0x4a,0xcf,0x4c,0xc2,0x25,0x7c,0xf8,0xf0,0xe1,0xce,0xf4,0x53,0x3d,0xcf,
+ 0x0c,0x25,0xbc,0x87,0x70,0x60,0x39,0xfa,0xe8,0xa3,0x55,0xcf,0x9e,0x3d,0xb5,0x03,
+ 0xa9,0x19,0x66,0xcf,0x9e,0xad,0x9f,0x91,0x6a,0x05,0x3f,0x45,0x7e,0x03,0xba,0xd8,
+ 0xed,0x10,0x65,0x4e,0x64,0xdc,0xef,0x49,0x1c,0x01,0x32,0x9d,0x77,0x68,0x0e,0x6e,
+ 0xe1,0x63,0x20,0xd3,0xd6,0xec,0xb9,0x83,0x51,0x3c,0xa4,0x3e,0xfb,0xec,0xb3,0xc0,
+ 0xf5,0xdc,0x04,0xde,0x45,0xa6,0xff,0xa4,0xe9,0xfd,0x6c,0x03,0x0f,0x26,0x33,0x44,
+ 0x9d,0x13,0x19,0xf7,0x7b,0x12,0x4b,0x80,0xb8,0xf3,0x0e,0xcd,0x0c,0x63,0x8e,0xa1,
+ 0x4c,0x40,0x21,0xb3,0x10,0x54,0x1c,0x02,0x88,0xb7,0x12,0x02,0x87,0x6c,0xbb,0xee,
+ 0xba,0x6b,0x70,0x0d,0x0f,0x28,0x53,0x03,0xdc,0x76,0xdb,0x6d,0x41,0x9a,0xbb,0xed,
+ 0xb6,0x9b,0xfe,0x0d,0x18,0x2c,0x93,0x10,0x67,0x4e,0x64,0xdc,0xef,0x49,0x2c,0x01,
+ 0xe2,0xce,0x3b,0x34,0x33,0x8c,0x89,0xae,0xe3,0xc6,0x8d,0x8b,0xd5,0x0a,0xb0,0x7d,
+ 0x24,0xbb,0x77,0xef,0x1e,0x58,0xf5,0xc4,0xe2,0x93,0xc8,0xc4,0xd9,0xb8,0x36,0x40,
+ 0x9c,0x39,0x91,0x71,0xbf,0x27,0xb1,0x04,0x88,0x33,0xef,0xd0,0xce,0xb0,0x01,0x03,
+ 0x06,0xc4,0x6e,0x06,0x9a,0xcf,0x33,0xbf,0xc0,0x0e,0x38,0xb9,0x86,0xcd,0x47,0x48,
+ 0x45,0x80,0x4c,0xe6,0x44,0xc6,0xf9,0x9e,0x44,0xdb,0x00,0xae,0xe0,0x9a,0x77,0x68,
+ 0x67,0x58,0x2a,0x07,0x97,0x28,0x04,0x70,0xb9,0x9c,0x9f,0x7c,0xf2,0xc9,0x19,0x11,
+ 0x20,0x93,0x39,0x91,0x71,0xbe,0xa7,0xe8,0x08,0xe0,0x9a,0x77,0x98,0x6b,0x02,0xb8,
+ 0x9e,0xcf,0x94,0x00,0x99,0xce,0x89,0xf4,0x04,0x88,0x31,0xef,0xb0,0x29,0x13,0x20,
+ 0xd3,0x39,0x91,0x9e,0x00,0x31,0xe6,0x1d,0x36,0x15,0x02,0xd0,0xbe,0x77,0xb5,0xfd,
+ 0x33,0x99,0x13,0x59,0xf4,0x04,0x88,0x3b,0xef,0xb0,0x31,0x09,0x20,0xcd,0x39,0xd7,
+ 0xac,0x26,0x42,0x26,0x73,0x22,0x8b,0x9e,0x00,0x71,0xe7,0x1d,0x36,0x26,0x01,0x30,
+ 0xe6,0xe4,0x9d,0x59,0x6d,0xcd,0x0e,0x99,0xcc,0x89,0x6c,0x92,0x04,0xa0,0x3d,0xcc,
+ 0x8a,0x1a,0x0c,0x7a,0x1c,0x7e,0xf8,0xe1,0x01,0x0e,0x3b,0xec,0x30,0xbd,0x3a,0x07,
+ 0xb3,0x78,0x01,0xeb,0x09,0x00,0xce,0xd1,0x85,0x7b,0xe2,0x89,0x27,0xea,0x66,0x4e,
+ 0xd7,0xae,0x5d,0xd5,0x0d,0x37,0xdc,0xa0,0x67,0xf6,0xd2,0x11,0x32,0x7d,0xfa,0x74,
+ 0x3d,0x8d,0x2b,0xac,0x1f,0x20,0xce,0xbc,0xc3,0xc6,0x24,0x80,0x39,0x2b,0x99,0x4e,
+ 0x1b,0xbe,0x99,0x2e,0x64,0x33,0xc4,0x9d,0x13,0xd9,0x64,0x08,0x80,0x9a,0x9d,0x3a,
+ 0x75,0xaa,0xee,0x94,0x81,0xbd,0x22,0x74,0x96,0x71,0x93,0xd8,0x05,0xf3,0x9e,0xb0,
+ 0xfb,0x5b,0xb5,0x6a,0xa5,0x3b,0x56,0x20,0x96,0xa8,0xf3,0x4c,0xe7,0x1d,0xd2,0x33,
+ 0x28,0xf7,0x2d,0x5e,0xbc,0x38,0xf4,0x7b,0xc2,0xe6,0x4a,0xa6,0x7b,0x9e,0xfa,0x9d,
+ 0x6b,0x54,0x41,0xae,0x70,0xdd,0x75,0xd7,0xd5,0x9b,0x94,0xba,0xdf,0x7e,0xfb,0x35,
+ 0xb8,0x27,0xce,0x9c,0xc8,0xa8,0xdf,0x93,0x37,0x02,0x20,0x10,0xea,0x2b,0x98,0x4f,
+ 0x69,0xa6,0x37,0xcb,0x04,0x2c,0x97,0xd8,0x3c,0x0e,0xbb,0x6e,0x82,0xf5,0x7a,0x10,
+ 0x3e,0xa4,0x02,0xac,0x08,0x86,0x2a,0xe4,0x3f,0x73,0x35,0xef,0xb0,0x31,0x02,0xef,
+ 0xcf,0xec,0x64,0x96,0xb0,0xb3,0x35,0x9b,0x19,0xf2,0x31,0x27,0x32,0xa7,0x04,0x40,
+ 0xe5,0xd0,0x7e,0x3d,0xe6,0x98,0x63,0xf4,0x48,0x58,0xae,0x80,0xe0,0x99,0xbf,0x4f,
+ 0x2f,0x9f,0xd9,0x19,0xc2,0x28,0x1b,0x19,0x81,0x26,0xf0,0xb3,0x8e,0x1a,0x91,0x00,
+ 0x2c,0xa0,0x30,0x6a,0xd4,0xa8,0x60,0xb8,0x32,0x57,0x60,0xcd,0x81,0xbd,0xf6,0xda,
+ 0x4b,0x75,0xec,0xd8,0xb1,0x41,0x4f,0x18,0xc0,0x28,0x62,0xb5,0x2f,0xb4,0x80,0x27,
+ 0x40,0x81,0x09,0x40,0xa6,0xd3,0xa1,0x42,0x1d,0x84,0xba,0x17,0xb5,0x8c,0xe1,0x26,
+ 0xb1,0x0b,0xe6,0x3d,0xae,0xfb,0xc5,0x66,0xa0,0x8d,0x4c,0x7d,0x4f,0xa9,0x37,0x49,
+ 0x41,0x55,0x00,0x31,0x38,0x66,0x54,0x8d,0xea,0x86,0xc1,0x1d,0x4f,0x80,0x02,0x10,
+ 0x80,0xba,0xea,0xed,0xb7,0xdf,0x56,0xdd,0xba,0x75,0xd3,0x82,0x61,0xb8,0xd5,0x06,
+ 0x64,0x90,0xd8,0x05,0xf3,0x1e,0xfb,0x7e,0x84,0xcb,0x3a,0xbe,0xb4,0x08,0x10,0xb0,
+ 0x08,0x9f,0x98,0xaa,0x00,0x62,0xb0,0x04,0x1d,0x96,0x30,0xe7,0xa8,0x37,0xbf,0xff,
+ 0xfe,0x7b,0x4d,0x00,0x3f,0xef,0x30,0xcf,0x04,0xc0,0xe0,0xc2,0xbb,0x05,0x6b,0x36,
+ 0x9f,0x40,0xb0,0x26,0xb0,0x27,0x30,0x26,0x71,0xb4,0x40,0xf0,0x8c,0xb1,0xb3,0x2a,
+ 0x09,0xe7,0x59,0xb1,0x03,0x3b,0x20,0x89,0x4b,0xb8,0x36,0x19,0x02,0x50,0xea,0x11,
+ 0x3e,0xcd,0xa8,0x7c,0x0b,0x1f,0x20,0x58,0x01,0x4e,0x10,0x18,0x7f,0x22,0x78,0x56,
+ 0xfb,0x42,0x43,0x6c,0xbd,0xf5,0xd6,0x8d,0x4e,0x00,0xaa,0x40,0x56,0x44,0xf9,0xe8,
+ 0xa3,0x8f,0x92,0x4b,0x00,0x84,0x4f,0xe6,0xe2,0xa9,0x52,0x08,0xe1,0x03,0x54,0x3d,
+ 0x75,0x7f,0xcb,0x96,0x2d,0x03,0x75,0x2f,0x82,0x67,0xfd,0xa1,0x2d,0xb7,0xdc,0x52,
+ 0xfb,0xe7,0xe7,0x8b,0x00,0xd8,0x14,0xd8,0x16,0x0c,0xb4,0x30,0x6a,0x88,0x2f,0x1e,
+ 0xfd,0x0a,0x27,0x9d,0x74,0x92,0x7e,0x27,0xc8,0x87,0xd7,0x11,0x1d,0x4d,0x54,0x85,
+ 0x38,0x67,0x2c,0xcb,0xfb,0x09,0x94,0xa4,0x63,0x39,0x6e,0x49,0x58,0xe2,0x85,0x22,
+ 0x00,0x16,0x3f,0x82,0xe7,0x58,0xd4,0xbd,0x29,0x78,0xf6,0x22,0xa0,0x53,0x86,0xfb,
+ 0xa2,0x12,0x00,0x0d,0x86,0xbf,0xde,0xeb,0xaf,0xbf,0xae,0x7b,0x12,0xe9,0x2c,0xb9,
+ 0xfe,0xfa,0xeb,0xf5,0x02,0x52,0xd8,0x1b,0xfc,0x07,0x3d,0x71,0xac,0x15,0xcc,0x0a,
+ 0x67,0x08,0x18,0xa3,0x12,0xb0,0xbe,0x20,0xc2,0x06,0xf4,0xc4,0x71,0x0f,0xab,0x90,
+ 0x7f,0xfa,0xe9,0xa7,0xda,0x1d,0x8b,0xce,0x25,0xe9,0x8b,0x48,0x14,0x01,0x68,0x5b,
+ 0xd3,0xc6,0xbe,0xe5,0x96,0x5b,0x0a,0x26,0x7c,0x21,0x80,0x08,0x5e,0xd4,0x3d,0xc2,
+ 0xc7,0xcf,0x0e,0x21,0xe1,0x08,0x81,0x43,0x24,0x06,0x23,0x3d,0x8d,0x74,0x9e,0x3c,
+ 0xf3,0xcc,0x33,0xda,0xe1,0x83,0x11,0x3f,0x76,0xf9,0xa0,0x23,0x09,0xd2,0xd2,0xc3,
+ 0xc6,0xda,0x80,0xf4,0x9a,0xe1,0x12,0x86,0x40,0x21,0x0f,0xe9,0x90,0x06,0xc2,0xe5,
+ 0x1c,0x83,0x2d,0x9b,0x6d,0xb6,0x99,0x76,0x17,0x63,0xa1,0x6b,0x13,0xa4,0xc1,0x7f,
+ 0xb2,0x72,0x18,0xfe,0x85,0xac,0x8b,0x48,0xf3,0x93,0x92,0x8f,0x01,0x8a,0xeb,0x19,
+ 0x1d,0x4d,0x89,0x23,0x00,0xa5,0x8a,0x8e,0x1d,0xac,0xf0,0x42,0x13,0x80,0x85,0x9e,
+ 0x45,0xf0,0x08,0x00,0xe1,0x8b,0xe0,0x11,0x1e,0x02,0xc3,0xdf,0x8d,0xfe,0x70,0xce,
+ 0xa3,0x15,0x38,0x27,0xa5,0x56,0x04,0x8a,0x00,0x19,0xfd,0xa3,0x1b,0x35,0x2a,0xf8,
+ 0x6f,0x62,0x9e,0x83,0x2c,0x08,0xfe,0xec,0xb3,0xcf,0xd6,0x24,0x63,0x25,0x34,0xd6,
+ 0x19,0xa6,0xf5,0x81,0x06,0x60,0x75,0x34,0xfa,0x21,0x12,0x47,0x00,0x3e,0x86,0xd2,
+ 0xcf,0x07,0x32,0xd8,0x50,0x48,0x02,0x50,0xb2,0x45,0xdd,0x23,0x78,0x84,0x80,0x5b,
+ 0x34,0x82,0x46,0x35,0xa3,0x82,0x39,0xc7,0xe2,0x94,0xf4,0x15,0xd0,0x1f,0x2e,0xb1,
+ 0x79,0x4c,0x6c,0x83,0xf3,0x3c,0x27,0x55,0x0a,0xe4,0x22,0x2d,0xfe,0x07,0xc2,0x40,
+ 0x24,0x08,0x84,0xba,0xa7,0x2a,0x60,0xf0,0x8a,0xd5,0x46,0x99,0x0d,0x84,0x47,0x11,
+ 0xfb,0x10,0xe1,0xaa,0x05,0x01,0xd0,0x02,0x54,0x3f,0x68,0x00,0x0a,0x4b,0xa2,0x08,
+ 0x80,0xfa,0x67,0x95,0x4d,0x3e,0xb2,0x90,0xc2,0x07,0x47,0x1c,0x71,0x44,0x50,0xcf,
+ 0x23,0x78,0x31,0xb8,0x50,0xe5,0x94,0x68,0x8c,0x42,0xd4,0xbb,0x40,0x6c,0x05,0x0c,
+ 0x45,0x11,0x2c,0xc2,0xe4,0x79,0xd1,0x1a,0x94,0x62,0x88,0xc3,0xe2,0xd1,0xc4,0xa4,
+ 0x47,0xda,0xdc,0x87,0xa6,0xa1,0xba,0x21,0x1d,0x06,0x62,0x18,0x31,0x94,0xd1,0x48,
+ 0xb4,0x51,0x18,0x30,0x56,0x25,0x36,0x8f,0xa3,0xde,0x6f,0x23,0xdd,0xf3,0x71,0xc0,
+ 0x40,0x19,0xdd,0xe7,0x51,0x48,0x59,0x12,0x66,0xfc,0x31,0xf0,0xc0,0x62,0x89,0x8d,
+ 0x41,0x00,0x11,0x3c,0x82,0x43,0xd5,0x53,0x2a,0x11,0xbe,0x59,0x15,0xd8,0x42,0xa5,
+ 0x3a,0xa0,0x4e,0x47,0xfd,0x73,0x2f,0x6a,0x9c,0x12,0x0f,0x49,0x10,0x2c,0xbd,0x87,
+ 0xf4,0x27,0x1c,0x72,0xc8,0x21,0x91,0x00,0x09,0x24,0x36,0x8f,0x73,0x75,0x7f,0x5c,
+ 0xd8,0xe9,0xdb,0xe0,0x1a,0xe4,0x45,0x63,0xcb,0x48,0x2a,0x5a,0xdc,0x74,0x27,0x8f,
+ 0x4c,0x00,0x54,0x1a,0xa3,0x52,0xef,0xbf,0xff,0x7e,0x41,0x85,0x4f,0x29,0xc6,0x10,
+ 0xa3,0xb4,0x63,0x71,0x53,0x52,0xa5,0x8e,0xa7,0x44,0x73,0x8d,0x3a,0x1a,0xc1,0x72,
+ 0x3f,0x7d,0x04,0x8c,0x0e,0xe2,0x22,0x0d,0xe3,0x25,0x36,0x8f,0x89,0x5d,0xd7,0x6d,
+ 0x14,0xfa,0x7e,0x1b,0xe9,0xde,0x3f,0x15,0xd8,0xef,0x80,0x96,0x13,0xfe,0x15,0xe6,
+ 0x50,0x3a,0x32,0x84,0x04,0xa9,0x34,0x41,0x28,0x01,0xb0,0x70,0xa9,0xeb,0x0a,0x25,
+ 0x7c,0x1c,0x26,0xa8,0x9f,0x69,0x96,0xc9,0x47,0xf0,0x41,0x30,0x1a,0xf0,0x91,0xb9,
+ 0x04,0x5a,0x41,0x62,0xf3,0x38,0x57,0xf7,0x17,0x02,0xfc,0x3f,0xf9,0x46,0xe9,0x37,
+ 0x1d,0x6d,0xc4,0x6f,0x02,0xbf,0x42,0x19,0x2c,0x8b,0x4d,0x00,0xd9,0x11,0xa3,0xd0,
+ 0x55,0x80,0x7c,0x00,0xec,0x47,0xa5,0x09,0xf0,0xee,0x91,0xd8,0x3c,0x0e,0xbb,0x9e,
+ 0x0e,0xd9,0x3e,0x1f,0x37,0x7d,0x1b,0xe9,0xbe,0x27,0xdd,0xfd,0x54,0x6d,0xd4,0xf5,
+ 0x61,0x0e,0x36,0x14,0x1e,0x7a,0x29,0x65,0xb0,0x6c,0x99,0x20,0x00,0xfd,0xfd,0x7c,
+ 0x14,0x5d,0xc0,0xd4,0x6b,0x12,0xbb,0x60,0xde,0xe3,0xba,0x3f,0xdb,0xeb,0xe9,0x10,
+ 0x37,0x7d,0x1b,0x99,0xbe,0x0f,0x25,0x1f,0x7b,0x26,0xcc,0xa3,0xca,0x84,0x39,0x58,
+ 0xb6,0xcc,0x68,0x00,0x8f,0xd4,0x48,0x25,0x70,0x4a,0xbd,0xd8,0x01,0xc4,0x51,0x7a,
+ 0x4a,0x3d,0x01,0x96,0x61,0x02,0x98,0xc2,0xb6,0x81,0xf6,0xf0,0x04,0x48,0x28,0x01,
+ 0x5c,0x02,0x17,0xa1,0x4b,0x9c,0x77,0x02,0x60,0x99,0x47,0xad,0x2f,0x3d,0xe2,0x03,
+ 0x43,0xcf,0x95,0xef,0xb6,0xc0,0x6d,0xa1,0x9b,0xc8,0x1b,0x01,0xb0,0x40,0x79,0x49,
+ 0x3a,0x6d,0x4c,0x30,0x08,0x23,0xb1,0x79,0x4c,0x8c,0x71,0x67,0x36,0xa3,0xc2,0x80,
+ 0xd7,0x8f,0x9d,0xee,0xb2,0x82,0x54,0xdf,0x1f,0x17,0x61,0x5d,0xf0,0x22,0x70,0x57,
+ 0x89,0xb7,0x0d,0xc9,0xbc,0x11,0x80,0xce,0x07,0xba,0x1c,0xa5,0xbb,0xd4,0xe5,0xc2,
+ 0x6d,0xba,0x7d,0xef,0xdb,0xbc,0x8d,0xda,0xaf,0xd5,0x99,0xaa,0xfd,0x61,0xd7,0xa8,
+ 0x83,0x0f,0xfd,0x17,0x72,0x4c,0xac,0x51,0x7b,0xdc,0xb6,0x7d,0x77,0xb5,0xf3,0x2e,
+ 0xad,0xf5,0x47,0xb8,0xba,0x38,0xed,0xff,0x33,0xcf,0xe5,0xe3,0x7e,0x1b,0xf6,0xf3,
+ 0x51,0xbe,0x3f,0xd5,0xf3,0x61,0xe0,0xfb,0xc3,0x34,0x6f,0x2a,0xa1,0xdb,0xad,0x88,
+ 0xbc,0x11,0x80,0x76,0xa7,0xe9,0xb9,0x93,0x0a,0xad,0x5a,0xb7,0x53,0x47,0x9f,0x78,
+ 0xb3,0xba,0xa8,0xdb,0x04,0x75,0x61,0xb7,0xa7,0x75,0xac,0x71,0xb9,0x11,0x1b,0x68,
+ 0x79,0xc0,0xa9,0xfa,0xe5,0xa3,0xa6,0x9f,0x4b,0x88,0x0b,0x9a,0xe9,0x8e,0x26,0x71,
+ 0x21,0x81,0x26,0x4c,0x45,0x00,0x57,0x93,0xd2,0x6e,0x4e,0xe6,0x8d,0x00,0xa8,0xf1,
+ 0x30,0x8f,0x5f,0x1b,0x7c,0x4c,0xcb,0x36,0x27,0xa8,0x2b,0x6f,0x7c,0x41,0x55,0xfe,
+ 0x6f,0x6a,0x5a,0x5c,0xd6,0x73,0xa2,0x6a,0xd1,0xaa,0x3c,0xa5,0x57,0xb1,0x09,0xbc,
+ 0x74,0x24,0x36,0x8f,0xa3,0xbe,0x5f,0x63,0xc3,0xf5,0xfe,0x94,0x6e,0x06,0xb7,0xc2,
+ 0x08,0x60,0x97,0x72,0x7b,0xec,0xc1,0x3c,0xce,0x0b,0x01,0x48,0x38,0xcc,0x03,0xd8,
+ 0xf6,0xf8,0x6d,0x7f,0x48,0x07,0x75,0x41,0xf7,0x7b,0x54,0xdf,0x51,0xb3,0x23,0x81,
+ 0x7b,0x79,0x26,0x2c,0xbd,0x5c,0x7a,0x20,0x67,0x92,0x7e,0x21,0xd2,0xc3,0xbe,0x92,
+ 0xb1,0x8e,0x30,0x02,0x84,0x0d,0x06,0xd9,0x83,0x4f,0x79,0x21,0x00,0x2a,0x91,0x71,
+ 0x72,0x17,0xce,0x38,0xe3,0x8c,0x20,0x06,0x6d,0xdb,0x77,0x54,0xb7,0x8c,0x9c,0xa6,
+ 0x86,0x3f,0x39,0xaf,0x21,0xc6,0x7d,0xfd,0x5f,0x5c,0x8b,0x01,0x0f,0x7c,0xa8,0x3a,
+ 0x1c,0x79,0xba,0x9e,0x5c,0x12,0x96,0x9e,0x79,0x2e,0x1f,0xc8,0xf6,0xff,0xb2,0x7d,
+ 0x9e,0xe1,0x60,0xbc,0xa0,0x18,0x14,0x0b,0x23,0x80,0x5d,0xd2,0xc3,0xc0,0xc8,0x67,
+ 0x5e,0x08,0x20,0x33,0x76,0xa3,0xa0,0x6d,0xbb,0x0e,0xea,0xec,0xae,0xfd,0x54,0xcf,
+ 0x81,0x13,0xd5,0x35,0x77,0x3c,0x1b,0xc4,0xfa,0xd8,0x88,0xbb,0xf5,0xaa,0x52,0x87,
+ 0x1f,0xd7,0x29,0x6d,0xda,0xf8,0xf0,0x49,0x6c,0x1e,0x47,0x7d,0x9f,0x7c,0xa7,0x97,
+ 0xcd,0xff,0x41,0x00,0x06,0x76,0x20,0x00,0xc0,0xef,0x21,0x4c,0x03,0xb8,0x4a,0xbb,
+ 0x3d,0xd4,0x9d,0x37,0x02,0x60,0x00,0x9e,0x73,0xce,0x39,0x91,0xc0,0x47,0xd1,0xa4,
+ 0x09,0xeb,0xb9,0x92,0xf3,0x30,0x9f,0x8c,0xb0,0x9f,0xc7,0x15,0x4b,0x62,0xf3,0x38,
+ 0xea,0xff,0xa7,0x43,0xbe,0xd3,0x8f,0xfa,0x7f,0x10,0x00,0x8f,0x25,0x11,0x3e,0x80,
+ 0x0c,0x61,0x1a,0xc0,0x55,0xda,0x5d,0xc8,0x0b,0x01,0x18,0x8f,0x47,0x60,0x2c,0x89,
+ 0xc6,0x5c,0x81,0x8a,0x8a,0x0a,0x1d,0xbb,0x20,0xd7,0x88,0x5d,0xb0,0x9f,0xb7,0xef,
+ 0x8f,0x7b,0x3d,0xdd,0xff,0xa7,0x4b,0x2f,0xdb,0xf7,0x8b,0xfb,0xfd,0x90,0x9e,0x82,
+ 0x80,0x17,0x13,0xde,0x4c,0x26,0x01,0xc2,0x0c,0x41,0x5b,0xe8,0x36,0x01,0xcc,0xb5,
+ 0x16,0xf2,0x46,0x00,0x9c,0x33,0x80,0xb8,0x4d,0xe3,0xc1,0x93,0x09,0xe4,0x59,0x62,
+ 0xf3,0x38,0xea,0xf5,0xb8,0xe9,0x15,0xfa,0xfe,0x28,0xdf,0x8f,0x93,0xab,0x2d,0x7c,
+ 0x10,0x66,0x08,0xda,0xa5,0x5c,0x84,0x6d,0x2e,0xb0,0x21,0x24,0xc8,0x0b,0x01,0xa8,
+ 0x9b,0xf0,0xa3,0xc3,0x3d,0x0b,0xf7,0x2b,0x3c,0x76,0xc4,0x69,0x33,0x15,0xc4,0x63,
+ 0xd7,0x06,0x19,0x90,0x6b,0x08,0x41,0xc5,0x05,0xdc,0x3c,0xce,0x16,0x61,0xdf,0x21,
+ 0x48,0x97,0x0f,0x22,0x7c,0xd2,0x12,0x0f,0x27,0x5b,0xf8,0x80,0x2a,0x21,0x2e,0x01,
+ 0x4c,0xd0,0xf3,0x5a,0x90,0xc1,0x20,0xf1,0xe4,0x71,0x7d,0x84,0x47,0xe6,0x08,0xb3,
+ 0x01,0x52,0x09,0xdc,0x3e,0x2e,0xd8,0x68,0x20,0x5a,0x41,0x5c,0xae,0xbd,0xf0,0xb2,
+ 0x03,0x4d,0x40,0x16,0x8f,0x0e,0xcb,0x6b,0x5b,0xf0,0xa6,0xd0,0x6d,0xf8,0xe1,0xe0,
+ 0x04,0xc2,0x55,0xea,0x6d,0xc1,0x33,0xa0,0x06,0x3c,0x01,0x12,0x4a,0x00,0x57,0x69,
+ 0x17,0xc1,0x7b,0x02,0x24,0x1c,0xae,0x92,0x6e,0x1e,0x03,0x7c,0x09,0x3c,0x01,0x12,
+ 0x0a,0x5b,0xe0,0x2e,0xe1,0x7b,0x02,0x14,0x01,0x01,0x44,0xc8,0x66,0x89,0x37,0x63,
+ 0xe0,0x09,0x90,0x50,0x02,0x98,0xc2,0x36,0x05,0xee,0x09,0x50,0x04,0x08,0x13,0xbc,
+ 0x6b,0x92,0x89,0x27,0x40,0x42,0x09,0x10,0x75,0x26,0x92,0x27,0x40,0x02,0x61,0x97,
+ 0xf4,0x30,0x30,0x7b,0xc8,0x13,0x20,0xa1,0x1a,0x20,0x4c,0xe0,0x9e,0x00,0x45,0xa2,
+ 0x01,0x5c,0xc2,0x77,0xc1,0x13,0x20,0xc1,0x04,0x10,0x21,0xdb,0x04,0x90,0xf5,0x05,
+ 0x3c,0x01,0x12,0x0a,0xbb,0x94,0x8b,0xb0,0x25,0x36,0x49,0xe0,0x09,0x50,0x24,0x04,
+ 0x08,0x5b,0x91,0x24,0x27,0x04,0xc0,0x35,0xc9,0xa3,0xe9,0xc0,0x2c,0xf1,0xae,0x25,
+ 0x68,0xcc,0x63,0xaf,0x01,0x12,0x88,0x54,0x25,0xde,0x86,0x27,0x40,0xc2,0x09,0x10,
+ 0xb6,0x90,0x14,0x0b,0x67,0x01,0x4f,0x80,0x84,0x12,0x20,0x6c,0xb5,0x30,0x59,0x31,
+ 0xcd,0x13,0x20,0xc1,0x70,0x95,0x74,0xf3,0x18,0xb0,0xaa,0xb9,0x27,0x40,0x42,0x61,
+ 0x0b,0xdc,0x16,0xbe,0xb9,0x8c,0x9d,0x27,0x40,0x82,0x09,0x20,0xa5,0x5c,0x84,0x2e,
+ 0x8b,0x6f,0xb0,0xd2,0x1a,0x0b,0x68,0x12,0x7b,0x02,0x24,0x94,0x00,0xa6,0xd0,0x81,
+ 0x29,0x74,0x56,0x0c,0x95,0x75,0x94,0x3d,0x01,0x12,0x08,0x11,0xbc,0x08,0x1c,0x98,
+ 0x8b,0x67,0x33,0x9f,0x00,0xb7,0x72,0x62,0x4f,0x80,0x04,0x42,0x04,0x6f,0x0b,0x5d,
+ 0x20,0xcb,0xe2,0xb3,0xcd,0x8d,0x27,0x40,0x02,0xe1,0x2a,0xe9,0xe6,0x3e,0x09,0x4c,
+ 0xce,0x61,0x06,0x37,0xfb,0x0d,0xcf,0x9a,0x35,0x2b,0xfb,0x95,0x42,0xa9,0x6f,0x7c,
+ 0xc6,0x37,0x0d,0x88,0xc0,0xcd,0x0d,0x30,0x88,0x99,0x4d,0x84,0xe0,0x01,0xc6,0x21,
+ 0x7b,0x28,0x56,0x57,0x57,0xeb,0xb5,0x82,0x59,0xf6,0x3f,0xab,0xc5,0xa2,0x0b,0xbd,
+ 0x65,0x8c,0x47,0x38,0xd8,0xd8,0x02,0x81,0x8b,0xb0,0x45,0xf0,0xb2,0xdd,0x0d,0x2b,
+ 0xb2,0x0d,0x19,0x32,0x44,0x8d,0x1d,0x3b,0x56,0xef,0x6c,0xf2,0xc5,0x17,0x5f,0xe8,
+ 0x8d,0x3f,0xd8,0x00,0x24,0xe3,0xe5,0xe2,0xd9,0x5d,0xcb,0x67,0x7e,0xe3,0x83,0x81,
+ 0x20,0x11,0xba,0xec,0x6b,0x24,0x7b,0x1c,0xb1,0xbf,0x51,0x97,0x2e,0x5d,0xd4,0xa0,
+ 0x41,0x83,0xf4,0xe6,0xdd,0x93,0x27,0x4f,0xd6,0xbb,0xbd,0x51,0x88,0xd9,0xd5,0x2c,
+ 0xa3,0xfd,0x02,0xd8,0x6c,0xe0,0x83,0x0f,0x3e,0xd0,0x6c,0xda,0x67,0x9f,0x7d,0xbc,
+ 0x10,0x1a,0x59,0xf8,0xe6,0xc6,0x56,0x08,0x1c,0x30,0x29,0xb7,0x73,0xe7,0xce,0x7a,
+ 0xb7,0xb4,0xc1,0x83,0x07,0x6b,0xe1,0x4f,0x9a,0x34,0x49,0x17,0x5c,0x36,0xb5,0x64,
+ 0x3f,0xa3,0x8c,0x76,0x0c,0xe1,0x21,0x76,0x0c,0x63,0xcb,0x18,0x12,0x2c,0xc4,0x96,
+ 0xb1,0x1e,0x6e,0x50,0xcf,0x8b,0xd0,0x59,0x97,0x01,0x50,0x2d,0xa3,0x99,0xd9,0xd0,
+ 0x73,0xc0,0x80,0x01,0x6a,0xf8,0xf0,0xe1,0xea,0xa1,0x87,0x1e,0xd2,0x25,0x9f,0x6a,
+ 0x9b,0x2d,0xed,0x50,0xfd,0x51,0x36,0xb3,0x82,0x00,0x4b,0x52,0x6d,0x1a,0xc5,0xbe,
+ 0x7c,0x30,0xab,0x50,0x5b,0xc7,0x7a,0xd4,0xdf,0x42,0x47,0x4a,0x3b,0x6d,0x7f,0x76,
+ 0x2a,0xed,0xdd,0xbb,0xb7,0xea,0xdb,0xb7,0xaf,0xba,0xe3,0x8e,0x3b,0xb4,0xe0,0xd9,
+ 0xd5,0x6c,0xdc,0xb8,0x71,0x7a,0x0f,0x45,0x34,0x36,0x25,0x3f,0xaa,0xf0,0x91,0x3d,
+ 0x04,0xa8,0x09,0xdb,0x36,0x6e,0xfe,0xfc,0xf9,0x6a,0xc6,0x8c,0x19,0xba,0x49,0x31,
+ 0x62,0xc4,0x08,0xd5,0xa3,0x47,0x0f,0x5f,0x1d,0x14,0x50,0xf8,0xcd,0x9a,0x35,0xd3,
+ 0x6b,0x00,0xf5,0xea,0xd5,0x2b,0x28,0xed,0x18,0x79,0xf7,0xdc,0x73,0x8f,0x2e,0xf1,
+ 0xc8,0x65,0xca,0x94,0x29,0x7a,0x47,0xf7,0x39,0x73,0xe6,0xa8,0x05,0x0b,0x16,0xc4,
+ 0xdd,0xc6,0xae,0x06,0x02,0x54,0xa7,0xda,0x38,0x72,0xee,0xdc,0xb9,0x7a,0x4b,0xf6,
+ 0x47,0x1e,0x79,0x44,0x0d,0x1b,0x36,0x4c,0xf5,0xeb,0xd7,0x4f,0x55,0x56,0x56,0xfe,
+ 0xbb,0x0c,0xac,0x6f,0x22,0xe6,0x65,0xb8,0x97,0x25,0xe0,0x4e,0x3d,0xf5,0x54,0x5d,
+ 0xb7,0x53,0xda,0x07,0x0e,0x1c,0xa8,0x0b,0x20,0xa5,0xfd,0xf1,0xc7,0x1f,0xd7,0x4d,
+ 0x3c,0x36,0xb1,0x9c,0x39,0x73,0xa6,0x16,0x3c,0xa5,0x9e,0xe6,0x9e,0xec,0x12,0x16,
+ 0x63,0x0f,0xc3,0x6a,0x08,0x50,0x99,0x6a,0xf3,0xc8,0x85,0x0b,0x17,0x06,0x9b,0x29,
+ 0x43,0x02,0x5e,0x84,0x0d,0x95,0xfb,0xf4,0xe9,0xa3,0x5f,0x90,0xad,0x65,0xc1,0xcd,
+ 0x37,0xdf,0xec,0x91,0x05,0x24,0x1f,0xc9,0x53,0x4a,0x7b,0xff,0xfe,0xfd,0xb5,0x61,
+ 0x47,0x9b,0x9e,0xd2,0x3e,0x61,0xc2,0x04,0x2d,0x83,0xe9,0xd3,0xa7,0x6b,0x79,0xd0,
+ 0xc4,0xa3,0xc4,0x53,0x48,0xd9,0x1b,0x99,0x02,0x9b,0xaa,0xb9,0x17,0x12,0x2a,0x21,
+ 0x40,0x19,0x76,0x5f,0x98,0x31,0xc8,0x06,0xc9,0x54,0x05,0xfc,0x29,0x9a,0x00,0xb5,
+ 0x33,0x66,0xcc,0x18,0xfd,0x62,0x6c,0xc2,0x3c,0x74,0xe8,0x50,0xad,0x96,0x3c,0xb2,
+ 0x07,0x79,0x49,0x9e,0x8e,0x1c,0x39,0x52,0x8d,0x1e,0x3d,0x5a,0x3d,0xf6,0xd8,0x63,
+ 0x6a,0xe2,0xc4,0x89,0xc1,0x6e,0xa5,0x6c,0x57,0x4b,0x69,0xa7,0x85,0x46,0x3d,0x9f,
+ 0xe5,0xc6,0xd5,0xc8,0xbc,0xac,0x84,0x50,0x7b,0x50,0x15,0xa6,0x05,0x84,0x04,0x68,
+ 0x02,0xaa,0x03,0x6c,0x02,0x0c,0x43,0x5a,0x07,0xb0,0x72,0xfc,0xf8,0xf1,0xda,0x08,
+ 0x61,0x57,0x6e,0x8f,0xcc,0x41,0x1e,0x92,0x97,0x6c,0x51,0x8b,0xd0,0x29,0xed,0xd3,
+ 0xa6,0x4d,0xd3,0xed,0x79,0x4a,0x3b,0xf9,0xbf,0x78,0xf1,0xe2,0x7a,0xa5,0x3d,0xcb,
+ 0xed,0x6a,0xab,0x4a,0x24,0xd4,0xfe,0x28,0xad,0xc5,0xa2,0x54,0x24,0xa0,0x3a,0x40,
+ 0xdd,0xb0,0x9f,0x30,0xad,0x03,0x9a,0x88,0x6c,0x2c,0x09,0x33,0x69,0x7a,0x78,0x64,
+ 0x0f,0xf2,0x92,0x3c,0x45,0xdb,0x52,0xd8,0xe6,0xcd,0x9b,0xa7,0x3b,0xe4,0x72,0x50,
+ 0xda,0xed,0x80,0xac,0x4b,0x4b,0xcc,0x50,0x7b,0xa2,0x3c,0xac,0x2a,0x10,0x22,0xc0,
+ 0x3c,0x88,0xc0,0x0b,0x41,0x06,0x54,0x11,0x2f,0x08,0xe8,0x75,0xf2,0xc8,0x1c,0x92,
+ 0x8f,0xe4,0x29,0x06,0x1d,0x1b,0x3e,0x52,0xda,0xd9,0x99,0x3c,0x07,0xa5,0xdd,0x56,
+ 0xfd,0xe5,0x25,0xae,0x50,0x7b,0xa1,0x22,0x15,0x09,0x84,0x08,0xbc,0x10,0x6c,0x84,
+ 0x10,0x1e,0xb9,0x07,0x79,0x9b,0x63,0xa1,0x9b,0xc2,0xaf,0x28,0x49,0x15,0xea,0x34,
+ 0xc1,0x22,0xe5,0x43,0xd2,0xc2,0xa2,0xd0,0x92,0xef,0x20,0x41,0x69,0x9d,0x61,0xb8,
+ 0xd4,0xe7,0xdb,0x32,0x1f,0x96,0xd6,0xc9,0xb2,0xb4,0x24,0x6e,0xa8,0x6b,0x22,0x56,
+ 0xd6,0x75,0x16,0xd5,0xb8,0xba,0x8d,0x7d,0x68,0x72,0x61,0x49,0x9d,0xac,0xaa,0xeb,
+ 0x64,0x57,0x96,0x4a,0xc6,0xff,0x07,0x09,0xd2,0xdd,0xcf,0xb2,0x57,0xe1,0x2d,0x00,
+ 0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
};
--- /dev/null
+static const unsigned char printer_sm_png[] =
+{
+ 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,
+ 0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x08,0x03,0x00,0x00,0x00,0x60,0xdc,0x09,
+ 0xb5,0x00,0x00,0x04,0x19,0x69,0x43,0x43,0x50,0x6b,0x43,0x47,0x43,0x6f,0x6c,0x6f,
+ 0x72,0x53,0x70,0x61,0x63,0x65,0x47,0x65,0x6e,0x65,0x72,0x69,0x63,0x52,0x47,0x42,
+ 0x00,0x00,0x38,0x8d,0x8d,0x55,0x5d,0x68,0x1c,0x55,0x14,0x3e,0xbb,0x73,0x67,0x23,
+ 0x24,0xce,0x53,0x6c,0x34,0x85,0x74,0xa8,0x3f,0x0d,0x25,0x0d,0x93,0x56,0x34,0xa1,
+ 0xb4,0xba,0x7f,0xdd,0xdd,0x36,0x6e,0x96,0x49,0x36,0xda,0x22,0xe8,0x64,0xf6,0xee,
+ 0xce,0x98,0xc9,0xce,0x38,0x33,0xbb,0xfd,0xa1,0x4f,0x45,0x50,0x7c,0x31,0xea,0x9b,
+ 0x14,0xc4,0xbf,0xb7,0x80,0x20,0x28,0xf5,0x0f,0xdb,0x3e,0xb4,0x2f,0x95,0x0a,0x25,
+ 0xda,0xd4,0x20,0x28,0x3e,0xb4,0xf8,0x83,0x50,0xe8,0x8b,0xa6,0xeb,0x99,0x3b,0x33,
+ 0x99,0x69,0xba,0xb1,0xde,0x65,0xee,0x7c,0xf3,0x9d,0xef,0x9e,0x7b,0xee,0xb9,0x67,
+ 0xef,0x05,0xe8,0xb9,0xaa,0x58,0x96,0x91,0x14,0x01,0x16,0x9a,0xae,0x2d,0x17,0x32,
+ 0xe2,0x73,0x87,0x8f,0x88,0x3d,0x2b,0x90,0x84,0x87,0xa0,0x17,0x06,0xa1,0x57,0x51,
+ 0x1d,0x2b,0x5d,0xa9,0x4c,0x02,0x36,0x4f,0x0b,0x77,0xb5,0x5b,0xdf,0x43,0xc2,0x7b,
+ 0x5f,0xd9,0xd5,0xdd,0xfe,0x9f,0xad,0xb7,0x46,0x1d,0x15,0x20,0x71,0x1f,0x62,0xb3,
+ 0xe6,0xa8,0x0b,0x88,0x8f,0x01,0xf0,0xa7,0x55,0xcb,0x76,0x01,0x7a,0xfa,0x91,0x1f,
+ 0x3f,0xea,0x5a,0x1e,0xf6,0x62,0xe8,0xb7,0x31,0x40,0xc4,0x2f,0x7a,0xb8,0xe1,0x63,
+ 0xd7,0xc3,0x73,0x3e,0x7e,0x8d,0x69,0x66,0xe4,0x2c,0xe2,0xd3,0x88,0x05,0x55,0x53,
+ 0x6a,0x88,0x97,0x10,0x8f,0xcc,0xc5,0xf8,0x46,0x0c,0xfb,0x31,0xb0,0xd6,0x5f,0xa0,
+ 0x4d,0x6a,0xeb,0xaa,0xe8,0xe5,0xa2,0x62,0x9b,0x75,0xdd,0xa0,0xb1,0x70,0xef,0x61,
+ 0xfe,0x9f,0x6d,0xc1,0x68,0x85,0xf3,0x6d,0xc3,0xa7,0xcf,0x99,0x9f,0x3e,0x84,0xef,
+ 0x61,0x5c,0xfb,0x2b,0x35,0x25,0xe7,0xe1,0x51,0xc4,0x4b,0xaa,0x92,0x9f,0x46,0xfc,
+ 0x08,0xe2,0x6b,0x6d,0x7d,0xb6,0x1c,0xe0,0xdb,0x96,0x9b,0x91,0x11,0x3f,0x06,0x90,
+ 0xdc,0xde,0x9a,0xaf,0xa6,0x11,0xef,0x44,0x5c,0xac,0xdb,0x07,0xaa,0xbe,0x9f,0xa4,
+ 0xad,0xb5,0x8a,0x21,0x7e,0xe7,0x84,0x36,0xf3,0x2c,0xe2,0x2d,0x88,0xcf,0x37,0xe7,
+ 0xca,0x53,0xc1,0xd8,0xab,0xaa,0x93,0xc5,0x9c,0xc1,0x76,0xc4,0xb7,0x35,0x5a,0xf2,
+ 0xf2,0x3b,0x04,0xc0,0x89,0xba,0x5b,0x9a,0xf1,0xc7,0x72,0xfb,0x6d,0x53,0x9e,0xf2,
+ 0xe7,0xe5,0xea,0x35,0x9a,0xcb,0x7b,0x79,0x44,0xfc,0xfa,0xbc,0x79,0x48,0xf6,0x7d,
+ 0x72,0x9f,0x39,0xed,0xe9,0x7c,0xe8,0xf3,0x84,0x96,0x2d,0x07,0xfc,0xa5,0x97,0x94,
+ 0x83,0x15,0xc4,0x83,0x88,0x7f,0xa1,0x46,0x41,0xf6,0xe7,0xe2,0xfe,0xb1,0xdc,0x4a,
+ 0x10,0x03,0x19,0x6a,0x1a,0xe5,0x49,0x7f,0x2e,0x92,0xa3,0x0e,0x5b,0x2f,0xe3,0x5d,
+ 0x6d,0xa6,0xe8,0xcf,0x4b,0x0c,0x17,0x37,0xd4,0x1f,0x4b,0x16,0xeb,0xfa,0x81,0x52,
+ 0xa0,0xff,0x44,0xb3,0x8b,0x72,0x80,0xaf,0x59,0x06,0xab,0x51,0x8c,0x8d,0x4f,0xda,
+ 0x2d,0xb9,0xea,0xeb,0xf9,0x51,0xc5,0xce,0x17,0x7c,0x9f,0x7c,0x85,0x36,0xab,0x81,
+ 0x7f,0xbe,0x0d,0xb3,0x09,0x05,0x28,0x98,0x30,0x87,0xbd,0x0a,0x4d,0x58,0x03,0x11,
+ 0x64,0x28,0x40,0x06,0xdf,0x16,0xd8,0x68,0xa9,0x83,0x0e,0x06,0x32,0x14,0xad,0x14,
+ 0x19,0x8a,0x5f,0xa1,0x66,0x17,0x1b,0xe7,0xc0,0x3c,0xf2,0x3a,0xb4,0x99,0xcd,0xc1,
+ 0xbe,0xc2,0x94,0xfe,0xc8,0xc8,0x5f,0x83,0xf9,0xb8,0xce,0xb4,0x2a,0x64,0x87,0x3e,
+ 0x82,0x16,0xb2,0x1a,0xfc,0x8e,0xac,0x16,0xd3,0x65,0xf1,0xab,0x85,0x5c,0x63,0x13,
+ 0x3f,0x7e,0x2c,0x37,0x02,0x3f,0x26,0x19,0x20,0x12,0xd9,0x83,0xcf,0x5e,0x32,0x49,
+ 0xf6,0x91,0x71,0x32,0x01,0x22,0x79,0x8a,0x3c,0x4d,0xf6,0x93,0x1c,0xb2,0x13,0x64,
+ 0xef,0xfa,0xd8,0x4a,0x6c,0x45,0x5e,0x3c,0x37,0xd6,0xfd,0xbc,0x8c,0x33,0x52,0xa6,
+ 0x9b,0x45,0xdd,0x39,0xb4,0xbb,0xa0,0x60,0xff,0x33,0x2a,0x4c,0x5c,0x53,0xd7,0xac,
+ 0x2c,0x0e,0xb6,0x86,0x23,0xcb,0x29,0xfb,0x05,0x5d,0xbd,0xfc,0xc6,0x5f,0xb1,0x5c,
+ 0xe9,0x2c,0x37,0x51,0xb6,0xe2,0x19,0x9d,0xba,0x57,0xce,0xf9,0x5f,0xf9,0xeb,0xfc,
+ 0x32,0xf6,0x2b,0xfc,0x6a,0xa4,0xe0,0x7f,0xe4,0x57,0xf1,0xb7,0x72,0xc7,0x5a,0xcc,
+ 0xbb,0xb2,0x4c,0xc3,0xec,0x6c,0x58,0x73,0x77,0x55,0x1a,0x6d,0x06,0xe3,0x16,0xf0,
+ 0xd1,0x99,0xc5,0x89,0xc5,0x1d,0xf3,0x71,0xf1,0xe4,0x57,0x0f,0x46,0x7e,0x96,0xc9,
+ 0x99,0xe7,0xaf,0xf4,0x5d,0x3c,0x59,0x6f,0x2e,0x0e,0x46,0xac,0x97,0x05,0xfa,0x6a,
+ 0xf9,0x56,0x19,0x4e,0x8d,0x44,0xac,0xf4,0x83,0xf4,0x87,0xb4,0x2c,0xbd,0x27,0x7d,
+ 0x28,0xfd,0xc6,0xbd,0xcd,0x7d,0xca,0x7d,0xcd,0x7d,0xce,0x7d,0xc1,0x5d,0x02,0x91,
+ 0x3b,0xcb,0x9d,0xe3,0xbe,0xe1,0x2e,0x70,0x1f,0x73,0x5f,0xc6,0xf6,0x6a,0xf3,0x1a,
+ 0x5a,0xdf,0x7b,0x16,0x79,0x18,0xb7,0x67,0xe9,0x96,0x6b,0xac,0x4a,0x21,0x23,0x6c,
+ 0x15,0x1e,0x16,0x72,0xc2,0x36,0xe1,0x51,0x61,0x32,0xf2,0x27,0x0c,0x08,0x63,0x42,
+ 0x51,0xd8,0x81,0x96,0xad,0xeb,0xfb,0x16,0x9f,0x2f,0x9e,0x3d,0x1d,0x0e,0x63,0x1f,
+ 0xe6,0xa7,0xfb,0x5c,0xbe,0x2e,0x56,0x01,0x89,0xfb,0xb1,0x02,0xf4,0x4d,0xfe,0x55,
+ 0x55,0x54,0xe9,0x70,0x94,0x29,0x1d,0x56,0x6f,0x4d,0x38,0xbe,0x41,0x13,0x8c,0x24,
+ 0x43,0x64,0x8c,0x94,0x36,0x54,0xf7,0xb8,0x57,0xf3,0xa1,0x22,0x95,0x4f,0xe5,0x52,
+ 0x69,0x10,0x53,0x3b,0x53,0x13,0xa9,0xb1,0xd4,0x41,0x0f,0x87,0xb3,0xa6,0x76,0xa0,
+ 0x6d,0x02,0xfb,0xfc,0x1d,0xd5,0xa9,0x6e,0xb2,0x52,0xea,0xd2,0x63,0xde,0x7d,0x02,
+ 0x59,0xd3,0x3a,0x6e,0xeb,0x0d,0xcd,0x15,0x77,0x4b,0xd2,0x93,0x62,0x1a,0xaf,0x36,
+ 0x2a,0x96,0x9a,0xea,0xe8,0x88,0xa8,0x18,0x86,0xc8,0x4c,0x8e,0x68,0x53,0x87,0xda,
+ 0x6d,0x5a,0x1b,0x05,0xef,0xde,0xf4,0x8f,0xf4,0x9b,0x32,0xbb,0x0f,0x13,0x5b,0x2e,
+ 0x47,0x9c,0xfb,0x0c,0xc0,0xbe,0x3f,0xf1,0xec,0xfb,0x2e,0xe2,0x8e,0xb4,0x00,0x96,
+ 0x1c,0x80,0x81,0xc7,0x23,0x6e,0x18,0xcf,0xca,0x07,0xde,0x05,0x38,0xf3,0x84,0xda,
+ 0xb2,0xdb,0xc1,0x1d,0x91,0x48,0x7c,0x0b,0xe0,0xd4,0xf7,0xec,0xf6,0xbf,0xfa,0x32,
+ 0x78,0x7e,0xfd,0xd4,0xe9,0xdc,0xc4,0x73,0xac,0xe7,0x2d,0x80,0xb5,0x37,0x3b,0x9d,
+ 0xbf,0xdf,0xef,0x74,0xd6,0x3e,0x40,0xff,0xab,0x00,0x67,0x8d,0x7f,0x01,0xa0,0x9f,
+ 0x7c,0x55,0x03,0x5c,0x0b,0xef,0x00,0x00,0x00,0x38,0x65,0x58,0x49,0x66,0x4d,0x4d,
+ 0x00,0x2a,0x00,0x00,0x00,0x08,0x00,0x01,0x87,0x69,0x00,0x04,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x00,0x00,0x02,0xa0,0x02,0x00,0x04,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0x30,0xa0,0x03,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x30,0x00,0x00,0x00,0x00,0xf8,0xff,0x4e,0x36,0x00,0x00,0x03,0x62,0x69,0x54,
+ 0x58,0x74,0x58,0x4d,0x4c,0x3a,0x63,0x6f,0x6d,0x2e,0x61,0x64,0x6f,0x62,0x65,0x2e,
+ 0x78,0x6d,0x70,0x00,0x00,0x00,0x00,0x00,0x3c,0x78,0x3a,0x78,0x6d,0x70,0x6d,0x65,
+ 0x74,0x61,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x3d,0x22,0x61,0x64,0x6f,0x62,
+ 0x65,0x3a,0x6e,0x73,0x3a,0x6d,0x65,0x74,0x61,0x2f,0x22,0x20,0x78,0x3a,0x78,0x6d,
+ 0x70,0x74,0x6b,0x3d,0x22,0x58,0x4d,0x50,0x20,0x43,0x6f,0x72,0x65,0x20,0x35,0x2e,
+ 0x34,0x2e,0x30,0x22,0x3e,0x0a,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x52,0x44,
+ 0x46,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x72,0x64,0x66,0x3d,0x22,0x68,0x74,0x74,
+ 0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,
+ 0x39,0x39,0x39,0x2f,0x30,0x32,0x2f,0x32,0x32,0x2d,0x72,0x64,0x66,0x2d,0x73,0x79,
+ 0x6e,0x74,0x61,0x78,0x2d,0x6e,0x73,0x23,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x3c,0x72,0x64,0x66,0x3a,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,
+ 0x6e,0x20,0x72,0x64,0x66,0x3a,0x61,0x62,0x6f,0x75,0x74,0x3d,0x22,0x22,0x0a,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,
+ 0x3a,0x64,0x63,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x70,0x75,0x72,0x6c,
+ 0x2e,0x6f,0x72,0x67,0x2f,0x64,0x63,0x2f,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,
+ 0x2f,0x31,0x2e,0x31,0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x49,0x70,0x74,0x63,0x34,0x78,0x6d,
+ 0x70,0x45,0x78,0x74,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x69,0x70,0x74,
+ 0x63,0x2e,0x6f,0x72,0x67,0x2f,0x73,0x74,0x64,0x2f,0x49,0x70,0x74,0x63,0x34,0x78,
+ 0x6d,0x70,0x45,0x78,0x74,0x2f,0x32,0x30,0x30,0x38,0x2d,0x30,0x32,0x2d,0x32,0x39,
+ 0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78,
+ 0x6d,0x6c,0x6e,0x73,0x3a,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3d,0x22,
+ 0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64,0x6f,0x62,0x65,0x2e,
+ 0x63,0x6f,0x6d,0x2f,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x2f,0x31,0x2e,
+ 0x30,0x2f,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x64,
+ 0x63,0x3a,0x63,0x72,0x65,0x61,0x74,0x6f,0x72,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x53,0x65,0x71,0x3e,
+ 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x3c,0x72,0x64,0x66,0x3a,0x6c,0x69,0x3e,0x4d,0x69,0x63,0x68,0x61,0x65,0x6c,0x20,
+ 0x53,0x77,0x65,0x65,0x74,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x6c,0x69,0x3e,0x0a,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,
+ 0x3a,0x53,0x65,0x71,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,
+ 0x2f,0x64,0x63,0x3a,0x63,0x72,0x65,0x61,0x74,0x6f,0x72,0x3e,0x0a,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x64,0x63,0x3a,0x72,0x69,0x67,0x68,0x74,0x73,
+ 0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,
+ 0x64,0x66,0x3a,0x41,0x6c,0x74,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x6c,0x69,0x20,0x78,
+ 0x6d,0x6c,0x3a,0x6c,0x61,0x6e,0x67,0x3d,0x22,0x78,0x2d,0x64,0x65,0x66,0x61,0x75,
+ 0x6c,0x74,0x22,0x3e,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x32,0x30,
+ 0x31,0x30,0x20,0x41,0x70,0x70,0x6c,0x65,0x20,0x49,0x6e,0x63,0x2e,0x3c,0x2f,0x72,
+ 0x64,0x66,0x3a,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x41,0x6c,0x74,0x3e,0x0a,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x64,0x63,0x3a,0x72,0x69,0x67,0x68,
+ 0x74,0x73,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x49,0x70,
+ 0x74,0x63,0x34,0x78,0x6d,0x70,0x45,0x78,0x74,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69,
+ 0x6e,0x65,0x3e,0x4e,0x65,0x77,0x20,0x49,0x6d,0x61,0x67,0x65,0x3c,0x2f,0x49,0x70,
+ 0x74,0x63,0x34,0x78,0x6d,0x70,0x45,0x78,0x74,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69,
+ 0x6e,0x65,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x70,0x68,
+ 0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69,0x6e,0x65,
+ 0x3e,0x4e,0x65,0x77,0x20,0x49,0x6d,0x61,0x67,0x65,0x3c,0x2f,0x70,0x68,0x6f,0x74,
+ 0x6f,0x73,0x68,0x6f,0x70,0x3a,0x48,0x65,0x61,0x64,0x6c,0x69,0x6e,0x65,0x3e,0x0a,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x44,0x65,0x73,0x63,
+ 0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,
+ 0x66,0x3a,0x52,0x44,0x46,0x3e,0x0a,0x3c,0x2f,0x78,0x3a,0x78,0x6d,0x70,0x6d,0x65,
+ 0x74,0x61,0x3e,0x0a,0xa0,0x50,0x98,0x64,0x00,0x00,0x02,0xa0,0x50,0x4c,0x54,0x45,
+ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xff,
+ 0xff,0xff,0xfc,0xfc,0xfc,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x01,0x01,0x02,0x02,
+ 0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x07,0x07,0x07,
+ 0x08,0x08,0x08,0x09,0x09,0x09,0x0a,0x0a,0x0a,0x0b,0x0b,0x0b,0x0c,0x0c,0x0c,0x0d,
+ 0x0d,0x0d,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x11,0x11,0x11,0x12,0x12,0x12,0x13,0x13,
+ 0x13,0x14,0x14,0x14,0x15,0x15,0x15,0x16,0x16,0x16,0x18,0x18,0x18,0x19,0x19,0x19,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x22,0x22,0x22,0x23,0x23,0x23,0x24,0x24,0x24,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x27,0x27,0x27,0x28,0x28,0x28,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2c,0x2c,0x2c,
+ 0x2d,0x2d,0x2d,0x2d,0x2e,0x39,0x2e,0x2e,0x2e,0x2e,0x2e,0x39,0x2e,0x2f,0x35,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x3a,0x30,0x30,0x30,0x31,0x31,0x31,0x32,0x32,0x32,0x33,0x33,
+ 0x33,0x34,0x34,0x34,0x35,0x35,0x35,0x36,0x36,0x36,0x37,0x37,0x37,0x38,0x38,0x38,
+ 0x38,0x3c,0x55,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3c,0x3b,0x3b,0x3b,0x3c,
+ 0x3c,0x3c,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x43,0x60,0x3f,0x3f,0x3f,0x40,0x40,
+ 0x40,0x41,0x41,0x41,0x41,0x42,0x45,0x41,0x44,0x4c,0x42,0x42,0x42,0x43,0x43,0x43,
+ 0x44,0x44,0x44,0x45,0x45,0x45,0x46,0x46,0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x49,
+ 0x49,0x49,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,0x4e,
+ 0x4e,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x51,0x51,0x51,0x52,0x52,0x52,0x53,0x53,0x53,
+ 0x54,0x54,0x54,0x55,0x55,0x55,0x56,0x56,0x56,0x57,0x57,0x57,0x58,0x58,0x58,0x59,
+ 0x59,0x59,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5e,0x5e,0x5e,0x5f,0x5f,
+ 0x5f,0x5f,0x6e,0x90,0x60,0x60,0x60,0x60,0x69,0xa2,0x61,0x61,0x61,0x62,0x62,0x62,
+ 0x63,0x63,0x63,0x65,0x65,0x65,0x66,0x66,0x66,0x67,0x67,0x67,0x68,0x68,0x68,0x6a,
+ 0x6a,0x6a,0x6a,0x7a,0xa0,0x6b,0x6b,0x6b,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x71,0x71,
+ 0x71,0x71,0x82,0xab,0x71,0x83,0xac,0x72,0x72,0x72,0x74,0x74,0x74,0x76,0x76,0x76,
+ 0x77,0x77,0x77,0x79,0x79,0x79,0x7c,0x7c,0x7c,0x7d,0x7d,0x7d,0x7f,0x7f,0x7f,0x80,
+ 0x80,0x80,0x81,0x81,0x81,0x82,0x82,0x82,0x83,0x83,0x83,0x84,0x84,0x84,0x85,0x85,
+ 0x85,0x86,0x86,0x86,0x87,0x87,0x87,0x8a,0x8a,0x8a,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,
+ 0x8e,0x8e,0x8e,0x90,0x90,0x90,0x91,0x91,0x91,0x92,0x92,0x92,0x93,0x93,0x93,0x96,
+ 0x96,0x96,0x98,0x98,0x98,0x9b,0x9b,0x9b,0x9d,0x9d,0x9d,0x9f,0x9f,0x9f,0xa0,0xa0,
+ 0xa0,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,
+ 0xaa,0xaa,0xaa,0xab,0xab,0xab,0xad,0xad,0xad,0xae,0xae,0xae,0xaf,0xaf,0xaf,0xb0,
+ 0xb0,0xb0,0xb2,0xb2,0xb2,0xb4,0xb4,0xb4,0xb7,0xb7,0xb7,0xb9,0xb9,0xb9,0xba,0xba,
+ 0xba,0xbb,0xbb,0xbb,0xbc,0xbc,0xbc,0xbd,0xbd,0xbd,0xbe,0xbe,0xbe,0xc0,0xc0,0xc0,
+ 0xc2,0xc2,0xc2,0xc3,0xc3,0xc3,0xc4,0xc4,0xc4,0xc5,0xc5,0xc5,0xc6,0xc6,0xc6,0xc7,
+ 0xc7,0xc7,0xc9,0xc9,0xc9,0xca,0xca,0xca,0xcc,0xcc,0xcc,0xcd,0xcd,0xcd,0xce,0xce,
+ 0xce,0xd0,0xd0,0xd0,0xd1,0xd1,0xd1,0xd4,0xd4,0xd4,0xd8,0xd8,0xd8,0xd9,0xd9,0xd9,
+ 0xda,0xda,0xda,0xdb,0xdb,0xdb,0xdc,0xdc,0xdc,0xdd,0xdd,0xdd,0xde,0xde,0xde,0xdf,
+ 0xdf,0xdf,0xe0,0xe0,0xe0,0xe2,0xe2,0xe2,0xe3,0xe3,0xe3,0xe5,0xe5,0xe5,0xe6,0xe6,
+ 0xe6,0xe9,0xe9,0xe9,0xea,0xea,0xea,0xeb,0xeb,0xeb,0xed,0xed,0xed,0xee,0xee,0xee,
+ 0xef,0xef,0xef,0xf0,0xf0,0xf0,0xf1,0xf1,0xf1,0xf2,0xf2,0xf2,0xf3,0xf3,0xf3,0xf4,
+ 0xf4,0xf4,0xf6,0xf6,0xf6,0xf7,0xf7,0xf7,0xf8,0xf8,0xf8,0xf9,0xf9,0xf9,0xfa,0xfa,
+ 0xfa,0xfb,0xfb,0xfb,0xfc,0xfc,0xfc,0xfd,0xfd,0xfd,0xfe,0xfe,0xfe,0xff,0xff,0xff,
+ 0x96,0xb7,0x1b,0xef,0x00,0x00,0x00,0x08,0x74,0x52,0x4e,0x53,0x00,0x08,0x7f,0xc4,
+ 0xdc,0xdc,0xfc,0xfc,0x86,0xfa,0x37,0x3a,0x00,0x00,0x03,0x97,0x49,0x44,0x41,0x54,
+ 0x18,0x19,0x95,0xc1,0x6f,0x68,0xd4,0x75,0x1c,0xc0,0xf1,0xf7,0xe7,0xfb,0xfb,0xfe,
+ 0xee,0xcf,0xe6,0xb1,0x73,0x53,0xdb,0xfa,0xc3,0xc2,0x1d,0x35,0xcc,0x1c,0x4a,0x60,
+ 0x89,0x3e,0x50,0xfa,0x43,0x52,0x4a,0x52,0x94,0x48,0x33,0x0c,0x1f,0x84,0x21,0x3d,
+ 0xe8,0x0f,0xe1,0xa3,0x20,0x0c,0x83,0x11,0x42,0x04,0xd2,0x1f,0xb0,0x7a,0x12,0x14,
+ 0x66,0xd1,0x13,0x35,0x08,0x4b,0x4b,0x54,0xc4,0xd4,0x5c,0x63,0x78,0xe8,0x6a,0x59,
+ 0x6a,0xdb,0xed,0x76,0xdb,0xfd,0xee,0xee,0xf7,0xfd,0xf4,0xbb,0x6d,0xa2,0x79,0x3a,
+ 0xcf,0xd7,0x4b,0x10,0xf1,0x4c,0x2f,0xf5,0xe8,0x74,0xa1,0xaa,0x88,0xe9,0xa7,0x7e,
+ 0x19,0x67,0xe4,0xf0,0xaf,0xd4,0xaf,0x5f,0x8c,0x37,0x36,0xc0,0x2d,0xf0,0xac,0xa9,
+ 0x8c,0xd1,0x73,0xcf,0x2f,0xab,0x16,0x1f,0xb8,0x74,0xac,0x7d,0xf5,0xcc,0x93,0xbb,
+ 0x16,0x3c,0xf1,0xc1,0x86,0xc6,0x3d,0x6d,0xb3,0x76,0xf9,0x6b,0x5a,0xa8,0x61,0x4c,
+ 0x6f,0xe1,0x08,0x9f,0x8d,0x3c,0xf7,0x6a,0xe9,0xfc,0xce,0x55,0x43,0x7b,0x83,0x2d,
+ 0x2f,0x1d,0x3f,0x65,0x0e,0xba,0xf7,0xdb,0x7b,0x96,0xb7,0xed,0xa3,0x56,0xaf,0x25,
+ 0x92,0x5c,0x47,0x7b,0x96,0x75,0x0b,0x83,0xdd,0x99,0x0b,0xef,0x5c,0x1c,0x5c,0xbe,
+ 0xa3,0x69,0x59,0x7c,0xaf,0x16,0xe6,0x0d,0xf6,0xc0,0x83,0xcf,0xf0,0x3f,0x96,0x88,
+ 0x2b,0xc6,0x06,0xdb,0x4f,0x16,0xf9,0xa7,0xab,0x63,0xc6,0x36,0x0b,0xd9,0x1d,0xaf,
+ 0xc4,0xbb,0x36,0xcd,0x85,0x1e,0x6a,0x58,0x22,0xe1,0xd6,0x73,0x9b,0x13,0x7c,0x7d,
+ 0xac,0xfc,0x7a,0xd3,0xcb,0x2f,0xb6,0x3e,0xf2,0x70,0xf7,0xa7,0xf7,0xb3,0x79,0x5b,
+ 0x3a,0xb3,0x91,0x5a,0x92,0x05,0x1e,0xfa,0xb9,0x98,0xe0,0x2b,0x59,0x99,0x00,0x2a,
+ 0xe5,0x24,0x93,0xf2,0x29,0xae,0xc3,0x12,0x79,0x96,0x04,0xb4,0x49,0x82,0x88,0xb5,
+ 0x4c,0x49,0x71,0x3d,0x92,0xe5,0xd6,0x18,0x6e,0x91,0xe1,0xc6,0x8e,0x0f,0x53,0xcb,
+ 0x70,0x63,0x03,0xe3,0x4c,0xf8,0x84,0xab,0x58,0x6a,0x7c,0x91,0xda,0xbf,0xec,0xf1,
+ 0x81,0x1f,0x87,0x17,0x15,0x2a,0x67,0x0f,0x94,0xb2,0x1b,0xb2,0xef,0x9d,0x5b,0x9f,
+ 0xd8,0xe5,0xaf,0x69,0xe9,0xe9,0x18,0x5f,0x8b,0xa1,0xc6,0xe1,0x43,0x2f,0x7c,0x7e,
+ 0xaa,0xb0,0x7d,0xc9,0xc2,0xc3,0x85,0xc2,0xbb,0x99,0xfb,0xbe,0x5f,0xd2,0xf8,0x5a,
+ 0x7b,0xcf,0xf2,0xb6,0x7d,0xec,0xf4,0x56,0x82,0x65,0x8a,0x73,0x0a,0x82,0x88,0xb0,
+ 0xb6,0xf3,0xd1,0xfe,0x7b,0x57,0x2c,0x22,0xf2,0xd8,0xd2,0x83,0x87,0x62,0xd2,0x18,
+ 0xec,0xd5,0xc2,0x3c,0x1a,0x9f,0x04,0x2c,0x13,0xb4,0xd2,0xff,0xe5,0x88,0xb1,0x5e,
+ 0x43,0x73,0x6b,0xa7,0x16,0x39,0xf3,0x34,0x57,0xf1,0x82,0x78,0xd7,0xa6,0xb9,0x4c,
+ 0xb2,0x44,0x34,0x1c,0xf9,0xb6,0x8f,0x18,0x12,0x8e,0xe6,0x8e,0xfc,0xe0,0x3e,0x72,
+ 0xed,0xf3,0x7f,0xe7,0x8a,0xe7,0xdf,0x7c,0x63,0xf3,0xb6,0x74,0x66,0xa3,0x10,0x91,
+ 0x2c,0x1a,0x9e,0xf9,0x69,0x80,0x2a,0x1d,0x1d,0x6b,0xca,0xcd,0xba,0xb8,0xa9,0x23,
+ 0x01,0xaa,0xea,0xb4,0x70,0x62,0xe6,0x7c,0x81,0xe1,0x34,0xe4,0x53,0x4c,0xb0,0x50,
+ 0xd9,0xff,0x21,0x53,0x32,0x7a,0x36,0xd7,0xfc,0x40,0xd2,0x2f,0xeb,0xd8,0xf1,0xd3,
+ 0x47,0x7f,0xcb,0xb9,0xa7,0xb6,0xa8,0x40,0x1a,0x48,0x31,0xc9,0xe2,0x8a,0xdf,0x71,
+ 0x99,0xeb,0x1b,0xaf,0x54,0x5a,0xf7,0x1c,0x3d,0x9d,0xab,0x58,0x5f,0xc6,0x1a,0xb6,
+ 0x76,0x71,0x2d,0x8b,0x2b,0x0e,0x72,0x99,0x1b,0x2d,0xbb,0x6f,0x76,0x83,0xe7,0x25,
+ 0x5c,0xe0,0x56,0x74,0xb7,0x18,0x57,0x12,0x2e,0x13,0xf1,0x0c,0x16,0x57,0x62,0x4a,
+ 0x30,0x32,0x98,0x0f,0xed,0x0c,0xdf,0x7a,0x7e,0xcc,0x4b,0xfa,0x7e,0xe9,0x63,0x15,
+ 0xae,0x08,0x0b,0xa9,0xed,0x09,0x63,0xa1,0xc2,0xa4,0x20,0x48,0xde,0x19,0x36,0x59,
+ 0xae,0x6f,0xd8,0xcd,0x69,0xd6,0x51,0xdf,0x58,0x54,0x99,0x14,0x8f,0x13,0x70,0x89,
+ 0x1b,0xb8,0x0b,0x55,0x2d,0x2a,0x96,0x2a,0xef,0x76,0x95,0xa1,0x7c,0xd9,0xc8,0x1d,
+ 0x56,0x14,0x51,0xe1,0x1a,0xa5,0xbf,0x55,0x41,0x9d,0x62,0x89,0xd8,0xbb,0x8d,0x14,
+ 0xfc,0xc5,0x70,0x22,0x96,0x04,0x54,0x94,0x2a,0x51,0x41,0x45,0x89,0x5c,0xc0,0x89,
+ 0x52,0x65,0x89,0xa4,0x1b,0xe0,0xdf,0x8e,0x26,0x2d,0xa7,0xd2,0x5c,0x45,0x54,0x50,
+ 0x51,0x60,0x30,0xef,0x2b,0x4a,0x95,0x25,0x92,0x68,0x74,0x6e,0xf6,0x5f,0x7f,0x3a,
+ 0x3b,0xdb,0x29,0xaa,0xa2,0xa2,0x22,0x88,0x08,0x46,0xc4,0x9a,0x7c,0xdf,0x25,0xdf,
+ 0xc7,0x81,0x02,0x96,0xc8,0x1f,0xd9,0xc0,0xa9,0xa2,0x0a,0x28,0x53,0x04,0x04,0x41,
+ 0x04,0x35,0x80,0x03,0x42,0xc0,0x52,0xe5,0x7b,0x65,0xa6,0x63,0x7c,0x20,0x54,0x01,
+ 0x2c,0x13,0x4c,0x9c,0x9b,0x08,0x15,0x71,0x80,0xa5,0x4e,0xaa,0x28,0x11,0x4b,0x9d,
+ 0xd4,0xa1,0x02,0x18,0xea,0xe4,0x50,0x14,0xb0,0x40,0x91,0x3a,0x9c,0xbf,0x4d,0x95,
+ 0x88,0x05,0x12,0xd4,0x21,0xe5,0x84,0x2a,0x4b,0xbd,0x1c,0x04,0x80,0xa5,0x4e,0x61,
+ 0x09,0x19,0x17,0xb0,0xd4,0x29,0x07,0x41,0xe8,0x09,0x16,0x31,0x4d,0x39,0x6e,0x2e,
+ 0x20,0xf0,0xde,0x8a,0x1b,0x4c,0xa7,0xd8,0xa5,0xdc,0xdc,0x50,0xb9,0x65,0xfd,0xdb,
+ 0xad,0x0d,0x5e,0xa7,0x75,0x26,0xbe,0x40,0x0f,0xe4,0x98,0x5e,0xbe,0xb9,0x7b,0x56,
+ 0x3a,0x95,0x4a,0x88,0xb3,0xa1,0x69,0x98,0xb3,0x28,0x53,0x72,0x4c,0x47,0x6c,0x43,
+ 0x7a,0x46,0x32,0xee,0x1b,0x42,0x11,0xd3,0x17,0x8c,0x05,0x65,0x65,0x3a,0x62,0x63,
+ 0xc9,0x98,0x35,0x90,0x71,0x82,0x88,0x31,0x27,0x55,0x99,0x96,0x18,0x4f,0xe8,0x74,
+ 0xa1,0xea,0x7f,0x66,0xc2,0x6f,0x17,0x59,0xdf,0xbf,0x1b,0x00,0x00,0x00,0x00,0x49,
+ 0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
+
+};
/*
* Configuration file for CUPS on Windows.
*
- * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2007-2022 by Apple Inc.
* Copyright © 1997-2007 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v2.3.1"
-#define CUPS_MINIMAL "CUPS/2.3.1"
+#define CUPS_SVERSION "CUPS v2.3.6"
+#define CUPS_MINIMAL "CUPS/2.3.6"
/*
* Do we have the (v)snprintf() functions?
*/
-/* Windows snprintf/vsnprintf are non-conforming */
-/* #undef HAVE_SNPRINTF */
-/* #undef HAVE_VSNPRINTF */
+#define HAVE_SNPRINTF 1
+#define HAVE_VSNPRINTF 1
/*
if (dnssd_add_record)
return (*dnssd_add_record)(sdRef, RecordRef, flags, rrtype, rdlen, rdata, ttl);
else
- return (-1);
+ return (kDNSServiceErr_ServiceNotRunning);
}
if (dnssd_browse)
return (*dnssd_browse)(sdRef, flags, interfaceIndex, regtype, domain, callBack, context);
else
- return (-1);
+ return (kDNSServiceErr_ServiceNotRunning);
}
if (dnssd_create_connection)
return (*dnssd_create_connection)(sdRef);
else
- return (-1);
+ return (kDNSServiceErr_ServiceNotRunning);
}
if (dnssd_process_result)
return (*dnssd_process_result)(sdRef);
else
- return (-1);
+ return (kDNSServiceErr_ServiceNotRunning);
}
if (dnssd_query_record)
return (*dnssd_query_record)(sdRef, flags, interfaceIndex, fullname, rrtype, rrclass, callBack, context);
else
- return (-1);
+ return (kDNSServiceErr_ServiceNotRunning);
}
if (dnssd_sock_fd)
return (*dnssd_sock_fd)(sdRef);
else
- return (-1);
+ return (kDNSServiceErr_ServiceNotRunning);
}
if (dnssd_register)
return (*dnssd_register)(sdRef, flags, interfaceIndex, name, regtype, domain, host, port, txtLen, txtRecord, callBack, context);
else
- return (-1);
+ return (kDNSServiceErr_ServiceNotRunning);
}
if (dnssd_remove_record)
return (*dnssd_remove_record)(sdRef, RecordRef, flags);
else
- return (-1);
+ return (kDNSServiceErr_ServiceNotRunning);
}
if (dnssd_resolve)
return (*dnssd_resolve)(sdRef, flags, interfaceIndex, name, regtype, domain, callBack, context);
else
- return (-1);
+ return (kDNSServiceErr_ServiceNotRunning);
}
if (dnssd_update_record)
return (*dnssd_update_record)(sdRef, RecordRef, flags, rdlen, rdata, ttl);
else
- return (-1);
+ return (kDNSServiceErr_ServiceNotRunning);
}
278C58EA136B64B000836530 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
278C58EB136B64B000836530 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
278C58EC136B64B000836530 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+ 279AE6F52395B80F004DD600 /* libpam.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 279AE6F42395B80F004DD600 /* libpam.tbd */; };
27A034821A8BDC3A00650675 /* lpadmin.c in Sources */ = {isa = PBXBuildFile; fileRef = 2732E08D137A3F5200FAFEF6 /* lpadmin.c */; };
27A034851A8BDC5C00650675 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
7200511218F492F200E7B81B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
278C58E6136B64B000836530 /* Kerberos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Kerberos.framework; path = /System/Library/Frameworks/Kerberos.framework; sourceTree = "<absolute>"; };
278C58E7136B64B000836530 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = "<absolute>"; };
278C58E8136B64B000836530 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = /System/Library/Frameworks/SystemConfiguration.framework; sourceTree = "<absolute>"; };
+ 279AE6F42395B80F004DD600 /* libpam.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libpam.tbd; path = usr/lib/libpam.tbd; sourceTree = SDKROOT; };
27A0347B1A8BDB1300650675 /* lpadmin */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lpadmin; sourceTree = BUILT_PRODUCTS_DIR; };
27D3037D134148CB00F022B1 /* libcups2.def */ = {isa = PBXFileReference; lastKnownFileType = text; name = libcups2.def; path = ../cups/libcups2.def; sourceTree = "<group>"; };
27F89DA21B3AC43B00E5A4B7 /* testraster.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testraster.c; path = ../cups/testraster.c; sourceTree = "<group>"; };
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 279AE6F52395B80F004DD600 /* libpam.tbd in Frameworks */,
273B1ECA226B420C00428143 /* libcups.dylib in Frameworks */,
2767FC6619267538000F61D3 /* CoreFoundation.framework in Frameworks */,
2767FC6719267538000F61D3 /* libresolv.dylib in Frameworks */,
72220FB113330B4A00FCA411 /* Frameworks */ = {
isa = PBXGroup;
children = (
+ 279AE6F42395B80F004DD600 /* libpam.tbd */,
2767FC591926750C000F61D3 /* CoreFoundation.framework */,
2767FC5A1926750C000F61D3 /* libiconv.dylib */,
2767FC5B1926750C000F61D3 /* libresolv.dylib */,
/*
* Configuration file for CUPS and Xcode.
*
- * Copyright 2007-2019 by Apple Inc.
+ * Copyright 2007-2022 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more information.
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v2.3.1"
-#define CUPS_MINIMAL "CUPS/2.3.1"
+#define CUPS_SVERSION "CUPS v2.3.6"
+#define CUPS_MINIMAL "CUPS/2.3.6"
/*