forked from Wavyzz/dolibarr
Normalized EOL
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,420 +1,420 @@
|
||||
// --------------------------------------------------------------------------------
|
||||
// PclZip 2.8.2 - readme.txt
|
||||
// --------------------------------------------------------------------------------
|
||||
// License GNU/LGPL - August 2009
|
||||
// Vincent Blavet - vincent@phpconcept.net
|
||||
// http://www.phpconcept.net
|
||||
// --------------------------------------------------------------------------------
|
||||
// --------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
0 - Sommaire
|
||||
============
|
||||
1 - Introduction
|
||||
2 - What's new
|
||||
3 - Corrected bugs
|
||||
4 - Known bugs or limitations
|
||||
5 - License
|
||||
6 - Warning
|
||||
7 - Documentation
|
||||
8 - Author
|
||||
9 - Contribute
|
||||
|
||||
1 - Introduction
|
||||
================
|
||||
|
||||
PclZip is a library that allow you to manage a Zip archive.
|
||||
|
||||
Full documentation about PclZip can be found here : http://www.phpconcept.net/pclzip
|
||||
|
||||
2 - What's new
|
||||
==============
|
||||
|
||||
Version 2.8.2 :
|
||||
- PCLZIP_CB_PRE_EXTRACT and PCLZIP_CB_POST_EXTRACT are now supported with
|
||||
extraction as a string (PCLZIP_OPT_EXTRACT_AS_STRING). The string
|
||||
can also be modified in the post-extract call back.
|
||||
**Bugs correction :
|
||||
- PCLZIP_OPT_REMOVE_ALL_PATH was not working correctly
|
||||
- Remove use of eval() and do direct call to callback functions
|
||||
- Correct support of 64bits systems (Thanks to WordPress team)
|
||||
|
||||
Version 2.8.1 :
|
||||
- Move option PCLZIP_OPT_BY_EREG to PCLZIP_OPT_BY_PREG because ereg() is
|
||||
deprecated in PHP 5.3. When using option PCLZIP_OPT_BY_EREG, PclZip will
|
||||
automatically replace it by PCLZIP_OPT_BY_PREG.
|
||||
|
||||
Version 2.8 :
|
||||
- Improve extraction of zip archive for large files by using temporary files
|
||||
This feature is working like the one defined in r2.7.
|
||||
Options are renamed : PCLZIP_OPT_TEMP_FILE_ON, PCLZIP_OPT_TEMP_FILE_OFF,
|
||||
PCLZIP_OPT_TEMP_FILE_THRESHOLD
|
||||
- Add a ratio constant PCLZIP_TEMPORARY_FILE_RATIO to configure the auto
|
||||
sense of temporary file use.
|
||||
- Bug correction : Reduce filepath in returned file list to remove ennoying
|
||||
'.//' preambule in file path.
|
||||
|
||||
Version 2.7 :
|
||||
- Improve creation of zip archive for large files :
|
||||
PclZip will now autosense the configured memory and use temporary files
|
||||
when large file is suspected.
|
||||
This feature can also ne triggered by manual options in create() and add()
|
||||
methods. 'PCLZIP_OPT_ADD_TEMP_FILE_ON' force the use of temporary files,
|
||||
'PCLZIP_OPT_ADD_TEMP_FILE_OFF' disable the autosense technic,
|
||||
'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD' allow for configuration of a size
|
||||
threshold to use temporary files.
|
||||
Using "temporary files" rather than "memory" might take more time, but
|
||||
might give the ability to zip very large files :
|
||||
Tested on my win laptop with a 88Mo file :
|
||||
Zip "in-memory" : 18sec (max_execution_time=30, memory_limit=180Mo)
|
||||
Zip "tmporary-files" : 23sec (max_execution_time=30, memory_limit=30Mo)
|
||||
- Replace use of mktime() by time() to limit the E_STRICT error messages.
|
||||
- Bug correction : When adding files with full windows path (drive letter)
|
||||
PclZip is now working. Before, if the drive letter is not the default
|
||||
path, PclZip was not able to add the file.
|
||||
|
||||
Version 2.6 :
|
||||
- Code optimisation
|
||||
- New attributes PCLZIP_ATT_FILE_COMMENT gives the ability to
|
||||
add a comment for a specific file. (Don't really know if this is usefull)
|
||||
- New attribute PCLZIP_ATT_FILE_CONTENT gives the ability to add a string
|
||||
as a file.
|
||||
- New attribute PCLZIP_ATT_FILE_MTIME modify the timestamp associated with
|
||||
a file.
|
||||
- Correct a bug. Files archived with a timestamp with 0h0m0s were extracted
|
||||
with current time
|
||||
- Add CRC value in the informations returned back for each file after an
|
||||
action.
|
||||
- Add missing closedir() statement.
|
||||
- When adding a folder, and removing the path of this folder, files were
|
||||
incorrectly added with a '/' at the beginning. Which means files are
|
||||
related to root in unix systems. Corrected.
|
||||
- Add conditional if before constant definition. This will allow users
|
||||
to redefine constants without changing the file, and then improve
|
||||
upgrade of pclzip code for new versions.
|
||||
|
||||
Version 2.5 :
|
||||
- Introduce the ability to add file/folder with individual properties (file descriptor).
|
||||
This gives for example the ability to change the filename of a zipped file.
|
||||
. Able to add files individually
|
||||
. Able to change full name
|
||||
. Able to change short name
|
||||
. Compatible with global options
|
||||
- New attributes : PCLZIP_ATT_FILE_NAME, PCLZIP_ATT_FILE_NEW_SHORT_NAME, PCLZIP_ATT_FILE_NEW_FULL_NAME
|
||||
- New error code : PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE
|
||||
- Add a security control feature. PclZip can extract any file in any folder
|
||||
of a system. People may use this to upload a zip file and try to override
|
||||
a system file. The PCLZIP_OPT_EXTRACT_DIR_RESTRICTION will give the
|
||||
ability to forgive any directory transversal behavior.
|
||||
- New PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : check extraction path
|
||||
- New error code : PCLZIP_ERR_DIRECTORY_RESTRICTION
|
||||
- Modification in PclZipUtilPathInclusion() : dir and path beginning with ./ will be prepend
|
||||
by current path (getcwd())
|
||||
|
||||
Version 2.4 :
|
||||
- Code improvment : try to speed up the code by removing unusefull call to pack()
|
||||
- Correct bug in delete() : delete() should be called with no argument. This was not
|
||||
the case in 2.3. This is corrected in 2.4.
|
||||
- Correct a bug in path_inclusion function. When the path has several '../../', the
|
||||
result was bad.
|
||||
- Add a check for magic_quotes_runtime configuration. If enabled, PclZip will
|
||||
disable it while working and det it back to its original value.
|
||||
This resolve a lots of bad formated archive errors.
|
||||
- Bug correction : PclZip now correctly unzip file in some specific situation,
|
||||
when compressed content has same size as uncompressed content.
|
||||
- Bug correction : When selecting option 'PCLZIP_OPT_REMOVE_ALL_PATH',
|
||||
directories are not any more created.
|
||||
- Code improvment : correct unclosed opendir(), better handling of . and .. in
|
||||
loops.
|
||||
|
||||
|
||||
Version 2.3 :
|
||||
- Correct a bug with PHP5 : affecting the value 0xFE49FFE0 to a variable does not
|
||||
give the same result in PHP4 and PHP5 ....
|
||||
|
||||
Version 2.2 :
|
||||
- Try development of PCLZIP_OPT_CRYPT .....
|
||||
However this becomes to a stop. To crypt/decrypt I need to multiply 2 long integers,
|
||||
the result (greater than a long) is not supported by PHP. Even the use of bcmath
|
||||
functions does not help. I did not find yet a solution ...;
|
||||
- Add missing '/' at end of directory entries
|
||||
- Check is a file is encrypted or not. Returns status 'unsupported_encryption' and/or
|
||||
error code PCLZIP_ERR_UNSUPPORTED_ENCRYPTION.
|
||||
- Corrected : Bad "version need to extract" field in local file header
|
||||
- Add private method privCheckFileHeaders() in order to check local and central
|
||||
file headers. PclZip is now supporting purpose bit flag bit 3. Purpose bit flag bit 3 gives
|
||||
the ability to have a local file header without size, compressed size and crc filled.
|
||||
- Add a generic status 'error' for file status
|
||||
- Add control of compression type. PclZip only support deflate compression method.
|
||||
Before v2.2, PclZip does not check the compression method used in an archive while
|
||||
extracting. With v2.2 PclZip returns a new error status for a file using an unsupported
|
||||
compression method. New status is "unsupported_compression". New error code is
|
||||
PCLZIP_ERR_UNSUPPORTED_COMPRESSION.
|
||||
- Add optional attribute PCLZIP_OPT_STOP_ON_ERROR. This will stop the extract of files
|
||||
when errors like 'a folder with same name exists' or 'a newer file exists' or
|
||||
'a write protected file' exists, rather than set a status for the concerning file
|
||||
and resume the extract of the zip.
|
||||
- Add optional attribute PCLZIP_OPT_REPLACE_NEWER. This will force, during an extract' the
|
||||
replacement of the file, even if a newer version of the file exists.
|
||||
Note that today if a file with the same name already exists but is older it will be
|
||||
replaced by the extracted one.
|
||||
- Improve PclZipUtilOption()
|
||||
- Support of zip archive with trailing bytes. Before 2.2, PclZip checks that the central
|
||||
directory structure is the last data in the archive. Crypt encryption/decryption of
|
||||
zip archive put trailing 0 bytes after decryption. PclZip is now supporting this.
|
||||
|
||||
Version 2.1 :
|
||||
- Add the ability to abort the extraction by using a user callback function.
|
||||
The user can now return the value '2' in its callback which indicates to stop the
|
||||
extraction. For a pre call-back extract is stopped before the extration of the current
|
||||
file. For a post call back, the extraction is stopped after.
|
||||
- Add the ability to extract a file (or several files) directly in the standard output.
|
||||
This is done by the new parameter PCLZIP_OPT_EXTRACT_IN_OUTPUT with method extract().
|
||||
- Add support for parameters PCLZIP_OPT_COMMENT, PCLZIP_OPT_ADD_COMMENT,
|
||||
PCLZIP_OPT_PREPEND_COMMENT. This will create, replace, add, or prepend comments
|
||||
in the zip archive.
|
||||
- When merging two archives, the comments are not any more lost, but merged, with a
|
||||
blank space separator.
|
||||
- Corrected bug : Files are not deleted when all files are asked to be deleted.
|
||||
- Corrected bug : Folders with name '0' made PclZip to abort the create or add feature.
|
||||
|
||||
|
||||
Version 2.0 :
|
||||
***** Warning : Some new features may break the backward compatibility for your scripts.
|
||||
Please carefully read the readme file.
|
||||
- Add the ability to delete by Index, name and regular expression. This feature is
|
||||
performed by the method delete(), which uses the optional parameters
|
||||
PCLZIP_OPT_BY_INDEX, PCLZIP_OPT_BY_NAME, PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG.
|
||||
- Add the ability to extract by regular expression. To extract by regexp you must use the method
|
||||
extract(), with the option PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG
|
||||
(depending if you want to use ereg() or preg_match() syntax) followed by the
|
||||
regular expression pattern.
|
||||
- Add the ability to extract by index, directly with the extract() method. This is a
|
||||
code improvment of the extractByIndex() method.
|
||||
- Add the ability to extract by name. To extract by name you must use the method
|
||||
extract(), with the option PCLZIP_OPT_BY_NAME followed by the filename to
|
||||
extract or an array of filenames to extract. To extract all a folder, use the folder
|
||||
name rather than the filename with a '/' at the end.
|
||||
- Add the ability to add files without compression. This is done with a new attribute
|
||||
which is PCLZIP_OPT_NO_COMPRESSION.
|
||||
- Add the attribute PCLZIP_OPT_EXTRACT_AS_STRING, which allow to extract a file directly
|
||||
in a string without using any file (or temporary file).
|
||||
- Add constant PCLZIP_SEPARATOR for static configuration of filename separators in a single string.
|
||||
The default separator is now a comma (,) and not any more a blank space.
|
||||
THIS BREAK THE BACKWARD COMPATIBILITY : Please check if this may have an impact with
|
||||
your script.
|
||||
- Improve algorythm performance by removing the use of temporary files when adding or
|
||||
extracting files in an archive.
|
||||
- Add (correct) detection of empty filename zipping. This can occurs when the removed
|
||||
path is the same
|
||||
as a zipped dir. The dir is not zipped (['status'] = filtered), only its content.
|
||||
- Add better support for windows paths (thanks for help from manus@manusfreedom.com).
|
||||
- Corrected bug : When the archive file already exists with size=0, the add() method
|
||||
fails. Corrected in 2.0.
|
||||
- Remove the use of OS_WINDOWS constant. Use php_uname() function rather.
|
||||
- Control the order of index ranges in extract by index feature.
|
||||
- Change the internal management of folders (better handling of internal flag).
|
||||
|
||||
|
||||
Version 1.3 :
|
||||
- Removing the double include check. This is now done by include_once() and require_once()
|
||||
PHP directives.
|
||||
- Changing the error handling mecanism : Remove the use of an external error library.
|
||||
The former PclError...() functions are replaced by internal equivalent methods.
|
||||
By changing the environment variable PCLZIP_ERROR_EXTERNAL you can still use the former library.
|
||||
Introducing the use of constants for error codes rather than integer values. This will help
|
||||
in futur improvment.
|
||||
Introduction of error handling functions like errorCode(), errorName() and errorInfo().
|
||||
- Remove the deprecated use of calling function with arguments passed by reference.
|
||||
- Add the calling of extract(), extractByIndex(), create() and add() functions
|
||||
with variable options rather than fixed arguments.
|
||||
- Add the ability to remove all the file path while extracting or adding,
|
||||
without any need to specify the path to remove.
|
||||
This is available for extract(), extractByIndex(), create() and add() functionS by using
|
||||
the new variable options parameters :
|
||||
- PCLZIP_OPT_REMOVE_ALL_PATH : by indicating this option while calling the fct.
|
||||
- Ability to change the mode of a file after the extraction (chmod()).
|
||||
This is available for extract() and extractByIndex() functionS by using
|
||||
the new variable options parameters.
|
||||
- PCLZIP_OPT_SET_CHMOD : by setting the value of this option.
|
||||
- Ability to definition call-back options. These call-back will be called during the adding,
|
||||
or the extracting of file (extract(), extractByIndex(), create() and add() functions) :
|
||||
- PCLZIP_CB_PRE_EXTRACT : will be called before each extraction of a file. The user
|
||||
can trigerred the change the filename of the extracted file. The user can triggered the
|
||||
skip of the extraction. This is adding a 'skipped' status in the file list result value.
|
||||
- PCLZIP_CB_POST_EXTRACT : will be called after each extraction of a file.
|
||||
Nothing can be triggered from that point.
|
||||
- PCLZIP_CB_PRE_ADD : will be called before each add of a file. The user
|
||||
can trigerred the change the stored filename of the added file. The user can triggered the
|
||||
skip of the add. This is adding a 'skipped' status in the file list result value.
|
||||
- PCLZIP_CB_POST_ADD : will be called after each add of a file.
|
||||
Nothing can be triggered from that point.
|
||||
- Two status are added in the file list returned as function result : skipped & filename_too_long
|
||||
'skipped' is used when a call-back function ask for skipping the file.
|
||||
'filename_too_long' is used while adding a file with a too long filename to archive (the file is
|
||||
not added)
|
||||
- Adding the function PclZipUtilPathInclusion(), that check the inclusion of a path into
|
||||
a directory.
|
||||
- Add a check of the presence of the archive file before some actions (like list, ...)
|
||||
- Add the initialisation of field "index" in header array. This means that by
|
||||
default index will be -1 when not explicitly set by the methods.
|
||||
|
||||
Version 1.2 :
|
||||
- Adding a duplicate function.
|
||||
- Adding a merge function. The merge function is a "quick merge" function,
|
||||
it just append the content of an archive at the end of the first one. There
|
||||
is no check for duplicate files or more recent files.
|
||||
- Improve the search of the central directory end.
|
||||
|
||||
Version 1.1.2 :
|
||||
|
||||
- Changing the license of PclZip. PclZip is now released under the GNU / LGPL license
|
||||
(see License section).
|
||||
- Adding the optional support of a static temporary directory. You will need to configure
|
||||
the constant PCLZIP_TEMPORARY_DIR if you want to use this feature.
|
||||
- Improving the rename() function. In some cases rename() does not work (different
|
||||
Filesystems), so it will be replaced by a copy() + unlink() functions.
|
||||
|
||||
Version 1.1.1 :
|
||||
|
||||
- Maintenance release, no new feature.
|
||||
|
||||
Version 1.1 :
|
||||
|
||||
- New method Add() : adding files in the archive
|
||||
- New method ExtractByIndex() : partial extract of the archive, files are identified by
|
||||
their index in the archive
|
||||
- New method DeleteByIndex() : delete some files/folder entries from the archive,
|
||||
files are identified by their index in the archive.
|
||||
- Adding a test of the zlib extension presence. If not present abort the script.
|
||||
|
||||
Version 1.0.1 :
|
||||
|
||||
- No new feature
|
||||
|
||||
|
||||
3 - Corrected bugs
|
||||
==================
|
||||
|
||||
Corrected in Version 2.0 :
|
||||
- Corrected : During an extraction, if a call-back fucntion is used and try to skip
|
||||
a file, all the extraction process is stopped.
|
||||
|
||||
Corrected in Version 1.3 :
|
||||
- Corrected : Support of static synopsis for method extract() is broken.
|
||||
- Corrected : invalid size of archive content field (0xFF) should be (0xFFFF).
|
||||
- Corrected : When an extract is done with a remove_path parameter, the entry for
|
||||
the directory with exactly the same path is not skipped/filtered.
|
||||
- Corrected : extractByIndex() and deleteByIndex() were not managing index in the
|
||||
right way. For example indexes '1,3-5,11' will only extract files 1 and 11. This
|
||||
is due to a sort of the index resulting table that puts 11 before 3-5 (sort on
|
||||
string and not interger). The sort is temporarilly removed, this means that
|
||||
you must provide a sorted list of index ranges.
|
||||
|
||||
Corrected in Version 1.2 :
|
||||
|
||||
- Nothing.
|
||||
|
||||
Corrected in Version 1.1.2 :
|
||||
|
||||
- Corrected : Winzip is unable to delete or add new files in a PclZip created archives.
|
||||
|
||||
Corrected in Version 1.1.1 :
|
||||
|
||||
- Corrected : When archived file is not compressed (0% compression), the
|
||||
extract method fails.
|
||||
|
||||
Corrected in Version 1.1 :
|
||||
|
||||
- Corrected : Adding a complete tree of folder may result in a bad archive
|
||||
creation.
|
||||
|
||||
Corrected in Version 1.0.1 :
|
||||
|
||||
- Corrected : Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024).
|
||||
|
||||
|
||||
4 - Known bugs or limitations
|
||||
=============================
|
||||
|
||||
Please publish bugs reports in SourceForge :
|
||||
http://sourceforge.net/tracker/?group_id=40254&atid=427564
|
||||
|
||||
In Version 2.x :
|
||||
- PclZip does only support file uncompressed or compressed with deflate (compression method 8)
|
||||
- PclZip does not support password protected zip archive
|
||||
- Some concern were seen when changing mtime of a file while archiving.
|
||||
Seems to be linked to Daylight Saving Time (PclTest_changing_mtime).
|
||||
|
||||
In Version 1.2 :
|
||||
|
||||
- merge() methods does not check for duplicate files or last date of modifications.
|
||||
|
||||
In Version 1.1 :
|
||||
|
||||
- Limitation : Using 'extract' fields in the file header in the zip archive is not supported.
|
||||
- WinZip is unable to delete a single file in a PclZip created archive. It is also unable to
|
||||
add a file in a PclZip created archive. (Corrected in v.1.2)
|
||||
|
||||
In Version 1.0.1 :
|
||||
|
||||
- Adding a complete tree of folder may result in a bad archive
|
||||
creation. (Corrected in V.1.1).
|
||||
- Path given to methods must be in the unix format (/) and not the Windows format (\).
|
||||
Workaround : Use only / directory separators.
|
||||
- PclZip is using temporary files that are sometime the name of the file with a .tmp or .gz
|
||||
added suffix. Files with these names may already exist and may be overwritten.
|
||||
Workaround : none.
|
||||
- PclZip does not check if the zlib extension is present. If it is absent, the zip
|
||||
file is not created and the lib abort without warning.
|
||||
Workaround : enable the zlib extension on the php install
|
||||
|
||||
In Version 1.0 :
|
||||
|
||||
- Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024).
|
||||
(Corrected in v.1.0.1)
|
||||
- Limitation : Multi-disk zip archive are not supported.
|
||||
|
||||
|
||||
5 - License
|
||||
===========
|
||||
|
||||
Since version 1.1.2, PclZip Library is released under GNU/LGPL license.
|
||||
This library is free, so you can use it at no cost.
|
||||
|
||||
HOWEVER, if you release a script, an application, a library or any kind of
|
||||
code using PclZip library (or a part of it), YOU MUST :
|
||||
- Indicate in the documentation (or a readme file), that your work
|
||||
uses PclZip Library, and make a reference to the author and the web site
|
||||
http://www.phpconcept.net
|
||||
- Gives the ability to the final user to update the PclZip libary.
|
||||
|
||||
I will also appreciate that you send me a mail (vincent@phpconcept.net), just to
|
||||
be aware that someone is using PclZip.
|
||||
|
||||
For more information about GNU/LGPL license : http://www.gnu.org
|
||||
|
||||
6 - Warning
|
||||
=================
|
||||
|
||||
This library and the associated files are non commercial, non professional work.
|
||||
It should not have unexpected results. However if any damage is caused by this software
|
||||
the author can not be responsible.
|
||||
The use of this software is at the risk of the user.
|
||||
|
||||
7 - Documentation
|
||||
=================
|
||||
PclZip User Manuel is available in English on PhpConcept : http://www.phpconcept.net/pclzip/man/en/index.php
|
||||
A Russian translation was done by Feskov Kuzma : http://php.russofile.ru/ru/authors/unsort/zip/
|
||||
|
||||
8 - Author
|
||||
==========
|
||||
|
||||
This software was written by Vincent Blavet (vincent@phpconcept.net) on its leasure time.
|
||||
|
||||
9 - Contribute
|
||||
==============
|
||||
If you want to contribute to the development of PclZip, please contact vincent@phpconcept.net.
|
||||
If you can help in financing PhpConcept hosting service, please go to
|
||||
http://www.phpconcept.net/soutien.php
|
||||
// --------------------------------------------------------------------------------
|
||||
// PclZip 2.8.2 - readme.txt
|
||||
// --------------------------------------------------------------------------------
|
||||
// License GNU/LGPL - August 2009
|
||||
// Vincent Blavet - vincent@phpconcept.net
|
||||
// http://www.phpconcept.net
|
||||
// --------------------------------------------------------------------------------
|
||||
// --------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
0 - Sommaire
|
||||
============
|
||||
1 - Introduction
|
||||
2 - What's new
|
||||
3 - Corrected bugs
|
||||
4 - Known bugs or limitations
|
||||
5 - License
|
||||
6 - Warning
|
||||
7 - Documentation
|
||||
8 - Author
|
||||
9 - Contribute
|
||||
|
||||
1 - Introduction
|
||||
================
|
||||
|
||||
PclZip is a library that allow you to manage a Zip archive.
|
||||
|
||||
Full documentation about PclZip can be found here : http://www.phpconcept.net/pclzip
|
||||
|
||||
2 - What's new
|
||||
==============
|
||||
|
||||
Version 2.8.2 :
|
||||
- PCLZIP_CB_PRE_EXTRACT and PCLZIP_CB_POST_EXTRACT are now supported with
|
||||
extraction as a string (PCLZIP_OPT_EXTRACT_AS_STRING). The string
|
||||
can also be modified in the post-extract call back.
|
||||
**Bugs correction :
|
||||
- PCLZIP_OPT_REMOVE_ALL_PATH was not working correctly
|
||||
- Remove use of eval() and do direct call to callback functions
|
||||
- Correct support of 64bits systems (Thanks to WordPress team)
|
||||
|
||||
Version 2.8.1 :
|
||||
- Move option PCLZIP_OPT_BY_EREG to PCLZIP_OPT_BY_PREG because ereg() is
|
||||
deprecated in PHP 5.3. When using option PCLZIP_OPT_BY_EREG, PclZip will
|
||||
automatically replace it by PCLZIP_OPT_BY_PREG.
|
||||
|
||||
Version 2.8 :
|
||||
- Improve extraction of zip archive for large files by using temporary files
|
||||
This feature is working like the one defined in r2.7.
|
||||
Options are renamed : PCLZIP_OPT_TEMP_FILE_ON, PCLZIP_OPT_TEMP_FILE_OFF,
|
||||
PCLZIP_OPT_TEMP_FILE_THRESHOLD
|
||||
- Add a ratio constant PCLZIP_TEMPORARY_FILE_RATIO to configure the auto
|
||||
sense of temporary file use.
|
||||
- Bug correction : Reduce filepath in returned file list to remove ennoying
|
||||
'.//' preambule in file path.
|
||||
|
||||
Version 2.7 :
|
||||
- Improve creation of zip archive for large files :
|
||||
PclZip will now autosense the configured memory and use temporary files
|
||||
when large file is suspected.
|
||||
This feature can also ne triggered by manual options in create() and add()
|
||||
methods. 'PCLZIP_OPT_ADD_TEMP_FILE_ON' force the use of temporary files,
|
||||
'PCLZIP_OPT_ADD_TEMP_FILE_OFF' disable the autosense technic,
|
||||
'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD' allow for configuration of a size
|
||||
threshold to use temporary files.
|
||||
Using "temporary files" rather than "memory" might take more time, but
|
||||
might give the ability to zip very large files :
|
||||
Tested on my win laptop with a 88Mo file :
|
||||
Zip "in-memory" : 18sec (max_execution_time=30, memory_limit=180Mo)
|
||||
Zip "tmporary-files" : 23sec (max_execution_time=30, memory_limit=30Mo)
|
||||
- Replace use of mktime() by time() to limit the E_STRICT error messages.
|
||||
- Bug correction : When adding files with full windows path (drive letter)
|
||||
PclZip is now working. Before, if the drive letter is not the default
|
||||
path, PclZip was not able to add the file.
|
||||
|
||||
Version 2.6 :
|
||||
- Code optimisation
|
||||
- New attributes PCLZIP_ATT_FILE_COMMENT gives the ability to
|
||||
add a comment for a specific file. (Don't really know if this is usefull)
|
||||
- New attribute PCLZIP_ATT_FILE_CONTENT gives the ability to add a string
|
||||
as a file.
|
||||
- New attribute PCLZIP_ATT_FILE_MTIME modify the timestamp associated with
|
||||
a file.
|
||||
- Correct a bug. Files archived with a timestamp with 0h0m0s were extracted
|
||||
with current time
|
||||
- Add CRC value in the informations returned back for each file after an
|
||||
action.
|
||||
- Add missing closedir() statement.
|
||||
- When adding a folder, and removing the path of this folder, files were
|
||||
incorrectly added with a '/' at the beginning. Which means files are
|
||||
related to root in unix systems. Corrected.
|
||||
- Add conditional if before constant definition. This will allow users
|
||||
to redefine constants without changing the file, and then improve
|
||||
upgrade of pclzip code for new versions.
|
||||
|
||||
Version 2.5 :
|
||||
- Introduce the ability to add file/folder with individual properties (file descriptor).
|
||||
This gives for example the ability to change the filename of a zipped file.
|
||||
. Able to add files individually
|
||||
. Able to change full name
|
||||
. Able to change short name
|
||||
. Compatible with global options
|
||||
- New attributes : PCLZIP_ATT_FILE_NAME, PCLZIP_ATT_FILE_NEW_SHORT_NAME, PCLZIP_ATT_FILE_NEW_FULL_NAME
|
||||
- New error code : PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE
|
||||
- Add a security control feature. PclZip can extract any file in any folder
|
||||
of a system. People may use this to upload a zip file and try to override
|
||||
a system file. The PCLZIP_OPT_EXTRACT_DIR_RESTRICTION will give the
|
||||
ability to forgive any directory transversal behavior.
|
||||
- New PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : check extraction path
|
||||
- New error code : PCLZIP_ERR_DIRECTORY_RESTRICTION
|
||||
- Modification in PclZipUtilPathInclusion() : dir and path beginning with ./ will be prepend
|
||||
by current path (getcwd())
|
||||
|
||||
Version 2.4 :
|
||||
- Code improvment : try to speed up the code by removing unusefull call to pack()
|
||||
- Correct bug in delete() : delete() should be called with no argument. This was not
|
||||
the case in 2.3. This is corrected in 2.4.
|
||||
- Correct a bug in path_inclusion function. When the path has several '../../', the
|
||||
result was bad.
|
||||
- Add a check for magic_quotes_runtime configuration. If enabled, PclZip will
|
||||
disable it while working and det it back to its original value.
|
||||
This resolve a lots of bad formated archive errors.
|
||||
- Bug correction : PclZip now correctly unzip file in some specific situation,
|
||||
when compressed content has same size as uncompressed content.
|
||||
- Bug correction : When selecting option 'PCLZIP_OPT_REMOVE_ALL_PATH',
|
||||
directories are not any more created.
|
||||
- Code improvment : correct unclosed opendir(), better handling of . and .. in
|
||||
loops.
|
||||
|
||||
|
||||
Version 2.3 :
|
||||
- Correct a bug with PHP5 : affecting the value 0xFE49FFE0 to a variable does not
|
||||
give the same result in PHP4 and PHP5 ....
|
||||
|
||||
Version 2.2 :
|
||||
- Try development of PCLZIP_OPT_CRYPT .....
|
||||
However this becomes to a stop. To crypt/decrypt I need to multiply 2 long integers,
|
||||
the result (greater than a long) is not supported by PHP. Even the use of bcmath
|
||||
functions does not help. I did not find yet a solution ...;
|
||||
- Add missing '/' at end of directory entries
|
||||
- Check is a file is encrypted or not. Returns status 'unsupported_encryption' and/or
|
||||
error code PCLZIP_ERR_UNSUPPORTED_ENCRYPTION.
|
||||
- Corrected : Bad "version need to extract" field in local file header
|
||||
- Add private method privCheckFileHeaders() in order to check local and central
|
||||
file headers. PclZip is now supporting purpose bit flag bit 3. Purpose bit flag bit 3 gives
|
||||
the ability to have a local file header without size, compressed size and crc filled.
|
||||
- Add a generic status 'error' for file status
|
||||
- Add control of compression type. PclZip only support deflate compression method.
|
||||
Before v2.2, PclZip does not check the compression method used in an archive while
|
||||
extracting. With v2.2 PclZip returns a new error status for a file using an unsupported
|
||||
compression method. New status is "unsupported_compression". New error code is
|
||||
PCLZIP_ERR_UNSUPPORTED_COMPRESSION.
|
||||
- Add optional attribute PCLZIP_OPT_STOP_ON_ERROR. This will stop the extract of files
|
||||
when errors like 'a folder with same name exists' or 'a newer file exists' or
|
||||
'a write protected file' exists, rather than set a status for the concerning file
|
||||
and resume the extract of the zip.
|
||||
- Add optional attribute PCLZIP_OPT_REPLACE_NEWER. This will force, during an extract' the
|
||||
replacement of the file, even if a newer version of the file exists.
|
||||
Note that today if a file with the same name already exists but is older it will be
|
||||
replaced by the extracted one.
|
||||
- Improve PclZipUtilOption()
|
||||
- Support of zip archive with trailing bytes. Before 2.2, PclZip checks that the central
|
||||
directory structure is the last data in the archive. Crypt encryption/decryption of
|
||||
zip archive put trailing 0 bytes after decryption. PclZip is now supporting this.
|
||||
|
||||
Version 2.1 :
|
||||
- Add the ability to abort the extraction by using a user callback function.
|
||||
The user can now return the value '2' in its callback which indicates to stop the
|
||||
extraction. For a pre call-back extract is stopped before the extration of the current
|
||||
file. For a post call back, the extraction is stopped after.
|
||||
- Add the ability to extract a file (or several files) directly in the standard output.
|
||||
This is done by the new parameter PCLZIP_OPT_EXTRACT_IN_OUTPUT with method extract().
|
||||
- Add support for parameters PCLZIP_OPT_COMMENT, PCLZIP_OPT_ADD_COMMENT,
|
||||
PCLZIP_OPT_PREPEND_COMMENT. This will create, replace, add, or prepend comments
|
||||
in the zip archive.
|
||||
- When merging two archives, the comments are not any more lost, but merged, with a
|
||||
blank space separator.
|
||||
- Corrected bug : Files are not deleted when all files are asked to be deleted.
|
||||
- Corrected bug : Folders with name '0' made PclZip to abort the create or add feature.
|
||||
|
||||
|
||||
Version 2.0 :
|
||||
***** Warning : Some new features may break the backward compatibility for your scripts.
|
||||
Please carefully read the readme file.
|
||||
- Add the ability to delete by Index, name and regular expression. This feature is
|
||||
performed by the method delete(), which uses the optional parameters
|
||||
PCLZIP_OPT_BY_INDEX, PCLZIP_OPT_BY_NAME, PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG.
|
||||
- Add the ability to extract by regular expression. To extract by regexp you must use the method
|
||||
extract(), with the option PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG
|
||||
(depending if you want to use ereg() or preg_match() syntax) followed by the
|
||||
regular expression pattern.
|
||||
- Add the ability to extract by index, directly with the extract() method. This is a
|
||||
code improvment of the extractByIndex() method.
|
||||
- Add the ability to extract by name. To extract by name you must use the method
|
||||
extract(), with the option PCLZIP_OPT_BY_NAME followed by the filename to
|
||||
extract or an array of filenames to extract. To extract all a folder, use the folder
|
||||
name rather than the filename with a '/' at the end.
|
||||
- Add the ability to add files without compression. This is done with a new attribute
|
||||
which is PCLZIP_OPT_NO_COMPRESSION.
|
||||
- Add the attribute PCLZIP_OPT_EXTRACT_AS_STRING, which allow to extract a file directly
|
||||
in a string without using any file (or temporary file).
|
||||
- Add constant PCLZIP_SEPARATOR for static configuration of filename separators in a single string.
|
||||
The default separator is now a comma (,) and not any more a blank space.
|
||||
THIS BREAK THE BACKWARD COMPATIBILITY : Please check if this may have an impact with
|
||||
your script.
|
||||
- Improve algorythm performance by removing the use of temporary files when adding or
|
||||
extracting files in an archive.
|
||||
- Add (correct) detection of empty filename zipping. This can occurs when the removed
|
||||
path is the same
|
||||
as a zipped dir. The dir is not zipped (['status'] = filtered), only its content.
|
||||
- Add better support for windows paths (thanks for help from manus@manusfreedom.com).
|
||||
- Corrected bug : When the archive file already exists with size=0, the add() method
|
||||
fails. Corrected in 2.0.
|
||||
- Remove the use of OS_WINDOWS constant. Use php_uname() function rather.
|
||||
- Control the order of index ranges in extract by index feature.
|
||||
- Change the internal management of folders (better handling of internal flag).
|
||||
|
||||
|
||||
Version 1.3 :
|
||||
- Removing the double include check. This is now done by include_once() and require_once()
|
||||
PHP directives.
|
||||
- Changing the error handling mecanism : Remove the use of an external error library.
|
||||
The former PclError...() functions are replaced by internal equivalent methods.
|
||||
By changing the environment variable PCLZIP_ERROR_EXTERNAL you can still use the former library.
|
||||
Introducing the use of constants for error codes rather than integer values. This will help
|
||||
in futur improvment.
|
||||
Introduction of error handling functions like errorCode(), errorName() and errorInfo().
|
||||
- Remove the deprecated use of calling function with arguments passed by reference.
|
||||
- Add the calling of extract(), extractByIndex(), create() and add() functions
|
||||
with variable options rather than fixed arguments.
|
||||
- Add the ability to remove all the file path while extracting or adding,
|
||||
without any need to specify the path to remove.
|
||||
This is available for extract(), extractByIndex(), create() and add() functionS by using
|
||||
the new variable options parameters :
|
||||
- PCLZIP_OPT_REMOVE_ALL_PATH : by indicating this option while calling the fct.
|
||||
- Ability to change the mode of a file after the extraction (chmod()).
|
||||
This is available for extract() and extractByIndex() functionS by using
|
||||
the new variable options parameters.
|
||||
- PCLZIP_OPT_SET_CHMOD : by setting the value of this option.
|
||||
- Ability to definition call-back options. These call-back will be called during the adding,
|
||||
or the extracting of file (extract(), extractByIndex(), create() and add() functions) :
|
||||
- PCLZIP_CB_PRE_EXTRACT : will be called before each extraction of a file. The user
|
||||
can trigerred the change the filename of the extracted file. The user can triggered the
|
||||
skip of the extraction. This is adding a 'skipped' status in the file list result value.
|
||||
- PCLZIP_CB_POST_EXTRACT : will be called after each extraction of a file.
|
||||
Nothing can be triggered from that point.
|
||||
- PCLZIP_CB_PRE_ADD : will be called before each add of a file. The user
|
||||
can trigerred the change the stored filename of the added file. The user can triggered the
|
||||
skip of the add. This is adding a 'skipped' status in the file list result value.
|
||||
- PCLZIP_CB_POST_ADD : will be called after each add of a file.
|
||||
Nothing can be triggered from that point.
|
||||
- Two status are added in the file list returned as function result : skipped & filename_too_long
|
||||
'skipped' is used when a call-back function ask for skipping the file.
|
||||
'filename_too_long' is used while adding a file with a too long filename to archive (the file is
|
||||
not added)
|
||||
- Adding the function PclZipUtilPathInclusion(), that check the inclusion of a path into
|
||||
a directory.
|
||||
- Add a check of the presence of the archive file before some actions (like list, ...)
|
||||
- Add the initialisation of field "index" in header array. This means that by
|
||||
default index will be -1 when not explicitly set by the methods.
|
||||
|
||||
Version 1.2 :
|
||||
- Adding a duplicate function.
|
||||
- Adding a merge function. The merge function is a "quick merge" function,
|
||||
it just append the content of an archive at the end of the first one. There
|
||||
is no check for duplicate files or more recent files.
|
||||
- Improve the search of the central directory end.
|
||||
|
||||
Version 1.1.2 :
|
||||
|
||||
- Changing the license of PclZip. PclZip is now released under the GNU / LGPL license
|
||||
(see License section).
|
||||
- Adding the optional support of a static temporary directory. You will need to configure
|
||||
the constant PCLZIP_TEMPORARY_DIR if you want to use this feature.
|
||||
- Improving the rename() function. In some cases rename() does not work (different
|
||||
Filesystems), so it will be replaced by a copy() + unlink() functions.
|
||||
|
||||
Version 1.1.1 :
|
||||
|
||||
- Maintenance release, no new feature.
|
||||
|
||||
Version 1.1 :
|
||||
|
||||
- New method Add() : adding files in the archive
|
||||
- New method ExtractByIndex() : partial extract of the archive, files are identified by
|
||||
their index in the archive
|
||||
- New method DeleteByIndex() : delete some files/folder entries from the archive,
|
||||
files are identified by their index in the archive.
|
||||
- Adding a test of the zlib extension presence. If not present abort the script.
|
||||
|
||||
Version 1.0.1 :
|
||||
|
||||
- No new feature
|
||||
|
||||
|
||||
3 - Corrected bugs
|
||||
==================
|
||||
|
||||
Corrected in Version 2.0 :
|
||||
- Corrected : During an extraction, if a call-back fucntion is used and try to skip
|
||||
a file, all the extraction process is stopped.
|
||||
|
||||
Corrected in Version 1.3 :
|
||||
- Corrected : Support of static synopsis for method extract() is broken.
|
||||
- Corrected : invalid size of archive content field (0xFF) should be (0xFFFF).
|
||||
- Corrected : When an extract is done with a remove_path parameter, the entry for
|
||||
the directory with exactly the same path is not skipped/filtered.
|
||||
- Corrected : extractByIndex() and deleteByIndex() were not managing index in the
|
||||
right way. For example indexes '1,3-5,11' will only extract files 1 and 11. This
|
||||
is due to a sort of the index resulting table that puts 11 before 3-5 (sort on
|
||||
string and not interger). The sort is temporarilly removed, this means that
|
||||
you must provide a sorted list of index ranges.
|
||||
|
||||
Corrected in Version 1.2 :
|
||||
|
||||
- Nothing.
|
||||
|
||||
Corrected in Version 1.1.2 :
|
||||
|
||||
- Corrected : Winzip is unable to delete or add new files in a PclZip created archives.
|
||||
|
||||
Corrected in Version 1.1.1 :
|
||||
|
||||
- Corrected : When archived file is not compressed (0% compression), the
|
||||
extract method fails.
|
||||
|
||||
Corrected in Version 1.1 :
|
||||
|
||||
- Corrected : Adding a complete tree of folder may result in a bad archive
|
||||
creation.
|
||||
|
||||
Corrected in Version 1.0.1 :
|
||||
|
||||
- Corrected : Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024).
|
||||
|
||||
|
||||
4 - Known bugs or limitations
|
||||
=============================
|
||||
|
||||
Please publish bugs reports in SourceForge :
|
||||
http://sourceforge.net/tracker/?group_id=40254&atid=427564
|
||||
|
||||
In Version 2.x :
|
||||
- PclZip does only support file uncompressed or compressed with deflate (compression method 8)
|
||||
- PclZip does not support password protected zip archive
|
||||
- Some concern were seen when changing mtime of a file while archiving.
|
||||
Seems to be linked to Daylight Saving Time (PclTest_changing_mtime).
|
||||
|
||||
In Version 1.2 :
|
||||
|
||||
- merge() methods does not check for duplicate files or last date of modifications.
|
||||
|
||||
In Version 1.1 :
|
||||
|
||||
- Limitation : Using 'extract' fields in the file header in the zip archive is not supported.
|
||||
- WinZip is unable to delete a single file in a PclZip created archive. It is also unable to
|
||||
add a file in a PclZip created archive. (Corrected in v.1.2)
|
||||
|
||||
In Version 1.0.1 :
|
||||
|
||||
- Adding a complete tree of folder may result in a bad archive
|
||||
creation. (Corrected in V.1.1).
|
||||
- Path given to methods must be in the unix format (/) and not the Windows format (\).
|
||||
Workaround : Use only / directory separators.
|
||||
- PclZip is using temporary files that are sometime the name of the file with a .tmp or .gz
|
||||
added suffix. Files with these names may already exist and may be overwritten.
|
||||
Workaround : none.
|
||||
- PclZip does not check if the zlib extension is present. If it is absent, the zip
|
||||
file is not created and the lib abort without warning.
|
||||
Workaround : enable the zlib extension on the php install
|
||||
|
||||
In Version 1.0 :
|
||||
|
||||
- Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024).
|
||||
(Corrected in v.1.0.1)
|
||||
- Limitation : Multi-disk zip archive are not supported.
|
||||
|
||||
|
||||
5 - License
|
||||
===========
|
||||
|
||||
Since version 1.1.2, PclZip Library is released under GNU/LGPL license.
|
||||
This library is free, so you can use it at no cost.
|
||||
|
||||
HOWEVER, if you release a script, an application, a library or any kind of
|
||||
code using PclZip library (or a part of it), YOU MUST :
|
||||
- Indicate in the documentation (or a readme file), that your work
|
||||
uses PclZip Library, and make a reference to the author and the web site
|
||||
http://www.phpconcept.net
|
||||
- Gives the ability to the final user to update the PclZip libary.
|
||||
|
||||
I will also appreciate that you send me a mail (vincent@phpconcept.net), just to
|
||||
be aware that someone is using PclZip.
|
||||
|
||||
For more information about GNU/LGPL license : http://www.gnu.org
|
||||
|
||||
6 - Warning
|
||||
=================
|
||||
|
||||
This library and the associated files are non commercial, non professional work.
|
||||
It should not have unexpected results. However if any damage is caused by this software
|
||||
the author can not be responsible.
|
||||
The use of this software is at the risk of the user.
|
||||
|
||||
7 - Documentation
|
||||
=================
|
||||
PclZip User Manuel is available in English on PhpConcept : http://www.phpconcept.net/pclzip/man/en/index.php
|
||||
A Russian translation was done by Feskov Kuzma : http://php.russofile.ru/ru/authors/unsort/zip/
|
||||
|
||||
8 - Author
|
||||
==========
|
||||
|
||||
This software was written by Vincent Blavet (vincent@phpconcept.net) on its leasure time.
|
||||
|
||||
9 - Contribute
|
||||
==============
|
||||
If you want to contribute to the development of PclZip, please contact vincent@phpconcept.net.
|
||||
If you can help in financing PhpConcept hosting service, please go to
|
||||
http://www.phpconcept.net/soutien.php
|
||||
|
||||
@@ -1,122 +1,122 @@
|
||||
Sentences that contain all letters commonly used in a language
|
||||
--------------------------------------------------------------
|
||||
|
||||
Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/> -- 2001-09-02
|
||||
|
||||
This file is UTF-8 encoded.
|
||||
|
||||
|
||||
Danish (da)
|
||||
---------
|
||||
|
||||
Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen
|
||||
Wolther spillede på xylofon.
|
||||
(= Quiz contestants were eating strawbery with cream while Wolther
|
||||
the circus clown played on xylophone.)
|
||||
|
||||
German (de)
|
||||
-----------
|
||||
|
||||
Falsches Üben von Xylophonmusik quält jeden größeren Zwerg
|
||||
(= Wrongful practicing of xylophone music tortures every larger dwarf)
|
||||
|
||||
Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich
|
||||
(= Twelve boxing fighters hunted Eva across the dike of Sylt)
|
||||
|
||||
Heizölrückstoßabdämpfung
|
||||
(= fuel oil recoil absorber)
|
||||
(jqvwxy missing, but all non-ASCII letters in one word)
|
||||
|
||||
English (en)
|
||||
------------
|
||||
|
||||
The quick brown fox jumps over the lazy dog
|
||||
|
||||
Spanish (es)
|
||||
------------
|
||||
|
||||
El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y
|
||||
frío, añoraba a su querido cachorro.
|
||||
(Contains every letter and every accent, but not every combination
|
||||
of vowel + acute.)
|
||||
|
||||
French (fr)
|
||||
-----------
|
||||
|
||||
Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à
|
||||
côté de l'alcôve ovoïde, où les bûches se consument dans l'âtre, ce
|
||||
qui lui permet de penser à la cænogenèse de l'être dont il est question
|
||||
dans la cause ambiguë entendue à Moÿ, dans un capharnaüm qui,
|
||||
pense-t-il, diminue çà et là la qualité de son œuvre.
|
||||
|
||||
l'île exiguë
|
||||
Où l'obèse jury mûr
|
||||
Fête l'haï volapük,
|
||||
Âne ex aéquo au whist,
|
||||
Ôtez ce vœu déçu.
|
||||
|
||||
Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en
|
||||
canoë au delà des îles, près du mälström où brûlent les novæ.
|
||||
|
||||
Irish Gaelic (ga)
|
||||
-----------------
|
||||
|
||||
D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh
|
||||
|
||||
Hungarian (hu)
|
||||
--------------
|
||||
|
||||
Árvíztűrő tükörfúrógép
|
||||
(= flood-proof mirror-drilling machine, only all non-ASCII letters)
|
||||
|
||||
Icelandic (is)
|
||||
--------------
|
||||
|
||||
Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa
|
||||
|
||||
Sævör grét áðan því úlpan var ónýt
|
||||
(some ASCII letters missing)
|
||||
|
||||
Greek (el)
|
||||
-------------
|
||||
|
||||
Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο
|
||||
(= No more shall I see acacias or myrtles in the golden clearing)
|
||||
|
||||
Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία
|
||||
(= I uncover the soul-destroying abhorrence)
|
||||
|
||||
Hebrew (iw)
|
||||
-----------
|
||||
|
||||
? דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה
|
||||
|
||||
Polish (pl)
|
||||
-----------
|
||||
|
||||
Pchnąć w tę łódź jeża lub osiem skrzyń fig
|
||||
(= To push a hedgehog or eight bins of figs in this boat)
|
||||
|
||||
Zażółć gęślą jaźń
|
||||
|
||||
Russian (ru)
|
||||
------------
|
||||
|
||||
В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!
|
||||
(= Would a citrus live in the bushes of south? Yes, but only a fake one!)
|
||||
|
||||
Thai (th)
|
||||
---------
|
||||
|
||||
[--------------------------|------------------------]
|
||||
๏ เป็นมนุษย์สุดประเสริฐเลิศคุณค่า กว่าบรรดาฝูงสัตว์เดรัจฉาน
|
||||
จงฝ่าฟันพัฒนาวิชาการ อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร
|
||||
ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า หัดอภัยเหมือนกีฬาอัชฌาสัย
|
||||
ปฏิบัติประพฤติกฎกำหนดใจ พูดจาให้จ๊ะๆ จ๋าๆ น่าฟังเอย ฯ
|
||||
|
||||
[The copyright for the Thai example is owned by The Computer
|
||||
Association of Thailand under the Royal Patronage of His Majesty the
|
||||
King.]
|
||||
|
||||
Please let me know if you find others! Special thanks to the people
|
||||
from all over the world who contributed these sentences.
|
||||
Sentences that contain all letters commonly used in a language
|
||||
--------------------------------------------------------------
|
||||
|
||||
Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/> -- 2001-09-02
|
||||
|
||||
This file is UTF-8 encoded.
|
||||
|
||||
|
||||
Danish (da)
|
||||
---------
|
||||
|
||||
Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen
|
||||
Wolther spillede på xylofon.
|
||||
(= Quiz contestants were eating strawbery with cream while Wolther
|
||||
the circus clown played on xylophone.)
|
||||
|
||||
German (de)
|
||||
-----------
|
||||
|
||||
Falsches Üben von Xylophonmusik quält jeden größeren Zwerg
|
||||
(= Wrongful practicing of xylophone music tortures every larger dwarf)
|
||||
|
||||
Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich
|
||||
(= Twelve boxing fighters hunted Eva across the dike of Sylt)
|
||||
|
||||
Heizölrückstoßabdämpfung
|
||||
(= fuel oil recoil absorber)
|
||||
(jqvwxy missing, but all non-ASCII letters in one word)
|
||||
|
||||
English (en)
|
||||
------------
|
||||
|
||||
The quick brown fox jumps over the lazy dog
|
||||
|
||||
Spanish (es)
|
||||
------------
|
||||
|
||||
El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y
|
||||
frío, añoraba a su querido cachorro.
|
||||
(Contains every letter and every accent, but not every combination
|
||||
of vowel + acute.)
|
||||
|
||||
French (fr)
|
||||
-----------
|
||||
|
||||
Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à
|
||||
côté de l'alcôve ovoïde, où les bûches se consument dans l'âtre, ce
|
||||
qui lui permet de penser à la cænogenèse de l'être dont il est question
|
||||
dans la cause ambiguë entendue à Moÿ, dans un capharnaüm qui,
|
||||
pense-t-il, diminue çà et là la qualité de son œuvre.
|
||||
|
||||
l'île exiguë
|
||||
Où l'obèse jury mûr
|
||||
Fête l'haï volapük,
|
||||
Âne ex aéquo au whist,
|
||||
Ôtez ce vœu déçu.
|
||||
|
||||
Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en
|
||||
canoë au delà des îles, près du mälström où brûlent les novæ.
|
||||
|
||||
Irish Gaelic (ga)
|
||||
-----------------
|
||||
|
||||
D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh
|
||||
|
||||
Hungarian (hu)
|
||||
--------------
|
||||
|
||||
Árvíztűrő tükörfúrógép
|
||||
(= flood-proof mirror-drilling machine, only all non-ASCII letters)
|
||||
|
||||
Icelandic (is)
|
||||
--------------
|
||||
|
||||
Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa
|
||||
|
||||
Sævör grét áðan því úlpan var ónýt
|
||||
(some ASCII letters missing)
|
||||
|
||||
Greek (el)
|
||||
-------------
|
||||
|
||||
Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο
|
||||
(= No more shall I see acacias or myrtles in the golden clearing)
|
||||
|
||||
Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία
|
||||
(= I uncover the soul-destroying abhorrence)
|
||||
|
||||
Hebrew (iw)
|
||||
-----------
|
||||
|
||||
? דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה
|
||||
|
||||
Polish (pl)
|
||||
-----------
|
||||
|
||||
Pchnąć w tę łódź jeża lub osiem skrzyń fig
|
||||
(= To push a hedgehog or eight bins of figs in this boat)
|
||||
|
||||
Zażółć gęślą jaźń
|
||||
|
||||
Russian (ru)
|
||||
------------
|
||||
|
||||
В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!
|
||||
(= Would a citrus live in the bushes of south? Yes, but only a fake one!)
|
||||
|
||||
Thai (th)
|
||||
---------
|
||||
|
||||
[--------------------------|------------------------]
|
||||
๏ เป็นมนุษย์สุดประเสริฐเลิศคุณค่า กว่าบรรดาฝูงสัตว์เดรัจฉาน
|
||||
จงฝ่าฟันพัฒนาวิชาการ อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร
|
||||
ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า หัดอภัยเหมือนกีฬาอัชฌาสัย
|
||||
ปฏิบัติประพฤติกฎกำหนดใจ พูดจาให้จ๊ะๆ จ๋าๆ น่าฟังเอย ฯ
|
||||
|
||||
[The copyright for the Thai example is owned by The Computer
|
||||
Association of Thailand under the Royal Patronage of His Majesty the
|
||||
King.]
|
||||
|
||||
Please let me know if you find others! Special thanks to the people
|
||||
from all over the world who contributed these sentences.
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
To embed TrueType and OpenType font files, you need to extract the
|
||||
font metrics from the font files and build the required tables using
|
||||
the utility TTF2UFM.
|
||||
|
||||
TTF2UFM is a modified version of Mark Heath's TTF 2 PT1 converter
|
||||
(http://ttf2pt1.sourceforge.net/) by Steven Wittens <steven@acko.net>
|
||||
(http://www.acko.net/blog/ufpdf). That version has been further
|
||||
modified by Ulrich Telle for use with the wxWidgets component
|
||||
wxPdfDocument.
|
||||
|
||||
Following changes where made:
|
||||
|
||||
1) Generated AFM files contain the glyph number for each character.
|
||||
2) Generated UFM files contain the bounding box for each character.
|
||||
3) OpenType support has been activated for the Windows binary,
|
||||
and the generated AFM/UFM files contain the associated
|
||||
original Unicode codes for each character.
|
||||
To embed TrueType and OpenType font files, you need to extract the
|
||||
font metrics from the font files and build the required tables using
|
||||
the utility TTF2UFM.
|
||||
|
||||
TTF2UFM is a modified version of Mark Heath's TTF 2 PT1 converter
|
||||
(http://ttf2pt1.sourceforge.net/) by Steven Wittens <steven@acko.net>
|
||||
(http://www.acko.net/blog/ufpdf). That version has been further
|
||||
modified by Ulrich Telle for use with the wxWidgets component
|
||||
wxPdfDocument.
|
||||
|
||||
Following changes where made:
|
||||
|
||||
1) Generated AFM files contain the glyph number for each character.
|
||||
2) Generated UFM files contain the bounding box for each character.
|
||||
3) OpenType support has been activated for the Windows binary,
|
||||
and the generated AFM/UFM files contain the associated
|
||||
original Unicode codes for each character.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,147 +1,147 @@
|
||||
%!PS-Adobe-3.0
|
||||
%%Creator: Adobe Illustrator(TM) 3.2
|
||||
%%AI8_CreatorVersion: 12.0.0
|
||||
%%For: (fluxus) (x)
|
||||
%%Title: (pelican.ai)
|
||||
%%CreationDate: 4/15/2006 11:28 PM
|
||||
%%BoundingBox: 38 221 564 654
|
||||
%%DocumentProcessColors: Black
|
||||
%%DocumentNeededResources: procset Adobe_packedarray 2.0 0
|
||||
%%+ procset Adobe_cshow 1.1 0
|
||||
%%+ procset Adobe_customcolor 1.0 0
|
||||
%%+ procset Adobe_pattern_AI3 1.0 0
|
||||
%%+ procset Adobe_Illustrator_AI3 1.0 1
|
||||
%AI3_ColorUsage: Color
|
||||
%%CMYKCustomColor: 1 1 1 1 ([Registration])
|
||||
%AI3_TemplateBox: 298.5 420.3896 298.5 420.3896
|
||||
%AI3_TileBox: 0.157715 0.044861 595.1177 841.9648
|
||||
%AI3_DocumentPreview: None
|
||||
%%PageOrigin:-32 11.8896
|
||||
%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
|
||||
%AI9_Flatten: 1
|
||||
%AI12_CMSettings: 00.MS
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
%%IncludeResource: procset Adobe_packedarray 2.0 0
|
||||
Adobe_packedarray /initialize get exec
|
||||
%%IncludeResource: procset Adobe_cshow 1.1 0
|
||||
%%IncludeResource: procset Adobe_customcolor 1.0 0
|
||||
%%IncludeResource: procset Adobe_pattern_AI3 1.0 0
|
||||
%%IncludeResource: procset Adobe_Illustrator_AI3 1.0 1
|
||||
%%EndProlog
|
||||
%%BeginSetup
|
||||
Adobe_cshow /initialize get exec
|
||||
Adobe_customcolor /initialize get exec
|
||||
Adobe_pattern_AI3 /initialize get exec
|
||||
Adobe_Illustrator_AI3 /initialize get exec
|
||||
%%EndSetup
|
||||
0 A
|
||||
0 O
|
||||
0.823529 g
|
||||
0 J 0 j 1 w 4 M []0 d
|
||||
406.3574 653.9336 m
|
||||
464.8369 654.4839 476.1016 604.7227 506.8555 577.2656 c
|
||||
518.2334 567.1074 538.876 556.4058 541.0449 537.8945 C
|
||||
525.793 545.1372 515.3398 557.5967 502.1924 566.9033 c
|
||||
492.1299 574.0298 478.9131 577.0991 467.4844 582.9634 c
|
||||
454.5439 589.603 441.3213 599.4785 424.4873 589.1792 c
|
||||
413.7012 582.5776 412.9746 565.8579 406.3574 554.9893 c
|
||||
401.2715 546.6338 390.2637 539.4668 382.0098 534.269 c
|
||||
370.5801 527.0684 326.3232 509.3872 322.4365 499.042 C
|
||||
331.416 493.8628 340.3955 488.6816 349.375 483.5005 C
|
||||
370.4541 474.8203 420.0293 453.8994 428.1152 435.3247 C
|
||||
427.9424 435.3247 427.7695 435.3247 427.5967 435.3247 C
|
||||
422.0781 438.2988 418.0566 441.834 411.0205 443.6128 C
|
||||
411.0205 442.9214 411.0205 442.2324 411.0205 441.541 C
|
||||
415.6807 438.0884 420.3457 434.6333 425.0059 431.1807 C
|
||||
426.5615 431.6968 428.1152 432.2153 429.6689 432.7339 C
|
||||
436.3252 429.1694 440.0146 421.5771 446.2451 417.1924 c
|
||||
468.749 401.3643 540.2861 360.04 557.624 408.9043 C
|
||||
559.6963 408.7314 561.7676 408.5586 563.8398 408.3857 C
|
||||
564.2002 369.6592 525.0967 377.3896 496.4951 382.4844 c
|
||||
485.8457 384.3838 476.0742 379.3203 465.4141 380.9307 c
|
||||
458.0371 382.0459 454.999 385.5068 447.8008 386.1123 C
|
||||
444.6514 384.4326 443.9072 382.2314 441.583 379.8955 C
|
||||
441.7559 379.5498 441.9287 379.2041 442.1016 378.8584 C
|
||||
453.1211 376.5439 474.8496 358.7158 485.6162 352.4404 c
|
||||
499.0371 344.6182 513.7188 346.8398 528.6133 341.043 C
|
||||
531.0205 346.2412 546.2559 365.248 551.9258 365.9072 C
|
||||
552.0986 365.3896 552.2715 364.8721 552.4424 364.3545 C
|
||||
553.4883 360.7607 550.0078 356.1338 548.2988 353.4756 c
|
||||
539.4346 339.6855 527.2559 336.8584 503.748 337.415 C
|
||||
507.8379 329.7158 516.5977 331.1191 522.3965 325.501 C
|
||||
510.8311 324.9131 495.6875 323.7822 486.6533 327.5732 C
|
||||
483.0273 329.6455 479.4004 331.7178 475.7744 333.79 C
|
||||
468.749 335.082 467.1133 328.6885 461.7891 327.5732 c
|
||||
451.8096 325.4854 442.6299 328.9424 433.8125 329.6455 C
|
||||
427.6152 314.2881 411.4697 330.1348 399.1045 326.5381 C
|
||||
395.1328 323.6025 391.1621 320.666 387.1904 317.7314 C
|
||||
380.2559 315.4561 375.2725 320.9756 368.0234 319.2861 C
|
||||
363.707 316.8682 359.3877 314.4502 355.0732 312.0322 C
|
||||
346.0449 325.4189 337.3516 308.3584 325.0264 313.0693 c
|
||||
319.249 315.2764 317.3877 322.9951 312.0762 324.9834 c
|
||||
302.3477 328.626 290.0044 321.8848 280.4756 325.501 c
|
||||
275.7075 327.3125 274.5767 334.043 270.1157 335.8623 C
|
||||
266.6616 335.6885 263.208 335.5166 259.7544 335.3428 C
|
||||
254.7881 336.4834 253.1904 341.9092 248.8755 343.6338 C
|
||||
245.7686 343.8066 242.6592 343.9775 239.5513 344.1494 C
|
||||
236.9614 347.4326 234.3711 350.7119 231.7803 353.9941 C
|
||||
227.1187 356.2158 222.1738 353.7666 218.312 356.0654 C
|
||||
217.707 358.9385 216.9556 361.4961 214.6855 362.8008 C
|
||||
210.5415 362.9736 206.396 363.1465 202.2529 363.3174 C
|
||||
200.6987 365.3896 199.145 367.4639 197.5903 369.5332 C
|
||||
193.9648 370.2246 190.3384 370.916 186.7119 371.6074 C
|
||||
183.0776 383.6631 179.9097 377.1084 172.7246 383.0029 C
|
||||
172.0347 384.5557 171.3433 386.1123 170.6528 387.665 C
|
||||
167.4033 390.2705 160.396 389.1025 157.1846 391.291 C
|
||||
150.2778 399.2334 143.3691 407.1787 136.4629 415.1201 C
|
||||
135.7725 415.1201 135.0811 415.1201 134.3906 415.1201 C
|
||||
129.8872 408.9912 123.022 405.2783 118.332 399.5791 c
|
||||
109.856 389.2803 103.8877 376.3271 98.6465 362.8008 c
|
||||
91.7344 344.96 87.7056 323.8467 83.6235 304.2627 c
|
||||
81.5273 294.2061 81.9316 284.2168 78.4434 275.7705 c
|
||||
74.5234 266.2822 66.5 259.7139 60.8296 251.9404 c
|
||||
54.7129 243.5557 51.2388 224.7588 40.627 221.3779 C
|
||||
40.7998 221.7217 40.9727 222.0674 41.144 222.4131 C
|
||||
39.79 227.2139 42.2383 230.333 43.2163 234.3291 C
|
||||
41.1147 235.4502 39.3652 235.8232 38.5547 238.4736 C
|
||||
40.1084 244.3438 41.6626 250.2139 43.2163 256.085 C
|
||||
42.6357 258.7764 38.5103 262.4824 40.1084 267.4814 c
|
||||
41.354 271.3818 44.9365 271.5908 45.2896 277.3262 C
|
||||
43.8086 279.5244 41.9907 280.7529 40.1084 282.5049 C
|
||||
40.1084 282.6777 40.1084 282.8506 40.1084 283.0234 C
|
||||
52.8052 283.6553 57.1475 290.5166 61.3481 299.6006 C
|
||||
53.7988 301.8721 41.7808 303.3838 38.5547 309.96 C
|
||||
46.126 307.9092 59.4692 305.3623 67.0459 307.3721 C
|
||||
69.4639 315.3115 71.8813 323.2568 74.2993 331.1992 C
|
||||
77.9248 347.085 81.5513 362.9736 85.1777 378.8584 C
|
||||
87.957 392.2158 84.7827 409.2002 90.3579 419.7832 C
|
||||
92.7749 421.6826 95.1934 423.5815 97.6104 425.481 C
|
||||
99.3364 431.1782 101.064 436.8784 102.7905 442.5757 C
|
||||
107.7554 450.8428 114.814 456.6777 119.3677 465.8892 C
|
||||
115.0508 468.8232 110.7329 471.7593 106.417 474.6938 C
|
||||
106.7617 476.2495 107.1074 477.8027 107.4531 479.3564 C
|
||||
93.3389 475.1343 85.5649 470.4336 75.8525 462.7798 C
|
||||
65.6665 462.7798 55.4756 462.7798 45.2896 462.7798 C
|
||||
45.4609 463.1255 45.6338 463.4712 45.8066 463.8169 C
|
||||
74.2612 470.5581 82.3726 479.2275 102.7905 491.7886 C
|
||||
114.7041 497.832 126.6211 503.8774 138.5347 509.9204 C
|
||||
142.1606 513.2007 145.7881 516.4824 149.4136 519.7622 C
|
||||
168.4629 531.9883 188.5562 540.2256 210.5415 549.8081 c
|
||||
217.877 553.0059 224.0391 558.6489 232.2988 561.2056 c
|
||||
245.8008 565.3853 266.6577 569.8081 284.1025 566.3867 C
|
||||
292.7354 563.4507 301.3701 560.5142 310.0039 557.5801 C
|
||||
324.5254 553.9165 346.2764 558.8447 355.0732 564.3149 c
|
||||
369.0625 573.0098 372.4688 593.5171 375.793 613.0088 C
|
||||
376.6572 620.606 377.5195 628.2046 378.3838 635.8013 C
|
||||
383.2783 647.8481 394.3535 648.647 406.3574 653.9336 C
|
||||
f
|
||||
%%PageTrailer
|
||||
gsave annotatepage grestore showpage
|
||||
%%Trailer
|
||||
Adobe_Illustrator_AI3 /terminate get exec
|
||||
Adobe_pattern_AI3 /terminate get exec
|
||||
Adobe_customcolor /terminate get exec
|
||||
Adobe_cshow /terminate get exec
|
||||
Adobe_packedarray /terminate get exec
|
||||
%%EOF
|
||||
%!PS-Adobe-3.0
|
||||
%%Creator: Adobe Illustrator(TM) 3.2
|
||||
%%AI8_CreatorVersion: 12.0.0
|
||||
%%For: (fluxus) (x)
|
||||
%%Title: (pelican.ai)
|
||||
%%CreationDate: 4/15/2006 11:28 PM
|
||||
%%BoundingBox: 38 221 564 654
|
||||
%%DocumentProcessColors: Black
|
||||
%%DocumentNeededResources: procset Adobe_packedarray 2.0 0
|
||||
%%+ procset Adobe_cshow 1.1 0
|
||||
%%+ procset Adobe_customcolor 1.0 0
|
||||
%%+ procset Adobe_pattern_AI3 1.0 0
|
||||
%%+ procset Adobe_Illustrator_AI3 1.0 1
|
||||
%AI3_ColorUsage: Color
|
||||
%%CMYKCustomColor: 1 1 1 1 ([Registration])
|
||||
%AI3_TemplateBox: 298.5 420.3896 298.5 420.3896
|
||||
%AI3_TileBox: 0.157715 0.044861 595.1177 841.9648
|
||||
%AI3_DocumentPreview: None
|
||||
%%PageOrigin:-32 11.8896
|
||||
%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
|
||||
%AI9_Flatten: 1
|
||||
%AI12_CMSettings: 00.MS
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
%%IncludeResource: procset Adobe_packedarray 2.0 0
|
||||
Adobe_packedarray /initialize get exec
|
||||
%%IncludeResource: procset Adobe_cshow 1.1 0
|
||||
%%IncludeResource: procset Adobe_customcolor 1.0 0
|
||||
%%IncludeResource: procset Adobe_pattern_AI3 1.0 0
|
||||
%%IncludeResource: procset Adobe_Illustrator_AI3 1.0 1
|
||||
%%EndProlog
|
||||
%%BeginSetup
|
||||
Adobe_cshow /initialize get exec
|
||||
Adobe_customcolor /initialize get exec
|
||||
Adobe_pattern_AI3 /initialize get exec
|
||||
Adobe_Illustrator_AI3 /initialize get exec
|
||||
%%EndSetup
|
||||
0 A
|
||||
0 O
|
||||
0.823529 g
|
||||
0 J 0 j 1 w 4 M []0 d
|
||||
406.3574 653.9336 m
|
||||
464.8369 654.4839 476.1016 604.7227 506.8555 577.2656 c
|
||||
518.2334 567.1074 538.876 556.4058 541.0449 537.8945 C
|
||||
525.793 545.1372 515.3398 557.5967 502.1924 566.9033 c
|
||||
492.1299 574.0298 478.9131 577.0991 467.4844 582.9634 c
|
||||
454.5439 589.603 441.3213 599.4785 424.4873 589.1792 c
|
||||
413.7012 582.5776 412.9746 565.8579 406.3574 554.9893 c
|
||||
401.2715 546.6338 390.2637 539.4668 382.0098 534.269 c
|
||||
370.5801 527.0684 326.3232 509.3872 322.4365 499.042 C
|
||||
331.416 493.8628 340.3955 488.6816 349.375 483.5005 C
|
||||
370.4541 474.8203 420.0293 453.8994 428.1152 435.3247 C
|
||||
427.9424 435.3247 427.7695 435.3247 427.5967 435.3247 C
|
||||
422.0781 438.2988 418.0566 441.834 411.0205 443.6128 C
|
||||
411.0205 442.9214 411.0205 442.2324 411.0205 441.541 C
|
||||
415.6807 438.0884 420.3457 434.6333 425.0059 431.1807 C
|
||||
426.5615 431.6968 428.1152 432.2153 429.6689 432.7339 C
|
||||
436.3252 429.1694 440.0146 421.5771 446.2451 417.1924 c
|
||||
468.749 401.3643 540.2861 360.04 557.624 408.9043 C
|
||||
559.6963 408.7314 561.7676 408.5586 563.8398 408.3857 C
|
||||
564.2002 369.6592 525.0967 377.3896 496.4951 382.4844 c
|
||||
485.8457 384.3838 476.0742 379.3203 465.4141 380.9307 c
|
||||
458.0371 382.0459 454.999 385.5068 447.8008 386.1123 C
|
||||
444.6514 384.4326 443.9072 382.2314 441.583 379.8955 C
|
||||
441.7559 379.5498 441.9287 379.2041 442.1016 378.8584 C
|
||||
453.1211 376.5439 474.8496 358.7158 485.6162 352.4404 c
|
||||
499.0371 344.6182 513.7188 346.8398 528.6133 341.043 C
|
||||
531.0205 346.2412 546.2559 365.248 551.9258 365.9072 C
|
||||
552.0986 365.3896 552.2715 364.8721 552.4424 364.3545 C
|
||||
553.4883 360.7607 550.0078 356.1338 548.2988 353.4756 c
|
||||
539.4346 339.6855 527.2559 336.8584 503.748 337.415 C
|
||||
507.8379 329.7158 516.5977 331.1191 522.3965 325.501 C
|
||||
510.8311 324.9131 495.6875 323.7822 486.6533 327.5732 C
|
||||
483.0273 329.6455 479.4004 331.7178 475.7744 333.79 C
|
||||
468.749 335.082 467.1133 328.6885 461.7891 327.5732 c
|
||||
451.8096 325.4854 442.6299 328.9424 433.8125 329.6455 C
|
||||
427.6152 314.2881 411.4697 330.1348 399.1045 326.5381 C
|
||||
395.1328 323.6025 391.1621 320.666 387.1904 317.7314 C
|
||||
380.2559 315.4561 375.2725 320.9756 368.0234 319.2861 C
|
||||
363.707 316.8682 359.3877 314.4502 355.0732 312.0322 C
|
||||
346.0449 325.4189 337.3516 308.3584 325.0264 313.0693 c
|
||||
319.249 315.2764 317.3877 322.9951 312.0762 324.9834 c
|
||||
302.3477 328.626 290.0044 321.8848 280.4756 325.501 c
|
||||
275.7075 327.3125 274.5767 334.043 270.1157 335.8623 C
|
||||
266.6616 335.6885 263.208 335.5166 259.7544 335.3428 C
|
||||
254.7881 336.4834 253.1904 341.9092 248.8755 343.6338 C
|
||||
245.7686 343.8066 242.6592 343.9775 239.5513 344.1494 C
|
||||
236.9614 347.4326 234.3711 350.7119 231.7803 353.9941 C
|
||||
227.1187 356.2158 222.1738 353.7666 218.312 356.0654 C
|
||||
217.707 358.9385 216.9556 361.4961 214.6855 362.8008 C
|
||||
210.5415 362.9736 206.396 363.1465 202.2529 363.3174 C
|
||||
200.6987 365.3896 199.145 367.4639 197.5903 369.5332 C
|
||||
193.9648 370.2246 190.3384 370.916 186.7119 371.6074 C
|
||||
183.0776 383.6631 179.9097 377.1084 172.7246 383.0029 C
|
||||
172.0347 384.5557 171.3433 386.1123 170.6528 387.665 C
|
||||
167.4033 390.2705 160.396 389.1025 157.1846 391.291 C
|
||||
150.2778 399.2334 143.3691 407.1787 136.4629 415.1201 C
|
||||
135.7725 415.1201 135.0811 415.1201 134.3906 415.1201 C
|
||||
129.8872 408.9912 123.022 405.2783 118.332 399.5791 c
|
||||
109.856 389.2803 103.8877 376.3271 98.6465 362.8008 c
|
||||
91.7344 344.96 87.7056 323.8467 83.6235 304.2627 c
|
||||
81.5273 294.2061 81.9316 284.2168 78.4434 275.7705 c
|
||||
74.5234 266.2822 66.5 259.7139 60.8296 251.9404 c
|
||||
54.7129 243.5557 51.2388 224.7588 40.627 221.3779 C
|
||||
40.7998 221.7217 40.9727 222.0674 41.144 222.4131 C
|
||||
39.79 227.2139 42.2383 230.333 43.2163 234.3291 C
|
||||
41.1147 235.4502 39.3652 235.8232 38.5547 238.4736 C
|
||||
40.1084 244.3438 41.6626 250.2139 43.2163 256.085 C
|
||||
42.6357 258.7764 38.5103 262.4824 40.1084 267.4814 c
|
||||
41.354 271.3818 44.9365 271.5908 45.2896 277.3262 C
|
||||
43.8086 279.5244 41.9907 280.7529 40.1084 282.5049 C
|
||||
40.1084 282.6777 40.1084 282.8506 40.1084 283.0234 C
|
||||
52.8052 283.6553 57.1475 290.5166 61.3481 299.6006 C
|
||||
53.7988 301.8721 41.7808 303.3838 38.5547 309.96 C
|
||||
46.126 307.9092 59.4692 305.3623 67.0459 307.3721 C
|
||||
69.4639 315.3115 71.8813 323.2568 74.2993 331.1992 C
|
||||
77.9248 347.085 81.5513 362.9736 85.1777 378.8584 C
|
||||
87.957 392.2158 84.7827 409.2002 90.3579 419.7832 C
|
||||
92.7749 421.6826 95.1934 423.5815 97.6104 425.481 C
|
||||
99.3364 431.1782 101.064 436.8784 102.7905 442.5757 C
|
||||
107.7554 450.8428 114.814 456.6777 119.3677 465.8892 C
|
||||
115.0508 468.8232 110.7329 471.7593 106.417 474.6938 C
|
||||
106.7617 476.2495 107.1074 477.8027 107.4531 479.3564 C
|
||||
93.3389 475.1343 85.5649 470.4336 75.8525 462.7798 C
|
||||
65.6665 462.7798 55.4756 462.7798 45.2896 462.7798 C
|
||||
45.4609 463.1255 45.6338 463.4712 45.8066 463.8169 C
|
||||
74.2612 470.5581 82.3726 479.2275 102.7905 491.7886 C
|
||||
114.7041 497.832 126.6211 503.8774 138.5347 509.9204 C
|
||||
142.1606 513.2007 145.7881 516.4824 149.4136 519.7622 C
|
||||
168.4629 531.9883 188.5562 540.2256 210.5415 549.8081 c
|
||||
217.877 553.0059 224.0391 558.6489 232.2988 561.2056 c
|
||||
245.8008 565.3853 266.6577 569.8081 284.1025 566.3867 C
|
||||
292.7354 563.4507 301.3701 560.5142 310.0039 557.5801 C
|
||||
324.5254 553.9165 346.2764 558.8447 355.0732 564.3149 c
|
||||
369.0625 573.0098 372.4688 593.5171 375.793 613.0088 C
|
||||
376.6572 620.606 377.5195 628.2046 378.3838 635.8013 C
|
||||
383.2783 647.8481 394.3535 648.647 406.3574 653.9336 C
|
||||
f
|
||||
%%PageTrailer
|
||||
gsave annotatepage grestore showpage
|
||||
%%Trailer
|
||||
Adobe_Illustrator_AI3 /terminate get exec
|
||||
Adobe_pattern_AI3 /terminate get exec
|
||||
Adobe_customcolor /terminate get exec
|
||||
Adobe_cshow /terminate get exec
|
||||
Adobe_packedarray /terminate get exec
|
||||
%%EOF
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user