Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet db584aede5 Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.1.4@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
168 arquivos alterados com 63278 adições e 91300 exclusões
+1 -195
Ver Arquivo
@@ -1,200 +1,6 @@
CHANGES.txt - 01/03/2000
CHANGES.txt - 10/04/2000
------------------------
CHANGES IN CUPS V1.1.5-2
- Fixed configure check for OpenSSL to work with RSA
code.
- Added configure check for <sys/ioctl.h>, and use this
check in backend/serial.c.
- Updated configure script handling of data,
configuration, and state directories to use datadir,
sysconfdir, and localstatedir variables.
- NetBSD uses different serial port filenames than
FreeBSD and OpenBSD.
- The pdftops filter didn't need some X-specific files.
- The scheduler makefile doesn't do a chown anymore when
installing (cupsd did this automatically on startup
anyways)
CHANGES IN CUPS V1.1.5-1
- There was a typo in the top-level Makefile
- The top-level Makefile did not install an init script
for run level 5.
- The configure script did not add the "crypto" library
when checking for the OpenSSL library.
- The OKIDATA PPD files were missing.
- The config.h.in file defined the wrong version number.
- The serial backend did not define "funky_hex" under *BSD.
- Updated the Visual C++ project files and some of the
CUPS API sources to compile under Windows again.
CHANGES IN CUPS V1.1.5
- Security updates - new default configuration does
not broadcast printer information and only allows
access from the local system.
- EXPERIMENTAL encryption support - CUPS now optionally
supports TLS/SSL encryption via the OpenSSL library.
- Documentation updates.
- Makefile/configure script updates.
- The RPM spec file didn't work out-of-the-box under
RedHat or Mandrake.
- Minor code cleanup to remove extraneous compiler
warnings.
- cupsTempFile() was using %p for the temporary
filename; this should have been %08x (just 8 digit
hex)
- Deleting a printer with active print jobs would still
crash the server.
- ippWrite() and ipp_write_file() didn't send the
correct value length for name-with-language and
text-with-language attributes.
- Updated IPP code to support copied strings (that
should not be freed); this provides slightly more
efficient IPP server performance.
- Updated PDF filter to Xpdf 0.91.
- httpGets() could go into an infinite loop if a line
longer than the input buffer size was sent by a
client. This could be used in a Denial-of-Service
attack.
- The lpstat and CUPS API functions now request only the
data required when getting the list of printer or
class information. This should improve performance
with large numbers of printers on slower machines.
- The scheduler was always enforcing the FilterLimit,
even if FilterLimit was set to 0.
- Updated the Linux USB backend to support Mandrake's
/dev/usb/usblp# filenames.
- The PRINTER and LPDEST environment variables did not
override the lpoptions default printer.
- The PPD read functions incorrectly included trailing
characters (usually whitespace) after quoted string
attributes.
- The multiple-document-handling attribute handling code
did not check for the correct value for collated
copies (separate-documents-uncollated-copies).
- The EPSON driver did not work with OKIDATA printers in
EPSON emulation mode (needed change-emulation command)
- The HP-GL/2 filter did not scale the plot properly in
scale mode 2.
- Added PPD files for 9-pin and 24-pin OKIDATA printers.
- The httpSeparate() function didn't handle passwords
that started with a number.
- ippDelete() could free the character set string
multiple times in name-with-language and
text-with-language attributes.
- The scheduler would access freed memory right after
freeing it (for debug messages); these parts of the
code have been reordered to avoid this situation
which was causing sporatic errors and crashes.
- The ppdClose() function didn't free all of the strings
in the ppd_file_t structure.
- The LoadAllJobs() function in the scheduler did not
close the spool directory.
- Changed all sprintf's that use string formats to
snprintf's, even if the destination buffer is
larger than the source string(s); this protects
against buffer overflows caused outside of CUPS...
- Changed all strcpy's to strncpy's between local and
global variables, even if the destination buffer is
larger than the source string; this protects
against buffer overflows caused outside of CUPS...
- The CUPS certificate functions didn't use the
CUPS_SERVERROOT environment variable when set.
- The directory services code was copying instead of
comparing the remote printer info, resulting in
unnecessary updates of the printer attributes for
remote printers.
- Added new mime.types rules to allow automatic raw
printing of PCL and ESC/P files; PJL headers are
parsed to differentiate between PostScript and
PCL job files. This should eliminate a lot of
the reports of SAMBA printing problems due to
the missing "-oraw" or "-l" options.
- The mimeLoadType() function didn't handle the
3-argument contains() function.
- The LoadPPDs() function in the scheduler didn't
properly set the alloc_ppds variable or handle a PPD
database containing 0 printers.
- The scheduler FindAvailablePrinter() function didn't
use the same queuing logic as the CheckJobs()
function. This caused classes to stall if a remote
printer was always busy.
- Jobs are now assigned to printers in a class
round-robin style. This should prevent the first
server in the class from bearing the brunt of the
jobs.
- The scheduler's LoadAllJobs() function didn't always
restore remote printers for queued jobs on startup.
- The serial backend didn't support the higher baud
rates with the old termios interface. It now supports
57600 and 115200 baud.
- The serial backend now supports different types of
flow control; previously it ignored the flow=XYZ
option in the device URI.
- The serial backend now supports DTR/DSR flow control,
which is popular on dot-matrix printers (access with
"flow=dtrdsr" in the device URI)
- Added new job-originating-host-name attribute for
jobs. The new attribute provides the hostname or
IP address of the machine that submitted the job.
- The set-job-attributes code no longer allows read-only
job attributes to be changed.
- Expanded the click area for the navigation bar in the
web interface.
- Updated the lp and cancel commands to support all of
the Solaris print options (some are simply ignored
since they do not map)
- Updated the scheduler to limit the number of file
descriptors to the maximum select() set size. This
was causing problems on Solaris systems where the
max FD count was increased beyond 1024.
- The scheduler's LoadDevices() function was getting
interrupted by the SIGCHLD signal handler; now ignore
child signals while loading devices.
- Added quota and allow/deny user support for printers
and classes.
- Removed black/CMY adjustment code from the PS and
image file RIPs; it was interfering with some CUPS
driver dithering code.
- The lpc program stopped listing the queue statuses
after the first active printer.
- The cups-lpd program used an output format that the
Solaris printing system did not understand.
- Updated the lpq program to use the Solaris format
except under Tru64 UNIX.
- Some DEC PPD files incorrectly use "Off" for the null
value in UI constraints. Added "Off" to the list of
accepted null values.
- Changed the *BSD define constants to __*BSD__ in all
of the backends.
- Added support for "lpstat printername", which is an
undocumented feature in Solaris.
- The HP-GL/2 filter now only sets the plot size if it
is set in the plot file.
- The lpmove command wasn't sending the requesting
user name, causing it to always fail.
- Updated the cupsTempFile() code to use GetTempPath()
under Windows.
- The cups-lpd mini-daemon didn't limit the number of
data files accepted, didn't use cupsTempFile(),
didn't handle control file job information in any
order, and didn't free job options after printing
a file.
- The scheduler copy_banner() function did not
explicitly set the owner and permissions of the banner
files, which could prevent the banner pages from
printing on some systems.
- The lpstat program wasn't listing remote classes.
- The scheduler did not verify that the printer-uri
attribute was specified in all requests that required
it.
CHANGES IN CUPS v1.1.4
- Makefile and configure script fixes.
-129
Ver Arquivo
@@ -1,129 +0,0 @@
ENCRYPTION - CUPS v1.1.5 - 12/20/2000
-------------------------------------
This file describes the encryption support provided by CUPS.
WARNING: CLIENTS CURRENTLY TRUST ALL CERTIFICATES FROM SERVERS.
This makes the CUPS client applications vulnerable to "man in
the middle" attacks, so we don't recommend using this to do
remote administration over WANs at this time.
Future versions of CUPS will keep track of server certificates
and provide a callback/confirmation interface for accepting new
certificates and warning when a certificate has changed.
LEGAL STUFF
BEFORE USING THE ENCRYPTION SUPPORT, PLEASE VERIFY THAT IT IS
LEGAL TO DO SO IN YOUR COUNTRY. CUPS by itself doesn't include
any encryption code, but it can link against the OpenSSL library
which does.
OVERVIEW OF ENCRYPTION SUPPORT IN CUPS
CUPS supports SSL/2.0, SSL/3.0, and TLS/1.0 encryption using
keys as large as 128-bits. Encryption support is provided via
the OpenSSL library and some new hooks in the CUPS code.
CUPS provides support for dedicated (https) and "upgrade" (TLS)
encryption of sessions. The "HTTP Upgrade" method is described
in RFC 2817; basically, the client can be secure or unsecure,
and the client or server initiates an upgrade to a secure
connection via some new HTTP fields and status codes. The HTTP
Upgrade method is new and no browsers we know of support it yet.
Stick with "https" for web browsers.
The current implementation is very basic. The CUPS client
software (lp, lpr, etc.) uses encryption as requested by the
server and/or as specified by the Encryption directive in the
client.conf file or in the CUPS_ENCRYPTION environment
variable:
Never
Never do encryption.
Always
Always do SSL/TLS encryption using the https scheme.
IfRequested
Upgrade to TLS encryption if the server asks for it.
This is the default setting.
Required
Always upgrade to TLS encryption as soon as the
connection is made. This is different than the "Always"
mode above since the connection is initially unsecure
and the client initiates the upgrade to TLS encryption.
These keywords are also used in the cupsd.conf file to secure
particular locations. To secure all traffic on the server, listen
on port 443 (https port) instead of port 631 and change the "ipp"
service listing (or add it if you don't have one) in /etc/services
to 443.
BEFORE YOU BEGIN
You'll need the OpenSSL library from:
http://www.openssl.org
CONFIGURING WITH ENCRYPTION SUPPORT
Once you have the OpenSSL library installed, you'll need to
configure CUPS to use it with the "--enable-ssl" option:
./configure --enable-ssl
If the OpenSSL stuff is not in a standard location, make sure to
define the CFLAGS, CXXFLAGS, and LDFLAGS environment variables
with the appropriate compiler and linker options first.
GENERATING A SERVER CERTIFICATE AND KEY
The following OpenSSL command will generate a server certificate
and key that you can play with. Since the certificate is not
properly signed it will generate all kinds of warnings in
Netscape and MSIE:
openssl req -new -x509 -keyout /etc/cups/ssl/server.key \
-out /etc/cups/ssl/server.crt -days 365 -nodes
chmod 600 /etc/cups/ssl/server.*
The "-nodes" option prevents the certificate and key from being
encrypted. The cupsd process runs in the background, detached
from any input source; if you encrypt these files then cupsd
will not be able to load them!
Send all rants about non-encrypted certificate and key files to
/dev/null. It makes sense to encrypt user files, but not for
files used by system processes/daemons...
REPORTING PROBLEMS
If you have problems, READ THE DOCUMENTATION FIRST! If the
documentation does not solve your problems please send an email
to "cups-support@cups.org". Include your operating system and
version, compiler and version, and any errors or problems you've
run into. The "/var/log/cups/error_log" file should also be sent,
as it often helps to determine the cause of your problem.
If you are running a version of Linux, be sure to provide the
Linux distribution you have, too.
Please note that the "cups-support@cups.org" email address goes
to the CUPS developers; they are busy people, so your email may
go unanswered for days or weeks. In general, only general build
or distribution problems will actually get answered - for
end-user support see the "README.txt" for a summary of the
resources available.
-154
Ver Arquivo
@@ -1,154 +0,0 @@
INSTALL - CUPS v1.1.5 - 12/20/2000
----------------------------------
This file describes how to compile and install CUPS from source
code. For more information on CUPS see the file called
"README.txt". A complete change log can be found in
"CHANGES.txt".
BEFORE YOU BEGIN
You'll need ANSI-compliant C and C++ compilers, plus a make
program and Bourne shell. The GNU compiler tools work well -
we've tested the current CUPS code against GCC 2.95.x with
excellent results.
The makefiles used by the project should work with all versions
of make. We've tested them with GNU make as well as the make
programs shipped by Compaq, HP, SGI, and Sun. FreeBSD users
should use GNU make (gmake).
Besides these tools you'll want the following libraries:
- JPEG 6b or higher
- PNG 1.0.6 or higher
- TIFF 3.4 or higher
- ZLIB 1.1.3 or higher
CUPS will compile and run without these, however you'll miss out on
many of the features provided by CUPS.
CONFIGURATION
CUPS uses GNU autoconf, so you should find the usual "configure"
script in the main CUPS source directory. To configure CUPS for
your system, type:
./configure ENTER
The default installation will put the CUPS software in the
"/etc", "/usr", and "/var" directories on your system, which
will overwrite any existing printing commands on your system.
Use the "--prefix" option to install the CUPS software in
another location:
./configure --prefix=/some/directory ENTER
If the PNG, JPEG, TIFF, and ZLIB libraries are not installed in
a system default location (typically "/usr/include" and
"/usr/lib") you'll need to set the CFLAGS, CXXFLAGS, and LDFLAGS
environment variables prior to running configure:
setenv CFLAGS "-I/some/directory" ENTER
setenv CXXFLAGS "-I/some/directory" ENTER
setenv LDFLAGS "-L/some/directory" ENTER
./configure ... ENTER
or:
CFLAGS="-I/some/directory"; export CFLAGS ENTER
CXXFLAGS="-I/some/directory"; export CXXFLAGS ENTER
LDFLAGS="-L/some/directory"; export LDFLAGS ENTER
./configure ... ENTER
To enable support for encryption, you'll also want to add the
"--enable-ssl" option:
./configure --enable-ssl
SSL and TLS support require the OpenSSL library, available at:
http://www.openssl.org
Once you have configured things, just type:
make ENTER
or if you have FreeBSD:
gmake ENTER
to build the software.
INSTALLING THE SOFTWARE
Once you have built the software you need to install it. The
"install" target provides a quick way to install the software on
your local system:
make install ENTER
or for FreeBSD:
gmake install ENTER
You can also build binary packages that can be installed on other
machines using the RPM spec file ("cups.spec") or EPM list file
("cups.list"). The latter also supports building of binary RPMs,
so it may be more convenient to use - we use EPM to build all of
our binary distributions.
You can find the RPM software at:
http://www.rpm.org
The RPM software is at:
http://www.easysw.com/epm
CREATING BINARY DISTRIBUTIONS WITH EPM
The top level makefile supports generation of many types of binary
distributions using EPM. To build a binary distribution type:
make <format> ENTER
or
gmake <format> ENTER
for FreeBSD, where <format> is one of the following:
epm - Builds a portable shell script and tar file based
distribution. This format will also backup your
existing printing system if you decide to remove
CUPS at some future time.
rpm - Builds a RPM binary distribution.
deb - Builds a Debian binary distribution.
depot - Builds a HP-UX binary distribution.
pkg - Builds a Solaris binary distribution.
tardist - Builds an IRIX binary distribution.
REPORTING PROBLEMS
If you have problems, READ THE DOCUMENTATION FIRST! If the
documentation does not solve your problems please send an email
to "cups-support@cups.org". Include your operating system and
version, compiler and version, and any errors or problems you've
run into. The "/var/log/cups/error_log" file should also be sent,
as it often helps to determine the cause of your problem.
If you are running a version of Linux, be sure to provide the
Linux distribution you have, too.
Please note that the "cups-support@cups.org" email address goes
to the CUPS developers; they are busy people, so your email may
go unanswered for days or weeks. In general, only general build
or distribution problems will actually get answered - for
end-user support see the "README.txt" for a summary of the
resources available.
+1 -1
Ver Arquivo
@@ -30,6 +30,7 @@ AR = @AR@
AWK = @AWK@
CC = @LIBTOOL@ @CC@
CHMOD = @CHMOD@
CHOWN = @CHOWN@
CP = @CP@
CXX = @LIBTOOL@ @CXX@
DSO = @DSO@
@@ -87,7 +88,6 @@ LIBS = $(LINKCUPS) $(NETLIBS) @LIBS@
NETLIBS = @NETLIBS@
OPTIM = @OPTIM@
OPTIONS =
SSLLIBS = @SSLLIBS@
#
# Directories...
+7 -10
Ver Arquivo
@@ -75,7 +75,7 @@ install:
echo Installing in templates...
(cd templates; $(MAKE) $(MFLAGS) install)
echo Installing startup script...
if test "x$(INITDIR)" != "x"; then \
if test "x$INITDIR" != "x"; then \
$(MKDIR) $(prefix)/$(INITDIR)/init.d; \
$(RM) $(prefix)/$(INITDIR)/init.d/cups; \
$(INSTALL_SCRIPT) cups.sh $(prefix)/$(INITDIR)/init.d/cups; \
@@ -86,9 +86,6 @@ install:
$(MKDIR) $(prefix)/$(INITDIR)/rc3.d; \
$(RM) $(prefix)/$(INITDIR)/rc3.d/S99cups; \
ln -s $(INITDDIR)/cups $(prefix)/$(INITDIR)/rc3.d/S99cups; \
$(MKDIR) $(prefix)/$(INITDIR)/rc5.d; \
$(RM) $(prefix)/$(INITDIR)/rc5.d/S99cups; \
ln -s $(INITDDIR)/cups $(prefix)/$(INITDIR)/rc5.d/S99cups; \
fi
#
@@ -97,12 +94,12 @@ install:
EPMFLAGS = -v \
BINDIR=$(BINDIR) DATADIR=$(DATADIR) \
DOCDIR=$(DOCDIR) INCLUDEDIR=$(INCLUDEDIR) \
LIBDIR=$(LIBDIR) LOCALEDIR=$(LOCALEDIR) \
LOGDIR=$(LOGDIR) MANDIR=$(MANDIR) \
PAMDIR=$(PAMDIR) REQUESTS=$(REQUESTS) \
SBINDIR=$(SBINDIR) SERVERBIN=$(SERVERBIN) \
SERVERROOT=$(SERVERROOT)
DOCDIR=$(DOCDIR) ESP_ROOT=$(ESP_ROOT) \
INCLUDEDIR=$(INCLUDEDIR) LIBDIR=$(LIBDIR) \
LOCALEDIR=$(LOCALEDIR) LOGDIR=$(LOGDIR) \
MANDIR=$(MANDIR) PAMDIR=$(PAMDIR) \
REQUESTS=$(REQUESTS) SBINDIR=$(SBINDIR) \
SERVERBIN=$(SERVERBIN) SERVERROOT=$(SERVERROOT)
epm:
epm $(EPMFLAGS) cups
+127 -137
Ver Arquivo
@@ -1,59 +1,52 @@
README - CUPS v1.1.5 - 12/20/2000
README - CUPS v1.1.4 - 10/04/2000
---------------------------------
Looking for compile instructions? Read the file "INSTALL.txt"
instead...
INTRODUCTION
CUPS provides a portable printing layer for UNIX(r)-based
operating systems. It has been developed by Easy Software
Products to promote a standard printing solution for all UNIX
vendors and users. CUPS provides the System V and Berkeley
command-line interfaces.
CUPS provides a portable printing layer for UNIX(r)-based operating
systems. It has been developed by Easy Software Products to promote a
standard printing solution for all UNIX vendors and users. CUPS
provides the System V and Berkeley command-line interfaces.
CUPS uses the Internet Printing Protocol ("IPP") as the basis
for managing print jobs and queues. The Line Printer Daemon
("LPD") Server Message Block ("SMB"), and AppSocket (a.k.a.
JetDirect) protocols are also supported with reduced
functionality. CUPS adds network printer browsing and
PostScript Printer Description ("PPD") based printing options to
support real-world printing under UNIX.
CUPS uses the Internet Printing Protocol ("IPP") as the basis for
managing print jobs and queues. The Line Printer Daemon ("LPD") Server
Message Block ("SMB"), and AppSocket (a.k.a. JetDirect) protocols are
also supported with reduced functionality. CUPS adds network printer
browsing and PostScript Printer Description ("PPD") based printing
options to support real-world printing under UNIX.
CUPS also includes a customized version of GNU Ghostscript
(currently based off GNU Ghostscript 5.50) and an image file RIP
that are used to support non-PostScript printers. Sample
drivers for HP and EPSON printers are included that use these
filters.
CUPS also includes a customized version of GNU Ghostscript (currently
based off GNU Ghostscript 5.50) and an image file RIP that are used to
support non-PostScript printers. Sample drivers for HP and EPSON
printers are included that use these filters.
Drivers for over 2300 printers are provided with our ESP Print
Pro software, available at:
Drivers for over 2300 printers are provided with our ESP Print Pro
software, available at:
http://www.easysw.com/printpro
CUPS is licensed under the GNU General Public License and GNU
Library General Public License. Please contact Easy Software
Products for commercial support and "binary distribution"
rights.
CUPS is licensed under the GNU General Public License and GNU Library
General Public License. Please contact Easy Software Products for
commercial support and "binary distribution" rights.
SYSTEM REQUIREMENTS
Binary distributions require a minimum of 10MB of free disk
space. We do not recommend using CUPS on a workstation with less
than 32MB of RAM or a PC with less than 16MB of RAM.
Binary distributions require a minimum of 10MB of free disk space. We
do not recommend using CUPS on a workstation with less than 32MB of RAM
or a PC with less than 16MB of RAM.
If you are installing from source you'll need ANSI-compliant C
and C++ compilers and optionally one or more image file support
libraries. Complete source installation instructions can be
found in the file "INSTALL.txt".
If you are installing from source you'll need ANSI-compliant C and C++
compilers and optionally one or more image file support libraries.
Complete source installation instructions can be found in the CUPS
System Administrator's Manual in the files "doc/sam.html" or
"doc/sam.pdf".
SOFTWARE REQUIREMENTS
The following operating system software is required to install
one of the binary distributions from Easy Software Products:
The following operating system software is required to install one of
the binary distributions from Easy Software Products:
- Digital UNIX (aka OSF1 aka Compaq Tru64 UNIX) 4.0 or higher
- HP-UX 10.20 or higher
@@ -64,104 +57,77 @@ one of the binary distributions from Easy Software Products:
INSTALLING "PORTABLE" CUPS DISTRIBUTIONS
We are currently distributing "portable" CUPS binary
distributions in TAR format with installation and removal
scripts generated by our ESP Package Manager (EPM) software,
which is available from:
We are currently distributing "portable" CUPS binary distributions in
TAR format with installation and removal scripts generated by our ESP
Package Manager (EPM) software, which is available from:
http://www.easysw.com/epm
WARNING: Installing CUPS will overwrite your existing printing
system. Backup files are made by the installation script and
restored by the removal script, so if you experience problems
you should be able to remove the CUPS software to restore your
previous configuration. However, Easy Software Products makes
no warranty for this and will not be liable for any lost
revenues, etc.
WARNING: Installing CUPS will overwrite your existing printing system.
Backup files are made by the installation script and restored by the
removal script, so if you experience problems you should be able to
remove the CUPS software to restore your previous configuration.
However, Easy Software Products makes no warranty for this and will not
be liable for any lost revenues, etc.
To install the CUPS software you will need to be logged in as
root (doing an "su" is good enough). Once you are the root
user, run the installation script with:
To install the CUPS software you will need to be logged in as root
(doing an "su" is good enough). Once you are the root user, run the
installation script with:
./cups.install ENTER
After asking you a few yes/no questions the CUPS software will
be installed and the scheduler will be started automatically.
After asking you a few yes/no questions the CUPS software will be
installed and the scheduler will be started automatically.
INSTALLING HOST-SPECIFIC (RPM, DEBIAN, ETC.) DISTRIBUTIONS
The host-specific distributions use the operating system
software installation tools. To install a host-specific
distribution please consult the CUPS Software Administrators
Manual or your operating system documentation.
The host-specific distributions use the operating system software
installation tools. To install a host-specific distribution please
consult the CUPS Software Administrators Manual or your operating
system documentation.
READING THE DOCUMENTATION
Once you have installed the software you can access the
documentation (and a bunch of other stuff) on-line at:
Once you have installed the software you can access the documentation
(and a bunch of other stuff) on-line at:
http://localhost:631
If you're having trouble getting that far, the documentation is
located in the "/usr/share/doc/cups" directory in the binary
distributions, and under the "doc" directory in the source
archives.
If you're having trouble getting that far, the documentation is located
in the "/usr/share/doc/cups" directory in the binary distributions, and
under the "doc" directory in the source archives.
Please read the documentation before asking questions.
GETTING SUPPORT AND OTHER RESOURCES
If you have problems, READ THE DOCUMENTATION FIRST!
You can subscribe to the CUPS mailing list by sending a message
containing "subscribe cups" to majordomo@cups.org. This list is
provided to discuss problems, questions, and improvements to the
CUPS software. New releases of CUPS are announced to this list
as well.
Commercial support (with a guaranteed response time) is
available from Easy Software Products. For more information
see:
http://www.easysw.com/cups
See the CUPS web site at "http://www.cups.org" for other site
links.
SETTING UP PRINTER QUEUES USING YOUR WEB BROWSER
CUPS 1.1 includes a new web-based administration tool that
allows you to manage printers, classes, and jobs on your
server. To access the printer administration tools open the
following URL in your browser:
CUPS 1.1 includes a new web-based administration tool that allows you
to manage printers, classes, and jobs on your server. To access the
printer administration tools open the following URL in your browser:
http://localhost:631/admin
You will be asked for the administration password (root or any
other user in the sys/system/root group on your system) and then
shown a menu of available functions.
You will be asked for the administration password (root or any other
user in the sys/system/root group on your system) and then shown a
menu of available functions.
DO NOT use the hostname for your machine - it will not work with
the default CUPS configuration. To enable administration access
on other addresses, consult the CUPS Software Administrators
Manual.
DO NOT use the hostname for your machine - it will not work with the
default CUPS configuration. To enable administration access on other
addresses, consult the CUPS Software Administrators Manual.
SETTING UP PRINTER QUEUES FROM THE COMMAND-LINE
CUPS works best with PPD (PostScript Printer Description)
files. In a pinch you can also use System V style printer
interface scripts.
CUPS works best with PPD (PostScript Printer Description) files. In a
pinch you can also use System V style printer interface scripts.
Six sample PPD files are provided with this distribution that
utilize the PostScript and image file RIPs and the sample EPSON
and HP printer drivers. To add the sample DeskJet driver to the
system for a printer connected to the parallel port, use one of
the following commands:
Six sample PPD files are provided with this distribution that utilize
the PostScript and image file RIPs and the sample EPSON and HP printer
drivers. To add the sample DeskJet driver to the system for a printer
connected to the parallel port, use one of the following commands:
Digital UNIX:
@@ -197,67 +163,91 @@ Similarly, for the other sample drivers you can use:
EPSON 9-pin Series epson9.ppd
EPSON 24-pin Series epson24.ppd
These sample drivers provide basic printing capabilities, but
generally do not exercise the full potential of the printers or
CUPS. For commercial printer drivers check out our ESP Print
Pro software at:
These sample drivers provide basic printing capabilities, but generally
do not exercise the full potential of the printers or CUPS. For
commercial printer drivers check out our ESP Print Pro software at:
http://www.easysw.com/printpro
PRINTING FILES
CUPS provides both the System V "lp" and Berkeley "lpr" commands
for printing:
CUPS provides both the System V "lp" and Berkeley "lpr" commands for
printing:
lp filename
lpr filename
Both the "lp" and "lpr" commands support printing options for
the driver:
Both the "lp" and "lpr" commands support printing options for the
driver:
lp -omedia=A4 -oresolution=600dpi filename
lpr -omedia=A4 -oresolution=600dpi filename
CUPS recognizes many types of images files as well as PDF,
PostScript, HP-GL/2, and text files, so you can print those
files directly rather than through an application.
CUPS recognizes many types of images files as well as PDF, PostScript,
HP-GL/2, and text files, so you can print those files directly rather
than through an application.
If you have an application that generates output specifically
for your printer then you need to use the "-oraw" or "-l"
options:
If you have an application that generates output specifically for your
printer then you need to use the "-oraw" or "-l" options:
lp -oraw filename
lpr -l filename
This will prevent the filters from misinterpreting your print
file.
This will prevent the filters from misinterpreting your print file.
REPORTING PROBLEMS
If you have problems, READ THE DOCUMENTATION FIRST! If the
documentation does not solve your problems please send an email to
cups-support@cups.org. Include your operating system and version,
compiler and version, and any errors or problems you've run into. The
/var/log/error_log file should also be sent, as it often helps to
determine the cause of your problem.
If you are running a version of Linux, be sure to provide the Linux
distribution you have, too.
Please note that the "cups-support@cups.org" email address goes to the
CUPS developers; they are busy people, so your email may go unanswered
for days or weeks. Commercial support (with a guaranteed response
time) is available from Easy Software Products.
OTHER RESOURCES
See the CUPS web site at "http://www.cups.org" for other site links.
You can subscribe to the CUPS mailing list by sending a message
containing "subscribe cups" to majordomo@cups.org. This list is
provided to discuss problems, questions, and improvements to the CUPS
software. New releases of CUPS are announced to this list as well.
LEGAL STUFF
CUPS is Copyright 1993-2000 by Easy Software Products. CUPS,
the CUPS logo, and the Common UNIX Printing System are the
trademark property of Easy Software Products.
CUPS is Copyright 1993-2000 by Easy Software Products. CUPS, the CUPS
logo, and the Common UNIX Printing System are the trademark property of
Easy Software Products.
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
The PostScript RIP software (pstoraster) is based on the GNU
Ghostscript 5.50 core, Copyright 1986-1998 by Aladdin
Enterprises.
Ghostscript 5.50 core, Copyright 1986-1998 by Aladdin Enterprises.
The PDF filter (pdftops) is based on the Xpdf 0.90 software,
Copyright 1996-1999 by Derek B. Noonburg.
The PDF filter (pdftops) is based on the Xpdf 0.90 software, Copyright
1996-1999 by Derek B. Noonburg.
This software is based in part on the work of the Independent
JPEG Group.
This software is based in part on the work of the Independent JPEG
Group.
CUPS is provided under the terms of the GNU General Public
License and GNU Library General Public License. This program is
distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the "LICENSE.html",
"LICENSE.txt", or "cups.license" files for more information.
CUPS is provided under the terms of the GNU General Public License and
GNU Library General Public License. This program is distributed in the
hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the "LICENSE.html", "LICENSE.txt", or "cups.license" files
for more information.
For commercial licensing information, please contact:
@@ -270,7 +260,7 @@ For commercial licensing information, please contact:
Email: cups-info@cups.org
WWW: http://www.cups.org
Note that commercial licensors may also require a license from
Artifex Software Inc. which handles commercial licensing of the
Ghostscript software, and from Derek B. Noonburg who developed
the Xpdf software used to print PDF files.
Note that commercial licensors may also require a license from Artifex
Software Inc. which handles commercial licensing of the Ghostscript
software, and from Derek B. Noonburg who developed the Xpdf software
used to print PDF files.
+1 -1
Ver Arquivo
@@ -248,7 +248,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
* Do the request...
*/
for (response = NULL, ipp_status = IPP_ERROR;;)
for (;;)
{
/*
* POST the request, retrying as needed...
+1 -3
Ver Arquivo
@@ -269,10 +269,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
void
list_devices(void)
{
#if defined(__hpux) || defined(__sgi) || defined(__sun)
static char *funky_hex = "0123456789abcdefghijklmnopqrstuvwxyz";
/* Funky hex numbering used for some devices */
#endif /* __hpux || __sgi || __sun */
#ifdef __linux
int i; /* Looping var */
@@ -565,7 +563,7 @@ list_devices(void)
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d\"\n", device, i + 1);
}
}
#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
#elif defined(FreeBSD) || defined(OpenBSD) || defined(NetBSD)
int i; /* Looping var */
int fd; /* File descriptor */
char device[255]; /* Device filename */
+2 -143
Ver Arquivo
@@ -38,19 +38,12 @@
#include <cups/string.h>
#include <signal.h>
#ifdef __hpux
# include <sys/modem.h>
#endif /* __hpux */
#if defined(WIN32) || defined(__EMX__)
# include <io.h>
#else
# include <unistd.h>
# include <fcntl.h>
# include <termios.h>
# ifdef HAVE_SYS_IOCTL_H
# include <sys/ioctl.h>
# endif /* __linux */
#endif /* WIN32 || __EMX__ */
#ifdef __sgi
@@ -64,14 +57,6 @@
# endif /* !INV_EPP_ECP_PLP */
#endif /* __sgi */
#ifndef CRTSCTS
# ifdef CNEW_RTSCTS
# define CRTSCTS CNEW_RTSCTS
# else
# define CRTSCTS 0
# endif /* CNEW_RTSCTS */
#endif /* !CRTSCTS */
/*
* Local functions...
@@ -107,8 +92,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
int wbytes; /* Number of bytes written */
size_t nbytes, /* Number of bytes read */
tbytes; /* Total number of bytes written */
int dtrdsr; /* Do dtr/dsr flow control? */
int bufsize; /* Size of output buffer for writes */
char buffer[8192], /* Output buffer */
*bufptr; /* Pointer into buffer */
struct termios opts; /* Parallel port options */
@@ -203,9 +186,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
opts.c_lflag &= ~(ICANON | ECHO | ISIG); /* Raw mode */
bufsize = 480; /* 9600 baud / 10 bits/char / 2Hz */
dtrdsr = 0; /* No dtr/dsr flow control */
if (options != NULL)
while (*options)
{
@@ -245,8 +225,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
* Set the baud rate...
*/
bufsize = atoi(value) / 20;
#if B19200 == 19200
cfsetispeed(&opts, atoi(value));
cfsetospeed(&opts, atoi(value));
@@ -277,18 +255,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
cfsetispeed(&opts, B38400);
cfsetospeed(&opts, B38400);
break;
#ifdef B57600
case 57600 :
cfsetispeed(&opts, B57600);
cfsetospeed(&opts, B57600);
break;
#endif /* B57600 */
#ifdef B115200
case 115200 :
cfsetispeed(&opts, B115200);
cfsetospeed(&opts, B115200);
break;
#endif /* B115200 */
default :
fprintf(stderr, "WARNING: Unsupported baud rate %s!\n", value);
break;
@@ -335,36 +301,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
else if (strcasecmp(value, "none") == 0)
opts.c_cflag &= ~PARENB;
}
else if (strcasecmp(name, "flow") == 0)
{
/*
* Set flow control...
*/
if (strcasecmp(value, "none") == 0)
{
opts.c_iflag &= ~(IXON | IXOFF | IXANY);
opts.c_cflag &= ~CRTSCTS;
}
else if (strcasecmp(value, "soft") == 0)
{
opts.c_iflag |= IXON | IXOFF | IXANY;
opts.c_cflag &= ~CRTSCTS;
}
else if (strcasecmp(value, "hard") == 0 ||
strcasecmp(value, "rtscts") == 0)
{
opts.c_iflag &= ~(IXON | IXOFF | IXANY);
opts.c_cflag |= CRTSCTS;
}
else if (strcasecmp(value, "dtrdsr") == 0)
{
opts.c_iflag &= ~(IXON | IXOFF | IXANY);
opts.c_cflag &= ~CRTSCTS;
dtrdsr = 1;
}
}
}
tcsetattr(fd, TCSANOW, &opts);
@@ -391,9 +327,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
* Finally, send the print file...
*/
if (bufsize > sizeof(buffer))
bufsize = sizeof(buffer);
while (copies > 0)
{
copies --;
@@ -404,38 +337,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
rewind(fp);
}
if (dtrdsr)
{
/*
* Check the port and sleep until DSR is set...
*/
int status;
if (!ioctl(fd, TIOCMGET, &status))
if (!(status & TIOCM_DSR))
{
/*
* Wait for DSR to go high...
*/
fputs("DEBUG: DSR is low; waiting for device...\n", stderr);
do
{
sleep(1);
if (ioctl(fd, TIOCMGET, &status))
break;
}
while (!(status & TIOCM_DSR));
fputs("DEBUG: DSR is high; writing to device...\n", stderr);
}
}
tbytes = 0;
while ((nbytes = fread(buffer, 1, bufsize, fp)) > 0)
while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
{
/*
* Write the print data to the printer...
@@ -484,10 +387,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
void
list_devices(void)
{
#if defined(__hpux) || defined(__sgi) || defined(__sun) || defined(__FreeBSD__) || defined(__OpenBSD__)
static char *funky_hex = "0123456789abcdefghijklmnopqrstuvwxyz";
/* Funky hex numbering used for some devices */
#endif /* __hpux || __sgi || __sun || __FreeBSD__ || __OpenBSD__ */
#ifdef __linux
int i; /* Looping var */
@@ -616,13 +517,8 @@ list_devices(void)
{
sprintf(device, "/dev/cua/%c", 'a' + i);
if (access(device, 0) == 0)
#ifdef B115200
printf("serial serial:%s?baud=115200 \"Unknown\" \"Serial Port #%d\"\n",
device, i + 1);
#else
printf("serial serial:%s?baud=38400 \"Unknown\" \"Serial Port #%d\"\n",
device, i + 1);
#endif /* B115200 */
}
/*
@@ -718,7 +614,7 @@ list_devices(void)
printf("serial serial:%s?baud=38400 \"Unknown\" \"Serial Port #%d\"\n",
device, i + 1);
}
#elif defined(__FreeBSD__) || defined(__OpenBSD__)
#elif defined(FreeBSD) || defined(OpenBSD) || defined(NetBSD)
int i, j; /* Looping vars */
int fd; /* File descriptor */
char device[255]; /* Device filename */
@@ -800,43 +696,6 @@ list_devices(void)
device, i + 1);
}
}
+#elif defined(__NetBSD__)
int i, j; /* Looping vars */
int fd; /* File descriptor */
char device[255]; /* Device filename */
/*
* Standard serial ports...
*/
for (i = 0; i < 4; i ++)
{
sprintf(device, "/dev/tty%02d", i);
if ((fd = open(device, O_WRONLY | O_NOCTTY | O_NDELAY)) >= 0)
{
close(fd);
printf("serial serial:%s?baud=115200 \"Unknown\" \"Serial Port #%d\"\n",
device, i + 1);
}
}
/*
* Cyclades-Z ports...
*/
for (i = 0; i < 16; i ++) /* Should be up to 65536 boards... */
for (j = 0; j < 64; j ++)
{
sprintf(device, "/dev/ttyCZ%02d%02d", i, j);
if ((fd = open(device, O_WRONLY | O_NOCTTY | O_NDELAY)) >= 0)
{
close(fd);
printf("serial serial:%s?baud=115200 \"Unknown\" \"Cyclades #%d Serial Prt #%d\"\n",
device, i, j + 1);
}
}
#endif
}
+1 -1
Ver Arquivo
@@ -137,7 +137,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
if ((hostaddr = gethostbyname(hostname)) == NULL)
{
fprintf(stderr, "ERROR: Unable to locate printer \'%s\' - %s\n",
fprintf(stderr, "ERROR: Unable to locate printer \'%s\' - %s",
hostname, strerror(errno));
return (1);
}
+3 -22
Ver Arquivo
@@ -276,8 +276,6 @@ list_devices(void)
if ((fd = open("/dev/usb/lp0", O_WRONLY)) >= 0)
close(fd); /* 2.3.x and 2.4.x */
else if ((fd = open("/dev/usb/usblp0", O_WRONLY)) >= 0)
close(fd); /* Mandrake 7.x */
else if ((fd = open("/dev/usblp0", O_WRONLY)) >= 0)
close(fd); /* 2.2.x */
@@ -333,17 +331,8 @@ list_devices(void)
* We were processing a printer device; send the info out...
*/
sprintf(device, "/dev/usb/lp%d", i);
if (access(device, 0))
{
sprintf(device, "/dev/usb/usblp%d", i);
if (access(device, 0))
sprintf(device, "/dev/usblp%d", i);
}
printf("direct usb:%s \"%s %s\" \"USB Printer #%d\"\n",
device, make, model, i + 1);
printf("direct usb:/dev/usb/lp%d \"%s %s\" \"USB Printer #%d\"\n",
i, make, model, i + 1);
i ++;
@@ -369,13 +358,6 @@ list_devices(void)
printf("direct usb:%s \"Unknown\" \"USB Printer #%d\"\n", device, i + 1);
}
sprintf(device, "/dev/usb/usblp%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
{
close(fd);
printf("direct usb:%s \"Unknown\" \"USB Printer #%d\"\n", device, i + 1);
}
sprintf(device, "/dev/usblp%d", i);
if ((fd = open(device, O_WRONLY)) >= 0)
{
@@ -388,12 +370,11 @@ list_devices(void)
#elif defined(__sun)
#elif defined(__hpux)
#elif defined(__osf)
#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
#elif defined(FreeBSD) || defined(OpenBSD) || defined(NetBSD)
int i; /* Looping var */
int fd; /* File descriptor */
char device[255]; /* Device filename */
for (i = 0; i < 3; i ++)
{
sprintf(device, "/dev/ulpt%d", i);
+9 -24
Ver Arquivo
@@ -216,8 +216,7 @@ show_status(http_t *http, /* I - HTTP connection to server */
ipp_t *request, /* IPP Request */
*response, /* IPP Response */
*jobs; /* IPP Get Jobs response */
ipp_attribute_t *attr, /* Current attribute */
*jattr; /* Current job attribute */
ipp_attribute_t *attr; /* Current attribute */
cups_lang_t *language; /* Default language */
char *printer, /* Printer name */
*device; /* Device URI */
@@ -229,13 +228,6 @@ show_status(http_t *http, /* I - HTTP connection to server */
int match; /* Non-zero if this job matches */
char printer_uri[HTTP_MAX_URI];
/* Printer URI */
static const char *requested[] =
{ /* Requested attributes */
"printer-name",
"device-uri",
"printer-state",
"printer-is-accepting-jobs"
};
DEBUG_printf(("show_status(%08x, %08x)\n", http, dests));
@@ -258,15 +250,11 @@ show_status(http_t *http, /* I - HTTP connection to server */
language = cupsLangDefault();
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes", sizeof(requested) / sizeof(requested[0]),
NULL, requested);
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
/*
* Do the request and get back a response...
@@ -424,16 +412,13 @@ show_status(http_t *http, /* I - HTTP connection to server */
snprintf(printer_uri, sizeof(printer_uri),
"ipp://localhost/printers/%s", printer);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, printer_uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes", NULL, "job-id");
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, printer_uri);
if ((jobs = cupsDoRequest(http, request, "/jobs/")) != NULL)
{
for (jattr = jobs->attrs; jattr != NULL; jattr = jattr->next)
if (jattr->name && strcmp(jattr->name, "job-id") == 0)
for (attr = jobs->attrs; attr != NULL; attr = attr->next)
if (strcmp(attr->name, "job-id") == 0)
jobcount ++;
ippDelete(jobs);
+6 -6
Ver Arquivo
@@ -365,7 +365,7 @@ show_jobs(http_t *http, /* I - HTTP connection to server */
#ifdef __osf__
puts("Rank Owner Pri Job Files Total Size");
#else
puts("Rank Owner Job File(s) Total Size");
puts("Rank Owner Job Files Total Size");
#endif /* __osf__ */
jobcount ++;
@@ -378,7 +378,7 @@ show_jobs(http_t *http, /* I - HTTP connection to server */
strcpy(rankstr, "active");
else
{
snprintf(rankstr, sizeof(rankstr), "%d%s", rank, ranks[rank % 10]);
sprintf(rankstr, "%d%s", rank, ranks[rank % 10]);
rank ++;
}
@@ -395,15 +395,15 @@ show_jobs(http_t *http, /* I - HTTP connection to server */
namestr[sizeof(namestr) - 1] = '\0';
}
printf("%s: %-34.34s[job %d localhost]\n", jobuser, rankstr, jobid);
printf(" %-40.40s%d bytes\n", namestr, jobsize);
printf("%s: %-31s [job %d localhost]\n", jobuser, rankstr, jobid);
printf(" %-31.31s %d bytes\n", namestr, jobsize);
}
else
#ifdef __osf__
printf("%-6s %-10.10s %-4d %-10d %-27.27s %d bytes\n", rankstr, jobuser,
jobpriority, jobid, jobname, jobsize);
#else
printf("%-7s %-8.8s%-8d%-32.32s%d bytes\n", rankstr, jobuser,
printf("%-6s %-10.10s %-15d %-27.27s %d bytes\n", rankstr, jobuser,
jobid, jobname, jobsize);
#endif /* __osf */
@@ -468,7 +468,7 @@ show_printer(http_t *http, /* I - HTTP connection to server */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
snprintf(uri, sizeof(uri), "ipp://localhost/printers/%s", dest);
sprintf(uri, "ipp://localhost/printers/%s", dest);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
+6 -9
Ver Arquivo
@@ -699,7 +699,7 @@ do_am_printer(http_t *http, /* I - HTTP connection */
int bytes; /* Number of bytes */
snprintf(uri, sizeof(uri), "/printers/%s.ppd", name);
sprintf(uri, "/printers/%s.ppd", name);
cupsTempFile(filename, sizeof(filename));
if (httpGet(http, uri))
@@ -847,8 +847,7 @@ do_am_printer(http_t *http, /* I - HTTP connection */
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME, "ppd-name",
NULL, cgiGetVariable("PPD_NAME"));
strncpy(uri, cgiGetVariable("DEVICE_URI"), sizeof(uri) - 1);
uri[sizeof(uri) - 1] = '\0';
strcpy(uri, cgiGetVariable("DEVICE_URI"));
if (strncmp(uri, "serial:", 7) == 0)
{
/*
@@ -858,10 +857,9 @@ do_am_printer(http_t *http, /* I - HTTP connection */
if ((uriptr = strchr(uri, '?')) == NULL)
uriptr = uri + strlen(uri);
snprintf(uriptr, sizeof(uri) - (uriptr - uri),
"?baud=%s+bits=%s+parity=%s+flow=%s",
cgiGetVariable("BAUDRATE"), cgiGetVariable("BITS"),
cgiGetVariable("PARITY"), cgiGetVariable("FLOW"));
sprintf(uriptr, "?baud=%s+bits=%s+parity=%s+flow=%s",
cgiGetVariable("BAUDRATE"), cgiGetVariable("BITS"),
cgiGetVariable("PARITY"), cgiGetVariable("FLOW"));
}
ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_URI, "device-uri",
@@ -1128,8 +1126,7 @@ do_config_printer(http_t *http, /* I - HTTP connection */
* Get default option name...
*/
strncpy(keyword, line + 8, sizeof(keyword) - 1);
keyword[sizeof(keyword) - 1] = '\0';
strcpy(keyword, line + 8);
for (keyptr = keyword; *keyptr; keyptr ++)
if (*keyptr == ':' || isspace(*keyptr))
+6 -6
Ver Arquivo
@@ -110,14 +110,14 @@ cgiCopyTemplateLang(FILE *out, /* I - Output file */
* See if we have a template file for this language...
*/
snprintf(filename, sizeof(filename), "%s/%s/%s", directory, locale, tmpl);
sprintf(filename, "%s/%s/%s", directory, locale, tmpl);
if (access(filename, 0))
{
locale[2] = '\0';
snprintf(filename, sizeof(filename), "%s/%s/%s", directory, locale, tmpl);
sprintf(filename, "%s/%s/%s", directory, locale, tmpl);
if (access(filename, 0))
snprintf(filename, sizeof(filename), "%s/%s", directory, tmpl);
sprintf(filename, "%s/%s", directory, tmpl);
}
/*
@@ -285,7 +285,7 @@ cgi_copy(FILE *out, /* I - Output file */
*nameptr++ = '\0';
if ((value = cgiGetArray(name, atoi(nameptr) - 1)) == NULL)
{
snprintf(outval, sizeof(outval), "{%s}", name);
sprintf(outval, "{%s}", name);
outptr = outval;
}
else
@@ -293,7 +293,7 @@ cgi_copy(FILE *out, /* I - Output file */
}
else if ((value = cgiGetArray(name, element)) == NULL)
{
snprintf(outval, sizeof(outval), "{%s}", name);
sprintf(outval, "{%s}", name);
outptr = outval;
}
else
@@ -389,7 +389,7 @@ cgi_copy(FILE *out, /* I - Output file */
}
}
else if ((innerval = cgiGetArray(innername, element)) == NULL)
snprintf(s, sizeof(s), "{%s}", innername);
sprintf(s, "{%s}", innername);
else
{
strncpy(s, innerval, sizeof(compare) - (s - compare) - 1);
+1 -2
Ver Arquivo
@@ -611,8 +611,7 @@ cgi_initialize_string(const char *data) /* I - Form data string */
if ((s = strrchr(name, '-')) != NULL && isdigit(s[1]))
{
*s++ = '\0';
if (value[0])
cgiSetArray(name, atoi(s) - 1, value);
cgiSetArray(name, atoi(s) - 1, value);
}
else if (cgiGetVariable(name) != NULL)
cgiSetArray(name, cgiGetSize(name), value);
+7 -22
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: client.conf 1485 2000-12-20 13:41:17Z mike $"
# "$Id: client.conf 969 2000-03-10 16:56:46Z mike $"
#
# Sample client configuration file for the Common UNIX Printing System
# (CUPS).
@@ -27,39 +27,24 @@
# #
# This is the CUPS client configuration file. This file is used to #
# define client-specific parameters, such as the default server or #
# default encryption settings. #
# default printer. #
# #
########################################################################
#
# ServerName: the hostname of your server. By default CUPS will use the
# hostname of the system or the value of the CUPS_SERVER environment
# variable.
# hostname of the system.
#
#ServerName myhost.domain.com
#
# Encryption: whether or not to use encryption; this depends on having
# the OpenSSL library linked into the CUPS library.
#
# Possible values:
#
# Always - Always use encryption (SSL)
# Never - Never use encryption
# Required - Use TLS encryption upgrade
# IfRequested - Use encryption if the server requests it
#
# The default value is "IfRequested". This parameter can also be set
# using the CUPS_ENCRYPTION environment variable.
# DefaultPrinter: the default printer (or class) that clients should use.
#
#Encryption Always
#Encryption Never
#Encryption Required
#Encryption IfRequested
#DefaultPrinter myprinter
#DefaultPrinter myprinter@host
#
# End of "$Id: client.conf 1485 2000-12-20 13:41:17Z mike $".
# End of "$Id: client.conf 969 2000-03-10 16:56:46Z mike $".
#
+17 -79
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cupsd.conf 1485 2000-12-20 13:41:17Z mike $"
# "$Id: cupsd.conf 1396 2000-09-29 17:42:56Z mike $"
#
# Sample configuration file for the Common UNIX Printing System (CUPS)
# scheduler.
@@ -122,8 +122,7 @@
# LogLevel: controls the number of messages logged to the ErrorLog
# file and can be one of the following:
#
# debug2 Log everything.
# debug Log almost everything.
# debug Log everything.
# info Log all requests and state changes.
# warn Log errors and warnings.
# error Log only errors.
@@ -164,20 +163,6 @@ LogLevel info
#PreserveJobFiles No
#
# AutoPurgeJobs: automatically purge jobs when not needed for quotas.
# Default is No.
#
#AutoPurgeJobs No
#
# MaxJobs: maximum number of jobs to keep in memory (active and completed.)
# Default is 0 (no limit.)
#
#MaxJobs 0
#
# Printcap: the name of the printcap file. Default is /etc/printcap.
# Leave blank to disable printcap file generation.
@@ -214,25 +199,6 @@ LogLevel info
#ServerRoot /etc/cups
########
######## Encryption Support
########
#
# ServerCertificate: the file to read containing the server's certificate.
# Defaults to "/etc/cups/ssl/server.crt".
#
#ServerCertificate /etc/cups/ssl/server.crt
#
# ServerKey: the file to read containing the server's key.
# Defaults to "/etc/cups/ssl/server.key".
#
#ServerKey /etc/cups/ssl/server.key
########
######## Filter Options
########
@@ -297,13 +263,8 @@ LogLevel info
# Listen 1.2.3.4
# Listen 1.2.3.4:631
#
# NOTE: Unfortunately, most web browsers don't support TLS or HTTP Upgrades
# for encryption. If you want to support web-based encryption you'll
# probably need to listen on port 443 (the "https" port...)
#
#Port 80
#Port 443
Port 631
#
@@ -353,30 +314,12 @@ Port 631
########
#
# Browsing: whether or not to broadcast and/or listen for CUPS printer
# information on the network. Enabled by default.
# Browsing: whether or not to broadcast printer information to
# other CUPS servers. Enabled by default.
#
#Browsing On
#
# BrowseAddress: specifies a broadcast address to be used. By
# default browsing information is not sent!
#
# Note: HP-UX does not properly handle broadcast unless you have a
# Class A, B, C, or D netmask (i.e. no CIDR support).
#
# Note: Using the "global" broadcast address (255.255.255.255) will
# activate a Linux demand-dial link with the default configuration.
# If you have a LAN as well as the dial-up link, use the LAN's
# broadcast address.
#
#BrowseAddress x.y.z.255
#BrowseAddress x.y.255.255
#BrowseAddress x.255.255.255
#BrowseAddress 255.255.255.255
#
# BrowseShortNames: whether or not to use "short" names for remote printers
# when possible (e.g. "printer" instead of "printer@host".) Enabled by
@@ -385,6 +328,18 @@ Port 631
#BrowseShortNames Yes
#
# BrowseAddress: specifies a broadcast address to be used. By
# default browsing information is broadcast to all active interfaces.
#
# Note: HP-UX 10.20 and earlier do not properly handle broadcast unless
# you have a Class A, B, C, or D netmask (i.e. no CIDR support).
#
#BrowseAddress x.y.z.255
#BrowseAddress x.y.255.255
#BrowseAddress x.255.255.255
#
# BrowseAllow: specifies an address mask to allow for incoming browser
# packets. The default is to allow packets from all addresses.
@@ -541,23 +496,8 @@ Port 631
# The host and domain address require that you enable hostname lookups
# with "HostNameLookups On" above.
#
# Encryption: whether or not to use encryption; this depends on having
# the OpenSSL library linked into the CUPS library and scheduler.
#
# Possible values:
#
# Always - Always use encryption (SSL)
# Never - Never use encryption
# Required - Use TLS encryption upgrade
# IfRequested - Use encryption if the server requests it
#
# The default value is "IfRequested".
#
<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
</Location>
#<Location /classes>
@@ -619,10 +559,8 @@ AuthClass System
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
#Encryption Required
</Location>
#
# End of "$Id: cupsd.conf 1485 2000-12-20 13:41:17Z mike $".
# End of "$Id: cupsd.conf 1396 2000-09-29 17:42:56Z mike $".
#
+4 -8
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.types 1430 2000-11-06 16:39:17Z mike $"
# "$Id: mime.types 1340 2000-09-06 13:53:00Z mike $"
#
# MIME types file for the Common UNIX Printing System (CUPS).
#
@@ -125,13 +125,9 @@ text/plain txt printable(0,1024)
#
application/vnd.cups-form string(0,"<CUPSFORM>")
application/vnd.cups-postscript string(0,<1B>%-12345X) + \
contains(9,512,"LANGUAGE=POSTSCRIPT")
application/vnd.cups-postscript string(0,<1B>%-12345X)
application/vnd.cups-raster string(0,"RaSt") string(0,"tSaR")
application/vnd.cups-raw string(0,<1B>E) \
string(0,<1B>@) \
(string(0,<1B>%-12345X) + \
contains(9,512,"LANGUAGE=PCL"))
application/vnd.cups-raw
########################################################################
#
@@ -145,5 +141,5 @@ application/vnd.cups-raw string(0,<1B>E) \
#application/octet-stream
#
# End of "$Id: mime.types 1430 2000-11-06 16:39:17Z mike $".
# End of "$Id: mime.types 1340 2000-09-06 13:53:00Z mike $".
#
+1 -13
Ver Arquivo
@@ -28,7 +28,7 @@
* Version of software...
*/
#define CUPS_SVERSION "CUPS v1.1.5"
#define CUPS_SVERSION "CUPS v1.1.4"
/*
* Where are files stored?
@@ -130,18 +130,6 @@
#undef HAVE_MALLINFO
#undef HAVE_MALLOC_H
/*
* Do we have the OpenSSL library?
*/
#undef HAVE_LIBSSL
/*
* Do we have <sys/ioctl.h>?
*/
#undef HAVE_SYS_IOCTL_H
/*
* End of "$Id$".
*/
+56 -98
Ver Arquivo
@@ -47,7 +47,6 @@ AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],[i
OPTIM="-g "
fi])
AC_ARG_ENABLE(shared, [ --enable-shared turn on shared libraries [default=yes]])
AC_ARG_ENABLE(ssl, [ --enable-ssl turn on SSL/TLS support [default=no]])
AC_ARG_ENABLE(libtool_unsupported, [ --enable-libtool-unsupported=LIBTOOL_PATH
turn on building with libtool (UNSUPPORTED!) [default=no]],[if eval "test x$enable_libtool_unsupported != xno"; then
LIBTOOL="$enable_libtool_unsupported"
@@ -190,40 +189,6 @@ else
echo "Not using -lnsl since you are running IRIX."
fi)
dnl Encryption support...
SSLLIBS=""
AC_SUBST(SSLLIBS)
if test "$enable_ssl" = "yes"; then
dnl Save the current libraries so the crypto stuff isn't always
dnl included...
SAVELIBS="$LIBS"
dnl Some ELF systems can't resolve all the symbols in libcrypto
dnl if libcrypto was linked against RSAREF, and fail to link the
dnl test program correctly, even though a correct installation
dnl of OpenSSL exists. So we test the linking three times in
dnl case the RSAREF libraries are needed.
for libcrypto in \
"-lcrypto" \
"-lcrypto -lrsaref" \
"-lcrypto -lRSAglue -lrsaref"
do
AC_CHECK_LIB(ssl,SSL_new,
[SSLLIBS="-lssl $libcrypto"
AC_DEFINE(HAVE_LIBSSL)],,
$libcrypto
)
if test "x${SSLLIBS}" != "x"; then
break
fi
done
LIBS="$SAVELIBS"
fi
dnl Save the current libraries since we don't want the image libraries
dnl included with every program...
SAVELIBS="$LIBS"
@@ -271,7 +236,6 @@ AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
AC_CHECK_HEADER(shadow.h,AC_DEFINE(HAVE_SHADOW_H))
AC_CHECK_HEADER(stddef.h,AC_DEFINE(HAVE_STDDEF_H))
AC_CHECK_HEADER(stdlib.h,AC_DEFINE(HAVE_STDLIB_H))
AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
dnl Checks for string functions.
AC_CHECK_FUNCS(strdup)
@@ -296,8 +260,6 @@ AC_CHECK_FUNCS(wait3)
dnl Update compiler options...
if test -n "$GCC"; then
GXX="gcc"
if test -z "$OPTIM"; then
OPTIM="-O2 -g3"
fi
@@ -309,7 +271,7 @@ else
case $uname in
IRIX*)
if test -z "$OPTIM"; then
OPTIM="-O2"
OPTIM="-O2 -g3"
fi
if test $uversion -ge 62; then
OPTIM="$OPTIM -n32 -mips3"
@@ -325,7 +287,7 @@ else
SunOS*)
# Solaris
if test -z "$OPTIM"; then
OPTIM="-xO4"
OPTIM="-O -g3"
fi
if test $PICFLAG = 1; then
OPTIM="-KPIC $OPTIM"
@@ -411,7 +373,7 @@ if test "$datadir" = "\${prefix}/share"; then
datadir="/usr/share"
else
datadir="$prefix/share"
fi
fi
fi
dnl Fix "includedir" variable if it hasn't been specified...
@@ -444,20 +406,11 @@ fi
dnl Fix "mandir" variable...
if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
case "$uname" in
FreeBSD* | NetBSD* | OpenBSD*)
# *BSD
mandir="/usr/share/man"
;;
IRIX*)
# SGI IRIX
mandir="/usr/share/catman"
;;
*)
# All others
mandir="/usr/man"
;;
esac
if test "$uname" = "IRIX"; then
mandir="/usr/share/catman"
else
mandir="/usr/man"
fi
fi
dnl Fix "fontpath" variable...
@@ -492,55 +445,60 @@ AC_SUBST(CAT5EXT)
AC_SUBST(CAT8EXT)
dnl Setup init.d locations...
case "$uname" in
FreeBSD* | NetBSD* | OpenBSD*)
# *BSD
INITDIR=""
INITDDIR=""
;;
if test $prefix = "/"; then
case "$uname" in
FreeBSD* | NetBSD* | OpenBSD*)
# *BSD
INITDIR=""
INITDDIR=""
;;
Linux*)
# Linux seems to choose an init.d directory at random...
if test -d /sbin/init.d; then
# SuSE
INITDIR="/sbin/init.d"
INITDDIR=".."
else
if test -d /etc/rc.d; then
# RedHat
INITDIR="/etc/rc.d"
INITDDIR="../init.d"
Linux*)
# Linux seems to choose an init.d directory at random...
if test -d /sbin/init.d; then
# SuSE
INITDIR="/sbin/init.d"
INITDDIR=".."
else
# Others
INITDIR="/etc"
INITDDIR="../init.d"
if test -d /etc/rc.d; then
# RedHat
INITDIR="/etc/rc.d"
INITDDIR="../init.d"
else
# Others
INITDIR="/etc"
INITDDIR="../init.d"
fi
fi
fi
;;
;;
OSF1* | HP-UX*)
INITDIR="/sbin"
INITDDIR="../init.d"
;;
OSF1* | HP-UX*)
INITDIR="/sbin"
INITDDIR="../init.d"
;;
*)
INITDIR="/etc"
INITDDIR="../init.d"
;;
*)
INITDIR="/etc"
INITDDIR="../init.d"
;;
esac
esac
else
INITDIR="/etc"
INITDDIR="../init.d"
fi
AC_SUBST(INITDIR)
AC_SUBST(INITDDIR)
dnl Setup default locations...
CUPS_SERVERROOT='${sysconfdif}/cups'
CUPS_LOGDIR='${localstatedir}/log/cups'
CUPS_REQUESTS='${localstatedir}/spool/cups'
CUPS_SERVERROOT='${prefix}/etc/cups'
CUPS_LOGDIR='${prefix}/var/log/cups'
CUPS_REQUESTS='${prefix}/var/spool/cups'
AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$sysconfdir/cups")
AC_DEFINE_UNQUOTED(CUPS_LOGDIR, "$localstatedir/log/cups")
AC_DEFINE_UNQUOTED(CUPS_REQUESTS, "$localstatedir/spool/cups")
AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$prefix/etc/cups")
AC_DEFINE_UNQUOTED(CUPS_LOGDIR, "$prefix/var/log/cups")
AC_DEFINE_UNQUOTED(CUPS_REQUESTS, "$prefix/var/spool/cups")
dnl See what directory to put server executables...
case "$uname" in
@@ -567,8 +525,8 @@ AC_SUBST(CUPS_REQUESTS)
dnl Set the CUPS_LOCALE directory...
case "$uname" in
Linux* | FreeBSD* | NetBSD* | OpenBSD*)
CUPS_LOCALEDIR='${datadir}/locale'
AC_DEFINE_UNQUOTED(CUPS_LOCALEDIR, "$datadir/locale")
CUPS_LOCALEDIR='${exec_prefix}/share/locale'
AC_DEFINE_UNQUOTED(CUPS_LOCALEDIR, "$exec_prefix/share/locale")
;;
OSF1*)
@@ -586,13 +544,13 @@ esac
AC_SUBST(CUPS_LOCALEDIR)
dnl Set the CUPS_DATADIR directory...
CUPS_DATADIR='${datadir}/cups'
AC_DEFINE_UNQUOTED(CUPS_DATADIR, "$datadir/cups")
CUPS_DATADIR='${exec_prefix}/share/cups'
AC_DEFINE_UNQUOTED(CUPS_DATADIR, "$exec_prefix/share/cups")
AC_SUBST(CUPS_DATADIR)
dnl Set the CUPS_DOCROOT directory...
CUPS_DOCROOT='${datadir}/doc/cups'
AC_DEFINE_UNQUOTED(CUPS_DOCROOT, "$datadir/doc/cups")
CUPS_DOCROOT='${exec_prefix}/share/doc/cups'
AC_DEFINE_UNQUOTED(CUPS_DOCROOT, "$exec_prefix/share/doc/cups")
AC_SUBST(CUPS_DOCROOT)
dnl Set the CUPS_FONTPATH directory...
+99
Ver Arquivo
@@ -15,6 +15,105 @@ Package=<4>
###############################################################################
Project: "cupsd"=.\scheduler\cupsd.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name cups
End Project Dependency
}}}
###############################################################################
Project: "hpgltops"=.\filter\hpgltops.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name cups
End Project Dependency
}}}
###############################################################################
Project: "image"=.\filter\image.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "pstops"=.\filter\pstops.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "testmime"=.\cups\testmime.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name cups
End Project Dependency
}}}
###############################################################################
Project: "testppd"=.\cups\testppd.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name cups
End Project Dependency
}}}
###############################################################################
Project: "texttops"=.\filter\texttops.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name cups
End Project Dependency
}}}
###############################################################################
Global:
Package=<5>
+204 -13
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cups.list 1471 2000-12-11 04:40:31Z mike $"
# "$Id: cups.list 1399 2000-10-02 14:34:23Z mike $"
#
# ESP Package Manager (EPM) file list for the Common UNIX Printing
# System (CUPS).
@@ -23,16 +23,14 @@
# WWW: http://www.cups.org
#
# Product information
%product Common UNIX Printing System
%copyright 1993-2000 by Easy Software Products, All Rights Reserved.
%vendor Easy Software Products
%license LICENSE.txt
%readme README.txt
%version 1.1.5
%version 1.1.4
%incompat printpro
# Server programs
%system all
# Server files
f 0555 root sys $SBINDIR/cupsd scheduler/cupsd
@@ -164,26 +162,153 @@ f 0444 root sys $DATADIR/data/psglyphs data/psglyphs
f 0444 root sys $DATADIR/data/testprint.ps data/testprint.ps
d 0555 root sys $DATADIR/fonts -
f 0444 root sys $DATADIR/fonts fonts/*
f 0444 root sys $DATADIR/fonts/AvantGarde-Book fonts/AvantGarde-Book
f 0444 root sys $DATADIR/fonts/AvantGarde-BookOblique fonts/AvantGarde-BookOblique
f 0444 root sys $DATADIR/fonts/AvantGarde-Demi fonts/AvantGarde-Demi
f 0444 root sys $DATADIR/fonts/AvantGarde-DemiOblique fonts/AvantGarde-DemiOblique
f 0444 root sys $DATADIR/fonts/Bookman-Demi fonts/Bookman-Demi
f 0444 root sys $DATADIR/fonts/Bookman-DemiItalic fonts/Bookman-DemiItalic
f 0444 root sys $DATADIR/fonts/Bookman-Light fonts/Bookman-Light
f 0444 root sys $DATADIR/fonts/Bookman-LightItalic fonts/Bookman-LightItalic
f 0444 root sys $DATADIR/fonts/Charter-Bold fonts/Charter-Bold
f 0444 root sys $DATADIR/fonts/Charter-BoldItalic fonts/Charter-BoldItalic
f 0444 root sys $DATADIR/fonts/Charter-Italic fonts/Charter-Italic
f 0444 root sys $DATADIR/fonts/Charter-Roman fonts/Charter-Roman
f 0444 root sys $DATADIR/fonts/Courier fonts/Courier
f 0444 root sys $DATADIR/fonts/Courier-Bold fonts/Courier-Bold
f 0444 root sys $DATADIR/fonts/Courier-BoldOblique fonts/Courier-BoldOblique
f 0444 root sys $DATADIR/fonts/Courier-Oblique fonts/Courier-Oblique
f 0444 root sys $DATADIR/fonts/Helvetica fonts/Helvetica
f 0444 root sys $DATADIR/fonts/Helvetica-Bold fonts/Helvetica-Bold
f 0444 root sys $DATADIR/fonts/Helvetica-BoldOblique fonts/Helvetica-BoldOblique
f 0444 root sys $DATADIR/fonts/Helvetica-Narrow fonts/Helvetica-Narrow
f 0444 root sys $DATADIR/fonts/Helvetica-Narrow-Bold fonts/Helvetica-Narrow-Bold
f 0444 root sys $DATADIR/fonts/Helvetica-Narrow-BoldOblique fonts/Helvetica-Narrow-BoldOblique
f 0444 root sys $DATADIR/fonts/Helvetica-Narrow-Oblique fonts/Helvetica-Narrow-Oblique
f 0444 root sys $DATADIR/fonts/Helvetica-Oblique fonts/Helvetica-Oblique
f 0444 root sys $DATADIR/fonts/NewCenturySchlbk-Bold fonts/NewCenturySchlbk-Bold
f 0444 root sys $DATADIR/fonts/NewCenturySchlbk-BoldItalic fonts/NewCenturySchlbk-BoldItalic
f 0444 root sys $DATADIR/fonts/NewCenturySchlbk-Italic fonts/NewCenturySchlbk-Italic
f 0444 root sys $DATADIR/fonts/NewCenturySchlbk-Roman fonts/NewCenturySchlbk-Roman
f 0444 root sys $DATADIR/fonts/Palatino-Bold fonts/Palatino-Bold
f 0444 root sys $DATADIR/fonts/Palatino-BoldItalic fonts/Palatino-BoldItalic
f 0444 root sys $DATADIR/fonts/Palatino-Italic fonts/Palatino-Italic
f 0444 root sys $DATADIR/fonts/Palatino-Roman fonts/Palatino-Roman
f 0444 root sys $DATADIR/fonts/Symbol fonts/Symbol
f 0444 root sys $DATADIR/fonts/Times-Bold fonts/Times-Bold
f 0444 root sys $DATADIR/fonts/Times-BoldItalic fonts/Times-BoldItalic
f 0444 root sys $DATADIR/fonts/Times-Italic fonts/Times-Italic
f 0444 root sys $DATADIR/fonts/Times-Roman fonts/Times-Roman
f 0444 root sys $DATADIR/fonts/Utopia-Bold fonts/Utopia-Bold
f 0444 root sys $DATADIR/fonts/Utopia-BoldItalic fonts/Utopia-BoldItalic
f 0444 root sys $DATADIR/fonts/Utopia-Italic fonts/Utopia-Italic
f 0444 root sys $DATADIR/fonts/Utopia-Regular fonts/Utopia-Regular
f 0444 root sys $DATADIR/fonts/ZapfChancery-MediumItalic fonts/ZapfChancery-MediumItalic
f 0444 root sys $DATADIR/fonts/ZapfDingbats fonts/ZapfDingbats
d 0555 root sys $DATADIR/pstoraster -
f 0444 root sys $DATADIR/pstoraster/Fontmap pstoraster/Fontmap
f 0444 root sys $DATADIR/pstoraster pstoraster/gs*.ps
f 0444 root sys $DATADIR/pstoraster/gs_btokn.ps pstoraster/gs_btokn.ps
f 0444 root sys $DATADIR/pstoraster/gs_ccfnt.ps pstoraster/gs_ccfnt.ps
f 0444 root sys $DATADIR/pstoraster/gs_cff.ps pstoraster/gs_cff.ps
f 0444 root sys $DATADIR/pstoraster/gs_cidfn.ps pstoraster/gs_cidfn.ps
f 0444 root sys $DATADIR/pstoraster/gs_cmap.ps pstoraster/gs_cmap.ps
f 0444 root sys $DATADIR/pstoraster/gs_cmdl.ps pstoraster/gs_cmdl.ps
f 0444 root sys $DATADIR/pstoraster/gs_dbt_e.ps pstoraster/gs_dbt_e.ps
f 0444 root sys $DATADIR/pstoraster/gs_diskf.ps pstoraster/gs_diskf.ps
f 0444 root sys $DATADIR/pstoraster/gs_dpnxt.ps pstoraster/gs_dpnxt.ps
f 0444 root sys $DATADIR/pstoraster/gs_dps.ps pstoraster/gs_dps.ps
f 0444 root sys $DATADIR/pstoraster/gs_dps1.ps pstoraster/gs_dps1.ps
f 0444 root sys $DATADIR/pstoraster/gs_dps2.ps pstoraster/gs_dps2.ps
f 0444 root sys $DATADIR/pstoraster/gs_epsf.ps pstoraster/gs_epsf.ps
f 0444 root sys $DATADIR/pstoraster/gs_fform.ps pstoraster/gs_fform.ps
f 0444 root sys $DATADIR/pstoraster/gs_fonts.ps pstoraster/gs_fonts.ps
f 0444 root sys $DATADIR/pstoraster/gs_init.ps pstoraster/gs_init.ps
f 0444 root sys $DATADIR/pstoraster/gs_iso_e.ps pstoraster/gs_iso_e.ps
f 0444 root sys $DATADIR/pstoraster/gs_kanji.ps pstoraster/gs_kanji.ps
f 0444 root sys $DATADIR/pstoraster/gs_ksb_e.ps pstoraster/gs_ksb_e.ps
f 0444 root sys $DATADIR/pstoraster/gs_lev2.ps pstoraster/gs_lev2.ps
f 0444 root sys $DATADIR/pstoraster/gs_ll3.ps pstoraster/gs_ll3.ps
f 0444 root sys $DATADIR/pstoraster/gs_mex_e.ps pstoraster/gs_mex_e.ps
f 0444 root sys $DATADIR/pstoraster/gs_mro_e.ps pstoraster/gs_mro_e.ps
f 0444 root sys $DATADIR/pstoraster/gs_pfile.ps pstoraster/gs_pfile.ps
f 0444 root sys $DATADIR/pstoraster/gs_res.ps pstoraster/gs_res.ps
f 0444 root sys $DATADIR/pstoraster/gs_setpd.ps pstoraster/gs_setpd.ps
f 0444 root sys $DATADIR/pstoraster/gs_statd.ps pstoraster/gs_statd.ps
f 0444 root sys $DATADIR/pstoraster/gs_std_e.ps pstoraster/gs_std_e.ps
f 0444 root sys $DATADIR/pstoraster/gs_sym_e.ps pstoraster/gs_sym_e.ps
f 0444 root sys $DATADIR/pstoraster/gs_ttf.ps pstoraster/gs_ttf.ps
f 0444 root sys $DATADIR/pstoraster/gs_typ32.ps pstoraster/gs_typ32.ps
f 0444 root sys $DATADIR/pstoraster/gs_typ42.ps pstoraster/gs_typ42.ps
f 0444 root sys $DATADIR/pstoraster/gs_type1.ps pstoraster/gs_type1.ps
f 0444 root sys $DATADIR/pstoraster/gs_wan_e.ps pstoraster/gs_wan_e.ps
f 0444 root sys $DATADIR/pstoraster/gs_wl1_e.ps pstoraster/gs_wl1_e.ps
f 0444 root sys $DATADIR/pstoraster/gs_wl2_e.ps pstoraster/gs_wl2_e.ps
f 0444 root sys $DATADIR/pstoraster/gs_wl5_e.ps pstoraster/gs_wl5_e.ps
d 0555 root sys $DATADIR/model -
f 0444 root sys $DATADIR/model ppd/*.ppd
f 0444 root sys $DATADIR/model/deskjet.ppd ppd/deskjet.ppd
f 0444 root sys $DATADIR/model/laserjet.ppd ppd/laserjet.ppd
f 0444 root sys $DATADIR/model/epson9.ppd ppd/epson9.ppd
f 0444 root sys $DATADIR/model/epson24.ppd ppd/epson24.ppd
f 0444 root sys $DATADIR/model/stcolor.ppd ppd/stcolor.ppd
f 0444 root sys $DATADIR/model/stphoto.ppd ppd/stphoto.ppd
d 0555 root sys $DATADIR/templates -
f 0444 root sys $DATADIR/templates templates/*.tmpl
f 0444 root sys $DATADIR/templates/add-class.tmpl templates/add-class.tmpl
f 0444 root sys $DATADIR/templates/add-printer.tmpl templates/add-printer.tmpl
f 0444 root sys $DATADIR/templates/admin-op.tmpl templates/admin-op.tmpl
f 0444 root sys $DATADIR/templates/admin.tmpl templates/admin.tmpl
f 0444 root sys $DATADIR/templates/choose-device.tmpl templates/choose-device.tmpl
f 0444 root sys $DATADIR/templates/choose-make.tmpl templates/choose-make.tmpl
f 0444 root sys $DATADIR/templates/choose-members.tmpl templates/choose-members.tmpl
f 0444 root sys $DATADIR/templates/choose-model.tmpl templates/choose-model.tmpl
f 0444 root sys $DATADIR/templates/choose-serial.tmpl templates/choose-serial.tmpl
f 0444 root sys $DATADIR/templates/choose-uri.tmpl templates/choose-uri.tmpl
f 0444 root sys $DATADIR/templates/class-added.tmpl templates/class-added.tmpl
f 0444 root sys $DATADIR/templates/class-confirm.tmpl templates/class-confirm.tmpl
f 0444 root sys $DATADIR/templates/class-deleted.tmpl templates/class-deleted.tmpl
f 0444 root sys $DATADIR/templates/class-modified.tmpl templates/class-modified.tmpl
f 0444 root sys $DATADIR/templates/classes.tmpl templates/classes.tmpl
f 0444 root sys $DATADIR/templates/config-printer.tmpl templates/config-printer.tmpl
f 0444 root sys $DATADIR/templates/config-printer2.tmpl templates/config-printer2.tmpl
f 0444 root sys $DATADIR/templates/error.tmpl templates/error.tmpl
f 0444 root sys $DATADIR/templates/header.tmpl templates/header.tmpl
f 0444 root sys $DATADIR/templates/job-cancel.tmpl templates/job-cancel.tmpl
f 0444 root sys $DATADIR/templates/job-hold.tmpl templates/job-hold.tmpl
f 0444 root sys $DATADIR/templates/job-release.tmpl templates/job-release.tmpl
f 0444 root sys $DATADIR/templates/job-restart.tmpl templates/job-restart.tmpl
f 0444 root sys $DATADIR/templates/jobs.tmpl templates/jobs.tmpl
f 0444 root sys $DATADIR/templates/modify-class.tmpl templates/modify-class.tmpl
f 0444 root sys $DATADIR/templates/modify-printer.tmpl templates/modify-printer.tmpl
f 0444 root sys $DATADIR/templates/option-boolean.tmpl templates/option-boolean.tmpl
f 0444 root sys $DATADIR/templates/option-header.tmpl templates/option-header.tmpl
f 0444 root sys $DATADIR/templates/option-pickmany.tmpl templates/option-pickmany.tmpl
f 0444 root sys $DATADIR/templates/option-pickone.tmpl templates/option-pickone.tmpl
f 0444 root sys $DATADIR/templates/option-trailer.tmpl templates/option-trailer.tmpl
f 0444 root sys $DATADIR/templates/printer-accept.tmpl templates/printer-accept.tmpl
f 0444 root sys $DATADIR/templates/printer-added.tmpl templates/printer-added.tmpl
f 0444 root sys $DATADIR/templates/printer-configured.tmpl templates/printer-configured.tmpl
f 0444 root sys $DATADIR/templates/printer-confirm.tmpl templates/printer-confirm.tmpl
f 0444 root sys $DATADIR/templates/printer-deleted.tmpl templates/printer-deleted.tmpl
f 0444 root sys $DATADIR/templates/printer-modified.tmpl templates/printer-modified.tmpl
f 0444 root sys $DATADIR/templates/printer-reject.tmpl templates/printer-reject.tmpl
f 0444 root sys $DATADIR/templates/printer-start.tmpl templates/printer-start.tmpl
f 0444 root sys $DATADIR/templates/printer-stop.tmpl templates/printer-stop.tmpl
f 0444 root sys $DATADIR/templates/printers.tmpl templates/printers.tmpl
f 0444 root sys $DATADIR/templates/test-page.tmpl templates/test-page.tmpl
f 0444 root sys $DATADIR/templates/trailer.tmpl templates/trailer.tmpl
# Config files
d 0555 root sys $SERVERROOT -
d 0711 root sys $SERVERROOT/certs -
d 0755 root sys $SERVERROOT/interfaces -
d 0755 root sys $SERVERROOT/ppd -
c 0644 root sys $SERVERROOT conf/*.conf
c 0644 root sys $SERVERROOT/classes.conf conf/classes.conf
c 0644 root sys $SERVERROOT/cupsd.conf conf/cupsd.conf
f 0644 root sys $SERVERROOT/mime.convs conf/mime.convs
f 0644 root sys $SERVERROOT/mime.types conf/mime.types
c 0644 root sys $SERVERROOT/printers.conf conf/printers.conf
%system linux
d 0555 root sys $PAMDIR -
@@ -210,10 +335,76 @@ f 0444 root sys $LIBDIR/libcups.a cups/libcups.a
# Documentation files
d 0555 root sys $DOCDIR -
f 0444 root sys $DOCDIR/cups.css doc/cups.css
f 0444 root sys $DOCDIR doc/*.html
f 0444 root sys $DOCDIR doc/*.pdf
f 0444 root sys $DOCDIR/documentation.html doc/documentation.html
f 0444 root sys $DOCDIR/index.html doc/index.html
d 0555 root sys $DOCDIR/images -
f 0444 root sys $DOCDIR/images doc/images/*.gif
f 0444 root sys $DOCDIR/images/classes.gif doc/images/classes.gif
f 0444 root sys $DOCDIR/images/printer-idle.gif doc/images/printer-idle.gif
f 0444 root sys $DOCDIR/images/printer-processing.gif doc/images/printer-processing.gif
f 0444 root sys $DOCDIR/images/printer-stopped.gif doc/images/printer-stopped.gif
f 0444 root sys $DOCDIR/images/accept-jobs.gif doc/images/accept-jobs.gif
f 0444 root sys $DOCDIR/images/add-class.gif doc/images/add-class.gif
f 0444 root sys $DOCDIR/images/add-printer.gif doc/images/add-printer.gif
f 0444 root sys $DOCDIR/images/cancel-job.gif doc/images/cancel-job.gif
f 0444 root sys $DOCDIR/images/cancel-jobs.gif doc/images/cancel-jobs.gif
f 0444 root sys $DOCDIR/images/cancel.gif doc/images/cancel.gif
f 0444 root sys $DOCDIR/images/continue.gif doc/images/continue.gif
f 0444 root sys $DOCDIR/images/config-printer.gif doc/images/config-printer.gif
f 0444 root sys $DOCDIR/images/cups-block-diagram.gif doc/images/cups-block-diagram.gif
f 0444 root sys $DOCDIR/images/delete-class.gif doc/images/delete-class.gif
f 0444 root sys $DOCDIR/images/delete-printer.gif doc/images/delete-printer.gif
f 0444 root sys $DOCDIR/images/hold-job.gif doc/images/hold-job.gif
f 0444 root sys $DOCDIR/images/left.gif doc/images/left.gif
f 0444 root sys $DOCDIR/images/logo.gif doc/images/logo.gif
f 0444 root sys $DOCDIR/images/manage-classes.gif doc/images/manage-classes.gif
f 0444 root sys $DOCDIR/images/manage-jobs.gif doc/images/manage-jobs.gif
f 0444 root sys $DOCDIR/images/manage-printers.gif doc/images/manage-printers.gif
f 0444 root sys $DOCDIR/images/modify-class.gif doc/images/modify-class.gif
f 0444 root sys $DOCDIR/images/modify-printer.gif doc/images/modify-printer.gif
f 0444 root sys $DOCDIR/images/navbar.gif doc/images/navbar.gif
f 0444 root sys $DOCDIR/images/print-test-page.gif doc/images/print-test-page.gif
f 0444 root sys $DOCDIR/images/reject-jobs.gif doc/images/reject-jobs.gif
f 0444 root sys $DOCDIR/images/release-job.gif doc/images/release-job.gif
f 0444 root sys $DOCDIR/images/restart-job.gif doc/images/restart-job.gif
f 0444 root sys $DOCDIR/images/right.gif doc/images/right.gif
f 0444 root sys $DOCDIR/images/show-active.gif doc/images/show-active.gif
f 0444 root sys $DOCDIR/images/show-completed.gif doc/images/show-completed.gif
f 0444 root sys $DOCDIR/images/start-class.gif doc/images/start-class.gif
f 0444 root sys $DOCDIR/images/start-printer.gif doc/images/start-printer.gif
f 0444 root sys $DOCDIR/images/stop-class.gif doc/images/stop-class.gif
f 0444 root sys $DOCDIR/images/stop-printer.gif doc/images/stop-printer.gif
f 0444 root sys $DOCDIR/cmp.html doc/cmp.html
f 0444 root sys $DOCDIR/cmp.pdf doc/cmp.pdf
f 0444 root sys $DOCDIR/cupsdoc.css doc/cupsdoc.css
f 0444 root sys $DOCDIR/idd.html doc/idd.html
f 0444 root sys $DOCDIR/idd.pdf doc/idd.pdf
f 0444 root sys $DOCDIR/ipp.html doc/ipp.html
f 0444 root sys $DOCDIR/ipp.pdf doc/ipp.pdf
f 0444 root sys $DOCDIR/overview.html doc/overview.html
f 0444 root sys $DOCDIR/overview.pdf doc/overview.pdf
f 0444 root sys $DOCDIR/sam.html doc/sam.html
f 0444 root sys $DOCDIR/sam.pdf doc/sam.pdf
f 0444 root sys $DOCDIR/sdd.html doc/sdd.html
f 0444 root sys $DOCDIR/sdd.pdf doc/sdd.pdf
f 0444 root sys $DOCDIR/spm.html doc/spm.html
f 0444 root sys $DOCDIR/spm.pdf doc/spm.pdf
f 0444 root sys $DOCDIR/sps.html doc/sps.html
f 0444 root sys $DOCDIR/sps.pdf doc/sps.pdf
f 0444 root sys $DOCDIR/ssr.html doc/ssr.html
f 0444 root sys $DOCDIR/ssr.pdf doc/ssr.pdf
f 0444 root sys $DOCDIR/sum.html doc/sum.html
f 0444 root sys $DOCDIR/sum.pdf doc/sum.pdf
f 0444 root sys $DOCDIR/svd.html doc/svd.html
f 0444 root sys $DOCDIR/svd.pdf doc/svd.pdf
f 0444 root sys $DOCDIR/images/cups-bar.gif doc/images/cups-bar.gif
f 0444 root sys $DOCDIR/images/cups-large.gif doc/images/cups-large.gif
f 0444 root sys $DOCDIR/images/cups-medium.gif doc/images/cups-medium.gif
f 0444 root sys $DOCDIR/images/cups-small.gif doc/images/cups-small.gif
# Man pages
%system irix
@@ -316,5 +507,5 @@ f 0444 root sys $MANDIR/man5/printers.conf.5 man/printers.conf.man
i 0555 root sys cups cups.sh
#
# End of "$Id: cups.list 1471 2000-12-11 04:40:31Z mike $".
# End of "$Id: cups.list 1399 2000-10-02 14:34:23Z mike $".
#
+4 -6
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cups.spec 1421 2000-10-19 20:55:06Z mike $"
# "$Id: cups.spec 1399 2000-10-02 14:34:23Z mike $"
#
# RPM "spec" file for the Common UNIX Printing System (CUPS).
#
@@ -26,7 +26,7 @@
Summary: Common Unix Printing System
Name: cups
Version: 1.1.5
Version: 1.1.4
Release: 0
Copyright: GPL
Group: System Environment/Daemons
@@ -159,12 +159,10 @@ rm -rf $RPM_BUILD_ROOT
/usr/sbin/*
%dir /usr/share/cups
/usr/share/cups/*
%dir /usr/share/doc/cups
/usr/share/doc/cups/*
%dir /usr/share/locale
/usr/share/locale/*
%attr(0700,lp,root) %dir /var/spool/cups
%attr(1700,lp,root) %dir /var/spool/cups/tmp
%attr(1700,lp,root) %dir/var/spool/cups/tmp
%files devel
%dir /usr/include/cups
@@ -172,5 +170,5 @@ rm -rf $RPM_BUILD_ROOT
/usr/lib/*.a
#
# End of "$Id: cups.spec 1421 2000-10-19 20:55:06Z mike $".
# End of "$Id: cups.spec 1399 2000-10-02 14:34:23Z mike $".
#
+1 -1
Ver Arquivo
@@ -87,7 +87,7 @@ install: all
libcups.so.2 libcups.sl.2: $(LIBOBJS) ../Makedefs
echo Linking $@...
$(DSO) $@ $(LIBOBJS) $(LDFLAGS) $(SSLLIBS)
$(DSO) $@ $(LIBOBJS)
$(RM) `basename $@ .2`
$(LN) $@ `basename $@ .2`
+10 -18
Ver Arquivo
@@ -85,11 +85,11 @@ LIB32=link.exe -lib
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\dest.c
SOURCE=.\emit.c
# End Source File
# Begin Source File
SOURCE=.\emit.c
SOURCE=.\filter.c
# End Source File
# Begin Source File
@@ -109,11 +109,7 @@ SOURCE=.\mark.c
# End Source File
# Begin Source File
SOURCE=.\md5.c
# End Source File
# Begin Source File
SOURCE=.\md5passwd.c
SOURCE=.\mime.c
# End Source File
# Begin Source File
@@ -129,6 +125,10 @@ SOURCE=.\ppd.c
# End Source File
# Begin Source File
SOURCE=.\raster.c
# End Source File
# Begin Source File
SOURCE=.\snprintf.c
# End Source File
# Begin Source File
@@ -137,7 +137,7 @@ SOURCE=.\string.c
# End Source File
# Begin Source File
SOURCE=.\usersys.c
SOURCE=.\type.c
# End Source File
# Begin Source File
@@ -153,14 +153,6 @@ SOURCE=.\cups.h
# End Source File
# Begin Source File
SOURCE=.\cups_C.h
# End Source File
# Begin Source File
SOURCE=.\debug.h
# End Source File
# Begin Source File
SOURCE=.\http.h
# End Source File
# Begin Source File
@@ -173,7 +165,7 @@ SOURCE=.\language.h
# End Source File
# Begin Source File
SOURCE=.\md5.h
SOURCE=.\mime.h
# End Source File
# Begin Source File
@@ -181,7 +173,7 @@ SOURCE=.\ppd.h
# End Source File
# Begin Source File
SOURCE=.\string.h
SOURCE=.\raster.h
# End Source File
# End Group
# End Target
-2
Ver Arquivo
@@ -103,7 +103,6 @@ extern int cupsCancelJob(const char *printer, int job);
#define cupsDoRequest(http,request,resource) cupsDoFileRequest((http),(request),(resource),NULL)
extern ipp_t *cupsDoFileRequest(http_t *http, ipp_t *request,
const char *resource, const char *filename);
extern http_encryption_t cupsEncryption(void);
extern int cupsGetClasses(char ***classes);
extern const char *cupsGetDefault(void);
extern const char *cupsGetPPD(const char *printer);
@@ -139,7 +138,6 @@ extern int cupsMarkOptions(ppd_file_t *ppd, int num_options,
extern const char *cupsGetPassword(const char *prompt);
extern const char *cupsServer(void);
extern void cupsSetEncryption(http_encryption_t e);
extern void cupsSetPasswordCB(const char *(*cb)(const char *));
extern void cupsSetServer(const char *server);
extern void cupsSetUser(const char *user);
-1
Ver Arquivo
@@ -124,7 +124,6 @@
"The request is too large for this server to process.",
"The request URI is too large for this server to process.",
"The request format is not understood by this server.",
"426 An upgrade to a secure connection is required. If you are seeing this message in a web browser then it does not support HTTP encryption upgrades.",
"500 The server has detected an unrecoverable error and cannot process your request.",
"The requested method is not implemented by this server.",
"The proxy server received an invalid response from an upstream server.",
+5 -22
Ver Arquivo
@@ -302,24 +302,17 @@ cupsSetDests(int num_dests, /* I - Number of destinations */
* Figure out which file to write to...
*/
#ifdef WIN32
if ((home = getenv("CUPS_SERVERROOT")) == NULL)
home = CUPS_SERVERROOT;
snprintf(filename, sizeof(filename), "%s/lpoptions", home);
#else
if (getuid() == 0)
{
if ((home = getenv("CUPS_SERVERROOT")) == NULL)
home = CUPS_SERVERROOT;
snprintf(filename, sizeof(filename), "%s/lpoptions", home);
if ((home = getenv("CUPS_SERVERROOT")) != NULL)
snprintf(filename, sizeof(filename), "%s/lpoptions", home);
else
strcpy(filename, CUPS_SERVERROOT "/lpoptions");
}
else if ((home = getenv("HOME")) != NULL)
snprintf(filename, sizeof(filename), "%s/.lpoptions", home);
else
return;
#endif /* WIN32 */
/*
* Try to open the file...
@@ -376,18 +369,8 @@ cups_get_dests(const char *filename, /* I - File to read from */
*lineptr, /* Pointer into line */
*name, /* Name of destination/option */
*instance; /* Instance of destination */
const char *printer; /* PRINTER or LPDEST */
/*
* Check environment variables...
*/
if ((printer = getenv("LPDEST")) == NULL)
if ((printer = getenv("PRINTER")) != NULL)
if (strcmp(printer, "lp") == 0)
printer = NULL;
/*
* Try to open the file...
*/
@@ -497,7 +480,7 @@ cups_get_dests(const char *filename, /* I - File to read from */
* Set this as default if needed...
*/
if (strncasecmp(line, "default", 7) == 0 && printer == NULL)
if (strncasecmp(line, "default", 7) == 0)
{
for (i = 0; i < num_dests; i ++)
(*dests)[i].is_default = 0;
+2 -3
Ver Arquivo
@@ -275,9 +275,8 @@ ppdEmitFd(ppd_file_t *ppd, /* I - PPD file record */
* Send DSC comments with option...
*/
snprintf(buf, sizeof(buf), "%%%%BeginFeature: %s %s\n",
((ppd_option_t *)choices[i]->option)->keyword,
choices[i]->choice);
sprintf(buf, "%%%%BeginFeature: %s %s\n",
((ppd_option_t *)choices[i]->option)->keyword, choices[i]->choice);
if (write(fd, buf, strlen(buf)) < 1)
{
+33 -338
Ver Arquivo
@@ -5,7 +5,7 @@
*
* Copyright 1997-2000 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* These statusd instructions, statements, and computer programs are the
* property of Easy Software Products and are protected by Federal
* copyright law. Distribution and use rights are outlined in the file
* "LICENSE.txt" which should have been included with this file. If this
@@ -29,7 +29,6 @@
* the server.
* httpClose() - Close an HTTP connection...
* httpConnect() - Connect to a HTTP server.
* httpEncryption() - Set the required encryption on the link.
* httpReconnect() - Reconnect to a HTTP server...
* httpSeparate() - Separate a Universal Resource Identifier into its
* components.
@@ -57,7 +56,6 @@
* http_field() - Return the field index for a field name.
* http_send() - Send a request with all fields and the trailing
* blank line.
* http_upgrade() - Force upgrade to TLS encryption.
*/
/*
@@ -80,12 +78,6 @@
# include <signal.h>
#endif /* !WIN32 && !__EMX__ */
#ifdef HAVE_LIBSSL
# include <openssl/rand.h>
# include <openssl/ssl.h>
#endif /* HAVE_LIBSSL */
/*
* Some operating systems have done away with the Fxxxx constants for
* the fcntl() call; this works around that "feature"...
@@ -103,7 +95,6 @@
static http_field_t http_field(const char *name);
static int http_send(http_t *http, http_state_t request,
const char *uri);
static int http_upgrade(http_t *http);
/*
@@ -175,13 +166,6 @@ static const char *months[12] =
void
httpInitialize(void)
{
#ifdef HAVE_LIBSSL
# if defined(WIN32) || defined(__EMX__)
# else
struct timeval curtime; /* Current time in microseconds */
# endif /* WIN32 || __EMX__ */
#endif /* HAVE_LIBSSL */
#if defined(WIN32) || defined(__EMX__)
WSADATA winsockdata; /* WinSock data */
static int initialized = 0;/* Has WinSock been initialized? */
@@ -205,21 +189,6 @@ httpInitialize(void)
#else
signal(SIGPIPE, SIG_IGN);
#endif /* WIN32 || __EMX__ */
#ifdef HAVE_LIBSSL
SSL_library_init();
/*
* Using the current time is a dubious random seed, but on some systems
* it is the best we can do (on others, this seed isn't even used...)
*/
# if defined(WIN32) || defined(__EMX__)
# else
gettimeofday(&curtime, NULL);
RAND_seed(&curtime, sizeof(curtime));
# endif /* WIN32 || __EMX__ */
#endif /* HAVE_LIBSSL */
}
@@ -265,29 +234,9 @@ httpCheck(http_t *http) /* I - HTTP connection */
void
httpClose(http_t *http) /* I - Connection to close */
{
#ifdef HAVE_LIBSSL
SSL_CTX *context; /* Context for encryption */
SSL *conn; /* Connection for encryption */
#endif /* HAVE_LIBSSL */
if (!http)
if (http == NULL)
return;
#ifdef HAVE_LIBSSL
if (http->tls)
{
conn = (SSL *)(http->tls);
context = SSL_get_SSL_CTX(conn);
SSL_shutdown(conn);
SSL_CTX_free(context);
SSL_free(conn);
http->tls = NULL;
}
#endif /* HAVE_LIBSSL */
#ifdef WIN32
closesocket(http->fd);
#else
@@ -346,18 +295,6 @@ httpConnect(const char *host, /* I - Host to connect to */
#else
http->hostaddr.sin_port = htons(port);
#endif /* WIN32 */
/*
* Set the default encryption status...
*/
if (port == 443)
http->encryption = HTTP_ENCRYPT_ALWAYS;
/*
* Connect to the remote system...
*/
if (httpReconnect(http))
{
free(http);
@@ -368,36 +305,6 @@ httpConnect(const char *host, /* I - Host to connect to */
}
/*
* 'httpEncryption()' - Set the required encryption on the link.
*/
int /* O - -1 on error, 0 on success */
httpEncryption(http_t *http, /* I - HTTP data */
http_encryption_t e) /* I - New encryption preference */
{
#ifdef HAVE_LIBSSL
if (!http)
return (0);
http->encryption = e;
if ((http->encryption == HTTP_ENCRYPT_ALWAYS && !http->tls) ||
(http->encryption == HTTP_ENCRYPT_NEVER && http->tls))
return (httpReconnect(http));
else if (http->encryption == HTTP_ENCRYPT_REQUIRED && !http->tls)
return (http_upgrade(http));
else
return (0);
#else
if (e == HTTP_ENCRYPT_ALWAYS || e == HTTP_ENCRYPT_REQUIRED)
return (-1);
else
return (0);
#endif /* HAVE_LIBSSL */
}
/*
* 'httpReconnect()' - Reconnect to a HTTP server...
*/
@@ -405,25 +312,9 @@ httpEncryption(http_t *http, /* I - HTTP data */
int /* O - 0 on success, non-zero on failure */
httpReconnect(http_t *http) /* I - HTTP data */
{
int val; /* Socket option value */
#ifdef HAVE_LIBSSL
SSL_CTX *context; /* Context for encryption */
SSL *conn; /* Connection for encryption */
int val; /* Socket option value */
if (http->tls)
{
conn = (SSL *)(http->tls);
context = SSL_get_SSL_CTX(conn);
SSL_shutdown(conn);
SSL_CTX_free(context);
SSL_free(conn);
http->tls = NULL;
}
#endif /* HAVE_LIBSSL */
/*
* Close any previously open socket...
*/
@@ -489,44 +380,6 @@ httpReconnect(http_t *http) /* I - HTTP data */
http->error = 0;
http->status = HTTP_CONTINUE;
#ifdef HAVE_LIBSSL
if (http->encryption == HTTP_ENCRYPT_ALWAYS)
{
/*
* Always do encryption via SSL.
*/
context = SSL_CTX_new(SSLv23_method());
conn = SSL_new(context);
SSL_set_fd(conn, http->fd);
if (SSL_connect(conn) != 1)
{
SSL_CTX_free(context);
SSL_free(conn);
#if defined(WIN32) || defined(__EMX__)
http->error = WSAGetLastError();
#else
http->error = errno;
#endif /* WIN32 || __EMX__ */
http->status = HTTP_ERROR;
#ifdef WIN32
closesocket(http->fd);
#else
close(http->fd);
#endif
return (-1);
}
http->tls = conn;
}
else if (http->encryption == HTTP_ENCRYPT_REQUIRED)
return (http_upgrade(http));
#endif /* HAVE_LIBSSL */
return (0);
}
@@ -544,9 +397,7 @@ httpSeparate(const char *uri, /* I - Universal Resource Identifier */
int *port, /* O - Port number to use */
char *resource) /* O - Resource/filename [1024] */
{
char *ptr; /* Pointer into string... */
const char *atsign, /* @ sign */
*slash; /* Separator */
char *ptr; /* Pointer into string... */
if (uri == NULL || method == NULL || username == NULL || host == NULL ||
@@ -639,49 +490,44 @@ httpSeparate(const char *uri, /* I - Universal Resource Identifier */
}
/*
* Grab the usenname, if any...
* Grab the hostname...
*/
while (*uri == '/')
uri ++;
if ((slash = strchr(uri, '/')) == NULL)
slash = uri + strlen(uri);
if ((atsign = strchr(uri, '@')) != NULL && atsign < slash)
{
/*
* Got a username:password combo...
*/
for (ptr = username;
uri < atsign && ptr < (username + sizeof(username) - 1);
*ptr++ = *uri++);
*ptr = '\0';
uri = atsign + 1;
}
else
username[0] = '\0';
/*
* Grab the hostname...
*/
ptr = host;
while (*uri != ':' && *uri != '/' && *uri != '\0')
while (!(*uri == ':' && isdigit(uri[1])) && *uri != '@' && *uri != '/' && *uri != '\0')
*ptr ++ = *uri ++;
*ptr = '\0';
if (*uri == '@')
{
/*
* Got a username...
*/
strncpy(username, host, 31);
username[31] = '\0';
ptr = host;
uri ++;
while (*uri != ':' && *uri != '/' && *uri != '\0')
*ptr ++ = *uri ++;
*ptr = '\0';
}
else
username[0] = '\0';
if (*uri != ':')
{
if (strcasecmp(method, "http") == 0)
*port = 80;
else if (strcasecmp(method, "https") == 0)
*port = 443;
else if (strcasecmp(method, "ipp") == 0)
else if (strcasecmp(method, "ipp") == 0) /* Not registered yet... */
*port = ippPort();
else if (strcasecmp(method, "socket") == 0) /* Not registered yet... */
*port = 9100;
@@ -1032,10 +878,6 @@ httpRead(http_t *http, /* I - HTTP data */
if (http->used > 0)
memcpy(http->buffer, http->buffer + length, http->used);
}
#ifdef HAVE_LIBSSL
else if (http->tls)
bytes = SSL_read((SSL *)(http->tls), buffer, length);
#endif /* HAVE_LIBSSL */
else
{
DEBUG_printf(("httpRead: reading %d bytes from socket...\n", length));
@@ -1118,13 +960,7 @@ httpWrite(http_t *http, /* I - HTTP data */
while (length > 0)
{
#ifdef HAVE_LIBSSL
if (http->tls)
bytes = SSL_write((SSL *)(http->tls), buffer, length);
else
#endif /* HAVE_LIBSSL */
bytes = send(http->fd, buffer, length, 0);
if (bytes < 0)
{
DEBUG_puts("httpWrite: error writing data...\n");
@@ -1204,21 +1040,13 @@ httpGets(char *line, /* I - Line to read into */
else
bufptr ++;
if (bufptr >= bufend && http->used < HTTP_MAX_BUFFER)
if (bufptr >= bufend)
{
/*
* No newline; see if there is more data to be read...
*/
#ifdef HAVE_LIBSSL
if (http->tls)
bytes = SSL_read((SSL *)(http->tls), bufend,
HTTP_MAX_BUFFER - http->used);
else
#endif /* HAVE_LIBSSL */
bytes = recv(http->fd, bufend, HTTP_MAX_BUFFER - http->used, 0);
if (bytes < 0)
if ((bytes = recv(http->fd, bufend, HTTP_MAX_BUFFER - http->used, 0)) < 0)
{
/*
* Nope, can't get a line this time...
@@ -1260,7 +1088,7 @@ httpGets(char *line, /* I - Line to read into */
bufend += bytes;
}
}
while (bufptr >= bufend && http->used < HTTP_MAX_BUFFER);
while (bufptr >= bufend);
http->activity = time(NULL);
@@ -1324,17 +1152,8 @@ httpPrintf(http_t *http, /* I - HTTP data */
DEBUG_printf(("httpPrintf: %s", buf));
for (tbytes = 0, bufptr = buf; tbytes < bytes; tbytes += nbytes, bufptr += nbytes)
{
#ifdef HAVE_LIBSSL
if (http->tls)
nbytes = SSL_write((SSL *)(http->tls), bufptr, bytes - tbytes);
else
#endif /* HAVE_LIBSSL */
nbytes = send(http->fd, bufptr, bytes - tbytes, 0);
if (nbytes < 0)
if ((nbytes = send(http->fd, bufptr, bytes - tbytes, 0)) < 0)
return (-1);
}
return (bytes);
}
@@ -1349,10 +1168,6 @@ httpStatus(http_status_t status) /* I - HTTP status code */
{
switch (status)
{
case HTTP_CONTINUE :
return ("Continue");
case HTTP_SWITCHING_PROTOCOLS :
return ("Switching Protocols");
case HTTP_OK :
return ("OK");
case HTTP_CREATED :
@@ -1375,8 +1190,6 @@ httpStatus(http_status_t status) /* I - HTTP status code */
return ("Request Entity Too Large");
case HTTP_URI_TOO_LONG :
return ("URI Too Long");
case HTTP_UPGRADE_REQUIRED :
return ("Upgrade Required");
case HTTP_NOT_IMPLEMENTED :
return ("Not Implemented");
case HTTP_NOT_SUPPORTED :
@@ -1399,9 +1212,9 @@ httpGetDateString(time_t t) /* I - UNIX time */
tdate = gmtime(&t);
snprintf(datetime, sizeof(datetime), "%s, %02d %s %d %02d:%02d:%02d GMT",
days[tdate->tm_wday], tdate->tm_mday, months[tdate->tm_mon],
tdate->tm_year + 1900, tdate->tm_hour, tdate->tm_min, tdate->tm_sec);
sprintf(datetime, "%s, %02d %s %d %02d:%02d:%02d GMT",
days[tdate->tm_wday], tdate->tm_mday, months[tdate->tm_mon],
tdate->tm_year + 1900, tdate->tm_hour, tdate->tm_min, tdate->tm_sec);
return (datetime);
}
@@ -1455,10 +1268,6 @@ httpUpdate(http_t *http) /* I - HTTP data */
http_field_t field; /* Field index */
int major, minor; /* HTTP version numbers */
http_status_t status; /* Authorization status */
#ifdef HAVE_LIBSSL
SSL_CTX *context; /* Context for encryption */
SSL *conn; /* Connection for encryption */
#endif /* HAVE_LIBSSL */
DEBUG_printf(("httpUpdate(%08x)\n", http));
@@ -1492,43 +1301,6 @@ httpUpdate(http_t *http) /* I - HTTP data */
if (http->status == HTTP_CONTINUE)
return (http->status);
#ifdef HAVE_LIBSSL
if (http->status == HTTP_SWITCHING_PROTOCOLS && !http->tls)
{
context = SSL_CTX_new(SSLv23_method());
conn = SSL_new(context);
SSL_set_fd(conn, http->fd);
if (SSL_connect(conn) != 1)
{
SSL_CTX_free(context);
SSL_free(conn);
#if defined(WIN32) || defined(__EMX__)
http->error = WSAGetLastError();
#else
http->error = errno;
#endif /* WIN32 || __EMX__ */
http->status = HTTP_ERROR;
#ifdef WIN32
closesocket(http->fd);
#else
close(http->fd);
#endif
return (HTTP_ERROR);
}
http->tls = conn;
return (HTTP_CONTINUE);
}
else if (http->status == HTTP_UPGRADE_REQUIRED &&
http->encryption != HTTP_ENCRYPT_NEVER)
http->encryption = HTTP_ENCRYPT_REQUIRED;
#endif /* HAVE_LIBSSL */
httpGetLength(http);
switch (http->state)
@@ -1858,14 +1630,6 @@ http_send(http_t *http, /* I - HTTP data */
http->status = HTTP_CONTINUE;
#ifdef HAVE_LIBSSL
if (http->encryption == HTTP_ENCRYPT_REQUIRED && !http->tls)
{
httpSetField(http, HTTP_FIELD_CONNECTION, "Upgrade");
httpSetField(http, HTTP_FIELD_UPGRADE, "TLS/1.0,SSL/2.0,SSL/3.0");
}
#endif /* HAVE_LIBSSL */
if (httpPrintf(http, "%s %s HTTP/1.1\r\n", codes[request], buf) < 1)
{
http->status = HTTP_ERROR;
@@ -1896,75 +1660,6 @@ http_send(http_t *http, /* I - HTTP data */
}
#ifdef HAVE_LIBSSL
/*
* 'http_upgrade()' - Force upgrade to TLS encryption.
*/
static int /* O - Status of connection */
http_upgrade(http_t *http) /* I - HTTP data */
{
SSL_CTX *context; /* Context for encryption */
SSL *conn; /* Connection for encryption */
char buffer[1024]; /* Status from server... */
/*
* Send an OPTIONS request to the server, requiring SSL or TLS
* encryption on the link...
*/
if (httpPrintf(http, "OPTIONS * HTTP/1.1\r\n") < 0)
return (-1);
if (httpPrintf(http, "Host: %s\r\n", http->hostname) < 0)
return (-1);
if (httpPrintf(http, "Connection: upgrade\r\n") < 0)
return (-1);
if (httpPrintf(http, "Upgrade: TLS/1.0, SSL/2.0, SSL/3.0\r\n") < 0)
return (-1);
if (httpPrintf(http, "\r\n") < 0)
return (-1);
/*
* Wait for the response data...
*/
while (httpGets(buffer, sizeof(buffer), http) != NULL)
if (!buffer[0])
break;
context = SSL_CTX_new(SSLv23_method());
conn = SSL_new(context);
SSL_set_fd(conn, http->fd);
if (SSL_connect(conn) != 1)
{
SSL_CTX_free(context);
SSL_free(conn);
#if defined(WIN32) || defined(__EMX__)
http->error = WSAGetLastError();
#else
http->error = errno;
#endif /* WIN32 || __EMX__ */
http->status = HTTP_ERROR;
#ifdef WIN32
closesocket(http->fd);
#else
close(http->fd);
#endif
return (-1);
}
http->tls = conn;
return (0);
}
#endif /* HAVE_LIBSSL */
/*
* End of "$Id$".
*/
-17
Ver Arquivo
@@ -126,19 +126,6 @@ typedef enum
} http_encoding_t;
/*
* HTTP encryption values...
*/
typedef enum
{
HTTP_ENCRYPT_IF_REQUESTED, /* Encrypt if requested (TLS upgrade) */
HTTP_ENCRYPT_NEVER, /* Never encrypt */
HTTP_ENCRYPT_REQUIRED, /* Encryption is required (TLS upgrade) */
HTTP_ENCRYPT_ALWAYS /* Always encrypt (SSL) */
} http_encryption_t;
/*
* HTTP authentication types...
*/
@@ -163,7 +150,6 @@ typedef enum
HTTP_ERROR = -1, /* An error response from httpXxxx() */
HTTP_CONTINUE = 100, /* Everything OK, keep going... */
HTTP_SWITCHING_PROTOCOLS, /* HTTP upgrade to TLS/SSL */
HTTP_OK = 200, /* OPTIONS/GET/HEAD/POST/TRACE command was successful */
HTTP_CREATED, /* PUT command was successful */
@@ -196,7 +182,6 @@ typedef enum
HTTP_REQUEST_TOO_LARGE, /* Request entity too large */
HTTP_URI_TOO_LONG, /* URI too long */
HTTP_UNSUPPORTED_MEDIATYPE, /* The requested media type is unsupported */
HTTP_UPGRADE_REQUIRED = 426, /* Upgrade to SSL/TLS required */
HTTP_SERVER_ERROR = 500, /* Internal server error */
HTTP_NOT_IMPLEMENTED, /* Feature not implemented */
@@ -276,7 +261,6 @@ typedef struct
/* Nonce value */
int nonce_count; /* Nonce count */
void *tls; /* TLS state information */
http_encryption_t encryption; /* Encryption requirements */
} http_t;
@@ -291,7 +275,6 @@ extern int httpCheck(http_t *http);
extern void httpClose(http_t *http);
extern http_t *httpConnect(const char *host, int port);
extern int httpDelete(http_t *http, const char *uri);
extern int httpEncryption(http_t *http, http_encryption_t e);
# define httpError(http) ((http)->error)
extern void httpFlush(http_t *http);
extern int httpGet(http_t *http, const char *uri);
+19 -39
Ver Arquivo
@@ -93,7 +93,7 @@ ippAddBoolean(ipp_t *ipp, /* I - IPP request */
ipp_attribute_t *attr; /* New attribute */
DEBUG_printf(("ippAddBoolean(%p, %02x, \'%s\', %d)\n", ipp, group, name, value));
DEBUG_printf(("ippAddBoolean(%08x, %02x, \'%s\', %d)\n", ipp, group, name, value));
if (ipp == NULL || name == NULL)
return (NULL);
@@ -125,7 +125,7 @@ ippAddBooleans(ipp_t *ipp, /* I - IPP request */
ipp_attribute_t *attr; /* New attribute */
DEBUG_printf(("ippAddBooleans(%p, %02x, \'%s\', %d, %p)\n", ipp,
DEBUG_printf(("ippAddBooleans(%08x, %02x, \'%s\', %d, %08x)\n", ipp,
group, name, num_values, values));
if (ipp == NULL || name == NULL)
@@ -159,7 +159,7 @@ ippAddDate(ipp_t *ipp, /* I - IPP request */
ipp_attribute_t *attr; /* New attribute */
DEBUG_printf(("ippAddDate(%p, %02x, \'%s\', %p)\n", ipp, group, name,
DEBUG_printf(("ippAddDate(%08x, %02x, \'%s\', %08x)\n", ipp, group, name,
value));
if (ipp == NULL || name == NULL || value == NULL)
@@ -191,7 +191,7 @@ ippAddInteger(ipp_t *ipp, /* I - IPP request */
ipp_attribute_t *attr; /* New attribute */
DEBUG_printf(("ippAddInteger(%p, %d, \'%s\', %d)\n", ipp, group, name,
DEBUG_printf(("ippAddInteger(%08x, %d, \'%s\', %d)\n", ipp, group, name,
value));
if (ipp == NULL || name == NULL)
@@ -268,10 +268,9 @@ ippAddString(ipp_t *ipp, /* I - IPP request */
attr->group_tag = group;
attr->value_tag = type;
attr->values[0].string.charset = charset ? strdup(charset) : NULL;
attr->values[0].string.text = value ? strdup(value) : NULL;
attr->values[0].string.text = strdup(value);
if ((type == IPP_TAG_LANGUAGE || type == IPP_TAG_CHARSET) &&
attr->values[0].string.text)
if (type == IPP_TAG_LANGUAGE || type == IPP_TAG_CHARSET)
{
/*
* Convert to lowercase and change _ to - as needed...
@@ -481,7 +480,7 @@ ippAddSeparator(ipp_t *ipp) /* I - IPP request */
ipp_attribute_t *attr; /* New attribute */
DEBUG_printf(("ippAddSeparator(%p)\n", ipp));
DEBUG_printf(("ippAddSeparator(%08x)\n", ipp));
if (ipp == NULL)
return (NULL);
@@ -556,8 +555,6 @@ ippDelete(ipp_t *ipp) /* I - IPP request */
*next; /* Next attribute */
DEBUG_printf(("ippNew(): %p\n", ipp));
if (ipp == NULL)
return;
@@ -659,26 +656,23 @@ ippFindAttribute(ipp_t *ipp, /* I - IPP request */
const char *name, /* I - Name of attribute */
ipp_tag_t type) /* I - Type of attribute */
{
ipp_attribute_t *attr; /* Current atttribute */
ipp_tag_t value_tag; /* Value tag */
ipp_attribute_t *attr; /* Current atttribute */
DEBUG_printf(("ippFindAttribute(%p, \'%s\')\n", ipp, name));
DEBUG_printf(("ippFindAttribute(%08x, \'%s\')\n", ipp, name));
if (ipp == NULL || name == NULL)
return (NULL);
for (attr = ipp->attrs; attr != NULL; attr = attr->next)
{
DEBUG_printf(("ippFindAttribute: attr = %p, name = \'%s\'\n", attr,
DEBUG_printf(("ippFindAttribute: attr = %08x, name = \'%s\'\n", attr,
attr->name));
value_tag = attr->value_tag & ~IPP_TAG_COPY;
if (attr->name != NULL && strcasecmp(attr->name, name) == 0 &&
(value_tag == type || type == IPP_TAG_ZERO ||
(value_tag == IPP_TAG_TEXTLANG && type == IPP_TAG_TEXT) ||
(value_tag == IPP_TAG_NAMELANG && type == IPP_TAG_NAME)))
(attr->value_tag == type || type == IPP_TAG_ZERO ||
(attr->value_tag == IPP_TAG_TEXTLANG && type == IPP_TAG_TEXT) ||
(attr->value_tag == IPP_TAG_NAMELANG && type == IPP_TAG_NAME)))
return (attr);
}
@@ -733,7 +727,7 @@ ippLength(ipp_t *ipp) /* I - IPP request */
bytes += 2 * attr->num_values; /* Name lengths */
bytes += 2 * attr->num_values; /* Value lengths */
switch (attr->value_tag & ~IPP_TAG_COPY)
switch (attr->value_tag)
{
case IPP_TAG_INTEGER :
case IPP_TAG_ENUM :
@@ -814,8 +808,6 @@ ippNew(void)
temp->request.any.version[1] = 1;
}
DEBUG_printf(("ippNew(): %p\n", temp));
return (temp);
}
@@ -835,7 +827,7 @@ ippRead(http_t *http, /* I - HTTP data */
ipp_tag_t tag; /* Current tag */
DEBUG_printf(("ippRead(%p, %p)\n", http, ipp));
DEBUG_printf(("ippRead(%08x, %08x)\n", http, ipp));
if (http == NULL || ipp == NULL)
return (IPP_ERROR);
@@ -881,10 +873,6 @@ ippRead(http_t *http, /* I - HTTP data */
ipp->current = NULL;
ipp->curtag = IPP_TAG_ZERO;
DEBUG_printf(("ippRead: version=%d.%d\n", buffer[0], buffer[1]));
DEBUG_printf(("ippRead: op_status=%04x\n", ipp->request.any.op_status));
DEBUG_printf(("ippRead: request_id=%d\n", ipp->request.any.request_id));
/*
* If blocking is disabled, stop here...
*/
@@ -1219,10 +1207,6 @@ ippWrite(http_t *http, /* I - HTTP data */
ipp->current = ipp->attrs;
ipp->curtag = IPP_TAG_ZERO;
DEBUG_printf(("ippWrite: version=%d.%d\n", buffer[0], buffer[1]));
DEBUG_printf(("ippWrite: op_status=%04x\n", ipp->request.any.op_status));
DEBUG_printf(("ippWrite: request_id=%d\n", ipp->request.any.request_id));
/*
* If blocking is disabled, stop here...
*/
@@ -1268,7 +1252,7 @@ ippWrite(http_t *http, /* I - HTTP data */
memcpy(bufptr, attr->name, n);
bufptr += n;
switch (attr->value_tag & ~IPP_TAG_COPY)
switch (attr->value_tag)
{
case IPP_TAG_INTEGER :
case IPP_TAG_ENUM :
@@ -1463,7 +1447,7 @@ ippWrite(http_t *http, /* I - HTTP data */
n = strlen(attr->values[i].string.charset) +
strlen(attr->values[i].string.text) +
4;
2;
if ((sizeof(buffer) - (bufptr - buffer)) < (n + 2))
{
@@ -1634,7 +1618,7 @@ _ipp_add_attr(ipp_t *ipp, /* I - IPP request */
ipp_attribute_t *attr; /* New attribute */
DEBUG_printf(("_ipp_add_attr(%p, %d)\n", ipp, num_values));
DEBUG_printf(("_ipp_add_attr(%08x, %d)\n", ipp, num_values));
if (ipp == NULL || num_values < 0)
return (NULL);
@@ -1654,8 +1638,6 @@ _ipp_add_attr(ipp_t *ipp, /* I - IPP request */
ipp->last = attr;
DEBUG_printf(("_ipp_add_attr(): %p\n", attr));
return (attr);
}
@@ -1670,8 +1652,6 @@ _ipp_free_attr(ipp_attribute_t *attr) /* I - Attribute to free */
int i; /* Looping var */
DEBUG_printf(("_ipp_free_attr(): %p\n", attr));
switch (attr->value_tag)
{
case IPP_TAG_TEXT :
@@ -1691,7 +1671,7 @@ _ipp_free_attr(ipp_attribute_t *attr) /* I - Attribute to free */
case IPP_TAG_NAMELANG :
for (i = 0; i < attr->num_values; i ++)
{
if (attr->values[i].string.charset && i == 0)
if (attr->values[i].string.charset)
free(attr->values[i].string.charset);
free(attr->values[i].string.text);
}
+1 -2
Ver Arquivo
@@ -100,8 +100,7 @@ typedef enum /**** Format tags for attribute formats... ****/
IPP_TAG_URISCHEME,
IPP_TAG_CHARSET,
IPP_TAG_LANGUAGE,
IPP_TAG_MIMETYPE,
IPP_TAG_COPY = 0x80000000
IPP_TAG_MIMETYPE
} ipp_tag_t;
typedef enum /**** Resolution units... ****/
+3 -8
Ver Arquivo
@@ -263,10 +263,7 @@ cupsLangGet(const char *language) /* I - Language or locale */
*/
if (fp == NULL)
{
strncpy(line, lang_default[0], sizeof(line) - 1);
line[sizeof(line) - 1] = '\0';
}
strcpy(line, lang_default[0]);
else if (fgets(line, sizeof(line), fp) == NULL)
{
/*
@@ -323,8 +320,7 @@ cupsLangGet(const char *language) /* I - Language or locale */
*/
lang->used ++;
strncpy(lang->language, langname, sizeof(lang->language) - 1);
lang->language[sizeof(lang->language) - 1] = '\0';
strcpy(lang->language, langname);
for (i = 0; i < (sizeof(lang_encodings) / sizeof(lang_encodings[0])); i ++)
if (strcmp(lang_encodings[i], line) == 0)
@@ -351,8 +347,7 @@ cupsLangGet(const char *language) /* I - Language or locale */
if (lang_default[count] == NULL)
break;
strncpy(line, lang_default[count], sizeof(line) - 1);
/* Already set last byte to 0 above... */
strcpy(line, lang_default[count]);
}
else if (fgets(line, sizeof(line), fp) == NULL)
break;
+2 -6
Ver Arquivo
@@ -118,9 +118,7 @@ ppdConflicts(ppd_file_t *ppd) /* I - PPD to check */
if (c1->marked)
break;
if (j == 0 ||
strcasecmp(c1->choice, "None") == 0 ||
strcasecmp(c1->choice, "Off") == 0 ||
if (j == 0 || strcasecmp(c1->choice, "None") == 0 ||
strcasecmp(c1->choice, "False") == 0)
c1 = NULL;
}
@@ -151,9 +149,7 @@ ppdConflicts(ppd_file_t *ppd) /* I - PPD to check */
if (c2->marked)
break;
if (j == 0 ||
strcasecmp(c2->choice, "None") == 0 ||
strcasecmp(c2->choice, "Off") == 0 ||
if (j == 0 || strcasecmp(c2->choice, "None") == 0 ||
strcasecmp(c2->choice, "False") == 0)
c2 = NULL;
}
+1 -40
Ver Arquivo
@@ -108,7 +108,6 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
ppd_emul_t *emul; /* Current emulation */
ppd_group_t *group; /* Current group */
char **font; /* Current font */
char **filter; /* Current filter */
/*
@@ -122,10 +121,6 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
* Free all strings at the top level...
*/
safe_free(ppd->patches);
safe_free(ppd->jcl_begin);
safe_free(ppd->jcl_ps);
safe_free(ppd->jcl_end);
safe_free(ppd->lang_encoding);
safe_free(ppd->lang_version);
safe_free(ppd->modelname);
@@ -176,18 +171,6 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
if (ppd->num_consts > 0)
safe_free(ppd->consts);
/*
* Free any filters...
*/
if (ppd->num_filters > 0)
{
for (i = ppd->num_filters, filter = ppd->filters; i > 0; i --, filter ++)
safe_free(*filter);
safe_free(ppd->filters);
}
/*
* Free any fonts...
*/
@@ -1617,29 +1600,7 @@ ppd_read(FILE *fp, /* I - File to read from */
*lineptr++ = ch;
if (ch == '\"')
{
endquote = !endquote;
if (!endquote)
{
/*
* End of quoted string; ignore trailing characters...
*/
while ((ch = getc(fp)) != EOF)
if (ch == '\n')
break;
else if (ch == '\r')
{
ch = getc(fp);
if (ch != '\n')
ungetc(ch, fp);
break;
}
break;
}
}
endquote = !endquote;
}
}
-11
Ver Arquivo
@@ -171,17 +171,6 @@ main(int argc, /* I - Number of command-line arguments */
}
}
printf(" num_profiles = %d\n", ppd->num_profiles);
for (j = 0; j < ppd->num_profiles; j ++)
printf(" profiles[%d] = %s/%s %.3f %.3f [ %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f ]\n",
j, ppd->profiles[j].resolution, ppd->profiles[j].media_type,
ppd->profiles[j].gamma, ppd->profiles[j].density,
ppd->profiles[j].matrix[0][0], ppd->profiles[j].matrix[0][1],
ppd->profiles[j].matrix[0][2], ppd->profiles[j].matrix[1][0],
ppd->profiles[j].matrix[1][1], ppd->profiles[j].matrix[1][2],
ppd->profiles[j].matrix[2][0], ppd->profiles[j].matrix[2][1],
ppd->profiles[j].matrix[2][2]);
printf(" num_fonts = %d\n", ppd->num_fonts);
for (j = 0; j < ppd->num_fonts; j ++)
printf(" fonts[%d] = %s\n", j, ppd->fonts[j]);
+1 -114
Ver Arquivo
@@ -24,10 +24,8 @@
*
* Contents:
*
* cupsEncryption() - Get the default encryption settings...
* cupsGetPassword() - Get a password from the user...
* cupsServer() - Return the hostname of the default server...
* cupsSetEncryption() - Set the encryption preference.
* cupsSetPasswordCB() - Set the password callback for CUPS.
* cupsSetServer() - Set the default server name...
* cupsSetUser() - Set the default user name...
@@ -56,105 +54,11 @@ static const char *cups_get_password(const char *prompt);
* Local globals...
*/
static http_encryption_t cups_encryption = (http_encryption_t)-1;
static char cups_user[65] = "",
cups_server[256] = "";
static const char *(*cups_pwdcb)(const char *) = cups_get_password;
/*
* 'cupsEncryption()' - Get the default encryption settings...
*/
http_encryption_t
cupsEncryption(void)
{
FILE *fp; /* client.conf file */
char *encryption; /* CUPS_ENCRYPTION variable */
const char *home; /* Home directory of user */
static char line[1024]; /* Line from file */
/*
* First see if we have already set the encryption stuff...
*/
if (cups_encryption == (http_encryption_t)-1)
{
/*
* Then see if the CUPS_ENCRYPTION environment variable is set...
*/
if ((encryption = getenv("CUPS_ENCRYPTION")) == NULL)
{
/*
* Next check to see if we have a $HOME/.cupsrc or client.conf file...
*/
if ((home = getenv("HOME")) != NULL)
{
snprintf(line, sizeof(line), "%s/.cupsrc", home);
fp = fopen(line, "r");
}
else
fp = NULL;
if (fp == NULL)
{
if ((home = getenv("CUPS_SERVERROOT")) != NULL)
{
snprintf(line, sizeof(line), "%s/client.conf", home);
fp = fopen(line, "r");
}
else
fp = fopen(CUPS_SERVERROOT "/client.conf", "r");
}
encryption = "IfRequested";
if (fp != NULL)
{
/*
* Read the config file and look for a ServerName line...
*/
while (fgets(line, sizeof(line), fp) != NULL)
if (strncmp(line, "Encryption ", 11) == 0)
{
/*
* Got it! Drop any trailing newline and find the name...
*/
encryption = line + strlen(line) - 1;
if (*encryption == '\n')
*encryption = '\0';
for (encryption = line + 11; isspace(*encryption); encryption ++);
break;
}
fclose(fp);
}
}
/*
* Set the encryption preference...
*/
if (strcasecmp(encryption, "never") == 0)
cups_encryption = HTTP_ENCRYPT_NEVER;
else if (strcasecmp(encryption, "always") == 0)
cups_encryption = HTTP_ENCRYPT_ALWAYS;
else if (strcasecmp(encryption, "required") == 0)
cups_encryption = HTTP_ENCRYPT_REQUIRED;
else
cups_encryption = HTTP_ENCRYPT_IF_REQUESTED;
}
return (cups_encryption);
}
/*
* 'cupsGetPassword()' - Get a password from the user...
*/
@@ -166,17 +70,6 @@ cupsGetPassword(const char *prompt) /* I - Prompt string */
}
/*
* 'cupsSetEncryption()' - Set the encryption preference.
*/
void
cupsSetEncryption(http_encryption_t e) /* I - New encryption preference */
{
cups_encryption = e;
}
/*
* 'cupsServer()' - Return the hostname of the default server...
*/
@@ -374,7 +267,7 @@ cupsUser(void)
else
{
/*
* Copy the username...
* Rewind the password file again and copy the username...
*/
setpwent();
@@ -382,12 +275,6 @@ cupsUser(void)
strncpy(cups_user, pwd->pw_name, sizeof(cups_user) - 1);
cups_user[sizeof(cups_user) - 1] = '\0';
}
/*
* Rewind the password file again...
*/
setpwent();
}
return (cups_user);
+81 -155
Ver Arquivo
@@ -467,7 +467,6 @@ cupsGetClasses(char ***classes) /* O - Classes */
*
* attributes-charset
* attributes-natural-language
* requested-attributes
*/
request = ippNew();
@@ -483,9 +482,6 @@ cupsGetClasses(char ***classes) /* O - Classes */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes", NULL, "printer-name");
/*
* Do the request and get back a response...
*/
@@ -572,10 +568,10 @@ cupsGetDefault(void)
* Next check to see if we have a client.conf file...
*/
if ((var = getenv("CUPS_SERVERROOT")) == NULL)
var = CUPS_SERVERROOT;
snprintf(line, sizeof(line), "%s/client.conf", var);
if ((var = getenv("CUPS_SERVERROOT")) != NULL)
snprintf(line, sizeof(line), "%s/client.conf", var);
else
strcpy(line, CUPS_SERVERROOT "/client.conf");
if ((fp = fopen(line, "r")) != NULL)
{
@@ -673,7 +669,6 @@ cupsGetDefault(void)
const char * /* O - Filename for PPD file */
cupsGetPPD(const char *name) /* I - Printer name */
{
int i; /* Looping var */
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* Current attribute */
@@ -695,12 +690,6 @@ cupsGetPPD(const char *name) /* I - Printer name */
http_status_t status; /* HTTP status from server */
char prompt[1024]; /* Prompt string */
static char filename[HTTP_MAX_URI]; /* Local filename */
static const char *requested_attrs[] =/* Requested attributes */
{
"printer-uri-supported",
"printer-type",
"member-uris"
};
if (name == NULL)
@@ -719,112 +708,81 @@ cupsGetPPD(const char *name) /* I - Printer name */
return (NULL);
}
/*
* Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri
* requested-attributes
*/
request = ippNew();
request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
request->request.op.request_id = 1;
language = cupsLangDefault();
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
snprintf(buffer, sizeof(buffer), "ipp://localhost/printers/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, buffer);
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requested-attributes",
sizeof(requested_attrs) / sizeof(requested_attrs[0]),
NULL, requested_attrs);
/*
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(cups_server, request, "/")) != NULL)
if (strchr(name, '@') == NULL)
{
last_error = response->request.status.status_code;
printer[0] = '\0';
hostname[0] = '\0';
if ((attr = ippFindAttribute(response, "member-uris", IPP_TAG_URI)) != NULL)
{
/*
* Get the first actual server and printer name in the class...
*/
for (i = 0; i < attr->num_values; i ++)
{
httpSeparate(attr->values[0].string.text, method, username, hostname,
&port, resource);
if (strncmp(resource, "/printers/", 10) == 0)
{
/*
* Found a printer!
*/
strncpy(printer, resource + 10, sizeof(printer) - 1);
printer[sizeof(printer) - 1] = '\0';
break;
}
}
}
else if ((attr = ippFindAttribute(response, "printer-uri-supported",
IPP_TAG_URI)) != NULL)
{
/*
* Get the actual server and printer names...
*/
httpSeparate(attr->values[0].string.text, method, username, hostname,
&port, resource);
strncpy(printer, strrchr(resource, '/') + 1, sizeof(printer) - 1);
printer[sizeof(printer) - 1] = '\0';
}
ippDelete(response);
/*
* Remap local hostname to localhost...
* Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri
*/
gethostname(buffer, sizeof(buffer));
request = ippNew();
if (strcasecmp(buffer, hostname) == 0)
strcpy(hostname, "localhost");
}
request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
request->request.op.request_id = 1;
cupsLangFree(language);
language = cupsLangDefault();
if (!printer[0])
return (NULL);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
/*
* Reconnect to the correct server as needed...
*/
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
if (strcasecmp(cups_server->hostname, hostname) != 0)
{
httpClose(cups_server);
snprintf(buffer, sizeof(buffer), "ipp://localhost/printers/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, buffer);
if ((cups_server = httpConnect(hostname, ippPort())) == NULL)
/*
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(cups_server, request, "/")) != NULL)
{
last_error = IPP_SERVICE_UNAVAILABLE;
return (NULL);
last_error = response->request.status.status_code;
if ((attr = ippFindAttribute(response, "printer-uri-supported",
IPP_TAG_URI)) != NULL)
{
/*
* Get the actual server and printer names...
*/
httpSeparate(attr->values[0].string.text, method, username, hostname,
&port, resource);
strcpy(printer, strrchr(resource, '/') + 1);
/*
* Remap local hostname to localhost...
*/
gethostname(buffer, sizeof(buffer));
if (strcasecmp(buffer, hostname) == 0)
strcpy(hostname, "localhost");
}
ippDelete(response);
}
cupsLangFree(language);
/*
* Reconnect to the correct server as needed...
*/
if (strcasecmp(cups_server->hostname, hostname) != 0)
{
httpClose(cups_server);
if ((cups_server = httpConnect(hostname, ippPort())) == NULL)
{
last_error = IPP_SERVICE_UNAVAILABLE;
return (NULL);
}
}
}
@@ -924,6 +882,7 @@ cupsGetPPD(const char *name) /* I - Printer name */
* OK, we need to copy the file; open the file and copy it...
*/
unlink(filename);
if ((fp = fopen(filename, "w")) == NULL)
{
/*
@@ -982,7 +941,6 @@ cupsGetPrinters(char ***printers) /* O - Printers */
*
* attributes-charset
* attributes-natural-language
* requested-attributes
*/
request = ippNew();
@@ -998,9 +956,6 @@ cupsGetPrinters(char ***printers) /* O - Printers */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes", NULL, "printer-name");
/*
* Do the request and get back a response...
*/
@@ -1271,13 +1226,8 @@ cupsTempFile(char *filename, /* I - Pointer to buffer */
int len) /* I - Size of buffer */
{
int fd; /* File descriptor for temp file */
#ifdef WIN32
char tmpdir[1024]; /* Windows temporary directory */
DWORD curtime; /* Current time */
#else
char *tmpdir; /* TMPDIR environment var */
struct timeval curtime; /* Current time */
#endif /* WIN32 */
static char buf[1024] = ""; /* Buffer if you pass in NULL and 0 */
@@ -1295,11 +1245,11 @@ cupsTempFile(char *filename, /* I - Pointer to buffer */
* See if TMPDIR is defined...
*/
#ifdef WIN32
GetTempPath(sizeof(tmpdir), tmpdir);
#else
if ((tmpdir = getenv("TMPDIR")) == NULL)
{
#ifdef WIN32
tmpdir = "C:/WINDOWS/TEMP";
#else
/*
* Put root temp files in restricted temp directory...
*/
@@ -1308,8 +1258,8 @@ cupsTempFile(char *filename, /* I - Pointer to buffer */
tmpdir = CUPS_REQUESTS "/tmp";
else
tmpdir = "/var/tmp";
}
#endif /* WIN32 */
}
/*
* Make the temporary name using the specified directory...
@@ -1317,19 +1267,6 @@ cupsTempFile(char *filename, /* I - Pointer to buffer */
do
{
#ifdef WIN32
/*
* Get the current time of day...
*/
curtime = GetTickCount();
/*
* Format a string using the hex time values...
*/
snprintf(filename, len - 1, "%s/%08lx", tmpdir, curtime);
#else
/*
* Get the current time of day...
*/
@@ -1340,9 +1277,8 @@ cupsTempFile(char *filename, /* I - Pointer to buffer */
* Format a string using the hex time values...
*/
snprintf(filename, len - 1, "%s/%08lx%05lx", tmpdir,
snprintf(filename, len, "%s/%p%05x", tmpdir,
curtime.tv_sec, curtime.tv_usec);
#endif /* WIN32 */
/*
* Open the file in "exclusive" mode, making sure that we don't
@@ -1428,10 +1364,7 @@ cups_connect(const char *name, /* I - Destination (printer[@host]) */
return (NULL);
}
else
{
httpEncryption(cups_server, cupsEncryption());
return (printer);
}
}
@@ -1450,11 +1383,10 @@ cups_local_auth(http_t *http) /* I - Connection */
return (0);
#else
int pid; /* Current process ID */
FILE *fp; /* Certificate file */
char filename[1024], /* Certificate filename */
certificate[33];/* Certificate string */
const char *root; /* Server root directory */
int pid; /* Current process ID */
FILE *fp; /* Certificate file */
char filename[1024], /* Certificate filename */
certificate[33]; /* Certificate string */
/*
@@ -1470,16 +1402,10 @@ cups_local_auth(http_t *http) /* I - Connection */
* try the root certificate...
*/
if ((root = getenv("CUPS_SERVERROOT")) == NULL)
root = CUPS_SERVERROOT;
pid = getpid();
snprintf(filename, sizeof(filename), "%s/certs/%d", root, pid);
sprintf(filename, CUPS_SERVERROOT "/certs/%d", pid);
if ((fp = fopen(filename, "r")) == NULL && pid > 0)
{
snprintf(filename, sizeof(filename), "%s/certs/0", root);
fp = fopen(filename, "r");
}
fp = fopen(CUPS_SERVERROOT "/certs/0", "r");
if (fp == NULL)
return (0);
@@ -1495,7 +1421,7 @@ cups_local_auth(http_t *http) /* I - Connection */
* Set the authorization string and return...
*/
snprintf(authstring, sizeof(authstring), "Local %s", certificate);
sprintf(authstring, "Local %s", certificate);
return (1);
#endif /* WIN32 || __EMX__ */
+539 -607
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+222 -230
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.9b1 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20001118180310Z)/Title( CUPS Configuration Management Plan)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000824182222Z)/Title( CUPS Configuration Management Plan)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
@@ -50,49 +50,48 @@
34 0 R
36 0 R
]endobj
38 0 obj<</Subtype/Link/Rect[72.0 684.0 107.8 697.0]/Border[0 0 0]/Dest[157 0 R/XYZ null 798 0]>>endobj
39 0 obj<</Subtype/Link/Rect[108.0 670.8 183.8 683.8]/Border[0 0 0]/Dest[157 0 R/XYZ null 745 0]>>endobj
40 0 obj<</Subtype/Link/Rect[108.0 657.6 203.0 670.6]/Border[0 0 0]/Dest[157 0 R/XYZ null 672 0]>>endobj
41 0 obj<</Subtype/Link/Rect[108.0 644.4 216.4 657.4]/Border[0 0 0]/Dest[157 0 R/XYZ null 467 0]>>endobj
42 0 obj<</Subtype/Link/Rect[72.0 618.0 131.6 631.0]/Border[0 0 0]/Dest[163 0 R/XYZ null 798 0]>>endobj
43 0 obj<</Subtype/Link/Rect[108.0 604.8 222.6 617.8]/Border[0 0 0]/Dest[163 0 R/XYZ null 745 0]>>endobj
44 0 obj<</Subtype/Link/Rect[108.0 591.6 202.4 604.6]/Border[0 0 0]/Dest[163 0 R/XYZ null 540 0]>>endobj
45 0 obj<</Subtype/Link/Rect[72.0 565.2 162.4 578.2]/Border[0 0 0]/Dest[169 0 R/XYZ null 798 0]>>endobj
46 0 obj<</Subtype/Link/Rect[108.0 552.0 209.7 565.0]/Border[0 0 0]/Dest[169 0 R/XYZ null 745 0]>>endobj
47 0 obj<</Subtype/Link/Rect[108.0 538.8 179.2 551.8]/Border[0 0 0]/Dest[169 0 R/XYZ null 659 0]>>endobj
48 0 obj<</Subtype/Link/Rect[108.0 525.6 246.4 538.6]/Border[0 0 0]/Dest[169 0 R/XYZ null 599 0]>>endobj
49 0 obj<</Subtype/Link/Rect[72.0 499.2 206.7 512.2]/Border[0 0 0]/Dest[175 0 R/XYZ null 798 0]>>endobj
50 0 obj<</Subtype/Link/Rect[108.0 486.0 185.0 499.0]/Border[0 0 0]/Dest[175 0 R/XYZ null 626 0]>>endobj
51 0 obj<</Subtype/Link/Rect[108.0 472.8 183.8 485.8]/Border[0 0 0]/Dest[175 0 R/XYZ null 434 0]>>endobj
52 0 obj<</Subtype/Link/Rect[108.0 459.6 171.5 472.6]/Border[0 0 0]/Dest[175 0 R/XYZ null 308 0]>>endobj
53 0 obj<</Subtype/Link/Rect[108.0 446.4 177.7 459.4]/Border[0 0 0]/Dest[175 0 R/XYZ null 222 0]>>endobj
54 0 obj<</Subtype/Link/Rect[72.0 420.0 164.9 433.0]/Border[0 0 0]/Dest[181 0 R/XYZ null 798 0]>>endobj
55 0 obj<</Subtype/Link/Rect[108.0 406.8 212.2 419.8]/Border[0 0 0]/Dest[181 0 R/XYZ null 745 0]>>endobj
56 0 obj<</Subtype/Link/Rect[108.0 393.6 173.4 406.6]/Border[0 0 0]/Dest[181 0 R/XYZ null 325 0]>>endobj
57 0 obj<</Subtype/Link/Rect[108.0 380.4 157.5 393.4]/Border[0 0 0]/Dest[181 0 R/XYZ null 252 0]>>endobj
58 0 obj<</Subtype/Link/Rect[108.0 367.2 158.7 380.2]/Border[0 0 0]/Dest[181 0 R/XYZ null 179 0]>>endobj
59 0 obj<</Subtype/Link/Rect[72.0 340.8 124.2 353.8]/Border[0 0 0]/Dest[187 0 R/XYZ null 798 0]>>endobj
60 0 obj<</Subtype/Link/Rect[108.0 327.6 155.0 340.6]/Border[0 0 0]/Dest[187 0 R/XYZ null 745 0]>>endobj
61 0 obj<</Subtype/Link/Rect[108.0 314.4 172.8 327.4]/Border[0 0 0]/Dest[187 0 R/XYZ null 566 0]>>endobj
62 0 obj<</Subtype/Link/Rect[72.0 288.0 185.1 301.0]/Border[0 0 0]/Dest[193 0 R/XYZ null 798 0]>>endobj
63 0 obj<</Subtype/Link/Rect[108.0 274.8 181.0 287.8]/Border[0 0 0]/Dest[193 0 R/XYZ null 706 0]>>endobj
64 0 obj<</Subtype/Link/Rect[144.0 261.6 206.0 274.6]/Border[0 0 0]/Dest[193 0 R/XYZ null 657 0]>>endobj
65 0 obj<</Subtype/Link/Rect[144.0 248.4 238.4 261.4]/Border[0 0 0]/Dest[193 0 R/XYZ null 574 0]>>endobj
66 0 obj<</Subtype/Link/Rect[108.0 235.2 169.7 248.2]/Border[0 0 0]/Dest[196 0 R/XYZ null 737 0]>>endobj
67 0 obj<</Subtype/Link/Rect[144.0 222.0 206.0 235.0]/Border[0 0 0]/Dest[196 0 R/XYZ null 688 0]>>endobj
68 0 obj<</Subtype/Link/Rect[144.0 208.8 238.4 221.8]/Border[0 0 0]/Dest[196 0 R/XYZ null 566 0]>>endobj
69 0 obj<</Subtype/Link/Rect[108.0 195.6 164.8 208.6]/Border[0 0 0]/Dest[196 0 R/XYZ null 369 0]>>endobj
70 0 obj<</Subtype/Link/Rect[144.0 182.4 206.0 195.4]/Border[0 0 0]/Dest[196 0 R/XYZ null 320 0]>>endobj
71 0 obj<</Subtype/Link/Rect[144.0 169.2 238.4 182.2]/Border[0 0 0]/Dest[196 0 R/XYZ null 250 0]>>endobj
72 0 obj<</Subtype/Link/Rect[108.0 156.0 168.5 169.0]/Border[0 0 0]/Dest[199 0 R/XYZ null 726 0]>>endobj
73 0 obj<</Subtype/Link/Rect[144.0 142.8 206.0 155.8]/Border[0 0 0]/Dest[199 0 R/XYZ null 678 0]>>endobj
74 0 obj<</Subtype/Link/Rect[144.0 129.6 238.4 142.6]/Border[0 0 0]/Dest[199 0 R/XYZ null 542 0]>>endobj
75 0 obj<</Subtype/Link/Rect[108.0 116.4 153.2 129.4]/Border[0 0 0]/Dest[199 0 R/XYZ null 452 0]>>endobj
76 0 obj<</Subtype/Link/Rect[144.0 103.2 206.0 116.2]/Border[0 0 0]/Dest[199 0 R/XYZ null 404 0]>>endobj
77 0 obj<</Subtype/Link/Rect[144.0 90.0 238.4 103.0]/Border[0 0 0]/Dest[199 0 R/XYZ null 334 0]>>endobj
78 0 obj<</Subtype/Link/Rect[108.0 76.8 170.9 89.8]/Border[0 0 0]/Dest[199 0 R/XYZ null 236 0]>>endobj
79 0 obj<</Subtype/Link/Rect[144.0 63.6 206.0 76.6]/Border[0 0 0]/Dest[199 0 R/XYZ null 188 0]>>endobj
80 0 obj[38 0 R
38 0 obj<</Subtype/Link/Rect[72.0 670.8 107.8 683.8]/Border[0 0 0]/Dest[157 0 R/XYZ null 798 0]>>endobj
39 0 obj<</Subtype/Link/Rect[108.0 657.6 183.8 670.6]/Border[0 0 0]/Dest[157 0 R/XYZ null 745 0]>>endobj
40 0 obj<</Subtype/Link/Rect[108.0 644.4 203.0 657.4]/Border[0 0 0]/Dest[157 0 R/XYZ null 672 0]>>endobj
41 0 obj<</Subtype/Link/Rect[108.0 631.2 216.4 644.2]/Border[0 0 0]/Dest[157 0 R/XYZ null 467 0]>>endobj
42 0 obj<</Subtype/Link/Rect[72.0 604.8 131.6 617.8]/Border[0 0 0]/Dest[163 0 R/XYZ null 798 0]>>endobj
43 0 obj<</Subtype/Link/Rect[108.0 591.6 222.6 604.6]/Border[0 0 0]/Dest[163 0 R/XYZ null 745 0]>>endobj
44 0 obj<</Subtype/Link/Rect[108.0 578.4 202.4 591.4]/Border[0 0 0]/Dest[163 0 R/XYZ null 540 0]>>endobj
45 0 obj<</Subtype/Link/Rect[72.0 552.0 162.4 565.0]/Border[0 0 0]/Dest[169 0 R/XYZ null 798 0]>>endobj
46 0 obj<</Subtype/Link/Rect[108.0 538.8 209.7 551.8]/Border[0 0 0]/Dest[169 0 R/XYZ null 745 0]>>endobj
47 0 obj<</Subtype/Link/Rect[108.0 525.6 179.2 538.6]/Border[0 0 0]/Dest[169 0 R/XYZ null 659 0]>>endobj
48 0 obj<</Subtype/Link/Rect[108.0 512.4 246.4 525.4]/Border[0 0 0]/Dest[169 0 R/XYZ null 599 0]>>endobj
49 0 obj<</Subtype/Link/Rect[72.0 486.0 206.7 499.0]/Border[0 0 0]/Dest[175 0 R/XYZ null 798 0]>>endobj
50 0 obj<</Subtype/Link/Rect[108.0 472.8 185.0 485.8]/Border[0 0 0]/Dest[175 0 R/XYZ null 626 0]>>endobj
51 0 obj<</Subtype/Link/Rect[108.0 459.6 183.8 472.6]/Border[0 0 0]/Dest[175 0 R/XYZ null 434 0]>>endobj
52 0 obj<</Subtype/Link/Rect[108.0 446.4 171.5 459.4]/Border[0 0 0]/Dest[175 0 R/XYZ null 308 0]>>endobj
53 0 obj<</Subtype/Link/Rect[108.0 433.2 177.7 446.2]/Border[0 0 0]/Dest[175 0 R/XYZ null 222 0]>>endobj
54 0 obj<</Subtype/Link/Rect[72.0 406.8 164.9 419.8]/Border[0 0 0]/Dest[181 0 R/XYZ null 798 0]>>endobj
55 0 obj<</Subtype/Link/Rect[108.0 393.6 212.2 406.6]/Border[0 0 0]/Dest[181 0 R/XYZ null 745 0]>>endobj
56 0 obj<</Subtype/Link/Rect[108.0 380.4 173.4 393.4]/Border[0 0 0]/Dest[181 0 R/XYZ null 325 0]>>endobj
57 0 obj<</Subtype/Link/Rect[108.0 367.2 157.5 380.2]/Border[0 0 0]/Dest[181 0 R/XYZ null 252 0]>>endobj
58 0 obj<</Subtype/Link/Rect[108.0 354.0 158.7 367.0]/Border[0 0 0]/Dest[181 0 R/XYZ null 179 0]>>endobj
59 0 obj<</Subtype/Link/Rect[72.0 327.6 124.2 340.6]/Border[0 0 0]/Dest[187 0 R/XYZ null 798 0]>>endobj
60 0 obj<</Subtype/Link/Rect[108.0 314.4 155.0 327.4]/Border[0 0 0]/Dest[187 0 R/XYZ null 745 0]>>endobj
61 0 obj<</Subtype/Link/Rect[108.0 301.2 172.8 314.2]/Border[0 0 0]/Dest[187 0 R/XYZ null 566 0]>>endobj
62 0 obj<</Subtype/Link/Rect[72.0 274.8 185.1 287.8]/Border[0 0 0]/Dest[193 0 R/XYZ null 798 0]>>endobj
63 0 obj<</Subtype/Link/Rect[108.0 261.6 181.0 274.6]/Border[0 0 0]/Dest[193 0 R/XYZ null 706 0]>>endobj
64 0 obj<</Subtype/Link/Rect[144.0 248.4 206.0 261.4]/Border[0 0 0]/Dest[193 0 R/XYZ null 657 0]>>endobj
65 0 obj<</Subtype/Link/Rect[144.0 235.2 238.4 248.2]/Border[0 0 0]/Dest[193 0 R/XYZ null 574 0]>>endobj
66 0 obj<</Subtype/Link/Rect[108.0 222.0 169.7 235.0]/Border[0 0 0]/Dest[196 0 R/XYZ null 737 0]>>endobj
67 0 obj<</Subtype/Link/Rect[144.0 208.8 206.0 221.8]/Border[0 0 0]/Dest[196 0 R/XYZ null 688 0]>>endobj
68 0 obj<</Subtype/Link/Rect[144.0 195.6 238.4 208.6]/Border[0 0 0]/Dest[196 0 R/XYZ null 566 0]>>endobj
69 0 obj<</Subtype/Link/Rect[108.0 182.4 164.8 195.4]/Border[0 0 0]/Dest[196 0 R/XYZ null 369 0]>>endobj
70 0 obj<</Subtype/Link/Rect[144.0 169.2 206.0 182.2]/Border[0 0 0]/Dest[196 0 R/XYZ null 320 0]>>endobj
71 0 obj<</Subtype/Link/Rect[144.0 156.0 238.4 169.0]/Border[0 0 0]/Dest[196 0 R/XYZ null 250 0]>>endobj
72 0 obj<</Subtype/Link/Rect[108.0 142.8 168.5 155.8]/Border[0 0 0]/Dest[199 0 R/XYZ null 726 0]>>endobj
73 0 obj<</Subtype/Link/Rect[144.0 129.6 206.0 142.6]/Border[0 0 0]/Dest[199 0 R/XYZ null 678 0]>>endobj
74 0 obj<</Subtype/Link/Rect[144.0 116.4 238.4 129.4]/Border[0 0 0]/Dest[199 0 R/XYZ null 542 0]>>endobj
75 0 obj<</Subtype/Link/Rect[108.0 103.2 153.2 116.2]/Border[0 0 0]/Dest[199 0 R/XYZ null 452 0]>>endobj
76 0 obj<</Subtype/Link/Rect[144.0 90.0 206.0 103.0]/Border[0 0 0]/Dest[199 0 R/XYZ null 404 0]>>endobj
77 0 obj<</Subtype/Link/Rect[144.0 76.8 238.4 89.8]/Border[0 0 0]/Dest[199 0 R/XYZ null 334 0]>>endobj
78 0 obj<</Subtype/Link/Rect[108.0 63.6 170.9 76.6]/Border[0 0 0]/Dest[199 0 R/XYZ null 236 0]>>endobj
79 0 obj[38 0 R
39 0 R
40 0 R
41 0 R
@@ -133,20 +132,21 @@
76 0 R
77 0 R
78 0 R
79 0 R
]endobj
81 0 obj<</Subtype/Link/Rect[108.0 684.0 202.4 697.0]/Border[0 0 0]/Dest[202 0 R/XYZ null 768 0]>>endobj
82 0 obj<</Subtype/Link/Rect[72.0 670.8 123.3 683.8]/Border[0 0 0]/Dest[202 0 R/XYZ null 613 0]>>endobj
83 0 obj<</Subtype/Link/Rect[108.0 657.6 170.0 670.6]/Border[0 0 0]/Dest[202 0 R/XYZ null 565 0]>>endobj
84 0 obj<</Subtype/Link/Rect[108.0 644.4 202.4 657.4]/Border[0 0 0]/Dest[202 0 R/XYZ null 508 0]>>endobj
85 0 obj<</Subtype/Link/Rect[72.0 631.2 133.7 644.2]/Border[0 0 0]/Dest[202 0 R/XYZ null 354 0]>>endobj
86 0 obj<</Subtype/Link/Rect[108.0 618.0 170.0 631.0]/Border[0 0 0]/Dest[202 0 R/XYZ null 306 0]>>endobj
87 0 obj<</Subtype/Link/Rect[108.0 604.8 202.4 617.8]/Border[0 0 0]/Dest[202 0 R/XYZ null 196 0]>>endobj
88 0 obj<</Subtype/Link/Rect[72.0 591.6 113.6 604.6]/Border[0 0 0]/Dest[205 0 R/XYZ null 759 0]>>endobj
89 0 obj<</Subtype/Link/Rect[108.0 578.4 202.4 591.4]/Border[0 0 0]/Dest[205 0 R/XYZ null 710 0]>>endobj
90 0 obj<</Subtype/Link/Rect[108.0 565.2 157.2 578.2]/Border[0 0 0]/Dest[205 0 R/XYZ null 411 0]>>endobj
91 0 obj<</Subtype/Link/Rect[36.0 538.8 194.2 551.8]/Border[0 0 0]/Dest[211 0 R/XYZ null 798 0]>>endobj
92 0 obj[81 0 R
80 0 obj<</Subtype/Link/Rect[108.0 670.8 170.0 683.8]/Border[0 0 0]/Dest[199 0 R/XYZ null 188 0]>>endobj
81 0 obj<</Subtype/Link/Rect[108.0 657.6 202.4 670.6]/Border[0 0 0]/Dest[202 0 R/XYZ null 768 0]>>endobj
82 0 obj<</Subtype/Link/Rect[72.0 644.4 123.3 657.4]/Border[0 0 0]/Dest[202 0 R/XYZ null 613 0]>>endobj
83 0 obj<</Subtype/Link/Rect[108.0 631.2 170.0 644.2]/Border[0 0 0]/Dest[202 0 R/XYZ null 565 0]>>endobj
84 0 obj<</Subtype/Link/Rect[108.0 618.0 202.4 631.0]/Border[0 0 0]/Dest[202 0 R/XYZ null 508 0]>>endobj
85 0 obj<</Subtype/Link/Rect[72.0 604.8 133.7 617.8]/Border[0 0 0]/Dest[202 0 R/XYZ null 354 0]>>endobj
86 0 obj<</Subtype/Link/Rect[108.0 591.6 170.0 604.6]/Border[0 0 0]/Dest[202 0 R/XYZ null 306 0]>>endobj
87 0 obj<</Subtype/Link/Rect[108.0 578.4 202.4 591.4]/Border[0 0 0]/Dest[202 0 R/XYZ null 196 0]>>endobj
88 0 obj<</Subtype/Link/Rect[72.0 565.2 113.6 578.2]/Border[0 0 0]/Dest[205 0 R/XYZ null 759 0]>>endobj
89 0 obj<</Subtype/Link/Rect[108.0 552.0 202.4 565.0]/Border[0 0 0]/Dest[205 0 R/XYZ null 710 0]>>endobj
90 0 obj<</Subtype/Link/Rect[108.0 538.8 157.2 551.8]/Border[0 0 0]/Dest[205 0 R/XYZ null 411 0]>>endobj
91 0 obj<</Subtype/Link/Rect[36.0 512.4 194.2 525.4]/Border[0 0 0]/Dest[211 0 R/XYZ null 798 0]>>endobj
92 0 obj[80 0 R
81 0 R
82 0 R
83 0 R
84 0 R
@@ -284,12 +284,14 @@ endobj
%°ß{ZÀ‘›ì ù=Å¡­´e&=@~¯thG„â‚¥Âèo‘ßoXÀQã¸÷}ô•±mç˜Á8lc®Á9æ½Qæ#/Á9°Üè–ã‚s`™±Åš3‡}€²×ÀXcV@éK`3ËÚ¬Þ€ò9°ÊÜX@=€ÀXa6.@l`3°½9êT˜ËÍ" mœ£ „m®gƒú¡€S˜ „A:ઢ©€ìÚ„>G˜ ‡bH}fv_ï\bAB/0Ò
-Vè׋‘Ã]‡+_Ž V˜È+ A,0
-V裥ÈaÜ媗#ˆ(Â
*âƒ-ôéBäpÝåB} Â(»‚Ç¥€VÏP„#C̾:\ÕB")£œ· Å ÙHd.„Ð'TæB,ÝÄ‹u+_†pd8üƒȇ
B8j¤—Â!Gl#´A `1Û¨«>BðÌØå
h)‚¸ú,(ÖCéÑg­¡% ÇÜ ýŽhIÂ1ó3?ú•‚+~€áï€d¼s°=z @KŽy>rs˜y€Õø©bå™H*:sˆ‡–(30Ê&ÐúyÖ9eˆιÈQDs‘ƒ²ÔÄ9£Ò7”AÄžžQéI+Ò@½t>¥Ï)Mª’ζÚ&HšÔ¡9!"li¥åÚ‡kˆ´ål¨vc! »ô™ ±¢g83âžö¼nų¢ †®@žâÌcˆñqCË`3Ĉ9qx@Ë`iˆf(Í4€ó`¦Ÿ¬TÔ‡
*âƒ-ôéBäpÝåB} Â(»‚Ç¥€VÏP„#C̾:\ÕB")£œ· Å ÙHd.„Ð'TæB,ÝÄ‹u+_†pd8üƒȇ
B8j¤—Â!Gl#´A `1Û¨«>BðÌØå
h)‚¸ú,(ÖCéÑg­¡% ÇÜ ýŽhIÂ1ó3?ú•‚+~€áï€d¼s°=z @KŽy>rs˜y€Õø©bå™H*:sˆ‡–(30Ê&ÐúyÖ9eˆιÈQDs‘ƒ²ÔÄ9£Ò7”AÄžžQéI+Ò@½t>¥Ï)Mª’ζÚ&HšÔ¡9!"li¥åÚ‡kˆ´ål¨vc! »ô™ ±¢g83âžö¼nų¢ †®@žâÌcˆñqCË`3Ĉ9qx@Ë`iˆf(Í4€ó`¦Ÿ¬TÔ‡
-g€M>kΩj-k€MœdY“½´¬ +ÈcX]>±rz‹€5D'V
œéöÔ1GNÀY™8樼A:©Ôï˜gB©œÇ ÜÏ™.H,8ޏÃtºc
wàÊêd†kÍÁ…Tú‰:,c=càÔ4Æ €?R§é°ŒÖÛNÓaÓ™_‚& :C¢Åqí±`»0ºk…äªé0‘qƒph­ ±÷UKó„ªY.´v†èuâ,øV­!zÕzìÓÝ ¹ð†èQ:j ÖÖãrfØ ¬OKüñÍPË%¢¹-±±’.h­
Ñ“&æV>¬­'BõÊXZ?Þ¹±´°öõ^†˜È,e \<1÷3–½í#×½{&ܸ¥rU¤ÍJÉ\"š LdöܹK0;¸)82i\o\´;¼•Ÿ'–‘P¬.t¬Â^¿¹1p1_uFÃÒÇàd}¡ãNSbé¥
wàÊêd†kÍÁ…Tú‰:,c=càÔ4Æ €?R§é°ŒÖÛNÓaÓ™_‚& :C¢Åqí±`»0ºk…äªé0‘qƒph­ ±÷UKó„ªY.´v†èuâ,øV­!zÕzìÓÝ ¹ð†èQ:j ÖÖãrfØ ¬OKüñÍPË%¢¹-±±’.h­
\EiW°/)áøf08Ô&[õ cœFwžÿf<[l2êR6WqÀúßtŽ*OôÛø\+Š¿S;‹añcq€‰‹ÙaQt_zî¬ñ¹‘‘«ˆ¸ÿ¥ó/9k·6\"â—{”56¼OßYqYtØqœ=šÌñ…Ie˜>˜¹l:ìŒöªÿì§Œý¹K.ê4Li¯ƒ~/ÛÌæqµ¶\Mä¦ÜÝo·Û/¯oåe»}È,?mcÍå¢ÃœSþ#†KȵqÀe'‰³tŽ+¼Û9á
®ÃÌK_8.±´îBrvm¦(ˆ=$W›…ÄupÇU/«»Ð\¬•O_ºäj‚áÚ´.¹‚ÑzÜöžKdKÑxw gÑ q!Øý^
—XŒÒ¸°DôÖ!‰kvKÄgиš…X!•kæø—°MäšÕ)¹/T®9½3eû‰Ê5c`OJš#sÍ6Ähi/t®™†1±ŒÁ5Ï#îí2¸fbÔ,%=pÍ`sM®ôT9×ÄÚÁÈdr‰<\)´ášRY©Ã\®éÀx™dl.FÚÏ$ŽËšk¢ÉóÄ×þ9椰áòoŠü,M+.ß`ɧv\~UÑ&Yؒ˧ƒ¶Ê¶åòf—ŒoÍEΡö41qÏåcÚb™®î†Ë½,ÚŸ›pÂÕ
·¶øhß"7\o¶è®Ë’CW+Âé,—\ŽºìþІÆÕŠ'küâª-.¹ø©ÕªGw-qËe‘^HÝž“‹Kæ–ʇìþ‹ë6øà"æÅÇ[ï¹ðÃõV^qÙññýw/·÷Æuê5ƒAÞm_}ÝÛ'ש۞¶wê~z|õy_ß\çŽ;žpØ>ÜËývûøúêý–“pÍPàÿÿÿârõä
@@ -301,16 +303,15 @@ endobj
endobj
154 0 obj<</Type/Page/Parent 150 0 R/Contents 155 0 R/Resources<</ProcSet[/PDF/Text]>>>>endobj
155 0 obj<</Length 156 0 R/Filter/FlateDecode>>stream
154 0 obj<</Type/Page/Parent 150 0 R/Contents 155 0 R/Resources<</ProcSet[/PDF/Text]>>>>endobj
155 0 obj<</Length 156 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
ár
á
äHendstream
endobj
xÚ+ä2T0BCc3JÎår
ár
á
äHendstream
endobj
156 0 obj
31
endobj
endobj
157 0 obj<</Type/Page/Parent 150 0 R/Contents 158 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>/Annots 14 0 R>>endobj
158 0 obj<</Length 159 0 R/Filter/FlateDecode>>stream
VMoÛ8½çW zJ€µjÉŸÙ[§Y/šTk9Å|¡%ÊfC‰
IÙpýÎtì¸éb³„â ç½7Ã<_ÄÐÅŸF ô†W“ÅÅÇÏ×taQâÎp4†EqC–«†_-¾»Ýxäw;½~”¸ý(†YÁk+J3+TíCûÇ!4EC
@@ -338,15 +339,12 @@ endobj
117
endobj
163 0 obj<</Type/Page/Parent 150 0 R/Contents 164 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>/Annots 37 0 R>>endobj
²¸zšG0+Óm.‹&i²²Ðø§Å…oy„Ç/–åz]¾fÅJ¿¸à/BVCµuÏoмàW;æœ:Æ9…gM¨?êa|õ0;–s®û»*‹e¶ÚVº¿‡¤HV’Þ…ù:i'–¶ûV€³Ã~þžû³¦gcÇÕËTãÜÍflœè­ndwE#«e’J˜É:[ô/­²MŽ6竺Ë7kÙ‡©\>ÿTÿÑÅõoýÜ­§\6¯I%áb‘gEV7Á²ª)‚Ûdý¹¡ö·èÄ‹æï,h^•«*És’Ü)V=ZM$Óm•5o¸k6eÕ|nˆx~hˆXÖ'qôôNœžjy¢|ÿ8˜ïØ=‰÷¿%|g:càcWè/°ñ½yUç<õ‘®S”ÅxÏyj Ù
ÙÎu|f[6:'}8ôñx‹þiÙà.Ž“ƒ êÆ¢4rœe€«5áŽãq~2È3"G7<'ÂòÍ<#Ÿú˜#ψ\ȧÈ{Î@8Ýi`¹=ïOöú¿ü%_ÕŠÎ;7˜hU\,Êg4‡²n"%Gô‰ŒÌœën²µ„›²Ê“¢L³e–* uržX®EéG³ÛÑŒÊ6èÉ·Qã;=©†IO-ÝêÉ€·zÚñm!#ÏÌ·#(ڞȻ¡55óŒ@Þ§¼ôüÁüõÛ›2é;Ú ~Éä}R¬¶xî÷Ìâ—¬ZÀõ"£ì}$aï8žÃçð{ù I±è$ɾo¤.Bêš)výUùèu‘– ò.#®’¢þÌÓuÛäû·Ûl!?ÝåC¹k5ÍHæIÑdéðê
;Áž(mL•PTã°”Càw¯¦@ûÆÀ9A>,H§&žÈÊ5M<#hŸ…VÈø#ö=Õûàñæ
¿õÃÜg…ìý,‘9ú–AM™–ë“z•T@›!Ý0dhG«˜h`…3€s2b<Œ<#È 'q#Ïä}ò]#ÏÊèt`þœ “•v•‘gò¡½üaňPè}KŠíŠñÛ2Y×X,U¸‡õݦíÉHþóÿh£ewR
“†ZZKÄ@3s†u£ç˜ 'HC.îa#ϪÎ<Œ‰çi(èŸtú*ÅšxF ïÑÚÈ3ù`:ONPõGµAÏ¡Q?d
164 0 obj<</Length 165 0 R/Filter/FlateDecode>>stream
xÚµ˜KSãH Çï|
ÙªÄãGâ7 À°5Ylæ´ãt‚·b;k;ÅðíGêöCYB;¶¨
ÕÉÏjEú·¤Î¿'˜øggƒãB’\D'ß®°Mˆ–ø‰ëù-NmxKQŠ<ÕÑ?±<…Œ‰aKȰàòq¬H¶™Èë¸N‹\á°¬·=Ã%<z°,Öëâ%ÍWêÁÒ
Êv×<½BýŒoµÌ™2œ4†mÛ®1!ÛÛ®»;ŸÒãËûùØ2¬3µße‘/ÓÕ¶TûÝÇy¼dæë8ßµŽ[Žúžï¿Í˜ñðµªE·y-Êeœ˜‰*]åô/)ÓMm1çþßf›µèV,?ÿ¸ÑðüžŒ¿ZÏ‹eýÎYš§U*ÊŠ´×GØßKký+âÎßq}^«2Î2ÒÖÑ~‡ûüE²-ÓúÏĦ(ë#ìFó}v#Q«¼ðñ0<Vâ3‰û¹7q?Ñ&éíMæÚ¢0V§Ñ±Õi´qñ£~eWª«B^äãÊP9ðé²p˜†‰¥^,zy¸Áh˜àø:’ëc5S5„{hd¸™oøZܲ\ÎOyFdXŽížÈÛ¶áéyF ?õ0NZž8¶9à'w­p:SßpzÞ›ìØ¿x“¯r½~°u9þD è|Q<áñ/ª:”âÄJR æj…ët-àº(³¸†p#’t™&²†Ž:qO Ç ©ôûšÝ¾­ºÆzùöiÔ器ÄV]r¡SWC7êÒàºZÞ¥§åÙ·lн†çòN`Lõ<#÷(7=@6=KØ7Ù¼‹óÕÛt?Œ zNË\-RÊà±Icµ›èüY<Aœ/:ù„¢†¡f…êCµí}“eô*OŠÕ52•q^}¸t¶ºÞOþf.Äqvî‹…XK‡B‘Åy&|9Â͉ÌùT
4ȇ:ç 4 t›xF ÒEËÈ3‚J庉ç]7B’«‰g•‡ ¨ã&!<’͆rü,›W) ¸ŸÏ”Z°|éò^ŸÖÛ¦ŽºèL«†I
@.öK„ø^÷è~štÌœTmmÒŸŽgò¾¬t~#`üú6§Jß×—ø®Œà.ÍE_«b‘a
Â!¦.býåuÈ,d,©…&K--“ £€Q´­œ”¥c¢åAUn‚Q×òŒ@Þ£šªåAYøÏ ê¡äs'øÃª±[e˜TcO]oÔÎÐ7E¼®pn*ñ «G.šÎGåæÿÓFÌìt$:5´’‰†fæ
ÇH=Î Ò‘7à 'HGže-ÏšÅ\Œ’ŽçéÈ°Ï ê®Rµ:žÈ»4ÝjyF ïOâÉ šõ¨÷÷ü¦R²iÆk!%Š7ër›Ô[œåñÒJoômH/ÖÓ΄^柵KÃg+j¹Ð‰º¡•f54¨8ç‰Ô§”ëxF ÐÝKË3‚DJºŽç]0’¬Žg‰¨ã;5|&#l‘÷ñfCy~õ‹9ÜÍgR18Ët¹¯¾¾ÆM-y'QÙ– Ze[C3€jœCCƒs‚zÙ ïqÞ¶†xN¨ôêÝç¥×¡ôvüéÚê¾&ÓëZâx]‹_µq¼ï²
ã1|"9²~}‚¿YÕB—à†VùÓÐ  ‘Õ£ipNÐê8à 5¬xZžªÉèýáDÖœF-Ïn\ªF€ œ ‰Q8ÜPÆá|‹Åž®%²‡œÁE\¥‰<ö³tE¿˜'‰¨ª÷ºÅîãª3ø­RpÛq·ïãžø&~“>rýuòHÒU'endstream
@@ -470,30 +468,24 @@ endobj
767
endobj
199 0 obj<</Type/Page/Parent 150 0 R/Contents 200 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
S',"Òl=kµ éžä©ÜØÄ{–ä¤Û~(
200 0 obj<</Length 201 0 R/Filter/FlateDecode>>stream
xÚ¥UÁrÚ0½ó;>%™b°“4§$Mzj'О2“‘å5¨µ-W–Ii§ÿÞ•„ÁBÓépÀ’vßîÛ}Z}ï0¤_ÓFð¼w=ë
endobj
198 0 obj
767
endobj
199 0 obj<</Type/Page/Parent 150 0 R/Contents 200 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
200 0 obj<</Length 201 0 R/Filter/FlateDecode>>stream
xÚ¥UÁrÚ0½ó;>%™b°“4§$Mzj'О2“‘å5¨µ-W–Ii§ÿÞ•„ÁBÓépÀ’vßîÛ}Z}ï0¤_ÓFð¼w=ë
î†p³ÔìDçô•œü:
î†p³ÔìDçô•œü:
¡ ýs³ð}oO¡®U'«ÇÓËÎéo³Ü]@05Ð}ÂîBsríá S‚ÅV«±±"ÿÑÐÖV~Y.й3C¬Â©1Ù€À³Ð `0ÏdÌ2¨¸,ªË2ˆ8+…f™ø‰ ¥êÍ¢j<½7@k¦w×¢zÐLckO†#ßò˜-d­p,µh šÜAÕY+M†7Ÿï@UÊ8B&bÅÔªÉx¹e²|y]iòœ‹ÂQ#„NðRa*~€Çë²ò -óÑ¥æövè9&ð¾w“¬Â2£ ˆWÖ7¼:±™š×9Úd.QA)«JP£‘0¢&jQ&ù~‡2ùŒŠ³
U]$¨ÈD‘[Œú‘Ê URž¦¾OË
¡NjtÌtë¸á{U¬Ö¡w(«]ž.K*:ƒJÖŠú”Šv#ä™õñ*ˆàž¿'ßðÂ
áä¶R¬©âß2jx“ÕXÒ¦ƒ%S¤INÀŠdk(òAg¤ÄTf¦––.sbbþ­S¨+®DL—Ëʳ‰ÿÖ%¹ýpì‘va§ö—08s x­” dªBw"u—àlÐ ¢ÕŸãL¯!^˜"˜­Ê£dò· rE%ÔËÛ—àÕ‚4ðž´¬,‘¬7háX8ìNõ›ØäMWÕÖe³ÜΛÄ5ùqY†ŽÛ‚-±«ŒŘM›·qK0}Yƒ³î‹`zI·韠ÜàK%ÒNÉjï!ÙSÊ:´˜`†ØS«Z—G$ÁƒV5§Wé¨.¢×è¢jþS„sLe˜X›1çR°Dv¶Ú29_sÆ‘?h2Y×ÖÖÿF©˜×ÊJ>°‚ÍÑ
à>cV:}çÖŸ†ÃƒOôx:&<{LÌÆí¬÷©÷?ðendstream
endobj
¡NjtÌtë¸á{U¬Ö¡w(«]ž.K*:ƒJÖŠú”Šv#ä™õñ*ˆàž¿'ßðÂ
201 0 obj
789
endobj
202 0 obj<</Type/Page/Parent 150 0 R/Contents 203 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
201 0 obj
789
endobj
202 0 obj<</Type/Page/Parent 150 0 R/Contents 203 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
203 0 obj<</Length 204 0 R/Filter/FlateDecode>>stream
203 0 obj<</Length 204 0 R/Filter/FlateDecode>>stream
xÚÕ–MoÚ@†ïüЧ$
2Мš¦ ­×vc{ÝÝu(ªúß;»kdò©J•*"×óξ3óŒ”ôña˜?žwÎÃNÿÝ ü1„+zLéG|tîÞÞ
^åXh¦SQ‡ß)r ¾ï"{ɉ¼`<¥eÅu%T² v‡À€‹ÜÈ!Ê¿…”â”i̶áJP´N°Ö+b@“+Ç<BY'ŠÐ\K—ù#òC×ŵ%Œ!-€q.dÌ
^åXh¦SQ‡ß)r ¾ï"{ɉ¼`<¥eÅu%T² v‡À€‹ÜÈ!Ê¿…”â”i̶áJP´N°Ö+b@“+Ç<BY'ŠÐ\K—ù#òC×ŵ%Œ!-€q.dÌ
ްIubóÝ1™²(C(Xžk(E–ò-°HÜáj@o8ölÁý“æ¢75pa’ª½ÒèLÃâëÕ5ý“ JÓåhû­“ºH^•j©)íÒ˜¯Vä¯v.ªSƒÕ¸Îœ@ÿ•”¦·Š¦ƒÖ˜‰9¼¹Ñ3ý¼žéCýï3×3BdbšÖ3]
$XdL)T÷15F½ÑÀ êχK;ŠGšÓœ¹Ic&†ê~ò
JÎT=ܪˆQ*8ÅD¨7ˆlhü
nŽº¶A6K÷º¶Üæ 5÷nŽgÞ¸qø
@@ -630,22 +622,22 @@ xref
268 0 obj<</Parent 249 0 R/Count -2/First 269 0 R/Last 270 0 R/Title(B.7 Classes)/Dest[202 0 R/XYZ null 568 null]/Prev 265 0 R/Next 271 0 R>>endobj
269 0 obj<</Parent 268 0 R/Title(B.7.1 Naming)/Dest[202 0 R/XYZ null 534 null]/Next 270 0 R>>endobj
270 0 obj<</Parent 268 0 R/Title(B.7.2 Documentation)/Dest[202 0 R/XYZ null 478 null]/Prev 269 0 R>>endobj
264 0 obj<</Parent 262 0 R/Title(B.5.2 Documentation)/Dest[199 0 R/XYZ null 304 null]/Prev 263 0 R>>endobj
265 0 obj<</Parent 249 0 R/Count -2/First 266 0 R/Last 267 0 R/Title(B.6 Structures)/Dest[199 0 R/XYZ null 191 null]/Prev 262 0 R/Next 268 0 R>>endobj
266 0 obj<</Parent 265 0 R/Title(B.6.1 Naming)/Dest[199 0 R/XYZ null 157 null]/Next 267 0 R>>endobj
267 0 obj<</Parent 265 0 R/Title(B.6.2 Documentation)/Dest[202 0 R/XYZ null 724 null]/Prev 266 0 R>>endobj
268 0 obj<</Parent 249 0 R/Count -2/First 269 0 R/Last 270 0 R/Title(B.7 Classes)/Dest[202 0 R/XYZ null 568 null]/Prev 265 0 R/Next 271 0 R>>endobj
269 0 obj<</Parent 268 0 R/Title(B.7.1 Naming)/Dest[202 0 R/XYZ null 534 null]/Next 270 0 R>>endobj
270 0 obj<</Parent 268 0 R/Title(B.7.2 Documentation)/Dest[202 0 R/XYZ null 478 null]/Prev 269 0 R>>endobj
271 0 obj<</Parent 249 0 R/Count -2/First 272 0 R/Last 273 0 R/Title(B.8 Constants)/Dest[202 0 R/XYZ null 309 null]/Prev 268 0 R/Next 274 0 R>>endobj
272 0 obj<</Parent 271 0 R/Title(B.8.1 Naming)/Dest[202 0 R/XYZ null 275 null]/Next 273 0 R>>endobj
273 0 obj<</Parent 271 0 R/Title(B.8.2 Documentation)/Dest[202 0 R/XYZ null 166 null]/Prev 272 0 R>>endobj
274 0 obj<</Parent 249 0 R/Count -2/First 275 0 R/Last 276 0 R/Title(B.9 Code)/Dest[205 0 R/XYZ null 713 null]/Prev 271 0 R>>endobj
275 0 obj<</Parent 274 0 R/Title(B.9.1 Documentation)/Dest[205 0 R/XYZ null 680 null]/Next 276 0 R>>endobj
276 0 obj<</Parent 274 0 R/Title(B.9.2 Style)/Dest[205 0 R/XYZ null 381 null]/Prev 275 0 R>>endobj
277 0 obj<</Parent 223 0 R/Title(C Software Trouble Report Form)/Dest[211 0 R/XYZ null 724 null]/Prev 249 0 R>>endobj
278 0 obj<</Type/Catalog/Pages 150 0 R/Names 93 0 R/PageLayout/SinglePage/Outlines 223 0 R/OpenAction[157 0 R/XYZ null null null]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</P(eltit)>>2<</S/r>>4<</S/D>>]>>>>endobj
xref
271 0 obj<</Parent 249 0 R/Count -2/First 272 0 R/Last 273 0 R/Title(B.8 Constants)/Dest[202 0 R/XYZ null 309 null]/Prev 268 0 R/Next 274 0 R>>endobj
272 0 obj<</Parent 271 0 R/Title(B.8.1 Naming)/Dest[202 0 R/XYZ null 275 null]/Next 273 0 R>>endobj
273 0 obj<</Parent 271 0 R/Title(B.8.2 Documentation)/Dest[202 0 R/XYZ null 166 null]/Prev 272 0 R>>endobj
274 0 obj<</Parent 249 0 R/Count -2/First 275 0 R/Last 276 0 R/Title(B.9 Code)/Dest[205 0 R/XYZ null 713 null]/Prev 271 0 R>>endobj
275 0 obj<</Parent 274 0 R/Title(B.9.1 Documentation)/Dest[205 0 R/XYZ null 680 null]/Next 276 0 R>>endobj
276 0 obj<</Parent 274 0 R/Title(B.9.2 Style)/Dest[205 0 R/XYZ null 381 null]/Prev 275 0 R>>endobj
277 0 obj<</Parent 223 0 R/Title(C Software Trouble Report Form)/Dest[211 0 R/XYZ null 724 null]/Prev 249 0 R>>endobj
278 0 obj<</Type/Catalog/Pages 150 0 R/Names 93 0 R/PageLayout/SinglePage/Outlines 223 0 R/OpenAction[157 0 R/XYZ null null null]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</P(eltit)>>2<</S/r>>4<</S/D>>]>>>>endobj
xref
0 279
0000000000 65535 f
0000000015 00000 n
0000000228 00000 n
0000001794 00000 n
0000001868 00000 n
0000001946 00000 n
0000002023 00000 n
0000002102 00000 n
0000002178 00000 n
@@ -712,128 +704,128 @@ xref
0000007771 00000 n
0000007876 00000 n
0000007981 00000 n
0000007351 00000 n
0000007456 00000 n
0000007561 00000 n
0000007666 00000 n
0000007771 00000 n
0000007876 00000 n
0000007981 00000 n
0000008086 00000 n
0000008191 00000 n
0000008296 00000 n
0000008401 00000 n
0000008506 00000 n
0000008611 00000 n
0000008715 00000 n
0000008818 00000 n
0000008921 00000 n
0000009232 00000 n
0000009337 00000 n
0000009441 00000 n
0000009546 00000 n
0000009651 00000 n
0000009755 00000 n
0000009860 00000 n
0000009965 00000 n
0000010069 00000 n
0000010174 00000 n
0000010279 00000 n
0000010383 00000 n
0000010477 00000 n
0000010509 00000 n
0000010541 00000 n
0000011261 00000 n
0000011309 00000 n
0000011357 00000 n
0000011405 00000 n
0000011453 00000 n
0000011502 00000 n
0000011551 00000 n
0000011600 00000 n
0000011649 00000 n
0000011698 00000 n
0000011747 00000 n
0000011796 00000 n
0000011845 00000 n
0000011894 00000 n
0000011943 00000 n
0000011992 00000 n
0000012041 00000 n
0000012090 00000 n
0000012139 00000 n
0000012188 00000 n
0000012237 00000 n
0000012286 00000 n
0000012335 00000 n
0000012384 00000 n
0000012433 00000 n
0000012482 00000 n
0000012531 00000 n
0000012580 00000 n
0000012629 00000 n
0000012678 00000 n
0000012727 00000 n
0000012776 00000 n
0000012825 00000 n
0000012874 00000 n
0000012923 00000 n
0000012972 00000 n
0000013021 00000 n
0000013070 00000 n
0000013119 00000 n
0000013168 00000 n
0000013217 00000 n
0000013266 00000 n
0000013315 00000 n
0000013364 00000 n
0000013413 00000 n
0000013462 00000 n
0000013511 00000 n
0000013560 00000 n
0000013609 00000 n
0000013658 00000 n
0000013707 00000 n
0000013756 00000 n
0000013805 00000 n
0000013854 00000 n
0000013903 00000 n
0000014164 00000 n
0000014316 00000 n
0000020676 00000 n
0000020698 00000 n
0000020793 00000 n
0000020895 00000 n
0000020915 00000 n
0000021069 00000 n
0000022133 00000 n
0000022154 00000 n
0000022267 00000 n
0000022455 00000 n
0000022476 00000 n
0000022630 00000 n
0000024035 00000 n
0000024057 00000 n
0000024170 00000 n
0000024363 00000 n
0000024384 00000 n
0000024515 00000 n
0000025126 00000 n
0000025147 00000 n
0000025260 00000 n
0000025450 00000 n
0000025471 00000 n
0000025602 00000 n
0000026618 00000 n
0000026639 00000 n
0000026752 00000 n
0000026954 00000 n
0000026975 00000 n
0000027115 00000 n
0000028133 00000 n
0000028154 00000 n
0000008086 00000 n
0000008191 00000 n
0000008296 00000 n
0000008401 00000 n
0000008506 00000 n
0000008610 00000 n
0000008713 00000 n
0000008816 00000 n
0000009120 00000 n
0000009225 00000 n
0000009330 00000 n
0000009434 00000 n
0000009539 00000 n
0000009644 00000 n
0000009748 00000 n
0000009853 00000 n
0000009958 00000 n
0000010062 00000 n
0000010167 00000 n
0000010272 00000 n
0000010376 00000 n
0000010477 00000 n
0000010509 00000 n
0000010541 00000 n
0000011261 00000 n
0000011309 00000 n
0000011357 00000 n
0000011405 00000 n
0000011453 00000 n
0000011502 00000 n
0000011551 00000 n
0000011600 00000 n
0000011649 00000 n
0000011698 00000 n
0000011747 00000 n
0000011796 00000 n
0000011845 00000 n
0000011894 00000 n
0000011943 00000 n
0000011992 00000 n
0000012041 00000 n
0000012090 00000 n
0000012139 00000 n
0000012188 00000 n
0000012237 00000 n
0000012286 00000 n
0000012335 00000 n
0000012384 00000 n
0000012433 00000 n
0000012482 00000 n
0000012531 00000 n
0000012580 00000 n
0000012629 00000 n
0000012678 00000 n
0000012727 00000 n
0000012776 00000 n
0000012825 00000 n
0000012874 00000 n
0000012923 00000 n
0000012972 00000 n
0000013021 00000 n
0000013070 00000 n
0000013119 00000 n
0000013168 00000 n
0000013217 00000 n
0000013266 00000 n
0000013315 00000 n
0000013364 00000 n
0000013413 00000 n
0000013462 00000 n
0000013511 00000 n
0000013560 00000 n
0000013609 00000 n
0000013658 00000 n
0000013707 00000 n
0000013756 00000 n
0000013805 00000 n
0000013854 00000 n
0000013903 00000 n
0000014164 00000 n
0000014316 00000 n
0000020676 00000 n
0000020698 00000 n
0000020793 00000 n
0000020895 00000 n
0000020915 00000 n
0000021069 00000 n
0000022130 00000 n
0000022151 00000 n
0000022264 00000 n
0000022452 00000 n
0000022473 00000 n
0000022627 00000 n
0000024026 00000 n
0000024048 00000 n
0000024161 00000 n
0000024354 00000 n
0000024375 00000 n
0000024506 00000 n
0000025117 00000 n
0000025138 00000 n
0000025251 00000 n
0000025441 00000 n
0000025462 00000 n
0000025593 00000 n
0000026594 00000 n
0000026615 00000 n
0000026728 00000 n
0000026930 00000 n
0000026951 00000 n
0000027091 00000 n
0000028109 00000 n
0000028130 00000 n
0000028243 00000 n
0000028442 00000 n
0000028463 00000 n
0000028603 00000 n
0000029270 00000 n
0000029291 00000 n
0000029404 00000 n
0000029597 00000 n
0000028466 00000 n
0000029618 00000 n
0000029758 00000 n
0000028627 00000 n
0000030901 00000 n
0000030923 00000 n
+946 -1105
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+244 -257
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.9b1 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20001118180316Z)/Title( CUPS Interface Design Description)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000824182228Z)/Title( CUPS Interface Design Description)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
@@ -75,44 +75,44 @@
55 0 obj[52 0 R
54 0 R
]endobj
56 0 obj<</Subtype/Link/Rect[72.0 684.0 107.8 697.0]/Border[0 0 0]/Dest[144 0 R/XYZ null 798 0]>>endobj
57 0 obj<</Subtype/Link/Rect[108.0 670.8 183.8 683.8]/Border[0 0 0]/Dest[144 0 R/XYZ null 745 0]>>endobj
58 0 obj<</Subtype/Link/Rect[108.0 657.6 203.0 670.6]/Border[0 0 0]/Dest[144 0 R/XYZ null 672 0]>>endobj
59 0 obj<</Subtype/Link/Rect[108.0 644.4 216.4 657.4]/Border[0 0 0]/Dest[144 0 R/XYZ null 467 0]>>endobj
60 0 obj<</Subtype/Link/Rect[72.0 618.0 131.6 631.0]/Border[0 0 0]/Dest[150 0 R/XYZ null 798 0]>>endobj
61 0 obj<</Subtype/Link/Rect[108.0 604.8 222.6 617.8]/Border[0 0 0]/Dest[150 0 R/XYZ null 745 0]>>endobj
62 0 obj<</Subtype/Link/Rect[108.0 591.6 202.4 604.6]/Border[0 0 0]/Dest[150 0 R/XYZ null 540 0]>>endobj
63 0 obj<</Subtype/Link/Rect[72.0 565.2 168.5 578.2]/Border[0 0 0]/Dest[156 0 R/XYZ null 798 0]>>endobj
64 0 obj<</Subtype/Link/Rect[108.0 552.0 208.2 565.0]/Border[0 0 0]/Dest[156 0 R/XYZ null 745 0]>>endobj
65 0 obj<</Subtype/Link/Rect[144.0 538.8 280.4 551.8]/Border[0 0 0]/Dest[156 0 R/XYZ null 631 0]>>endobj
66 0 obj<</Subtype/Link/Rect[144.0 525.6 292.5 538.6]/Border[0 0 0]/Dest[156 0 R/XYZ null 251 0]>>endobj
67 0 obj<</Subtype/Link/Rect[108.0 512.4 192.0 525.4]/Border[0 0 0]/Dest[159 0 R/XYZ null 598 0]>>endobj
68 0 obj<</Subtype/Link/Rect[108.0 499.2 178.6 512.2]/Border[0 0 0]/Dest[162 0 R/XYZ null 783 0]>>endobj
69 0 obj<</Subtype/Link/Rect[144.0 486.0 219.8 499.0]/Border[0 0 0]/Dest[162 0 R/XYZ null 707 0]>>endobj
70 0 obj<</Subtype/Link/Rect[144.0 472.8 222.2 485.8]/Border[0 0 0]/Dest[162 0 R/XYZ null 349 0]>>endobj
71 0 obj<</Subtype/Link/Rect[108.0 459.6 179.2 472.6]/Border[0 0 0]/Dest[162 0 R/XYZ null 217 0]>>endobj
72 0 obj<</Subtype/Link/Rect[108.0 446.4 280.6 459.4]/Border[0 0 0]/Dest[165 0 R/XYZ null 618 0]>>endobj
73 0 obj<</Subtype/Link/Rect[144.0 433.2 249.7 446.2]/Border[0 0 0]/Dest[165 0 R/XYZ null 530 0]>>endobj
74 0 obj<</Subtype/Link/Rect[144.0 420.0 305.7 433.0]/Border[0 0 0]/Dest[165 0 R/XYZ null 460 0]>>endobj
75 0 obj<</Subtype/Link/Rect[108.0 406.8 257.1 419.8]/Border[0 0 0]/Dest[168 0 R/XYZ null 587 0]>>endobj
76 0 obj<</Subtype/Link/Rect[144.0 393.6 221.6 406.6]/Border[0 0 0]/Dest[168 0 R/XYZ null 419 0]>>endobj
77 0 obj<</Subtype/Link/Rect[144.0 380.4 216.7 393.4]/Border[0 0 0]/Dest[171 0 R/XYZ null 677 0]>>endobj
78 0 obj<</Subtype/Link/Rect[144.0 367.2 224.7 380.2]/Border[0 0 0]/Dest[177 0 R/XYZ null 170 0]>>endobj
79 0 obj<</Subtype/Link/Rect[72.0 340.8 171.0 353.8]/Border[0 0 0]/Dest[186 0 R/XYZ null 798 0]>>endobj
80 0 obj<</Subtype/Link/Rect[108.0 327.6 213.4 340.6]/Border[0 0 0]/Dest[186 0 R/XYZ null 745 0]>>endobj
81 0 obj<</Subtype/Link/Rect[108.0 314.4 237.6 327.4]/Border[0 0 0]/Dest[186 0 R/XYZ null 619 0]>>endobj
82 0 obj<</Subtype/Link/Rect[108.0 301.2 198.5 314.2]/Border[0 0 0]/Dest[189 0 R/XYZ null 692 0]>>endobj
83 0 obj<</Subtype/Link/Rect[144.0 288.0 248.2 301.0]/Border[0 0 0]/Dest[189 0 R/XYZ null 578 0]>>endobj
84 0 obj<</Subtype/Link/Rect[108.0 274.8 219.9 287.8]/Border[0 0 0]/Dest[198 0 R/XYZ null 720 0]>>endobj
85 0 obj<</Subtype/Link/Rect[108.0 261.6 202.7 274.6]/Border[0 0 0]/Dest[198 0 R/XYZ null 620 0]>>endobj
86 0 obj<</Subtype/Link/Rect[108.0 248.4 199.1 261.4]/Border[0 0 0]/Dest[204 0 R/XYZ null 425 0]>>endobj
87 0 obj<</Subtype/Link/Rect[108.0 235.2 236.9 248.2]/Border[0 0 0]/Dest[204 0 R/XYZ null 352 0]>>endobj
88 0 obj<</Subtype/Link/Rect[108.0 222.0 257.4 235.0]/Border[0 0 0]/Dest[204 0 R/XYZ null 278 0]>>endobj
89 0 obj<</Subtype/Link/Rect[108.0 208.8 263.5 221.8]/Border[0 0 0]/Dest[204 0 R/XYZ null 192 0]>>endobj
90 0 obj<</Subtype/Link/Rect[72.0 182.4 132.2 195.4]/Border[0 0 0]/Dest[210 0 R/XYZ null 798 0]>>endobj
91 0 obj<</Subtype/Link/Rect[72.0 156.0 124.2 169.0]/Border[0 0 0]/Dest[216 0 R/XYZ null 798 0]>>endobj
92 0 obj<</Subtype/Link/Rect[108.0 142.8 155.0 155.8]/Border[0 0 0]/Dest[216 0 R/XYZ null 745 0]>>endobj
93 0 obj<</Subtype/Link/Rect[108.0 129.6 172.8 142.6]/Border[0 0 0]/Dest[216 0 R/XYZ null 566 0]>>endobj
56 0 obj<</Subtype/Link/Rect[72.0 670.8 107.8 683.8]/Border[0 0 0]/Dest[144 0 R/XYZ null 798 0]>>endobj
57 0 obj<</Subtype/Link/Rect[108.0 657.6 183.8 670.6]/Border[0 0 0]/Dest[144 0 R/XYZ null 745 0]>>endobj
58 0 obj<</Subtype/Link/Rect[108.0 644.4 203.0 657.4]/Border[0 0 0]/Dest[144 0 R/XYZ null 672 0]>>endobj
59 0 obj<</Subtype/Link/Rect[108.0 631.2 216.4 644.2]/Border[0 0 0]/Dest[144 0 R/XYZ null 467 0]>>endobj
60 0 obj<</Subtype/Link/Rect[72.0 604.8 131.6 617.8]/Border[0 0 0]/Dest[150 0 R/XYZ null 798 0]>>endobj
61 0 obj<</Subtype/Link/Rect[108.0 591.6 222.6 604.6]/Border[0 0 0]/Dest[150 0 R/XYZ null 745 0]>>endobj
62 0 obj<</Subtype/Link/Rect[108.0 578.4 202.4 591.4]/Border[0 0 0]/Dest[150 0 R/XYZ null 540 0]>>endobj
63 0 obj<</Subtype/Link/Rect[72.0 552.0 168.5 565.0]/Border[0 0 0]/Dest[156 0 R/XYZ null 798 0]>>endobj
64 0 obj<</Subtype/Link/Rect[108.0 538.8 208.2 551.8]/Border[0 0 0]/Dest[156 0 R/XYZ null 745 0]>>endobj
65 0 obj<</Subtype/Link/Rect[144.0 525.6 280.4 538.6]/Border[0 0 0]/Dest[156 0 R/XYZ null 631 0]>>endobj
66 0 obj<</Subtype/Link/Rect[144.0 512.4 292.5 525.4]/Border[0 0 0]/Dest[156 0 R/XYZ null 251 0]>>endobj
67 0 obj<</Subtype/Link/Rect[108.0 499.2 192.0 512.2]/Border[0 0 0]/Dest[159 0 R/XYZ null 598 0]>>endobj
68 0 obj<</Subtype/Link/Rect[108.0 486.0 178.6 499.0]/Border[0 0 0]/Dest[162 0 R/XYZ null 783 0]>>endobj
69 0 obj<</Subtype/Link/Rect[144.0 472.8 219.8 485.8]/Border[0 0 0]/Dest[162 0 R/XYZ null 707 0]>>endobj
70 0 obj<</Subtype/Link/Rect[144.0 459.6 222.2 472.6]/Border[0 0 0]/Dest[162 0 R/XYZ null 349 0]>>endobj
71 0 obj<</Subtype/Link/Rect[108.0 446.4 179.2 459.4]/Border[0 0 0]/Dest[162 0 R/XYZ null 217 0]>>endobj
72 0 obj<</Subtype/Link/Rect[108.0 433.2 280.6 446.2]/Border[0 0 0]/Dest[165 0 R/XYZ null 618 0]>>endobj
73 0 obj<</Subtype/Link/Rect[144.0 420.0 249.7 433.0]/Border[0 0 0]/Dest[165 0 R/XYZ null 530 0]>>endobj
74 0 obj<</Subtype/Link/Rect[144.0 406.8 305.7 419.8]/Border[0 0 0]/Dest[165 0 R/XYZ null 460 0]>>endobj
75 0 obj<</Subtype/Link/Rect[108.0 393.6 257.1 406.6]/Border[0 0 0]/Dest[168 0 R/XYZ null 587 0]>>endobj
76 0 obj<</Subtype/Link/Rect[144.0 380.4 221.6 393.4]/Border[0 0 0]/Dest[168 0 R/XYZ null 419 0]>>endobj
77 0 obj<</Subtype/Link/Rect[144.0 367.2 216.7 380.2]/Border[0 0 0]/Dest[171 0 R/XYZ null 677 0]>>endobj
78 0 obj<</Subtype/Link/Rect[144.0 354.0 224.7 367.0]/Border[0 0 0]/Dest[177 0 R/XYZ null 189 0]>>endobj
79 0 obj<</Subtype/Link/Rect[72.0 327.6 171.0 340.6]/Border[0 0 0]/Dest[186 0 R/XYZ null 798 0]>>endobj
80 0 obj<</Subtype/Link/Rect[108.0 314.4 213.4 327.4]/Border[0 0 0]/Dest[186 0 R/XYZ null 745 0]>>endobj
81 0 obj<</Subtype/Link/Rect[108.0 301.2 237.6 314.2]/Border[0 0 0]/Dest[186 0 R/XYZ null 619 0]>>endobj
82 0 obj<</Subtype/Link/Rect[108.0 288.0 198.5 301.0]/Border[0 0 0]/Dest[189 0 R/XYZ null 692 0]>>endobj
83 0 obj<</Subtype/Link/Rect[144.0 274.8 248.2 287.8]/Border[0 0 0]/Dest[189 0 R/XYZ null 578 0]>>endobj
84 0 obj<</Subtype/Link/Rect[108.0 261.6 219.9 274.6]/Border[0 0 0]/Dest[198 0 R/XYZ null 720 0]>>endobj
85 0 obj<</Subtype/Link/Rect[108.0 248.4 202.7 261.4]/Border[0 0 0]/Dest[198 0 R/XYZ null 620 0]>>endobj
86 0 obj<</Subtype/Link/Rect[108.0 235.2 199.1 248.2]/Border[0 0 0]/Dest[204 0 R/XYZ null 425 0]>>endobj
87 0 obj<</Subtype/Link/Rect[108.0 222.0 236.9 235.0]/Border[0 0 0]/Dest[204 0 R/XYZ null 352 0]>>endobj
88 0 obj<</Subtype/Link/Rect[108.0 208.8 257.4 221.8]/Border[0 0 0]/Dest[204 0 R/XYZ null 278 0]>>endobj
89 0 obj<</Subtype/Link/Rect[108.0 195.6 263.5 208.6]/Border[0 0 0]/Dest[204 0 R/XYZ null 192 0]>>endobj
90 0 obj<</Subtype/Link/Rect[72.0 169.2 132.2 182.2]/Border[0 0 0]/Dest[210 0 R/XYZ null 798 0]>>endobj
91 0 obj<</Subtype/Link/Rect[72.0 142.8 124.2 155.8]/Border[0 0 0]/Dest[216 0 R/XYZ null 798 0]>>endobj
92 0 obj<</Subtype/Link/Rect[108.0 129.6 155.0 142.6]/Border[0 0 0]/Dest[216 0 R/XYZ null 745 0]>>endobj
93 0 obj<</Subtype/Link/Rect[108.0 116.4 172.8 129.4]/Border[0 0 0]/Dest[216 0 R/XYZ null 566 0]>>endobj
94 0 obj[56 0 R
57 0 R
58 0 R
@@ -177,7 +177,7 @@
117 0 obj<</D[168 0 R/XYZ null 587 null]>>endobj
118 0 obj<</D[168 0 R/XYZ null 419 null]>>endobj
119 0 obj<</D[171 0 R/XYZ null 677 null]>>endobj
120 0 obj<</D[177 0 R/XYZ null 170 null]>>endobj
120 0 obj<</D[177 0 R/XYZ null 189 null]>>endobj
121 0 obj<</D[186 0 R/XYZ null 798 null]>>endobj
122 0 obj<</D[186 0 R/XYZ null 745 null]>>endobj
123 0 obj<</D[186 0 R/XYZ null 619 null]>>endobj
@@ -269,14 +269,12 @@ endobj
%°ß{ZÀ‘›ì ù=Å¡­´e&=@~¯thG„â‚¥Âèo‘ßoXÀQã¸÷}ô•±mç˜Á8lc®Á9æ½Qæ#/Á9°Üè–ã‚s`™±Åš3‡}€²×ÀXcV@éK`3ËÚ¬Þ€ò9°ÊÜX@=€ÀXa6.@l`3°½9êT˜ËÍ" mœ£ „m®gƒú¡€S˜ „A:ઢ©€ìÚ„>G˜ ‡bH}fv_ï\bAB/0Ò
-Vè׋‘Ã]‡+_Ž V˜È+ A,0
-V裥ÈaÜ媗#ˆ(Â
*âƒ-ôéBäpÝåB} Â(»‚Ç¥€VÏP„#C̾:\ÕB")£œ· Å ÙHd.„Ð'TæB,ÝÄ‹u+_†pd8üƒȇ
B8j¤—Â!Gl#´A `1Û¨«>BðÌØå
h)‚¸ú,(ÖCéÑg­¡% ÇÜ ýŽhIÂ1ó3?ú•‚+~€áï€d¼s°=z @KŽy>rs˜y€Õø©bå™H*:sˆ‡–(30Ê&ÐúyÖ9eˆιÈQDs‘ƒ²ÔÄ9£Ò7”AÄžžQéI+Ò@½t>¥Ï)Mª’ζÚ&HšÔ¡9!"li¥åÚ‡kˆ´ål¨vc! »ô™ ±¢g83âžö¼nų¢ †®@žâÌcˆñqCË`3Ĉ9qx@Ë`iˆf(Í4€ó`¦Ÿ¬TÔ‡
-g€M>kΩj-k€MœdY“½´¬ +ÈcX]>±rz‹€5D'V
œéöÔ1GNÀY™8樼A:©Ôï˜gB©œÇ ÜÏ™.H,8ޏÃtºc
*âƒ-ôéBäpÝåB} Â(»‚Ç¥€VÏP„#C̾:\ÕB")£œ· Å ÙHd.„Ð'TæB,ÝÄ‹u+_†pd8üƒȇ
B8j¤—Â!Gl#´A `1Û¨«>BðÌØå
h)‚¸ú,(ÖCéÑg­¡% ÇÜ ýŽhIÂ1ó3?ú•‚+~€áï€d¼s°=z @KŽy>rs˜y€Õø©bå™H*:sˆ‡–(30Ê&ÐúyÖ9eˆιÈQDs‘ƒ²ÔÄ9£Ò7”AÄžžQéI+Ò@½t>¥Ï)Mª’ζÚ&HšÔ¡9!"li¥åÚ‡kˆ´ål¨vc! »ô™ ±¢g83âžö¼nų¢ †®@žâÌcˆñqCË`3Ĉ9qx@Ë`iˆf(Í4€ó`¦Ÿ¬TÔ‡
-g€M>kΩj-k€MœdY“½´¬ +ÈcX]>±rz‹€5D'V
œéöÔ1GNÀY™8樼A:©Ôï˜gB©œÇ ÜÏ™.H,8ޏÃtºc
\EiW°/)áøf08Ô&[õ cœFwžÿf<[l2êR6WqÀúßtŽ*OôÛø\+Š¿S;‹añcq€‰‹ÙaQt_zî¬ñ¹‘‘«ˆ¸ÿ¥ó/9k·6\"â—{”56¼OßYqYtØqœ=šÌñ…Ie˜>˜¹l:ìŒöªÿì§Œý¹K.ê4Li¯ƒ~/ÛÌæqµ¶\Mä¦ÜÝo·Û/¯oåe»}È,?mcÍå¢ÃœSþ#†KȵqÀe'‰³tŽ+¼Û9á
wàÊêd†kÍÁ…Tú‰:,c=càÔ4Æ €?R§é°ŒÖÛNÓaÓ™_‚& :C¢Åqí±`»0ºk…äªé0‘qƒph­ ±÷UKó„ªY.´v†èuâ,øV­!zÕzìÓÝ ¹ð†èQ:j ÖÖãrfØ ¬OKüñÍPË%¢¹-±±’.h­
Ñ“&æV>¬­'BõÊXZ?Þ¹±´°öõ^†˜È,e \<1÷3–½í#×½{&ܸ¥rU¤ÍJÉ\"š LdöܹK0;¸)82i\o\´;¼•Ÿ'–‘P¬.t¬Â^¿¹1p1_uFÃÒÇàd}¡ãNSbé¥
\EiW°/)áøf08Ô&[õ cœFwžÿf<[l2êR6WqÀúßtŽ*OôÛø\+Š¿S;‹añcq€‰‹ÙaQt_zî¬ñ¹‘‘«ˆ¸ÿ¥ó/9k·6\"â—{”56¼OßYqYtØqœ=šÌñ…Ie˜>˜¹l:ìŒöªÿì§Œý¹K.ê4Li¯ƒ~/ÛÌæqµ¶\Mä¦ÜÝo·Û/¯oåe»}È,?mcÍå¢ÃœSþ#†KȵqÀe'‰³tŽ+¼Û9á
®ÃÌK_8.±´îBrvm¦(ˆ=$W›…ÄupÇU/«»Ð\¬•O_ºäj‚áÚ´.¹‚ÑzÜöžKdKÑxw gÑ q!Øý^
@@ -288,16 +286,15 @@ endobj
140 0 obj
6290
endobj
xÚ+ä2T0BCc3JÎår
ár
á
äHendstream
endobj
143 0 obj
31
141 0 obj<</Type/Page/Parent 137 0 R/Contents 142 0 R/Resources<</ProcSet[/PDF/Text]>>>>endobj
142 0 obj<</Length 143 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
ár
á
äHendstream
endobj
143 0 obj
145 0 obj<</Length 146 0 R/Filter/FlateDecode>>stream
31
endobj
144 0 obj<</Type/Page/Parent 137 0 R/Contents 145 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 10 0 R>>>>/Annots 15 0 R>>endobj
145 0 obj<</Length 146 0 R/Filter/FlateDecode>>stream
@@ -320,13 +317,15 @@ endobj
115
endobj
150 0 obj<</Type/Page/Parent 137 0 R/Contents 151 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 10 0 R>>>>/Annots 38 0 R>>endobj
xÚµ˜MSãF†ïüŠ>nªl­4²õÁ
0°¤ ÖAbO¹yl”²$G’‹åß§{F–ÚY3rÀ)ªLõh>ºßy§ÇŸ9`㟾׃4?»ŒÏ¾Þ„ lˆ—øÄóˆ_<Ê¥¬d‘Êú·ø/…8¾FÆîÄ
²¸zšG0+Óm.‹&i²²Ðø§Å…oy„Ç/–åz]¾fÅJ¿¸à/BVCµuÏoмàW;æœ:Æ9…gM¨?êa|õ0;–s®û»*‹e¶ÚVº¿‡¤HV’Þ…ù:i'–¶ûV€³Ã~þžû³¦gcÇÕËTãÜÍflœè­ndwE#«e’J˜É:[ô/­²MŽ6竺Ë7kÙ‡©\>ÿTÿÑÅõoýÜ­§\6¯I%áb‘gEV7Á²ª)‚Ûdý¹¡ö·èÄ‹æï,h^•«*És’Ü)V=ZM$Óm•5o¸k6eÕ|nˆx~hˆXÖ'qôôNœžjy¢|ÿ8˜ïØ=‰÷¿%|g:càcWè/°ñ½yUç<õ‘®S”ÅxÏyj Ù
ÙÎu|f[6:'}8ôñx‹þiÙà.Ž“ƒ êÆ¢4rœe€«5áŽãq~2È3"G7<'ÂòÍ<#Ÿú˜#ψ\ȧÈ{Î@8Ýi`¹=ïOöú¿ü%_ÕŠÎ;7˜hU\,Êg4‡²n"%Gô‰ŒÌœën²µ„›²Ê“¢L³e–* uržX®EéG³ÛÑŒÊ6èÉ·Qã;=©†IO-ÝêÉ€·zÚñm!#ÏÌ·#(ڞȻ¡55óŒ@Þ§¼ôüÁüõÛ›2é;Ú ~Éä}R¬¶xî÷Ìâ—¬ZÀõ"£ì}$aï8žÃçð{ù I±è$ɾo¤.Bêš)výUùèu‘– ò.#®’¢þÌÓuÛäû·Ûl!?ÝåC¹k5ÍHæIÑdéðê
151 0 obj<</Length 152 0 R/Filter/FlateDecode>>stream
xÚµ˜KSãH Çï|
ÙªÄãGâ7 À°5Ylæ´ãt‚·b;k;ÅðíGêöCYB;¶¨
ÕÉÏjEú·¤Î¿'˜øggƒãB’\D'ß®°Mˆ–ø‰ëù-NmxKQŠ<ÕÑ?±<…Œ‰aKȰàòq¬H¶™Èë¸N‹\á°¬·=Ã%<z°,Öëâ%ÍWêÁÒ
Êv×<½BýŒoµÌ™2œ4†mÛ®1!ÛÛ®»;ŸÒãËûùØ2¬3µße‘/ÓÕ¶TûÝÇy¼dæë8ßµŽ[Žúžï¿Í˜ñðµªE·y-Êeœ˜‰*]åô/)ÓMm1çþßf›µèV,?ÿ¸ÑðüžŒ¿ZÏ‹eýÎYš§U*ÊŠ´×GØßKký+âÎßq}^«2Î2ÒÖÑ~‡ûüE²-ÓúÏĦ(ë#ìFó}v#Q«¼ðñ0<Vâ3‰û¹7q?Ñ&éíMæÚ¢0V§Ñ±Õi´qñ£~eWª«B^äãÊP9ðé²p˜†‰¥^,zy¸Áh˜àø:’ëc5S5„{hd¸™oøZܲ\ÎOyFdXŽížÈÛ¶áéyF ?õ0NZž8¶9à'w­p:SßpzÞ›ìØ¿x“¯r½~°u9þD è|Q<áñ/ª:”âÄJR æj…ët-àº(³¸†p#’t™&²†Ž:qO Ç ©ôûšÝ¾­ºÆzùöiÔ器ÄV]r¡SWC7êÒàºZÞ¥§åÙ·lн†çòN`Lõ<#÷(7=@6=KØ7Ù¼‹óÕÛt?Œ zNË\-RÊà±Icµ›èüY<Aœ/:ù„¢†¡f…êCµí}“eô*OŠÕ52•q^}¸t¶ºÞOþf.Äqvî‹…XK‡B‘Åy&|9Â͉ÌùT
@.öK„ø^÷è~štÌœTmmÒŸŽgò¾¬t~#`üú6§Jß×—ø®Œà.ÍE_«b‘a
Â!¦.býåuÈ,d,©…&K--“ £€Q´­œ”¥c¢åAUn‚Q×òŒ@Þ£šªåAYøÏ ê¡äs'øÃª±[e˜TcO]oÔÎÐ7E¼®pn*ñ «G.šÎGåæÿÓFÌìt$:5´’‰†fæ
ÇH=Î Ò‘7à 'HGže-ÏšÅ\Œ’ŽçéÈ°Ï ê®Rµ:žÈ»4ÝjyF ïOâÉ šõ¨÷÷ü¦R²iÆk!%Š7ër›Ô[œåñÒJoômH/ÖÓ΄^柵KÃg+j¹Ð‰º¡•f54¨8ç‰Ô§”ëxF ÐÝKË3‚DJºŽç]0’¬Žg‰¨ã;5|&#l‘÷ñfCy~õ‹9ÜÍgR18Ët¹¯¾¾ÆM-y'QÙ– Ze[C3€jœCCƒs‚zÙ ïqÞ¶†xN¨ôêÝç¥×¡ôvüéÚê¾&ÓëZâx]‹_µq¼ï²
“†ZZKÄ@3s†u£ç˜ 'HC.îa#ϪÎ<Œ‰çi(èŸtú*ÅšxF ïÑÚÈ3ù`:ONPõGµAÏ¡Q?d
ã1|"9²~}‚¿YÕB—à†VùÓÐ  ‘Õ£ipNÐê8à 5¬xZžªÉèýáDÖœF-Ïn\ªF€ œ ‰Q8ÜPÆá|‹Åž®%²‡œÁE\¥‰<ö³tE¿˜'‰¨ª÷ºÅîãª3ø­RpÛq·ïãžø&~“>rýuòHÒU'endstream
endobj
152 0 obj
1328
@@ -363,55 +362,57 @@ endobj
‰“]7ZjÔÛ3ÍAüs-ç8¡Ãm0Œ‹~‚^ÎÄp¹è÷ñ-^ pòqï4è¶Þ
;‰·ü^¹ãx8)‰â¤¦mJFW 2(ÜH=«hðÐ× A>ÝÕaÝù›/–Ó¼ÿîÿøú‘á¢óY8¹ÓôwòîÚœEL¶*f
q™ßÍ‘ŸÙÛ7/››ßoþ]¬³zendstream
š¢l©%©:Þ¯ßRò­ q,™Μ9CŽþd0Á¿ ¦súðjðq5øížA–ÁªÄ'óåVÅè^Zçß­~à³›öÙ˜. Žuö#Å^0³üV@IaYÁFíë­©ãC£=T¬®¥ÞàóÀµÂÕí½‰CdôÚ=˪©À”Ïæ´Þ’lšæä*ß2˸ÖgÖ"ÀŠvÒoq5Áø6Ö4õ8 ý‚×¹áài„3ÐE‡6_ŒóÜÊÚ_¬§d%=óÒèôé¬0–üdª.D¿Ϭ\VL¥ç„!N>Ooç“´‚Ì%¸<1ä¼%n†Ê;ÃÐz£ðjl¼eC¤²=A+%JŸx“X¹Ùú1„ ý¦ñ0çl>X¶–ü"0/žýëî~“…ßþ‡«¿• Ó¬ñþ=ĨÓ.¦ÕwœE¶üNrÌavŠpýðx÷ðǼ^øÙ*èÎ4V
~_‹’qñºë‹™ÃÚ¨b ˜<c?‰dü’¸É>yÑü ñnqGšméÚFÅÕ(f¡[¡ÀCyO˜m´Ú_Æ~2©‘…!2ˆl"¹{Óa~·5*HôJ:¢‰t“Âðq_¡ûC’ègr'Ô[`sÖÚî¤R. FA0ÄGavZ”r²-Þ!àŽ|©1å$½–ö[È-íÓ<ÒN0½iØFÀ½T³HZ¤s2¥*RiI¦PˆRêH2Þ²Fù#ƒàDÜXîJÅ2¢j& £ÒœCœv«Áˆ;䔪uOì_D­Y…!®÷”´R>Ç-é(kÞÔîû0îJèž%*i±S§]õ^’» „YBSé†Û’ªXxŽ)¹X>&£Æh´Ãܸ¿3TH•±”\-Â`,C¥žˆ|uØqɰ”0=èP¬Ðsê0’.ѤW2èH op/ÖÕ†{”Ùhùš7¸ßim<>Kg’årvd1żMq²H—˜g´xÊç 8Ï?=;u‡÷F˜öF¸é°è°ì!›ô‡è¯ˆ¬¿$²7k¢q s\Ê7Ï÷åÛS¹Ã.Ãì\²\Üô…ÈòÙä
Ù0ò+`L¯€q
NgWÀ˜_cqŒÿ#Ó$_âü³ÐáiEmþ»†slXBsNÏ®¡8mBcvrüŧØ!a#À©Û¡¦€nªµ°ãØ„á×åH<- Ñœ`šº`ÔiC¡]$xVÒ9L?O ñ,n;©e^6›§Y÷>w_¿<ƒƙ¡ïû$œÜhº„W”ö-"‰s’E8 IÞN‘ŸÉë
ÙçÕà¯Á¿öùíóendstream
endobj
161 0 obj
1028
endobj
endobj
161 0 obj
1013
endobj
162 0 obj<</Type/Page/Parent 137 0 R/Contents 163 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
163 0 obj<</Length 164 0 R/Filter/FlateDecode>>stream
xÚ­WMsÛ6½ûWlٜքDY‘¬Ìä :öTÛi­^÷‘ „šŒ£Äýïݨ3’{jÏH&ñÞîÛÅ.þx@öàxiyðëô s>dÓW' L³Ãcv “‹38—…°¯¦ÿ ¨I@qoÈ;ýóý5ÔVXpw:r"€T ë¸Ê¸É Õ*—óÚp'µbÁ:í¯ìX¿qË(e)˜[V;[ ï2KEBp͈TÏ•ü"²°`(…tXiQ™Î1 Ú@©€Â3ñÕøút2'>;§º,…r$'ǬG®ã2î¤[x•®ÑöÍaôctó
Ò7<uÂ0 ¡3žÞÚ‚Ûnn å
fR˜wÞ˜@S(…{UàtKFपqe㉊d7èÞ $ôŒ§ PZų‚«Û÷âmPÏæQ‚@f®Ì%ÊB¥¶®„éГ:ÇÌ ƒJ×OÆ—cã¢ð9k)ÍuQè;©æºåî(dܰÂÈ~¿Ül
˜‹éM¨‚.Œ¨°jã^?DG5{Ò›·àCÔ‰‚™¯pýÞóáߟWºì„h‰”¯ñøK÷ã¿¢o‘+Ûm ~Çþ“ùÏn<ÚAöÎ=s#°î0 {(¹Ã-¹¸Ã
D>¦;HÅTï0´¡ï–²Û}p„ŒÈÿå}ˆ¹ø\/÷-8¬~"nS) ®óÜ
ÑQ…PsÜó'˜•‘ÊñY!^Ķéó5¼|ŠJMÁ¥²{ü~¿lÌ–O¼¨Å“ÒÚ¸—1_/¡:å!Ë[qµÐë£ø…
%ü|€BÏ%òa|ùþÞçƒÜ ÛèëêÇI?Dë¿?@­¸YÂåÕ4p6gyìûx°:ÍW-e8w7ðCz·P>ëmœ?2š.+´¾…S€ö°ôŸKJà¬2·0[: óÇg·Œ3˜ÉyŒç¯ä
xÚ­WMsÛ6½ûWlٜքDY‘¬Ìä :öTÛi­^÷‘ „šŒ£Äýïݨ3’{jÏH&ñÞîÛÅ.þx@öàxiyðëô s>dÓW' L³Ãcv “‹38—…°¯¦ÿ ¨I@qoÈ;ýóý5ÔVXpw:r"€T ë¸Ê¸É Õ*—óÚp'µbÁ:í¯ìX¿qË(e)˜[V;[ ï2KEBp͈TÏ•ü"²°`(…tXiQ™Î1 Ú@©€Â3ñÕøút2'>;§º,…r$'ǬG®ã2î¤[x•®ÑöÍaôctó
ϼÕ)×:ÖJm]l%Q9æC¹`(—ƺÇ[/Ì,¬ÕOÿ×`ÃGa=o´µj<k´=sά¯­Ic¿5FTFX4“ÃêÚ¤‚bl Ï„E¿R„Ïà|÷ÌÁ a.8æÈº¦Ãn»48“n—ÆÆH„O¨Œž^Ò:Nf“|G´°8Õ”v`+Rd2W2òdÅCFébe:0JL•$üUª±™IÜhlÝåþÑ·É5èæ©G>Lün´­«r¸î¼ã^¨Ê>\U>ßqÏ+¹ §,%ÅÄ¡.3ð‡>Цê`,Ü©ñÕÅ6‚¨ CÈv‰÷‰2Ü’Œm%ycÔÂÊ¡Üfo»Ä=máÒNZW¶ST™ÖyAOm¢yæ›
»øÂÍŸgËBxÌíO¿]]œuØ~Ÿ¬I»]ãmzcXþOéz§­Øsè}mZÂ<‚—ÄZ7ßš¾!#awš›§Æ÷:ïW½³¿êÞ¡aPä"Dö6ôÒƒÆØƒÁØI|Òëâ
0zÝL_YÚúœ¢Fx²ÒWj¤7Bô8y=@V<ìuwÿsÒ?é²øÅ!=ŸM~?ø·;ؾendstream
endobj
D>¦;HÅTï0´¡ï–²Û}p„ŒÈÿå}ˆ¹ø\/÷-8¬~"nS) ®óÜ
ÑQ…PsÜó'˜•‘ÊñY!^Ķéó5¼|ŠJMÁ¥²{ü~¿lÌ–O¼¨Å“ÒÚ¸—1_/¡:å!Ë[qµÐë£ø…
%ü|€BÏ%òa|ùþÞçƒÜ ÛèëêÇI?Dë¿?@­¸YÂåÕ4p6gyìûx°:ÍW-e8w7ðCz·P>ëmœ?2š.+´¾…S€ö°ôŸKJà¬2·0[: óÇg·Œ3˜ÉyŒç¯ä
ϼÕ)×:ÖJm]l%Q9æC¹`(—ƺÇ[/Ì,¬ÕOÿ×`ÃGa=o´µj<k´=sά¯­Ic¿5FTFX4“ÃêÚ¤‚bl Ï„E¿R„Ïà|÷ÌÁ a.8æÈº¦Ãn»48“n—ÆÆH„O¨Œž^Ò:Nf“|G´°8Õ”v`+Rd2W2òdÅCFébe:0JL•$üUª±™IÜhlÝåþÑ·É5èæ©G>Lün´­«r¸î¼ã^¨Ê>\U>ßqÏ+¹ §,%ÅÄ¡.3ð‡>Цê`,Ü©ñÕÅ6‚¨ CÈv‰÷‰2Ü’Œm%ycÔÂÊ¡Üfo»Ä=máÒNZW¶ST™ÖyAOm¢yæ›
»øÂÍŸgËBxÌíO¿]]œuØ~Ÿ¬I»]ãmzcXþOéz§­Øsè}mZÂ<‚—ÄZ7ßš¾!#awš›§Æ÷:ïW½³¿êÞ¡aPä"Dö6ôÒƒÆØƒÁØI|Òëâ
0zÝL_YÚúœ¢Fx²ÒWj¤7Bô8y=@V<ìuwÿsÒ?é²øÅ!=ŸM~?ø·;ؾendstream
endobj
164 0 obj
1191
endobj
164 0 obj
1191
endobj
165 0 obj<</Type/Page/Parent 137 0 R/Contents 166 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R/Fa 9 0 R>>>>/Annots 45 0 R>>endobj
166 0 obj<</Length 167 0 R/Filter/FlateDecode>>stream
xÚ­VMsÛ6½ëW쨇:3MR_V:=´IÜñ¡5V{Ê"! ) °hWÿ¾oR¢åXJ:Ë@.v÷íÇ[ü=H(Æ_Bã²rðËjp}Ó‚V~2»Á*¿z/­#-Jy­´uBgLå”Ñ?=Š¢9ÙDQôìÁ›ÕçAL£$Žn‚®hŠ îÿÑò_º¾P’0Ò ŽÒ+^í$JKZË­ÒZé-=)·£akqHJç*NZrÍ[Gr„HiÁhcjªj¥}6kû#‰ƒ”׬´?ÙXYw¨ÆQÊÆƒ‡´QÜ”u­òf6P‘w:ìÞ:YRï\Y̸¢ +¿G¨žÃ¾"´‡\là¨w[Öô—6O0aüëÂd¢ ¸ —^××fáÔF&4IBïɺš
K…t0c Ý”k¿:aÑ9ö™©±¬Øƒ$µÈø#/¤Þº]Ô¯³Ï™«e)+`®Kef´Ãc |…B%ã­D&GVVÐëÏAÛy¡jòeb[¸ Jæ-ÜqÌ£)-uY­*GË6phÿ€óq|Øçá`瑯´ ‡?]
—Ë÷ÃOo|Z-Þ! +•X«B9…7€#E¶;äŽ1ˆÚXNë=½ûcù€@žÔšmªÊÔ®;5²•ÌÔFe´‘Â5µ ±àwE¡¶Å ? ˆƒ2é0-A‰‚ßôЪóÁòVƒ8ŠA7ü•ð×Ç_)™Þ “äÇKJcü†]AŒŽ‘›$‹c¦Ù†ï4[)Wr¯›\Ä=“éxB9š|)ß—€ü<À³ò=‰’Æø=/ß—€ü4Žæçå{%MâÉÿûO'ô÷% ?¡ÎŸ¥ääH½=d±MÏϹA™®d¶»7NÒwÓ8¿ýš^¡[ŸËWS‡
àLQ¿%Íx„Í—qôJZ°ÿç¤{¨Ã$å”Ä4¶³Ð8Ï*›þ'ñï$û;hŽÛà\ï–4´ç‡œÔÖS(‹û5òàƒþˆÈs R'ƒœµ|"á@¯ë&L&´sÀ±'Ö²0OG_NÙÛûÔYSÙ[ßè/mˆÍÖRùÁ&xÄ<úq%˜oÛ°ÔM!;.æN}´o#”›×jMSgòÚí+&lËÄd¶µ(ÏNêþÔõ'á™°¶)¸^-¿}o½@Dwý1×’`˜‚Áƒ 'WµÌ\±/8ã¢8!Ð@‡4
©{u-•ÊüR¸Sîß„nDñÎTêK ï}mL!1NQׯ±¥àãݲ%é¶ÜIˆ:عÁ íð#àÕž@ò¨%/¨ô XÌßü Ѫw w+8¶…•—ÐŽZ“ËâÞOýó`ÙÕ-³Ø.®ö˜ÁãØ*Yo{`/¡!lº H7=ÏÜ R”È?76DÏ4®jœ¿Ñ :±…²n½¸„|â‘/kÃëûª:3…¿ZšpCüš¶Â 7EÃI
­•3Í8$[”¥ UÆ þÁ{ ÖpªL°N±N±NÓ ù¦u7IyºÍÓp
äuÇ1ØàBÅŒ®¶ºOì||”`Š$4šC+Ýð³Œ;§ø[oR˜ ¿þ 1ÁÕendstream
xÚ­VMsÛ6½ëW쨇:3MR_V:=´IÜñ¡5V{Ê"! ) °hWÿ¾oR¢åXJ:Ë@.v÷íÇ[ü=H(Æ_Bã²rðËjp}Ó‚V~2»Á*¿z/­#-Jy­´uBgLå”Ñ?=Š¢9ÙDQôìÁ›ÕçAL£$Žn‚®hŠ îÿÑò_º¾P’0Ò ŽÒ+^í$JKZË­ÒZé-=)·£akqHJç*NZrÍ[Gr„HiÁhcjªj¥}6kû#‰ƒ”׬´?ÙXYw¨ÆQÊÆƒ‡´QÜ”u­òf6P‘w:ìÞ:YRï\Y̸¢ +¿G¨žÃ¾"´‡\là¨w[Öô—6O0aüëÂd¢ ¸ —^××fáÔF&4IBïɺš
endobj
167 0 obj
1197
endobj
©{u-•ÊüR¸Sîß„nDñÎTêK ï}mL!1NQׯ±¥àãݲ%é¶ÜIˆ:عÁ íð#àÕž@ò¨%/¨ô XÌßü Ѫw w+8¶…•—ÐŽZ“ËâÞOýó`ÙÕ-³Ø.®ö˜ÁãØ*Yo{`/¡!lº H7=ÏÜ R”È?76DÏ4®jœ¿Ñ :±…²n½¸„|â‘/kÃëûª:3…¿ZšpCüš¶Â 7EÃI
­•3Í8$[”¥ UÆ þÁ{ ÖpªL°N±N±NÓ ù¦u7IyºÍÓp
äuÇ1ØàBÅŒ®¶ºOì||”`Š$4šC+Ýð³Œ;§ø[oR˜ ¿þ 1ÁÕendstream
endobj
167 0 obj
1197
endobj
168 0 obj<</Type/Page/Parent 137 0 R/Contents 169 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F5 5 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
169 0 obj<</Length 170 0 R/Filter/FlateDecode>>stream
xÚ­WßsÚ8~Ï_±Ã½›âúèôn&%i'¹Ëz3É‹°å Ö–¨$‡ðßßJ²
˜8¡¹Nfˆ±v¥ïÛývWü8 ÀÇ¿Æ!D1$ÅÙ‡ÅÙÛCXd¸OưHû‹…óÅ7\Š«¥¾¤Jä¥f‚»…Ú§„§mc½]Ó¶ÙÉKª  [XRè
z DQ@`Ãò4!2õào½¢rÃ|ØBQ*N:YàDf^»½ýö ˆ¼Ðÿ܉RH8ôêßД‘ÅH‰Ö’-KhSš1NS`Ü ··—±œzÆ
coد”rÅôö„`Ý“¢ Ñrçƒ5±¾Õ¶@Òo˜‚r
ÃT‰AÒ+¢ßÕL§f3Lô : Ù]ÿñîþhöùkãIšÝ!î Zø~¼^IQÞ¯Ž,Ãðyš¢Ç´$\eBbÒ
+ü'Ù#à ›‚ÙÍWHDŽßœ¯Ó^´÷ÔÐD†¡ÄÖëœÑ£à“LSyŒßsˆÄsfÓêêôGÞÈ ½$åZýK¥:’ßTŒ¤?J&M#5d |Ä`lV óøàö©³/·s¸¾¼„
xÚ­WßsÚ8~Ï_±Ã½›âúèôn&%i'¹Ëz3É‹°å Ö–¨$‡ðßßJ²
–K©ÐµH­I ÚDApåµâ0+¥D¥ä[`ÚÔÒV(<ßC/ðüž©|z;žã
{Ö<c˜'+š–9•0<c÷¥tiúˆÔ1ë±×èF5ž’’T•PйÜßÅQVõ& Lò@XN–Èqx1aê
$9QŠâƒ©
K¨zw˜Ý½°Wæž9î¥w(Lw:Ê&ÏëTg×'Ãw.6Ü41É­Ò´ðÏìïmÄ‘þôùfo”7¢b-$3_Öˆa#dŠT'ž“Ärë°Ô~NÉ_‘çB*îzÈ´Ñ‘@wJ¬pjÙì›9$ø¤˜ÒÊÀŒl !)侺˜Ï®¯Ac9x¨ÑÂöH·¨4‘G^9ø¢DíÜõ{¿õîÎ[%“¬ˆÄáTÅpOHW‹“ >Xæ„·»}ÕncN
ÃT‰AÒ+¢ßÕL§f3Lô : Ù]ÿñîþhöùkãIšÝ!î Zø~¼^IQÞ¯Ž,Ãðyš¢Ç´$\eBbÒ
+ü'Ù#à ›‚ÙÍWHDŽßœ¯Ó^´÷ÔÐD†¡ÄÖëœÑ£à“LSyŒßsˆÄsfÓêêôGÞÈ ½$åZýK¥:’ßTŒ¤?J&M#5d |Ä`lV óøàö©³/·s¸¾¼„
;©HKÝ.ƒìS*ò\l\ʺÚ^æZ™[²l!jœ1H¡cäµi%úQ¼ÑØ› ܉ƒ{Y{£÷Š0ºæ½m7ëzR^-Î|ÏÇ»AóñùØ¡–pàOÍç¡àÙó'Œƒ(ò¦•u„§÷¬.6¡?qáý̤×FìÏá÷oíš}íÎÏÛ™I¹7Xu8m²¦Iw³ &”ÛÍvµgÙ8kÇfgl,‡`W@/iFÊ\ÿb*M‡OÝöfDhÆÉ)4G1ŠàdšÖº“f4v$.’„¢`œ0Y¬iÂ2fg5×7 Ûñ1£·vN7ðM,qh߸k`]-ª°ÞWªÜDúKô^"ë>O%k­«› S„_p®¨[ÿ+ÁâÇQŠu^;7µLi’ª¶íý§’Ú…ã%*þ¨‘çËÅæ¬Ÿ(6KeºP~ œS97-ª“ŠÁ·´vŽ&ÍõvlP43ÝUØ´ºñŒ—abÒø™Iìù's±Æ]TÆÑŽÈO_CÃÞó^Ã"ÞUÒË,â]!³E¸h[/ß¾RY\èÿ¡®áø':¹5î¢
]á_óL´X\ØÉ[’¼ºÑÚS_NAi'×ÉófÒskÜLªqcš›ù½kÁU×hsiÉHB§ »çÐç3¨œìíÞy^5Wl~són®½Ã‰x¬Ã´"øÏÙìßQ¦endstream
endobj
170 0 obj
1287
$9QŠâƒ©
endobj
171 0 obj<</Type/Page/Parent 137 0 R/Contents 172 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
172 0 obj<</Length 173 0 R/Filter/FlateDecode>>stream
xÚ½XÛnÛ8}ÏWÞ—HTÝmoŸÒ¸-ì%Û¸oŒDÛÜJ¤JRÉæïw†”,E‰,I ‡:Μ¹R?ÎâÃO@¢³òìÃöìݧ˜ÙîH˜z1IW Ùæo~“5\Š·ÛÎí¥°–/‰aÿšš¤hDîˆ90’Tká·g¾çÃAÇ/ŸI£ìåÊ['.X{!QŒÜ¾¢È[7è(\yË4vz¦ <•n†©¢·ËøŽ3M(©Ô¤†p\)Yy ¯Q=±JÏUÝ¢GUSxŠJjبâ¨Üp`[#ò‰¾ïIF¹cdqlA¤"[#«Šå‹)[b>gÛbÑ£¶„KølmùiM÷ì„/Úð)’ì¤r6ÕJ1aœmÎÜ)+”™m…E¿`Å»OkÄþ>IÖÖ”ÈKՕνLŠêÑe‰O.Â%¶VíDv¼€ÿ¥Ð\®
@@ -430,16 +431,8 @@ endobj
ß•’8“[íýn°kέÌÖH^Vϸ)@
ŠréP‹ÂÖÐöœÏi7àÓ'JâÛÏðÌÎðá™VÔ¬CA;þôLk:9~÷Ö`•L
ôms
QŽÑjª ŽãÚeV×»4Nâ¦É¤æ÷¹ž(Tcvê(]'ðúë× ¬zæŠÇ~t”©ÖÙ/wJÊÞó.<í–†¿òU8Éå<ãe6ÀÒûÑỪžÉ€Vw¿ŒrpÀ9Íé`”E•ËTšfÁ©l:4eN5t/†ýÏç¼?àógFâÛÏpÍÞñáš4Õ¬EÁ:ù|Mr—œ
¯ÿÖ`Oè­š6甸
Û€èÕ]@¬ÖÇ;u—Ÿùe‰CVÔø¥´I]þÀeŽ)Ò}%¡_ˆ º‹©,Y&¯hhËd~?#íXŠ“ãnv£j3 ’„þéCÒÝÕ
ð€«n[…”\¢ckˀƼšE¯è\Q4¿qEщ¾ú=o"ç/v­S_)‡=\$ÞjÊn«'ÃOËÛ^-×CóñcD%6œ9ÒJvý‘wWàU{ö!J|¶ ˆßµª-Oƒk¼Ü•lp›_Ø1‹vO-,ò7l{Ú ßÈØ¿ÎþýZ2endstream
endobj
173 0 obj
1479
endobj
174 0 obj<</Type/Page/Parent 137 0 R/Contents 175 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R>>>>>>endobj
175 0 obj<</Length 176 0 R/Filter/FlateDecode>>stream
Ü»€èÐm@¬Ö}OÝÀåg~Y¢ê_:@û‡ö¢Kï)/0EÚWú…¸°7`6•%Ëô
m™Îïg;V’´ßÍn¤2FÒ(8=$}ÝÜpÕmªÐ%ײãjË€y5#Ž_ѹâx~ãŠã}+
:.¾°‚Žw­g¯A´¬UÆÐûÚpázQ;üì\žèAØO}Ô
¿œn@s ‹eŸ¥â§å†³¡½cË>ûÅÏ
ŽÓ›ê|uܾ£öš¿j®ùdB@–¡u¬Q‰mÇ;
@@ -474,43 +467,42 @@ xڭX
xÚ•XÛrÛ6}÷W`Ü—dF¦DR×ö¥‰s©g’Vµ•·Ìt`’ÐŽÕ¯ï.–‰–HfÒQò`=»{vÁïW>›ÀŸ…sü/J¯Þn®Æ¦Ì÷ÙfË‚¹7eóåŒmâWŸùó'½{ÿ‰×›¯üÉÊ›³å-ñåŸ-WÞŠUO2É­–å{ÁRþ,Ó"e–3½uÏx kGL£Íˆq£‘ 
½Md|'X¢wl+°#{<äÂzìnˬÈY®áè`I1¥«Z&Ü~Ò"ÜcŸjSÜftÎs3^ä:幌xØ0ײ‘ïÑ@iH<GBÄ"öô~s5ñ&@`ýsÿ‘Sä,\Áb"i¶F`Ç3`? 3B;úºÀAЀƒ
ÂFÁòqK
endobj
×½ø^›Ÿ†lr®9¡»£õÇf³†mœ5ŒC‹ KQãHkÂÓGÛdÑAÃtÓæÐÎ.pI›m
º¢m6_À/øò—‰…i±õ&IôÑ;¡5mnÑ Þ4.FÂÜ
Ìh†«X,ˆrù$Ú n4–€T»ßXÄ!½»Æ#·þ©”i–ÈHæšqy€#{)ä´;ÁÁe6ÇÕÙðOUž%‘JŒà€-×oííœöb‡–Ü&ËíÈ_ܬ'Ò³pZGzx“îHÚ1ߦH˜"Ý ëHO–”òkPP„V¬QsþIè1éYéèi¤dhUiÙ‰Tyl³o‡Úârž0ÅS²=X_WA/,Ðì[S™jj«MJ7+¹HÛCötÙ¨Ñt?dÚ9ß&² Ld7èŠìé¼T£µ6y‹éyè_V!Î2XÁT>BE¿‰_ç@ƒ¤?V
xÚµ–QoÚ0…ßùW<m¤Iœ„°U•ÚÑNHëÔú°G“8à.µYâ´ë¿ßµ`0BH§©Eø8>ßõ¹±ö<pñσ¡$‚ä©w5ëÝày0Ëp$Ї0Kß]Ód BŠÁ<§âä\0(-T /\-A-úÄ@f@!"㋪ ŠK)/X¢ø3ƒLæ¹|a)Ì_ãÔgšWÌÙr=ÄÅâýì±çÂÀ#ޝÞL. *‘²¢TR¦´ðì&¬†C'†;ž5^ÏÒ"ŸEEÿÎʤà+mK\Ïz®ãb6÷ŸÁðáúž;r"ðôW\{z@ìâŒj5ÁÕ‡¨w*éGú©ž~ú¸L†.,­]%²#ÓKxÆ÷eɰª…)íªàBáwŽUXOÁ^àQÎKné+ÌÙfʽö¿³²²€þWÙwZÀÝ i-8|«FpƒŽŽ¢ó1Ëh•«»C›¼Ø3y~V^ü]“ª($î|¹S‹”e\p“° Ù¨þA/‚ÿK¬É^ l8ÔŸ§ÂZu#läÙì]ê ?”Ó-ˆ»»µ¨TºW*­C,ªL¼iÝJš}.wˆÛ`°Cd­ú@d-LàÛ]¹¢B°bª;½‘F[œÁZÇØç ·_
‹L+ÛÇÆìgD†ÐE†À—Df8ÍX©òˆg->Æ"ÆÙÑ»Žvzœ~œ½æ›H ø«Õ. «EECÇc?d¾‡UÈ(®
c„Êi±0ÖÉV”pkIÔ[F@ËѺËcì‹EŠéKŠê†ÚZ¹J:6 biùcÒÛHÃÕ*xh#%ôÀFJàK4¤©§ì¡÷Z·ówüÄÍØfZ'ã¨Èl±Iw¸Ê6JƒHŸó‹e©>ÖY·ó]eMÐ㼓ó
ºv~¶¢˜Ýß­oy´oÏË´{€8óRjs© oxÞV8KB}¶E0û(šây‡3/siæI˜7qJsÑK’æwzý'”KW†dà) ;èXΣœª¨‘´—„`Qëû€<qè¡yâÀódâ7T>1€Óƒ:vý|7­`.+NUEŸÕzx§r}À(9‰Õuä
DC8Û±Øò"içÚí—õ´[<¶k(ˆtÏîÖkFæÇ3Páö XúHýÀ
182 0 obj
831
endobj
183 0 obj<</Type/Page/Parent 137 0 R/Contents 184 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
184 0 obj<</Length 185 0 R/Filter/FlateDecode>>stream
xÚ-L»Â0Ûï+<ÂÐÐ#Ú•—Äâø$Ò’öÿÈ–,Û²_Ĩ?`X§ôOZ Íö
˜!¼t†±š×Û›ËñŒCC‰W°
Cºg_R?¦.OåAÕoSýG¼Ðж-¾Ög,ú’ôe0¾ËQûЉ޹ $íendstream
–À—l0šœ)l*'òt¶^1SË)ktÜÊ]AºÝ"qˆ„Ófôè¯OB¬O_ªÏ (G7%}4ºÈÎÔ秨Q9Ju“´C4À¹TC–È8µËöd\`KÌË ê£Éÿ™™„ÐCiò»f’`Ò€±iöNšsM.O³.í`Xãæp”A¹+ǧýÕ¢®š~Ù"ô@Ù"ð%Ùòä²L….Ú%N^ÜŽ7è%±ƒYU[˜Ü!D%G(ÞÂ^H–Æœ‘Šz¢ŒãDÐôV}\Íg?QG„˜ ¾” ¾ðà‹}q1N²îŠ0µ¦»šÁÏ+Ì—‰gjÅ“—·âá½Mχ³/BÏ02þ/§øe gÒ’˜Ð›{a=>{¨˜xòæ+ø,ª<:ÁÑ ÿg%^³!|¸£³Ó
/ÑîÑ›‡Û»;¨²çÜc·:M1Ùè¥Í¹)'7DèF÷¯¯®¹þúº{n`¬Æ+_T_0ÞÃ\Æ”V7 Wßœa²kÃNó\²ž´ƒæ»haóÍAÂÒ'žt._A¼['ªÓç88:°’kÿJì-Kö|¸Sùl¾šÒ²²M#‡[ öNX¹SøWddVu©Zu³\¢ú> W¥~]ˆäÚßWÿæ:“éendstream
endobj
179 0 obj
1574
endobj
123
180 0 obj<</Type/Page/Parent 137 0 R/Contents 181 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F8 7 0 R>>>>>>endobj
181 0 obj<</Length 182 0 R/Filter/FlateDecode>>stream
xÚµ–ßoÚ0Çßù+N<m¤qâü@«*µk7!­SWèÃMri]¥KL»ý÷;ÛVFÅ_;ßOîÎç>}$„1dOƒ‹ÙàäSŒÁ¬€(ñRˆÓfù»KYc¦å3¾Ÿ=z!M4÷±Éj¹Ð²Rfäj6ð=Ÿ]ÿÜ~†€{â$¥Õ˜?öb`c/€aºCÌÂзê0H½äµuÇ[wAlVÌ ù8Ï2$êÞ¸pO‰éK#ÓØÀËê¬~`QK¥éZ6 VSAá <Vóƃkñ æh•J<acVõaDÜöiÃïØ ¡ªaøµz=àÜu–€.÷ƒ[µߨ Üá’†§—Xˆe©oZ còlËäéI;zö÷;YÖuµTyóê]äXH%M(¡ 6an˜‡ÐCïG˜‘>XÆ=ÿpX«î„õ™lYV/w
ÖÍÃX¥l4T,Ž „A‹ 3sЕróŠ·%ó#Ö©w$¬E‰RF£äùB(…õT‹ZwÒs«s ”¢ÎqN)IA¨l²$µT„OIÛG“D†ãP«î¤‰—FŽæJåoa…ɹ· D›‚:ÔÞÔ%ª_oL2UéK´0![óXu'­8žg™áÝídohr«-k BëZΗឥëŠ?À½Uwº÷m¯™¨¢Ú²}ê¥(Í^´j8&åãcSwåiäêùK•‰UïÛi·lGzMÆGT«SïöÛMÿô?5>¾Iïþ–àÔ]-‡mzÓªqoj[s€Æ(·ÞþÈ„2ý}8ÉKt|ª«Åó¾n΃cÒÝ©;³ˆEk–kÚ3Ä=îÙ}Võä”ë2Í(<¨ô:0¸Â?ªüÎÃXÚÆí²æi]ÃÇ»›)LŒ›BdtF”÷
xÚ•—]sê6†ïù;Ü”ÌÇ2þ¢3½8$iK§=Ã9»Ü[7²åÊr€ß•d“ÀÁ˜Nfˆ±_­žÝ}%™\ü#y0 !ɳÕàá×)x.¬6ø$ŒbX¥#ž÷ŠÉ‚r˜x±¡ «îVÿ-‰¬v<ñϨ_Êr)’7¦`!…‰àVî!Ü‹œPËW[öI^6rÈ* Äãu¦ á ¯W‹‡ù*+LDQ°De¢p@‡HÙ†Ö\V0ùž% J!•Ž3%®kDšg& úò}9S[BAs¦¥C}è4R/tüëuÅRX@¡âw¶ãLaÎ4y£2…?˜zÊ$RBÁÔNÈ7ÈŽåÃìR „7 /“Õ=ÐêŒpÇ8Ç»Óâ§ðΊTÈê'
‘Ö‰ªX2f¦|Y,a)6jG%â¦yVd•’T¡þ¢EýÛ ±ª.uXz6ï1öMölAt¯Í|3)vUVü}[£/1͆—'ÝßñššŠJAÓ„Vªí¦³Ã±Éj‹#Ú6‹’aŽXQQ`÷Ï29ñB8!ç}¦ÉöÓd%5
NY•Èl1u]+…áu¹(hlÎlß°XÌ„ÓÊ6Ó:öËòq>ÅöH®¤ÎÖ%(ÄÜ3¼õAƒcKµp—©-ÎQ ‹²‚ÁëÈÝ»ôõÎú» †“` sª°iÚÁ9Vóg[u¦ºè¸–ÇžoT‡’ÁrÑ$µÌô¿! ÕËgh¾eÅFØ«œ¾±1æ3ÎEÊø¾þicÓ¦£cÝtt©cÞëˆ÷І»êÔ£{S Ó8£Ó‰~)YU
ˆµÓ}˜/ÐæÙÈšFŒMvç!Nµ'ö¶£||²N:¦j½UßUŽ^º«õt:´Fû8§uý¼kaïÏÇ™¥¶e{š²$ËqG(ê|Vnü%Y‰Ug…Ò_ZÒuÆ3ux06½¸uZÐ$¦q–)ý<Šð¦«o<™•T¶{^
\ÇÅCçøñý7\!ÞtŠûš™âpÜ–—Ä‘6¶“0t‚Ojszµ©?ÖQcƒaÖÚÍÈ…_ÚU|¶$ >1‹º7ÔIš˜fS¼ÎkÄ–÷C¼
¥OÌÔGÊFcjÃñ ’åBŸi¯#ÊwôPy½ëKÀ#mÁý¯®'`Ä6õGnlëêSpÅÄ]Ñt³>"W—æV ñ X"O­%'׈ð𲇊ē¶ÑýTVÜM¹ÍKÒeª´.9Û÷…¾ãÞ dÄÝ@q^p·UäéÃñ}'¾Lj»qð„6¯œaG}lô9ˆ2c}+”xÁí;ŠÏãœêͳÍ
¶ŽŠ#7gÔN
=“¬-Dãe•*ŒŠ'¦¯Z [¨oƒß¾Q¿ endstream
endobj
182 0 obj
746
endobj
183 0 obj<</Type/Page/Parent 137 0 R/Contents 184 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
184 0 obj<</Length 185 0 R/Filter/FlateDecode>>stream
xÚ-L»Â0Ûï+<ÂÐÐ#Ú•—Äâø$Ò’öÿÈ–,Û²_Ĩ?`X§ôOZ Íö
˜!¼t†±š×Û›ËñŒCC‰W°
endobj
Cºg_R?¦.OåAÕoSýG¼Ðж-¾Ög,ú’ôe0¾ËQûЉ޹ $íendstream
endobj
185 0 obj
123
189 0 obj<</Type/Page/Parent 137 0 R/Contents 190 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
endobj
186 0 obj<</Type/Page/Parent 137 0 R/Contents 187 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R/Fa 9 0 R>>>>>>endobj
187 0 obj<</Length 188 0 R/Filter/FlateDecode>>stream
xÚ•—]sê6†ïù;Ü”ÌÇ2þ¢3½8$iK§=Ã9»Ü[7²åÊr€ß•d“ÀÁ˜Nfˆ±_­žÝ}%™\ü#y0 !ɳÕàá×)x.¬6ø$ŒbX¥#ž÷ŠÉ‚r˜x±¡ «îVÿ-‰¬v<ñϨ_Êr)’7¦`!…‰àVî!Ü‹œPËW[öI^6rÈ* Äãu¦ á ¯W‹‡ù*+LDQ°De¢p@‡HÙ†Ö\V0ùž% J!•Ž3%®kDšg& úò}9S[BAs¦¥C}è4R/tüëuÅRX@¡âw¶ãLaÎ4y£2…?˜zÊ$RBÁÔNÈ7ÈŽåÃìR „7 /“Õ=ÐêŒpÇ8Ç»Óâ§ðΊTÈê'
ÅÛÝM|×D[ײ›Þ¤_ŽpTvñÀôÚ?~gP­oUÛÒ9Ì<óÌ3s8ü(iPů5‹~Üe©é”î»h83Ð [ÕÀ²Mp¼[M¿sþ)é¶Zòáwp™€(öE
‘Ö‰ªX2f¦|Y,a)6jG%â¦yVd•’T¡þ¢EýÛ ±ª.uXz6ï1öMölAt¯Í|3)vUVü}[£/1͆—'ÝßñššŠJAÓ„Vªí¦³Ã±Éj‹#Ú6‹’aŽXQQ`÷Ï29ñB8!ç}¦ÉöÓd%5
NY•Èl1u]+…áu¹(hlÎlß°XÌ„ÓÊ6Ó:öËòq>ÅöH®¤ÎÖ%(ÄÜ3¼õAƒcKµp—©-ÎQ ‹²‚ÁëÈÝ»ôõÎú» †“` sª°iÚÁ9Vóg[u¦ºè¸–ÇžoT‡’ÁrÑ$µÌô¿! ÕËgh¾eÅFØ«œ¾±1æ3ÎEÊø¾þicÓ¦£cÝtt©cÞëˆ÷І»êÔ£{S Ó8£Ó‰~)YU
ˆµÓ}˜/ÐæÙÈšFŒMvç!Nµ'ö¶£||²N:¦j½UßUŽ^º«õt:´Fû8§uý¼kaïÏÇ™¥¶e{š²$ËqG(ê|Vnü%Y‰Ug…Ò_ZÒuÆ3ux06½¸uZÐ$¦q–)ý<Šð¦«o<™•T¶{^
\ÇÅCçøñý7\!ÞtŠûš™âpÜ–—Ä‘6¶“0t‚Ojszµ©?ÖQcƒaÖÚÍÈ…_ÚU|¶$ >1‹º7ÔIš˜fS¼ÎkÄ–÷C¼
@@ -548,20 +540,15 @@ endobj
endobj
194 0 obj
693
WÐ÷vò8öJyo(n„ù/î_÷¿­Db&(E
Fµê$ä'£½·‹Z”ôQ˜?®TâÐn“ªnȦq4ª…t"Ÿ<K*ž„ªñho^°Å¼¤Žšþ!eä @÷/øj’ß>EÌ÷C:#9æRòèËçt¯ä¸µ¦–Pü4e6ôƒEM9ý³•ÝÍŽÆÔ÷±¿±ÈÒ•ºB¨ÂÂUWJ‘œÀÊËT=.hj»Uf´b¼Ñ{¬Xé)Á]ýœ›ë¡ó!7øJ,£.9P̶:-íS¹Ã–r*…ʶjm«ƒ5»À­Ð±»Ÿ¬a¡øÜ»KP×_Y5…U,›*Ášª©eBìÔûà3±ÿŒôÝ)M»‚¹cüøtÂ♪—ÇáÄnDg¨íŽE¬%2QveçŽnàœÚm²áΉƒ‘V!Q¨{ØTyvTú÷a`Ù;©M*u½ŽG“çËð L#†žÎ@ó¨‰WAáªÄôàÐÔKmÓóM CpŒÃ&B5ê)Ýöõà
ÕH'®G¡CÕlñæ v«²¯˜i™–;-5i¶ZXÜtâ@73 .tYHóx.+?ߊW endstream
endobj
197 0 obj
778
endobj
198 0 obj<</Type/Page/Parent 137 0 R/Contents 199 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 50 0 R>>endobj
199 0 obj<</Length 200 0 R/Filter/FlateDecode>>stream
xÚ­XÛnÛ8}ÏWÌX ÅVŠHݬ½nêt$m6ñîS_h‰¶YÈ’KQI½_¿CRòE–?4K:œ™sæB*ß.xøK ¦àG®.ÞO/®n<H`:?t D£¦Ùåï?Mî&÷“OS¸þçáéæóã=8øûåò¯ÉøÃ—·øåaüqòåí/ŽY™Ö+^(e©€çÜ\8Οo§_/<pˆçެÕñtzwû´³Úü,Ȩø
ÐeΊÅ;Ȅċ##Æïdzá¹òÝ~<~ß׃‰KArxê¡ï&gb÷Ì®æ7'@b-²¹‘Ž3p£<”•zJ¥X+¸9×Á_Ý@ˆ]àÐØ.è‚简aL)w2¾æE¦µgåŒïcײ\H¶²k\˜.žj5k¶à ª#éHÃ1¦oG†#ñbTÃ^5=¼Œm2^¡ÝÏ@ ÐÕI£Ä Üpg5¤Û«ü@è-~øDK9ˆßC¬€!ff¿@ü(t½aübªã÷ˆ‚ƒøßI$­î´G‰½kS÷Èç\ò"åpÏŠšåï0ÉBf0É„eašä°pÑø¥«ï;ƇC#üDº8îoï' 6kóRBå‰
endobj
195 0 obj<</Type/Page/Parent 137 0 R/Contents 196 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F8 7 0 R>>>>>>endobj
196 0 obj<</Length 197 0 R/Filter/FlateDecode>>stream
xÚíWmo0þž_qk)
¡MSuªÄÒ!%mšºÓ*å 'xÜ÷eSüÎ@š¦7mû0mNÂÜ=~îîñ!«PÇŸfSý½¨òTÞuëp dæ¡n@³uį½cÒs® .z7{äK¥šQ×[ê%€ÇC. Õ¶z8ÉŸ`×ézŽÝÐ4à÷TæÓÜAÓ
H0Õ§2Hr¬Ý¡}yí 
K7„[ž0Éxœ”á}߉Iæ­C;Íg†ÞÌÒb÷ì¾}NÀ¶Aƒ °ûr¯âßņÔWxø|ú
zž_úƒé¥±?O‡OCºI9¸Ê® - lÈ…äÎà‹•ÙñI}(‘®ÛÐÊó¾Æ4IJˆ•â…,¦/¼J ˜/Xkf·<Ô—ç¬(ð
F• $+*Ìgc®ã8cŠÁ\–+cm/lÑŽ <Þ>TÚÚQø­îxæR[MôÆ.dÇk)P¬YnªbÅ”Û<o+g¼Ÿ˜ñ…(*xj‰êÎËZÂl£8T›"]ʲÿ™J—Rf¿‚÷=¤ ý8ÀÝåÍ#{Rop£ÑúÍÄÂÁÀÃ$Ét)OU-yÕ“ï{ŒãÍPmD=±ÇÖH.”Êy¯;_¤Ð‘—ó}! ‘ç:3æA1?ssÇ?ÞáòɱÀY¦ ¡ÂoÕº,*Ñè†éОE±@U$GíuÒµA0&¬Sm¦zÁ†Ò8-HçÏÜŽg¾é‚[“û;1“X­[ua
õ]
WÐ÷vò8öJyo(n„ù/î_÷¿­Db&(E
Fµê$ä'£½·‹Z”ôQ˜?®TâÐn“ªnȦq4ª…t"Ÿ<K*ž„ªñho^°Å¼¤Žšþ!eä @÷/øj’ß>EÌ÷C:#9æRòèËçt¯ä¸µ¦–Pü4e6ôƒEM9ý³•ÝÍŽÆÔ÷±¿±ÈÒ•ºB¨ÂÂUWJ‘œÀÊËT=.hj»Uf´b¼Ñ{¬Xé)Á]ýœ›ë¡ó!7øJ,£.9P̶:-íS¹Ã–r*…ʶjm«ƒ5»À­Ð±»Ÿ¬a¡øÜ»KP×_Y5…U,›*Ášª©eBìÔûà3±ÿŒôÝ)M»‚¹cüøtÂ♪—ÇáÄnDg¨íŽE¬%2QveçŽnàœÚm²áΉƒ‘V!Q¨{ØTyvTú÷a`Ù;©M*u½ŽG“çËð L#†žÎ@ó¨‰WAáªÄôàÐÔKmÓóM CpŒÃ&B5ê)Ýöõà
ÕH'®G¡CÕlñæ v«²¯˜i™–;-5i¶ZXÜtâ@73 .tYHóx.+?ߊW endstream
@@ -595,7 +582,7 @@ endobj
b0x tɶ› õ‹*U'J±úF¦hý4Ï*M|–UƒõeÕ gY±Þ2&Àª¥‚ *ØZg€ŽL陑8G ”‚ñ½’/OÅ¢pŸÌSø
ÖWø
zNø)‰‡§D@±Hd‡\÷EuÍÌÉ='X{ªžÐ€hÏÖ¼˜È§Ó(%˜ŒgáY¡2X_¡2è9¡Šò|qBE,¡ú¨6~;œTV.ÜÔMr\'ãY†6"„Ó}r‡åŠ,¿ 0Xß 0è¹ ˆ²pÌO„û)-°‚Õ3èQO©,ßÊbß"ð9ðlµr~ï yÎòEé¡ÎÏëÜ#èôXçAÇãAA¥G±4—RHm_y¯a¨‘cyÛoÏ;x þ‡²ÁúæºAÏæ:1>J€Kï>±mÑñv–^+ç;ÏÃ=ïà!ÌÇ"8σÆzó Ñs<À&(È µdðS¿¿
204 0 obj<</Type/Page/Parent 137 0 R/Contents 205 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 55 0 R>>endobj
g¶öcUÖD
ªÆ*S}È)´\¦œÆ Óqe(Ðã(@ØMÉCï¢0Xߢ0è¹¢ q:’ÂG-áû,9ƒVçTöž9µI ãݧ\Åq•àìA)‚²忼rm«^ÖÝ7ª…„n걞0'×ýýzš#<æÚYa°¾àç<ÁØ”PDApcKp?÷"×Eɾ6“Eghˆ)2°é7 8ÏFãq¶â Ö·â z®âpí@
[Ús ÏqÉ2«à¾ñu·Ón«bõ¾zº+œæ£¼ž­(ƒõ­(ƒž«(œ“ž€¨$–¨,Mצú]Ç+–R쵕`ÆNξe)E¥ú¿Ók:¡©·Î¬÷S×èÙ§NÒ!÷˜Ä’˜•,ž–¼+w®ã¦Ü5Tyàñ
]±²O©FTÁöM÷4ÁÔ¥÷Bq˜ú— ¦/)Lå’6=ÍH-ÍXõû»Š¹8D™=°zhowðu­ßðA«8¯ÔÎ%ó<eþÞ={‰uÏ\Î={
@@ -760,131 +747,131 @@ xref
0000003178 00000 n
0000003263 00000 n
0000003350 00000 n
0000003263 00000 n
0000003350 00000 n
0000003435 00000 n
0000003522 00000 n
0000003607 00000 n
0000003673 00000 n
0000003758 00000 n
0000003824 00000 n
0000003909 00000 n
0000003975 00000 n
0000004060 00000 n
0000004126 00000 n
0000004211 00000 n
0000004277 00000 n
0000004362 00000 n
0000004428 00000 n
0000004513 00000 n
0000004607 00000 n
0000004708 00000 n
0000004793 00000 n
0000004894 00000 n
0000004979 00000 n
0000005080 00000 n
0000005164 00000 n
0000005202 00000 n
0000005289 00000 n
0000005374 00000 n
0000005461 00000 n
0000005546 00000 n
0000005577 00000 n
0000005643 00000 n
0000005728 00000 n
0000005784 00000 n
0000005866 00000 n
0000005897 00000 n
0000006001 00000 n
0000006106 00000 n
0000006211 00000 n
0000006316 00000 n
0000006420 00000 n
0000006525 00000 n
0000006630 00000 n
0000006734 00000 n
0000006839 00000 n
0000006944 00000 n
0000007049 00000 n
0000007154 00000 n
0000007259 00000 n
0000007364 00000 n
0000007469 00000 n
0000007574 00000 n
0000007679 00000 n
0000007784 00000 n
0000007889 00000 n
0000007994 00000 n
0000008099 00000 n
0000008204 00000 n
0000008309 00000 n
0000008413 00000 n
0000008518 00000 n
0000008623 00000 n
0000008728 00000 n
0000008833 00000 n
0000008938 00000 n
0000009043 00000 n
0000009148 00000 n
0000009253 00000 n
0000009358 00000 n
0000009463 00000 n
0000009567 00000 n
0000009671 00000 n
0000009776 00000 n
0000009881 00000 n
0000010164 00000 n
0000010196 00000 n
0000010228 00000 n
0000010758 00000 n
0000010806 00000 n
0000010854 00000 n
0000010903 00000 n
0000010952 00000 n
0000011001 00000 n
0000011050 00000 n
0000011099 00000 n
0000011148 00000 n
0000011197 00000 n
0000011246 00000 n
0000011295 00000 n
0000011344 00000 n
0000011393 00000 n
0000011442 00000 n
0000011491 00000 n
0000011540 00000 n
0000011589 00000 n
0000011638 00000 n
0000011687 00000 n
0000011736 00000 n
0000003435 00000 n
0000003522 00000 n
0000003607 00000 n
0000003673 00000 n
0000003758 00000 n
0000003824 00000 n
0000003909 00000 n
0000003975 00000 n
0000004060 00000 n
0000004126 00000 n
0000004211 00000 n
0000004277 00000 n
0000004362 00000 n
0000004428 00000 n
0000004513 00000 n
0000004607 00000 n
0000004708 00000 n
0000004793 00000 n
0000004894 00000 n
0000004979 00000 n
0000005080 00000 n
0000005164 00000 n
0000005202 00000 n
0000005289 00000 n
0000005374 00000 n
0000005461 00000 n
0000005546 00000 n
0000005577 00000 n
0000005643 00000 n
0000005728 00000 n
0000005784 00000 n
0000005866 00000 n
0000005897 00000 n
0000006001 00000 n
0000006106 00000 n
0000006211 00000 n
0000006316 00000 n
0000006420 00000 n
0000006525 00000 n
0000006630 00000 n
0000006734 00000 n
0000006839 00000 n
0000006944 00000 n
0000007049 00000 n
0000007154 00000 n
0000007259 00000 n
0000007364 00000 n
0000007469 00000 n
0000007574 00000 n
0000007679 00000 n
0000007784 00000 n
0000007889 00000 n
0000007994 00000 n
0000008099 00000 n
0000008204 00000 n
0000008309 00000 n
0000008413 00000 n
0000008518 00000 n
0000008623 00000 n
0000008728 00000 n
0000008833 00000 n
0000008938 00000 n
0000009043 00000 n
0000009148 00000 n
0000009253 00000 n
0000009358 00000 n
0000009463 00000 n
0000009567 00000 n
0000009671 00000 n
0000009776 00000 n
0000009881 00000 n
0000010164 00000 n
0000010196 00000 n
0000010228 00000 n
0000010758 00000 n
0000010806 00000 n
0000010854 00000 n
0000010903 00000 n
0000010952 00000 n
0000011001 00000 n
0000011050 00000 n
0000011099 00000 n
0000011148 00000 n
0000011197 00000 n
0000011246 00000 n
0000011295 00000 n
0000011344 00000 n
0000011393 00000 n
0000011442 00000 n
0000011491 00000 n
0000011540 00000 n
0000011589 00000 n
0000011638 00000 n
0000011687 00000 n
0000011736 00000 n
0000011785 00000 n
0000011834 00000 n
0000011883 00000 n
0000011932 00000 n
0000011981 00000 n
0000011883 00000 n
0000011932 00000 n
0000011981 00000 n
0000012030 00000 n
0000012079 00000 n
0000012128 00000 n
0000012177 00000 n
0000012226 00000 n
0000012275 00000 n
0000012324 00000 n
0000012373 00000 n
0000012422 00000 n
0000012471 00000 n
0000012520 00000 n
0000012569 00000 n
0000012618 00000 n
0000012667 00000 n
0000012976 00000 n
0000013128 00000 n
0000019489 00000 n
0000019511 00000 n
0000019606 00000 n
0000019708 00000 n
0000019728 00000 n
0000012030 00000 n
0000012079 00000 n
0000012128 00000 n
0000012177 00000 n
0000012226 00000 n
0000012275 00000 n
0000012324 00000 n
0000012373 00000 n
0000012422 00000 n
0000012471 00000 n
0000012520 00000 n
0000012569 00000 n
0000012618 00000 n
0000012667 00000 n
0000012976 00000 n
0000013128 00000 n
0000019489 00000 n
0000019511 00000 n
0000019606 00000 n
0000019708 00000 n
0000019728 00000 n
0000019883 00000 n
0000020911 00000 n
0000020932 00000 n
0000020917 00000 n
0000021045 00000 n
0000021231 00000 n
0000021051 00000 n
0000021252 00000 n
0000021407 00000 n
+1200 -1402
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+994 -1026
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+24 -50
Ver Arquivo
@@ -772,14 +772,14 @@ CUPS-Add-Printer request:
<P>The client OPTIONALLY supplies this attribute indicating a
textual reason for the current printer state.
<P>"requesting-user-name-allowed" (1setof name(127) | delete)
<P>"requesting-user-name-allowed" (1setof name(127))
<P><I>OR</I>
<P>"requesting-user-name-denied" (1setof name(127) | delete):
<P>"requesting-user-name-denied" (1setof name(127)):
<P>The client OPTIONALLY supplies one of these attributes to
specify an access control list for incoming print jobs. To allow
all users access to a printer, use the delete tag for the
attribute value.
specify an access control list for incoming print jobs. The
special name "ALLUSERS" is reserved to indicate that all users
are allowed or denied.
</UL>
@@ -988,7 +988,7 @@ CUPS-Add-Class request:
<P>"printer-is-accepting-jobs" (boolean):
<P>The client OPTIONALLY supplies this boolean attribute
indicating whether or not the class object should accept new jobs.
indicating whether or not the printer object should accept new jobs.
<P>"printer-info" (text(127)):
@@ -998,32 +998,32 @@ CUPS-Add-Class request:
<P>"printer-location" (text(127)):
<P>The client OPTIONALLY supplies this attribute indicating a
textual location of the class.
textual location of the printer.
<P>"printer-more-info" (uri):
<P>The client OPTIONALLY supplies this attribute indicating a
URI for additional class information.
URI for additional printer information.
<P>"printer-state" (type2 enum):
<P>The client OPTIONALLY supplies this attribute indicating the
initial/current state of the class. Only the "idle" and "stopped"
initial/current state of the printer. Only the "idle" and "stopped"
enumerations are recognized.
<P>"printer-state-message" (text(MAX)):
<P>The client OPTIONALLY supplies this attribute indicating a
textual reason for the current class state.
textual reason for the current printer state.
<P>"requesting-user-name-allowed" (1setof name(127))
<P><I>OR</I>
<P>"requesting-user-name-denied" (1setof name(127)):
<P>The client OPTIONALLY supplies one of these attributes to
specify an access control list for incoming print jobs. To allow
all users access to a class, use the delete tag for the
attribute value.
specify an access control list for incoming print jobs. The
special name "ALLUSERS" is reserved to indicate that all users
are allowed or denied.
</UL>
@@ -1508,12 +1508,9 @@ of the device-class attribute:
<LI>"serial" - The device-uri will be of the form
"serial:/dev/filename?baud=value+parity=value+flow=value".
The baud value is the data rate in bits per second; the
supported values depend on the underlying hardware.
The parity value can be one of "none", "even", or "odd".
The flow value can be one of "none", "soft" (XON/XOFF
handshaking), "hard" or "rts/cts" (RTS/CTS handshaking),
or "dtrdsr" (DTR/DSR handshaking).
handshaking), or "hard" (CTS/RTS handshaking).
<P>The URI returned by CUPS-Get-Devices will contain the
maximum baud rate supported by the device and the best
@@ -1615,18 +1612,6 @@ The default value is stored in the job-sheets-default attribute.
If two values are supplied, the first value is used as the starting banner
file and the second as the ending banner file.
<H3>job-originating-host-name (name(MAX))</H3>
<P><I>(CUPS 1.1.5 and higher)</I>
<P>The job-originating-host-name attribute specifies the host
from which the job was queued. The value will be the hostname or
IP address of the client depending on whether hostname
resolution is enabled. The localhost address (127.0.0.1) is
<B>always</B> resolved to the name "localhost".
<P>This attribute is read-only.
<H3>lpi (type2 enum)</H3>
<P>The lpi attribute specifies the number of lines per inch when
@@ -1760,30 +1745,13 @@ delineate directories.
<H2>Printer Attributes</H2>
<H3>job-k-limit (integer)</H3>
<H3>job-sheets-default (1setof type3 keyword | name(MAX))</H3>
<P><I>(CUPS 1.1 and higher)</I>
<P>The job-k-limit attribute specifies the maximum number of kilobytes that
may be printed by a user, including banner files. The default value of 0
specifies that there is no limit.
<H3>job-page-limit (integer)</H3>
<P><I>(CUPS 1.1 and higher)</I>
<P>The job-page-limit attribute specifies the maximum number of pages that
may be printed by a user, including banner files. The default value of 0
specifies that there is no limit.
<H3>job-quota-period (integer)</H3>
<P><I>(CUPS 1.1 and higher)</I>
<P>The job-quota-period attribute specifies the time period used for quota
calculations, in seconds. The default value of 0 specifies that the limits
apply to all jobs that have been printed by a user that are still known to
the system.
<P>The job-sheets-default attribute specifies the default banner file(s) to
print before and after each job. The value "none" specifies that no banner
should be printed.
<H3>job-sheets-supported (1setof type3 keyword | name(MAX))</H3>
@@ -1889,6 +1857,9 @@ identically to the printer-type attribute and default to all 1's.
allowed to access a printer or class. Either this attribute or the
requesting-user-name-denied attribute will be defined, but not both.
<P>The special name "ALLUSERS" is reserved to indicate that all users
are allowed.
<H3>requesting-user-name-denied (1setof name(127))</H3>
<P><I>(CUPS 1.1 and higher)</I>
@@ -1897,6 +1868,9 @@ requesting-user-name-denied attribute will be defined, but not both.
not allowed to access a printer or class. Either this attribute or the
requesting-user-name-allowed attribute will be defined, but not both.
<P>The special name "ALLUSERS" is reserved to indicate that all users
are denied.
<H2>Printer Class Attributes</H2>
<H3>member-names (1setof name(127))</H3>
+3824 -4735
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+2879 -2730
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+2 -57
Ver Arquivo
@@ -1,7 +1,7 @@
<HTML>
<HEAD>
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1.5">
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1.3">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>CUPS Software Administrators Manual</TITLE>
</HEAD>
@@ -11,7 +11,7 @@
<P>This software administrators manual provides printer administration
information for the Common UNIX Printing System<SUP>TM</SUP>
("CUPS<SUP>TM</SUP>"), version 1.1.5.
("CUPS<SUP>TM</SUP>"), version 1.1.3.
<EMBED SRC="system-overview.shtml">
@@ -219,19 +219,6 @@ prior to running configure:
<B>./configure ... ENTER</B>
</PRE></UL>
<P>To enable support for encryption, you'll also want to add the
"--enable-ssl" option:
<UL><PRE>
./configure --enable-ssl
</PRE></UL>
<P>SSL and TLS support require the OpenSSL library, available at:
<UL><PRE>
<A HREF="http://www.openssl.org">http://www.openssl.org</A>
</PRE></UL>
<P>Once you have configured things, just type:
<UL><PRE>
@@ -837,7 +824,6 @@ determine how the server operates:
<LI><A HREF="#AuthClass"><CODE>AuthClass</CODE></A>
<LI><A HREF="#AuthGroupName"><CODE>AuthGroupName</CODE></A>
<LI><A HREF="#AuthType"><CODE>AuthType</CODE></A>
<LI><A HREF="#AutoPurgeJobs"><CODE>AutoPurgeJobs</CODE></A>
<LI><A HREF="#BrowseAddress"><CODE>BrowseAddress</CODE></A>
<LI><A HREF="#BrowseAllow"><CODE>BrowseAllow</CODE></A>
<LI><A HREF="#BrowseDeny"><CODE>BrowseDeny</CODE></A>
@@ -872,7 +858,6 @@ determine how the server operates:
<LI><A HREF="#Location"><CODE>Location</CODE></A>
<LI><A HREF="#LogLevel"><CODE>LogLevel</CODE></A>
<LI><A HREF="#MaxClients"><CODE>MaxClients</CODE></A>
<LI><A HREF="#MaxJobs"><CODE>MaxJobs</CODE></A>
<LI><A HREF="#MaxLogSize"><CODE>MaxLogSize</CODE></A>
<LI><A HREF="#MaxRequestSize"><CODE>MaxRequestSize</CODE></A>
@@ -1092,23 +1077,6 @@ authenticate using <A HREF="#CERTIFICATES">certificates</A>.
<P>The <CODE>AuthType</CODE> directive must appear inside a
<A HREF="#Location"><CODE>Location</CODE></A> directive.
<!-- NEED 3in -->
<H3><A NAME="AutoPurgeJobs">AutoPurgeJobs</A></H3>
<HR>
<H4>Examples</H4>
<UL><PRE>
AutoPurgeJobs Yes
AutoPurgeJobs No
</PRE></UL>
<H4>Description</H4>
<P>The <CODE>AutoPurgeJobs</CODE> directive specifies whether or not to purge
completed jobs once they are no longer required for quotas. This option has
no effect if quotas are not enabled. The default setting is <CODE>No</CODE>.
<!-- NEED 5in -->
<H3><A NAME="BrowseAddress">BrowseAddress</A></H3>
<HR>
@@ -1806,29 +1774,6 @@ simultaneous clients that will be allowed by the server. The default is
</TR>
</TABLE></CENTER>
<!-- NEED 3in -->
<H3><A NAME="MaxJobs">MaxJobs</A></H3>
<HR>
<H4>Examples</H4>
<UL><PRE>
MaxJobs 100
MaxJobs 9999
MaxJobs 0
</PRE></UL>
<H4>Description</H4>
<P>The <CODE>MaxJobs</CODE> directive controls the maximum number of jobs
that are kept in memory. Once the number of jobs reaches the limit, the
oldest completed job is automatically purged from the system to make room
for the new one. If all of the known jobs are still pending or active then
the new job will be rejected.
<P>Setting the maximum size to 0 disables this functionality. The default
setting is 0.
<!-- NEED 3in -->
<H3><A NAME="MaxLogSize">MaxLogSize</A></H3>
<HR>
+492 -611
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+344 -350
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 1.9b1 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20001118181220Z)/Title( CUPS Software Design Description)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 1.8.8 Copyright 1997-2000 Easy Software Products, All Rights Reserved.)/CreationDate(D:20000824182250Z)/Title( CUPS Software Design Description)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Oblique/Encoding 2 0 R>>endobj
@@ -51,53 +51,52 @@
35 0 R
37 0 R
]endobj
39 0 obj<</Subtype/Link/Rect[72.0 684.0 107.8 697.0]/Border[0 0 0]/Dest[212 0 R/XYZ null 798 0]>>endobj
40 0 obj<</Subtype/Link/Rect[108.0 670.8 183.8 683.8]/Border[0 0 0]/Dest[212 0 R/XYZ null 745 0]>>endobj
41 0 obj<</Subtype/Link/Rect[108.0 657.6 203.0 670.6]/Border[0 0 0]/Dest[212 0 R/XYZ null 672 0]>>endobj
42 0 obj<</Subtype/Link/Rect[108.0 644.4 216.4 657.4]/Border[0 0 0]/Dest[212 0 R/XYZ null 467 0]>>endobj
43 0 obj<</Subtype/Link/Rect[72.0 618.0 131.6 631.0]/Border[0 0 0]/Dest[218 0 R/XYZ null 798 0]>>endobj
44 0 obj<</Subtype/Link/Rect[108.0 604.8 222.6 617.8]/Border[0 0 0]/Dest[218 0 R/XYZ null 745 0]>>endobj
45 0 obj<</Subtype/Link/Rect[108.0 591.6 202.4 604.6]/Border[0 0 0]/Dest[218 0 R/XYZ null 540 0]>>endobj
46 0 obj<</Subtype/Link/Rect[72.0 565.2 160.0 578.2]/Border[0 0 0]/Dest[224 0 R/XYZ null 798 0]>>endobj
47 0 obj<</Subtype/Link/Rect[108.0 552.0 167.3 565.0]/Border[0 0 0]/Dest[224 0 R/XYZ null 587 0]>>endobj
48 0 obj<</Subtype/Link/Rect[144.0 538.8 182.8 551.8]/Border[0 0 0]/Dest[224 0 R/XYZ null 327 0]>>endobj
49 0 obj<</Subtype/Link/Rect[144.0 525.6 182.8 538.6]/Border[0 0 0]/Dest[224 0 R/XYZ null 257 0]>>endobj
50 0 obj<</Subtype/Link/Rect[144.0 512.4 201.7 525.4]/Border[0 0 0]/Dest[224 0 R/XYZ null 164 0]>>endobj
51 0 obj<</Subtype/Link/Rect[144.0 499.2 192.6 512.2]/Border[0 0 0]/Dest[227 0 R/XYZ null 744 0]>>endobj
52 0 obj<</Subtype/Link/Rect[144.0 486.0 196.9 499.0]/Border[0 0 0]/Dest[227 0 R/XYZ null 478 0]>>endobj
53 0 obj<</Subtype/Link/Rect[144.0 472.8 184.0 485.8]/Border[0 0 0]/Dest[227 0 R/XYZ null 358 0]>>endobj
54 0 obj<</Subtype/Link/Rect[108.0 459.6 217.1 472.6]/Border[0 0 0]/Dest[227 0 R/XYZ null 280 0]>>endobj
55 0 obj<</Subtype/Link/Rect[144.0 446.4 182.2 459.4]/Border[0 0 0]/Dest[227 0 R/XYZ null 191 0]>>endobj
56 0 obj<</Subtype/Link/Rect[144.0 433.2 182.8 446.2]/Border[0 0 0]/Dest[230 0 R/XYZ null 768 0]>>endobj
57 0 obj<</Subtype/Link/Rect[144.0 420.0 181.0 433.0]/Border[0 0 0]/Dest[230 0 R/XYZ null 711 0]>>endobj
58 0 obj<</Subtype/Link/Rect[144.0 406.8 189.5 419.8]/Border[0 0 0]/Dest[230 0 R/XYZ null 641 0]>>endobj
59 0 obj<</Subtype/Link/Rect[108.0 393.6 143.4 406.6]/Border[0 0 0]/Dest[230 0 R/XYZ null 600 0]>>endobj
60 0 obj<</Subtype/Link/Rect[144.0 380.4 212.4 393.4]/Border[0 0 0]/Dest[230 0 R/XYZ null 499 0]>>endobj
61 0 obj<</Subtype/Link/Rect[144.0 367.2 215.5 380.2]/Border[0 0 0]/Dest[230 0 R/XYZ null 429 0]>>endobj
62 0 obj<</Subtype/Link/Rect[144.0 354.0 203.3 367.0]/Border[0 0 0]/Dest[230 0 R/XYZ null 359 0]>>endobj
63 0 obj<</Subtype/Link/Rect[144.0 340.8 218.5 353.8]/Border[0 0 0]/Dest[230 0 R/XYZ null 303 0]>>endobj
64 0 obj<</Subtype/Link/Rect[108.0 327.6 310.6 340.6]/Border[0 0 0]/Dest[230 0 R/XYZ null 248 0]>>endobj
65 0 obj<</Subtype/Link/Rect[144.0 314.4 272.3 327.4]/Border[0 0 0]/Dest[230 0 R/XYZ null 160 0]>>endobj
66 0 obj<</Subtype/Link/Rect[144.0 301.2 242.4 314.2]/Border[0 0 0]/Dest[233 0 R/XYZ null 768 0]>>endobj
67 0 obj<</Subtype/Link/Rect[144.0 288.0 230.8 301.0]/Border[0 0 0]/Dest[233 0 R/XYZ null 698 0]>>endobj
68 0 obj<</Subtype/Link/Rect[144.0 274.8 258.3 287.8]/Border[0 0 0]/Dest[233 0 R/XYZ null 628 0]>>endobj
69 0 obj<</Subtype/Link/Rect[144.0 261.6 235.1 274.6]/Border[0 0 0]/Dest[233 0 R/XYZ null 559 0]>>endobj
70 0 obj<</Subtype/Link/Rect[108.0 248.4 227.2 261.4]/Border[0 0 0]/Dest[233 0 R/XYZ null 504 0]>>endobj
71 0 obj<</Subtype/Link/Rect[144.0 235.2 317.9 248.2]/Border[0 0 0]/Dest[233 0 R/XYZ null 416 0]>>endobj
72 0 obj<</Subtype/Link/Rect[144.0 222.0 300.1 235.0]/Border[0 0 0]/Dest[233 0 R/XYZ null 346 0]>>endobj
73 0 obj<</Subtype/Link/Rect[144.0 208.8 302.6 221.8]/Border[0 0 0]/Dest[233 0 R/XYZ null 263 0]>>endobj
74 0 obj<</Subtype/Link/Rect[144.0 195.6 247.9 208.6]/Border[0 0 0]/Dest[233 0 R/XYZ null 207 0]>>endobj
75 0 obj<</Subtype/Link/Rect[144.0 182.4 262.2 195.4]/Border[0 0 0]/Dest[236 0 R/XYZ null 768 0]>>endobj
76 0 obj<</Subtype/Link/Rect[144.0 169.2 243.0 182.2]/Border[0 0 0]/Dest[236 0 R/XYZ null 711 0]>>endobj
77 0 obj<</Subtype/Link/Rect[108.0 156.0 166.0 169.0]/Border[0 0 0]/Dest[236 0 R/XYZ null 656 0]>>endobj
78 0 obj<</Subtype/Link/Rect[144.0 142.8 261.6 155.8]/Border[0 0 0]/Dest[236 0 R/XYZ null 568 0]>>endobj
79 0 obj<</Subtype/Link/Rect[144.0 129.6 240.6 142.6]/Border[0 0 0]/Dest[236 0 R/XYZ null 512 0]>>endobj
80 0 obj<</Subtype/Link/Rect[108.0 116.4 152.6 129.4]/Border[0 0 0]/Dest[236 0 R/XYZ null 444 0]>>endobj
81 0 obj<</Subtype/Link/Rect[144.0 103.2 206.6 116.2]/Border[0 0 0]/Dest[236 0 R/XYZ null 197 0]>>endobj
82 0 obj<</Subtype/Link/Rect[144.0 90.0 214.0 103.0]/Border[0 0 0]/Dest[239 0 R/XYZ null 768 0]>>endobj
83 0 obj<</Subtype/Link/Rect[144.0 76.8 228.6 89.8]/Border[0 0 0]/Dest[239 0 R/XYZ null 711 0]>>endobj
84 0 obj<</Subtype/Link/Rect[144.0 63.6 201.8 76.6]/Border[0 0 0]/Dest[239 0 R/XYZ null 655 0]>>endobj
85 0 obj[39 0 R
39 0 obj<</Subtype/Link/Rect[72.0 670.8 107.8 683.8]/Border[0 0 0]/Dest[212 0 R/XYZ null 798 0]>>endobj
40 0 obj<</Subtype/Link/Rect[108.0 657.6 183.8 670.6]/Border[0 0 0]/Dest[212 0 R/XYZ null 745 0]>>endobj
41 0 obj<</Subtype/Link/Rect[108.0 644.4 203.0 657.4]/Border[0 0 0]/Dest[212 0 R/XYZ null 672 0]>>endobj
42 0 obj<</Subtype/Link/Rect[108.0 631.2 216.4 644.2]/Border[0 0 0]/Dest[212 0 R/XYZ null 467 0]>>endobj
43 0 obj<</Subtype/Link/Rect[72.0 604.8 131.6 617.8]/Border[0 0 0]/Dest[218 0 R/XYZ null 798 0]>>endobj
44 0 obj<</Subtype/Link/Rect[108.0 591.6 222.6 604.6]/Border[0 0 0]/Dest[218 0 R/XYZ null 745 0]>>endobj
45 0 obj<</Subtype/Link/Rect[108.0 578.4 202.4 591.4]/Border[0 0 0]/Dest[218 0 R/XYZ null 540 0]>>endobj
46 0 obj<</Subtype/Link/Rect[72.0 552.0 160.0 565.0]/Border[0 0 0]/Dest[224 0 R/XYZ null 798 0]>>endobj
47 0 obj<</Subtype/Link/Rect[108.0 538.8 167.3 551.8]/Border[0 0 0]/Dest[224 0 R/XYZ null 587 0]>>endobj
48 0 obj<</Subtype/Link/Rect[144.0 525.6 182.8 538.6]/Border[0 0 0]/Dest[224 0 R/XYZ null 327 0]>>endobj
49 0 obj<</Subtype/Link/Rect[144.0 512.4 182.8 525.4]/Border[0 0 0]/Dest[224 0 R/XYZ null 257 0]>>endobj
50 0 obj<</Subtype/Link/Rect[144.0 499.2 201.7 512.2]/Border[0 0 0]/Dest[224 0 R/XYZ null 164 0]>>endobj
51 0 obj<</Subtype/Link/Rect[144.0 486.0 192.6 499.0]/Border[0 0 0]/Dest[227 0 R/XYZ null 744 0]>>endobj
52 0 obj<</Subtype/Link/Rect[144.0 472.8 196.9 485.8]/Border[0 0 0]/Dest[227 0 R/XYZ null 544 0]>>endobj
53 0 obj<</Subtype/Link/Rect[144.0 459.6 184.0 472.6]/Border[0 0 0]/Dest[227 0 R/XYZ null 424 0]>>endobj
54 0 obj<</Subtype/Link/Rect[108.0 446.4 217.1 459.4]/Border[0 0 0]/Dest[227 0 R/XYZ null 346 0]>>endobj
55 0 obj<</Subtype/Link/Rect[144.0 433.2 182.2 446.2]/Border[0 0 0]/Dest[227 0 R/XYZ null 257 0]>>endobj
56 0 obj<</Subtype/Link/Rect[144.0 420.0 182.8 433.0]/Border[0 0 0]/Dest[227 0 R/XYZ null 148 0]>>endobj
57 0 obj<</Subtype/Link/Rect[144.0 406.8 181.0 419.8]/Border[0 0 0]/Dest[230 0 R/XYZ null 768 0]>>endobj
58 0 obj<</Subtype/Link/Rect[144.0 393.6 189.5 406.6]/Border[0 0 0]/Dest[230 0 R/XYZ null 698 0]>>endobj
59 0 obj<</Subtype/Link/Rect[108.0 380.4 143.4 393.4]/Border[0 0 0]/Dest[230 0 R/XYZ null 656 0]>>endobj
60 0 obj<</Subtype/Link/Rect[144.0 367.2 212.4 380.2]/Border[0 0 0]/Dest[230 0 R/XYZ null 555 0]>>endobj
61 0 obj<</Subtype/Link/Rect[144.0 354.0 215.5 367.0]/Border[0 0 0]/Dest[230 0 R/XYZ null 485 0]>>endobj
62 0 obj<</Subtype/Link/Rect[144.0 340.8 203.3 353.8]/Border[0 0 0]/Dest[230 0 R/XYZ null 416 0]>>endobj
63 0 obj<</Subtype/Link/Rect[144.0 327.6 218.5 340.6]/Border[0 0 0]/Dest[230 0 R/XYZ null 359 0]>>endobj
64 0 obj<</Subtype/Link/Rect[108.0 314.4 310.6 327.4]/Border[0 0 0]/Dest[230 0 R/XYZ null 305 0]>>endobj
65 0 obj<</Subtype/Link/Rect[144.0 301.2 272.3 314.2]/Border[0 0 0]/Dest[230 0 R/XYZ null 217 0]>>endobj
66 0 obj<</Subtype/Link/Rect[144.0 288.0 242.4 301.0]/Border[0 0 0]/Dest[233 0 R/XYZ null 768 0]>>endobj
67 0 obj<</Subtype/Link/Rect[144.0 274.8 230.8 287.8]/Border[0 0 0]/Dest[233 0 R/XYZ null 698 0]>>endobj
68 0 obj<</Subtype/Link/Rect[144.0 261.6 258.3 274.6]/Border[0 0 0]/Dest[233 0 R/XYZ null 628 0]>>endobj
69 0 obj<</Subtype/Link/Rect[144.0 248.4 235.1 261.4]/Border[0 0 0]/Dest[233 0 R/XYZ null 559 0]>>endobj
70 0 obj<</Subtype/Link/Rect[108.0 235.2 227.2 248.2]/Border[0 0 0]/Dest[233 0 R/XYZ null 504 0]>>endobj
71 0 obj<</Subtype/Link/Rect[144.0 222.0 317.9 235.0]/Border[0 0 0]/Dest[233 0 R/XYZ null 416 0]>>endobj
72 0 obj<</Subtype/Link/Rect[144.0 208.8 300.1 221.8]/Border[0 0 0]/Dest[233 0 R/XYZ null 346 0]>>endobj
73 0 obj<</Subtype/Link/Rect[144.0 195.6 302.6 208.6]/Border[0 0 0]/Dest[233 0 R/XYZ null 263 0]>>endobj
74 0 obj<</Subtype/Link/Rect[144.0 182.4 247.9 195.4]/Border[0 0 0]/Dest[233 0 R/XYZ null 207 0]>>endobj
75 0 obj<</Subtype/Link/Rect[144.0 169.2 262.2 182.2]/Border[0 0 0]/Dest[236 0 R/XYZ null 768 0]>>endobj
76 0 obj<</Subtype/Link/Rect[144.0 156.0 243.0 169.0]/Border[0 0 0]/Dest[236 0 R/XYZ null 711 0]>>endobj
77 0 obj<</Subtype/Link/Rect[108.0 142.8 166.0 155.8]/Border[0 0 0]/Dest[236 0 R/XYZ null 656 0]>>endobj
78 0 obj<</Subtype/Link/Rect[144.0 129.6 261.6 142.6]/Border[0 0 0]/Dest[236 0 R/XYZ null 568 0]>>endobj
79 0 obj<</Subtype/Link/Rect[144.0 116.4 240.6 129.4]/Border[0 0 0]/Dest[236 0 R/XYZ null 512 0]>>endobj
80 0 obj<</Subtype/Link/Rect[108.0 103.2 152.6 116.2]/Border[0 0 0]/Dest[236 0 R/XYZ null 444 0]>>endobj
81 0 obj<</Subtype/Link/Rect[144.0 90.0 206.6 103.0]/Border[0 0 0]/Dest[236 0 R/XYZ null 197 0]>>endobj
82 0 obj<</Subtype/Link/Rect[144.0 76.8 214.0 89.8]/Border[0 0 0]/Dest[239 0 R/XYZ null 768 0]>>endobj
83 0 obj<</Subtype/Link/Rect[144.0 63.6 228.6 76.6]/Border[0 0 0]/Dest[239 0 R/XYZ null 711 0]>>endobj
84 0 obj[39 0 R
40 0 R
41 0 R
42 0 R
@@ -142,43 +141,44 @@
81 0 R
82 0 R
83 0 R
84 0 R
]endobj
86 0 obj<</Subtype/Link/Rect[108.0 684.0 160.9 697.0]/Border[0 0 0]/Dest[239 0 R/XYZ null 598 0]>>endobj
87 0 obj<</Subtype/Link/Rect[108.0 670.8 175.5 683.8]/Border[0 0 0]/Dest[239 0 R/XYZ null 529 0]>>endobj
88 0 obj<</Subtype/Link/Rect[108.0 657.6 191.4 670.6]/Border[0 0 0]/Dest[239 0 R/XYZ null 472 0]>>endobj
89 0 obj<</Subtype/Link/Rect[108.0 644.4 176.7 657.4]/Border[0 0 0]/Dest[239 0 R/XYZ null 403 0]>>endobj
90 0 obj<</Subtype/Link/Rect[108.0 631.2 167.6 644.2]/Border[0 0 0]/Dest[239 0 R/XYZ null 333 0]>>endobj
91 0 obj<</Subtype/Link/Rect[72.0 618.0 132.5 631.0]/Border[0 0 0]/Dest[239 0 R/XYZ null 292 0]>>endobj
92 0 obj<</Subtype/Link/Rect[108.0 604.8 193.9 617.8]/Border[0 0 0]/Dest[239 0 R/XYZ null 190 0]>>endobj
93 0 obj<</Subtype/Link/Rect[108.0 591.6 165.8 604.6]/Border[0 0 0]/Dest[242 0 R/XYZ null 768 0]>>endobj
94 0 obj<</Subtype/Link/Rect[108.0 578.4 159.6 591.4]/Border[0 0 0]/Dest[242 0 R/XYZ null 698 0]>>endobj
95 0 obj<</Subtype/Link/Rect[108.0 565.2 194.5 578.2]/Border[0 0 0]/Dest[242 0 R/XYZ null 575 0]>>endobj
96 0 obj<</Subtype/Link/Rect[108.0 552.0 168.2 565.0]/Border[0 0 0]/Dest[242 0 R/XYZ null 493 0]>>endobj
97 0 obj<</Subtype/Link/Rect[108.0 538.8 214.9 551.8]/Border[0 0 0]/Dest[242 0 R/XYZ null 423 0]>>endobj
98 0 obj<</Subtype/Link/Rect[108.0 525.6 148.6 538.6]/Border[0 0 0]/Dest[242 0 R/XYZ null 314 0]>>endobj
99 0 obj<</Subtype/Link/Rect[108.0 512.4 152.3 525.4]/Border[0 0 0]/Dest[242 0 R/XYZ null 231 0]>>endobj
100 0 obj<</Subtype/Link/Rect[108.0 499.2 170.0 512.2]/Border[0 0 0]/Dest[242 0 R/XYZ null 161 0]>>endobj
101 0 obj<</Subtype/Link/Rect[108.0 486.0 161.5 499.0]/Border[0 0 0]/Dest[245 0 R/XYZ null 768 0]>>endobj
102 0 obj<</Subtype/Link/Rect[108.0 472.8 168.2 485.8]/Border[0 0 0]/Dest[245 0 R/XYZ null 685 0]>>endobj
103 0 obj<</Subtype/Link/Rect[108.0 459.6 162.7 472.6]/Border[0 0 0]/Dest[245 0 R/XYZ null 602 0]>>endobj
104 0 obj<</Subtype/Link/Rect[108.0 446.4 172.5 459.4]/Border[0 0 0]/Dest[245 0 R/XYZ null 532 0]>>endobj
105 0 obj<</Subtype/Link/Rect[72.0 433.2 184.5 446.2]/Border[0 0 0]/Dest[245 0 R/XYZ null 478 0]>>endobj
106 0 obj<</Subtype/Link/Rect[108.0 420.0 160.8 433.0]/Border[0 0 0]/Dest[245 0 R/XYZ null 389 0]>>endobj
107 0 obj<</Subtype/Link/Rect[108.0 406.8 160.8 419.8]/Border[0 0 0]/Dest[245 0 R/XYZ null 333 0]>>endobj
108 0 obj<</Subtype/Link/Rect[108.0 393.6 163.9 406.6]/Border[0 0 0]/Dest[245 0 R/XYZ null 277 0]>>endobj
109 0 obj<</Subtype/Link/Rect[108.0 380.4 161.5 393.4]/Border[0 0 0]/Dest[245 0 R/XYZ null 220 0]>>endobj
110 0 obj<</Subtype/Link/Rect[108.0 367.2 141.3 380.2]/Border[0 0 0]/Dest[245 0 R/XYZ null 164 0]>>endobj
111 0 obj<</Subtype/Link/Rect[108.0 354.0 168.8 367.0]/Border[0 0 0]/Dest[248 0 R/XYZ null 768 0]>>endobj
112 0 obj<</Subtype/Link/Rect[108.0 340.8 159.0 353.8]/Border[0 0 0]/Dest[248 0 R/XYZ null 685 0]>>endobj
113 0 obj<</Subtype/Link/Rect[108.0 327.6 165.8 340.6]/Border[0 0 0]/Dest[248 0 R/XYZ null 628 0]>>endobj
114 0 obj<</Subtype/Link/Rect[108.0 314.4 173.7 327.4]/Border[0 0 0]/Dest[248 0 R/XYZ null 572 0]>>endobj
115 0 obj<</Subtype/Link/Rect[108.0 301.2 162.1 314.2]/Border[0 0 0]/Dest[248 0 R/XYZ null 515 0]>>endobj
116 0 obj<</Subtype/Link/Rect[108.0 288.0 162.7 301.0]/Border[0 0 0]/Dest[248 0 R/XYZ null 459 0]>>endobj
117 0 obj<</Subtype/Link/Rect[36.0 261.6 88.2 274.6]/Border[0 0 0]/Dest[254 0 R/XYZ null 798 0]>>endobj
118 0 obj<</Subtype/Link/Rect[72.0 248.4 119.0 261.4]/Border[0 0 0]/Dest[254 0 R/XYZ null 745 0]>>endobj
119 0 obj<</Subtype/Link/Rect[72.0 235.2 136.8 248.2]/Border[0 0 0]/Dest[254 0 R/XYZ null 566 0]>>endobj
120 0 obj[86 0 R
85 0 obj<</Subtype/Link/Rect[108.0 670.8 165.8 683.8]/Border[0 0 0]/Dest[239 0 R/XYZ null 655 0]>>endobj
86 0 obj<</Subtype/Link/Rect[108.0 657.6 160.9 670.6]/Border[0 0 0]/Dest[239 0 R/XYZ null 598 0]>>endobj
87 0 obj<</Subtype/Link/Rect[108.0 644.4 175.5 657.4]/Border[0 0 0]/Dest[239 0 R/XYZ null 529 0]>>endobj
88 0 obj<</Subtype/Link/Rect[108.0 631.2 191.4 644.2]/Border[0 0 0]/Dest[239 0 R/XYZ null 472 0]>>endobj
89 0 obj<</Subtype/Link/Rect[108.0 618.0 176.7 631.0]/Border[0 0 0]/Dest[239 0 R/XYZ null 403 0]>>endobj
90 0 obj<</Subtype/Link/Rect[108.0 604.8 167.6 617.8]/Border[0 0 0]/Dest[239 0 R/XYZ null 333 0]>>endobj
91 0 obj<</Subtype/Link/Rect[72.0 591.6 132.5 604.6]/Border[0 0 0]/Dest[239 0 R/XYZ null 292 0]>>endobj
92 0 obj<</Subtype/Link/Rect[108.0 578.4 193.9 591.4]/Border[0 0 0]/Dest[239 0 R/XYZ null 190 0]>>endobj
93 0 obj<</Subtype/Link/Rect[108.0 565.2 165.8 578.2]/Border[0 0 0]/Dest[242 0 R/XYZ null 768 0]>>endobj
94 0 obj<</Subtype/Link/Rect[108.0 552.0 159.6 565.0]/Border[0 0 0]/Dest[242 0 R/XYZ null 698 0]>>endobj
95 0 obj<</Subtype/Link/Rect[108.0 538.8 194.5 551.8]/Border[0 0 0]/Dest[242 0 R/XYZ null 575 0]>>endobj
96 0 obj<</Subtype/Link/Rect[108.0 525.6 168.2 538.6]/Border[0 0 0]/Dest[242 0 R/XYZ null 493 0]>>endobj
97 0 obj<</Subtype/Link/Rect[108.0 512.4 214.9 525.4]/Border[0 0 0]/Dest[242 0 R/XYZ null 423 0]>>endobj
98 0 obj<</Subtype/Link/Rect[108.0 499.2 148.6 512.2]/Border[0 0 0]/Dest[242 0 R/XYZ null 314 0]>>endobj
99 0 obj<</Subtype/Link/Rect[108.0 486.0 152.3 499.0]/Border[0 0 0]/Dest[242 0 R/XYZ null 231 0]>>endobj
100 0 obj<</Subtype/Link/Rect[108.0 472.8 170.0 485.8]/Border[0 0 0]/Dest[242 0 R/XYZ null 161 0]>>endobj
101 0 obj<</Subtype/Link/Rect[108.0 459.6 161.5 472.6]/Border[0 0 0]/Dest[245 0 R/XYZ null 768 0]>>endobj
102 0 obj<</Subtype/Link/Rect[108.0 446.4 168.2 459.4]/Border[0 0 0]/Dest[245 0 R/XYZ null 685 0]>>endobj
103 0 obj<</Subtype/Link/Rect[108.0 433.2 162.7 446.2]/Border[0 0 0]/Dest[245 0 R/XYZ null 602 0]>>endobj
104 0 obj<</Subtype/Link/Rect[108.0 420.0 172.5 433.0]/Border[0 0 0]/Dest[245 0 R/XYZ null 532 0]>>endobj
105 0 obj<</Subtype/Link/Rect[72.0 406.8 184.5 419.8]/Border[0 0 0]/Dest[245 0 R/XYZ null 478 0]>>endobj
106 0 obj<</Subtype/Link/Rect[108.0 393.6 160.8 406.6]/Border[0 0 0]/Dest[245 0 R/XYZ null 389 0]>>endobj
107 0 obj<</Subtype/Link/Rect[108.0 380.4 160.8 393.4]/Border[0 0 0]/Dest[245 0 R/XYZ null 333 0]>>endobj
108 0 obj<</Subtype/Link/Rect[108.0 367.2 163.9 380.2]/Border[0 0 0]/Dest[245 0 R/XYZ null 277 0]>>endobj
109 0 obj<</Subtype/Link/Rect[108.0 354.0 161.5 367.0]/Border[0 0 0]/Dest[245 0 R/XYZ null 220 0]>>endobj
110 0 obj<</Subtype/Link/Rect[108.0 340.8 141.3 353.8]/Border[0 0 0]/Dest[245 0 R/XYZ null 164 0]>>endobj
111 0 obj<</Subtype/Link/Rect[108.0 327.6 168.8 340.6]/Border[0 0 0]/Dest[248 0 R/XYZ null 768 0]>>endobj
112 0 obj<</Subtype/Link/Rect[108.0 314.4 159.0 327.4]/Border[0 0 0]/Dest[248 0 R/XYZ null 685 0]>>endobj
113 0 obj<</Subtype/Link/Rect[108.0 301.2 165.8 314.2]/Border[0 0 0]/Dest[248 0 R/XYZ null 628 0]>>endobj
114 0 obj<</Subtype/Link/Rect[108.0 288.0 173.7 301.0]/Border[0 0 0]/Dest[248 0 R/XYZ null 572 0]>>endobj
115 0 obj<</Subtype/Link/Rect[108.0 274.8 162.1 287.8]/Border[0 0 0]/Dest[248 0 R/XYZ null 515 0]>>endobj
116 0 obj<</Subtype/Link/Rect[108.0 261.6 162.7 274.6]/Border[0 0 0]/Dest[248 0 R/XYZ null 459 0]>>endobj
117 0 obj<</Subtype/Link/Rect[36.0 235.2 88.2 248.2]/Border[0 0 0]/Dest[254 0 R/XYZ null 798 0]>>endobj
118 0 obj<</Subtype/Link/Rect[72.0 222.0 119.0 235.0]/Border[0 0 0]/Dest[254 0 R/XYZ null 745 0]>>endobj
119 0 obj<</Subtype/Link/Rect[72.0 208.8 136.8 221.8]/Border[0 0 0]/Dest[254 0 R/XYZ null 566 0]>>endobj
120 0 obj[85 0 R
86 0 R
87 0 R
88 0 R
89 0 R
@@ -229,20 +229,20 @@
134 0 obj<</D[224 0 R/XYZ null 257 null]>>endobj
135 0 obj<</D[224 0 R/XYZ null 164 null]>>endobj
136 0 obj<</D[227 0 R/XYZ null 744 null]>>endobj
137 0 obj<</D[227 0 R/XYZ null 478 null]>>endobj
138 0 obj<</D[227 0 R/XYZ null 358 null]>>endobj
139 0 obj<</D[227 0 R/XYZ null 280 null]>>endobj
140 0 obj<</D[227 0 R/XYZ null 191 null]>>endobj
141 0 obj<</D[230 0 R/XYZ null 768 null]>>endobj
142 0 obj<</D[230 0 R/XYZ null 711 null]>>endobj
143 0 obj<</D[230 0 R/XYZ null 641 null]>>endobj
144 0 obj<</D[230 0 R/XYZ null 600 null]>>endobj
145 0 obj<</D[230 0 R/XYZ null 499 null]>>endobj
146 0 obj<</D[230 0 R/XYZ null 429 null]>>endobj
147 0 obj<</D[230 0 R/XYZ null 359 null]>>endobj
148 0 obj<</D[230 0 R/XYZ null 303 null]>>endobj
149 0 obj<</D[230 0 R/XYZ null 248 null]>>endobj
150 0 obj<</D[230 0 R/XYZ null 160 null]>>endobj
137 0 obj<</D[227 0 R/XYZ null 544 null]>>endobj
138 0 obj<</D[227 0 R/XYZ null 424 null]>>endobj
139 0 obj<</D[227 0 R/XYZ null 346 null]>>endobj
140 0 obj<</D[227 0 R/XYZ null 257 null]>>endobj
141 0 obj<</D[227 0 R/XYZ null 148 null]>>endobj
142 0 obj<</D[230 0 R/XYZ null 768 null]>>endobj
143 0 obj<</D[230 0 R/XYZ null 698 null]>>endobj
144 0 obj<</D[230 0 R/XYZ null 656 null]>>endobj
145 0 obj<</D[230 0 R/XYZ null 555 null]>>endobj
146 0 obj<</D[230 0 R/XYZ null 485 null]>>endobj
147 0 obj<</D[230 0 R/XYZ null 416 null]>>endobj
148 0 obj<</D[230 0 R/XYZ null 359 null]>>endobj
149 0 obj<</D[230 0 R/XYZ null 305 null]>>endobj
150 0 obj<</D[230 0 R/XYZ null 217 null]>>endobj
151 0 obj<</D[233 0 R/XYZ null 768 null]>>endobj
152 0 obj<</D[233 0 R/XYZ null 698 null]>>endobj
153 0 obj<</D[233 0 R/XYZ null 628 null]>>endobj
@@ -363,15 +363,14 @@ endobj
-Vè׋‘Ã]‡+_Ž V˜È+ A,0
-V裥ÈaÜ媗#ˆ(Â
*âƒ-ôéBäpÝåB} Â(»‚Ç¥€VÏP„#C̾:\ÕB")£œ· Å ÙHd.„Ð'TæB,ÝÄ‹u+_†pd8üƒȇ
B8j¤—Â!Gl#´A `1Û¨«>BðÌØå
h)‚¸ú,(ÖCéÑg­¡% ÇÜ ýŽhIÂ1ó3?ú•‚+~€áï€d¼s°=z @KŽy>rs˜y€Õø©bå™H*:sˆ‡–(30Ê&ÐúyÖ9eˆιÈQDs‘ƒ²ÔÄ9£Ò7”AÄžžQéI+Ò@½t>¥Ï)Mª’ζÚ&HšÔ¡9!"li¥åÚ‡kˆ´ål¨vc! »ô™ ±¢g83âžö¼nų¢ †®@žâÌcˆñqCË`3Ĉ9qx@Ë`iˆf(Í4€ó`¦Ÿ¬TÔ‡
-g€M>kΩj-k€MœdY“½´¬ +ÈcX]>±rz‹€5D'V
œéöÔ1GNÀY™8樼A:©Ôï˜gB©œÇ ÜÏ™.H,8ޏÃtºc
wàÊêd†kÍÁ…Tú‰:,c=càÔ4Æ €?R§é°ŒÖÛNÓaÓ™_‚& :C¢Åqí±`»0ºk…äªé0‘qƒph­ ±÷UKó„ªY.´v†èuâ,øV­!zÕzìÓÝ ¹ð†èQ:j ÖÖãrfØ ¬OKüñÍPË%¢¹-±±’.h­
Ñ“&æV>¬­'BõÊXZ?Þ¹±´°öõ^†˜È,e \<1÷3–½í#×½{&ܸ¥rU¤ÍJÉ\"š LdöܹK0;¸)82i\o\´;¼•Ÿ'–‘P¬.t¬Â^¿¹1p1_uFÃÒÇàd}¡ãNSbé¥
B8j¤—Â!Gl#´A `1Û¨«>BðÌØå
h)‚¸ú,(ÖCéÑg­¡% ÇÜ ýŽhIÂ1ó3?ú•‚+~€áï€d¼s°=z @KŽy>rs˜y€Õø©bå™H*:sˆ‡–(30Ê&ÐúyÖ9eˆιÈQDs‘ƒ²ÔÄ9£Ò7”AÄžžQéI+Ò@½t>¥Ï)Mª’ζÚ&HšÔ¡9!"li¥åÚ‡kˆ´ål¨vc! »ô™ ±¢g83âžö¼nų¢ †®@žâÌcˆñqCË`3Ĉ9qx@Ë`iˆf(Í4€ó`¦Ÿ¬TÔ‡
-g€M>kΩj-k€MœdY“½´¬ +ÈcX]>±rz‹€5D'V
œéöÔ1GNÀY™8樼A:©Ôï˜gB©œÇ ÜÏ™.H,8ޏÃtºc
wàÊêd†kÍÁ…Tú‰:,c=càÔ4Æ €?R§é°ŒÖÛNÓaÓ™_‚& :C¢Åqí±`»0ºk…äªé0‘qƒph­ ±÷UKó„ªY.´v†èuâ,øV­!zÕzìÓÝ ¹ð†èQ:j ÖÖãrfØ ¬OKüñÍPË%¢¹-±±’.h­
Ñ“&æV>¬­'BõÊXZ?Þ¹±´°öõ^†˜È,e \<1÷3–½í#×½{&ܸ¥rU¤ÍJÉ\"š LdöܹK0;¸)82i\o\´;¼•Ÿ'–‘P¬.t¬Â^¿¹1p1_uFÃÒÇàd}¡ãNSbé¥
\EiW°/)áøf08Ô&[õ cœFwžÿf<[l2êR6WqÀúßtŽ*OôÛø\+Š¿S;‹añcq€‰‹ÙaQt_zî¬ñ¹‘‘«ˆ¸ÿ¥ó/9k·6\"â—{”56¼OßYqYtØqœ=šÌñ…Ie˜>˜¹l:ìŒöªÿì§Œý¹K.ê4Li¯ƒ~/ÛÌæqµ¶\Mä¦ÜÝo·Û/¯oåe»}È,?mcÍå¢ÃœSþ#†KȵqÀe'‰³tŽ+¼Û9á
—XŒÒ¸°DôÖ!‰kvKÄgиš…X!•kæø—°MäšÕ)¹/T®9½3eû‰Ê5c`OJš#sÍ6Ähi/t®™†1±ŒÁ5Ï#îí2¸fbÔ,%=pÍ`sM®ôT9×ÄÚÁÈdr‰<\)´ášRY©Ã\®éÀx™dl.FÚÏ$ŽËšk¢ÉóÄ×þ9椰áòoŠü,M+.ß`ɧv\~UÑ&Yؒ˧ƒ¶Ê¶åòf—ŒoÍEΡö41qÏåcÚb™®î†Ë½,ÚŸ›pÂÕ
®ÃÌK_8.±´îBrvm¦(ˆ=$W›…ÄupÇU/«»Ð\¬•O_ºäj‚áÚ´.¹‚ÑzÜöžKdKÑxw gÑ q!Øý^
—XŒÒ¸°DôÖ!‰kvKÄgиš…X!•kæø—°MäšÕ)¹/T®9½3eû‰Ê5c`OJš#sÍ6Ähi/t®™†1±ŒÁ5Ï#îí2¸fbÔ,%=pÍ`sM®ôT9×ÄÚÁÈdr‰<\)´ášRY©Ã\®éÀx™dl.FÚÏ$ŽËšk¢ÉóÄ×þ9椰áòoŠü,M+.ß`ɧv\~UÑ&Yؒ˧ƒ¶Ê¶åòf—ŒoÍEΡö41qÏåcÚb™®î†Ë½,ÚŸ›pÂÕ
·¶øhß"7\o¶è®Ë’CW+Âé,—\ŽºìþІÆÕŠ'küâª-.¹ø©ÕªGw-qËe‘^HÝž“‹Kæ–ʇìþ‹ë6øà"æÅÇ[ï¹ðÃõV^qÙññýw/·÷Æuê5ƒAÞm_}ÝÛ'ש۞¶wê~z|õy_ß\çŽ;žpØ>ÜËývûøúêý–“pÍPàÿÿÿârõä
äÿÿUÌM‚0à=§˜¥&¶vJÃÏR×õD
@@ -383,16 +382,15 @@ endobj
endobj
209 0 obj<</Type/Page/Parent 205 0 R/Contents 210 0 R/Resources<</ProcSet[/PDF/Text]>>>>endobj
210 0 obj<</Length 211 0 R/Filter/FlateDecode>>stream
ár
á
äHendstream
endobj
211 0 obj
31
endobj
xÚ+ä2T0BCc3JÎår
ár
á
äHendstream
endobj
211 0 obj
31
endobj
xÚ¥UMsÛ6½ëWìädÏDI}º·8r\u‡1åLº@$(! ¥Q}wÊúHÚi“±Çr»ï½}X~ëÅáO cÈ«Þí¢÷æý
212 0 obj<</Type/Page/Parent 205 0 R/Contents 213 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F8 8 0 R/F9 9 0 R/Fc 10 0 R>>>>/Annots 15 0 R>>endobj
213 0 obj<</Length 214 0 R/Filter/FlateDecode>>stream
xÚ¥UÛnÛ8}÷W ú”kÖ’¯Ù·¦Îf½hS5rŠ>ø…¦(›
%º$eÃýúÎr}iº(PذAÍ휙ÃÑ×N=ü$0N¡?Qunç×ÿÜ@Úƒy‰–Ñxóâ*¼ž Öd­Ýþ€¥ÁΘ²öªT‚{eêè:€$i]Ó1‘ë|­8Sú·
@@ -404,41 +402,31 @@ endobj
ÛqyûÑ¡‚Iò#´eNÇ4–4‘YS4»sl½6ð†SçqêÜǾ8£› j
×:Î{+ëÂX4Ò8œ0ƒ³_H…´ÕŽ÷Sˆ¹•öYj¹GU>èjUKT¤—¶äB:Ö&HGQ!9rA¦3ò«¥?ÊIz#Œ&áͲŒtÇ£/oÇ:|EÎ|1ˈÿk#¬sô~‡0.°‡()—$w,ð.›RuŠÏßKçøJ­6â™Ìùû[4ÿr¿Ùlr|ŒPWœ=3Îà?é§ÊâÃ6¡ §¹(îš
IÕµS~
216 0 obj<</Length 217 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS045Õ³P072PIÑPp
VÎO+)O,JUpI-ÎLÏQÉE™%™ùyš!Y\º-ºP=F 13=30ßP!89¿ ÂÈ Åendstream
Vâ(ñP6µ ¡p­ü¾m=/
Ø”±Ï‘"[Z³sÄ™ÀdÆù<,hI]T›žì
$Ežñü„ vGºiÑ!,®»XWŸ¸5u!ã]zq–Äç-t/¤hœ7•ú†•¶íÂÀ¥sÿð÷k„q!(ÑX‹ÛLï[X¦üÙkȆ½Åõ7j¯AU4«RáÕœe¨îCïJvB©6u÷¤_m?Q%9¯6\XE8ƒ°þÍB{ï²üÃÃEÕC\¨ÑÒ-bU¬HuMÈý?Û±ÓÃøJ@?cW¼mG &ܘÒhmváîË 2÷w¬%ÚZ¸qÒã8éh ç`ð×=}ʼn#ÈCc^ŠÂ¤ð(K‰q…üvhC§‘éy~3þ
Æßkƒ7Ùî£iÒšº-ÛqÂ.ß݃IÝ`fzÚ®÷ïF6lêendstream
114
endobj
214 0 obj
936
endobj
xÚµ˜MSãF†ïüŠ>nªl­4²õÁ
0°¤ ÖAbO¹yl”²$G’‹åß§{F–ÚY3rÀ)ªLõh>ºßy§ÇŸ9`㟾׃4?»ŒÏ¾Þ„ lˆ—øÄóˆ_<Ê¥¬d‘Êú·ø/…8¾FÆîÄ
²¸zšG0+Óm.‹&i²²Ðø§Å…oy„Ç/–åz]¾fÅJ¿¸à/BVCµuÏoмàW;æœ:Æ9…gM¨?êa|õ0;–s®û»*‹e¶ÚVº¿‡¤HV’Þ…ù:i'–¶ûV€³Ã~þžû³¦gcÇÕËTãÜÍflœè­ndwE#«e’J˜É:[ô/­²MŽ6竺Ë7kÙ‡©\>ÿTÿÑÅõoýÜ­§\6¯I%áb‘gEV7Á²ª)‚Ûdý¹¡ö·èÄ‹æï,h^•«*És’Ü)V=ZM$Óm•5o¸k6eÕ|nˆx~hˆXÖ'qôôNœžjy¢|ÿ8˜ïØ=‰÷¿%|g:càcWè/°ñ½yUç<õ‘®S”ÅxÏyj Ù
ÙÎu|f[6:'}8ôñx‹þiÙà.Ž“ƒ êÆ¢4rœe€«5áŽãq~2È3"G7<'ÂòÍ<#Ÿú˜#ψ\ȧÈ{Î@8Ýi`¹=ïOöú¿ü%_ÕŠÎ;7˜hU\,Êg4‡²n"%Gô‰ŒÌœën²µ„›²Ê“¢L³e–* uržX®EéG³ÛÑŒÊ6èÉ·Qã;=©†IO-ÝêÉ€·zÚñm!#ÏÌ·#(ڞȻ¡55óŒ@Þ§¼ôüÁüõÛ›2é;Ú ~Éä}R¬¶xî÷Ìâ—¬ZÀõ"£ì}$aï8žÃçð{ù I±è$ɾo¤.Bêš)výUùèu‘– ò.#®’¢þÌÓuÛäû·Ûl!?ÝåC¹k5ÍHæIÑdéðê
;Áž(mL•PTã°”Càw¯¦@ûÆÀ9A>,H§&žÈÊ5M<#hŸ…VÈø#ö=Õûàñæ
215 0 obj<</Type/Page/Parent 205 0 R/Contents 216 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 8 0 R>>>>>>endobj
216 0 obj<</Length 217 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS045Õ³P072PIÑPp
VÎO+)O,JUpI-ÎLÏQÉE™%™ùyš!Y\º-ºP=F 13=30ßP!89¿ ÂÈ Åendstream
endobj
217 0 obj
114
endobj
-­3m @Þæ’SpNÐù5ÈûœÎÏ Zóô9A©u)µDj§BßáTj=ÇÁ·7,·ù³Ñõ1–ý]Fa<†oq¬*ÔÓ&×
úòT7LÉmi;Í*O}
Žç•›ÁÀd8¡‹ßÈsB,æùp"ow¡‘g3¹PÇ!7ìË_3”m¸Ø¢ÁÓ
Dçp™ÔYª¶û,[Ñ/ii*ëú½bÿõ#.FÁî¡þ¡ª›Ö¿6®P½í¶úúãìfck”endstream
endobj
220 0 obj
1334
endobj
221 0 obj<</Type/Page/Parent 205 0 R/Contents 222 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 8 0 R>>>>>>endobj
222 0 obj<</Length 223 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
218 0 obj<</Type/Page/Parent 205 0 R/Contents 219 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F8 8 0 R/F9 9 0 R/Fc 10 0 R>>>>/Annots 38 0 R>>endobj
219 0 obj<</Length 220 0 R/Filter/FlateDecode>>stream
xÚµ˜KSãH Çï|
ÙªÄãGâ7 À°5Ylæ´ãt‚·b;k;ÅðíGêöCYB;¶¨
ÕÉÏjEú·¤Î¿'˜øggƒãB’\D'ß®°Mˆ–ø‰ëù-NmxKQŠ<ÕÑ?±<…Œ‰aKȰàòq¬H¶™Èë¸N‹\á°¬·=Ã%<z°,Öëâ%ÍWêÁÒ
Êv×<½BýŒoµÌ™2œ4†mÛ®1!ÛÛ®»;ŸÒãËûùØ2¬3µße‘/ÓÕ¶TûÝÇy¼dæë8ßµŽ[Žúžï¿Í˜ñðµªE·y-Êeœ˜‰*]åô/)ÓMm1çþßf›µèV,?ÿ¸ÑðüžŒ¿ZÏ‹eýÎYš§U*ÊŠ´×GØßKký+âÎßq}^«2Î2ÒÖÑ~‡ûüE²-ÓúÏĦ(ë#ìFó}v#Q«¼ðñ0<Vâ3‰û¹7q?Ñ&éíMæÚ¢0V§Ñ±Õi´qñ£~eWª«B^äãÊP9ðé²p˜†‰¥^,zy¸Áh˜àø:’ëc5S5„{hd¸™oøZܲ\ÎOyFdXŽížÈÛ¶áéyF ?õ0NZž8¶9à'w­p:SßpzÞ›ìØ¿x“¯r½~°u9þD è|Q<áñ/ª:”âÄJR æj…ët-àº(³¸†p#’t™&²†Ž:qO Ç ©ôûšÝ¾­ºÆzùöiÔ器ÄV]r¡SWC7êÒàºZÞ¥§åÙ·lн†çòN`Lõ<#÷(7=@6=KØ7Ù¼‹óÕÛt?Œ zNË\-RÊà±Icµ›èüY<Aœ/:ù„¢†¡f…êCµí}“eô*OŠÕ52•q^}¸t¶ºÞOþf.Äqvî‹…XK‡B‘Åy&|9Â͉ÌùT
@.öK„ø^÷è~štÌœTmmÒŸŽgò¾¬t~#`üú6§Jß×—ø®Œà.ÍE_«b‘a
endobj
Â!¦.býåuÈ,d,©…&K--“ £€Q´­œ”¥c¢åAUn‚Q×òŒ@Þ£šªåAYøÏ ê¡äs'øÃª±[e˜TcO]oÔÎÐ7E¼®pn*ñ «G.šÎGåæÿÓFÌìt$:5´’‰†fæ
ÇH=Î Ò‘7à 'HGže-ÏšÅ\Œ’ŽçéÈ°Ï ê®Rµ:žÈ»4ÝjyF ïOâÉ šõ¨÷÷ü¦R²iÆk!%Š7ër›Ô[œåñÒJoômH/ÖÓ΄^柵KÃg+j¹Ð‰º¡•f54¨8ç‰Ô§”ëxF ÐÝKË3‚DJºŽç]0’¬Žg‰¨ã;5|&#l‘÷ñfCy~õ‹9ÜÍgR18Ët¹¯¾¾ÆM-y'QÙ– Ze[C3€jœCCƒs‚zÙ ïqÞ¶†xN¨ôêÝç¥×¡ôvüéÚê¾&ÓëZâx]‹_µq¼ï²
ã1|"9²~}‚¿YÕB—à†VùÓÐ  ‘Õ£ipNÐê8à 5¬xZžªÉèýáDÖœF-Ïn\ªF€ œ ‰Q8ÜPÆá|‹Åž®%²‡œÁE\¥‰<ö³tE¿˜'‰¨ª÷ºÅîãª3ø­RpÛq·ïãžø&~“>rýuòHÒU'endstream
endobj
@@ -451,12 +439,14 @@ endobj
áÒw³P04TIS045Õ³P072PIÑPp
VÎO+)O,JUpI-ÎLÏQÉE™%™ùyš!Y\º-ºP=& 1#C=30ßH!(5-µ(5/9µÂÈ¿ä"Éendstream
endobj
226 0 obj
977
endobj
223 0 obj
119
endobj
224 0 obj<</Type/Page/Parent 205 0 R/Contents 225 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F8 8 0 R/F9 9 0 R/Fc 10 0 R>>>>>>endobj
225 0 obj<</Length 226 0 R/Filter/FlateDecode>>stream
xÚµVMsã6 ½ûW`rrf"ù³þHO›¤Ûqg§»Í:{ò…– ™ITH*žüû¤äÈj6­:íøB‘ €÷øøi01ý&°œÂlQ>¸ÙF×0Ã6¡“ÅrÛx8ƒ;42-àó3êg‰ÇËíw²›Ãdâí‚é*œ²åíׯ
D*/•ÁTk0*±G¡Ì‹±˜°aA•¨…E°*E{@M  ­Déœ}䪀RËÂÊ"+Ì£¹ö¡£:´‹Lᜣ曆%œç6¼Ñ#±9¿G)Of>å7/¡~Ä _à–r}oßþºégϤ}(ËLFÂJ‚üE«T<Gm`SXâCDØßå&)÷IîµÐ/½Ü $òûáþ(3ʵ߯Ñã*CÝï–Ó|ë¼Ï&K>÷r fS/Y8s´•» l´= ìk#y™aŽ…u"¬Šúa (*PTùž$îX& j¶”ÍC™>dÙ«3~$²Œªá(í3hÁÎ
xÚÅV_oÛ6÷§¸Ç…eKvl'@1¬É‚õemc(Ð좨šµD*$eÇß~w¤äÄžmdiŠ!Çûýá‘Çû^ Cü‰a4¡_^õÞ§½ÁÍ. -hd2ÿò³šV–¢¼äb5(d)Þ¤?0ðâ1Eö1´ŸøÐQGc°ÂHV† 1Ä1
Zv(tZqäþJ¿Ãg!<Üo  ê¢U!]!Ý£Q•¦£MLŽe")u:p6ª²ee!öwwC Ó°v<n—BsúÙõˆÌFeVv_Û/ÃÕ+<Y–×£ÑA[ˆGºN¥ãawž£
Μ¼…ö7µoãñˆ¿Ó¦ì‚¤vÄû»!¿PŠú/ÁþFl†\ýNÙ×A*þƨHRëòÚÃ@ÁXj[ißP[i³&Œåõˆ\ÎáÿðV•MñUÕ‘ßÖøTIMÿ5wŸK_7>€ª¿ÞÁbJª ªÖŸû+5:Ó7<u$tìì†Þ‘Èv—u2 ¹qÃóåg‰O£H«BY0%F¬¥øÊÝ©kòÊXbGÄn×yàÈg¢uþ­rgc,µ)¡cjToE@#÷TÐ7ínÁ)Ǥ37õø25I¡_Ö÷›+©Ô†¸ÔióâEvGUe1ì9EEr§ûì_œKöpÑ  OÍtÞôÈõ©‘R+%Û7ºhÓCéôD“qˆ‚†G÷Ì–“/Е~ôì±ì40‚l7úÈŒæaý£U‘ÊB P(L†dmµ‚ÕðºýÌG *-S•¥ÒÖÓRK’ÛW¶õ†Lßçi
Y¿ÃþW<}zŽèØn~pÏT‡¥­3UˉGÄuÃКótºœ{(”f[ZOVxŽÛËxÝàžA3.Þߘü32Eãó„?RE÷†g):WN~ùMë¡Ö‹Õk¶ó±·óÏï|5×dEç?ñ÷/ÛÁƒ?^¡[Äendstream
endobj
@@ -532,35 +522,39 @@ endobj
&O¶x`µºÏ9}ãÛÙ”>à3¥«ÏI7g¿/ÎÞÿqCÓ Z¬p2¿ÆCõÛùäz2£ÛZ…ÀáÝâ l.h:Í6ãÙ•Ø,6L:[P㪮f2<‡ÖÙ`–ø¹ržeÕÚØ5µÞØÈ~ÅXŠðv!r3¡Joò™xQ¤]]³ŽÆYr+A€¸Ós€BäÚiU“²Õ{ðܸȽû0¡¸T Uä={q µ³+³î¼JW¦æI¦ý"Íxv3Ù‹sq Û8¨ H£êšþ\,zK횦³F' ri¸5àÕ*Yè2\©’ø¯”æ0"¥5·QìAÌf­¼k ” ­¼Ùöa—¸䂱À! šço1áÛ
GGa"'²:(ëïïö)9”#eä„&üu—€Kvø;(YäúöÓýQP ^{Õ ¡,sÅ•]Û:é™—ã¥
xYêb”3i|qK
ºùNÇáÒõ­ªÁ¼dø´”è]2ŒÀ~kPk´dÀäCœG¡ßŒÈQù˜Ú·!µ’™_EOæ%aئ à ¸¤;N¸¤¯²ÅÿvHz³‹ÔV™Z‰Iï@Lû¼Œ?qÄ>Àµ|P‡oBŸÓñhhçwôXÔb±7Þ§¢’îEcmx‹“~hK·€±ò& ì¶x­h骴ÓàôWŽúœæñ«nÍÓ9yïg®4 ºÉ‰G ôz‡ö+}\æú¿ÒÐJz¦©ß#Ú;J:Œã¦æ¬¨X„.”ÍX†$.>Ý=ŒšmÜ3Ë‘‰Ç ß/ú€UÓÕÑ´RÇU…Ò ¥‡ÄÍ17³}%3e ½/g¿<~žP2å´<hí¼´^½›ÐÓç{ieSeª²¥oQ€ÂYذç‘`TeŸàÚ:Д`iP€¯²»äÙ•Uí¡ÓóÆ`Õ7f½Aј
QÅN
Äšè¼U:´Îu0)1góœø¬òì¼ùÁÕ(eðþáE%RžE¤˜Eàt˜—ÓÝàPUýT¨o—T{/ãíÓÃã‰
endobj
244 0 obj
1062
endobj
245 0 obj<</Type/Page/Parent 205 0 R/Contents 246 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
246 0 obj<</Length 247 0 R/Filter/FlateDecode>>stream
xÚ­–Moã6†ïþŸRÀV-9_>¶Iº1Ð.ìôN“#‡[ŠÔ’T¼þ÷¡dyëòŠ–,¾Ãyæ‹ò·Q3úËa~Ëÿ²ý¾ýúÇòkØ”´r{O7êjžÝgù ^„¶¿l¾’âò¼UL‹;VlÞ*Z†Ê©Æ èCílÐ[úZ:QWÚîÀ5„U t¨E”oüLÛº{J«|Ëzi4ÚÒY2jÚ*ƒ%©Lp A®óyV°ó=ïƒ!Yi+]òÓ‚Î:ЫõòËóëê¿ôWÉåGáÃóŸçÊ w–\O(,ã„
)â€þ=#–z×xÁ”PjC,"€ET¨&ìä ø±ˆ¢7
jï$†è½ó!1áwCÖ2œª1-Ù©9¼,_žêñÒÊ9*-`i#z‹‘Khàé»$U +vÌœv„x¨1QP\^à ”ˆb+RØ"žEšºv>†9[sú·
OŒA7UÅøHfÕBhh¨Ðb•Š
ºùNÇáÒõ­ªÁ¼dø´”è]2ŒÀ~kPk´dÀäCœG¡ßŒÈQù˜Ú·!µ’™_EOæ%aئ à ¸¤;N¸¤¯²ÅÿvHz³‹ÔV™Z‰Iï@Lû¼Œ?qÄ>Àµ|P‡oBŸÓñhhçwôXÔb±7Þ§¢’îEcmx‹“~hK·€±ò& ì¶x­h骴ÓàôWŽúœæñ«nÍÓ9yïg®4 ºÉ‰G ôz‡ö+}\æú¿ÒÐJz¦©ß#Ú;J:Œã¦æ¬¨X„.”ÍX†$.>Ý=ŒšmÜ3Ë‘‰Ç ß/ú€UÓÕÑ´RÇU…Ò ¥‡ÄÍ17³}%3e ½/g¿<~žP2å´<hí¼´^½›ÐÓç{ieSeª²¥oQ€ÂYذç‘`TeŸàÚ:Д`iP€¯²»äÙ•Uí¡ÓóÆ`Õ7f½Aј
¨¸Mç²´BZÅÑ»Zj@f-b••(ÍôzL¤í“]+wM¹åPg`-ìë"urßédDeî`´ô¸T¨yÉ`^Ÿ¥µ“Ð_öÕTåµSvÍq›÷›RÈRð²As¨p+ “¼¡¿Ýz]vô<ëlqLõ%#bïϨ[Ê•4RÅJÅÔ¹k¶2žPË]N¯Þ°8ìÓp]bO//¡ý|~#ñóxt«ø,Nî8˜µ•/íMÛ¯¾q¾2¾š}8ùgôâêÇél:•gÿžý5 endstream
endobj
244 0 obj
1062
endobj
245 0 obj<</Type/Page/Parent 205 0 R/Contents 246 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
246 0 obj<</Length 247 0 R/Filter/FlateDecode>>stream
xÚ­–Moã6†ïþŸRÀV-9_>¶Iº1Ð.ìôN“#‡[ŠÔ’T¼þ÷¡dyëòŠ–,¾Ãyæ‹ò·Q3úËa~Ëÿ²ý¾ýúÇòkØ”´r{O7êjžÝgù ^„¶¿l¾’âò¼UL‹;VlÞ*Z†Ê©Æ èCílÐ[úZ:QWÚîÀ5„U t¨E”oüLÛº{J«|Ëzi4ÚÒY2jÚ*ƒ%©Lp A®óyV°ó=ïƒ!Yi+]òÓ‚Î:ЫõòËóëê¿ôWÉåGáÃóŸçÊ w–\O(,ã„
)â€þ=#–z×xÁ”PjC,"€ET¨&ìä ø±ˆ¢7
jï$†è½ó!1áwCÖ2œª1-Ù©9¼,_žêñÒÊ9*-`i#z‹‘Khàé»$U +vÌœv„x¨1QP\^à ”ˆb+RØ"žEšºv>†9[sú·
œ˜ifS+BÄ*ƒOv= ¼ð ðN{¯#¶ãÐÛ}ˆS°w]óâìÖÉ9ü
"¢MÖÝf‘ëÉ÷EˆSéBlmèƒøØ¬ô®"Žà/i/G÷
CÔö”Û3ïL{!S¬Va S¼<й)?LÇ57š¨] âR)XBÖ]ÑS›“æáuµž~Á8=úý×ÕØ6Êè9¬(#”–!ðº“ü |¯å
œ˜ifS+BÄ*ƒOv= ¼ð ðN{¯#¶ãÐÛ}ˆS°w]óâìÖÉ9ü
®"^õYÈÙí1è^-;5OлVÔ´àݶ ñ¸25ÚRRªm?qiøšm¥cߙޙÿ<^|uÛÁq\d9)±ŽÅjG6ˆhLwŒÐéʼnö©á[•Å}òšjj”ºÔ²Gf)@
endobj
247 0 obj
883
endobj
248 0 obj<</Type/Page/Parent 205 0 R/Contents 249 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
249 0 obj<</Length 250 0 R/Filter/FlateDecode>>stream
xÚ•TÁnâ0½ó£œŠD²(ãî¶•ö°USõÂÅ8j䨩íPíßïŒC¨„V‘VHb¿ñ›¼yæc’Ü>9 X®A6“åäÛÓò”5í¬7ô£º[fÛl
ºU£Ì´<gyÞsÒEÁœòHÛ4ÂT@ Žè¡uÊtðÑaG¼%µð}\÷bµpÊCò=™AòÄð‹á7ÃŽá™á%™±8IæËlÁ¢IÉë¯ o 5ƒfh,ƒg,t Ø6(k¨
‡`lßµ­u«žbðóJ!qØßívP+ûé|<ñ‘)hÄAc¬RböÓx~ëìYUXA°äЩձ£ÕŸ¯»—Ô·(U­$Ô(­ú¬wöËýt±Í®þä®2µµŸ W÷µòÁC 
°´‚K,ÊQ¹“œÇ–‰ôí[ƒ
ªÄ˜Ð¨Ï†Ñæ|îóÔ °uŠKp!ºº÷Úr¹®—Ût¡úÉ|]Ú L­à2’ðñÿaºSð˜ºgi;9ô×ÓQÔ—^­Ñÿ` ÉHxu£Ó^>zÉàÃ̧©ùÁç^;´|”ñجEº¥aù˜¼£oÝ+ÛE‡.r•Áot„LÍÚáii\Ž'0~æÕxræ}¼§·(Œcpuú-Ú/Ðî6šÐË™šSu)½ï2–ßÜd÷p»˜ó&íä¯]÷lúˆüFç‹ô:mɶÓÖdzWÌØ&/øáuÁå˜}òCèi3úkô/tâ[endstream
endobj
247 0 obj
883
endobj
248 0 obj<</Type/Page/Parent 205 0 R/Contents 249 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
249 0 obj<</Length 250 0 R/Filter/FlateDecode>>stream
xÚ•TÁnâ0½ó£œŠD²(ãî¶•ö°USõÂÅ8j䨩íPíßïŒC¨„V‘VHb¿ñ›¼yæc’Ü>9 X®A6“åäÛÓò”5í¬7ô£º[fÛl
ºU£Ì´<gyÞsÒEÁœòHÛ4ÂT@ Žè¡uÊtðÑaG¼%µð}\÷bµpÊCò=™AòÄð‹á7ÃŽá™á%™±8IæËlÁ¢IÉë¯ o 5ƒfh,ƒg,t Ø6(k¨
‡`lßµ­u«žbðóJ!qØßívP+ûé|<ñ‘)hÄAc¬RböÓx~ëìYUXA°äЩձ£ÕŸ¯»—Ô·(U­$Ô(­ú¬wöËýt±Í®þä®2µµŸ W÷µòÁC 
q‡Wñ`TxV’çáÁ£FIÀáO¬è<ºñ~6$ר3Žöį4Љõi€“=°)"ú]¡Ê6}\uK‡^†3*< ð6‰ü^i…µ2ô®—Xö¼TŒËçs:ÛFÅ™p3…Aj6¿ÏíwHWÃÿ—ÿ¤ìðDCi¥'\[ ¨u/ß±ê4]I¾<†Ú8‹ØSMñ¸thþÒÐæ"•ßßS
–EÞ7SMW¹ŸœüôêhøK:½åê´/J‹ÅüŸ,«bEÛq/_òÂc9yžü{-`lendstream
endobj
endobj
250 0 obj
520
endobj
251 0 obj<</Type/Page/Parent 205 0 R/Contents 252 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 8 0 R>>>>>>endobj
@@ -577,20 +571,20 @@ endobj
•QsÚ0 ÇßùH Ð=BÚô õ.éÝ^]GM=›Ù¦Œ}ú*cíÝâÒ9ŽDâ'ýeIùÕ‹áœ>1L0ƒ¨{³¢w6ÿƒs(žÈ2ž\BQ~™Âµ2Îq»ûZülâÉÞ¡?EƒÖ%Š¡@[»½Çâøà1˜DãÆ#Ù[F ÅëÇÃßA˜z½ñhAq]mx…Ñ{Nÿ­ûš[®ªn`Žº”ºcÁ¢@ùÒÜ”Üs¨EðÏ\“êGéÓ^Öá€r¡ìÆþ–ïõFKÁ½4Ú 0<¢ß"jð[kk*Ëk
çÐJþ_ê>¡É±BRE鶪4¥oìªC]ô¾%ÚÃA4Ú7Ŧ½ ôÅ4O²,GMÕt^¹çºä¶„Ä”O$>Óô]·éÐoêž&¥
¢“–w‡JH ¡î²À¬Ô¾©k¾së3Í“3Ö
¢“–w‡JH ¡î²À¬Ô¾©k¾së3Í“3Ö
MY~÷äÛh]€</ܹT…åÚ=aC3Þ£´Ö¿^tónp«Ðû>ãbÕ$zmùúY
‹ÃD†Ñ,ùŽ*¡½5êTþígøûÚ­y<Ÿ¥Å¼Þvͤº’©©+
îV07V¹Œ€=vÚ g˜å÷ÛqàêØqîmŵüÓì»êf/Hù±¬Wë j™-ÓnÖr£šåTJÇ",¹Tþþp€Y(IfœÏ…•kÿ7Ut탰ô|9 m[ûB¤%Ò Úv¦hqXEpj KÛšN'4½—o±£Ã–|÷
MFÑ%-Q2Ä̓´è}ï½°C#Æendstream
endobj
256 0 obj
597
endobj
257 0 obj<</Type/Page/Parent 205 0 R/Contents 258 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 8 0 R>>>>>>endobj
258 0 obj<</Length 259 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS045Õ³P072PIÑPp
VÎO+)O,JUpI-ÎLÏQÉE™%™ùyš!Y\º-ºP=†f Acc=#°€£‚{N~qqbQ%HÂ5„+ š:"\endstream
MY~÷äÛh]€</ܹT…åÚ=aC3Þ£´Ö¿^tónp«Ðû>ãbÕ$zmùúY
‹ÃD†Ñ,ùŽ*¡½5êTþígøûÚ­y<Ÿ¥Å¼Þvͤº’©©+
îV07V¹Œ€=vÚ g˜å÷ÛqàêØqîmŵüÓì»êf/Hù±¬Wë j™-ÓnÖr£šåTJÇ",¹Tþþp€Y(IfœÏ…•kÿ7Ut탰ô|9 m[ûB¤%Ò Úv¦hqXEpj KÛšN'4½—o±£Ã–|÷
MFÑ%-Q2Ä̓´è}ï½°C#Æendstream
endobj
256 0 obj
597
endobj
257 0 obj<</Type/Page/Parent 205 0 R/Contents 258 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 8 0 R>>>>>>endobj
258 0 obj<</Length 259 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS045Õ³P072PIÑPp
VÎO+)O,JUpI-ÎLÏQÉE™%™ùyš!Y\º-ºP=†f Acc=#°€£‚{N~qqbQ%HÂ5„+ š:"\endstream
endobj
259 0 obj
118
endobj
@@ -729,45 +723,45 @@ xref
0000002026 00000 n
0000002103 00000 n
0000002182 00000 n
0000000226 00000 n
0000001792 00000 n
0000001866 00000 n
0000001948 00000 n
0000002026 00000 n
0000002103 00000 n
0000002182 00000 n
0000002258 00000 n
0000002339 00000 n
0000002398 00000 n
0000002450 00000 n
0000002535 00000 n
0000002587 00000 n
0000002671 00000 n
0000002702 00000 n
0000002803 00000 n
0000002888 00000 n
0000002989 00000 n
0000003074 00000 n
0000003175 00000 n
0000003260 00000 n
0000003347 00000 n
0000003432 00000 n
0000003519 00000 n
0000003604 00000 n
0000003670 00000 n
0000003755 00000 n
0000003821 00000 n
0000003906 00000 n
0000003972 00000 n
0000004057 00000 n
0000004123 00000 n
0000004208 00000 n
0000004274 00000 n
0000004359 00000 n
0000004425 00000 n
0000004510 00000 n
0000004604 00000 n
0000004708 00000 n
0000002258 00000 n
0000002339 00000 n
0000002398 00000 n
0000002450 00000 n
0000002535 00000 n
0000002587 00000 n
0000002671 00000 n
0000002702 00000 n
0000002803 00000 n
0000002888 00000 n
0000002989 00000 n
0000003074 00000 n
0000003175 00000 n
0000003260 00000 n
0000003347 00000 n
0000003432 00000 n
0000003519 00000 n
0000003604 00000 n
0000003670 00000 n
0000003755 00000 n
0000003821 00000 n
0000003906 00000 n
0000003972 00000 n
0000004057 00000 n
0000004123 00000 n
0000004208 00000 n
0000004274 00000 n
0000004359 00000 n
0000004425 00000 n
0000004510 00000 n
0000004604 00000 n
0000004708 00000 n
0000004813 00000 n
0000004918 00000 n
0000005023 00000 n
0000005127 00000 n
0000005232 00000 n
0000005337 00000 n
0000005441 00000 n
0000005546 00000 n
0000005651 00000 n
0000005756 00000 n
@@ -861,143 +855,143 @@ xref
0000015526 00000 n
0000015575 00000 n
0000015624 00000 n
0000015330 00000 n
0000015379 00000 n
0000015428 00000 n
0000015477 00000 n
0000015526 00000 n
0000015575 00000 n
0000015624 00000 n
0000015673 00000 n
0000015722 00000 n
0000015771 00000 n
0000015820 00000 n
0000015869 00000 n
0000015918 00000 n
0000015967 00000 n
0000016016 00000 n
0000016065 00000 n
0000016114 00000 n
0000016163 00000 n
0000016212 00000 n
0000016261 00000 n
0000016310 00000 n
0000016359 00000 n
0000016408 00000 n
0000016457 00000 n
0000016506 00000 n
0000016555 00000 n
0000016604 00000 n
0000016653 00000 n
0000016702 00000 n
0000016751 00000 n
0000016800 00000 n
0000016849 00000 n
0000016898 00000 n
0000016947 00000 n
0000016996 00000 n
0000017045 00000 n
0000017094 00000 n
0000017143 00000 n
0000017192 00000 n
0000017241 00000 n
0000017290 00000 n
0000017339 00000 n
0000017388 00000 n
0000017437 00000 n
0000017486 00000 n
0000017535 00000 n
0000017584 00000 n
0000017633 00000 n
0000017682 00000 n
0000015673 00000 n
0000015722 00000 n
0000015771 00000 n
0000015820 00000 n
0000015869 00000 n
0000015918 00000 n
0000015967 00000 n
0000016016 00000 n
0000016065 00000 n
0000016114 00000 n
0000016163 00000 n
0000016212 00000 n
0000016261 00000 n
0000016310 00000 n
0000016359 00000 n
0000016408 00000 n
0000016457 00000 n
0000016506 00000 n
0000016555 00000 n
0000016604 00000 n
0000016653 00000 n
0000016702 00000 n
0000016751 00000 n
0000016800 00000 n
0000016849 00000 n
0000016898 00000 n
0000016947 00000 n
0000016996 00000 n
0000017045 00000 n
0000017094 00000 n
0000017143 00000 n
0000017192 00000 n
0000017241 00000 n
0000017290 00000 n
0000017339 00000 n
0000017388 00000 n
0000017437 00000 n
0000017486 00000 n
0000017535 00000 n
0000017584 00000 n
0000017633 00000 n
0000017682 00000 n
0000017731 00000 n
0000017780 00000 n
0000017829 00000 n
0000017878 00000 n
0000017927 00000 n
0000017976 00000 n
0000018025 00000 n
0000018074 00000 n
0000018123 00000 n
0000017780 00000 n
0000017829 00000 n
0000017878 00000 n
0000017927 00000 n
0000017976 00000 n
0000018025 00000 n
0000018074 00000 n
0000018123 00000 n
0000018172 00000 n
0000018221 00000 n
0000018270 00000 n
0000018319 00000 n
0000018368 00000 n
0000018417 00000 n
0000018466 00000 n
0000018515 00000 n
0000018564 00000 n
0000018613 00000 n
0000018662 00000 n
0000018711 00000 n
0000018760 00000 n
0000018809 00000 n
0000019038 00000 n
0000019190 00000 n
0000025540 00000 n
0000025562 00000 n
0000025657 00000 n
0000025759 00000 n
0000025779 00000 n
0000025934 00000 n
0000026946 00000 n
0000026967 00000 n
0000027080 00000 n
0000027265 00000 n
0000027286 00000 n
0000027441 00000 n
0000028846 00000 n
0000028868 00000 n
0000028981 00000 n
0000029171 00000 n
0000029192 00000 n
0000029342 00000 n
0000030390 00000 n
0000030411 00000 n
0000030570 00000 n
0000031576 00000 n
0000031597 00000 n
0000031728 00000 n
0000032713 00000 n
0000032734 00000 n
0000032865 00000 n
0000033789 00000 n
0000033810 00000 n
0000033960 00000 n
0000035019 00000 n
0000035040 00000 n
0000035171 00000 n
0000035917 00000 n
0000035938 00000 n
0000036069 00000 n
0000037202 00000 n
0000037224 00000 n
0000037364 00000 n
0000038318 00000 n
0000038339 00000 n
0000038470 00000 n
0000039061 00000 n
0000039082 00000 n
0000039195 00000 n
0000039384 00000 n
0000039405 00000 n
0000039545 00000 n
0000040213 00000 n
0000040234 00000 n
0000040347 00000 n
0000040536 00000 n
0000040557 00000 n
0000040711 00000 n
0000043138 00000 n
0000043160 00000 n
0000043315 00000 n
0000044936 00000 n
0000044958 00000 n
0000045013 00000 n
0000045118 00000 n
0000018172 00000 n
0000018221 00000 n
0000018270 00000 n
0000018319 00000 n
0000018368 00000 n
0000018417 00000 n
0000018466 00000 n
0000018515 00000 n
0000018564 00000 n
0000018613 00000 n
0000018662 00000 n
0000018711 00000 n
0000018760 00000 n
0000018809 00000 n
0000019038 00000 n
0000019190 00000 n
0000025540 00000 n
0000025562 00000 n
0000025657 00000 n
0000025759 00000 n
0000025779 00000 n
0000025934 00000 n
0000026941 00000 n
0000026962 00000 n
0000027075 00000 n
0000027260 00000 n
0000027281 00000 n
0000027436 00000 n
0000028835 00000 n
0000028857 00000 n
0000028970 00000 n
0000029160 00000 n
0000029181 00000 n
0000029331 00000 n
0000030370 00000 n
0000030391 00000 n
0000030550 00000 n
0000031481 00000 n
0000031502 00000 n
0000031633 00000 n
0000032595 00000 n
0000032616 00000 n
0000032747 00000 n
0000033671 00000 n
0000033692 00000 n
0000033842 00000 n
0000034895 00000 n
0000034916 00000 n
0000035047 00000 n
0000035793 00000 n
0000035814 00000 n
0000035945 00000 n
0000037078 00000 n
0000037100 00000 n
0000037240 00000 n
0000038194 00000 n
0000038215 00000 n
0000038346 00000 n
0000038937 00000 n
0000038958 00000 n
0000039071 00000 n
0000039260 00000 n
0000039281 00000 n
0000039421 00000 n
0000040089 00000 n
0000040110 00000 n
0000040223 00000 n
0000040412 00000 n
0000040433 00000 n
0000040587 00000 n
0000042983 00000 n
0000043005 00000 n
0000043160 00000 n
0000044798 00000 n
0000044820 00000 n
0000044875 00000 n
0000044980 00000 n
0000045124 00000 n
0000045230 00000 n
0000045350 00000 n
0000045459 00000 n
0000045608 00000 n
0000045718 00000 n
0000045825 00000 n
0000045979 00000 n
0000045368 00000 n
0000046115 00000 n
0000046212 00000 n
0000045597 00000 n
0000046322 00000 n
0000046437 00000 n
-14
Ver Arquivo
@@ -138,20 +138,6 @@ The options can be any combination of the following:
<LI><CODE>parity=<I>none</I></CODE> - Turns parity checking off.
<LI><CODE>flow=dtrdsr<I></I></CODE> - Turns DTR/DSR (hardware) flow
control on.
<LI><CODE>flow=hard<I></I></CODE> - Turns RTS/CTS
(hardware) flow control on.
<LI><CODE>flow=none<I></I></CODE> - Turns flow control off.
<LI><CODE>flow=rtscts<I></I></CODE> - Turns RTS/CTS
(hardware) flow control on.
<LI><CODE>flow=xonxoff<I></I></CODE> - Turns XON/XOFF
(software) flow control on.
</UL>
<H3>socket</H3>
+7007 -7876
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+8386 -7953
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+2 -2
Ver Arquivo
@@ -1,7 +1,7 @@
<HTML>
<HEAD>
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SPM-1.1.5">
<META NAME="DOCNUMBER" CONTENT="CUPS-SPM-1.1.3">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>CUPS Software Programmers Manual</TITLE>
</HEAD>
@@ -10,7 +10,7 @@
<H1 ALIGN="RIGHT">Preface</H1>
<P>This software programmers manual provides software programming
information for the Common UNIX Printing System ("CUPS") Version 1.1.5.
information for the Common UNIX Printing System ("CUPS") Version 1.1.3.
<EMBED SRC="system-overview.shtml">
+1389 -1825
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+792 -747
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+2 -2
Ver Arquivo
@@ -2,7 +2,7 @@
<HEAD>
<META NAME="Description" CONTENT="Common UNIX Printing System Software Users Manual">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1.5">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1.3">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>CUPS Software Users Manual</TITLE>
</HEAD>
@@ -11,7 +11,7 @@
<H1 ALIGN="RIGHT">Preface</H1>
<P>This software users manual describes how to use the Common UNIX Printing
System<SUP>TM</SUP> ("CUPS<SUP>TM</SUP>") Version 1.1.5.
System<SUP>TM</SUP> ("CUPS<SUP>TM</SUP>") Version 1.1.3.
<EMBED SRC="system-overview.shtml">
+7 -7
Ver Arquivo
@@ -59,13 +59,6 @@ clean:
#
install:
-$(MKDIR) $(LIBDIR)
$(CHMOD) ugo+rx $(LIBDIR)
$(INSTALL_LIB) $(LIBCUPSIMAGE) $(LIBDIR)
-if test $(LIBCUPSIMAGE) != "libcupsimage.a" -a $(LIBCUPSIMAGE) != "libcupsimage.la"; then \
$(RM) $(LIBDIR)/`basename $(LIBCUPSIMAGE) .2`; \
$(LN) $(LIBCUPSIMAGE) $(LIBDIR)/`basename $(LIBCUPSIMAGE) .2`; \
fi
-$(MKDIR) $(SERVERBIN)/filter
$(CHMOD) ugo+rx $(SERVERBIN)
$(CHMOD) ugo+rx $(SERVERBIN)/filter
@@ -74,6 +67,13 @@ install:
$(CHMOD) ugo+rx $(INCLUDEDIR)
$(CHMOD) ugo+rx $(INCLUDEDIR)/cups
$(INSTALL_DATA) raster.h $(INCLUDEDIR)/cups
-$(MKDIR) $(LIBDIR)
$(CHMOD) ugo+rx $(LIBDIR)
$(INSTALL_LIB) $(LIBCUPSIMAGE) $(LIBDIR)
-if test $(LIBCUPSIMAGE) != "libcupsimage.a" -a $(LIBCUPSIMAGE) != "libcupsimage.la"; then \
$(RM) $(LIBDIR)/`basename $(LIBCUPSIMAGE) .2`; \
$(LN) $(LIBCUPSIMAGE) $(LIBDIR)/`basename $(LIBCUPSIMAGE) .2`; \
fi
#
+2 -8
Ver Arquivo
@@ -136,8 +136,8 @@ update_transform(void)
case 2 :
left = Scaling1[0];
bottom = Scaling1[1];
right = left + page_width * Scaling2[0] * 1016.0f / 72.0f;
top = bottom + page_height * Scaling2[1] * 1016.0f / 72.0f;
right = left + page_width * Scaling2[0];
top = bottom + page_height * Scaling2[1];
break;
}
@@ -518,8 +518,6 @@ PS_plot_size(int num_params, /* I - Number of parameters */
PlotSize[0] = PageLength;
PlotSize[1] = PageWidth;
}
PlotSizeSet = 0;
break;
case 1 : /* PS length ; */
if (Rotation == 0 || Rotation == 180)
@@ -532,8 +530,6 @@ PS_plot_size(int num_params, /* I - Number of parameters */
PlotSize[0] = 72.0f * params[0].value.number / 1016.0f;
PlotSize[1] = 0.75f * PlotSize[0];
}
PlotSizeSet = 1;
break;
case 2 : /* PS length, width ; */
/*
@@ -560,8 +556,6 @@ PS_plot_size(int num_params, /* I - Number of parameters */
PlotSize[0] = 72.0f * params[1].value.number / 1016.0f;
PlotSize[1] = 72.0f * params[0].value.number / 1016.0f;
}
PlotSizeSet = 1;
break;
}
+1 -1
Ver Arquivo
@@ -153,7 +153,7 @@ Outputf(const char *format, /* I - Printf-style string */
landscape = 0;
if (!FitPlot && PlotSizeSet)
if (!FitPlot)
{
/*
* Set the page size for this page...
-1
Ver Arquivo
@@ -122,7 +122,6 @@ VAR int PenMotion VALUE(0), /* 0 = absolute, 1 = relative */
WidthUnits VALUE(0); /* 0 = mm, 1 = proportionate */
VAR float PlotSize[2] VALUE2(2592.0f, 3456.0f);
/* Plot size */
VAR int PlotSizeSet VALUE(0); /* Plot size set? */
VAR int CharFillMode VALUE(0), /* Where to draw labels */
CharPen VALUE(0), /* Pen to use for labels */
CharFont VALUE(0); /* Font to use for labels */
+2 -2
Ver Arquivo
@@ -169,7 +169,7 @@ ImageReadBMP(image_t *img, /* IO - Image */
switch (depth)
{
case 1 : /* Bitmap */
for (x = img->xsize, bit = 128, byte = 0; x > 0; x --)
for (x = img->xsize, bit = 128; x > 0; x --)
{
if (bit == 128)
byte = getc(fp);
@@ -202,7 +202,7 @@ ImageReadBMP(image_t *img, /* IO - Image */
break;
case 4 : /* 16-color */
for (x = img->xsize, bit = 0xf0, temp = 0; x > 0; x --)
for (x = img->xsize, bit = 0xf0; x > 0; x --)
{
/*
* Get a new count as needed...
+8 -1
Ver Arquivo
@@ -320,7 +320,8 @@ ImageRGBToCMYK(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count)/* I - Number of pixels */
{
int c, m, y, k; /* CMYK values */
int c, m, y, k, /* CMYK values */
km; /* Maximum K value */
int cc, cm, cy; /* Calibrated CMY values */
@@ -332,6 +333,9 @@ ImageRGBToCMYK(const ib_t *in, /* I - Input pixels */
y = 255 - *in++;
k = min(c, min(m, y));
if ((km = max(c, max(m, y))) > k)
k = k * k * k / km / km;
c -= k;
m -= k;
y -= k;
@@ -379,6 +383,9 @@ ImageRGBToCMYK(const ib_t *in, /* I - Input pixels */
y = 255 - *in++;
k = min(c, min(m, y));
if ((km = max(c, max(m, y))) > k)
k = k * k / km;
c -= k;
m -= k;
y -= k;
+2 -2
Ver Arquivo
@@ -96,7 +96,7 @@ ImageReadPIX(image_t *img, /* IO - Image */
if (depth == 8)
{
for (count = 0, y = 0, g = 0; y < img->ysize; y ++)
for (count = 0, y = 0; y < img->ysize; y ++)
{
if (img->colorspace == IMAGE_WHITE)
ptr = out;
@@ -139,7 +139,7 @@ ImageReadPIX(image_t *img, /* IO - Image */
}
else
{
for (count = 0, y = 0, r = 0, g = 0, b = 0; y < img->ysize; y ++)
for (count = 0, y = 0; y < img->ysize; y ++)
{
if (img->colorspace == IMAGE_RGB)
ptr = out;
+4 -11
Ver Arquivo
@@ -171,10 +171,10 @@ main(int argc, /* I - Number of command-line arguments */
* single-document, separate-documents-collated-copies, and
* single-document-new-sheet all require collated copies.
*
* separate-documents-uncollated-copies allows for uncollated copies.
* separate-documents-collated-copies allows for uncollated copies.
*/
Collate = strcasecmp(val, "separate-documents-uncollated-copies") != 0;
Collate = strcasecmp(val, "separate-documents-collated-copies") != 0;
}
if ((val = cupsGetOption("Collate", num_options, options)) != NULL &&
@@ -415,13 +415,6 @@ main(int argc, /* I - Number of command-line arguments */
PageWidth = PageLength;
PageLength = xsize;
}
else
{
xinches = xsize;
yinches = ysize;
xprint = (PageRight - PageLeft) / 72.0;
yprint = (PageTop - PageBottom) / 72.0;
}
}
xpages = ceil(xinches / xprint);
@@ -524,7 +517,7 @@ main(int argc, /* I - Number of command-line arguments */
case -1 :
left = PageLeft;
break;
default :
case 0 :
left = (PageWidth - xprint * 72.0) * 0.5;
break;
case 1 :
@@ -537,7 +530,7 @@ main(int argc, /* I - Number of command-line arguments */
case -1 :
top = PageBottom + 72.0 * yprint;
break;
default :
case 0 :
top = (PageLength + yprint * 72.0) * 0.5;
break;
case 1 :
+17 -24
Ver Arquivo
@@ -703,13 +703,6 @@ main(int argc, /* I - Number of command-line arguments */
PageWidth = PageLength;
PageLength = xsize;
}
else
{
xinches = xsize;
yinches = ysize;
xprint = (PageRight - PageLeft) / 72.0;
yprint = (PageTop - PageBottom) / 72.0;
}
}
xpages = ceil(xinches / xprint);
@@ -765,7 +758,7 @@ main(int argc, /* I - Number of command-line arguments */
header.ImagingBoundingBox[0] = PageLeft;
header.ImagingBoundingBox[2] = PageLeft + xprint * 72;
break;
default :
case 0 :
header.ImagingBoundingBox[0] = (PageRight + PageLeft - xprint * 72) / 2;
header.ImagingBoundingBox[2] = (PageRight + PageLeft + xprint * 72) / 2;
break;
@@ -781,7 +774,7 @@ main(int argc, /* I - Number of command-line arguments */
header.ImagingBoundingBox[1] = PageBottom;
header.ImagingBoundingBox[3] = PageBottom + yprint * 72;
break;
default :
case 0 :
header.ImagingBoundingBox[1] = (PageTop + PageBottom - yprint * 72) / 2;
header.ImagingBoundingBox[3] = (PageTop + PageBottom + yprint * 72) / 2;
break;
@@ -799,7 +792,7 @@ main(int argc, /* I - Number of command-line arguments */
header.ImagingBoundingBox[0] = PageBottom;
header.ImagingBoundingBox[2] = PageBottom + yprint * 72;
break;
default :
case 0 :
header.ImagingBoundingBox[0] = (PageTop + PageBottom - yprint * 72) / 2;
header.ImagingBoundingBox[2] = (PageTop + PageBottom + yprint * 72) / 2;
break;
@@ -815,7 +808,7 @@ main(int argc, /* I - Number of command-line arguments */
header.ImagingBoundingBox[1] = PageLeft;
header.ImagingBoundingBox[3] = PageLeft + xprint * 72;
break;
default :
case 0 :
header.ImagingBoundingBox[1] = (PageRight + PageLeft - xprint * 72) / 2;
header.ImagingBoundingBox[3] = (PageRight + PageLeft + xprint * 72) / 2;
break;
@@ -833,7 +826,7 @@ main(int argc, /* I - Number of command-line arguments */
header.ImagingBoundingBox[0] = PageLeft;
header.ImagingBoundingBox[2] = PageLeft + xprint * 72;
break;
default :
case 0 :
header.ImagingBoundingBox[0] = (PageRight + PageLeft - xprint * 72) / 2;
header.ImagingBoundingBox[2] = (PageRight + PageLeft + xprint * 72) / 2;
break;
@@ -849,7 +842,7 @@ main(int argc, /* I - Number of command-line arguments */
header.ImagingBoundingBox[1] = PageBottom;
header.ImagingBoundingBox[3] = PageBottom + yprint * 72;
break;
default :
case 0 :
header.ImagingBoundingBox[1] = (PageTop + PageBottom - yprint * 72) / 2;
header.ImagingBoundingBox[3] = (PageTop + PageBottom + yprint * 72) / 2;
break;
@@ -867,7 +860,7 @@ main(int argc, /* I - Number of command-line arguments */
header.ImagingBoundingBox[0] = PageBottom;
header.ImagingBoundingBox[2] = PageBottom + yprint * 72;
break;
default :
case 0 :
header.ImagingBoundingBox[0] = (PageTop + PageBottom - yprint * 72) / 2;
header.ImagingBoundingBox[2] = (PageTop + PageBottom + yprint * 72) / 2;
break;
@@ -883,7 +876,7 @@ main(int argc, /* I - Number of command-line arguments */
header.ImagingBoundingBox[1] = PageLeft;
header.ImagingBoundingBox[3] = PageLeft + xprint * 72;
break;
default :
case 0 :
header.ImagingBoundingBox[1] = (PageRight + PageLeft - xprint * 72) / 2;
header.ImagingBoundingBox[3] = (PageRight + PageLeft + xprint * 72) / 2;
break;
@@ -1381,7 +1374,7 @@ format_CMY(cups_page_header_t *header, /* I - Page header */
case -1 :
bitoffset = 0;
break;
default :
case 0 :
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
break;
case 1 :
@@ -1756,7 +1749,7 @@ format_CMYK(cups_page_header_t *header, /* I - Page header */
case -1 :
bitoffset = 0;
break;
default :
case 0 :
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
break;
case 1 :
@@ -2125,7 +2118,7 @@ format_K(cups_page_header_t *header, /* I - Page header */
case -1 :
bitoffset = 0;
break;
default :
case 0 :
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
break;
case 1 :
@@ -2246,7 +2239,7 @@ format_KCMY(cups_page_header_t *header, /* I - Page header */
case -1 :
bitoffset = 0;
break;
default :
case 0 :
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
break;
case 1 :
@@ -2657,7 +2650,7 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
case -1 :
bitoffset = 0;
break;
default :
case 0 :
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
break;
case 1 :
@@ -2990,7 +2983,7 @@ format_RGBA(cups_page_header_t *header, /* I - Page header */
case -1 :
bitoffset = 0;
break;
default :
case 0 :
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
break;
case 1 :
@@ -3389,7 +3382,7 @@ format_W(cups_page_header_t *header, /* I - Page header */
case -1 :
bitoffset = 0;
break;
default :
case 0 :
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
break;
case 1 :
@@ -3509,7 +3502,7 @@ format_YMC(cups_page_header_t *header, /* I - Page header */
case -1 :
bitoffset = 0;
break;
default :
case 0 :
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
break;
case 1 :
@@ -3899,7 +3892,7 @@ format_YMCK(cups_page_header_t *header, /* I - Page header */
case -1 :
bitoffset = 0;
break;
default :
case 0 :
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
break;
case 1 :
+2 -2
Ver Arquivo
@@ -162,10 +162,10 @@ main(int argc, /* I - Number of command-line arguments */
* single-document, separate-documents-collated-copies, and
* single-document-new-sheet all require collated copies.
*
* separate-documents-uncollated-copies allows for uncollated copies.
* separate-documents-collated-copies allows for uncollated copies.
*/
Collate = strcasecmp(val, "separate-documents-uncollated-copies") != 0;
Collate = strcasecmp(val, "separate-documents-collated-copies") != 0;
}
if ((val = cupsGetOption("Collate", num_options, options)) != NULL &&
+7 -44
Ver Arquivo
@@ -103,6 +103,11 @@ void OutputRows(const cups_page_header_t *header, int row);
void
Setup(void)
{
/*
* Send a reset sequence.
*/
printf("\033@");
}
@@ -122,9 +127,6 @@ StartPage(const ppd_file_t *ppd, /* I - PPD file */
* Send a reset sequence.
*/
if (ppd->nickname && strstr(ppd->nickname, "OKIDATA") != NULL)
printf("\033{A"); /* Set EPSON emulation mode */
printf("\033@");
/*
@@ -692,8 +694,7 @@ OutputRows(const cups_page_header_t *header, /* I - Page image header */
unsigned i, n; /* Looping vars */
int dot_count, /* Number of bytes to print */
dot_min; /* Minimum number of bytes */
unsigned char *dot_ptr, /* Pointer to print data */
*ptr; /* Current data */
unsigned char *dot_ptr; /* Pointer to print data */
dot_min = DotBytes * DotColumns;
@@ -781,45 +782,7 @@ OutputRows(const cups_page_header_t *header, /* I - Page image header */
* Write the graphics data...
*/
if (header->HWResolution[0] == 120 ||
header->HWResolution[0] == 240)
{
/*
* Need to interleave the dots to avoid hosing the print head...
*/
for (n = dot_count / 2, ptr = dot_ptr; n > 0; n --, ptr += 2)
{
putchar(*ptr);
putchar(0);
}
/*
* Move the head back and print the odd bytes...
*/
putchar(0x1b);
putchar('$');
putchar(i & 255);
putchar(i >> 8);
if (header->HWResolution[0] == 120)
printf("\033*\001"); /* Select bit image */
else
printf("\033*\003"); /* Select bit image */
n = (unsigned)dot_count / DotBytes;
putchar(n & 255);
putchar(n / 256);
for (n = dot_count / 2, ptr = dot_ptr + 1; n > 0; n --, ptr += 2)
{
putchar(0);
putchar(*ptr);
}
}
else
pwrite(dot_ptr, dot_count);
pwrite(dot_ptr, dot_count);
}
/*
-1
Ver Arquivo
@@ -124,7 +124,6 @@ The precondition on the request evaluated to false.
The request is too large for this server to process.
The request URI is too large for this server to process.
The request format is not understood by this server.
426 An upgrade to a secure connection is required. If you are seeing this message in a web browser then it does not support HTTP encryption upgrades.
500 The server has detected an unrecoverable error and cannot process your request.
The requested method is not implemented by this server.
The proxy server received an invalid response from an upstream server.
-1
Ver Arquivo
@@ -124,7 +124,6 @@ Die Voraussetzungen f
Der Auftrag ist zu groß, um auf diesem Server verarbeitet zu werden.
Die URI des Auftrags ist zu groß, um auf diesem Server verarbeitet zu werden.
Das Format des Auftrags wird von diesem Server nicht verstanden.
426 An upgrade to a secure connection is required. If you are seeing this message in a web browser then it does not support HTTP encryption upgrades.
500 Der Server hat einen nicht behebbaren Fehler entdeckt und kann Ihren Auftrag nicht verarbeiten.
Die gewünschte Methode ist auf diesen Server nicht implementiert.
Der Proxy-Server empfing eine unzulässige Antwort von einem höheren Server.
-1
Ver Arquivo
@@ -124,7 +124,6 @@ The precondition on the request evaluated to false.
The request is too large for this server to process.
The request URI is too large for this server to process.
The request format is not understood by this server.
426 An upgrade to a secure connection is required. If you are seeing this message in a web browser then it does not support HTTP encryption upgrades.
500 The server has detected an unrecoverable error and cannot process your request.
The requested method is not implemented by this server.
The proxy server received an invalid response from an upstream server.
-1
Ver Arquivo
@@ -124,7 +124,6 @@ La condici
La petición es demasiado grande para que este servidor procese.
El URI de la petición es demasiado grande para que este servidor procese.
El formato de la petición no es entendido por este servidor.
426 An upgrade to a secure connection is required. If you are seeing this message in a web browser then it does not support HTTP encryption upgrades.
500 El servidor ha detectado un error irrecuperable y no puede procesar su petición.
El método solicitado no es puesto en ejecución por este servidor.
El proxy server recibió una respuesta inválida de un servidor por aguas arriba.
-1
Ver Arquivo
@@ -124,7 +124,6 @@ La condition pr
La demande est trop grande pour ce serveur.
L'Uri de demande est trop grand pour ce serveur.
Le format de demande n'est pas compris par ce serveur.
426 An upgrade to a secure connection is required. If you are seeing this message in a web browser then it does not support HTTP encryption upgrades.
500 Le serveur a détecté une erreur irrémédiable et ne peut pas traiter votre demande.
La méthode demandée n'est pas appliquée par ce serveur.
Le proxy server a reçu une réponse incorrecte d'un serveur ascendant.
-1
Ver Arquivo
@@ -124,7 +124,6 @@ I prerequisiti per la richiesta non sono soddisfatti.
La richiesta è troppo grande per essere elaborata da questo server.
L'URI della richiesta è troppo grande per essere elaborato da questo server.
Il formato della richiesta non è capito da questo server.
426 An upgrade to a secure connection is required. If you are seeing this message in a web browser then it does not support HTTP encryption upgrades.
500 Il server ha rilevato un errore non recuperabile e non può elaborare la vostra richiesta.
Il metodo chiesto non è implementato da questo server.
Il proxy server ha ricevuto una risposta non valida da un server di livello superiore.
+4 -9
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: cupsd.man 1417 2000-10-19 13:16:37Z mike $"
.\" "$Id: cupsd.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" cupsd man page for the Common UNIX Printing System (CUPS).
.\"
@@ -21,23 +21,18 @@
.\" EMail: cups-info@cups.org
.\" WWW: http://www.cups.org
.\"
.TH cupsd 8 "Common UNIX Printing System" "19 October 2000" "Easy Software Products"
.TH cupsd 8 "Common UNIX Printing System" "22 June 2000" "Easy Software Products"
.SH NAME
cupsd \- common unix printing system daemon
.SH SYNOPSIS
.B cupsd
[ \-c
.I config-file
] [ \-f ]
.I [ \-c config-file ]
.SH DESCRIPTION
\fIcupsd\fR is the scheduler for the Common UNIX Printing System. It
implements a printing system based upon the Internet Printing Protocol,
version 1.1. If no options are specified on the command-line then the
default configuration file (usually \fI/etc/cups/cupsd.conf\fR) will be
used.
.PP
The \fI-f\fR option forces \fIcupsd\fR to run in the foreground; the
default is to run in the background as a "daemon".
.SH COMPATIBILITY
\fIcupsd\fR implements all of the required IPP/1.1 attributes and
operations. It also implements several CUPS-specific administation
@@ -52,5 +47,5 @@ http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: cupsd.man 1417 2000-10-19 13:16:37Z mike $".
.\" End of "$Id: cupsd.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+7 -30
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lp.man 1444 2000-11-11 19:56:24Z mike $"
.\" "$Id: lp.man 1231 2000-07-20 17:10:57Z mike $"
.\"
.\" lp/cancel man page for the Common UNIX Printing System (CUPS).
.\"
@@ -21,7 +21,7 @@
.\" EMail: cups-info@cups.org
.\" WWW: http://www.cups.org
.\"
.TH lp 1 "Common UNIX Printing System" "11 November 2000" "Easy Software Products"
.TH lp 1 "Common UNIX Printing System" "9 September 1999" "Easy Software Products"
.SH NAME
lp \- print files
.br
@@ -30,10 +30,8 @@ cancel \- cancel jobs
.B lp
[ \-c ] [ \-d
.I destination
] [ \-h
] [ -h
.I server
] [ \-i
.I job-id
] [ \-m ] [ \-n
.I num-copies
[ \-o
@@ -42,13 +40,9 @@ cancel \- cancel jobs
.I priority
] [ \-s ] [ \-t
.I title
] [ \-H
.I handling
] [ \-P
.I page-list
] [
.I file(s)
]
]
.br
.B cancel
[ \-a ] [ -h
@@ -77,13 +71,9 @@ Prints files to the named printer.
Specifies the print server hostname. The default is "localhost" or the value
of the CUPS_SERVER environment variable.
.TP 5
\-i \fIjob-id\fR
.br
Specifies an existing job to modify.
.TP 5
\-m
.br
Send email when the job is completed (not supported CUPS 1.1.)
Send email when the job is completed (ignored in CUPS 1.0.)
.TP 5
\-n \fIcopies\fR
.br
@@ -105,25 +95,12 @@ Do not report the resulting job IDs (silent mode.)
\-t \fIname\fR
.br
Sets the job name.
.TP 5
\-H \fIhandling\fR
.br
Specifies when the job should be printed. A value of
\fIimmediate\fR will print the file immediately, a value of
\fIhold\fR will hold the job indefinitely, and a time value
(HH:MM) will hold the job until the specified time. Use a value
of \fIresume\fR with the \fI-i\fR option to resume a held job.
.TP 5
\-P \fIpage-list\fR
.br
Specifies which pages to print in the document. The list can contain a
list of numbers and ranges (#-#) separated by commas (e.g. 1,3-5,16).
.SH COMPATIBILITY
Unlike the System V printing system, CUPS allows printer names to contain
any printable character except SPACE and TAB. Also, printer and class names are
\fBnot\fR case-sensitive.
.LP
The "m" option is not functional in CUPS 1.1.
The "m" option is not functional in CUPS 1.0.
.SH SEE ALSO
lpstat(1),
CUPS Software Users Manual,
@@ -131,5 +108,5 @@ http://localhost:631/documentation.html
.SH COPYRIGHT
Copyright 1993-2000 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lp.man 1444 2000-11-11 19:56:24Z mike $".
.\" End of "$Id: lp.man 1231 2000-07-20 17:10:57Z mike $".
.\"
+31364
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+13 -30
Ver Arquivo
@@ -27,24 +27,21 @@
Catalog::Catalog(Object *catDict) {
Object pagesDict;
Object obj, obj2;
int numPages0;
int i;
ok = gTrue;
pages = NULL;
pageRefs = NULL;
numPages = pagesSize = 0;
numPages = 0;
if (!catDict->isDict()) {
if (!catDict->isDict("Catalog")) {
error(-1, "Catalog object is wrong type (%s)", catDict->getTypeName());
goto err1;
}
// read page tree
catDict->dictLookup("Pages", &pagesDict);
// This should really be isDict("Pages"), but I've seen at least one
// PDF file where the /Type entry is missing.
if (!pagesDict.isDict()) {
if (!pagesDict.isDict("Pages")) {
error(-1, "Top-level pages object is wrong type (%s)",
pagesDict.getTypeName());
goto err2;
@@ -55,19 +52,16 @@ Catalog::Catalog(Object *catDict) {
obj.getTypeName());
goto err3;
}
pagesSize = numPages0 = obj.getInt();
numPages = obj.getInt();
obj.free();
pages = (Page **)gmalloc(pagesSize * sizeof(Page *));
pageRefs = (Ref *)gmalloc(pagesSize * sizeof(Ref));
for (i = 0; i < pagesSize; ++i) {
pages = (Page **)gmalloc(numPages * sizeof(Page *));
pageRefs = (Ref *)gmalloc(numPages * sizeof(Ref));
for (i = 0; i < numPages; ++i) {
pages[i] = NULL;
pageRefs[i].num = -1;
pageRefs[i].gen = -1;
}
numPages = readPageTree(pagesDict.getDict(), NULL, 0);
if (numPages != numPages0) {
error(-1, "Page count in top-level pages object is incorrect");
}
readPageTree(pagesDict.getDict(), NULL, 0);
pagesDict.free();
// read named destination dictionary
@@ -106,10 +100,9 @@ Catalog::~Catalog() {
int i;
if (pages) {
for (i = 0; i < pagesSize; ++i) {
if (pages[i]) {
for (i = 0; i < numPages; ++i) {
if (pages[i])
delete pages[i];
}
}
gfree(pages);
gfree(pageRefs);
@@ -127,7 +120,7 @@ int Catalog::readPageTree(Dict *pagesDict, PageAttrs *attrs, int start) {
Object kidRef;
PageAttrs *attrs1, *attrs2;
Page *page;
int i, j;
int i;
attrs1 = new PageAttrs(attrs, pagesDict);
pagesDict->lookup("Kids", &kids);
@@ -145,16 +138,6 @@ int Catalog::readPageTree(Dict *pagesDict, PageAttrs *attrs, int start) {
++start;
goto err3;
}
if (start >= pagesSize) {
pagesSize += 32;
pages = (Page **)grealloc(pages, pagesSize * sizeof(Page *));
pageRefs = (Ref *)grealloc(pageRefs, pagesSize * sizeof(Ref));
for (j = pagesSize - 32; j < pagesSize; ++j) {
pages[j] = NULL;
pageRefs[j].num = -1;
pageRefs[j].gen = -1;
}
}
pages[start] = page;
kids.arrayGetNF(i, &kidRef);
if (kidRef.isRef()) {
@@ -163,8 +146,8 @@ int Catalog::readPageTree(Dict *pagesDict, PageAttrs *attrs, int start) {
}
kidRef.free();
++start;
// This should really be isDict("Pages"), but I've seen at least one
// PDF file where the /Type entry is missing.
//~ found one PDF file where a Pages object is missing the /Type entry
// } else if (kid.isDict("Pages")) {
} else if (kid.isDict()) {
if ((start = readPageTree(kid.getDict(), attrs1, start)) < 0)
goto err2;
-4
Ver Arquivo
@@ -41,9 +41,6 @@ public:
// Get a page.
Page *getPage(int i) { return pages[i-1]; }
// Get the reference for a page object.
Ref *getPageRef(int i) { return &pageRefs[i-1]; }
// Return base URI, or NULL if none.
GString *getBaseURI() { return baseURI; }
@@ -60,7 +57,6 @@ private:
Page **pages; // array of pages
Ref *pageRefs; // object ID for each page
int numPages; // number of pages
int pagesSize; // size of pages array
Object dests; // named destination dictionary
Object nameTree; // name tree
GString *baseURI; // base URI for URI-type links
-304
Ver Arquivo
@@ -1,304 +0,0 @@
//========================================================================
//
// Decrypt.cc
//
// Copyright 1996 Derek B. Noonburg
//
//========================================================================
#ifdef __GNUC__
#pragma implementation
#endif
#include "gmem.h"
#include "Decrypt.h"
static void rc4InitKey(Guchar *key, int keyLen, Guchar *state);
static Guchar rc4DecryptByte(Guchar *state, Guchar *x, Guchar *y, Guchar c);
static void md5(Guchar *msg, int msgLen, Guchar *digest);
static Guchar passwordPad[32] = {
0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41,
0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08,
0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80,
0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a
};
//------------------------------------------------------------------------
// Decrypt
//------------------------------------------------------------------------
Decrypt::Decrypt(Guchar *fileKey, int objNum, int objGen) {
// construct object key
objKey[0] = fileKey[0];
objKey[1] = fileKey[1];
objKey[2] = fileKey[2];
objKey[3] = fileKey[3];
objKey[4] = fileKey[4];
objKey[5] = objNum & 0xff;
objKey[6] = (objNum >> 8) & 0xff;
objKey[7] = (objNum >> 16) & 0xff;
objKey[8] = objGen & 0xff;
objKey[9] = (objGen >> 8) & 0xff;
md5(objKey, 10, objKey);
// set up for decryption
x = y = 0;
rc4InitKey(objKey, 10, state);
}
void Decrypt::reset() {
x = y = 0;
rc4InitKey(objKey, 10, state);
}
Guchar Decrypt::decryptByte(Guchar c) {
return rc4DecryptByte(state, &x, &y, c);
}
GBool Decrypt::makeFileKey(GString *ownerKey, GString *userKey,
int permissions, GString *fileID,
GString *userPassword, Guchar *fileKey) {
Guchar *buf;
Guchar userTest[32];
Guchar fState[256];
Guchar fx, fy;
int len, i;
GBool ok;
// generate file key
buf = (Guchar *)gmalloc(68 + fileID->getLength());
if (userPassword) {
len = userPassword->getLength();
if (len < 32) {
memcpy(buf, userPassword->getCString(), len);
memcpy(buf + len, passwordPad, 32 - len);
} else {
memcpy(buf, userPassword->getCString(), 32);
}
} else {
memcpy(buf, passwordPad, 32);
}
memcpy(buf + 32, ownerKey->getCString(), 32);
buf[64] = permissions & 0xff;
buf[65] = (permissions >> 8) & 0xff;
buf[66] = (permissions >> 16) & 0xff;
buf[67] = (permissions >> 24) & 0xff;
memcpy(buf + 68, fileID->getCString(), fileID->getLength());
md5(buf, 68 + fileID->getLength(), fileKey);
// test user key
fx = fy = 0;
rc4InitKey(fileKey, 5, fState);
for (i = 0; i < 32; ++i) {
userTest[i] = rc4DecryptByte(fState, &fx, &fy, userKey->getChar(i));
}
ok = memcmp(userTest, passwordPad, 32) == 0;
gfree(buf);
return ok;
}
//------------------------------------------------------------------------
// RC4-compatible decryption
//------------------------------------------------------------------------
static void rc4InitKey(Guchar *key, int keyLen, Guchar *state) {
Guchar index1, index2;
Guchar t;
int i;
for (i = 0; i < 256; ++i)
state[i] = i;
index1 = index2 = 0;
for (i = 0; i < 256; ++i) {
index2 = (key[index1] + state[i] + index2) % 256;
t = state[i];
state[i] = state[index2];
state[index2] = t;
index1 = (index1 + 1) % keyLen;
}
}
static Guchar rc4DecryptByte(Guchar *state, Guchar *x, Guchar *y, Guchar c) {
Guchar x1, y1, tx, ty;
x1 = *x = (*x + 1) % 256;
y1 = *y = (state[*x] + *y) % 256;
tx = state[x1];
ty = state[y1];
state[x1] = ty;
state[y1] = tx;
return c ^ state[(tx + ty) % 256];
}
//------------------------------------------------------------------------
// MD5 message digest
//------------------------------------------------------------------------
static inline Gulong rotateLeft(Gulong x, int r) {
x &= 0xffffffff;
return ((x << r) | (x >> (32 - r))) & 0xffffffff;
}
static inline Gulong md5Round1(Gulong a, Gulong b, Gulong c, Gulong d,
Gulong Xk, Gulong s, Gulong Ti) {
return b + rotateLeft((a + ((b & c) | (~b & d)) + Xk + Ti), s);
}
static inline Gulong md5Round2(Gulong a, Gulong b, Gulong c, Gulong d,
Gulong Xk, Gulong s, Gulong Ti) {
return b + rotateLeft((a + ((b & d) | (c & ~d)) + Xk + Ti), s);
}
static inline Gulong md5Round3(Gulong a, Gulong b, Gulong c, Gulong d,
Gulong Xk, Gulong s, Gulong Ti) {
return b + rotateLeft((a + (b ^ c ^ d) + Xk + Ti), s);
}
static inline Gulong md5Round4(Gulong a, Gulong b, Gulong c, Gulong d,
Gulong Xk, Gulong s, Gulong Ti) {
return b + rotateLeft((a + (c ^ (b | ~d)) + Xk + Ti), s);
}
static void md5(Guchar *msg, int msgLen, Guchar *digest) {
Gulong x[16];
Gulong a, b, c, d, aa, bb, cc, dd;
int n64;
int i, j, k;
// compute number of 64-byte blocks
// (length + pad byte (0x80) + 8 bytes for length)
n64 = (msgLen + 1 + 8 + 63) / 64;
// initialize a, b, c, d
a = 0x67452301;
b = 0xefcdab89;
c = 0x98badcfe;
d = 0x10325476;
// loop through blocks
k = 0;
for (i = 0; i < n64; ++i) {
// grab a 64-byte block
for (j = 0; j < 16 && k < msgLen - 3; ++j, k += 4)
x[j] = (((((msg[k+3] << 8) + msg[k+2]) << 8) + msg[k+1]) << 8) + msg[k];
if (i == n64 - 1) {
if (k == msgLen - 3)
x[j] = 0x80000000 + (((msg[k+2] << 8) + msg[k+1]) << 8) + msg[k];
else if (k == msgLen - 2)
x[j] = 0x800000 + (msg[k+1] << 8) + msg[k];
else if (k == msgLen - 1)
x[j] = 0x8000 + msg[k];
else
x[j] = 0x80;
++j;
while (j < 16)
x[j++] = 0;
x[14] = msgLen << 3;
}
// save a, b, c, d
aa = a;
bb = b;
cc = c;
dd = d;
// round 1
a = md5Round1(a, b, c, d, x[0], 7, 0xd76aa478);
d = md5Round1(d, a, b, c, x[1], 12, 0xe8c7b756);
c = md5Round1(c, d, a, b, x[2], 17, 0x242070db);
b = md5Round1(b, c, d, a, x[3], 22, 0xc1bdceee);
a = md5Round1(a, b, c, d, x[4], 7, 0xf57c0faf);
d = md5Round1(d, a, b, c, x[5], 12, 0x4787c62a);
c = md5Round1(c, d, a, b, x[6], 17, 0xa8304613);
b = md5Round1(b, c, d, a, x[7], 22, 0xfd469501);
a = md5Round1(a, b, c, d, x[8], 7, 0x698098d8);
d = md5Round1(d, a, b, c, x[9], 12, 0x8b44f7af);
c = md5Round1(c, d, a, b, x[10], 17, 0xffff5bb1);
b = md5Round1(b, c, d, a, x[11], 22, 0x895cd7be);
a = md5Round1(a, b, c, d, x[12], 7, 0x6b901122);
d = md5Round1(d, a, b, c, x[13], 12, 0xfd987193);
c = md5Round1(c, d, a, b, x[14], 17, 0xa679438e);
b = md5Round1(b, c, d, a, x[15], 22, 0x49b40821);
// round 2
a = md5Round2(a, b, c, d, x[1], 5, 0xf61e2562);
d = md5Round2(d, a, b, c, x[6], 9, 0xc040b340);
c = md5Round2(c, d, a, b, x[11], 14, 0x265e5a51);
b = md5Round2(b, c, d, a, x[0], 20, 0xe9b6c7aa);
a = md5Round2(a, b, c, d, x[5], 5, 0xd62f105d);
d = md5Round2(d, a, b, c, x[10], 9, 0x02441453);
c = md5Round2(c, d, a, b, x[15], 14, 0xd8a1e681);
b = md5Round2(b, c, d, a, x[4], 20, 0xe7d3fbc8);
a = md5Round2(a, b, c, d, x[9], 5, 0x21e1cde6);
d = md5Round2(d, a, b, c, x[14], 9, 0xc33707d6);
c = md5Round2(c, d, a, b, x[3], 14, 0xf4d50d87);
b = md5Round2(b, c, d, a, x[8], 20, 0x455a14ed);
a = md5Round2(a, b, c, d, x[13], 5, 0xa9e3e905);
d = md5Round2(d, a, b, c, x[2], 9, 0xfcefa3f8);
c = md5Round2(c, d, a, b, x[7], 14, 0x676f02d9);
b = md5Round2(b, c, d, a, x[12], 20, 0x8d2a4c8a);
// round 3
a = md5Round3(a, b, c, d, x[5], 4, 0xfffa3942);
d = md5Round3(d, a, b, c, x[8], 11, 0x8771f681);
c = md5Round3(c, d, a, b, x[11], 16, 0x6d9d6122);
b = md5Round3(b, c, d, a, x[14], 23, 0xfde5380c);
a = md5Round3(a, b, c, d, x[1], 4, 0xa4beea44);
d = md5Round3(d, a, b, c, x[4], 11, 0x4bdecfa9);
c = md5Round3(c, d, a, b, x[7], 16, 0xf6bb4b60);
b = md5Round3(b, c, d, a, x[10], 23, 0xbebfbc70);
a = md5Round3(a, b, c, d, x[13], 4, 0x289b7ec6);
d = md5Round3(d, a, b, c, x[0], 11, 0xeaa127fa);
c = md5Round3(c, d, a, b, x[3], 16, 0xd4ef3085);
b = md5Round3(b, c, d, a, x[6], 23, 0x04881d05);
a = md5Round3(a, b, c, d, x[9], 4, 0xd9d4d039);
d = md5Round3(d, a, b, c, x[12], 11, 0xe6db99e5);
c = md5Round3(c, d, a, b, x[15], 16, 0x1fa27cf8);
b = md5Round3(b, c, d, a, x[2], 23, 0xc4ac5665);
// round 4
a = md5Round4(a, b, c, d, x[0], 6, 0xf4292244);
d = md5Round4(d, a, b, c, x[7], 10, 0x432aff97);
c = md5Round4(c, d, a, b, x[14], 15, 0xab9423a7);
b = md5Round4(b, c, d, a, x[5], 21, 0xfc93a039);
a = md5Round4(a, b, c, d, x[12], 6, 0x655b59c3);
d = md5Round4(d, a, b, c, x[3], 10, 0x8f0ccc92);
c = md5Round4(c, d, a, b, x[10], 15, 0xffeff47d);
b = md5Round4(b, c, d, a, x[1], 21, 0x85845dd1);
a = md5Round4(a, b, c, d, x[8], 6, 0x6fa87e4f);
d = md5Round4(d, a, b, c, x[15], 10, 0xfe2ce6e0);
c = md5Round4(c, d, a, b, x[6], 15, 0xa3014314);
b = md5Round4(b, c, d, a, x[13], 21, 0x4e0811a1);
a = md5Round4(a, b, c, d, x[4], 6, 0xf7537e82);
d = md5Round4(d, a, b, c, x[11], 10, 0xbd3af235);
c = md5Round4(c, d, a, b, x[2], 15, 0x2ad7d2bb);
b = md5Round4(b, c, d, a, x[9], 21, 0xeb86d391);
// increment a, b, c, d
a += aa;
b += bb;
c += cc;
d += dd;
}
// break digest into bytes
digest[0] = a & 0xff;
digest[1] = (a >>= 8) & 0xff;
digest[2] = (a >>= 8) & 0xff;
digest[3] = (a >>= 8) & 0xff;
digest[4] = b & 0xff;
digest[5] = (b >>= 8) & 0xff;
digest[6] = (b >>= 8) & 0xff;
digest[7] = (b >>= 8) & 0xff;
digest[8] = c & 0xff;
digest[9] = (c >>= 8) & 0xff;
digest[10] = (c >>= 8) & 0xff;
digest[11] = (c >>= 8) & 0xff;
digest[12] = d & 0xff;
digest[13] = (d >>= 8) & 0xff;
digest[14] = (d >>= 8) & 0xff;
digest[15] = (d >>= 8) & 0xff;
}
-49
Ver Arquivo
@@ -1,49 +0,0 @@
//========================================================================
//
// Decrypt.h
//
// Copyright 1996 Derek B. Noonburg
//
//========================================================================
#ifndef DECRYPT_H
#define DECRYPT_H
#ifdef __GNUC__
#pragma interface
#endif
#include "gtypes.h"
#include "GString.h"
//------------------------------------------------------------------------
// Decrypt
//------------------------------------------------------------------------
class Decrypt {
public:
// Initialize the decryptor object.
Decrypt(Guchar *fileKey, int objNum, int objGen);
// Reset decryption.
void reset();
// Decrypt one byte.
Guchar decryptByte(Guchar c);
// Generate a file key. The <fileKey> buffer must have space for
// at least 16 bytes. Checks user key and returns gTrue if okay.
// <userPassword> may be NULL.
static GBool makeFileKey(GString *ownerKey, GString *userKey,
int permissions, GString *fileID,
GString *userPassword, Guchar *fileKey);
private:
Guchar objKey[16];
Guchar state[256];
Guchar x, y;
};
#endif
+3
Ver Arquivo
@@ -17,6 +17,9 @@
#include "Params.h"
#include "Error.h"
// Send error messages to /dev/tty instead of stderr.
GBool errorsToTTY = gFalse;
FILE *errFile;
GBool errQuiet;
+5 -5
Ver Arquivo
@@ -22,12 +22,12 @@
//------------------------------------------------------------------------
inline int FontEncoding::hash(char *name) {
Guint h;
int h;
h = (Guint)name[0] & 0xff;
if (h && name[1])
h = h * 61 + ((Guint)name[1] & 0xff);
return (int)(h % (Guint)fontEncHashSize);
h = name[0];
if (name[1])
h = h * 61 + name[1];
return h % fontEncHashSize;
}
FontEncoding::FontEncoding() {
+6 -10
Ver Arquivo
@@ -115,7 +115,7 @@ Type1FontFile::Type1FontFile(char *file, int len) {
Type1FontFile::~Type1FontFile() {
if (name)
gfree(name);
delete name;
if (encoding && freeEnc)
delete encoding;
}
@@ -307,7 +307,7 @@ Type1CFontFile::Type1CFontFile(char *file, int len) {
Type1CFontFile::~Type1CFontFile() {
if (name)
gfree(name);
delete name;
if (encoding && freeEnc)
delete encoding;
}
@@ -1596,13 +1596,11 @@ void Type1CFontConverter::getDeltaInt(char *buf, char *name, double *op,
int n) {
int x, i;
sprintf(buf, "/%s [", name);
buf += strlen(buf);
buf += sprintf(buf, "/%s [", name);
x = 0;
for (i = 0; i < n; ++i) {
x += (int)op[i];
sprintf(buf, "%s%d", i > 0 ? " " : "", x);
buf += strlen(buf);
buf += sprintf(buf, "%s%d", i > 0 ? " " : "", x);
}
sprintf(buf, "] def\n");
}
@@ -1612,13 +1610,11 @@ void Type1CFontConverter::getDeltaReal(char *buf, char *name, double *op,
double x;
int i;
sprintf(buf, "/%s [", name);
buf += strlen(buf);
buf += sprintf(buf, "/%s [", name);
x = 0;
for (i = 0; i < n; ++i) {
x += op[i];
sprintf(buf, "%s%g", i > 0 ? " " : "", x);
buf += strlen(buf);
buf += sprintf(buf, "%s%g", i > 0 ? " " : "", x);
}
sprintf(buf, "] def\n");
}
-116
Ver Arquivo
@@ -1,116 +0,0 @@
//========================================================================
//
// FormWidget.cc
//
// Copyright 2000 Derek B. Noonburg
//
//========================================================================
#ifdef __GNUC__
#pragma implementation
#endif
#include "gmem.h"
#include "Object.h"
#include "Gfx.h"
#include "FormWidget.h"
//------------------------------------------------------------------------
// FormWidget
//------------------------------------------------------------------------
FormWidget::FormWidget(Dict *dict) {
Object obj1, obj2;
ok = gFalse;
if (dict->lookup("AP", &obj1)->isDict()) {
obj1.dictLookupNF("N", &obj2);
//~ this doesn't handle appearances with multiple states --
//~ need to look at AS key to get state and then get the
//~ corresponding entry from the N dict
if (obj2.isRef()) {
obj2.copy(&appearance);
ok = gTrue;
}
obj2.free();
}
obj1.free();
if (dict->lookup("Rect", &obj1)->isArray() &&
obj1.arrayGetLength() == 4) {
//~ should check object types here
obj1.arrayGet(0, &obj2);
xMin = obj2.getNum();
obj2.free();
obj1.arrayGet(1, &obj2);
yMin = obj2.getNum();
obj2.free();
obj1.arrayGet(2, &obj2);
xMax = obj2.getNum();
obj2.free();
obj1.arrayGet(3, &obj2);
yMax = obj2.getNum();
obj2.free();
}
obj1.free();
}
FormWidget::~FormWidget() {
appearance.free();
}
void FormWidget::draw(Gfx *gfx) {
Object obj;
if (appearance.fetch(&obj)->isStream()) {
gfx->doWidgetForm(&obj, xMin, yMin);
}
obj.free();
}
//------------------------------------------------------------------------
// FormWidgets
//------------------------------------------------------------------------
FormWidgets::FormWidgets(Object *annots) {
FormWidget *widget;
Object obj1, obj2;
int size;
int i;
widgets = NULL;
size = 0;
nWidgets = 0;
if (annots->isArray()) {
for (i = 0; i < annots->arrayGetLength(); ++i) {
if (annots->arrayGet(i, &obj1)->isDict()) {
if (obj1.dictLookup("Subtype", &obj2)->isName("Widget")) {
widget = new FormWidget(obj1.getDict());
if (widget->isOk()) {
if (nWidgets >= size) {
size += 16;
widgets = (FormWidget **)grealloc(widgets,
size * sizeof(FormWidget *));
}
widgets[nWidgets++] = widget;
} else {
delete widget;
}
}
obj2.free();
}
obj1.free();
}
}
}
FormWidgets::~FormWidgets() {
int i;
for (i = 0; i < nWidgets; ++i) {
delete widgets[i];
}
gfree(widgets);
}
-65
Ver Arquivo
@@ -1,65 +0,0 @@
//========================================================================
//
// FormWidget.h
//
// Copyright 2000 Derek B. Noonburg
//
//========================================================================
#ifndef FORMWIDGET_H
#define FORMWIDGET_H
#ifdef __GNUC__
#pragma interface
#endif
class Gfx;
//------------------------------------------------------------------------
// FormWidget
//------------------------------------------------------------------------
class FormWidget {
public:
FormWidget(Dict *dict);
~FormWidget();
GBool isOk() { return ok; }
void draw(Gfx *gfx);
// Get appearance object.
Object *getAppearance(Object *obj) { return appearance.fetch(obj); }
private:
Object appearance; // a reference to the Form XObject stream
// for the normal appearance
double xMin, yMin, // widget rectangle
xMax, yMax;
GBool ok;
};
//------------------------------------------------------------------------
// FormWidgets
//------------------------------------------------------------------------
class FormWidgets {
public:
// Extract widgets from array of annotations.
FormWidgets(Object *annots);
~FormWidgets();
// Iterate through list of widgets.
int getNumWidgets() { return nWidgets; }
FormWidget *getWidget(int i) { return widgets[i]; }
private:
FormWidget **widgets;
int nWidgets;
};
#endif
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+6 -33
Ver Arquivo
@@ -16,7 +16,6 @@
#include <stddef.h>
#include <string.h>
#include <ctype.h>
#include "gtypes.h"
#include "GString.h"
static inline int size(int len) {
@@ -45,7 +44,7 @@ GString::GString() {
s[0] = '\0';
}
GString::GString(const char *s1) {
GString::GString(char *s1) {
int n = strlen(s1);
s = NULL;
@@ -53,7 +52,7 @@ GString::GString(const char *s1) {
memcpy(s, s1, n + 1);
}
GString::GString(const char *s1, int length1) {
GString::GString(char *s1, int length1) {
s = NULL;
resize(length = length1);
memcpy(s, s1, length * sizeof(char));
@@ -76,32 +75,6 @@ GString::GString(GString *str1, GString *str2) {
memcpy(s + n1, str2->getCString(), n2 + 1);
}
GString *GString::fromInt(int x) {
char buf[24]; // enough space for 64-bit ints plus a little extra
GBool neg;
Guint y;
int i;
i = 24;
if (x == 0) {
buf[--i] = '0';
} else {
if ((neg = x < 0)) {
y = (Guint)-x;
} else {
y = (Guint)x;
}
while (i > 0 && y > 0) {
buf[--i] = '0' + y % 10;
y /= 10;
}
if (neg && i > 0) {
buf[--i] = '-';
}
}
return new GString(buf + i, 24 - i);
}
GString::~GString() {
delete[] s;
}
@@ -128,7 +101,7 @@ GString *GString::append(GString *str) {
return this;
}
GString *GString::append(const char *str) {
GString *GString::append(char *str) {
int n = strlen(str);
resize(length + n);
@@ -137,7 +110,7 @@ GString *GString::append(const char *str) {
return this;
}
GString *GString::append(const char *str, int length1) {
GString *GString::append(char *str, int length1) {
resize(length + length1);
memcpy(s + length, str, length1);
length += length1;
@@ -168,7 +141,7 @@ GString *GString::insert(int i, GString *str) {
return this;
}
GString *GString::insert(int i, const char *str) {
GString *GString::insert(int i, char *str) {
int n = strlen(str);
int j;
@@ -180,7 +153,7 @@ GString *GString::insert(int i, const char *str) {
return this;
}
GString *GString::insert(int i, const char *str, int length1) {
GString *GString::insert(int i, char *str, int length1) {
int j;
resize(length + length1);
+8 -11
Ver Arquivo
@@ -24,11 +24,11 @@ public:
GString();
// Create a string from a C string.
GString(const char *s1);
GString(char *s1);
// Create a string from <length1> chars at <s1>. This string
// can contain null characters.
GString (const char *s1, int length1);
GString (char *s1, int length1);
// Copy a string.
GString(GString *str);
@@ -37,9 +37,6 @@ public:
// Concatenate two strings.
GString(GString *str1, GString *str2);
// Convert an integer to a string.
static GString *fromInt(int x);
// Destructor.
~GString();
@@ -61,14 +58,14 @@ public:
// Append a character or string.
GString *append(char c);
GString *append(GString *str);
GString *append(const char *str);
GString *append(const char *str, int length1);
GString *append(char *str);
GString *append(char *str, int length1);
// Insert a character or string.
GString *insert(int i, char c);
GString *insert(int i, GString *str);
GString *insert(int i, const char *str);
GString *insert(int i, const char *str, int length1);
GString *insert(int i, char *str);
GString *insert(int i, char *str, int length1);
// Delete a character or range of characters.
GString *del(int i, int n = 1);
@@ -81,8 +78,8 @@ public:
// These functions assume the strings do not contain null characters.
int cmp(GString *str) { return strcmp(s, str->getCString()); }
int cmpN(GString *str, int n) { return strncmp(s, str->getCString(), n); }
int cmp(const char *s1) { return strcmp(s, s1); }
int cmpN(const char *s1, int n) { return strncmp(s, s1, n); }
int cmp(char *s1) { return strcmp(s, s1); }
int cmpN(char *s1, int n) { return strncmp(s, s1, n); }
private:
+28 -163
Ver Arquivo
@@ -188,10 +188,6 @@ Operator Gfx::opTab[] = {
#define numOps (sizeof(opTab) / sizeof(Operator))
//------------------------------------------------------------------------
GBool printCommands = gFalse;
//------------------------------------------------------------------------
// Gfx
//------------------------------------------------------------------------
@@ -292,8 +288,6 @@ void Gfx::display(Object *obj) {
}
parser = new Parser(new Lexer(obj));
go();
delete parser;
parser = NULL;
}
void Gfx::go() {
@@ -370,6 +364,8 @@ void Gfx::go() {
out->dump();
// clean up
if (parser)
delete parser;
if (printCommands)
fflush(stdout);
}
@@ -450,7 +446,7 @@ GBool Gfx::checkArg(Object *arg, TchkType type) {
}
int Gfx::getPos() {
return parser ? parser->getPos() : -1;
return parser->getPos();
}
GfxFont *Gfx::lookupFont(char *name) {
@@ -506,12 +502,6 @@ void Gfx::opSave(Object args[], int numArgs) {
void Gfx::opRestore(Object args[], int numArgs) {
state = state->restore();
out->restoreState(state);
// Some PDF producers (Macromedia FreeHand) generate a save (q) and
// restore (Q) inside a path sequence. The PDF spec seems to imply
// that this is illegal. Calling clearPath() here implements the
// behavior apparently expected by this software.
state->clearPath();
}
void Gfx::opConcat(Object args[], int numArgs) {
@@ -1107,18 +1097,8 @@ void Gfx::doShowText(GString *s) {
Guchar c8;
int c16;
GString *s16;
char s16a[2];
int m, n;
#if 0 //~type3
double dx, dy, width, height, w, h, x, y;
double oldCTM[6], newCTM[6];
double *mat;
Object charProc;
Parser *oldParser;
int i;
#else
double dx, dy, width, height, w, h, sWidth, sHeight;
#endif
double dx, dy, width, height, w, h;
if (fontChanged) {
out->updateFont(state);
@@ -1133,9 +1113,8 @@ void Gfx::doShowText(GString *s) {
out->beginString(state, s);
s16 = NULL;
} else {
s16 = new GString();
s16 = new GString(" ");
}
sWidth = sHeight = 0;
state->textTransformDelta(0, state->getRise(), &dx, &dy);
p = (Guchar *)s->getCString();
n = s->getLength();
@@ -1157,78 +1136,22 @@ void Gfx::doShowText(GString *s) {
if (out->useDrawChar()) {
out->drawChar16(state, state->getCurX() + dx, state->getCurY() + dy,
w, h, c16);
state->textShift(width, height);
} else {
s16a[0] = (char)(c16 >> 8);
s16a[1] = (char)c16;
s16->append(s16a, 2);
sWidth += w;
sHeight += h;
s16->setChar(0, (char)(c16 >> 8));
s16->setChar(1, (char)c16);
out->drawString16(state, s16);
}
state->textShift(width, height);
n -= m;
p += m;
}
if (out->useDrawChar()) {
if (out->useDrawChar())
out->endString(state);
} else {
out->drawString16(state, s16);
else
delete s16;
state->textShift(sWidth, sHeight);
}
//----- 8-bit font
} else {
#if 0 //~type3
//~ also check out->renderType3()
if (font->getType() == fontType3) {
out->beginString(state, s);
mat = state->getCTM();
for (i = 0; i < 6; ++i) {
oldCTM[i] = mat[i];
}
mat = state->getTextMat();
newCTM[0] = mat[0] * oldCTM[0] + mat[1] * oldCTM[2];
newCTM[1] = mat[0] * oldCTM[1] + mat[1] * oldCTM[3];
newCTM[2] = mat[2] * oldCTM[0] + mat[3] * oldCTM[2];
newCTM[3] = mat[2] * oldCTM[1] + mat[3] * oldCTM[3];
mat = font->getFontMatrix();
newCTM[0] = mat[0] * newCTM[0] + mat[1] * newCTM[2];
newCTM[1] = mat[0] * newCTM[1] + mat[1] * newCTM[3];
newCTM[2] = mat[2] * newCTM[0] + mat[3] * newCTM[2];
newCTM[3] = mat[2] * newCTM[1] + mat[3] * newCTM[3];
newCTM[0] *= state->getFontSize();
newCTM[3] *= state->getFontSize();
newCTM[0] *= state->getHorizScaling();
newCTM[2] *= state->getHorizScaling();
state->textTransformDelta(0, state->getRise(), &dx, &dy);
oldParser = parser;
for (p = (Guchar *)s->getCString(), n = s->getLength(); n; ++p, --n) {
c8 = *p;
font->getCharProc(c8, &charProc);
state->transform(state->getCurX() + dx, state->getCurY() + dy, &x, &y);
state->setCTM(newCTM[0], newCTM[1], newCTM[2], newCTM[3], x, y);
//~ out->updateCTM(???)
if (charProc.isStream()) {
display(&charProc);
} else {
error(getPos(), "Missing or bad Type3 CharProc entry");
}
state->setCTM(oldCTM[0], oldCTM[1], oldCTM[2],
oldCTM[3], oldCTM[4], oldCTM[5]);
//~ out->updateCTM(???) - use gsave/grestore instead?
charProc.free();
width = state->getFontSize() * state->getHorizScaling() *
font->getWidth(c8) +
state->getCharSpace();
if (c8 == ' ') {
width += state->getWordSpace();
}
state->textShift(width);
}
parser = oldParser;
out->endString(state);
} else
#endif
if (out->useDrawChar()) {
out->beginString(state, s);
state->textTransformDelta(0, state->getRise(), &dx, &dy);
@@ -1292,23 +1215,14 @@ int Gfx::getNextChar16(GfxFontEncoding16 *enc, Guchar *p, int *c16) {
void Gfx::opXObject(Object args[], int numArgs) {
Object obj1, obj2;
#if OPI_SUPPORT
Object opiDict;
#endif
if (!lookupXObject(args[0].getName(), &obj1))
return;
if (!obj1.isStream()) {
if (!obj1.isStream("XObject")) {
error(getPos(), "XObject '%s' is wrong type", args[0].getName());
obj1.free();
return;
}
#if OPI_SUPPORT
obj1.streamGetDict()->lookup("OPI", &opiDict);
if (opiDict.isDict()) {
out->opiBegin(state, opiDict.getDict());
}
#endif
obj1.streamGetDict()->lookup("Subtype", &obj2);
if (obj2.isName("Image"))
doImage(obj1.getStream(), gFalse);
@@ -1319,12 +1233,6 @@ void Gfx::opXObject(Object args[], int numArgs) {
else
error(getPos(), "XObject subtype is missing or wrong type");
obj2.free();
#if OPI_SUPPORT
if (opiDict.isDict()) {
out->opiEnd(state, opiDict.getDict());
}
opiDict.free();
#endif
obj1.free();
}
@@ -1459,9 +1367,14 @@ void Gfx::doImage(Stream *str, GBool inlineImg) {
}
void Gfx::doForm(Object *str) {
Parser *oldParser;
GfxResources *resPtr;
Dict *dict;
Dict *resDict;
Object matrixObj, bboxObj;
Object obj1;
double m[6];
Object obj1, obj2;
int i;
// get stream dict
dict = str->streamGetDict();
@@ -1488,58 +1401,6 @@ void Gfx::doForm(Object *str) {
return;
}
doForm1(str, dict, &matrixObj, &bboxObj);
matrixObj.free();
bboxObj.free();
}
void Gfx::doWidgetForm(Object *str, double x, double y) {
Dict *dict;
Object matrixObj, bboxObj;
Object obj1;
// get stream dict
dict = str->streamGetDict();
// get bounding box
dict->lookup("BBox", &bboxObj);
if (!bboxObj.isArray()) {
bboxObj.free();
error(getPos(), "Bad form bounding box");
return;
}
// construct matrix
matrixObj.initArray();
obj1.initReal(1);
matrixObj.arrayAdd(&obj1);
obj1.initReal(0);
matrixObj.arrayAdd(&obj1);
obj1.initReal(0);
matrixObj.arrayAdd(&obj1);
obj1.initReal(1);
matrixObj.arrayAdd(&obj1);
obj1.initReal(x);
matrixObj.arrayAdd(&obj1);
obj1.initReal(y);
matrixObj.arrayAdd(&obj1);
doForm1(str, dict, &matrixObj, &bboxObj);
matrixObj.free();
bboxObj.free();
}
void Gfx::doForm1(Object *str, Dict *dict,
Object *matrixObj, Object *bboxObj) {
Parser *oldParser;
GfxResources *resPtr;
Dict *resDict;
double m[6];
Object obj1, obj2;
int i;
// push new resources on stack
res = new GfxResources(res);
dict->lookup("Resources", &obj1);
@@ -1564,7 +1425,7 @@ void Gfx::doForm1(Object *str, Dict *dict,
// set form transformation matrix
for (i = 0; i < 6; ++i) {
matrixObj->arrayGet(i, &obj1);
matrixObj.arrayGet(i, &obj1);
m[i] = obj1.getNum();
obj1.free();
}
@@ -1573,14 +1434,14 @@ void Gfx::doForm1(Object *str, Dict *dict,
// set form bounding box
for (i = 0; i < 4; ++i) {
bboxObj->arrayGet(i, &obj1);
bboxObj.arrayGet(i, &obj1);
m[i] = obj1.getNum();
obj1.free();
}
state->moveTo(m[0], m[1]);
state->lineTo(m[2], m[1]);
state->lineTo(m[2], m[3]);
state->lineTo(m[0], m[3]);
state->lineTo(m[0]+m[2], m[1]);
state->lineTo(m[0]+m[2], m[1]+m[3]);
state->lineTo(m[0], m[1]+m[3]);
state->closePath();
out->clip(state);
state->clearPath();
@@ -1588,6 +1449,10 @@ void Gfx::doForm1(Object *str, Dict *dict,
// draw the form
display(str);
// free matrix and bounding box
matrixObj.free();
bboxObj.free();
// restore parser
parser = oldParser;
@@ -1658,7 +1523,7 @@ Stream *Gfx::buildImageStream() {
obj.free();
// make stream
str = new EmbedStream(parser->getStream(), &dict);
str = new SubStream(parser->getStream(), &dict);
str = str->addFilters(&dict);
return str;
-4
Ver Arquivo
@@ -85,8 +85,6 @@ public:
// Interpret a stream or array of streams.
void display(Object *obj);
void doWidgetForm(Object *str, double x, double y);
private:
OutputDev *out; // output device
@@ -194,8 +192,6 @@ private:
void opXObject(Object args[], int numArgs);
void doImage(Stream *str, GBool inlineImg);
void doForm(Object *str);
void doForm1(Object *str, Dict *dict,
Object *matrixObj, Object *bboxObj);
// in-line image operators
void opBeginImage(Object args[], int numArgs);
+30 -134
Ver Arquivo
@@ -29,10 +29,7 @@
#include "FontInfo.h"
#if JAPANESE_SUPPORT
#include "Japan12CMapInfo.h"
#endif
#if CHINESE_SUPPORT
#include "GB12CMapInfo.h"
#include "CMapInfo.h"
#endif
//------------------------------------------------------------------------
@@ -64,8 +61,6 @@ static Gushort *defCharWidths[12] = {
GfxFont::GfxFont(char *tag1, Ref id1, Dict *fontDict) {
BuiltinFont *builtinFont;
Object obj1, obj2, obj3, obj4;
int missingWidth;
char *name2, *p;
int i;
// get font tag and ID
@@ -106,58 +101,19 @@ GfxFont::GfxFont(char *tag1, Ref id1, Dict *fontDict) {
obj1.free();
is16 = gFalse;
// assume Times-Roman by default (for substitution purposes)
flags = fontSerif;
// Newer Adobe tools are using Base14-compatible TrueType fonts
// without embedding them, so munge the names into the equivalent
// PostScript names. This is a kludge -- it would be nice if Adobe
// followed their own spec.
if (type == fontTrueType) {
p = name->getCString();
name2 = NULL;
if (!strncmp(p, "Arial", 5)) {
if (!strcmp(p+5, ",Bold")) {
name2 = "Helvetica-Bold";
} else if (!strcmp(p+5, "Italic")) {
name2 = "Helvetica-Oblique";
} else if (!strcmp(p+5, "BoldItalic")) {
name2 = "Helvetica-BoldOblique";
} else {
name2 = "Helvetica";
}
} else if (!strncmp(p, "TimesNewRoman", 13)) {
if (!strcmp(p+5, ",Bold")) {
name2 = "Times-Bold";
} else if (!strcmp(p+5, "Italic")) {
name2 = "Times-Italic";
} else if (!strcmp(p+5, "BoldItalic")) {
name2 = "Times-BoldItalic";
} else {
name2 = "Times-Roman";
}
} else if (!strncmp(p, "CourierNew", 10)) {
if (!strcmp(p+5, ",Bold")) {
name2 = "Courier-Bold";
} else if (!strcmp(p+5, "Italic")) {
name2 = "Courier-Oblique";
} else if (!strcmp(p+5, "BoldItalic")) {
name2 = "Courier-BoldOblique";
} else {
name2 = "Courier";
}
}
if (name2) {
delete name;
name = new GString(name2);
}
}
// assume Times-Roman (or TimesNewRoman), but explicitly check for
// Arial and CourierNew -- certain PDF generators apparently don't
// include FontDescriptors for Arial, TimesNewRoman, and CourierNew
flags = fontSerif; // assume Times-Roman by default
if (type == fontTrueType && !name->cmp("Arial"))
flags = 0;
else if (type == fontTrueType && !name->cmp("CourierNew"))
flags = fontFixedWidth;
// get info from font descriptor
embFontName = NULL;
embFontID.num = -1;
embFontID.gen = -1;
missingWidth = 0;
fontDict->lookup("FontDescriptor", &obj1);
if (obj1.isDict()) {
@@ -209,25 +165,9 @@ GfxFont::GfxFont(char *tag1, Ref id1, Dict *fontDict) {
}
obj2.free();
}
// look for MissingWidth
obj1.dictLookup("MissingWidth", &obj2);
if (obj2.isInt()) {
missingWidth = obj2.getInt();
}
obj2.free();
}
obj1.free();
// get Type3 font definition
if (type == fontType3) {
fontDict->lookup("CharProcs", &charProcs);
if (!charProcs.isDict()) {
error(-1, "Missing or invalid CharProcs dictionary in Type 3 font");
charProcs.free();
}
}
// look for an external font file
extFontFile = NULL;
if (type == fontType1 && name)
@@ -246,30 +186,22 @@ GfxFont::GfxFont(char *tag1, Ref id1, Dict *fontDict) {
obj1.free();
// get encoding and character widths
if (type == fontType0) {
if (type == fontType0)
getType0EncAndWidths(fontDict);
} else {
getEncAndWidths(fontDict, builtinFont, missingWidth);
}
else
getEncAndWidths(fontDict, builtinFont);
}
GfxFont::~GfxFont() {
delete tag;
if (name) {
if (name)
delete name;
}
if (!is16 && encoding) {
if (!is16 && encoding)
delete encoding;
}
if (embFontName) {
if (embFontName)
delete embFontName;
}
if (extFontFile) {
if (extFontFile)
delete extFontFile;
}
if (charProcs.isDict()) {
charProcs.free();
}
if (is16) {
gfree(widths16.exceps);
gfree(widths16.excepsV);
@@ -374,17 +306,7 @@ double GfxFont::getOriginY16(int c) {
return vy;
}
Object *GfxFont::getCharProc(int code, Object *proc) {
if (charProcs.isDict()) {
charProcs.dictLookup(encoding->getCharName(code), proc);
} else {
proc->initNull();
}
return proc;
}
void GfxFont::getEncAndWidths(Dict *fontDict, BuiltinFont *builtinFont,
int missingWidth) {
void GfxFont::getEncAndWidths(Dict *fontDict, BuiltinFont *builtinFont) {
Object obj1, obj2, obj3;
char *buf;
int len;
@@ -486,10 +408,9 @@ void GfxFont::getEncAndWidths(Dict *fontDict, BuiltinFont *builtinFont,
// get character widths
if (builtinFont)
makeWidths(fontDict, builtinFont->encoding, builtinFont->widths,
missingWidth);
makeWidths(fontDict, builtinFont->encoding, builtinFont->widths);
else
makeWidths(fontDict, NULL, NULL, missingWidth);
makeWidths(fontDict, NULL, NULL);
}
void GfxFont::findExtFontFile() {
@@ -548,7 +469,6 @@ char *GfxFont::readEmbFontFile(int *len) {
error(-1, "Embedded font file is not a stream");
obj2.free();
obj1.free();
embFontID.num = -1;
return NULL;
}
str = obj2.getStream();
@@ -572,7 +492,7 @@ char *GfxFont::readEmbFontFile(int *len) {
}
void GfxFont::makeWidths(Dict *fontDict, FontEncoding *builtinEncoding,
Gushort *builtinWidths, int missingWidth) {
Gushort *builtinWidths) {
Object obj1, obj2;
int firstChar, lastChar;
int code, code2;
@@ -581,10 +501,9 @@ void GfxFont::makeWidths(Dict *fontDict, FontEncoding *builtinEncoding,
int index;
double mult;
// initialize all widths
for (code = 0; code < 256; ++code) {
widths[code] = missingWidth * 0.001;
}
// initialize all widths to zero
for (code = 0; code < 256; ++code)
widths[code] = 0;
// use widths from built-in font
if (builtinEncoding) {
@@ -661,7 +580,7 @@ void GfxFont::getType0EncAndWidths(Dict *fontDict) {
goto err1;
}
obj1.arrayGet(0, &obj2);
if (!obj2.isDict()) {
if (!obj2.isDict("Font")) {
error(-1, "Bad descendant font of Type 0 font");
goto err2;
}
@@ -683,15 +602,6 @@ void GfxFont::getType0EncAndWidths(Dict *fontDict) {
#else
error(-1, "Xpdf was compiled without Japanese font support");
goto err4;
#endif
} else if (obj4.getString()->cmp("Adobe") == 0 &&
obj5.getString()->cmp("GB1") == 0) {
#if CHINESE_SUPPORT
is16 = gTrue;
enc16.charSet = font16AdobeGB12;
#else
error(-1, "Xpdf was compiled without Chinese font support");
goto err4;
#endif
} else {
error(-1, "Uknown Type 0 character set: %s-%s",
@@ -895,30 +805,16 @@ void GfxFont::getType0EncAndWidths(Dict *fontDict) {
}
#if JAPANESE_SUPPORT
if (enc16.charSet == font16AdobeJapan12) {
for (i = 0; gfxJapan12Tab[i].name; ++i) {
if (!strcmp(obj1.getName(), gfxJapan12Tab[i].name))
for (i = 0; gfxFontEnc16Tab[i].name; ++i) {
if (!strcmp(obj1.getName(), gfxFontEnc16Tab[i].name))
break;
}
if (!gfxJapan12Tab[i].name) {
if (!gfxFontEnc16Tab[i].name) {
error(-1, "Unknown encoding '%s' for Adobe-Japan1-2 font",
obj1.getName());
goto err1;
}
enc16.enc = gfxJapan12Tab[i].enc;
}
#endif
#if CHINESE_SUPPORT
if (enc16.charSet == font16AdobeGB12) {
for (i = 0; gfxGB12Tab[i].name; ++i) {
if (!strcmp(obj1.getName(), gfxGB12Tab[i].name))
break;
}
if (!gfxGB12Tab[i].name) {
error(-1, "Unknown encoding '%s' for Adobe-GB1-2 font",
obj1.getName());
goto err1;
}
enc16.enc = gfxGB12Tab[i].enc;
enc16.enc = gfxFontEnc16Tab[i].enc;
}
#endif
obj1.free();
@@ -936,7 +832,7 @@ void GfxFont::getType0EncAndWidths(Dict *fontDict) {
obj1.free();
//~ fix this --> add 16-bit font support to FontFile
encoding = new FontEncoding();
makeWidths(fontDict, NULL, NULL, 0);
makeWidths(fontDict, NULL, NULL);
}
static int CDECL cmpWidthExcep(const void *w1, const void *w2) {
@@ -960,7 +856,7 @@ GfxFontDict::GfxFontDict(Dict *fontDict) {
for (i = 0; i < numFonts; ++i) {
fontDict->getValNF(i, &obj1);
obj1.fetch(&obj2);
if (obj1.isRef() && obj2.isDict()) {
if (obj1.isRef() && obj2.isDict("Font")) {
fonts[i] = new GfxFont(fontDict->getKey(i), obj1.getRef(),
obj2.getDict());
} else {
+5 -10
Ver Arquivo
@@ -26,8 +26,7 @@ struct BuiltinFont;
//------------------------------------------------------------------------
enum GfxFontCharSet16 {
font16AdobeJapan12, // Adobe-Japan1-2
font16AdobeGB12 // Adobe-GB1-2 (Chinese)
font16AdobeJapan12 // Adobe-Japan1-2
};
//------------------------------------------------------------------------
@@ -132,7 +131,8 @@ public:
// Get the name of the external font file. Returns NULL if there
// is no external font file.
GString *getExtFontFile() { return extFontFile; }
char *getExtFontFile()
{ return extFontFile ? extFontFile->getCString() : (char *)NULL; }
// Get font descriptor flags.
GBool isFixedWidth() { return flags & fontFixedWidth; }
@@ -160,9 +160,6 @@ public:
// Return the code associated with <name>.
int getCharCode(char *charName) { return encoding->getCharCode(charName); }
// Return the Type 3 CharProc for the character associated with <code>.
Object *getCharProc(int code, Object *proc);
// Return the 16-bit character set and encoding.
GfxFontCharSet16 getCharSet16() { return enc16.charSet; }
GfxFontEncoding16 *getEncoding16() { return enc16.enc; }
@@ -179,11 +176,10 @@ public:
private:
void getEncAndWidths(Dict *fontDict, BuiltinFont *builtinFont,
int missingWidth);
void getEncAndWidths(Dict *fontDict, BuiltinFont *builtinFont);
void findExtFontFile();
void makeWidths(Dict *fontDict, FontEncoding *builtinEncoding,
Gushort *builtinWidths, int missingWidth);
Gushort *builtinWidths);
void getType0EncAndWidths(Dict *fontDict);
GString *tag; // PDF font tag
@@ -195,7 +191,6 @@ private:
GString *embFontName; // name of embedded font
Ref embFontID; // ref to embedded font file stream
GString *extFontFile; // external font file name
Object charProcs; // Type3 CharProcs dictionary
double fontMat[6]; // font matrix
union {
FontEncoding *encoding; // 8-bit font encoding
+35 -284
Ver Arquivo
@@ -22,119 +22,13 @@
// GfxColor
//------------------------------------------------------------------------
void GfxColor::setGray(double gray) {
if (gray < 0) {
r = g = b = 0;
} else if (gray > 1) {
r = g = b = 1;
} else {
r = g = b = gray;
}
}
void GfxColor::setCMYK(double c, double m, double y, double k) {
if ((r = 1 - (c + k)) < 0) {
if ((r = 1 - (c + k)) < 0)
r = 0;
} else if (r > 1) {
r = 1;
}
if ((g = 1 - (m + k)) < 0) {
if ((g = 1 - (m + k)) < 0)
g = 0;
} else if (g > 1) {
g = 1;
}
if ((b = 1 - (y + k)) < 0) {
if ((b = 1 - (y + k)) < 0)
b = 0;
} else if (b > 1) {
b = 1;
}
}
void GfxColor::setRGB(double r1, double g1, double b1) {
if (r1 < 0) {
r = 0;
} else if (r1 > 1) {
r = 1;
} else {
r = r1;
}
if (g1 < 0) {
g = 0;
} else if (g1 > 1) {
g = 1;
} else {
g = g1;
}
if (b1 < 0) {
b = 0;
} else if (b1 > 1) {
b = 1;
} else {
b = b1;
}
}
// Handle colors in the L*a*b* color space.
void GfxColor::setLab(double L, double a, double bb, LabParams *params) {
double X, Y, Z;
double t1, t2;
// convert L*a*b* to CIE 1931 XYZ color space
// (This ignores the white point parameter, because I don't
// understand exactly how it should work.)
t1 = (L + 16) / 116;
t2 = t1 + a / 500;
if (t2 >= (6.0 / 29.0)) {
X = t2 * t2 * t2;
} else {
X = (108.0 / 841.0) * (t2 - (4.0 / 29.0));
}
#if 0 //~
X *= params->whiteX;
#endif
if (t1 >= (6.0 / 29.0)) {
Y = t1 * t1 * t1;
} else {
Y = (108.0 / 841.0) * (t1 - (4.0 / 29.0));
}
#if 0 //~
Y *= params->whiteY;
#endif
t2 = t1 - bb / 200;
if (t2 >= (6.0 / 29.0)) {
Z = t2 * t2 * t2;
} else {
Z = (108.0 / 841.0) * (t2 - (4.0 / 29.0));
}
#if 0 //~
Z *= params->whiteZ;
#endif
// convert XYZ to RGB
#if 0 //~
X *= 0.9505;
Z *= 1.0890;
#endif
r = 3.240479 * X - 1.537150 * Y - 0.498535 * Z;
g = -0.969256 * X + 1.875992 * Y + 0.041556 * Z;
b = 0.055648 * X - 0.204043 * Y + 1.057311 * Z;
// clip RGB
if (r < 0) {
r = 0;
} else if (r > 1) {
r = 1;
}
if (g < 0) {
g = 0;
} else if (g > 1) {
g = 1;
}
if (b < 0) {
b = 0;
} else if (b > 1) {
b = 1;
}
}
//------------------------------------------------------------------------
@@ -143,8 +37,7 @@ void GfxColor::setLab(double L, double a, double bb, LabParams *params) {
GfxColorSpace::GfxColorSpace(Object *colorSpace) {
Object csObj;
Object obj, obj2, obj3;
Dict *dict;
Object obj, obj2;
char *s;
int x;
int i, j;
@@ -152,7 +45,7 @@ GfxColorSpace::GfxColorSpace(Object *colorSpace) {
ok = gTrue;
lookup = NULL;
// check for Separation, DeviceN, ICCBased, and Pattern colorspaces
// check for Separation, DeviceN, and Pattern colorspaces
colorSpace->copy(&csObj);
sepFunc = NULL;
if (colorSpace->isArray()) {
@@ -166,32 +59,6 @@ GfxColorSpace::GfxColorSpace(Object *colorSpace) {
delete sepFunc;
sepFunc = NULL;
}
} else if (obj.isName("ICCBased")) {
colorSpace->arrayGet(1, &obj2);
if (obj2.isStream()) {
if ((dict = obj2.streamGetDict())) {
dict->lookup("Alternate", &obj3);
if (!obj3.isNull()) {
csObj.free();
csObj = obj3;
} else {
obj3.free();
dict->lookup("N", &obj3);
if (!obj3.isNull()) {
csObj.free();
if (obj3.getInt() == 4) {
csObj.initName("DeviceCMYK");
} else if (obj3.getInt() == 3) {
csObj.initName("DeviceRGB");
} else {
csObj.initName("DeviceGray");
}
}
obj3.free();
}
}
}
obj2.free();
} else if (obj.isName("Pattern")) {
csObj.free();
colorSpace->arrayGet(1, &csObj);
@@ -267,7 +134,6 @@ GfxColorSpace::GfxColorSpace(GfxColorMode mode1) {
case colorGray: numComps = 1; break;
case colorCMYK: numComps = 4; break;
case colorRGB: numComps = 3; break;
case colorLab: numComps = 3; break;
}
lookup = NULL;
ok = gTrue;
@@ -301,7 +167,7 @@ GfxColorSpace::GfxColorSpace(GfxColorSpace *colorSpace) {
}
void GfxColorSpace::setMode(Object *colorSpace) {
Object obj1, obj2, obj3, obj4;
Object obj;
if (colorSpace->isName("DeviceGray") || colorSpace->isName("G")) {
mode = colorGray;
@@ -313,104 +179,25 @@ void GfxColorSpace::setMode(Object *colorSpace) {
mode = colorCMYK;
numComps = 4;
} else if (colorSpace->isArray()) {
colorSpace->arrayGet(0, &obj1);
if (obj1.isName("CalGray")) {
colorSpace->arrayGet(0, &obj);
if (obj.isName("CalGray")) {
mode = colorGray;
numComps = 1;
} else if (obj1.isName("CalRGB")) {
} else if (obj.isName("CalRGB")) {
mode = colorRGB;
numComps = 3;
} else if (obj1.isName("CalCMYK")) {
} else if (obj.isName("CalCMYK")) {
mode = colorCMYK;
numComps = 4;
} else if (obj1.isName("Lab")) {
mode = colorLab;
numComps = 3;
labParams.whiteX = 0.9505;
labParams.whiteY = 1;
labParams.whiteZ = 1.0890;
labParams.aMin = -100;
labParams.aMax = 100;
labParams.bMin = -100;
labParams.bMax = 100;
colorSpace->arrayGet(1, &obj2);
if (obj2.isDict()) {
obj2.dictLookup("WhitePoint", &obj3);
if (obj3.isArray() && obj3.arrayGetLength() == 3) {
obj3.arrayGet(0, &obj4);
if (obj4.isNum()) {
labParams.whiteX = obj4.getNum();
}
obj4.free();
obj3.arrayGet(1, &obj4);
if (obj4.isNum()) {
labParams.whiteY = obj4.getNum();
}
obj4.free();
obj3.arrayGet(2, &obj4);
if (obj4.isNum()) {
labParams.whiteZ = obj4.getNum();
}
obj4.free();
}
obj3.free();
obj2.dictLookup("Range", &obj3);
if (obj3.isArray() && obj3.arrayGetLength() == 4) {
obj3.arrayGet(0, &obj4);
if (obj4.isNum()) {
labParams.aMin = obj4.getNum();
}
obj4.free();
obj3.arrayGet(1, &obj4);
if (obj4.isNum()) {
labParams.aMax = obj4.getNum();
}
obj4.free();
obj3.arrayGet(2, &obj4);
if (obj4.isNum()) {
labParams.bMin = obj4.getNum();
}
obj4.free();
obj3.arrayGet(3, &obj4);
if (obj4.isNum()) {
labParams.bMax = obj4.getNum();
}
obj4.free();
}
obj3.free();
}
obj2.free();
} else {
ok = gFalse;
}
obj1.free();
obj.free();
} else {
ok = gFalse;
}
}
void GfxColorSpace::getDefaultRanges(double *decodeLow, double *decodeRange,
int maxPixel) {
int i;
if (indexed) {
decodeLow[0] = 0;
decodeRange[0] = maxPixel;
} else if (mode == colorLab) {
decodeLow[0] = 0;
decodeRange[0] = 100;
decodeLow[1] = labParams.aMin;
decodeRange[1] = labParams.aMax - labParams.aMin;
decodeLow[2] = labParams.bMin;
decodeRange[2] = labParams.bMax - labParams.bMin;
} else {
for (i = 0; i < numComps; ++i) {
decodeLow[i] = 0;
decodeRange[i] = 1;
}
}
}
void GfxColorSpace::getColor(double x[4], GfxColor *color) {
double y[4];
Guchar *p;
@@ -435,9 +222,6 @@ void GfxColorSpace::getColor(double x[4], GfxColor *color) {
case colorRGB:
color->setRGB(p[0] / 255.0, p[1] / 255.0, p[2] / 255.0);
break;
case colorLab:
color->setLab(p[0] / 255.0, p[1] / 255.0, p[2] / 255.0, &labParams);
break;
}
} else {
switch (mode) {
@@ -450,9 +234,6 @@ void GfxColorSpace::getColor(double x[4], GfxColor *color) {
case colorRGB:
color->setRGB(y[0], y[1], y[2]);
break;
case colorLab:
color->setLab(y[0], y[1], y[2], &labParams);
break;
}
}
}
@@ -496,7 +277,7 @@ Function::Function(Object *funcObj) {
goto err2;
}
m = obj1.arrayGetLength() / 2;
if (m > 1) {
if (m > 4) {
error(-1, "Functions with more than 1 input are unsupported");
goto err2;
}
@@ -752,11 +533,20 @@ GfxImageColorMap::GfxImageColorMap(int bits1, Object *decode,
mode = colorSpace->getMode();
// get decode map
indexed = colorSpace->isIndexed();
sep = colorSpace->isSeparation();
if (decode->isNull()) {
numComps = colorSpace->getNumPixelComps();
colorSpace->getDefaultRanges(decodeLow, decodeRange, maxPixel);
if (colorSpace->isIndexed()) {
indexed = gTrue;
numComps = 1;
decodeLow[0] = 0;
decodeRange[0] = maxPixel;
} else {
indexed = gFalse;
numComps = colorSpace->getNumPixelComps();
for (i = 0; i < numComps; ++i) {
decodeLow[i] = 0;
decodeRange[i] = 1;
}
}
} else if (decode->isArray()) {
numComps = decode->arrayGetLength() / 2;
if (numComps != colorSpace->getNumPixelComps())
@@ -785,24 +575,9 @@ GfxImageColorMap::GfxImageColorMap(int bits1, Object *decode,
maxPixel = colorSpace->getIndexHigh();
}
// handle the case where fewer than 2^n palette entries of an n-bit
// indexed color space are populated (this happens, e.g., in files
// optimized by Distiller)
if (indexed && maxPixel > colorSpace->getIndexHigh()) {
maxPixel = colorSpace->getIndexHigh();
}
// construct lookup table
lookup = (double (*)[4])gmalloc((maxPixel + 1) * 4 * sizeof(double));
if (sep) {
for (i = 0; i <= maxPixel; ++i) {
x[0] = (double)i / (double)maxPixel;
colorSpace->getColor(x, &color);
lookup[i][0] = color.getR();
lookup[i][1] = color.getG();
lookup[i][2] = color.getB();
}
} else if (indexed) {
if (indexed) {
for (i = 0; i <= maxPixel; ++i) {
x[0] = (double)i;
colorSpace->getColor(x, &color);
@@ -832,7 +607,7 @@ GfxImageColorMap::~GfxImageColorMap() {
void GfxImageColorMap::getColor(Guchar x[4], GfxColor *color) {
double *p;
if (sep || indexed) {
if (indexed) {
p = lookup[x[0]];
color->setRGB(p[0], p[1], p[2]);
} else {
@@ -847,10 +622,6 @@ void GfxImageColorMap::getColor(Guchar x[4], GfxColor *color) {
case colorRGB:
color->setRGB(lookup[x[0]][0], lookup[x[1]][1], lookup[x[2]][2]);
break;
case colorLab:
color->setLab(lookup[x[0]][0], lookup[x[1]][1], lookup[x[2]][2],
colorSpace->getLabParams());
break;
}
}
}
@@ -868,7 +639,6 @@ GfxSubpath::GfxSubpath(double x1, double y1) {
x[0] = x1;
y[0] = y1;
curve[0] = gFalse;
closed = gFalse;
}
GfxSubpath::~GfxSubpath() {
@@ -887,7 +657,6 @@ GfxSubpath::GfxSubpath(GfxSubpath *subpath) {
memcpy(x, subpath->x, n * sizeof(double));
memcpy(y, subpath->y, n * sizeof(double));
memcpy(curve, subpath->curve, n * sizeof(GBool));
closed = subpath->closed;
}
void GfxSubpath::lineTo(double x1, double y1) {
@@ -922,18 +691,10 @@ void GfxSubpath::curveTo(double x1, double y1, double x2, double y2,
n += 3;
}
void GfxSubpath::close() {
if (x[n-1] != x[0] || y[n-1] != y[0]) {
lineTo(x[0], y[0]);
}
closed = gTrue;
}
GfxPath::GfxPath() {
justMoved = gFalse;
size = 16;
n = 0;
firstX = firstY = 0;
subpaths = (GfxSubpath **)gmalloc(size * sizeof(GfxSubpath *));
}
@@ -1016,8 +777,8 @@ GfxState::GfxState(int dpi, double px1a, double py1a, double px2a, double py2a,
ctm[3] = 0;
ctm[4] = -k * py1;
ctm[5] = k * (upsideDown ? -px1 : px2);
pageWidth = k * (py2 - py1);
pageHeight = k * (px2 - px1);
pageWidth = (int)(k * (py2 - py1));
pageHeight = (int)(k * (px2 - px1));
} else if (rotate == 180) {
ctm[0] = -k;
ctm[1] = 0;
@@ -1025,8 +786,8 @@ GfxState::GfxState(int dpi, double px1a, double py1a, double px2a, double py2a,
ctm[3] = upsideDown ? k : -k;
ctm[4] = k * px2;
ctm[5] = k * (upsideDown ? -py1 : py2);
pageWidth = k * (px2 - px1);
pageHeight = k * (py2 - py1);
pageWidth = (int)(k * (px2 - px1));
pageHeight = (int)(k * (py2 - py1));
} else if (rotate == 270) {
ctm[0] = 0;
ctm[1] = upsideDown ? -k : k;
@@ -1034,8 +795,8 @@ GfxState::GfxState(int dpi, double px1a, double py1a, double px2a, double py2a,
ctm[3] = 0;
ctm[4] = k * py2;
ctm[5] = k * (upsideDown ? px2 : -px1);
pageWidth = k * (py2 - py1);
pageHeight = k * (px2 - px1);
pageWidth = (int)(k * (py2 - py1));
pageHeight = (int)(k * (px2 - px1));
} else {
ctm[0] = k;
ctm[1] = 0;
@@ -1043,8 +804,8 @@ GfxState::GfxState(int dpi, double px1a, double py1a, double px2a, double py2a,
ctm[3] = upsideDown ? -k : k;
ctm[4] = -k * px1;
ctm[5] = k * (upsideDown ? py2 : -py1);
pageWidth = k * (px2 - px1);
pageHeight = k * (py2 - py1);
pageWidth = (int)(k * (px2 - px1));
pageHeight = (int)(k * (py2 - py1));
}
fillColorSpace = new GfxColorSpace(colorGray);
@@ -1132,16 +893,6 @@ void GfxState::getFontTransMat(double *m11, double *m12,
*m22 = (textMat[2] * ctm[1] + textMat[3] * ctm[3]) * fontSize;
}
void GfxState::setCTM(double a, double b, double c,
double d, double e, double f) {
ctm[0] = a;
ctm[1] = b;
ctm[2] = c;
ctm[3] = d;
ctm[4] = e;
ctm[5] = f;
}
void GfxState::concatCTM(double a, double b, double c,
double d, double e, double f) {
double a1 = ctm[0];
+15 -38
Ver Arquivo
@@ -19,16 +19,6 @@ class Object;
class Function;
class GfxFont;
//------------------------------------------------------------------------
// LabParams
//------------------------------------------------------------------------
// Parameters for L*a*b* color spaces.
struct LabParams {
double whiteX, whiteY, whiteZ;
double aMin, aMax, bMin, bMax;
};
//------------------------------------------------------------------------
// GfxColor
//------------------------------------------------------------------------
@@ -39,10 +29,11 @@ public:
GfxColor(): r(0), g(0), b(0) {}
// Set color.
void setGray(double gray);
void setGray(double gray)
{ r = g = b = gray; }
void setCMYK(double c, double m, double y, double k);
void setRGB(double r1, double g1, double b1);
void setLab(double L, double a, double bb, LabParams *params);
void setRGB(double r1, double g1, double b1)
{ r = r1; g = g1; b = b1; }
// Accessors.
double getR() { return r; }
@@ -60,7 +51,7 @@ private:
//------------------------------------------------------------------------
enum GfxColorMode {
colorGray, colorCMYK, colorRGB, colorLab
colorGray, colorCMYK, colorRGB
};
class GfxColorSpace {
@@ -86,7 +77,7 @@ public:
GfxColorMode getMode() { return mode; }
// Get number of components in pixels of this colorspace.
int getNumPixelComps() { return (sepFunc || indexed) ? 1 : numComps; }
int getNumPixelComps() { return indexed ? 1 : numComps; }
// Get number of components in colors of this colorspace.
int getNumColorComps() { return numComps; }
@@ -94,12 +85,6 @@ public:
// Return true if colorspace is indexed.
GBool isIndexed() { return indexed; }
// Return true for a separation colorspace.
GBool isSeparation() { return sepFunc ? gTrue : gFalse; }
// Get default ranges for the components.
void getDefaultRanges(double *decodeLow, double *decodeRange, int maxPixel);
// Get lookup table (only for indexed colorspaces).
int getIndexHigh() { return indexHigh; }
Guchar *getLookupVal(int i) { return lookup[i]; }
@@ -107,9 +92,6 @@ public:
// Convert a pixel to a color.
void getColor(double x[4], GfxColor *color);
// Get the L*a*b* color space parameters.
LabParams *getLabParams() { return &labParams; }
private:
Function *sepFunc; // separation tint transform function
@@ -119,7 +101,6 @@ private:
int indexHigh; // max pixel for indexed colorspace
Guchar (*lookup)[4]; // lookup table (only for indexed
// colorspaces)
LabParams labParams; // parameters for L*a*b* color space
GBool ok; // is color space valid?
GfxColorSpace(GfxColorSpace *colorSpace);
@@ -153,13 +134,13 @@ private:
Function(Function *func);
int m, n; // size of input and output tuples
double domain[1][2]; // min and max values for function domain
double range[4][2]; // min and max values for function range
int sampleSize[1]; // number of samples for each domain element
double encode[1][2]; // min and max values for domain encoder
double decode[4][2]; // min and max values for range decoder
double *samples; // the samples
int m, n;
double domain[1][2];
double range[4][2];
int sampleSize[1];
double encode[1][2];
double decode[4][2];
double *samples;
GBool ok;
};
@@ -199,7 +180,6 @@ private:
int bits; // bits per component
int numComps; // number of components in a pixel
GBool indexed; // set for indexed color space
GBool sep; // set for separation colorspaces
GfxColorMode mode; // color mode
double (*lookup)[4]; // lookup table
double decodeLow[4]; // minimum values for each component
@@ -241,8 +221,8 @@ public:
double x3, double y3);
// Close the subpath.
void close();
GBool isClosed() { return closed; }
void close()
{ if (x[n-1] != x[0] || y[n-1] != y[0]) lineTo(x[0], y[0]); }
private:
@@ -251,7 +231,6 @@ private:
// for a Bezier curve
int n; // number of points
int size; // size of x/y arrays
GBool closed; // set if path is closed
GfxSubpath(GfxSubpath *subpath);
};
@@ -383,8 +362,6 @@ public:
void getFontTransMat(double *m11, double *m12, double *m21, double *m22);
// Change state parameters.
void setCTM(double a, double b, double c,
double d, double e, double f);
void concatCTM(double a, double b, double c,
double d, double e, double f);
void setFillGray(double gray)
+3 -1
Ver Arquivo
@@ -557,7 +557,9 @@ LinkAction *Links::find(double x, double y) {
for (i = 0; i < numLinks; ++i) {
if (links[i]->inRect(x, y)) {
return links[i]->getAction();
if (links[i]->getAction())
return links[i]->getAction();
return NULL;
}
}
return NULL;
+4 -9
Ver Arquivo
@@ -14,11 +14,11 @@ include ../Makedefs
# Object files...
#
LIBOBJS = Decrypt.o GString.o gfile.o gmempp.o gmem.o parseargs.o \
LIBOBJS = GString.o gfile.o gmempp.o gmem.o parseargs.o \
Array.o Catalog.o Dict.o Error.o FontEncoding.o \
FontFile.o FormWidget.o Gfx.o GfxFont.o GfxState.o \
Lexer.o Link.o Object.o OutputDev.o Page.o Params.o \
Parser.o PDFDoc.o PSOutputDev.o Stream.o XRef.o
FontFile.o Gfx.o GfxFont.o GfxState.o Lexer.o Link.o \
Object.o OutputDev.o Page.o Params.o Parser.o PDFDoc.o \
PSOutputDev.o Stream.o XRef.o
OBJS = pdftops.o $(LIBOBJS)
#
@@ -81,14 +81,12 @@ parseargs.o: parseargs.h gtypes.h
Array.o: gmem.h Object.h gtypes.h GString.h Array.h Dict.h Stream.h
Catalog.o: gmem.h Object.h gtypes.h GString.h Array.h Dict.h Stream.h \
Page.h Error.h config.h Link.h Catalog.h
Decrypt.o: gmem.h Decrypt.h gtypes.h GString.h
Dict.o: gmem.h Object.h gtypes.h GString.h Array.h Dict.h Stream.h \
XRef.h
Error.o: gtypes.h Params.h Error.h config.h
FontEncoding.o: gmem.h FontEncoding.h gtypes.h
FontFile.o: gmem.h Error.h config.h FontFile.h gtypes.h GString.h \
FontEncoding.h StdFontInfo.h CompactFontInfo.h
FormWidget.o: FormWidget.h gmem.h Object.h Gfx.h
Gfx.o: gmem.h Object.h gtypes.h GString.h Array.h Dict.h Stream.h \
Lexer.h Parser.h GfxFont.h FontEncoding.h GfxState.h \
OutputDev.h Params.h Error.h config.h Gfx.h
@@ -118,11 +116,8 @@ PDFDoc.o: GString.h config.h Page.h Object.h gtypes.h gmem.h Array.h \
PSOutputDev.o: GString.h config.h Object.h gtypes.h gmem.h Array.h Dict.h \
Stream.h Error.h GfxState.h GfxFont.h FontEncoding.h \
FontFile.h Catalog.h Page.h PSOutputDev.h OutputDev.h
SFont.o: SFont.h gtypes.h
Stream.o: gmem.h config.h Error.h Object.h gtypes.h GString.h Array.h \
Dict.h Stream.h Stream-CCITT.h
T1Font.o: T1Font.h gmem.h FontEncoding.h
TTFont.o: TTFont.h gmem.h FontEncoding.h
XRef.o: gmem.h Object.h gtypes.h GString.h Array.h Dict.h Stream.h \
Lexer.h Parser.h Error.h config.h XRef.h
+4 -1
Ver Arquivo
@@ -115,7 +115,6 @@ public:
void free();
// Type checking.
ObjType getType() { return type; }
GBool isBool() { return type == objBool; }
GBool isInt() { return type == objInt; }
GBool isReal() { return type == objReal; }
@@ -178,6 +177,7 @@ public:
char *streamGetLine(char *buf, int size);
int streamGetPos();
void streamSetPos(int pos);
FILE *streamGetFile();
Dict *streamGetDict();
// Output.
@@ -290,6 +290,9 @@ inline int Object::streamGetPos()
inline void Object::streamSetPos(int pos)
{ stream->setPos(pos); }
inline FILE *Object::streamGetFile()
{ return stream->getFile(); }
inline Dict *Object::streamGetDict()
{ return stream->getDict(); }

Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais