summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--base/gs.mak2
-rw-r--r--base/msvctail.mak3
-rw-r--r--base/pack_ps.c447
-rw-r--r--base/unix-aux.mak3
-rw-r--r--base/unix-end.mak2
-rw-r--r--devices/devs.mak5
-rw-r--r--devices/vector/opdfread.h4007
-rw-r--r--devices/vector/opdfread.ps (renamed from lib/opdfread.ps)0
-rw-r--r--windows/ghostscript.vcproj12
9 files changed, 464 insertions, 4017 deletions
diff --git a/base/gs.mak b/base/gs.mak
index 1d440a4de..58a789f50 100644
--- a/base/gs.mak
+++ b/base/gs.mak
@@ -263,6 +263,7 @@ GENCONF_XE=$(AUX)genconf$(XEAUX)
GENDEV_XE=$(AUX)gendev$(XEAUX)
GENHT_XE=$(AUX)genht$(XEAUX)
MKROMFS_XE=$(AUX)mkromfs$(XEAUX)
+PACKPS_XE=$(AUX)packps$(XEAUX)
# Define the names of the generated header files.
# gconfig*.h and gconfx*.h are generated dynamically.
@@ -304,6 +305,7 @@ mostlyclean : config-clean
$(RMN_) $(MKROMFS_XE)
$(RMN_) $(MKROMFS_XE)_0
$(RMN_) $(MKROMFS_XE)_1
+ $(RMN_) $(PACKPS_XE)
$(RMN_) $(GSGEN)gsromfs1.c $(GSGEN)gsromfs1_.c $(GSGEN)gsromfs1_1.c
$(RMN_) $(AUX)*.$(OBJ) $(AUX)gscdefs*.c
diff --git a/base/msvctail.mak b/base/msvctail.mak
index 1254315e6..619a3dc58 100644
--- a/base/msvctail.mak
+++ b/base/msvctail.mak
@@ -65,6 +65,9 @@ MKROMFS_OBJS=$(MKROMFS_ZLIB_OBJS) $(AUX)gp_ntfs.$(OBJ) $(AUX)gp_win32.$(OBJ) $(A
$(MKROMFS_XE): $(GLSRC)mkromfs.c $(GLGENDIR)\ccf32.tr $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS) $(MSVCTAIL_MAK)
$(CCAUX_) -I$(GLOBJ) -I$(ZSRCDIR) $(GLSRC)mkromfs.c /Fo$(AUX)mkromfs.obj /Fe$(MKROMFS_XE) $(MKROMFS_OBJS) $(CCAUX_TAIL)
+$(PACKPS_XE): $(GLSRC)pack_ps.c $(GLSRC)stdpre.h $(MSVCTAIL_MAK)
+ $(CCAUX_) -I$(GLOBJ) -I$(ZSRCDIR) $(GLSRC)pack_ps.c /Fo$(AUX)pack_ps.obj /Fe$(PACKPS_XE) $(CCAUX_TAIL)
+
# -------------------------------- Library -------------------------------- #
# See winlib.mak
diff --git a/base/pack_ps.c b/base/pack_ps.c
new file mode 100644
index 000000000..de98446e3
--- /dev/null
+++ b/base/pack_ps.c
@@ -0,0 +1,447 @@
+/* Copyright (C) 2001-2017 Artifex Software, Inc.
+ All Rights Reserved.
+
+ This software is provided AS-IS with no warranty, either express or
+ implied.
+
+ This software is distributed under license and may not be copied,
+ modified or distributed except as expressly authorized under the terms
+ of the license contained in the file LICENSE in this distribution.
+
+ Refer to licensing information at http://www.artifex.com or contact
+ Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael,
+ CA 94903, U.S.A., +1(415)492-9861, for further information.
+*/
+
+/* Pack a PostScript file into a C file containing an array of strings. */
+
+/* The PostScript data is packed to remove excess whitespace and comments.
+ * Optionally, all header comments in the PostScript file can be copied
+ * over as comments in the C file.
+ *
+ * Usage: pack_ps [-o outfile] [-n name] [-c] ps_file
+ *
+ * options (must precede ps_file to be processed):
+ *
+ * -o outfile Output C file name.
+ * -n array_name Name of the array inside the generated C file.
+ * -c output PostScript header comments as C comments.
+ *
+ * ps_file Name of the PostScript file to be converted.
+ */
+
+#define OUTFILE_NAME_DEFAULT "obj/packed_ps.c"
+#define ARRAY_NAME_DEFAULT "packed_ps"
+
+#include "stdpre.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#ifdef DEBUG_AUX
+#define STRIP_PDFR_DEBUG_CALLS 0 /* Disabled for debug builds. */
+#else
+/* Set to 1 to strip PDFR_DEBUG calls for release builds. */
+#define STRIP_PDFR_DEBUG_CALLS 0 /* Disabled for release builds. */
+#endif
+
+#if STRIP_PDFR_DEBUG_CALLS
+/* Start and end prefixes for PDFR_DEBUG blocks. */
+#define PDFR_DEBUG_START_PREFIX "//PDFR_DEBUG"
+#define PDFR_DEBUG_END_COMMENT_1 "% //PDFR_DEBUG"
+#define PDFR_DEBUG_END_COMMENT_2 "%//PDFR_DEBUG"
+#endif
+
+/* Forward references */
+static bool readline(FILE * in, char *str, int len);
+static int pack_postscript_line(const char *inputline, char *outputline, char *comment);
+static void usage(const char *outfilename, const char *arrayname);
+int main(int argc, char *argv[]);
+
+/* Read a line from the input. */
+static bool
+readline(FILE * in, char *str, int len)
+{
+ /*
+ * Unfortunately, we can't use fgets here, because the typical
+ * implementation only recognizes the EOL convention of the current
+ * platform.
+ */
+ int i = 0, c = getc(in);
+
+ if (c < 0) {
+ return false;
+ }
+ while (i < len - 1) {
+ if (c < 0 || c == 10) { /* ^J, Unix EOL */
+ break;
+ }
+ if (c == 13) { /* ^M, Mac EOL */
+ c = getc(in);
+ if (c != 10 && c >= 0) { /* ^M^J, PC EOL */
+ ungetc(c, in);
+ }
+ break;
+ }
+ str[i++] = c;
+ c = getc(in);
+ }
+ str[i] = 0;
+ return true;
+}
+
+/*
+ * Strip extraneous whitespace and comments from a line of PostScript code.
+ * Return a pointer to any string that remains, or NULL if the line contains
+ * no code.
+ *
+ * Stores the packed string in outputline, and any comment section in comment,
+ * as NULL-terminated strings. If there is no comment, the comment string will
+ * be set to an empty string.
+ *
+ * Returns the length of outputline. If the line contains no PostScript data
+ * other than whitespace or comments, this length will be zero.
+ *
+ * Note: the caller is responsible for allocating storage for all three strings,
+ * and this routine will modify both the outputline and comment parameters.
+ * Currently no overflow checking is performed. In practice, both outputline
+ * and comment will be equal to or shorter than the input line, but in the
+ * worst case (a line of all double-quotes or all backslashes, neither of
+ * which is legal PostScript) the output line could theoretically consume
+ * double the space of the input line. A large fixed size for all three
+ * strings, such as 4096, should be sufficient for practical purposes.
+ *
+ * Note: Although this routine resembles the "doit" method in mkromfs.c, it
+ * performs additional escaping of backslash and double-quote characters, since
+ * its output is intended to be embedded in a C string.
+ */
+static int
+pack_postscript_line(const char *inputline, char *outputline, char *comment)
+{
+ const char *str = inputline;
+ const char *from;
+ char *to;
+ int in_string = 0;
+
+ /* Clear the output strings. */
+ outputline[0] = '\0';
+ comment[0] = '\0';
+
+ while (*str == ' ' || *str == '\t') { /* strip leading whitespace */
+ ++str;
+ }
+ if (*str == 0) { /* all whitespace */
+ return 0;
+ }
+ if (!strncmp(str, "%END", 4)) { /* keep these for .skipeof */
+ strcpy(outputline, str);
+ strcpy(comment, str);
+ return strlen(outputline);
+ }
+
+ /*
+ * Copy the string over, removing:
+ * - All comments not within string literals;
+ * - Whitespace adjacent to '[' ']' '{' '}';
+ * - Whitespace before '/' '(' '<';
+ * - Whitespace after ')' '>'.
+ */
+ for (from = str, to = outputline; (*to = *from) != 0; ++from, ++to) {
+ switch (*from) {
+ case '%':
+ if (!in_string) {
+ /* Store the rest of the line in the comment. */
+ while (*from && (/* (*from == '%') || */ (*from == ' ') || (*from == '\t'))) {
+ from++;
+ }
+ strcpy(comment, from);
+ break;
+ }
+ continue;
+ case ' ':
+ case '\t':
+ if (to > outputline && !in_string && strchr(" \t>[]{})", to[-1])) {
+ --to;
+ }
+ continue;
+ case '(':
+ case '<':
+ case '/':
+ case '[':
+ case ']':
+ case '{':
+ case '}':
+ if (to > outputline && !in_string && strchr(" \t", to[-1])) {
+ *--to = *from;
+ }
+ if (*from == '(') {
+ ++in_string;
+ }
+ continue;
+ case ')':
+ --in_string;
+ continue;
+ case '\"':
+ /* Because we're writing to a C string, every double-quote we output needs to be escaped with a preceding backslash. */
+ *to = '\\';
+ *++to = *from;
+ continue;
+ case '\\':
+ /* Because we're writing to a C string, every backslash we output needs to be escaped with a preceding backslash. */
+ *++to = '\\';
+
+ if (from[1] == '\\') {
+ *++to = '\\'; /* A double-backslash turns into four backslashes inside a C quote. */
+ *++to = *++from;
+ }
+ else if (from[1] == '(' || from[1] == ')') {
+ *++to = *++from; /* Output as "\\(" or "\\)" */
+ }
+ continue;
+ default:
+ continue;
+ }
+ break;
+ }
+
+ /* Strip trailing whitespace from outputline. */
+ while (to > outputline && (to[-1] == ' ' || to[-1] == '\t')) {
+ --to;
+ }
+ *to = 0;
+
+ /* Strip trailing whitespace from the comment. */
+ if (strlen(comment) > 0) {
+ int comment_len = strlen(comment);
+ char *ptr = comment + comment_len - 1;
+
+ while ((*ptr == ' ') || (*ptr == '\t')) {
+ *(ptr--) = '\0';
+ }
+
+ /* If all that's left is the percent sign, skip it unless it's the only thing on the line. */
+ if ((strlen (comment) == 1) && (strlen(outputline) != 0)) {
+ comment [0] = '\0';
+ }
+ }
+
+ /* Return line length, so 0 = no data found. */
+ return strlen(outputline);
+}
+
+static void
+usage(const char *outfilename, const char *arrayname)
+{
+ printf("\n");
+ printf(" Usage: pack_ps [-o outfile] [-n name] [-c] ps_file\n");
+ printf("\n");
+ printf(" options (must precede ps_file to be processed):\n");
+ printf(" -o outfile default: %s - output file name\n", outfilename);
+ printf(" -n array_name default: %s - name of the array inside the generated C file.\n", arrayname);
+ printf(" -c output PostScript header comments as C comments.\n");
+}
+
+int
+main(int argc, char *argv[])
+{
+ const char *outfilename = OUTFILE_NAME_DEFAULT;
+ const char *arrayname = ARRAY_NAME_DEFAULT;
+ const char *infilename = NULL;
+ bool output_comments = false;
+ FILE *infile;
+ FILE *outfile;
+
+ int atarg = 1;
+ int total_input_length = 0;
+ int total_output_length = 0;
+ int total_code_lines = 0;
+ int total_comment_header_lines = 0;
+#if STRIP_PDFR_DEBUG_CALLS
+ int pdfr_debug_start_count = 0;
+ int pdfr_debug_end_count = 0;
+ bool skip_this_line = false;
+#endif
+ time_t buildtime = 0;
+ char *env_source_date_epoch;
+
+#define INPUT_LINE_LENGTH_MAX 4096
+ char inputline[INPUT_LINE_LENGTH_MAX];
+
+ /* At least an input file name must be provided. */
+ if (argc < 2) {
+ usage(outfilename, arrayname);
+ exit(1);
+ }
+
+ /* Process arguments denoted with dashes. */
+ while (atarg < argc) {
+ if (argv[atarg][0] != '-') {
+ /* End of optional arguments */
+ break;
+ }
+ switch (argv[atarg][1]) {
+ case 'o' : /* output file name */
+ /* Skip to next argument */
+ if (++atarg >= argc) {
+ usage(outfilename, arrayname);
+ exit(0);
+ }
+ outfilename = argv[atarg++];
+ break;
+
+ case 'n' : /* C array name for this block of code */
+ /* Skip to next argument */
+ if (++atarg >= argc) {
+ usage(outfilename, arrayname);
+ exit(0);
+ }
+ arrayname = argv[atarg++];
+ break;
+
+ case 'c' : /* Enable comments in output C file */
+ /* Skip to next argument */
+ output_comments = true;
+ atarg++;
+ break;
+ }
+ }
+
+ /* The final argument is the file name to be processed. */
+ if (atarg >= argc) {
+ usage(outfilename, arrayname);
+ exit(-1);
+ }
+ infilename = argv[atarg];
+
+ printf("%s:\n", argv[0]);
+ printf(" Input file: %s\n", infilename);
+ printf(" Output file: %s\n", outfilename);
+ printf(" Array name: %s\n", arrayname);
+
+ infile = fopen(infilename, "r");
+ if (infile == NULL) {
+ printf("Unable to open input file \"%s\"\n", infilename);
+ exit(-1);
+ }
+ outfile = fopen(outfilename, "w");
+ if (outfile == NULL) {
+ fclose(infile);
+ printf("Unable to open output file \"%s\"\n", outfilename);
+ exit(-1);
+ }
+
+ /* Output a header comment showing the source file and build time. */
+ if ((env_source_date_epoch = getenv("SOURCE_DATE_EPOCH"))) {
+ buildtime = strtoul(env_source_date_epoch, NULL, 10);
+ }
+ if (!buildtime) {
+ buildtime = time(NULL);
+ }
+ fprintf(outfile,"/* Auto-generated from PostScript file \"%s\" at time %ld */\n", infilename, buildtime);
+
+ while (readline(infile, inputline, INPUT_LINE_LENGTH_MAX)) {
+
+ char packedline[INPUT_LINE_LENGTH_MAX];
+ char comment[INPUT_LINE_LENGTH_MAX];
+ int unpackedlen = strlen(inputline);
+ int packedlen = pack_postscript_line(inputline, packedline, comment);
+ int commentlen = strlen(comment);
+
+#if STRIP_PDFR_DEBUG_CALLS
+ skip_this_line = false;
+ if (!strncmp(packedline, PDFR_DEBUG_START_PREFIX, strlen(PDFR_DEBUG_START_PREFIX))) {
+ /* Start of PDFR_DEBUG command found. */
+ pdfr_debug_start_count++;
+ if (pdfr_debug_start_count != pdfr_debug_end_count+1) {
+ printf ("ERROR: missing PDFR_DEBUG terminating comment for call %d.\n", pdfr_debug_start_count);
+ fclose(infile);
+ fclose(outfile);
+ exit(-1);
+ }
+ }
+
+ /* Skip the line if we're in a PDFR_DEBUG block. By checking here before we look for the
+ * trailing comment, we can suppress single-line as well as multi-line PDFR_DEBUG blocks.
+ */
+ if (pdfr_debug_start_count != pdfr_debug_end_count) {
+ skip_this_line = true;
+ }
+
+ if ((!strncmp(comment, PDFR_DEBUG_END_COMMENT_1, strlen(PDFR_DEBUG_END_COMMENT_1))) ||
+ (!strncmp(comment, PDFR_DEBUG_END_COMMENT_2, strlen(PDFR_DEBUG_END_COMMENT_2)))) {
+
+ /* End of PDFR_DEBUG command found. */
+ pdfr_debug_end_count++;
+ if (pdfr_debug_start_count != pdfr_debug_end_count) {
+ printf ("ERROR: extra PDFR_DEBUG terminating comment for call %d.\n", pdfr_debug_start_count+1);
+ fclose(infile);
+ fclose(outfile);
+ exit(-1);
+ }
+ }
+
+ if (skip_this_line) {
+ continue;
+ }
+#endif
+ if (packedlen > 0) {
+ total_code_lines++;
+ }
+
+ total_input_length += unpackedlen;
+ total_output_length += packedlen;
+
+ /* Output any comments at the head of the file if requested. */
+ if (output_comments) {
+ if ((total_code_lines == 0) && (commentlen > 0)) {
+ total_comment_header_lines++;
+
+ if (total_comment_header_lines == 1) {
+ fprintf(outfile, "/* %s\n", comment);
+ }
+ else {
+ fprintf(outfile, " * %s\n", comment);
+ }
+ }
+ else if ((total_code_lines == 1) && (total_comment_header_lines > 0) && (packedlen > 0)) {
+ fprintf(outfile, " */\n");
+ }
+ }
+
+ if (packedlen > 0) {
+ if (total_code_lines == 1) {
+ fprintf(outfile,"const char *%s [] = {\n", arrayname);
+ }
+ /* Output the line with no comment. */
+ fprintf(outfile, "\"%s\\n\",\n", packedline);
+ }
+ }
+ if (total_code_lines > 0) {
+ fprintf(outfile, "0x00\n");
+ fprintf(outfile, "};\n");
+ }
+
+#if STRIP_PDFR_DEBUG_CALLS
+ /* Make sure no PDFR_DEBUG calls were left unmatched. */
+ if (pdfr_debug_start_count != pdfr_debug_end_count) {
+ printf ("ERROR: missing final PDFR_DEBUG terminating comment.\n");
+ fclose(infile);
+ fclose(outfile);
+ exit(-1);
+ }
+#endif
+
+ /* Display processing statistics. */
+ printf(" Processed %d lines of PostScript data.\n", total_code_lines);
+ printf(" %d bytes of PostScript data packed down to %d bytes.\n", total_input_length, total_output_length);
+#if STRIP_PDFR_DEBUG_CALLS
+ printf(" %d PDFR_DEBUG calls removed from the code.\n", pdfr_debug_start_count);
+#endif
+
+ /* Close files and exit with success. */
+ fclose(infile);
+ fclose(outfile);
+
+ return 0;
+}
diff --git a/base/unix-aux.mak b/base/unix-aux.mak
index c5fa2a48b..10a395f04 100644
--- a/base/unix-aux.mak
+++ b/base/unix-aux.mak
@@ -69,6 +69,9 @@ $(GLOBJ)gp_sysv.$(OBJ): $(GLSRC)gp_sysv.c $(stdio__h) $(time__h) $(AK)\
$(ECHOGS_XE): $(GLSRC)echogs.c $(AK) $(stdpre_h) $(UNIX_AUX_MAK) $(MAKEDIRS)
$(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(ECHOGS_XE) $(GLSRC)echogs.c $(AUXEXTRALIBS)
+$(PACKPS_XE): $(GLSRC)pack_ps.c $(stdpre_h) $(UNIX_AUX_MAK) $(MAKEDIRS)
+ $(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(PACKPS_XE) $(GLSRC)pack_ps.c $(AUXEXTRALIBS)
+
# On the RS/6000 (at least), compiling genarch.c with gcc with -O
# produces a buggy executable.
$(GENARCH_XE): $(GLSRC)genarch.c $(AK) $(GENARCH_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
diff --git a/base/unix-end.mak b/base/unix-end.mak
index f1625ea41..689229f23 100644
--- a/base/unix-end.mak
+++ b/base/unix-end.mak
@@ -110,7 +110,7 @@ gpdlpgclean:
# Define a rule for building debugging configurations.
DEBUGDEFS=GENOPT='-DDEBUG' CFLAGS='$(CFLAGS_DEBUG) $(GCFLAGS) $(XCFLAGS)' \
-GENOPTAUX= CFLAGSAUX='$(CFLAGSAUX_DEBUG) $(GCFLAGSAUX) $(XCFLAGSAUX)'
+GENOPTAUX='-DDEBUG_AUX' CFLAGSAUX='$(CFLAGSAUX_DEBUG) $(GCFLAGSAUX) $(XCFLAGSAUX)'
DEBUGMAKEOPTS=$(SUB_MAKE_OPTION) $(DEBUGDEFS) BUILDDIRPREFIX=$(DEBUGDIRPREFIX)
diff --git a/devices/devs.mak b/devices/devs.mak
index f6a496e5c..d55f8dae1 100644
--- a/devices/devs.mak
+++ b/devices/devs.mak
@@ -737,7 +737,10 @@ gdevpdfx_h=$(DEVVECSRC)gdevpdfx.h\
$(gsparam_h) $(gsuid_h) $(gxdevice_h) $(gxfont_h) $(gxline_h)\
$(spprint_h) $(stream_h) $(gdevpsdf_h) $(gxdevmem_h) $(sarc4_h)
-opdfread_h=$(DEVVECSRC)opdfread.h
+opdfread_h=$(DEVGEN)opdfread.h
+
+$(DEVGEN)opdfread.h : $(PACKPS_XE) $(DEVVECSRC)opdfread.ps
+ $(EXP)$(PACKPS_XE) -c -n opdfread_ps -o $(opdfread_h) $(DEVVECSRC)opdfread.ps
$(DEVOBJ)gdevpdf.$(OBJ) : $(DEVVECSRC)gdevpdf.c $(GDEVH)\
$(fcntl__h) $(memory__h) $(string__h) $(time__h) $(unistd__h) $(gp_h)\
diff --git a/devices/vector/opdfread.h b/devices/vector/opdfread.h
deleted file mode 100644
index a4e67908f..000000000
--- a/devices/vector/opdfread.h
+++ /dev/null
@@ -1,4007 +0,0 @@
-/* Copyright (C) 2001-2017 Artifex Software, Inc.
- All Rights Reserved.
-
- This software is provided AS-IS with no warranty, either express or
- implied.
-
- This software is distributed under license and may not be copied,
- modified or distributed except as expressly authorized under the terms
- of the license contained in the file LICENSE in this distribution.
-
- Refer to licensing information at http://www.artifex.com or contact
- Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael,
- CA 94903, U.S.A., +1(415)492-9861, for further information.
-*/
-
-
-/* $Id: opdfread.h 11951 2010-12-15 08:22:58Z ken */
-/* opdfread.ps - A procset for interpreting an ordered PDF 1.3 file. */
-/* Originally stored in gs/Resource/Init as opdfread.ps and built into
- * the ROM file system, this file was referenced by ps2write when
- * writing PostScript output. With the inclusion of ps2write in the
- * PCL and XPS interpreters we can no longer rely on the PostScript
- * resources being present, and so this file has been converted to
- * 'C' and included as a header. The original file is now stored
- * in gs/lib with the comments intact.
- */
-const char *opdfread_ps [] = {
-"currentdict/DSC_OPDFREAD known{\n",
-"currentdict/DSC_OPDFREAD get\n",
-"}{\n",
-"false\n",
-"}ifelse\n",
-"10 dict begin\n",
-"/DSC_OPDFREAD exch def\n",
-"/this currentdict def\n",
-"/y 720 def\n",
-"/ebuf 200 string def\n",
-"/prnt{\n",
-"36//this/y get moveto//ebuf cvs show\n",
-"//this/y 2 copy get 12 sub put\n",
-"}bind def\n",
-"/newline{\n",
-"36//this/y get moveto\n",
-"//this/y 2 copy get 12 sub put\n",
-"}bind def\n",
-"errordict/handleerror\n",
-"{systemdict begin\n",
-"$error begin\n",
-"newerror\n",
-"{(%%[ Error handled by opdfread.ps : )print errorname//ebuf cvs print(; OffendingCommand: )\n",
-"print/command load//ebuf cvs print( ]%%)= flush\n",
-"/newerror false store vmstatus pop pop 0 ne\n",
-"{grestoreall\n",
-"}if\n",
-"errorname(VMerror)ne\n",
-"{showpage\n",
-"}if\n",
-"initgraphics\n",
-"0 720 moveto\n",
-"errorname(VMerror)eq\n",
-"{//this/ehsave known\n",
-"{clear//this/ehsave get restore 2 vmreclaim\n",
-"}if\n",
-"vmstatus exch pop exch pop\n",
-"}\n",
-"/Courier 12 selectfont\n",
-"{\n",
-"(ERROR: )//prnt exec errorname//prnt exec\n",
-"(OFFENDING COMMAND: )//prnt exec\n",
-"/command load//prnt exec\n",
-"$error/ostack known{\n",
-"(%%[STACK:)=\n",
-"(STACK:)//prnt exec\n",
-"$error/ostack get aload length{\n",
-"//newline exec\n",
-"dup mark eq{\n",
-"(-mark-)dup = show\n",
-"}{\n",
-"dup type/nametype eq{\n",
-"dup xcheck not{\n",
-"(/)show\n",
-"(/)print\n",
-"}if\n",
-"}if\n",
-"dup =//ebuf cvs show\n",
-"}ifelse\n",
-"}repeat\n",
-"}if\n",
-"}ifelse\n",
-"(%%]%)=\n",
-"//systemdict/showpage get exec\n",
-"quit\n",
-"}if\n",
-"end\n",
-"end\n",
-"}bind readonly put\n",
-"end\n",
-"50 dict begin\n",
-"/DefaultSwitch\n",
-"{\n",
-"dup where{\n",
-"pop pop\n",
-"}{\n",
-"false def\n",
-"}ifelse\n",
-"}bind def\n",
-"/=string 256 string def\n",
-"/=only{\n",
-"//=string cvs print\n",
-"}bind def\n",
-"/HexDigits(0123456789ABCDEF)readonly def\n",
-"/PrintHex\n",
-"{8{\n",
-"dup -28 bitshift 15 and//HexDigits exch 1 getinterval//=only exec\n",
-"4 bitshift\n",
-"}repeat\n",
-"pop\n",
-"}bind def\n",
-"/PDFR_DEBUG DefaultSwitch\n",
-"/PDFR_DUMP DefaultSwitch\n",
-"/PDFR_STREAM DefaultSwitch\n",
-"/TTFDEBUG DefaultSwitch\n",
-"/RotatePages DefaultSwitch\n",
-"/FitPages DefaultSwitch\n",
-"/CenterPages DefaultSwitch\n",
-"/SetPageSize DefaultSwitch\n",
-"/error\n",
-"{\n",
-"counttomark 1 sub -1 0{\n",
-"index dup type/arraytype eq{==}{=only}ifelse\n",
-"}for\n",
-"()=\n",
-"cleartomark\n",
-"....Undefined\n",
-"}bind def\n",
-"//SetPageSize{\n",
-"//RotatePages//FitPages or//CenterPages or{\n",
-"mark(/RotatePages, /FitPages and CenterPages are not allowed with /SetPageSize)//error exec\n",
-"}if\n",
-"}\n",
-"{\n",
-"//FitPages//CenterPages and{\n",
-"mark(CenterPages is not allowed with /FitPages)//error exec\n",
-"}if\n",
-"}\n",
-"ifelse\n",
-"/knownget\n",
-"{\n",
-"2 copy known{\n",
-"get true\n",
-"}{\n",
-"pop pop false\n",
-"}ifelse\n",
-"}bind def\n",
-"/IsUpper\n",
-"{dup(A)0 get ge exch(Z)0 get le and\n",
-"}bind def\n",
-"/cpa2g{\n",
-"dup length array\n",
-"0 1 2 index length 1 sub{\n",
-"dup 3 index exch get cp2g\n",
-"3 copy put pop pop\n",
-"}for\n",
-"exch pop\n",
-"}bind def\n",
-"/cpd2g{\n",
-"dup length dict exch{\n",
-"cp2g 2 index 3 1 roll put\n",
-"}forall\n",
-"}bind def\n",
-"/cps2g{\n",
-"dup length string copy\n",
-"}bind def\n",
-"/cp2gprocs\n",
-"<</arraytype//cpa2g/dicttype//cpd2g/packedarraytype//cpa2g/stringtype//cps2g >>\n",
-"def\n",
-"/cp2g{\n",
-"dup gcheck not{\n",
-"dup//cp2gprocs 1 index type\n",
-"2 copy known{\n",
-"get currentglobal 3 1 roll true setglobal exec exch setglobal\n",
-"1 index wcheck not{readonly}if\n",
-"1 index xcheck{cvx}if\n",
-"exch pop\n",
-"}{\n",
-"pop pop\n",
-"}ifelse\n",
-"}if\n",
-"}bind def\n",
-"/BlockBuffer 65535 string def\n",
-"/PDFReader currentdict def\n",
-"/ObjectRegistryMaxLength 50000 def\n",
-"/ObjectRegistry 10 dict def\n",
-"ObjectRegistry\n",
-"begin\n",
-"0 ObjectRegistryMaxLength dict def\n",
-"end\n",
-"/CurrentObject null def\n",
-"/DoneDocumentStructure false def\n",
-"/GraphicState 20 dict begin\n",
-"/InitialTextMatrix matrix def\n",
-"/InitialMatrix matrix currentmatrix def\n",
-"currentdict end def\n",
-"/TempMatrix matrix def\n",
-"/GraphicStateStack 20 array def\n",
-"/GraphicStateStackPointer 0 def\n",
-"/InitialTextMatrixStack 20 array def\n",
-"/InitialTextMatrixStackPointer 0 def\n",
-"/PDFColorSpaces 50 dict def\n",
-"/InstalledFonts 50 dict def\n",
-"/MacRomanEncodingInverse null def\n",
-"currentglobal false setglobal\n",
-"userdict/PDFR_InitialGS gstate put\n",
-"userdict/PDFR_Patterns 50 dict put\n",
-"userdict/FuncDataReader 10 dict put\n",
-"setglobal\n",
-"/InitialExtGState 20 dict begin\n",
-"/BG2 currentblackgeneration cp2g def\n",
-"/UCR2 currentundercolorremoval cp2g def\n",
-"/TR2 currentglobal false setglobal[currentcolortransfer]exch setglobal cp2g def\n",
-"/HT currenthalftone cp2g def\n",
-"currentdict end readonly def\n",
-"/InitialGraphicState 20 dict begin\n",
-"/FontSize 0 def\n",
-"/CharacterSpacing 0 def\n",
-"/TextLeading 0 def\n",
-"/TextRenderingMode 0 def\n",
-"/WordSpacing 0 def\n",
-"currentdict end readonly def\n",
-"/SimpleColorSpaceNames 15 dict begin\n",
-"/DeviceGray true def\n",
-"/DeviceRGB true def\n",
-"/DeviceCMYK true def\n",
-"currentdict end readonly def\n",
-"/1_24_bitshift_1_sub 1 24 bitshift 1 sub def\n",
-"/ReadFontProcs 10 dict def\n",
-"/GetObject\n",
-"{\n",
-"dup ObjectRegistryMaxLength idiv\n",
-"//PDFReader/ObjectRegistry get exch knownget{\n",
-"exch knownget\n",
-"}{\n",
-"pop false\n",
-"}ifelse\n",
-"}bind def\n",
-"/PutObject\n",
-"{\n",
-"1 index ObjectRegistryMaxLength idiv\n",
-"//PDFReader/ObjectRegistry get 1 index knownget{\n",
-"exch pop\n",
-"3 1 roll put\n",
-"}{\n",
-"//PDFReader/ObjectRegistry get dup\n",
-"begin\n",
-"1 index ObjectRegistryMaxLength dict def\n",
-"end\n",
-"exch get\n",
-"3 1 roll put\n",
-"}ifelse\n",
-"}bind def\n",
-"/Register\n",
-"{\n",
-"1 index GetObject{\n",
-"dup xcheck{\n",
-"4 3 roll pop\n",
-"//PDFR_DEBUG{\n",
-"(Have a daemon for )print 2 index ==\n",
-"}if\n",
-"exec\n",
-"}{\n",
-"dup null ne{\n",
-"mark(The object )4 index(is already defined : )4 index//error exec\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"3 2 roll\n",
-"exec\n",
-"}ifelse\n",
-"}{\n",
-"3 2 roll\n",
-"exec\n",
-"}ifelse\n",
-"PutObject\n",
-"}bind def\n",
-"/IsRegistered\n",
-"{\n",
-"GetObject{\n",
-"null ne\n",
-"}{\n",
-"false\n",
-"}ifelse\n",
-"}bind def\n",
-"/GetRegistered\n",
-"{\n",
-"dup GetObject not{\n",
-"exch mark exch(Object )exch( isn't defined before needed (1).)//error exec\n",
-"}if\n",
-"dup xcheck{\n",
-"exch mark exch(Object )exch( isn't defined before needed (2).)//error exec\n",
-"}{\n",
-"dup null eq{\n",
-"exch mark exch(Object )exch( isn't defined before needed (3).)//error exec\n",
-"}if\n",
-"exch pop\n",
-"}ifelse\n",
-"}bind def\n",
-"/StandardFontNames<<\n",
-"/Times-Roman true\n",
-"/Helvetica true\n",
-"/Courier true\n",
-"/Symbol true\n",
-"/Times-Bold true\n",
-"/Helvetica-Bold true\n",
-"/Courier-Bold true\n",
-"/ZapfDingbats true\n",
-"/Times-Italic true\n",
-"/Helvetica-Oblique true\n",
-"/Courier-Oblique true\n",
-"/Times-BoldItalic true\n",
-"/Helvetica-BoldOblique true\n",
-"/Courier-BoldOblique true\n",
-">>def\n",
-"/CleanAllResources\n",
-"{//PDFR_DEBUG{\n",
-"(CleanAllResources beg)=\n",
-"}if\n",
-"//PDFReader/ObjectRegistry get{\n",
-"dup length 0 exch 1 exch 1 sub{\n",
-"2 copy get dup xcheck{\n",
-"pop pop\n",
-"}{\n",
-"dup null eq{\n",
-"pop pop\n",
-"}{\n",
-"dup type/dicttype eq{/.Global known}{pop false}ifelse{\n",
-"pop\n",
-"}{\n",
-"//PDFR_DEBUG{\n",
-"(Dropping )print dup =\n",
-"}if\n",
-"1 index exch/DroppedObject put\n",
-"}ifelse\n",
-"}ifelse\n",
-"}ifelse\n",
-"}for\n",
-"pop\n",
-"}forall\n",
-"FontDirectory length dict begin\n",
-"FontDirectory{\n",
-"pop\n",
-"dup//StandardFontNames exch known not{\n",
-"dup null def\n",
-"}if\n",
-"pop\n",
-"}forall\n",
-"currentdict\n",
-"end{\n",
-"pop\n",
-"//PDFR_DEBUG{\n",
-"(Undefining font )print dup =\n",
-"}if\n",
-"undefinefont\n",
-"}forall\n",
-"//PDFR_DEBUG{\n",
-"(CleanAllResources end)=\n",
-"}if\n",
-"}bind def\n",
-"/PrintReference\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"({ )print\n",
-"dup{\n",
-"=only( )print\n",
-"}forall\n",
-"( })=\n",
-"}if\n",
-"}bind def\n",
-"/R\n",
-"{\n",
-"0 ne{\n",
-"exch mark exch(A referred object generation )exch( isn't 0.)//error exec\n",
-"}if\n",
-"[\n",
-"exch//GetRegistered/exec load\n",
-"]cvx\n",
-"//PrintReference exec\n",
-"}bind def\n",
-"/IsObjRef\n",
-"{\n",
-"dup type/arraytype eq{\n",
-"dup length 3 eq{\n",
-"dup xcheck exch\n",
-"dup 0 get type/integertype eq 3 2 roll and exch\n",
-"dup 1 get//GetRegistered eq 3 2 roll and exch\n",
-"2 get/exec load eq and\n",
-"}{\n",
-"pop false\n",
-"}ifelse\n",
-"}{\n",
-"pop false\n",
-"}ifelse\n",
-"}bind def\n",
-"/DoNothing\n",
-"{\n",
-"}def\n",
-"/RunTypeDaemon\n",
-"{\n",
-"dup type/dicttype eq{\n",
-"dup/Type//knownget exec{\n",
-"//PDFReader/TypeDaemons get exch\n",
-"//knownget exec{\n",
-"exec\n",
-"}if\n",
-"}if\n",
-"}if\n",
-"}bind def\n",
-"/obj\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(Defining )print 1 index =only( )print dup =only( obj)=\n",
-"}if\n",
-"0 ne{\n",
-"exch mark exch(An object generation )exch( isn't 0.)//error exec\n",
-"}if\n",
-"}bind def\n",
-"/endobj\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(endobj )=\n",
-"}if\n",
-"count 1 eq{\n",
-"pop\n",
-"}{\n",
-"dup type/dicttype eq{\n",
-"dup/.endobj_daemon//knownget exec{\n",
-"//PDFR_DEBUG{(.endobj_daemon for )print 2 index =}if\n",
-"exec\n",
-"}if\n",
-"}if\n",
-"dup type/dicttype eq{dup/ImmediateExec known}{false}ifelse{\n",
-"pop pop\n",
-"}{\n",
-"//PDFR_DEBUG{\n",
-"(Storing )print 1 index =\n",
-"}if\n",
-"//RunTypeDaemon exec\n",
-"//DoNothing 3 1 roll//Register exec\n",
-"}ifelse\n",
-"}ifelse\n",
-"}bind def\n",
-"/StoreBlock\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(StoreBlock )print//PDFReader/BlockCount get =only(, Length = )print dup length =\n",
-"}if\n",
-"dup length string copy\n",
-"//PDFReader/BlockCount get exch\n",
-"//PDFReader/CurrentObject get 3 1 roll\n",
-"put\n",
-"//PDFReader/BlockCount get 1 add\n",
-"//PDFReader exch/BlockCount exch put\n",
-"}bind def\n",
-"/CheckLength\n",
-"{dup type/integertype ne{\n",
-"mark(Object length isn't an integer.)//error exec\n",
-"}if\n",
-"}bind def\n",
-"/ResolveD\n",
-"{\n",
-"3 copy pop get\n",
-"dup//IsObjRef exec{\n",
-"//PDFR_DEBUG{\n",
-"(Resolving )print//PrintReference exec\n",
-"}if\n",
-"exec\n",
-"exch exec\n",
-"}{\n",
-"exch pop\n",
-"}ifelse\n",
-"dup 4 1 roll\n",
-"put\n",
-"}bind def\n",
-"/ResolveA\n",
-"{2 index 2 index get\n",
-"dup//IsObjRef exec{\n",
-"exec\n",
-"exch exec\n",
-"3 copy put\n",
-"}{\n",
-"exch pop\n",
-"}ifelse\n",
-"exch pop exch pop\n",
-"}bind def\n",
-"/StoreStream\n",
-"{\n",
-"dup//PDFReader exch/CurrentObject exch put\n",
-"//PDFReader/BlockCount 0 put\n",
-"dup/Length//CheckLength//ResolveD exec\n",
-"//PDFR_DEBUG{\n",
-"(StoreStream Length = )print dup =\n",
-"}if\n",
-"currentfile exch()/SubFileDecode filter\n",
-"{dup//BlockBuffer readstring{\n",
-"//StoreBlock exec\n",
-"}{\n",
-"//StoreBlock exec\n",
-"exit\n",
-"}ifelse\n",
-"}loop\n",
-"pop\n",
-"//PDFReader/CurrentObject null put\n",
-"//PDFR_DEBUG{\n",
-"(StoreStream end.)=\n",
-"}if\n",
-"}bind def\n",
-"/MakeStreamDumper\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(MakeStreamDumper beg.)=\n",
-"}if\n",
-"currentglobal exch dup gcheck setglobal\n",
-"[exch\n",
-"1 dict dup/c 0 put exch\n",
-"1024 string\n",
-"{readstring pop\n",
-"(StreamDumper )print 1 index/c get =string cvs print( )print\n",
-"dup length =string cvs print( <)print dup print(>\\n)print\n",
-"dup length\n",
-"3 2 roll\n",
-"dup/c get\n",
-"3 2 roll\n",
-"add/c exch put\n",
-"}/exec load\n",
-"]\n",
-"cvx 0()/SubFileDecode filter\n",
-"exch setglobal\n",
-"//PDFR_DEBUG{\n",
-"(MakeStreamDumper end.)=\n",
-"}if\n",
-"}bind def\n",
-"/ShortFilterNames 15 dict begin\n",
-"/AHx/ASCIIHexDecode def\n",
-"/A85/ASCII85Decode def\n",
-"/LZW/LZWDecode def\n",
-"/Fl/FlateDecode def\n",
-"/RL/RunLengthDecode def\n",
-"/CCF/CCITTFaxDecode def\n",
-"/DCT/DCTDecode def\n",
-"currentdict end readonly def\n",
-"/AppendFilters\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(AppendFilters beg.)=\n",
-"}if\n",
-"dup 3 1 roll\n",
-"/Filter//knownget exec{\n",
-"dup type/nametype eq{\n",
-"dup//ShortFilterNames exch//knownget exec{\n",
-"exch pop\n",
-"}if\n",
-"2 index/DecodeParms//knownget exec{\n",
-"exch\n",
-"}if\n",
-"filter\n",
-"}{\n",
-"dup 0 exch 1 exch length 1 sub{\n",
-"2 copy get\n",
-"dup//ShortFilterNames exch//knownget exec{\n",
-"exch pop\n",
-"}if\n",
-"3 1 roll\n",
-"4 index/DecodeParms//knownget exec{\n",
-"exch get\n",
-"}{\n",
-"pop null\n",
-"}ifelse\n",
-"dup null eq{\n",
-"pop 3 1 roll filter exch\n",
-"}{\n",
-"3 1 roll\n",
-"4 1 roll filter exch\n",
-"}ifelse\n",
-"}for\n",
-"pop\n",
-"}ifelse\n",
-"//PDFR_DEBUG//PDFR_DUMP and{\n",
-"//MakeStreamDumper exec\n",
-"}if\n",
-"}if\n",
-"exch pop\n",
-"//PDFR_DEBUG{\n",
-"(AppendFilters end.)=\n",
-"}if\n",
-"}bind def\n",
-"/ExecuteStream\n",
-"{\n",
-"dup//PDFReader exch/CurrentObject exch put\n",
-"dup/Length//CheckLength//ResolveD exec\n",
-"//PDFR_DEBUG{\n",
-"(ExecuteStream id = )print 2 index =only( Length = )print dup =\n",
-"}if\n",
-"//PDFReader/InitialGraphicState get\n",
-"//PDFReader/GraphicState get copy pop\n",
-"//PDFReader/Operators get begin\n",
-"currentfile exch()/SubFileDecode filter\n",
-"1 index//AppendFilters exec\n",
-"cvx mark exch\n",
-"exec\n",
-"counttomark 0 ne{\n",
-"mark(Data left on ostack after an immediate stream execution.)//error exec\n",
-"}if\n",
-"cleartomark\n",
-"end\n",
-"//PDFR_DEBUG{\n",
-"(ExecuteStream end.)=\n",
-"}if\n",
-"//PDFReader/CurrentObject null put\n",
-"dup/IsPage known{\n",
-"dup/Context get/NumCopies//knownget exec{\n",
-"1 sub{\n",
-"copypage\n",
-"}repeat\n",
-"}if\n",
-"EPS2Write not{showpage}if\n",
-"}if\n",
-"}bind def\n",
-"/stream\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"1 index =only( stream)=\n",
-"}if\n",
-"1 index GetObject{\n",
-"dup xcheck{\n",
-"exec\n",
-"1 index null PutObject\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"}if\n",
-"dup/ImmediateExec known{\n",
-"dup/GlobalExec//knownget exec{\n",
-"currentglobal 4 1 roll\n",
-"setglobal\n",
-"//ExecuteStream exec\n",
-"3 2 roll setglobal\n",
-"}{\n",
-"//ExecuteStream exec\n",
-"}ifelse\n",
-"}{\n",
-"//StoreStream exec\n",
-"}ifelse\n",
-"dup/.CleanResources//knownget exec{\n",
-"/All eq{\n",
-"//CleanAllResources exec\n",
-"}if\n",
-"}if\n",
-"}bind def\n",
-"/HookFont\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(Loaded the font )print dup/FontName get =\n",
-"}if\n",
-"{\n",
-"dup/FontFileType get dup/Type1 eq exch/MMType1 eq or{\n",
-"dup/FontName get\n",
-"//PDFReader/RemoveFontNamePrefix get exec\n",
-"findfont\n",
-"exit\n",
-"}if\n",
-"dup/FontFileType get/TrueType eq{\n",
-"//PDFReader/MakeType42 get exec\n",
-"//PDFR_DEBUG{\n",
-"(Font dict <<)=\n",
-"dup{\n",
-"1 index/sfnts eq{\n",
-"exch pop\n",
-"(/sfnts [)print\n",
-"{\n",
-"(-string\\()print length//=only exec(\\)- )=\n",
-"}forall\n",
-"(])=\n",
-"}{\n",
-"exch//=only exec( )print ==\n",
-"}ifelse\n",
-"}forall\n",
-"(>>)=\n",
-"}if\n",
-"dup/FontName get exch definefont\n",
-"exit\n",
-"}if\n",
-"mark(FontHook has no proc for )2 index/FontFileType get//error exec\n",
-"}loop\n",
-"/Font exch put\n",
-"}bind def\n",
-"/endstream\n",
-"{\n",
-"}bind def\n",
-"/xref\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(xref)=\n",
-"//PDFR_DUMP{\n",
-"//PDFReader/ObjectRegistry get ==\n",
-"}if\n",
-"}if\n",
-"end\n",
-"count 0 ne{\n",
-"mark(Excessive data on estack at the end of the interpretation.)//error exec\n",
-"}if\n",
-"currentfile 1(%%EOF)/SubFileDecode filter\n",
-"flushfile\n",
-"cleardictstack\n",
-"}bind def\n",
-"/ResolveDict\n",
-"{dup{\n",
-"pop 1 index exch\n",
-"//DoNothing//ResolveD exec\n",
-"pop\n",
-"}forall\n",
-"pop\n",
-"}bind def\n",
-"/SetupPageView\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(SetupPageView beg)=\n",
-"}if\n",
-"//DSC_OPDFREAD not{\n",
-"//GraphicState/InitialMatrix get setmatrix\n",
-"}if\n",
-"/MediaBox get aload pop\n",
-"3 index neg 3 index neg translate\n",
-"3 -1 roll sub 3 1 roll exch sub exch\n",
-"userdict/.HWMargins//knownget exec{\n",
-"aload pop\n",
-"}{\n",
-"currentpagedevice/.HWMargins//knownget exec{\n",
-"aload pop\n",
-"}{\n",
-"0 0 0 0\n",
-"}ifelse\n",
-"}ifelse\n",
-"currentpagedevice/PageSize get aload pop\n",
-"3 -1 roll sub 3 1 roll exch sub exch\n",
-"exch 3 index sub exch 3 index sub\n",
-"//SetPageSize{\n",
-"//PDFR_DEBUG{\n",
-"(Setting page size to )print 1 index//=only exec( )print dup =\n",
-"}if\n",
-"pop pop 3 index 3 index 2 copy\n",
-"currentglobal false setglobal 3 1 roll\n",
-"currentpagedevice dup/PageSize known{\n",
-"/PageSize get aload pop\n",
-"}{\n",
-"0 0\n",
-"}ifelse\n",
-"round cvi 2 index round cvi eq\n",
-"exch round cvi 3 index round cvi eq and\n",
-"{\n",
-"//PDFR_DEBUG{(PageSize matches request)== flush}if\n",
-"pop pop\n",
-"}{\n",
-"/MediaRequested where{\n",
-"//PDFR_DEBUG{(MediaRequested is true, check against new request)== flush}if\n",
-"/MediaRequested get aload pop\n",
-"round cvi 2 index round cvi eq\n",
-"exch round cvi 3 index round cvi eq and\n",
-"{\n",
-"//PDFR_DEBUG{(MediaRequested same as current request, ignore)== flush}if\n",
-"pop pop false\n",
-"}{\n",
-"//PDFR_DEBUG{(MediaRequested different to current request)== flush}if\n",
-"true\n",
-"}ifelse\n",
-"}{\n",
-"//PDFR_DEBUG{(No MediaRequested yet)== flush}if\n",
-"true\n",
-"}ifelse\n",
-"{\n",
-"//PDFR_DEBUG{(Setting pagesize)== flush}if\n",
-"2 array astore\n",
-"dup/MediaRequested exch def\n",
-"<< exch/PageSize exch >>setpagedevice\n",
-"}if\n",
-"}ifelse\n",
-"userdict/PDFR_InitialGS gstate put\n",
-"setglobal\n",
-"}if\n",
-"//RotatePages{\n",
-"2 copy gt 6 index 6 index gt ne{\n",
-"1 index 5 index le 1 index 5 index le and not\n",
-"}{\n",
-"false\n",
-"}ifelse\n",
-"}{\n",
-"false\n",
-"}ifelse\n",
-"{//CenterPages{\n",
-"//PDFR_DEBUG{\n",
-"(Rotating page, and then centering it)==\n",
-"}if\n",
-"90 rotate\n",
-"0 5 index neg translate\n",
-"5 index 1 index exch sub 2 div\n",
-"2 index 6 index sub 2 div neg\n",
-"translate\n",
-"}{\n",
-"//FitPages{\n",
-"1 index 5 index div 1 index 7 index div\n",
-"2 copy gt{\n",
-"exch\n",
-"}if\n",
-"pop dup scale\n",
-"}if\n",
-"90 rotate\n",
-"0 5 index neg translate\n",
-"}ifelse\n",
-"}{\n",
-"//CenterPages{\n",
-"//PDFR_DEBUG{\n",
-"(Ccentering page)==\n",
-"}if\n",
-"1 index 6 index sub 2 div\n",
-"1 index 6 index sub 2 div\n",
-"translate\n",
-"}{\n",
-"//FitPages{\n",
-"1 index 6 index div 1 index 6 index div\n",
-"2 copy gt{\n",
-"exch\n",
-"}if\n",
-"pop dup scale\n",
-"}if\n",
-"}ifelse\n",
-"}ifelse\n",
-"pop pop\n",
-"translate\n",
-"pop pop\n",
-"//PDFR_DEBUG{\n",
-"(SetupPageView end)=\n",
-"}if\n",
-"}bind def\n",
-"/PageContentsDaemon\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(Executing PageContentsDaemon for )print 2 index =\n",
-"}if\n",
-"1 index exch/Context exch put\n",
-"dup/ImmediateExec true put\n",
-"dup/IsPage true put\n",
-"SetPageSize{dup/Context get//SetupPageView exec}if\n",
-"}bind def\n",
-"/FontFileDaemon\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(Executing FontFileDaemon for )print 2 index =\n",
-"}if\n",
-"dup/FontFileType get\n",
-"2 index exch\n",
-"dup//ReadFontProcs exch//knownget exec{\n",
-"exch pop exec\n",
-"}{\n",
-"mark(FontFile reader for )2 index( isn't implemented yet.)//error exec\n",
-"}ifelse\n",
-"//PDFR_DEBUG{\n",
-"(FontFileDaemon end)=\n",
-"}if\n",
-"pop\n",
-"}bind def\n",
-"/FontDescriptorDaemon\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(Executing FontDescriptorDaemon for )print 2 index =\n",
-"}if\n",
-"2 copy/FontResource exch put\n",
-"/Subtype get 1 index exch/FontFileType exch put\n",
-"}bind def\n",
-"/UnPDFEscape{\n",
-"dup dup length string cvs\n",
-"dup(#)search{\n",
-"{\n",
-"pop\n",
-"(16#--)2 index 0 2 getinterval\n",
-"1 index 3 2 getinterval copy pop\n",
-"cvi\n",
-"0 exch put\n",
-"0\n",
-"1 index 2 1 index length 2 sub getinterval\n",
-"3 copy putinterval\n",
-"length\n",
-"3 copy exch put\n",
-"getinterval\n",
-"(#)search not{\n",
-"pop exit\n",
-"}if\n",
-"}loop\n",
-"(\\0)search pop exch pop exch pop\n",
-"cvn\n",
-"exch pop\n",
-"}{\n",
-"pop pop\n",
-"}ifelse\n",
-"}bind def\n",
-"/TypeDaemons<<\n",
-"/Page\n",
-"{//PDFR_DEBUG{\n",
-"(Recognized a page.)=\n",
-"}if\n",
-"dup/Contents//knownget exec{\n",
-"0 get//DoNothing exch\n",
-"[\n",
-"3 index//PageContentsDaemon/exec load\n",
-"]cvx\n",
-"//Register exec\n",
-"}{\n",
-"(fixme: page with no Contents won't be printed.)=\n",
-"}ifelse\n",
-"}bind\n",
-"/FontDescriptor\n",
-"{//PDFR_DEBUG{\n",
-"(Recognized a font descriptor.)=\n",
-"}if\n",
-"dup/FontName//knownget exec{\n",
-"1 index/FontName 3 -1 roll//UnPDFEscape exec put\n",
-"}if\n",
-"dup dup/FontFile known{/FontFile}{/FontFile2}ifelse\n",
-"//knownget exec{\n",
-"0 get//DoNothing exch\n",
-"[\n",
-"3 index//FontFileDaemon/exec load\n",
-"]cvx\n",
-"//Register exec\n",
-"}{\n",
-"(Font descriptor )print 1 index =only( has no FontFile.)=\n",
-"}ifelse\n",
-"}bind\n",
-"/Font\n",
-"{//PDFR_DEBUG{\n",
-"(Recognized a font resource.)=\n",
-"}if\n",
-"dup/BaseFont//knownget exec{\n",
-"//UnPDFEscape exec 2 copy/BaseFont exch put\n",
-"//PDFReader/RemoveFontNamePrefix get exec\n",
-"currentglobal exch\n",
-"dup/Font resourcestatus{\n",
-"pop pop\n",
-"//PDFReader/GetInstalledFont get exec pop\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"setglobal\n",
-"}if\n",
-"dup/FontDescriptor//knownget exec{\n",
-"0 get\n",
-"dup//IsRegistered exec{\n",
-"//PDFR_DEBUG{\n",
-"(already registered )print dup =\n",
-"}if\n",
-"pop\n",
-"}{\n",
-"//DoNothing exch\n",
-"[\n",
-"3 index//FontDescriptorDaemon/exec load\n",
-"]cvx\n",
-"//Register exec\n",
-"}ifelse\n",
-"}if\n",
-"}bind\n",
-">>def\n",
-"/MakeStreamReader\n",
-"{dup\n",
-"[\n",
-"exch\n",
-"//PDFR_DEBUG{\n",
-"(Stream proc )\n",
-"/print load\n",
-"//PDFR_STREAM{\n",
-"(<)\n",
-"/print load\n",
-"}if\n",
-"}if\n",
-"1 dict dup/i -1 put\n",
-"/dup load\n",
-"/i\n",
-"/get load\n",
-"1\n",
-"/add load\n",
-"/dup load\n",
-"3\n",
-"1\n",
-"/roll load\n",
-"/i\n",
-"/exch load\n",
-"/put load\n",
-"//knownget\n",
-"/exec load\n",
-"/not load\n",
-"{()}\n",
-"/if load\n",
-"//PDFR_DEBUG{\n",
-"//PDFR_STREAM{\n",
-"/dup load\n",
-"/print load\n",
-"(>)\n",
-"/print load\n",
-"}if\n",
-"( end of stream proc.\\n)\n",
-"/print load\n",
-"}if\n",
-"]cvx\n",
-"//PDFR_DEBUG{\n",
-"(Stream reader )print dup ==\n",
-"}if\n",
-"0()/SubFileDecode filter\n",
-"exch//AppendFilters exec\n",
-"}bind def\n",
-"/RunDelayedStream\n",
-"{\n",
-"//GraphicState/InitialTextMatrix get\n",
-"//InitialTextMatrixStack//PDFReader/InitialTextMatrixStackPointer get\n",
-"2 copy get null eq{\n",
-"2 copy currentglobal true setglobal matrix exch setglobal put\n",
-"}if\n",
-"get copy pop\n",
-"//PDFReader/InitialTextMatrixStackPointer 2 copy get 1 add put\n",
-"//MakeStreamReader exec\n",
-"mark exch\n",
-"cvx exec\n",
-"counttomark 0 ne{\n",
-"mark(Data left on ostack after a delayed stream execution.)//error exec\n",
-"}if\n",
-"cleartomark\n",
-"//PDFReader/InitialTextMatrixStackPointer 2 copy get 1 sub put\n",
-"//InitialTextMatrixStack//PDFReader/InitialTextMatrixStackPointer get get\n",
-"//GraphicState/InitialTextMatrix get\n",
-"copy pop\n",
-"}bind def\n",
-"//ReadFontProcs begin\n",
-"/Type1\n",
-"{//PDFR_DEBUG{\n",
-"(ReadFontProcs.Type1)=\n",
-"}if\n",
-"dup/.endobj_daemon[4 index//HookFont/exec load]cvx put\n",
-"dup/ImmediateExec true put\n",
-"/GlobalExec true put\n",
-"}bind def\n",
-"/MMType1//Type1 def\n",
-"/TrueType\n",
-"{//PDFR_DEBUG{\n",
-"(ReadFontProcs.TrueType)=\n",
-"}if\n",
-"dup/.endobj_daemon[4 index//HookFont/exec load]cvx put\n",
-"pop\n",
-"}bind def\n",
-"end\n",
-"/.opdloadttfontdict 50 dict def\n",
-".opdloadttfontdict begin\n",
-"/maxstring 65400 def\n",
-"end\n",
-"/.InsertionSort\n",
-"{\n",
-"/CompareProc exch def\n",
-"/Array exch def\n",
-"1 1 Array length 1 sub\n",
-"{\n",
-"/Ix exch def\n",
-"/Value1 Array Ix get def\n",
-"/Jx Ix 1 sub def\n",
-"{\n",
-"Jx 0 lt{\n",
-"exit\n",
-"}if\n",
-"/Value2 Array Jx get def\n",
-"Value1 Value2 CompareProc{\n",
-"exit\n",
-"}if\n",
-"Array Jx 1 add Value2 put\n",
-"/Jx Jx 1 sub def\n",
-"}loop\n",
-"Array Jx 1 add Value1 put\n",
-"}for\n",
-"Array\n",
-"}bind def\n",
-"/putu16{\n",
-"3 copy -8 bitshift put\n",
-"exch 1 add exch 16#ff and put\n",
-"}bind def\n",
-"/putu32{\n",
-"3 copy -16 bitshift putu16\n",
-"exch 2 add exch 16#ffff and putu16\n",
-"}bind def\n",
-"/.readtable{\n",
-"dup dup 1 and add string\n",
-"dup 0 4 -1 roll getinterval\n",
-"3 -1 roll exch\n",
-"dup()ne{readstring}if pop pop\n",
-"}bind def\n",
-"/.readbigtable{\n",
-"dup maxstring lt{\n",
-".readtable\n",
-"}{\n",
-"currentuserparams/VMReclaim get -2 vmreclaim\n",
-"[4 2 roll{\n",
-"dup maxstring le{exit}if\n",
-"1 index maxstring string readstring pop 3 1 roll maxstring sub\n",
-"}loop .readtable]\n",
-"exch vmreclaim\n",
-"}ifelse\n",
-"}bind def\n",
-"/ReadTTF\n",
-"{\n",
-".opdloadttfontdict begin\n",
-"/TTFontFile exch def\n",
-"/TableDir TTFontFile 12 string readstring pop def\n",
-"/tables TTFontFile TableDir 4 getu16 16 mul string readstring pop def\n",
-"/tabarray tables length 16 idiv array def\n",
-"TableDir 0 4 getinterval(ttcf)eq{\n",
-"QUIET not{(Can't handle TrueType font Collections.)=}if\n",
-"/.loadttfonttables cvx/invalidfont signalerror\n",
-"}{\n",
-"0 16 tables length 1 sub{\n",
-"dup\n",
-"tables exch 16 getinterval\n",
-"exch 16 div cvi exch\n",
-"tabarray 3 1 roll put\n",
-"}for\n",
-"}ifelse\n",
-"tabarray{exch 8 getu32 exch 8 getu32 gt}.InsertionSort pop\n",
-"/Read TableDir length tables length add def\n",
-"/tabs[\n",
-"tabarray{\n",
-"dup 8 getu32\n",
-"Read sub\n",
-"dup 0 gt{\n",
-"dup string TTFontFile exch readstring pop pop\n",
-"Read add/Read exch def\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"12 getu32\n",
-"dup Read add\n",
-"/Read exch def\n",
-"TTFontFile exch .readbigtable\n",
-"}forall\n",
-"]def\n",
-"end\n",
-"}bind def\n",
-"/GetLocaType\n",
-"{\n",
-"0 1 tabarray length 1 sub{\n",
-"dup tabarray exch get\n",
-"0 4 getinterval(head)eq{\n",
-"tabs exch get\n",
-"50 gets16\n",
-"/LocaType exch def\n",
-"exit\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"}for\n",
-"}bind def\n",
-"/GetNumGlyphs\n",
-"{\n",
-"0 1 tabarray length 1 sub{\n",
-"dup tabarray exch get\n",
-"0 4 getinterval(maxp)eq{\n",
-"tabs exch get\n",
-"4 getu16\n",
-"/NumGlyphs exch def\n",
-"exit\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"}for\n",
-"}bind def\n",
-"/StringToLoca\n",
-"{\n",
-"/LocaIndex exch def\n",
-"/StringOffset 0 def\n",
-"{\n",
-"dup length StringOffset gt{\n",
-"dup\n",
-"LocaType 1 eq{\n",
-"StringOffset getu32\n",
-"LocaArray LocaIndex 3 -1 roll put\n",
-"/LocaIndex LocaIndex 1 add def\n",
-"/StringOffset StringOffset 4 add\n",
-"def\n",
-"}{\n",
-"StringOffset getu16 2 mul\n",
-"LocaArray length LocaIndex gt{\n",
-"LocaArray LocaIndex 3 -1 roll put\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"/LocaIndex LocaIndex 1 add def\n",
-"/StringOffset StringOffset 2 add\n",
-"def\n",
-"}ifelse\n",
-"}{\n",
-"pop\n",
-"LocaIndex\n",
-"exit\n",
-"}ifelse\n",
-"}loop\n",
-"}bind def\n",
-"/GetSortedLoca\n",
-"{\n",
-"NumGlyphs 1 add array/LocaArray exch def\n",
-"0 1 tabarray length 1 sub{\n",
-"dup tabarray exch get\n",
-"0 4 getinterval(loca)eq{\n",
-"tabs exch get\n",
-"exit\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"}for\n",
-"dup type/stringtype eq{\n",
-"0 StringToLoca pop\n",
-"}{\n",
-"0 exch\n",
-"{\n",
-"exch StringToLoca\n",
-"}forall\n",
-"pop\n",
-"}ifelse\n",
-"LocaArray{gt}.InsertionSort pop\n",
-"}bind def\n",
-"/GetWorkingString\n",
-"{\n",
-"WorkString 0\n",
-"GlyfArray GlyfStringIndex get\n",
-"putinterval\n",
-"/WorkBytes GlyfArray GlyfStringIndex get length def\n",
-"/GlyfStringIndex GlyfStringIndex 1 add def\n",
-"}bind def\n",
-"/GetWorkingBytes\n",
-"{\n",
-"/BytesToRead exch def\n",
-"WorkString 0 BytesToRead getinterval\n",
-"dup length string copy\n",
-"WorkString BytesToRead WorkBytes BytesToRead sub getinterval\n",
-"dup length string copy\n",
-"WorkString 0 3 -1 roll putinterval\n",
-"/WorkBytes WorkBytes BytesToRead sub def\n",
-"}bind def\n",
-"/GetGlyfBytes\n",
-"{\n",
-"/ToRead exch def\n",
-"WorkBytes 0 eq{\n",
-"GetWorkingString\n",
-"}if\n",
-"WorkBytes ToRead ge{\n",
-"ToRead string dup 0\n",
-"ToRead GetWorkingBytes putinterval\n",
-"}{\n",
-"ToRead string\n",
-"dup\n",
-"0\n",
-"WorkString 0 WorkBytes getinterval\n",
-"putinterval\n",
-"dup\n",
-"WorkBytes\n",
-"ToRead WorkBytes sub\n",
-"GetWorkingString\n",
-"GetWorkingBytes\n",
-"putinterval\n",
-"}ifelse\n",
-"}bind def\n",
-"/SplitGlyf\n",
-"{\n",
-"/GlyfArray exch def\n",
-"/DestArray GlyfArray length 2 mul array def\n",
-"/DestArrayIndex 0 def\n",
-"/LastLoca 0 def\n",
-"/NextLocaIndex 0 def\n",
-"/LastLocaIndex 0 def\n",
-"/GlyfStringIndex 0 def\n",
-"/WorkString maxstring string def\n",
-"/WorkBytes 0 def\n",
-"{\n",
-"LocaArray NextLocaIndex get\n",
-"LastLoca sub maxstring gt\n",
-"{\n",
-"LocaArray LastLocaIndex get LastLoca sub\n",
-"GetGlyfBytes\n",
-"DestArray DestArrayIndex 3 -1 roll put\n",
-"/DestArrayIndex DestArrayIndex 1 add def\n",
-"LocaArray LastLocaIndex get/LastLoca exch def\n",
-"}{\n",
-"/LastLocaIndex NextLocaIndex def\n",
-"/NextLocaIndex NextLocaIndex 1 add def\n",
-"NextLocaIndex NumGlyphs gt\n",
-"{\n",
-"WorkBytes\n",
-"GlyfStringIndex GlyfArray length lt{\n",
-"GlyfArray GlyfStringIndex get length\n",
-"add string dup\n",
-"0\n",
-"WorkString 0 WorkBytes getinterval\n",
-"putinterval\n",
-"dup\n",
-"WorkBytes\n",
-"GetWorkingString\n",
-"WorkString 0 WorkBytes getinterval\n",
-"putinterval\n",
-"}{\n",
-"pop\n",
-"WorkString 0 WorkBytes getinterval\n",
-"}ifelse\n",
-"dup length string copy\n",
-"DestArray DestArrayIndex 3 -1 roll put\n",
-"exit\n",
-"}if\n",
-"}ifelse\n",
-"}loop\n",
-"DestArray\n",
-"}bind def\n",
-"/ProcessTTData\n",
-"{\n",
-".opdloadttfontdict begin\n",
-"0 1 tabarray length 1 sub{\n",
-"/ix exch def\n",
-"tabarray ix get\n",
-"12 getu32 dup maxstring le{\n",
-"dup 4 mod 0 ne{\n",
-"4 div cvi 1 add 4 mul string/newstring exch def\n",
-"/oldstring tabs ix get def\n",
-"newstring 0 oldstring putinterval\n",
-"0 1 newstring length oldstring length sub 1 sub{\n",
-"newstring exch oldstring length add 0 put\n",
-"}for\n",
-"tabs ix newstring put\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"}{\n",
-"dup 4 mod 0 ne{\n",
-"dup maxstring idiv maxstring mul sub\n",
-"4 idiv 1 add 4 mul string/newstring exch def\n",
-"tabs ix get\n",
-"dup length 1 sub dup/iy exch def get/oldstring exch def\n",
-"newstring 0 oldstring putinterval\n",
-"0 1 newstring length oldstring length sub 1 sub{\n",
-"newstring exch oldstring length add 0 put\n",
-"}for\n",
-"tabs ix get iy newstring put\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"}ifelse\n",
-"}for\n",
-"0 1 tabarray length 1 sub{\n",
-"dup tabarray exch get\n",
-"dup 12 getu32 maxstring gt{\n",
-"0 4 getinterval dup(glyf)eq{\n",
-"pop\n",
-"GetLocaType\n",
-"GetNumGlyphs\n",
-"GetSortedLoca\n",
-"dup tabs exch get\n",
-"SplitGlyf\n",
-"tabs 3 1 roll put\n",
-"}{\n",
-"(Warning, table )print print( > 64Kb\\n)print\n",
-"pop\n",
-"}ifelse\n",
-"}{\n",
-"pop\n",
-"pop\n",
-"}ifelse\n",
-"}for\n",
-"end\n",
-"}bind def\n",
-"/Makesfnts\n",
-"{\n",
-".opdloadttfontdict begin\n",
-"0\n",
-"tabs{\n",
-"dup type/stringtype eq{\n",
-"pop\n",
-"1 add\n",
-"}{\n",
-"{\n",
-"type/stringtype eq{\n",
-"1 add\n",
-"}if\n",
-"}forall\n",
-"}ifelse\n",
-"}forall\n",
-"1 add\n",
-"/TTOffset\n",
-"TableDir length\n",
-"tabarray length 16 mul add\n",
-"def\n",
-"0\n",
-"tabarray{\n",
-"exch dup 1 add\n",
-"3 1 roll\n",
-"dup\n",
-"tabs exch get\n",
-"dup type/stringtype eq{\n",
-"length\n",
-"2 index exch\n",
-"TTOffset\n",
-"dup 3 1 roll add\n",
-"/TTOffset exch def\n",
-"8 exch putu32\n",
-"exch tabarray 3 1 roll\n",
-"put\n",
-"}{\n",
-"0 exch\n",
-"{\n",
-"dup type/stringtype eq{\n",
-"length add\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"}forall\n",
-"2 index exch\n",
-"TTOffset\n",
-"dup 3 1 roll add\n",
-"/TTOffset exch def\n",
-"8 exch putu32\n",
-"exch tabarray 3 1 roll\n",
-"put\n",
-"}ifelse\n",
-"}forall\n",
-"pop\n",
-"array\n",
-"dup 0\n",
-"TableDir length\n",
-"tables length add\n",
-"string\n",
-"dup 0 TableDir putinterval\n",
-"dup 12 tables putinterval\n",
-"put\n",
-"dup\n",
-"/ix 1 def\n",
-"tabs{\n",
-"dup type/stringtype eq{\n",
-"ix exch\n",
-"put dup\n",
-"/ix ix 1 add def\n",
-"}{\n",
-"{\n",
-"dup type/stringtype eq{\n",
-"ix exch put dup\n",
-"/ix ix 1 add def\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"}forall\n",
-"}ifelse\n",
-"}forall\n",
-"pop\n",
-"end\n",
-"}bind def\n",
-"/MakeType42\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(MakeType42 beg)=\n",
-"}if\n",
-"10 dict begin\n",
-"/FontName 1 index/FontName get def\n",
-"/FontType 42 def\n",
-"/FontMatrix[1 0 0 1 0 0]def\n",
-"/FontBBox 1 index/FontBBox get def\n",
-"dup/FontResource get\n",
-"dup/Encoding known{\n",
-"//PDFReader/ObtainEncoding get exec\n",
-"/Encoding get\n",
-"}{\n",
-"pop null\n",
-"}ifelse\n",
-"/PDFEncoding exch def\n",
-"/CharStrings 2 index//PDFReader/MakeTTCharStrings get exec def\n",
-"/sfnts 2 index//MakeStreamReader exec\n",
-"ReadTTF\n",
-"ProcessTTData\n",
-"Makesfnts\n",
-"def\n",
-"/Encoding StandardEncoding def\n",
-"/PaintType 0 def\n",
-"currentdict end\n",
-"//PDFR_DEBUG{\n",
-"(MakeType42 end)=\n",
-"}if\n",
-"}bind def\n",
-"/GetInstalledFont\n",
-"{\n",
-"dup//InstalledFonts exch knownget{\n",
-"exch pop\n",
-"}{\n",
-"dup findfont dup 3 1 roll\n",
-"//InstalledFonts 3 1 roll put\n",
-"}ifelse\n",
-"}bind def\n",
-"/RemoveFontNamePrefix\n",
-"{//=string cvs true\n",
-"0 1 5{\n",
-"2 index exch get//IsUpper exec not{\n",
-"pop false exit\n",
-"}if\n",
-"}for\n",
-"{(+)search{\n",
-"pop pop\n",
-"}if\n",
-"}if\n",
-"cvn\n",
-"}bind def\n",
-"/CheckFont\n",
-"{dup/Type get/Font ne{\n",
-"mark(Resource )3 index( must have /Type/Font .)//error exec\n",
-"}if\n",
-"}bind def\n",
-"/CheckEncoding\n",
-"{dup type/nametype ne{\n",
-"dup/Type get/Encoding ne{\n",
-"mark(Resource )3 index( must have /Type/Encoding .)//error exec\n",
-"}if\n",
-"}if\n",
-"}bind def\n",
-"/ObtainEncoding\n",
-"{dup/Encoding known{\n",
-"dup dup/Encoding//CheckEncoding//ResolveD exec\n",
-"dup type dup/arraytype eq exch/packedarraytype eq or{\n",
-"pop pop\n",
-"}{\n",
-"dup type/nametype eq{\n",
-"/Encoding findresource\n",
-"}{\n",
-"dup/BaseEncoding//knownget exec not{\n",
-"/StandardEncoding\n",
-"}if\n",
-"/Encoding findresource\n",
-"exch\n",
-"/Differences//knownget exec{\n",
-"exch dup length array copy exch\n",
-"0 exch\n",
-"{\n",
-"dup type/integertype eq{\n",
-"exch pop\n",
-"}{\n",
-"3 copy put pop\n",
-"1 add\n",
-"}ifelse\n",
-"}forall\n",
-"pop\n",
-"}if\n",
-"}ifelse\n",
-"/Encoding exch put\n",
-"}ifelse\n",
-"}{\n",
-"dup/Encoding/StandardEncoding/Encoding findresource put\n",
-"}ifelse\n",
-"}bind def\n",
-"/ObtainMetrics\n",
-"{dup/Widths//knownget exec{\n",
-"1 index/Encoding get\n",
-"256 dict\n",
-"3 index/Subtype get/TrueType eq{\n",
-"1000\n",
-"}{\n",
-"1\n",
-"}ifelse\n",
-"4 index/MissingWidth//knownget exec not{\n",
-"0\n",
-"}if\n",
-"5 index/FirstChar//knownget exec not{\n",
-"0\n",
-"}if\n",
-"6 5 roll\n",
-"dup 0 exch 1 exch length 1 sub{\n",
-"2 copy get\n",
-"exch 3 index add\n",
-"7 index exch get\n",
-"dup dup null ne exch/.notdef ne and{\n",
-"6 index 3 1 roll exch\n",
-"6 index div\n",
-"3 copy pop//knownget exec{\n",
-"0 eq\n",
-"}{\n",
-"true\n",
-"}ifelse\n",
-"{put\n",
-"}{\n",
-"pop pop pop\n",
-"}ifelse\n",
-"}{\n",
-"pop pop\n",
-"}ifelse\n",
-"}for\n",
-"pop pop pop pop exch pop\n",
-"1 index exch/Metrics exch put\n",
-"}{\n",
-"dup/MissingWidth//knownget exec{\n",
-"256 dict\n",
-"2 index/Encoding get{\n",
-"dup null ne{\n",
-"3 copy 3 2 roll put\n",
-"}if\n",
-"pop\n",
-"}forall\n",
-"exch pop\n",
-"1 index exch/Metrics exch put\n",
-"}if\n",
-"}ifelse\n",
-"}bind def\n",
-"/NotDef\n",
-"{\n",
-"FontMatrix aload pop pop pop exch pop exch pop\n",
-"1 exch div exch\n",
-"1 exch div exch\n",
-"1 index 0 setcharwidth\n",
-"0 setlinewidth\n",
-"0 0 moveto\n",
-"2 copy rlineto\n",
-"1 index 0 rlineto\n",
-"neg exch neg exch rlineto\n",
-"closepath stroke\n",
-"}bind def\n",
-"/SaveResourcesToStack\n",
-"{\n",
-"[\n",
-"//PDFReader/OldResources known{\n",
-"//PDFReader/OldResources get\n",
-"}{\n",
-"null\n",
-"}ifelse\n",
-"//PDFReader/CurrentObject get/Context get/Resources get\n",
-"]\n",
-"//PDFReader/OldResources 3 -1 roll put\n",
-"}bind def\n",
-"/RestoreResourcesFromStack\n",
-"{\n",
-"//PDFReader/OldResources get dup\n",
-"0 get//PDFReader/OldResources 3 -1 roll put\n",
-"1 get//PDFReader/CurrentObject get/Context get/Resources 3 -1 roll put\n",
-"}bind def\n",
-"/BuildChar\n",
-"{//PDFR_DEBUG{\n",
-"(BuildChar )print dup//=only exec( )print\n",
-"}if\n",
-"exch begin\n",
-"Encoding exch get\n",
-"//PDFR_DEBUG{\n",
-"dup =\n",
-"}if\n",
-"dup null eq{\n",
-"pop//NotDef exec\n",
-"}\n",
-"{\n",
-"CharProcs exch//knownget exec\n",
-"{\n",
-"currentfont/Font get/Resources//knownget exec{\n",
-"exec\n",
-"SaveResourcesToStack\n",
-"//PDFReader/CurrentObject get/Context get\n",
-"/Resources 3 -1 roll put\n",
-"//RunDelayedStream exec\n",
-"RestoreResourcesFromStack\n",
-"}{\n",
-"//RunDelayedStream exec\n",
-"}ifelse\n",
-"}\n",
-"{\n",
-"//NotDef exec\n",
-"}ifelse\n",
-"}ifelse\n",
-"end\n",
-"}bind def\n",
-"/printdict\n",
-"{(<<)=\n",
-"{exch = ==}forall\n",
-"(>>)=\n",
-"}bind def\n",
-"/printfont\n",
-"{\n",
-"dup{\n",
-"exch dup =\n",
-"dup/Encoding eq{\n",
-"pop =\n",
-"}{\n",
-"dup/FontInfo eq exch/Private eq or{\n",
-"//printdict exec\n",
-"}{\n",
-"==\n",
-"}ifelse\n",
-"}ifelse\n",
-"}forall\n",
-"}bind def\n",
-"/ScaleMetrics\n",
-"{1 index{\n",
-"2 index div\n",
-"3 index\n",
-"3 1 roll put\n",
-"}forall\n",
-"pop\n",
-"}bind def\n",
-"/ResolveAndSetFontAux\n",
-"{exch dup\n",
-"//PDFReader/CurrentObject get/Context get/Resources get\n",
-"/Font//DoNothing//ResolveD exec\n",
-"exch//CheckFont//ResolveD exec\n",
-"dup/Font//knownget exec{\n",
-"exch pop exch pop\n",
-"}{\n",
-"{\n",
-"dup/Subtype get dup dup/Type1 eq exch/TrueType eq or exch/MMType1 eq or{\n",
-"exch pop\n",
-"dup/BaseFont get\n",
-"//RemoveFontNamePrefix exec\n",
-"//PDFR_DEBUG{\n",
-"(Font )print dup =\n",
-"}if\n",
-"1 index/FontDescriptor known{\n",
-"//PDFR_DEBUG{\n",
-"(Font from a font descriptor.)=\n",
-"}if\n",
-"1 index\n",
-"/FontDescriptor//DoNothing//ResolveD exec\n",
-"/Font//knownget exec{\n",
-"exch pop\n",
-"}{\n",
-"//PDFR_DEBUG{\n",
-"(Font descriptor has no Font resolved.)=\n",
-"}if\n",
-"//GetInstalledFont exec\n",
-"}ifelse\n",
-"}{\n",
-"//GetInstalledFont exec\n",
-"}ifelse\n",
-"exch\n",
-"dup/Encoding known not{\n",
-"1 index/Encoding get 1 index exch/Encoding exch put\n",
-"}if\n",
-"//ObtainEncoding exec\n",
-"//ObtainMetrics exec\n",
-"exch\n",
-"dup length dict copy\n",
-"dup 2 index/Encoding get\n",
-"/Encoding exch put\n",
-"1 index/Metrics//knownget exec{\n",
-"2 index/Subtype get/TrueType ne{\n",
-"1 index/FontMatrix get 0 get\n",
-"dup 0 eq{\n",
-"pop\n",
-"1 index/FontMatrix get 1 get\n",
-"dup 0 eq{pop 1}if\n",
-"}if\n",
-"0.001 div\n",
-"//ScaleMetrics exec\n",
-"}{\n",
-"1 index/sfnts known not{\n",
-"1 index/FontMatrix get 0 get\n",
-"dup 0 eq{\n",
-"pop\n",
-"1 index/FontMatrix get 1 get\n",
-"dup 0 eq{pop 1}if\n",
-"}if\n",
-"//ScaleMetrics exec\n",
-"}if\n",
-"}ifelse\n",
-"1 index exch/Metrics exch put\n",
-"}if\n",
-"1 index/BaseFont get\n",
-"exch\n",
-"dup/FID undef\n",
-"dup/UniqueID undef\n",
-"definefont\n",
-"dup 3 1 roll\n",
-"/Font exch put\n",
-"exit\n",
-"}if\n",
-"dup/Subtype get/Type3 eq{\n",
-"//ObtainEncoding exec\n",
-"2 copy exch/FontName exch put\n",
-"dup/CharProcs get//ResolveDict exec\n",
-"dup/FontType 3 put\n",
-"dup/BuildChar//BuildChar put\n",
-"dup dup/Font exch put\n",
-"dup 3 1 roll\n",
-"definefont\n",
-"2 copy ne{\n",
-"2 copy/Font exch put\n",
-"}if\n",
-"exch pop\n",
-"exit\n",
-"}if\n",
-"dup/Subtype get/Type0 eq{\n",
-"}if\n",
-"dup/Subtype get/CIDFontType0 eq{\n",
-"}if\n",
-"dup/Subtype get/CIDFontType2 eq{\n",
-"}if\n",
-"mark(Unknown font type )2 index/Subtype get//error exec\n",
-"}loop\n",
-"}ifelse\n",
-"exch scalefont setfont\n",
-"}bind def\n",
-"/ResolveAndSetFont\n",
-"{\n",
-"//ResolveAndSetFontAux exec\n",
-"}bind def\n",
-"/.knownget\n",
-"{2 copy known{\n",
-"get true\n",
-"}{\n",
-"pop pop false\n",
-"}ifelse\n",
-"}bind def\n",
-"/.min\n",
-"{2 copy lt{\n",
-"exch\n",
-"}if\n",
-"pop\n",
-"}bind def\n",
-"/.max\n",
-"{2 copy gt{\n",
-"exch\n",
-"}if\n",
-"pop\n",
-"}bind def\n",
-"/.dicttomark\n",
-"{>>\n",
-"}bind def\n",
-"/getu16{\n",
-"2 copy get 8 bitshift 3 1 roll 1 add get add\n",
-"}bind def\n",
-"/gets16{\n",
-"getu16 16#8000 xor 16#8000 sub\n",
-"}bind def\n",
-"/getu32{\n",
-"2 copy getu16 16 bitshift 3 1 roll 2 add getu16 add\n",
-"}bind def\n",
-"/gets32{\n",
-"2 copy gets16 16 bitshift 3 1 roll 2 add getu16 add\n",
-"}bind def\n",
-"/cmapformats mark\n",
-"0{\n",
-"6 256 getinterval{}forall 256 packedarray\n",
-"}bind\n",
-"2{\n",
-"/sHK_sz 2 def\n",
-"/sH_sz 8 def\n",
-"dup 2 getu16/cmapf2_tblen exch def\n",
-"dup 4 getu16/cmapf2_lang exch def\n",
-"dup 6 256 sHK_sz mul getinterval/sHKs exch def\n",
-"0\n",
-"0 1 255{\n",
-"sHKs exch\n",
-"2 mul getu16\n",
-"1 index\n",
-"1 index\n",
-"lt{exch}if pop\n",
-"}for\n",
-"/sH_len exch def\n",
-"dup 6 256 sHK_sz mul add\n",
-"cmapf2_tblen 1 index sub getinterval\n",
-"/sH_gIA exch def\n",
-"/cmapf2_glyph_array 65535 array def\n",
-"/.cmapf2_putGID{\n",
-"/cmapf2_ch cmapf2_ch_hi 8 bitshift cmapf2_ch_lo add def\n",
-"firstCode cmapf2_ch_lo le\n",
-"cmapf2_ch_lo firstCode entryCount add lt\n",
-"and{\n",
-"sH_offset idRangeOffset add\n",
-"cmapf2_ch_lo firstCode sub 2 mul\n",
-"add 6 add\n",
-"sH_gIA exch getu16\n",
-"dup 0 gt{\n",
-"idDelta add\n",
-"cmapf2_glyph_array exch cmapf2_ch exch put\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"}{\n",
-"}ifelse\n",
-"}def\n",
-"16#00 1 16#ff{\n",
-"/cmapf2_ch_hi exch def\n",
-"sHKs cmapf2_ch_hi sHK_sz mul getu16\n",
-"/sH_offset exch def\n",
-"sH_gIA sH_offset sH_sz getinterval\n",
-"dup 0 getu16/firstCode exch def\n",
-"dup 2 getu16/entryCount exch def\n",
-"dup 4 gets16/idDelta exch def\n",
-"dup 6 getu16/idRangeOffset exch def\n",
-"pop\n",
-"sH_offset 0 eq{\n",
-"/cmapf2_ch_lo cmapf2_ch_hi def\n",
-"/cmapf2_ch_hi 0 def\n",
-".cmapf2_putGID\n",
-"}{\n",
-"16#00 1 16#ff{\n",
-"/cmapf2_ch_lo exch def\n",
-".cmapf2_putGID\n",
-"}for\n",
-"}ifelse\n",
-"}for\n",
-"pop\n",
-"0 1 cmapf2_glyph_array length 1 sub{\n",
-"dup cmapf2_glyph_array exch get\n",
-"null eq{cmapf2_glyph_array exch 0 put}{pop}ifelse\n",
-"}for\n",
-"cmapf2_glyph_array\n",
-"}bind\n",
-"4{\n",
-"/etab exch def\n",
-"/nseg2 etab 6 getu16 def\n",
-"14/endc etab 2 index nseg2 getinterval def\n",
-"2 add\n",
-"nseg2 add/startc etab 2 index nseg2 getinterval def\n",
-"nseg2 add/iddelta etab 2 index nseg2 getinterval def\n",
-"nseg2 add/idroff etab 2 index nseg2 getinterval def\n",
-"pop\n",
-"/firstcode startc 0 getu16 16#ff00 and dup 16#f000 ne{pop 0}if def\n",
-"/lastcode firstcode def\n",
-"/striptopbyte false def\n",
-"/putglyph{\n",
-"glyphs code 3 -1 roll put/code code 1 add def\n",
-"}bind def\n",
-"/numcodes 0 def/glyphs 0 0 2 nseg2 3 sub{\n",
-"/i2 exch def\n",
-"/scode startc i2 getu16 def\n",
-"/ecode endc i2 getu16 def\n",
-"ecode lastcode gt{\n",
-"/lastcode ecode def\n",
-"}if\n",
-"}for pop\n",
-"firstcode 16#f000 ge lastcode firstcode sub 255 le and{\n",
-"lastcode 255 and\n",
-"/striptopbyte true def\n",
-"}{\n",
-"lastcode\n",
-"}ifelse\n",
-"1 add\n",
-"array def\n",
-"glyphs length 1024 ge{\n",
-".array1024z 0 1024 glyphs length 1023 sub{glyphs exch 2 index putinterval}for\n",
-"glyphs dup length 1024 sub 3 -1 roll\n",
-"putinterval\n",
-"}{\n",
-"0 1 glyphs length 1 sub{glyphs exch 0 put}for\n",
-"}ifelse\n",
-"/numcodes 0 def/code 0 def\n",
-"0 2 nseg2 3 sub{\n",
-"/i2 exch def\n",
-"/scode startc i2 getu16 def\n",
-"/ecode endc i2 getu16 def\n",
-"numcodes scode firstcode sub\n",
-"exch sub 0 .max dup/code exch code exch add def\n",
-"ecode scode sub 1 add add numcodes add/numcodes exch def\n",
-"/delta iddelta i2 gets16 def\n",
-"TTFDEBUG{\n",
-"(scode=)print scode =only\n",
-"( ecode=)print ecode =only\n",
-"( delta=)print delta =only\n",
-"( droff=)print idroff i2 getu16 =\n",
-"}if\n",
-"idroff i2 getu16 dup 0 eq{\n",
-"pop scode delta add 65535 and 1 ecode delta add 65535 and\n",
-"striptopbyte{\n",
-"/code scode 255 and def\n",
-"}{\n",
-"/code scode def\n",
-"}ifelse\n",
-"{putglyph}for\n",
-"}{\n",
-"/gloff exch 14 nseg2 3 mul add 2 add i2 add add def\n",
-"striptopbyte{\n",
-"/code scode 255 and def\n",
-"}{\n",
-"/code scode def\n",
-"}ifelse\n",
-"0 1 ecode scode sub{\n",
-"2 mul gloff add etab exch getu16\n",
-"dup 0 ne{delta add 65535 and}if putglyph\n",
-"}for\n",
-"}ifelse\n",
-"}for glyphs/glyphs null def\n",
-"}bind\n",
-"6{\n",
-"dup 6 getu16/firstcode exch def dup 8 getu16/ng exch def\n",
-"firstcode ng add array\n",
-"0 1 firstcode 1 sub{2 copy 0 put pop}for\n",
-"dup firstcode ng getinterval\n",
-"0 1 ng 1 sub{\n",
-"dup 2 mul 10 add 4 index exch getu16 3 copy put pop pop\n",
-"}for pop exch pop\n",
-"}bind\n",
-".dicttomark readonly def\n",
-"/cmaparray{\n",
-"dup 0 getu16 cmapformats exch .knownget{\n",
-"TTFDEBUG{\n",
-"(cmap: format )print 1 index 0 getu16 = flush\n",
-"}if exec\n",
-"}{\n",
-"(Can't handle format )print 0 getu16 = flush\n",
-"0 1 255{}for 256 packedarray\n",
-"}ifelse\n",
-"TTFDEBUG{\n",
-"(cmap: length=)print dup length = dup ==\n",
-"}if\n",
-"}bind def\n",
-"/postremap mark\n",
-"/Cdot/Cdotaccent\n",
-"/Edot/Edotaccent\n",
-"/Eoverdot/Edotaccent\n",
-"/Gdot/Gdotaccent\n",
-"/Ldot/Ldotaccent\n",
-"/Zdot/Zdotaccent\n",
-"/cdot/cdotaccent\n",
-"/edot/edotaccent\n",
-"/eoverdot/edotaccent\n",
-"/gdot/gdotaccent\n",
-"/ldot/ldotaccent\n",
-"/zdot/zdotaccent\n",
-".dicttomark readonly def\n",
-"/get_from_stringarray\n",
-"{1 index type/stringtype eq{\n",
-"get\n",
-"}{\n",
-"exch{\n",
-"2 copy length ge{\n",
-"length sub\n",
-"}{\n",
-"exch get exit\n",
-"}ifelse\n",
-"}forall\n",
-"}ifelse\n",
-"}bind def\n",
-"/getinterval_from_stringarray\n",
-"{\n",
-"2 index type/stringtype eq{\n",
-"getinterval\n",
-"}{\n",
-"string exch 0\n",
-"4 3 roll{\n",
-"dup length\n",
-"dup 4 index lt{\n",
-"3 index exch sub\n",
-"exch pop 3 1 roll exch pop\n",
-"}{\n",
-"dup 3 1 roll\n",
-"4 index sub\n",
-"5 index length 4 index sub\n",
-"2 copy gt{exch}if pop\n",
-"dup 3 1 roll\n",
-"5 index exch getinterval\n",
-"5 index 4 index 3 index\n",
-"getinterval\n",
-"copy pop\n",
-"exch pop add exch pop 0 exch\n",
-"dup 3 index length ge{exit}if\n",
-"}ifelse\n",
-"}forall\n",
-"pop pop\n",
-"}ifelse\n",
-"}bind def\n",
-"/string_array_size\n",
-"{dup type/stringtype eq{\n",
-"length\n",
-"}{\n",
-"0 exch{length add}forall\n",
-"}ifelse\n",
-"}bind def\n",
-"/postformats mark\n",
-"16#00010000{\n",
-"pop MacGlyphEncoding\n",
-"}\n",
-"16#00020000{\n",
-"dup dup type/arraytype eq{0 get}if length 36 lt{\n",
-"TTFDEBUG{(post format 2.0 invalid.)= flush}if\n",
-"pop[]\n",
-"}{\n",
-"/postglyphs exch def\n",
-"/post_first postglyphs dup type/arraytype eq{0 get}if def\n",
-"post_first 32 getu16/numglyphs exch def\n",
-"/glyphnames numglyphs 2 mul 34 add def\n",
-"/postpos glyphnames def\n",
-"/total_length postglyphs//string_array_size exec def\n",
-"numglyphs array 0 1 numglyphs 1 sub{\n",
-"postpos total_length ge{\n",
-"1 numglyphs 1 sub{1 index exch/.notdef put}for\n",
-"exit\n",
-"}if\n",
-"postglyphs postpos//get_from_stringarray exec\n",
-"postglyphs postpos 1 add 2 index//getinterval_from_stringarray exec cvn\n",
-"exch postpos add 1 add/postpos exch def\n",
-"2 index 3 1 roll\n",
-"put\n",
-"}for\n",
-"/postnames exch def\n",
-"numglyphs array 0 1 numglyphs 1 sub{\n",
-"dup 2 mul 34 add postglyphs exch 2//getinterval_from_stringarray exec\n",
-"dup 0 get 8 bitshift exch 1 get add dup 258 lt{\n",
-"MacGlyphEncoding exch get\n",
-"}{\n",
-"dup 32768 ge{\n",
-"pop/.notdef\n",
-"}{\n",
-"258 sub dup postnames length ge{\n",
-"TTFDEBUG{( *** warning: glyph index past end of 'post' table)= flush}if\n",
-"pop\n",
-"exit\n",
-"}if\n",
-"postnames exch get\n",
-"postremap 1 index .knownget{exch pop}if\n",
-"}ifelse\n",
-"}ifelse\n",
-"2 index 3 1 roll put\n",
-"}for\n",
-"}\n",
-"ifelse\n",
-"}bind\n",
-"16#00030000{\n",
-"pop[]\n",
-"}bind\n",
-".dicttomark readonly def\n",
-"/first_post_string\n",
-"{\n",
-"post dup type/arraytype eq{0 get}if\n",
-"}bind def\n",
-"/.getpost{\n",
-"/glyphencoding post null eq{\n",
-"TTFDEBUG{(post missing)= flush}if[]\n",
-"}{\n",
-"postformats first_post_string 0 getu32 .knownget{\n",
-"TTFDEBUG{\n",
-"(post: format )print\n",
-"first_post_string\n",
-"dup 0 getu16 =only(,)print 2 getu16 = flush\n",
-"}if\n",
-"post exch exec\n",
-"}{\n",
-"TTFDEBUG{(post: unknown format )print post 0 getu32 = flush}if[]\n",
-"}ifelse\n",
-"}ifelse def\n",
-"}bind def\n",
-"/TTParser<<\n",
-"/Pos 0\n",
-"/post null\n",
-">>def\n",
-"/readu8\n",
-"{read not{\n",
-"mark(Insufficient data in the stream.)//error exec\n",
-"}if\n",
-"}bind def\n",
-"/readu16\n",
-"{dup//readu8 exec 8 bitshift exch//readu8 exec or\n",
-"}bind def\n",
-"/reads16\n",
-"{//readu16 exec 16#8000 xor 16#8000 sub\n",
-"}bind def\n",
-"/readu32\n",
-"{dup//readu16 exec 16 bitshift exch//readu16 exec or\n",
-"}bind def\n",
-"/reads32\n",
-"{dup//reads16 exec 16 bitshift exch//readu16 exec or\n",
-"}bind def\n",
-"/SkipToPosition\n",
-"{dup//TTParser/Pos get\n",
-"exch//TTParser exch/Pos exch put\n",
-"sub\n",
-"//PDFR_DEBUG{\n",
-"(Skipping )print dup//=only exec( bytes.)=\n",
-"}if\n",
-"dup 0 eq{\n",
-"pop pop\n",
-"}{\n",
-"dup 3 1 roll\n",
-"()/SubFileDecode filter\n",
-"exch\n",
-"{1 index//BlockBuffer readstring pop length\n",
-"dup 0 eq{pop exch pop exit}if\n",
-"sub\n",
-"}loop\n",
-"0 ne{\n",
-"mark(Insufficient data in the stream for SkipToPosition.)//error exec\n",
-"}if\n",
-"}ifelse\n",
-"}bind def\n",
-"/TagBuffer 4 string def\n",
-"/ParseTTTableDirectory\n",
-"{//PDFR_DEBUG{\n",
-"(ParseTTTableDirectory beg)=\n",
-"}if\n",
-"15 dict begin\n",
-"dup//readu32 exec 16#00010000 ne{\n",
-"mark(Unknown True Type version.)//error exec\n",
-"}if\n",
-"dup//readu16 exec/NumTables exch def\n",
-"dup//readu16 exec/SearchRange exch def\n",
-"dup//readu16 exec/EntrySelector exch def\n",
-"dup//readu16 exec/RangeShift exch def\n",
-"//PDFR_DEBUG{\n",
-"(NumTables = )print NumTables =\n",
-"}if\n",
-"NumTables{\n",
-"dup//TagBuffer readstring not{\n",
-"mark(Could not read TT tag.)//error exec\n",
-"}if\n",
-"cvn\n",
-"[2 index//readu32 exec pop\n",
-"2 index//readu32 exec\n",
-"3 index//readu32 exec\n",
-"]\n",
-"//PDFR_DEBUG{\n",
-"2 copy exch//=only exec( )print ==\n",
-"}if\n",
-"def\n",
-"}repeat\n",
-"pop\n",
-"//TTParser/Pos 12 NumTables 16 mul add put\n",
-"currentdict end\n",
-"//PDFR_DEBUG{\n",
-"(ParseTTTableDirectory end)=\n",
-"}if\n",
-"}bind def\n",
-"/ParseTTcmap\n",
-"{//PDFR_DEBUG{\n",
-"(ParseTTcmap beg)=\n",
-"}if\n",
-"/cmap get aload pop\n",
-"3 1 roll\n",
-"7 dict begin\n",
-"//PDFR_DEBUG{\n",
-"(Current position = )print//TTParser/Pos get =\n",
-"(cmap position = )print dup =\n",
-"}if\n",
-"1 index exch//SkipToPosition exec\n",
-"//TTParser/Pos get/TablePos exch def\n",
-"dup//readu16 exec pop\n",
-"dup//readu16 exec/NumEncodings exch def\n",
-"//PDFR_DEBUG{\n",
-"(NumEncodings = )print NumEncodings =\n",
-"}if\n",
-"null\n",
-"NumEncodings{\n",
-"1 index//readu32 exec\n",
-"2 index//readu32 exec\n",
-"3 array dup 3 2 roll 0 exch put\n",
-"2 index null ne{\n",
-"dup 0 get 3 index 0 get sub\n",
-"3 index exch 1 exch put\n",
-"}if\n",
-"dup 4 3 roll pop 3 1 roll\n",
-"def\n",
-"}repeat\n",
-"dup 0 get\n",
-"4 3 roll exch sub\n",
-"1 exch put\n",
-"//PDFR_DEBUG{\n",
-"currentdict{\n",
-"exch dup type/integertype eq{\n",
-"//PrintHex exec( )print ==\n",
-"}{\n",
-"pop pop\n",
-"}ifelse\n",
-"}forall\n",
-"}if\n",
-"4 NumEncodings 8 mul add/HeaderLength exch def\n",
-"//TTParser/Pos//TTParser/Pos get HeaderLength add put\n",
-"0\n",
-"NumEncodings{\n",
-"16#7FFFFFF null\n",
-"currentdict{\n",
-"1 index type/integertype eq{\n",
-"exch pop dup 0 get\n",
-"dup 5 index gt{\n",
-"dup 4 index lt{\n",
-"4 1 roll\n",
-"exch pop exch pop\n",
-"}{\n",
-"pop pop\n",
-"}ifelse\n",
-"}{\n",
-"pop pop\n",
-"}ifelse\n",
-"}{\n",
-"pop pop\n",
-"}ifelse\n",
-"}forall\n",
-"//PDFR_DEBUG{\n",
-"(Obtaining subtable for )print dup ==\n",
-"}if\n",
-"3 2 roll pop\n",
-"3 copy pop\n",
-"TablePos add//SkipToPosition exec\n",
-"3 copy exch pop 1 get\n",
-"//TTParser/Pos//TTParser/Pos get 3 index add put\n",
-"string\n",
-"readstring not{\n",
-"mark(Can't read a cmap subtable.)//error exec\n",
-"}if\n",
-"2 exch put\n",
-"}repeat\n",
-"pop pop\n",
-"currentdict end\n",
-"//PDFR_DEBUG{\n",
-"(ParseTTcmap end)=\n",
-"}if\n",
-"}bind def\n",
-"/GetTTEncoding\n",
-"{//PDFR_DEBUG{\n",
-"(GetTTEncoding beg)=\n",
-"}if\n",
-"get\n",
-"exch pop\n",
-"2 get\n",
-"10 dict begin\n",
-"/TTFDEBUG//PDFR_DEBUG def\n",
-"//cmaparray exec\n",
-"end\n",
-"//PDFR_DEBUG{\n",
-"(GetTTEncoding end)=\n",
-"dup ==\n",
-"}if\n",
-"}bind def\n",
-"/InverseEncoding\n",
-"{\n",
-"256 dict begin\n",
-"dup length 1 sub -1 0{\n",
-"2 copy get\n",
-"exch\n",
-"1 index currentdict exch//knownget exec{\n",
-"dup type/arraytype eq{\n",
-"aload length 1 add array astore\n",
-"}{\n",
-"2 array astore\n",
-"}ifelse\n",
-"}if\n",
-"def\n",
-"}for\n",
-"pop\n",
-"currentdict end\n",
-"}bind def\n",
-"/GetMacRomanEncodingInverse\n",
-"{//PDFReader/MacRomanEncodingInverse get\n",
-"dup null eq{\n",
-"pop\n",
-"MacRomanEncoding//InverseEncoding exec\n",
-"dup//PDFReader exch/MacRomanEncodingInverse exch put\n",
-"}if\n",
-"}bind def\n",
-"/PutCharStringSingle\n",
-"{\n",
-"dup 3 index length lt{\n",
-"2 index exch get\n",
-"dup 0 ne{\n",
-"def\n",
-"}{\n",
-"pop pop\n",
-"}ifelse\n",
-"}{\n",
-"pop pop\n",
-"}ifelse\n",
-"}bind def\n",
-"/PutCharString\n",
-"{1 index type/nametype ne{\n",
-"mark(Bad charstring name)//error exec\n",
-"}if\n",
-"dup type/arraytype eq{\n",
-"{\n",
-"3 copy//PutCharStringSingle exec\n",
-"pop pop\n",
-"}forall\n",
-"pop\n",
-"}{\n",
-"//PutCharStringSingle exec\n",
-"}ifelse\n",
-"}bind def\n",
-"/ComposeCharStrings\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(ComposeCharStrings beg)=\n",
-"}if\n",
-"1 index length 1 add dict begin\n",
-"/.notdef 0 def\n",
-"exch\n",
-"//TTParser/post get\n",
-"dup null ne{\n",
-"exch\n",
-"1 index length 1 sub -1 0{\n",
-"dup 3 index exch get exch\n",
-"dup 0 eq 2 index/.notdef eq or{\n",
-"pop pop\n",
-"}{\n",
-"def\n",
-"}ifelse\n",
-"}for\n",
-"}if\n",
-"exch pop exch\n",
-"{\n",
-"//PutCharString exec\n",
-"}forall\n",
-"pop\n",
-"currentdict end\n",
-"//PDFR_DEBUG{\n",
-"(ComposeCharStrings end)=\n",
-"}if\n",
-"}bind def\n",
-"/ParseTTpost\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(ParseTTpost beg)=\n",
-"}if\n",
-"/post get aload pop\n",
-"3 1 roll\n",
-"//PDFR_DEBUG{\n",
-"(Current position = )print//TTParser/Pos get =\n",
-"(post position = )print dup =\n",
-"}if\n",
-"1 index exch//SkipToPosition exec\n",
-"//TTParser/Pos//TTParser/Pos get 4 index add put\n",
-"exch dup 65535 le{\n",
-"string\n",
-"readstring not{\n",
-"mark(Insufficient data in the stream for ParseTTpost.)//error exec\n",
-"}if\n",
-"}{\n",
-"[3 1 roll\n",
-"dup 16384 div floor cvi\n",
-"exch 1 index 16384 mul\n",
-"sub exch\n",
-"1 sub 0 1 3 -1 roll\n",
-"{\n",
-"1 add index\n",
-"16384 string readstring not{\n",
-"mark(Insufficient data in the stream for ParseTTpost.)//error exec\n",
-"}if\n",
-"}for\n",
-"counttomark -2 roll\n",
-"string readstring not{\n",
-"mark(Insufficient data in the stream for ParseTTpost.)//error exec\n",
-"}if\n",
-"]\n",
-"}ifelse\n",
-"1 dict begin\n",
-"/post exch def\n",
-"//.getpost exec\n",
-"//TTParser/post glyphencoding put\n",
-"//PDFR_DEBUG{\n",
-"(ParseTTpost end)=\n",
-"glyphencoding ==\n",
-"}if\n",
-"end\n",
-"}bind def\n",
-"/MakeTTCharStrings\n",
-"{//MakeStreamReader exec\n",
-"dup dup//ParseTTTableDirectory exec\n",
-"//TTParser/post null put\n",
-"dup/post//knownget exec{\n",
-"0 get\n",
-"1 index/cmap get 0 get\n",
-"lt{\n",
-"2 copy//ParseTTpost exec\n",
-"//ParseTTcmap exec\n",
-"}{\n",
-"2 copy//ParseTTcmap exec\n",
-"3 1 roll\n",
-"//ParseTTpost exec\n",
-"}ifelse\n",
-"}{\n",
-"//ParseTTcmap exec\n",
-"}ifelse\n",
-"{\n",
-"dup 16#00030001 known{\n",
-"//PDFR_DEBUG{\n",
-"(Using the TT cmap encoding for Windows Unicode.)=\n",
-"}if\n",
-"16#00030001//GetTTEncoding exec\n",
-"AdobeGlyphList//ComposeCharStrings exec\n",
-"exit\n",
-"}if\n",
-"dup 16#00010000 known{\n",
-"//PDFR_DEBUG{\n",
-"(Using the TT cmap encoding for Macintosh Roman.)=\n",
-"}if\n",
-"16#00010000//GetTTEncoding exec\n",
-"PDFEncoding dup null eq{\n",
-"pop//GetMacRomanEncodingInverse exec\n",
-"}{\n",
-"//InverseEncoding exec\n",
-"}ifelse\n",
-"//ComposeCharStrings exec\n",
-"exit\n",
-"}if\n",
-"dup 16#00030000 known{\n",
-"//PDFR_DEBUG{\n",
-"(Using the TT cmap encoding 3.0 - not sure why Ghostscript writes it since old versions.)=\n",
-"}if\n",
-"16#00030000//GetTTEncoding exec\n",
-"PDFEncoding dup null eq{\n",
-"pop//GetMacRomanEncodingInverse exec\n",
-"}{\n",
-"//InverseEncoding exec\n",
-"}ifelse\n",
-"//ComposeCharStrings exec\n",
-"exit\n",
-"}if\n",
-"mark(True Type cmap has no useful encodings.)//error exec\n",
-"}loop\n",
-"//PDFR_DEBUG{\n",
-"(CharStrings <<)=\n",
-"dup{\n",
-"exch\n",
-"dup type/nametype eq{\n",
-"//=only exec\n",
-"}{\n",
-"==\n",
-"}ifelse\n",
-"( )print ==\n",
-"}forall\n",
-"(>>)=\n",
-"}if\n",
-"}bind def\n",
-"/ScaleVal\n",
-"{\n",
-"aload pop\n",
-"1 index sub\n",
-"3 2 roll mul add\n",
-"}bind def\n",
-"/ScaleArg\n",
-"{\n",
-"aload pop\n",
-"1 index sub\n",
-"3 1 roll\n",
-"sub exch div\n",
-"}bind def\n",
-"/ScaleArgN\n",
-"{\n",
-"dup length 2 sub -2 0{\n",
-"2\n",
-"2 index 3 1 roll getinterval\n",
-"3 2 roll\n",
-"exch//ScaleArg exec\n",
-"1 index length 2 idiv 1 add 1 roll\n",
-"}for\n",
-"pop\n",
-"}bind def\n",
-"/ComputeFunction_10\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(ComputeFunction_10 beg )print 1 index//=only exec( stack=)print count =\n",
-"}if\n",
-"exch\n",
-"dup 1 eq{\n",
-"pop dup length 1 sub get\n",
-"}{\n",
-"1 index length 1 sub mul\n",
-"dup dup floor sub\n",
-"dup 0 eq{\n",
-"pop cvi get\n",
-"}{\n",
-"3 1 roll floor cvi\n",
-"2 getinterval\n",
-"aload pop\n",
-"2 index mul 3 2 roll 1 exch sub 3 2 roll mul add\n",
-"}ifelse\n",
-"}ifelse\n",
-"//PDFR_DEBUG{\n",
-"(ComputeFunction_10 end )print dup//=only exec( stack=)print count =\n",
-"}if\n",
-"}bind def\n",
-"/ComputeFunction_n0\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(ComputeFunction_n0 beg N=)print dup//=only exec( stack=)print count =\n",
-"}if\n",
-"dup 0 eq{\n",
-"pop\n",
-"}{\n",
-"dup 2 add -1 roll\n",
-"dup 3 index length 1 sub ge{\n",
-"pop 1 sub\n",
-"exch dup length 1 sub get exch\n",
-"//PDFReader/ComputeFunction_n0 get exec\n",
-"}{\n",
-"dup floor cvi dup\n",
-"4 index exch get\n",
-"3 index dup\n",
-"5 add copy\n",
-"6 2 roll\n",
-"pop pop pop pop\n",
-"1 sub\n",
-"//PDFReader/ComputeFunction_n0 get exec\n",
-"3 2 roll pop\n",
-"exch\n",
-"4 3 roll exch\n",
-"4 add 2 roll 1 add\n",
-"3 2 roll exch get\n",
-"exch 1 sub\n",
-"//PDFReader/ComputeFunction_n0 get exec\n",
-"1 index mul\n",
-"3 1 roll\n",
-"1 exch sub mul add\n",
-"}ifelse\n",
-"}ifelse\n",
-"//PDFR_DEBUG{\n",
-"(ComputeFunction_n0 end )print dup//=only exec( stack=)print count =\n",
-"}if\n",
-"}bind def\n",
-"/FunctionToProc_x01\n",
-"{\n",
-"dup/Domain get exch\n",
-"dup/Data get 0 get exch\n",
-"/Size get length\n",
-"[4 1 roll\n",
-"//PDFR_DEBUG{\n",
-"{(function beg, stack =)print count//=only exec(\\n)print}/exec load\n",
-"5 2 roll\n",
-"}if\n",
-"dup 1 gt{\n",
-"{mark exch\n",
-"3 add 2 roll\n",
-"//ScaleArgN exec\n",
-"counttomark dup\n",
-"3 add -2 roll\n",
-"pop exch\n",
-"//ComputeFunction_n0 exec\n",
-"}/exec load\n",
-"}{\n",
-"pop\n",
-"3 1/roll load//ScaleArg/exec load\n",
-"/exch load\n",
-"//ComputeFunction_10/exec load\n",
-"}ifelse\n",
-"//PDFR_DEBUG{\n",
-"(function end, stack =)/print load/count load//=only/exec load(\\n)/print load\n",
-"}if\n",
-"]cvx\n",
-"//PDFR_DEBUG{\n",
-"(Made a procedure for the 1-result function :)=\n",
-"dup ==\n",
-"}if\n",
-"}bind def\n",
-"/FunctionProcDebugBeg\n",
-"{(FunctionProcDebugBeg )print count =\n",
-"}bind def\n",
-"/FunctionProcDebugEnd\n",
-"{(FunctionProcDebugEnd )print count =\n",
-"}bind def\n",
-"/FunctionToProc_x0n\n",
-"{\n",
-"PDFR_DEBUG{\n",
-"(FunctionToProc_x0n beg m=)print dup =\n",
-"}if\n",
-"1 index/Size get length exch\n",
-"dup 7 mul 2 add array\n",
-"PDFR_DEBUG{\n",
-"dup 0//FunctionProcDebugBeg put\n",
-"}{\n",
-"dup 0//DoNothing put\n",
-"}ifelse\n",
-"dup 1/exec load put\n",
-"dup 2 5 index/Domain get put\n",
-"2 index 1 eq{\n",
-"dup 3//ScaleArg put\n",
-"}{\n",
-"dup 3//ScaleArgN put\n",
-"}ifelse\n",
-"dup 4/exec load put\n",
-"1 index 1 sub 0 exch 1 exch{\n",
-"dup 7 mul 5 add\n",
-"1 index 4 index 1 sub ne{\n",
-"dup 3 index exch 6 index put 1 add\n",
-"dup 3 index exch/copy load put 1 add\n",
-"}if\n",
-"[\n",
-"6 index/Data get 3 index get\n",
-"6 index 1 eq{\n",
-"//ComputeFunction_10/exec load\n",
-"}{\n",
-"6 index\n",
-"//ComputeFunction_n0/exec load\n",
-"}ifelse\n",
-"]cvx\n",
-"3 index exch 2 index exch put 1 add\n",
-"2 index 1 index/exec load put 1 add\n",
-"1 index 4 index 1 sub ne{\n",
-"2 index 1 index 6 index 1 add put 1 add\n",
-"2 index 1 index 1 put 1 add\n",
-"2 index 1 index/roll load put\n",
-"}if\n",
-"pop pop\n",
-"}for\n",
-"PDFR_DEBUG{\n",
-"dup dup length 2 sub//FunctionProcDebugEnd put\n",
-"}{\n",
-"dup dup length 2 sub//DoNothing put\n",
-"}ifelse\n",
-"dup dup length 1 sub/exec load put\n",
-"cvx exch pop exch pop exch pop\n",
-"//PDFR_DEBUG{\n",
-"(Made a procedure for the n-argument function :)=\n",
-"dup ==\n",
-"}if\n",
-"PDFR_DEBUG{\n",
-"(FunctionToProc_x0n end)=\n",
-"}if\n",
-"}bind def\n",
-"/MakeTableRec\n",
-"{\n",
-"0\n",
-"exec\n",
-"}bind def\n",
-"/MakeTable\n",
-"{//PDFR_DEBUG{\n",
-"(MakeTable beg )print count =\n",
-"}if\n",
-"1 index/Size get exch\n",
-"1 sub dup\n",
-"3 1 roll\n",
-"get\n",
-"array\n",
-"1 index 0 eq{\n",
-"exch pop exch pop\n",
-"}{\n",
-"dup length 1 sub -1 0{\n",
-"3 index 3 index//MakeTableRec exec\n",
-"2 index 3 1 roll put\n",
-"}for\n",
-"exch pop exch pop\n",
-"}ifelse\n",
-"//PDFR_DEBUG{\n",
-"(MakeTable end )print count =\n",
-"}if\n",
-"}bind def\n",
-"//MakeTableRec 0//MakeTable put\n",
-"/StoreSample\n",
-"{\n",
-"1 sub\n",
-"dup 0 eq{\n",
-"pop\n",
-"}{\n",
-"-1 1{\n",
-"I exch get get\n",
-"}for\n",
-"}ifelse\n",
-"I 0 get 3 2 roll put\n",
-"}bind def\n",
-"/ReadSample32\n",
-"{\n",
-"4{\n",
-"File read not{\n",
-"mark(Insufficient data for function.)//error exec\n",
-"}if\n",
-"}repeat\n",
-"pop\n",
-"3 1 roll exch\n",
-"256 mul add 256 mul add\n",
-"//1_24_bitshift_1_sub div\n",
-"}bind def\n",
-"/ReadSample\n",
-"{\n",
-"Buffer BitsLeft BitsPerSample\n",
-"{2 copy ge{\n",
-"exit\n",
-"}if\n",
-"3 1 roll\n",
-"8 add 3 1 roll\n",
-"256 mul File read not{\n",
-"mark(Insufficient data for function.)//error exec\n",
-"}if\n",
-"add\n",
-"3 1 roll\n",
-"}loop\n",
-"sub dup\n",
-"2 index exch\n",
-"neg bitshift\n",
-"2 copy exch bitshift\n",
-"4 3 roll exch sub\n",
-"/Buffer exch def\n",
-"exch/BitsLeft exch def\n",
-"Div div\n",
-"}bind def\n",
-"/ReadSamplesRec\n",
-"{0\n",
-"exec\n",
-"}bind def\n",
-"/ReadSamples\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(ReadSamples beg )print count =\n",
-"}if\n",
-"dup 1 eq{\n",
-"pop\n",
-"0 1 Size 0 get 1 sub{\n",
-"I exch 0 exch put\n",
-"0 1 M 1 sub{\n",
-"dup Range exch 2 mul 2 getinterval\n",
-"//PDFR_DEBUG{\n",
-"(Will read a sample ... )print\n",
-"}if\n",
-"BitsPerSample 32 eq{//ReadSample32}{//ReadSample}ifelse\n",
-"exec exch//ScaleVal exec\n",
-"//PDFR_DEBUG{\n",
-"(value=)print dup =\n",
-"}if\n",
-"exch Table exch get\n",
-"Size length//StoreSample exec\n",
-"}for\n",
-"}for\n",
-"}{\n",
-"1 sub\n",
-"dup Size exch get 0 exch 1 exch 1 sub{\n",
-"I exch 2 index exch put\n",
-"dup//ReadSamplesRec exec\n",
-"}for\n",
-"pop\n",
-"}ifelse\n",
-"//PDFR_DEBUG{\n",
-"(ReadSamples end )print count =\n",
-"}if\n",
-"}bind def\n",
-"//ReadSamplesRec 0//ReadSamples put\n",
-"/StreamToArray\n",
-"{//PDFR_DEBUG{\n",
-"(StreamToArray beg )print count =\n",
-"}if\n",
-"userdict/FuncDataReader get begin\n",
-"dup/BitsPerSample get/BitsPerSample exch def\n",
-"dup/Size get length/N exch def\n",
-"dup/Range get length 2 idiv/M exch def\n",
-"1 BitsPerSample bitshift 1 sub/Div exch def\n",
-"/BitsLeft 0 def\n",
-"/Buffer 0 def\n",
-"dup/Size get/Size exch def\n",
-"dup/Range get/Range exch def\n",
-"/File 1 index//MakeStreamReader exec def\n",
-"/I[N{0}repeat]def\n",
-"M array\n",
-"dup length 1 sub -1 0{\n",
-"2 index N//MakeTable exec\n",
-"2 index 3 1 roll put\n",
-"}for\n",
-"/Table exch def\n",
-"N//ReadSamples exec\n",
-"PDFR_DEBUG{\n",
-"(Table = )print Table ==\n",
-"}if\n",
-"/Data Table put\n",
-"end\n",
-"//PDFR_DEBUG{\n",
-"(StreamToArray end )print count =\n",
-"}if\n",
-"}bind def\n",
-"/FunctionToProc10\n",
-"{\n",
-"PDFR_DEBUG{\n",
-"(FunctionToProc10 beg, Range = )print dup/Range get ==\n",
-"}if\n",
-"dup/Order//knownget exec{\n",
-"1 ne{\n",
-"(Underimplemented function Type 0 Order 3.)=\n",
-"}if\n",
-"}if\n",
-"dup//StreamToArray exec\n",
-"dup/Range get length dup 2 eq{\n",
-"pop//FunctionToProc_x01 exec\n",
-"}{\n",
-"2 idiv//FunctionToProc_x0n exec\n",
-"}ifelse\n",
-"PDFR_DEBUG{\n",
-"(FunctionToProc10 end)=\n",
-"}if\n",
-"}bind def\n",
-"/FunctionToProc12\n",
-"{begin\n",
-"currentdict/C0//knownget exec{length 1 eq}{true}ifelse{\n",
-"N\n",
-"currentdict/C0//knownget exec{\n",
-"0 get\n",
-"}{\n",
-"0\n",
-"}ifelse\n",
-"currentdict/C1//knownget exec{\n",
-"0 get\n",
-"}{\n",
-"1\n",
-"}ifelse\n",
-"1 index sub\n",
-"[4 1 roll\n",
-"{\n",
-"4 2 roll\n",
-"exp mul add\n",
-"}aload pop\n",
-"]cvx\n",
-"}{\n",
-"[\n",
-"0 1 C0 length 1 sub{\n",
-"N\n",
-"C0 2 index get\n",
-"C1 3 index get\n",
-"4 3 roll pop\n",
-"1 index sub\n",
-"[/dup load\n",
-"5 2 roll\n",
-"{\n",
-"4 2 roll\n",
-"exp mul add\n",
-"exch\n",
-"}aload pop\n",
-"]cvx\n",
-"/exec load\n",
-"}for\n",
-"/pop load\n",
-"]cvx\n",
-"}ifelse\n",
-"end\n",
-"//PDFR_DEBUG{\n",
-"(FunctionType2Proc : )print dup ==\n",
-"}if\n",
-"}bind def\n",
-"/FunctionToProc14\n",
-"{//MakeStreamReader exec cvx exec\n",
-"//PDFR_DEBUG{\n",
-"(FunctionType4Proc : )print dup ==\n",
-"}if\n",
-"}bind def\n",
-"/FunctionToProc1\n",
-"{\n",
-"dup/FunctionType get\n",
-"{dup 0 eq{\n",
-"pop//FunctionToProc10 exec exit\n",
-"}if\n",
-"dup 2 eq{\n",
-"pop//FunctionToProc12 exec exit\n",
-"}if\n",
-"dup 4 eq{\n",
-"pop//FunctionToProc14 exec exit\n",
-"}if\n",
-"mark exch(Function type )exch( isn't implemented yet.)//error exec\n",
-"}loop\n",
-"}bind def\n",
-"/FunctionToProc20\n",
-"{\n",
-"PDFR_DEBUG{\n",
-"(FunctionToProc20, Range = )print dup/Range get ==\n",
-"}if\n",
-"dup/Order//knownget exec{\n",
-"1 ne{\n",
-"(Underimplemented function Type 0 Order 3.)=\n",
-"}if\n",
-"}if\n",
-"dup//StreamToArray exec\n",
-"dup/Range get length dup 2 eq{\n",
-"pop//FunctionToProc_x01 exec\n",
-"}{\n",
-"2 idiv//FunctionToProc_x0n exec\n",
-"}ifelse\n",
-"}bind def\n",
-"/FunctionToProc\n",
-"{//PDFR_DEBUG{\n",
-"(FunctionToProc beg )print count =\n",
-"}if\n",
-"dup type/dicttype eq{\n",
-"dup/Domain get length 2 idiv\n",
-"{\n",
-"dup 1 eq{\n",
-"pop//FunctionToProc1 exec exit\n",
-"}if\n",
-"dup 2 eq{\n",
-"pop//FunctionToProc20 exec exit\n",
-"}if\n",
-"mark(Functions with many arguments aren't implemented yet.)//error exec\n",
-"}loop\n",
-"}{\n",
-"//PDFR_DEBUG{(Not a function dict, assume already a procedure.)print}if\n",
-"}ifelse\n",
-"//PDFR_DEBUG{\n",
-"(FunctionToProc end )print count =\n",
-"}if\n",
-"}bind def\n",
-"/spotfunctions mark\n",
-"/Round{\n",
-"abs exch abs 2 copy add 1 le{\n",
-"dup mul exch dup mul add 1 exch sub\n",
-"}{\n",
-"1 sub dup mul exch 1 sub dup mul add 1 sub\n",
-"}ifelse\n",
-"}\n",
-"/Diamond{\n",
-"abs exch abs 2 copy add .75 le{\n",
-"dup mul exch dup mul add 1 exch sub\n",
-"}{\n",
-"2 copy add 1.23 le{\n",
-".85 mul add 1 exch sub\n",
-"}{\n",
-"1 sub dup mul exch 1 sub dup mul add 1 sub\n",
-"}ifelse\n",
-"}ifelse\n",
-"}\n",
-"/Ellipse{\n",
-"abs exch abs 2 copy 3 mul exch 4 mul add 3 sub dup 0 lt{\n",
-"pop dup mul exch .75 div dup mul add 4 div 1 exch sub\n",
-"}{\n",
-"dup 1 gt{\n",
-"pop 1 exch sub dup mul exch 1 exch sub\n",
-".75 div dup mul add 4 div 1 sub\n",
-"}{\n",
-".5 exch sub exch pop exch pop\n",
-"}ifelse\n",
-"}ifelse\n",
-"}\n",
-"/EllipseA{dup mul .9 mul exch dup mul add 1 exch sub}\n",
-"/InvertedEllipseA{dup mul .9 mul exch dup mul add 1 sub}\n",
-"/EllipseB{dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub}\n",
-"/EllipseC{dup mul .9 mul exch dup mul add 1 exch sub}\n",
-"/InvertedEllipseC{dup mul .9 mul exch dup mul add 1 sub}\n",
-"/Line{exch pop abs neg}\n",
-"/LineX{pop}\n",
-"/LineY{exch pop}\n",
-"/Square{abs exch abs 2 copy lt{exch}if pop neg}\n",
-"/Cross{abs exch abs 2 copy gt{exch}if pop neg}\n",
-"/Rhomboid{abs exch abs 0.9 mul add 2 div}\n",
-"/DoubleDot{2{360 mul sin 2 div exch}repeat add}\n",
-"/InvertedDoubleDot{2{360 mul sin 2 div exch}repeat add neg}\n",
-"/SimpleDot{dup mul exch dup mul add 1 exch sub}\n",
-"/InvertedSimpleDot{dup mul exch dup mul add 1 sub}\n",
-"/CosineDot{180 mul cos exch 180 mul cos add 2 div}\n",
-"/Double{exch 2 div exch 2{360 mul sin 2 div exch}repeat add}\n",
-"/InvertedDouble{\n",
-"exch 2 div exch 2{360 mul sin 2 div exch}repeat add neg\n",
-"}\n",
-".dicttomark readonly def\n",
-"/CheckColorSpace\n",
-"{\n",
-"dup type/arraytype ne{\n",
-"mark(Resource )3 index( must be an array.)//error exec\n",
-"}if\n",
-"}bind def\n",
-"/SubstitutePDFColorSpaceRec\n",
-"{0\n",
-"exec\n",
-"}bind def\n",
-"/SubstitutePDFColorSpace\n",
-"{\n",
-"{\n",
-"dup 0 get/Pattern eq{\n",
-"dup length 1 gt{\n",
-"dup dup 1//CheckColorSpace//ResolveA exec\n",
-"dup type/nametype ne{\n",
-"//SubstitutePDFColorSpaceRec exec\n",
-"}if\n",
-"1 exch put\n",
-"}if\n",
-"exit\n",
-"}if\n",
-"dup 0 get/Indexed eq{\n",
-"exit\n",
-"}if\n",
-"dup 0 get/Separation eq{\n",
-"dup dup 2//CheckColorSpace//ResolveA exec\n",
-"dup type/nametype ne{\n",
-"//SubstitutePDFColorSpaceRec exec\n",
-"}if\n",
-"2 exch put\n",
-"exit\n",
-"}if\n",
-"dup 0 get/CalGray eq{\n",
-"1 get\n",
-"dup/Gamma//knownget exec{\n",
-"[exch[exch/exp load]cvx dup dup]\n",
-"1 index exch/DecodeLMN exch put\n",
-"}if\n",
-"[exch/CIEBasedA exch]\n",
-"exit\n",
-"}if\n",
-"dup 0 get/CalRGB eq{\n",
-"1 get\n",
-"dup/Matrix//knownget exec{\n",
-"1 index exch/MatrixLMN exch put\n",
-"}if\n",
-"dup/Gamma//knownget exec{\n",
-"aload pop\n",
-"[exch/exp load]cvx\n",
-"3 1 roll\n",
-"[exch/exp load]cvx\n",
-"3 1 roll\n",
-"[exch/exp load]cvx\n",
-"3 1 roll\n",
-"3 array astore\n",
-"1 index exch/DecodeLMN exch put\n",
-"}if\n",
-"[exch/CIEBasedABC exch]\n",
-"exit\n",
-"}if\n",
-"dup 0 get/Lab eq{\n",
-"1 get\n",
-"begin\n",
-"currentdict/Range//knownget exec{aload pop}{-100 100 -100 100}ifelse\n",
-"0 100 6 2 roll 6 array astore\n",
-"/RangeABC exch def\n",
-"/DecodeABC[{16 add 116 div}bind{500 div}bind{200 div}bind]def\n",
-"/MatrixABC[1 1 1 1 0 0 0 0 -1]def\n",
-"{dup 6 29 div ge{dup dup mul mul}{4 29 div sub 108 841 div mul}ifelse}\n",
-"/DecodeLMN[\n",
-"[3 index aload pop WhitePoint 0 get/mul load]cvx\n",
-"[4 index aload pop WhitePoint 1 get/mul load]cvx\n",
-"[5 index aload pop WhitePoint 2 get/mul load]cvx\n",
-"]def pop\n",
-"//PDFR_DEBUG{\n",
-"(Constructed from Lab <<)=\n",
-"currentdict{exch = ==}forall\n",
-"(>>)=\n",
-"}if\n",
-"[/CIEBasedABC currentdict]\n",
-"end\n",
-"exit\n",
-"pop\n",
-"}if\n",
-"dup 0 get/CIEBasedA eq{exit}if\n",
-"dup 0 get/CIEBasedABC eq{exit}if\n",
-"mark exch(Unimplemented color space )exch//error exec\n",
-"}loop\n",
-"}bind def\n",
-"//SubstitutePDFColorSpaceRec 0//SubstitutePDFColorSpace put\n",
-"/ResolveArrayElement\n",
-"{2 copy get\n",
-"dup type dup/arraytype eq exch\n",
-"/packedarraytype eq or{\n",
-"dup length 1 ge exch xcheck and{\n",
-"2 copy get\n",
-"dup 0 get type/integertype eq\n",
-"1 index 1 get type dup/arraytype\n",
-"eq exch\n",
-"/packedarraytype eq or\n",
-"and{\n",
-"exec\n",
-"2 index 4 1 roll put\n",
-"}{\n",
-"pop pop\n",
-"}ifelse\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"}{\n",
-"pop pop\n",
-"}ifelse\n",
-"}bind def\n",
-"/ResolveColorSpaceArrayRec\n",
-"{0\n",
-"exec\n",
-"}bind def\n",
-"/SetColorSpaceSafe\n",
-"{\n",
-"PDFR_DEBUG{\n",
-"(SetColorSpaceSafe beg)=\n",
-"}if\n",
-"currentcolorspace dup type/arraytype eq{\n",
-"1 index type/arraytype eq{\n",
-"dup length 2 index length eq{\n",
-"false exch\n",
-"dup length 0 exch 1 exch 1 sub{\n",
-"dup\n",
-"4 index exch get exch\n",
-"2 index exch get\n",
-"ne{\n",
-"exch pop true exch exit\n",
-"}if\n",
-"}for\n",
-"pop\n",
-"{\n",
-"setcolorspace\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"}{\n",
-"pop setcolorspace\n",
-"}ifelse\n",
-"}{\n",
-"pop setcolorspace\n",
-"}ifelse\n",
-"}{\n",
-"pop setcolorspace\n",
-"}ifelse\n",
-"PDFR_DEBUG{\n",
-"(SetColorSpaceSafe end)=\n",
-"}if\n",
-"}bind def\n",
-"/ResolveColorSpaceArray\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(ResolveColorSpaceArray beg )print dup ==\n",
-"}if\n",
-"dup 0 get/Indexed eq{\n",
-"1//ResolveArrayElement exec\n",
-"dup dup 1 get\n",
-"dup type/arraytype eq{\n",
-"//SubstitutePDFColorSpace exec\n",
-"//ResolveColorSpaceArrayRec exec\n",
-"1 exch put\n",
-"}{\n",
-"pop pop\n",
-"}ifelse\n",
-"}if\n",
-"dup 0 get/Separation eq{\n",
-"dup dup 1 get UnPDFEscape 1 exch put\n",
-"3//ResolveArrayElement exec\n",
-"dup 3 get//FunctionToProc exec\n",
-"2 copy 3 exch put\n",
-"pop\n",
-"}if\n",
-"dup 0 get/Pattern eq{\n",
-"dup length 1 gt{\n",
-"dup 1 get dup type/arraytype eq{\n",
-"ResolveColorSpaceArray\n",
-"1 index 1 3 -1 roll put\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"}if\n",
-"}if\n",
-"PDFR_DEBUG{\n",
-"(Construcrted color space :)=\n",
-"dup ==\n",
-"}if\n",
-"//PDFR_DEBUG{\n",
-"(ResolveColorSpaceArray end )print dup ==\n",
-"}if\n",
-"}bind def\n",
-"//ResolveColorSpaceArrayRec 0//ResolveColorSpaceArray put\n",
-"/ResolveColorSpace\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(ResolveColorSpace beg )print dup =\n",
-"}if\n",
-"dup//SimpleColorSpaceNames exch known not{\n",
-"dup//PDFColorSpaces exch//knownget exec{\n",
-"exch pop\n",
-"//PDFR_DEBUG{\n",
-"(ResolveColorSpace known )=\n",
-"}if\n",
-"}{\n",
-"dup\n",
-"//PDFReader/CurrentObject get/Context get/Resources get\n",
-"/ColorSpace//DoNothing//ResolveD exec\n",
-"exch//CheckColorSpace//ResolveD exec\n",
-"dup type/arraytype eq{\n",
-"//SubstitutePDFColorSpace exec\n",
-"//ResolveColorSpaceArray exec\n",
-"dup//PDFColorSpaces 4 2 roll put\n",
-"}if\n",
-"}ifelse\n",
-"}if\n",
-"//PDFR_DEBUG{\n",
-"(ResolveColorSpace end )print dup ==\n",
-"}if\n",
-"}bind def\n",
-"/CheckPattern\n",
-"{\n",
-"dup/PatternType//knownget exec{\n",
-"dup 1 ne{\n",
-"mark(Resource )4 index( is a shading, which can't be handled at level 2. )//error exec\n",
-"}if\n",
-"pop\n",
-"}if\n",
-"dup/Type knownget{\n",
-"/Pattern ne{\n",
-"mark(Resource )4 index( must have /Type/Pattern .)//error exec\n",
-"}if\n",
-"}if\n",
-"}bind def\n",
-"/PaintProc\n",
-"{/Context get\n",
-"//RunDelayedStream exec\n",
-"}bind def\n",
-"/ResolvePattern\n",
-"{\n",
-"dup\n",
-"userdict/PDFR_Patterns get\n",
-"exch//knownget exec{\n",
-"exch pop\n",
-"}{\n",
-"dup\n",
-"//PDFReader/CurrentObject get/Context get/Resources get\n",
-"/Pattern//DoNothing//ResolveD exec\n",
-"exch//CheckPattern//ResolveD exec\n",
-"dup dup/Context exch put\n",
-"dup/Resources//DoNothing//ResolveD exec pop\n",
-"dup/PaintProc//PaintProc put\n",
-"gsave userdict/PDFR_InitialGS get setgstate\n",
-"currentglobal exch false setglobal\n",
-"dup/Matrix get\n",
-"makepattern\n",
-"exch setglobal\n",
-"grestore\n",
-"dup userdict/PDFR_Patterns get\n",
-"4 2 roll\n",
-"put\n",
-"}ifelse\n",
-"}bind def\n",
-"/SetColor\n",
-"{//PDFR_DEBUG{\n",
-"(SetColor beg)=\n",
-"}if\n",
-"currentcolorspace dup type/nametype eq{\n",
-"pop setcolor\n",
-"}{\n",
-"0 get/Pattern eq{\n",
-"//ResolvePattern exec setpattern\n",
-"}{\n",
-"setcolor\n",
-"}ifelse\n",
-"}ifelse\n",
-"//PDFR_DEBUG{\n",
-"(SetColor end)=\n",
-"}if\n",
-"}bind def\n",
-"/ImageKeys 15 dict begin\n",
-"/BPC/BitsPerComponent def\n",
-"/CS/ColorSpace def\n",
-"/D/Decode def\n",
-"/DP/DecodeParms def\n",
-"/F/Filter def\n",
-"/H/Height def\n",
-"/IM/ImageMask def\n",
-"/I/Interpolate def\n",
-"/W/Width def\n",
-"currentdict end readonly def\n",
-"/ImageValues 15 dict begin\n",
-"/G/DeviceGray def\n",
-"/RGB/DeviceRGB def\n",
-"/CMYK/DeviceCMYK def\n",
-"/I/Indexed def\n",
-"/AHx/ASCIIHexDecode def\n",
-"/A85/ASCII85Decode def\n",
-"/LZW/LZWDecode def\n",
-"/Fl/FlateDecode def\n",
-"/RL/RunLengthDecode def\n",
-"/CCF/CCITTFaxDecode def\n",
-"/DCT/DCTDecode def\n",
-"currentdict end readonly def\n",
-"/GetColorSpaceRange\n",
-"{2 index/ColorSpace get\n",
-"dup type/arraytype eq{\n",
-"1 get\n",
-"}if\n",
-"exch//knownget exec{\n",
-"exch pop\n",
-"}if\n",
-"}bind def\n",
-"/DecodeArrays 15 dict begin\n",
-"/DeviceGray{[0 1]}def\n",
-"/DeviceRGB{[0 1 0 1 0 1]}def\n",
-"/DeviceCMYK{[0 1 0 1 0 1 0 1]}def\n",
-"/Indexed{\n",
-"dup/BitsPerComponent get 1 exch bitshift 1 sub[exch 0 exch]\n",
-"}def\n",
-"/Separation{[0 1]}def\n",
-"/CIEBasedA{[0 1]/RangeA//GetColorSpaceRange exec}def\n",
-"/CIEBasedABC{[0 1 0 1 0 1]/RangeABC//GetColorSpaceRange exec}def\n",
-"currentdict end readonly def\n",
-"/Substitute\n",
-"{1 index//knownget exec{\n",
-"exch pop\n",
-"}if\n",
-"}bind def\n",
-"/DebugImagePrinting\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(Image :)=\n",
-"dup{exch//=only exec( )print ==\n",
-"}forall\n",
-"}if\n",
-"}bind def\n",
-"/CompleteImage\n",
-"{\n",
-"dup/ColorSpace known{\n",
-"dup/ColorSpace//CheckColorSpace//ResolveD exec pop\n",
-"}if\n",
-"dup/Decode known not{\n",
-"dup/ColorSpace//knownget exec{\n",
-"dup type/arraytype eq{\n",
-"0 get\n",
-"}if\n",
-"//DecodeArrays exch get exec\n",
-"}{\n",
-"[0 1]\n",
-"}ifelse\n",
-"1 index exch/Decode exch put\n",
-"}if\n",
-"dup/ImageMatrix[2 index/Width get 0 0 5 index/Height get neg\n",
-"0 7 index/Height get]put\n",
-"//DebugImagePrinting exec\n",
-"}bind def\n",
-"/CompleteInlineImage\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(CompleteInlineImage beg)=\n",
-"}if\n",
-"dup/ImageType known not{\n",
-"dup/ImageType 1 put\n",
-"}if\n",
-"dup length dict exch{\n",
-"exch//ImageKeys//Substitute exec\n",
-"dup/Filter eq{\n",
-"exch//ImageValues//Substitute exec exch\n",
-"}if\n",
-"dup/ColorSpace eq{\n",
-"exch\n",
-"dup//ImageValues exch//knownget exec{\n",
-"exch pop\n",
-"}{\n",
-"//ResolveColorSpace exec\n",
-"}ifelse\n",
-"exch\n",
-"}if\n",
-"exch\n",
-"2 index 3 1 roll put\n",
-"}forall\n",
-"//CompleteImage exec\n",
-"dup/DataSource 2 copy get\n",
-"2 index//AppendFilters exec put\n",
-"//PDFR_DEBUG{\n",
-"(CompleteInlineImage end)=\n",
-"}if\n",
-"}bind def\n",
-"/CompleteOutlineImage\n",
-"{\n",
-"currentglobal exch dup gcheck setglobal\n",
-"//PDFR_DEBUG{\n",
-"(CompleteOutlineImage beg)=\n",
-"}if\n",
-"dup dup//MakeStreamReader exec/DataSource exch put\n",
-"dup/ImageType known not{\n",
-"//CompleteImage exec\n",
-"dup/ImageType 1 put\n",
-"dup/ColorSpace known{\n",
-"dup/ColorSpace//CheckColorSpace//ResolveD exec\n",
-"dup type/arraytype eq{\n",
-"//ResolveColorSpaceArray exec\n",
-"//SubstitutePDFColorSpace exec\n",
-"1 index exch/ColorSpace exch put\n",
-"}{\n",
-"pop\n",
-"}ifelse\n",
-"}if\n",
-"}if\n",
-"//PDFR_DEBUG{\n",
-"(CompleteOutlineImage end)=\n",
-"}if\n",
-"exch setglobal\n",
-"}bind def\n",
-"/DoImage\n",
-"{\n",
-"//PDFR_DEBUG{\n",
-"(DoImage beg)=\n",
-"}if\n",
-"gsave\n",
-"dup/ColorSpace//knownget exec{setcolorspace}if\n",
-"dup/ImageMask//knownget exec not{false}if\n",
-"{imagemask}{image}ifelse\n",
-"grestore\n",
-"//PDFR_DEBUG{\n",
-"(DoImage end)=\n",
-"}if\n",
-"}bind def\n",
-"/GSave\n",
-"{\n",
-"gsave\n",
-"//PDFReader/GraphicStateStackPointer get\n",
-"dup//GraphicStateStack exch get null eq{\n",
-"dup//GraphicStateStack exch//InitialGraphicState length dict put\n",
-"}if\n",
-"dup//GraphicStateStack exch get\n",
-"//GraphicState exch copy pop\n",
-"1 add//PDFReader exch/GraphicStateStackPointer exch put\n",
-"}bind def\n",
-"/GRestore\n",
-"{\n",
-"grestore\n",
-"//PDFReader/GraphicStateStackPointer get\n",
-"1 sub dup\n",
-"//PDFReader exch/GraphicStateStackPointer exch put\n",
-"//GraphicStateStack exch get\n",
-"//GraphicState copy pop\n",
-"}bind def\n",
-"/SetFont\n",
-"{dup//GraphicState exch/FontSize exch put\n",
-"//ResolveAndSetFont exec\n",
-"//GraphicState/FontMatrixNonHV currentfont/FontMatrix get 1 get 0 ne put\n",
-"}bind def\n",
-"/ShowText\n",
-"{//GraphicState/TextRenderingMode get 0 eq{\n",
-"//GraphicState/WordSpacing get 0\n",
-"32\n",
-"//GraphicState/CharacterSpacing get 0\n",
-"6 5 roll\n",
-"//GraphicState/FontMatrixNonHV get{\n",
-"[\n",
-"7 -2 roll pop\n",
-"5 -2 roll pop\n",
-"5 -1 roll\n",
-"{\n",
-"exch\n",
-"pop\n",
-"3 index add\n",
-"exch 2 index eq{3 index add}if\n",
-"4 1 roll\n",
-"}\n",
-"currentfont/FontMatrix get 0 get 0 ne{\n",
-"1 1 index length 1 sub getinterval cvx\n",
-"}if\n",
-"5 index\n",
-"cshow\n",
-"pop pop pop]\n",
-"xshow\n",
-"}{\n",
-"awidthshow\n",
-"}ifelse\n",
-"}{\n",
-"//GraphicState/CharacterSpacing get 0 eq\n",
-"//GraphicState/FontMatrixNonHV get not and\n",
-"//GraphicState/WordSpacing get 0 eq and{\n",
-"true charpath\n",
-"}{\n",
-"{\n",
-"exch\n",
-"pop 0\n",
-"currentpoint 5 4 roll\n",
-"( )dup 0 3 index put true charpath\n",
-"5 1 roll\n",
-"moveto rmoveto\n",
-"//GraphicState/CharacterSpacing get 0 rmoveto\n",
-"32 eq{\n",
-"//GraphicState/WordSpacing get 0 rmoveto\n",
-"}if\n",
-"}\n",
-"//GraphicState/FontMatrixNonHV get dup not exch{\n",
-"pop currentfont/FontMatrix get 0 get 0 ne\n",
-"}if{\n",
-"1 1 index length 1 sub getinterval cvx\n",
-"}if\n",
-"exch cshow\n",
-"}ifelse\n",
-"}ifelse\n",
-"}bind def\n",
-"/ShowTextBeg\n",
-"{//GraphicState/TextRenderingMode get 0 ne{\n",
-"currentpoint newpath moveto\n",
-"}if\n",
-"}bind def\n",
-"/ShowTextEnd\n",
-"{//GraphicState/TextRenderingMode get\n",
-"{dup 1 eq{\n",
-"stroke exit\n",
-"}if\n",
-"dup 2 eq{\n",
-"gsave fill grestore stroke exit\n",
-"}if\n",
-"dup 3 eq{\n",
-"currentpoint newpath moveto\n",
-"}if\n",
-"dup 4 eq{\n",
-"gsave fill grestore clip exit\n",
-"}if\n",
-"dup 5 eq{\n",
-"gsave stroke grestore clip exit\n",
-"}if\n",
-"dup 6 eq{\n",
-"gsave fill grestore gsave stroke grestore fill exit\n",
-"}if\n",
-"dup 7 eq{\n",
-"clip exit\n",
-"}if\n",
-"exit\n",
-"}loop\n",
-"pop\n",
-"}bind def\n",
-"/ShowTextWithGlyphPositioning\n",
-"{//ShowTextBeg exec\n",
-"{dup type/stringtype eq{\n",
-"//ShowText exec\n",
-"}{\n",
-"neg 1000 div//GraphicState/FontSize get mul 0 rmoveto\n",
-"}ifelse\n",
-"}forall\n",
-"//ShowTextEnd exec\n",
-"}bind def\n",
-"/CheckFont\n",
-"{dup/Type get/ExtGState ne{\n",
-"mark(Resource )3 index( must have /Type/ExtGState.)//error exec\n",
-"}if\n",
-"}bind def\n",
-"/SetTransfer\n",
-"{\n",
-"//PDFR_DEBUG{(SetTransfer beg )print count =}if\n",
-"dup type/arraytype eq 1 index xcheck not and{\n",
-"0 4 getinterval aload pop\n",
-"setcolortransfer\n",
-"}{\n",
-"settransfer\n",
-"}ifelse\n",
-"//PDFR_DEBUG{(SetTransfer end )print count =}if\n",
-"}bind def\n",
-"/CheckExtGState\n",
-"{dup/Type get/ExtGState ne{\n",
-"mark(Resource )3 index( must have /Type/ExtGState.)//error exec\n",
-"}if\n",
-"}bind def\n",
-"/CheckHalftone\n",
-"{dup/HalftoneType known not{\n",
-"mark(Resource )3 index( must have /HalftoneType.)//error exec\n",
-"}if\n",
-"}bind def\n",
-"/ResolveFunction\n",
-"{\n",
-"//PDFR_DEBUG{(ResolveFunction beg )print dup = count =}if\n",
-"2 copy get//IsObjRef exec{\n",
-"2 copy//DoNothing//ResolveD exec\n",
-"3 copy put pop\n",
-"}if\n",
-"2 copy get dup type/arraytype eq exch xcheck and not{\n",
-"2 copy get\n",
-"dup type/arraytype eq 1 index xcheck not and{\n",
-"dup length 1 sub -1 0{\n",
-"2 copy//DoNothing ResolveA\n",
-"dup/Identity eq{\n",
-"pop 2 copy{}put\n",
-"}{\n",
-"//FunctionToProc exec\n",
-"3 copy put pop\n",
-"}ifelse\n",
-"pop\n",
-"}for\n",
-"}{\n",
-"dup/Default eq{\n",
-"}{\n",
-"dup/Identity eq{\n",
-"pop{}\n",
-"}{dup type/nametype eq{\n",
-"//spotfunctions exch get\n",
-"}{\n",
-"//FunctionToProc exec\n",
-"}ifelse\n",
-"}ifelse\n",
-"}ifelse\n",
-"}ifelse\n",
-"3 copy put\n",
-"exch pop\n",
-"}{\n",
-"1 index exch get\n",
-"}ifelse\n",
-"//PDFR_DEBUG{(ResolveFunction end )print dup == count =}if\n",
-"}bind def\n",
-"/ResolveFunctionSafe\n",
-"{2 copy known{\n",
-"//ResolveFunction exec\n",
-"}if\n",
-"pop\n",
-"}bind def\n",
-"/CreateHalftoneThresholds\n",
-"{\n",
-"dup/Thresholds known not{\n",
-"dup/HalftoneType get 10 eq{\n",
-"dup dup//MakeStreamReader exec\n",
-"/Thresholds exch put\n",
-"}if\n",
-"dup/HalftoneType get dup 3 eq exch 6 eq or{\n",
-"dup dup//MakeStreamReader exec\n",
-"//BlockBuffer readstring pop\n",
-"dup length\n",
-"dup 0 eq{\n",
-"mark(Could not read Thresholds)//error exec\n",
-"}if\n",
-"string copy/Thresholds exch put\n",
-"dup/HalftoneType 3 put\n",
-"}if\n",
-"}if\n",
-"}bind def\n",
-"/SetExtGState\n",
-"{\n",
-"//PDFReader/CurrentObject get/Context get/Resources get\n",
-"/ExtGState//DoNothing//ResolveD exec\n",
-"exch//CheckExtGState//ResolveD exec\n",
-"dup/LW//knownget exec{\n",
-"setlinewidth\n",
-"}if\n",
-"dup/LC//knownget exec{\n",
-"setlinecap\n",
-"}if\n",
-"dup/LJ//knownget exec{\n",
-"setlinejoin\n",
-"}if\n",
-"dup/ML//knownget exec{\n",
-"setmeterlimit\n",
-"}if\n",
-"dup/D//knownget exec{\n",
-"setdash\n",
-"}if\n",
-"dup/RI//knownget exec{\n",
-"mark(Unimplemented ExtGState.RI)//error exec\n",
-"}if\n",
-"dup/OP//knownget exec{\n",
-"setoverprint\n",
-"}if\n",
-"dup/op//knownget exec{\n",
-"setoverprint\n",
-"}if\n",
-"dup/OPM//knownget exec{\n",
-"mark(Unimplemented ExtGState.OPM)//error exec\n",
-"}if\n",
-"dup/Font//knownget exec{\n",
-"mark(Unimplemented ExtGState.Font)//error exec\n",
-"}if\n",
-"dup/BG known{\n",
-"/BG//ResolveFunction exec\n",
-"setblackgeneration\n",
-"}if\n",
-"dup/BG2 known{\n",
-"/BG2//ResolveFunction exec\n",
-"dup/Default eq{\n",
-"//InitialExtGState/BG2 get\n",
-"}if\n",
-"setblackgeneration\n",
-"}if\n",
-"dup/UCR known{\n",
-"/UCR//ResolveFunction exec\n",
-"setundercolorremoval\n",
-"}if\n",
-"dup/UCR2 known{\n",
-"/UCR2//ResolveFunction exec\n",
-"dup/Default eq{\n",
-"//InitialExtGState/UCR2 get\n",
-"}if\n",
-"setundercolorremoval\n",
-"}if\n",
-"dup/TR known{\n",
-"/TR//ResolveFunction exec\n",
-"//SetTransfer exec\n",
-"}if\n",
-"dup/TR2 known{\n",
-"/TR2//ResolveFunction exec\n",
-"dup/Default eq{\n",
-"pop//InitialExtGState/TR2 get\n",
-"aload pop setcolortransfer\n",
-"}{\n",
-"//SetTransfer exec\n",
-"}ifelse\n",
-"}if\n",
-"dup/HT//knownget exec{\n",
-"dup/Default eq{\n",
-"pop//InitialExtGState/HT get\n",
-"sethalftone\n",
-"}{\n",
-"//PDFR_DEBUG{(Ht beg)=}if\n",
-"pop dup/HT//CheckHalftone//ResolveD exec\n",
-"/SpotFunction//ResolveFunctionSafe exec\n",
-"/TransferFunction//ResolveFunctionSafe exec\n",
-"null exch\n",
-"dup/HalftoneType get dup 5 eq exch dup 4 eq exch 2 eq or or{\n",
-"dup{\n",
-"dup//IsObjRef exec{\n",
-"pop\n",
-"1 index exch//CheckHalftone ResolveD\n",
-"}if\n",
-"dup type/dicttype eq{\n",
-"dup/SpotFunction//ResolveFunctionSafe exec\n",
-"/TransferFunction//ResolveFunctionSafe exec\n",
-"//CreateHalftoneThresholds exec\n",
-"dup/HalftoneType get 5 gt{\n",
-"4 3 roll pop\n",
-"dup 4 1 roll\n",
-"}if\n",
-"}if\n",
-"pop pop\n",
-"}forall\n",
-"}if\n",
-"//CreateHalftoneThresholds exec\n",
-"//PDFR_DEBUG{\n",
-"(HT:)=\n",
-"dup{\n",
-"1 index/Default eq{\n",
-"(Default <<)=\n",
-"exch pop\n",
-"{exch = ==}forall\n",
-"(>>)=\n",
-"}{\n",
-"exch = ==\n",
-"}ifelse\n",
-"}forall\n",
-"(HT end)= flush\n",
-"}if\n",
-"exch dup null ne{\n",
-"(Warning: Ignoring a halftone with a Level 3 component halftone Type )print dup/HalftoneType get =\n",
-"pop pop\n",
-"}{\n",
-"pop\n",
-"dup/HalftoneType get 5 gt{\n",
-"(Warning: Ignoring a Level 3 halftone Type )print dup/HalftoneType get =\n",
-"pop\n",
-"}{\n",
-"sethalftone\n",
-"}ifelse\n",
-"}ifelse\n",
-"//PDFR_DEBUG{(HT set)= flush}if\n",
-"}ifelse\n",
-"}if\n",
-"dup/FL//knownget exec{\n",
-"setflattness\n",
-"}if\n",
-"dup/SM//knownget exec{\n",
-"setsmoothness\n",
-"}if\n",
-"dup/SA//knownget exec{\n",
-"setstrokeadjust\n",
-"}if\n",
-"dup/BM//knownget exec{\n",
-"mark(Unimplemented ExtGState.BM)//error exec\n",
-"}if\n",
-"dup/SMask//knownget exec{\n",
-"mark(Unimplemented ExtGState.SMask)//error exec\n",
-"}if\n",
-"dup/CA//knownget exec{\n",
-"mark(Unimplemented ExtGState.CA)//error exec\n",
-"}if\n",
-"dup/ca//knownget exec{\n",
-"mark(Unimplemented ExtGState.ca)//error exec\n",
-"}if\n",
-"dup/AIS//knownget exec{\n",
-"mark(Unimplemented ExtGState.AIS)//error exec\n",
-"}if\n",
-"dup/TK//knownget exec{\n",
-"mark(Unimplemented ExtGState.TK)//error exec\n",
-"}if\n",
-"pop\n",
-"}bind def\n",
-"/CheckXObject\n",
-"{dup/Subtype get dup/Image ne exch dup/Form ne exch/PS ne and and{\n",
-"mark(Resource )3 index( must have /Subtype /Image or /Form or /PS.)//error exec\n",
-"}if\n",
-"}bind def\n",
-"/DoXObject\n",
-"{\n",
-"//PDFReader/CurrentObject get/Context get/Resources get\n",
-"/XObject//DoNothing//ResolveD exec\n",
-"exch//CheckXObject//ResolveD exec\n",
-"dup/Subtype get\n",
-"dup/Image eq{\n",
-"pop\n",
-"//CompleteOutlineImage exec\n",
-"//DoImage exec\n",
-"}{\n",
-"dup/PS eq{\n",
-"PDFR_DEBUG{\n",
-"(Executing a PS Xobject)=\n",
-"}if\n",
-"pop\n",
-"//RunDelayedStream exec\n",
-"}{\n",
-"dup/Form eq{\n",
-"pop\n",
-"PDFR_DEBUG{\n",
-"(Executing a Form XObject)=\n",
-"}if\n",
-"//PDFReader/CurrentObject get exch\n",
-"dup//PDFReader exch<< exch/Context exch >>/CurrentObject exch put\n",
-"dup/Matrix get concat\n",
-"dup/BBox get aload pop exch 3 index sub exch 2 index sub rectclip\n",
-"//RunDelayedStream exec\n",
-"//PDFReader exch/CurrentObject exch put\n",
-"}{\n",
-"mark exch(unimplemented XObject type )exch//error exec\n",
-"}ifelse\n",
-"}ifelse\n",
-"}ifelse\n",
-"}bind def\n",
-"/Operators 50 dict begin\n",
-"/q{//GSave exec}bind def\n",
-"/Q{//GRestore exec}bind def\n",
-"/cm{//TempMatrix astore concat}bind def\n",
-"/i{1 .min setflat}bind def\n",
-"/J/setlinecap load def\n",
-"/d/setdash load def\n",
-"/j/setlinejoin load def\n",
-"/w/setlinewidth load def\n",
-"/M/setmiterlimit load def\n",
-"/gs{SetExtGState}bind def\n",
-"/g/setgray load def\n",
-"/rg/setrgbcolor load def\n",
-"/k/setcmykcolor load def\n",
-"/cs{//ResolveColorSpace exec//SetColorSpaceSafe exec\n",
-"}bind def\n",
-"/sc/setcolor load def\n",
-"/scn{//SetColor exec}bind def\n",
-"/G/setgray load def\n",
-"/RG/setrgbcolor load def\n",
-"/K/setcmykcolor load def\n",
-"/CS//cs def\n",
-"/ri{SetColorRenderingIntent}bind def\n",
-"/SC/setcolor load def\n",
-"/SCN{//SetColor exec}bind def\n",
-"/m/moveto load def\n",
-"/l/lineto load def\n",
-"/c/curveto load def\n",
-"/v{currentpoint 6 2 roll curveto}bind def\n",
-"/y{2 copy curveto}bind def\n",
-"/re{\n",
-"4 2 roll moveto exch dup 0 rlineto 0 3 -1 roll rlineto neg 0 rlineto\n",
-"closepath\n",
-"}def\n",
-"/h/closepath load def\n",
-"/n/newpath load def\n",
-"/S/stroke load def\n",
-"/s{closepath stroke}bind def\n",
-"/f/fill load def\n",
-"/f*/eofill load def\n",
-"/B{gsave fill grestore stroke}bind def\n",
-"/b{closepath gsave fill grestore stroke}bind def\n",
-"/B*{gsave eofill grestore stroke}bind def\n",
-"/b*{closepath gsave eofill grestore stroke}bind def\n",
-"/W/clip load def\n",
-"/W*/eoclip load def\n",
-"/sh{\n",
-"ResolveShading\n",
-"dup/Background known{\n",
-"gsave\n",
-"dup/ColorSpace get setcolorspace\n",
-"dup/Background get aload pop setcolor\n",
-"pathbbox\n",
-"2 index sub exch 3 index sub exch\n",
-"rectfill\n",
-"grestore\n",
-"}if\n",
-"shfill\n",
-"}bind def\n",
-"/Do{//DoXObject exec}bind def\n",
-"/BI{currentglobal false setglobal<<}bind def\n",
-"/ID{>>\n",
-"dup/DataSource currentfile\n",
-"2 index/F//knownget exec{\n",
-"/A85 eq{\n",
-"0(~>)/SubFileDecode filter\n",
-"}if\n",
-"}if\n",
-"put\n",
-"//CompleteInlineImage exec\n",
-"exch setglobal\n",
-"//DoImage exec\n",
-"}bind def\n",
-"/EI{}bind def\n",
-"/BT{gsave//GraphicState/InitialTextMatrix get currentmatrix pop}bind def\n",
-"/ET{grestore}bind def\n",
-"/Tc{//GraphicState exch/CharacterSpacing exch put}bind def\n",
-"/TL{//GraphicState exch/TextLeading exch put}bind def\n",
-"/Tr{//GraphicState exch/TextRenderingMode exch put}bind def\n",
-"/Ts{\n",
-"mark(Unimplemented SetTextRise)//error exec\n",
-"}bind def\n",
-"/Tw{//GraphicState exch/WordSpacing exch put}bind def\n",
-"/Tz{\n",
-"mark(Unimplemented SetHorizontalTextScaling)//error exec\n",
-"}bind def\n",
-"/Td{translate 0 0 moveto}bind def\n",
-"/TD{dup neg//TL exec//Td exec}bind def\n",
-"/Tm{//GraphicState/InitialTextMatrix get setmatrix\n",
-"//TempMatrix astore concat\n",
-"0 0 moveto}bind def\n",
-"/T*{0//GraphicState/TextLeading get neg//Td exec}bind def\n",
-"/Tj{//ShowTextBeg exec//ShowText exec//ShowTextEnd exec}bind def\n",
-"/'{//T* exec//ShowText exec//ShowTextEnd exec}bind def\n",
-"/\"{3 2 roll//Tw exec exch//Tc exec//' exec}bind def\n",
-"/TJ//ShowTextWithGlyphPositioning def\n",
-"/Tf//SetFont def\n",
-"/d0/setcharwidth load def\n",
-"/d1/setcachedevice load def\n",
-"/BDC{pop pop}bind def\n",
-"/BMC{pop}bind def\n",
-"/EMC{}bind def\n",
-"/BX{BeginCompatibilitySection}bind def\n",
-"/EX{EndCompatibilitySection}bind def\n",
-"/DP{DefineMarkedContentPointWithPropertyList}bind def\n",
-"/MP{DefineMarkedContentPoint}bind def\n",
-"/PS{cvx exec}bind def\n",
-"currentdict end def\n",
-"//PDFR_STREAM{\n",
-"//Operators length dict begin\n",
-"//Operators{\n",
-"exch dup\n",
-"[exch//=only/exec load\n",
-"( )/print load\n",
-"8 7 roll\n",
-"dup type/arraytype eq{\n",
-"/exec load\n",
-"}if\n",
-"( )/print load\n",
-"]cvx\n",
-"def\n",
-"}forall\n",
-"currentdict end/Operators exch def\n",
-"}if\n",
-"/.registerencoding\n",
-"{pop pop\n",
-"}bind def\n",
-"/.defineencoding\n",
-"{def\n",
-"}bind def\n",
-"/.findencoding\n",
-"{load\n",
-"}bind def\n",
-0x00
-};
diff --git a/lib/opdfread.ps b/devices/vector/opdfread.ps
index b62a3dfe4..b62a3dfe4 100644
--- a/lib/opdfread.ps
+++ b/devices/vector/opdfread.ps
diff --git a/windows/ghostscript.vcproj b/windows/ghostscript.vcproj
index 88f57d95b..9877c6ea1 100644
--- a/windows/ghostscript.vcproj
+++ b/windows/ghostscript.vcproj
@@ -1493,10 +1493,6 @@
>
</File>
<File
- RelativePath="..\Resource\Init\opdfread.ps"
- >
- </File>
- <File
RelativePath="..\Resource\Init\pdf_base.ps"
>
</File>
@@ -6205,6 +6201,10 @@
>
</File>
<File
+ RelativePath="..\devices\vector\opdfread.ps"
+ >
+ </File>
+ <File
RelativePath="..\devices\vector\whitelst.c"
>
</File>
@@ -6417,10 +6417,6 @@
>
</File>
<File
- RelativePath="..\devices\vector\opdfread.h"
- >
- </File>
- <File
RelativePath="..\devices\vector\whitelst.h"
>
</File>