diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2017-05-03 15:29:42 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2017-05-03 15:29:42 (GMT) |
commit | 937cfaf1a06a4a9d0c8ba119d7ce820878ff9058 (patch) | |
tree | f7b0b1bcce9ae963a0a069eafa552350eb4ee391 /libxml2/os400 | |
parent | 4b8453f0303492a1de2dcf854555f6429fac550e (diff) | |
download | blt-937cfaf1a06a4a9d0c8ba119d7ce820878ff9058.zip blt-937cfaf1a06a4a9d0c8ba119d7ce820878ff9058.tar.gz blt-937cfaf1a06a4a9d0c8ba119d7ce820878ff9058.tar.bz2 |
inital commit
Diffstat (limited to 'libxml2/os400')
79 files changed, 33264 insertions, 0 deletions
diff --git a/libxml2/os400/README400 b/libxml2/os400/README400 new file mode 100644 index 0000000..fff923c --- /dev/null +++ b/libxml2/os400/README400 @@ -0,0 +1,226 @@ + +Implementation notes: + + This is a true OS/400 implementation, not a PASE implementation (for PASE, +use an AIX implementation). + + The biggest problem with OS/400 is EBCDIC. The current libxml2 implementation +uses UTF-8 internally. To ease encoding conversion between the calling +applications and libxml2, supplementary "convert and latch" functions are +provided (See below). To bind the EBCDIC OS/400 system calls and libxml2, +an ASCII run-time environment (QADRT) has been used and wrapper functions have +been designed. + +Other problems are: +- Source code line length: to be stored in DB2 members, source files may not + have lines longer than 100 characters. Some header and documentation files + have been modified accordingly. +- va_list dereferencing: the OS/400 implementation of va_list type is an array + but the compiler forbids explicit array dereferencing. Source files have + been updated accordingly. +- Depending on the compilation/execution environment, it is possible that + stdin/stdout/stderr are not associated with a file descriptor; as a side + effect, open() may return a file descriptor value 0, 1 or 2 that is NOT + a C standard file. Thus using such a number may be inaccurate. +- iconv_open() arguments: OS/400 uses non-standard encoding names and does not + support standard names. For this reason, a name wrapper has been designed. +- dlopen() (support for xmodule): the function and its corollaries are not + provided by the OS/400 library. However a local implementation is provided. + + +Compiling on OS/400: + +_ As a prerequisite, QADRT development environment must be installed. +_ Install the libxml2 source directory in IFS. +_ Enter shell (QSH) +_ Change current directory to the libxml2 installation directory +_ Change current directory to ./os400 +_ Edit file iniscript.sh. You may want to change tunable configuration + parameters, like debug info generation, optimisation level, listing option, + target library, zlib availability, etc. +_ Copy any file in the current directory to makelog (i.e.: + cp initscript.sh makelog): this is intended to create the makelog file with + an ASCII CCSID! +_ Enter the command "sh make.sh >makelog 2>&1' +_ Examine the makelog file to check for compilation errors. + + Leaving file initscript.sh unchanged, this will produce the following +OS/400 objects: +_ Library LIBXML2. All other objects will be stored in this library. +_ Modules for all libxml2 units, with full debug info and no code optimization. +_ Binding directory LIBXML2_A, to be used at calling program link time for + statically binding the modules (specify BNDSRVPGM(QADRTTS QGLDCLNT QGLDBRDR) + when creating a program using LIBXML2_A). +_ Service program LIBXML2. To be used at calling program run-time + when this program has dynamically bound libxml2 at link time. +_ Binding directory LIBXML2. To be used to dynamically bind libxml2 when + linking a calling program. +_ Source file LIBXML. It contains all the header members needed to compile a + C/C++ module using libxml2. +_ Standard and additional C/C++ libxml2 header members (possibly renamed) in + file LIBXML. +_ IFS directory /libxml2 with subdirectory include/libxml containing all + C/C++ header files for IFS-based compilation. +_ Source file LIBXMLRPG. It contains all the include members needed to compile a + ILE/RPG module/program using libxml2 (ILE/RPG binding). +_ ILE/RPG binding include members (possibly renamed) in file LIBXMLRPG. +_ IFS subdirectory /libxml2/include/libxmlrpg containing all ILE/RPG include + files for IFS-based compilation. + + +Renamed header files in DB2 members: + DB2 member names are limited to 10 characters, thus the following C/C++ +header members are renamed as: + parserInternals.h --> PARSERINTE + schemasInternals.h --> SCHEMASINT + xmlautomata.h --> XMLAUTOMAT + xmlschemastype.h --> SCHMTYPES + xpathInternals.h --> XPATHINTER +IFS header files are NOT renamed. +ILE/RPG headers are processed likewise. + + +Special programming consideration: + +QADRT being used, the following points must be considered: +_ If static binding is used, service program QADRTTS must be linked too. +_ The EBCDIC CCSID used by QADRT is 37 by default, NOT THE JOB'S CCSID. If + another EBCDIC CCSID is required, it must be set via a locale through a call + to setlocale_a (QADRT's setlocale() ASCII wrapper) with category LC_ALL or + LC_CTYPE, or by setting environment variable QADRT_ENV_LOCALE to the locale + object path before executing the program. +_ Always use *IFSIO or *IFS64IO to compile calling programs. + + + +Supplementary (non libxml2 standard) support procedures for OS/400. + + As cited above, there are some procedures to ease encoding conversion of +libxml2 function arguments and results: the mechanism is based on +dictionaries. The functions convert a string, latch the result in a dictionary +to ensure its persistence and return its address. It is the caller's +responsibility to clean the dictionary when it becomes too big or disappears. + +The procedures are: + +#include <libxml/transcode.h> + +const char * xmlTranscodeResult(const xmlChar * s, + const char * encoding, + xmlDictPtr * dict, + void (*freeproc)(const void *)); + +const xmlChar * xmlTranscodeString(const char * s, + const char * encoding, + xmlDictPtr * dict); + +const xmlChar * xmlTranscodeWString(const char * s, + const char * encoding, + xmlDictPtr * dict); + +const xmlChar * xmlTranscodeWString(const char * s, + const char * encoding, + xmlDictPtr * dict); + +where: +s is the string to translate. +encoding is the alternate character encoding. If null, the current job's + encoding (CCSID) is used. +dict is the address of the latching directory. If NULL, the procedure + functions as a simple non-latching encoding converter and + its result value should be freed by the caller. +freeproc is a procedure to release the original string, or NULL. + +xmlTranscodeResult() converts from UTF-8 to the given alternate encoding. +xmlTranscodeString() converts from the given 8-bit encoding to UTF-8 (note that + UTF-8 itself is considered as a 8-bit encoding). +xmlTranscodeWString() converts from the given 16-bit encoding to UTF-8. +xmlTranscodeHString() converts from the given 32-bit encoding to UTF-8. + + +To shorten statements using these functions, shorthands are defined: + +xmlTR for xmlTranscodeResult +xmlTS for xmlTranscodeString +xmlTW for xmlTranscodeWString +xmlTH for xmlTranscodeHstring + +These shorthands may be disabled by defining XML_NO_SHORT_NAMES before +libxml/transcode.h inclusion. + +A directory pointer must be preset to NULL before the first call using it to +one of the above procedure. + +To release a latching directory, use function + +void xmlZapDict(xmlDictPtr * dict); + + +Example: + +#include <libxml/transcode.h> +#include <libxml/tree.h> + +xmlDocPtr mySimpleXMLDoc(char * element, char * text) +{ + xmlDocPtr doc; + xmlNodePtr node; + xmlDictPtr dict = NULL; + + /* element and text are encoded in the current job's encoding. */ + + doc = xmlNewDoc(); + xmlNewTextChild((xmlNodePtr) doc, NULL, xmlTS(element, NULL, + &dict), xmlTS(text, NULL, &dict)); + xmlZapDict(&dict); + return doc; +} + + +Additionally, a formatter into latched/dynamic storage is provided: + +const char * xmlVasprintf(xmlDictPtr * dict, + const char * encoding, + const xmlChar * fmt, + va_list args); + + +xmllint and xmlcatalog programs: + + These programs are fully implemented at the qshell level, with standard +command line options. Links to these are installed in sub-directory bin of +the IFS installation directory. + CL command interfaces to these programs are also provided with limited +support. In particular, interactive mode is not supported and argument count +and lengths are limited by the CL command syntax. + + +ILE/RPG binding: + + All standard types and procedures are provided. Since ILE/RPG does not +support macros, they have not been ported. However some of them are emulated +as functions: these are the more useful ones (xmlXPathNodeSetGetLength, +xmlXPathNodeSetItem, xmlXPathNodeSetIsEmpty, htmlDefaultSubelement, +htmlElementAllowedHereDesc, htmlRequiredAttrs) and the global/threaded +variables access macros. These variables can be read with function +get_xxx(void), where xxxx is the name of the variable; they may be set by +calling function set_xxxx(value), where value is of the same type as the +variable. + + The C va_list is not implemented as such in ILE/RPG. Functions implementing +va_list and associated methods are provided: + + /include "libxmlrpg/xmlstdarg" + + d xmlVaStart pr + d list like(xmlVaList) + d lastargaddr * value + d lastargsize 10u 0 value + + d xmlVaArg pr + d list like(xmlVaList) + d dest * value + d argsize 10i 0 value + + d xmlVaEnd pr + d list like(xmlVaList) diff --git a/libxml2/os400/dlfcn/dlfcn.c b/libxml2/os400/dlfcn/dlfcn.c new file mode 100644 index 0000000..77190b3 --- /dev/null +++ b/libxml2/os400/dlfcn/dlfcn.c @@ -0,0 +1,1213 @@ +/** +*** dlopen(), dlclose() dlsym(), dlerror() emulation for OS/400. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#include <stdarg.h> +#include <stdio.h> +#include <ctype.h> +#include <errno.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <dirent.h> +#include <pthread.h> + +#include <sys/types.h> +#include <sys/stat.h> + +#include <except.h> /* AS400 exceptions. */ +#include <miptrnam.h> /* MI pointers support. */ +#include <qusec.h> /* Error structures. */ +#include <qp0lstdi.h> /* Path to QSYS object name. */ +#include <qp0z1170.h> /* For Qp0zInitEnv(). */ +#include <qleawi.h> /* For QleActBndPgmLong() definitions. */ +#include <qsy.h> /* Qualified name structure. */ +#include <qmhrtvm.h> /* Retrieve message from message file. */ + +#include <mih/rinzstat.h> +#include <mih/matactex.h> + +#include "libxml/hash.h" +#include "dlfcn.h" + + +/** +*** Maximum internal path length. +**/ + +#define MAXPATHLEN 5120 + + +/** +*** Maximum error string length. +**/ + +#define MAX_ERR_STR 511 + + +/** +*** Field address macro. +**/ + +#define offset_by(t, b, o) ((t *) ((char *) (b) + (unsigned int) (o))) + + +/** +*** Global flags. +**/ + +#define INITED 000001 /* Package has been initialized. */ +#define THREADS 000002 /* Multithreaded job. */ +#define MULTIBUF 000004 /* One error buffer per thread. */ + + +/** +*** DLL handle private structure. +**/ + +typedef struct { + Qle_ABP_Info_Long_t actinfo; /* Activation information. */ + _SYSPTR pointer; /* Pointer to DLL object. */ + unsigned int actcount; /* Activation count. */ +} dlinfo; + + +/** +*** Per-thread structure. +**/ + +typedef struct { + unsigned int lockcount; /* Mutex lock count. */ + unsigned int iserror; /* Flag error present. */ + char str[MAX_ERR_STR + 1]; /* Error string buffer. */ +} dlts_t; + + +static pthread_mutex_t dlmutex = PTHREAD_MUTEX_INITIALIZER; +static xmlHashTablePtr dldir = (xmlHashTablePtr) NULL; /* DLL directory. */ +static unsigned int dlflags = 0; /* Package flags. */ +static pthread_key_t dlkey; +static dlts_t static_buf; /* Static error buffer. */ + + + +static void +dlthreadterm(void * mem) + +{ + free(mem); + pthread_setspecific(dlkey, NULL); +} + + +static void +dlterm(void) + +{ + void * p; + + if (dlflags & MULTIBUF) { + p = pthread_getspecific(dlkey); + + if (p) + dlthreadterm(p); + } + + if (dlflags & THREADS) + pthread_mutex_lock(&dlmutex); + + if (dldir) { + xmlHashFree(dldir, (xmlHashDeallocator) NULL); + dldir = NULL; + } + + if (dlflags & MULTIBUF) + pthread_key_delete(dlkey); + + dlflags |= ~(INITED | MULTIBUF); + pthread_mutex_unlock(&dlmutex); + pthread_mutex_destroy(&dlmutex); +} + + +static void +dlinit(void) + +{ + int locked; + + /** + *** Initialize the package. + *** Should be call once per process. + **/ + + locked = !pthread_mutex_lock(&dlmutex); + + if (!(dlflags & INITED)) { + dlflags &= ~THREADS; + + if (locked) + dlflags |= THREADS; + + Qp0zInitEnv(); + dldir = xmlHashCreate(16); + dlflags &= ~MULTIBUF; + + if (dlflags & THREADS) + if (!pthread_key_create(&dlkey, dlthreadterm)) + dlflags |= MULTIBUF; + + atexit(dlterm); + dlflags |= INITED; + } + + if (locked) + pthread_mutex_unlock(&dlmutex); +} + + +static void +dlthreadinit(void) + +{ + dlts_t * p; + + if (!(dlflags & INITED)) + dlinit(); + + if (dlflags & MULTIBUF) { + p = pthread_getspecific(dlkey); + + if (!p) { + p = (dlts_t *) malloc(sizeof *p); + + if (p) { + p->lockcount = 0; + p->iserror = 0; + + if (pthread_setspecific(dlkey, p)) + free(p); + } + } + } +} + + +static void +dllock(void) + +{ + dlts_t * p; + + if (!(dlflags & THREADS)) + return; + + if (dlflags & MULTIBUF) { + p = pthread_getspecific(dlkey); + + if (p && p->lockcount) { + p->lockcount++; + return; + } + } + else + p = (dlts_t *) NULL; + + if (pthread_mutex_lock(&dlmutex)) + return; + + if (p) + p->lockcount++; +} + + +static void +dlunlock(void) + +{ + dlts_t * p; + + if (!(dlflags & THREADS)) + return; + + if (dlflags & MULTIBUF) { + p = pthread_getspecific(dlkey); + + if (p && p->lockcount > 1) { + p->lockcount--; + return; + } + } + else + p = (dlts_t *) NULL; + + if (pthread_mutex_unlock(&dlmutex)) + return; + + if (p) + p->lockcount--; +} + + +const char * +dlerror(void) + +{ + dlts_t * p; + + dlthreadinit(); + + if (!(dlflags & MULTIBUF)) + p = &static_buf; + else if (!(p = (dlts_t *) pthread_getspecific(dlkey))) + p = &static_buf; + + if (!p->iserror) + return (const char *) NULL; + + p->iserror = 0; + return p->str; +} + + +static void +dlseterror_from_errno(unsigned int err_no) + +{ + dlts_t * p; + + if (!(dlflags & MULTIBUF)) + p = &static_buf; + else if (!(p = (dlts_t *) pthread_getspecific(dlkey))) + p = &static_buf; + + strcpy(p->str, strerror(err_no)); + p->iserror = 1; +} + + +static void +dlseterror_from_exception(volatile _INTRPT_Hndlr_Parms_T * excp) + +{ + int i; + Qmh_Rtvm_RTVM0300_t * imp; + char * cp; + _INTRPT_Hndlr_Parms_T * p; + dlts_t * q; + char rtvmbuf[30000]; + Qus_EC_t errinfo; + + p = (_INTRPT_Hndlr_Parms_T *) excp; + errinfo.Bytes_Provided = 0; /* Exception on error. */ + QMHRTVM(rtvmbuf, sizeof rtvmbuf, "RTVM0300", p->Msg_Id, + "QCPFMSG QSYS ", p->Ex_Data, p->Msg_Data_Len, + "*YES ", "*NO ", &errinfo); + imp = offset_by(Qmh_Rtvm_RTVM0300_t, rtvmbuf, 0); + + if (!(dlflags & MULTIBUF)) + q = &static_buf; + else if (!(q = (dlts_t *) pthread_getspecific(dlkey))) + q = &static_buf; + + if (i = imp->Length_Message_Returned) + cp = offset_by(char, imp, imp->Offset_Message_Returned); + else if (i = imp->Length_Help_Returned) + cp = offset_by(char, imp, imp->Offset_Help_Returned); + else { + q->iserror = 0; + return; + } + + q->iserror = 1; + + if (i > sizeof q->str - 1) + i = sizeof q->str - 1; + + memcpy(q->str, cp, i); + q->str[i] = '\0'; +} + + +static int +dlparentpath(const char * path, size_t len) + +{ + if (len <= 1) + return len; + + while (path[--len] != '/') + ; + + return len? len: 1; +} + + +static int +dlmakepath(char * path, size_t pathlen, const char * tail, size_t taillen) + +{ + int i; + + if (taillen && tail[0] == '/') + pathlen = 0; + + for (;;) { + while (taillen && *tail == '/') { + tail++; + taillen--; + } + + if (!taillen) + break; + + for (i = 0; i < taillen; i++) + if (tail[i] == '/') + break; + + if (*tail == '.') + switch (i) { + + case 2: + if (tail[1] != '.') + break; + + pathlen = dlparentpath(path, pathlen); + + case 1: + tail += i; + taillen -= i; + continue; + } + + if (pathlen + i + 1 >= MAXPATHLEN) { + errno = ENAMETOOLONG; + return -1; + } + + path[pathlen++] = '/'; + memcpy(path + pathlen, tail, i); + pathlen += i; + } + + if (!pathlen) + path[pathlen++] = '/'; + + path[pathlen] = '\0'; + return pathlen; +} + + +static int +dlresolveLink(const char * path, char * buf, size_t bufsiz) + +{ + int n; + int l1; + int l2; + struct stat sbuf; + char buf1[MAXPATHLEN + 1]; + char buf2[MAXPATHLEN + 1]; + + /** + *** Resolve symbolic link to IFS object name. + **/ + + if (!buf) { + errno = EFAULT; + return -1; + } + + if (!path || !*path || !bufsiz) { + errno = EINVAL; + return -1; + } + + if (*path != '/') { + if (!getcwd(buf1, sizeof buf1)) + return -1; + + l1 = strlen(buf1); + } + else + l1 = 0; + + l1 = dlmakepath(buf1, l1, path, strlen(path)); + n = 0; + + for (;;) { + if (l1 < 0) + return -1; + + if (n++ >= 256) { + errno = ELOOP; + return -1; + } + + if (lstat(buf1, &sbuf)) { + if (errno == ENOENT) + break; + + return -1; + } + + if (!S_ISLNK(sbuf.st_mode)) + break; + + if (sbuf.st_size > MAXPATHLEN) { + errno = ENAMETOOLONG; + return -1; + } + + l2 = readlink(buf1, buf2, MAXPATHLEN + 1); + + if (l2 < 0) + return -1; + + if (buf2[0] != '/') + l1 = dlparentpath(buf1, l1); + + l1 = dlmakepath(buf1, l1, buf2, l2); + } + + if (l1 >= bufsiz) { + errno = ENAMETOOLONG; + return -1; + } + + memcpy(buf, buf1, l1 + 1); + return l1; +} + + +static int +dlGetObjectName(Qp0l_QSYS_Info_t * qsysinfo, const char * dir, + int dirlen, const char * link) + +{ + int n; + char * namebuf; + Qlg_Path_Name_T * qptp; + char pathbuf[sizeof(Qlg_Path_Name_T) + _QP0L_DIR_NAME_LG + 4]; + Qus_EC_t errinfo; + struct stat sbuf; + + /** + *** Get QSYS object library/name/member and type corresponding to + *** the symbolic `link' in directory `dir'. + **/ + + if (!qsysinfo) { + errno = EFAULT; + return -1; + } + + if (!dir && !link) { + errno = EINVAL; + return -1; + } + + qptp = (Qlg_Path_Name_T *) pathbuf; + namebuf = pathbuf + sizeof(Qlg_Path_Name_T); + n = 0; + + /** + *** Build full path. + **/ + + if (dir) { + if (dirlen < 0 || dirlen > _QP0L_DIR_NAME_LG + 4) + dirlen = _QP0L_DIR_NAME_LG + 4; + + while (*dir && n < dirlen) + namebuf[n++] = *dir++; + } + + if (n && namebuf[n - 1] == '/') + n--; + + if (link) { + if (*link && *link != '/' && n < _QP0L_DIR_NAME_LG + 4) + namebuf[n++] = '/'; + + while (*link && n < _QP0L_DIR_NAME_LG + 4) + namebuf[n++] = *link++; + } + + if (!n || n > _QP0L_DIR_NAME_LG) { + errno = ENAMETOOLONG; + return -1; + } + + namebuf[n] = '\0'; + n = dlresolveLink(namebuf, namebuf, _QP0L_DIR_NAME_LG + 1); + + if (n == -1) + return -1; + + if (stat(namebuf, &sbuf)) + return -1; + + memset((char *) qptp, 0, sizeof *qptp); + qptp->Path_Length = n; + qptp->Path_Name_Delimiter[0] = '/'; + errinfo.Bytes_Provided = sizeof errinfo; + Qp0lCvtPathToQSYSObjName(qptp, qsysinfo, "QSYS0100", sizeof *qsysinfo, + 0, &errinfo); + return errinfo.Bytes_Available? -1: 0; +} + + +static const char * +getcomponent(char * dst, const char * src) + +{ + int i; + + /** + *** Get a path component of at most 10 characters and + *** map it to upper case. + *** Return the address of the next delimiter in source. + **/ + + for (i = 0;; src++) { + if (!*src || *src == ' ' || *src == '/') { + *dst = '\0'; + return src; + } + + if (i < 10) { + *dst++ = toupper(*src); + i++; + } + } +} + + +static int +dlpath2QSYS(Qp0l_QSYS_Info_t * qsysinfo, const char * path, const char * dftlib) + +{ + unsigned int flags; + char * cp; + + /** + *** Convert the given path to a QSYS object name. + *** Syntax rules for paths are: + *** + *** '/'+ [ <library> [ '/'+ <file> [ '/'+ <member> ] ] '/'* ] + *** <library> '/'+ <file> [ '/'+ <member> ] '/'* + *** <file> '/'* + *** + *** If default library is not given, *LIBL is assumed. + *** Components may no contain spaces. They are translated to + *** uppercase. Only the first 10 characters are significant. + *** There is no check for the validity of the given components and + *** for the object existence. + *** Component types are not in the path, but generated internally. + *** CCSID is not processed. + *** + *** Return 0 upon success, else -1. + **/ + + if (!qsysinfo || !path) { + errno = EFAULT; + return -1; + } + + /** + *** Strip leading spaces. + **/ + + while (*path == ' ') + path++; + + /** + *** Check for null path. + **/ + + if (!*path) { + errno = EINVAL; + return -1; + } + + /** + *** Preset the result structure. + **/ + + memset((char *) qsysinfo, 0, sizeof *qsysinfo); + + /** + *** Determine the format. + **/ + + if (*path == '/') { + /** + *** Library component present. + **/ + + while (*++path == '/') + ; + + if (!*path || *path == ' ') + strcpy(qsysinfo->Lib_Name, "QSYS"); + else + path = getcomponent(qsysinfo->Lib_Name, path); + + /** + *** Check for file component and get it. + **/ + + if (*path == '/') { + while (*++path == '/') + ; + + if (*path && *path != ' ') + path = getcomponent(qsysinfo->Obj_Name, path); + } + } + else { + /** + *** The mandatory component is the <file>. + **/ + + path = getcomponent(qsysinfo->Obj_Name, path); + + while (*path == '/') + path++; + + /** + *** If there is a second component, move the first to + *** the library name and parse the file name. + **/ + + if (*path && *path != ' ') { + strcpy(qsysinfo->Lib_Name, qsysinfo->Obj_Name); + memset(qsysinfo->Obj_Name, 0, + sizeof qsysinfo->Obj_Name); + path = getcomponent(qsysinfo->Obj_Name, path); + } + else + strcpy(qsysinfo->Lib_Name, dftlib? dftlib: "*LIBL"); + } + + /** + *** Check and set-up member. + **/ + + while (*path == '/') + path++; + + if (*path && *path != ' ') { + path = getcomponent(qsysinfo->Mbr_Name, path); + strcpy(qsysinfo->Mbr_Type, "*MBR"); + + while (*path == '/') + path++; + } + + strcpy(qsysinfo->Lib_Type, "*LIB"); + + if (qsysinfo->Obj_Name[0]) + strcpy(qsysinfo->Obj_Type, "*FILE"); + + qsysinfo->Bytes_Returned = sizeof *qsysinfo; + qsysinfo->Bytes_Available = sizeof *qsysinfo; + + /** + *** Strip trailing spaces. + **/ + + while (*path == ' ') + path++; + + if (*path) { + errno = EINVAL; + return -1; + } + + return 0; +} + + +static int +dl_ifs_link(Qp0l_QSYS_Info_t * qsysinfo, const char * pathname) + +{ + /** + *** If `pathname' is a link found in IFS, set `qsysinfo' to its + *** DB2 name. + *** Return 0 if OK, else -1. + **/ + + return dlGetObjectName(qsysinfo, (const char *) NULL, 0, pathname); +} + + +static int +dl_path_link(Qp0l_QSYS_Info_t * qsysinfo, const char * pathvar, + const char * filename, int (* testproc)(const Qp0l_QSYS_Info_t *)) + +{ + const char * p; + const char * q; + unsigned int i; + const char * path; + + /** + *** If `filename' is not a path and is a link found in one of the + *** colon-separated paths in environment variable `pathvar', + *** set `qsysinfo' to its DB2 name. + *** Return 0 if OK, else -1. + **/ + + i = _QP0L_DIR_NAME_LG; + + for (p = filename; *p; p++) + if (*p == '/' || !--i) + return -1; /* Too long or a path. */ + + /** + *** Make sure we have the LD_LIBRARY_PATH environment + *** variable value. + **/ + + path = getenv(pathvar); + + if (!path) + return -1; /* No path list. */ + + /** + *** Try in each path listed. + **/ + + q = path; + + if (!*q) + return -1; /* No path list. */ + + for (;;) { + for (p = q; *p && *p != ':'; p++) + ; + + if (p > q) /* Ignore null path. */ + if (!dlGetObjectName(qsysinfo, q, p - q, filename)) + if (!testproc || (*testproc)(qsysinfo)) + return 0; /* Found: return. */ + + if (!*p) + break; + + q = p + 1; + } + + errno = ENOENT; + return -1; +} + + +static int +dl_DB2_path(Qp0l_QSYS_Info_t * qsysinfo, const char * pathname) + +{ + if (dlpath2QSYS(qsysinfo, pathname, (const char *) NULL)) + return -1; + + if (qsysinfo->Mbr_Type[0]) + return -1; /* Service program may not have members. */ + + if (!qsysinfo->Obj_Type[0]) + return -1; /* Object must be specified. */ + + strcpy(qsysinfo->Obj_Type, "*SRVPGM"); /* Set our object type. */ + return 0; +} + + +static int +dl_DB2_name(char * dst, const char * name) + +{ + int i; + + for (i = 0; i < 10; i++) { + switch (*name) { + + default: + if (!islower(*name)) + break; + + case '\0': + case '/': + case ' ': + return -1; + } + + *dst++ = *name++; + } + + if (!i) + return -1; + + *dst = '\0'; + return 0; +} + + +static int +dl_qualified_object(Qp0l_QSYS_Info_t * qsysinfo, const char * pathname) + +{ + memset((char *) qsysinfo, 0, sizeof *qsysinfo); + + if (dl_DB2_name(qsysinfo->Obj_Name, pathname) || + dl_DB2_name(qsysinfo->Lib_Name, pathname + 10)) + return -1; + + strcpy(qsysinfo->Lib_Type, "*LIB"); + strcpy(qsysinfo->Obj_Type, "*SRVPGM"); + return 0; +} + + +static int +dl_lib_object(Qp0l_QSYS_Info_t * qsysinfo, + const char * libname, const char * pathname) + +{ + int i; + char * cp; + + strcpy(qsysinfo->Lib_Name, libname); + strcpy(qsysinfo->Lib_Type, "*LIB"); + strcpy(qsysinfo->Obj_Type, "*SRVPGM"); + cp = qsysinfo->Obj_Name; + + while (*pathname == ' ') + pathname++; + + for (i = 0;; pathname++) { + switch (*pathname) { + + case '\0': + case ' ': + break; + + case '/': + return -1; + + default: + if (i < 10) + *cp++ = toupper(*pathname); + + i++; + continue; + } + + break; + } + + while (*pathname == ' ') + pathname++; + + if (!i || *pathname) + return -1; + + *cp = '\0'; + return 0; +} + + +static int +dl_is_srvpgm(const Qp0l_QSYS_Info_t * qsysinfo) + +{ + struct stat sbuf; + char namebuf[100]; + + if (!qsysinfo->Lib_Name[0] || strcmp(qsysinfo->Lib_Type, "*LIB") || + !qsysinfo->Obj_Name[0] || strcmp(qsysinfo->Obj_Type, "*SRVPGM") || + qsysinfo->Mbr_Name[0] || qsysinfo->Mbr_Type[0]) + return 0; + + /** + *** Build the IFS path name for the DB2 object. + **/ + + sprintf(namebuf, "%s/%s.LIB/%s.SRVPGM", + strcmp(qsysinfo->Lib_Name, "QSYS")? "/QSYS.LIB": "", + qsysinfo->Lib_Name, qsysinfo->Obj_Name); + + return stat(namebuf, &sbuf) == 0; +} + + +static int +dlreinit(dlinfo * dlip) + +{ + RINZ_TEMPL_T t; + RINZ_TEMPL_T * p; + volatile _INTRPT_Hndlr_Parms_T excbuf; + + if (dlip->actinfo.Flags & QLE_ABP_WAS_ACTIVE) + return 0; + + /** + *** Attempt to reinitialize the service program that was loaded. + *** The service program must be created to allow re-initialization: + *** ALWRINZ(*YES) for this to work. The default is + *** ALWRINZ(*NO). + **/ + +#pragma exception_handler(err, excbuf, 0, _C2_MH_ESCAPE, _CTLA_HANDLE_NO_MSG) + p = &t; + t.rinz_pgm = dlip->pointer; + t.rinz_agpmk = dlip->actinfo.Act_Grp_Mark; + _RINZSTAT(p); +#pragma disable_handler + + return 0; + +err: + if (!memcmp((char *) excbuf.Msg_Id, "MCH4421", 7)) + return 0; /* Program cannot be reinitialized. */ + + dlseterror_from_exception(&excbuf); + return -1; +} + + +void * +dlsym(void * handle, const char * symbol) + +{ + dlinfo * dlip; + void * p; + int export_type; + Qus_EC_t errinfo; + volatile _INTRPT_Hndlr_Parms_T excbuf; + static int zero = 0; + + dlthreadinit(); + + if (!handle || !symbol) { + dlseterror_from_errno(EFAULT); + return (void *) NULL; + } + + dlip = (dlinfo *) handle; + +#pragma exception_handler(error, excbuf, 0, _C2_MH_ESCAPE, _CTLA_HANDLE_NO_MSG) + errinfo.Bytes_Provided = 0; + QleGetExpLong(&dlip->actinfo.Act_Mark, &zero, &zero, + (char *) symbol, &p, &export_type, &errinfo); + return p; +#pragma disable_handler + +error: + dlseterror_from_exception(&excbuf); + return (void *) NULL; +} + + +int +dlclose(void * handle) + +{ + dlinfo * dlip; + void (* _fini)(void); + + dlthreadinit(); + + if (!handle) { + dlseterror_from_errno(EFAULT); + return -1; + } + + dlip = (dlinfo *) handle; + + if (dlip->actcount) { + if (--(dlip->actcount)) + return 0; + + if (_fini = dlsym(handle, "_fini")) + (*_fini)(); + } + + return dlreinit(dlip); +} + + +static void * +dlopenqsys(const Qp0l_QSYS_Info_t * dllinfo) + +{ + dlinfo * dlip; + dlinfo * dlip2; + void (* _init)(void); + unsigned int i; + _SYSPTR pgmptr; + unsigned long long actmark; + Qus_EC_t errinfo; + char actmarkstr[2 * sizeof actmark + 1]; + static int actinfo_size = sizeof dlip->actinfo; + volatile _INTRPT_Hndlr_Parms_T excbuf; + + /** + *** Capture any type of error and if any occurs, + *** return not found. + **/ + +#pragma exception_handler(error1, excbuf, 0, _C2_MH_ESCAPE, _CTLA_HANDLE_NO_MSG) + pgmptr = rslvsp(WLI_SRVPGM, (char *) dllinfo->Obj_Name, + (char *) dllinfo->Lib_Name ,_AUTH_NONE); + + if (!pgmptr) { + errno = ENOENT; + return (void *) NULL; + } + + /** + *** Create a new DLL info block. + **/ + + dlip = (dlinfo *) malloc(sizeof *dlip); + + if (!dlip) + return (void *) NULL; /* Cannot create block. */ +#pragma disable_handler + + dllock(); + +#pragma exception_handler(error2, excbuf, 0, _C2_MH_ESCAPE, _CTLA_HANDLE_NO_MSG) + memset((char *) dlip, 0, sizeof *dlip); + dlip->pointer = pgmptr; + + /** + *** Activate the DLL. + **/ + + errinfo.Bytes_Provided = 0; + QleActBndPgmLong(&pgmptr, &actmark, + &dlip->actinfo, &actinfo_size, &errinfo); + dlip->actinfo.Act_Mark = actmark; + + /** + *** Dummy string encoding activation mark to use as hash table key. + **/ + + for (i = 0; actmark; actmark >>= 6) + actmarkstr[i++] = 0x40 + (actmark & 0x3F); + + actmarkstr[i] = '\0'; + + /** + *** Check if already activated. + **/ + + dlip2 = (dlinfo *) xmlHashLookup(dldir, actmarkstr); + + if (dlip2) { + free((char *) dlip); + dlip = dlip2; + } + else if (xmlHashAddEntry(dldir, (const xmlChar *) actmarkstr, dlip)) { + dlreinit(dlip); + free((char *) dlip); + dlunlock(); + return (void *) NULL; + } +#pragma disable_handler + +#pragma exception_handler(error2, excbuf, 0, _C2_MH_ESCAPE, _CTLA_HANDLE_NO_MSG) + + /** + *** Bump activation counter. + **/ + + if (!(dlip->actcount++) && (_init = dlsym(dlip, "_init"))) + (*_init)(); + + dlunlock(); + + /** + *** Return the handle. + **/ + + return (void *) dlip; +#pragma disable_handler + +error2: + free((char *) dlip); + dlunlock(); + +error1: + dlseterror_from_exception(&excbuf); + return (void *) NULL; +} + + +void * +dlopen(const char * filename, int flag) + +{ + void * dlhandle; + int sverrno; + Qp0l_QSYS_Info_t dllinfo; + + sverrno = errno; + errno = 0; + + dlthreadinit(); + + if (!filename) { + dlseterror_from_errno(EFAULT); + errno = sverrno; + return NULL; + } + + /** + *** Try to locate the object in the following order: + *** _ `filename' is an IFS path. + *** _ `filename' is not a path and resides in one of + *** LD_LIBRARY_PATH colon-separated paths. + *** _ `filename' is not a path and resides in one of + *** PATH colon-separated paths. + *** _ `filename' is a DB2 path (as /library/object). + *** _ `filename' is a qualified object name. + *** _ `filename' is an object in *CURLIB. + *** _ `filename' is an object in *LIBL. + **/ + + if (!dl_ifs_link(&dllinfo, filename) && dl_is_srvpgm(&dllinfo)) + dlhandle = dlopenqsys(&dllinfo); + else if (!dl_path_link(&dllinfo, + "LD_LIBRARY_PATH", filename, dl_is_srvpgm)) + dlhandle = dlopenqsys(&dllinfo); + else if (!dl_path_link(&dllinfo, "PATH", filename, dl_is_srvpgm)) + dlhandle = dlopenqsys(&dllinfo); + else if (!dl_DB2_path(&dllinfo, filename) && dl_is_srvpgm(&dllinfo)) + dlhandle = dlopenqsys(&dllinfo); + else if (!dl_qualified_object(&dllinfo, filename) && + dl_is_srvpgm(&dllinfo)) + dlhandle = dlopenqsys(&dllinfo); + else if (!dl_lib_object(&dllinfo, "*CURLIB", filename) && + dl_is_srvpgm(&dllinfo)) + dlhandle = dlopenqsys(&dllinfo); + else if (!dl_lib_object(&dllinfo, "*LIBL", filename) && + dl_is_srvpgm(&dllinfo)) + dlhandle = dlopenqsys(&dllinfo); + else + dlhandle = NULL; + + if (!dlhandle && errno) + dlseterror_from_errno(errno); + + errno = sverrno; + return dlhandle; +} diff --git a/libxml2/os400/dlfcn/dlfcn.h b/libxml2/os400/dlfcn/dlfcn.h new file mode 100644 index 0000000..0cf691e --- /dev/null +++ b/libxml2/os400/dlfcn/dlfcn.h @@ -0,0 +1,32 @@ +/** +*** dlopen(), dlclose() dlsym(), dlerror() emulation for OS/400. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#ifndef _DLFCN_H_ +#define _DLFCN_H_ + + +/** +*** Flags for dlopen(). +*** Ignored for OS400. +**/ + +#define RTLD_LAZY 000 +#define RTLD_NOW 001 +#define RTLD_GLOBAL 010 + + +/** +*** Prototypes. +**/ + +extern void * dlopen(const char * filename, int flag); +extern void * dlsym(void * handle, const char * symbol); +extern const char * dlerror(void); +extern int dlclose(void * handle); + +#endif diff --git a/libxml2/os400/iconv/README.iconv b/libxml2/os400/iconv/README.iconv new file mode 100644 index 0000000..4950d59 --- /dev/null +++ b/libxml2/os400/iconv/README.iconv @@ -0,0 +1,47 @@ +IBM OS/400 implements iconv in an odd way: +- Type iconv_t is a structure: therefore objects of this type cannot be + compared to (iconv_t) -1. +- Supported character sets names are all of the form IBMCCSIDccsid..., where + ccsid is a decimal 5-digit integer identifying an IBM coded character set. + In addition, character set names have to be given in EBCDIC. + Standard character set names like "UTF-8" are NOT recognized. +- The prototype of iconv_open() does not declare parameters as const, although + they are not altered. + + Since libiconv does not support EBCDIC, use of this package here as a +replacement is not a solution. + + For these reasons, the code in this directory implements a wrapper to the +OS/400 iconv implementation. The wrapper performs the following transformations: +- Type iconv_t is an pointer. Although OS/400 pointers are odd, comparing + with (iconv_t) -1 is OK. +- All IANA character set names are recognized in a coding- and case-insensitive + way, providing an equivalent CCSID exists. see + http://www.iana.org/assignments/character-sets/character-sets.xhtml +- All CCSIDs from the association file can be expressed as IBMCCSIDxxxxx where + xxxxx is the 5 digit CCSID; no null terminator is required. Alternate codes + are of the form ibm-xxx (null-terminated), where xxx is the integer CCSID with + leading zeroes stripped. +- If a IANA BIBenum is defined for a CCSID, the name iana-xxx can be used, + where xxx is the integer MIBenum without leading zeroes. +- In addition, some aliases are also taken from the association file. Examples + are: ASCII, EBCDIC, UTF8. +- Prototype of iconv_open() has const parameters. +- Character code names can be given in any code. + +Character set names to CCSID conversion. +- http://www.iana.org/assignments/character-sets/character-sets.xhtml provides + all IANA registered character set names and aliases associated with a + MIBenum, that is a unique character set identifier. +- A hand-maintained file ccsid_mibenum.xml associates IBM CCSIDs to + IANA MBenums. +- An OS/400 C program (in subdirectory bldcsndfa) generates a deterministic + finite automaton from the files mentioned above into a C file for all + possible character set name and associating each of them with its + corresponding CCSID. This program can only be run on OS/400 since it uses + the native iconv support for EBCDIC. +- Since these operations are tedious and the table generation needs bootstraping + with libxml2, the generated automaton is stored within sources and need not + be rebuilt at each compilation. However, source is provided here to allow + new table generation with conversion tables that were not available at the + time of original generation. diff --git a/libxml2/os400/iconv/bldcsndfa/bldcsndfa.c b/libxml2/os400/iconv/bldcsndfa/bldcsndfa.c new file mode 100644 index 0000000..48afd54 --- /dev/null +++ b/libxml2/os400/iconv/bldcsndfa/bldcsndfa.c @@ -0,0 +1,1953 @@ +/** +*** Build a deterministic finite automaton to associate CCSIDs with +*** character set names. +*** +*** Compile on OS/400 with options SYSIFCOPT(*IFSIO). +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#include <stdio.h> +#include <errno.h> +#include <stdlib.h> +#include <string.h> +#include <fcntl.h> +#include <ctype.h> + +#include <iconv.h> + + +#ifdef OLDXML +#include "xml.h" +#else +#include <libxml/hash.h> +#include <libxml/parser.h> +#include <libxml/xpath.h> +#include <libxml/xpathInternals.h> +#endif + + +#ifdef __OS400__ +#define iconv_open_error(cd) ((cd).return_value == -1) +#define set_iconv_open_error(cd) ((cd).return_value = -1) +#else +#define iconv_open_error(cd) ((cd) == (iconv_t) -1) +#define set_iconv_open_error(cd) ((cd) = (iconv_t) -1) +#endif + + +#define C_SOURCE_CCSID 500 +#define C_UTF8_CCSID 1208 + + +#define UTF8_SPACE 0x20 +#define UTF8_HT 0x09 +#define UTF8_0 0x30 +#define UTF8_9 0x39 +#define UTF8_A 0x41 +#define UTF8_Z 0x5A +#define UTF8_a 0x61 +#define UTF8_z 0x7A + + +#define GRANULE 128 /* Memory allocation granule. */ + +#define EPSILON 0x100 /* Token for empty transition. */ + + +#ifndef OFFSETOF +#define OFFSETOF(t, f) ((unsigned int) ((char *) &((t *) 0)->f - (char *) 0)) +#endif + +#ifndef OFFSETBY +#define OFFSETBY(t, p, o) ((t *) ((char *) (p) + (unsigned int) (o))) +#endif + + +typedef struct t_transition t_transition; /* NFA/DFA transition. */ +typedef struct t_state t_state; /* NFA/DFA state node. */ +typedef struct t_symlist t_symlist; /* Symbol (i.e.: name) list. */ +typedef struct t_chset t_chset; /* Character set. */ +typedef struct t_stategroup t_stategroup; /* Optimization group. */ +typedef unsigned char utf8char; /* UTF-8 character byte. */ +typedef unsigned char byte; /* Untyped data byte. */ + + +typedef struct { /* Set of pointers. */ + unsigned int p_size; /* Current allocated size. */ + unsigned int p_card; /* Current element count. */ + void * p_set[1]; /* Element array. */ +} t_powerset; + + +struct t_transition { + t_transition * t_forwprev; /* Head of forward transition list. */ + t_transition * t_forwnext; /* Tail of forward transition list. */ + t_transition * t_backprev; /* Head of backward transition list. */ + t_transition * t_backnext; /* Tail of backward transition list. */ + t_state * t_from; /* Incoming state. */ + t_state * t_to; /* Destination state. */ + unsigned short t_token; /* Transition token. */ + unsigned int t_index; /* Transition array index. */ +}; + + +struct t_state { + t_state * s_next; /* Next state (for DFA construction). */ + t_state * s_stack; /* Unprocessed DFA states stack. */ + t_transition * s_forward; /* Forward transitions. */ + t_transition * s_backward; /* Backward transitions. */ + t_chset * s_final; /* Recognized character set. */ + t_powerset * s_nfastates; /* Corresponding NFA states. */ + unsigned int s_index; /* State index. */ +}; + + +struct t_symlist { + t_symlist * l_next; /* Next name in list. */ + utf8char l_symbol[1]; /* Name bytes. */ +}; + + +struct t_chset { + t_chset * c_next; /* Next character set. */ + t_symlist * c_names; /* Character set name list. */ + iconv_t c_fromUTF8; /* Conversion from UTF-8. */ + unsigned int c_ccsid; /* IBM character set code. */ + unsigned int c_mibenum; /* IANA character code. */ +}; + + +struct t_stategroup { + t_stategroup * g_next; /* Next group. */ + t_state * g_member; /* Group member (s_stack) list. */ + unsigned int g_id; /* Group ident. */ +}; + + + +t_chset * chset_list; /* Character set list. */ +t_state * initial_state; /* Initial NFA state. */ +iconv_t job2utf8; /* Job CCSID to UTF-8 conversion. */ +iconv_t utf82job; /* UTF-8 to job CCSID conversion. */ +t_state * dfa_states; /* List of DFA states. */ +unsigned int groupid; /* Group ident counter. */ + + +/** +*** UTF-8 strings. +**/ + +#pragma convert(819) + +static const utf8char utf8_MIBenum[] = "MIBenum"; +static const utf8char utf8_mibenum[] = "mibenum"; +static const utf8char utf8_ibm_[] = "ibm-"; +static const utf8char utf8_IBMCCSID[] = "IBMCCSID"; +static const utf8char utf8_iana_[] = "iana-"; +static const utf8char utf8_Name[] = "Name"; +static const utf8char utf8_Pref_MIME_Name[] = "Preferred MIME Name"; +static const utf8char utf8_Aliases[] = "Aliases"; +static const utf8char utf8_html[] = "html"; +static const utf8char utf8_htmluri[] = "http://www.w3.org/1999/xhtml"; +static const utf8char utf8_A[] = "A"; +static const utf8char utf8_C[] = "C"; +static const utf8char utf8_M[] = "M"; +static const utf8char utf8_N[] = "N"; +static const utf8char utf8_P[] = "P"; +static const utf8char utf8_T[] = "T"; +static const utf8char utf8_ccsid[] = "ccsid"; +static const utf8char utf8_EBCDIC[] = "EBCDIC"; +static const utf8char utf8_ASCII[] = "ASCII"; +static const utf8char utf8_assocnodes[] = "/ccsid_mibenum/assoc[@ccsid]"; +static const utf8char utf8_aliastext[] = + "/ccsid_mibenum/assoc[@ccsid=$C]/alias/text()"; +#ifdef OLDXML +static const utf8char utf8_tablerows[] = + "//table[@id='table-character-sets-1']/*/tr"; +static const utf8char utf8_headerpos[] = + "count(th[text()=$T]/preceding-sibling::th)+1"; +static const utf8char utf8_getmibenum[] = "number(td[$M])"; +static const utf8char utf8_getprefname[] = "string(td[$P])"; +static const utf8char utf8_getname[] = "string(td[$N])"; +static const utf8char utf8_getaliases[] = "td[$A]/text()"; +#else +static const utf8char utf8_tablerows[] = + "//html:table[@id='table-character-sets-1']/*/html:tr"; +static const utf8char utf8_headerpos[] = + "count(html:th[text()=$T]/preceding-sibling::html:th)+1"; +static const utf8char utf8_getmibenum[] = "number(html:td[$M])"; +static const utf8char utf8_getprefname[] = "string(html:td[$P])"; +static const utf8char utf8_getname[] = "string(html:td[$N])"; +static const utf8char utf8_getaliases[] = "html:td[$A]/text()"; +#endif + +#pragma convert(0) + + +/** +*** UTF-8 character length table. +*** +*** Index is first character byte, value is the character byte count. +**/ + +static signed char utf8_chlen[] = { +/* 00-07 */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 08-0F */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 10-17 */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 18-1F */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 20-27 */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 28-2F */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 30-37 */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 38-3F */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 40-47 */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 48-4F */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 50-57 */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 58-5F */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 60-67 */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 68-6F */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 70-77 */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 78-7F */ 1, 1, 1, 1, 1, 1, 1, 1, +/* 80-87 */ -1, -1, -1, -1, -1, -1, -1, -1, +/* 88-8F */ -1, -1, -1, -1, -1, -1, -1, -1, +/* 90-97 */ -1, -1, -1, -1, -1, -1, -1, -1, +/* 98-9F */ -1, -1, -1, -1, -1, -1, -1, -1, +/* A0-A7 */ -1, -1, -1, -1, -1, -1, -1, -1, +/* A8-AF */ -1, -1, -1, -1, -1, -1, -1, -1, +/* B0-B7 */ -1, -1, -1, -1, -1, -1, -1, -1, +/* B8-BF */ -1, -1, -1, -1, -1, -1, -1, -1, +/* C0-C7 */ 2, 2, 2, 2, 2, 2, 2, 2, +/* C8-CF */ 2, 2, 2, 2, 2, 2, 2, 2, +/* D0-D7 */ 2, 2, 2, 2, 2, 2, 2, 2, +/* D8-DF */ 2, 2, 2, 2, 2, 2, 2, 2, +/* E0-E7 */ 3, 3, 3, 3, 3, 3, 3, 3, +/* E8-EF */ 3, 3, 3, 3, 3, 3, 3, 3, +/* F0-F7 */ 4, 4, 4, 4, 4, 4, 4, 4, +/* F8-FF */ 5, 5, 5, 5, 6, 6, -1, -1 +}; + + + +void +chknull(void * p) + +{ + if (p) + return; + + fprintf(stderr, "Not enough memory\n"); + exit(1); +} + + +void +makecode(char * buf, unsigned int ccsid) + +{ + ccsid &= 0xFFFF; + memset(buf, 0, 32); + sprintf(buf, "IBMCCSID%05u0000000", ccsid); +} + + +iconv_t +iconv_open_ccsid(unsigned int ccsidout, + unsigned int ccsidin, unsigned int nullflag) + +{ + char fromcode[33]; + char tocode[33]; + + makecode(fromcode, ccsidin); + makecode(tocode, ccsidout); + memset(tocode + 13, 0, sizeof tocode - 13); + + if (nullflag) + fromcode[18] = '1'; + + return iconv_open(tocode, fromcode); +} + + +unsigned int +getnum(char * * cpp) + +{ + unsigned int n; + char * cp; + + cp = *cpp; + n = 0; + + while (isdigit(*cp)) + n = 10 * n + *cp++ - '0'; + + *cpp = cp; + return n; +} + + +const utf8char * +hashBinaryKey(const byte * bytes, unsigned int len) + +{ + const byte * bp; + utf8char * key; + utf8char * cp; + unsigned int n; + unsigned int n4; + unsigned int i; + + /** + *** Encode binary data in character form to be used as hash + *** table key. + **/ + + n = (4 * len + 2) / 3; + key = (utf8char *) malloc(n + 1); + chknull(key); + bp = bytes; + cp = key; + + for (n4 = n >> 2; n4; n4--) { + i = (bp[0] << 16) | (bp[1] << 8) | bp[2]; + *cp++ = 0x21 + ((i >> 18) & 0x3F); + *cp++ = 0x21 + ((i >> 12) & 0x3F); + *cp++ = 0x21 + ((i >> 6) & 0x3F); + *cp++ = 0x21 + (i & 0x3F); + bp += 3; + } + + switch (n & 0x3) { + + case 2: + *cp++ = 0x21 + ((*bp >> 2) & 0x3F); + *cp++ = 0x21 + ((*bp << 4) & 0x3F); + break; + + case 3: + i = (bp[0] << 8) | bp[1]; + *cp++ = 0x21 + ((i >> 10) & 0x3F); + *cp++ = 0x21 + ((i >> 4) & 0x3F); + *cp++ = 0x21 + ((i << 2) & 0x3F); + break; + } + + *cp = '\0'; + return key; +} + + +void * +hash_get(xmlHashTablePtr h, const void * binkey, unsigned int len) + +{ + const utf8char * key; + void * result; + + key = hashBinaryKey((const byte *) binkey, len); + result = xmlHashLookup(h, key); + free((char *) key); + return result; +} + + +int +hash_add(xmlHashTablePtr h, const void * binkey, unsigned int len, void * data) + +{ + const utf8char * key; + int result; + + key = hashBinaryKey((const byte *) binkey, len); + result = xmlHashAddEntry(h, key, data); + free((char *) key); + return result; +} + + +xmlDocPtr +loadXMLFile(const char * filename) + +{ + struct stat sbuf; + byte * databuf; + int fd; + int i; + xmlDocPtr doc; + + if (stat(filename, &sbuf)) + return (xmlDocPtr) NULL; + + databuf = malloc(sbuf.st_size + 4); + + if (!databuf) + return (xmlDocPtr) NULL; + + fd = open(filename, O_RDONLY +#ifdef O_BINARY + | O_BINARY +#endif + ); + + if (fd < 0) { + free((char *) databuf); + return (xmlDocPtr) NULL; + } + + i = read(fd, (char *) databuf, sbuf.st_size); + close(fd); + + if (i != sbuf.st_size) { + free((char *) databuf); + return (xmlDocPtr) NULL; + } + + databuf[i] = databuf[i + 1] = databuf[i + 2] = databuf[i + 3] = 0; + doc = xmlParseMemory((xmlChar *) databuf, i); + free((char *) databuf); + return doc; +} + + +int +match(char * * cpp, char * s) + +{ + char * cp; + int c1; + int c2; + + cp = *cpp; + + for (cp = *cpp; c2 = *s++; cp++) { + c1 = *cp; + + if (c1 != c2) { + if (isupper(c1)) + c1 = tolower(c1); + + if (isupper(c2)) + c2 = tolower(c2); + } + + if (c1 != c2) + return 0; + } + + c1 = *cp; + + while (c1 == ' ' || c1 == '\t') + c1 = *++cp; + + *cpp = cp; + return 1; +} + + +t_state * +newstate(void) + +{ + t_state * s; + + s = (t_state *) malloc(sizeof *s); + chknull(s); + memset((char *) s, 0, sizeof *s); + return s; +} + + +void +unlink_transition(t_transition * t) + +{ + if (t->t_backnext) + t->t_backnext->t_backprev = t->t_backprev; + + if (t->t_backprev) + t->t_backprev->t_backnext = t->t_backnext; + else if (t->t_to) + t->t_to->s_backward = t->t_backnext; + + if (t->t_forwnext) + t->t_forwnext->t_forwprev = t->t_forwprev; + + if (t->t_forwprev) + t->t_forwprev->t_forwnext = t->t_forwnext; + else if (t->t_from) + t->t_from->s_forward = t->t_forwnext; + + t->t_backprev = (t_transition *) NULL; + t->t_backnext = (t_transition *) NULL; + t->t_forwprev = (t_transition *) NULL; + t->t_forwnext = (t_transition *) NULL; + t->t_from = (t_state *) NULL; + t->t_to = (t_state *) NULL; +} + + +void +link_transition(t_transition * t, t_state * from, t_state * to) + +{ + if (!from) + from = t->t_from; + + if (!to) + to = t->t_to; + + unlink_transition(t); + + if ((t->t_from = from)) { + if ((t->t_forwnext = from->s_forward)) + t->t_forwnext->t_forwprev = t; + + from->s_forward = t; + } + + if ((t->t_to = to)) { + if ((t->t_backnext = to->s_backward)) + t->t_backnext->t_backprev = t; + + to->s_backward = t; + } +} + + +t_transition * +newtransition(unsigned int token, t_state * from, t_state * to) + +{ + t_transition * t; + + t = (t_transition *) malloc(sizeof *t); + chknull(t); + memset((char *) t, 0, sizeof *t); + t->t_token = token; + link_transition(t, from, to); + return t; +} + + +t_transition * +uniquetransition(unsigned int token, t_state * from, t_state * to) + +{ + t_transition * t; + + for (t = from->s_forward; t; t = t->t_forwnext) + if (t->t_token == token && (t->t_to == to || !to)) + return t; + + return to? newtransition(token, from, to): (t_transition *) NULL; +} + + +int +set_position(t_powerset * s, void * e) + +{ + unsigned int l; + unsigned int h; + unsigned int m; + int i; + + l = 0; + h = s->p_card; + + while (l < h) { + m = (l + h) >> 1; + + /** + *** If both pointers belong to different allocation arenas, + *** native comparison may find them neither + *** equal, nor greater, nor smaller. + *** We thus compare using memcmp() to get an orthogonal + *** result. + **/ + + i = memcmp(&e, s->p_set + m, sizeof e); + + if (i < 0) + h = m; + else if (!i) + return m; + else + l = m + 1; + } + + return l; +} + + +t_powerset * +set_include(t_powerset * s, void * e) + +{ + unsigned int pos; + unsigned int n; + + if (!s) { + s = (t_powerset *) malloc(sizeof *s + + GRANULE * sizeof s->p_set); + chknull(s); + s->p_size = GRANULE; + s->p_set[GRANULE] = (t_state *) NULL; + s->p_set[0] = e; + s->p_card = 1; + return s; + } + + pos = set_position(s, e); + + if (pos < s->p_card && s->p_set[pos] == e) + return s; + + if (s->p_card >= s->p_size) { + s->p_size += GRANULE; + s = (t_powerset *) realloc(s, + sizeof *s + s->p_size * sizeof s->p_set); + chknull(s); + s->p_set[s->p_size] = (t_state *) NULL; + } + + n = s->p_card - pos; + + if (n) + memmove((char *) (s->p_set + pos + 1), + (char *) (s->p_set + pos), n * sizeof s->p_set[0]); + + s->p_set[pos] = e; + s->p_card++; + return s; +} + + +t_state * +nfatransition(t_state * to, byte token) + +{ + t_state * from; + + from = newstate(); + newtransition(token, from, to); + return from; +} + + +static t_state * nfadevelop(t_state * from, t_state * final, iconv_t icc, + const utf8char * name, unsigned int len); + + +void +nfaslice(t_state * * from, t_state * * to, iconv_t icc, + const utf8char * chr, unsigned int chlen, + const utf8char * name, unsigned int len, t_state * final) + +{ + char * srcp; + char * dstp; + size_t srcc; + size_t dstc; + unsigned int cnt; + t_state * f; + t_state * t; + t_transition * tp; + byte bytebuf[8]; + + srcp = (char *) chr; + srcc = chlen; + dstp = (char *) bytebuf; + dstc = sizeof bytebuf; + iconv(icc, &srcp, &srcc, &dstp, &dstc); + dstp = (char *) bytebuf; + cnt = sizeof bytebuf - dstc; + t = *to; + f = *from; + + /** + *** Check for end of string. + **/ + + if (!len) + if (t && t != final) + uniquetransition(EPSILON, t, final); + else + t = final; + + if (f) + while (cnt) { + tp = uniquetransition(*dstp, f, (t_state *) NULL); + + if (!tp) + break; + + f = tp->t_to; + dstp++; + cnt--; + } + + if (!cnt) { + if (!t) + t = nfadevelop(f, final, icc, name, len); + + *to = t; + return; + } + + if (!t) { + t = nfadevelop((t_state *) NULL, final, icc, name, len); + *to = t; + } + + if (!f) + *from = f = newstate(); + + while (cnt > 1) + t = nfatransition(t, dstp[--cnt]); + + newtransition(*dstp, f, t); +} + + +t_state * +nfadevelop(t_state * from, t_state * final, iconv_t icc, + const utf8char * name, unsigned int len) + +{ + int chlen; + int i; + t_state * to; + int uccnt; + int lccnt; + utf8char chr; + + chlen = utf8_chlen[*name]; + + for (i = 1; i < chlen; i++) + if ((name[i] & 0xC0) != 0x80) + break; + + if (i != chlen) { + fprintf(stderr, + "Invalid UTF8 character in character set name\n"); + return (t_state *) NULL; + } + + to = (t_state *) NULL; + nfaslice(&from, &to, + icc, name, chlen, name + chlen, len - chlen, final); + + if (*name >= UTF8_a && *name <= UTF8_z) + chr = *name - UTF8_a + UTF8_A; + else if (*name >= UTF8_A && *name <= UTF8_Z) + chr = *name - UTF8_A + UTF8_a; + else + return from; + + nfaslice(&from, &to, icc, &chr, 1, name + chlen, len - chlen, final); + return from; +} + + + +void +nfaenter(const utf8char * name, int len, t_chset * charset) + +{ + t_chset * s; + t_state * final; + t_state * sp; + t_symlist * lp; + + /** + *** Enter case-insensitive `name' in NFA in all known + *** character codes. + *** Redundant shift state changes as well as shift state + *** differences between uppercase and lowercase are + *** not handled. + **/ + + if (len < 0) + len = strlen(name) + 1; + + for (lp = charset->c_names; lp; lp = lp->l_next) + if (!memcmp(name, lp->l_symbol, len)) + return; /* Already entered. */ + + lp = (t_symlist *) malloc(sizeof *lp + len); + chknull(lp); + memcpy(lp->l_symbol, name, len); + lp->l_symbol[len] = '\0'; + lp->l_next = charset->c_names; + charset->c_names = lp; + final = newstate(); + final->s_final = charset; + + for (s = chset_list; s; s = s->c_next) + if (!iconv_open_error(s->c_fromUTF8)) + sp = nfadevelop(initial_state, final, + s->c_fromUTF8, name, len); +} + + +unsigned int +utf8_utostr(utf8char * s, unsigned int v) + +{ + unsigned int d; + unsigned int i; + + d = v / 10; + v -= d * 10; + i = d? utf8_utostr(s, d): 0; + s[i++] = v + UTF8_0; + s[i] = '\0'; + return i; +} + + +unsigned int +utf8_utostrpad(utf8char * s, unsigned int v, int digits) + +{ + unsigned int i = utf8_utostr(s, v); + utf8char pad = UTF8_SPACE; + + if (digits < 0) { + pad = UTF8_0; + digits = -digits; + } + + if (i >= digits) + return i; + + memmove(s + digits - i, s, i + 1); + memset(s, pad, digits - i); + return digits; +} + + +unsigned int +utf8_strtou(const utf8char * s) + +{ + unsigned int v; + + while (*s == UTF8_SPACE || *s == UTF8_HT) + s++; + + for (v = 0; *s >= UTF8_0 && *s <= UTF8_9;) + v = 10 * v + *s++ - UTF8_0; + + return v; +} + + +unsigned int +getNumAttr(xmlNodePtr node, const xmlChar * name) + +{ + const xmlChar * s; + unsigned int val; + + s = xmlGetProp(node, name); + + if (!s) + return 0; + + val = utf8_strtou(s); + xmlFree((xmlChar *) s); + return val; +} + + +void +read_assocs(const char * filename) + +{ + xmlDocPtr doc; + xmlXPathContextPtr ctxt; + xmlXPathObjectPtr obj; + xmlNodePtr node; + t_chset * sp; + int i; + unsigned int ccsid; + unsigned int mibenum; + utf8char symbuf[32]; + + doc = loadXMLFile(filename); + + if (!doc) { + fprintf(stderr, "Cannot load file %s\n", filename); + exit(1); + } + + ctxt = xmlXPathNewContext(doc); + obj = xmlXPathEval(utf8_assocnodes, ctxt); + + if (!obj || obj->type != XPATH_NODESET || !obj->nodesetval || + !obj->nodesetval->nodeTab || !obj->nodesetval->nodeNr) { + fprintf(stderr, "No association found in %s\n", filename); + exit(1); + } + + for (i = 0; i < obj->nodesetval->nodeNr; i++) { + node = obj->nodesetval->nodeTab[i]; + ccsid = getNumAttr(node, utf8_ccsid); + mibenum = getNumAttr(node, utf8_mibenum); + + /** + *** Check for duplicate. + **/ + + for (sp = chset_list; sp; sp = sp->c_next) + if (ccsid && ccsid == sp->c_ccsid || + mibenum && mibenum == sp->c_mibenum) { + fprintf(stderr, "Duplicate character set: "); + fprintf(stderr, "CCSID = %u/%u, ", + ccsid, sp->c_ccsid); + fprintf(stderr, "MIBenum = %u/%u\n", + mibenum, sp->c_mibenum); + break; + } + + if (sp) + continue; + + /** + *** Allocate the new character set. + **/ + + sp = (t_chset *) malloc(sizeof *sp); + chknull(sp); + memset(sp, 0, sizeof *sp); + + if (!ccsid) /* Do not attempt with current job CCSID. */ + set_iconv_open_error(sp->c_fromUTF8); + else { + sp->c_fromUTF8 = + iconv_open_ccsid(ccsid, C_UTF8_CCSID, 0); + + if (iconv_open_error(sp->c_fromUTF8) == -1) + fprintf(stderr, + "Cannot convert into CCSID %u: ignored\n", + ccsid); + } + + sp->c_ccsid = ccsid; + sp->c_mibenum = mibenum; + sp->c_next = chset_list; + chset_list = sp; + } + + xmlXPathFreeObject(obj); + + /** + *** Enter aliases. + **/ + + for (sp = chset_list; sp; sp = sp->c_next) { + strcpy(symbuf, utf8_ibm_); + utf8_utostr(symbuf + 4, sp->c_ccsid); + nfaenter(symbuf, -1, sp); + strcpy(symbuf, utf8_IBMCCSID); + utf8_utostrpad(symbuf + 8, sp->c_ccsid, -5); + nfaenter(symbuf, 13, sp); /* Not null-terminated. */ + + if (sp->c_mibenum) { + strcpy(symbuf, utf8_iana_); + utf8_utostr(symbuf + 5, sp->c_mibenum); + nfaenter(symbuf, -1, sp); + } + + xmlXPathRegisterVariable(ctxt, utf8_C, + xmlXPathNewFloat((double) sp->c_ccsid)); + obj = xmlXPathEval(utf8_aliastext, ctxt); + + if (!obj || obj->type != XPATH_NODESET) { + fprintf(stderr, "getAlias failed in %s\n", filename); + exit(1); + } + + if (obj->nodesetval && + obj->nodesetval->nodeTab && obj->nodesetval->nodeNr) { + for (i = 0; i < obj->nodesetval->nodeNr; i++) { + node = obj->nodesetval->nodeTab[i]; + nfaenter(node->content, -1, sp); + } + } + + xmlXPathFreeObject(obj); + } + + xmlXPathFreeContext(ctxt); + xmlFreeDoc(doc); +} + + +unsigned int +columnPosition(xmlXPathContextPtr ctxt, const xmlChar * header) + +{ + xmlXPathObjectPtr obj; + unsigned int res = 0; + + xmlXPathRegisterVariable(ctxt, utf8_T, xmlXPathNewString(header)); + obj = xmlXPathEval(utf8_headerpos, ctxt); + + if (obj) { + if (obj->type == XPATH_NUMBER) + res = (unsigned int) obj->floatval; + + xmlXPathFreeObject(obj); + } + + return res; +} + + +void +read_iana(const char * filename) + +{ + xmlDocPtr doc; + xmlXPathContextPtr ctxt; + xmlXPathObjectPtr obj1; + xmlXPathObjectPtr obj2; + xmlNodePtr node; + int prefnamecol; + int namecol; + int mibenumcol; + int aliascol; + int mibenum; + t_chset * sp; + int n; + int i; + + doc = loadXMLFile(filename); + + if (!doc) { + fprintf(stderr, "Cannot load file %s\n", filename); + exit(1); + } + + ctxt = xmlXPathNewContext(doc); + +#ifndef OLDXML + xmlXPathRegisterNs(ctxt, utf8_html, utf8_htmluri); +#endif + + obj1 = xmlXPathEval(utf8_tablerows, ctxt); + + if (!obj1 || obj1->type != XPATH_NODESET || !obj1->nodesetval || + !obj1->nodesetval->nodeTab || obj1->nodesetval->nodeNr <= 1) { + fprintf(stderr, "No data in %s\n", filename); + exit(1); + } + + /** + *** Identify columns. + **/ + + xmlXPathSetContextNode(obj1->nodesetval->nodeTab[0], ctxt); + prefnamecol = columnPosition(ctxt, utf8_Pref_MIME_Name); + namecol = columnPosition(ctxt, utf8_Name); + mibenumcol = columnPosition(ctxt, utf8_MIBenum); + aliascol = columnPosition(ctxt, utf8_Aliases); + + if (!prefnamecol || !namecol || !mibenumcol || !aliascol) { + fprintf(stderr, "Key column(s) missing in %s\n", filename); + exit(1); + } + + xmlXPathRegisterVariable(ctxt, utf8_P, + xmlXPathNewFloat((double) prefnamecol)); + xmlXPathRegisterVariable(ctxt, utf8_N, + xmlXPathNewFloat((double) namecol)); + xmlXPathRegisterVariable(ctxt, utf8_M, + xmlXPathNewFloat((double) mibenumcol)); + xmlXPathRegisterVariable(ctxt, utf8_A, + xmlXPathNewFloat((double) aliascol)); + + /** + *** Process each row. + **/ + + for (n = 1; n < obj1->nodesetval->nodeNr; n++) { + xmlXPathSetContextNode(obj1->nodesetval->nodeTab[n], ctxt); + + /** + *** Get the MIBenum from current row. + */ + + obj2 = xmlXPathEval(utf8_getmibenum, ctxt); + + if (!obj2 || obj2->type != XPATH_NUMBER) { + fprintf(stderr, "get MIBenum failed at row %u\n", n); + exit(1); + } + + if (xmlXPathIsNaN(obj2->floatval) || + obj2->floatval < 1.0 || obj2->floatval > 65535.0 || + ((unsigned int) obj2->floatval) != obj2->floatval) { + fprintf(stderr, "invalid MIBenum at row %u\n", n); + xmlXPathFreeObject(obj2); + continue; + } + + mibenum = obj2->floatval; + xmlXPathFreeObject(obj2); + + /** + *** Search the associations for a corresponding CCSID. + **/ + + for (sp = chset_list; sp; sp = sp->c_next) + if (sp->c_mibenum == mibenum) + break; + + if (!sp) + continue; /* No CCSID for this MIBenum. */ + + /** + *** Process preferred MIME name. + **/ + + obj2 = xmlXPathEval(utf8_getprefname, ctxt); + + if (!obj2 || obj2->type != XPATH_STRING) { + fprintf(stderr, + "get Preferred_MIME_Name failed at row %u\n", n); + exit(1); + } + + if (obj2->stringval && obj2->stringval[0]) + nfaenter(obj2->stringval, -1, sp); + + xmlXPathFreeObject(obj2); + + /** + *** Process name. + **/ + + obj2 = xmlXPathEval(utf8_getname, ctxt); + + if (!obj2 || obj2->type != XPATH_STRING) { + fprintf(stderr, "get name failed at row %u\n", n); + exit(1); + } + + if (obj2->stringval && obj2->stringval[0]) + nfaenter(obj2->stringval, -1, sp); + + xmlXPathFreeObject(obj2); + + /** + *** Process aliases. + **/ + + obj2 = xmlXPathEval(utf8_getaliases, ctxt); + + if (!obj2 || obj2->type != XPATH_NODESET) { + fprintf(stderr, "get aliases failed at row %u\n", n); + exit(1); + } + + if (obj2->nodesetval && obj2->nodesetval->nodeTab) + for (i = 0; i < obj2->nodesetval->nodeNr; i++) { + node = obj2->nodesetval->nodeTab[i]; + + if (node && node->content && node->content[0]) + nfaenter(node->content, -1, sp); + } + + xmlXPathFreeObject(obj2); + } + + xmlXPathFreeObject(obj1); + xmlXPathFreeContext(ctxt); + xmlFreeDoc(doc); +} + + +t_powerset * closureset(t_powerset * dst, t_powerset * src); + + +t_powerset * +closure(t_powerset * dst, t_state * src) + +{ + t_transition * t; + unsigned int oldcard; + + if (src->s_nfastates) { + /** + *** Is a DFA state: return closure of set of equivalent + *** NFA states. + **/ + + return closureset(dst, src->s_nfastates); + } + + /** + *** Compute closure of NFA state. + **/ + + dst = set_include(dst, src); + + for (t = src->s_forward; t; t = t->t_forwnext) + if (t->t_token == EPSILON) { + oldcard = dst->p_card; + dst = set_include(dst, t->t_to); + + if (oldcard != dst->p_card) + dst = closure(dst, t->t_to); + } + + return dst; +} + + +t_powerset * +closureset(t_powerset * dst, t_powerset * src) + +{ + unsigned int i; + + for (i = 0; i < src->p_card; i++) + dst = closure(dst, (t_state *) src->p_set[i]); + + return dst; +} + + +t_state * +get_dfa_state(t_state * * stack, + t_powerset * nfastates, xmlHashTablePtr sethash) + +{ + t_state * s; + + if (s = hash_get(sethash, nfastates->p_set, + nfastates->p_card * sizeof nfastates->p_set[0])) { + /** + *** DFA state already present. + *** Release the NFA state set and return + *** the address of the old DFA state. + **/ + + free((char *) nfastates); + return s; + } + + /** + *** Build the new state. + **/ + + s = newstate(); + s->s_nfastates = nfastates; + s->s_next = dfa_states; + dfa_states = s; + s->s_stack = *stack; + *stack = s; + + /** + *** Enter it in hash. + **/ + + if (hash_add(sethash, nfastates->p_set, + nfastates->p_card * sizeof nfastates->p_set[0], s)) + chknull(NULL); /* Memory allocation error. */ + + return s; +} + + +int +transcmp(const void * p1, const void * p2) + +{ + t_transition * t1; + t_transition * t2; + + t1 = *(t_transition * *) p1; + t2 = *(t_transition * *) p2; + return ((int) t1->t_token) - ((int) t2->t_token); +} + + +void +builddfa(void) + +{ + t_powerset * transset; + t_powerset * stateset; + t_state * s; + t_state * s2; + unsigned int n; + unsigned int i; + unsigned int token; + t_transition * t; + t_state * stack; + xmlHashTablePtr sethash; + unsigned int nst; + + transset = set_include(NULL, NULL); + chknull(transset); + stateset = set_include(NULL, NULL); + chknull(stateset); + sethash = xmlHashCreate(1); + chknull(sethash); + dfa_states = (t_state *) NULL; + stack = (t_state *) NULL; + nst = 0; + + /** + *** Build the DFA initial state. + **/ + + get_dfa_state(&stack, closure(NULL, initial_state), sethash); + + /** + *** Build the other DFA states by looking at each + *** possible transition from stacked DFA states. + **/ + + do { + if (!(++nst % 100)) + fprintf(stderr, "%u DFA states\n", nst); + + s = stack; + stack = s->s_stack; + s->s_stack = (t_state *) NULL; + + /** + *** Build a set of all non-epsilon transitions from this + *** state. + **/ + + transset->p_card = 0; + + for (n = 0; n < s->s_nfastates->p_card; n++) { + s2 = s->s_nfastates->p_set[n]; + + for (t = s2->s_forward; t; t = t->t_forwnext) + if (t->t_token != EPSILON) { + transset = set_include(transset, t); + chknull(transset); + } + } + + /** + *** Sort transitions by token. + **/ + + qsort(transset->p_set, transset->p_card, + sizeof transset->p_set[0], transcmp); + + /** + *** Process all transitions, grouping them by token. + **/ + + stateset->p_card = 0; + token = EPSILON; + + for (i = 0; i < transset->p_card; i++) { + t = transset->p_set[i]; + + if (token != t->t_token) { + if (stateset->p_card) { + /** + *** Get the equivalent DFA state + *** and create transition. + **/ + + newtransition(token, s, + get_dfa_state(&stack, + closureset(NULL, stateset), + sethash)); + stateset->p_card = 0; + } + + token = t->t_token; + } + + stateset = set_include(stateset, t->t_to); + } + + if (stateset->p_card) + newtransition(token, s, get_dfa_state(&stack, + closureset(NULL, stateset), sethash)); + } while (stack); + + free((char *) transset); + free((char *) stateset); + xmlHashFree(sethash, NULL); + + /** + *** Reverse the state list to get the initial state first, + *** check for ambiguous prefixes, determine final states, + *** destroy NFA state sets. + **/ + + while (s = dfa_states) { + dfa_states = s->s_next; + s->s_next = stack; + stack = s; + stateset = s->s_nfastates; + s->s_nfastates = (t_powerset *) NULL; + + for (n = 0; n < stateset->p_card; n++) { + s2 = (t_state *) stateset->p_set[n]; + + if (s2->s_final) { + if (s->s_final && s->s_final != s2->s_final) + fprintf(stderr, + "Ambiguous name for CCSIDs %u/%u\n", + s->s_final->c_ccsid, + s2->s_final->c_ccsid); + + s->s_final = s2->s_final; + } + } + + free((char *) stateset); + } + + dfa_states = stack; +} + + +void +deletenfa(void) + +{ + t_transition * t; + t_state * s; + t_state * u; + t_state * stack; + + stack = initial_state; + stack->s_stack = (t_state *) NULL; + + while ((s = stack)) { + stack = s->s_stack; + + while ((t = s->s_forward)) { + u = t->t_to; + unlink_transition(t); + free((char *) t); + + if (!u->s_backward) { + u->s_stack = stack; + stack = u; + } + } + + free((char *) s); + } +} + + +t_stategroup * +newgroup(void) + +{ + t_stategroup * g; + + g = (t_stategroup *) malloc(sizeof *g); + chknull(g); + memset((char *) g, 0, sizeof *g); + g->g_id = groupid++; + return g; +} + + +void +optimizedfa(void) + +{ + unsigned int i; + xmlHashTablePtr h; + t_state * s1; + t_state * s2; + t_state * finstates; + t_state * * sp; + t_stategroup * g1; + t_stategroup * g2; + t_stategroup * ghead; + t_transition * t1; + t_transition * t2; + unsigned int done; + unsigned int startgroup; + unsigned int gtrans[1 << (8 * sizeof(unsigned char))]; + + /** + *** Reduce DFA state count. + **/ + + groupid = 0; + ghead = (t_stategroup *) NULL; + + /** + *** First split: non-final and each distinct final states. + **/ + + h = xmlHashCreate(4); + chknull(h); + + for (s1 = dfa_states; s1; s1 = s1->s_next) { + if (!(g1 = hash_get(h, &s1->s_final, sizeof s1->s_final))) { + g1 = newgroup(); + g1->g_next = ghead; + ghead = g1; + + if (hash_add(h, &s1->s_final, sizeof s1->s_final, g1)) + chknull(NULL); /* Memory allocation error. */ + } + + s1->s_index = g1->g_id; + s1->s_stack = g1->g_member; + g1->g_member = s1; + } + + xmlHashFree(h, NULL); + + /** + *** Subsequent splits: states that have the same forward + *** transition tokens to states in the same group. + **/ + + do { + done = 1; + + for (g2 = ghead; g2; g2 = g2->g_next) { + s1 = g2->g_member; + + if (!s1->s_stack) + continue; + + h = xmlHashCreate(1); + chknull(h); + + /** + *** Build the group transition map. + **/ + + memset((char *) gtrans, ~0, sizeof gtrans); + + for (t1 = s1->s_forward; t1; t1 = t1->t_forwnext) + gtrans[t1->t_token] = t1->t_to->s_index; + + if (hash_add(h, gtrans, sizeof gtrans, g2)) + chknull(NULL); + + /** + *** Process other states in group. + **/ + + sp = &s1->s_stack; + s1 = *sp; + + do { + *sp = s1->s_stack; + + /** + *** Build the transition map. + **/ + + memset((char *) gtrans, ~0, sizeof gtrans); + + for (t1 = s1->s_forward; + t1; t1 = t1->t_forwnext) + gtrans[t1->t_token] = t1->t_to->s_index; + + g1 = hash_get(h, gtrans, sizeof gtrans); + + if (g1 == g2) { + *sp = s1; + sp = &s1->s_stack; + } + else { + if (!g1) { + g1 = newgroup(); + g1->g_next = ghead; + ghead = g1; + + if (hash_add(h, gtrans, + sizeof gtrans, g1)) + chknull(NULL); + } + + s1->s_index = g1->g_id; + s1->s_stack = g1->g_member; + g1->g_member = s1; + done = 0; + } + } while (s1 = *sp); + + xmlHashFree(h, NULL); + } + } while (!done); + + /** + *** Establish group leaders and remap transitions. + **/ + + startgroup = dfa_states->s_index; + + for (g1 = ghead; g1; g1 = g1->g_next) + for (s1 = g1->g_member->s_stack; s1; s1 = s1->s_stack) + for (t1 = s1->s_backward; t1; t1 = t2) { + t2 = t1->t_backnext; + link_transition(t1, NULL, g1->g_member); + } + + /** + *** Remove redundant states and transitions. + **/ + + for (g1 = ghead; g1; g1 = g1->g_next) { + g1->g_member->s_next = (t_state *) NULL; + + while ((s1 = g1->g_member->s_stack)) { + g1->g_member->s_stack = s1->s_stack; + + for (t1 = s1->s_forward; t1; t1 = t2) { + t2 = t1->t_forwnext; + unlink_transition(t1); + free((char *) t1); + } + + free((char *) s1); + } + } + + /** + *** Remove group support and relink DFA states. + **/ + + dfa_states = (t_state *) NULL; + s2 = (t_state *) NULL; + finstates = (t_state *) NULL; + + while (g1 = ghead) { + ghead = g1->g_next; + s1 = g1->g_member; + + if (g1->g_id == startgroup) + dfa_states = s1; /* Keep start state first. */ + else if (s1->s_final) { /* Then final states. */ + s1->s_next = finstates; + finstates = s1; + } + else { /* Finish with non-final states. */ + s1->s_next = s2; + s2 = s1; + } + + free((char *) g1); + } + + for (dfa_states->s_next = finstates; finstates->s_next;) + finstates = finstates->s_next; + + finstates->s_next = s2; +} + + +const char * +inttype(unsigned long max) + +{ + int i; + + for (i = 0; max; i++) + max >>= 1; + + if (i > 8 * sizeof(unsigned int)) + return "unsigned long"; + + if (i > 8 * sizeof(unsigned short)) + return "unsigned int"; + + if (i > 8 * sizeof(unsigned char)) + return "unsigned short"; + + return "unsigned char"; +} + + +listids(FILE * fp) + +{ + unsigned int pos; + t_chset * cp; + t_symlist * lp; + char * srcp; + char * dstp; + size_t srcc; + size_t dstc; + char buf[80]; + + fprintf(fp, "/**\n*** CCSID For arg Recognized name.\n"); + pos = 0; + + for (cp = chset_list; cp; cp = cp->c_next) { + if (pos) { + fprintf(fp, "\n"); + pos = 0; + } + + if (!cp->c_names) + continue; + + pos = fprintf(fp, "*** %5u %c ", cp->c_ccsid, + iconv_open_error(cp->c_fromUTF8)? ' ': 'X'); + + for (lp = cp->c_names; lp; lp = lp->l_next) { + srcp = (char *) lp->l_symbol; + srcc = strlen(srcp); + dstp = buf; + dstc = sizeof buf; + iconv(utf82job, &srcp, &srcc, &dstp, &dstc); + srcc = dstp - buf; + + if (pos + srcc > 79) { + fprintf(fp, "\n***%22c", ' '); + pos = 25; + } + + pos += fprintf(fp, " %.*s", srcc, buf); + } + } + + if (pos) + fprintf(fp, "\n"); + + fprintf(fp, "**/\n\n"); +} + + +void +generate(FILE * fp) + +{ + unsigned int nstates; + unsigned int ntrans; + unsigned int maxfinal; + t_state * s; + t_transition * t; + unsigned int i; + unsigned int pos; + char * ns; + + /** + *** Assign indexes to states and transitions. + **/ + + nstates = 0; + ntrans = 0; + maxfinal = 0; + + for (s = dfa_states; s; s = s->s_next) { + s->s_index = nstates++; + + if (s->s_final) + maxfinal = nstates; + + for (t = s->s_forward; t; t = t->t_forwnext) + t->t_index = ntrans++; + } + + fprintf(fp, + "/**\n*** %u states, %u finals, %u transitions.\n**/\n\n", + nstates, maxfinal, ntrans); + fprintf(stderr, "%u states, %u finals, %u transitions.\n", + nstates, maxfinal, ntrans); + + /** + *** Generate types. + **/ + + fprintf(fp, "typedef unsigned short t_ccsid;\n"); + fprintf(fp, "typedef %-23s t_staterange;\n", inttype(nstates)); + fprintf(fp, "typedef %-23s t_transrange;\n\n", inttype(ntrans)); + + /** + *** Generate first transition index for each state. + **/ + + fprintf(fp, "static t_transrange trans_array[] = {\n"); + pos = 0; + ntrans = 0; + + for (s = dfa_states; s; s = s->s_next) { + pos += fprintf(fp, " %u,", ntrans); + + if (pos > 72) { + fprintf(fp, "\n"); + pos = 0; + } + + for (t = s->s_forward; t; t = t->t_forwnext) + ntrans++; + } + + fprintf(fp, " %u\n};\n\n", ntrans); + + /** + *** Generate final state info. + **/ + + fprintf(fp, "static t_ccsid final_array[] = {\n"); + pos = 0; + ns =""; + i = 0; + + for (s = dfa_states; s && i++ < maxfinal; s = s->s_next) { + pos += fprintf(fp, "%s", ns); + ns = ","; + + if (pos > 72) { + fprintf(fp, "\n"); + pos = 0; + } + + pos += fprintf(fp, " %u", + s->s_final? s->s_final->c_ccsid + 1: 0); + } + + fprintf(fp, "\n};\n\n"); + + /** + *** Generate goto table. + **/ + + fprintf(fp, "static t_staterange goto_array[] = {\n"); + pos = 0; + + for (s = dfa_states; s; s = s->s_next) + for (t = s->s_forward; t; t = t->t_forwnext) { + pos += fprintf(fp, " %u,", t->t_to->s_index); + + if (pos > 72) { + fprintf(fp, "\n"); + pos = 0; + } + } + + fprintf(fp, " %u\n};\n\n", nstates); + + /** + *** Generate transition label table. + **/ + + fprintf(fp, "static unsigned char label_array[] = {\n"); + pos = 0; + ns =""; + + for (s = dfa_states; s; s = s->s_next) + for (t = s->s_forward; t; t = t->t_forwnext) { + pos += fprintf(fp, "%s", ns); + ns = ","; + + if (pos > 72) { + fprintf(fp, "\n"); + pos = 0; + } + + pos += fprintf(fp, " 0x%02X", t->t_token); + } + + fprintf(fp, "\n};\n", nstates); +} + + +main(argc, argv) +int argc; +char * * argv; + +{ + FILE * fp; + t_chset * csp; + char symbuf[20]; + + chset_list = (t_chset *) NULL; + initial_state = newstate(); + job2utf8 = iconv_open_ccsid(C_UTF8_CCSID, C_SOURCE_CCSID, 0); + utf82job = iconv_open_ccsid(C_SOURCE_CCSID, C_UTF8_CCSID, 0); + + if (argc != 4) { + fprintf(stderr, "Usage: %s <ccsid-mibenum file> ", *argv); + fprintf(stderr, "<iana-character-set file> <output file>\n"); + exit(1); + } + + /** + *** Read CCSID/MIBenum associations. Define special names. + **/ + + read_assocs(argv[1]); + + /** + *** Read character set names and establish the case-independent + *** name DFA in all possible CCSIDs. + **/ + + read_iana(argv[2]); + + /** + *** Build DFA from NFA. + **/ + + builddfa(); + + /** + *** Delete NFA. + **/ + + deletenfa(); + + /** + *** Minimize the DFA state count. + **/ + + optimizedfa(); + + /** + *** Generate the table. + **/ + + fp = fopen(argv[3], "w+"); + + if (!fp) { + perror(argv[3]); + exit(1); + } + + fprintf(fp, "/**\n"); + fprintf(fp, "*** Character set names table.\n"); + fprintf(fp, "*** Generated by program BLDCSNDFA from"); + fprintf(fp, " IANA character set assignment file\n"); + fprintf(fp, "*** and CCSID/MIBenum equivalence file.\n"); + fprintf(fp, "*** *** Do not edit by hand ***\n"); + fprintf(fp, "**/\n\n"); + listids(fp); + generate(fp); + + if (ferror(fp)) { + perror(argv[3]); + fclose(fp); + exit(1); + } + + fclose(fp); + iconv_close(job2utf8); + iconv_close(utf82job); + exit(0); +} diff --git a/libxml2/os400/iconv/bldcsndfa/ccsid_mibenum.dtd b/libxml2/os400/iconv/bldcsndfa/ccsid_mibenum.dtd new file mode 100644 index 0000000..0c834ec --- /dev/null +++ b/libxml2/os400/iconv/bldcsndfa/ccsid_mibenum.dtd @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +--- DTD for CCSID/MIBEnum association documents. +--- +--- See Copyright for the status of this software. +--- +--- Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +--> +<!ELEMENT ccsid_mibenum (assoc)*> +<!ELEMENT assoc (alias)*> +<!ATTLIST assoc + ccsid CDATA #IMPLIED + mibenum CDATA #IMPLIED +> +<!ELEMENT alias (#PCDATA)> diff --git a/libxml2/os400/iconv/bldcsndfa/ccsid_mibenum.xml b/libxml2/os400/iconv/bldcsndfa/ccsid_mibenum.xml new file mode 100644 index 0000000..8af38b4 --- /dev/null +++ b/libxml2/os400/iconv/bldcsndfa/ccsid_mibenum.xml @@ -0,0 +1,270 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE ccsid_mibenum SYSTEM "ccsid_mibenum.dtd"> +<!-- +--- CCSID/MIBEnum associations. +--- +--- See Copyright for the status of this software. +--- +--- Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +--> +<ccsid_mibenum> + <assoc ccsid="0"><!-- Curent job's CCSID. --></assoc> + <assoc ccsid="37" mibenum="2028"><!-- EBCDIC-US --> + <alias>EBCDIC</alias> + </assoc> + <assoc ccsid="256"><!-- Netherlands ? --></assoc> + <assoc ccsid="273" mibenum="2030"><!-- EBCDIC-DE --></assoc> + <assoc ccsid="277" mibenum="2033"><!-- EBCDIC-DK/NO --></assoc> + <assoc ccsid="278" mibenum="2034"><!-- EBCDIC-FI/SE --></assoc> + <assoc ccsid="280" mibenum="2035"><!-- EBCDIC-IT --></assoc> + <assoc ccsid="284" mibenum="2037"><!-- EBCDIC-ES --></assoc> + <assoc ccsid="285" mibenum="2038"><!-- EBCDIC-GB --></assoc> + <assoc ccsid="290" mibenum="2039"><!-- EBCDIC-JP-Kana --></assoc> + <assoc ccsid="297" mibenum="2040"><!-- EBCDIC-FR --></assoc> + <assoc ccsid="300"><!-- Japan English ? --></assoc> + <assoc ccsid="301"><!-- PC DATA Japanese --></assoc> + <assoc ccsid="367" mibenum="3"><!-- ANSI X3.4 ASCII --> + <alias>ASCII</alias> + </assoc> + <assoc ccsid="420" mibenum="2041"><!-- EBCDIC-Arab --></assoc> + <assoc ccsid="423" mibenum="2042"><!-- EBCDIC-GR --></assoc> + <assoc ccsid="424" mibenum="2043"><!-- EBCDIC-Hebrew --></assoc> + <assoc ccsid="437" mibenum="2011"><!-- 8-bit PC ASCII --></assoc> + <assoc ccsid="500" mibenum="2044"><!-- EBCDIC-BE/CH international latin 1 --></assoc> + <assoc ccsid="720"><!-- MSDOS Arabic ? --></assoc> + <assoc ccsid="737"><!-- MSDOS Greek PC DATA ? --></assoc> + <assoc ccsid="775" mibenum="2087"><!-- MSDOS Baltic PC DATA --></assoc> + <assoc ccsid="813" mibenum="10"><!-- ISO-8859-7 --></assoc> + <assoc ccsid="819" mibenum="4"><!-- ISO-8859-1 --></assoc> + <assoc ccsid="833"><!-- Korea (extended range) --></assoc> + <assoc ccsid="835"><!-- Korea host double byte --></assoc> + <assoc ccsid="836"><!-- Simplified chinese (extended range) --></assoc> + <assoc ccsid="837"><!-- Simplified chinese --></assoc> + <assoc ccsid="838" mibenum="2016"><!-- IBM-Thai --></assoc> + <assoc ccsid="850" mibenum="2009"><!-- PC DATA international latin 1 --></assoc> + <assoc ccsid="851" mibenum="2045"><!-- PC DATA greek --></assoc> + <assoc ccsid="852" mibenum="2010"><!-- PC DATA latin-2 multilingual --></assoc> + <assoc ccsid="855" mibenum="2046"><!-- PC DATA ROECE cyrillic --></assoc> + <assoc ccsid="857" mibenum="2047"><!-- PC DATA Turkey latin-5 --></assoc> + <assoc ccsid="858" mibenum="2089"><!-- PC-Multilingual-850+Euro --></assoc> + <assoc ccsid="860" mibenum="2048"><!-- PC DATA Portugal --></assoc> + <assoc ccsid="861" mibenum="2049"><!-- PC DATA Iceland --></assoc> + <assoc ccsid="862" mibenum="2013"><!-- PC DATA Hebrew --></assoc> + <assoc ccsid="863" mibenum="2050"><!-- PC DATA Canada --></assoc> + <assoc ccsid="864" mibenum="2051"><!-- PC DATA Arabic --></assoc> + <assoc ccsid="865" mibenum="2052"><!-- PC DATA DK/NO --></assoc> + <assoc ccsid="866" mibenum="2086"><!-- PC DATA cyrillic 2 --></assoc> + <assoc ccsid="868" mibenum="2053"><!-- PC DATA Urdu --></assoc> + <assoc ccsid="869" mibenum="2054"><!-- PC DATA greek (2?) --></assoc> + <assoc ccsid="870" mibenum="2055"><!-- EBCDIC-Latin2-Multilingual --></assoc> + <assoc ccsid="871" mibenum="2056"><!-- EBCDIC-IS --></assoc> + <assoc ccsid="874" mibenum="2259"><!-- TIS-620 --> + <alias>EUC-TH></alias> + <alias>eucTH</alias> + <alias>csEUCTH</alias> + </assoc> + <assoc ccsid="875"><!-- Greece --></assoc> + <assoc ccsid="878" mibenum="2084"><!-- KOI8-R --></assoc> + <assoc ccsid="880" mibenum="2057"><!-- EBCDIC-Cyrillic --></assoc> + <assoc ccsid="891" mibenum="2058"><!-- PC DATA corean (non-extended) --></assoc> + <assoc ccsid="896"><!-- Japan 7-bit Katakana --></assoc> + <assoc ccsid="897" mibenum="15"><!-- JIS_X0201 --></assoc> + <assoc ccsid="903" mibenum="2059"><!-- PC DATA simplified chinese (non-extended) --></assoc> + <assoc ccsid="904" mibenum="2060"><!-- PC DATA traditional chinese --></assoc> + <assoc ccsid="905" mibenum="2061"><!-- EBCDIC-TR latin 3 --></assoc> + <assoc ccsid="912" mibenum="5"><!-- ISO-8859-2 --></assoc> + <assoc ccsid="913" mibenum="6"><!-- ISO-8859-3 --></assoc> + <assoc ccsid="914" mibenum="7"><!-- ISO-8859-4 --></assoc> + <assoc ccsid="915" mibenum="8"><!-- ISO-8859-5 --></assoc> + <assoc ccsid="916" mibenum="11"><!-- ISO-8859-8 --></assoc> + <assoc ccsid="918" mibenum="2062"><!-- IBM918 --></assoc> + <assoc ccsid="920" mibenum="12"><!-- ISO-8859-9 --></assoc> + <assoc ccsid="921" mibenum="109"><!-- ISO-8859-13 --></assoc> + <assoc ccsid="922"><!-- Estonia, 8-bit --></assoc> + <assoc ccsid="923" mibenum="111"><!-- ISO-8859-15 --></assoc> + <assoc ccsid="924" mibenum="2090"><!-- EBCDIC-Latin9+Euro --></assoc> + <assoc ccsid="926"><!-- Korean PC DATA DBCS, UDC 1880 --></assoc> + <assoc ccsid="927"><!-- Traditional chinese PC DATA DBCS, UDC 6204 --></assoc> + <assoc ccsid="928"><!-- Simplified chinese PC DATA DBCS, UDC 1880 --></assoc> + <assoc ccsid="930"><!-- Japan Katakana (extended range) 4370 UDC (User Defined Characters) --></assoc> + <assoc ccsid="932"><!-- Japan PC DATA Mixed --></assoc> + <assoc ccsid="933"><!-- Korea (extended range), 1880 UDC --></assoc> + <assoc ccsid="934"><!-- Korean PC DATA --></assoc> + <assoc ccsid="935"><!-- Simplified Chinese (extended range) --></assoc> + <assoc ccsid="936"><!-- Simplified Chinese (non-extended) --></assoc> + <assoc ccsid="937"><!-- Traditional Chinese (extended range) --></assoc> + <assoc ccsid="938"><!-- Traditional Chinese (non-extended) --></assoc> + <assoc ccsid="939"><!-- Japan English (extended range) 4370 UDC --></assoc> + <assoc ccsid="942"><!-- Japanese PC DATA Mixed --></assoc> + <assoc ccsid="943" mibenum="17"><!-- Shift_JIS --></assoc> + <assoc ccsid="944"><!-- Korean PC DATA Mixed --></assoc> + <assoc ccsid="946"><!-- Simplified Chinese PC DATA Mixed --></assoc> + <assoc ccsid="947"><!-- Traditional Chinese PC DATA Mixed 6204 UDC (User Defined Characters) --></assoc> + <assoc ccsid="949"><!-- Republic of Korea National Standard Graphic Character Set (KS). PC DATA mixed-byte including 1800 UDC --></assoc> + <assoc ccsid="950"><!-- Traditional Chinese PC DATA Mixed for Big5 --></assoc> + <assoc ccsid="951"><!-- Republic of Korea National Standard Graphic Character Set (KS). PC DATA double-byte including 1800 UDC --></assoc> + <assoc ccsid="956"><!-- JIS X201 Roman for CP 00895; JIS X208-1983 for CP 00952 --></assoc> + <assoc ccsid="957"><!-- JIS X201 Roman for CP 00895; JIS X208-1978 for CP 00955 --></assoc> + <assoc ccsid="958"><!-- ASCII for CP 00367; JIS X208-1983 for CP 00952 --></assoc> + <assoc ccsid="959"><!-- ASCII for CP 00367; JIS X208-1978 for CP 00955 --></assoc> + <assoc ccsid="964"><!-- G0 - ASCII for CP 00367; G1-CNS 11643 plane 1 for CP 960 --></assoc> + <assoc ccsid="965"><!-- ASCII for CP 00367; CNS 11643 plane 1 for CP 960 --></assoc> + <assoc ccsid="970" mibenum="38"><!-- EUC-KR --></assoc> + <assoc ccsid="1008"><!-- Arabic 8-bit ISO/ASCII --></assoc> + <assoc ccsid="1009"><!-- IRV --></assoc> + <assoc ccsid="1010"><!-- France --></assoc> + <assoc ccsid="1011"><!-- Germany --></assoc> + <assoc ccsid="1012"><!-- Italy --></assoc> + <assoc ccsid="1013"><!-- United Kingdom --></assoc> + <assoc ccsid="1014"><!-- Spain --></assoc> + <assoc ccsid="1015"><!-- Portugal --></assoc> + <assoc ccsid="1016"><!-- Norway --></assoc> + <assoc ccsid="1017"><!-- Denmark --></assoc> + <assoc ccsid="1018"><!-- Finland and Sweden --></assoc> + <assoc ccsid="1019"><!-- Belgium and Netherlands --></assoc> + <assoc ccsid="1025"><!-- Cyrillic Multilingual --></assoc> + <assoc ccsid="1026" mibenum="2063"><!-- Turkey latin 5 CECP --></assoc> + <assoc ccsid="1027"><!-- Japan english (extended range) --></assoc> + <assoc ccsid="1040"><!-- Korean Latin PC DATA extended --></assoc> + <assoc ccsid="1041"><!-- Japanese PC DATA extended --></assoc> + <assoc ccsid="1042"><!-- Simplified Chinese PC DATA extended --></assoc> + <assoc ccsid="1043"><!-- Traditional Chinese PC DATA extended --></assoc> + <assoc ccsid="1046"><!-- PC DATA - Arabic Extended --></assoc> + <assoc ccsid="1047" mibenum="2102"><!-- Latin open sys EBCDIC --></assoc> + <assoc ccsid="1051" mibenum="2004"><!-- hp-roman8 --></assoc> + <assoc ccsid="1088"><!-- Korean PC DATA single-byte --></assoc> + <assoc ccsid="1089" mibenum="9"><!-- ISO 8859-6: Arabic --></assoc> + <assoc ccsid="1097"><!-- Farsi --></assoc> + <assoc ccsid="1098"><!-- Farsi (IBM-PC) --></assoc> + <assoc ccsid="1112"><!-- Baltic, Multilingual --></assoc> + <assoc ccsid="1114"><!-- Traditional Chinese, Taiwan Industry Graphic Character Set (Big5) --></assoc> + <assoc ccsid="1115"><!-- Simplified Chinese, People's Republic of China National. Standard (GB), personal computer SBCS --></assoc> + <assoc ccsid="1122"><!-- Estonia --></assoc> + <assoc ccsid="1123"/> + <assoc ccsid="1129"><!-- ISO-8 Vietnamese --></assoc> + <assoc ccsid="1130"><!-- EBCDIC Vietnamese --></assoc> + <assoc ccsid="1132"><!-- EBCDIC Lao --></assoc> + <assoc ccsid="1133"><!-- ISO-8 Lao --></assoc> + <assoc ccsid="1137"/> + <assoc ccsid="1140" mibenum="2091"><!-- EBCDIC-US-37+Euro --></assoc> + <assoc ccsid="1141" mibenum="2092"><!-- EBCDIC-DE-273+Euro --></assoc> + <assoc ccsid="1142" mibenum="2093"><!-- EBCDIC-DK/NO-277+Euro --></assoc> + <assoc ccsid="1143" mibenum="2094"><!-- EBCDIC-FI/SE-278+Euro --></assoc> + <assoc ccsid="1144" mibenum="2095"><!-- EBCDIC-IT-280+Euro --></assoc> + <assoc ccsid="1145" mibenum="2096"><!-- EBCDIC-ES-284+Euro --></assoc> + <assoc ccsid="1146" mibenum="2097"><!-- EBCDIC-GB-285+Euro --></assoc> + <assoc ccsid="1147" mibenum="2098"><!-- EBCDIC-FR-297+Euro --></assoc> + <assoc ccsid="1148" mibenum="2099"><!-- EBCDIC-INT-500+Euro --></assoc> + <assoc ccsid="1149" mibenum="2100"><!-- EBCDIC-IS-871+Euro --></assoc> + <assoc ccsid="1153"/> + <assoc ccsid="1154"/> + <assoc ccsid="1155"/> + <assoc ccsid="1156"/> + <assoc ccsid="1157"/> + <assoc ccsid="1158"/> + <assoc ccsid="1160"/> + <assoc ccsid="1164"/> + <assoc ccsid="1201" mibenum="1013"><!-- UTF-16BE --> + <alias>UTF16-BE</alias> + <alias>UTF16BE</alias> + <alias>UTF-16-BE</alias> + </assoc> + <assoc ccsid="1203" mibenum="1014"><!-- UTF-16LE --> + <alias>UTF16-LE</alias> + <alias>UTF16LE</alias> + <alias>UTF-16-LE</alias> + </assoc> + <assoc ccsid="1208" mibenum="106"><!-- UTF-8 --> + <alias>UTF8</alias> + </assoc> + <assoc ccsid="1233" mibenum="1018"><!-- UTF-32BE --> + <alias>UTF32-BE</alias> + <alias>UTF32BE</alias> + <alias>UTF-32-BE</alias> + </assoc> + <assoc ccsid="1235" mibenum="1019"><!-- UTF-32LE --> + <alias>UTF32-LE</alias> + <alias>UTF32LE</alias> + <alias>UTF-32-LE</alias> + </assoc> + <assoc ccsid="1250" mibenum="2002"><!-- Windows Latin 2 --></assoc> + <assoc ccsid="1251"><!-- Windows Cyrillic --></assoc> + <assoc ccsid="1252" mibenum="2001"><!-- Windows Latin 1 --></assoc> + <assoc ccsid="1253"><!-- Windows Greek --></assoc> + <assoc ccsid="1254"><!-- Windows Turkish --></assoc> + <assoc ccsid="1255"><!-- Windows Hebrew --></assoc> + <assoc ccsid="1256"><!-- Windows Arabic --></assoc> + <assoc ccsid="1257"><!-- Windows Baltic Rim --></assoc> + <assoc ccsid="1258"><!-- Windows Vietnamese --></assoc> + <assoc ccsid="1275"><!-- Apple, Latin-1 --></assoc> + <assoc ccsid="1276" mibenum="2005"><!-- Adobe-Standard-Encoding --></assoc> + <assoc ccsid="1280"><!-- Apple, Greek --></assoc> + <assoc ccsid="1281"><!-- Apple, Turkey --></assoc> + <assoc ccsid="1282"><!-- Apple, Central European (Latin-2) --></assoc> + <assoc ccsid="1283"><!-- Apple, Cyrillic --></assoc> + <assoc ccsid="1363" mibenum="36"><!-- KS_C_5601-1987 --> + <alias>korean</alias> + </assoc> + <assoc ccsid="1364"/> + <assoc ccsid="1373"><!-- Windows-950 --></assoc> + <assoc ccsid="1375" mibenum="2101"><!-- Big5-HKSCS --></assoc> + <assoc ccsid="1380"><!-- Simplified Chinese DBCS PC --></assoc> + <assoc ccsid="1381"><!-- Simplified Chinese PC DATA Mixed --></assoc> + <assoc ccsid="1383" mibenum="2025"><!-- GB2312 --> + <alias>EUC-CN</alias> + </assoc> + <assoc ccsid="1386" mibenum="113"><!-- GBK --></assoc> + <assoc ccsid="1388"><!-- Simplified Chinese DBCS-Host DATA GBK mixed --></assoc> + <assoc ccsid="1392"><!-- S-ch PC Dara mixed GB18030 --></assoc> + <assoc ccsid="1399" /> + <assoc ccsid="4396"><!-- Japanese Host DB including 1880 --></assoc> + <assoc ccsid="4948"><!-- Latin 2 PC DATA Multilingual --></assoc> + <assoc ccsid="4951"><!-- Cyrillic PC DATA Multilingual --></assoc> + <assoc ccsid="4952"><!-- Hebrew PC DATA --></assoc> + <assoc ccsid="4953"><!-- Turkey PC DATA Latin 5 --></assoc> + <assoc ccsid="4960"><!-- Arabic PC DATA --></assoc> + <assoc ccsid="4965"><!-- Greek PC DATA --></assoc> + <assoc ccsid="4971"/> + <assoc ccsid="5026"><!-- Japan Katakana (extended range) 1880 UDC --></assoc> + <assoc ccsid="5035"><!-- Japan English (extended range) 1880 UDC --></assoc> + <assoc ccsid="5050"><!-- G0 - JIS X201 Roman for CP 895; G1 JIS X208-1990 for CP 952 --></assoc> + <assoc ccsid="5052"><!-- JIS X201 Roman for CP 895; JIS X208-1983 for CP 952 --></assoc> + <assoc ccsid="5053"><!-- JIS X201 Roman for CP 895; JIS X208-1978 for CP 955 --></assoc> + <assoc ccsid="5054"><!-- ASCII for CP 367; JIS X208-1983 for CP 952 --></assoc> + <assoc ccsid="5055"><!-- ASCII for CP 367; JIS X208-1978 for CP 955 --></assoc> + <assoc ccsid="5354" mibenum="2258"><!-- windows-1258 --></assoc> + <assoc ccsid="5346" mibenum="2250"><!-- windows-1250 --></assoc> + <assoc ccsid="5347" mibenum="2251"><!-- windows-1251 --></assoc> + <assoc ccsid="5348" mibenum="2252"><!-- windows-1252 --></assoc> + <assoc ccsid="5349" mibenum="2253"><!-- windows-1253 --></assoc> + <assoc ccsid="5350" mibenum="2254"><!-- windows-1254 --></assoc> + <assoc ccsid="5123"/> + <assoc ccsid="5478" mibenum="57"><!-- GB_2312-80 --> + <alias>chinese</alias> + </assoc> + <assoc ccsid="8612"><!-- Arabic (base shapes only) --></assoc> + <assoc ccsid="9030"><!-- Thai Host Extended SBCS --></assoc> + <assoc ccsid="9056"><!-- PC DATA: Arabic PC Storage/Interchange --></assoc> + <assoc ccsid="9066"><!-- Thai PC DATA Extended SBCS --></assoc> + <assoc ccsid="9447" mibenum="2255"><!-- windows-1255 --></assoc> + <assoc ccsid="9448" mibenum="2256"><!-- windows-1256 --></assoc> + <assoc ccsid="9449" mibenum="2257"><!-- windows-1257 --></assoc> + <assoc ccsid="12708"/> + <assoc ccsid="13121"/> + <assoc ccsid="13124"/> + <assoc ccsid="13488" mibenum="1000"><!-- ISO-10646-UCS-2 --> + <alias>UCS-2</alias> + <alias>UCS2</alias> + </assoc> + <assoc ccsid="17354"><!-- G0 - ASCII for CP 00367; G1 -KSC X5601-1989 (including 188 UDCs) for --></assoc> + <assoc ccsid="25546"><!-- Korean 2022-KR TCP ASCII --></assoc> + <assoc ccsid="28709"><!-- Traditional Chinese (extended range) --></assoc> + <assoc ccsid="33722" mibenum="18"><!-- EUC-JP --></assoc> + <assoc ccsid="57345"><!-- All Japanese 2022 characters --></assoc> + <assoc ccsid="61952"><!-- AS/400 specific UCS level 2. --></assoc> + <assoc ccsid="62211"/> + <assoc ccsid="62224"/> + <assoc ccsid="62235"/> + <assoc ccsid="62245"/> + <assoc mibenum="27"><!-- ISO-10646-UTF-1 --></assoc> +</ccsid_mibenum> diff --git a/libxml2/os400/iconv/bldcsndfa/character-sets.xhtml b/libxml2/os400/iconv/bldcsndfa/character-sets.xhtml new file mode 100644 index 0000000..e1d5a3b --- /dev/null +++ b/libxml2/os400/iconv/bldcsndfa/character-sets.xhtml @@ -0,0 +1,3077 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xmlns:iana="http://www.iana.org/assignments"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=ASCII" /> + <link rel="stylesheet" href="../_support/iana-registry.css" type="text/css" /> + <script type="text/javascript" src="../_support/jquery.js"></script> + <script type="text/javascript" src="../_support/sort.js"></script> + <title>Character Sets</title> + </head> + <body> + <h1>Character Sets</h1> + <dl> + <dt>Last Updated</dt> + <dd>2013-01-23</dd> + <dt>Registration Procedure(s)</dt> + <dd> + <pre>Expert Review</pre> + </dd> + <dt>Expert(s)</dt> + <dd> + <pre>Primary Expert Ned Freed and Secondary Expert Martin Dürst</pre> + </dd> + <dt>Reference</dt> + <dd>[<a href="http://www.iana.org/go/rfc2978">RFC2978</a>]</dd> + <dt>Note</dt> + <dd> + <pre>These are the official names for character sets that may be used in +the Internet and may be referred to in Internet documentation. These +names are expressed in ANSI_X3.4-1968 which is commonly called +US-ASCII or simply ASCII. The character set most commonly use in the +Internet and used especially in protocol standards is US-ASCII, this +is strongly encouraged. The use of the name US-ASCII is also +encouraged. + +The character set names may be up to 40 characters taken from the +printable characters of US-ASCII. However, no distinction is made +between use of upper and lower case letters. + +The MIBenum value is a unique value for use in MIBs to identify coded +character sets. + +The value space for MIBenum values has been divided into three +regions. The first region (3-999) consists of coded character sets +that have been standardized by some standard setting organization. +This region is intended for standards that do not have subset +implementations. The second region (1000-1999) is for the Unicode and +ISO/IEC 10646 coded character sets together with a specification of a +(set of) sub-repertoires that may occur. The third region (>1999) is +intended for vendor specific coded character sets. + + Assigned MIB enum Numbers + ------------------------- + 0-2 Reserved + 3-999 Set By Standards Organizations + 1000-1999 Unicode / 10646 + 2000-2999 Vendor + +The aliases that start with "cs" have been added for use with the +IANA-CHARSET-MIB as originally defined in [<a href="http://www.iana.org/go/rfc3808">RFC3808</a>], and as currently +maintained by IANA at [<a href="http://www.iana.org/assignments/ianacharset-mib">IANA registry <i>ianacharset-mib</i></a>]. +Note that the ianacharset-mib needs to be kept in sync with this +registry. These aliases that start with "cs" contain the standard +numbers along with suggestive names in order to facilitate applications +that want to display the names in user interfaces. The "cs" stands +for character set and is provided for applications that need a lower +case first letter but want to use mixed case thereafter that cannot +contain any special characters, such as underbar ("_") and dash ("-"). + +If the character set is from an ISO standard, its cs alias is the ISO +standard number or name. If the character set is not from an ISO +standard, but is registered with ISO (IPSJ/ITSCJ is the current ISO +Registration Authority), the ISO Registry number is specified as +ISOnnn followed by letters suggestive of the name or standards number +of the code set. When a national or international standard is +revised, the year of revision is added to the cs alias of the new +character set entry in the IANA Registry in order to distinguish the +revised character set from the original character set.</pre> + </dd> + <dt>Alternative Formats</dt> + <dd> + <a class="altformat" href="character-sets.txt"><img src="/_img/icons/text-plain.png" /><br />Plain text</a> + </dd> + </dl> + <dl> + <dt>Alternative Formats</dt> + <dd> + <a class="altformat" href="character-sets-1.csv"><img src="/_img/icons/text-csv.png" /><br />CSV</a> + </dd> + </dl> + <table id="table-character-sets-1" class="sortable"> + <thead> + <tr> + <th>Preferred MIME Name</th> + <th>Name</th> + <th>MIBenum</th> + <th>Source</th> + <th>Reference</th> + <th>Aliases</th> + <th>Note</th> + </tr> + </thead> + <tbody> + <tr> + <td>US-ASCII</td> + <td>US-ASCII</td> + <td>3</td> + <td>ANSI X3.4-1986</td> + <td>[<a href="http://www.iana.org/go/rfc2046">RFC2046</a>]</td> + <td>iso-ir-6<br />ANSI_X3.4-1968<br />ANSI_X3.4-1986<br />ISO_646.irv:1991<br />ISO646-US<br />US-ASCII<br />us<br />IBM367<br />cp367<br />csASCII</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-1</td> + <td>ISO_8859-1:1987</td> + <td>4</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-100<br />ISO_8859-1<br />ISO-8859-1<br />latin1<br />l1<br />IBM819<br />CP819<br />csISOLatin1</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-2</td> + <td>ISO_8859-2:1987</td> + <td>5</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-101<br />ISO_8859-2<br />ISO-8859-2<br />latin2<br />l2<br />csISOLatin2</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-3</td> + <td>ISO_8859-3:1988</td> + <td>6</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-109<br />ISO_8859-3<br />ISO-8859-3<br />latin3<br />l3<br />csISOLatin3</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-4</td> + <td>ISO_8859-4:1988</td> + <td>7</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-110<br />ISO_8859-4<br />ISO-8859-4<br />latin4<br />l4<br />csISOLatin4</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-5</td> + <td>ISO_8859-5:1988</td> + <td>8</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-144<br />ISO_8859-5<br />ISO-8859-5<br />cyrillic<br />csISOLatinCyrillic</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-6</td> + <td>ISO_8859-6:1987</td> + <td>9</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-127<br />ISO_8859-6<br />ISO-8859-6<br />ECMA-114<br />ASMO-708<br />arabic<br />csISOLatinArabic</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-7</td> + <td>ISO_8859-7:1987</td> + <td>10</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1947">RFC1947</a>][<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-126<br />ISO_8859-7<br />ISO-8859-7<br />ELOT_928<br />ECMA-118<br />greek<br />greek8<br />csISOLatinGreek</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-8</td> + <td>ISO_8859-8:1988</td> + <td>11</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-138<br />ISO_8859-8<br />ISO-8859-8<br />hebrew<br />csISOLatinHebrew</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-9</td> + <td>ISO_8859-9:1989</td> + <td>12</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-148<br />ISO_8859-9<br />ISO-8859-9<br />latin5<br />l5<br />csISOLatin5</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-10</td> + <td>ISO-8859-10</td> + <td>13</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-157<br />l6<br />ISO_8859-10:1992<br />csISOLatin6<br />latin6</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO_6937-2-add</td> + <td>14</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>] and ISO 6937-2:1983<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-142<br />csISOTextComm</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JIS_X0201</td> + <td>15</td> + <td>JIS X 0201-1976. One byte only, this is equivalent to +JIS/Roman (similar to ASCII) plus eight-bit half-width +Katakana</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>X0201<br />csHalfWidthKatakana</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JIS_Encoding</td> + <td>16</td> + <td>JIS X 0202-1991. Uses ISO 2022 escape sequences to +shift code sets as documented in JIS X 0202-1991.</td> + <td></td> + <td>csJISEncoding</td> + <td></td> + </tr> + <tr> + <td>Shift_JIS</td> + <td>Shift_JIS</td> + <td>17</td> + <td>This charset is an extension of csHalfWidthKatakana by +adding graphic characters in JIS X 0208. The CCS's are +JIS X0201:1997 and JIS X0208:1997. The +complete definition is shown in Appendix 1 of JIS +X0208:1997. +This charset can be used for the top-level media type "text".</td> + <td></td> + <td>MS_Kanji<br />csShiftJIS</td> + <td></td> + </tr> + <tr> + <td>EUC-JP</td> + <td>Extended_UNIX_Code_Packed_Format_for_Japanese</td> + <td>18</td> + <td>Standardized by OSF, UNIX International, and UNIX Systems +Laboratories Pacific. Uses ISO 2022 rules to select +code set 0: US-ASCII (a single 7-bit byte set) +code set 1: JIS X0208-1990 (a double 8-bit byte set) +restricted to A0-FF in both bytes +code set 2: Half Width Katakana (a single 7-bit byte set) +requiring SS2 as the character prefix +code set 3: JIS X0212-1990 (a double 7-bit byte set) +restricted to A0-FF in both bytes +requiring SS3 as the character prefix</td> + <td></td> + <td>csEUCPkdFmtJapanese<br />EUC-JP</td> + <td></td> + </tr> + <tr> + <td></td> + <td>Extended_UNIX_Code_Fixed_Width_for_Japanese</td> + <td>19</td> + <td>Used in Japan. Each character is 2 octets. +code set 0: US-ASCII (a single 7-bit byte set) +1st byte = 00 +2nd byte = 20-7E +code set 1: JIS X0208-1990 (a double 7-bit byte set) +restricted to A0-FF in both bytes +code set 2: Half Width Katakana (a single 7-bit byte set) +1st byte = 00 +2nd byte = A0-FF +code set 3: JIS X0212-1990 (a double 7-bit byte set) +restricted to A0-FF in +the first byte +and 21-7E in the second byte</td> + <td></td> + <td>csEUCFixWidJapanese</td> + <td></td> + </tr> + <tr> + <td></td> + <td>BS_4730</td> + <td>20</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-4<br />ISO646-GB<br />gb<br />uk<br />csISO4UnitedKingdom</td> + <td></td> + </tr> + <tr> + <td></td> + <td>SEN_850200_C</td> + <td>21</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-11<br />ISO646-SE2<br />se2<br />csISO11SwedishForNames</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IT</td> + <td>22</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-15<br />ISO646-IT<br />csISO15Italian</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ES</td> + <td>23</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-17<br />ISO646-ES<br />csISO17Spanish</td> + <td></td> + </tr> + <tr> + <td></td> + <td>DIN_66003</td> + <td>24</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-21<br />de<br />ISO646-DE<br />csISO21German</td> + <td></td> + </tr> + <tr> + <td></td> + <td>NS_4551-1</td> + <td>25</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-60<br />ISO646-NO<br />no<br />csISO60DanishNorwegian<br />csISO60Norwegian1</td> + <td></td> + </tr> + <tr> + <td></td> + <td>NF_Z_62-010</td> + <td>26</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-69<br />ISO646-FR<br />fr<br />csISO69French</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-10646-UTF-1</td> + <td>27</td> + <td>Universal Transfer Format (1), this is the multibyte +encoding, that subsets ASCII-7. It does not have byte +ordering issues.</td> + <td></td> + <td>csISO10646UTF1</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO_646.basic:1983</td> + <td>28</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>ref<br />csISO646basic1983</td> + <td></td> + </tr> + <tr> + <td></td> + <td>INVARIANT</td> + <td>29</td> + <td></td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csINVARIANT</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO_646.irv:1983</td> + <td>30</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-2<br />irv<br />csISO2IntlRefVersion</td> + <td></td> + </tr> + <tr> + <td></td> + <td>NATS-SEFI</td> + <td>31</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-8-1<br />csNATSSEFI</td> + <td></td> + </tr> + <tr> + <td></td> + <td>NATS-SEFI-ADD</td> + <td>32</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-8-2<br />csNATSSEFIADD</td> + <td></td> + </tr> + <tr> + <td></td> + <td>NATS-DANO</td> + <td>33</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-9-1<br />csNATSDANO</td> + <td></td> + </tr> + <tr> + <td></td> + <td>NATS-DANO-ADD</td> + <td>34</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-9-2<br />csNATSDANOADD</td> + <td></td> + </tr> + <tr> + <td></td> + <td>SEN_850200_B</td> + <td>35</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-10<br />FI<br />ISO646-FI<br />ISO646-SE<br />se<br />csISO10Swedish</td> + <td></td> + </tr> + <tr> + <td></td> + <td>KS_C_5601-1987</td> + <td>36</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-149<br />KS_C_5601-1989<br />KSC_5601<br />korean<br />csKSC56011987</td> + <td></td> + </tr> + <tr> + <td>ISO-2022-KR</td> + <td>ISO-2022-KR</td> + <td>37</td> + <td>[<a href="http://www.iana.org/go/rfc1557">RFC1557</a>] (see also KS_C_5601-1987)</td> + <td>[<a href="http://www.iana.org/go/rfc1557">RFC1557</a>][<a href="#Woohyong_Choi">Woohyong_Choi</a>]</td> + <td>csISO2022KR</td> + <td></td> + </tr> + <tr> + <td>EUC-KR</td> + <td>EUC-KR</td> + <td>38</td> + <td>[<a href="http://www.iana.org/go/rfc1557">RFC1557</a>] (see also KS_C_5861-1992)</td> + <td>[<a href="http://www.iana.org/go/rfc1557">RFC1557</a>][<a href="#Woohyong_Choi">Woohyong_Choi</a>]</td> + <td>csEUCKR</td> + <td></td> + </tr> + <tr> + <td>ISO-2022-JP</td> + <td>ISO-2022-JP</td> + <td>39</td> + <td>[<a href="http://www.iana.org/go/rfc1468">RFC1468</a>] (see also [<a href="http://www.iana.org/go/rfc2237">RFC2237</a>])</td> + <td>[<a href="http://www.iana.org/go/rfc1468">RFC1468</a>][<a href="#Jun_Murai">Jun_Murai</a>]</td> + <td>csISO2022JP</td> + <td></td> + </tr> + <tr> + <td>ISO-2022-JP-2</td> + <td>ISO-2022-JP-2</td> + <td>40</td> + <td> + [<a href="http://www.iana.org/go/rfc1554">RFC1554</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc1554">RFC1554</a>][<a href="#Masataka_Ohta">Masataka_Ohta</a>]</td> + <td>csISO2022JP2</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JIS_C6220-1969-jp</td> + <td>41</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>JIS_C6220-1969<br />iso-ir-13<br />katakana<br />x0201-7<br />csISO13JISC6220jp</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JIS_C6220-1969-ro</td> + <td>42</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-14<br />jp<br />ISO646-JP<br />csISO14JISC6220ro</td> + <td></td> + </tr> + <tr> + <td></td> + <td>PT</td> + <td>43</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-16<br />ISO646-PT<br />csISO16Portuguese</td> + <td></td> + </tr> + <tr> + <td></td> + <td>greek7-old</td> + <td>44</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-18<br />csISO18Greek7Old</td> + <td></td> + </tr> + <tr> + <td></td> + <td>latin-greek</td> + <td>45</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-19<br />csISO19LatinGreek</td> + <td></td> + </tr> + <tr> + <td></td> + <td>NF_Z_62-010_(1973)</td> + <td>46</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-25<br />ISO646-FR1<br />csISO25French</td> + <td></td> + </tr> + <tr> + <td></td> + <td>Latin-greek-1</td> + <td>47</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-27<br />csISO27LatinGreek1</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO_5427</td> + <td>48</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-37<br />csISO5427Cyrillic</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JIS_C6226-1978</td> + <td>49</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-42<br />csISO42JISC62261978</td> + <td></td> + </tr> + <tr> + <td></td> + <td>BS_viewdata</td> + <td>50</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-47<br />csISO47BSViewdata</td> + <td></td> + </tr> + <tr> + <td></td> + <td>INIS</td> + <td>51</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-49<br />csISO49INIS</td> + <td></td> + </tr> + <tr> + <td></td> + <td>INIS-8</td> + <td>52</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-50<br />csISO50INIS8</td> + <td></td> + </tr> + <tr> + <td></td> + <td>INIS-cyrillic</td> + <td>53</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-51<br />csISO51INISCyrillic</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO_5427:1981</td> + <td>54</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-54<br />ISO5427Cyrillic1981<br />csISO54271981</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO_5428:1980</td> + <td>55</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-55<br />csISO5428Greek</td> + <td></td> + </tr> + <tr> + <td></td> + <td>GB_1988-80</td> + <td>56</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-57<br />cn<br />ISO646-CN<br />csISO57GB1988</td> + <td></td> + </tr> + <tr> + <td></td> + <td>GB_2312-80</td> + <td>57</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-58<br />chinese<br />csISO58GB231280</td> + <td></td> + </tr> + <tr> + <td></td> + <td>NS_4551-2</td> + <td>58</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>ISO646-NO2<br />iso-ir-61<br />no2<br />csISO61Norwegian2</td> + <td></td> + </tr> + <tr> + <td></td> + <td>videotex-suppl</td> + <td>59</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-70<br />csISO70VideotexSupp1</td> + <td></td> + </tr> + <tr> + <td></td> + <td>PT2</td> + <td>60</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-84<br />ISO646-PT2<br />csISO84Portuguese2</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ES2</td> + <td>61</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-85<br />ISO646-ES2<br />csISO85Spanish2</td> + <td></td> + </tr> + <tr> + <td></td> + <td>MSZ_7795.3</td> + <td>62</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-86<br />ISO646-HU<br />hu<br />csISO86Hungarian</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JIS_C6226-1983</td> + <td>63</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-87<br />x0208<br />JIS_X0208-1983<br />csISO87JISX0208</td> + <td></td> + </tr> + <tr> + <td></td> + <td>greek7</td> + <td>64</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-88<br />csISO88Greek7</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ASMO_449</td> + <td>65</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>ISO_9036<br />arabic7<br />iso-ir-89<br />csISO89ASMO449</td> + <td></td> + </tr> + <tr> + <td></td> + <td>iso-ir-90</td> + <td>66</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csISO90</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JIS_C6229-1984-a</td> + <td>67</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-91<br />jp-ocr-a<br />csISO91JISC62291984a</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JIS_C6229-1984-b</td> + <td>68</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-92<br />ISO646-JP-OCR-B<br />jp-ocr-b<br />csISO92JISC62991984b</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JIS_C6229-1984-b-add</td> + <td>69</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-93<br />jp-ocr-b-add<br />csISO93JIS62291984badd</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JIS_C6229-1984-hand</td> + <td>70</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-94<br />jp-ocr-hand<br />csISO94JIS62291984hand</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JIS_C6229-1984-hand-add</td> + <td>71</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-95<br />jp-ocr-hand-add<br />csISO95JIS62291984handadd</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JIS_C6229-1984-kana</td> + <td>72</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-96<br />csISO96JISC62291984kana</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO_2033-1983</td> + <td>73</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-98<br />e13b<br />csISO2033</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ANSI_X3.110-1983</td> + <td>74</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-99<br />CSA_T500-1983<br />NAPLPS<br />csISO99NAPLPS</td> + <td></td> + </tr> + <tr> + <td></td> + <td>T.61-7bit</td> + <td>75</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-102<br />csISO102T617bit</td> + <td></td> + </tr> + <tr> + <td></td> + <td>T.61-8bit</td> + <td>76</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>T.61<br />iso-ir-103<br />csISO103T618bit</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ECMA-cyrillic</td> + <td>77</td> + <td>[<a href="http://www.itscj.ipsj.or.jp/ISO-IR/111.pdf">ISO registry</a>] + (formerly [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ECMA + registry</a>])</td> + <td></td> + <td>iso-ir-111<br />KOI8-E<br />csISO111ECMACyrillic</td> + <td></td> + </tr> + <tr> + <td></td> + <td>CSA_Z243.4-1985-1</td> + <td>78</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-121<br />ISO646-CA<br />csa7-1<br />csa71<br />ca<br />csISO121Canadian1</td> + <td></td> + </tr> + <tr> + <td></td> + <td>CSA_Z243.4-1985-2</td> + <td>79</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-122<br />ISO646-CA2<br />csa7-2<br />csa72<br />csISO122Canadian2</td> + <td></td> + </tr> + <tr> + <td></td> + <td>CSA_Z243.4-1985-gr</td> + <td>80</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-123<br />csISO123CSAZ24341985gr</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-6-E</td> + <td>ISO_8859-6-E</td> + <td>81</td> + <td> + [<a href="http://www.iana.org/go/rfc1556">RFC1556</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc1556">RFC1556</a>][<a href="#IANA">IANA</a>]</td> + <td>csISO88596E<br />ISO-8859-6-E</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-6-I</td> + <td>ISO_8859-6-I</td> + <td>82</td> + <td> + [<a href="http://www.iana.org/go/rfc1556">RFC1556</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc1556">RFC1556</a>][<a href="#IANA">IANA</a>]</td> + <td>csISO88596I<br />ISO-8859-6-I</td> + <td></td> + </tr> + <tr> + <td></td> + <td>T.101-G2</td> + <td>83</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-128<br />csISO128T101G2</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-8-E</td> + <td>ISO_8859-8-E</td> + <td>84</td> + <td> + [<a href="http://www.iana.org/go/rfc1556">RFC1556</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc1556">RFC1556</a>][<a href="#Hank_Nussbacher">Hank_Nussbacher</a>]</td> + <td>csISO88598E<br />ISO-8859-8-E</td> + <td></td> + </tr> + <tr> + <td>ISO-8859-8-I</td> + <td>ISO_8859-8-I</td> + <td>85</td> + <td> + [<a href="http://www.iana.org/go/rfc1556">RFC1556</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc1556">RFC1556</a>][<a href="#Hank_Nussbacher">Hank_Nussbacher</a>]</td> + <td>csISO88598I<br />ISO-8859-8-I</td> + <td></td> + </tr> + <tr> + <td></td> + <td>CSN_369103</td> + <td>86</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-139<br />csISO139CSN369103</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JUS_I.B1.002</td> + <td>87</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-141<br />ISO646-YU<br />js<br />yu<br />csISO141JUSIB1002</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IEC_P27-1</td> + <td>88</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-143<br />csISO143IECP271</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JUS_I.B1.003-serb</td> + <td>89</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-146<br />serbian<br />csISO146Serbian</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JUS_I.B1.003-mac</td> + <td>90</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>macedonian<br />iso-ir-147<br />csISO147Macedonian</td> + <td></td> + </tr> + <tr> + <td></td> + <td>greek-ccitt</td> + <td>91</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-150<br />csISO150<br />csISO150GreekCCITT</td> + <td></td> + </tr> + <tr> + <td></td> + <td>NC_NC00-10:81</td> + <td>92</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cuba<br />iso-ir-151<br />ISO646-CU<br />csISO151Cuba</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO_6937-2-25</td> + <td>93</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-152<br />csISO6937Add</td> + <td></td> + </tr> + <tr> + <td></td> + <td>GOST_19768-74</td> + <td>94</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>ST_SEV_358-88<br />iso-ir-153<br />csISO153GOST1976874</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO_8859-supp</td> + <td>95</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-154<br />latin1-2-5<br />csISO8859Supp</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO_10367-box</td> + <td>96</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>iso-ir-155<br />csISO10367Box</td> + <td></td> + </tr> + <tr> + <td></td> + <td>latin-lap</td> + <td>97</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>lap<br />iso-ir-158<br />csISO158Lap</td> + <td></td> + </tr> + <tr> + <td></td> + <td>JIS_X0212-1990</td> + <td>98</td> + <td> + [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br /> + Note: The current registration authority is IPSJ/ITSCJ, Japan. + </td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>x0212<br />iso-ir-159<br />csISO159JISX02121990</td> + <td></td> + </tr> + <tr> + <td></td> + <td>DS_2089</td> + <td>99</td> + <td>Danish Standard, DS 2089, February 1974</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>DS2089<br />ISO646-DK<br />dk<br />csISO646Danish</td> + <td></td> + </tr> + <tr> + <td></td> + <td>us-dk</td> + <td>100</td> + <td></td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csUSDK</td> + <td></td> + </tr> + <tr> + <td></td> + <td>dk-us</td> + <td>101</td> + <td></td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csDKUS</td> + <td></td> + </tr> + <tr> + <td></td> + <td>KSC5636</td> + <td>102</td> + <td></td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>ISO646-KR<br />csKSC5636</td> + <td></td> + </tr> + <tr> + <td></td> + <td>UNICODE-1-1-UTF-7</td> + <td>103</td> + <td> + [<a href="http://www.iana.org/go/rfc1642">RFC1642</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc1642">RFC1642</a>]</td> + <td>csUnicode11UTF7</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-2022-CN</td> + <td>104</td> + <td> + [<a href="http://www.iana.org/go/rfc1922">RFC1922</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc1922">RFC1922</a>]</td> + <td>csISO2022CN</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-2022-CN-EXT</td> + <td>105</td> + <td> + [<a href="http://www.iana.org/go/rfc1922">RFC1922</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc1922">RFC1922</a>]</td> + <td>csISO2022CNEXT</td> + <td></td> + </tr> + <tr> + <td></td> + <td>UTF-8</td> + <td>106</td> + <td> + [<a href="http://www.iana.org/go/rfc3629">RFC3629</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc3629">RFC3629</a>]</td> + <td>csUTF8</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-8859-13</td> + <td>109</td> + <td>ISO See [<a href="http://www.iana.org/assignments/charset-reg/ISO-8859-13">http://www.iana.org/assignments/charset-reg/ISO-8859-13</a>][<a href="#Vladas_Tumasonis">Vladas_Tumasonis</a>]</td> + <td></td> + <td>csISO885913</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-8859-14</td> + <td>110</td> + <td>ISO See [<a href="http://www.iana.org/assignments/charset-reg/ISO-8859-14">http://www.iana.org/assignments/charset-reg/ISO-8859-14</a>] [<a href="#Keld_Simonsen_2">Keld_Simonsen_2</a>]</td> + <td></td> + <td>iso-ir-199<br />ISO_8859-14:1998<br />ISO_8859-14<br />latin8<br />iso-celtic<br />l8<br />csISO885914</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-8859-15</td> + <td>111</td> + <td>ISO +Please see: [<a href="http://www.iana.org/assignments/charset-reg/ISO-8859-15">http://www.iana.org/assignments/charset-reg/ISO-8859-15</a>]</td> + <td></td> + <td>ISO_8859-15<br />Latin-9<br />csISO885915</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-8859-16</td> + <td>112</td> + <td>ISO</td> + <td></td> + <td>iso-ir-226<br />ISO_8859-16:2001<br />ISO_8859-16<br />latin10<br />l10<br />csISO885916</td> + <td></td> + </tr> + <tr> + <td></td> + <td>GBK</td> + <td>113</td> + <td>Chinese IT Standardization Technical Committee +Please see: [<a href="http://www.iana.org/assignments/charset-reg/GBK">http://www.iana.org/assignments/charset-reg/GBK</a>]</td> + <td></td> + <td>CP936<br />MS936<br />windows-936<br />csGBK</td> + <td></td> + </tr> + <tr> + <td></td> + <td>GB18030</td> + <td>114</td> + <td>Chinese IT Standardization Technical Committee +Please see: [<a href="http://www.iana.org/assignments/charset-reg/GB18030">http://www.iana.org/assignments/charset-reg/GB18030</a>]</td> + <td></td> + <td>csGB18030</td> + <td></td> + </tr> + <tr> + <td></td> + <td>OSD_EBCDIC_DF04_15</td> + <td>115</td> + <td>Fujitsu-Siemens standard mainframe EBCDIC encoding +Please see: [<a href="http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-15">http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-15</a>]</td> + <td></td> + <td>csOSDEBCDICDF0415</td> + <td></td> + </tr> + <tr> + <td></td> + <td>OSD_EBCDIC_DF03_IRV</td> + <td>116</td> + <td>Fujitsu-Siemens standard mainframe EBCDIC encoding +Please see: [<a href="http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF03-IRV">http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF03-IRV</a>]</td> + <td></td> + <td>csOSDEBCDICDF03IRV</td> + <td></td> + </tr> + <tr> + <td></td> + <td>OSD_EBCDIC_DF04_1</td> + <td>117</td> + <td>Fujitsu-Siemens standard mainframe EBCDIC encoding +Please see: [<a href="http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-1">http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-1</a>]</td> + <td></td> + <td>csOSDEBCDICDF041</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-11548-1</td> + <td>118</td> + <td>See [<a href="http://www.iana.org/assignments/charset-reg/ISO-11548-1">http://www.iana.org/assignments/charset-reg/ISO-11548-1</a>] [<a href="#Samuel_Thibault">Samuel_Thibault</a>]</td> + <td></td> + <td>ISO_11548-1<br />ISO_TR_11548-1<br />csISO115481</td> + <td></td> + </tr> + <tr> + <td></td> + <td>KZ-1048</td> + <td>119</td> + <td>See [<a href="http://www.iana.org/assignments/charset-reg/KZ-1048">http://www.iana.org/assignments/charset-reg/KZ-1048</a>] [<a href="#Sairan_M_Kikkarin">Sairan_M_Kikkarin</a>][<a href="#Alexei_Veremeev">Alexei_Veremeev</a>]</td> + <td></td> + <td>STRK1048-2002<br />RK1048<br />csKZ1048</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-10646-UCS-2</td> + <td>1000</td> + <td>the 2-octet Basic Multilingual Plane, aka Unicode +this needs to specify network byte order: the standard +does not specify (it is a 16-bit integer space)</td> + <td></td> + <td>csUnicode</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-10646-UCS-4</td> + <td>1001</td> + <td>the full code space. (same comment about byte order, +these are 31-bit numbers.</td> + <td></td> + <td>csUCS4</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-10646-UCS-Basic</td> + <td>1002</td> + <td>ASCII subset of Unicode. Basic Latin = collection 1 +See ISO 10646, Appendix A</td> + <td></td> + <td>csUnicodeASCII</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-10646-Unicode-Latin1</td> + <td>1003</td> + <td>ISO Latin-1 subset of Unicode. Basic Latin and Latin-1 +Supplement = collections 1 and 2. See ISO 10646, +Appendix A. See [<a href="http://www.iana.org/go/rfc1815">RFC1815</a>].</td> + <td></td> + <td>csUnicodeLatin1<br />ISO-10646</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-10646-J-1</td> + <td>1004</td> + <td>ISO 10646 Japanese, see [<a href="http://www.iana.org/go/rfc1815">RFC1815</a>].</td> + <td></td> + <td>csUnicodeJapanese</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-Unicode-IBM-1261</td> + <td>1005</td> + <td>IBM Latin-2, -3, -5, Extended Presentation Set, GCSGID: 1261</td> + <td></td> + <td>csUnicodeIBM1261</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-Unicode-IBM-1268</td> + <td>1006</td> + <td>IBM Latin-4 Extended Presentation Set, GCSGID: 1268</td> + <td></td> + <td>csUnicodeIBM1268</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-Unicode-IBM-1276</td> + <td>1007</td> + <td>IBM Cyrillic Greek Extended Presentation Set, GCSGID: 1276</td> + <td></td> + <td>csUnicodeIBM1276</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-Unicode-IBM-1264</td> + <td>1008</td> + <td>IBM Arabic Presentation Set, GCSGID: 1264</td> + <td></td> + <td>csUnicodeIBM1264</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-Unicode-IBM-1265</td> + <td>1009</td> + <td>IBM Hebrew Presentation Set, GCSGID: 1265</td> + <td></td> + <td>csUnicodeIBM1265</td> + <td></td> + </tr> + <tr> + <td></td> + <td>UNICODE-1-1</td> + <td>1010</td> + <td> + [<a href="http://www.iana.org/go/rfc1641">RFC1641</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc1641">RFC1641</a>]</td> + <td>csUnicode11</td> + <td></td> + </tr> + <tr> + <td></td> + <td>SCSU</td> + <td>1011</td> + <td>SCSU See [<a href="http://www.iana.org/assignments/charset-reg/SCSU">http://www.iana.org/assignments/charset-reg/SCSU</a>] [<a href="#Markus_Scherer">Markus_Scherer</a>]</td> + <td></td> + <td>csSCSU</td> + <td></td> + </tr> + <tr> + <td></td> + <td>UTF-7</td> + <td>1012</td> + <td> + [<a href="http://www.iana.org/go/rfc2152">RFC2152</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc2152">RFC2152</a>]</td> + <td>csUTF7</td> + <td></td> + </tr> + <tr> + <td></td> + <td>UTF-16BE</td> + <td>1013</td> + <td> + [<a href="http://www.iana.org/go/rfc2781">RFC2781</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc2781">RFC2781</a>]</td> + <td>csUTF16BE</td> + <td></td> + </tr> + <tr> + <td></td> + <td>UTF-16LE</td> + <td>1014</td> + <td> + [<a href="http://www.iana.org/go/rfc2781">RFC2781</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc2781">RFC2781</a>]</td> + <td>csUTF16LE</td> + <td></td> + </tr> + <tr> + <td></td> + <td>UTF-16</td> + <td>1015</td> + <td> + [<a href="http://www.iana.org/go/rfc2781">RFC2781</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc2781">RFC2781</a>]</td> + <td>csUTF16</td> + <td></td> + </tr> + <tr> + <td></td> + <td>CESU-8</td> + <td>1016</td> + <td> + [<a href="http://www.unicode.org/unicode/reports/tr26">http://www.unicode.org/unicode/reports/tr26</a>] + </td> + <td>[<a href="#Toby_Phipps">Toby_Phipps</a>]</td> + <td>csCESU8<br />csCESU-8</td> + <td></td> + </tr> + <tr> + <td></td> + <td>UTF-32</td> + <td>1017</td> + <td> + [<a href="http://www.unicode.org/unicode/reports/tr19/">http://www.unicode.org/unicode/reports/tr19/</a>] + </td> + <td>[<a href="#Mark_Davis">Mark_Davis</a>]</td> + <td>csUTF32</td> + <td></td> + </tr> + <tr> + <td></td> + <td>UTF-32BE</td> + <td>1018</td> + <td> + [<a href="http://www.unicode.org/unicode/reports/tr19/">http://www.unicode.org/unicode/reports/tr19/</a>] + </td> + <td>[<a href="#Mark_Davis">Mark_Davis</a>]</td> + <td>csUTF32BE</td> + <td></td> + </tr> + <tr> + <td></td> + <td>UTF-32LE</td> + <td>1019</td> + <td> + [<a href="http://www.unicode.org/unicode/reports/tr19/">http://www.unicode.org/unicode/reports/tr19/</a>] + </td> + <td>[<a href="#Mark_Davis">Mark_Davis</a>]</td> + <td>csUTF32LE</td> + <td></td> + </tr> + <tr> + <td></td> + <td>BOCU-1</td> + <td>1020</td> + <td> + [<a href="http://www.unicode.org/notes/tn6/">http://www.unicode.org/notes/tn6/</a>] + </td> + <td>[<a href="#Markus_Scherer">Markus_Scherer</a>]</td> + <td>csBOCU1<br />csBOCU-1</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-8859-1-Windows-3.0-Latin-1</td> + <td>2000</td> + <td>Extended ISO 8859-1 Latin-1 for Windows 3.0. +PCL Symbol Set id: 9U</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csWindows30Latin1</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-8859-1-Windows-3.1-Latin-1</td> + <td>2001</td> + <td>Extended ISO 8859-1 Latin-1 for Windows 3.1. +PCL Symbol Set id: 19U</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csWindows31Latin1</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-8859-2-Windows-Latin-2</td> + <td>2002</td> + <td>Extended ISO 8859-2. Latin-2 for Windows 3.1. +PCL Symbol Set id: 9E</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csWindows31Latin2</td> + <td></td> + </tr> + <tr> + <td></td> + <td>ISO-8859-9-Windows-Latin-5</td> + <td>2003</td> + <td>Extended ISO 8859-9. Latin-5 for Windows 3.1 +PCL Symbol Set id: 5T</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csWindows31Latin5</td> + <td></td> + </tr> + <tr> + <td></td> + <td>hp-roman8</td> + <td>2004</td> + <td>LaserJet IIP Printer User's Manual, +HP part no 33471-90901, Hewlet-Packard, June 1989.</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.][<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>roman8<br />r8<br />csHPRoman8</td> + <td></td> + </tr> + <tr> + <td></td> + <td>Adobe-Standard-Encoding</td> + <td>2005</td> + <td>PostScript Language Reference Manual +PCL Symbol Set id: 10J</td> + <td>[Adobe Systems Incorporated, PostScript Language Reference +Manual, second edition, Addison-Wesley Publishing Company, +Inc., 1990.]</td> + <td>csAdobeStandardEncoding</td> + <td></td> + </tr> + <tr> + <td></td> + <td>Ventura-US</td> + <td>2006</td> + <td>Ventura US. ASCII plus characters typically used in +publishing, like pilcrow, copyright, registered, trade mark, +section, dagger, and double dagger in the range A0 (hex) +to FF (hex). +PCL Symbol Set id: 14J</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csVenturaUS</td> + <td></td> + </tr> + <tr> + <td></td> + <td>Ventura-International</td> + <td>2007</td> + <td>Ventura International. ASCII plus coded characters similar +to Roman8. +PCL Symbol Set id: 13J</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csVenturaInternational</td> + <td></td> + </tr> + <tr> + <td></td> + <td>DEC-MCS</td> + <td>2008</td> + <td>VAX/VMS User's Manual, +Order Number: AI-Y517A-TE, April 1986.</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>dec<br />csDECMCS</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM850</td> + <td>2009</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp850<br />850<br />csPC850Multilingual</td> + <td></td> + </tr> + <tr> + <td></td> + <td>PC8-Danish-Norwegian</td> + <td>2012</td> + <td>PC Danish Norwegian +8-bit PC set for Danish Norwegian +PCL Symbol Set id: 11U</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csPC8DanishNorwegian</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM862</td> + <td>2013</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp862<br />862<br />csPC862LatinHebrew</td> + <td></td> + </tr> + <tr> + <td></td> + <td>PC8-Turkish</td> + <td>2014</td> + <td>PC Latin Turkish. PCL Symbol Set id: 9T</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csPC8Turkish</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM-Symbols</td> + <td>2015</td> + <td>Presentation Set, CPGID: 259</td> + <td>[IBM Corporation, "ABOUT TYPE: IBM's Technical Reference +for Core Interchange Digitized Type", Publication number +S544-3708-01]</td> + <td>csIBMSymbols</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM-Thai</td> + <td>2016</td> + <td>Presentation Set, CPGID: 838</td> + <td>[IBM Corporation, "ABOUT TYPE: IBM's Technical Reference +for Core Interchange Digitized Type", Publication number +S544-3708-01]</td> + <td>csIBMThai</td> + <td></td> + </tr> + <tr> + <td></td> + <td>HP-Legal</td> + <td>2017</td> + <td>PCL 5 Comparison Guide, Hewlett-Packard, +HP part number 5961-0510, October 1992 +PCL Symbol Set id: 1U</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csHPLegal</td> + <td></td> + </tr> + <tr> + <td></td> + <td>HP-Pi-font</td> + <td>2018</td> + <td>PCL 5 Comparison Guide, Hewlett-Packard, +HP part number 5961-0510, October 1992 +PCL Symbol Set id: 15U</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csHPPiFont</td> + <td></td> + </tr> + <tr> + <td></td> + <td>HP-Math8</td> + <td>2019</td> + <td>PCL 5 Comparison Guide, Hewlett-Packard, +HP part number 5961-0510, October 1992 +PCL Symbol Set id: 8M</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csHPMath8</td> + <td></td> + </tr> + <tr> + <td></td> + <td>Adobe-Symbol-Encoding</td> + <td>2020</td> + <td>PostScript Language Reference Manual +PCL Symbol Set id: 5M</td> + <td>[Adobe Systems Incorporated, PostScript Language Reference +Manual, second edition, Addison-Wesley Publishing Company, +Inc., 1990.]</td> + <td>csHPPSMath</td> + <td></td> + </tr> + <tr> + <td></td> + <td>HP-DeskTop</td> + <td>2021</td> + <td>PCL 5 Comparison Guide, Hewlett-Packard, +HP part number 5961-0510, October 1992 +PCL Symbol Set id: 7J</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csHPDesktop</td> + <td></td> + </tr> + <tr> + <td></td> + <td>Ventura-Math</td> + <td>2022</td> + <td>PCL 5 Comparison Guide, Hewlett-Packard, +HP part number 5961-0510, October 1992 +PCL Symbol Set id: 6M</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csVenturaMath</td> + <td></td> + </tr> + <tr> + <td></td> + <td>Microsoft-Publishing</td> + <td>2023</td> + <td>PCL 5 Comparison Guide, Hewlett-Packard, +HP part number 5961-0510, October 1992 +PCL Symbol Set id: 6J</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>csMicrosoftPublishing</td> + <td></td> + </tr> + <tr> + <td></td> + <td>Windows-31J</td> + <td>2024</td> + <td>Windows Japanese. A further extension of Shift_JIS +to include NEC special characters (Row 13), NEC +selection of IBM extensions (Rows 89 to 92), and IBM +extensions (Rows 115 to 119). The CCS's are +JIS X0201:1997, JIS X0208:1997, and these extensions. +This charset can be used for the top-level media type "text", +but it is of limited or specialized use (see [<a href="http://www.iana.org/go/rfc2278">RFC2278</a>]). +PCL Symbol Set id: 19K</td> + <td></td> + <td>csWindows31J</td> + <td></td> + </tr> + <tr> + <td>GB2312</td> + <td>GB2312</td> + <td>2025</td> + <td>Chinese for People's Republic of China (PRC) mixed one byte, +two byte set: +20-7E = one byte ASCII +A1-FE = two byte PRC Kanji +See GB 2312-80 +PCL Symbol Set Id: 18C</td> + <td></td> + <td>csGB2312</td> + <td></td> + </tr> + <tr> + <td>Big5</td> + <td>Big5</td> + <td>2026</td> + <td>Chinese for Taiwan Multi-byte set. +PCL Symbol Set Id: 18T</td> + <td></td> + <td>csBig5</td> + <td></td> + </tr> + <tr> + <td></td> + <td>macintosh</td> + <td>2027</td> + <td>The Unicode Standard ver1.0, ISBN 0-201-56788-1, Oct 1991</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>mac<br />csMacintosh</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM037</td> + <td>2028</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp037<br />ebcdic-cp-us<br />ebcdic-cp-ca<br />ebcdic-cp-wt<br />ebcdic-cp-nl<br />csIBM037</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM038</td> + <td>2029</td> + <td>IBM 3174 Character Set Ref, GA27-3831-02, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>EBCDIC-INT<br />cp038<br />csIBM038</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM273</td> + <td>2030</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>CP273<br />csIBM273</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM274</td> + <td>2031</td> + <td>IBM 3174 Character Set Ref, GA27-3831-02, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>EBCDIC-BE<br />CP274<br />csIBM274</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM275</td> + <td>2032</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>EBCDIC-BR<br />cp275<br />csIBM275</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM277</td> + <td>2033</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>EBCDIC-CP-DK<br />EBCDIC-CP-NO<br />csIBM277</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM278</td> + <td>2034</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>CP278<br />ebcdic-cp-fi<br />ebcdic-cp-se<br />csIBM278</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM280</td> + <td>2035</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>CP280<br />ebcdic-cp-it<br />csIBM280</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM281</td> + <td>2036</td> + <td>IBM 3174 Character Set Ref, GA27-3831-02, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>EBCDIC-JP-E<br />cp281<br />csIBM281</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM284</td> + <td>2037</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>CP284<br />ebcdic-cp-es<br />csIBM284</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM285</td> + <td>2038</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>CP285<br />ebcdic-cp-gb<br />csIBM285</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM290</td> + <td>2039</td> + <td>IBM 3174 Character Set Ref, GA27-3831-02, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp290<br />EBCDIC-JP-kana<br />csIBM290</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM297</td> + <td>2040</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp297<br />ebcdic-cp-fr<br />csIBM297</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM420</td> + <td>2041</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990, +IBM NLS RM p 11-11</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp420<br />ebcdic-cp-ar1<br />csIBM420</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM423</td> + <td>2042</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp423<br />ebcdic-cp-gr<br />csIBM423</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM424</td> + <td>2043</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp424<br />ebcdic-cp-he<br />csIBM424</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM437</td> + <td>2011</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp437<br />437<br />csPC8CodePage437</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM500</td> + <td>2044</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>CP500<br />ebcdic-cp-be<br />ebcdic-cp-ch<br />csIBM500</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM851</td> + <td>2045</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp851<br />851<br />csIBM851</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM852</td> + <td>2010</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp852<br />852<br />csPCp852</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM855</td> + <td>2046</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp855<br />855<br />csIBM855</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM857</td> + <td>2047</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp857<br />857<br />csIBM857</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM860</td> + <td>2048</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp860<br />860<br />csIBM860</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM861</td> + <td>2049</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp861<br />861<br />cp-is<br />csIBM861</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM863</td> + <td>2050</td> + <td>IBM Keyboard layouts and code pages, PN 07G4586 June 1991</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp863<br />863<br />csIBM863</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM864</td> + <td>2051</td> + <td>IBM Keyboard layouts and code pages, PN 07G4586 June 1991</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp864<br />csIBM864</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM865</td> + <td>2052</td> + <td>IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987)</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp865<br />865<br />csIBM865</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM868</td> + <td>2053</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>CP868<br />cp-ar<br />csIBM868</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM869</td> + <td>2054</td> + <td>IBM Keyboard layouts and code pages, PN 07G4586 June 1991</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp869<br />869<br />cp-gr<br />csIBM869</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM870</td> + <td>2055</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>CP870<br />ebcdic-cp-roece<br />ebcdic-cp-yu<br />csIBM870</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM871</td> + <td>2056</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>CP871<br />ebcdic-cp-is<br />csIBM871</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM880</td> + <td>2057</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp880<br />EBCDIC-Cyrillic<br />csIBM880</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM891</td> + <td>2058</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp891<br />csIBM891</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM903</td> + <td>2059</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp903<br />csIBM903</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM904</td> + <td>2060</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>cp904<br />904<br />csIBBM904</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM905</td> + <td>2061</td> + <td>IBM 3174 Character Set Ref, GA27-3831-02, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>CP905<br />ebcdic-cp-tr<br />csIBM905</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM918</td> + <td>2062</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>CP918<br />ebcdic-cp-ar2<br />csIBM918</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM1026</td> + <td>2063</td> + <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>CP1026<br />csIBM1026</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-AT-DE</td> + <td>2064</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csIBMEBCDICATDE</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-AT-DE-A</td> + <td>2065</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICATDEA</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-CA-FR</td> + <td>2066</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICCAFR</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-DK-NO</td> + <td>2067</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICDKNO</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-DK-NO-A</td> + <td>2068</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICDKNOA</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-FI-SE</td> + <td>2069</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICFISE</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-FI-SE-A</td> + <td>2070</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICFISEA</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-FR</td> + <td>2071</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICFR</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-IT</td> + <td>2072</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICIT</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-PT</td> + <td>2073</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICPT</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-ES</td> + <td>2074</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICES</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-ES-A</td> + <td>2075</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICESA</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-ES-S</td> + <td>2076</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICESS</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-UK</td> + <td>2077</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICUK</td> + <td></td> + </tr> + <tr> + <td></td> + <td>EBCDIC-US</td> + <td>2078</td> + <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csEBCDICUS</td> + <td></td> + </tr> + <tr> + <td></td> + <td>UNKNOWN-8BIT</td> + <td>2079</td> + <td></td> + <td>[<a href="http://www.iana.org/go/rfc1428">RFC1428</a>]</td> + <td>csUnknown8BiT</td> + <td></td> + </tr> + <tr> + <td></td> + <td>MNEMONIC</td> + <td>2080</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>], also known as "mnemonic+ascii+38"</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csMnemonic</td> + <td></td> + </tr> + <tr> + <td></td> + <td>MNEM</td> + <td>2081</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>], also known as "mnemonic+ascii+8200"</td> + <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td> + <td>csMnem</td> + <td></td> + </tr> + <tr> + <td></td> + <td>VISCII</td> + <td>2082</td> + <td> + [<a href="http://www.iana.org/go/rfc1456">RFC1456</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc1456">RFC1456</a>]</td> + <td>csVISCII</td> + <td></td> + </tr> + <tr> + <td></td> + <td>VIQR</td> + <td>2083</td> + <td> + [<a href="http://www.iana.org/go/rfc1456">RFC1456</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc1456">RFC1456</a>]</td> + <td>csVIQR</td> + <td></td> + </tr> + <tr> + <td>KOI8-R</td> + <td>KOI8-R</td> + <td>2084</td> + <td>[<a href="http://www.iana.org/go/rfc1489">RFC1489</a>], based on GOST-19768-74, ISO-6937/8, +INIS-Cyrillic, ISO-5427.</td> + <td>[<a href="http://www.iana.org/go/rfc1489">RFC1489</a>]</td> + <td>csKOI8R</td> + <td></td> + </tr> + <tr> + <td></td> + <td>HZ-GB-2312</td> + <td>2085</td> + <td>[<a href="http://www.iana.org/go/rfc1842">RFC1842</a>], [<a href="http://www.iana.org/go/rfc1843">RFC1843</a>][<a href="http://www.iana.org/go/rfc1843">RFC1843</a>][<a href="http://www.iana.org/go/rfc1842">RFC1842</a>]</td> + <td></td> + <td></td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM866</td> + <td>2086</td> + <td>IBM NLDG Volume 2 (SE09-8002-03) August 1994</td> + <td>[<a href="#Rick_Pond">Rick_Pond</a>]</td> + <td>cp866<br />866<br />csIBM866</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM775</td> + <td>2087</td> + <td>HP PCL 5 Comparison Guide (P/N 5021-0329) pp B-13, 1996</td> + <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide", +(P/N 5021-0329) pp B-13, 1996.]</td> + <td>cp775<br />csPC775Baltic</td> + <td></td> + </tr> + <tr> + <td></td> + <td>KOI8-U</td> + <td>2088</td> + <td> + [<a href="http://www.iana.org/go/rfc2319">RFC2319</a>] + </td> + <td>[<a href="http://www.iana.org/go/rfc2319">RFC2319</a>]</td> + <td>csKOI8U</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM00858</td> + <td>2089</td> + <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM00858">http://www.iana.org/assignments/charset-reg/IBM00858</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td> + <td></td> + <td>CCSID00858<br />CP00858<br />PC-Multilingual-850+euro<br />csIBM00858</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM00924</td> + <td>2090</td> + <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM00924">http://www.iana.org/assignments/charset-reg/IBM00924</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td> + <td></td> + <td>CCSID00924<br />CP00924<br />ebcdic-Latin9--euro<br />csIBM00924</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM01140</td> + <td>2091</td> + <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01140">http://www.iana.org/assignments/charset-reg/IBM01140</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td> + <td></td> + <td>CCSID01140<br />CP01140<br />ebcdic-us-37+euro<br />csIBM01140</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM01141</td> + <td>2092</td> + <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01141">http://www.iana.org/assignments/charset-reg/IBM01141</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td> + <td></td> + <td>CCSID01141<br />CP01141<br />ebcdic-de-273+euro<br />csIBM01141</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM01142</td> + <td>2093</td> + <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01142">http://www.iana.org/assignments/charset-reg/IBM01142</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td> + <td></td> + <td>CCSID01142<br />CP01142<br />ebcdic-dk-277+euro<br />ebcdic-no-277+euro<br />csIBM01142</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM01143</td> + <td>2094</td> + <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01143">http://www.iana.org/assignments/charset-reg/IBM01143</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td> + <td></td> + <td>CCSID01143<br />CP01143<br />ebcdic-fi-278+euro<br />ebcdic-se-278+euro<br />csIBM01143</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM01144</td> + <td>2095</td> + <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01144">http://www.iana.org/assignments/charset-reg/IBM01144</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td> + <td></td> + <td>CCSID01144<br />CP01144<br />ebcdic-it-280+euro<br />csIBM01144</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM01145</td> + <td>2096</td> + <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01145">http://www.iana.org/assignments/charset-reg/IBM01145</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td> + <td></td> + <td>CCSID01145<br />CP01145<br />ebcdic-es-284+euro<br />csIBM01145</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM01146</td> + <td>2097</td> + <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01146">http://www.iana.org/assignments/charset-reg/IBM01146</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td> + <td></td> + <td>CCSID01146<br />CP01146<br />ebcdic-gb-285+euro<br />csIBM01146</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM01147</td> + <td>2098</td> + <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01147">http://www.iana.org/assignments/charset-reg/IBM01147</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td> + <td></td> + <td>CCSID01147<br />CP01147<br />ebcdic-fr-297+euro<br />csIBM01147</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM01148</td> + <td>2099</td> + <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01148">http://www.iana.org/assignments/charset-reg/IBM01148</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td> + <td></td> + <td>CCSID01148<br />CP01148<br />ebcdic-international-500+euro<br />csIBM01148</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM01149</td> + <td>2100</td> + <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01149">http://www.iana.org/assignments/charset-reg/IBM01149</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td> + <td></td> + <td>CCSID01149<br />CP01149<br />ebcdic-is-871+euro<br />csIBM01149</td> + <td></td> + </tr> + <tr> + <td></td> + <td>Big5-HKSCS</td> + <td>2101</td> + <td>See [<a href="http://www.iana.org/assignments/charset-reg/Big5-HKSCS">http://www.iana.org/assignments/charset-reg/Big5-HKSCS</a>]</td> + <td>[<a href="#Nicky_Yick">Nicky_Yick</a>]</td> + <td>csBig5HKSCS</td> + <td></td> + </tr> + <tr> + <td></td> + <td>IBM1047</td> + <td>2102</td> + <td>IBM1047 (EBCDIC Latin 1/Open Systems) +[<a href="http://www-1.ibm.com/servers/eserver/iseries/software/globalization/pdf/cp01047z.pdf">http://www-1.ibm.com/servers/eserver/iseries/software/globalization/pdf/cp01047z.pdf</a>]</td> + <td>[<a href="#Reuel_Robrigado">Reuel_Robrigado</a>]</td> + <td>IBM-1047<br />csIBM1047</td> + <td></td> + </tr> + <tr> + <td></td> + <td>PTCP154</td> + <td>2103</td> + <td>See [<a href="http://www.iana.org/assignments/charset-reg/PTCP154">http://www.iana.org/assignments/charset-reg/PTCP154</a>]</td> + <td>[<a href="#Alexander_Uskov">Alexander_Uskov</a>]</td> + <td>csPTCP154<br />PT154<br />CP154<br />Cyrillic-Asian<br />csPTCP154</td> + <td></td> + </tr> + <tr> + <td></td> + <td>Amiga-1251</td> + <td>2104</td> + <td>See [<a href="http://www.amiga.ultranet.ru/Amiga-1251.html">http://www.amiga.ultranet.ru/Amiga-1251.html</a>]</td> + <td></td> + <td>Ami1251<br />Amiga1251<br />Ami-1251<br />csAmiga1251 +(Aliases are provided for historical reasons and should not be used) [Malyshev]</td> + <td></td> + </tr> + <tr> + <td></td> + <td>KOI7-switched</td> + <td>2105</td> + <td>See [<a href="http://www.iana.org/assignments/charset-reg/KOI7-switched">http://www.iana.org/assignments/charset-reg/KOI7-switched</a>]</td> + <td></td> + <td>csKOI7switched</td> + <td></td> + </tr> + <tr> + <td></td> + <td>BRF</td> + <td>2106</td> + <td>See [<a href="http://www.iana.org/assignments/charset-reg/BRF">http://www.iana.org/assignments/charset-reg/BRF</a>] [<a href="#Samuel_Thibault">Samuel_Thibault</a>]</td> + <td></td> + <td>csBRF</td> + <td></td> + </tr> + <tr> + <td></td> + <td>TSCII</td> + <td>2107</td> + <td>See [<a href="http://www.iana.org/assignments/charset-reg/TSCII">http://www.iana.org/assignments/charset-reg/TSCII</a>] [<a href="#Kuppuswamy_Kalyanasu">Kuppuswamy_Kalyanasu</a>]</td> + <td></td> + <td>csTSCII</td> + <td></td> + </tr> + <tr> + <td></td> + <td>CP51932</td> + <td>2108</td> + <td>See [<a href="http://www.iana.org/assignments/charset-reg/CP51932">http://www.iana.org/assignments/charset-reg/CP51932</a>] [<a href="#Yui_Naruse">Yui_Naruse</a>]</td> + <td></td> + <td>csCP51932</td> + <td></td> + </tr> + <tr> + <td></td> + <td>windows-874</td> + <td>2109</td> + <td>See [<a href="http://www.iana.org/assignments/charset-reg/windows-874">http://www.iana.org/assignments/charset-reg/windows-874</a>] [<a href="#Shawn_Steele">Shawn_Steele</a>]</td> + <td></td> + <td>cswindows874</td> + <td></td> + </tr> + <tr> + <td></td> + <td>windows-1250</td> + <td>2250</td> + <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1250">http://www.iana.org/assignments/charset-reg/windows-1250</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td> + <td></td> + <td>cswindows1250</td> + <td></td> + </tr> + <tr> + <td></td> + <td>windows-1251</td> + <td>2251</td> + <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1251">http://www.iana.org/assignments/charset-reg/windows-1251</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td> + <td></td> + <td>cswindows1251</td> + <td></td> + </tr> + <tr> + <td></td> + <td>windows-1252</td> + <td>2252</td> + <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1252">http://www.iana.org/assignments/charset-reg/windows-1252</a>] [<a href="#Chris_Wendt">Chris_Wendt</a>]</td> + <td></td> + <td>cswindows1252</td> + <td></td> + </tr> + <tr> + <td></td> + <td>windows-1253</td> + <td>2253</td> + <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1253">http://www.iana.org/assignments/charset-reg/windows-1253</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td> + <td></td> + <td>cswindows1253</td> + <td></td> + </tr> + <tr> + <td></td> + <td>windows-1254</td> + <td>2254</td> + <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1254">http://www.iana.org/assignments/charset-reg/windows-1254</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td> + <td></td> + <td>cswindows1254</td> + <td></td> + </tr> + <tr> + <td></td> + <td>windows-1255</td> + <td>2255</td> + <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1255">http://www.iana.org/assignments/charset-reg/windows-1255</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td> + <td></td> + <td>cswindows1255</td> + <td></td> + </tr> + <tr> + <td></td> + <td>windows-1256</td> + <td>2256</td> + <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1256">http://www.iana.org/assignments/charset-reg/windows-1256</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td> + <td></td> + <td>cswindows1256</td> + <td></td> + </tr> + <tr> + <td></td> + <td>windows-1257</td> + <td>2257</td> + <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1257">http://www.iana.org/assignments/charset-reg/windows-1257</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td> + <td></td> + <td>cswindows1257</td> + <td></td> + </tr> + <tr> + <td></td> + <td>windows-1258</td> + <td>2258</td> + <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1258">http://www.iana.org/assignments/charset-reg/windows-1258</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td> + <td></td> + <td>cswindows1258</td> + <td></td> + </tr> + <tr> + <td></td> + <td>TIS-620</td> + <td>2259</td> + <td>Thai Industrial Standards Institute (TISI) [<a href="#Trin_Tantsetthi">Trin_Tantsetthi</a>]</td> + <td></td> + <td>csTIS620</td> + <td></td> + </tr> + <tr> + <td></td> + <td>CP50220</td> + <td>2260</td> + <td>See [<a href="http://www.iana.org/assignments/charset-reg/CP50220">http://www.iana.org/assignments/charset-reg/CP50220</a>] [<a href="#Yui_Naruse">Yui_Naruse</a>]</td> + <td></td> + <td>csCP50220</td> + <td></td> + </tr> + </tbody> + </table> + <h1 class="people">People</h1> + <table class="sortable"> + <thead> + <tr> + <th>ID</th> + <th>Name</th> + <th>Contact URI</th> + <th>Last Updated</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <a name="Alexander_Uskov" id="Alexander_Uskov">[Alexander_Uskov]</a> + </td> + <td>Alexander Uskov</td> + <td> + <a href="mailto:auskov&idc.kz">mailto:auskov&idc.kz</a> + </td> + <td>2002-09</td> + </tr> + <tr> + <td> + <a name="Alexei_Veremeev" id="Alexei_Veremeev">[Alexei_Veremeev]</a> + </td> + <td>Alexei Veremeev</td> + <td> + <a href="mailto:Alexey.Veremeev&oracle.com">mailto:Alexey.Veremeev&oracle.com</a> + </td> + <td>2006-12-07</td> + </tr> + <tr> + <td> + <a name="Chris_Wendt" id="Chris_Wendt">[Chris_Wendt]</a> + </td> + <td>Chris Wendt</td> + <td> + <a href="mailto:christw&microsoft.com">mailto:christw&microsoft.com</a> + </td> + <td>1999-12</td> + </tr> + <tr> + <td> + <a name="Hank_Nussbacher" id="Hank_Nussbacher">[Hank_Nussbacher]</a> + </td> + <td>Hank Nussbacher</td> + <td> + <a href="mailto:hank&vm.tau.ac.il">mailto:hank&vm.tau.ac.il</a> + </td> + <td></td> + </tr> + <tr> + <td> + <a name="IANA" id="IANA">[IANA]</a> + </td> + <td>Internet Assigned Numbers Authority</td> + <td> + <a href="mailto:iana&iana.org">mailto:iana&iana.org</a> + </td> + <td></td> + </tr> + <tr> + <td> + <a name="Jun_Murai" id="Jun_Murai">[Jun_Murai]</a> + </td> + <td>Jun Murai</td> + <td> + <a href="mailto:jun&wide.ad.jp">mailto:jun&wide.ad.jp</a> + </td> + <td></td> + </tr> + <tr> + <td> + <a name="Katya_Lazhintseva" id="Katya_Lazhintseva">[Katya_Lazhintseva]</a> + </td> + <td>Katya Lazhintseva</td> + <td> + <a href="mailto:katyal&microsoft.com">mailto:katyal&microsoft.com</a> + </td> + <td>1996-05</td> + </tr> + <tr> + <td> + <a name="Keld_Simonsen" id="Keld_Simonsen">[Keld_Simonsen]</a> + </td> + <td>Keld Simonsen</td> + <td> + <a href="mailto:Keld.Simonsen&dkuug.dk">mailto:Keld.Simonsen&dkuug.dk</a> + </td> + <td></td> + </tr> + <tr> + <td> + <a name="Keld_Simonsen_2" id="Keld_Simonsen_2">[Keld_Simonsen_2]</a> + </td> + <td>Keld Simonsen</td> + <td> + <a href="mailto:Keld.Simonsen&rap.dk">mailto:Keld.Simonsen&rap.dk</a> + </td> + <td>2000-08</td> + </tr> + <tr> + <td> + <a name="Kuppuswamy_Kalyanasu" id="Kuppuswamy_Kalyanasu">[Kuppuswamy_Kalyanasu]</a> + </td> + <td>Kuppuswamy Kalyanasundaram</td> + <td> + <a href="mailto:kalyan.geo&yahoo.com">mailto:kalyan.geo&yahoo.com</a> + </td> + <td>2007-05-14</td> + </tr> + <tr> + <td> + <a name="Mark_Davis" id="Mark_Davis">[Mark_Davis]</a> + </td> + <td>Mark Davis</td> + <td> + <a href="mailto:mark&unicode.org">mailto:mark&unicode.org</a> + </td> + <td>2002-04</td> + </tr> + <tr> + <td> + <a name="Markus_Scherer" id="Markus_Scherer">[Markus_Scherer]</a> + </td> + <td>Markus Scherer</td> + <td> + <a href="mailto:markus.scherer&jtcsv.com">mailto:markus.scherer&jtcsv.com</a> + </td> + <td>2002-09</td> + </tr> + <tr> + <td> + <a name="Masataka_Ohta" id="Masataka_Ohta">[Masataka_Ohta]</a> + </td> + <td>Masataka Ohta</td> + <td> + <a href="mailto:mohta&cc.titech.ac.jp">mailto:mohta&cc.titech.ac.jp</a> + </td> + <td>1995-07</td> + </tr> + <tr> + <td> + <a name="Nicky_Yick" id="Nicky_Yick">[Nicky_Yick]</a> + </td> + <td>Nicky Yick</td> + <td> + <a href="mailto:cliac&itsd.gcn.gov.hk">mailto:cliac&itsd.gcn.gov.hk</a> + </td> + <td>2000-10</td> + </tr> + <tr> + <td> + <a name="Reuel_Robrigado" id="Reuel_Robrigado">[Reuel_Robrigado]</a> + </td> + <td>Reuel Robrigado</td> + <td> + <a href="mailto:reuelr&ca.ibm.com">mailto:reuelr&ca.ibm.com</a> + </td> + <td>2002-09</td> + </tr> + <tr> + <td> + <a name="Rick_Pond" id="Rick_Pond">[Rick_Pond]</a> + </td> + <td>Rick Pond</td> + <td> + <a href="mailto:rickpond&vnet.ibm.com">mailto:rickpond&vnet.ibm.com</a> + </td> + <td>1997-03</td> + </tr> + <tr> + <td> + <a name="Sairan_M_Kikkarin" id="Sairan_M_Kikkarin">[Sairan_M_Kikkarin]</a> + </td> + <td>Sairan M. Kikkarin</td> + <td> + <a href="mailto:sairan&sci.kz">mailto:sairan&sci.kz</a> + </td> + <td>2006-12-07</td> + </tr> + <tr> + <td> + <a name="Samuel_Thibault" id="Samuel_Thibault">[Samuel_Thibault]</a> + </td> + <td>Samuel Thibault</td> + <td> + <a href="mailto:samuel.thibault&ens-lyon.org">mailto:samuel.thibault&ens-lyon.org</a> + </td> + <td>2006-12-07</td> + </tr> + <tr> + <td> + <a name="Shawn_Steele" id="Shawn_Steele">[Shawn_Steele]</a> + </td> + <td>Shawn Steele</td> + <td> + <a href="mailto:Shawn.Steele&microsoft.com">mailto:Shawn.Steele&microsoft.com</a> + </td> + <td>2010-11-04</td> + </tr> + <tr> + <td> + <a name="Tamer_Mahdi" id="Tamer_Mahdi">[Tamer_Mahdi]</a> + </td> + <td>Tamer Mahdi</td> + <td> + <a href="mailto:tamer&ca.ibm.com">mailto:tamer&ca.ibm.com</a> + </td> + <td>2000-08</td> + </tr> + <tr> + <td> + <a name="Toby_Phipps" id="Toby_Phipps">[Toby_Phipps]</a> + </td> + <td>Toby Phipps</td> + <td> + <a href="mailto:tphipps&peoplesoft.com">mailto:tphipps&peoplesoft.com</a> + </td> + <td>2002-03</td> + </tr> + <tr> + <td> + <a name="Trin_Tantsetthi" id="Trin_Tantsetthi">[Trin_Tantsetthi]</a> + </td> + <td>Trin Tantsetthi</td> + <td> + <a href="mailto:trin&mozart.inet.co.th">mailto:trin&mozart.inet.co.th</a> + </td> + <td>1998-09</td> + </tr> + <tr> + <td> + <a name="Vladas_Tumasonis" id="Vladas_Tumasonis">[Vladas_Tumasonis]</a> + </td> + <td>Vladas Tumasonis</td> + <td> + <a href="mailto:vladas.tumasonis&maf.vu.lt">mailto:vladas.tumasonis&maf.vu.lt</a> + </td> + <td>2000-08</td> + </tr> + <tr> + <td> + <a name="Woohyong_Choi" id="Woohyong_Choi">[Woohyong_Choi]</a> + </td> + <td>Woohyong Choi</td> + <td> + <a href="mailto:whchoi&cosmos.kaist.ac.kr">mailto:whchoi&cosmos.kaist.ac.kr</a> + </td> + <td></td> + </tr> + <tr> + <td> + <a name="Yui_Naruse" id="Yui_Naruse">[Yui_Naruse]</a> + </td> + <td>Yui Naruse</td> + <td> + <a href="mailto:naruse&airemix.jp">mailto:naruse&airemix.jp</a> + </td> + <td>2011-09-23</td> + </tr> + </tbody> + </table> + </body> +</html> diff --git a/libxml2/os400/iconv/ianatables.c b/libxml2/os400/iconv/ianatables.c new file mode 100644 index 0000000..44b29c6 --- /dev/null +++ b/libxml2/os400/iconv/ianatables.c @@ -0,0 +1,4609 @@ +/** +*** Character set names table. +*** Generated by program BLDCSNDFA from IANA character set assignment file +*** and CCSID/MIBenum equivalence file. +*** *** Do not edit by hand *** +**/ + +/** +*** CCSID For arg Recognized name. +*** 62245 X IBMCCSID62245 ibm-62245 +*** 62235 X IBMCCSID62235 ibm-62235 +*** 62224 X IBMCCSID62224 ibm-62224 +*** 62211 X IBMCCSID62211 ibm-62211 +*** 61952 X IBMCCSID61952 ibm-61952 +*** 57345 IBMCCSID57345 ibm-57345 +*** 33722 X csEUCPkdFmtJapanese +*** Extended_UNIX_Code_Packed_Format_for_Japanese EUC-JP +*** iana-18 IBMCCSID33722 ibm-33722 +*** 28709 X IBMCCSID28709 ibm-28709 +*** 25546 IBMCCSID25546 ibm-25546 +*** 17354 X IBMCCSID17354 ibm-17354 +*** 13488 X csUnicode ISO-10646-UCS-2 UCS2 UCS-2 iana-1000 +*** IBMCCSID13488 ibm-13488 +*** 13124 X IBMCCSID13124 ibm-13124 +*** 13121 X IBMCCSID13121 ibm-13121 +*** 12708 X IBMCCSID12708 ibm-12708 +*** 9449 cswindows1257 windows-1257 iana-2257 IBMCCSID09449 +*** ibm-9449 +*** 9448 cswindows1256 windows-1256 iana-2256 IBMCCSID09448 +*** ibm-9448 +*** 9447 cswindows1255 windows-1255 iana-2255 IBMCCSID09447 +*** ibm-9447 +*** 9066 X IBMCCSID09066 ibm-9066 +*** 9056 X IBMCCSID09056 ibm-9056 +*** 9030 X IBMCCSID09030 ibm-9030 +*** 8612 X IBMCCSID08612 ibm-8612 +*** 5478 csISO58GB231280 iso-ir-58 GB_2312-80 chinese iana-57 +*** IBMCCSID05478 ibm-5478 +*** 5123 X IBMCCSID05123 ibm-5123 +*** 5350 X cswindows1254 windows-1254 iana-2254 IBMCCSID05350 +*** ibm-5350 +*** 5349 X cswindows1253 windows-1253 iana-2253 IBMCCSID05349 +*** ibm-5349 +*** 5348 X cswindows1252 windows-1252 iana-2252 IBMCCSID05348 +*** ibm-5348 +*** 5347 X cswindows1251 windows-1251 iana-2251 IBMCCSID05347 +*** ibm-5347 +*** 5346 X cswindows1250 windows-1250 iana-2250 IBMCCSID05346 +*** ibm-5346 +*** 5354 cswindows1258 windows-1258 iana-2258 IBMCCSID05354 +*** ibm-5354 +*** 5055 X IBMCCSID05055 ibm-5055 +*** 5054 X IBMCCSID05054 ibm-5054 +*** 5053 X IBMCCSID05053 ibm-5053 +*** 5052 X IBMCCSID05052 ibm-5052 +*** 5050 X IBMCCSID05050 ibm-5050 +*** 5035 X IBMCCSID05035 ibm-5035 +*** 5026 X IBMCCSID05026 ibm-5026 +*** 4971 X IBMCCSID04971 ibm-4971 +*** 4965 IBMCCSID04965 ibm-4965 +*** 4960 X IBMCCSID04960 ibm-4960 +*** 4953 IBMCCSID04953 ibm-4953 +*** 4952 X IBMCCSID04952 ibm-4952 +*** 4951 X IBMCCSID04951 ibm-4951 +*** 4948 X IBMCCSID04948 ibm-4948 +*** 4396 X IBMCCSID04396 ibm-4396 +*** 1399 X IBMCCSID01399 ibm-1399 +*** 1392 X IBMCCSID01392 ibm-1392 +*** 1388 X IBMCCSID01388 ibm-1388 +*** 1386 X csGBK windows-936 MS936 CP936 GBK iana-113 +*** IBMCCSID01386 ibm-1386 +*** 1383 X csGB2312 GB2312 EUC-CN iana-2025 IBMCCSID01383 +*** ibm-1383 +*** 1381 X IBMCCSID01381 ibm-1381 +*** 1380 X IBMCCSID01380 ibm-1380 +*** 1375 csBig5HKSCS Big5-HKSCS iana-2101 IBMCCSID01375 +*** ibm-1375 +*** 1373 IBMCCSID01373 ibm-1373 +*** 1364 X IBMCCSID01364 ibm-1364 +*** 1363 X csKSC56011987 KSC_5601 KS_C_5601-1989 iso-ir-149 +*** KS_C_5601-1987 korean iana-36 IBMCCSID01363 ibm-1363 +*** 1283 X IBMCCSID01283 ibm-1283 +*** 1282 X IBMCCSID01282 ibm-1282 +*** 1281 X IBMCCSID01281 ibm-1281 +*** 1280 X IBMCCSID01280 ibm-1280 +*** 1276 csAdobeStandardEncoding Adobe-Standard-Encoding +*** iana-2005 IBMCCSID01276 ibm-1276 +*** 1275 X IBMCCSID01275 ibm-1275 +*** 1258 X IBMCCSID01258 ibm-1258 +*** 1257 X IBMCCSID01257 ibm-1257 +*** 1256 X IBMCCSID01256 ibm-1256 +*** 1255 X IBMCCSID01255 ibm-1255 +*** 1254 X IBMCCSID01254 ibm-1254 +*** 1253 X IBMCCSID01253 ibm-1253 +*** 1252 X csWindows31Latin1 ISO-8859-1-Windows-3.1-Latin-1 +*** iana-2001 IBMCCSID01252 ibm-1252 +*** 1251 X IBMCCSID01251 ibm-1251 +*** 1250 X csWindows31Latin2 ISO-8859-2-Windows-Latin-2 iana-2002 +*** IBMCCSID01250 ibm-1250 +*** 1235 csUTF32LE UTF-32LE UTF-32-LE UTF32LE UTF32-LE +*** iana-1019 IBMCCSID01235 ibm-1235 +*** 1233 csUTF32BE UTF-32BE UTF-32-BE UTF32BE UTF32-BE +*** iana-1018 IBMCCSID01233 ibm-1233 +*** 1208 X csUTF8 UTF-8 UTF8 iana-106 IBMCCSID01208 ibm-1208 +*** 1203 csUTF16LE UTF-16LE UTF-16-LE UTF16LE UTF16-LE +*** iana-1014 IBMCCSID01203 ibm-1203 +*** 1201 csUTF16BE UTF-16BE UTF-16-BE UTF16BE UTF16-BE +*** iana-1013 IBMCCSID01201 ibm-1201 +*** 1164 X IBMCCSID01164 ibm-1164 +*** 1160 X IBMCCSID01160 ibm-1160 +*** 1158 X IBMCCSID01158 ibm-1158 +*** 1157 X IBMCCSID01157 ibm-1157 +*** 1156 X IBMCCSID01156 ibm-1156 +*** 1155 X IBMCCSID01155 ibm-1155 +*** 1154 X IBMCCSID01154 ibm-1154 +*** 1153 X IBMCCSID01153 ibm-1153 +*** 1149 X csIBM01149 ebcdic-is-871+euro CP01149 CCSID01149 +*** IBM01149 iana-2100 IBMCCSID01149 ibm-1149 +*** 1148 X csIBM01148 ebcdic-international-500+euro CP01148 +*** CCSID01148 IBM01148 iana-2099 IBMCCSID01148 ibm-1148 +*** 1147 X csIBM01147 ebcdic-fr-297+euro CP01147 CCSID01147 +*** IBM01147 iana-2098 IBMCCSID01147 ibm-1147 +*** 1146 X csIBM01146 ebcdic-gb-285+euro CP01146 CCSID01146 +*** IBM01146 iana-2097 IBMCCSID01146 ibm-1146 +*** 1145 X csIBM01145 ebcdic-es-284+euro CP01145 CCSID01145 +*** IBM01145 iana-2096 IBMCCSID01145 ibm-1145 +*** 1144 X csIBM01144 ebcdic-it-280+euro CP01144 CCSID01144 +*** IBM01144 iana-2095 IBMCCSID01144 ibm-1144 +*** 1143 X csIBM01143 ebcdic-se-278+euro ebcdic-fi-278+euro +*** CP01143 CCSID01143 IBM01143 iana-2094 IBMCCSID01143 +*** ibm-1143 +*** 1142 X csIBM01142 ebcdic-no-277+euro ebcdic-dk-277+euro +*** CP01142 CCSID01142 IBM01142 iana-2093 IBMCCSID01142 +*** ibm-1142 +*** 1141 X csIBM01141 ebcdic-de-273+euro CP01141 CCSID01141 +*** IBM01141 iana-2092 IBMCCSID01141 ibm-1141 +*** 1140 X csIBM01140 ebcdic-us-37+euro CP01140 CCSID01140 +*** IBM01140 iana-2091 IBMCCSID01140 ibm-1140 +*** 1137 X IBMCCSID01137 ibm-1137 +*** 1133 IBMCCSID01133 ibm-1133 +*** 1132 X IBMCCSID01132 ibm-1132 +*** 1130 X IBMCCSID01130 ibm-1130 +*** 1129 X IBMCCSID01129 ibm-1129 +*** 1123 X IBMCCSID01123 ibm-1123 +*** 1122 X IBMCCSID01122 ibm-1122 +*** 1115 IBMCCSID01115 ibm-1115 +*** 1114 IBMCCSID01114 ibm-1114 +*** 1112 X IBMCCSID01112 ibm-1112 +*** 1098 X IBMCCSID01098 ibm-1098 +*** 1097 X IBMCCSID01097 ibm-1097 +*** 1089 X csISOLatinArabic arabic ASMO-708 ECMA-114 ISO_8859-6 +*** iso-ir-127 ISO_8859-6:1987 ISO-8859-6 iana-9 +*** IBMCCSID01089 ibm-1089 +*** 1088 IBMCCSID01088 ibm-1088 +*** 1051 X csHPRoman8 r8 roman8 hp-roman8 iana-2004 IBMCCSID01051 +*** ibm-1051 +*** 1047 X csIBM1047 IBM-1047 IBM1047 iana-2102 IBMCCSID01047 +*** ibm-1047 +*** 1046 X IBMCCSID01046 ibm-1046 +*** 1043 IBMCCSID01043 ibm-1043 +*** 1042 IBMCCSID01042 ibm-1042 +*** 1041 IBMCCSID01041 ibm-1041 +*** 1040 IBMCCSID01040 ibm-1040 +*** 1027 X IBMCCSID01027 ibm-1027 +*** 1026 X csIBM1026 CP1026 IBM1026 iana-2063 IBMCCSID01026 +*** ibm-1026 +*** 1025 X IBMCCSID01025 ibm-1025 +*** 1019 X IBMCCSID01019 ibm-1019 +*** 1018 X IBMCCSID01018 ibm-1018 +*** 1017 X IBMCCSID01017 ibm-1017 +*** 1016 X IBMCCSID01016 ibm-1016 +*** 1015 X IBMCCSID01015 ibm-1015 +*** 1014 X IBMCCSID01014 ibm-1014 +*** 1013 X IBMCCSID01013 ibm-1013 +*** 1012 X IBMCCSID01012 ibm-1012 +*** 1011 X IBMCCSID01011 ibm-1011 +*** 1010 X IBMCCSID01010 ibm-1010 +*** 1009 X IBMCCSID01009 ibm-1009 +*** 1008 IBMCCSID01008 ibm-1008 +*** 970 X csEUCKR EUC-KR iana-38 IBMCCSID00970 ibm-970 +*** 965 X IBMCCSID00965 ibm-965 +*** 964 X IBMCCSID00964 ibm-964 +*** 959 X IBMCCSID00959 ibm-959 +*** 958 X IBMCCSID00958 ibm-958 +*** 957 X IBMCCSID00957 ibm-957 +*** 956 X IBMCCSID00956 ibm-956 +*** 951 X IBMCCSID00951 ibm-951 +*** 950 X IBMCCSID00950 ibm-950 +*** 949 X IBMCCSID00949 ibm-949 +*** 947 X IBMCCSID00947 ibm-947 +*** 946 X IBMCCSID00946 ibm-946 +*** 944 X IBMCCSID00944 ibm-944 +*** 943 X csShiftJIS MS_Kanji Shift_JIS iana-17 IBMCCSID00943 +*** ibm-943 +*** 942 X IBMCCSID00942 ibm-942 +*** 939 X IBMCCSID00939 ibm-939 +*** 938 X IBMCCSID00938 ibm-938 +*** 937 X IBMCCSID00937 ibm-937 +*** 936 IBMCCSID00936 ibm-936 +*** 935 X IBMCCSID00935 ibm-935 +*** 934 X IBMCCSID00934 ibm-934 +*** 933 X IBMCCSID00933 ibm-933 +*** 932 X IBMCCSID00932 ibm-932 +*** 930 X IBMCCSID00930 ibm-930 +*** 928 X IBMCCSID00928 ibm-928 +*** 927 X IBMCCSID00927 ibm-927 +*** 926 X IBMCCSID00926 ibm-926 +*** 924 X csIBM00924 ebcdic-Latin9--euro CP00924 CCSID00924 +*** IBM00924 iana-2090 IBMCCSID00924 ibm-924 +*** 923 X csISO885915 Latin-9 ISO_8859-15 ISO-8859-15 iana-111 +*** IBMCCSID00923 ibm-923 +*** 922 X IBMCCSID00922 ibm-922 +*** 921 X csISO885913 ISO-8859-13 iana-109 IBMCCSID00921 ibm-921 +*** 920 X csISOLatin5 l5 latin5 ISO_8859-9 iso-ir-148 +*** ISO_8859-9:1989 ISO-8859-9 iana-12 IBMCCSID00920 +*** ibm-920 +*** 918 X csIBM918 ebcdic-cp-ar2 CP918 IBM918 iana-2062 +*** IBMCCSID00918 ibm-918 +*** 916 X csISOLatinHebrew hebrew ISO_8859-8 iso-ir-138 +*** ISO_8859-8:1988 ISO-8859-8 iana-11 IBMCCSID00916 +*** ibm-916 +*** 915 X csISOLatinCyrillic cyrillic ISO_8859-5 iso-ir-144 +*** ISO_8859-5:1988 ISO-8859-5 iana-8 IBMCCSID00915 +*** ibm-915 +*** 914 X csISOLatin4 l4 latin4 ISO_8859-4 iso-ir-110 +*** ISO_8859-4:1988 ISO-8859-4 iana-7 IBMCCSID00914 +*** ibm-914 +*** 913 csISOLatin3 l3 latin3 ISO_8859-3 iso-ir-109 +*** ISO_8859-3:1988 ISO-8859-3 iana-6 IBMCCSID00913 +*** ibm-913 +*** 912 X csISOLatin2 l2 latin2 ISO_8859-2 iso-ir-101 +*** ISO_8859-2:1987 ISO-8859-2 iana-5 IBMCCSID00912 +*** ibm-912 +*** 905 X csIBM905 ebcdic-cp-tr CP905 IBM905 iana-2061 +*** IBMCCSID00905 ibm-905 +*** 904 csIBBM904 904 cp904 IBM904 iana-2060 IBMCCSID00904 +*** ibm-904 +*** 903 csIBM903 cp903 IBM903 iana-2059 IBMCCSID00903 ibm-903 +*** 897 X csHalfWidthKatakana X0201 JIS_X0201 iana-15 +*** IBMCCSID00897 ibm-897 +*** 896 IBMCCSID00896 ibm-896 +*** 891 X csIBM891 cp891 IBM891 iana-2058 IBMCCSID00891 ibm-891 +*** 880 X csIBM880 EBCDIC-Cyrillic cp880 IBM880 iana-2057 +*** IBMCCSID00880 ibm-880 +*** 878 X csKOI8R KOI8-R iana-2084 IBMCCSID00878 ibm-878 +*** 875 X IBMCCSID00875 ibm-875 +*** 874 X csTIS620 TIS-620 csEUCTH eucTH EUC-TH> iana-2259 +*** IBMCCSID00874 ibm-874 +*** 871 X csIBM871 ebcdic-cp-is CP871 IBM871 iana-2056 +*** IBMCCSID00871 ibm-871 +*** 870 X csIBM870 ebcdic-cp-yu ebcdic-cp-roece CP870 IBM870 +*** iana-2055 IBMCCSID00870 ibm-870 +*** 869 X csIBM869 cp-gr 869 cp869 IBM869 iana-2054 +*** IBMCCSID00869 ibm-869 +*** 868 X csIBM868 cp-ar CP868 IBM868 iana-2053 IBMCCSID00868 +*** ibm-868 +*** 866 X csIBM866 866 cp866 IBM866 iana-2086 IBMCCSID00866 +*** ibm-866 +*** 865 X csIBM865 865 cp865 IBM865 iana-2052 IBMCCSID00865 +*** ibm-865 +*** 864 X csIBM864 cp864 IBM864 iana-2051 IBMCCSID00864 ibm-864 +*** 863 X csIBM863 863 cp863 IBM863 iana-2050 IBMCCSID00863 +*** ibm-863 +*** 862 X csPC862LatinHebrew 862 cp862 IBM862 iana-2013 +*** IBMCCSID00862 ibm-862 +*** 861 X csIBM861 cp-is 861 cp861 IBM861 iana-2049 +*** IBMCCSID00861 ibm-861 +*** 860 X csIBM860 860 cp860 IBM860 iana-2048 IBMCCSID00860 +*** ibm-860 +*** 858 csIBM00858 PC-Multilingual-850+euro CP00858 CCSID00858 +*** IBM00858 iana-2089 IBMCCSID00858 ibm-858 +*** 857 X csIBM857 857 cp857 IBM857 iana-2047 IBMCCSID00857 +*** ibm-857 +*** 855 X csIBM855 855 cp855 IBM855 iana-2046 IBMCCSID00855 +*** ibm-855 +*** 852 X csPCp852 852 cp852 IBM852 iana-2010 IBMCCSID00852 +*** ibm-852 +*** 851 X csIBM851 851 cp851 IBM851 iana-2045 IBMCCSID00851 +*** ibm-851 +*** 850 X csPC850Multilingual 850 cp850 IBM850 iana-2009 +*** IBMCCSID00850 ibm-850 +*** 838 X csIBMThai IBM-Thai iana-2016 IBMCCSID00838 ibm-838 +*** 837 X IBMCCSID00837 ibm-837 +*** 836 X IBMCCSID00836 ibm-836 +*** 835 X IBMCCSID00835 ibm-835 +*** 833 X IBMCCSID00833 ibm-833 +*** 819 X csISOLatin1 CP819 IBM819 l1 latin1 ISO_8859-1 +*** iso-ir-100 ISO_8859-1:1987 ISO-8859-1 iana-4 +*** IBMCCSID00819 ibm-819 +*** 813 X csISOLatinGreek greek8 greek ECMA-118 ELOT_928 +*** ISO_8859-7 iso-ir-126 ISO_8859-7:1987 ISO-8859-7 +*** iana-10 IBMCCSID00813 ibm-813 +*** 775 X csPC775Baltic cp775 IBM775 iana-2087 IBMCCSID00775 +*** ibm-775 +*** 737 X IBMCCSID00737 ibm-737 +*** 720 X IBMCCSID00720 ibm-720 +*** 500 X csIBM500 ebcdic-cp-ch ebcdic-cp-be CP500 IBM500 +*** iana-2044 IBMCCSID00500 ibm-500 +*** 437 X csPC8CodePage437 437 cp437 IBM437 iana-2011 +*** IBMCCSID00437 ibm-437 +*** 424 X csIBM424 ebcdic-cp-he cp424 IBM424 iana-2043 +*** IBMCCSID00424 ibm-424 +*** 423 X csIBM423 ebcdic-cp-gr cp423 IBM423 iana-2042 +*** IBMCCSID00423 ibm-423 +*** 420 X csIBM420 ebcdic-cp-ar1 cp420 IBM420 iana-2041 +*** IBMCCSID00420 ibm-420 +*** 367 X csASCII cp367 IBM367 us ISO646-US ISO_646.irv:1991 +*** ANSI_X3.4-1986 ANSI_X3.4-1968 iso-ir-6 US-ASCII ASCII +*** iana-3 IBMCCSID00367 ibm-367 +*** 301 X IBMCCSID00301 ibm-301 +*** 300 X IBMCCSID00300 ibm-300 +*** 297 X csIBM297 ebcdic-cp-fr cp297 IBM297 iana-2040 +*** IBMCCSID00297 ibm-297 +*** 290 X csIBM290 EBCDIC-JP-kana cp290 IBM290 iana-2039 +*** IBMCCSID00290 ibm-290 +*** 285 X csIBM285 ebcdic-cp-gb CP285 IBM285 iana-2038 +*** IBMCCSID00285 ibm-285 +*** 284 X csIBM284 ebcdic-cp-es CP284 IBM284 iana-2037 +*** IBMCCSID00284 ibm-284 +*** 280 X csIBM280 ebcdic-cp-it CP280 IBM280 iana-2035 +*** IBMCCSID00280 ibm-280 +*** 278 X csIBM278 ebcdic-cp-se ebcdic-cp-fi CP278 IBM278 +*** iana-2034 IBMCCSID00278 ibm-278 +*** 277 X csIBM277 EBCDIC-CP-NO EBCDIC-CP-DK IBM277 iana-2033 +*** IBMCCSID00277 ibm-277 +*** 273 X csIBM273 CP273 IBM273 iana-2030 IBMCCSID00273 ibm-273 +*** 256 X IBMCCSID00256 ibm-256 +*** 37 X csIBM037 ebcdic-cp-nl ebcdic-cp-wt ebcdic-cp-ca +*** ebcdic-cp-us cp037 IBM037 EBCDIC iana-2028 +*** IBMCCSID00037 ibm-37 +*** 0 IBMCCSID00000 ibm-0 +**/ + +/** +*** 13499 states, 229 finals, 20020 transitions. +**/ + +typedef unsigned short t_ccsid; +typedef unsigned short t_staterange; +typedef unsigned short t_transrange; + +static t_transrange trans_array[] = { + 0, 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 150, 151, 153, + 154, 156, 157, 159, 160, 162, 163, 165, 166, 168, 169, 171, 172, 173, 174, + 176, 177, 179, 180, 182, 183, 185, 186, 188, 189, 191, 192, 194, 195, 197, + 198, 199, 200, 202, 203, 205, 206, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 233, 234, 235, 236, 238, 239, 241, 242, 243, 245, 246, 248, 249, 251, 252, + 254, 256, 257, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, + 275, 276, 277, 278, 279, 287, 288, 289, 291, 292, 294, 295, 297, 298, 300, + 301, 303, 304, 305, 306, 307, 308, 310, 311, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 357, 358, + 359, 360, 361, 362, 363, 365, 366, 367, 368, 370, 371, 373, 374, 376, 377, + 378, 380, 381, 383, 384, 386, 387, 389, 390, 392, 393, 394, 396, 398, 400, + 401, 402, 403, 409, 410, 411, 412, 413, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 429, 430, 431, 432, 433, 434, 435, 438, 439, 440, + 441, 442, 444, 445, 446, 447, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 462, 463, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 489, 490, 491, 492, 493, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 512, 513, 514, 515, 516, 519, 520, 521, 522, + 523, 524, 525, 526, 527, 528, 531, 532, 533, 534, 535, 536, 537, 538, 539, + 540, 541, 551, 553, 554, 556, 557, 559, 560, 562, 563, 565, 566, 568, 569, + 571, 572, 574, 575, 577, 578, 580, 581, 583, 585, 586, 587, 591, 592, 593, + 595, 596, 598, 599, 600, 602, 603, 604, 606, 607, 609, 610, 612, 613, 615, + 616, 618, 619, 621, 622, 624, 625, 627, 628, 630, 631, 633, 634, 636, 637, + 639, 640, 642, 643, 644, 646, 647, 648, 649, 655, 656, 658, 659, 661, 662, + 663, 664, 665, 666, 667, 668, 669, 672, 673, 675, 676, 677, 679, 680, 682, + 683, 685, 686, 688, 689, 691, 692, 694, 695, 697, 698, 700, 701, 703, 704, + 706, 707, 709, 710, 712, 713, 715, 716, 718, 719, 721, 722, 723, 724, 725, + 727, 728, 730, 731, 733, 734, 736, 737, 739, 740, 741, 745, 746, 747, 748, + 750, 751, 752, 753, 754, 756, 757, 758, 759, 760, 763, 764, 767, 768, 771, + 779, 780, 781, 786, 788, 789, 791, 792, 793, 795, 796, 798, 799, 801, 802, + 803, 804, 805, 806, 807, 816, 817, 818, 822, 823, 824, 825, 826, 827, 828, + 829, 830, 831, 832, 833, 834, 836, 837, 839, 840, 841, 842, 843, 844, 845, + 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 861, 862, + 863, 865, 866, 868, 869, 871, 872, 874, 875, 877, 878, 880, 881, 883, 884, + 885, 887, 888, 890, 891, 893, 894, 896, 897, 898, 900, 901, 903, 904, 906, + 907, 909, 910, 912, 913, 914, 915, 916, 917, 918, 919, 920, 933, 934, 936, + 937, 939, 940, 942, 943, 945, 946, 947, 948, 952, 953, 955, 956, 957, 961, + 962, 963, 965, 966, 967, 968, 970, 971, 972, 973, 974, 975, 976, 977, 978, + 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 991, 992, 996, 998, + 999, 1001, 1002, 1004, 1005, 1007, 1008, 1010, 1011, 1013, 1014, 1015, 1016, + 1017, 1019, 1020, 1022, 1023, 1025, 1026, 1028, 1029, 1031, 1032, 1034, 1035, + 1037, 1038, 1040, 1041, 1043, 1044, 1046, 1047, 1049, 1050, 1052, 1053, 1054, + 1056, 1057, 1059, 1060, 1062, 1063, 1065, 1066, 1068, 1069, 1071, 1072, 1074, + 1075, 1077, 1078, 1080, 1081, 1083, 1084, 1086, 1087, 1088, 1089, 1090, 1091, + 1093, 1094, 1096, 1097, 1099, 1100, 1102, 1103, 1105, 1106, 1108, 1109, 1111, + 1112, 1113, 1114, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1130, + 1131, 1133, 1134, 1135, 1137, 1138, 1140, 1141, 1143, 1144, 1146, 1147, 1149, + 1150, 1152, 1153, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1163, 1164, 1166, + 1167, 1168, 1170, 1171, 1173, 1174, 1176, 1177, 1179, 1180, 1182, 1183, 1184, + 1186, 1187, 1188, 1190, 1191, 1192, 1196, 1197, 1198, 1199, 1200, 1202, 1203, + 1204, 1206, 1207, 1208, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1221, 1222, + 1224, 1225, 1226, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, + 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1257, 1258, 1259, 1260, + 1261, 1262, 1263, 1264, 1265, 1267, 1268, 1270, 1271, 1273, 1274, 1276, 1277, + 1279, 1280, 1282, 1283, 1284, 1285, 1286, 1288, 1289, 1291, 1292, 1294, 1295, + 1297, 1298, 1300, 1301, 1303, 1304, 1306, 1307, 1308, 1309, 1310, 1311, 1312, + 1313, 1314, 1315, 1316, 1317, 1318, 1342, 1343, 1344, 1346, 1347, 1349, 1350, + 1352, 1353, 1355, 1356, 1358, 1359, 1361, 1362, 1363, 1364, 1365, 1366, 1376, + 1378, 1379, 1381, 1383, 1387, 1389, 1391, 1395, 1399, 1401, 1405, 1409, 1411, + 1412, 1414, 1415, 1417, 1418, 1420, 1422, 1424, 1426, 1428, 1430, 1431, 1432, + 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, + 1446, 1478, 1479, 1480, 1482, 1483, 1485, 1486, 1488, 1489, 1491, 1492, 1494, + 1495, 1497, 1498, 1499, 1503, 1505, 1506, 1508, 1509, 1511, 1512, 1514, 1515, + 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1526, 1527, 1529, 1530, + 1532, 1533, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, + 1546, 1547, 1551, 1553, 1554, 1556, 1557, 1559, 1560, 1562, 1563, 1564, 1565, + 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1575, 1577, 1578, 1580, 1581, + 1583, 1584, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, + 1598, 1599, 1601, 1602, 1604, 1605, 1607, 1608, 1609, 1610, 1611, 1612, 1613, + 1614, 1615, 1616, 1617, 1618, 1619, 1623, 1625, 1626, 1628, 1629, 1631, 1632, + 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1647, + 1649, 1650, 1652, 1653, 1655, 1656, 1658, 1659, 1660, 1661, 1662, 1663, 1664, + 1665, 1666, 1667, 1668, 1669, 1671, 1672, 1674, 1675, 1677, 1678, 1680, 1681, + 1683, 1684, 1686, 1687, 1689, 1690, 1692, 1693, 1695, 1696, 1698, 1699, 1701, + 1703, 1704, 1706, 1707, 1709, 1710, 1712, 1713, 1714, 1715, 1716, 1717, 1718, + 1719, 1720, 1721, 1722, 1724, 1725, 1727, 1728, 1730, 1731, 1733, 1734, 1735, + 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1752, 1754, + 1755, 1757, 1758, 1760, 1761, 1763, 1764, 1765, 1766, 1768, 1770, 1771, 1773, + 1774, 1776, 1777, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1788, 1789, + 1791, 1792, 1794, 1795, 1797, 1799, 1801, 1803, 1804, 1806, 1807, 1809, 1810, + 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1823, 1824, 1825, + 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1856, 1857, 1859, 1860, + 1862, 1863, 1865, 1866, 1868, 1869, 1871, 1873, 1874, 1875, 1876, 1877, 1878, + 1879, 1880, 1882, 1883, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, + 1895, 1896, 1898, 1900, 1902, 1903, 1904, 1906, 1907, 1908, 1909, 1917, 1918, + 1921, 1922, 1924, 1925, 1926, 1928, 1929, 1931, 1932, 1934, 1935, 1936, 1937, + 1939, 1940, 1942, 1943, 1945, 1946, 1948, 1949, 1951, 1952, 1954, 1955, 1956, + 1957, 1959, 1960, 1962, 1963, 1965, 1966, 1968, 1969, 1971, 1972, 1974, 1975, + 1976, 1977, 1979, 1980, 1982, 1983, 1985, 1986, 1988, 1989, 1990, 1991, 1993, + 1994, 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2007, 2008, 2010, 2011, + 2013, 2014, 2016, 2017, 2019, 2020, 2022, 2023, 2024, 2025, 2026, 2027, 2037, + 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2051, 2053, 2054, + 2056, 2057, 2059, 2060, 2062, 2063, 2064, 2068, 2069, 2070, 2074, 2075, 2079, + 2080, 2081, 2086, 2089, 2090, 2091, 2092, 2093, 2099, 2104, 2108, 2110, 2117, + 2127, 2137, 2141, 2145, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, + 2164, 2173, 2176, 2177, 2178, 2188, 2189, 2190, 2191, 2192, 2193, 2196, 2199, + 2201, 2202, 2203, 2204, 2205, 2214, 2215, 2216, 2217, 2219, 2220, 2222, 2223, + 2224, 2225, 2226, 2227, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, + 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2259, + 2260, 2261, 2262, 2263, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, + 2275, 2276, 2282, 2283, 2284, 2285, 2287, 2288, 2289, 2290, 2291, 2293, 2294, + 2295, 2296, 2297, 2298, 2299, 2300, 2307, 2308, 2309, 2310, 2311, 2312, 2313, + 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2325, 2326, 2327, 2328, 2329, 2330, + 2331, 2332, 2333, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, + 2347, 2348, 2349, 2355, 2356, 2357, 2358, 2359, 2361, 2362, 2363, 2364, 2365, + 2366, 2372, 2375, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386, + 2387, 2388, 2389, 2390, 2391, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2409, + 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2421, 2422, 2423, 2424, 2425, + 2426, 2431, 2432, 2433, 2434, 2435, 2437, 2438, 2439, 2440, 2441, 2442, 2443, + 2444, 2446, 2447, 2448, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2461, 2462, + 2463, 2464, 2465, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2479, 2480, 2481, + 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2496, 2497, 2498, + 2499, 2500, 2501, 2502, 2503, 2504, 2506, 2507, 2508, 2509, 2510, 2511, 2512, + 2516, 2517, 2518, 2522, 2523, 2524, 2525, 2526, 2528, 2529, 2530, 2531, 2532, + 2533, 2534, 2535, 2539, 2540, 2541, 2542, 2543, 2545, 2546, 2547, 2548, 2549, + 2550, 2551, 2552, 2553, 2554, 2557, 2558, 2559, 2560, 2561, 2563, 2564, 2565, + 2566, 2567, 2568, 2569, 2570, 2574, 2575, 2576, 2579, 2580, 2581, 2582, 2583, + 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2600, + 2601, 2602, 2603, 2607, 2608, 2609, 2610, 2611, 2612, 2616, 2618, 2619, 2620, + 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634, + 2635, 2636, 2637, 2642, 2643, 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, + 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, 2660, 2661, 2662, 2663, 2664, + 2665, 2669, 2670, 2671, 2672, 2673, 2675, 2676, 2677, 2678, 2679, 2680, 2681, + 2682, 2683, 2686, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2695, 2696, 2701, + 2707, 2708, 2709, 2711, 2712, 2721, 2722, 2723, 2728, 2729, 2730, 2733, 2734, + 2735, 2736, 2737, 2738, 2739, 2746, 2747, 2748, 2750, 2751, 2752, 2754, 2755, + 2756, 2757, 2758, 2759, 2760, 2764, 2770, 2771, 2772, 2773, 2774, 2775, 2776, + 2777, 2778, 2786, 2787, 2788, 2789, 2790, 2791, 2792, 2793, 2794, 2795, 2796, + 2797, 2798, 2799, 2800, 2801, 2802, 2803, 2804, 2813, 2814, 2818, 2819, 2820, + 2821, 2822, 2823, 2824, 2825, 2826, 2832, 2833, 2834, 2835, 2836, 2837, 2838, + 2839, 2840, 2841, 2842, 2843, 2844, 2850, 2851, 2852, 2853, 2854, 2856, 2857, + 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2865, 2873, 2874, 2875, 2876, 2877, + 2878, 2879, 2880, 2881, 2882, 2883, 2895, 2897, 2898, 2899, 2900, 2901, 2903, + 2904, 2907, 2910, 2912, 2913, 2914, 2915, 2916, 2920, 2922, 2923, 2924, 2925, + 2927, 2930, 2931, 2932, 2933, 2935, 2936, 2937, 2938, 2939, 2940, 2941, 2942, + 2943, 2944, 2947, 2949, 2954, 2960, 2969, 2974, 2975, 2978, 2979, 2980, 2981, + 2982, 2983, 2984, 2985, 2992, 2995, 3001, 3009, 3018, 3024, 3030, 3032, 3033, + 3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041, 3049, 3050, 3051, 3052, 3053, + 3054, 3055, 3056, 3057, 3065, 3067, 3077, 3080, 3086, 3087, 3089, 3091, 3092, + 3093, 3094, 3095, 3096, 3097, 3098, 3105, 3108, 3111, 3115, 3125, 3131, 3133, + 3134, 3135, 3136, 3137, 3138, 3139, 3145, 3148, 3150, 3159, 3161, 3165, 3166, + 3167, 3168, 3169, 3170, 3175, 3177, 3179, 3184, 3186, 3187, 3188, 3189, 3190, + 3194, 3195, 3196, 3197, 3198, 3202, 3203, 3204, 3205, 3206, 3209, 3211, 3212, + 3213, 3214, 3215, 3216, 3220, 3221, 3222, 3224, 3225, 3226, 3231, 3232, 3233, + 3234, 3237, 3238, 3239, 3240, 3244, 3246, 3247, 3248, 3250, 3251, 3252, 3253, + 3254, 3255, 3256, 3257, 3261, 3262, 3263, 3264, 3265, 3266, 3267, 3268, 3269, + 3270, 3271, 3272, 3275, 3278, 3279, 3280, 3281, 3282, 3284, 3285, 3286, 3287, + 3288, 3289, 3290, 3296, 3297, 3298, 3299, 3300, 3301, 3303, 3304, 3305, 3306, + 3307, 3308, 3309, 3310, 3312, 3313, 3314, 3315, 3316, 3317, 3318, 3319, 3320, + 3323, 3324, 3325, 3326, 3327, 3328, 3329, 3330, 3331, 3332, 3333, 3334, 3335, + 3337, 3338, 3339, 3340, 3341, 3342, 3343, 3344, 3345, 3346, 3347, 3348, 3349, + 3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362, + 3363, 3364, 3368, 3369, 3370, 3371, 3372, 3374, 3375, 3376, 3377, 3378, 3379, + 3380, 3386, 3387, 3389, 3390, 3392, 3393, 3395, 3396, 3398, 3399, 3400, 3401, + 3413, 3414, 3416, 3417, 3418, 3419, 3420, 3422, 3423, 3425, 3426, 3428, 3429, + 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438, 3439, 3440, 3441, 3442, + 3444, 3445, 3447, 3448, 3450, 3451, 3453, 3454, 3456, 3457, 3458, 3459, 3460, + 3461, 3462, 3463, 3464, 3465, 3466, 3467, 3469, 3470, 3472, 3473, 3475, 3476, + 3478, 3479, 3481, 3482, 3484, 3485, 3487, 3488, 3492, 3493, 3494, 3495, 3496, + 3498, 3499, 3501, 3502, 3504, 3505, 3507, 3508, 3510, 3511, 3512, 3513, 3515, + 3516, 3518, 3519, 3521, 3522, 3524, 3525, 3527, 3528, 3530, 3531, 3533, 3534, + 3536, 3537, 3538, 3547, 3548, 3549, 3550, 3551, 3552, 3553, 3554, 3555, 3558, + 3559, 3561, 3562, 3565, 3566, 3567, 3568, 3569, 3570, 3575, 3576, 3579, 3580, + 3581, 3582, 3584, 3585, 3586, 3587, 3591, 3593, 3594, 3596, 3597, 3598, 3599, + 3600, 3601, 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3610, 3611, 3612, + 3614, 3615, 3617, 3618, 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628, + 3629, 3630, 3631, 3632, 3633, 3634, 3637, 3638, 3639, 3640, 3641, 3642, 3643, + 3644, 3645, 3647, 3648, 3649, 3650, 3651, 3652, 3653, 3654, 3655, 3657, 3658, + 3659, 3660, 3661, 3662, 3663, 3664, 3665, 3667, 3668, 3669, 3670, 3671, 3672, + 3673, 3674, 3675, 3677, 3678, 3679, 3680, 3681, 3682, 3683, 3684, 3685, 3687, + 3688, 3689, 3690, 3691, 3692, 3693, 3694, 3695, 3697, 3698, 3699, 3700, 3701, + 3702, 3703, 3705, 3706, 3707, 3708, 3709, 3710, 3711, 3712, 3713, 3715, 3716, + 3717, 3718, 3719, 3720, 3721, 3722, 3723, 3724, 3733, 3734, 3735, 3736, 3737, + 3738, 3739, 3740, 3741, 3742, 3743, 3745, 3746, 3747, 3748, 3751, 3752, 3754, + 3755, 3756, 3757, 3763, 3764, 3765, 3766, 3767, 3768, 3769, 3770, 3771, 3773, + 3774, 3775, 3776, 3778, 3779, 3781, 3782, 3783, 3784, 3786, 3787, 3789, 3790, + 3792, 3793, 3794, 3798, 3799, 3800, 3801, 3802, 3803, 3804, 3805, 3806, 3807, + 3809, 3810, 3811, 3812, 3813, 3814, 3815, 3816, 3817, 3818, 3819, 3820, 3821, + 3822, 3823, 3824, 3825, 3826, 3827, 3828, 3830, 3831, 3832, 3835, 3836, 3837, + 3841, 3842, 3843, 3849, 3850, 3852, 3853, 3855, 3856, 3858, 3859, 3866, 3867, + 3869, 3870, 3872, 3873, 3875, 3876, 3878, 3879, 3881, 3882, 3883, 3885, 3886, + 3888, 3890, 3891, 3893, 3894, 3896, 3897, 3899, 3900, 3901, 3902, 3903, 3904, + 3905, 3906, 3907, 3908, 3909, 3910, 3912, 3913, 3915, 3916, 3918, 3919, 3921, + 3922, 3924, 3925, 3927, 3928, 3930, 3931, 3933, 3934, 3936, 3937, 3939, 3940, + 3942, 3943, 3945, 3946, 3947, 3948, 3950, 3953, 3954, 3955, 3957, 3958, 3960, + 3961, 3963, 3964, 3966, 3967, 3968, 3970, 3971, 3973, 3975, 3976, 3978, 3980, + 3981, 3983, 3984, 3986, 3991, 3992, 3993, 3998, 3999, 4000, 4001, 4002, 4005, + 4006, 4010, 4011, 4013, 4014, 4015, 4016, 4022, 4024, 4025, 4026, 4027, 4029, + 4030, 4032, 4033, 4035, 4036, 4038, 4039, 4041, 4042, 4044, 4045, 4046, 4047, + 4048, 4049, 4050, 4051, 4052, 4053, 4054, 4055, 4056, 4057, 4058, 4059, 4060, + 4061, 4062, 4063, 4064, 4065, 4066, 4067, 4068, 4069, 4074, 4075, 4076, 4083, + 4084, 4085, 4086, 4087, 4089, 4090, 4091, 4092, 4093, 4094, 4095, 4096, 4097, + 4098, 4100, 4101, 4102, 4103, 4105, 4106, 4107, 4108, 4110, 4111, 4112, 4113, + 4115, 4116, 4117, 4118, 4120, 4121, 4122, 4123, 4125, 4126, 4127, 4128, 4130, + 4131, 4132, 4133, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 4144, 4145, + 4146, 4147, 4149, 4150, 4151, 4152, 4154, 4155, 4156, 4157, 4159, 4160, 4161, + 4162, 4164, 4165, 4166, 4167, 4169, 4170, 4171, 4172, 4174, 4175, 4176, 4177, + 4179, 4180, 4181, 4182, 4183, 4184, 4185, 4186, 4188, 4189, 4190, 4191, 4193, + 4194, 4195, 4196, 4198, 4199, 4200, 4201, 4202, 4203, 4204, 4205, 4206, 4207, + 4208, 4210, 4211, 4212, 4213, 4214, 4215, 4216, 4217, 4218, 4219, 4220, 4221, + 4222, 4223, 4224, 4225, 4226, 4227, 4228, 4229, 4230, 4231, 4232, 4233, 4234, + 4235, 4236, 4237, 4239, 4240, 4241, 4242, 4243, 4244, 4245, 4246, 4248, 4249, + 4250, 4251, 4253, 4254, 4255, 4257, 4258, 4259, 4260, 4262, 4263, 4264, 4265, + 4267, 4268, 4269, 4270, 4272, 4273, 4274, 4276, 4277, 4278, 4279, 4281, 4282, + 4283, 4284, 4285, 4286, 4287, 4288, 4289, 4290, 4291, 4292, 4293, 4294, 4295, + 4296, 4297, 4298, 4299, 4301, 4302, 4303, 4304, 4305, 4309, 4310, 4311, 4312, + 4313, 4314, 4315, 4323, 4324, 4325, 4327, 4328, 4329, 4330, 4332, 4333, 4334, + 4335, 4337, 4338, 4339, 4340, 4342, 4343, 4344, 4345, 4347, 4348, 4349, 4350, + 4351, 4352, 4353, 4354, 4355, 4356, 4357, 4358, 4360, 4361, 4362, 4363, 4365, + 4366, 4367, 4368, 4369, 4370, 4371, 4372, 4373, 4374, 4375, 4376, 4377, 4378, + 4379, 4380, 4381, 4382, 4383, 4385, 4386, 4387, 4397, 4398, 4399, 4400, 4401, + 4402, 4403, 4404, 4405, 4406, 4407, 4408, 4409, 4411, 4412, 4413, 4414, 4415, + 4416, 4417, 4418, 4420, 4421, 4422, 4423, 4425, 4426, 4427, 4428, 4430, 4431, + 4432, 4434, 4435, 4436, 4437, 4439, 4440, 4441, 4442, 4444, 4445, 4446, 4447, + 4449, 4450, 4451, 4452, 4454, 4455, 4456, 4458, 4459, 4460, 4462, 4463, 4464, + 4466, 4467, 4468, 4469, 4470, 4471, 4477, 4478, 4479, 4480, 4481, 4482, 4483, + 4486, 4487, 4488, 4489, 4490, 4491, 4492, 4493, 4494, 4495, 4496, 4497, 4498, + 4499, 4501, 4502, 4503, 4506, 4507, 4508, 4510, 4511, 4512, 4513, 4514, 4515, + 4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525, 4526, 4527, 4530, 4531, 4532, + 4533, 4535, 4536, 4537, 4538, 4539, 4540, 4541, 4542, 4543, 4544, 4545, 4546, + 4547, 4548, 4549, 4550, 4551, 4552, 4553, 4554, 4563, 4564, 4565, 4567, 4568, + 4569, 4570, 4571, 4572, 4573, 4574, 4575, 4576, 4577, 4578, 4579, 4580, 4586, + 4587, 4588, 4591, 4592, 4593, 4594, 4595, 4596, 4597, 4598, 4599, 4600, 4601, + 4602, 4605, 4606, 4607, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, + 4617, 4627, 4628, 4629, 4631, 4632, 4633, 4634, 4636, 4637, 4638, 4639, 4641, + 4642, 4643, 4644, 4646, 4647, 4648, 4649, 4651, 4652, 4653, 4654, 4656, 4657, + 4658, 4659, 4661, 4662, 4663, 4664, 4666, 4667, 4668, 4669, 4671, 4672, 4673, + 4674, 4676, 4677, 4678, 4679, 4681, 4682, 4683, 4685, 4686, 4687, 4688, 4689, + 4693, 4694, 4695, 4696, 4697, 4698, 4699, 4701, 4702, 4703, 4704, 4706, 4707, + 4708, 4710, 4711, 4712, 4714, 4715, 4716, 4717, 4719, 4720, 4721, 4722, 4724, + 4725, 4726, 4727, 4729, 4730, 4731, 4732, 4734, 4735, 4736, 4737, 4739, 4740, + 4741, 4742, 4744, 4745, 4746, 4747, 4749, 4750, 4751, 4752, 4754, 4755, 4756, + 4757, 4759, 4760, 4761, 4762, 4764, 4765, 4766, 4767, 4769, 4770, 4771, 4772, + 4774, 4775, 4776, 4778, 4779, 4780, 4781, 4782, 4783, 4789, 4790, 4791, 4792, + 4794, 4795, 4796, 4797, 4799, 4800, 4801, 4802, 4803, 4804, 4805, 4806, 4807, + 4808, 4809, 4810, 4811, 4812, 4813, 4816, 4817, 4818, 4819, 4821, 4822, 4823, + 4825, 4826, 4827, 4828, 4830, 4831, 4832, 4833, 4835, 4836, 4837, 4838, 4840, + 4841, 4842, 4843, 4845, 4846, 4847, 4848, 4850, 4851, 4852, 4853, 4855, 4856, + 4857, 4858, 4860, 4861, 4862, 4863, 4865, 4866, 4867, 4868, 4870, 4871, 4872, + 4873, 4875, 4876, 4877, 4878, 4880, 4881, 4882, 4883, 4885, 4886, 4887, 4888, + 4890, 4891, 4892, 4893, 4895, 4896, 4897, 4898, 4899, 4900, 4901, 4903, 4904, + 4905, 4906, 4908, 4909, 4910, 4911, 4913, 4914, 4915, 4916, 4918, 4919, 4920, + 4921, 4923, 4924, 4925, 4926, 4927, 4931, 4932, 4933, 4934, 4935, 4936, 4937, + 4938, 4940, 4941, 4942, 4943, 4944, 4945, 4946, 4948, 4949, 4950, 4951, 4952, + 4953, 4954, 4957, 4958, 4959, 4960, 4963, 4964, 4965, 4966, 4967, 4968, 4971, + 4972, 4973, 4981, 4982, 4983, 4984, 4985, 4990, 4991, 4992, 4994, 4995, 4996, + 4997, 4999, 5000, 5001, 5003, 5004, 5005, 5006, 5008, 5009, 5010, 5011, 5013, + 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, 5030, 5031, 5032, 5033, 5034, + 5038, 5039, 5040, 5041, 5042, 5043, 5044, 5045, 5046, 5047, 5048, 5049, 5050, + 5051, 5052, 5053, 5054, 5055, 5056, 5057, 5058, 5059, 5060, 5061, 5062, 5063, + 5064, 5066, 5067, 5068, 5069, 5071, 5072, 5073, 5074, 5075, 5076, 5077, 5079, + 5080, 5081, 5082, 5083, 5084, 5085, 5086, 5087, 5088, 5089, 5090, 5091, 5092, + 5093, 5094, 5095, 5096, 5097, 5099, 5100, 5101, 5103, 5104, 5105, 5106, 5108, + 5109, 5110, 5111, 5113, 5114, 5115, 5116, 5118, 5119, 5120, 5121, 5123, 5124, + 5125, 5126, 5128, 5129, 5130, 5131, 5133, 5134, 5135, 5137, 5138, 5139, 5140, + 5142, 5143, 5144, 5145, 5147, 5148, 5149, 5150, 5152, 5153, 5154, 5156, 5157, + 5158, 5159, 5161, 5162, 5163, 5164, 5166, 5167, 5168, 5169, 5171, 5172, 5173, + 5174, 5176, 5177, 5178, 5179, 5180, 5181, 5182, 5195, 5196, 5197, 5198, 5200, + 5201, 5202, 5203, 5205, 5206, 5207, 5208, 5210, 5211, 5212, 5213, 5215, 5216, + 5217, 5218, 5219, 5220, 5224, 5225, 5226, 5227, 5229, 5230, 5231, 5232, 5233, + 5237, 5238, 5239, 5241, 5242, 5243, 5244, 5245, 5246, 5247, 5248, 5250, 5251, + 5252, 5253, 5254, 5255, 5256, 5257, 5258, 5259, 5260, 5261, 5262, 5263, 5264, + 5265, 5266, 5267, 5268, 5269, 5270, 5271, 5272, 5273, 5274, 5275, 5276, 5277, + 5278, 5279, 5280, 5281, 5282, 5283, 5284, 5286, 5287, 5288, 5289, 5290, 5294, + 5295, 5296, 5298, 5299, 5300, 5301, 5303, 5304, 5305, 5306, 5308, 5309, 5310, + 5311, 5313, 5314, 5315, 5316, 5318, 5319, 5320, 5321, 5323, 5324, 5325, 5326, + 5327, 5328, 5329, 5330, 5331, 5332, 5333, 5335, 5336, 5337, 5338, 5340, 5341, + 5342, 5343, 5345, 5346, 5347, 5348, 5350, 5351, 5352, 5353, 5355, 5356, 5357, + 5358, 5360, 5361, 5362, 5363, 5365, 5366, 5367, 5368, 5370, 5371, 5372, 5373, + 5375, 5376, 5377, 5378, 5380, 5381, 5382, 5383, 5385, 5386, 5387, 5388, 5390, + 5391, 5392, 5393, 5394, 5395, 5396, 5398, 5399, 5400, 5401, 5403, 5404, 5405, + 5406, 5408, 5409, 5410, 5411, 5413, 5414, 5415, 5416, 5418, 5419, 5420, 5421, + 5423, 5424, 5425, 5426, 5428, 5429, 5430, 5431, 5433, 5434, 5435, 5436, 5438, + 5439, 5440, 5441, 5443, 5444, 5445, 5446, 5448, 5449, 5450, 5451, 5452, 5453, + 5454, 5455, 5456, 5457, 5458, 5459, 5461, 5462, 5463, 5464, 5466, 5467, 5468, + 5469, 5471, 5472, 5473, 5474, 5476, 5477, 5478, 5479, 5481, 5482, 5483, 5484, + 5486, 5487, 5488, 5489, 5491, 5492, 5493, 5494, 5495, 5496, 5500, 5501, 5502, + 5503, 5504, 5505, 5506, 5507, 5508, 5509, 5510, 5511, 5512, 5513, 5514, 5515, + 5516, 5520, 5521, 5522, 5523, 5525, 5526, 5527, 5529, 5530, 5531, 5532, 5534, + 5535, 5536, 5537, 5539, 5540, 5541, 5542, 5544, 5545, 5546, 5547, 5549, 5550, + 5551, 5552, 5554, 5555, 5556, 5557, 5559, 5560, 5561, 5562, 5563, 5564, 5565, + 5566, 5567, 5568, 5569, 5570, 5571, 5572, 5573, 5575, 5576, 5577, 5578, 5580, + 5581, 5582, 5584, 5585, 5586, 5587, 5589, 5590, 5591, 5592, 5594, 5595, 5596, + 5597, 5599, 5600, 5601, 5602, 5604, 5605, 5606, 5608, 5609, 5610, 5612, 5613, + 5614, 5615, 5616, 5620, 5621, 5622, 5623, 5624, 5625, 5626, 5628, 5629, 5630, + 5632, 5633, 5634, 5635, 5636, 5640, 5641, 5642, 5643, 5644, 5645, 5646, 5647, + 5648, 5651, 5652, 5653, 5654, 5656, 5657, 5658, 5659, 5660, 5664, 5665, 5666, + 5675, 5676, 5677, 5678, 5679, 5680, 5681, 5682, 5683, 5684, 5685, 5687, 5688, + 5689, 5690, 5692, 5693, 5694, 5695, 5697, 5698, 5699, 5700, 5702, 5703, 5704, + 5705, 5707, 5708, 5709, 5710, 5712, 5713, 5714, 5715, 5716, 5717, 5718, 5719, + 5720, 5722, 5723, 5724, 5725, 5727, 5728, 5729, 5730, 5732, 5733, 5734, 5735, + 5737, 5738, 5739, 5740, 5742, 5743, 5744, 5745, 5747, 5748, 5749, 5750, 5752, + 5753, 5754, 5755, 5756, 5757, 5758, 5759, 5760, 5761, 5762, 5763, 5764, 5765, + 5766, 5790, 5791, 5792, 5794, 5795, 5796, 5797, 5799, 5800, 5801, 5802, 5804, + 5805, 5806, 5807, 5809, 5810, 5811, 5812, 5814, 5815, 5816, 5817, 5819, 5820, + 5821, 5822, 5823, 5824, 5825, 5826, 5836, 5837, 5838, 5840, 5841, 5842, 5843, + 5845, 5846, 5847, 5849, 5850, 5851, 5855, 5856, 5857, 5859, 5860, 5861, 5863, + 5864, 5865, 5869, 5870, 5871, 5875, 5876, 5877, 5879, 5880, 5881, 5885, 5886, + 5887, 5891, 5892, 5893, 5895, 5896, 5897, 5898, 5900, 5901, 5902, 5903, 5905, + 5906, 5907, 5908, 5910, 5911, 5912, 5914, 5915, 5916, 5918, 5919, 5920, 5922, + 5923, 5924, 5926, 5927, 5928, 5930, 5931, 5932, 5933, 5934, 5935, 5936, 5937, + 5938, 5939, 5940, 5941, 5942, 5943, 5944, 5945, 5946, 5947, 5948, 5980, 5981, + 5982, 5983, 5984, 5985, 5986, 5988, 5989, 5990, 5991, 5993, 5994, 5995, 5996, + 5998, 5999, 6000, 6001, 6003, 6004, 6005, 6006, 6008, 6009, 6010, 6011, 6013, + 6014, 6015, 6016, 6017, 6021, 6022, 6023, 6025, 6026, 6027, 6028, 6030, 6031, + 6032, 6033, 6035, 6036, 6037, 6038, 6040, 6041, 6042, 6043, 6044, 6045, 6046, + 6047, 6048, 6049, 6050, 6051, 6052, 6053, 6054, 6055, 6056, 6057, 6058, 6059, + 6060, 6061, 6062, 6064, 6065, 6066, 6067, 6069, 6070, 6071, 6072, 6074, 6075, + 6076, 6077, 6079, 6080, 6081, 6082, 6083, 6084, 6085, 6086, 6087, 6088, 6089, + 6090, 6091, 6092, 6093, 6094, 6095, 6096, 6097, 6098, 6099, 6100, 6101, 6102, + 6103, 6107, 6108, 6109, 6111, 6112, 6113, 6114, 6116, 6117, 6118, 6119, 6121, + 6122, 6123, 6124, 6126, 6127, 6128, 6129, 6130, 6131, 6132, 6133, 6134, 6135, + 6136, 6137, 6138, 6139, 6140, 6141, 6142, 6143, 6144, 6145, 6146, 6147, 6148, + 6149, 6151, 6152, 6153, 6155, 6156, 6157, 6158, 6160, 6161, 6162, 6163, 6165, + 6166, 6167, 6168, 6170, 6171, 6172, 6173, 6174, 6175, 6176, 6177, 6178, 6179, + 6180, 6181, 6182, 6183, 6184, 6185, 6186, 6187, 6188, 6189, 6190, 6191, 6192, + 6194, 6195, 6196, 6197, 6199, 6200, 6201, 6202, 6204, 6205, 6206, 6207, 6209, + 6210, 6211, 6212, 6213, 6214, 6215, 6216, 6217, 6218, 6219, 6220, 6221, 6222, + 6223, 6224, 6225, 6226, 6227, 6228, 6229, 6230, 6231, 6232, 6233, 6237, 6238, + 6239, 6241, 6242, 6243, 6244, 6246, 6247, 6248, 6249, 6251, 6252, 6253, 6254, + 6256, 6257, 6258, 6259, 6260, 6261, 6262, 6263, 6264, 6265, 6266, 6267, 6268, + 6269, 6270, 6271, 6272, 6273, 6274, 6275, 6276, 6277, 6278, 6279, 6281, 6282, + 6283, 6285, 6286, 6287, 6288, 6290, 6291, 6292, 6293, 6295, 6296, 6297, 6298, + 6300, 6301, 6302, 6303, 6304, 6305, 6306, 6307, 6308, 6309, 6310, 6311, 6312, + 6313, 6314, 6315, 6316, 6317, 6318, 6319, 6320, 6321, 6322, 6323, 6325, 6326, + 6327, 6328, 6330, 6331, 6332, 6333, 6335, 6336, 6337, 6338, 6340, 6341, 6342, + 6343, 6345, 6346, 6347, 6348, 6350, 6351, 6352, 6353, 6355, 6356, 6357, 6358, + 6360, 6361, 6362, 6363, 6365, 6366, 6367, 6368, 6370, 6371, 6372, 6373, 6375, + 6376, 6377, 6379, 6380, 6381, 6382, 6384, 6385, 6386, 6387, 6389, 6390, 6391, + 6392, 6394, 6395, 6396, 6397, 6398, 6399, 6400, 6401, 6402, 6403, 6404, 6405, + 6406, 6407, 6408, 6409, 6410, 6411, 6412, 6413, 6414, 6415, 6416, 6418, 6419, + 6420, 6421, 6423, 6424, 6425, 6426, 6428, 6429, 6430, 6431, 6433, 6434, 6435, + 6436, 6437, 6438, 6439, 6440, 6441, 6442, 6443, 6444, 6445, 6446, 6447, 6448, + 6449, 6450, 6451, 6452, 6453, 6454, 6455, 6456, 6457, 6458, 6464, 6465, 6466, + 6468, 6469, 6470, 6471, 6473, 6474, 6475, 6476, 6478, 6479, 6480, 6481, 6483, + 6484, 6485, 6486, 6487, 6488, 6489, 6490, 6492, 6493, 6494, 6496, 6497, 6498, + 6499, 6501, 6502, 6503, 6504, 6506, 6507, 6508, 6509, 6511, 6512, 6513, 6514, + 6515, 6516, 6517, 6518, 6519, 6520, 6521, 6522, 6523, 6524, 6525, 6526, 6528, + 6529, 6530, 6531, 6533, 6534, 6535, 6536, 6538, 6539, 6540, 6541, 6543, 6544, + 6545, 6547, 6548, 6549, 6551, 6552, 6553, 6555, 6556, 6557, 6558, 6560, 6561, + 6562, 6563, 6565, 6566, 6567, 6568, 6570, 6571, 6572, 6573, 6574, 6575, 6576, + 6577, 6578, 6579, 6580, 6581, 6582, 6583, 6584, 6585, 6586, 6587, 6588, 6589, + 6591, 6592, 6593, 6594, 6595, 6596, 6597, 6598, 6599, 6600, 6601, 6602, 6603, + 6604, 6626, 6627, 6628, 6629, 6630, 6631, 6632, 6634, 6636, 6637, 6638, 6639, + 6641, 6642, 6643, 6644, 6646, 6647, 6648, 6649, 6651, 6652, 6653, 6655, 6656, + 6657, 6658, 6659, 6660, 6661, 6662, 6663, 6664, 6665, 6666, 6667, 6668, 6669, + 6670, 6672, 6673, 6674, 6675, 6677, 6678, 6679, 6680, 6681, 6682, 6683, 6684, + 6685, 6686, 6687, 6688, 6689, 6690, 6691, 6692, 6693, 6694, 6695, 6697, 6698, + 6699, 6700, 6702, 6703, 6704, 6706, 6707, 6708, 6710, 6711, 6712, 6713, 6714, + 6715, 6716, 6718, 6719, 6720, 6721, 6722, 6723, 6731, 6732, 6733, 6734, 6737, + 6738, 6739, 6740, 6742, 6743, 6744, 6745, 6746, 6747, 6748, 6750, 6751, 6752, + 6753, 6755, 6756, 6757, 6758, 6760, 6761, 6762, 6763, 6764, 6765, 6766, 6767, + 6769, 6770, 6771, 6772, 6774, 6775, 6776, 6777, 6779, 6780, 6781, 6782, 6784, + 6785, 6786, 6787, 6789, 6790, 6791, 6792, 6794, 6795, 6796, 6797, 6798, 6799, + 6800, 6801, 6803, 6804, 6805, 6806, 6808, 6809, 6810, 6811, 6813, 6814, 6815, + 6816, 6818, 6819, 6820, 6821, 6823, 6824, 6825, 6826, 6828, 6829, 6830, 6831, + 6832, 6833, 6834, 6835, 6837, 6838, 6839, 6840, 6842, 6843, 6844, 6845, 6847, + 6848, 6849, 6850, 6852, 6853, 6854, 6855, 6856, 6857, 6858, 6859, 6861, 6862, + 6863, 6864, 6866, 6867, 6868, 6869, 6871, 6872, 6873, 6874, 6876, 6877, 6878, + 6879, 6880, 6881, 6882, 6883, 6885, 6886, 6887, 6888, 6890, 6891, 6892, 6893, + 6895, 6896, 6897, 6898, 6900, 6901, 6902, 6903, 6905, 6906, 6907, 6908, 6910, + 6911, 6912, 6913, 6914, 6915, 6916, 6917, 6927, 6928, 6929, 6930, 6931, 6932, + 6933, 6934, 6935, 6936, 6937, 6938, 6939, 6940, 6941, 6942, 6943, 6944, 6945, + 6946, 6947, 6948, 6949, 6953, 6954, 6955, 6957, 6959, 6960, 6961, 6962, 6964, + 6965, 6966, 6967, 6969, 6970, 6971, 6972, 6973, 6977, 6978, 6979, 6980, 6981, + 6982, 6983, 6987, 6988, 6989, 6990, 6991, 6992, 6996, 6997, 6998, 6999, 7000, + 7004, 7005, 7006, 7008, 7009, 7010, 7012, 7014, 7020, 7021, 7022, 7027, 7028, + 7029, 7033, 7034, 7035, 7037, 7038, 7039, 7046, 7047, 7048, 7058, 7059, 7060, + 7070, 7071, 7072, 7076, 7077, 7078, 7082, 7083, 7084, 7094, 7095, 7096, 7097, + 7098, 7099, 7100, 7101, 7102, 7103, 7104, 7105, 7114, 7115, 7116, 7119, 7120, + 7121, 7122, 7123, 7124, 7125, 7135, 7136, 7137, 7138, 7139, 7140, 7141, 7142, + 7143, 7144, 7147, 7148, 7149, 7151, 7152, 7153, 7154, 7155, 7156, 7158, 7160, + 7161, 7162, 7171, 7172, 7173, 7174, 7175, 7176, 7177, 7178, 7180, 7181, 7182, + 7183, 7185, 7186, 7187, 7189, 7190, 7191, 7201, 7202, 7203, 7206, 7207, 7208, + 7214, 7215, 7216, 7217, 7218, 7219, 7221, 7222, 7223, 7225, 7226, 7227, 7228, + 7229, 7230, 7231, 7232, 7233, 7234, 7241, 7242, 7243, 7246, 7247, 7248, 7251, + 7252, 7253, 7257, 7258, 7259, 7265, 7266, 7267, 7269, 7270, 7271, 7272, 7273, + 7274, 7275, 7276, 7282, 7283, 7284, 7287, 7288, 7289, 7291, 7292, 7293, 7302, + 7303, 7304, 7305, 7306, 7307, 7308, 7311, 7312, 7313, 7317, 7318, 7319, 7320, + 7321, 7322, 7323, 7324, 7329, 7330, 7331, 7333, 7334, 7335, 7336, 7337, 7338, + 7339, 7340, 7341, 7342, 7343, 7344, 7345, 7346, 7348, 7349, 7350, 7352, 7353, + 7354, 7359, 7360, 7361, 7363, 7364, 7365, 7366, 7367, 7368, 7369, 7370, 7371, + 7377, 7378, 7379, 7380, 7381, 7382, 7383, 7384, 7385, 7386, 7387, 7388, 7389, + 7390, 7391, 7392, 7393, 7394, 7395, 7400, 7401, 7402, 7403, 7404, 7405, 7406, + 7407, 7408, 7409, 7410, 7412, 7413, 7414, 7415, 7416, 7417, 7418, 7419, 7420, + 7421, 7422, 7426, 7427, 7428, 7429, 7430, 7434, 7435, 7436, 7438, 7439, 7440, + 7441, 7442, 7443, 7444, 7445, 7446, 7447, 7448, 7449, 7450, 7451, 7452, 7453, + 7457, 7458, 7459, 7460, 7461, 7462, 7463, 7465, 7466, 7467, 7468, 7469, 7470, + 7473, 7474, 7475, 7477, 7478, 7479, 7480, 7481, 7482, 7483, 7484, 7485, 7486, + 7490, 7491, 7492, 7493, 7494, 7497, 7498, 7499, 7500, 7501, 7502, 7503, 7504, + 7505, 7510, 7511, 7512, 7513, 7514, 7515, 7519, 7520, 7521, 7522, 7523, 7524, + 7525, 7526, 7527, 7528, 7532, 7533, 7534, 7536, 7537, 7538, 7539, 7540, 7542, + 7543, 7544, 7545, 7546, 7547, 7548, 7549, 7550, 7551, 7552, 7553, 7554, 7555, + 7556, 7557, 7558, 7559, 7560, 7561, 7562, 7563, 7564, 7565, 7566, 7567, 7572, + 7573, 7574, 7575, 7576, 7577, 7578, 7579, 7580, 7581, 7582, 7583, 7584, 7585, + 7586, 7587, 7588, 7589, 7590, 7591, 7592, 7593, 7594, 7595, 7596, 7597, 7598, + 7599, 7600, 7601, 7605, 7606, 7607, 7608, 7609, 7610, 7611, 7612, 7613, 7615, + 7616, 7617, 7618, 7619, 7620, 7621, 7622, 7623, 7624, 7625, 7628, 7629, 7630, + 7632, 7633, 7634, 7639, 7640, 7641, 7647, 7648, 7649, 7650, 7651, 7652, 7654, + 7663, 7664, 7665, 7670, 7671, 7672, 7675, 7676, 7677, 7678, 7679, 7680, 7681, + 7682, 7683, 7690, 7691, 7692, 7693, 7694, 7695, 7696, 7697, 7698, 7699, 7700, + 7701, 7702, 7704, 7706, 7710, 7711, 7712, 7718, 7719, 7720, 7728, 7729, 7730, + 7739, 7740, 7741, 7744, 7745, 7746, 7748, 7754, 7755, 7756, 7762, 7763, 7764, + 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777, 7778, + 7779, 7787, 7788, 7789, 7790, 7791, 7792, 7793, 7794, 7795, 7796, 7797, 7798, + 7810, 7811, 7812, 7814, 7815, 7816, 7817, 7818, 7819, 7820, 7821, 7822, 7824, + 7825, 7826, 7827, 7828, 7829, 7830, 7831, 7832, 7833, 7834, 7835, 7836, 7837, + 7838, 7842, 7843, 7844, 7845, 7846, 7847, 7848, 7849, 7850, 7852, 7853, 7854, + 7855, 7856, 7857, 7858, 7859, 7860, 7862, 7863, 7864, 7865, 7866, 7867, 7868, + 7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, 7879, 7882, 7883, + 7884, 7885, 7886, 7887, 7888, 7889, 7890, 7891, 7892, 7893, 7894, 7895, 7896, + 7897, 7898, 7899, 7900, 7901, 7902, 7903, 7904, 7905, 7912, 7913, 7914, 7915, + 7916, 7917, 7918, 7919, 7920, 7921, 7922, 7923, 7924, 7925, 7926, 7927, 7928, + 7929, 7930, 7931, 7932, 7933, 7934, 7935, 7936, 7937, 7938, 7946, 7947, 7948, + 7949, 7950, 7951, 7952, 7953, 7954, 7955, 7956, 7964, 7965, 7966, 7967, 7968, + 7969, 7970, 7971, 7972, 7973, 7974, 7975, 7976, 7977, 7978, 7979, 7980, 7981, + 7982, 7983, 7984, 7985, 7986, 7987, 7994, 7995, 7996, 7997, 7998, 7999, 8000, + 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, + 8014, 8020, 8021, 8022, 8023, 8024, 8025, 8026, 8027, 8028, 8029, 8030, 8031, + 8032, 8033, 8034, 8035, 8036, 8037, 8042, 8043, 8044, 8045, 8046, 8047, 8048, + 8049, 8050, 8051, 8052, 8053, 8054, 8055, 8056, 8060, 8061, 8062, 8063, 8064, + 8065, 8066, 8070, 8071, 8072, 8073, 8074, 8075, 8076, 8077, 8078, 8079, 8080, + 8081, 8082, 8083, 8084, 8085, 8086, 8087, 8088, 8089, 8090, 8094, 8095, 8096, + 8097, 8098, 8100, 8101, 8102, 8103, 8104, 8105, 8106, 8107, 8108, 8109, 8110, + 8111, 8114, 8115, 8116, 8117, 8118, 8119, 8120, 8121, 8122, 8123, 8124, 8125, + 8126, 8127, 8128, 8130, 8131, 8132, 8133, 8134, 8135, 8136, 8137, 8138, 8139, + 8140, 8141, 8142, 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154, 8155, + 8156, 8157, 8158, 8159, 8160, 8161, 8162, 8163, 8164, 8165, 8166, 8167, 8170, + 8171, 8172, 8173, 8174, 8175, 8176, 8177, 8178, 8179, 8180, 8182, 8183, 8184, + 8185, 8186, 8187, 8188, 8189, 8190, 8196, 8197, 8198, 8199, 8200, 8201, 8202, + 8203, 8204, 8205, 8206, 8207, 8208, 8209, 8210, 8211, 8212, 8213, 8214, 8215, + 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8227, 8228, 8229, + 8230, 8231, 8232, 8233, 8234, 8235, 8236, 8237, 8238, 8239, 8242, 8243, 8244, + 8245, 8246, 8247, 8248, 8249, 8250, 8251, 8252, 8253, 8254, 8255, 8256, 8257, + 8258, 8259, 8260, 8261, 8262, 8263, 8264, 8265, 8266, 8268, 8269, 8270, 8271, + 8272, 8273, 8274, 8275, 8276, 8277, 8278, 8279, 8280, 8281, 8282, 8283, 8284, + 8285, 8286, 8287, 8288, 8289, 8290, 8291, 8292, 8293, 8294, 8295, 8296, 8297, + 8298, 8299, 8300, 8301, 8302, 8303, 8304, 8305, 8306, 8307, 8308, 8309, 8310, + 8311, 8312, 8313, 8314, 8315, 8316, 8317, 8318, 8319, 8320, 8324, 8325, 8326, + 8327, 8328, 8329, 8330, 8331, 8332, 8334, 8335, 8336, 8337, 8338, 8339, 8340, + 8341, 8342, 8348, 8349, 8350, 8351, 8353, 8354, 8355, 8356, 8358, 8359, 8360, + 8361, 8363, 8364, 8365, 8366, 8368, 8369, 8370, 8371, 8372, 8373, 8385, 8386, + 8387, 8388, 8390, 8391, 8392, 8393, 8394, 8395, 8396, 8397, 8398, 8399, 8400, + 8402, 8403, 8404, 8405, 8407, 8408, 8409, 8410, 8412, 8413, 8414, 8415, 8416, + 8417, 8418, 8419, 8420, 8421, 8422, 8423, 8424, 8425, 8426, 8427, 8428, 8429, + 8430, 8431, 8432, 8433, 8434, 8435, 8436, 8437, 8438, 8439, 8440, 8441, 8442, + 8444, 8445, 8446, 8447, 8449, 8450, 8451, 8452, 8454, 8455, 8456, 8457, 8459, + 8460, 8461, 8462, 8464, 8465, 8466, 8467, 8468, 8469, 8470, 8471, 8472, 8473, + 8474, 8475, 8476, 8477, 8478, 8479, 8480, 8481, 8482, 8483, 8484, 8485, 8486, + 8487, 8489, 8490, 8491, 8492, 8494, 8495, 8496, 8497, 8499, 8500, 8501, 8502, + 8504, 8505, 8506, 8507, 8509, 8510, 8511, 8512, 8514, 8515, 8516, 8517, 8519, + 8520, 8521, 8522, 8525, 8526, 8527, 8528, 8529, 8530, 8531, 8532, 8533, 8534, + 8535, 8537, 8538, 8539, 8540, 8542, 8543, 8544, 8545, 8547, 8548, 8549, 8550, + 8552, 8553, 8554, 8555, 8557, 8558, 8559, 8560, 8561, 8562, 8563, 8564, 8566, + 8567, 8568, 8569, 8571, 8572, 8573, 8574, 8576, 8577, 8578, 8579, 8581, 8582, + 8583, 8584, 8586, 8587, 8588, 8589, 8591, 8592, 8593, 8594, 8596, 8597, 8598, + 8599, 8600, 8601, 8602, 8604, 8606, 8615, 8616, 8617, 8618, 8619, 8620, 8621, + 8622, 8623, 8624, 8625, 8626, 8627, 8628, 8629, 8630, 8631, 8632, 8633, 8636, + 8637, 8638, 8639, 8640, 8641, 8643, 8644, 8645, 8646, 8647, 8648, 8651, 8652, + 8653, 8654, 8655, 8656, 8657, 8658, 8663, 8664, 8665, 8666, 8669, 8670, 8671, + 8672, 8673, 8674, 8675, 8676, 8678, 8679, 8680, 8681, 8682, 8683, 8687, 8688, + 8689, 8691, 8692, 8693, 8694, 8696, 8697, 8698, 8699, 8700, 8701, 8702, 8703, + 8704, 8705, 8706, 8707, 8708, 8709, 8710, 8711, 8712, 8713, 8714, 8715, 8716, + 8717, 8718, 8719, 8720, 8721, 8722, 8723, 8724, 8725, 8726, 8727, 8728, 8729, + 8730, 8732, 8733, 8734, 8735, 8737, 8738, 8739, 8740, 8742, 8743, 8744, 8745, + 8746, 8747, 8748, 8749, 8750, 8751, 8752, 8753, 8754, 8755, 8756, 8757, 8758, + 8759, 8760, 8761, 8762, 8763, 8764, 8765, 8766, 8767, 8768, 8769, 8770, 8771, + 8772, 8774, 8775, 8776, 8777, 8778, 8779, 8780, 8781, 8782, 8783, 8784, 8785, + 8786, 8787, 8788, 8789, 8790, 8791, 8792, 8793, 8794, 8795, 8796, 8797, 8798, + 8799, 8800, 8801, 8802, 8803, 8804, 8805, 8806, 8807, 8808, 8809, 8810, 8811, + 8812, 8813, 8814, 8815, 8816, 8817, 8818, 8819, 8820, 8821, 8822, 8823, 8824, + 8825, 8826, 8827, 8828, 8829, 8830, 8831, 8832, 8833, 8834, 8835, 8836, 8837, + 8838, 8839, 8840, 8841, 8842, 8843, 8844, 8845, 8846, 8847, 8848, 8849, 8850, + 8851, 8852, 8853, 8854, 8855, 8856, 8857, 8858, 8859, 8860, 8861, 8862, 8863, + 8864, 8865, 8866, 8867, 8868, 8869, 8870, 8871, 8872, 8873, 8874, 8875, 8876, + 8877, 8878, 8879, 8880, 8881, 8882, 8883, 8884, 8885, 8886, 8887, 8888, 8889, + 8890, 8891, 8892, 8893, 8894, 8895, 8896, 8897, 8898, 8899, 8900, 8901, 8902, + 8903, 8904, 8905, 8906, 8907, 8908, 8909, 8910, 8911, 8912, 8913, 8914, 8915, + 8916, 8917, 8918, 8919, 8920, 8921, 8922, 8923, 8924, 8926, 8928, 8930, 8932, + 8934, 8936, 8938, 8940, 8942, 8951, 8952, 8953, 8954, 8955, 8956, 8957, 8958, + 8959, 8960, 8961, 8962, 8963, 8964, 8965, 8966, 8967, 8968, 8969, 8970, 8971, + 8973, 8974, 8975, 8976, 8977, 8978, 8981, 8982, 8983, 8984, 8986, 8987, 8988, + 8989, 8990, 8991, 8997, 8998, 8999, 9000, 9001, 9002, 9003, 9004, 9005, 9006, + 9007, 9008, 9009, 9010, 9011, 9012, 9013, 9014, 9015, 9017, 9018, 9019, 9020, + 9021, 9022, 9023, 9024, 9026, 9027, 9028, 9029, 9031, 9032, 9033, 9034, 9035, + 9036, 9037, 9038, 9039, 9040, 9042, 9043, 9044, 9045, 9047, 9048, 9049, 9050, + 9052, 9053, 9054, 9055, 9056, 9060, 9061, 9062, 9063, 9064, 9065, 9066, 9067, + 9068, 9069, 9070, 9071, 9072, 9073, 9074, 9075, 9076, 9077, 9078, 9079, 9080, + 9081, 9083, 9084, 9085, 9086, 9087, 9088, 9089, 9090, 9091, 9092, 9093, 9094, + 9095, 9096, 9097, 9098, 9099, 9100, 9101, 9102, 9103, 9104, 9105, 9106, 9107, + 9108, 9109, 9110, 9111, 9112, 9113, 9114, 9115, 9116, 9117, 9118, 9119, 9120, + 9121, 9122, 9124, 9125, 9126, 9127, 9128, 9131, 9132, 9133, 9134, 9135, 9139, + 9140, 9141, 9142, 9143, 9144, 9145, 9151, 9152, 9153, 9154, 9156, 9157, 9158, + 9159, 9161, 9162, 9163, 9164, 9166, 9167, 9168, 9169, 9176, 9177, 9178, 9179, + 9180, 9181, 9183, 9184, 9185, 9186, 9188, 9189, 9190, 9191, 9193, 9194, 9195, + 9196, 9198, 9199, 9200, 9201, 9203, 9204, 9205, 9206, 9207, 9209, 9210, 9211, + 9212, 9214, 9215, 9216, 9218, 9219, 9220, 9221, 9223, 9224, 9225, 9226, 9228, + 9229, 9230, 9231, 9233, 9234, 9235, 9236, 9237, 9238, 9239, 9240, 9241, 9242, + 9243, 9244, 9245, 9246, 9247, 9248, 9249, 9250, 9251, 9252, 9253, 9254, 9255, + 9256, 9258, 9259, 9260, 9261, 9263, 9264, 9265, 9266, 9268, 9269, 9270, 9271, + 9273, 9274, 9275, 9276, 9278, 9279, 9280, 9281, 9283, 9284, 9285, 9286, 9288, + 9289, 9290, 9291, 9293, 9294, 9295, 9296, 9298, 9299, 9300, 9301, 9303, 9304, + 9305, 9306, 9308, 9309, 9310, 9311, 9313, 9314, 9315, 9316, 9317, 9318, 9319, + 9320, 9322, 9323, 9324, 9327, 9328, 9329, 9330, 9331, 9332, 9333, 9335, 9336, + 9337, 9338, 9340, 9341, 9342, 9343, 9345, 9346, 9347, 9348, 9350, 9351, 9352, + 9353, 9354, 9355, 9356, 9358, 9359, 9360, 9361, 9363, 9364, 9365, 9367, 9368, + 9369, 9370, 9372, 9373, 9374, 9376, 9377, 9378, 9379, 9381, 9382, 9383, 9384, + 9385, 9386, 9387, 9392, 9393, 9394, 9395, 9396, 9397, 9398, 9403, 9404, 9405, + 9406, 9407, 9408, 9409, 9410, 9411, 9414, 9415, 9416, 9417, 9421, 9422, 9423, + 9424, 9426, 9427, 9428, 9429, 9431, 9432, 9438, 9439, 9440, 9442, 9443, 9444, + 9445, 9446, 9447, 9448, 9449, 9451, 9452, 9453, 9454, 9456, 9457, 9458, 9459, + 9461, 9462, 9463, 9464, 9466, 9467, 9468, 9469, 9471, 9472, 9473, 9474, 9476, + 9477, 9478, 9479, 9480, 9481, 9482, 9483, 9484, 9485, 9486, 9487, 9488, 9489, + 9490, 9491, 9492, 9493, 9494, 9495, 9496, 9497, 9498, 9499, 9500, 9501, 9502, + 9503, 9504, 9505, 9506, 9507, 9508, 9510, 9511, 9512, 9513, 9514, 9515, 9516, + 9517, 9518, 9519, 9520, 9521, 9523, 9524, 9525, 9526, 9528, 9529, 9530, 9531, + 9533, 9534, 9535, 9536, 9538, 9539, 9540, 9541, 9543, 9544, 9545, 9546, 9548, + 9549, 9550, 9551, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9562, 9563, + 9564, 9565, 9567, 9568, 9569, 9570, 9572, 9573, 9574, 9575, 9577, 9578, 9579, + 9580, 9582, 9583, 9584, 9585, 9587, 9588, 9589, 9590, 9592, 9593, 9594, 9595, + 9597, 9598, 9599, 9600, 9601, 9602, 9603, 9604, 9606, 9607, 9608, 9609, 9611, + 9612, 9613, 9614, 9616, 9617, 9618, 9619, 9620, 9621, 9622, 9623, 9624, 9626, + 9627, 9628, 9629, 9630, 9631, 9632, 9633, 9634, 9635, 9636, 9637, 9638, 9639, + 9640, 9641, 9642, 9643, 9644, 9645, 9646, 9647, 9648, 9649, 9650, 9651, 9652, + 9653, 9655, 9656, 9657, 9658, 9659, 9660, 9661, 9662, 9664, 9665, 9666, 9667, + 9669, 9670, 9671, 9672, 9673, 9674, 9676, 9677, 9678, 9679, 9681, 9682, 9683, + 9684, 9686, 9687, 9688, 9689, 9690, 9691, 9693, 9694, 9695, 9696, 9697, 9698, + 9699, 9700, 9701, 9702, 9703, 9704, 9705, 9706, 9707, 9708, 9709, 9710, 9712, + 9713, 9714, 9715, 9716, 9720, 9721, 9722, 9723, 9724, 9725, 9726, 9734, 9735, + 9736, 9737, 9738, 9739, 9741, 9742, 9743, 9744, 9746, 9747, 9748, 9749, 9751, + 9752, 9753, 9754, 9756, 9757, 9758, 9759, 9760, 9761, 9762, 9763, 9764, 9765, + 9766, 9767, 9769, 9770, 9771, 9772, 9774, 9775, 9776, 9777, 9778, 9779, 9780, + 9781, 9782, 9783, 9784, 9785, 9786, 9787, 9788, 9789, 9790, 9792, 9793, 9794, + 9795, 9796, 9797, 9798, 9799, 9800, 9801, 9802, 9803, 9804, 9805, 9806, 9808, + 9809, 9810, 9811, 9812, 9813, 9814, 9815, 9817, 9818, 9819, 9820, 9822, 9823, + 9824, 9825, 9827, 9828, 9829, 9830, 9831, 9832, 9834, 9835, 9836, 9837, 9839, + 9840, 9841, 9842, 9844, 9845, 9846, 9847, 9849, 9850, 9851, 9852, 9853, 9854, + 9855, 9856, 9857, 9858, 9859, 9860, 9866, 9867, 9868, 9869, 9870, 9871, 9874, + 9875, 9876, 9877, 9878, 9879, 9880, 9881, 9882, 9883, 9884, 9885, 9886, 9887, + 9888, 9889, 9890, 9891, 9892, 9893, 9894, 9895, 9898, 9899, 9900, 9901, 9902, + 9903, 9904, 9905, 9906, 9907, 9908, 9909, 9911, 9912, 9913, 9914, 9915, 9916, + 9917, 9918, 9919, 9920, 9921, 9922, 9923, 9924, 9925, 9926, 9927, 9928, 9929, + 9930, 9931, 9932, 9933, 9934, 9935, 9936, 9937, 9938, 9939, 9940, 9946, 9947, + 9948, 9949, 9950, 9951, 9952, 9953, 9954, 9955, 9956, 9957, 9960, 9961, 9962, + 9963, 9964, 9965, 9966, 9967, 9968, 9969, 9970, 9971, 9972, 9982, 9983, 9984, + 9986, 9987, 9988, 9989, 9991, 9992, 9993, 9994, 9996, 9997, 9998, 9999, 10001, + 10002, 10003, 10004, 10006, 10007, 10008, 10009, 10011, 10012, 10013, 10014, + 10016, 10017, 10018, 10019, 10021, 10022, 10023, 10024, 10026, 10027, 10028, + 10029, 10031, 10032, 10033, 10034, 10036, 10037, 10038, 10040, 10041, 10042, + 10043, 10044, 10048, 10049, 10050, 10051, 10052, 10053, 10054, 10056, 10057, + 10058, 10059, 10061, 10062, 10063, 10064, 10065, 10066, 10067, 10068, 10070, + 10071, 10072, 10073, 10075, 10076, 10077, 10078, 10080, 10081, 10082, 10083, + 10085, 10086, 10087, 10088, 10090, 10091, 10092, 10093, 10095, 10096, 10097, + 10098, 10100, 10101, 10102, 10103, 10105, 10106, 10107, 10108, 10110, 10111, + 10112, 10113, 10115, 10116, 10117, 10118, 10120, 10121, 10122, 10123, 10125, + 10126, 10127, 10128, 10129, 10130, 10131, 10132, 10138, 10139, 10140, 10141, + 10143, 10144, 10145, 10146, 10148, 10149, 10150, 10151, 10152, 10153, 10154, + 10155, 10156, 10157, 10158, 10159, 10160, 10161, 10164, 10165, 10166, 10167, + 10169, 10170, 10171, 10172, 10173, 10174, 10176, 10177, 10178, 10179, 10181, + 10182, 10183, 10184, 10186, 10187, 10188, 10189, 10191, 10192, 10193, 10194, + 10196, 10197, 10198, 10199, 10201, 10202, 10203, 10204, 10206, 10207, 10208, + 10209, 10211, 10212, 10213, 10214, 10216, 10217, 10218, 10219, 10221, 10222, + 10223, 10224, 10226, 10227, 10228, 10229, 10231, 10232, 10233, 10234, 10236, + 10237, 10238, 10239, 10241, 10242, 10243, 10244, 10245, 10246, 10248, 10249, + 10250, 10251, 10253, 10254, 10255, 10256, 10258, 10259, 10260, 10261, 10263, + 10264, 10265, 10266, 10268, 10269, 10270, 10271, 10272, 10276, 10277, 10278, + 10279, 10280, 10281, 10282, 10283, 10285, 10286, 10287, 10288, 10289, 10290, + 10292, 10293, 10294, 10295, 10296, 10297, 10298, 10299, 10300, 10301, 10304, + 10305, 10306, 10307, 10308, 10309, 10310, 10311, 10312, 10313, 10314, 10315, + 10320, 10321, 10322, 10323, 10324, 10325, 10327, 10328, 10329, 10330, 10331, + 10332, 10334, 10335, 10336, 10337, 10339, 10340, 10341, 10342, 10343, 10344, + 10345, 10346, 10347, 10356, 10357, 10358, 10359, 10360, 10364, 10365, 10366, + 10367, 10368, 10369, 10370, 10371, 10372, 10373, 10374, 10375, 10376, 10377, + 10378, 10379, 10380, 10381, 10382, 10383, 10384, 10385, 10386, 10387, 10388, + 10389, 10391, 10392, 10393, 10394, 10396, 10397, 10398, 10399, 10400, 10401, + 10402, 10403, 10404, 10405, 10406, 10407, 10408, 10409, 10410, 10411, 10412, + 10413, 10414, 10415, 10416, 10417, 10418, 10419, 10420, 10422, 10423, 10424, + 10425, 10426, 10427, 10429, 10430, 10431, 10432, 10434, 10435, 10436, 10437, + 10439, 10440, 10441, 10442, 10444, 10445, 10446, 10447, 10449, 10450, 10451, + 10452, 10454, 10455, 10456, 10457, 10458, 10459, 10461, 10462, 10463, 10464, + 10466, 10467, 10468, 10469, 10471, 10472, 10473, 10474, 10475, 10476, 10478, + 10479, 10480, 10481, 10483, 10484, 10485, 10486, 10488, 10489, 10490, 10491, + 10493, 10494, 10495, 10496, 10497, 10498, 10499, 10512, 10513, 10514, 10515, + 10517, 10518, 10519, 10520, 10522, 10523, 10524, 10525, 10527, 10528, 10529, + 10530, 10532, 10533, 10534, 10535, 10536, 10537, 10541, 10542, 10543, 10544, + 10546, 10547, 10548, 10549, 10550, 10554, 10555, 10556, 10557, 10558, 10559, + 10560, 10561, 10562, 10563, 10565, 10566, 10567, 10568, 10569, 10570, 10571, + 10572, 10573, 10574, 10575, 10576, 10577, 10578, 10579, 10580, 10581, 10582, + 10583, 10584, 10585, 10586, 10587, 10588, 10589, 10590, 10591, 10592, 10593, + 10594, 10595, 10596, 10597, 10598, 10600, 10601, 10602, 10603, 10604, 10608, + 10609, 10610, 10611, 10612, 10613, 10615, 10616, 10617, 10618, 10620, 10621, + 10622, 10623, 10625, 10626, 10627, 10628, 10630, 10631, 10632, 10633, 10635, + 10636, 10637, 10638, 10639, 10640, 10641, 10642, 10643, 10644, 10645, 10646, + 10647, 10648, 10650, 10651, 10652, 10653, 10655, 10656, 10657, 10658, 10660, + 10661, 10662, 10663, 10665, 10666, 10667, 10668, 10670, 10671, 10672, 10673, + 10675, 10676, 10677, 10678, 10680, 10681, 10682, 10683, 10685, 10686, 10687, + 10688, 10690, 10691, 10692, 10693, 10695, 10696, 10697, 10698, 10700, 10701, + 10702, 10703, 10704, 10705, 10706, 10707, 10708, 10709, 10711, 10712, 10713, + 10714, 10716, 10717, 10718, 10719, 10721, 10722, 10723, 10724, 10726, 10727, + 10728, 10729, 10731, 10732, 10733, 10734, 10736, 10737, 10738, 10739, 10741, + 10742, 10743, 10744, 10746, 10747, 10748, 10749, 10751, 10752, 10753, 10754, + 10756, 10757, 10758, 10759, 10760, 10761, 10762, 10763, 10764, 10765, 10766, + 10767, 10769, 10770, 10771, 10772, 10774, 10775, 10776, 10777, 10779, 10780, + 10781, 10782, 10784, 10785, 10786, 10787, 10789, 10790, 10791, 10792, 10794, + 10795, 10796, 10797, 10799, 10800, 10801, 10802, 10803, 10804, 10808, 10809, + 10810, 10811, 10812, 10813, 10814, 10815, 10816, 10817, 10818, 10819, 10820, + 10821, 10822, 10823, 10827, 10828, 10829, 10830, 10832, 10833, 10834, 10835, + 10836, 10837, 10839, 10840, 10841, 10842, 10844, 10845, 10846, 10847, 10849, + 10850, 10851, 10852, 10854, 10855, 10856, 10857, 10859, 10860, 10861, 10862, + 10864, 10865, 10866, 10867, 10868, 10869, 10870, 10871, 10872, 10873, 10874, + 10875, 10876, 10877, 10879, 10880, 10881, 10882, 10884, 10885, 10886, 10887, + 10888, 10889, 10891, 10892, 10893, 10894, 10896, 10897, 10898, 10899, 10901, + 10902, 10903, 10904, 10906, 10907, 10908, 10909, 10910, 10911, 10912, 10913, + 10914, 10918, 10919, 10920, 10921, 10922, 10923, 10924, 10925, 10926, 10927, + 10928, 10929, 10930, 10934, 10935, 10936, 10937, 10938, 10939, 10940, 10941, + 10942, 10945, 10946, 10947, 10948, 10950, 10951, 10952, 10953, 10954, 10958, + 10959, 10960, 10961, 10962, 10963, 10964, 10965, 10966, 10967, 10968, 10969, + 10970, 10971, 10972, 10973, 10975, 10976, 10977, 10978, 10980, 10981, 10982, + 10983, 10985, 10986, 10987, 10988, 10990, 10991, 10992, 10993, 10995, 10996, + 10997, 10998, 10999, 11000, 11001, 11002, 11003, 11005, 11006, 11007, 11008, + 11010, 11011, 11012, 11013, 11015, 11016, 11017, 11018, 11020, 11021, 11022, + 11023, 11025, 11026, 11027, 11028, 11030, 11031, 11032, 11033, 11035, 11036, + 11037, 11038, 11039, 11040, 11041, 11042, 11043, 11044, 11045, 11046, 11047, + 11048, 11049, 11073, 11074, 11075, 11076, 11077, 11078, 11080, 11081, 11082, + 11083, 11085, 11086, 11087, 11088, 11090, 11091, 11092, 11093, 11095, 11096, + 11097, 11098, 11100, 11101, 11102, 11103, 11104, 11105, 11106, 11107, 11117, + 11118, 11119, 11120, 11121, 11122, 11124, 11125, 11126, 11127, 11128, 11129, + 11130, 11131, 11132, 11133, 11134, 11135, 11136, 11137, 11138, 11139, 11140, + 11141, 11142, 11143, 11144, 11145, 11146, 11147, 11149, 11150, 11151, 11152, + 11154, 11155, 11156, 11157, 11159, 11160, 11161, 11162, 11163, 11164, 11165, + 11166, 11167, 11168, 11169, 11170, 11171, 11172, 11173, 11174, 11175, 11176, + 11177, 11178, 11179, 11180, 11181, 11182, 11183, 11184, 11185, 11186, 11187, + 11219, 11220, 11221, 11222, 11223, 11224, 11225, 11226, 11227, 11228, 11230, + 11231, 11232, 11233, 11235, 11236, 11237, 11238, 11240, 11241, 11242, 11243, + 11245, 11246, 11247, 11248, 11250, 11251, 11252, 11253, 11254, 11258, 11259, + 11260, 11261, 11262, 11263, 11265, 11266, 11267, 11268, 11270, 11271, 11272, + 11273, 11275, 11276, 11277, 11278, 11279, 11280, 11281, 11282, 11283, 11284, + 11285, 11286, 11287, 11288, 11289, 11290, 11291, 11292, 11293, 11294, 11295, + 11296, 11297, 11298, 11299, 11300, 11302, 11303, 11304, 11305, 11307, 11308, + 11309, 11310, 11312, 11313, 11314, 11315, 11316, 11317, 11318, 11319, 11320, + 11321, 11322, 11323, 11324, 11325, 11326, 11327, 11328, 11329, 11330, 11331, + 11332, 11333, 11334, 11335, 11336, 11340, 11341, 11342, 11343, 11344, 11345, + 11347, 11348, 11349, 11350, 11352, 11353, 11354, 11355, 11357, 11358, 11359, + 11360, 11361, 11362, 11363, 11364, 11365, 11366, 11367, 11368, 11369, 11370, + 11371, 11372, 11373, 11374, 11375, 11376, 11377, 11378, 11379, 11380, 11382, + 11383, 11384, 11385, 11386, 11387, 11389, 11390, 11391, 11392, 11394, 11395, + 11396, 11397, 11399, 11400, 11401, 11402, 11403, 11404, 11405, 11406, 11407, + 11408, 11409, 11410, 11411, 11412, 11413, 11414, 11415, 11416, 11417, 11418, + 11419, 11420, 11421, 11422, 11423, 11424, 11426, 11427, 11428, 11429, 11431, + 11432, 11433, 11434, 11436, 11437, 11438, 11439, 11440, 11441, 11442, 11443, + 11444, 11445, 11446, 11447, 11448, 11449, 11450, 11451, 11452, 11453, 11454, + 11455, 11456, 11457, 11458, 11459, 11460, 11464, 11465, 11466, 11467, 11468, + 11469, 11471, 11472, 11473, 11474, 11476, 11477, 11478, 11479, 11481, 11482, + 11483, 11484, 11485, 11486, 11487, 11488, 11489, 11490, 11491, 11492, 11493, + 11494, 11495, 11496, 11497, 11498, 11499, 11500, 11501, 11502, 11503, 11504, + 11506, 11507, 11508, 11509, 11510, 11511, 11513, 11514, 11515, 11516, 11518, + 11519, 11520, 11521, 11523, 11524, 11525, 11526, 11527, 11528, 11529, 11530, + 11531, 11532, 11533, 11534, 11535, 11536, 11537, 11538, 11539, 11540, 11541, + 11542, 11543, 11544, 11545, 11546, 11548, 11549, 11550, 11551, 11553, 11554, + 11555, 11556, 11558, 11559, 11560, 11561, 11563, 11564, 11565, 11566, 11568, + 11569, 11570, 11571, 11573, 11574, 11575, 11576, 11578, 11579, 11580, 11581, + 11583, 11584, 11585, 11586, 11588, 11589, 11590, 11591, 11593, 11594, 11595, + 11596, 11598, 11599, 11600, 11601, 11602, 11603, 11605, 11606, 11607, 11608, + 11610, 11611, 11612, 11613, 11615, 11616, 11617, 11618, 11619, 11620, 11621, + 11622, 11623, 11624, 11625, 11626, 11627, 11628, 11629, 11630, 11631, 11632, + 11633, 11634, 11635, 11636, 11637, 11638, 11639, 11640, 11642, 11643, 11644, + 11645, 11647, 11648, 11649, 11650, 11652, 11653, 11654, 11655, 11656, 11657, + 11658, 11659, 11660, 11661, 11662, 11663, 11664, 11665, 11666, 11667, 11668, + 11669, 11670, 11671, 11672, 11673, 11674, 11675, 11676, 11677, 11683, 11684, + 11685, 11686, 11687, 11688, 11690, 11691, 11692, 11693, 11695, 11696, 11697, + 11698, 11700, 11701, 11702, 11703, 11704, 11705, 11706, 11707, 11709, 11710, + 11711, 11712, 11713, 11714, 11716, 11717, 11718, 11719, 11721, 11722, 11723, + 11724, 11726, 11727, 11728, 11729, 11730, 11731, 11732, 11733, 11734, 11735, + 11736, 11737, 11738, 11739, 11740, 11741, 11743, 11744, 11745, 11746, 11748, + 11749, 11750, 11751, 11753, 11754, 11755, 11756, 11758, 11759, 11760, 11762, + 11763, 11764, 11766, 11767, 11768, 11769, 11770, 11771, 11773, 11774, 11775, + 11776, 11778, 11779, 11780, 11781, 11783, 11784, 11785, 11786, 11787, 11788, + 11789, 11790, 11791, 11792, 11793, 11794, 11795, 11796, 11797, 11798, 11799, + 11800, 11801, 11802, 11804, 11805, 11806, 11807, 11808, 11809, 11810, 11811, + 11812, 11813, 11814, 11815, 11816, 11817, 11839, 11840, 11841, 11842, 11843, + 11844, 11845, 11847, 11849, 11850, 11851, 11852, 11854, 11855, 11856, 11857, + 11859, 11860, 11861, 11862, 11864, 11865, 11866, 11867, 11868, 11869, 11870, + 11871, 11872, 11873, 11874, 11875, 11876, 11877, 11878, 11879, 11880, 11881, + 11883, 11884, 11885, 11886, 11888, 11889, 11890, 11891, 11892, 11893, 11894, + 11895, 11896, 11897, 11898, 11899, 11900, 11901, 11902, 11903, 11904, 11905, + 11907, 11908, 11909, 11910, 11912, 11913, 11914, 11915, 11916, 11917, 11918, + 11919, 11920, 11921, 11923, 11924, 11925, 11926, 11927, 11928, 11936, 11937, + 11938, 11939, 11942, 11943, 11944, 11945, 11947, 11948, 11949, 11950, 11951, + 11952, 11953, 11955, 11956, 11957, 11958, 11960, 11961, 11962, 11963, 11965, + 11966, 11967, 11968, 11969, 11970, 11971, 11972, 11974, 11975, 11976, 11977, + 11979, 11980, 11981, 11982, 11984, 11985, 11986, 11987, 11989, 11990, 11991, + 11992, 11994, 11995, 11996, 11997, 11999, 12000, 12001, 12002, 12003, 12004, + 12005, 12006, 12008, 12009, 12010, 12011, 12013, 12014, 12015, 12016, 12018, + 12019, 12020, 12021, 12023, 12024, 12025, 12026, 12028, 12029, 12030, 12031, + 12033, 12034, 12035, 12036, 12037, 12038, 12039, 12040, 12042, 12043, 12044, + 12045, 12047, 12048, 12049, 12050, 12052, 12053, 12054, 12055, 12057, 12058, + 12059, 12060, 12061, 12062, 12063, 12064, 12066, 12067, 12068, 12069, 12071, + 12072, 12073, 12074, 12076, 12077, 12078, 12079, 12081, 12082, 12083, 12084, + 12085, 12086, 12087, 12088, 12090, 12091, 12092, 12093, 12095, 12096, 12097, + 12098, 12100, 12101, 12102, 12103, 12105, 12106, 12107, 12108, 12110, 12111, + 12112, 12113, 12115, 12116, 12117, 12118, 12119, 12120, 12121, 12122, 12132, + 12133, 12134, 12135, 12136, 12137, 12138, 12139, 12140, 12141, 12142, 12143, + 12144, 12145, 12146, 12147, 12148, 12149, 12150, 12151, 12152, 12153, 12154, + 12158, 12159, 12160, 12162, 12164, 12165, 12166, 12167, 12169, 12170, 12171, + 12172, 12174, 12175, 12176, 12177, 12178, 12182, 12183, 12184, 12185, 12186, + 12187, 12188, 12192, 12193, 12194, 12195, 12196, 12197, 12198, 12199, 12200, + 12204, 12205, 12206, 12207, 12208, 12210, 12212, 12218, 12219, 12220, 12221, + 12222, 12223, 12224, 12225, 12226, 12227, 12228, 12229, 12230, 12231, 12232, + 12233, 12234, 12235, 12236, 12237, 12238, 12239, 12240, 12241, 12242, 12243, + 12244, 12245, 12246, 12247, 12256, 12257, 12258, 12259, 12260, 12261, 12262, + 12263, 12264, 12265, 12266, 12267, 12268, 12269, 12270, 12271, 12272, 12273, + 12276, 12277, 12278, 12279, 12280, 12281, 12282, 12284, 12286, 12287, 12288, + 12297, 12298, 12299, 12300, 12301, 12302, 12303, 12304, 12306, 12307, 12308, + 12309, 12311, 12312, 12313, 12314, 12315, 12316, 12317, 12318, 12319, 12320, + 12321, 12322, 12323, 12324, 12325, 12326, 12327, 12328, 12329, 12330, 12331, + 12332, 12333, 12334, 12341, 12342, 12343, 12344, 12345, 12346, 12347, 12348, + 12349, 12350, 12351, 12352, 12353, 12354, 12355, 12356, 12357, 12358, 12364, + 12365, 12366, 12367, 12368, 12369, 12370, 12371, 12372, 12373, 12374, 12375, + 12378, 12379, 12380, 12381, 12382, 12383, 12384, 12385, 12386, 12387, 12392, + 12393, 12394, 12395, 12396, 12397, 12398, 12399, 12400, 12401, 12402, 12403, + 12404, 12405, 12406, 12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414, + 12415, 12416, 12417, 12418, 12419, 12420, 12426, 12427, 12428, 12429, 12430, + 12431, 12432, 12433, 12434, 12435, 12436, 12437, 12438, 12439, 12440, 12441, + 12442, 12443, 12448, 12449, 12450, 12451, 12452, 12453, 12454, 12455, 12456, + 12457, 12459, 12460, 12461, 12462, 12463, 12464, 12465, 12466, 12467, 12468, + 12472, 12473, 12474, 12475, 12476, 12480, 12481, 12482, 12483, 12484, 12485, + 12486, 12487, 12488, 12489, 12490, 12491, 12492, 12493, 12494, 12495, 12496, + 12500, 12501, 12502, 12503, 12504, 12505, 12507, 12508, 12509, 12510, 12511, + 12512, 12513, 12514, 12515, 12516, 12517, 12518, 12519, 12520, 12521, 12525, + 12526, 12527, 12528, 12529, 12532, 12533, 12534, 12535, 12536, 12537, 12538, + 12539, 12540, 12541, 12542, 12543, 12547, 12548, 12549, 12550, 12551, 12552, + 12553, 12554, 12555, 12556, 12557, 12558, 12559, 12560, 12561, 12563, 12564, + 12565, 12566, 12567, 12568, 12569, 12570, 12571, 12572, 12573, 12574, 12575, + 12576, 12577, 12578, 12579, 12580, 12581, 12582, 12583, 12584, 12585, 12586, + 12591, 12592, 12593, 12594, 12595, 12596, 12597, 12598, 12599, 12600, 12601, + 12602, 12603, 12604, 12605, 12606, 12607, 12608, 12609, 12610, 12611, 12612, + 12613, 12614, 12615, 12619, 12620, 12621, 12622, 12623, 12624, 12625, 12626, + 12627, 12629, 12630, 12631, 12632, 12633, 12634, 12635, 12636, 12637, 12640, + 12641, 12642, 12643, 12644, 12645, 12646, 12647, 12648, 12649, 12650, 12652, + 12661, 12662, 12663, 12664, 12665, 12666, 12667, 12668, 12669, 12670, 12671, + 12672, 12673, 12680, 12681, 12682, 12683, 12684, 12685, 12686, 12687, 12688, + 12689, 12691, 12693, 12697, 12698, 12699, 12700, 12701, 12702, 12703, 12704, + 12705, 12706, 12707, 12709, 12715, 12716, 12717, 12718, 12719, 12720, 12721, + 12722, 12723, 12724, 12725, 12726, 12727, 12728, 12729, 12730, 12731, 12739, + 12740, 12741, 12742, 12743, 12744, 12745, 12746, 12747, 12748, 12749, 12750, + 12762, 12763, 12764, 12766, 12767, 12768, 12769, 12770, 12771, 12772, 12773, + 12774, 12776, 12777, 12778, 12779, 12780, 12781, 12782, 12783, 12784, 12785, + 12786, 12787, 12788, 12789, 12790, 12794, 12795, 12796, 12797, 12798, 12799, + 12800, 12801, 12802, 12804, 12805, 12806, 12807, 12808, 12809, 12810, 12811, + 12812, 12814, 12815, 12816, 12817, 12818, 12819, 12820, 12821, 12822, 12823, + 12824, 12825, 12826, 12827, 12828, 12829, 12830, 12831, 12834, 12835, 12836, + 12837, 12838, 12839, 12840, 12841, 12842, 12843, 12844, 12845, 12846, 12847, + 12848, 12849, 12850, 12851, 12852, 12853, 12854, 12855, 12856, 12857, 12864, + 12865, 12866, 12867, 12868, 12869, 12870, 12871, 12872, 12873, 12874, 12875, + 12876, 12877, 12878, 12879, 12880, 12881, 12882, 12883, 12884, 12885, 12886, + 12887, 12888, 12889, 12890, 12898, 12899, 12900, 12901, 12902, 12903, 12904, + 12905, 12906, 12907, 12908, 12916, 12917, 12918, 12919, 12920, 12921, 12922, + 12923, 12924, 12925, 12926, 12927, 12928, 12929, 12930, 12931, 12932, 12933, + 12934, 12935, 12936, 12937, 12938, 12939, 12946, 12947, 12948, 12949, 12950, + 12951, 12952, 12953, 12954, 12955, 12956, 12957, 12958, 12959, 12960, 12961, + 12962, 12963, 12964, 12965, 12966, 12972, 12973, 12974, 12975, 12976, 12977, + 12978, 12979, 12980, 12981, 12982, 12983, 12984, 12985, 12986, 12987, 12988, + 12989, 12994, 12995, 12996, 12997, 12998, 12999, 13000, 13001, 13002, 13003, + 13004, 13005, 13006, 13007, 13008, 13012, 13013, 13014, 13015, 13016, 13017, + 13018, 13022, 13023, 13024, 13025, 13026, 13027, 13028, 13029, 13030, 13031, + 13032, 13033, 13034, 13035, 13036, 13037, 13038, 13039, 13040, 13041, 13042, + 13046, 13047, 13048, 13049, 13050, 13052, 13053, 13054, 13055, 13056, 13057, + 13058, 13059, 13060, 13061, 13062, 13063, 13066, 13067, 13068, 13069, 13070, + 13071, 13072, 13073, 13074, 13075, 13076, 13077, 13078, 13079, 13080, 13082, + 13083, 13084, 13085, 13086, 13087, 13088, 13089, 13090, 13091, 13092, 13093, + 13094, 13098, 13099, 13100, 13101, 13102, 13103, 13104, 13105, 13106, 13107, + 13108, 13109, 13110, 13111, 13112, 13113, 13114, 13115, 13116, 13117, 13118, + 13119, 13122, 13123, 13124, 13125, 13126, 13127, 13128, 13129, 13130, 13131, + 13132, 13134, 13135, 13136, 13137, 13138, 13139, 13140, 13141, 13142, 13148, + 13149, 13150, 13151, 13152, 13153, 13154, 13155, 13156, 13157, 13158, 13159, + 13160, 13161, 13162, 13163, 13164, 13165, 13166, 13167, 13168, 13169, 13170, + 13171, 13172, 13173, 13174, 13176, 13177, 13178, 13179, 13180, 13181, 13182, + 13183, 13184, 13185, 13186, 13187, 13188, 13189, 13190, 13191, 13194, 13195, + 13196, 13197, 13198, 13199, 13200, 13201, 13202, 13203, 13204, 13205, 13206, + 13207, 13208, 13209, 13210, 13211, 13212, 13213, 13214, 13215, 13216, 13217, + 13218, 13220, 13221, 13222, 13223, 13224, 13225, 13226, 13227, 13228, 13229, + 13230, 13231, 13232, 13233, 13234, 13235, 13236, 13237, 13238, 13239, 13240, + 13241, 13242, 13243, 13244, 13245, 13246, 13247, 13248, 13249, 13250, 13251, + 13252, 13253, 13254, 13255, 13256, 13257, 13258, 13259, 13260, 13261, 13262, + 13263, 13264, 13265, 13266, 13267, 13268, 13269, 13270, 13271, 13272, 13276, + 13277, 13278, 13279, 13280, 13281, 13282, 13283, 13284, 13286, 13287, 13288, + 13289, 13290, 13291, 13292, 13293, 13294, 13300, 13301, 13302, 13303, 13305, + 13306, 13307, 13308, 13310, 13311, 13312, 13313, 13315, 13316, 13317, 13318, + 13320, 13321, 13322, 13323, 13324, 13325, 13337, 13338, 13339, 13340, 13342, + 13343, 13344, 13345, 13346, 13347, 13348, 13349, 13350, 13351, 13353, 13354, + 13355, 13356, 13358, 13359, 13360, 13361, 13363, 13364, 13365, 13366, 13367, + 13368, 13369, 13370, 13371, 13372, 13373, 13374, 13375, 13376, 13377, 13378, + 13379, 13380, 13381, 13382, 13383, 13384, 13385, 13386, 13387, 13388, 13389, + 13390, 13391, 13392, 13394, 13395, 13396, 13397, 13399, 13400, 13401, 13402, + 13404, 13405, 13406, 13407, 13409, 13410, 13411, 13412, 13414, 13415, 13416, + 13417, 13418, 13419, 13420, 13421, 13422, 13423, 13424, 13425, 13426, 13427, + 13428, 13429, 13430, 13431, 13432, 13433, 13434, 13435, 13436, 13437, 13439, + 13440, 13441, 13442, 13444, 13445, 13446, 13447, 13449, 13450, 13451, 13452, + 13454, 13455, 13456, 13457, 13459, 13460, 13461, 13462, 13464, 13465, 13466, + 13467, 13469, 13470, 13471, 13472, 13475, 13476, 13477, 13478, 13479, 13480, + 13481, 13482, 13483, 13484, 13486, 13487, 13488, 13489, 13491, 13492, 13493, + 13494, 13496, 13497, 13498, 13499, 13501, 13502, 13503, 13504, 13506, 13507, + 13508, 13509, 13510, 13511, 13512, 13513, 13515, 13516, 13517, 13518, 13520, + 13521, 13522, 13523, 13525, 13526, 13527, 13528, 13530, 13531, 13532, 13533, + 13535, 13536, 13537, 13538, 13540, 13541, 13542, 13543, 13545, 13546, 13547, + 13548, 13549, 13550, 13551, 13553, 13555, 13564, 13565, 13566, 13567, 13568, + 13569, 13570, 13571, 13572, 13573, 13574, 13575, 13576, 13577, 13578, 13579, + 13580, 13581, 13582, 13583, 13584, 13585, 13586, 13587, 13588, 13589, 13590, + 13591, 13592, 13593, 13594, 13595, 13596, 13597, 13602, 13603, 13604, 13605, + 13608, 13609, 13610, 13611, 13612, 13613, 13614, 13615, 13617, 13618, 13619, + 13620, 13621, 13622, 13626, 13627, 13628, 13629, 13630, 13631, 13633, 13634, + 13635, 13636, 13637, 13638, 13639, 13640, 13641, 13642, 13643, 13644, 13645, + 13646, 13647, 13648, 13649, 13650, 13651, 13652, 13653, 13654, 13655, 13656, + 13657, 13658, 13659, 13660, 13661, 13662, 13663, 13664, 13665, 13666, 13668, + 13669, 13670, 13671, 13673, 13674, 13675, 13676, 13678, 13679, 13680, 13681, + 13682, 13683, 13684, 13685, 13686, 13687, 13688, 13689, 13690, 13691, 13692, + 13693, 13694, 13695, 13696, 13697, 13698, 13699, 13700, 13701, 13702, 13703, + 13704, 13705, 13706, 13707, 13709, 13710, 13711, 13712, 13713, 13714, 13715, + 13716, 13717, 13718, 13719, 13720, 13721, 13722, 13723, 13724, 13725, 13726, + 13727, 13728, 13729, 13730, 13731, 13732, 13733, 13734, 13735, 13736, 13737, + 13738, 13739, 13740, 13741, 13742, 13743, 13744, 13745, 13746, 13747, 13748, + 13749, 13750, 13751, 13752, 13753, 13754, 13755, 13756, 13757, 13758, 13759, + 13760, 13761, 13762, 13763, 13764, 13765, 13766, 13767, 13768, 13769, 13770, + 13771, 13772, 13773, 13774, 13775, 13776, 13777, 13778, 13779, 13780, 13781, + 13782, 13783, 13784, 13785, 13786, 13787, 13788, 13789, 13790, 13791, 13792, + 13793, 13794, 13795, 13796, 13797, 13798, 13799, 13800, 13801, 13802, 13803, + 13804, 13805, 13806, 13807, 13808, 13809, 13810, 13811, 13812, 13813, 13814, + 13815, 13816, 13817, 13818, 13819, 13820, 13821, 13822, 13823, 13824, 13825, + 13826, 13827, 13828, 13829, 13830, 13831, 13832, 13833, 13834, 13835, 13836, + 13837, 13838, 13839, 13840, 13841, 13842, 13843, 13844, 13845, 13846, 13847, + 13848, 13849, 13850, 13851, 13852, 13854, 13856, 13858, 13860, 13862, 13864, + 13866, 13868, 13870, 13879, 13880, 13881, 13882, 13883, 13884, 13885, 13886, + 13887, 13888, 13889, 13890, 13891, 13892, 13893, 13894, 13895, 13896, 13897, + 13898, 13899, 13901, 13902, 13903, 13904, 13905, 13906, 13909, 13910, 13911, + 13912, 13914, 13915, 13916, 13917, 13918, 13919, 13925, 13926, 13927, 13928, + 13929, 13930, 13931, 13932, 13933, 13934, 13935, 13936, 13937, 13938, 13939, + 13940, 13941, 13942, 13944, 13945, 13946, 13947, 13948, 13949, 13950, 13951, + 13953, 13954, 13955, 13956, 13958, 13959, 13960, 13961, 13962, 13963, 13964, + 13965, 13966, 13967, 13968, 13969, 13970, 13972, 13973, 13974, 13975, 13977, + 13978, 13979, 13980, 13981, 13985, 13986, 13987, 13988, 13989, 13990, 13991, + 13992, 13993, 13994, 13995, 13996, 13997, 13998, 13999, 14000, 14001, 14002, + 14003, 14004, 14005, 14006, 14007, 14008, 14009, 14010, 14011, 14012, 14013, + 14014, 14015, 14016, 14017, 14018, 14019, 14020, 14021, 14022, 14023, 14024, + 14025, 14026, 14027, 14028, 14029, 14030, 14031, 14032, 14033, 14034, 14035, + 14036, 14037, 14038, 14039, 14040, 14041, 14042, 14043, 14044, 14046, 14047, + 14048, 14049, 14050, 14053, 14054, 14055, 14056, 14057, 14061, 14062, 14063, + 14064, 14065, 14066, 14072, 14073, 14074, 14075, 14077, 14078, 14079, 14080, + 14082, 14083, 14084, 14085, 14087, 14088, 14089, 14090, 14097, 14098, 14099, + 14100, 14101, 14102, 14103, 14104, 14105, 14107, 14108, 14109, 14110, 14112, + 14113, 14114, 14115, 14117, 14118, 14119, 14120, 14122, 14123, 14124, 14125, + 14126, 14128, 14129, 14130, 14131, 14133, 14134, 14135, 14136, 14137, 14138, + 14140, 14141, 14142, 14143, 14145, 14146, 14147, 14148, 14150, 14151, 14152, + 14153, 14154, 14155, 14156, 14157, 14158, 14159, 14160, 14161, 14162, 14163, + 14164, 14165, 14166, 14167, 14168, 14169, 14170, 14171, 14172, 14173, 14175, + 14176, 14177, 14178, 14180, 14181, 14182, 14183, 14185, 14186, 14187, 14188, + 14190, 14191, 14192, 14193, 14195, 14196, 14197, 14198, 14200, 14201, 14202, + 14203, 14205, 14206, 14207, 14208, 14210, 14211, 14212, 14213, 14215, 14216, + 14217, 14218, 14220, 14221, 14222, 14223, 14225, 14226, 14227, 14228, 14230, + 14231, 14232, 14233, 14234, 14235, 14236, 14237, 14239, 14240, 14241, 14244, + 14245, 14246, 14247, 14248, 14249, 14250, 14252, 14253, 14254, 14255, 14257, + 14258, 14259, 14260, 14262, 14263, 14264, 14265, 14267, 14268, 14269, 14270, + 14271, 14272, 14273, 14275, 14276, 14277, 14278, 14280, 14281, 14282, 14284, + 14285, 14286, 14287, 14289, 14290, 14291, 14293, 14294, 14295, 14296, 14298, + 14299, 14300, 14301, 14302, 14303, 14304, 14309, 14310, 14311, 14312, 14313, + 14314, 14315, 14320, 14321, 14322, 14323, 14324, 14325, 14326, 14327, 14328, + 14331, 14332, 14333, 14334, 14338, 14339, 14340, 14341, 14343, 14344, 14345, + 14346, 14348, 14349, 14355, 14356, 14357, 14359, 14360, 14361, 14362, 14363, + 14364, 14365, 14366, 14368, 14369, 14370, 14371, 14373, 14374, 14375, 14376, + 14378, 14379, 14380, 14381, 14383, 14384, 14385, 14386, 14388, 14389, 14390, + 14391, 14393, 14394, 14395, 14396, 14397, 14398, 14399, 14400, 14401, 14402, + 14403, 14404, 14405, 14406, 14407, 14408, 14409, 14410, 14411, 14412, 14413, + 14452, 14491, 14493, 14495, 14497, 14499, 14501, 14503, 14505, 14507, 14508, + 14510, 14512, 14514, 14516, 14518, 14520, 14522, 14524, 14525, 14527, 14529, + 14531, 14532, 14533, 14534, 14535, 14536, 14537, 14539, 14540, 14542, 14544, + 14546, 14547, 14548, 14549, 14551, 14553, 14557, 14559, 14561, 14563, 14565, + 14567, 14569, 14571, 14572, 14573, 14575, 14576, 14577, 14578, 14579, 14581, + 14583, 14584, 14586, 14588, 14590, 14592, 14594, 14595, 14598, 14604, 14605, + 14606, 14608, 14609, 14612, 14613, 14616, 14622, 14624, 14626, 14628, 14630, + 14632, 14634, 14636, 14638, 14640, 14642, 14644, 14646, 14647, 14649, 14651, + 14653, 14655, 14657, 14659, 14661, 14663, 14665, 14667, 14669, 14671, 14673, + 14679, 14681, 14682, 14683, 14686, 14688, 14690, 14692, 14694, 14696, 14698, + 14700, 14702, 14704, 14706, 14708, 14710, 14712, 14714, 14716, 14718, 14720, + 14722, 14724, 14725, 14726, 14728, 14730, 14732, 14734, 14739, 14740, 14743, + 14744, 14753, 14755, 14756, 14757, 14758, 14759, 14760, 14762, 14764, 14765, + 14766, 14767, 14769, 14771, 14773, 14775, 14777, 14779, 14781, 14783, 14785, + 14787, 14789, 14791, 14793, 14795, 14808, 14810, 14812, 14814, 14816, 14817, + 14818, 14822, 14824, 14828, 14829, 14830, 14831, 14832, 14833, 14834, 14835, + 14836, 14838, 14840, 14842, 14844, 14846, 14848, 14850, 14851, 14853, 14855, + 14857, 14859, 14861, 14863, 14865, 14867, 14869, 14871, 14873, 14875, 14877, + 14879, 14881, 14883, 14885, 14887, 14889, 14891, 14893, 14894, 14895, 14897, + 14899, 14901, 14903, 14905, 14907, 14909, 14910, 14911, 14912, 14913, 14917, + 14918, 14922, 14924, 14926, 14928, 14930, 14932, 14933, 14934, 14936, 14938, + 14940, 14942, 14946, 14950, 14951, 14952, 14955, 14957, 14959, 14960, 14962, + 14964, 14966, 14968, 14970, 14971, 14972, 14974, 14976, 14978, 14980, 14982, + 14984, 14986, 14990, 14992, 14994, 14996, 15000, 15004, 15008, 15010, 15012, + 15014, 15018, 15020, 15022, 15024, 15026, 15028, 15052, 15062, 15064, 15066, + 15068, 15070, 15072, 15074, 15106, 15108, 15110, 15112, 15114, 15116, 15117, + 15119, 15121, 15123, 15124, 15125, 15126, 15127, 15129, 15131, 15133, 15134, + 15135, 15136, 15137, 15138, 15139, 15141, 15143, 15145, 15146, 15147, 15148, + 15149, 15150, 15152, 15154, 15156, 15157, 15158, 15159, 15160, 15162, 15164, + 15166, 15167, 15168, 15169, 15170, 15171, 15172, 15174, 15176, 15178, 15179, + 15180, 15181, 15182, 15183, 15185, 15187, 15189, 15190, 15191, 15192, 15193, + 15194, 15196, 15198, 15200, 15202, 15204, 15206, 15208, 15210, 15212, 15214, + 15216, 15218, 15220, 15221, 15222, 15223, 15224, 15226, 15228, 15230, 15231, + 15232, 15233, 15234, 15235, 15236, 15238, 15240, 15242, 15244, 15245, 15247, + 15249, 15251, 15252, 15253, 15254, 15256, 15258, 15260, 15262, 15264, 15266, + 15267, 15268, 15269, 15270, 15272, 15274, 15276, 15278, 15280, 15286, 15288, + 15292, 15294, 15298, 15302, 15324, 15326, 15328, 15330, 15332, 15333, 15334, + 15335, 15337, 15338, 15339, 15340, 15342, 15344, 15352, 15355, 15356, 15358, + 15360, 15362, 15363, 15365, 15367, 15369, 15371, 15373, 15375, 15376, 15378, + 15380, 15382, 15384, 15386, 15388, 15389, 15391, 15393, 15395, 15397, 15398, + 15400, 15402, 15404, 15406, 15407, 15409, 15411, 15413, 15415, 15417, 15419, + 15421, 15423, 15425, 15427, 15428, 15429, 15430, 15431, 15432, 15434, 15436, + 15438, 15440, 15444, 15446, 15448, 15450, 15452, 15453, 15456, 15461, 15462, + 15463, 15472, 15474, 15477, 15480, 15486, 15495, 15496, 15498, 15501, 15502, + 15503, 15504, 15505, 15511, 15516, 15522, 15529, 15530, 15531, 15535, 15537, + 15538, 15539, 15543, 15545, 15546, 15547, 15548, 15550, 15551, 15555, 15556, + 15560, 15561, 15562, 15564, 15573, 15575, 15577, 15581, 15587, 15591, 15599, + 15606, 15609, 15611, 15616, 15619, 15623, 15627, 15632, 15640, 15647, 15650, + 15651, 15653, 15655, 15659, 15661, 15665, 15670, 15676, 15683, 15687, 15688, + 15689, 15691, 15692, 15695, 15696, 15697, 15700, 15702, 15703, 15707, 15709, + 15713, 15721, 15722, 15723, 15724, 15725, 15726, 15728, 15729, 15730, 15731, + 15732, 15733, 15734, 15735, 15736, 15737, 15738, 15742, 15743, 15744, 15746, + 15747, 15748, 15750, 15753, 15759, 15765, 15767, 15769, 15771, 15773, 15775, + 15787, 15799, 15800, 15802, 15804, 15806, 15807, 15808, 15809, 15810, 15811, + 15813, 15815, 15817, 15819, 15821, 15822, 15823, 15824, 15825, 15826, 15828, + 15830, 15832, 15834, 15836, 15838, 15840, 15841, 15843, 15845, 15847, 15849, + 15851, 15852, 15854, 15856, 15858, 15860, 15862, 15864, 15866, 15868, 15872, + 15881, 15882, 15883, 15884, 15889, 15892, 15893, 15895, 15896, 15897, 15899, + 15900, 15901, 15902, 15903, 15904, 15905, 15907, 15909, 15911, 15912, 15913, + 15914, 15915, 15916, 15917, 15918, 15919, 15920, 15921, 15922, 15923, 15924, + 15925, 15926, 15927, 15928, 15929, 15930, 15931, 15932, 15933, 15934, 15935, + 15936, 15937, 15938, 15939, 15940, 15942, 15944, 15946, 15948, 15950, 15952, + 15954, 15956, 15959, 15968, 15969, 15970, 15971, 15972, 15973, 15975, 15976, + 15980, 15983, 15985, 15987, 15989, 15990, 15992, 15994, 15996, 15998, 16000, + 16001, 16003, 16005, 16007, 16009, 16010, 16011, 16012, 16014, 16015, 16017, + 16018, 16020, 16022, 16023, 16024, 16025, 16026, 16027, 16028, 16029, 16030, + 16031, 16032, 16033, 16034, 16035, 16037, 16038, 16041, 16045, 16051, 16053, + 16055, 16057, 16059, 16061, 16063, 16065, 16066, 16068, 16070, 16072, 16074, + 16075, 16076, 16077, 16078, 16079, 16081, 16083, 16085, 16087, 16089, 16091, + 16093, 16095, 16097, 16099, 16101, 16103, 16104, 16105, 16106, 16107, 16108, + 16111, 16112, 16115, 16116, 16118, 16120, 16122, 16123, 16125, 16127, 16129, + 16131, 16136, 16141, 16142, 16143, 16146, 16150, 16152, 16154, 16156, 16158, + 16159, 16161, 16163, 16165, 16167, 16169, 16171, 16173, 16175, 16177, 16179, + 16181, 16183, 16185, 16186, 16188, 16190, 16192, 16194, 16196, 16198, 16200, + 16202, 16203, 16205, 16207, 16208, 16209, 16211, 16212, 16213, 16214, 16215, + 16216, 16217, 16220, 16221, 16224, 16226, 16228, 16230, 16232, 16234, 16236, + 16238, 16240, 16241, 16243, 16245, 16247, 16249, 16251, 16253, 16255, 16257, + 16258, 16260, 16262, 16264, 16266, 16268, 16270, 16272, 16274, 16277, 16278, + 16279, 16280, 16281, 16284, 16287, 16293, 16295, 16297, 16299, 16302, 16304, + 16306, 16308, 16310, 16312, 16314, 16316, 16318, 16319, 16321, 16322, 16323, + 16326, 16327, 16328, 16329, 16337, 16342, 16344, 16345, 16349, 16350, 16352, + 16353, 16354, 16355, 16361, 16363, 16365, 16367, 16369, 16371, 16373, 16375, + 16377, 16379, 16381, 16383, 16385, 16387, 16389, 16391, 16393, 16395, 16397, + 16399, 16400, 16402, 16404, 16406, 16408, 16410, 16412, 16414, 16416, 16418, + 16420, 16422, 16424, 16426, 16428, 16430, 16432, 16438, 16440, 16441, 16442, + 16443, 16446, 16448, 16450, 16452, 16454, 16456, 16458, 16460, 16462, 16464, + 16466, 16468, 16470, 16472, 16474, 16476, 16477, 16478, 16479, 16481, 16483, + 16484, 16485, 16486, 16487, 16497, 16498, 16499, 16501, 16502, 16503, 16505, + 16508, 16511, 16512, 16514, 16522, 16525, 16526, 16528, 16530, 16535, 16536, + 16537, 16540, 16541, 16544, 16546, 16555, 16557, 16559, 16561, 16563, 16565, + 16567, 16569, 16571, 16573, 16575, 16577, 16579, 16581, 16583, 16596, 16598, + 16600, 16602, 16603, 16604, 16605, 16606, 16607, 16608, 16610, 16612, 16614, + 16615, 16616, 16617, 16618, 16619, 16621, 16625, 16627, 16631, 16633, 16634, + 16635, 16636, 16637, 16638, 16639, 16640, 16641, 16642, 16644, 16646, 16647, + 16648, 16650, 16652, 16654, 16656, 16658, 16660, 16661, 16662, 16663, 16665, + 16667, 16669, 16671, 16673, 16675, 16677, 16679, 16681, 16683, 16685, 16687, + 16689, 16691, 16693, 16695, 16697, 16699, 16701, 16703, 16705, 16707, 16709, + 16711, 16713, 16715, 16717, 16719, 16721, 16722, 16723, 16725, 16729, 16730, + 16731, 16735, 16737, 16739, 16741, 16743, 16745, 16747, 16748, 16749, 16750, + 16752, 16754, 16756, 16758, 16760, 16762, 16764, 16768, 16770, 16772, 16776, + 16777, 16778, 16781, 16783, 16785, 16794, 16795, 16797, 16799, 16801, 16803, + 16805, 16807, 16808, 16809, 16811, 16813, 16815, 16817, 16819, 16821, 16823, + 16827, 16829, 16831, 16833, 16837, 16841, 16845, 16847, 16849, 16851, 16855, + 16857, 16859, 16861, 16863, 16865, 16867, 16891, 16899, 16901, 16903, 16905, + 16907, 16909, 16911, 16913, 16915, 16917, 16919, 16921, 16923, 16927, 16929, + 16933, 16937, 16939, 16943, 16945, 16947, 16977, 16978, 16980, 16982, 16984, + 16986, 16987, 16988, 16989, 16990, 16992, 16994, 16996, 16998, 16999, 17000, + 17001, 17002, 17003, 17004, 17006, 17008, 17010, 17012, 17013, 17014, 17015, + 17016, 17017, 17019, 17021, 17023, 17025, 17026, 17027, 17028, 17029, 17031, + 17033, 17035, 17037, 17038, 17039, 17040, 17041, 17042, 17043, 17045, 17047, + 17049, 17051, 17052, 17053, 17054, 17055, 17056, 17058, 17060, 17062, 17064, + 17065, 17066, 17067, 17068, 17069, 17071, 17073, 17075, 17077, 17079, 17081, + 17083, 17085, 17087, 17089, 17091, 17093, 17095, 17097, 17098, 17099, 17100, + 17101, 17103, 17105, 17107, 17109, 17110, 17111, 17112, 17113, 17114, 17115, + 17117, 17119, 17121, 17123, 17125, 17127, 17129, 17132, 17133, 17135, 17137, + 17139, 17141, 17142, 17143, 17144, 17146, 17148, 17150, 17152, 17154, 17156, + 17157, 17158, 17159, 17161, 17163, 17165, 17167, 17169, 17171, 17173, 17175, + 17177, 17179, 17181, 17183, 17185, 17189, 17191, 17195, 17199, 17201, 17205, + 17207, 17209, 17214, 17217, 17251, 17253, 17255, 17257, 17259, 17261, 17263, + 17265, 17267, 17269, 17271, 17273, 17275, 17276, 17278, 17280, 17282, 17284, + 17285, 17286, 17287, 17288, 17290, 17292, 17294, 17296, 17297, 17298, 17299, + 17300, 17301, 17302, 17304, 17306, 17308, 17310, 17311, 17312, 17313, 17314, + 17315, 17317, 17319, 17321, 17323, 17324, 17325, 17326, 17327, 17329, 17331, + 17333, 17335, 17336, 17337, 17338, 17339, 17340, 17341, 17343, 17345, 17347, + 17349, 17350, 17351, 17352, 17353, 17354, 17356, 17358, 17360, 17362, 17363, + 17364, 17365, 17366, 17367, 17369, 17371, 17373, 17375, 17377, 17379, 17381, + 17383, 17385, 17387, 17389, 17391, 17393, 17395, 17396, 17397, 17398, 17399, + 17401, 17403, 17405, 17407, 17408, 17409, 17410, 17411, 17412, 17413, 17415, + 17417, 17419, 17421, 17423, 17424, 17425, 17426, 17427, 17429, 17431, 17433, + 17435, 17436, 17437, 17438, 17439, 17441, 17443, 17445, 17447, 17449, 17455, + 17457, 17461, 17463, 17467, 17473, 17475, 17478, 17481, 17487, 17489, 17493, + 17495, 17499, 17501, 17534, 17536, 17539, 17542, 17545, 17547, 17548, 17549, + 17550, 17553, 17554, 17555, 17556, 17557, 17560, 17561, 17564, 17567, 17570, + 17573, 17576, 17588, 17592, 17594, 17596, 17598, 17600, 17602, 17604, 17606, + 17608, 17609, 17611, 17613, 17615, 17616, 17618, 17620, 17622, 17624, 17626, + 17628, 17629, 17631, 17633, 17635, 17637, 17639, 17641, 17642, 17644, 17646, + 17648, 17650, 17651, 17653, 17655, 17657, 17659, 17660, 17662, 17664, 17666, + 17668, 17670, 17671, 17673, 17675, 17677, 17678, 17680, 17682, 17684, 17686, + 17688, 17690, 17691, 17693, 17695, 17697, 17699, 17701, 17703, 17704, 17706, + 17708, 17710, 17712, 17713, 17715, 17717, 17719, 17721, 17722, 17724, 17726, + 17728, 17730, 17732, 17734, 17736, 17739, 17742, 17745, 17748, 17752, 17753, + 17756, 17761, 17771, 17775, 17779, 17789, 17799, 17806, 17808, 17812, 17817, + 17820, 17830, 17831, 17832, 17841, 17843, 17846, 17849, 17855, 17864, 17865, + 17867, 17869, 17871, 17872, 17878, 17881, 17891, 17893, 17895, 17901, 17905, + 17908, 17911, 17912, 17916, 17919, 17928, 17930, 17933, 17935, 17936, 17938, + 17943, 17945, 17947, 17948, 17949, 17950, 17951, 17952, 17958, 17963, 17969, + 17976, 17977, 17978, 17979, 17980, 17984, 17986, 17987, 17988, 17989, 17991, + 17992, 17993, 17995, 17998, 17999, 18003, 18005, 18010, 18011, 18012, 18013, + 18015, 18019, 18020, 18021, 18022, 18023, 18024, 18026, 18027, 18031, 18032, + 18033, 18034, 18035, 18036, 18037, 18041, 18042, 18043, 18044, 18045, 18047, + 18050, 18055, 18064, 18070, 18075, 18077, 18078, 18080, 18082, 18086, 18087, + 18089, 18095, 18101, 18110, 18118, 18124, 18128, 18136, 18143, 18146, 18148, + 18153, 18156, 18160, 18164, 18169, 18179, 18180, 18183, 18184, 18186, 18187, + 18190, 18195, 18198, 18199, 18201, 18203, 18204, 18206, 18208, 18210, 18212, + 18214, 18216, 18218, 18223, 18225, 18227, 18229, 18230, 18231, 18233, 18235, + 18237, 18239, 18241, 18242, 18243, 18245, 18247, 18249, 18250, 18253, 18256, + 18258, 18260, 18262, 18263, 18265, 18274, 18275, 18276, 18279, 18282, 18288, + 18291, 18292, 18298, 18300, 18302, 18304, 18306, 18308, 18310, 18312, 18314, + 18316, 18318, 18320, 18322, 18324, 18326, 18328, 18330, 18332, 18334, 18335, + 18337, 18339, 18341, 18343, 18345, 18347, 18349, 18351, 18357, 18359, 18362, + 18364, 18366, 18368, 18370, 18372, 18374, 18376, 18378, 18380, 18382, 18384, + 18386, 18388, 18390, 18392, 18394, 18396, 18398, 18400, 18402, 18404, 18406, + 18408, 18417, 18419, 18421, 18423, 18425, 18427, 18429, 18431, 18433, 18435, + 18437, 18439, 18441, 18443, 18445, 18447, 18449, 18451, 18453, 18466, 18468, + 18470, 18472, 18474, 18476, 18477, 18479, 18483, 18485, 18489, 18491, 18492, + 18494, 18496, 18498, 18500, 18502, 18504, 18506, 18508, 18509, 18511, 18513, + 18515, 18517, 18519, 18521, 18523, 18525, 18527, 18529, 18531, 18533, 18535, + 18537, 18539, 18541, 18543, 18545, 18547, 18549, 18551, 18553, 18555, 18557, + 18559, 18561, 18563, 18565, 18567, 18568, 18569, 18571, 18575, 18576, 18580, + 18582, 18584, 18586, 18588, 18590, 18592, 18594, 18596, 18598, 18600, 18602, + 18604, 18606, 18610, 18612, 18614, 18618, 18619, 18620, 18623, 18625, 18627, + 18629, 18631, 18633, 18635, 18637, 18638, 18640, 18642, 18644, 18646, 18648, + 18650, 18652, 18656, 18658, 18660, 18662, 18666, 18670, 18674, 18676, 18678, + 18680, 18684, 18686, 18688, 18690, 18692, 18694, 18696, 18720, 18722, 18732, + 18735, 18736, 18737, 18738, 18739, 18740, 18742, 18744, 18746, 18751, 18752, + 18755, 18756, 18757, 18759, 18762, 18765, 18766, 18767, 18769, 18770, 18773, + 18774, 18775, 18776, 18777, 18780, 18781, 18786, 18795, 18801, 18806, 18808, + 18809, 18811, 18817, 18823, 18832, 18840, 18846, 18849, 18857, 18864, 18867, + 18868, 18870, 18872, 18876, 18878, 18880, 18882, 18883, 18889, 18892, 18902, + 18904, 18906, 18912, 18922, 18926, 18929, 18932, 18936, 18938, 18947, 18949, + 18952, 18954, 18959, 18961, 18963, 18967, 18972, 18978, 18985, 18986, 18987, + 18989, 18992, 18993, 18997, 18998, 19003, 19004, 19005, 19006, 19008, 19012, + 19013, 19014, 19016, 19017, 19020, 19021, 19022, 19023, 19024, 19025, 19028, + 19029, 19032, 19034, 19035, 19039, 19041, 19045, 19053, 19054, 19055, 19057, + 19058, 19059, 19060, 19061, 19062, 19063, 19065, 19066, 19067, 19068, 19069, + 19070, 19071, 19072, 19073, 19074, 19075, 19076, 19077, 19078, 19079, 19080, + 19081, 19082, 19083, 19084, 19088, 19089, 19090, 19092, 19093, 19094, 19096, + 19099, 19105, 19111, 19114, 19117, 19120, 19122, 19125, 19138, 19151, 19153, + 19154, 19155, 19158, 19161, 19164, 19165, 19166, 19167, 19168, 19169, 19170, + 19172, 19174, 19176, 19178, 19180, 19181, 19182, 19183, 19184, 19185, 19187, + 19189, 19191, 19193, 19195, 19197, 19199, 19201, 19203, 19204, 19205, 19206, + 19207, 19208, 19210, 19212, 19214, 19216, 19218, 19220, 19223, 19226, 19227, + 19228, 19230, 19232, 19234, 19236, 19238, 19239, 19241, 19243, 19245, 19247, + 19249, 19251, 19253, 19255, 19257, 19258, 19260, 19262, 19264, 19266, 19268, + 19270, 19273, 19276, 19278, 19282, 19291, 19292, 19293, 19294, 19295, 19296, + 19298, 19299, 19300, 19301, 19302, 19303, 19305, 19307, 19309, 19311, 19314, + 19315, 19316, 19317, 19318, 19319, 19320, 19321, 19322, 19323, 19324, 19325, + 19326, 19327, 19328, 19329, 19330, 19331, 19332, 19333, 19334, 19335, 19336, + 19337, 19338, 19339, 19340, 19341, 19342, 19343, 19344, 19345, 19346, 19347, + 19348, 19349, 19350, 19351, 19353, 19355, 19357, 19359, 19361, 19363, 19365, + 19367, 19370, 19379, 19380, 19381, 19382, 19383, 19384, 19387, 19390, 19391, + 19392, 19393, 19395, 19399, 19402, 19405, 19407, 19410, 19413, 19414, 19416, + 19418, 19420, 19421, 19422, 19423, 19424, 19425, 19427, 19428, 19429, 19430, + 19431, 19432, 19433, 19434, 19435, 19436, 19439, 19440, 19444, 19449, 19450, + 19451, 19453, 19455, 19461, 19463, 19465, 19467, 19469, 19471, 19473, 19475, + 19477, 19479, 19481, 19484, 19485, 19488, 19490, 19492, 19494, 19496, 19498, + 19499, 19500, 19501, 19502, 19503, 19505, 19507, 19509, 19511, 19513, 19515, + 19517, 19519, 19521, 19523, 19525, 19527, 19529, 19530, 19531, 19532, 19533, + 19534, 19536, 19538, 19540, 19542, 19544, 19546, 19548, 19550, 19552, 19554, + 19556, 19559, 19562, 19563, 19564, 19566, 19568, 19569, 19571, 19573, 19575, + 19577, 19578, 19581, 19583, 19586, 19589, 19592, 19595, 19598, 19604, 19611, + 19614, 19617, 19623, 19630, 19631, 19632, 19635, 19639, 19642, 19644, 19647, + 19649, 19650, 19652, 19654, 19656, 19658, 19660, 19662, 19664, 19666, 19668, + 19670, 19677, 19678, 19679, 19680, 19681, 19682, 19683, 19684, 19685, 19686, + 19687, 19688, 19689, 19690, 19691, 19692, 19693, 19694, 19695, 19696, 19697, + 19698, 19699, 19700, 19701, 19702, 19703, 19704, 19705, 19706, 19707, 19708, + 19709, 19710, 19711, 19712, 19713, 19714, 19715, 19716, 19717, 19718, 19719, + 19720, 19721, 19722, 19723, 19724, 19725, 19726, 19727, 19728, 19729, 19730, + 19731, 19732, 19733, 19734, 19735, 19736, 19737, 19738, 19739, 19740, 19741, + 19742, 19743, 19744, 19745, 19746, 19747, 19748, 19749, 19750, 19751, 19752, + 19753, 19754, 19756, 19758, 19760, 19769, 19772, 19775, 19778, 19781, 19784, + 19787, 19795, 19801, 19809, 19813, 19818, 19830, 19833, 19840, 19842, 19848, + 19863, 19871, 19883, 19885, 19891, 19893, 19895, 19901, 19903, 19905, 19912, + 19916, 19918, 19928, 19934, 19938, 19948, 19958, 19960, 19968, 19970, 19971, + 20010, 20011, 20012, 20013, 20014, 20015, 20016, 20017, 20018, 20019, 20020 +}; + +static t_ccsid final_array[] = { + 0, 62246, 368, 916, 898, 33723, 905, 870, 867, 866, 864, 863, 862, 861, 858, + 856, 853, 852, 851, 438, 1387, 5355, 9450, 9449, 9448, 5351, 5350, 5349, + 5348, 5347, 1209, 1236, 1234, 1204, 1202, 13489, 875, 944, 1052, 859, 921, + 915, 914, 913, 820, 924, 1364, 879, 917, 814, 1090, 1251, 922, 1253, 5479, + 971, 1048, 1376, 1150, 1149, 1148, 1147, 1146, 1145, 1144, 1143, 1142, 1141, + 925, 776, 1027, 919, 906, 904, 892, 881, 872, 871, 869, 865, 501, 425, 424, + 421, 298, 291, 286, 285, 281, 279, 278, 274, 38, 1384, 839, 1277, 62236, + 62225, 62212, 61953, 57346, 28710, 25547, 17355, 13122, 13125, 12709, 9067, + 9057, 9031, 8613, 5124, 5051, 5053, 5054, 5055, 5056, 5036, 5027, 4972, 4961, + 4966, 4952, 4953, 4954, 4949, 4397, 1393, 1400, 1381, 1382, 1389, 1374, 1365, + 1281, 1282, 1283, 1284, 1276, 1252, 1254, 1255, 1256, 1257, 1258, 1259, 1161, + 1165, 1154, 1155, 1156, 1157, 1158, 1159, 1131, 1133, 1134, 1138, 1123, 1124, + 1130, 1113, 1115, 1116, 1098, 1099, 1089, 1041, 1042, 1043, 1044, 1047, 1026, + 1028, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1009, 1010, + 965, 966, 951, 952, 957, 958, 959, 960, 943, 945, 947, 948, 950, 931, 933, + 934, 935, 936, 937, 938, 939, 940, 923, 927, 928, 929, 897, 876, 834, 836, + 837, 838, 738, 721, 301, 302, 257, 1, 898, 916, 368, 368, 62246 +}; + +static t_staterange goto_array[] = { + 13445, 11977, 13446, 12066, 11793, 13448, 13449, 13450, 13451, 13453, 13454, + 13455, 13456, 13457, 13473, 13458, 13459, 13460, 13466, 13461, 13462, 13468, + 11793, 13447, 13449, 13450, 13451, 11793, 13448, 13449, 13450, 13451, 13452, + 13453, 13454, 13455, 13456, 13457, 13473, 13458, 13459, 13460, 13466, 13461, + 13462, 13468, 11735, 13469, 13470, 13463, 13464, 13473, 13465, 13474, 13475, + 13476, 13477, 13478, 13479, 13480, 13481, 13466, 13482, 13467, 13483, 13468, + 13485, 11735, 13469, 13470, 13471, 13472, 13473, 13474, 13475, 13476, 13477, + 13478, 13479, 13480, 13481, 13482, 13483, 13484, 13485, 11147, 13486, 11230, + 13487, 13488, 13426, 13419, 13420, 13496, 13423, 13498, 19, 229, 230, 231, + 232, 18, 17, 16, 15, 14, 238, 237, 236, 235, 234, 239, 240, 241, 242, 243, + 13, 12, 11, 10, 9, 8, 7, 251, 250, 249, 248, 247, 246, 245, 252, 253, 254, + 255, 256, 257, 258, 259, 244, 261, 260, 6, 263, 264, 265, 266, 95, 268, 269, + 269, 270, 271, 271, 272, 273, 273, 274, 275, 275, 276, 277, 277, 278, 279, + 279, 280, 281, 281, 282, 283, 283, 284, 285, 286, 287, 287, 288, 289, 289, + 290, 291, 291, 292, 293, 293, 294, 295, 295, 296, 297, 297, 298, 299, 299, + 300, 301, 301, 302, 303, 304, 305, 305, 306, 307, 307, 308, 309, 309, 227, + 311, 13494, 2, 314, 315, 316, 313, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 332, 333, 334, 335, 336, 336, 337, + 338, 338, 50, 340, 341, 341, 342, 343, 343, 344, 345, 345, 346, 347, 347, + 315, 315, 349, 350, 350, 341, 352, 353, 354, 355, 356, 357, 358, 359, 359, + 360, 351, 362, 362, 361, 361, 363, 348, 339, 310, 365, 365, 364, 366, 367, + 364, 366, 367, 57, 369, 370, 370, 371, 372, 372, 373, 374, 374, 375, 376, + 376, 377, 378, 378, 379, 380, 381, 382, 383, 384, 384, 385, 386, 386, 39, + 388, 389, 390, 391, 68, 393, 394, 395, 396, 397, 392, 398, 399, 67, 66, 65, + 64, 63, 62, 61, 60, 59, 58, 410, 409, 408, 407, 406, 405, 404, 403, 402, + 401, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 400, 426, 427, 428, 429, 430, 431, 431, 432, 433, 433, 434, 435, 435, + 54, 437, 438, 438, 439, 440, 440, 441, 442, 442, 443, 444, 444, 445, 446, + 446, 78, 448, 449, 449, 252, 252, 257, 257, 452, 451, 450, 453, 454, 455, + 453, 454, 455, 92, 457, 458, 459, 460, 426, 427, 70, 462, 463, 464, 465, + 466, 467, 91, 89, 470, 469, 471, 472, 88, 87, 86, 476, 475, 474, 477, 478, + 479, 85, 84, 482, 481, 483, 484, 485, 480, 473, 486, 487, 488, 315, 490, + 491, 83, 82, 81, 495, 494, 493, 496, 497, 498, 499, 232, 500, 80, 502, 503, + 504, 505, 69, 507, 508, 509, 510, 44, 512, 513, 79, 515, 252, 449, 253, 254, + 516, 255, 256, 257, 258, 77, 76, 519, 518, 520, 521, 75, 523, 524, 74, 526, + 527, 528, 525, 522, 517, 514, 529, 530, 531, 532, 261, 533, 73, 72, 536, + 535, 537, 264, 538, 71, 540, 541, 20, 543, 544, 545, 542, 539, 546, 547, + 548, 549, 534, 511, 506, 501, 492, 489, 468, 461, 456, 551, 552, 553, 554, + 555, 558, 550, 556, 557, 559, 285, 285, 561, 562, 562, 563, 564, 564, 565, + 566, 566, 567, 568, 568, 569, 570, 570, 571, 572, 572, 573, 574, 574, 575, + 576, 576, 577, 578, 578, 579, 580, 580, 362, 362, 582, 581, 583, 583, 584, + 584, 380, 586, 587, 587, 588, 589, 589, 55, 591, 592, 592, 5, 594, 595, 595, + 596, 597, 597, 598, 599, 599, 600, 601, 601, 602, 603, 603, 604, 605, 605, + 606, 607, 607, 608, 609, 609, 610, 611, 611, 612, 613, 613, 614, 615, 615, + 616, 617, 617, 618, 619, 619, 36, 621, 622, 622, 623, 620, 593, 624, 624, + 626, 626, 625, 625, 627, 628, 628, 629, 630, 630, 93, 632, 633, 634, 635, + 636, 637, 638, 544, 544, 639, 640, 641, 641, 224, 643, 644, 644, 645, 646, + 646, 647, 648, 648, 649, 650, 650, 651, 652, 652, 653, 654, 654, 655, 656, + 656, 657, 658, 658, 659, 660, 660, 661, 662, 662, 663, 664, 664, 665, 666, + 666, 667, 668, 668, 669, 670, 670, 671, 672, 672, 38, 674, 675, 676, 677, + 677, 678, 679, 679, 680, 681, 681, 682, 683, 683, 684, 685, 685, 686, 673, + 687, 687, 688, 688, 267, 690, 691, 692, 692, 56, 694, 695, 696, 697, 465, + 698, 699, 90, 701, 471, 702, 472, 703, 486, 487, 704, 500, 239, 240, 242, + 252, 253, 254, 255, 257, 258, 449, 516, 708, 707, 529, 530, 531, 709, 710, + 537, 538, 712, 547, 713, 94, 715, 716, 716, 717, 718, 718, 719, 720, 720, + 721, 714, 711, 706, 705, 700, 553, 558, 722, 722, 726, 727, 723, 724, 725, + 728, 693, 729, 730, 729, 730, 438, 732, 733, 734, 735, 736, 737, 738, 739, + 740, 741, 742, 743, 743, 744, 745, 745, 746, 747, 52, 45, 750, 749, 751, + 752, 753, 754, 755, 756, 757, 758, 759, 760, 43, 42, 41, 40, 365, 365, 225, + 767, 768, 768, 769, 770, 770, 771, 772, 772, 773, 774, 774, 775, 776, 776, + 777, 778, 778, 779, 780, 780, 49, 782, 783, 783, 784, 785, 785, 786, 787, + 787, 788, 789, 789, 48, 791, 792, 792, 793, 794, 794, 795, 796, 796, 797, + 798, 798, 799, 800, 800, 801, 790, 781, 766, 765, 764, 763, 762, 513, 806, + 807, 808, 809, 802, 803, 804, 805, 802, 803, 804, 805, 810, 811, 811, 812, + 813, 813, 814, 815, 815, 816, 817, 817, 818, 761, 748, 819, 819, 820, 821, + 822, 823, 823, 824, 731, 825, 826, 825, 826, 47, 828, 829, 829, 830, 831, + 832, 833, 833, 46, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, + 846, 847, 848, 849, 850, 851, 852, 852, 853, 834, 854, 855, 854, 855, 508, + 508, 857, 858, 858, 859, 860, 860, 861, 862, 862, 863, 864, 864, 865, 866, + 866, 867, 868, 869, 870, 243, 243, 872, 873, 873, 874, 875, 875, 876, 877, + 877, 878, 879, 879, 880, 881, 881, 882, 883, 883, 884, 885, 885, 886, 887, + 887, 888, 889, 889, 890, 891, 891, 892, 893, 893, 894, 895, 256, 256, 897, + 898, 898, 899, 900, 900, 901, 902, 902, 903, 904, 904, 905, 906, 906, 907, + 908, 908, 909, 910, 910, 911, 912, 912, 913, 914, 914, 915, 916, 916, 917, + 918, 233, 920, 921, 922, 922, 923, 924, 924, 925, 926, 926, 927, 928, 928, + 929, 930, 930, 931, 932, 932, 933, 934, 934, 935, 919, 896, 936, 936, 937, + 938, 241, 940, 941, 942, 943, 944, 939, 871, 945, 945, 946, 947, 948, 949, + 949, 37, 951, 952, 952, 953, 954, 954, 955, 956, 956, 957, 958, 958, 959, + 960, 960, 961, 962, 962, 963, 964, 964, 622, 966, 967, 968, 969, 970, 971, + 971, 972, 973, 973, 35, 975, 976, 976, 977, 978, 978, 979, 980, 980, 981, + 982, 982, 983, 984, 984, 34, 986, 987, 987, 33, 989, 990, 990, 991, 988, + 992, 992, 993, 993, 994, 995, 32, 997, 998, 998, 31, 1000, 1001, 1001, 1002, + 999, 1003, 1003, 1004, 1004, 1005, 1006, 30, 1008, 1007, 996, 1009, 1010, + 1011, 1012, 1013, 1013, 1014, 985, 1015, 1016, 1015, 1016, 29, 28, 27, 26, + 25, 24, 23, 22, 21, 1026, 1025, 1024, 1023, 1022, 1021, 1020, 1019, 1018, + 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, + 53, 51, 1042, 1041, 1043, 1044, 1045, 1046, 1046, 1047, 1048, 1048, 1049, + 1050, 1050, 1051, 1052, 1052, 1053, 1054, 1054, 1055, 1056, 1057, 1040, 1059, + 1058, 1060, 1061, 1061, 1062, 1063, 1063, 1064, 1065, 1065, 1066, 1067, 1067, + 1068, 1069, 1069, 1070, 1071, 1071, 1072, 1017, 974, 965, 950, 856, 827, + 689, 642, 631, 590, 585, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, + 1081, 1082, 1083, 1084, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, + 1082, 1083, 1084, 3, 1086, 1087, 1087, 1088, 1089, 1089, 1090, 1091, 1091, + 1092, 1093, 1093, 1094, 1095, 1095, 1096, 1097, 1097, 1098, 1085, 560, 447, + 436, 1099, 1100, 1101, 1102, 1103, 1099, 1100, 1101, 1102, 1103, 498, 541, + 1105, 1106, 1106, 503, 503, 458, 458, 503, 503, 702, 702, 478, 478, 471, + 471, 483, 483, 477, 477, 497, 497, 496, 496, 479, 479, 520, 520, 458, 458, + 702, 702, 521, 521, 1117, 1118, 1118, 1119, 1120, 1120, 1121, 1122, 1122, + 471, 471, 537, 537, 458, 458, 458, 458, 521, 521, 1128, 1127, 1126, 1125, + 1124, 1123, 1116, 1115, 1114, 1113, 1112, 1111, 1110, 1109, 1108, 1107, 1129, + 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, + 1143, 1144, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, + 1140, 1141, 1142, 1143, 1144, 1145, 1146, 524, 524, 1148, 1149, 1149, 1150, + 1151, 1151, 1152, 1153, 1153, 1154, 1155, 1155, 1156, 1157, 1157, 1158, 1147, + 1159, 1160, 1159, 1160, 419, 419, 1162, 1163, 1163, 1164, 1165, 1165, 1166, + 1167, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 418, + 418, 1179, 1180, 1180, 1181, 1182, 1182, 1183, 1184, 1184, 1185, 1186, 1187, + 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1178, 1196, 1196, 1197, 1197, + 415, 415, 1199, 1200, 1200, 1201, 1202, 1202, 1203, 1204, 1204, 1205, 1206, + 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1216, 417, 417, + 1218, 1219, 1219, 1220, 1221, 1221, 1222, 1223, 1223, 1224, 1225, 1226, 1227, + 1228, 1229, 1230, 1231, 1232, 1233, 413, 413, 1235, 1236, 1236, 1237, 1238, + 1238, 1239, 1240, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, + 1250, 1251, 1234, 1253, 1253, 1252, 1252, 414, 414, 1255, 1256, 1256, 1257, + 1258, 1258, 1259, 1260, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, + 1269, 1270, 1271, 1272, 1272, 412, 412, 1274, 1275, 1275, 1276, 1277, 1277, + 1278, 1279, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, + 1290, 1291, 1291, 1292, 1293, 1293, 1294, 1295, 1295, 1296, 1297, 1297, 1298, + 1299, 1299, 1300, 1301, 1301, 1302, 1303, 1303, 1304, 1305, 1305, 1306, 1307, + 1307, 1308, 1309, 1309, 1310, 1311, 1311, 411, 411, 1313, 1314, 1314, 1315, + 1316, 1316, 1317, 1318, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, + 1327, 1328, 416, 416, 1330, 1331, 1331, 1332, 1333, 1333, 1334, 1335, 1335, + 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1329, 1312, + 1347, 1348, 1349, 1347, 1348, 1349, 484, 484, 1351, 1352, 1352, 1353, 1354, + 1354, 1355, 1356, 1356, 1357, 1358, 1359, 1360, 1360, 394, 394, 1362, 1363, + 1363, 1364, 1365, 1365, 1366, 1367, 1367, 1368, 1369, 1370, 1371, 1372, 1373, + 1374, 1375, 1375, 1376, 1377, 1377, 1378, 1379, 1379, 1380, 1381, 1381, 1196, + 1196, 1253, 1253, 420, 420, 1385, 1386, 1386, 1387, 1388, 1388, 1389, 1390, + 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1400, 1401, + 1384, 1383, 1382, 1361, 1350, 1273, 1254, 1217, 1198, 1161, 1402, 1403, 1404, + 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1402, 1403, 1404, 1405, 1406, + 1407, 1408, 1409, 1410, 1411, 1412, 1413, 92, 1414, 1415, 1416, 1416, 1417, + 1418, 1418, 1419, 1420, 1420, 1421, 1422, 1422, 341, 783, 1424, 1425, 1426, + 1427, 1428, 1429, 1430, 1431, 1431, 1432, 1433, 1433, 783, 1435, 1436, 1437, + 1438, 1439, 1440, 1441, 1442, 1442, 1443, 1444, 1444, 633, 633, 595, 595, + 622, 1448, 1449, 1449, 1450, 1447, 1446, 1451, 626, 1452, 1453, 1451, 626, + 1452, 1453, 1454, 624, 624, 1455, 1456, 1457, 1457, 611, 1459, 1460, 1460, + 1461, 1462, 1462, 1463, 1464, 1464, 1465, 1466, 1467, 1468, 1468, 1469, 1470, + 1470, 1471, 1472, 1472, 1473, 1474, 1474, 1475, 1476, 1476, 1477, 1478, 1478, + 1479, 1480, 1481, 1482, 1482, 1483, 1484, 1484, 1485, 1486, 1486, 1487, 1488, + 1488, 1489, 1490, 1490, 1491, 1492, 1492, 1493, 1494, 1495, 1496, 1496, 1497, + 1498, 1498, 1499, 1500, 1500, 1501, 1502, 1502, 1503, 1504, 1505, 1506, 1506, + 1507, 1508, 1508, 1509, 1510, 1510, 1511, 1512, 1512, 1513, 1514, 1515, 1516, + 1516, 1517, 1518, 1518, 1519, 1520, 1520, 1521, 1522, 1522, 1523, 1524, 1524, + 1525, 1526, 1526, 1527, 1458, 1445, 1434, 1423, 1528, 1529, 1530, 1531, 1532, + 1528, 1529, 1530, 1531, 1532, 735, 1534, 1535, 1536, 1537, 1538, 1539, 1540, + 1541, 1542, 544, 544, 1543, 639, 49, 783, 1545, 1546, 1546, 1547, 1548, 1548, + 1549, 1550, 1550, 1551, 1544, 1552, 1553, 1552, 1553, 687, 1555, 1556, 800, + 1556, 800, 976, 987, 990, 998, 1001, 1559, 1558, 49, 752, 1009, 1560, 1561, + 48, 544, 751, 4, 1564, 1563, 1562, 595, 806, 952, 1565, 1566, 1567, 243, + 269, 675, 1043, 1044, 230, 241, 256, 716, 458, 633, 471, 472, 477, 478, 479, + 484, 702, 239, 240, 242, 257, 258, 483, 496, 497, 498, 503, 252, 254, 255, + 449, 516, 520, 521, 524, 527, 538, 264, 463, 537, 541, 253, 389, 508, 829, + 394, 412, 413, 414, 415, 416, 417, 418, 419, 420, 1577, 1576, 1575, 1574, + 1573, 1572, 1571, 1570, 1569, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, + 1586, 370, 411, 695, 1588, 1589, 622, 1027, 1028, 1029, 1030, 1031, 1032, + 1033, 1034, 1035, 1591, 1592, 1593, 1590, 1587, 1594, 1595, 1596, 2, 592, + 836, 43, 438, 1599, 1598, 1597, 1568, 341, 513, 807, 808, 1087, 1600, 1601, + 1602, 1603, 1604, 1605, 1606, 1607, 1607, 1608, 1609, 1609, 223, 184, 185, + 1613, 1612, 1614, 1615, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 1626, 1625, 1624, 1623, 1622, 1621, 1620, 1619, 1618, 1617, 1627, 1628, 1629, + 1630, 1631, 1632, 1633, 1634, 1635, 1636, 172, 173, 1639, 1638, 463, 1640, + 1641, 167, 168, 169, 170, 171, 1647, 1646, 1645, 1644, 1643, 695, 1648, 1649, + 1650, 1651, 1652, 675, 166, 1655, 341, 1656, 164, 165, 1659, 1658, 1660, + 1661, 1662, 1657, 1654, 1653, 1642, 1637, 1616, 1663, 1664, 1665, 1666, 1667, + 1668, 1669, 161, 162, 163, 1673, 1672, 1671, 1674, 1675, 1676, 158, 159, + 160, 1680, 1679, 1678, 1681, 1682, 1683, 154, 155, 156, 157, 1688, 1687, + 1686, 1685, 1689, 1690, 1691, 1692, 148, 149, 150, 151, 152, 153, 1699, 1698, + 1697, 1696, 1695, 1694, 1700, 1701, 1702, 1703, 1704, 1705, 146, 147, 1708, + 1707, 1709, 1710, 1711, 1706, 1693, 1684, 1677, 422, 1712, 1713, 1714, 1715, + 1716, 987, 990, 1009, 998, 1001, 139, 140, 141, 142, 143, 144, 145, 1726, + 1725, 1724, 1723, 1722, 1721, 1720, 1043, 1044, 1727, 1728, 1729, 1730, 1731, + 1732, 1733, 106, 1735, 1736, 138, 1738, 1737, 269, 1739, 1740, 134, 135, + 136, 137, 1745, 1744, 1743, 1742, 1746, 1747, 1748, 1749, 1750, 1741, 1734, + 1719, 1718, 1751, 1752, 1753, 1754, 1755, 104, 105, 1758, 1757, 1759, 1760, + 1761, 1762, 976, 1764, 1765, 133, 1767, 836, 1768, 132, 1770, 370, 1771, + 129, 130, 131, 1775, 1774, 1773, 544, 1776, 633, 1777, 1778, 127, 128, 1781, + 1780, 1782, 1783, 1784, 1779, 1772, 1769, 1766, 1763, 1785, 1786, 1787, 1788, + 1789, 1790, 103, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1791, 1756, 1717, + 1670, 1799, 1800, 1801, 1802, 1803, 102, 1805, 1806, 1807, 1808, 222, 1810, + 1809, 1811, 1812, 101, 1814, 1815, 1816, 1817, 1818, 477, 478, 479, 1819, + 1820, 1813, 486, 704, 1821, 1822, 220, 221, 1825, 1824, 1826, 1827, 595, + 1829, 1830, 1831, 1832, 1833, 1828, 458, 491, 1834, 1835, 126, 1837, 1838, + 1839, 230, 1840, 125, 1842, 1843, 122, 123, 124, 1847, 1846, 1845, 1848, + 1849, 1850, 120, 121, 1853, 1852, 1854, 1855, 119, 1857, 1858, 1859, 1856, + 1851, 1844, 1860, 1861, 1862, 1863, 1864, 1841, 500, 1865, 1866, 118, 1868, + 1869, 117, 1871, 1872, 112, 113, 114, 115, 116, 1878, 1877, 1876, 1875, 1874, + 1879, 1880, 1881, 1882, 1883, 1884, 1873, 1870, 503, 1885, 1886, 1887, 111, + 1889, 1890, 1891, 1892, 1032, 1033, 1034, 1035, 1027, 1031, 1895, 1894, 1896, + 1897, 438, 1899, 1900, 100, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1901, + 1898, 1893, 1888, 1909, 1910, 1911, 1912, 1913, 99, 1915, 1916, 1917, 1918, + 1919, 1920, 98, 1922, 1923, 97, 1925, 1926, 96, 1928, 1929, 228, 1931, 1932, + 1933, 1930, 1927, 1924, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1921, 1941, + 1942, 219, 1944, 1945, 218, 1947, 1948, 1949, 1946, 510, 1950, 1951, 513, + 783, 214, 215, 216, 217, 1957, 1956, 1955, 1954, 716, 1958, 1959, 1960, 1961, + 239, 240, 241, 242, 243, 389, 110, 1964, 12, 1965, 1966, 252, 253, 254, 255, + 256, 258, 449, 516, 1967, 213, 1969, 520, 521, 622, 829, 1970, 212, 1972, + 527, 1565, 1973, 1974, 1971, 1968, 1963, 1962, 1953, 530, 1975, 1976, 1977, + 1978, 1979, 1980, 109, 1982, 73, 1983, 108, 1985, 72, 1986, 107, 1988, 1989, + 1990, 1987, 1984, 264, 1991, 1992, 1993, 541, 792, 807, 808, 809, 1087, 208, + 209, 210, 211, 1999, 1998, 1997, 1996, 394, 751, 752, 806, 2000, 2001, 2002, + 2003, 199, 200, 201, 202, 203, 204, 205, 206, 207, 2013, 2012, 2011, 2010, + 2009, 2008, 2007, 2006, 2005, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, + 2022, 194, 1028, 1029, 1030, 195, 196, 197, 198, 2028, 2027, 2026, 2025, + 2024, 952, 2029, 2030, 2031, 2032, 2033, 188, 189, 190, 191, 192, 193, 2040, + 2039, 2038, 2037, 2036, 2035, 2041, 2042, 2043, 2044, 2045, 2046, 186, 187, + 2049, 2048, 2050, 2051, 592, 2053, 2052, 2047, 2034, 2023, 2004, 1995, 1994, + 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 1981, 1952, 1943, 1914, + 1867, 1836, 1823, 1804, 1611, 722, 722, 2063, 2064, 2065, 2066, 2067, 2068, + 2069, 2070, 2071, 2072, 547, 548, 223, 92, 2076, 2075, 2077, 2078, 222, 89, + 90, 91, 86, 87, 88, 84, 85, 2083, 2082, 2081, 2080, 2084, 2085, 2086, 2087, + 220, 221, 2, 2090, 2089, 2091, 2092, 81, 82, 83, 19, 2095, 2094, 2096, 2097, + 80, 2099, 2100, 219, 218, 69, 2104, 2103, 2102, 2105, 2106, 2107, 44, 49, + 94, 214, 215, 216, 217, 14, 15, 16, 17, 18, 39, 7, 8, 9, 10, 11, 12, 13, + 78, 79, 36, 47, 76, 77, 213, 75, 4, 74, 212, 2115, 2114, 2113, 2112, 2111, + 2110, 2109, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 6, 72, 73, 3, 41, 42, + 43, 48, 71, 40, 45, 52, 68, 208, 209, 210, 211, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 37, 194, 195, 196, 197, 198, 188, 189, 190, 191, 192, + 193, 186, 187, 55, 2131, 2130, 2129, 2128, 2127, 2126, 2125, 2124, 2132, + 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2123, 2108, 2101, 2098, 2093, + 2088, 2079, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 184, 185, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 70, 172, 173, 56, 167, 168, + 169, 170, 171, 38, 50, 166, 164, 165, 2156, 2155, 2154, 2153, 2152, 2151, + 2150, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 161, 162, 163, 158, 159, + 160, 154, 155, 156, 157, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 148, 149, + 150, 151, 152, 153, 146, 147, 2170, 2169, 2168, 2167, 2166, 2165, 2171, 2172, + 2173, 2174, 2175, 2176, 30, 33, 34, 31, 32, 51, 53, 139, 140, 141, 142, 143, + 144, 145, 95, 138, 134, 135, 136, 137, 2182, 2181, 2180, 2179, 2178, 2183, + 2184, 2185, 2186, 2187, 46, 133, 57, 132, 20, 93, 129, 130, 131, 127, 128, + 2192, 2191, 2190, 2189, 2193, 2194, 2195, 2196, 2197, 2188, 2177, 2164, 2198, + 2199, 2200, 2201, 126, 2203, 2204, 125, 122, 123, 124, 120, 121, 119, 2209, + 2208, 2207, 2206, 2210, 2211, 2212, 2213, 2214, 2205, 2215, 2216, 118, 117, + 112, 113, 114, 115, 116, 2220, 2219, 2218, 2221, 2222, 2223, 111, 2225, 2226, + 26, 27, 28, 29, 21, 25, 2229, 2228, 2230, 2231, 54, 2233, 2234, 2235, 2232, + 2227, 2224, 2236, 2237, 2238, 2239, 110, 2241, 2242, 2243, 2244, 109, 108, + 107, 2248, 2247, 2246, 2249, 2250, 2251, 22, 23, 24, 2253, 2254, 2255, 2252, + 2256, 2257, 2258, 2245, 2240, 2217, 2202, 2149, 2259, 2260, 2261, 2262, 2263, + 2264, 106, 2266, 2267, 2268, 2269, 104, 105, 2271, 2272, 35, 2274, 2275, + 2276, 2273, 2277, 2278, 103, 2280, 2281, 2282, 2283, 2284, 2279, 2270, 2285, + 2286, 2287, 102, 2289, 2290, 2291, 2292, 101, 2294, 2295, 2296, 2297, 2298, + 2293, 2299, 2300, 5, 2302, 2303, 2304, 2305, 2306, 2307, 100, 2309, 2310, + 2311, 2312, 2313, 2314, 99, 2316, 2317, 2318, 2319, 98, 97, 96, 1, 2324, + 2323, 2322, 2321, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2320, 2332, 2333, + 2334, 2315, 2308, 2301, 2288, 2265, 2335, 2336, 2337, 2338, 2339, 2340, 2341, + 2342, 2342, 2343, 2344, 2344, 2345, 2346, 2346, 2347, 2348, 2348, 2349, 2074, + 2073, 2350, 2350, 2351, 551, 552, 553, 554, 555, 726, 727, 558, 2352, 2353, + 2354, 2354, 976, 2356, 2357, 2358, 2359, 2359, 2360, 2361, 2361, 2362, 2363, + 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 1044, 2375, + 2376, 2377, 2378, 2378, 2379, 2380, 2380, 2381, 2382, 2382, 2383, 2384, 2384, + 2385, 2386, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, + 2397, 2398, 2398, 2399, 2400, 2400, 2401, 2402, 2402, 2403, 2404, 2404, 2405, + 2406, 2406, 2407, 2408, 2408, 2409, 2410, 2410, 2411, 44, 751, 752, 2412, + 1043, 2414, 2415, 2416, 2417, 2417, 2418, 2419, 2419, 2420, 2421, 2421, 2422, + 2423, 2423, 2424, 2425, 2425, 2426, 2427, 2428, 2429, 2429, 2430, 2431, 2431, + 2432, 2433, 2433, 2434, 2435, 2435, 2436, 2437, 2437, 2438, 2439, 2439, 2440, + 2441, 2441, 2442, 43, 2443, 2444, 2413, 341, 783, 792, 806, 807, 808, 1087, + 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 513, 808, 809, + 807, 341, 783, 792, 806, 836, 1087, 2460, 2459, 2458, 2457, 2456, 2462, 2461, + 2463, 2464, 2465, 2466, 315, 1900, 2467, 2468, 2469, 2470, 2471, 2471, 2472, + 2455, 2374, 2473, 2473, 2474, 2475, 315, 315, 2477, 2478, 2478, 2479, 2480, + 2481, 2482, 2483, 2484, 312, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, + 2494, 2495, 2495, 2496, 2497, 2497, 2498, 2499, 2499, 2500, 2501, 2502, 2503, + 2504, 2505, 513, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 44, 751, 2514, + 809, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 43, 2523, 808, 2525, 2526, + 2527, 2528, 2529, 2530, 2531, 42, 2532, 807, 2534, 2535, 2536, 2537, 2538, + 2539, 2540, 41, 2541, 1087, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 3, + 2550, 341, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 50, 2559, 783, 2561, + 2562, 2563, 2564, 2565, 2566, 2567, 49, 2568, 2462, 2570, 2571, 2572, 2573, + 2574, 48, 2575, 806, 2577, 2578, 2579, 2580, 2581, 2582, 2583, 40, 2584, + 2585, 2576, 2569, 2560, 2551, 2542, 2533, 2524, 2515, 2586, 2587, 2588, 2589, + 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, 2602, + 2603, 2506, 2604, 2605, 2606, 2485, 2476, 2607, 2608, 2609, 2610, 2611, 2611, + 2612, 2355, 1610, 2613, 2614, 2615, 2613, 2614, 2615, 1565, 2617, 2618, 2619, + 2620, 2621, 2622, 2623, 2624, 2624, 2625, 2626, 2627, 2628, 2628, 2629, 2630, + 2630, 831, 2632, 2633, 836, 836, 2635, 2636, 2636, 2637, 2638, 2638, 2639, + 2634, 2640, 2641, 2640, 2641, 836, 2643, 2644, 2645, 2646, 2647, 2648, 2649, + 2650, 836, 836, 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, 2660, 2661, + 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, 2671, 2672, 2651, + 2674, 2673, 2674, 2675, 2642, 2676, 2677, 2676, 2677, 751, 2679, 513, 806, + 807, 808, 809, 2680, 2681, 2682, 2682, 2683, 2684, 2684, 2685, 2686, 2686, + 2687, 2688, 2688, 806, 807, 808, 809, 513, 546, 952, 952, 2691, 2692, 2692, + 2693, 2694, 2694, 2695, 2696, 2696, 2697, 2698, 2698, 2699, 2690, 2701, 2700, + 2702, 2703, 2703, 389, 389, 2705, 2706, 2706, 2707, 2708, 2708, 2709, 2710, + 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2721, 2722, + 2722, 2723, 2724, 2724, 2725, 2726, 2726, 2727, 2728, 2728, 2729, 2730, 2730, + 2731, 2732, 2732, 2733, 2734, 2734, 2735, 2736, 2736, 2737, 2738, 2738, 2739, + 2740, 2740, 2741, 2742, 2742, 2743, 2744, 2744, 2745, 2746, 2747, 2748, 2748, + 683, 683, 675, 958, 2751, 2752, 2752, 2753, 2754, 2754, 2755, 2756, 2756, + 2757, 2758, 2758, 971, 2760, 2761, 2761, 2762, 2763, 2763, 976, 2357, 2765, + 2766, 2766, 583, 583, 2768, 2769, 2769, 2770, 2, 2771, 992, 993, 992, 993, + 995, 2773, 2774, 1003, 1004, 1003, 1004, 1006, 2776, 2777, 2778, 2775, 1009, + 2779, 2780, 2781, 1009, 2779, 2780, 2782, 2783, 2784, 2784, 2785, 2772, 2767, + 2786, 2787, 2788, 2786, 2787, 2788, 2701, 1059, 2790, 2791, 2792, 2793, 2793, + 2794, 2795, 2795, 2796, 2797, 2797, 2798, 2799, 2799, 2800, 2801, 2801, 2802, + 2803, 2803, 2804, 2789, 2764, 2759, 2750, 2749, 2704, 2689, 2678, 2631, 2616, + 1557, 1554, 1533, 1104, 387, 368, 262, 229, 2823, 2824, 2825, 2826, 2827, + 2828, 234, 235, 236, 237, 238, 2830, 2831, 245, 246, 247, 248, 249, 250, + 251, 2833, 2834, 2835, 2832, 2837, 2836, 2838, 2839, 263, 2841, 2842, 2843, + 2844, 2845, 2846, 268, 268, 2848, 2849, 2850, 2851, 2851, 2852, 2853, 2854, + 2855, 2855, 2856, 2857, 2858, 2859, 2859, 2860, 2861, 2862, 2863, 2863, 2864, + 2865, 2866, 2867, 2867, 2868, 2869, 2870, 2871, 2871, 2872, 2873, 2874, 2875, + 2875, 2876, 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2883, 2884, 2885, 2886, + 2887, 2887, 2888, 2889, 2890, 2891, 2891, 2892, 2893, 2894, 2895, 2895, 2896, + 2897, 2898, 2899, 2899, 2900, 2901, 2902, 2903, 2903, 2904, 2905, 2906, 2907, + 2907, 2908, 2909, 2910, 2911, 2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918, + 2919, 2919, 2920, 2921, 2922, 2923, 2923, 2924, 2925, 2926, 2927, 2927, 2928, + 2929, 13491, 2931, 2932, 314, 2934, 2935, 2936, 2933, 2937, 2938, 2939, 2940, + 2941, 2942, 2943, 2944, 2945, 2946, 2947, 2948, 2949, 2950, 2951, 2952, 2953, + 2954, 2955, 2956, 2957, 2958, 2959, 2960, 2961, 2962, 2963, 2964, 2965, 2966, + 2966, 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2974, 2974, 2975, 2976, 2977, + 2978, 2978, 2979, 2980, 340, 340, 2982, 2983, 2984, 2985, 2985, 2986, 2987, + 2988, 2989, 2989, 2990, 2991, 2992, 2993, 2993, 2994, 2995, 314, 314, 2997, + 2998, 2999, 3000, 3000, 3001, 3002, 340, 3004, 3005, 3006, 3007, 3008, 3009, + 3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019, 3019, 3020, 3021, + 3022, 3003, 3024, 3024, 3023, 3023, 3025, 3026, 3027, 2996, 2981, 2930, 3029, + 3029, 3028, 3030, 3031, 3028, 3030, 3031, 3032, 3033, 369, 369, 3035, 3036, + 3037, 3038, 3038, 3039, 3040, 3041, 3042, 3042, 3043, 3044, 3045, 3046, 3046, + 3047, 3048, 3049, 3050, 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058, + 3059, 3060, 3061, 3062, 3062, 3063, 3064, 3065, 3066, 3066, 3067, 3068, 388, + 3070, 3071, 3072, 3073, 3074, 3075, 393, 3077, 3078, 3079, 3080, 3081, 3082, + 3083, 3076, 3084, 3085, 3086, 3087, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 3089, 3090, 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, + 3088, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3109, 3110, + 3111, 3112, 3113, 3113, 3114, 3115, 3116, 3117, 3117, 3118, 3119, 437, 437, + 3121, 3122, 3123, 3124, 3124, 3125, 3126, 3127, 3128, 3128, 3129, 3130, 3131, + 3132, 3132, 3133, 3134, 3135, 3136, 3136, 3137, 3138, 448, 448, 3140, 3141, + 251, 251, 3143, 3144, 246, 246, 3146, 3147, 3148, 3145, 3142, 3149, 3150, + 3151, 3149, 3150, 3151, 3152, 3153, 457, 3155, 3156, 3157, 3158, 3100, 3101, + 3159, 3160, 462, 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, + 469, 470, 3173, 3174, 474, 475, 476, 3176, 3177, 481, 482, 3179, 3180, 3181, + 3178, 3175, 3182, 3183, 3184, 3185, 3186, 314, 3188, 3189, 3190, 3191, 3192, + 3193, 493, 494, 495, 3195, 3196, 3197, 2826, 3198, 3199, 3200, 502, 3202, + 3203, 3204, 3205, 3206, 3207, 507, 3209, 3210, 3211, 3212, 3213, 3214, 512, + 3216, 3217, 245, 246, 247, 248, 249, 250, 251, 448, 515, 3219, 3220, 518, + 519, 3222, 3223, 523, 3225, 3226, 526, 3228, 3229, 3230, 3227, 3224, 3221, + 3218, 3231, 3232, 3233, 3234, 2837, 3235, 3236, 3237, 263, 535, 536, 3239, + 3240, 540, 3242, 3243, 543, 3245, 3246, 3247, 3244, 3241, 3248, 3249, 3250, + 3251, 3252, 3253, 3238, 3215, 3208, 3201, 3194, 3187, 3172, 3161, 3154, 3255, + 3256, 3257, 3258, 3259, 3262, 3254, 3260, 3261, 3263, 3264, 3265, 2879, 2879, + 3267, 3268, 3269, 3270, 3270, 3271, 3272, 3273, 3274, 3274, 3275, 3276, 3277, + 3278, 3278, 3279, 3280, 3281, 3282, 3282, 3283, 3284, 3285, 3286, 3286, 3287, + 3288, 3289, 3290, 3290, 3291, 3292, 3293, 3294, 3294, 3295, 3296, 3297, 3298, + 3298, 3299, 3300, 3301, 3302, 3302, 3303, 3304, 3305, 3306, 3306, 3307, 3308, + 3024, 3024, 3310, 3311, 3312, 3309, 3313, 3313, 3314, 3314, 3315, 3316, 3054, + 3318, 3319, 3320, 3321, 3321, 3322, 3323, 3324, 3325, 3325, 3326, 3327, 591, + 591, 3329, 3330, 594, 594, 3332, 3333, 3334, 3335, 3335, 3336, 3337, 3338, + 3339, 3339, 3340, 3341, 3342, 3343, 3343, 3344, 3345, 3346, 3347, 3347, 3348, + 3349, 3350, 3351, 3351, 3352, 3353, 3354, 3355, 3355, 3356, 3357, 3358, 3359, + 3359, 3360, 3361, 3362, 3363, 3363, 3364, 3365, 3366, 3367, 3367, 3368, 3369, + 3370, 3371, 3371, 3372, 3373, 3374, 3375, 3375, 3376, 3377, 3378, 3379, 3379, + 3380, 3381, 621, 621, 3383, 3384, 3385, 3382, 3331, 3386, 3386, 3388, 3388, + 3387, 3387, 3389, 3390, 3391, 3392, 3392, 3393, 3394, 3395, 3396, 3396, 3397, + 3398, 632, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410, + 543, 543, 3411, 3412, 3413, 3414, 3415, 3415, 3416, 3417, 643, 643, 3419, + 3420, 3421, 3422, 3422, 3423, 3424, 3425, 3426, 3426, 3427, 3428, 3429, 3430, + 3430, 3431, 3432, 3433, 3434, 3434, 3435, 3436, 3437, 3438, 3438, 3439, 3440, + 3441, 3442, 3442, 3443, 3444, 3445, 3446, 3446, 3447, 3448, 3449, 3450, 3450, + 3451, 3452, 3453, 3454, 3454, 3455, 3456, 3457, 3458, 3458, 3459, 3460, 3461, + 3462, 3462, 3463, 3464, 3465, 3466, 3466, 3467, 3468, 3469, 3470, 3470, 3471, + 3472, 3473, 3474, 3474, 3475, 3476, 674, 3478, 3479, 3480, 3481, 3481, 3482, + 3483, 3484, 3485, 3485, 3486, 3487, 3488, 3489, 3489, 3490, 3491, 3492, 3493, + 3493, 3494, 3495, 3496, 3497, 3497, 3498, 3499, 3500, 3477, 3501, 3501, 3502, + 3502, 3503, 3504, 2847, 3506, 3507, 3508, 3509, 3510, 3510, 3511, 3512, 694, + 3514, 3515, 3516, 3517, 3165, 3518, 3519, 3520, 3521, 3522, 3523, 469, 470, + 701, 3525, 3526, 3527, 3182, 3183, 3528, 3529, 3530, 3198, 3532, 3533, 235, + 237, 238, 3535, 3536, 245, 246, 248, 249, 250, 251, 448, 515, 3538, 3539, + 3540, 3537, 3231, 3232, 3233, 3541, 3542, 3543, 3544, 535, 536, 3546, 3547, + 3548, 3249, 3549, 3550, 3551, 715, 715, 3553, 3554, 3555, 3556, 3556, 3557, + 3558, 3559, 3560, 3560, 3561, 3562, 3563, 3552, 3545, 3534, 3531, 3524, 3257, + 3262, 3564, 3564, 3568, 3569, 3565, 3566, 3567, 3570, 3571, 3572, 3513, 3573, + 3574, 3573, 3574, 3575, 3576, 437, 3578, 3579, 3580, 3581, 3582, 3583, 3584, + 3585, 3586, 3587, 3588, 3589, 3590, 3591, 3592, 3593, 3594, 3595, 3596, 3597, + 3598, 3599, 3600, 3601, 3601, 3602, 3603, 3604, 3605, 3605, 3606, 3607, 3608, + 3609, 3610, 3611, 749, 750, 3613, 3614, 3615, 3616, 3617, 3618, 3619, 3620, + 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628, 3629, 3630, 3029, 3029, 3632, + 3633, 767, 767, 3635, 3636, 3637, 3638, 3638, 3639, 3640, 3641, 3642, 3642, + 3643, 3644, 3645, 3646, 3646, 3647, 3648, 3649, 3650, 3650, 3651, 3652, 3653, + 3654, 3654, 3655, 3656, 3657, 3658, 3658, 3659, 3660, 782, 782, 3662, 3663, + 3664, 3665, 3665, 3666, 3667, 3668, 3669, 3669, 3670, 3671, 3672, 3673, 3673, + 3674, 3675, 791, 791, 3677, 3678, 3679, 3680, 3680, 3681, 3682, 3683, 3684, + 3684, 3685, 3686, 3687, 3688, 3688, 3689, 3690, 3691, 3692, 3692, 3693, 3694, + 3695, 3676, 3661, 3634, 512, 762, 763, 764, 765, 3696, 3697, 3698, 3699, + 3696, 3697, 3698, 3699, 3700, 3701, 3702, 3703, 3703, 3704, 3705, 3706, 3707, + 3707, 3708, 3709, 3710, 3711, 3711, 3712, 3713, 3714, 3715, 3715, 3716, 3717, + 3718, 3631, 3612, 3719, 3719, 3720, 3721, 3722, 3723, 3724, 3725, 3725, 3726, + 3727, 3728, 3577, 3729, 3730, 3729, 3730, 3731, 3732, 828, 828, 3734, 3735, + 3736, 3737, 3738, 3739, 3740, 3741, 3741, 3742, 3743, 835, 3745, 3746, 3747, + 3748, 3749, 3750, 3751, 3752, 3753, 3754, 3755, 3756, 3757, 3758, 3759, 3760, + 3761, 3762, 3763, 3764, 3765, 3766, 3767, 3768, 3769, 3770, 3771, 3772, 3773, + 3774, 3775, 3776, 3776, 3777, 3778, 3779, 3744, 3780, 3781, 3780, 3781, 3782, + 3783, 507, 507, 3785, 3786, 3787, 3788, 3788, 3789, 3790, 3791, 3792, 3792, + 3793, 3794, 3795, 3796, 3796, 3797, 3798, 3799, 3800, 3800, 3801, 3802, 3803, + 3804, 3804, 3805, 3806, 3807, 3808, 3809, 3810, 3811, 3812, 3813, 3814, 234, + 234, 3816, 3817, 3818, 3819, 3819, 3820, 3821, 3822, 3823, 3823, 3824, 3825, + 3826, 3827, 3827, 3828, 3829, 3830, 3831, 3831, 3832, 3833, 3834, 3835, 3835, + 3836, 3837, 3838, 3839, 3839, 3840, 3841, 3842, 3843, 3843, 3844, 3845, 3846, + 3847, 3847, 3848, 3849, 3850, 3851, 3851, 3852, 3853, 3854, 3855, 3855, 3856, + 3857, 3858, 3859, 3859, 3860, 3861, 3862, 3863, 3864, 3865, 247, 247, 3867, + 3868, 3869, 3870, 3870, 3871, 3872, 3873, 3874, 3874, 3875, 3876, 3877, 3878, + 3878, 3879, 3880, 3881, 3882, 3882, 3883, 3884, 3885, 3886, 3886, 3887, 3888, + 3889, 3890, 3890, 3891, 3892, 3893, 3894, 3894, 3895, 3896, 3897, 3898, 3898, + 3899, 3900, 3901, 3902, 3902, 3903, 3904, 3905, 3906, 3906, 3907, 3908, 3909, + 3910, 3911, 3912, 2829, 3914, 3915, 3916, 3917, 3918, 3918, 3919, 3920, 3921, + 3922, 3922, 3923, 3924, 3925, 3926, 3926, 3927, 3928, 3929, 3930, 3930, 3931, + 3932, 3933, 3934, 3934, 3935, 3936, 3937, 3938, 3938, 3939, 3940, 3941, 3942, + 3942, 3943, 3944, 3945, 3913, 3866, 3946, 3946, 3947, 3948, 3949, 3950, 236, + 3952, 3953, 3954, 3955, 3956, 3957, 3958, 3959, 3960, 3961, 3962, 3951, 3815, + 3963, 3963, 3964, 3965, 3966, 3967, 3968, 3969, 3969, 3970, 3971, 951, 951, + 3973, 3974, 3975, 3976, 3976, 3977, 3978, 3979, 3980, 3980, 3981, 3982, 3983, + 3984, 3984, 3985, 3986, 3987, 3988, 3988, 3989, 3990, 3991, 3992, 3992, 3993, + 3994, 3995, 3996, 3996, 3997, 3998, 621, 4000, 4001, 4002, 4003, 4004, 4005, + 4006, 4007, 4008, 4009, 4010, 4011, 4011, 4012, 4013, 4014, 4015, 4015, 4016, + 4017, 975, 975, 4019, 4020, 4021, 4022, 4022, 4023, 4024, 4025, 4026, 4026, + 4027, 4028, 4029, 4030, 4030, 4031, 4032, 4033, 4034, 4034, 4035, 4036, 986, + 986, 4038, 4039, 989, 989, 4041, 4042, 4043, 4040, 4044, 4044, 4045, 4045, + 4046, 4047, 4048, 4049, 4050, 4051, 997, 997, 4053, 4054, 1000, 1000, 4056, + 4057, 4058, 4055, 4059, 4059, 4060, 4060, 4061, 4062, 4063, 4064, 4065, 4066, + 4067, 4052, 1008, 4068, 4069, 4070, 4071, 4072, 4073, 4073, 4074, 4075, 4076, + 4037, 4077, 4078, 4077, 4078, 4079, 4080, 1018, 1019, 1020, 1021, 1022, 1023, + 1024, 1025, 1026, 4082, 4083, 4084, 4085, 4086, 4087, 4088, 4089, 4090, 4091, + 1041, 1042, 4093, 4094, 4095, 4096, 4096, 4097, 4098, 4099, 4100, 4100, 4101, + 4102, 4103, 4104, 4104, 4105, 4106, 4107, 4108, 4108, 4109, 4110, 4111, 4112, + 4112, 4113, 4114, 4115, 4116, 4117, 4118, 4119, 4092, 4121, 4120, 4122, 4123, + 4124, 4125, 4125, 4126, 4127, 4128, 4129, 4129, 4130, 4131, 4132, 4133, 4133, + 4134, 4135, 4136, 4137, 4137, 4138, 4139, 4140, 4141, 4141, 4142, 4143, 4144, + 4145, 4145, 4146, 4147, 4148, 4081, 4018, 3999, 3972, 3784, 3733, 3505, 3418, + 3399, 3328, 3317, 4149, 4150, 4151, 4152, 4153, 4154, 4155, 4156, 4157, 4158, + 4159, 4160, 4149, 4150, 4151, 4152, 4153, 4154, 4155, 4156, 4157, 4158, 4159, + 4160, 4161, 4162, 1086, 1086, 4164, 4165, 4166, 4167, 4167, 4168, 4169, 4170, + 4171, 4171, 4172, 4173, 4174, 4175, 4175, 4176, 4177, 4178, 4179, 4179, 4180, + 4181, 4182, 4183, 4183, 4184, 4185, 4186, 4163, 3266, 3139, 3120, 4187, 4188, + 4189, 4190, 4191, 4187, 4188, 4189, 4190, 4191, 4192, 4193, 493, 540, 4195, + 4196, 4197, 4198, 4198, 4199, 4200, 502, 502, 4202, 4203, 457, 457, 502, + 502, 4205, 4206, 701, 701, 4208, 4209, 475, 475, 4211, 4212, 470, 470, 482, + 482, 4214, 4215, 476, 476, 494, 494, 4217, 4218, 495, 495, 4220, 4221, 474, + 474, 519, 519, 4223, 4224, 457, 457, 701, 701, 4226, 4227, 518, 518, 4229, + 4230, 4231, 4232, 4232, 4233, 4234, 4235, 4236, 4236, 4237, 4238, 4239, 4240, + 4240, 4241, 4242, 470, 470, 4244, 4245, 536, 536, 4247, 4248, 457, 457, 4250, + 4251, 457, 457, 4253, 4254, 518, 518, 4256, 4257, 4258, 4255, 4252, 4249, + 4246, 4243, 4228, 4225, 4222, 4219, 4216, 4213, 4210, 4207, 4204, 4201, 4259, + 4260, 4261, 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269, 4270, 4271, 4272, + 4273, 4274, 4259, 4260, 4261, 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269, + 4270, 4271, 4272, 4273, 4274, 4275, 4276, 4277, 4278, 4279, 4280, 523, 523, + 4282, 4283, 4284, 4285, 4285, 4286, 4287, 4288, 4289, 4289, 4290, 4291, 4292, + 4293, 4293, 4294, 4295, 4296, 4297, 4297, 4298, 4299, 4300, 4301, 4301, 4302, + 4303, 4304, 4281, 4305, 4306, 4305, 4306, 4307, 4308, 402, 402, 4310, 4311, + 4312, 4313, 4313, 4314, 4315, 4316, 4317, 4317, 4318, 4319, 4320, 4321, 4321, + 4322, 4323, 4324, 4325, 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333, 4334, + 4335, 4336, 4337, 4338, 4339, 4340, 4341, 4342, 4343, 403, 403, 4345, 4346, + 4347, 4348, 4348, 4349, 4350, 4351, 4352, 4352, 4353, 4354, 4355, 4356, 4356, + 4357, 4358, 4359, 4360, 4361, 4362, 4363, 4364, 4365, 4366, 4367, 4368, 4369, + 4370, 4371, 4372, 4373, 4374, 4375, 4376, 4377, 4378, 4379, 4344, 4380, 4380, + 4381, 4381, 4382, 4383, 406, 406, 4385, 4386, 4387, 4388, 4388, 4389, 4390, + 4391, 4392, 4392, 4393, 4394, 4395, 4396, 4396, 4397, 4398, 4399, 4400, 4401, + 4402, 4403, 4404, 4405, 4406, 4407, 4408, 4409, 4410, 4411, 4412, 4413, 4414, + 4415, 4416, 4417, 4418, 4419, 4420, 4420, 4421, 4422, 404, 404, 4424, 4425, + 4426, 4427, 4427, 4428, 4429, 4430, 4431, 4431, 4432, 4433, 4434, 4435, 4435, + 4436, 4437, 4438, 4439, 4440, 4441, 4442, 4443, 4444, 4445, 4446, 4447, 4448, + 4449, 4450, 4451, 4452, 4453, 4454, 4455, 4456, 4457, 408, 408, 4459, 4460, + 4461, 4462, 4462, 4463, 4464, 4465, 4466, 4466, 4467, 4468, 4469, 4470, 4470, + 4471, 4472, 4473, 4474, 4475, 4476, 4477, 4478, 4479, 4480, 4481, 4482, 4483, + 4484, 4485, 4486, 4487, 4488, 4489, 4490, 4491, 4492, 4493, 4458, 4495, 4495, + 4494, 4494, 4496, 4497, 407, 407, 4499, 4500, 4501, 4502, 4502, 4503, 4504, + 4505, 4506, 4506, 4507, 4508, 4509, 4510, 4510, 4511, 4512, 4513, 4514, 4515, + 4516, 4517, 4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525, 4526, 4527, 4528, + 4529, 4530, 4531, 4532, 4533, 4534, 4534, 4535, 4536, 409, 409, 4538, 4539, + 4540, 4541, 4541, 4542, 4543, 4544, 4545, 4545, 4546, 4547, 4548, 4549, 4549, + 4550, 4551, 4552, 4553, 4554, 4555, 4556, 4557, 4558, 4559, 4560, 4561, 4562, + 4563, 4564, 4565, 4566, 4567, 4568, 4569, 4570, 4571, 4572, 4573, 4573, 4574, + 4575, 4576, 4577, 4577, 4578, 4579, 4580, 4581, 4581, 4582, 4583, 4584, 4585, + 4585, 4586, 4587, 4588, 4589, 4589, 4590, 4591, 4592, 4593, 4593, 4594, 4595, + 4596, 4597, 4597, 4598, 4599, 4600, 4601, 4601, 4602, 4603, 4604, 4605, 4605, + 4606, 4607, 4608, 4609, 4609, 4610, 4611, 4612, 4613, 4613, 4614, 4615, 410, + 410, 4617, 4618, 4619, 4620, 4620, 4621, 4622, 4623, 4624, 4624, 4625, 4626, + 4627, 4628, 4628, 4629, 4630, 4631, 4632, 4633, 4634, 4635, 4636, 4637, 4638, + 4639, 4640, 4641, 4642, 4643, 4644, 4645, 4646, 4647, 4648, 4649, 4650, 405, + 405, 4652, 4653, 4654, 4655, 4655, 4656, 4657, 4658, 4659, 4659, 4660, 4661, + 4662, 4663, 4663, 4664, 4665, 4666, 4667, 4668, 4669, 4670, 4671, 4672, 4673, + 4674, 4675, 4676, 4677, 4678, 4679, 4680, 4681, 4682, 4683, 4684, 4685, 4686, + 4651, 4616, 4687, 4688, 4689, 4687, 4688, 4689, 4690, 4691, 481, 481, 4693, + 4694, 4695, 4696, 4696, 4697, 4698, 4699, 4700, 4700, 4701, 4702, 4703, 4704, + 4704, 4705, 4706, 4707, 4708, 4709, 4710, 4711, 4712, 4712, 4713, 4714, 393, + 393, 4716, 4717, 4718, 4719, 4719, 4720, 4721, 4722, 4723, 4723, 4724, 4725, + 4726, 4727, 4727, 4728, 4729, 4730, 4731, 4732, 4733, 4734, 4735, 4736, 4737, + 4738, 4739, 4740, 4741, 4742, 4743, 4743, 4744, 4745, 4746, 4747, 4747, 4748, + 4749, 4750, 4751, 4751, 4752, 4753, 4754, 4755, 4755, 4756, 4757, 4380, 4380, + 4759, 4760, 4495, 4495, 4762, 4763, 401, 401, 4765, 4766, 4767, 4768, 4768, + 4769, 4770, 4771, 4772, 4772, 4773, 4774, 4775, 4776, 4776, 4777, 4778, 4779, + 4780, 4781, 4782, 4783, 4784, 4785, 4786, 4787, 4788, 4789, 4790, 4791, 4792, + 4793, 4794, 4795, 4796, 4796, 4797, 4798, 4799, 4764, 4761, 4758, 4715, 4692, + 4537, 4498, 4423, 4384, 4309, 4800, 4801, 4802, 4803, 4804, 4805, 4806, 4807, + 4808, 4809, 4810, 4800, 4801, 4802, 4803, 4804, 4805, 4806, 4807, 4808, 4809, + 4810, 4811, 4812, 4813, 4814, 4815, 4816, 92, 4817, 4818, 4818, 4819, 4820, + 4821, 4822, 4822, 4823, 4824, 4825, 4826, 4826, 4827, 4828, 4829, 4830, 4830, + 4831, 4832, 340, 782, 4834, 4835, 4836, 4837, 4838, 4839, 4840, 4841, 4842, + 4843, 4844, 4845, 4846, 4847, 4848, 4849, 4849, 4850, 4851, 4852, 4853, 4853, + 4854, 4855, 782, 4857, 4858, 4859, 4860, 4861, 4862, 4863, 4864, 4865, 4866, + 4867, 4868, 4869, 4870, 4871, 4872, 4872, 4873, 4874, 4875, 4876, 4876, 4877, + 4878, 632, 632, 4880, 4881, 594, 594, 4883, 4884, 621, 4886, 4887, 4888, + 4889, 4889, 4890, 4891, 4892, 4885, 4882, 4893, 3388, 4894, 4895, 4893, 3388, + 4894, 4895, 4896, 4897, 4898, 3386, 3386, 4899, 4900, 4901, 4902, 4903, 4903, + 4904, 4905, 3363, 4907, 4908, 4909, 4910, 4910, 4911, 4912, 4913, 4914, 4914, + 4915, 4916, 4917, 4918, 4918, 4919, 4920, 4921, 4922, 4923, 4924, 4925, 4926, + 4926, 4927, 4928, 4929, 4930, 4930, 4931, 4932, 4933, 4934, 4934, 4935, 4936, + 4937, 4938, 4938, 4939, 4940, 4941, 4942, 4942, 4943, 4944, 4945, 4946, 4946, + 4947, 4948, 4949, 4950, 4951, 4952, 4953, 4954, 4954, 4955, 4956, 4957, 4958, + 4958, 4959, 4960, 4961, 4962, 4962, 4963, 4964, 4965, 4966, 4966, 4967, 4968, + 4969, 4970, 4970, 4971, 4972, 4973, 4974, 4974, 4975, 4976, 4977, 4978, 4979, + 4980, 4981, 4982, 4982, 4983, 4984, 4985, 4986, 4986, 4987, 4988, 4989, 4990, + 4990, 4991, 4992, 4993, 4994, 4994, 4995, 4996, 4997, 4998, 4999, 5000, 5001, + 5002, 5002, 5003, 5004, 5005, 5006, 5006, 5007, 5008, 5009, 5010, 5010, 5011, + 5012, 5013, 5014, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, 5022, 5022, + 5023, 5024, 5025, 5026, 5026, 5027, 5028, 5029, 5030, 5030, 5031, 5032, 5033, + 5034, 5034, 5035, 5036, 5037, 5038, 5038, 5039, 5040, 5041, 5042, 5042, 5043, + 5044, 5045, 4906, 4879, 4856, 4833, 5046, 5047, 5048, 5049, 5050, 5046, 5047, + 5048, 5049, 5050, 5051, 5052, 3585, 5054, 5055, 5056, 5057, 5058, 5059, 5060, + 5061, 5062, 5063, 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, 5072, 543, + 543, 5073, 3411, 5074, 5075, 49, 4859, 5077, 5077, 5078, 5079, 5080, 5081, + 5081, 5082, 5083, 5084, 5085, 5085, 5086, 5087, 5088, 5076, 5089, 5090, 5089, + 5090, 5091, 5092, 3501, 5094, 5095, 5096, 5097, 3692, 5097, 3692, 5098, 5099, + 975, 5101, 5102, 986, 989, 997, 1000, 5104, 5105, 5106, 5103, 749, 1008, + 5107, 5108, 5109, 5110, 543, 750, 5112, 5113, 48, 5114, 49, 5111, 594, 765, + 951, 1564, 5115, 5116, 5117, 5118, 234, 268, 674, 1041, 1042, 5120, 5121, + 229, 236, 247, 715, 5123, 5124, 457, 632, 5126, 5127, 469, 470, 474, 475, + 476, 481, 701, 5129, 5130, 235, 237, 238, 245, 246, 482, 493, 494, 495, 502, + 5132, 5133, 248, 249, 251, 448, 515, 518, 519, 523, 526, 535, 5135, 5136, + 263, 462, 536, 540, 5138, 5139, 250, 388, 507, 828, 5141, 5142, 393, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 5144, 5145, 5146, 5143, 5140, 5137, + 5134, 5131, 5128, 5125, 5122, 5147, 5148, 5149, 5150, 5151, 5152, 5153, 5154, + 5155, 5156, 5157, 369, 410, 694, 5159, 5160, 5161, 5162, 5163, 5164, 621, + 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 5166, 5167, 5168, 5169, + 5170, 5171, 5172, 5165, 5158, 5173, 5174, 5175, 5176, 5177, 591, 835, 5179, + 5180, 437, 5182, 5183, 43, 5184, 2, 5181, 5178, 5119, 340, 512, 763, 764, + 1086, 5185, 5186, 5187, 5188, 5189, 5190, 5191, 5192, 5193, 5194, 5195, 5196, + 5196, 5197, 5198, 5199, 5200, 5200, 5201, 5202, 1612, 1613, 5204, 5205, 1617, + 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 5207, 5208, 462, 1638, + 1639, 5210, 5211, 694, 1643, 1644, 1645, 1646, 1647, 5213, 5214, 674, 5216, + 5217, 340, 1655, 5219, 5220, 1658, 1659, 5222, 5223, 5224, 5221, 5218, 5215, + 5212, 5209, 5206, 5225, 5226, 5227, 5228, 5229, 5230, 5231, 5232, 5233, 1671, + 1672, 1673, 5235, 5236, 1678, 1679, 1680, 5238, 5239, 1685, 1686, 1687, 1688, + 5241, 5242, 1694, 1695, 1696, 1697, 1698, 1699, 5244, 5245, 1707, 1708, 5247, + 5248, 5249, 5246, 5243, 5240, 5237, 3092, 5250, 5251, 5252, 5253, 5254, 5255, + 5256, 986, 989, 1008, 5258, 5259, 997, 1000, 5261, 5262, 1041, 1042, 1720, + 1721, 1722, 1723, 1724, 1725, 1726, 5264, 5265, 1735, 5267, 5268, 5269, 268, + 1738, 5270, 5271, 5272, 1742, 1743, 1744, 1745, 5274, 5275, 5276, 5273, 5266, + 5263, 5260, 5277, 5278, 5279, 5280, 5281, 5282, 5283, 1757, 1758, 5285, 5286, + 5287, 5288, 5289, 5290, 975, 5292, 5293, 5294, 5295, 5296, 5297, 835, 1767, + 5299, 5300, 369, 1770, 5302, 5303, 543, 632, 1773, 1774, 1775, 5305, 5306, + 1780, 1781, 5308, 5309, 5310, 5307, 5304, 5301, 5298, 5291, 5311, 5312, 5313, + 5314, 5315, 5316, 5317, 5318, 1792, 5320, 5321, 5322, 5323, 5324, 5325, 5326, + 5327, 5328, 5329, 5330, 5319, 5284, 5257, 5234, 5331, 5332, 5333, 5334, 5335, + 5336, 5337, 1805, 5339, 5340, 5341, 5342, 5343, 5344, 5345, 1810, 5346, 5347, + 5348, 1814, 5350, 5351, 5352, 5353, 5354, 5355, 5356, 474, 475, 476, 5357, + 5358, 5359, 5360, 5349, 3182, 3528, 5361, 5362, 5363, 5364, 1824, 1825, 5366, + 5367, 594, 5369, 5370, 5371, 5372, 5373, 5374, 5375, 5376, 5377, 5378, 5379, + 5368, 457, 3191, 5380, 5381, 5382, 5383, 1837, 5385, 5386, 5387, 229, 5388, + 5389, 5390, 1842, 5392, 5393, 1845, 1846, 1847, 5395, 5396, 1852, 1853, 5398, + 5399, 1857, 5401, 5402, 5403, 5400, 5397, 5394, 5404, 5405, 5406, 5407, 5408, + 5409, 5410, 5391, 3198, 5411, 5412, 5413, 5414, 1868, 5416, 5417, 1871, 5419, + 5420, 1874, 1875, 1876, 1877, 1878, 5422, 5423, 5424, 5421, 5418, 502, 5425, + 5426, 5427, 5428, 5429, 1889, 5431, 5432, 5433, 5434, 5435, 5436, 1018, 1019, + 1020, 1021, 5438, 5439, 1022, 1026, 5441, 5442, 5443, 5440, 5444, 5445, 5446, + 5447, 437, 5449, 5450, 5451, 5452, 5453, 5454, 1902, 5456, 5457, 5458, 5459, + 5460, 5461, 5462, 5463, 5464, 5465, 5466, 5455, 5448, 5437, 5430, 5467, 5468, + 5469, 5470, 5471, 5472, 5473, 1915, 5475, 5476, 5477, 5478, 5479, 5480, 5481, + 5482, 5483, 5484, 1922, 5486, 5487, 1925, 5489, 5490, 1928, 5492, 5493, 1931, + 5495, 5496, 5497, 5494, 5491, 5488, 5498, 5499, 5500, 5501, 5502, 5503, 5504, + 5505, 5506, 5507, 5508, 5485, 5509, 5510, 5511, 5512, 1944, 5514, 5515, 1947, + 5517, 5518, 5519, 5516, 3212, 5520, 5521, 5522, 5523, 512, 782, 5525, 5526, + 715, 1954, 1955, 1956, 1957, 5528, 5529, 234, 235, 236, 237, 238, 388, 5531, + 5532, 1964, 5534, 5535, 12, 5536, 245, 247, 248, 249, 250, 251, 448, 515, + 5537, 5538, 5539, 518, 519, 621, 828, 1969, 5541, 5542, 526, 1564, 1972, + 5544, 5545, 5546, 5543, 5540, 5533, 5530, 5527, 3232, 5547, 5548, 5549, 5550, + 5551, 5552, 5553, 5554, 1982, 5556, 5557, 1985, 5559, 5560, 1988, 5562, 5563, + 5564, 72, 5561, 73, 5558, 263, 5565, 5566, 5567, 5568, 5569, 540, 762, 763, + 764, 791, 1086, 5571, 5572, 393, 749, 750, 765, 1996, 1997, 1998, 1999, 5574, + 5575, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 5577, 5578, 1023, + 1024, 1025, 5580, 5581, 5582, 195, 951, 2024, 2026, 2027, 2028, 5583, 5584, + 5585, 2035, 2036, 2037, 2038, 2039, 2040, 5587, 5588, 2048, 2049, 5590, 5591, + 591, 5593, 5594, 5595, 5592, 5589, 5586, 5579, 5576, 5573, 5570, 5596, 5597, + 5598, 5599, 5600, 5601, 5602, 5603, 5604, 5605, 5606, 5555, 5524, 5513, 5474, + 5415, 5384, 5365, 5338, 1611, 3564, 3564, 5607, 5608, 5609, 5610, 5611, 5612, + 5613, 5614, 5615, 5616, 5617, 3249, 3250, 5619, 5620, 2075, 5622, 2076, 5624, + 5625, 5623, 5626, 5627, 5628, 5629, 2080, 5631, 2081, 5633, 2082, 5635, 2083, + 5637, 5638, 5636, 5634, 5632, 5639, 5640, 5641, 5642, 5643, 5644, 2089, 5646, + 2090, 5648, 5649, 5647, 5650, 5651, 5652, 5653, 2094, 5655, 2095, 5657, 5658, + 5656, 5659, 5660, 5661, 5662, 2099, 5664, 5665, 5666, 5667, 5668, 2102, 5670, + 2103, 5672, 2104, 5674, 5675, 5673, 5671, 5676, 5677, 5678, 5679, 5680, 2109, + 5682, 2110, 5684, 2111, 5686, 2112, 5688, 2113, 5690, 2114, 5692, 2115, 5694, + 5695, 5693, 5691, 5689, 5687, 5685, 5683, 5696, 5697, 5698, 5699, 5700, 5701, + 5702, 5703, 5704, 2124, 5706, 2125, 5708, 2126, 5710, 2127, 5712, 2128, 5714, + 2129, 5716, 2130, 5718, 2131, 5720, 5721, 5719, 5717, 5715, 5713, 5711, 5709, + 5707, 5722, 5723, 5724, 5725, 5726, 5727, 5728, 5729, 5730, 5731, 5732, 5705, + 5681, 5669, 5663, 5654, 5645, 5630, 5733, 5734, 5735, 5736, 5737, 5738, 5739, + 5740, 5741, 5742, 2150, 5744, 2151, 5746, 2152, 5748, 2153, 5750, 2154, 5752, + 2155, 5754, 2156, 5756, 5757, 5755, 5753, 5751, 5749, 5747, 5745, 5758, 5759, + 5760, 5761, 5762, 5763, 5764, 5765, 5766, 2165, 5768, 2166, 5770, 2167, 5772, + 2168, 5774, 2169, 5776, 2170, 5778, 5779, 5777, 5775, 5773, 5771, 5769, 5780, + 5781, 5782, 5783, 5784, 5785, 5786, 5787, 2178, 5789, 2179, 5791, 2180, 5793, + 2181, 5795, 2182, 5797, 5798, 5796, 5794, 5792, 5790, 5799, 5800, 5801, 5802, + 5803, 5804, 5805, 2189, 5807, 2190, 5809, 2191, 5811, 2192, 5813, 5814, 5812, + 5810, 5808, 5815, 5816, 5817, 5818, 5819, 5820, 5821, 5806, 5788, 5767, 5822, + 5823, 5824, 5825, 5826, 5827, 2203, 5829, 5830, 5831, 5832, 5833, 2206, 5835, + 2207, 5837, 2208, 5839, 2209, 5841, 5842, 5840, 5838, 5836, 5843, 5844, 5845, + 5846, 5847, 5848, 5849, 5834, 5850, 5851, 5852, 5853, 2218, 5855, 2219, 5857, + 2220, 5859, 5860, 5858, 5856, 5861, 5862, 5863, 5864, 5865, 2225, 5867, 5868, + 5869, 5870, 5871, 2228, 5873, 2229, 5875, 5876, 5874, 5877, 5878, 5879, 5880, + 2233, 5882, 5883, 5884, 5885, 5886, 5887, 5881, 5872, 5866, 5888, 5889, 5890, + 5891, 5892, 5893, 2241, 5895, 5896, 5897, 5898, 5899, 5900, 5901, 5902, 5903, + 2246, 5905, 2247, 5907, 2248, 5909, 5910, 5908, 5906, 5911, 5912, 5913, 5914, + 5915, 2253, 5917, 5918, 5919, 5920, 5921, 5922, 5916, 5923, 5924, 5925, 5926, + 5927, 5904, 5894, 5854, 5828, 5743, 5928, 5929, 5930, 5931, 5932, 5933, 5934, + 5935, 2266, 5937, 5938, 5939, 5940, 5941, 5942, 5943, 5944, 5945, 2271, 5947, + 5948, 5949, 5950, 5951, 2274, 5953, 5954, 5955, 5956, 5957, 5958, 5952, 5959, + 5960, 5961, 5962, 2280, 5964, 5965, 5966, 5967, 5968, 5969, 5970, 5971, 5972, + 5973, 5963, 5946, 5974, 5975, 5976, 5977, 5978, 2289, 5980, 5981, 5982, 5983, + 5984, 5985, 5986, 5987, 5988, 2294, 5990, 5991, 5992, 5993, 5994, 5995, 5996, + 5997, 5998, 5999, 5989, 6000, 6001, 6002, 6003, 2302, 6005, 6006, 6007, 6008, + 6009, 6010, 6011, 6012, 6013, 6014, 6015, 6016, 6017, 2309, 6019, 6020, 6021, + 6022, 6023, 6024, 6025, 6026, 6027, 6028, 6029, 6030, 6031, 2316, 6033, 6034, + 6035, 6036, 6037, 6038, 6039, 6040, 6041, 2321, 6043, 2322, 6045, 2323, 6047, + 2324, 6049, 6050, 6048, 6046, 6044, 6051, 6052, 6053, 6054, 6055, 6056, 6057, + 6058, 6059, 6060, 6061, 6042, 6062, 6063, 6064, 6065, 6066, 6032, 6018, 6004, + 5979, 5936, 6067, 6068, 6069, 6070, 6071, 6072, 6073, 6074, 6075, 6076, 6076, + 6077, 6078, 6079, 6080, 6080, 6081, 6082, 6083, 6084, 6084, 6085, 6086, 6087, + 6088, 6088, 6089, 6090, 6091, 5621, 5618, 6092, 6092, 6093, 3255, 3256, 3257, + 3258, 3259, 3568, 3569, 3262, 6094, 6095, 6096, 6097, 6098, 6098, 6099, 6100, + 975, 6102, 6103, 6104, 6105, 6106, 6107, 6108, 6109, 6109, 6110, 6111, 6112, + 6113, 6113, 6114, 6115, 6116, 6117, 6117, 6118, 6119, 6120, 6121, 6122, 6123, + 6124, 6125, 6126, 6127, 6128, 6129, 6130, 6131, 6132, 6133, 6134, 6135, 6136, + 6137, 6138, 6139, 1041, 6141, 6142, 6143, 6144, 6145, 6146, 6147, 6148, 6148, + 6149, 6150, 6151, 6152, 6152, 6153, 6154, 6155, 6156, 6156, 6157, 6158, 6159, + 6160, 6160, 6161, 6162, 6163, 6164, 6164, 6165, 6166, 6167, 6168, 6169, 6170, + 6171, 6172, 6173, 6174, 6175, 6176, 6177, 6178, 6179, 6180, 6181, 6182, 6183, + 6184, 6185, 6186, 6187, 6188, 6188, 6189, 6190, 6191, 6192, 6192, 6193, 6194, + 6195, 6196, 6196, 6197, 6198, 6199, 6200, 6200, 6201, 6202, 6203, 6204, 6204, + 6205, 6206, 6207, 6208, 6208, 6209, 6210, 6211, 6212, 6212, 6213, 6214, 6215, + 749, 750, 6216, 6217, 6218, 1042, 6220, 6221, 6222, 6223, 6224, 6225, 6226, + 6227, 6227, 6228, 6229, 6230, 6231, 6231, 6232, 6233, 6234, 6235, 6235, 6236, + 6237, 6238, 6239, 6239, 6240, 6241, 6242, 6243, 6243, 6244, 6245, 6246, 6247, + 6248, 6249, 6250, 6251, 6251, 6252, 6253, 6254, 6255, 6255, 6256, 6257, 6258, + 6259, 6259, 6260, 6261, 6262, 6263, 6263, 6264, 6265, 6266, 6267, 6267, 6268, + 6269, 6270, 6271, 6271, 6272, 6273, 6274, 6275, 6275, 6276, 6277, 6278, 6279, + 6280, 6281, 43, 6282, 44, 6219, 340, 763, 764, 765, 782, 791, 1086, 6283, + 6284, 6285, 6286, 6287, 6288, 6289, 6290, 6291, 6292, 6293, 6294, 6295, 6296, + 6297, 6298, 6299, 6300, 6301, 6302, 512, 762, 763, 6304, 6305, 764, 6307, + 6308, 340, 782, 6310, 6311, 791, 6313, 6314, 765, 835, 1086, 6316, 6317, + 6318, 6315, 6312, 6309, 6306, 6320, 6319, 6321, 6322, 6323, 6324, 6325, 6326, + 314, 5452, 6327, 6328, 6329, 6330, 6331, 6332, 6333, 6334, 6335, 6335, 6336, + 6337, 6338, 6303, 6140, 6339, 6339, 6340, 6341, 6342, 6343, 314, 314, 6345, + 6346, 6347, 6348, 6348, 6349, 6350, 6351, 6352, 6353, 6354, 6355, 6356, 6357, + 6358, 6359, 6360, 6361, 6362, 311, 6364, 6365, 6366, 6367, 6368, 6369, 6370, + 6371, 6372, 6373, 6374, 6375, 6376, 6377, 6378, 6379, 6380, 6381, 6382, 6383, + 6383, 6384, 6385, 6386, 6387, 6387, 6388, 6389, 6390, 6391, 6391, 6392, 6393, + 6394, 6395, 6396, 6397, 6398, 6399, 6400, 6401, 6402, 6403, 6404, 6405, 512, + 6407, 6408, 6409, 6410, 6411, 6412, 6413, 6414, 6415, 6416, 6417, 6418, 6419, + 6420, 6421, 750, 6422, 6423, 6424, 762, 6426, 6427, 6428, 6429, 6430, 6431, + 6432, 6433, 6434, 6435, 6436, 6437, 6438, 6439, 6440, 6441, 6442, 6443, 763, + 6445, 6446, 6447, 6448, 6449, 6450, 6451, 6452, 6453, 6454, 6455, 6456, 6457, + 6458, 6459, 6460, 6461, 6462, 764, 6464, 6465, 6466, 6467, 6468, 6469, 6470, + 6471, 6472, 6473, 6474, 6475, 6476, 6477, 6478, 6479, 6480, 6481, 1086, 6483, + 6484, 6485, 6486, 6487, 6488, 6489, 6490, 6491, 6492, 6493, 6494, 6495, 6496, + 6497, 6498, 6499, 6500, 340, 6502, 6503, 6504, 6505, 6506, 6507, 6508, 6509, + 6510, 6511, 6512, 6513, 6514, 6515, 6516, 6517, 6518, 6519, 782, 6521, 6522, + 6523, 6524, 6525, 6526, 6527, 6528, 6529, 6530, 6531, 6532, 6533, 6534, 6535, + 6536, 6537, 6538, 6320, 6540, 6541, 6542, 6543, 6544, 6545, 6546, 6547, 6548, + 6549, 6550, 6551, 6552, 6553, 765, 6555, 6556, 6557, 6558, 6559, 6560, 6561, + 6562, 6563, 6564, 6565, 6566, 6567, 6568, 6569, 6570, 6571, 6572, 40, 6573, + 48, 6554, 49, 6539, 50, 6520, 3, 6501, 41, 6482, 42, 6463, 43, 6444, 44, + 6425, 6574, 6575, 6576, 6577, 6578, 6579, 6580, 6581, 6582, 6583, 6584, 6585, + 6586, 6587, 6588, 6589, 6590, 6591, 6592, 6593, 6594, 6595, 6596, 6597, 6598, + 6599, 6600, 6601, 6406, 6602, 6603, 6604, 6605, 6606, 6363, 6344, 6607, 6608, + 6609, 6610, 6611, 6612, 6613, 6613, 6614, 6615, 6616, 6101, 5203, 6617, 6618, + 6619, 6617, 6618, 6619, 6620, 6621, 1564, 6623, 6624, 6625, 6626, 6627, 6628, + 6629, 6630, 6631, 6632, 6633, 6634, 6635, 6636, 6637, 6638, 6638, 6639, 6640, + 6641, 6642, 6643, 6644, 6645, 6646, 6646, 6647, 6648, 6649, 6650, 6650, 6651, + 6652, 3737, 6654, 6655, 6656, 6657, 6658, 6659, 835, 835, 6661, 6662, 6663, + 6664, 6664, 6665, 6666, 6667, 6668, 6668, 6669, 6670, 6671, 6660, 6672, 6673, + 6672, 6673, 6674, 6675, 835, 6677, 6678, 6679, 6680, 6681, 6682, 6683, 6684, + 6685, 6686, 6687, 6688, 6689, 6690, 6691, 6692, 6693, 6694, 835, 835, 6696, + 6697, 6698, 6699, 6700, 6701, 6702, 6703, 6704, 6705, 6706, 6707, 6708, 6709, + 6710, 6711, 6712, 6713, 6714, 6715, 6716, 6717, 6718, 6719, 6720, 6721, 6722, + 6723, 6724, 6725, 6726, 6727, 6728, 6729, 6730, 6731, 6732, 6733, 6734, 6735, + 6735, 6736, 6737, 6738, 6695, 6740, 6739, 6740, 6741, 6742, 6743, 6676, 6744, + 6745, 6744, 6745, 6746, 6747, 750, 6749, 6750, 6751, 512, 762, 763, 764, + 765, 6752, 6753, 6754, 6755, 6756, 6756, 6757, 6758, 6759, 6760, 6760, 6761, + 6762, 6763, 6764, 6764, 6765, 6766, 6767, 512, 762, 763, 764, 765, 6768, + 6768, 6769, 6770, 3248, 6772, 6773, 951, 951, 6775, 6776, 6777, 6778, 6778, + 6779, 6780, 6781, 6782, 6782, 6783, 6784, 6785, 6786, 6786, 6787, 6788, 6789, + 6790, 6790, 6791, 6792, 6793, 6774, 6795, 6794, 6796, 6797, 6798, 6799, 6799, + 6800, 6801, 388, 388, 6803, 6804, 6805, 6806, 6806, 6807, 6808, 6809, 6810, + 6810, 6811, 6812, 6813, 6814, 6814, 6815, 6816, 6817, 6818, 6819, 6820, 6821, + 6822, 6823, 6824, 6825, 6826, 6827, 6828, 6829, 6830, 6831, 6832, 6833, 6834, + 6835, 6836, 6837, 6838, 6838, 6839, 6840, 6841, 6842, 6842, 6843, 6844, 6845, + 6846, 6846, 6847, 6848, 6849, 6850, 6850, 6851, 6852, 6853, 6854, 6854, 6855, + 6856, 6857, 6858, 6858, 6859, 6860, 6861, 6862, 6862, 6863, 6864, 6865, 6866, + 6866, 6867, 6868, 6869, 6870, 6870, 6871, 6872, 6873, 6874, 6874, 6875, 6876, + 6877, 6878, 6878, 6879, 6880, 6881, 6882, 6882, 6883, 6884, 6885, 6886, 6887, + 6888, 6889, 6890, 6890, 6891, 6892, 674, 3493, 3493, 6894, 6895, 3984, 6897, + 6898, 6899, 6900, 6900, 6901, 6902, 6903, 6904, 6904, 6905, 6906, 6907, 6908, + 6908, 6909, 6910, 6911, 6912, 6912, 6913, 6914, 4011, 6916, 6917, 6918, 6919, + 6919, 6920, 6921, 6922, 6923, 6923, 6924, 6925, 975, 6105, 6927, 6928, 6929, + 6930, 6930, 6931, 6932, 3313, 3313, 6934, 6935, 6936, 6937, 6937, 6938, 6939, + 6940, 6941, 6942, 6943, 4044, 4045, 4044, 4045, 4049, 6945, 6946, 6947, 6948, + 6949, 6950, 4059, 4060, 4059, 4060, 4064, 6952, 6953, 6954, 6955, 6956, 6957, + 6958, 6951, 1008, 6959, 6960, 6961, 6962, 6963, 1008, 6959, 6960, 6964, 6965, + 6966, 6967, 6968, 6968, 6969, 6970, 6971, 2, 6944, 6933, 6972, 6973, 6974, + 6972, 6973, 6974, 6975, 6976, 6795, 4121, 6978, 6979, 6980, 6981, 6982, 6983, + 6984, 6985, 6985, 6986, 6987, 6988, 6989, 6989, 6990, 6991, 6992, 6993, 6993, + 6994, 6995, 6996, 6997, 6997, 6998, 6999, 7000, 7001, 7001, 7002, 7003, 7004, + 7005, 7005, 7006, 7007, 7008, 6977, 6926, 6915, 6896, 6893, 6802, 6771, 6748, + 6653, 6622, 5100, 5093, 5053, 4194, 3069, 3034, 2840, 2823, 7027, 7028, 7029, + 7030, 7031, 2830, 7033, 2833, 7035, 7036, 7034, 7038, 7037, 7039, 7040, 2841, + 7042, 7043, 7044, 7045, 7046, 2848, 7048, 7049, 7050, 7050, 7051, 7052, 7053, + 7054, 7054, 7055, 7056, 7057, 7058, 7058, 7059, 7060, 7061, 7062, 7062, 7063, + 7064, 7065, 7066, 7066, 7067, 7068, 7069, 7070, 7070, 7071, 7072, 7073, 7074, + 7074, 7075, 7076, 7077, 7078, 7079, 7080, 7081, 7082, 7082, 7083, 7084, 7085, + 7086, 7086, 7087, 7088, 7089, 7090, 7090, 7091, 7092, 7093, 7094, 7094, 7095, + 7096, 7097, 7098, 7098, 7099, 7100, 7101, 7102, 7102, 7103, 7104, 7105, 7106, + 7106, 7107, 7108, 7109, 7110, 7110, 7111, 7112, 7113, 7114, 7115, 7116, 7117, + 7118, 7118, 7119, 7120, 7121, 7122, 7122, 7123, 7124, 7125, 7126, 7126, 7127, + 7128, 2931, 7130, 2934, 7132, 7133, 7131, 7134, 7135, 7136, 7137, 7138, 7139, + 7140, 7141, 7142, 7143, 7144, 7145, 7146, 7147, 7148, 7149, 7150, 7151, 7152, + 7153, 7154, 7155, 7156, 7157, 7158, 7159, 7160, 7161, 7162, 7163, 7163, 7164, + 7165, 7166, 7167, 7168, 7169, 7170, 7171, 7171, 7172, 7173, 7174, 7175, 7175, + 7176, 7177, 2982, 7179, 7180, 7181, 7181, 7182, 7183, 7184, 7185, 7185, 7186, + 7187, 7188, 7189, 7189, 7190, 7191, 2997, 7193, 7194, 7195, 7195, 7196, 7197, + 3004, 7199, 7200, 7201, 7202, 7203, 7204, 7205, 7206, 7207, 7208, 7209, 7210, + 7211, 7212, 7213, 7213, 7214, 7215, 7216, 7198, 7218, 7218, 7217, 7217, 7219, + 7220, 7221, 7192, 7178, 7129, 7223, 7223, 7222, 7224, 7225, 7222, 7224, 7225, + 7226, 7227, 3035, 7229, 7230, 7231, 7231, 7232, 7233, 7234, 7235, 7235, 7236, + 7237, 7238, 7239, 7239, 7240, 7241, 7242, 7243, 7243, 7244, 7245, 7246, 7247, + 7248, 7249, 7250, 7251, 7252, 7253, 7254, 7255, 7255, 7256, 7257, 7258, 7259, + 7259, 7260, 7261, 3070, 7263, 7264, 7265, 7266, 7267, 3077, 7269, 7270, 7271, + 7272, 7273, 7274, 7268, 7275, 7276, 7277, 7278, 3089, 7280, 7281, 7282, 7283, + 7284, 7285, 7286, 7287, 7288, 7289, 7279, 7290, 7291, 7292, 7293, 7294, 7295, + 7296, 7297, 7298, 7299, 7299, 7300, 7301, 7302, 7303, 7303, 7304, 7305, 7306, + 7307, 7307, 7308, 7309, 3121, 7311, 7312, 7313, 7313, 7314, 7315, 7316, 7317, + 7317, 7318, 7319, 7320, 7321, 7321, 7322, 7323, 7324, 7325, 7325, 7326, 7327, + 3140, 7329, 3143, 7331, 3146, 7333, 7334, 7332, 7330, 7335, 7336, 7337, 7335, + 7336, 7337, 7338, 7339, 3155, 7341, 7342, 7343, 7290, 7291, 7344, 7345, 3162, + 7347, 7348, 7349, 7350, 7351, 7352, 7353, 7354, 7355, 3173, 7357, 3176, 7359, + 3179, 7361, 7362, 7360, 7358, 7363, 7364, 7365, 7366, 7367, 3188, 7369, 7370, + 7371, 7372, 7373, 3195, 7375, 7376, 7029, 7377, 7378, 7379, 3202, 7381, 7382, + 7383, 7384, 7385, 3209, 7387, 7388, 7389, 7390, 7391, 3216, 7393, 3219, 7395, + 3222, 7397, 3225, 7399, 3228, 7401, 7402, 7400, 7398, 7396, 7394, 7403, 7404, + 7405, 7406, 7038, 7407, 7408, 7409, 3239, 7411, 3242, 7413, 3245, 7415, 7416, + 7414, 7412, 7417, 7418, 7419, 7420, 7421, 7422, 7410, 7392, 7386, 7380, 7374, + 7368, 7356, 7346, 7340, 7424, 7425, 7426, 7427, 7428, 7431, 7423, 7429, 7430, + 7432, 7433, 7434, 7078, 7078, 7436, 7437, 7438, 7439, 7439, 7440, 7441, 7442, + 7443, 7443, 7444, 7445, 7446, 7447, 7447, 7448, 7449, 7450, 7451, 7451, 7452, + 7453, 7454, 7455, 7455, 7456, 7457, 7458, 7459, 7459, 7460, 7461, 7462, 7463, + 7463, 7464, 7465, 7466, 7467, 7467, 7468, 7469, 7470, 7471, 7471, 7472, 7473, + 7474, 7475, 7475, 7476, 7477, 7218, 7218, 7479, 7480, 7481, 7478, 7482, 7482, + 7483, 7483, 7484, 7485, 7247, 7487, 7488, 7489, 7490, 7490, 7491, 7492, 7493, + 7494, 7494, 7495, 7496, 3329, 7498, 3332, 7500, 7501, 7502, 7502, 7503, 7504, + 7505, 7506, 7506, 7507, 7508, 7509, 7510, 7510, 7511, 7512, 7513, 7514, 7514, + 7515, 7516, 7517, 7518, 7518, 7519, 7520, 7521, 7522, 7522, 7523, 7524, 7525, + 7526, 7526, 7527, 7528, 7529, 7530, 7530, 7531, 7532, 7533, 7534, 7534, 7535, + 7536, 7537, 7538, 7538, 7539, 7540, 7541, 7542, 7542, 7543, 7544, 7545, 7546, + 7546, 7547, 7548, 3383, 7550, 7551, 7549, 7499, 7552, 7552, 7554, 7554, 7553, + 7553, 7555, 7556, 7557, 7558, 7558, 7559, 7560, 7561, 7562, 7562, 7563, 7564, + 3400, 7566, 7567, 7568, 7569, 7570, 7571, 7572, 7573, 7574, 7575, 543, 543, + 7576, 7577, 7578, 7579, 7580, 7580, 7581, 7582, 3419, 7584, 7585, 7586, 7586, + 7587, 7588, 7589, 7590, 7590, 7591, 7592, 7593, 7594, 7594, 7595, 7596, 7597, + 7598, 7598, 7599, 7600, 7601, 7602, 7602, 7603, 7604, 7605, 7606, 7606, 7607, + 7608, 7609, 7610, 7610, 7611, 7612, 7613, 7614, 7614, 7615, 7616, 7617, 7618, + 7618, 7619, 7620, 7621, 7622, 7622, 7623, 7624, 7625, 7626, 7626, 7627, 7628, + 7629, 7630, 7630, 7631, 7632, 7633, 7634, 7634, 7635, 7636, 7637, 7638, 7638, + 7639, 7640, 3478, 7642, 7643, 7644, 7644, 7645, 7646, 7647, 7648, 7648, 7649, + 7650, 7651, 7652, 7652, 7653, 7654, 7655, 7656, 7656, 7657, 7658, 7659, 7660, + 7660, 7661, 7662, 7663, 7641, 7664, 7664, 7665, 7665, 7666, 7667, 7047, 7669, + 7670, 7671, 7672, 7673, 7673, 7674, 7675, 3514, 7677, 7678, 7679, 7349, 7680, + 7681, 7682, 7683, 7684, 7685, 3525, 7687, 7688, 7363, 7364, 7689, 7690, 7691, + 7377, 7693, 7694, 3535, 7696, 3538, 7698, 7699, 7697, 7403, 7404, 7405, 7700, + 7701, 7702, 7703, 3546, 7705, 7706, 7418, 7707, 7708, 7709, 3553, 7711, 7712, + 7713, 7713, 7714, 7715, 7716, 7717, 7717, 7718, 7719, 7720, 7710, 7704, 7695, + 7692, 7686, 7426, 7431, 7721, 7721, 7725, 7726, 7722, 7723, 7724, 7727, 7728, + 7729, 7676, 7730, 7731, 7730, 7731, 7732, 7733, 3578, 7735, 7736, 7737, 7738, + 7739, 7740, 7741, 7742, 7743, 7744, 7745, 7746, 7747, 7748, 7749, 7750, 7751, + 7752, 7753, 7754, 7755, 7756, 7757, 7757, 7758, 7759, 7760, 7761, 7761, 7762, + 7763, 7764, 7765, 7766, 7767, 3613, 7769, 7770, 7771, 7772, 7773, 7774, 7775, + 7776, 7777, 7778, 7779, 7780, 7781, 7782, 7783, 7784, 7785, 7223, 7223, 7787, + 7788, 3635, 7790, 7791, 7792, 7792, 7793, 7794, 7795, 7796, 7796, 7797, 7798, + 7799, 7800, 7800, 7801, 7802, 7803, 7804, 7804, 7805, 7806, 7807, 7808, 7808, + 7809, 7810, 7811, 7812, 7812, 7813, 7814, 3662, 7816, 7817, 7818, 7818, 7819, + 7820, 7821, 7822, 7822, 7823, 7824, 7825, 7826, 7826, 7827, 7828, 3677, 7830, + 7831, 7832, 7832, 7833, 7834, 7835, 7836, 7836, 7837, 7838, 7839, 7840, 7840, + 7841, 7842, 7843, 7844, 7844, 7845, 7846, 7847, 7829, 7815, 7789, 512, 762, + 763, 764, 765, 7848, 7849, 7850, 7851, 7848, 7849, 7850, 7851, 7852, 7853, + 7854, 7855, 7855, 7856, 7857, 7858, 7859, 7859, 7860, 7861, 7862, 7863, 7863, + 7864, 7865, 7866, 7867, 7867, 7868, 7869, 7870, 7786, 7768, 7871, 7871, 7872, + 7873, 7874, 7875, 7876, 7877, 7877, 7878, 7879, 7880, 7734, 7881, 7882, 7881, + 7882, 7883, 7884, 3734, 7886, 7887, 7888, 7889, 7890, 7891, 7892, 7892, 7893, + 7894, 3745, 7896, 7897, 7898, 7899, 7900, 7901, 7902, 7903, 7904, 7905, 7906, + 7907, 7908, 7909, 7910, 7911, 7912, 7913, 7914, 7915, 7916, 7917, 7918, 7919, + 7920, 7921, 7922, 7923, 7924, 7925, 7926, 7926, 7927, 7928, 7929, 7895, 7930, + 7931, 7930, 7931, 7932, 7933, 3785, 7935, 7936, 7937, 7937, 7938, 7939, 7940, + 7941, 7941, 7942, 7943, 7944, 7945, 7945, 7946, 7947, 7948, 7949, 7949, 7950, + 7951, 7952, 7953, 7953, 7954, 7955, 7956, 7957, 7958, 7959, 7960, 7961, 7962, + 7963, 3816, 7965, 7966, 7967, 7967, 7968, 7969, 7970, 7971, 7971, 7972, 7973, + 7974, 7975, 7975, 7976, 7977, 7978, 7979, 7979, 7980, 7981, 7982, 7983, 7983, + 7984, 7985, 7986, 7987, 7987, 7988, 7989, 7990, 7991, 7991, 7992, 7993, 7994, + 7995, 7995, 7996, 7997, 7998, 7999, 7999, 8000, 8001, 8002, 8003, 8003, 8004, + 8005, 8006, 8007, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 3867, 8015, 8016, + 8017, 8017, 8018, 8019, 8020, 8021, 8021, 8022, 8023, 8024, 8025, 8025, 8026, + 8027, 8028, 8029, 8029, 8030, 8031, 8032, 8033, 8033, 8034, 8035, 8036, 8037, + 8037, 8038, 8039, 8040, 8041, 8041, 8042, 8043, 8044, 8045, 8045, 8046, 8047, + 8048, 8049, 8049, 8050, 8051, 8052, 8053, 8053, 8054, 8055, 8056, 8057, 8058, + 8059, 7032, 8061, 8062, 8063, 8064, 8065, 8065, 8066, 8067, 8068, 8069, 8069, + 8070, 8071, 8072, 8073, 8073, 8074, 8075, 8076, 8077, 8077, 8078, 8079, 8080, + 8081, 8081, 8082, 8083, 8084, 8085, 8085, 8086, 8087, 8088, 8089, 8089, 8090, + 8091, 8092, 8060, 8014, 8093, 8093, 8094, 8095, 8096, 8097, 3952, 8099, 8100, + 8101, 8102, 8103, 8104, 8105, 8106, 8107, 8108, 8098, 7964, 8109, 8109, 8110, + 8111, 8112, 8113, 8114, 8115, 8115, 8116, 8117, 3973, 8119, 8120, 8121, 8121, + 8122, 8123, 8124, 8125, 8125, 8126, 8127, 8128, 8129, 8129, 8130, 8131, 8132, + 8133, 8133, 8134, 8135, 8136, 8137, 8137, 8138, 8139, 8140, 8141, 8141, 8142, + 8143, 4000, 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154, 8155, + 8155, 8156, 8157, 8158, 8159, 8159, 8160, 8161, 4019, 8163, 8164, 8165, 8165, + 8166, 8167, 8168, 8169, 8169, 8170, 8171, 8172, 8173, 8173, 8174, 8175, 8176, + 8177, 8177, 8178, 8179, 4038, 8181, 4041, 8183, 8184, 8182, 8185, 8185, 8186, + 8186, 8187, 8188, 8189, 8190, 8191, 8192, 4053, 8194, 4056, 8196, 8197, 8195, + 8198, 8198, 8199, 8199, 8200, 8201, 8202, 8203, 8204, 8205, 8206, 8193, 1008, + 8207, 8208, 8209, 8210, 8211, 8212, 8212, 8213, 8214, 8215, 8180, 8216, 8217, + 8216, 8217, 8218, 8219, 4082, 8221, 8222, 8223, 8224, 8225, 8226, 8227, 8228, + 8229, 4093, 8231, 8232, 8233, 8233, 8234, 8235, 8236, 8237, 8237, 8238, 8239, + 8240, 8241, 8241, 8242, 8243, 8244, 8245, 8245, 8246, 8247, 8248, 8249, 8249, + 8250, 8251, 8252, 8253, 8254, 8255, 8256, 8230, 8258, 8257, 8259, 8260, 8261, + 8262, 8262, 8263, 8264, 8265, 8266, 8266, 8267, 8268, 8269, 8270, 8270, 8271, + 8272, 8273, 8274, 8274, 8275, 8276, 8277, 8278, 8278, 8279, 8280, 8281, 8282, + 8282, 8283, 8284, 8285, 8220, 8162, 8144, 8118, 7934, 7885, 7668, 7583, 7565, + 7497, 7486, 8286, 8287, 8288, 8289, 8290, 8291, 8292, 8293, 8294, 8295, 8296, + 8297, 8286, 8287, 8288, 8289, 8290, 8291, 8292, 8293, 8294, 8295, 8296, 8297, + 8298, 8299, 4164, 8301, 8302, 8303, 8303, 8304, 8305, 8306, 8307, 8307, 8308, + 8309, 8310, 8311, 8311, 8312, 8313, 8314, 8315, 8315, 8316, 8317, 8318, 8319, + 8319, 8320, 8321, 8322, 8300, 7435, 7328, 7310, 8323, 8324, 8325, 8326, 8327, + 8323, 8324, 8325, 8326, 8327, 8328, 8329, 4195, 8331, 8332, 8333, 8333, 8334, + 8335, 4202, 8337, 4205, 8339, 4208, 8341, 4211, 8343, 4214, 8345, 4217, 8347, + 4220, 8349, 4223, 8351, 4226, 8353, 4229, 8355, 8356, 8357, 8357, 8358, 8359, + 8360, 8361, 8361, 8362, 8363, 8364, 8365, 8365, 8366, 8367, 4244, 8369, 4247, + 8371, 4250, 8373, 4253, 8375, 4256, 8377, 8378, 8376, 8374, 8372, 8370, 8368, + 8354, 8352, 8350, 8348, 8346, 8344, 8342, 8340, 8338, 8336, 8379, 8380, 8381, + 8382, 8383, 8384, 8385, 8386, 8387, 8388, 8389, 8390, 8391, 8392, 8393, 8394, + 8379, 8380, 8381, 8382, 8383, 8384, 8385, 8386, 8387, 8388, 8389, 8390, 8391, + 8392, 8393, 8394, 8395, 8396, 8397, 8398, 8399, 8400, 4282, 8402, 8403, 8404, + 8404, 8405, 8406, 8407, 8408, 8408, 8409, 8410, 8411, 8412, 8412, 8413, 8414, + 8415, 8416, 8416, 8417, 8418, 8419, 8420, 8420, 8421, 8422, 8423, 8401, 8424, + 8425, 8424, 8425, 8426, 8427, 4310, 8429, 8430, 8431, 8431, 8432, 8433, 8434, + 8435, 8435, 8436, 8437, 8438, 8439, 8439, 8440, 8441, 8442, 8443, 8444, 8445, + 8446, 8447, 8448, 8449, 8450, 8451, 8452, 8453, 8454, 8455, 8456, 8457, 8458, + 8459, 8460, 8461, 4345, 8463, 8464, 8465, 8465, 8466, 8467, 8468, 8469, 8469, + 8470, 8471, 8472, 8473, 8473, 8474, 8475, 8476, 8477, 8478, 8479, 8480, 8481, + 8482, 8483, 8484, 8485, 8486, 8487, 8488, 8489, 8490, 8491, 8492, 8493, 8494, + 8495, 8496, 8462, 8497, 8497, 8498, 8498, 8499, 8500, 4385, 8502, 8503, 8504, + 8504, 8505, 8506, 8507, 8508, 8508, 8509, 8510, 8511, 8512, 8512, 8513, 8514, + 8515, 8516, 8517, 8518, 8519, 8520, 8521, 8522, 8523, 8524, 8525, 8526, 8527, + 8528, 8529, 8530, 8531, 8532, 8533, 8534, 8535, 8536, 8536, 8537, 8538, 4424, + 8540, 8541, 8542, 8542, 8543, 8544, 8545, 8546, 8546, 8547, 8548, 8549, 8550, + 8550, 8551, 8552, 8553, 8554, 8555, 8556, 8557, 8558, 8559, 8560, 8561, 8562, + 8563, 8564, 8565, 8566, 8567, 8568, 8569, 8570, 8571, 8572, 4459, 8574, 8575, + 8576, 8576, 8577, 8578, 8579, 8580, 8580, 8581, 8582, 8583, 8584, 8584, 8585, + 8586, 8587, 8588, 8589, 8590, 8591, 8592, 8593, 8594, 8595, 8596, 8597, 8598, + 8599, 8600, 8601, 8602, 8603, 8604, 8605, 8606, 8607, 8573, 8609, 8609, 8608, + 8608, 8610, 8611, 4499, 8613, 8614, 8615, 8615, 8616, 8617, 8618, 8619, 8619, + 8620, 8621, 8622, 8623, 8623, 8624, 8625, 8626, 8627, 8628, 8629, 8630, 8631, + 8632, 8633, 8634, 8635, 8636, 8637, 8638, 8639, 8640, 8641, 8642, 8643, 8644, + 8645, 8646, 8647, 8647, 8648, 8649, 4538, 8651, 8652, 8653, 8653, 8654, 8655, + 8656, 8657, 8657, 8658, 8659, 8660, 8661, 8661, 8662, 8663, 8664, 8665, 8666, + 8667, 8668, 8669, 8670, 8671, 8672, 8673, 8674, 8675, 8676, 8677, 8678, 8679, + 8680, 8681, 8682, 8683, 8684, 8685, 8685, 8686, 8687, 8688, 8689, 8689, 8690, + 8691, 8692, 8693, 8693, 8694, 8695, 8696, 8697, 8697, 8698, 8699, 8700, 8701, + 8701, 8702, 8703, 8704, 8705, 8705, 8706, 8707, 8708, 8709, 8709, 8710, 8711, + 8712, 8713, 8713, 8714, 8715, 8716, 8717, 8717, 8718, 8719, 8720, 8721, 8721, + 8722, 8723, 8724, 8725, 8725, 8726, 8727, 4617, 8729, 8730, 8731, 8731, 8732, + 8733, 8734, 8735, 8735, 8736, 8737, 8738, 8739, 8739, 8740, 8741, 8742, 8743, + 8744, 8745, 8746, 8747, 8748, 8749, 8750, 8751, 8752, 8753, 8754, 8755, 8756, + 8757, 8758, 8759, 8760, 8761, 4652, 8763, 8764, 8765, 8765, 8766, 8767, 8768, + 8769, 8769, 8770, 8771, 8772, 8773, 8773, 8774, 8775, 8776, 8777, 8778, 8779, + 8780, 8781, 8782, 8783, 8784, 8785, 8786, 8787, 8788, 8789, 8790, 8791, 8792, + 8793, 8794, 8795, 8796, 8762, 8728, 8797, 8798, 8799, 8797, 8798, 8799, 8800, + 8801, 4693, 8803, 8804, 8805, 8805, 8806, 8807, 8808, 8809, 8809, 8810, 8811, + 8812, 8813, 8813, 8814, 8815, 8816, 8817, 8818, 8819, 8820, 8821, 8821, 8822, + 8823, 4716, 8825, 8826, 8827, 8827, 8828, 8829, 8830, 8831, 8831, 8832, 8833, + 8834, 8835, 8835, 8836, 8837, 8838, 8839, 8840, 8841, 8842, 8843, 8844, 8845, + 8846, 8847, 8848, 8849, 8850, 8851, 8851, 8852, 8853, 8854, 8855, 8855, 8856, + 8857, 8858, 8859, 8859, 8860, 8861, 8862, 8863, 8863, 8864, 8865, 8497, 8497, + 8867, 8868, 8609, 8609, 8870, 8871, 4765, 8873, 8874, 8875, 8875, 8876, 8877, + 8878, 8879, 8879, 8880, 8881, 8882, 8883, 8883, 8884, 8885, 8886, 8887, 8888, + 8889, 8890, 8891, 8892, 8893, 8894, 8895, 8896, 8897, 8898, 8899, 8900, 8901, + 8902, 8903, 8903, 8904, 8905, 8906, 8872, 8869, 8866, 8824, 8802, 8650, 8612, + 8539, 8501, 8428, 8907, 8908, 8909, 8910, 8911, 8912, 8913, 8914, 8915, 8916, + 8917, 8907, 8908, 8909, 8910, 8911, 8912, 8913, 8914, 8915, 8916, 8917, 8918, + 8919, 8920, 8921, 8922, 8923, 92, 8924, 8925, 8925, 8926, 8927, 8928, 8929, + 8929, 8930, 8931, 8932, 8933, 8933, 8934, 8935, 8936, 8937, 8937, 8938, 8939, + 4834, 8941, 8942, 8943, 8944, 8945, 8946, 8947, 8948, 8949, 8950, 8951, 8952, + 8953, 8954, 8955, 8955, 8956, 8957, 8958, 8959, 8959, 8960, 8961, 4857, 8963, + 8964, 8965, 8966, 8967, 8968, 8969, 8970, 8971, 8972, 8973, 8974, 8975, 8976, + 8977, 8977, 8978, 8979, 8980, 8981, 8981, 8982, 8983, 4880, 8985, 4883, 8987, + 4886, 8989, 8990, 8991, 8991, 8992, 8993, 8994, 8988, 8986, 8995, 7554, 8996, + 8997, 8995, 7554, 8996, 8997, 8998, 8999, 9000, 7552, 7552, 9001, 9002, 9003, + 9004, 9005, 9005, 9006, 9007, 7530, 9009, 9010, 9011, 9012, 9012, 9013, 9014, + 9015, 9016, 9016, 9017, 9018, 9019, 9020, 9020, 9021, 9022, 9023, 9024, 9025, + 9026, 9027, 9028, 9028, 9029, 9030, 9031, 9032, 9032, 9033, 9034, 9035, 9036, + 9036, 9037, 9038, 9039, 9040, 9040, 9041, 9042, 9043, 9044, 9044, 9045, 9046, + 9047, 9048, 9048, 9049, 9050, 9051, 9052, 9053, 9054, 9055, 9056, 9056, 9057, + 9058, 9059, 9060, 9060, 9061, 9062, 9063, 9064, 9064, 9065, 9066, 9067, 9068, + 9068, 9069, 9070, 9071, 9072, 9072, 9073, 9074, 9075, 9076, 9076, 9077, 9078, + 9079, 9080, 9081, 9082, 9083, 9084, 9084, 9085, 9086, 9087, 9088, 9088, 9089, + 9090, 9091, 9092, 9092, 9093, 9094, 9095, 9096, 9096, 9097, 9098, 9099, 9100, + 9101, 9102, 9103, 9104, 9104, 9105, 9106, 9107, 9108, 9108, 9109, 9110, 9111, + 9112, 9112, 9113, 9114, 9115, 9116, 9116, 9117, 9118, 9119, 9120, 9121, 9122, + 9123, 9124, 9124, 9125, 9126, 9127, 9128, 9128, 9129, 9130, 9131, 9132, 9132, + 9133, 9134, 9135, 9136, 9136, 9137, 9138, 9139, 9140, 9140, 9141, 9142, 9143, + 9144, 9144, 9145, 9146, 9147, 9008, 8984, 8962, 8940, 9148, 9149, 9150, 9151, + 9152, 9148, 9149, 9150, 9151, 9152, 9153, 9154, 7741, 9156, 9157, 9158, 9159, + 9160, 9161, 9162, 9163, 9164, 9165, 9166, 9167, 9168, 9169, 9170, 9171, 9172, + 9173, 9174, 543, 543, 9175, 7576, 9176, 9177, 49, 8964, 9179, 9179, 9180, + 9181, 9182, 9183, 9183, 9184, 9185, 9186, 9187, 9187, 9188, 9189, 9190, 9178, + 9191, 9192, 9191, 9192, 9193, 9194, 7664, 9196, 9197, 9198, 9199, 7844, 9199, + 7844, 9200, 9201, 5101, 9203, 5104, 9205, 9206, 9204, 749, 1008, 9207, 9208, + 9209, 9210, 5112, 9212, 48, 9213, 49, 9211, 594, 765, 951, 1564, 9214, 9215, + 9216, 9217, 5120, 9219, 5123, 9221, 5126, 9223, 5129, 9225, 5132, 9227, 5135, + 9229, 5138, 9231, 5141, 9233, 5144, 9235, 9236, 9234, 9232, 9230, 9228, 9226, + 9224, 9222, 9220, 9237, 9238, 9239, 9240, 9241, 9242, 9243, 9244, 9245, 9246, + 9247, 5159, 9249, 9250, 9251, 9252, 9253, 5166, 9255, 9256, 9257, 9258, 9259, + 9260, 9254, 9248, 9261, 9262, 9263, 9264, 9265, 5179, 9267, 5182, 9269, 43, + 9270, 2, 9268, 9266, 9218, 340, 512, 763, 764, 1086, 9271, 9272, 9273, 9274, + 9275, 9276, 9277, 9278, 9279, 9280, 9281, 9282, 9282, 9283, 9284, 9285, 9286, + 9286, 9287, 9288, 5204, 9290, 5207, 9292, 5210, 9294, 5213, 9296, 5216, 9298, + 5219, 9300, 5222, 9302, 9303, 9301, 9299, 9297, 9295, 9293, 9291, 9304, 9305, + 9306, 9307, 9308, 9309, 9310, 9311, 9312, 5235, 9314, 5238, 9316, 5241, 9318, + 5244, 9320, 5247, 9322, 9323, 9321, 9319, 9317, 9315, 7282, 9324, 9325, 9326, + 9327, 9328, 9329, 9330, 5258, 9332, 5261, 9334, 5264, 9336, 5267, 9338, 9339, + 268, 1738, 9340, 9341, 9342, 5274, 9344, 9345, 9343, 9337, 9335, 9333, 9346, + 9347, 9348, 9349, 9350, 9351, 9352, 5285, 9354, 9355, 9356, 9357, 9358, 5292, + 9360, 9361, 9362, 9363, 9364, 5299, 9366, 5302, 9368, 5305, 9370, 5308, 9372, + 9373, 9371, 9369, 9367, 9365, 9359, 9374, 9375, 9376, 9377, 9378, 9379, 9380, + 9381, 5320, 9383, 9384, 9385, 9386, 9387, 9388, 9389, 9390, 9391, 9392, 9382, + 9353, 9331, 9313, 9393, 9394, 9395, 9396, 9397, 9398, 9399, 5339, 9401, 9402, + 9403, 9404, 9405, 9406, 1810, 9407, 9408, 9409, 5350, 9411, 9412, 9413, 9414, + 9415, 9416, 474, 475, 476, 9417, 9418, 9419, 9420, 9410, 7363, 7689, 9421, + 9422, 9423, 9424, 5366, 9426, 5369, 9428, 9429, 9430, 9431, 9432, 9433, 9434, + 9435, 9436, 9437, 9427, 457, 7371, 9438, 9439, 9440, 9441, 5385, 9443, 9444, + 229, 9445, 9446, 9447, 5392, 9449, 5395, 9451, 5398, 9453, 5401, 9455, 9456, + 9454, 9452, 9450, 9457, 9458, 9459, 9460, 9461, 9462, 9463, 9448, 7377, 9464, + 9465, 9466, 9467, 5416, 9469, 5419, 9471, 5422, 9473, 9474, 9472, 9470, 502, + 9475, 9476, 9477, 9478, 9479, 5431, 9481, 9482, 9483, 9484, 9485, 5438, 9487, + 5441, 9489, 9490, 9488, 9491, 9492, 9493, 9494, 5449, 9496, 9497, 9498, 9499, + 9500, 5456, 9502, 9503, 9504, 9505, 9506, 9507, 9508, 9509, 9510, 9511, 9501, + 9495, 9486, 9480, 9512, 9513, 9514, 9515, 9516, 9517, 9518, 5475, 9520, 9521, + 9522, 9523, 9524, 9525, 9526, 9527, 9528, 5486, 9530, 5489, 9532, 5492, 9534, + 5495, 9536, 9537, 9535, 9533, 9531, 9538, 9539, 9540, 9541, 9542, 9543, 9544, + 9545, 9546, 9547, 9548, 9529, 9549, 9550, 9551, 9552, 5514, 9554, 5517, 9556, + 9557, 9555, 7389, 9558, 9559, 9560, 9561, 5525, 9563, 5528, 9565, 5531, 9567, + 5534, 9569, 12, 9570, 245, 247, 248, 249, 250, 251, 448, 515, 9571, 9572, + 9573, 5541, 9575, 5544, 9577, 9578, 9576, 9574, 9568, 9566, 9564, 7404, 9579, + 9580, 9581, 9582, 9583, 9584, 9585, 9586, 5556, 9588, 5559, 9590, 5562, 9592, + 9593, 72, 9591, 73, 9589, 263, 9594, 9595, 9596, 9597, 9598, 5571, 9600, + 5574, 9602, 5577, 9604, 5580, 9606, 9607, 195, 951, 2024, 2026, 2027, 2028, + 9608, 9609, 9610, 5587, 9612, 5590, 9614, 5593, 9616, 9617, 9615, 9613, 9611, + 9605, 9603, 9601, 9599, 9618, 9619, 9620, 9621, 9622, 9623, 9624, 9625, 9626, + 9627, 9628, 9587, 9562, 9553, 9519, 9468, 9442, 9425, 9400, 1611, 7721, 7721, + 9629, 9630, 9631, 9632, 9633, 9634, 9635, 9636, 9637, 9638, 9639, 7418, 7419, + 9641, 9642, 2075, 9644, 2076, 9646, 9647, 9645, 9648, 9649, 9650, 9651, 2080, + 9653, 2081, 9655, 2082, 9657, 2083, 9659, 9660, 9658, 9656, 9654, 9661, 9662, + 9663, 9664, 9665, 9666, 2089, 9668, 2090, 9670, 9671, 9669, 9672, 9673, 9674, + 9675, 2094, 9677, 2095, 9679, 9680, 9678, 9681, 9682, 9683, 9684, 2099, 9686, + 9687, 9688, 9689, 9690, 2102, 9692, 2103, 9694, 2104, 9696, 9697, 9695, 9693, + 9698, 9699, 9700, 9701, 9702, 2109, 9704, 2110, 9706, 2111, 9708, 2112, 9710, + 2113, 9712, 2114, 9714, 2115, 9716, 9717, 9715, 9713, 9711, 9709, 9707, 9705, + 9718, 9719, 9720, 9721, 9722, 9723, 9724, 9725, 9726, 2124, 9728, 2125, 9730, + 2126, 9732, 2127, 9734, 2128, 9736, 2129, 9738, 2130, 9740, 2131, 9742, 9743, + 9741, 9739, 9737, 9735, 9733, 9731, 9729, 9744, 9745, 9746, 9747, 9748, 9749, + 9750, 9751, 9752, 9753, 9754, 9727, 9703, 9691, 9685, 9676, 9667, 9652, 9755, + 9756, 9757, 9758, 9759, 9760, 9761, 9762, 9763, 9764, 2150, 9766, 2151, 9768, + 2152, 9770, 2153, 9772, 2154, 9774, 2155, 9776, 2156, 9778, 9779, 9777, 9775, + 9773, 9771, 9769, 9767, 9780, 9781, 9782, 9783, 9784, 9785, 9786, 9787, 9788, + 2165, 9790, 2166, 9792, 2167, 9794, 2168, 9796, 2169, 9798, 2170, 9800, 9801, + 9799, 9797, 9795, 9793, 9791, 9802, 9803, 9804, 9805, 9806, 9807, 9808, 9809, + 2178, 9811, 2179, 9813, 2180, 9815, 2181, 9817, 2182, 9819, 9820, 9818, 9816, + 9814, 9812, 9821, 9822, 9823, 9824, 9825, 9826, 9827, 2189, 9829, 2190, 9831, + 2191, 9833, 2192, 9835, 9836, 9834, 9832, 9830, 9837, 9838, 9839, 9840, 9841, + 9842, 9843, 9828, 9810, 9789, 9844, 9845, 9846, 9847, 9848, 9849, 2203, 9851, + 9852, 9853, 9854, 9855, 2206, 9857, 2207, 9859, 2208, 9861, 2209, 9863, 9864, + 9862, 9860, 9858, 9865, 9866, 9867, 9868, 9869, 9870, 9871, 9856, 9872, 9873, + 9874, 9875, 2218, 9877, 2219, 9879, 2220, 9881, 9882, 9880, 9878, 9883, 9884, + 9885, 9886, 9887, 2225, 9889, 9890, 9891, 9892, 9893, 2228, 9895, 2229, 9897, + 9898, 9896, 9899, 9900, 9901, 9902, 2233, 9904, 9905, 9906, 9907, 9908, 9909, + 9903, 9894, 9888, 9910, 9911, 9912, 9913, 9914, 9915, 2241, 9917, 9918, 9919, + 9920, 9921, 9922, 9923, 9924, 9925, 2246, 9927, 2247, 9929, 2248, 9931, 9932, + 9930, 9928, 9933, 9934, 9935, 9936, 9937, 2253, 9939, 9940, 9941, 9942, 9943, + 9944, 9938, 9945, 9946, 9947, 9948, 9949, 9926, 9916, 9876, 9850, 9765, 9950, + 9951, 9952, 9953, 9954, 9955, 9956, 9957, 2266, 9959, 9960, 9961, 9962, 9963, + 9964, 9965, 9966, 9967, 2271, 9969, 9970, 9971, 9972, 9973, 2274, 9975, 9976, + 9977, 9978, 9979, 9980, 9974, 9981, 9982, 9983, 9984, 2280, 9986, 9987, 9988, + 9989, 9990, 9991, 9992, 9993, 9994, 9995, 9985, 9968, 9996, 9997, 9998, 9999, + 10000, 2289, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10010, + 2294, 10012, 10013, 10014, 10015, 10016, 10017, 10018, 10019, 10020, 10021, + 10011, 10022, 10023, 10024, 10025, 2302, 10027, 10028, 10029, 10030, 10031, + 10032, 10033, 10034, 10035, 10036, 10037, 10038, 10039, 2309, 10041, 10042, + 10043, 10044, 10045, 10046, 10047, 10048, 10049, 10050, 10051, 10052, 10053, + 2316, 10055, 10056, 10057, 10058, 10059, 10060, 10061, 10062, 10063, 2321, + 10065, 2322, 10067, 2323, 10069, 2324, 10071, 10072, 10070, 10068, 10066, + 10073, 10074, 10075, 10076, 10077, 10078, 10079, 10080, 10081, 10082, 10083, + 10064, 10084, 10085, 10086, 10087, 10088, 10054, 10040, 10026, 10001, 9958, + 10089, 10090, 10091, 10092, 10093, 10094, 10095, 10096, 10097, 10098, 10098, + 10099, 10100, 10101, 10102, 10102, 10103, 10104, 10105, 10106, 10106, 10107, + 10108, 10109, 10110, 10110, 10111, 10112, 10113, 9643, 9640, 10114, 10114, + 10115, 7424, 7425, 7426, 7427, 7428, 7725, 7726, 7431, 10116, 10117, 10118, + 10119, 10120, 10120, 10121, 10122, 6102, 10124, 10125, 10126, 10127, 10128, + 10129, 10130, 10130, 10131, 10132, 10133, 10134, 10134, 10135, 10136, 10137, + 10138, 10138, 10139, 10140, 10141, 10142, 10143, 10144, 10145, 10146, 10147, + 10148, 10149, 10150, 10151, 10152, 10153, 10154, 10155, 10156, 10157, 10158, + 10159, 10160, 6141, 10162, 10163, 10164, 10165, 10166, 10167, 10168, 10168, + 10169, 10170, 10171, 10172, 10172, 10173, 10174, 10175, 10176, 10176, 10177, + 10178, 10179, 10180, 10180, 10181, 10182, 10183, 10184, 10184, 10185, 10186, + 10187, 10188, 10189, 10190, 10191, 10192, 10193, 10194, 10195, 10196, 10197, + 10198, 10199, 10200, 10201, 10202, 10203, 10204, 10205, 10206, 10207, 10208, + 10208, 10209, 10210, 10211, 10212, 10212, 10213, 10214, 10215, 10216, 10216, + 10217, 10218, 10219, 10220, 10220, 10221, 10222, 10223, 10224, 10224, 10225, + 10226, 10227, 10228, 10228, 10229, 10230, 10231, 10232, 10232, 10233, 10234, + 10235, 749, 750, 10236, 10237, 10238, 6220, 10240, 10241, 10242, 10243, 10244, + 10245, 10246, 10246, 10247, 10248, 10249, 10250, 10250, 10251, 10252, 10253, + 10254, 10254, 10255, 10256, 10257, 10258, 10258, 10259, 10260, 10261, 10262, + 10262, 10263, 10264, 10265, 10266, 10267, 10268, 10269, 10270, 10270, 10271, + 10272, 10273, 10274, 10274, 10275, 10276, 10277, 10278, 10278, 10279, 10280, + 10281, 10282, 10282, 10283, 10284, 10285, 10286, 10286, 10287, 10288, 10289, + 10290, 10290, 10291, 10292, 10293, 10294, 10294, 10295, 10296, 10297, 10298, + 10299, 10300, 43, 10301, 44, 10239, 340, 763, 764, 765, 782, 791, 1086, 10302, + 10303, 10304, 10305, 10306, 10307, 10308, 10309, 10310, 10311, 10312, 10313, + 10314, 10315, 10316, 10317, 10318, 10319, 10320, 10321, 6304, 10323, 6307, + 10325, 6310, 10327, 6313, 10329, 6316, 10331, 10332, 10330, 10328, 10326, + 10324, 10334, 10333, 10335, 10336, 10337, 10338, 10339, 10340, 314, 9498, + 10341, 10342, 10343, 10344, 10345, 10346, 10347, 10348, 10349, 10349, 10350, + 10351, 10352, 10322, 10161, 10353, 10353, 10354, 10355, 10356, 10357, 6345, + 10359, 10360, 10361, 10361, 10362, 10363, 10364, 10365, 10366, 10367, 10368, + 10369, 10370, 10371, 10372, 10373, 10374, 10375, 6364, 10377, 10378, 10379, + 10380, 10381, 10382, 10383, 10384, 10385, 10386, 10387, 10388, 10389, 10390, + 10391, 10392, 10393, 10394, 10395, 10395, 10396, 10397, 10398, 10399, 10399, + 10400, 10401, 10402, 10403, 10403, 10404, 10405, 10406, 10407, 10408, 10409, + 10410, 10411, 10412, 10413, 10414, 10415, 10416, 10417, 6407, 10419, 10420, + 10421, 10422, 10423, 10424, 10425, 10426, 10427, 10428, 10429, 10430, 10431, + 10432, 750, 10433, 10434, 10435, 6426, 10437, 10438, 10439, 10440, 10441, + 10442, 10443, 10444, 10445, 10446, 10447, 10448, 10449, 10450, 10451, 10452, + 10453, 6445, 10455, 10456, 10457, 10458, 10459, 10460, 10461, 10462, 10463, + 10464, 10465, 10466, 10467, 10468, 10469, 10470, 10471, 6464, 10473, 10474, + 10475, 10476, 10477, 10478, 10479, 10480, 10481, 10482, 10483, 10484, 10485, + 10486, 10487, 10488, 10489, 6483, 10491, 10492, 10493, 10494, 10495, 10496, + 10497, 10498, 10499, 10500, 10501, 10502, 10503, 10504, 10505, 10506, 10507, + 6502, 10509, 10510, 10511, 10512, 10513, 10514, 10515, 10516, 10517, 10518, + 10519, 10520, 10521, 10522, 10523, 10524, 10525, 6521, 10527, 10528, 10529, + 10530, 10531, 10532, 10533, 10534, 10535, 10536, 10537, 10538, 10539, 10540, + 10541, 10542, 10543, 10334, 10545, 10546, 10547, 10548, 10549, 10550, 10551, + 10552, 10553, 10554, 10555, 10556, 10557, 10558, 6555, 10560, 10561, 10562, + 10563, 10564, 10565, 10566, 10567, 10568, 10569, 10570, 10571, 10572, 10573, + 10574, 10575, 10576, 40, 10577, 48, 10559, 49, 10544, 50, 10526, 3, 10508, + 41, 10490, 42, 10472, 43, 10454, 44, 10436, 10578, 10579, 10580, 10581, 10582, + 10583, 10584, 10585, 10586, 10587, 10588, 10589, 10590, 10591, 10592, 10593, + 10594, 10595, 10596, 10597, 10598, 10599, 10600, 10601, 10602, 10603, 10604, + 10605, 10418, 10606, 10607, 10608, 10609, 10610, 10376, 10358, 10611, 10612, + 10613, 10614, 10615, 10616, 10617, 10617, 10618, 10619, 10620, 10123, 9289, + 10621, 10622, 10623, 10621, 10622, 10623, 10624, 10625, 6623, 10627, 10628, + 10629, 10630, 10631, 10632, 10633, 10634, 10635, 10636, 10637, 10638, 10639, + 10640, 10641, 10641, 10642, 10643, 10644, 10645, 10646, 10647, 10648, 10649, + 10649, 10650, 10651, 10652, 10653, 10653, 10654, 10655, 7888, 10657, 10658, + 10659, 10660, 10661, 10662, 6661, 10664, 10665, 10666, 10666, 10667, 10668, + 10669, 10670, 10670, 10671, 10672, 10673, 10663, 10674, 10675, 10674, 10675, + 10676, 10677, 6677, 10679, 10680, 10681, 10682, 10683, 10684, 10685, 10686, + 10687, 10688, 10689, 10690, 10691, 10692, 10693, 10694, 10695, 6696, 10697, + 10698, 10699, 10700, 10701, 10702, 10703, 10704, 10705, 10706, 10707, 10708, + 10709, 10710, 10711, 10712, 10713, 10714, 10715, 10716, 10717, 10718, 10719, + 10720, 10721, 10722, 10723, 10724, 10725, 10726, 10727, 10728, 10729, 10730, + 10731, 10732, 10733, 10734, 10735, 10735, 10736, 10737, 10738, 10696, 10740, + 10739, 10740, 10741, 10742, 10743, 10678, 10744, 10745, 10744, 10745, 10746, + 10747, 6749, 10749, 10750, 512, 762, 763, 764, 765, 10751, 10752, 10753, + 10754, 10755, 10755, 10756, 10757, 10758, 10759, 10759, 10760, 10761, 10762, + 10763, 10763, 10764, 10765, 10766, 512, 762, 763, 764, 765, 10767, 10767, + 10768, 10769, 7417, 10771, 10772, 6775, 10774, 10775, 10776, 10776, 10777, + 10778, 10779, 10780, 10780, 10781, 10782, 10783, 10784, 10784, 10785, 10786, + 10787, 10788, 10788, 10789, 10790, 10791, 10773, 10793, 10792, 10794, 10795, + 10796, 10797, 10797, 10798, 10799, 6803, 10801, 10802, 10803, 10803, 10804, + 10805, 10806, 10807, 10807, 10808, 10809, 10810, 10811, 10811, 10812, 10813, + 10814, 10815, 10816, 10817, 10818, 10819, 10820, 10821, 10822, 10823, 10824, + 10825, 10826, 10827, 10828, 10829, 10830, 10831, 10832, 10833, 10834, 10835, + 10835, 10836, 10837, 10838, 10839, 10839, 10840, 10841, 10842, 10843, 10843, + 10844, 10845, 10846, 10847, 10847, 10848, 10849, 10850, 10851, 10851, 10852, + 10853, 10854, 10855, 10855, 10856, 10857, 10858, 10859, 10859, 10860, 10861, + 10862, 10863, 10863, 10864, 10865, 10866, 10867, 10867, 10868, 10869, 10870, + 10871, 10871, 10872, 10873, 10874, 10875, 10875, 10876, 10877, 10878, 10879, + 10879, 10880, 10881, 10882, 10883, 10884, 10885, 10886, 10887, 10887, 10888, + 10889, 674, 7656, 7656, 10891, 10892, 8129, 10894, 10895, 10896, 10897, 10897, + 10898, 10899, 10900, 10901, 10901, 10902, 10903, 10904, 10905, 10905, 10906, + 10907, 10908, 10909, 10909, 10910, 10911, 8155, 10913, 10914, 10915, 10916, + 10916, 10917, 10918, 10919, 10920, 10920, 10921, 10922, 975, 10126, 10924, + 10925, 10926, 10927, 10927, 10928, 10929, 7482, 7482, 10931, 10932, 10933, + 10934, 10934, 10935, 10936, 10937, 10938, 10939, 10940, 8185, 8186, 8185, + 8186, 8190, 10942, 10943, 10944, 10945, 10946, 10947, 8198, 8199, 8198, 8199, + 8203, 10949, 10950, 10951, 10952, 10953, 10954, 10955, 10948, 1008, 10956, + 10957, 10958, 10959, 10960, 1008, 10956, 10957, 10961, 10962, 10963, 10964, + 10965, 10965, 10966, 10967, 10968, 2, 10941, 10930, 10969, 10970, 10971, + 10969, 10970, 10971, 10972, 10973, 10793, 8258, 10975, 10976, 10977, 10978, + 10979, 10980, 10981, 10982, 10982, 10983, 10984, 10985, 10986, 10986, 10987, + 10988, 10989, 10990, 10990, 10991, 10992, 10993, 10994, 10994, 10995, 10996, + 10997, 10998, 10998, 10999, 11000, 11001, 11002, 11002, 11003, 11004, 11005, + 10974, 10923, 10912, 10893, 10890, 10800, 10770, 10748, 10656, 10626, 9202, + 9195, 9155, 8330, 7262, 7228, 7041, 10641, 11006, 11007, 11008, 11009, 11010, + 11011, 11012, 11013, 11014, 11015, 11016, 11017, 11018, 11019, 11020, 11021, + 11022, 10641, 11006, 11007, 11008, 11009, 11010, 11011, 11012, 11013, 11014, + 11015, 11016, 11017, 11018, 11019, 11020, 11021, 11022, 7669, 11023, 8061, + 6638, 7009, 7010, 7011, 7012, 7013, 7014, 7015, 7016, 7017, 7018, 7019, 7020, + 7021, 7022, 7023, 7024, 7025, 6638, 7009, 7010, 7011, 7012, 7013, 7014, 7015, + 7016, 7017, 7018, 7019, 7020, 7021, 7022, 7023, 7024, 7025, 3506, 7026, 3914, + 11024, 11025, 2848, 2848, 11027, 11027, 11028, 11028, 11029, 11029, 11030, + 11030, 11031, 11031, 11032, 11032, 11033, 11034, 11034, 11035, 11035, 11036, + 11036, 11037, 11037, 11038, 11038, 11039, 11039, 11040, 11040, 11041, 11041, + 11042, 11043, 11043, 11044, 11044, 2934, 2931, 11046, 11047, 11048, 11049, + 11050, 11051, 11052, 11052, 11053, 11054, 11054, 2982, 2982, 11056, 11056, + 3004, 11058, 11059, 11060, 11060, 2997, 2997, 11062, 11062, 11061, 11061, + 11057, 11057, 11055, 11055, 11045, 11045, 3035, 3035, 11067, 11067, 11068, + 11068, 11069, 11069, 11070, 11071, 11072, 11072, 3077, 3070, 3089, 11076, + 11074, 11075, 11077, 11078, 11079, 11080, 11080, 11081, 11081, 3121, 3121, + 11083, 11083, 11084, 11084, 3162, 3239, 3242, 3245, 3228, 3225, 3222, 3219, + 2830, 3216, 3209, 3202, 2823, 3195, 3188, 3176, 3179, 3173, 11086, 3155, + 11077, 11078, 3146, 3143, 3140, 3146, 3143, 3140, 11033, 11033, 11097, 11097, + 11098, 11098, 11099, 11099, 11100, 11100, 11101, 11101, 11102, 11102, 11103, + 11103, 11104, 11104, 11105, 11105, 11062, 11062, 11106, 11106, 11070, 11109, + 11109, 3332, 3332, 11111, 11111, 11112, 11112, 11113, 11113, 11114, 11114, + 11115, 11115, 11116, 11116, 11117, 11117, 11118, 11118, 11119, 11119, 11120, + 11120, 11121, 11121, 3329, 3329, 3383, 3383, 11122, 11122, 11123, 11123, + 3400, 11125, 543, 543, 11126, 3419, 3419, 11128, 11128, 11129, 11129, 11130, + 11130, 11131, 11131, 11132, 11132, 11133, 11133, 11134, 11134, 11135, 11135, + 11136, 11136, 11137, 11137, 11138, 11138, 11139, 11139, 3478, 3478, 11141, + 11141, 11142, 11142, 11143, 11143, 11144, 11144, 11140, 11140, 2841, 11147, + 3514, 3162, 3553, 3553, 11150, 11150, 3242, 3546, 3222, 3225, 3228, 3538, + 3535, 3195, 3179, 3176, 3525, 11149, 11090, 11095, 11151, 11151, 11155, 11156, + 11152, 11153, 11154, 11148, 11148, 3578, 11159, 11160, 11161, 11162, 11163, + 11163, 11164, 11164, 3613, 11166, 11167, 3635, 3635, 11169, 11169, 11170, + 11170, 11171, 11171, 11172, 11172, 3662, 3662, 11174, 11174, 3677, 3677, + 11176, 11176, 11177, 11177, 11178, 11178, 11175, 11175, 11173, 11173, 11064, + 11064, 512, 762, 763, 764, 765, 11179, 11180, 11181, 11182, 11179, 11180, + 11181, 11182, 11183, 11183, 11184, 11184, 11185, 11185, 11186, 11186, 11168, + 11165, 11187, 11187, 11188, 11189, 11190, 11190, 11157, 11158, 11157, 11158, + 3734, 3745, 11194, 11195, 11196, 11197, 11198, 11199, 11200, 11200, 11193, + 11193, 3785, 3785, 11203, 11203, 11204, 11204, 11205, 11205, 11206, 11206, + 11207, 3816, 3816, 11209, 11209, 11210, 11210, 11211, 11211, 11212, 11212, + 11213, 11213, 11214, 11214, 11215, 11215, 11216, 11216, 11217, 11217, 11218, + 11218, 3867, 3867, 11220, 11220, 11221, 11221, 11222, 11222, 11223, 11223, + 11224, 11224, 11225, 11225, 11226, 11226, 11227, 11227, 11228, 11228, 2823, + 11230, 11231, 11231, 11232, 11232, 11233, 11233, 11234, 11234, 11235, 11235, + 11236, 11236, 11237, 11237, 11229, 11219, 3952, 11241, 11238, 11238, 11239, + 11240, 11208, 11242, 11242, 11243, 11244, 3973, 3973, 11246, 11246, 11247, + 11247, 11248, 11248, 11249, 11249, 4000, 11251, 11252, 11252, 4019, 4019, + 11254, 11254, 11255, 11255, 4038, 4038, 4041, 4041, 4053, 4053, 4056, 4056, + 11258, 11257, 1008, 11259, 11260, 11261, 11261, 11256, 11256, 4082, 4093, + 4093, 11265, 11265, 11266, 11266, 11267, 11267, 11268, 11268, 11269, 11264, + 11271, 11270, 11272, 11272, 11273, 11273, 11274, 11274, 11275, 11275, 11276, + 11276, 11277, 11277, 11262, 11263, 11262, 11263, 11253, 11253, 11250, 11250, + 11245, 11245, 11201, 11202, 11201, 11202, 11191, 11192, 11191, 11192, 11145, + 11145, 11146, 11146, 11127, 11127, 11124, 11124, 11110, 11110, 11107, 11107, + 11108, 11108, 4164, 4164, 11290, 11290, 11291, 11291, 11292, 11292, 11293, + 11293, 11278, 11279, 11280, 11281, 11282, 11283, 11284, 11285, 11286, 11287, + 11288, 11289, 11278, 11279, 11280, 11281, 11282, 11283, 11284, 11285, 11286, + 11287, 11288, 11289, 11088, 11089, 11090, 11091, 11092, 11095, 11087, 11093, + 11094, 11096, 11085, 11085, 11082, 11082, 4229, 4229, 11299, 11299, 11300, + 11300, 4195, 4195, 4256, 4253, 4250, 4247, 4244, 11301, 4226, 4223, 4220, + 4217, 4214, 4211, 4208, 4205, 4202, 11302, 4256, 4253, 4250, 4247, 4244, + 11301, 4226, 4223, 4220, 4217, 4214, 4211, 4208, 4205, 4202, 11302, 4282, + 4282, 11304, 11304, 11305, 11305, 11306, 11306, 11307, 11307, 11303, 4310, + 4310, 11310, 11310, 11311, 11311, 11312, 11313, 11314, 11315, 4345, 4345, + 11317, 11317, 11318, 11318, 11319, 11320, 11321, 11322, 11323, 11316, 4385, + 4385, 11326, 11326, 11327, 11327, 11328, 11329, 11330, 11331, 11332, 4424, + 4424, 11334, 11334, 11335, 11335, 11336, 11337, 11338, 11339, 4459, 4459, + 11341, 11341, 11342, 11342, 11343, 11344, 11345, 11346, 11347, 11340, 4499, + 4499, 11350, 11350, 11351, 11351, 11352, 11353, 11354, 11355, 11356, 4538, + 4538, 11358, 11358, 11359, 11359, 11360, 11361, 11362, 11363, 11364, 11365, + 11365, 11366, 11366, 11367, 11367, 11368, 11368, 11369, 11369, 11370, 11370, + 11371, 11371, 11372, 11372, 11373, 11373, 11374, 11374, 4617, 4617, 11376, + 11376, 11377, 11377, 11378, 11379, 11380, 11381, 4652, 4652, 11383, 11383, + 11384, 11384, 11385, 11386, 11387, 11388, 11389, 11382, 11375, 11375, 4693, + 4693, 11393, 11393, 11394, 11394, 11395, 4716, 4716, 11397, 11397, 11398, + 11398, 11399, 11400, 11401, 11402, 11402, 11403, 11403, 11404, 11404, 4765, + 4765, 11406, 11406, 11407, 11407, 11408, 11409, 11410, 11411, 11412, 11412, + 11349, 11349, 11324, 11324, 11405, 11405, 11396, 11396, 11390, 11391, 11392, + 11390, 11391, 11392, 11357, 11357, 11349, 11349, 11348, 11348, 11333, 11333, + 11324, 11324, 11325, 11325, 11308, 11309, 11308, 11309, 11413, 11414, 11415, + 11416, 11417, 11418, 11419, 11420, 11421, 11422, 11423, 11413, 11414, 11415, + 11416, 11417, 11418, 11419, 11420, 11421, 11422, 11423, 92, 11424, 11425, + 11425, 11426, 11426, 11427, 11427, 4834, 11429, 11430, 11431, 11431, 4857, + 11433, 11434, 11435, 11435, 4886, 4886, 11437, 3329, 4883, 4880, 11437, 3329, + 4883, 4880, 3383, 3383, 11438, 11117, 11440, 11440, 11441, 11441, 11442, + 11442, 11443, 11444, 11444, 11445, 11445, 11446, 11446, 11447, 11447, 11448, + 11448, 11449, 11449, 11450, 11451, 11451, 11452, 11452, 11453, 11453, 11454, + 11454, 11455, 11455, 11456, 11456, 11457, 11458, 11458, 11459, 11459, 11460, + 11460, 11461, 11461, 11462, 11463, 11463, 11464, 11464, 11465, 11465, 11466, + 11466, 11467, 11468, 11468, 11469, 11469, 11470, 11470, 11471, 11471, 11472, + 11472, 11473, 11473, 11439, 11439, 11436, 11436, 11432, 11432, 11428, 11428, + 11159, 11479, 11480, 11481, 11482, 49, 782, 11484, 11484, 11485, 11485, 11486, + 11486, 543, 543, 11483, 11126, 49, 782, 11489, 11489, 11490, 11490, 11491, + 11491, 11145, 48, 543, 750, 49, 749, 1008, 5104, 5101, 5166, 5159, 5144, + 5141, 5138, 5135, 5132, 5129, 5126, 5123, 5120, 43, 437, 2, 591, 835, 11496, + 11497, 11498, 594, 765, 951, 1564, 11494, 11495, 340, 512, 763, 764, 1086, + 11499, 11500, 11501, 11502, 11503, 11504, 11504, 268, 1738, 5267, 5292, 5285, + 5320, 11509, 5308, 5305, 5302, 5299, 11507, 11508, 5274, 11506, 5264, 5261, + 5258, 3089, 5247, 5244, 5241, 5238, 5235, 5222, 5219, 5216, 5213, 5210, 5207, + 5204, 5339, 5350, 474, 475, 476, 11516, 1810, 11515, 5369, 11519, 5401, 5398, + 5395, 5392, 229, 5385, 5456, 11523, 5449, 5441, 5438, 5431, 502, 5422, 5419, + 5416, 5475, 5495, 5492, 5489, 5486, 11530, 11529, 12, 1964, 245, 247, 248, + 249, 250, 251, 448, 515, 11533, 72, 1985, 73, 1982, 1023, 1024, 1025, 195, + 951, 2024, 2026, 2027, 2028, 11537, 263, 5562, 11535, 11536, 5593, 5590, + 5587, 11538, 5577, 5574, 5571, 11539, 3225, 5544, 5541, 11534, 5531, 5528, + 5525, 3209, 5517, 5514, 11531, 11532, 11524, 11525, 11526, 11527, 11528, + 3195, 11521, 11522, 457, 3188, 11520, 5366, 3179, 3525, 11517, 11518, 11510, + 11511, 11512, 11513, 11514, 2131, 2130, 2129, 2128, 2127, 2126, 2125, 2124, + 2115, 2114, 2113, 2112, 2111, 2110, 2109, 2104, 2103, 2102, 2099, 2095, 2094, + 2090, 2089, 2083, 2082, 2081, 2080, 2076, 2075, 2192, 2191, 2190, 2189, 2182, + 2181, 2180, 2179, 2178, 2170, 2169, 2168, 2167, 2166, 2165, 2156, 2155, 2154, + 2153, 2152, 2151, 2150, 2209, 2208, 2207, 2206, 2203, 2233, 2229, 2228, 2225, + 2220, 2219, 2218, 2241, 2253, 2248, 2247, 2246, 11568, 11569, 11567, 11563, + 11564, 11565, 11566, 11561, 11562, 11557, 11558, 11559, 11560, 11549, 11550, + 11551, 11552, 11553, 11554, 11555, 11556, 2266, 2274, 2271, 2280, 11579, + 11577, 11578, 11576, 2289, 2294, 11584, 11583, 2302, 11587, 2309, 11589, + 2316, 2324, 2323, 2322, 2321, 11592, 11591, 11593, 11594, 11590, 11588, 11585, + 11586, 11580, 11581, 11582, 11570, 11571, 11572, 11573, 11574, 11575, 11595, + 11596, 11597, 11598, 11599, 11600, 11601, 11601, 11602, 11602, 11603, 11603, + 11604, 11604, 3242, 3239, 1611, 11151, 11151, 11540, 11541, 11542, 11543, + 11544, 11545, 11546, 11547, 11548, 11605, 11605, 11606, 11088, 11089, 11090, + 11091, 11092, 11155, 11156, 11095, 11607, 6102, 11609, 11609, 11610, 11610, + 11611, 11611, 11612, 11613, 11614, 11615, 6141, 11617, 11617, 11618, 11618, + 11619, 11619, 11620, 11620, 11621, 11621, 11622, 11623, 11624, 11625, 11626, + 11627, 11627, 11628, 11628, 11629, 11629, 11630, 11630, 11631, 11631, 11632, + 11632, 11633, 11633, 6220, 11635, 11635, 11636, 11636, 11637, 11637, 11638, + 11638, 11639, 11639, 11640, 11641, 11641, 11642, 11642, 11643, 11643, 11644, + 11644, 11645, 11645, 11646, 11646, 11647, 11647, 43, 11648, 44, 749, 750, + 11634, 340, 763, 764, 765, 782, 791, 1086, 11649, 11650, 11651, 11652, 11653, + 6313, 6316, 6310, 6307, 6304, 314, 5449, 11655, 11656, 11657, 11657, 11654, + 11616, 6345, 6345, 11661, 11662, 6364, 11664, 11665, 11666, 11667, 11667, + 11668, 11668, 11669, 11669, 11670, 11671, 6407, 11673, 11674, 6426, 11676, + 11677, 6445, 11679, 11680, 6464, 11682, 11683, 6483, 11685, 11686, 6502, + 11688, 11689, 6521, 11691, 11692, 6313, 11694, 11695, 6555, 11697, 11698, + 40, 11699, 48, 11696, 49, 11693, 50, 11690, 3, 11687, 41, 11684, 42, 11681, + 43, 11678, 44, 750, 11675, 11700, 11701, 11702, 11703, 11704, 11705, 11706, + 11707, 11708, 11709, 11710, 11711, 11712, 11672, 11713, 11714, 11663, 11658, + 11658, 11659, 11660, 11715, 11716, 11717, 791, 791, 11719, 11719, 11720, + 11720, 674, 11722, 11722, 11723, 11723, 11724, 11724, 11725, 11725, 11726, + 11726, 11727, 11721, 11721, 11718, 11718, 11608, 11608, 11505, 11505, 6623, + 11733, 11734, 11735, 11735, 11736, 11737, 11737, 3734, 6661, 6661, 11740, + 11740, 11739, 6677, 11743, 11744, 6696, 11746, 11747, 11748, 11749, 11750, + 11751, 11752, 11753, 11754, 11754, 11745, 11756, 11755, 11756, 11741, 11742, + 11741, 11742, 512, 762, 763, 764, 765, 6749, 11759, 11759, 11760, 11760, + 11761, 11761, 6775, 6775, 11763, 11763, 11764, 11764, 11765, 11765, 3245, + 11767, 11766, 6803, 6803, 11769, 11769, 11770, 11770, 11771, 11772, 11773, + 11774, 11775, 11776, 11776, 11777, 11777, 11778, 11778, 11779, 11779, 11780, + 11780, 11781, 11781, 11782, 11782, 11783, 11783, 11784, 11784, 11785, 11785, + 11786, 11786, 11787, 11787, 11788, 1564, 11790, 11791, 11792, 11793, 11793, + 11793, 11794, 11795, 11795, 11795, 11247, 11797, 11797, 11798, 11798, 11799, + 11799, 11252, 11801, 11801, 975, 6102, 11107, 11107, 11804, 11804, 4041, + 4038, 4041, 4038, 11257, 4056, 4053, 4056, 4053, 11258, 11807, 11806, 1008, + 11808, 11809, 1008, 11808, 11809, 11810, 11811, 11811, 2, 11805, 11803, 11803, + 11767, 11271, 11815, 11816, 11816, 11817, 11817, 11818, 11818, 11819, 11819, + 11820, 11820, 268, 268, 11822, 11822, 11823, 11823, 11824, 11824, 11825, + 11825, 11826, 11826, 11827, 11827, 11828, 11828, 11829, 11830, 11830, 11831, + 11831, 11832, 11832, 11833, 11833, 11834, 11834, 11835, 11835, 11836, 11836, + 11837, 11837, 11838, 11839, 11839, 11840, 11840, 314, 13491, 11842, 11843, + 11844, 11845, 11846, 11847, 11848, 11849, 11850, 11850, 11850, 11851, 11852, + 11852, 11852, 268, 268, 11854, 11854, 11855, 11855, 11856, 11856, 11857, + 11857, 11858, 11858, 11859, 11859, 11860, 11860, 11861, 11862, 11862, 11863, + 11863, 11864, 11864, 11865, 11865, 11866, 11866, 11867, 11867, 11868, 11868, + 11869, 11869, 11870, 11871, 11871, 11872, 11872, 340, 340, 11874, 11874, + 11875, 11875, 340, 340, 11877, 11877, 11878, 11878, 314, 314, 314, 340, 11881, + 11882, 11883, 11884, 11884, 11884, 11880, 11880, 11880, 11886, 11886, 11886, + 11885, 11885, 11885, 11879, 11879, 11876, 11876, 11873, 11873, 11853, 11853, + 11853, 11841, 11841, 437, 437, 11893, 11893, 11894, 11894, 11895, 11895, + 246, 246, 251, 251, 448, 448, 457, 481, 482, 314, 229, 493, 494, 495, 507, + 526, 523, 245, 246, 247, 248, 249, 250, 251, 515, 238, 237, 236, 235, 234, + 263, 535, 11910, 11906, 11907, 11909, 11908, 11905, 11903, 11904, 11902, + 11901, 11900, 11897, 11898, 11899, 11897, 11898, 11899, 11829, 11829, 11919, + 11919, 11920, 11920, 11921, 11921, 11922, 11922, 11923, 11923, 11924, 11924, + 11925, 11925, 11926, 11926, 11927, 11927, 314, 314, 11929, 11929, 11930, + 11930, 11928, 11928, 369, 369, 11933, 11933, 11934, 11934, 11935, 11935, + 11936, 11936, 11937, 11938, 11938, 594, 594, 11940, 11940, 11941, 11941, + 11942, 11942, 11943, 11943, 11944, 11944, 11945, 11945, 11946, 11946, 11947, + 11947, 11948, 11948, 11949, 11949, 11950, 11950, 621, 621, 11951, 11951, + 591, 591, 11952, 11953, 11954, 11952, 11953, 11954, 11955, 11955, 632, 11957, + 11958, 543, 543, 11959, 643, 643, 11961, 11961, 11962, 11962, 11963, 11963, + 11964, 11964, 11965, 11965, 11966, 11966, 11967, 11967, 11968, 11968, 11969, + 11969, 11970, 11970, 11971, 11971, 11972, 11972, 11973, 11973, 11974, 11974, + 263, 11976, 11977, 715, 715, 11979, 11979, 388, 393, 11982, 11981, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 11985, 11986, 11983, 11984, 694, + 462, 11989, 11990, 474, 475, 476, 469, 470, 701, 502, 518, 519, 245, 246, + 248, 249, 250, 251, 448, 515, 235, 237, 238, 540, 535, 536, 11998, 11999, + 11906, 11907, 11995, 11996, 11997, 11994, 11904, 11901, 11992, 11993, 11991, + 11900, 11987, 11988, 11980, 11980, 12000, 12001, 12002, 12003, 12004, 12005, + 12006, 12007, 12007, 11978, 11978, 767, 767, 12010, 12010, 12011, 12011, + 12012, 12012, 12013, 12013, 12014, 12014, 782, 782, 12016, 12016, 12017, + 12017, 11729, 11729, 12018, 12018, 12015, 12015, 11888, 11888, 512, 762, + 763, 764, 765, 12019, 12020, 12021, 12022, 12019, 12020, 12021, 12022, 12023, + 12023, 12024, 12024, 12025, 12025, 437, 12027, 12028, 12029, 12030, 12031, + 12032, 12032, 12033, 12033, 749, 750, 12035, 12036, 12037, 12038, 12034, + 12026, 12026, 12039, 12040, 12041, 12041, 12042, 12042, 12008, 12009, 12008, + 12009, 828, 828, 12045, 835, 12047, 12048, 12049, 12050, 12051, 12052, 12053, + 12054, 12054, 12046, 12046, 236, 12057, 507, 507, 12059, 12059, 12060, 12060, + 12061, 12061, 12062, 12062, 12063, 12063, 12064, 11903, 12066, 12067, 12067, + 12068, 12068, 12069, 12069, 12070, 12070, 12071, 12071, 12072, 12072, 234, + 234, 12074, 12074, 12075, 12075, 12076, 12076, 12077, 12077, 12078, 12078, + 12079, 12079, 12080, 12080, 12081, 12081, 12082, 12082, 12083, 12083, 12084, + 12084, 247, 247, 12086, 12086, 12087, 12087, 12088, 12088, 12089, 12089, + 12090, 12090, 12091, 12091, 12092, 12092, 12093, 12093, 12094, 12094, 12095, + 12095, 12096, 12085, 12073, 12073, 12097, 12098, 12099, 12099, 12065, 12058, + 12102, 12102, 12100, 12101, 951, 951, 12104, 12104, 12105, 12105, 12106, + 12106, 12107, 12107, 12108, 12108, 621, 12110, 12111, 12112, 12112, 975, + 975, 12114, 12114, 12115, 12115, 12116, 12116, 989, 989, 986, 986, 12118, + 12119, 12118, 12119, 1000, 1000, 997, 997, 12121, 12122, 12121, 12122, 12123, + 12120, 1008, 12124, 12125, 12126, 12126, 12117, 12117, 1026, 1025, 1024, + 1023, 1022, 1021, 1020, 1019, 1018, 12129, 1041, 1042, 12131, 12131, 12132, + 12132, 12133, 12133, 12134, 12134, 12135, 12135, 12136, 12130, 12138, 12137, + 12139, 12139, 12140, 12140, 12141, 12141, 12142, 12142, 12143, 12143, 12144, + 12144, 12127, 12128, 12127, 12128, 12113, 12113, 12109, 12109, 12103, 12103, + 12055, 12056, 12055, 12056, 12043, 12044, 12043, 12044, 11727, 11975, 11727, + 11975, 11960, 11960, 11956, 11956, 11939, 11939, 11931, 11932, 11931, 11932, + 1086, 1086, 12157, 12157, 12158, 12158, 12159, 12159, 12160, 12160, 12161, + 12161, 12145, 12146, 12147, 12148, 12149, 12150, 12151, 12152, 12153, 12154, + 12155, 12156, 12145, 12146, 12147, 12148, 12149, 12150, 12151, 12152, 12153, + 12154, 12155, 12156, 11913, 11914, 11915, 11911, 11912, 11916, 11917, 11918, + 11896, 11896, 493, 540, 518, 518, 12167, 12167, 12168, 12168, 518, 518, 457, + 457, 457, 457, 536, 536, 470, 470, 12169, 12169, 457, 457, 474, 474, 519, + 519, 495, 495, 476, 476, 494, 494, 470, 470, 482, 482, 475, 475, 457, 457, + 502, 502, 502, 502, 12166, 12166, 12170, 12171, 12172, 12173, 12174, 12175, + 12176, 12177, 12178, 12179, 12180, 12181, 12182, 12183, 12184, 12170, 12171, + 12172, 12173, 12174, 12175, 12176, 12177, 12178, 12179, 12180, 12181, 12182, + 12183, 12184, 12185, 402, 402, 12187, 12187, 12188, 12188, 12189, 12189, + 12190, 12191, 12192, 12193, 403, 403, 12195, 12195, 12196, 12196, 12197, + 12197, 12198, 12199, 12200, 12201, 12202, 12194, 406, 406, 12205, 12205, + 12206, 12206, 12207, 12207, 12208, 12209, 12210, 12211, 12212, 404, 404, + 12214, 12214, 12215, 12215, 12216, 12216, 12217, 12218, 12219, 12220, 408, + 408, 12222, 12222, 12223, 12223, 12224, 12224, 12225, 12226, 12227, 12228, + 12229, 12221, 407, 407, 12232, 12232, 12233, 12233, 12234, 12234, 12235, + 12236, 12237, 12238, 12239, 409, 409, 12241, 12241, 12242, 12242, 12243, + 12243, 12244, 12245, 12246, 12247, 12248, 12249, 12249, 12250, 12250, 12251, + 12251, 12252, 12252, 12253, 12253, 12254, 12254, 12255, 12255, 12256, 12256, + 12257, 12257, 12258, 12258, 410, 410, 12260, 12260, 12261, 12261, 12262, + 12262, 12263, 12264, 12265, 12266, 405, 405, 12268, 12268, 12269, 12269, + 12270, 12270, 12271, 12272, 12273, 12274, 12275, 12267, 12259, 12259, 481, + 481, 12279, 12279, 481, 481, 12281, 12281, 12282, 12282, 12280, 12280, 12283, + 12283, 12284, 12285, 393, 393, 12287, 12287, 12288, 12288, 12289, 12289, + 12290, 12291, 12292, 12293, 12293, 12294, 12294, 393, 393, 12296, 12296, + 12297, 12297, 12298, 12298, 12299, 12300, 12301, 12302, 12302, 12303, 12303, + 12304, 12304, 12295, 12295, 518, 518, 12307, 12307, 12308, 12308, 518, 518, + 457, 457, 457, 457, 536, 536, 470, 470, 12309, 12309, 474, 474, 519, 519, + 495, 495, 476, 476, 494, 494, 470, 470, 482, 482, 475, 475, 457, 457, 502, + 502, 502, 502, 12166, 12166, 457, 457, 701, 701, 701, 701, 701, 701, 12310, + 12311, 12312, 12313, 12314, 12315, 12324, 12316, 12317, 12318, 12319, 12320, + 12325, 12321, 12322, 12323, 12310, 12311, 12312, 12313, 12314, 12315, 12324, + 12316, 12317, 12318, 12319, 12320, 12325, 12321, 12322, 12323, 12324, 12325, + 523, 523, 12327, 12327, 12328, 12328, 12329, 12329, 12330, 12330, 523, 523, + 12332, 12332, 12333, 12333, 12334, 12334, 12335, 12335, 12336, 12336, 12331, + 12331, 12326, 402, 402, 12340, 12340, 12341, 12341, 12342, 12342, 12343, + 12344, 12345, 12346, 403, 403, 12348, 12348, 12349, 12349, 12350, 12350, + 12351, 12352, 12353, 12354, 12355, 12347, 406, 406, 12358, 12358, 12359, + 12359, 12360, 12360, 12361, 12362, 12363, 12364, 12365, 404, 404, 12367, + 12367, 12368, 12368, 12369, 12369, 12370, 12371, 12372, 12373, 408, 408, + 12375, 12375, 12376, 12376, 12377, 12377, 12378, 12379, 12380, 12381, 12382, + 12374, 407, 407, 12385, 12385, 12386, 12386, 12387, 12387, 12388, 12389, + 12390, 12391, 12392, 409, 409, 12394, 12394, 12395, 12395, 12396, 12396, + 12397, 12398, 12399, 12400, 12401, 12402, 12402, 12403, 12403, 12404, 12404, + 12405, 12405, 12406, 12406, 12407, 12407, 12408, 12408, 12409, 12409, 12410, + 12410, 12411, 12411, 410, 410, 12413, 12413, 12414, 12414, 12415, 12415, + 12416, 12417, 12418, 12419, 405, 405, 12421, 12421, 12422, 12422, 12423, + 12423, 12424, 12425, 12426, 12427, 12428, 12420, 12412, 12412, 401, 401, + 12432, 12432, 12433, 12433, 12434, 12434, 12435, 12436, 12437, 12438, 401, + 401, 12440, 12440, 12441, 12441, 12442, 12442, 12443, 12444, 12445, 12446, + 12447, 12447, 12231, 12231, 12439, 12439, 12384, 12384, 12356, 12356, 12429, + 12430, 12431, 12429, 12430, 12431, 12393, 12393, 12384, 12384, 12383, 12383, + 12366, 12366, 12356, 12356, 12357, 12357, 12338, 12339, 12337, 12338, 12339, + 12339, 12203, 12203, 12305, 12305, 12306, 12286, 12286, 12286, 12276, 12277, + 12278, 12276, 12277, 12278, 12240, 12240, 12231, 12231, 12230, 12230, 12213, + 12213, 12203, 12203, 12204, 12204, 12186, 12186, 12450, 12451, 12452, 12460, + 12461, 12453, 12454, 12455, 12456, 12457, 12458, 12448, 12449, 12450, 12451, + 12452, 12460, 12461, 12453, 12454, 12455, 12456, 12457, 12458, 12459, 12460, + 12461, 12462, 12463, 12464, 12465, 12466, 12467, 92, 12468, 12469, 12469, + 12469, 12470, 12470, 12470, 12471, 12471, 12471, 340, 782, 12473, 12474, + 12475, 12476, 12476, 12476, 782, 12478, 12479, 12480, 12481, 12481, 12481, + 621, 12483, 12483, 12483, 591, 591, 591, 594, 594, 594, 632, 632, 632, 621, + 621, 621, 12484, 12485, 12486, 12487, 12484, 12484, 12485, 12486, 12487, + 12485, 12486, 12487, 12488, 12488, 12488, 12489, 594, 594, 12491, 12491, + 12492, 12492, 12493, 12493, 12494, 12494, 12495, 12495, 12496, 12496, 12497, + 12497, 12498, 12499, 12499, 12500, 12500, 12501, 12501, 12502, 12503, 12503, + 12504, 12504, 12505, 12505, 12506, 12506, 12507, 12507, 12508, 12508, 12509, + 12510, 12510, 12511, 12511, 12512, 12512, 12513, 12513, 12514, 12514, 12515, + 12515, 12516, 12517, 12517, 12518, 12518, 12519, 12519, 12520, 12520, 12521, + 12522, 12522, 12523, 12523, 12524, 12524, 12525, 12525, 12526, 12527, 12527, + 12528, 12528, 12529, 12529, 12530, 12530, 12531, 12531, 11947, 12533, 12533, + 12534, 12534, 12535, 12535, 12536, 12537, 12537, 12538, 12538, 12539, 12539, + 12540, 12540, 12541, 12541, 12542, 12542, 12543, 12544, 12544, 12545, 12545, + 12546, 12546, 12547, 12547, 12548, 12548, 12549, 12549, 12550, 12551, 12551, + 12552, 12552, 12553, 12553, 12554, 12554, 12555, 12556, 12556, 12557, 12557, + 12558, 12558, 12559, 12559, 12560, 12561, 12561, 12562, 12562, 12563, 12563, + 12564, 12564, 12565, 12565, 12566, 12566, 12532, 12532, 12490, 12490, 12490, + 12482, 12482, 12482, 12477, 12477, 12477, 12472, 12472, 12472, 986, 989, + 997, 1000, 975, 48, 543, 750, 49, 749, 1008, 12573, 12574, 409, 408, 407, + 406, 405, 404, 403, 402, 401, 393, 250, 388, 828, 507, 263, 462, 540, 536, + 248, 249, 251, 535, 526, 523, 519, 518, 448, 515, 235, 237, 238, 245, 246, + 502, 495, 494, 493, 482, 481, 476, 475, 474, 470, 701, 469, 457, 632, 229, + 236, 247, 715, 234, 674, 1041, 1042, 268, 694, 369, 410, 621, 1018, 1019, + 1020, 1021, 1022, 1023, 1024, 1025, 1026, 12587, 12586, 12577, 12578, 12579, + 12580, 12581, 12582, 12583, 12584, 12585, 43, 437, 2, 835, 591, 12588, 12589, + 12590, 765, 951, 1564, 594, 12575, 12576, 340, 512, 763, 764, 1086, 12591, + 12592, 12593, 12594, 12595, 12596, 12596, 1659, 1658, 340, 1655, 674, 694, + 1647, 1646, 1645, 1644, 1643, 462, 1639, 1638, 1626, 1625, 1624, 1623, 1622, + 1621, 1620, 1619, 1618, 1617, 1613, 1612, 1708, 1707, 1699, 1698, 1697, 1696, + 1695, 1694, 1688, 1687, 1686, 1685, 1680, 1679, 1678, 1673, 1672, 1671, 1735, + 1745, 1744, 1743, 1742, 268, 1738, 12610, 1041, 1042, 1726, 1725, 1724, 1723, + 1722, 1721, 1720, 997, 1000, 986, 989, 1008, 1758, 1757, 975, 1781, 1780, + 543, 632, 1775, 1774, 1773, 369, 1770, 835, 1767, 12617, 12616, 1792, 12624, + 12625, 12618, 12619, 12620, 12621, 12622, 12623, 12611, 12612, 12613, 12614, + 12615, 11985, 12605, 12606, 12607, 12608, 12609, 12598, 12599, 12600, 12601, + 12602, 12603, 12604, 1805, 12631, 1814, 12633, 474, 475, 476, 12634, 1810, + 12632, 594, 12637, 12638, 1825, 1824, 1837, 1857, 1853, 1852, 1847, 1846, + 1845, 1842, 12642, 12643, 12644, 12645, 229, 12641, 1878, 1877, 1876, 1875, + 1874, 1871, 1868, 1889, 1022, 1026, 1018, 1019, 1020, 1021, 437, 1902, 12655, + 12656, 12654, 12652, 12653, 12651, 502, 12648, 12649, 12650, 1915, 12662, + 1931, 1928, 1925, 1922, 12664, 12665, 12666, 12667, 12668, 12663, 1947, 1944, + 12, 1964, 526, 1564, 1972, 518, 519, 621, 828, 1969, 245, 247, 248, 249, + 250, 251, 448, 515, 12673, 234, 235, 236, 237, 238, 388, 715, 1957, 1956, + 1955, 1954, 512, 782, 1988, 72, 1985, 73, 1982, 1023, 1024, 1025, 195, 591, + 2049, 2048, 2040, 2039, 2038, 2037, 2036, 2035, 951, 2028, 2027, 2026, 12683, + 2024, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 393, 749, 750, + 765, 1999, 1998, 1997, 1996, 540, 762, 763, 764, 791, 1086, 263, 12680, 12681, + 12682, 12684, 12685, 12686, 12687, 12688, 12689, 12690, 12691, 11907, 12674, + 12675, 12676, 12677, 12678, 12679, 11905, 12671, 12672, 12669, 12670, 12657, + 12658, 12659, 12660, 12661, 11904, 12646, 12647, 457, 11902, 12639, 12640, + 11901, 11993, 12635, 12636, 12626, 12627, 12628, 12629, 12630, 1611, 12692, + 12693, 12694, 12695, 12696, 12697, 12698, 12699, 12700, 12701, 765, 835, + 1086, 791, 340, 782, 764, 512, 762, 763, 12704, 12703, 12705, 12706, 12707, + 314, 12654, 12708, 12709, 12710, 12710, 12711, 12711, 12712, 12713, 12713, + 12702, 12702, 12597, 12597, 835, 835, 12717, 12717, 12718, 12718, 12719, + 12719, 512, 762, 763, 764, 765, 12721, 12721, 12722, 12722, 12723, 12723, + 11937, 12725, 369, 369, 12727, 12727, 12728, 12728, 12729, 12729, 12730, + 12730, 12731, 12732, 12733, 12733, 12726, 12726, 11987, 11988, 12736, 12737, + 12737, 12737, 12738, 12738, 12738, 246, 246, 251, 251, 448, 448, 11990, 469, + 470, 245, 246, 247, 248, 249, 250, 251, 448, 515, 512, 543, 263, 535, 536, + 11998, 12747, 12748, 11909, 11906, 11907, 11995, 12745, 12746, 11901, 11992, + 12744, 12743, 12740, 12741, 12742, 12740, 12741, 12742, 437, 437, 12754, + 12754, 12755, 12755, 12756, 12756, 11861, 11861, 12758, 12758, 12759, 12759, + 12760, 12760, 12761, 12761, 12762, 12762, 12763, 12763, 12764, 12764, 12765, + 12765, 12766, 12766, 314, 314, 12768, 12768, 12769, 12769, 12767, 12767, + 12731, 12772, 12772, 12498, 12498, 12774, 12774, 12775, 12775, 12776, 12776, + 621, 621, 12777, 12777, 591, 591, 12778, 12779, 12780, 12778, 12779, 12780, + 12781, 12781, 543, 543, 11959, 643, 643, 12784, 12784, 12785, 12785, 12786, + 12786, 12787, 12787, 12788, 12788, 12789, 12789, 12790, 12790, 12791, 12791, + 12792, 12792, 12793, 12793, 12794, 12794, 12795, 12795, 12796, 12796, 11722, + 11722, 12798, 12798, 12799, 12799, 12800, 12800, 12801, 12801, 12797, 12797, + 715, 715, 12804, 12804, 12805, 12805, 12002, 12004, 12005, 12006, 12000, + 12001, 12003, 12806, 12806, 11978, 11978, 767, 767, 12809, 12809, 12810, + 12810, 12811, 12811, 12812, 12812, 12813, 12813, 782, 782, 12815, 12815, + 12816, 12816, 791, 791, 12818, 12818, 12819, 12819, 12820, 12820, 12821, + 12821, 12817, 12817, 12814, 12814, 11889, 11889, 512, 762, 763, 764, 765, + 12822, 12823, 12824, 12825, 12822, 12823, 12824, 12825, 12826, 12826, 12827, + 12827, 12828, 12828, 12032, 12032, 12830, 12830, 12831, 12829, 12829, 12039, + 12832, 12833, 12833, 12834, 12834, 12807, 12808, 12807, 12808, 828, 828, + 12837, 12054, 12054, 12838, 12838, 507, 507, 12841, 12841, 12842, 12842, + 12843, 12843, 12844, 12844, 12845, 12845, 12846, 12067, 12067, 12848, 12848, + 12849, 12849, 12850, 12850, 12851, 12851, 12852, 12852, 234, 234, 12854, + 12854, 12855, 12855, 12856, 12856, 12857, 12857, 12858, 12858, 12859, 12859, + 12860, 12860, 12861, 12861, 12862, 12862, 12863, 12863, 12864, 12864, 247, + 247, 12866, 12866, 12867, 12867, 12868, 12868, 12869, 12869, 12870, 12870, + 12871, 12871, 12872, 12872, 12873, 12873, 12874, 12874, 12875, 12875, 12876, + 12865, 12853, 12853, 12877, 12878, 12879, 12879, 12847, 12880, 12881, 12102, + 12102, 951, 951, 12883, 12883, 12884, 12884, 12885, 12885, 12886, 12886, + 12887, 12887, 12112, 12112, 975, 975, 12890, 12890, 12891, 12891, 12892, + 12892, 989, 989, 986, 986, 12894, 12895, 12894, 12895, 1000, 1000, 997, 997, + 12897, 12898, 12897, 12898, 12899, 12896, 1008, 12900, 12901, 12902, 12902, + 12893, 12893, 12131, 12131, 12905, 12905, 12906, 12906, 12907, 12907, 12908, + 12908, 12909, 12138, 12910, 12911, 12911, 12912, 12912, 12913, 12913, 12914, + 12914, 12915, 12915, 12916, 12916, 12903, 12904, 12903, 12904, 12889, 12889, + 12888, 12888, 12882, 12882, 12839, 12840, 12839, 12840, 12835, 12836, 12835, + 12836, 12802, 12802, 12803, 12803, 12783, 12783, 12782, 12782, 12773, 12773, + 12770, 12771, 12770, 12771, 1086, 1086, 12929, 12929, 12930, 12930, 12931, + 12931, 12932, 12932, 12933, 12933, 12917, 12918, 12919, 12920, 12921, 12922, + 12923, 12924, 12925, 12926, 12927, 12928, 12917, 12918, 12919, 12920, 12921, + 12922, 12923, 12924, 12925, 12926, 12927, 12928, 12757, 12757, 11913, 11914, + 11915, 12002, 12006, 12750, 12749, 12751, 12752, 12753, 12739, 12739, 12739, + 12028, 12939, 12940, 12941, 12942, 11489, 11489, 12944, 12944, 12945, 12945, + 543, 543, 543, 11959, 12943, 12802, 12805, 12805, 11980, 92, 223, 84, 85, + 86, 87, 88, 89, 90, 91, 222, 2, 220, 221, 19, 81, 82, 83, 80, 69, 218, 219, + 4, 74, 212, 75, 36, 47, 76, 77, 213, 7, 8, 9, 10, 11, 12, 13, 78, 79, 14, + 15, 16, 17, 18, 39, 94, 214, 215, 216, 217, 44, 49, 55, 186, 187, 188, 189, + 190, 191, 192, 193, 37, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 40, 45, 52, 68, 208, 209, 210, 211, 3, 41, 42, 43, 48, + 71, 6, 72, 73, 12971, 12972, 12973, 12974, 12975, 12976, 12977, 12978, 12964, + 12965, 12966, 12967, 12968, 12969, 12970, 12961, 12962, 12963, 12960, 12958, + 12959, 12956, 12957, 12952, 12953, 12954, 12955, 12950, 12951, 164, 165, + 50, 166, 38, 56, 167, 168, 169, 170, 171, 70, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 146, 147, 148, 149, 150, 151, 152, + 153, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 134, 135, 136, 137, 95, 138, 51, 53, 139, 140, 141, 142, + 143, 144, 145, 31, 32, 30, 33, 34, 127, 128, 20, 93, 129, 130, 131, 57, 132, + 46, 133, 13005, 13006, 13007, 13008, 13000, 13001, 13002, 13003, 13004, 12994, + 12995, 12996, 12997, 12998, 12999, 12987, 12988, 12989, 12990, 12991, 12992, + 12993, 126, 119, 120, 121, 122, 123, 124, 125, 13014, 13015, 13016, 13017, + 13013, 112, 113, 114, 115, 116, 117, 118, 111, 21, 25, 26, 27, 28, 29, 54, + 13026, 13024, 13025, 13023, 13020, 13021, 13022, 110, 13031, 107, 108, 109, + 22, 23, 24, 13036, 13033, 13034, 13035, 13037, 13038, 13032, 13027, 13028, + 13029, 13030, 13018, 13019, 13009, 13010, 13011, 13012, 12979, 12980, 12981, + 12982, 12983, 12984, 12985, 12986, 106, 13045, 104, 105, 35, 13048, 13047, + 103, 13051, 13052, 13049, 13050, 13046, 102, 13056, 101, 13058, 13059, 13057, + 5, 13062, 13063, 100, 13065, 13066, 99, 13068, 1, 96, 97, 98, 13070, 13071, + 13072, 13073, 13074, 13069, 13075, 13076, 13067, 13064, 13060, 13061, 13053, + 13054, 13055, 13039, 13040, 13041, 13042, 13043, 13044, 13077, 13078, 13079, + 13080, 13081, 13082, 13083, 13083, 13083, 13084, 13084, 13084, 13085, 13085, + 13085, 11998, 12748, 13086, 13086, 13086, 12692, 12693, 12694, 12695, 12696, + 12697, 12698, 12699, 12700, 1611, 12949, 12949, 12949, 13087, 12750, 11913, + 12002, 11914, 11915, 12004, 12005, 12006, 13088, 13088, 13088, 13089, 12596, + 12596, 975, 13092, 13093, 13093, 13093, 13094, 13094, 13094, 13095, 13095, + 13095, 13096, 13097, 13098, 13099, 1041, 13101, 13102, 13102, 13103, 13103, + 13104, 13104, 13105, 13105, 13106, 13106, 13107, 13108, 13109, 13110, 13111, + 13112, 13112, 13113, 13113, 13114, 13114, 13115, 13115, 13102, 13102, 13117, + 13117, 13118, 13118, 13119, 13119, 13120, 13120, 13121, 13122, 13123, 13124, + 13125, 13126, 13126, 13127, 13127, 13128, 13128, 13129, 13129, 13130, 13130, + 13116, 13116, 13131, 13131, 13132, 13133, 13133, 13133, 1042, 13135, 13136, + 13136, 13137, 13137, 13138, 13138, 13139, 13139, 13140, 13140, 13141, 13142, + 13142, 13143, 13143, 13144, 13144, 13145, 13145, 13136, 13136, 13147, 13147, + 13148, 13148, 13149, 13149, 13150, 13150, 13151, 13152, 13152, 13153, 13153, + 13154, 13154, 13155, 13155, 13156, 13156, 13146, 13146, 13157, 13157, 13158, + 13159, 13159, 13159, 43, 13160, 44, 750, 749, 13134, 340, 763, 764, 765, + 782, 791, 1086, 13161, 13162, 13163, 13164, 13165, 13166, 13100, 12710, 12710, + 311, 13170, 13171, 13172, 13173, 13174, 13174, 13174, 13174, 13176, 13176, + 13175, 13175, 13177, 13177, 13178, 13179, 13180, 512, 13182, 13183, 13184, + 762, 13186, 13187, 13188, 763, 13190, 13191, 13192, 764, 13194, 13195, 13196, + 1086, 13198, 13199, 13200, 340, 13202, 13203, 13204, 782, 13206, 13207, 13208, + 12704, 13210, 13211, 765, 13213, 13214, 13215, 40, 13216, 48, 13212, 49, + 13209, 50, 13205, 3, 13201, 41, 13197, 42, 13193, 43, 13189, 44, 750, 13185, + 13217, 13218, 13219, 13220, 13221, 13222, 13223, 13224, 13225, 13226, 13227, + 13228, 13229, 13181, 314, 314, 314, 13232, 13232, 13232, 13233, 13234, 13235, + 13230, 13231, 13167, 13168, 13169, 13169, 13236, 13237, 13238, 13239, 13239, + 13239, 13091, 13091, 13090, 13090, 13090, 828, 828, 828, 13243, 835, 835, + 13245, 13245, 13246, 13246, 13244, 835, 13249, 13250, 13251, 835, 835, 13253, + 13254, 13255, 13256, 13257, 13258, 13259, 13260, 13261, 13262, 13262, 13262, + 13252, 13264, 13264, 13263, 13264, 13247, 13248, 13247, 13248, 13248, 750, + 13267, 13268, 13268, 13269, 13269, 512, 762, 763, 764, 765, 13267, 13271, + 13271, 13272, 13272, 13273, 13273, 13270, 13270, 951, 951, 13276, 13276, + 951, 951, 13278, 13278, 13279, 13279, 13277, 13277, 13280, 13280, 13281, + 12747, 13282, 13282, 13282, 13283, 13284, 388, 388, 13286, 13286, 13287, + 13287, 13288, 13288, 13289, 13290, 13291, 13292, 13293, 13294, 13294, 13295, + 13295, 13296, 13296, 13297, 13297, 13298, 13298, 13299, 13299, 13300, 13300, + 13301, 13301, 13302, 13302, 388, 388, 13304, 13304, 13305, 13305, 13306, + 13306, 13307, 13308, 13309, 13310, 13311, 13312, 13312, 13313, 13313, 13314, + 13314, 13315, 13315, 13316, 13316, 13317, 13317, 13318, 13318, 13319, 13319, + 13320, 13320, 13321, 13321, 13303, 13303, 13323, 13322, 13323, 13324, 13324, + 13324, 13325, 12106, 13327, 13327, 13328, 13328, 12885, 13330, 13330, 13331, + 13331, 13332, 13332, 13329, 13329, 12112, 13335, 13335, 13335, 975, 13092, + 11886, 11886, 11886, 13338, 13338, 13338, 13339, 13339, 13339, 989, 989, + 989, 986, 986, 986, 13341, 13341, 13341, 13342, 13342, 13342, 13341, 13342, + 13341, 13342, 13341, 13342, 13343, 1000, 1000, 1000, 997, 997, 997, 13345, + 13345, 13345, 13346, 13346, 13346, 13345, 13346, 13345, 13346, 13345, 13346, + 13347, 13348, 13344, 1008, 13349, 13350, 1008, 13349, 13350, 13351, 13352, + 13352, 13352, 2, 13340, 13337, 13337, 13337, 13283, 12138, 13356, 13357, + 13357, 13358, 13358, 13359, 13359, 13360, 13360, 13361, 13361, 13357, 13357, + 13363, 13363, 13364, 13364, 13365, 13365, 13366, 13366, 251, 250, 249, 248, + 247, 246, 245, 5, 13369, 13370, 13371, 13372, 13373, 13374, 13375, 13376, + 13377, 13378, 13379, 13380, 13381, 13382, 13383, 13384, 13385, 13386, 13387, + 13388, 13389, 13390, 13391, 13392, 13393, 13394, 13395, 13396, 13397, 13398, + 13399, 13400, 13401, 13402, 13403, 13404, 13405, 13406, 13407, 13408, 13409, + 13410, 13411, 13412, 13413, 13414, 13415, 13416, 13417, 13418, 224, 225, + 13421, 13422, 226, 13424, 13425, 228, 13427, 13428, 13429, 13430, 13431, + 13432, 13433, 13434, 13435, 13436, 13437, 13438, 13439, 13440, 13441, 13442, + 13443, 13444, 13368, 11909, 13367, 13367, 13362, 13362, 13353, 13354, 13355, + 13353, 13354, 13353, 13354, 13355, 13355, 13336, 13336, 13336, 13333, 13333, + 13334, 674, 11725, 11725, 674, 12800, 12800, 13326, 13326, 13326, 13285, + 13285, 13285, 765, 764, 763, 762, 512, 13274, 13274, 13275, 13265, 13266, + 13265, 13265, 13266, 13266, 13240, 13242, 13241, 13240, 13240, 13242, 13241, + 13242, 12948, 12821, 12948, 12821, 12946, 12947, 12946, 12947, 12947, 12934, + 12935, 12937, 12936, 12938, 12934, 12935, 12937, 12936, 12938, 12937, 12938, + 12734, 12734, 12735, 512, 762, 763, 764, 765, 12724, 12724, 12720, 12720, + 12714, 12715, 12716, 12714, 12715, 12716, 12568, 12569, 12570, 12571, 12572, + 12567, 12569, 12568, 12569, 12570, 12571, 12572, 12570, 12571, 12572, 12162, + 12163, 12164, 12165, 12162, 12163, 12164, 12165, 11888, 11889, 11889, 11887, + 11891, 11890, 11887, 11887, 11891, 11890, 11891, 11892, 11821, 11821, 11812, + 11813, 11814, 11812, 11813, 11814, 11802, 11802, 11800, 11800, 674, 11796, + 11796, 11796, 11143, 11143, 11789, 11789, 11768, 11768, 512, 762, 763, 764, + 765, 11762, 11762, 11757, 11758, 11757, 11758, 11738, 11738, 11729, 11729, + 11728, 11728, 11730, 11731, 11732, 11730, 11731, 11732, 11492, 11492, 11493, + 11178, 11493, 11178, 11487, 11488, 11487, 11488, 11474, 11475, 11476, 11477, + 11478, 11474, 11475, 11476, 11477, 11478, 11294, 11295, 11296, 11297, 11298, + 11294, 11295, 11296, 11297, 11298, 11073, 11073, 11064, 11064, 11063, 11065, + 11066, 11063, 11065, 11066, 2830, 2833, 11026, 2624, 2805, 2806, 2807, 2808, + 2809, 2810, 2811, 2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 2820, 2821, + 2624, 2805, 2806, 2807, 2808, 2809, 2810, 2811, 2812, 2813, 2814, 2815, 2816, + 2817, 2818, 2819, 2820, 2821, 690, 2822, 920, 1, 227, 226, 13489, 13490, + 13491, 13492, 13493, 13495, 13497, 13499 +}; + +static unsigned char label_array[] = { + 0xFE, 0xF9, 0xF8, 0xF4, 0xE7, 0xE6, 0xE4, 0xE3, 0xE2, 0xD9, 0xD7, 0xD4, 0xD3, + 0xD2, 0xD1, 0xC9, 0xC8, 0xC7, 0xC5, 0xC3, 0xC2, 0xC1, 0xB7, 0xB6, 0xB4, 0xB3, + 0xAB, 0xA7, 0xA6, 0xA4, 0xA3, 0xA2, 0x9B, 0x99, 0x97, 0x94, 0x93, 0x92, 0x91, + 0x89, 0x88, 0x87, 0x85, 0x83, 0x82, 0x81, 0x78, 0x77, 0x75, 0x74, 0x73, 0x72, + 0x71, 0x70, 0x6D, 0x6C, 0x6B, 0x6A, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, + 0x62, 0x61, 0x58, 0x57, 0x55, 0x54, 0x53, 0x52, 0x50, 0x4D, 0x4C, 0x4B, 0x4A, + 0x49, 0x48, 0x47, 0x45, 0x43, 0x42, 0x41, 0x39, 0x38, 0x34, 0x1B, 0x00, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x37, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x35, 0x32, 0x31, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x39, 0x36, 0x35, 0x33, 0x32, 0x31, 0x30, 0x00, 0x00, 0x35, 0x36, 0x00, 0x00, + 0x34, 0x00, 0x30, 0x00, 0x00, 0x47, 0x67, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, + 0x00, 0x64, 0x44, 0x00, 0x6F, 0x4F, 0x00, 0x63, 0x43, 0x00, 0x6E, 0x4E, 0x00, + 0x65, 0x45, 0x00, 0x2D, 0x00, 0x64, 0x44, 0x00, 0x72, 0x52, 0x00, 0x61, 0x41, + 0x00, 0x64, 0x44, 0x00, 0x6E, 0x4E, 0x00, 0x61, 0x41, 0x00, 0x74, 0x54, 0x00, + 0x73, 0x53, 0x00, 0x2D, 0x00, 0x65, 0x45, 0x00, 0x62, 0x42, 0x00, 0x6F, 0x4F, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x36, 0x00, 0x00, 0x38, 0x36, 0x00, 0x39, 0x00, + 0x31, 0x00, 0x2D, 0x00, 0x34, 0x00, 0x2E, 0x00, 0x33, 0x00, 0x78, 0x58, 0x00, + 0x5F, 0x00, 0x69, 0x49, 0x00, 0x73, 0x53, 0x00, 0x00, 0x43, 0x63, 0x00, 0x69, + 0x49, 0x00, 0x62, 0x42, 0x00, 0x61, 0x41, 0x69, 0x49, 0x00, 0x69, 0x49, 0x38, + 0x00, 0x30, 0x00, 0x37, 0x00, 0x2D, 0x00, 0x6F, 0x4F, 0x00, 0x00, 0x43, 0x63, + 0x6D, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x52, 0x72, 0x73, 0x6E, 0x64, 0x53, 0x4E, + 0x44, 0x00, 0x00, 0x53, 0x73, 0x00, 0x63, 0x43, 0x00, 0x73, 0x53, 0x00, 0x6B, + 0x4B, 0x00, 0x68, 0x48, 0x00, 0x2D, 0x00, 0x35, 0x00, 0x67, 0x47, 0x00, 0x69, + 0x49, 0x00, 0x00, 0x38, 0x00, 0x35, 0x00, 0x00, 0x34, 0x00, 0x32, 0x00, 0x00, + 0x39, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x36, + 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x00, 0x34, 0x00, 0x31, 0x00, 0x00, 0x31, + 0x30, 0x00, 0x30, 0x00, 0x64, 0x44, 0x00, 0x69, 0x49, 0x00, 0x73, 0x53, 0x00, + 0x00, 0x45, 0x65, 0x00, 0x73, 0x53, 0x00, 0x65, 0x45, 0x00, 0x6E, 0x4E, 0x00, + 0x69, 0x49, 0x00, 0x00, 0x52, 0x72, 0x52, 0x72, 0x53, 0x73, 0x00, 0x00, 0x00, + 0x69, 0x67, 0x61, 0x49, 0x47, 0x41, 0x00, 0x00, 0x37, 0x00, 0x33, 0x31, 0x30, + 0x00, 0x00, 0x36, 0x00, 0x32, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x38, 0x33, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x34, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x37, 0x30, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x37, 0x00, 0x36, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x33, 0x30, 0x00, 0x33, 0x32, 0x00, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x00, 0x35, 0x00, 0x37, 0x00, 0x00, 0x39, 0x00, 0x00, 0x39, + 0x38, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x31, + 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, + 0x38, 0x37, 0x36, 0x35, 0x31, 0x00, 0x00, 0x00, 0x00, 0x35, 0x34, 0x33, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x33, 0x31, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x37, 0x35, 0x34, 0x33, + 0x30, 0x39, 0x32, 0x31, 0x2D, 0x64, 0x44, 0x00, 0x72, 0x52, 0x00, 0x61, 0x41, + 0x00, 0x64, 0x44, 0x00, 0x6E, 0x4E, 0x00, 0x61, 0x41, 0x00, 0x74, 0x54, 0x00, + 0x73, 0x53, 0x00, 0x65, 0x45, 0x00, 0x62, 0x42, 0x00, 0x6F, 0x4F, 0x63, 0x43, + 0x00, 0x00, 0x53, 0x73, 0x64, 0x44, 0x35, 0x00, 0x67, 0x47, 0x00, 0x69, 0x49, + 0x00, 0x00, 0x52, 0x72, 0x00, 0x00, 0x45, 0x65, 0x00, 0x73, 0x53, 0x00, 0x65, + 0x45, 0x00, 0x6E, 0x4E, 0x00, 0x61, 0x41, 0x00, 0x70, 0x50, 0x00, 0x61, 0x41, + 0x00, 0x6A, 0x4A, 0x00, 0x54, 0x74, 0x00, 0x6D, 0x4D, 0x00, 0x66, 0x46, 0x00, + 0x64, 0x44, 0x00, 0x6B, 0x4B, 0x00, 0x00, 0x48, 0x68, 0x00, 0x00, 0x00, 0x54, + 0x74, 0x4B, 0x6B, 0x70, 0x50, 0x00, 0x63, 0x43, 0x00, 0x75, 0x55, 0x00, 0x00, + 0x32, 0x00, 0x31, 0x00, 0x33, 0x00, 0x4B, 0x6B, 0x32, 0x00, 0x62, 0x42, 0x00, + 0x00, 0x61, 0x41, 0x00, 0x6E, 0x4E, 0x00, 0x61, 0x41, 0x00, 0x6B, 0x4B, 0x00, + 0x61, 0x41, 0x00, 0x74, 0x54, 0x00, 0x61, 0x41, 0x00, 0x6B, 0x4B, 0x00, 0x68, + 0x48, 0x00, 0x74, 0x54, 0x00, 0x64, 0x44, 0x00, 0x69, 0x49, 0x00, 0x77, 0x57, + 0x00, 0x66, 0x46, 0x00, 0x6C, 0x4C, 0x00, 0x00, 0x38, 0x00, 0x6E, 0x4E, 0x00, + 0x61, 0x41, 0x00, 0x6D, 0x4D, 0x00, 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00, 0x00, + 0x50, 0x70, 0x61, 0x41, 0x00, 0x39, 0x00, 0x6D, 0x4D, 0x00, 0x00, 0x37, 0x00, + 0x34, 0x32, 0x00, 0x30, 0x00, 0x00, 0x38, 0x37, 0x33, 0x00, 0x39, 0x38, 0x37, + 0x32, 0x37, 0x35, 0x31, 0x39, 0x36, 0x35, 0x33, 0x31, 0x30, 0x38, 0x34, 0x00, + 0x00, 0x39, 0x38, 0x37, 0x36, 0x35, 0x35, 0x33, 0x00, 0x31, 0x30, 0x00, 0x00, + 0x69, 0x49, 0x00, 0x61, 0x41, 0x00, 0x68, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x35, 0x30, 0x54, 0x74, 0x32, 0x31, 0x39, 0x38, 0x34, 0x00, 0x00, 0x6D, + 0x62, 0x4D, 0x42, 0x30, 0x00, 0x38, 0x00, 0x32, 0x00, 0x31, 0x00, 0x33, 0x00, + 0x32, 0x00, 0x62, 0x42, 0x00, 0x67, 0x47, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x35, 0x33, 0x00, 0x31, 0x00, 0x39, 0x00, 0x35, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x72, 0x52, 0x00, 0x00, 0x63, 0x43, 0x00, 0x69, 0x49, 0x00, 0x6C, 0x4C, + 0x00, 0x6C, 0x4C, 0x00, 0x69, 0x49, 0x00, 0x72, 0x52, 0x00, 0x79, 0x59, 0x00, + 0x00, 0x4B, 0x6B, 0x00, 0x65, 0x45, 0x00, 0x65, 0x45, 0x00, 0x72, 0x52, 0x00, + 0x00, 0x57, 0x77, 0x00, 0x65, 0x45, 0x00, 0x72, 0x52, 0x00, 0x62, 0x42, 0x00, + 0x45, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x35, 0x34, + 0x33, 0x32, 0x68, 0x67, 0x63, 0x61, 0x48, 0x47, 0x43, 0x41, 0x00, 0x6E, 0x4E, + 0x00, 0x69, 0x49, 0x00, 0x74, 0x54, 0x00, 0x61, 0x41, 0x00, 0x00, 0x00, 0x6C, + 0x4C, 0x38, 0x35, 0x00, 0x6F, 0x4F, 0x00, 0x00, 0x73, 0x62, 0x53, 0x42, 0x00, + 0x00, 0x72, 0x52, 0x00, 0x38, 0x00, 0x69, 0x49, 0x00, 0x00, 0x37, 0x00, 0x38, + 0x00, 0x39, 0x00, 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 0x36, 0x00, 0x35, 0x00, + 0x63, 0x43, 0x00, 0x00, 0x73, 0x6F, 0x53, 0x4F, 0x43, 0x63, 0x00, 0x69, 0x49, + 0x00, 0x74, 0x54, 0x00, 0x6C, 0x4C, 0x00, 0x61, 0x41, 0x00, 0x62, 0x42, 0x00, + 0x35, 0x00, 0x37, 0x4C, 0x6C, 0x00, 0x61, 0x41, 0x00, 0x75, 0x55, 0x00, 0x67, + 0x47, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00, 0x6C, 0x4C, 0x00, 0x69, 0x49, + 0x00, 0x74, 0x54, 0x00, 0x6C, 0x4C, 0x00, 0x75, 0x55, 0x00, 0x6D, 0x4D, 0x00, + 0x30, 0x57, 0x77, 0x00, 0x65, 0x45, 0x00, 0x72, 0x52, 0x00, 0x62, 0x42, 0x00, + 0x65, 0x45, 0x00, 0x68, 0x48, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00, 0x74, + 0x54, 0x00, 0x61, 0x41, 0x00, 0x6C, 0x4C, 0x00, 0x32, 0x00, 0x34, 0x00, 0x65, + 0x45, 0x00, 0x67, 0x47, 0x00, 0x61, 0x41, 0x00, 0x70, 0x50, 0x00, 0x65, 0x45, + 0x00, 0x64, 0x44, 0x00, 0x6F, 0x4F, 0x00, 0x00, 0x00, 0x63, 0x43, 0x36, 0x35, + 0x32, 0x00, 0x35, 0x00, 0x38, 0x00, 0x00, 0x00, 0x70, 0x50, 0x38, 0x37, 0x00, + 0x63, 0x43, 0x00, 0x00, 0x73, 0x53, 0x00, 0x69, 0x49, 0x00, 0x6A, 0x4A, 0x00, + 0x54, 0x74, 0x00, 0x66, 0x46, 0x00, 0x69, 0x49, 0x00, 0x68, 0x48, 0x30, 0x00, + 0x32, 0x00, 0x36, 0x00, 0x53, 0x73, 0x00, 0x69, 0x49, 0x00, 0x00, 0x45, 0x65, + 0x00, 0x64, 0x44, 0x00, 0x6F, 0x4F, 0x00, 0x63, 0x43, 0x00, 0x69, 0x49, 0x00, + 0x00, 0x65, 0x45, 0x00, 0x00, 0x65, 0x45, 0x00, 0x00, 0x4C, 0x6C, 0x42, 0x62, + 0x00, 0x36, 0x00, 0x00, 0x65, 0x45, 0x00, 0x00, 0x65, 0x45, 0x00, 0x00, 0x4C, + 0x6C, 0x42, 0x62, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x38, 0x33, 0x31, 0x00, + 0x66, 0x46, 0x00, 0x00, 0x74, 0x6E, 0x54, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x00, 0x35, 0x00, 0x32, + 0x00, 0x00, 0x00, 0x00, 0x32, 0x31, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00, + 0x74, 0x54, 0x00, 0x61, 0x41, 0x00, 0x6C, 0x4C, 0x00, 0x31, 0x00, 0x00, 0x31, + 0x33, 0x00, 0x73, 0x53, 0x00, 0x77, 0x57, 0x00, 0x6F, 0x4F, 0x00, 0x64, 0x44, + 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x75, 0x74, 0x73, 0x70, 0x6B, 0x69, 0x68, + 0x67, 0x65, 0x62, 0x61, 0x57, 0x55, 0x54, 0x53, 0x50, 0x4B, 0x49, 0x48, 0x47, + 0x45, 0x42, 0x41, 0x00, 0x00, 0x43, 0x63, 0x00, 0x69, 0x49, 0x00, 0x6C, 0x4C, + 0x00, 0x6C, 0x4C, 0x00, 0x69, 0x49, 0x00, 0x72, 0x52, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x79, 0x73, 0x70, 0x68, 0x63, 0x59, 0x53, 0x50, 0x48, 0x43, 0x31, 0x32, + 0x00, 0x72, 0x52, 0x45, 0x65, 0x41, 0x61, 0x48, 0x68, 0x4B, 0x6B, 0x53, 0x73, + 0x49, 0x69, 0x52, 0x72, 0x42, 0x62, 0x52, 0x72, 0x45, 0x65, 0x54, 0x74, 0x53, + 0x73, 0x4C, 0x6C, 0x4F, 0x6F, 0x45, 0x65, 0x00, 0x63, 0x43, 0x00, 0x65, 0x45, + 0x00, 0x6F, 0x4F, 0x45, 0x65, 0x52, 0x72, 0x53, 0x73, 0x54, 0x74, 0x55, 0x75, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x79, 0x77, 0x75, 0x74, 0x73, 0x72, 0x6E, 0x69, 0x68, 0x67, + 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x59, 0x57, 0x55, 0x54, 0x53, 0x52, 0x4E, + 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, 0x00, 0x2D, 0x43, 0x63, + 0x00, 0x69, 0x49, 0x00, 0x6C, 0x4C, 0x00, 0x6C, 0x4C, 0x00, 0x69, 0x49, 0x00, + 0x72, 0x52, 0x00, 0x00, 0x79, 0x70, 0x59, 0x50, 0x4F, 0x6F, 0x00, 0x72, 0x52, + 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x33, 0x00, 0x37, 0x00, + 0x32, 0x00, 0x2D, 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, + 0x45, 0x00, 0x2B, 0x00, 0x37, 0x00, 0x37, 0x00, 0x32, 0x00, 0x2D, 0x00, 0x00, + 0x4B, 0x6B, 0x65, 0x45, 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, + 0x65, 0x45, 0x00, 0x2B, 0x00, 0x34, 0x00, 0x38, 0x00, 0x32, 0x00, 0x2D, 0x00, + 0x73, 0x53, 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, + 0x00, 0x2B, 0x00, 0x38, 0x00, 0x37, 0x00, 0x32, 0x00, 0x2D, 0x4F, 0x6F, 0x00, + 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x37, 0x00, + 0x39, 0x00, 0x32, 0x00, 0x2D, 0x00, 0x00, 0x49, 0x69, 0x72, 0x52, 0x4F, 0x6F, + 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x35, + 0x00, 0x38, 0x00, 0x32, 0x00, 0x2D, 0x00, 0x62, 0x42, 0x4F, 0x6F, 0x00, 0x72, + 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x35, 0x00, 0x2D, 0x00, 0x6C, 0x4C, 0x00, 0x61, 0x41, 0x00, 0x6E, 0x4E, + 0x00, 0x6F, 0x4F, 0x00, 0x69, 0x49, 0x00, 0x74, 0x54, 0x00, 0x61, 0x41, 0x00, + 0x6E, 0x4E, 0x00, 0x72, 0x52, 0x00, 0x65, 0x45, 0x00, 0x74, 0x54, 0x4F, 0x6F, + 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x31, + 0x00, 0x37, 0x00, 0x38, 0x00, 0x2D, 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00, 0x75, + 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x30, 0x00, 0x38, 0x00, 0x32, 0x00, + 0x2D, 0x00, 0x00, 0x00, 0x74, 0x73, 0x6E, 0x54, 0x53, 0x4E, 0x41, 0x61, 0x00, + 0x6E, 0x4E, 0x00, 0x61, 0x41, 0x00, 0x6B, 0x4B, 0x00, 0x2D, 0x00, 0x70, 0x50, + 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2D, + 0x00, 0x2D, 0x00, 0x39, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00, 0x74, 0x54, + 0x00, 0x61, 0x41, 0x6F, 0x4F, 0x65, 0x45, 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00, + 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x37, 0x00, 0x33, 0x00, 0x2D, + 0x00, 0x73, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x75, 0x73, 0x6E, 0x6C, 0x6A, 0x69, 0x67, 0x66, 0x65, 0x64, 0x63, 0x55, + 0x53, 0x4E, 0x4C, 0x4A, 0x49, 0x47, 0x46, 0x45, 0x44, 0x43, 0x00, 0x00, 0x2D, + 0x00, 0x63, 0x43, 0x00, 0x69, 0x49, 0x00, 0x64, 0x44, 0x00, 0x63, 0x43, 0x34, + 0x38, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x61, 0x41, 0x00, 0x6D, 0x4D, + 0x38, 0x00, 0x32, 0x00, 0x39, 0x00, 0x5F, 0x00, 0x74, 0x54, 0x00, 0x6F, 0x4F, + 0x4E, 0x6E, 0x50, 0x70, 0x3E, 0x00, 0x68, 0x48, 0x00, 0x00, 0x00, 0x74, 0x6B, + 0x6A, 0x63, 0x54, 0x4B, 0x4A, 0x43, 0x00, 0x74, 0x54, 0x2D, 0x00, 0x63, 0x43, + 0x5F, 0x00, 0x72, 0x52, 0x00, 0x6F, 0x4F, 0x00, 0x66, 0x46, 0x00, 0x5F, 0x00, + 0x74, 0x54, 0x00, 0x61, 0x41, 0x00, 0x6D, 0x4D, 0x00, 0x72, 0x52, 0x00, 0x6F, + 0x4F, 0x00, 0x66, 0x46, 0x00, 0x5F, 0x00, 0x64, 0x44, 0x00, 0x65, 0x45, 0x00, + 0x6B, 0x4B, 0x00, 0x63, 0x43, 0x00, 0x61, 0x41, 0x00, 0x70, 0x50, 0x00, 0x5F, + 0x00, 0x65, 0x45, 0x00, 0x64, 0x44, 0x00, 0x6F, 0x4F, 0x00, 0x63, 0x43, 0x00, + 0x5F, 0x00, 0x78, 0x58, 0x00, 0x69, 0x49, 0x00, 0x6E, 0x4E, 0x00, 0x75, 0x55, + 0x00, 0x5F, 0x00, 0x64, 0x44, 0x00, 0x65, 0x45, 0x00, 0x64, 0x44, 0x00, 0x6E, + 0x4E, 0x00, 0x65, 0x45, 0x00, 0x74, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, + 0x75, 0x6C, 0x63, 0x62, 0x58, 0x55, 0x4C, 0x43, 0x42, 0x2D, 0x00, 0x32, 0x00, + 0x31, 0x00, 0x33, 0x00, 0x32, 0x00, 0x4B, 0x6B, 0x5F, 0x32, 0x00, 0x38, 0x00, + 0x6B, 0x4B, 0x00, 0x65, 0x45, 0x00, 0x65, 0x45, 0x00, 0x00, 0x72, 0x62, 0x52, + 0x42, 0x2D, 0x00, 0x70, 0x65, 0x50, 0x45, 0x30, 0x33, 0x34, 0x38, 0x39, 0x00, + 0x00, 0x00, 0x39, 0x36, 0x31, 0x30, 0x00, 0x33, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x32, 0x37, 0x35, 0x31, 0x30, 0x39, 0x35, 0x34, 0x32, 0x31, 0x31, 0x30, + 0x33, 0x36, 0x38, 0x35, 0x34, 0x30, 0x38, 0x37, 0x35, 0x39, 0x33, 0x37, 0x36, + 0x35, 0x39, 0x38, 0x30, 0x33, 0x32, 0x31, 0x34, 0x34, 0x32, 0x30, 0x33, 0x31, + 0x36, 0x35, 0x37, 0x38, 0x39, 0x30, 0x33, 0x31, 0x32, 0x36, 0x39, 0x37, 0x34, + 0x30, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x36, 0x35, 0x34, 0x33, 0x32, + 0x31, 0x30, 0x31, 0x30, 0x32, 0x00, 0x30, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, + 0x33, 0x32, 0x31, 0x30, 0x00, 0x35, 0x00, 0x00, 0x00, 0x32, 0x31, 0x30, 0x00, + 0x38, 0x36, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x39, 0x34, 0x37, 0x36, 0x38, + 0x35, 0x33, 0x32, 0x31, 0x00, 0x2D, 0x00, 0x61, 0x41, 0x00, 0x6E, 0x4E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x36, 0x37, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x37, 0x36, 0x33, 0x32, 0x31, 0x30, 0x31, 0x00, 0x00, 0x39, 0x38, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, + 0x38, 0x35, 0x34, 0x32, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, + 0x34, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x33, 0x32, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x33, 0x32, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x37, 0x36, 0x35, + 0x34, 0x33, 0x00, 0x00, 0x00, 0x00, 0x34, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x34, 0x36, 0x35, 0x33, 0x32, 0x31, 0x31, 0x33, 0x38, 0x33, 0x35, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, + 0x32, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x31, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x36, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, + 0x32, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x37, 0x35, 0x33, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x31, 0x00, 0x32, 0x38, 0x00, 0x38, 0x00, 0x00, + 0x33, 0x34, 0x00, 0x00, 0x35, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, + 0x38, 0x33, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x39, 0x32, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x36, 0x34, 0x31, 0x00, 0x00, 0x34, 0x00, + 0x35, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x33, 0x32, 0x31, 0x30, + 0x00, 0x00, 0x36, 0x00, 0x34, 0x00, 0x00, 0x00, 0x36, 0x35, 0x00, 0x00, 0x39, + 0x00, 0x30, 0x00, 0x35, 0x34, 0x30, 0x37, 0x00, 0x00, 0x39, 0x37, 0x38, 0x35, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x30, 0x32, 0x00, 0x32, 0x00, 0x37, 0x00, 0x00, + 0x37, 0x36, 0x33, 0x30, 0x00, 0x00, 0x36, 0x00, 0x37, 0x39, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x32, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x35, 0x30, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x37, 0x36, 0x35, 0x34, + 0x00, 0x00, 0x32, 0x39, 0x33, 0x00, 0x00, 0x36, 0x00, 0x00, 0x35, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x34, 0x33, 0x32, 0x30, + 0x00, 0x00, 0x00, 0x30, 0x35, 0x33, 0x32, 0x00, 0x00, 0x33, 0x00, 0x32, 0x39, + 0x38, 0x37, 0x36, 0x34, 0x30, 0x00, 0x00, 0x35, 0x34, 0x38, 0x00, 0x37, 0x00, + 0x00, 0x35, 0x00, 0x34, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x34, + 0x33, 0x31, 0x30, 0x00, 0x00, 0x32, 0x00, 0x35, 0x00, 0x39, 0x00, 0x00, 0x31, + 0x00, 0x00, 0x34, 0x00, 0x00, 0x35, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, + 0x34, 0x33, 0x32, 0x31, 0x00, 0x32, 0x00, 0x00, 0x32, 0x31, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x37, 0x00, 0x00, 0x37, 0x33, 0x32, 0x39, 0x33, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x37, 0x36, 0x35, 0x33, 0x37, 0x35, 0x32, + 0x31, 0x30, 0x38, 0x00, 0x00, 0x00, 0x32, 0x00, 0x39, 0x36, 0x35, 0x33, 0x32, + 0x30, 0x38, 0x34, 0x31, 0x00, 0x00, 0x31, 0x30, 0x34, 0x38, 0x35, 0x00, 0x00, + 0x31, 0x37, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x39, 0x37, 0x36, + 0x35, 0x33, 0x31, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x34, 0x36, 0x35, 0x33, 0x38, 0x36, 0x34, 0x33, 0x32, + 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x33, 0x31, 0x30, + 0x38, 0x37, 0x36, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x36, + 0x35, 0x34, 0x33, 0x32, 0x30, 0x00, 0x39, 0x38, 0x37, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x39, 0x37, 0x36, 0x34, 0x32, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, + 0x36, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x35, 0x34, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x54, 0x39, + 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x31, 0x30, 0x30, 0x37, + 0x00, 0x00, 0x33, 0x30, 0x36, 0x38, 0x37, 0x33, 0x35, 0x34, 0x30, 0x37, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x35, 0x30, 0x31, 0x37, 0x00, 0x00, + 0x36, 0x30, 0x34, 0x33, 0x30, 0x37, 0x00, 0x00, 0x33, 0x32, 0x30, 0x00, 0x30, + 0x30, 0x37, 0x35, 0x00, 0x00, 0x00, 0x37, 0x33, 0x32, 0x39, 0x33, 0x38, 0x33, + 0x35, 0x36, 0x37, 0x37, 0x35, 0x32, 0x31, 0x30, 0x38, 0x39, 0x36, 0x35, 0x33, + 0x32, 0x31, 0x30, 0x38, 0x34, 0x34, 0x38, 0x31, 0x30, 0x35, 0x30, 0x37, 0x31, + 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x36, 0x35, + 0x33, 0x31, 0x34, 0x35, 0x33, 0x35, 0x34, 0x33, 0x32, 0x36, 0x38, 0x30, 0x33, + 0x31, 0x34, 0x32, 0x36, 0x37, 0x38, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x33, 0x32, 0x34, 0x36, 0x37, 0x39, 0x30, 0x31, 0x36, 0x37, 0x38, + 0x39, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, + 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x39, 0x38, 0x37, 0x35, 0x34, 0x33, 0x32, 0x30, 0x38, 0x39, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x36, 0x35, 0x37, 0x37, + 0x30, 0x31, 0x32, 0x33, 0x36, 0x31, 0x39, 0x38, 0x37, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x35, 0x34, 0x32, 0x31, 0x30, 0x32, 0x34, + 0x35, 0x32, 0x33, 0x39, 0x30, 0x32, 0x33, 0x37, 0x39, 0x38, 0x37, 0x36, 0x35, + 0x34, 0x33, 0x32, 0x31, 0x30, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x30, 0x34, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x38, + 0x33, 0x31, 0x35, 0x33, 0x30, 0x32, 0x31, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, + 0x36, 0x35, 0x30, 0x31, 0x32, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x37, + 0x35, 0x33, 0x30, 0x33, 0x34, 0x35, 0x33, 0x36, 0x33, 0x30, 0x31, 0x38, 0x32, + 0x39, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x36, 0x00, 0x00, 0x00, 0x00, + 0x33, 0x32, 0x31, 0x30, 0x36, 0x00, 0x39, 0x38, 0x31, 0x32, 0x33, 0x30, 0x35, + 0x31, 0x00, 0x00, 0x00, 0x00, 0x37, 0x36, 0x35, 0x34, 0x00, 0x00, 0x39, 0x33, + 0x36, 0x35, 0x30, 0x32, 0x33, 0x34, 0x35, 0x00, 0x00, 0x00, 0x35, 0x33, 0x32, + 0x33, 0x00, 0x32, 0x39, 0x38, 0x37, 0x36, 0x34, 0x30, 0x00, 0x00, 0x35, 0x34, + 0x38, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x34, 0x33, 0x31, 0x30, 0x32, 0x00, + 0x31, 0x00, 0x36, 0x30, 0x36, 0x36, 0x00, 0x00, 0x00, 0x36, 0x35, 0x33, 0x39, + 0x38, 0x37, 0x00, 0x34, 0x00, 0x00, 0x34, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x39, 0x38, 0x35, 0x34, 0x31, 0x30, 0x38, 0x00, 0x30, 0x00, 0x37, 0x31, + 0x34, 0x00, 0x32, 0x38, 0x00, 0x38, 0x00, 0x00, 0x34, 0x31, 0x34, 0x00, 0x35, + 0x00, 0x33, 0x00, 0x00, 0x00, 0x37, 0x33, 0x32, 0x36, 0x00, 0x34, 0x00, 0x35, + 0x39, 0x00, 0x30, 0x00, 0x37, 0x00, 0x00, 0x38, 0x35, 0x32, 0x00, 0x32, 0x00, + 0x37, 0x00, 0x33, 0x35, 0x00, 0x34, 0x00, 0x33, 0x00, 0x37, 0x32, 0x00, 0x35, + 0x00, 0x39, 0x31, 0x34, 0x35, 0x35, 0x00, 0x00, 0x00, 0x00, 0x34, 0x33, 0x32, + 0x31, 0x00, 0x32, 0x00, 0x00, 0x32, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x35, 0x33, 0x32, 0x31, 0x30, 0x00, 0x64, 0x44, 0x00, 0x69, 0x49, 0x00, + 0x73, 0x53, 0x00, 0x63, 0x43, 0x00, 0x00, 0x00, 0x63, 0x43, 0x39, 0x38, 0x37, + 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2D, 0x00, 0x6D, 0x4D, 0x32, 0x00, 0x2D, + 0x00, 0x73, 0x53, 0x00, 0x63, 0x43, 0x00, 0x75, 0x55, 0x00, 0x2D, 0x00, 0x36, + 0x00, 0x34, 0x00, 0x36, 0x00, 0x30, 0x31, 0x00, 0x2D, 0x00, 0x6E, 0x4E, 0x00, + 0x69, 0x49, 0x00, 0x74, 0x54, 0x00, 0x61, 0x41, 0x00, 0x6C, 0x4C, 0x00, 0x2D, + 0x00, 0x31, 0x00, 0x2E, 0x00, 0x33, 0x00, 0x2D, 0x00, 0x73, 0x53, 0x00, 0x77, + 0x57, 0x00, 0x6F, 0x4F, 0x00, 0x64, 0x44, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, + 0x00, 0x77, 0x57, 0x00, 0x00, 0x35, 0x33, 0x2D, 0x32, 0x00, 0x2D, 0x00, 0x6E, + 0x4E, 0x00, 0x69, 0x49, 0x00, 0x74, 0x54, 0x00, 0x61, 0x41, 0x00, 0x6C, 0x4C, + 0x00, 0x2D, 0x00, 0x73, 0x53, 0x00, 0x77, 0x57, 0x00, 0x6F, 0x4F, 0x00, 0x64, + 0x44, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00, 0x77, 0x57, 0x00, 0x00, 0x2D, + 0x00, 0x00, 0x36, 0x37, 0x38, 0x39, 0x34, 0x33, 0x35, 0x32, 0x31, 0x00, 0x2D, + 0x00, 0x39, 0x00, 0x35, 0x00, 0x38, 0x30, 0x39, 0x31, 0x30, 0x37, 0x36, 0x38, + 0x38, 0x39, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x34, 0x32, 0x31, 0x30, + 0x00, 0x36, 0x35, 0x31, 0x00, 0x2D, 0x00, 0x72, 0x52, 0x00, 0x00, 0x00, 0x69, + 0x49, 0x38, 0x31, 0x53, 0x73, 0x00, 0x75, 0x55, 0x00, 0x2D, 0x00, 0x36, 0x00, + 0x34, 0x31, 0x00, 0x39, 0x00, 0x39, 0x00, 0x31, 0x00, 0x3A, 0x00, 0x76, 0x56, + 0x00, 0x72, 0x52, 0x00, 0x69, 0x49, 0x00, 0x2E, 0x00, 0x36, 0x00, 0x34, 0x37, + 0x00, 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, 0x35, 0x3A, 0x37, 0x00, 0x38, + 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, 0x3A, 0x38, 0x00, 0x38, 0x00, 0x39, 0x00, + 0x31, 0x00, 0x00, 0x3A, 0x38, 0x00, 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, + 0x3A, 0x38, 0x00, 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, 0x3A, 0x37, 0x00, + 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, 0x3A, 0x37, 0x00, 0x38, 0x00, 0x39, + 0x00, 0x31, 0x00, 0x00, 0x3A, 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, 0x3A, + 0x39, 0x00, 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, + 0x32, 0x31, 0x00, 0x2D, 0x00, 0x39, 0x00, 0x35, 0x00, 0x38, 0x00, 0x00, 0x38, + 0x36, 0x00, 0x00, 0x00, 0x5F, 0x36, 0x2D, 0x00, 0x6F, 0x4F, 0x00, 0x00, 0x00, + 0x73, 0x62, 0x61, 0x53, 0x42, 0x41, 0x31, 0x00, 0x30, 0x00, 0x32, 0x00, 0x30, + 0x00, 0x58, 0x78, 0x00, 0x5F, 0x00, 0x73, 0x53, 0x00, 0x69, 0x49, 0x2D, 0x00, + 0x38, 0x4E, 0x6E, 0x00, 0x61, 0x41, 0x00, 0x65, 0x45, 0x00, 0x00, 0x72, 0x69, + 0x52, 0x49, 0x31, 0x00, 0x30, 0x00, 0x36, 0x00, 0x35, 0x00, 0x5F, 0x39, 0x37, + 0x00, 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x36, 0x00, 0x35, 0x00, 0x5F, 0x00, 0x63, 0x43, 0x00, 0x00, 0x63, 0x5F, 0x43, + 0x00, 0x00, 0x73, 0x6F, 0x53, 0x4F, 0x39, 0x00, 0x31, 0x35, 0x34, 0x33, 0x32, + 0x2D, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00, 0x74, 0x54, 0x00, 0x61, 0x41, + 0x35, 0x34, 0x33, 0x32, 0x31, 0x33, 0x49, 0x69, 0x00, 0x6A, 0x4A, 0x00, 0x6E, + 0x4E, 0x00, 0x61, 0x41, 0x00, 0x6B, 0x4B, 0x00, 0x00, 0x39, 0x5F, 0x00, 0x73, + 0x53, 0x6F, 0x4F, 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, + 0x2B, 0x00, 0x30, 0x00, 0x35, 0x00, 0x38, 0x00, 0x2D, 0x00, 0x6C, 0x4C, 0x00, + 0x61, 0x41, 0x00, 0x75, 0x55, 0x00, 0x67, 0x47, 0x00, 0x6E, 0x4E, 0x00, 0x69, + 0x49, 0x00, 0x6C, 0x4C, 0x00, 0x69, 0x49, 0x00, 0x74, 0x54, 0x00, 0x6C, 0x4C, + 0x00, 0x75, 0x55, 0x00, 0x6D, 0x4D, 0x00, 0x2D, 0x00, 0x63, 0x43, 0x6F, 0x4F, + 0x38, 0x5F, 0x00, 0x74, 0x54, 0x00, 0x66, 0x46, 0x00, 0x69, 0x49, 0x00, 0x68, + 0x48, 0x2D, 0x00, 0x73, 0x53, 0x00, 0x69, 0x49, 0x32, 0x2D, 0x00, 0x73, 0x53, + 0x73, 0x53, 0x00, 0x61, 0x41, 0x00, 0x00, 0x2D, 0x6C, 0x62, 0x4C, 0x42, 0x2D, + 0x00, 0x36, 0x6C, 0x62, 0x4C, 0x42, 0x2D, 0x00, 0x32, 0x00, 0x00, 0x38, 0x33, + 0x31, 0x00, 0x38, 0x33, 0x31, 0x2D, 0x00, 0x66, 0x46, 0x00, 0x00, 0x00, 0x74, + 0x73, 0x63, 0x54, 0x53, 0x43, 0x39, 0x31, 0x00, 0x2D, 0x00, 0x73, 0x53, 0x00, + 0x77, 0x57, 0x00, 0x6F, 0x4F, 0x00, 0x64, 0x44, 0x00, 0x6E, 0x4E, 0x00, 0x69, + 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, + 0x30, 0x31, 0x32, 0x35, 0x37, 0x42, 0x28, 0x30, 0x31, 0x32, 0x33, 0x35, 0x36, + 0x39, 0x42, 0x28, 0x1B, 0x1B, 0x35, 0x36, 0x42, 0x28, 0x34, 0x42, 0x28, 0x1B, + 0x30, 0x42, 0x28, 0x47, 0x67, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, + 0x69, 0x49, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, + 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x65, + 0x45, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, + 0x72, 0x52, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, + 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x74, + 0x54, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, + 0x65, 0x45, 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, + 0x28, 0x38, 0x42, 0x28, 0x36, 0x42, 0x28, 0x1B, 0x1B, 0x38, 0x36, 0x42, 0x28, + 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, + 0x34, 0x42, 0x28, 0x1B, 0x2E, 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x78, + 0x58, 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, + 0x73, 0x53, 0x42, 0x28, 0x43, 0x63, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, + 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x49, 0x69, 0x42, + 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x38, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, + 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, + 0x1B, 0x1B, 0x43, 0x63, 0x6D, 0x4D, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x52, + 0x72, 0x73, 0x6E, 0x64, 0x53, 0x4E, 0x44, 0x42, 0x28, 0x53, 0x73, 0x42, 0x28, + 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x6B, 0x4B, + 0x42, 0x28, 0x1B, 0x68, 0x48, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x35, + 0x42, 0x28, 0x1B, 0x67, 0x47, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x38, + 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x34, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, + 0x1B, 0x1B, 0x39, 0x38, 0x42, 0x28, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, + 0x1B, 0x1B, 0x31, 0x30, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x64, 0x44, + 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x45, + 0x65, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, + 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x52, 0x72, 0x42, + 0x28, 0x52, 0x72, 0x42, 0x28, 0x53, 0x73, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x69, + 0x67, 0x61, 0x49, 0x47, 0x41, 0x42, 0x28, 0x37, 0x42, 0x28, 0x1B, 0x33, 0x31, + 0x30, 0x42, 0x28, 0x36, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x30, 0x42, + 0x28, 0x33, 0x38, 0x42, 0x28, 0x30, 0x34, 0x35, 0x42, 0x28, 0x30, 0x37, 0x42, + 0x28, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x42, 0x28, 0x37, 0x42, 0x28, 0x1B, + 0x36, 0x42, 0x28, 0x30, 0x33, 0x34, 0x42, 0x28, 0x1B, 0x33, 0x32, 0x42, 0x28, + 0x30, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x35, 0x42, 0x28, 0x1B, 0x37, 0x42, + 0x28, 0x39, 0x42, 0x28, 0x30, 0x31, 0x32, 0x33, 0x35, 0x36, 0x39, 0x38, 0x34, + 0x42, 0x28, 0x30, 0x31, 0x42, 0x28, 0x30, 0x42, 0x28, 0x31, 0x42, 0x28, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36, 0x35, 0x31, 0x42, 0x28, 0x34, + 0x33, 0x35, 0x42, 0x28, 0x38, 0x42, 0x28, 0x36, 0x42, 0x28, 0x1B, 0x1B, 0x1B, + 0x33, 0x31, 0x30, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x38, 0x37, 0x35, 0x34, 0x33, 0x30, 0x39, 0x32, 0x31, 0x2D, 0x42, + 0x28, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x61, 0x41, + 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, + 0x61, 0x41, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, + 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B, 0x6F, + 0x4F, 0x42, 0x28, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x1B, 0x53, 0x73, 0x64, 0x44, + 0x42, 0x28, 0x35, 0x42, 0x28, 0x1B, 0x67, 0x47, 0x42, 0x28, 0x1B, 0x69, 0x49, + 0x42, 0x28, 0x52, 0x72, 0x42, 0x28, 0x45, 0x65, 0x42, 0x28, 0x1B, 0x73, 0x53, + 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, + 0x61, 0x41, 0x42, 0x28, 0x1B, 0x70, 0x50, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, + 0x28, 0x1B, 0x6A, 0x4A, 0x42, 0x28, 0x1B, 0x54, 0x74, 0x42, 0x28, 0x1B, 0x6D, + 0x4D, 0x42, 0x28, 0x1B, 0x66, 0x46, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, + 0x1B, 0x6B, 0x4B, 0x42, 0x28, 0x48, 0x68, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x54, + 0x74, 0x4B, 0x6B, 0x70, 0x50, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, + 0x75, 0x55, 0x42, 0x28, 0x32, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x33, + 0x42, 0x28, 0x1B, 0x4B, 0x6B, 0x32, 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28, + 0x41, 0x61, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, + 0x28, 0x1B, 0x6B, 0x4B, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x74, + 0x54, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6B, 0x4B, 0x42, 0x28, + 0x1B, 0x68, 0x48, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x64, 0x44, + 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x77, 0x57, 0x42, 0x28, 0x1B, + 0x66, 0x46, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x38, 0x42, 0x28, 0x1B, + 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6D, 0x4D, 0x42, + 0x28, 0x1B, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x1B, + 0x50, 0x70, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x6D, 0x4D, + 0x42, 0x28, 0x37, 0x42, 0x28, 0x1B, 0x34, 0x32, 0x42, 0x28, 0x1B, 0x30, 0x42, + 0x28, 0x33, 0x38, 0x37, 0x42, 0x28, 0x1B, 0x39, 0x38, 0x37, 0x42, 0x28, 0x32, + 0x42, 0x28, 0x31, 0x35, 0x37, 0x42, 0x28, 0x30, 0x31, 0x33, 0x35, 0x36, 0x39, + 0x38, 0x34, 0x42, 0x28, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36, 0x35, 0x42, 0x28, + 0x33, 0x35, 0x42, 0x28, 0x1B, 0x31, 0x30, 0x42, 0x28, 0x49, 0x69, 0x42, 0x28, + 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x68, 0x48, 0x42, 0x28, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x35, 0x30, 0x54, 0x74, 0x32, 0x31, 0x39, 0x38, 0x34, 0x42, + 0x28, 0x1B, 0x1B, 0x6D, 0x62, 0x4D, 0x42, 0x42, 0x28, 0x30, 0x42, 0x28, 0x1B, + 0x38, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x33, + 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B, 0x67, + 0x47, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x33, 0x35, 0x42, 0x28, 0x1B, 0x31, + 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x38, 0x42, + 0x28, 0x72, 0x52, 0x42, 0x28, 0x43, 0x63, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, + 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x69, + 0x49, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x79, 0x59, 0x42, 0x28, + 0x4B, 0x6B, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, + 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x57, 0x77, 0x42, 0x28, 0x1B, 0x65, 0x45, + 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B, + 0x45, 0x65, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x68, 0x67, 0x63, 0x61, 0x48, 0x47, 0x43, 0x41, 0x42, 0x28, 0x1B, 0x6E, 0x4E, + 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, + 0x61, 0x41, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x6C, 0x4C, 0x38, 0x35, 0x42, 0x28, + 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x1B, 0x73, 0x62, 0x53, 0x42, 0x42, 0x28, + 0x52, 0x72, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, + 0x37, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, + 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x36, 0x42, + 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x1B, 0x73, + 0x6F, 0x53, 0x4F, 0x42, 0x28, 0x43, 0x63, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, + 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x61, + 0x41, 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B, + 0x37, 0x42, 0x28, 0x4C, 0x6C, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, + 0x75, 0x55, 0x42, 0x28, 0x1B, 0x67, 0x47, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, + 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x69, + 0x49, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, + 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x6D, 0x4D, 0x42, 0x28, 0x1B, 0x30, 0x42, + 0x28, 0x57, 0x77, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x72, 0x52, + 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, + 0x68, 0x48, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, + 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6C, + 0x4C, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, 0x1B, 0x65, + 0x45, 0x42, 0x28, 0x1B, 0x67, 0x47, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, + 0x1B, 0x70, 0x50, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x64, 0x44, + 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x63, 0x43, 0x36, + 0x35, 0x42, 0x28, 0x32, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x38, 0x42, + 0x28, 0x1B, 0x1B, 0x1B, 0x70, 0x50, 0x38, 0x37, 0x42, 0x28, 0x1B, 0x63, 0x43, + 0x42, 0x28, 0x53, 0x73, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x6A, + 0x4A, 0x42, 0x28, 0x1B, 0x54, 0x74, 0x42, 0x28, 0x1B, 0x66, 0x46, 0x42, 0x28, + 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x68, 0x48, 0x42, 0x28, 0x30, 0x42, 0x28, + 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x1B, 0x53, 0x73, 0x42, 0x28, + 0x1B, 0x69, 0x49, 0x42, 0x28, 0x45, 0x65, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, + 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x69, + 0x49, 0x42, 0x28, 0x45, 0x65, 0x42, 0x28, 0x45, 0x65, 0x42, 0x28, 0x1B, 0x1B, + 0x4C, 0x6C, 0x42, 0x62, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x45, 0x65, 0x42, + 0x28, 0x45, 0x65, 0x42, 0x28, 0x1B, 0x1B, 0x4C, 0x6C, 0x42, 0x62, 0x42, 0x28, + 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x1B, 0x38, 0x33, 0x31, 0x42, 0x28, 0x1B, 0x66, + 0x46, 0x42, 0x28, 0x1B, 0x1B, 0x74, 0x6E, 0x54, 0x4E, 0x42, 0x28, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, + 0x1B, 0x32, 0x42, 0x28, 0x31, 0x32, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, + 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x61, 0x41, + 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x1B, + 0x31, 0x33, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x77, 0x57, 0x42, + 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6E, + 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x77, 0x75, 0x74, 0x73, 0x70, 0x6B, + 0x69, 0x68, 0x67, 0x65, 0x62, 0x61, 0x57, 0x55, 0x54, 0x53, 0x50, 0x4B, 0x49, + 0x48, 0x47, 0x45, 0x42, 0x41, 0x42, 0x28, 0x43, 0x63, 0x42, 0x28, 0x1B, 0x69, + 0x49, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, + 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x79, 0x73, 0x70, 0x68, 0x63, 0x59, 0x53, 0x50, 0x48, 0x43, 0x42, + 0x28, 0x31, 0x32, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x45, 0x65, 0x42, + 0x28, 0x41, 0x61, 0x48, 0x68, 0x42, 0x28, 0x4B, 0x6B, 0x42, 0x28, 0x53, 0x73, + 0x42, 0x28, 0x49, 0x69, 0x52, 0x72, 0x42, 0x28, 0x42, 0x62, 0x52, 0x72, 0x42, + 0x28, 0x45, 0x65, 0x42, 0x28, 0x54, 0x74, 0x53, 0x73, 0x42, 0x28, 0x4C, 0x6C, + 0x4F, 0x6F, 0x42, 0x28, 0x45, 0x65, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, + 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x45, 0x65, 0x42, + 0x28, 0x52, 0x72, 0x42, 0x28, 0x53, 0x73, 0x42, 0x28, 0x54, 0x74, 0x42, 0x28, + 0x55, 0x75, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x79, 0x77, 0x75, 0x74, 0x73, 0x72, + 0x6E, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x59, 0x57, 0x55, + 0x54, 0x53, 0x52, 0x4E, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, + 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x43, 0x63, 0x42, 0x28, 0x1B, 0x69, 0x49, + 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, + 0x69, 0x49, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x1B, 0x79, 0x70, + 0x59, 0x50, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, + 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42, + 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, + 0x1B, 0x2D, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, + 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42, + 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, + 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x1B, 0x4B, 0x6B, 0x65, 0x45, 0x42, 0x28, 0x4F, + 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, 0x28, + 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, + 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, + 0x73, 0x53, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, + 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42, + 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, + 0x1B, 0x2D, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, + 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42, + 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, + 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x1B, 0x49, 0x69, 0x72, 0x52, 0x42, 0x28, 0x4F, + 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, 0x28, + 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, + 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, + 0x62, 0x42, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, + 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42, + 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, + 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, + 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x69, + 0x49, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, + 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x65, 0x45, + 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, + 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, + 0x1B, 0x2B, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, + 0x38, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, + 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, + 0x1B, 0x2B, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, + 0x32, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x74, 0x73, 0x6E, + 0x54, 0x53, 0x4E, 0x42, 0x28, 0x41, 0x61, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, + 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6B, 0x4B, 0x42, 0x28, 0x1B, 0x2D, + 0x42, 0x28, 0x1B, 0x70, 0x50, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, + 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, + 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, + 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, + 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x6F, 0x4F, 0x42, 0x28, 0x65, 0x45, 0x42, + 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55, + 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42, 0x28, 0x1B, 0x37, + 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x73, 0x53, + 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x75, 0x73, 0x6E, 0x6C, 0x6A, 0x69, 0x67, 0x66, 0x65, 0x64, 0x63, 0x55, 0x53, + 0x4E, 0x4C, 0x4A, 0x49, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x28, 0x1B, 0x2D, + 0x42, 0x28, 0x00, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, + 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x34, 0x38, 0x42, + 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, + 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6D, 0x4D, 0x42, 0x28, 0x38, 0x42, 0x28, + 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B, + 0x74, 0x54, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x4E, 0x6E, 0x42, 0x28, + 0x50, 0x70, 0x42, 0x28, 0x3E, 0x42, 0x28, 0x1B, 0x68, 0x48, 0x42, 0x28, 0x1B, + 0x1B, 0x1B, 0x74, 0x6B, 0x6A, 0x63, 0x54, 0x4B, 0x4A, 0x43, 0x42, 0x28, 0x1B, + 0x74, 0x54, 0x2D, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x5F, 0x42, 0x28, + 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x66, 0x46, + 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x61, + 0x41, 0x42, 0x28, 0x1B, 0x6D, 0x4D, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, + 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x66, 0x46, 0x42, 0x28, 0x1B, 0x5F, 0x42, + 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x6B, + 0x4B, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, + 0x1B, 0x70, 0x50, 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, + 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x63, + 0x43, 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B, 0x78, 0x58, 0x42, 0x28, 0x1B, + 0x69, 0x49, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, + 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x65, 0x45, + 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, + 0x65, 0x45, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x78, 0x75, 0x6C, 0x63, 0x62, 0x58, 0x55, 0x4C, 0x43, 0x42, 0x42, 0x28, + 0x2D, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x33, + 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x4B, 0x6B, 0x5F, 0x32, 0x42, 0x28, + 0x00, 0x1B, 0x6B, 0x4B, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x65, + 0x45, 0x42, 0x28, 0x1B, 0x1B, 0x72, 0x62, 0x52, 0x42, 0x42, 0x28, 0x2D, 0x42, + 0x28, 0x1B, 0x70, 0x65, 0x50, 0x45, 0x42, 0x28, 0x30, 0x42, 0x28, 0x33, 0x34, + 0x38, 0x39, 0x42, 0x28, 0x1B, 0x1B, 0x39, 0x36, 0x31, 0x30, 0x42, 0x28, 0x33, + 0x31, 0x42, 0x28, 0x00, 0x1B, 0x00, 0x1B, 0x38, 0x32, 0x37, 0x35, 0x31, 0x30, + 0x42, 0x28, 0x39, 0x35, 0x34, 0x31, 0x32, 0x42, 0x28, 0x31, 0x30, 0x33, 0x36, + 0x42, 0x28, 0x38, 0x35, 0x42, 0x28, 0x30, 0x34, 0x35, 0x37, 0x38, 0x39, 0x33, + 0x42, 0x28, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x42, + 0x28, 0x30, 0x32, 0x34, 0x33, 0x31, 0x35, 0x36, 0x37, 0x38, 0x39, 0x42, 0x28, + 0x30, 0x33, 0x31, 0x32, 0x42, 0x28, 0x36, 0x39, 0x37, 0x34, 0x42, 0x28, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x42, 0x28, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x36, 0x35, 0x34, 0x33, + 0x32, 0x31, 0x30, 0x42, 0x28, 0x31, 0x30, 0x32, 0x42, 0x28, 0x1B, 0x30, 0x42, + 0x28, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x28, + 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x32, 0x31, 0x30, 0x42, 0x28, 0x38, + 0x36, 0x42, 0x28, 0x37, 0x42, 0x28, 0x00, 0x1B, 0x00, 0x1B, 0x1B, 0x1B, 0x39, + 0x34, 0x36, 0x37, 0x38, 0x35, 0x33, 0x32, 0x31, 0x42, 0x28, 0x1B, 0x2D, 0x42, + 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x38, 0x39, + 0x42, 0x28, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x42, + 0x28, 0x36, 0x35, 0x37, 0x42, 0x28, 0x37, 0x30, 0x31, 0x32, 0x33, 0x36, 0x42, + 0x28, 0x31, 0x42, 0x28, 0x39, 0x38, 0x42, 0x28, 0x37, 0x38, 0x42, 0x28, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x35, 0x34, 0x32, 0x31, 0x30, + 0x42, 0x28, 0x32, 0x34, 0x35, 0x42, 0x28, 0x32, 0x33, 0x39, 0x42, 0x28, 0x30, + 0x32, 0x33, 0x37, 0x42, 0x28, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x28, + 0x30, 0x34, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x34, 0x36, 0x35, 0x33, + 0x32, 0x31, 0x42, 0x28, 0x31, 0x33, 0x38, 0x42, 0x28, 0x33, 0x35, 0x42, 0x28, + 0x32, 0x30, 0x31, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x28, 0x38, 0x42, + 0x28, 0x1B, 0x36, 0x35, 0x30, 0x42, 0x28, 0x30, 0x31, 0x32, 0x33, 0x42, 0x28, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x38, 0x37, 0x35, 0x33, 0x30, 0x42, 0x28, 0x31, + 0x34, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x38, 0x42, 0x28, 0x1B, 0x38, 0x42, + 0x28, 0x33, 0x34, 0x42, 0x28, 0x35, 0x33, 0x42, 0x28, 0x36, 0x33, 0x30, 0x31, + 0x38, 0x42, 0x28, 0x32, 0x39, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x39, 0x38, 0x37, 0x36, 0x34, 0x31, 0x42, 0x28, 0x34, 0x42, 0x28, 0x1B, 0x35, + 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x33, + 0x32, 0x31, 0x30, 0x42, 0x28, 0x36, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, 0x1B, + 0x36, 0x35, 0x42, 0x28, 0x39, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x30, + 0x34, 0x35, 0x37, 0x42, 0x28, 0x1B, 0x1B, 0x39, 0x37, 0x38, 0x35, 0x42, 0x28, + 0x30, 0x31, 0x42, 0x28, 0x32, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x37, + 0x42, 0x28, 0x1B, 0x1B, 0x37, 0x36, 0x33, 0x30, 0x42, 0x28, 0x36, 0x42, 0x28, + 0x1B, 0x37, 0x39, 0x42, 0x28, 0x38, 0x42, 0x28, 0x31, 0x32, 0x33, 0x42, 0x28, + 0x30, 0x35, 0x42, 0x28, 0x31, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x36, + 0x35, 0x34, 0x42, 0x28, 0x1B, 0x1B, 0x32, 0x39, 0x33, 0x42, 0x28, 0x36, 0x42, + 0x28, 0x35, 0x42, 0x28, 0x30, 0x32, 0x33, 0x34, 0x35, 0x42, 0x28, 0x1B, 0x1B, + 0x1B, 0x30, 0x35, 0x33, 0x32, 0x42, 0x28, 0x33, 0x42, 0x28, 0x1B, 0x32, 0x42, + 0x28, 0x36, 0x37, 0x38, 0x39, 0x42, 0x28, 0x30, 0x34, 0x42, 0x28, 0x1B, 0x1B, + 0x35, 0x34, 0x42, 0x28, 0x38, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x35, 0x42, + 0x28, 0x1B, 0x34, 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x37, 0x34, 0x33, 0x31, 0x30, 0x42, 0x28, 0x32, 0x42, 0x28, 0x1B, 0x35, + 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x31, 0x42, 0x28, 0x34, 0x42, 0x28, 0x35, + 0x42, 0x28, 0x35, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x34, 0x33, 0x32, 0x31, + 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x1B, 0x32, 0x31, 0x42, 0x28, 0x30, + 0x42, 0x28, 0x37, 0x42, 0x28, 0x1B, 0x1B, 0x37, 0x33, 0x32, 0x42, 0x28, 0x39, + 0x33, 0x42, 0x28, 0x38, 0x33, 0x35, 0x36, 0x37, 0x42, 0x28, 0x30, 0x31, 0x32, + 0x35, 0x37, 0x38, 0x42, 0x28, 0x32, 0x42, 0x28, 0x00, 0x1B, 0x30, 0x32, 0x33, + 0x35, 0x36, 0x39, 0x38, 0x34, 0x31, 0x42, 0x28, 0x30, 0x31, 0x34, 0x38, 0x35, + 0x42, 0x28, 0x31, 0x37, 0x36, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x38, 0x39, 0x37, 0x36, 0x35, 0x33, 0x31, 0x42, 0x28, 0x30, 0x42, 0x28, 0x36, + 0x42, 0x28, 0x36, 0x42, 0x28, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x34, 0x36, 0x35, + 0x33, 0x42, 0x28, 0x38, 0x32, 0x33, 0x34, 0x36, 0x35, 0x42, 0x28, 0x34, 0x31, + 0x33, 0x30, 0x32, 0x36, 0x37, 0x38, 0x42, 0x28, 0x30, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x42, 0x28, 0x37, 0x38, 0x39, 0x42, 0x28, 0x1B, 0x00, + 0x33, 0x32, 0x36, 0x37, 0x39, 0x34, 0x42, 0x28, 0x30, 0x31, 0x36, 0x37, 0x38, + 0x39, 0x42, 0x28, 0x34, 0x35, 0x42, 0x28, 0x30, 0x42, 0x28, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, + 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x30, 0x74, + 0x54, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x42, 0x28, 0x31, + 0x30, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x33, 0x30, 0x42, 0x28, + 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, + 0x38, 0x37, 0x35, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x36, 0x30, + 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x33, 0x32, 0x42, 0x28, 0x42, + 0x28, 0x1B, 0x30, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, + 0x1B, 0x37, 0x33, 0x32, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, + 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x39, 0x38, 0x37, 0x36, 0x35, 0x33, 0x31, 0x42, 0x28, 0x42, 0x28, 0x42, + 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x33, + 0x32, 0x31, 0x30, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x39, 0x38, 0x37, 0x35, 0x34, 0x33, 0x32, 0x30, 0x42, 0x28, 0x42, 0x28, 0x42, + 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x35, 0x34, 0x32, 0x31, 0x30, 0x42, + 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x42, + 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x38, 0x37, 0x35, 0x33, 0x30, 0x42, 0x28, 0x42, 0x28, 0x42, + 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36, + 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x33, 0x32, 0x31, 0x30, 0x42, 0x28, 0x42, + 0x28, 0x1B, 0x39, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, + 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x42, 0x28, 0x1B, 0x1B, 0x39, + 0x33, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x35, + 0x33, 0x32, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x42, 0x28, 0x42, + 0x28, 0x1B, 0x1B, 0x35, 0x34, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, + 0x1B, 0x1B, 0x1B, 0x1B, 0x34, 0x33, 0x31, 0x30, 0x42, 0x28, 0x42, 0x28, 0x1B, + 0x31, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, + 0x1B, 0x1B, 0x1B, 0x36, 0x35, 0x33, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x34, 0x42, + 0x28, 0x1B, 0x1B, 0x34, 0x30, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x39, 0x38, 0x35, 0x34, 0x31, 0x30, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x30, 0x42, + 0x28, 0x1B, 0x37, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x42, 0x28, + 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x1B, 0x34, 0x31, 0x42, 0x28, 0x42, 0x28, 0x1B, + 0x35, 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x37, 0x33, 0x32, + 0x42, 0x28, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x42, + 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x1B, 0x38, 0x35, + 0x42, 0x28, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, + 0x33, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, + 0x1B, 0x37, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x39, 0x42, + 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, + 0x34, 0x33, 0x32, 0x31, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x1B, 0x32, + 0x31, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x36, 0x35, 0x33, 0x32, + 0x31, 0x30, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, + 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x1B, + 0x1B, 0x63, 0x43, 0x39, 0x38, 0x37, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2D, + 0x42, 0x28, 0x1B, 0x6D, 0x4D, 0x42, 0x28, 0x32, 0x42, 0x28, 0x1B, 0x2D, 0x42, + 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x75, + 0x55, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x1B, 0x34, + 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x31, 0x42, 0x28, + 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, + 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6C, + 0x4C, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x2E, + 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x73, 0x53, + 0x42, 0x28, 0x1B, 0x77, 0x57, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, + 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, + 0x28, 0x1B, 0x77, 0x57, 0x42, 0x28, 0x1B, 0x33, 0x35, 0x2D, 0x42, 0x28, 0x32, + 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, + 0x49, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, + 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, + 0x28, 0x1B, 0x77, 0x57, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x64, + 0x44, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, + 0x1B, 0x77, 0x57, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x00, 0x1B, 0x00, 0x1B, + 0x36, 0x33, 0x34, 0x39, 0x37, 0x38, 0x35, 0x32, 0x31, 0x42, 0x28, 0x1B, 0x2D, + 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x38, 0x42, + 0x28, 0x30, 0x31, 0x39, 0x42, 0x28, 0x30, 0x42, 0x28, 0x37, 0x36, 0x42, 0x28, + 0x38, 0x42, 0x28, 0x38, 0x39, 0x34, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x33, 0x34, 0x32, 0x31, 0x30, 0x42, 0x28, 0x1B, 0x36, 0x35, 0x31, 0x42, 0x28, + 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x69, + 0x49, 0x38, 0x31, 0x42, 0x28, 0x53, 0x73, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, + 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, + 0x31, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, + 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x1B, 0x76, 0x56, 0x42, 0x28, 0x1B, 0x72, + 0x52, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x2E, 0x42, 0x28, 0x1B, + 0x36, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, 0x37, 0x42, 0x28, 0x1B, 0x38, 0x42, + 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x35, 0x3A, 0x42, + 0x28, 0x37, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, + 0x31, 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x38, 0x42, 0x28, 0x1B, 0x38, 0x42, + 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, + 0x38, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, + 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x38, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, + 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x37, + 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, + 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x37, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, + 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x38, 0x42, + 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, + 0x39, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, + 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, + 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x39, 0x38, + 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, + 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, + 0x1B, 0x38, 0x36, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x5F, 0x36, 0x2D, 0x42, 0x28, + 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x73, 0x62, 0x61, 0x53, 0x42, + 0x41, 0x42, 0x28, 0x31, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x32, 0x42, + 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x58, 0x78, 0x42, 0x28, 0x1B, 0x5F, 0x42, + 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x2D, 0x42, + 0x28, 0x1B, 0x38, 0x42, 0x28, 0x4E, 0x6E, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, + 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x1B, 0x72, 0x69, 0x52, 0x49, 0x42, + 0x28, 0x31, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x1B, + 0x35, 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x39, 0x37, 0x42, 0x28, 0x1B, 0x38, + 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x2D, 0x42, + 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, + 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, + 0x1B, 0x1B, 0x63, 0x5F, 0x43, 0x42, 0x28, 0x1B, 0x1B, 0x73, 0x6F, 0x53, 0x4F, + 0x42, 0x28, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2D, 0x42, + 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x74, + 0x54, 0x42, 0x28, 0x1B, 0x31, 0x32, 0x33, 0x34, 0x35, 0x61, 0x41, 0x42, 0x28, + 0x33, 0x42, 0x28, 0x49, 0x69, 0x42, 0x28, 0x1B, 0x6A, 0x4A, 0x42, 0x28, 0x1B, + 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6B, 0x4B, 0x42, + 0x28, 0x1B, 0x1B, 0x39, 0x5F, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x4F, + 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, 0x28, + 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, + 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, + 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, + 0x28, 0x1B, 0x67, 0x47, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, + 0x49, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, + 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x75, 0x55, + 0x42, 0x28, 0x1B, 0x6D, 0x4D, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x63, + 0x43, 0x42, 0x28, 0x38, 0x6F, 0x4F, 0x42, 0x28, 0x5F, 0x42, 0x28, 0x1B, 0x74, + 0x54, 0x42, 0x28, 0x1B, 0x66, 0x46, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, + 0x1B, 0x68, 0x48, 0x42, 0x28, 0x2D, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, + 0x1B, 0x69, 0x49, 0x42, 0x28, 0x32, 0x2D, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, + 0x28, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x2D, 0x42, + 0x28, 0x6C, 0x62, 0x4C, 0x42, 0x2D, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x6C, + 0x62, 0x4C, 0x42, 0x2D, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x1B, 0x38, + 0x33, 0x31, 0x42, 0x28, 0x1B, 0x38, 0x33, 0x31, 0x2D, 0x42, 0x28, 0x1B, 0x66, + 0x46, 0x42, 0x28, 0x1B, 0x00, 0x1B, 0x1B, 0x74, 0x73, 0x63, 0x54, 0x53, 0x43, + 0x42, 0x28, 0x39, 0x31, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x73, 0x53, + 0x42, 0x28, 0x1B, 0x77, 0x57, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, + 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, + 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x4A, + 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x35, 0x36, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x30, + 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, + 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x63, + 0x43, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, + 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, + 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6E, + 0x4E, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, + 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, + 0x28, 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x4A, 0x28, + 0x4A, 0x28, 0x1B, 0x1B, 0x38, 0x36, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, + 0x31, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x1B, 0x2E, + 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x78, 0x58, 0x4A, 0x28, 0x1B, 0x5F, + 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x4A, + 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x1B, 0x61, + 0x41, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x30, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x6F, + 0x4F, 0x4A, 0x28, 0x1B, 0x1B, 0x43, 0x63, 0x6D, 0x4D, 0x4A, 0x28, 0x1B, 0x1B, + 0x1B, 0x1B, 0x52, 0x72, 0x73, 0x6E, 0x64, 0x53, 0x4E, 0x44, 0x4A, 0x28, 0x4A, + 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x6B, + 0x4B, 0x4A, 0x28, 0x1B, 0x68, 0x48, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, + 0x35, 0x4A, 0x28, 0x1B, 0x67, 0x47, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, + 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, + 0x1B, 0x39, 0x38, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x1B, 0x31, + 0x4A, 0x28, 0x1B, 0x1B, 0x31, 0x30, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x1B, + 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, + 0x28, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, + 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x4A, 0x28, 0x4A, + 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x69, 0x67, 0x61, 0x49, 0x47, 0x41, 0x4A, + 0x28, 0x4A, 0x28, 0x1B, 0x33, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, + 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, + 0x4A, 0x28, 0x1B, 0x33, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, + 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, + 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36, 0x35, + 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x33, + 0x31, 0x30, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x38, 0x37, 0x35, 0x34, 0x33, 0x30, 0x39, 0x32, 0x31, 0x2D, 0x4A, 0x28, + 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, + 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x61, + 0x41, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, + 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, + 0x4A, 0x28, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x1B, 0x53, 0x73, 0x64, 0x44, 0x4A, + 0x28, 0x35, 0x4A, 0x28, 0x1B, 0x67, 0x47, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, + 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x65, 0x45, + 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, + 0x70, 0x50, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6A, 0x4A, 0x4A, + 0x28, 0x1B, 0x54, 0x74, 0x4A, 0x28, 0x1B, 0x6D, 0x4D, 0x4A, 0x28, 0x1B, 0x66, + 0x46, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6B, 0x4B, 0x4A, 0x28, + 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x54, 0x74, 0x4B, 0x6B, 0x70, 0x50, 0x4A, 0x28, + 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x31, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x4B, 0x6B, 0x32, 0x4A, 0x28, + 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, + 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6B, 0x4B, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, + 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6B, + 0x4B, 0x4A, 0x28, 0x1B, 0x68, 0x48, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, + 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x77, 0x57, + 0x4A, 0x28, 0x1B, 0x66, 0x46, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x4A, + 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6D, + 0x4D, 0x4A, 0x28, 0x1B, 0x4F, 0x6F, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, + 0x1B, 0x1B, 0x50, 0x70, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, + 0x6D, 0x4D, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x34, 0x32, 0x4A, 0x28, 0x1B, 0x30, + 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x39, 0x38, 0x37, 0x4A, 0x28, 0x32, 0x4A, 0x28, + 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36, 0x35, 0x4A, 0x28, + 0x4A, 0x28, 0x1B, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, + 0x28, 0x1B, 0x68, 0x48, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x35, + 0x30, 0x54, 0x74, 0x32, 0x31, 0x39, 0x38, 0x34, 0x4A, 0x28, 0x1B, 0x1B, 0x6D, + 0x62, 0x4D, 0x42, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x32, + 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x32, 0x4A, + 0x28, 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x1B, 0x67, 0x47, 0x4A, 0x28, 0x1B, 0x38, + 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, + 0x35, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x72, 0x52, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, + 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, + 0x79, 0x59, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x65, + 0x45, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x65, 0x45, + 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x1B, + 0x45, 0x65, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x68, 0x67, 0x63, 0x61, 0x48, 0x47, 0x43, 0x41, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, + 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, + 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x6C, 0x4C, 0x38, 0x35, 0x4A, 0x28, + 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x1B, 0x73, 0x62, 0x53, 0x42, 0x4A, 0x28, + 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, + 0x31, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x35, + 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x1B, 0x73, 0x6F, 0x53, 0x4F, + 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, + 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x62, + 0x42, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x67, 0x47, + 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, + 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, + 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x6D, + 0x4D, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, + 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x1B, 0x65, + 0x45, 0x4A, 0x28, 0x1B, 0x68, 0x48, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, + 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41, + 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x34, + 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x67, 0x47, 0x4A, 0x28, 0x1B, + 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x70, 0x50, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, + 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x1B, + 0x1B, 0x63, 0x43, 0x36, 0x35, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, + 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x70, 0x50, 0x38, 0x37, 0x4A, 0x28, + 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, + 0x6A, 0x4A, 0x4A, 0x28, 0x1B, 0x54, 0x74, 0x4A, 0x28, 0x1B, 0x66, 0x46, 0x4A, + 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x68, 0x48, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x53, 0x73, 0x4A, 0x28, + 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, + 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, + 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x4C, 0x6C, 0x42, 0x62, 0x4A, 0x28, + 0x1B, 0x36, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x4C, 0x6C, 0x42, + 0x62, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x1B, 0x38, 0x33, 0x31, 0x4A, + 0x28, 0x1B, 0x66, 0x46, 0x4A, 0x28, 0x1B, 0x1B, 0x74, 0x6E, 0x54, 0x4E, 0x4A, + 0x28, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54, + 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, + 0x31, 0x4A, 0x28, 0x1B, 0x1B, 0x31, 0x33, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, + 0x28, 0x1B, 0x77, 0x57, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x64, + 0x44, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x77, + 0x75, 0x74, 0x73, 0x70, 0x6B, 0x69, 0x68, 0x67, 0x65, 0x62, 0x61, 0x57, 0x55, + 0x54, 0x53, 0x50, 0x4B, 0x49, 0x48, 0x47, 0x45, 0x42, 0x41, 0x4A, 0x28, 0x4A, + 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x6C, + 0x4C, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x79, 0x73, 0x70, 0x68, 0x63, 0x59, 0x53, 0x50, + 0x48, 0x43, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x4A, 0x28, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, + 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x65, 0x45, + 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, + 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x79, 0x77, 0x75, 0x74, 0x73, 0x72, + 0x6E, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x59, 0x57, 0x55, + 0x54, 0x53, 0x52, 0x4E, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, + 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, + 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x69, 0x49, + 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x1B, 0x79, 0x70, 0x59, 0x50, + 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, + 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x33, 0x4A, + 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, + 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, + 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, + 0x37, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x1B, + 0x4B, 0x6B, 0x65, 0x45, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, + 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, + 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, + 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, + 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, + 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, + 0x32, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, + 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, + 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x32, 0x4A, + 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x1B, 0x49, 0x69, 0x72, 0x52, 0x4A, 0x28, + 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, + 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, + 0x38, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x62, + 0x42, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, + 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x30, + 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, + 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6E, + 0x4E, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, + 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, + 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, + 0x74, 0x54, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, + 0x55, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, + 0x31, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x2D, + 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, + 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x30, 0x4A, + 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, + 0x1B, 0x1B, 0x1B, 0x74, 0x73, 0x6E, 0x54, 0x53, 0x4E, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6B, 0x4B, + 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x70, 0x50, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x65, 0x45, + 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x39, 0x4A, + 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, + 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x6F, 0x4F, 0x4A, 0x28, 0x65, + 0x45, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, + 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x37, + 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x73, 0x53, + 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x75, 0x73, 0x6E, 0x6C, 0x6A, 0x69, 0x67, 0x66, 0x65, 0x64, 0x63, 0x55, 0x53, + 0x4E, 0x4C, 0x4A, 0x49, 0x47, 0x46, 0x45, 0x44, 0x43, 0x4A, 0x28, 0x1B, 0x2D, + 0x4A, 0x28, 0x00, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, + 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x31, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x61, + 0x41, 0x4A, 0x28, 0x1B, 0x6D, 0x4D, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, + 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x5F, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, + 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x68, 0x48, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x74, 0x6B, 0x6A, 0x63, 0x54, 0x4B, + 0x4A, 0x43, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x2D, 0x4A, 0x28, 0x1B, 0x63, 0x43, + 0x4A, 0x28, 0x5F, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, + 0x4A, 0x28, 0x1B, 0x66, 0x46, 0x4A, 0x28, 0x1B, 0x5F, 0x4A, 0x28, 0x1B, 0x74, + 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6D, 0x4D, 0x4A, 0x28, + 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x66, 0x46, + 0x4A, 0x28, 0x1B, 0x5F, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x65, + 0x45, 0x4A, 0x28, 0x1B, 0x6B, 0x4B, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, + 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x70, 0x50, 0x4A, 0x28, 0x1B, 0x5F, 0x4A, + 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6F, + 0x4F, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x5F, 0x4A, 0x28, 0x1B, + 0x78, 0x58, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, + 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x5F, 0x4A, 0x28, 0x1B, 0x64, 0x44, + 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, + 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, + 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x78, 0x75, 0x6C, 0x63, 0x62, 0x58, 0x55, + 0x4C, 0x43, 0x42, 0x4A, 0x28, 0x2D, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, + 0x31, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x4B, + 0x6B, 0x5F, 0x32, 0x4A, 0x28, 0x00, 0x1B, 0x6B, 0x4B, 0x4A, 0x28, 0x1B, 0x65, + 0x45, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x1B, 0x72, 0x62, 0x52, + 0x42, 0x4A, 0x28, 0x2D, 0x4A, 0x28, 0x1B, 0x70, 0x65, 0x50, 0x45, 0x4A, 0x28, + 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x39, 0x36, 0x31, 0x30, 0x4A, 0x28, 0x4A, + 0x28, 0x00, 0x1B, 0x00, 0x1B, 0x38, 0x32, 0x37, 0x35, 0x31, 0x30, 0x4A, 0x28, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, + 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x39, 0x38, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x4A, 0x28, 0x4A, + 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x1B, + 0x1B, 0x32, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x00, 0x1B, 0x00, + 0x1B, 0x1B, 0x1B, 0x39, 0x34, 0x36, 0x37, 0x38, 0x35, 0x33, 0x32, 0x31, 0x4A, + 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, + 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x35, + 0x34, 0x32, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, + 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x34, 0x36, 0x35, 0x33, 0x32, + 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x36, + 0x35, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x38, 0x37, + 0x35, 0x33, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x38, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36, 0x34, 0x31, 0x4A, 0x28, + 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x37, 0x33, 0x32, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x34, + 0x4A, 0x28, 0x1B, 0x36, 0x35, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, + 0x1B, 0x30, 0x34, 0x35, 0x37, 0x4A, 0x28, 0x1B, 0x1B, 0x39, 0x37, 0x38, 0x35, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x37, 0x4A, + 0x28, 0x1B, 0x1B, 0x37, 0x36, 0x33, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x37, + 0x39, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, + 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x4A, 0x28, 0x1B, 0x1B, 0x32, 0x39, 0x33, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x30, 0x35, + 0x33, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x4A, + 0x28, 0x1B, 0x1B, 0x35, 0x34, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, + 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x37, 0x34, 0x33, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x35, + 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, + 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x34, 0x33, 0x32, 0x31, 0x4A, 0x28, 0x1B, 0x32, + 0x4A, 0x28, 0x1B, 0x1B, 0x32, 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x1B, 0x37, 0x33, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, + 0x28, 0x00, 0x1B, 0x30, 0x32, 0x33, 0x35, 0x36, 0x39, 0x38, 0x34, 0x31, 0x4A, + 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x38, 0x39, + 0x37, 0x36, 0x35, 0x33, 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x34, 0x36, 0x35, 0x33, 0x4A, 0x28, 0x4A, 0x28, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x00, 0x33, 0x32, 0x36, 0x37, 0x39, + 0x34, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x4A, + 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x30, 0x74, 0x54, + 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x4A, 0x28, 0x31, 0x30, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x33, 0x30, 0x4A, 0x28, 0x4A, + 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, + 0x37, 0x35, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x36, 0x30, 0x4A, + 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x33, 0x32, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, + 0x37, 0x33, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x39, 0x38, 0x37, 0x36, 0x35, 0x33, 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, + 0x31, 0x30, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, + 0x38, 0x37, 0x35, 0x34, 0x33, 0x32, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x35, 0x34, 0x32, 0x31, 0x30, 0x4A, 0x28, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x4A, 0x28, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x38, 0x37, 0x35, 0x33, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, + 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36, 0x4A, + 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x33, 0x32, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x39, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x1B, 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x4A, 0x28, 0x1B, 0x1B, 0x39, 0x33, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x35, 0x33, + 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x1B, 0x35, 0x34, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, + 0x1B, 0x1B, 0x1B, 0x34, 0x33, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x31, + 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x1B, 0x1B, 0x36, 0x35, 0x33, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, + 0x1B, 0x1B, 0x34, 0x30, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, + 0x38, 0x35, 0x34, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, + 0x1B, 0x37, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x38, 0x4A, 0x28, 0x1B, 0x1B, 0x34, 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x35, + 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x37, 0x33, 0x32, 0x4A, + 0x28, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, 0x1B, 0x38, 0x35, 0x4A, + 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, 0x33, + 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, + 0x37, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, + 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x34, + 0x33, 0x32, 0x31, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x1B, 0x32, 0x31, + 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x36, 0x35, 0x33, 0x32, 0x31, + 0x30, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, + 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, + 0x63, 0x43, 0x39, 0x38, 0x37, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2D, 0x4A, + 0x28, 0x1B, 0x6D, 0x4D, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, + 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, + 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, + 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, + 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, + 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, + 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x2E, 0x4A, 0x28, 0x1B, + 0x33, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, + 0x77, 0x57, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, + 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x77, + 0x57, 0x4A, 0x28, 0x1B, 0x33, 0x35, 0x2D, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x2D, + 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, + 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, + 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x77, 0x57, + 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, + 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x77, 0x57, 0x4A, + 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x00, 0x1B, 0x00, 0x1B, 0x36, 0x33, 0x34, 0x39, + 0x37, 0x38, 0x35, 0x32, 0x31, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x39, + 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x4A, 0x28, 0x4A, + 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x33, + 0x34, 0x32, 0x31, 0x30, 0x4A, 0x28, 0x1B, 0x36, 0x35, 0x31, 0x4A, 0x28, 0x1B, + 0x2D, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x69, 0x49, + 0x38, 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x2D, + 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x39, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x3A, + 0x4A, 0x28, 0x1B, 0x76, 0x56, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, + 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x2E, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B, + 0x34, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, + 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x35, 0x3A, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, + 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x3A, 0x4A, + 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31, + 0x4A, 0x28, 0x1B, 0x3A, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, + 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x3A, 0x4A, 0x28, 0x4A, 0x28, + 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, + 0x3A, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, + 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x3A, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, + 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x3A, 0x4A, 0x28, + 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x3A, + 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, + 0x31, 0x4A, 0x28, 0x1B, 0x3A, 0x4A, 0x28, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, + 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x39, + 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, + 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, + 0x1B, 0x1B, 0x38, 0x36, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x5F, 0x36, 0x2D, 0x4A, + 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x73, 0x62, 0x61, 0x53, + 0x42, 0x41, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x32, 0x4A, + 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x58, 0x78, 0x4A, 0x28, 0x1B, 0x5F, 0x4A, + 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x2D, 0x4A, + 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, + 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x1B, 0x72, 0x69, 0x52, 0x49, 0x4A, 0x28, 0x4A, + 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, + 0x1B, 0x5F, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, + 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, + 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, + 0x5F, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x1B, 0x63, 0x5F, 0x43, + 0x4A, 0x28, 0x1B, 0x1B, 0x73, 0x6F, 0x53, 0x4F, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x2D, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, + 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x61, 0x41, 0x4A, 0x28, 0x33, 0x4A, 0x28, 0x4A, 0x28, 0x1B, + 0x6A, 0x4A, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, + 0x28, 0x1B, 0x6B, 0x4B, 0x4A, 0x28, 0x1B, 0x1B, 0x39, 0x5F, 0x4A, 0x28, 0x1B, + 0x73, 0x53, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, + 0x55, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, + 0x30, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x2D, + 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, + 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x67, 0x47, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, + 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x69, + 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, + 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x6D, 0x4D, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, + 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x38, 0x6F, 0x4F, 0x4A, 0x28, 0x5F, 0x4A, + 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x66, 0x46, 0x4A, 0x28, 0x1B, 0x69, + 0x49, 0x4A, 0x28, 0x1B, 0x68, 0x48, 0x4A, 0x28, 0x2D, 0x4A, 0x28, 0x1B, 0x73, + 0x53, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x32, 0x2D, 0x4A, 0x28, 0x1B, + 0x73, 0x53, 0x4A, 0x28, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, + 0x1B, 0x2D, 0x4A, 0x28, 0x6C, 0x62, 0x4C, 0x42, 0x2D, 0x4A, 0x28, 0x1B, 0x36, + 0x4A, 0x28, 0x6C, 0x62, 0x4C, 0x42, 0x2D, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, + 0x1B, 0x1B, 0x38, 0x33, 0x31, 0x4A, 0x28, 0x1B, 0x38, 0x33, 0x31, 0x2D, 0x4A, + 0x28, 0x1B, 0x66, 0x46, 0x4A, 0x28, 0x1B, 0x00, 0x1B, 0x1B, 0x74, 0x73, 0x63, + 0x54, 0x53, 0x43, 0x4A, 0x28, 0x39, 0x31, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, + 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x77, 0x57, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, + 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, + 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x78, 0x77, 0x75, 0x74, + 0x73, 0x72, 0x70, 0x6D, 0x6C, 0x6B, 0x6A, 0x69, 0x68, 0x67, 0x65, 0x63, 0x62, + 0x61, 0x58, 0x57, 0x55, 0x54, 0x53, 0x52, 0x50, 0x4D, 0x4C, 0x4B, 0x4A, 0x49, + 0x48, 0x47, 0x45, 0x43, 0x42, 0x41, 0x39, 0x38, 0x34, 0x78, 0x77, 0x75, 0x74, + 0x73, 0x72, 0x70, 0x6D, 0x6C, 0x6B, 0x6A, 0x69, 0x68, 0x67, 0x65, 0x63, 0x62, + 0x61, 0x58, 0x57, 0x55, 0x54, 0x53, 0x52, 0x50, 0x4D, 0x4C, 0x4B, 0x4A, 0x49, + 0x48, 0x47, 0x45, 0x43, 0x42, 0x41, 0x39, 0x38, 0x34, 0x4A, 0x42, 0x6E, 0x4E, + 0x69, 0x49, 0x64, 0x44, 0x6F, 0x4F, 0x63, 0x43, 0x6E, 0x4E, 0x65, 0x45, 0x2D, + 0x64, 0x44, 0x72, 0x52, 0x61, 0x41, 0x64, 0x44, 0x6E, 0x4E, 0x61, 0x41, 0x74, + 0x54, 0x73, 0x53, 0x2D, 0x65, 0x45, 0x62, 0x42, 0x38, 0x36, 0x39, 0x31, 0x2D, + 0x34, 0x2E, 0x33, 0x78, 0x58, 0x5F, 0x69, 0x49, 0x69, 0x49, 0x62, 0x42, 0x30, + 0x37, 0x2D, 0x6F, 0x4F, 0x69, 0x49, 0x43, 0x63, 0x6D, 0x4D, 0x61, 0x41, 0x73, + 0x53, 0x6F, 0x4F, 0x63, 0x43, 0x73, 0x53, 0x6B, 0x4B, 0x68, 0x48, 0x2D, 0x35, + 0x67, 0x47, 0x32, 0x35, 0x34, 0x31, 0x39, 0x38, 0x31, 0x30, 0x30, 0x64, 0x44, + 0x69, 0x49, 0x73, 0x53, 0x65, 0x45, 0x6E, 0x4E, 0x32, 0x30, 0x31, 0x33, 0x39, + 0x38, 0x37, 0x36, 0x35, 0x31, 0x37, 0x30, 0x33, 0x32, 0x36, 0x38, 0x39, 0x37, + 0x30, 0x33, 0x31, 0x30, 0x69, 0x67, 0x61, 0x49, 0x47, 0x41, 0x64, 0x44, 0x72, + 0x52, 0x61, 0x41, 0x64, 0x44, 0x6E, 0x4E, 0x61, 0x41, 0x74, 0x54, 0x73, 0x53, + 0x65, 0x45, 0x62, 0x42, 0x63, 0x43, 0x6F, 0x4F, 0x35, 0x67, 0x47, 0x73, 0x53, + 0x65, 0x45, 0x6E, 0x4E, 0x61, 0x41, 0x70, 0x50, 0x61, 0x41, 0x6A, 0x4A, 0x54, + 0x74, 0x6D, 0x4D, 0x66, 0x46, 0x64, 0x44, 0x6B, 0x4B, 0x4B, 0x6B, 0x54, 0x74, + 0x70, 0x50, 0x63, 0x43, 0x31, 0x33, 0x4B, 0x6B, 0x32, 0x6E, 0x4E, 0x61, 0x41, + 0x6B, 0x4B, 0x61, 0x41, 0x74, 0x54, 0x61, 0x41, 0x6B, 0x4B, 0x68, 0x48, 0x74, + 0x54, 0x64, 0x44, 0x69, 0x49, 0x77, 0x57, 0x66, 0x46, 0x6E, 0x4E, 0x61, 0x41, + 0x6D, 0x4D, 0x4F, 0x6F, 0x72, 0x52, 0x6C, 0x4C, 0x30, 0x39, 0x34, 0x32, 0x61, + 0x41, 0x68, 0x48, 0x31, 0x30, 0x37, 0x38, 0x39, 0x36, 0x35, 0x32, 0x39, 0x38, + 0x37, 0x30, 0x35, 0x30, 0x54, 0x74, 0x32, 0x31, 0x39, 0x38, 0x34, 0x6D, 0x4D, + 0x38, 0x32, 0x31, 0x33, 0x32, 0x62, 0x42, 0x67, 0x47, 0x31, 0x39, 0x35, 0x69, + 0x49, 0x6C, 0x4C, 0x6C, 0x4C, 0x69, 0x49, 0x72, 0x52, 0x65, 0x45, 0x65, 0x45, + 0x65, 0x45, 0x72, 0x52, 0x62, 0x42, 0x45, 0x65, 0x72, 0x52, 0x79, 0x59, 0x72, + 0x52, 0x31, 0x32, 0x33, 0x34, 0x35, 0x68, 0x67, 0x63, 0x61, 0x48, 0x47, 0x43, + 0x41, 0x6E, 0x4E, 0x69, 0x49, 0x74, 0x54, 0x61, 0x41, 0x38, 0x38, 0x6C, 0x4C, + 0x38, 0x35, 0x6F, 0x4F, 0x6D, 0x62, 0x4D, 0x42, 0x38, 0x38, 0x39, 0x31, 0x31, + 0x30, 0x36, 0x35, 0x63, 0x43, 0x69, 0x49, 0x69, 0x49, 0x74, 0x54, 0x6C, 0x4C, + 0x61, 0x41, 0x62, 0x42, 0x35, 0x61, 0x41, 0x75, 0x55, 0x67, 0x47, 0x6E, 0x4E, + 0x69, 0x49, 0x6C, 0x4C, 0x69, 0x49, 0x74, 0x54, 0x6C, 0x4C, 0x75, 0x55, 0x6D, + 0x4D, 0x65, 0x45, 0x72, 0x52, 0x62, 0x42, 0x65, 0x45, 0x68, 0x48, 0x6E, 0x4E, + 0x69, 0x49, 0x74, 0x54, 0x61, 0x41, 0x6C, 0x4C, 0x33, 0x34, 0x65, 0x45, 0x67, + 0x47, 0x61, 0x41, 0x70, 0x50, 0x65, 0x45, 0x64, 0x44, 0x6F, 0x4F, 0x32, 0x30, + 0x35, 0x38, 0x63, 0x43, 0x36, 0x35, 0x37, 0x70, 0x50, 0x38, 0x37, 0x69, 0x49, + 0x6A, 0x4A, 0x54, 0x74, 0x66, 0x46, 0x69, 0x49, 0x32, 0x36, 0x53, 0x73, 0x64, + 0x44, 0x6F, 0x4F, 0x63, 0x43, 0x42, 0x62, 0x4C, 0x6C, 0x42, 0x62, 0x4C, 0x6C, + 0x32, 0x36, 0x38, 0x33, 0x31, 0x66, 0x46, 0x69, 0x49, 0x35, 0x6E, 0x4E, 0x69, + 0x49, 0x74, 0x54, 0x61, 0x41, 0x6C, 0x4C, 0x31, 0x32, 0x31, 0x33, 0x73, 0x53, + 0x77, 0x57, 0x6F, 0x4F, 0x64, 0x44, 0x6E, 0x4E, 0x69, 0x49, 0x74, 0x6E, 0x54, + 0x4E, 0x69, 0x49, 0x68, 0x48, 0x63, 0x43, 0x73, 0x6F, 0x53, 0x4F, 0x73, 0x62, + 0x53, 0x42, 0x50, 0x70, 0x61, 0x41, 0x62, 0x42, 0x75, 0x55, 0x69, 0x49, 0x53, + 0x73, 0x64, 0x44, 0x69, 0x49, 0x6C, 0x4C, 0x6C, 0x4C, 0x69, 0x49, 0x72, 0x52, + 0x77, 0x75, 0x74, 0x73, 0x70, 0x6B, 0x69, 0x68, 0x67, 0x65, 0x62, 0x61, 0x57, + 0x55, 0x54, 0x53, 0x50, 0x4B, 0x49, 0x48, 0x47, 0x45, 0x42, 0x41, 0x38, 0x37, + 0x35, 0x34, 0x33, 0x30, 0x39, 0x32, 0x31, 0x2D, 0x69, 0x49, 0x73, 0x53, 0x63, + 0x43, 0x65, 0x45, 0x6F, 0x4F, 0x72, 0x52, 0x79, 0x77, 0x75, 0x74, 0x73, 0x72, + 0x6E, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x59, 0x57, 0x55, + 0x54, 0x53, 0x52, 0x4E, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, + 0x69, 0x49, 0x6C, 0x4C, 0x6C, 0x4C, 0x69, 0x49, 0x72, 0x52, 0x2D, 0x72, 0x52, + 0x75, 0x55, 0x65, 0x45, 0x2B, 0x33, 0x37, 0x32, 0x72, 0x52, 0x75, 0x55, 0x65, + 0x45, 0x2B, 0x37, 0x37, 0x32, 0x2D, 0x2D, 0x72, 0x52, 0x75, 0x55, 0x65, 0x45, + 0x2B, 0x34, 0x38, 0x32, 0x2D, 0x72, 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x38, + 0x37, 0x32, 0x72, 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x37, 0x39, 0x32, 0x2D, + 0x2D, 0x72, 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x35, 0x38, 0x32, 0x2D, 0x72, + 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x30, 0x30, 0x35, 0x2D, 0x6C, 0x4C, 0x61, + 0x41, 0x6E, 0x4E, 0x6F, 0x4F, 0x69, 0x49, 0x74, 0x54, 0x61, 0x41, 0x6E, 0x4E, + 0x72, 0x52, 0x65, 0x45, 0x72, 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x31, 0x37, + 0x38, 0x72, 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x30, 0x38, 0x32, 0x2D, 0x2D, + 0x74, 0x54, 0x6E, 0x4E, 0x61, 0x41, 0x6B, 0x4B, 0x2D, 0x72, 0x52, 0x75, 0x55, + 0x65, 0x45, 0x2D, 0x2D, 0x39, 0x6E, 0x4E, 0x69, 0x49, 0x74, 0x54, 0x72, 0x52, + 0x75, 0x55, 0x65, 0x45, 0x2B, 0x37, 0x33, 0x2D, 0x73, 0x53, 0x65, 0x45, 0x6F, + 0x4F, 0x61, 0x41, 0x70, 0x50, 0x74, 0x73, 0x6E, 0x54, 0x53, 0x4E, 0x62, 0x42, + 0x49, 0x69, 0x72, 0x52, 0x73, 0x53, 0x4B, 0x6B, 0x65, 0x45, 0x79, 0x70, 0x59, + 0x50, 0x75, 0x73, 0x6E, 0x6C, 0x6A, 0x69, 0x67, 0x66, 0x65, 0x64, 0x63, 0x55, + 0x53, 0x4E, 0x4C, 0x4A, 0x49, 0x47, 0x46, 0x45, 0x44, 0x43, 0x00, 0x2D, 0x63, + 0x43, 0x69, 0x49, 0x64, 0x44, 0x31, 0x31, 0x2D, 0x61, 0x41, 0x32, 0x39, 0x5F, + 0x74, 0x54, 0x68, 0x48, 0x74, 0x6B, 0x6A, 0x63, 0x54, 0x4B, 0x4A, 0x43, 0x74, + 0x54, 0x2D, 0x5F, 0x72, 0x52, 0x6F, 0x4F, 0x66, 0x46, 0x5F, 0x74, 0x54, 0x61, + 0x41, 0x6D, 0x4D, 0x72, 0x52, 0x6F, 0x4F, 0x66, 0x46, 0x5F, 0x64, 0x44, 0x65, + 0x45, 0x6B, 0x4B, 0x63, 0x43, 0x61, 0x41, 0x70, 0x50, 0x5F, 0x65, 0x45, 0x64, + 0x44, 0x6F, 0x4F, 0x63, 0x43, 0x5F, 0x78, 0x58, 0x69, 0x49, 0x6E, 0x4E, 0x75, + 0x55, 0x5F, 0x64, 0x44, 0x65, 0x45, 0x64, 0x44, 0x6E, 0x4E, 0x65, 0x45, 0x74, + 0x54, 0x63, 0x43, 0x6F, 0x4F, 0x6D, 0x4D, 0x63, 0x43, 0x2D, 0x32, 0x31, 0x33, + 0x32, 0x00, 0x38, 0x6B, 0x4B, 0x65, 0x45, 0x65, 0x45, 0x4B, 0x6B, 0x5F, 0x32, + 0x00, 0xF8, 0x73, 0xD2, 0xC5, 0x66, 0xC5, 0x66, 0x2D, 0x00, 0x33, 0x31, 0x00, + 0x39, 0x36, 0x31, 0x30, 0x35, 0x30, 0x39, 0x38, 0x36, 0x35, 0x34, 0x33, 0x32, + 0x31, 0x30, 0x00, 0x37, 0x00, 0x38, 0x36, 0x32, 0x31, 0x30, 0x38, 0x32, 0x37, + 0x35, 0x31, 0x30, 0x39, 0x34, 0x36, 0x37, 0x38, 0x35, 0x33, 0x32, 0x31, 0x2D, + 0x61, 0x41, 0x36, 0x35, 0x30, 0x38, 0x32, 0x35, 0x33, 0x39, 0x38, 0x37, 0x36, + 0x34, 0x31, 0x38, 0x37, 0x35, 0x33, 0x30, 0x34, 0x36, 0x35, 0x33, 0x32, 0x31, + 0x39, 0x38, 0x35, 0x34, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x34, 0x35, 0x37, + 0x36, 0x35, 0x32, 0x37, 0x37, 0x36, 0x35, 0x34, 0x37, 0x39, 0x34, 0x33, 0x37, + 0x35, 0x34, 0x32, 0x30, 0x35, 0x33, 0x32, 0x35, 0x34, 0x33, 0x32, 0x31, 0x32, + 0x39, 0x00, 0x32, 0x30, 0x32, 0x33, 0x35, 0x36, 0x39, 0x38, 0x34, 0x31, 0x00, + 0x36, 0x00, 0x30, 0x37, 0x38, 0x39, 0x00, 0x33, 0x32, 0x36, 0x37, 0x39, 0x34, + 0x34, 0x36, 0x35, 0x33, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x38, + 0x39, 0x37, 0x36, 0x35, 0x33, 0x31, 0x37, 0x33, 0x32, 0x32, 0x31, 0x37, 0x34, + 0x33, 0x31, 0x30, 0x32, 0x39, 0x33, 0x37, 0x36, 0x33, 0x30, 0x39, 0x37, 0x38, + 0x35, 0x37, 0x33, 0x32, 0x31, 0x30, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, + 0x30, 0x39, 0x38, 0x37, 0x36, 0x35, 0x33, 0x31, 0x37, 0x33, 0x32, 0x30, 0x33, + 0x32, 0x36, 0x30, 0x39, 0x38, 0x37, 0x35, 0x33, 0x30, 0x39, 0x38, 0x37, 0x36, + 0x38, 0x37, 0x35, 0x33, 0x30, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x39, 0x38, + 0x35, 0x34, 0x32, 0x31, 0x30, 0x37, 0x36, 0x35, 0x34, 0x39, 0x37, 0x35, 0x34, + 0x32, 0x35, 0x33, 0x32, 0x31, 0x34, 0x36, 0x35, 0x33, 0x34, 0x30, 0x36, 0x34, + 0x33, 0x31, 0x30, 0x39, 0x33, 0x33, 0x32, 0x31, 0x30, 0x39, 0x38, 0x37, 0x35, + 0x34, 0x33, 0x32, 0x30, 0x30, 0x38, 0x32, 0x35, 0x33, 0x34, 0x31, 0x37, 0x34, + 0x30, 0x37, 0x35, 0x32, 0x37, 0x34, 0x33, 0x35, 0x34, 0x33, 0x32, 0x31, 0x32, + 0x39, 0x32, 0x31, 0x37, 0x33, 0x38, 0x35, 0x37, 0x33, 0x32, 0x39, 0x38, 0x35, + 0x34, 0x31, 0x30, 0x36, 0x35, 0x33, 0x32, 0x31, 0x30, 0x64, 0x44, 0x69, 0x49, + 0x73, 0x53, 0x63, 0x43, 0x31, 0x30, 0x30, 0x74, 0x54, 0x39, 0x38, 0x37, 0x36, + 0x35, 0x34, 0x33, 0x32, 0x31, 0x63, 0x43, 0x39, 0x38, 0x37, 0x35, 0x34, 0x33, + 0x32, 0x31, 0x30, 0x2D, 0x2D, 0x73, 0x53, 0x63, 0x43, 0x75, 0x55, 0x2D, 0x36, + 0x34, 0x36, 0x2D, 0x6E, 0x4E, 0x69, 0x49, 0x74, 0x54, 0x61, 0x41, 0x6C, 0x4C, + 0x2D, 0x31, 0x2E, 0x33, 0x2D, 0x73, 0x53, 0x77, 0x57, 0x6F, 0x4F, 0x64, 0x44, + 0x6E, 0x4E, 0x69, 0x49, 0x77, 0x57, 0x2D, 0x6E, 0x4E, 0x69, 0x49, 0x74, 0x54, + 0x61, 0x41, 0x6C, 0x4C, 0x2D, 0x73, 0x53, 0x77, 0x57, 0x6F, 0x4F, 0x64, 0x44, + 0x6E, 0x4E, 0x69, 0x49, 0x77, 0x57, 0x00, 0x2D, 0x00, 0x33, 0x35, 0x2D, 0x36, + 0x33, 0x34, 0x39, 0x37, 0x38, 0x35, 0x32, 0x31, 0x2D, 0x39, 0x35, 0x33, 0x34, + 0x32, 0x31, 0x30, 0x36, 0x35, 0x31, 0x2D, 0x72, 0x52, 0x38, 0x30, 0x75, 0x55, + 0x2D, 0x36, 0x39, 0x39, 0x31, 0x3A, 0x76, 0x56, 0x72, 0x52, 0x69, 0x49, 0x2E, + 0x36, 0x38, 0x39, 0x31, 0x38, 0x39, 0x31, 0x38, 0x39, 0x31, 0x38, 0x39, 0x31, + 0x38, 0x39, 0x31, 0x38, 0x39, 0x31, 0x38, 0x39, 0x31, 0x38, 0x39, 0x31, 0x38, + 0x39, 0x31, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, + 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x35, 0x3A, 0x39, 0x38, 0x37, 0x36, 0x35, + 0x34, 0x33, 0x32, 0x31, 0x2D, 0x39, 0x35, 0x38, 0x34, 0x38, 0x36, 0x34, 0x69, + 0x49, 0x38, 0x31, 0x5F, 0x36, 0x2D, 0xB6, 0xE6, 0xC5, 0x66, 0xD9, 0x9B, 0xF8, + 0xD5, 0x76, 0xC1, 0x62, 0xD4, 0x75, 0x77, 0xD6, 0xD9, 0x9B, 0x60, 0xC2, 0x63, + 0x6F, 0x4F, 0x6D, 0x4D, 0x6E, 0x4E, 0x30, 0x32, 0x30, 0x58, 0x78, 0x5F, 0x73, + 0x53, 0x2D, 0x61, 0x41, 0x65, 0x45, 0x38, 0x30, 0x36, 0x35, 0x38, 0x39, 0x31, + 0x2D, 0x31, 0x30, 0x36, 0x35, 0x5F, 0x63, 0x43, 0x5F, 0x63, 0x5F, 0x43, 0x72, + 0x69, 0x52, 0x49, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2D, 0x6E, 0x4E, 0x69, 0x49, + 0x74, 0x54, 0x6A, 0x4A, 0x6E, 0x4E, 0x61, 0x41, 0x6B, 0x4B, 0x33, 0x39, 0x5F, + 0x72, 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x30, 0x35, 0x38, 0x2D, 0x6C, 0x4C, + 0x61, 0x41, 0x75, 0x55, 0x67, 0x47, 0x6E, 0x4E, 0x69, 0x49, 0x6C, 0x4C, 0x69, + 0x49, 0x74, 0x54, 0x6C, 0x4C, 0x75, 0x55, 0x6D, 0x4D, 0x2D, 0xF1, 0xF0, 0xF2, + 0xF0, 0xA7, 0xB7, 0xE7, 0x6D, 0xE2, 0xAB, 0xA2, 0x5F, 0x74, 0x54, 0x66, 0x46, + 0x69, 0x49, 0x2D, 0x73, 0x53, 0x32, 0x2D, 0x73, 0x53, 0x61, 0x41, 0x6C, 0x62, + 0x4C, 0x42, 0x2D, 0x6C, 0x62, 0x4C, 0x42, 0x2D, 0x32, 0x36, 0x38, 0x33, 0x31, + 0x38, 0x33, 0x31, 0x2D, 0x66, 0x46, 0x00, 0x2D, 0x73, 0x53, 0x39, 0x31, 0x2D, + 0x73, 0x53, 0x77, 0x57, 0x6F, 0x4F, 0x64, 0x44, 0x6E, 0x4E, 0x68, 0xC7, 0xD5, + 0x76, 0xC9, 0x71, 0xC4, 0x65, 0xD6, 0x77, 0xC3, 0x64, 0xD5, 0x76, 0xC5, 0x66, + 0x60, 0xC4, 0x65, 0xD9, 0x9B, 0xC1, 0x62, 0xC4, 0x65, 0xD5, 0x76, 0xC1, 0x62, + 0xE3, 0xB3, 0xE2, 0xAB, 0x60, 0xC5, 0x66, 0xC2, 0x63, 0xF6, 0xF8, 0xF8, 0xF6, + 0xF9, 0xF1, 0x60, 0xF4, 0x4B, 0xF3, 0xE7, 0xB7, 0xA7, 0x6D, 0xC9, 0x89, 0x71, + 0x87, 0xC7, 0xD5, 0x95, 0xC9, 0x89, 0xC4, 0x84, 0xD6, 0x96, 0xC3, 0x83, 0xD5, + 0x95, 0xC5, 0x85, 0x60, 0xC4, 0x84, 0xD9, 0x99, 0xC1, 0x81, 0xC4, 0x84, 0xD5, + 0x95, 0xC1, 0x81, 0xE3, 0xA3, 0xE2, 0xA2, 0x60, 0xC5, 0x85, 0xC2, 0x82, 0x83, + 0xC3, 0xC9, 0x89, 0xC2, 0x82, 0x64, 0xC3, 0xC9, 0x71, 0xC2, 0x63, 0xC9, 0x89, + 0x71, 0xF8, 0xF0, 0xF7, 0x60, 0xD6, 0x96, 0x77, 0xC9, 0x89, 0x71, 0x64, 0x83, + 0xC3, 0xD4, 0x94, 0x75, 0xC1, 0x62, 0xC1, 0x81, 0xD6, 0x96, 0xE2, 0xAB, 0xA2, + 0xD6, 0x77, 0x66, 0xC5, 0xE2, 0xAB, 0xC5, 0x66, 0xD5, 0x76, 0xAB, 0xE2, 0x9B, + 0xD9, 0x9B, 0xD9, 0xF7, 0xF0, 0xF7, 0xF7, 0xF7, 0xF0, 0xF3, 0xF4, 0xF5, 0xF1, + 0xF0, 0xF0, 0xF1, 0xF2, 0xF3, 0xF5, 0xF6, 0xF9, 0xF4, 0xF7, 0xF5, 0xF2, 0xF1, + 0xF0, 0xF4, 0xF3, 0xF0, 0xF9, 0xF8, 0xF5, 0xF6, 0xF7, 0xF3, 0xF2, 0xF6, 0xF9, + 0xF3, 0xC9, 0xC7, 0xC1, 0x71, 0x68, 0x62, 0xC4, 0x65, 0xD9, 0x9B, 0xC1, 0x62, + 0xC4, 0x65, 0xD5, 0x76, 0xC1, 0x62, 0xE3, 0xB3, 0xE2, 0xAB, 0xC5, 0x66, 0xC2, + 0x63, 0x71, 0xC9, 0xC9, 0x71, 0xC3, 0x64, 0xD6, 0x77, 0xAB, 0xE2, 0xC3, 0x64, + 0xE2, 0xAB, 0xD2, 0x73, 0xC8, 0x69, 0xF5, 0xC7, 0x68, 0x66, 0xC5, 0xE2, 0xAB, + 0xC5, 0x66, 0xD5, 0x76, 0xC1, 0x62, 0xD7, 0x78, 0xC1, 0x62, 0xD1, 0x72, 0xB3, + 0xE3, 0xD4, 0x75, 0xC6, 0x67, 0xC4, 0x65, 0x69, 0xC8, 0xD2, 0x73, 0x9B, 0xD9, + 0xE3, 0xD7, 0xD2, 0xB3, 0x78, 0x73, 0xC3, 0x64, 0xF2, 0xF1, 0xF3, 0x73, 0xD2, + 0xF2, 0x62, 0xC1, 0xD5, 0x76, 0xC1, 0x62, 0xD2, 0x73, 0xC1, 0x62, 0xE3, 0xB3, + 0xC1, 0x62, 0xD2, 0x73, 0xC8, 0x69, 0xE3, 0xB3, 0xC4, 0x65, 0xC9, 0x71, 0xE6, + 0xB6, 0xC6, 0x67, 0xD3, 0x74, 0xF4, 0xF0, 0xF9, 0x71, 0xC9, 0xC1, 0x62, 0xF8, + 0xF4, 0xF2, 0xF5, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, + 0xF4, 0xF1, 0xF9, 0xF8, 0xF7, 0xF6, 0xF4, 0xF2, 0xF0, 0xF4, 0xF5, 0xF3, 0xF8, + 0xF7, 0xF0, 0xF0, 0xF1, 0xF0, 0xF1, 0xF3, 0xF5, 0xF6, 0xF9, 0xF8, 0xF4, 0xF1, + 0xF5, 0xF7, 0xF8, 0xF3, 0xF5, 0xF1, 0xF0, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF0, + 0xF2, 0xF9, 0xF8, 0xF7, 0xF0, 0xF3, 0xF1, 0xF0, 0x69, 0xC8, 0xF9, 0xF8, 0xF5, + 0xF4, 0xF2, 0xF1, 0xF0, 0xE3, 0xB3, 0x75, 0xD4, 0x64, 0xC3, 0xC9, 0x71, 0xD3, + 0x74, 0xD3, 0x74, 0xC9, 0x71, 0xD9, 0x9B, 0x73, 0xD2, 0xC5, 0x66, 0xC5, 0x66, + 0xC5, 0x66, 0xD9, 0x9B, 0xE8, 0xB8, 0xD9, 0x9B, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, + 0xC8, 0xC7, 0xC3, 0xC1, 0x69, 0x68, 0x64, 0x62, 0xD5, 0x76, 0xC9, 0x71, 0xE3, + 0xB3, 0xF0, 0xF8, 0xF2, 0xF1, 0xF3, 0xF2, 0x63, 0xC2, 0xC7, 0x68, 0xF3, 0xF5, + 0xF1, 0xF9, 0xF5, 0xF8, 0xF8, 0xC1, 0x62, 0xF8, 0xF5, 0xD3, 0x74, 0xD6, 0x77, + 0xD4, 0xC2, 0x75, 0x63, 0x9B, 0xD9, 0xF8, 0xF7, 0xF8, 0xF9, 0xF1, 0xF1, 0xF0, + 0xF6, 0xF5, 0x64, 0xC3, 0xC9, 0x71, 0xF2, 0xF5, 0x64, 0xC3, 0xC9, 0x71, 0xE3, + 0xB3, 0xD3, 0x74, 0xC1, 0x62, 0xC2, 0x63, 0xF5, 0xF3, 0xF4, 0x66, 0xC5, 0xC7, + 0x68, 0xC1, 0x62, 0xD7, 0x78, 0xC5, 0x66, 0xC4, 0x65, 0x74, 0xD3, 0xC1, 0x62, + 0xE4, 0xB4, 0xC7, 0x68, 0xD5, 0x76, 0xC9, 0x71, 0xD3, 0x74, 0xC9, 0x71, 0xE3, + 0xB3, 0xD3, 0x74, 0xE4, 0xB4, 0xD4, 0x75, 0xB6, 0xE6, 0xC5, 0x66, 0xD9, 0x9B, + 0xC2, 0x63, 0xC5, 0x66, 0xC8, 0x69, 0xD5, 0x76, 0xC9, 0x71, 0xE3, 0xB3, 0xC1, + 0x62, 0xD3, 0x74, 0xF2, 0xF0, 0xD6, 0x77, 0xF6, 0xF5, 0xC3, 0x64, 0xF7, 0xF8, + 0x78, 0xD7, 0xF8, 0xF7, 0xAB, 0xE2, 0xC9, 0x71, 0xD1, 0x72, 0xB3, 0xE3, 0xC6, + 0x67, 0xC9, 0x71, 0xF0, 0xF2, 0xF6, 0xAB, 0xE2, 0x66, 0xC5, 0xC4, 0x65, 0xD6, + 0x77, 0xC3, 0x64, 0x66, 0xC5, 0x66, 0xC5, 0xD3, 0xC2, 0x74, 0x63, 0x66, 0xC5, + 0x66, 0xC5, 0xD3, 0xC2, 0x74, 0x63, 0xF2, 0xF6, 0xF8, 0xF3, 0xF1, 0xC6, 0x67, + 0xC9, 0x71, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF5, 0xF1, + 0xF2, 0x76, 0xD5, 0xC9, 0x71, 0xE3, 0xB3, 0xC1, 0x62, 0xD3, 0x74, 0xF1, 0xF2, + 0xF1, 0xF3, 0xE2, 0xAB, 0xE6, 0xB6, 0xD6, 0x77, 0xC4, 0x65, 0xD5, 0x76, 0xC9, + 0x71, 0xE3, 0xD5, 0xB3, 0x76, 0xC9, 0x71, 0xC8, 0x69, 0xC3, 0x64, 0xE2, 0xD6, + 0xAB, 0x77, 0xE2, 0xC2, 0xAB, 0x63, 0xD7, 0xC1, 0x78, 0x62, 0xC2, 0x63, 0xE4, + 0xB4, 0xC9, 0x71, 0xE2, 0xC4, 0xAB, 0x65, 0x64, 0xC3, 0xC9, 0x71, 0xD3, 0x74, + 0xD3, 0x74, 0xC9, 0x71, 0xD9, 0x9B, 0xE6, 0xE4, 0xE3, 0xE2, 0xD7, 0xD2, 0xC9, + 0xC8, 0xC7, 0xC5, 0xC2, 0xC1, 0xB6, 0xB4, 0xB3, 0xAB, 0x78, 0x73, 0x71, 0x69, + 0x68, 0x66, 0x63, 0x62, 0xF7, 0xF4, 0xF3, 0xF9, 0xF8, 0xF2, 0xF0, 0x60, 0xC9, + 0x71, 0xF1, 0xF2, 0x66, 0xC5, 0xC3, 0x64, 0xC5, 0x66, 0xB4, 0xE4, 0xB3, 0xE3, + 0xAB, 0xE2, 0x9B, 0xD9, 0x66, 0xC5, 0xD6, 0x77, 0x74, 0xD3, 0xB3, 0xE3, 0xAB, + 0xE2, 0x66, 0xC5, 0x63, 0xC2, 0x9B, 0xD9, 0x71, 0xC9, 0x9B, 0xD9, 0xAB, 0xE2, + 0x62, 0xC1, 0x69, 0xC8, 0x66, 0xC5, 0x9B, 0xD9, 0xE8, 0xE6, 0xE4, 0xE3, 0xE2, + 0xD9, 0xD5, 0xC9, 0xC8, 0xC7, 0xC6, 0xC5, 0xC3, 0xC2, 0xC1, 0xB8, 0xB6, 0xB4, + 0xB3, 0xAB, 0x9B, 0x76, 0x71, 0x69, 0x68, 0x67, 0x66, 0x64, 0x63, 0x62, 0x60, + 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF3, 0xF7, 0xF2, 0x77, + 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF7, 0xF7, 0xF2, 0x60, 0x60, + 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF4, 0xF8, 0xF2, 0x60, + 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF8, 0xF7, 0xF2, 0x77, + 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF7, 0xF9, 0xF2, 0x60, 0x60, + 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF5, 0xF8, 0xF2, 0x60, + 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF0, 0xF0, 0xF5, 0x60, + 0xD3, 0x74, 0xC1, 0x62, 0xD5, 0x76, 0xD6, 0x77, 0xC9, 0x71, 0xE3, 0xB3, 0xC1, + 0x62, 0xD5, 0x76, 0xD9, 0x9B, 0xC5, 0x66, 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, + 0xC5, 0x66, 0x4E, 0xF1, 0xF7, 0xF8, 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, + 0x66, 0x4E, 0xF0, 0xF8, 0xF2, 0x60, 0x60, 0xE3, 0xB3, 0x62, 0xC1, 0xD5, 0x76, + 0x81, 0xC1, 0xD5, 0x95, 0xC1, 0x81, 0xC1, 0x62, 0xD2, 0x92, 0x73, 0x60, 0x77, + 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x60, 0x60, 0xF9, 0xD5, 0x76, 0xC9, + 0x71, 0x96, 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x60, 0x60, 0xF9, 0xD5, + 0x95, 0xC9, 0x89, 0xE3, 0xA3, 0xE3, 0xB3, 0x85, 0xC5, 0xC3, 0x83, 0xC5, 0x85, + 0xA4, 0xE4, 0xA3, 0xE3, 0xA2, 0xE2, 0x99, 0xD9, 0x85, 0xC5, 0xD6, 0x96, 0xA3, + 0xE3, 0xA2, 0xE2, 0x85, 0xC5, 0x82, 0xC2, 0x99, 0xD9, 0x89, 0xC9, 0x99, 0xD9, + 0xA2, 0xE2, 0x81, 0xC1, 0x88, 0xC8, 0x85, 0xC5, 0xD9, 0x99, 0x93, 0xD3, 0x77, + 0x96, 0xD6, 0x73, 0x92, 0xD2, 0xE8, 0xE6, 0xE4, 0xE3, 0xE2, 0xD9, 0xD5, 0xC9, + 0xC8, 0xC7, 0xC6, 0xC5, 0xC4, 0xC3, 0xC2, 0xC1, 0xA8, 0xA6, 0xA4, 0xA3, 0xA2, + 0x99, 0x95, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x76, 0x65, + 0x83, 0xC3, 0xC9, 0x89, 0xD3, 0x93, 0xD3, 0x93, 0xC9, 0x89, 0x64, 0xC3, 0xC9, + 0x71, 0xD3, 0x74, 0xD3, 0x74, 0xC9, 0x71, 0xD9, 0x9B, 0xD9, 0x99, 0x60, 0x96, + 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF3, 0xF7, 0xF2, 0x96, 0xD6, + 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF7, 0xF7, 0xF2, 0x60, 0x60, 0x96, + 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF4, 0xF8, 0xF2, 0x60, 0x96, + 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF8, 0xF7, 0xF2, 0x96, 0xD6, + 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF7, 0xF9, 0xF2, 0x60, 0x60, 0x96, + 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF5, 0xF8, 0xF2, 0x60, 0x96, + 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF0, 0xF0, 0xF5, 0x60, 0xD3, + 0x93, 0xC1, 0x81, 0xD5, 0x95, 0xD6, 0x96, 0xC9, 0x89, 0xE3, 0xA3, 0xC1, 0x81, + 0xD5, 0x95, 0xD9, 0x99, 0xC5, 0x85, 0x96, 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, + 0x85, 0x4E, 0xF1, 0xF7, 0xF8, 0x96, 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, + 0x4E, 0xF0, 0xF8, 0xF2, 0x60, 0x60, 0xE3, 0xA3, 0x96, 0xD6, 0xD9, 0x99, 0xE4, + 0xA4, 0xC5, 0x85, 0x4E, 0xF7, 0xF3, 0x60, 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, + 0xC5, 0x66, 0x4E, 0xF7, 0xF3, 0x60, 0xE2, 0xAB, 0xC5, 0x66, 0xE2, 0xA2, 0xC5, + 0x85, 0xD6, 0x96, 0xE3, 0xE2, 0xD5, 0xA3, 0xA2, 0x95, 0xC2, 0x82, 0x89, 0xC9, + 0xD9, 0x99, 0xE2, 0xA2, 0x92, 0xD2, 0xC5, 0x85, 0xE8, 0xD7, 0xB8, 0xA8, 0x97, + 0x78, 0xD6, 0x77, 0xC1, 0x81, 0x62, 0xD7, 0x97, 0x78, 0xE3, 0xE2, 0xD5, 0xB3, + 0xAB, 0x76, 0xC2, 0x63, 0x71, 0xC9, 0xD9, 0x9B, 0xE2, 0xAB, 0x73, 0xD2, 0xC5, + 0x66, 0xD7, 0x78, 0xE4, 0xE2, 0xD5, 0xD3, 0xD1, 0xC9, 0xC7, 0xC6, 0xC5, 0xC4, + 0xC3, 0xB4, 0xAB, 0xA4, 0xA2, 0x95, 0x93, 0x91, 0x89, 0x87, 0x86, 0x85, 0x84, + 0x83, 0x76, 0x74, 0x72, 0x71, 0x68, 0x67, 0x66, 0x65, 0x64, 0x00, 0x60, 0xC3, + 0x83, 0x64, 0xC9, 0x89, 0x71, 0xC4, 0x84, 0x65, 0xF4, 0xF8, 0xF1, 0xF1, 0x60, + 0xC1, 0x81, 0x62, 0xF8, 0xF2, 0xF9, 0x6D, 0xE3, 0xB3, 0xA3, 0x6E, 0xC8, 0x88, + 0x69, 0x99, 0x9B, 0xD9, 0x78, 0x97, 0xD7, 0x76, 0x95, 0xD5, 0x69, 0x88, 0xC8, + 0xE3, 0xD2, 0xD1, 0xC3, 0xB3, 0xA3, 0x92, 0x91, 0x83, 0x73, 0x72, 0x64, 0xE3, + 0xB3, 0xA3, 0x60, 0x85, 0xC5, 0xE2, 0xA2, 0xC5, 0x85, 0xD5, 0x95, 0xC1, 0x81, + 0xD7, 0x97, 0xC1, 0x81, 0xD1, 0x91, 0x6D, 0xD9, 0x99, 0xD6, 0x96, 0xC6, 0x86, + 0x6D, 0xE3, 0xA3, 0xC1, 0x81, 0xD4, 0x94, 0xD9, 0x99, 0xD6, 0x96, 0xC6, 0x86, + 0x6D, 0xC4, 0x84, 0xC5, 0x85, 0xD2, 0x92, 0xC3, 0x83, 0xC1, 0x81, 0xD7, 0x97, + 0x6D, 0xC5, 0x85, 0xC4, 0x84, 0xD6, 0x96, 0xC3, 0x83, 0x6D, 0xE7, 0xA7, 0xC9, + 0x89, 0xD5, 0x95, 0xE4, 0xA4, 0x6D, 0xC4, 0x84, 0xC5, 0x85, 0xC4, 0x84, 0xD5, + 0x95, 0xC5, 0x85, 0x6D, 0xD9, 0x9B, 0xD6, 0x77, 0xC6, 0x67, 0x6D, 0xE3, 0xB3, + 0xC1, 0x62, 0xD4, 0x75, 0xD9, 0x9B, 0xD6, 0x77, 0xC6, 0x67, 0x6D, 0xC4, 0x65, + 0xC5, 0x66, 0xD2, 0x73, 0xC3, 0x64, 0xC1, 0x62, 0xD7, 0x78, 0x6D, 0xC5, 0x66, + 0xC4, 0x65, 0xD6, 0x77, 0xC3, 0x64, 0x6D, 0xE7, 0xB7, 0xC9, 0x71, 0xD5, 0x76, + 0xE4, 0xB4, 0x6D, 0xC4, 0x65, 0xC5, 0x66, 0xC4, 0x65, 0xD5, 0x76, 0xC5, 0x66, + 0xE3, 0xB3, 0xE3, 0xA3, 0xC3, 0x83, 0x64, 0xD6, 0x96, 0x77, 0xD4, 0x94, 0x75, + 0xC3, 0x83, 0x64, 0xF3, 0xF4, 0xF8, 0xF9, 0xF0, 0x00, 0xF3, 0xF1, 0x00, 0xF9, + 0xF6, 0xF1, 0xF0, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, + 0xF6, 0xF9, 0xF4, 0xF7, 0xF0, 0xF3, 0xF2, 0xF1, 0xF0, 0xF2, 0xF4, 0xF9, 0xF8, + 0xF7, 0xF6, 0xF5, 0xF3, 0xF1, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xF4, 0xF3, 0xF2, + 0xF1, 0xF0, 0xF9, 0xF8, 0xF7, 0xF5, 0xF4, 0xF3, 0xF0, 0xF8, 0xF5, 0xF1, 0xF0, + 0xF3, 0xF6, 0xF9, 0xF4, 0xF1, 0xF2, 0xF5, 0xF2, 0xF1, 0xF0, 0xF9, 0xF0, 0xF1, + 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF5, 0xF0, 0xF9, 0xF8, 0xF6, 0xF5, + 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0x00, 0xF7, 0x00, 0xF6, 0xF8, 0xF2, 0xF1, 0xF0, + 0xF2, 0xF7, 0xF5, 0xF8, 0xF1, 0xF0, 0xF9, 0xF4, 0xF6, 0xF7, 0xF8, 0xF5, 0xF3, + 0xF2, 0xF1, 0x60, 0x62, 0xC1, 0xF8, 0xF7, 0xF9, 0xF8, 0xF1, 0xF7, 0xF6, 0xF3, + 0xF2, 0xF1, 0xF0, 0xF6, 0xF7, 0xF5, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, + 0xF2, 0xF1, 0xF0, 0xF9, 0xF8, 0xF4, 0xF0, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, + 0xF7, 0xF3, 0xF2, 0xF0, 0xF9, 0xF3, 0xF2, 0xF5, 0xF4, 0xF2, 0xF8, 0xF3, 0xF2, + 0xF1, 0xF0, 0xF6, 0xF5, 0xF0, 0xF2, 0xF0, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, + 0xF1, 0xF3, 0xF5, 0xF1, 0xF3, 0xF8, 0xF4, 0xF1, 0xF8, 0xF9, 0xF2, 0xF6, 0xF3, + 0xF8, 0xF1, 0xF0, 0xF5, 0xF3, 0xF3, 0xF4, 0xF8, 0xF2, 0xF4, 0xF5, 0xF3, 0xF9, + 0xF8, 0xF7, 0xF6, 0xF4, 0xF1, 0xF8, 0xF7, 0xF5, 0xF3, 0xF0, 0xF4, 0xF6, 0xF5, + 0xF3, 0xF2, 0xF1, 0xF9, 0xF8, 0xF5, 0xF4, 0xF2, 0xF1, 0xF0, 0xF6, 0xF4, 0xF9, + 0xF0, 0xF0, 0xF4, 0xF5, 0xF7, 0xF6, 0xF5, 0xF2, 0xF2, 0xF7, 0xF1, 0xF0, 0xF6, + 0xF1, 0xF5, 0xF0, 0xF3, 0xF2, 0xF1, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF7, 0xF9, + 0xF5, 0xF4, 0xF3, 0xF2, 0xF0, 0xF5, 0xF6, 0xF3, 0xF0, 0xF4, 0xF6, 0xF7, 0xF8, + 0xF9, 0xF8, 0xF5, 0xF4, 0xF3, 0xF7, 0xF5, 0xF4, 0xF2, 0xF0, 0xF5, 0xF3, 0xF2, + 0xF2, 0xF5, 0xF5, 0xF5, 0xF4, 0xF1, 0xF4, 0xF3, 0xF2, 0xF1, 0xF2, 0xF9, 0xF7, + 0xF0, 0x00, 0xF2, 0xF1, 0xF7, 0xF6, 0xF0, 0xF1, 0xF4, 0xF8, 0xF5, 0xF0, 0xF2, + 0xF3, 0xF5, 0xF6, 0xF9, 0xF8, 0xF4, 0xF1, 0xF0, 0xF1, 0xF2, 0xF5, 0xF7, 0xF8, + 0xF8, 0xF7, 0xF6, 0xF5, 0xF3, 0xF9, 0xF3, 0xF6, 0x00, 0xF6, 0x00, 0xF0, 0xF7, + 0xF8, 0xF9, 0x00, 0xF0, 0xF5, 0xF4, 0xF9, 0xF8, 0xF7, 0xF6, 0xF1, 0xF0, 0xF3, + 0xF9, 0xF7, 0xF6, 0xF4, 0xF2, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, + 0xF0, 0xF4, 0xF1, 0xF3, 0xF0, 0xF8, 0xF7, 0xF6, 0xF2, 0xF8, 0xF2, 0xF3, 0xF4, + 0xF6, 0xF5, 0xF4, 0xF6, 0xF5, 0xF3, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, + 0xF0, 0xF8, 0xF9, 0xF7, 0xF6, 0xF5, 0xF3, 0xF1, 0xF7, 0xF3, 0xF2, 0xF2, 0xF1, + 0xF7, 0xF4, 0xF3, 0xF1, 0xF0, 0xF2, 0xF9, 0xF3, 0xF7, 0xF6, 0xF3, 0xF0, 0xF9, + 0xF7, 0xF8, 0xF5, 0xF7, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xF9, 0xF8, 0xF7, 0xF6, + 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0x60, 0xF8, 0xF9, 0xF4, 0xF8, 0xF7, 0xF6, 0xF0, + 0xF0, 0xF1, 0xF9, 0xF3, 0xF4, 0xF2, 0xF1, 0xF0, 0xF6, 0xF5, 0xF1, 0x60, 0x9B, + 0xD9, 0xC9, 0x71, 0x60, 0xD6, 0x77, 0xD4, 0x75, 0xD5, 0x76, 0x76, 0xD5, 0xC1, + 0x62, 0xC5, 0x66, 0xD9, 0x9B, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xD5, 0x76, 0xC9, + 0x71, 0xE3, 0xB3, 0x60, 0xF5, 0xA2, 0xE2, 0xC3, 0x83, 0xE2, 0xA2, 0xD2, 0x92, + 0xC8, 0x88, 0x60, 0xF5, 0xC7, 0x87, 0xC7, 0x68, 0xF1, 0xF0, 0xF0, 0xC4, 0x84, + 0x65, 0xC9, 0x89, 0x71, 0xA2, 0xE2, 0x99, 0xD9, 0x99, 0xD9, 0xF2, 0xF3, 0xF8, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF5, 0xF6, 0xF9, 0xF8, 0xF4, 0xF9, 0xF6, 0xF4, 0xF3, + 0xF5, 0xF1, 0xF3, 0xF0, 0xF5, 0xF9, 0xF8, 0xF7, 0xF6, 0xF1, 0xF9, 0xF8, 0xF7, + 0xF0, 0xC9, 0xC7, 0xC1, 0x89, 0x87, 0x81, 0x85, 0xC5, 0xE2, 0xA2, 0xC5, 0x85, + 0xD5, 0x95, 0xC4, 0x84, 0xD9, 0x99, 0xC1, 0x81, 0xC4, 0x84, 0xD5, 0x95, 0xC1, + 0x81, 0xE3, 0xA3, 0xE2, 0xA2, 0xC5, 0x85, 0xC2, 0x82, 0x89, 0xC9, 0xC9, 0x89, + 0xC3, 0x83, 0xD6, 0x96, 0xF5, 0xC7, 0x87, 0xE3, 0xA3, 0xD4, 0x94, 0xC6, 0x86, + 0xC4, 0x84, 0x88, 0xC8, 0xD2, 0x92, 0x99, 0xD9, 0xE3, 0xD7, 0xD2, 0xA3, 0x97, + 0x92, 0xC3, 0x83, 0x92, 0xD2, 0xF2, 0xC1, 0x81, 0xD5, 0x95, 0xC1, 0x81, 0xD2, + 0x92, 0xC1, 0x81, 0xE3, 0xA3, 0xC1, 0x81, 0xD2, 0x92, 0xC8, 0x88, 0xE3, 0xA3, + 0xC4, 0x84, 0xC9, 0x89, 0xE6, 0xA6, 0xC6, 0x86, 0x95, 0xD5, 0xC1, 0x81, 0xD4, + 0x94, 0x96, 0xD6, 0xD9, 0x99, 0xD3, 0x93, 0x89, 0xC9, 0xC1, 0x81, 0x88, 0xC8, + 0xF5, 0xF2, 0xF1, 0xF0, 0xF9, 0xF8, 0xF4, 0xE3, 0xA3, 0xD4, 0x94, 0xC3, 0x83, + 0xC9, 0x89, 0xD3, 0x93, 0xD3, 0x93, 0xC9, 0x89, 0xD9, 0x99, 0x92, 0xD2, 0xC5, + 0x85, 0xC5, 0x85, 0xA6, 0xE6, 0xC5, 0x85, 0xD9, 0x99, 0xC2, 0x82, 0x85, 0xC5, + 0xD9, 0x99, 0xE8, 0xA8, 0xD9, 0x99, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xC8, 0xC7, + 0xC3, 0xC1, 0x88, 0x87, 0x83, 0x81, 0xD5, 0x95, 0xC9, 0x89, 0xE3, 0xA3, 0xC2, + 0x82, 0xC7, 0x87, 0xF8, 0xC1, 0x81, 0xF8, 0xF5, 0xD3, 0x93, 0xD6, 0x96, 0xD4, + 0xC2, 0x94, 0x82, 0x99, 0xD9, 0xF8, 0xC3, 0x83, 0xC9, 0x89, 0x83, 0xC3, 0xC9, + 0x89, 0xE3, 0xA3, 0xD3, 0x93, 0xC1, 0x81, 0xC2, 0x82, 0xF5, 0xC5, 0x85, 0xC7, + 0x87, 0xC1, 0x81, 0xD7, 0x97, 0xC5, 0x85, 0xC4, 0x84, 0x93, 0xD3, 0xC1, 0x81, + 0xE4, 0xA4, 0xC7, 0x87, 0xD5, 0x95, 0xC9, 0x89, 0xD3, 0x93, 0xC9, 0x89, 0xE3, + 0xA3, 0xD3, 0x93, 0xE4, 0xA4, 0xD4, 0x94, 0xA6, 0xE6, 0xC5, 0x85, 0xD9, 0x99, + 0xC2, 0x82, 0xC5, 0x85, 0xC8, 0x88, 0xD5, 0x95, 0xC9, 0x89, 0xE3, 0xA3, 0xC1, + 0x81, 0xD3, 0x93, 0xF2, 0xF0, 0xD6, 0x96, 0xF6, 0xF5, 0xC3, 0x83, 0xF7, 0xF8, + 0xF7, 0xD7, 0x97, 0xE2, 0xA2, 0xC9, 0x89, 0xD1, 0x91, 0xA3, 0xE3, 0xC6, 0x86, + 0xC9, 0x89, 0xA2, 0xE2, 0x85, 0xC5, 0xC4, 0x84, 0xD6, 0x96, 0xC3, 0x83, 0x85, + 0xC5, 0x85, 0xC5, 0xD3, 0xC2, 0x93, 0x82, 0x85, 0xC5, 0x85, 0xC5, 0xD3, 0xC2, + 0x93, 0x82, 0xF2, 0xF6, 0xF8, 0xF3, 0xF1, 0xC6, 0x86, 0xC9, 0x89, 0xD5, 0x95, + 0xC9, 0x89, 0xE3, 0xA3, 0xC1, 0x81, 0xD3, 0x93, 0xF1, 0xF1, 0xF3, 0xE2, 0xA2, + 0xE6, 0xA6, 0xD6, 0x96, 0xC4, 0x84, 0xD5, 0x95, 0xC9, 0x89, 0xE3, 0xD5, 0xA3, + 0x95, 0xC9, 0x89, 0xC8, 0x88, 0xC3, 0x83, 0xE2, 0xD6, 0xA2, 0x96, 0xE2, 0xC2, + 0xA2, 0x82, 0x97, 0xD7, 0xC1, 0x81, 0xC2, 0x82, 0xE4, 0xA4, 0xC9, 0x89, 0xE2, + 0xC4, 0xA2, 0x84, 0x83, 0xC3, 0xC9, 0x89, 0xD3, 0x93, 0xD3, 0x93, 0xC9, 0x89, + 0xD9, 0x99, 0xE6, 0xE4, 0xE3, 0xE2, 0xD7, 0xD2, 0xC9, 0xC8, 0xC7, 0xC5, 0xC2, + 0xC1, 0xA6, 0xA4, 0xA3, 0xA2, 0x97, 0x92, 0x89, 0x88, 0x87, 0x85, 0x82, 0x81, + 0xC9, 0x89, 0xF7, 0xF4, 0xF3, 0xF5, 0xF0, 0xF8, 0xF9, 0xF2, 0xF1, 0x60, 0xE2, + 0xAB, 0xA2, 0x60, 0xF2, 0xF1, 0xF3, 0xF2, 0xD2, 0x92, 0xC5, 0x85, 0xC5, 0x85, + 0x73, 0x92, 0xD2, 0xF2, 0x6D, 0x60, 0xC8, 0x88, 0x69, 0xF7, 0xF0, 0xF7, 0xF0, + 0xF5, 0xF4, 0xF0, 0xF8, 0xF7, 0xF3, 0xF6, 0xF7, 0xF0, 0xF1, 0xF7, 0xF4, 0xF3, + 0xF0, 0xF0, 0xF5, 0xF7, 0xF0, 0xF7, 0xF1, 0xF6, 0xF0, 0xF4, 0xF8, 0xF1, 0xF0, + 0xF5, 0xF9, 0xF6, 0xF5, 0xF3, 0xF2, 0xF1, 0xF0, 0xF8, 0xF4, 0xF7, 0xF5, 0xF2, + 0xF1, 0xF0, 0xF8, 0xF8, 0xF3, 0xF5, 0xF6, 0xF7, 0xF9, 0xF3, 0xF0, 0xF4, 0xF5, + 0xF0, 0xF1, 0xF6, 0xF7, 0xF8, 0xF9, 0xF3, 0xF2, 0xF4, 0xF6, 0xF7, 0xF9, 0xF0, + 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xF0, 0xF3, 0xF1, 0xF4, 0xF2, + 0xF6, 0xF7, 0xF8, 0xF5, 0xF4, 0xF3, 0xF2, 0xF6, 0xF8, 0xF4, 0xF5, 0xF3, 0xF7, + 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF3, + 0xF1, 0xF7, 0xF3, 0xF2, 0xF0, 0xF3, 0xF2, 0xF6, 0xF0, 0xF9, 0xF8, 0xF7, 0xF5, + 0xF3, 0xF0, 0xF7, 0xF8, 0xF9, 0xF8, 0xF1, 0xF7, 0xF0, 0xF1, 0xF2, 0xF3, 0xF6, + 0xF6, 0xF5, 0xF7, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, + 0xF8, 0xF9, 0xF0, 0xF4, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xF8, 0xF7, + 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xF2, 0xF3, 0xF7, 0xF2, 0xF3, + 0xF9, 0xF2, 0xF4, 0xF5, 0xF0, 0xF1, 0xF2, 0xF3, 0xF6, 0xF5, 0xF0, 0xF2, 0xF1, + 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF5, 0xF3, 0xF8, 0xF3, 0xF1, 0xF2, 0xF9, + 0xF6, 0xF3, 0xF0, 0xF1, 0xF8, 0xF5, 0xF3, 0xF3, 0xF4, 0xF9, 0xF8, 0xF7, 0xF6, + 0xF8, 0xF7, 0xF5, 0xF3, 0xF0, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF9, 0xF8, + 0xF5, 0xF4, 0xF2, 0xF1, 0xF0, 0xF6, 0xF1, 0xF0, 0xF5, 0xF1, 0xF2, 0xF3, 0xF8, + 0xF7, 0xF6, 0xF5, 0xF4, 0xF9, 0xF0, 0xF2, 0xF3, 0xF4, 0xF5, 0xF5, 0xF6, 0xF3, + 0xF4, 0xF0, 0xF9, 0xF8, 0xF7, 0xF6, 0xF8, 0xF7, 0xF5, 0xF4, 0xF2, 0xF5, 0xF3, + 0xF2, 0xF2, 0xF1, 0xF6, 0xF6, 0xF0, 0xF9, 0xF8, 0xF7, 0xF4, 0xF6, 0xF5, 0xF3, + 0xF4, 0xF0, 0xF6, 0xF4, 0xF3, 0xF1, 0xF0, 0xF9, 0xF3, 0xF3, 0xF2, 0xF1, 0xF0, + 0xF9, 0xF8, 0xF7, 0xF5, 0xF4, 0xF3, 0xF2, 0xF0, 0xF8, 0xF0, 0xF1, 0xF4, 0xF8, + 0xF8, 0xF2, 0xF4, 0xF5, 0xF3, 0xF4, 0xF1, 0xF7, 0xF6, 0xF4, 0xF9, 0xF0, 0xF7, + 0xF5, 0xF2, 0xF2, 0xF7, 0xF5, 0xF4, 0xF3, 0xF2, 0xF5, 0xF5, 0xF5, 0xF4, 0xF1, + 0xF4, 0xF3, 0xF2, 0xF1, 0xF2, 0xF9, 0xF2, 0xF1, 0xF7, 0xF3, 0xF8, 0xF5, 0xF7, + 0xF3, 0xF2, 0xF9, 0xF8, 0xF5, 0xF4, 0xF1, 0xF0, 0xF6, 0xF5, 0xF3, 0xF2, 0xF1, + 0xF0, 0xC4, 0x84, 0x65, 0xC9, 0x89, 0x71, 0xE2, 0xAB, 0xA2, 0xF1, 0xF0, 0xC3, + 0x83, 0x64, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xE3, + 0xB3, 0xA3, 0xF9, 0xF8, 0xF7, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xC3, 0x83, + 0x64, 0x60, 0xC1, 0x81, 0xF2, 0x60, 0xE2, 0xAB, 0xA2, 0xC3, 0x83, 0x64, 0xE4, + 0xB4, 0xA4, 0x60, 0xF6, 0xF4, 0xF6, 0xF1, 0x60, 0x76, 0xD5, 0xC9, 0x71, 0xE3, + 0xB3, 0xC1, 0x62, 0xD3, 0x74, 0x60, 0xF1, 0x4B, 0xF3, 0x60, 0xE2, 0xAB, 0xE6, + 0xB6, 0xD6, 0x77, 0xC4, 0x65, 0xD5, 0x95, 0xC9, 0x89, 0xE3, 0xA3, 0xC1, 0x81, + 0xD3, 0x93, 0x60, 0xF1, 0x4B, 0xF3, 0x60, 0xE2, 0xA2, 0xE6, 0xA6, 0xD6, 0x96, + 0xC4, 0x84, 0xD5, 0x95, 0xD5, 0x76, 0xC9, 0x89, 0x71, 0xE6, 0xB6, 0xA6, 0xF2, + 0x60, 0x76, 0xD5, 0xC9, 0x71, 0xE3, 0xB3, 0xC1, 0x62, 0xD3, 0x74, 0x60, 0xE2, + 0xAB, 0xE6, 0xB6, 0xD6, 0x77, 0xC4, 0x65, 0xD5, 0x95, 0xC9, 0x89, 0xE3, 0xA3, + 0xC1, 0x81, 0xD3, 0x93, 0x60, 0xE2, 0xA2, 0xE6, 0xA6, 0xD6, 0x96, 0xC4, 0x84, + 0xD5, 0x95, 0xD5, 0x76, 0xC9, 0x89, 0x71, 0xE6, 0xB6, 0xA6, 0x00, 0x60, 0x00, + 0xF5, 0xF3, 0x60, 0xF6, 0xF3, 0xF4, 0xF9, 0xF7, 0xF8, 0xF5, 0xF2, 0xF1, 0x60, + 0xF9, 0xF5, 0xF8, 0xF0, 0xD9, 0x99, 0xF1, 0xF9, 0xF9, 0xF1, 0x7A, 0xB5, 0xE5, + 0xE5, 0xA5, 0xD9, 0x99, 0xD9, 0x9B, 0xC9, 0x89, 0x71, 0x4B, 0xF6, 0xF7, 0xF8, + 0xF9, 0xF1, 0xF7, 0xF8, 0xF9, 0xF1, 0xF8, 0xF8, 0xF9, 0xF1, 0xF8, 0xF8, 0xF9, + 0xF1, 0xF8, 0xF8, 0xF9, 0xF1, 0xF7, 0xF8, 0xF9, 0xF1, 0xF7, 0xF8, 0xF9, 0xF1, + 0xF8, 0xF9, 0xF1, 0xF9, 0xF8, 0xF9, 0xF1, 0x00, 0x7A, 0x00, 0x7A, 0x00, 0x7A, + 0x00, 0x7A, 0x00, 0x7A, 0x00, 0x7A, 0x00, 0x7A, 0x00, 0x7A, 0x00, 0xF5, 0x7A, + 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0x60, 0xF9, 0xF5, 0xF8, + 0xF4, 0xA2, 0xAB, 0xE2, 0xE4, 0xB4, 0xA4, 0x60, 0xF6, 0xF4, 0xF8, 0xF6, 0xF8, + 0xF1, 0xC9, 0x89, 0xF6, 0x6D, 0x60, 0xD6, 0x96, 0x77, 0xD5, 0x95, 0xD4, 0x94, + 0x75, 0xD9, 0x9B, 0x99, 0x60, 0x95, 0xD5, 0xC1, 0x81, 0xC5, 0x85, 0xF8, 0xF1, + 0xF0, 0xF6, 0xF5, 0xF9, 0xF7, 0xF8, 0xF9, 0xF1, 0x60, 0xF1, 0xF0, 0xF6, 0xF5, + 0x6D, 0xC3, 0x83, 0x64, 0x6D, 0xC3, 0x83, 0x6D, 0x64, 0xD9, 0xC9, 0x99, 0x89, + 0x71, 0xF9, 0x60, 0xD5, 0x76, 0xC9, 0x71, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x60, + 0xD5, 0x95, 0xC9, 0x89, 0xE3, 0xA3, 0xE3, 0xB3, 0x71, 0xC9, 0xD1, 0x72, 0x89, + 0xC9, 0xD1, 0x91, 0xD5, 0x95, 0xD5, 0x76, 0xC1, 0x81, 0x62, 0xF3, 0xD2, 0x92, + 0x73, 0xF9, 0x6D, 0x96, 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF0, + 0xF5, 0xF8, 0x60, 0xD3, 0x93, 0xC1, 0x81, 0xE4, 0xA4, 0xC7, 0x87, 0xD5, 0x95, + 0xC9, 0x89, 0xD3, 0x93, 0xC9, 0x89, 0xE3, 0xA3, 0xD6, 0x77, 0xD9, 0x9B, 0xE4, + 0xB4, 0xC5, 0x66, 0x4E, 0xF0, 0xF5, 0xF8, 0x60, 0xD3, 0x74, 0xC1, 0x62, 0xE4, + 0xB4, 0xC7, 0x68, 0xD5, 0x76, 0xC9, 0x71, 0xD3, 0x74, 0xC9, 0x71, 0xE3, 0xB3, + 0xD3, 0x74, 0xD3, 0x93, 0xE4, 0xB4, 0xA4, 0xD4, 0x94, 0x75, 0x60, 0x6D, 0xE3, + 0xB3, 0xC6, 0x67, 0x6D, 0xE3, 0xA3, 0xC6, 0x86, 0xC9, 0x89, 0xC9, 0x71, 0x60, + 0xE2, 0xAB, 0xA2, 0xF2, 0x60, 0xC3, 0x83, 0x64, 0xE2, 0xAB, 0xA2, 0xC1, 0x81, + 0x62, 0xC5, 0x85, 0x66, 0xC5, 0x85, 0x66, 0x74, 0x93, 0xD3, 0x63, 0x82, 0xC2, + 0xD3, 0xC2, 0x93, 0x82, 0x74, 0x63, 0x60, 0xC5, 0x85, 0x66, 0xC5, 0x85, 0x66, + 0x74, 0x93, 0xD3, 0x63, 0x82, 0xC2, 0xD3, 0xC2, 0x93, 0x82, 0x74, 0x63, 0x60, + 0xF2, 0xF6, 0xF8, 0xF3, 0xF1, 0xF8, 0xF3, 0xF1, 0x60, 0xC6, 0x86, 0x67, 0x00, + 0x60, 0xE2, 0xAB, 0xA2, 0xF9, 0xF1, 0x60, 0xA2, 0xE2, 0xE6, 0xA6, 0xD6, 0x96, + 0xC4, 0x84, 0xD5, 0x95, 0xE2, 0xAB, 0xE6, 0xB6, 0xD6, 0x77, 0xC4, 0x65, 0xD5, + 0x76, 0xF9, 0xF6, 0xF5, 0xF3, 0xF2, 0xF1, 0xF0, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xF6, 0xF5, 0xC9, 0x71, 0xC9, 0x89, + 0xE3, 0xE2, 0xC3, 0xB3, 0xAB, 0xA3, 0xA2, 0x83, 0x64, 0xC9, 0x89, 0x71, 0xC8, + 0x88, 0x69, 0xF8, 0xD6, 0x77, 0xF8, 0xD6, 0x96, 0xC3, 0x83, 0x64, 0xE2, 0xAB, + 0xA2, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xC1, 0x81, 0x62, 0xE2, 0xD6, 0xAB, 0xA2, + 0x96, 0x77, 0xE2, 0xC2, 0xC1, 0xAB, 0xA2, 0x82, 0x81, 0x63, 0xD7, 0xC5, 0x97, + 0x85, 0xD9, 0xC2, 0x99, 0x82, 0x63, 0xE8, 0xE2, 0xD7, 0xC8, 0xC3, 0xA8, 0xA2, + 0x97, 0x88, 0x83, 0x78, 0x64, 0xC9, 0x89, 0x71, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, + 0xC1, 0x62, 0xD6, 0x77, 0xE2, 0xC2, 0xC1, 0xAB, 0x63, 0x62, 0xE7, 0xE4, 0xD3, + 0xC3, 0xC2, 0xB7, 0xB4, 0xA7, 0xA4, 0x93, 0x83, 0x82, 0x74, 0x64, 0x63, 0xE8, + 0xE2, 0xD7, 0xC8, 0xB8, 0xAB, 0x78, 0x69, 0x9B, 0x99, 0xD9, 0xE2, 0xD5, 0xC4, + 0xAB, 0xA2, 0x95, 0x84, 0x76, 0x65, 0x69, 0x49, 0x74, 0x73, 0x63, 0x54, 0x53, + 0x43, 0x69, 0x49, 0x68, 0x48, 0x38, 0xC9, 0x89, 0x71, 0x6F, 0x4F, 0x63, 0x43, + 0x73, 0x53, 0x31, 0x32, 0x33, 0x34, 0x35, 0x61, 0x41, 0x73, 0x6F, 0x53, 0x4F, + 0x69, 0x49, 0x66, 0xC5, 0xD7, 0x78, 0x73, 0x62, 0x61, 0x53, 0x42, 0x41, 0xD9, + 0x9B, 0x70, 0x65, 0x50, 0x45, 0x72, 0x62, 0x52, 0x42, 0x78, 0x75, 0x6C, 0x63, + 0x62, 0x58, 0x55, 0x4C, 0x43, 0x42, 0x79, 0x73, 0x70, 0x68, 0x63, 0x59, 0x53, + 0x50, 0x48, 0x43, 0x69, 0x49, 0x52, 0x72, 0x73, 0x6E, 0x64, 0x53, 0x4E, 0x44, + 0x35, 0x36, 0x28, 0x78, 0x77, 0x75, 0x74, 0x73, 0x72, 0x70, 0x6D, 0x6C, 0x6B, + 0x6A, 0x69, 0x68, 0x67, 0x65, 0x63, 0x62, 0x61, 0x58, 0x57, 0x55, 0x54, 0x53, + 0x52, 0x50, 0x4D, 0x4C, 0x4B, 0x4A, 0x49, 0x48, 0x47, 0x45, 0x43, 0x42, 0x41, + 0x39, 0x38, 0x34, 0xFE, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0xFE, 0xFE, 0xFE, 0xFE +}; diff --git a/libxml2/os400/iconv/iconv.c b/libxml2/os400/iconv/iconv.c new file mode 100644 index 0000000..c85c268 --- /dev/null +++ b/libxml2/os400/iconv/iconv.c @@ -0,0 +1,154 @@ +/** +*** iconv_open(), iconv(), iconv_close() wrappers for the OS/400. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> + +#include "/QIBM/include/iconv.h" /* Force system definition. */ + +#define USE_SYSTEM_ICONV +#include "iconv.h" /* Use local definitions. */ + + + +/** +*** Bring-in the name-->CCSID mapping DFA tables. +**/ + +#include "ianatables.c" + + + +static int +findEncoding(const unsigned char * * namep) + +{ + t_staterange curstate; + t_ccsid ccsid; + t_ccsid final; + t_transrange l; + t_transrange h; + const unsigned char * name; + + /** + *** Get the CCSID correspong to the name at *`namep'. + *** If success, update pointer at `namep' to 1st byte after matched + *** name and return the CCSID. + *** If failure, set errno and return -1. + **/ + + if (!namep || !(name = *namep)) { + errno = EINVAL; + return -1; + } + + curstate = 0; + final = 0; + + for (;;) { + if (curstate < sizeof final_array / sizeof final_array[0]) + if (final_array[curstate]) { + final = final_array[curstate]; + *namep = name; + } + + l = trans_array[curstate] - 1; + h = trans_array[curstate + 1]; + + do { + if (++l >= h) { + if (!final) { + errno = EINVAL; + return -1; + } + + return final - 1; + } + } while (label_array[l] != *name); + + curstate = goto_array[l]; + name++; + } + + /* NOTREACHED. */ +} + + +static void +makeos400codename(char * buf, unsigned int ccsid) + +{ + ccsid &= 0xFFFF; + memset(buf, 0, 32); + sprintf(buf, "IBMCCSID%05u0000000", ccsid); +} + + +Iconv_t +IconvOpen(const char * tocode, const char * fromcode) + +{ + int toccsid = findEncoding(&tocode); + int fromccsid = findEncoding(&fromcode); + char fromibmccsid[33]; + char toibmccsid[33]; + iconv_t * cd; + + if (toccsid < 0 || fromccsid < 0) + return (Iconv_t) -1; + + makeos400codename(fromibmccsid, fromccsid); + makeos400codename(toibmccsid, toccsid); + memset(toibmccsid + 13, 0, sizeof toibmccsid - 13); + + cd = (iconv_t *) malloc(sizeof *cd); + + if (!cd) + return (Iconv_t) -1; + + *cd = iconv_open(toibmccsid, fromibmccsid); + + if (cd->return_value) { + free((char *) cd); + return (Iconv_t) -1; + } + + return (Iconv_t) cd; +} + + +size_t +Iconv(Iconv_t cd, char * * inbuf, size_t * inbytesleft, + char * * outbuf, size_t * outbytesleft) + +{ + if (!cd || cd == (Iconv_t) -1) { + errno = EINVAL; + return (size_t) -1; + } + + return iconv(*(iconv_t *) cd, inbuf, inbytesleft, outbuf, outbytesleft); +} + + +int +IconvClose(Iconv_t cd) + +{ + if (!cd || cd == (Iconv_t) -1) { + errno = EINVAL; + return -1; + } + + if (iconv_close(*(iconv_t *) cd)) + return -1; + + free((char *) cd); + return 0; +} diff --git a/libxml2/os400/iconv/iconv.h b/libxml2/os400/iconv/iconv.h new file mode 100644 index 0000000..87a8bbc --- /dev/null +++ b/libxml2/os400/iconv/iconv.h @@ -0,0 +1,40 @@ +/** +*** Declarations for the iconv wrappers. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#ifndef __ICONV_H_ +#define __ICONV_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stddef.h> /* For size_t. */ + + +typedef void * Iconv_t; + + +Iconv_t IconvOpen(const char * tocode, const char * fromcode); +size_t Iconv(Iconv_t cd, char * * inbuf, size_t * inbytesleft, + char * * outbuf, size_t * outbytesleft); +int IconvClose(Iconv_t cd); + + +#ifndef USE_SYSTEM_ICONV +#define iconv_t Iconv_t +#define iconv_open IconvOpen +#define iconv Iconv +#define iconv_close IconvClose +#endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libxml2/os400/initscript.sh b/libxml2/os400/initscript.sh new file mode 100644 index 0000000..cc52e45 --- /dev/null +++ b/libxml2/os400/initscript.sh @@ -0,0 +1,315 @@ +#!/bin/sh +# +# Compilation scripts initialization for the OS/400 implementation. +# +# See Copyright for the status of this software. +# +# Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +# + + +case "${SCRIPTDIR}" in +/*) ;; +*) SCRIPTDIR="`pwd`/${SCRIPTDIR}" +esac + +while true +do case "${SCRIPTDIR}" in + */.) SCRIPTDIR="${SCRIPTDIR%/.}";; + *) break;; + esac +done + +# The script directory is supposed to be in $TOPDIR/os400. + +TOPDIR=`dirname "${SCRIPTDIR}"` +export SCRIPTDIR TOPDIR + + +setenv() + +{ + # Define and export. + + eval ${1}="${2}" + export ${1} +} + + +################################################################################ +# +# Tunable configuration parameters. +# +################################################################################ + +setenv TARGETLIB 'LIBXML2' # Target OS/400 program library. +setenv STATBNDDIR 'LIBXML2_A' # Static binding directory. +setenv DYNBNDDIR 'LIBXML2' # Dynamic binding directory. +setenv SRVPGM "LIBXML2" # Service program. +setenv TGTCCSID '500' # Target CCSID of objects. +setenv DEBUG '*ALL' # Debug level. +setenv OPTIMIZE '10' # Optimisation level. +setenv OUTPUT '*NONE' # Compilation output option. +setenv TGTRLS 'V5R3M0' # Target OS release. +setenv IFSDIR '/libxml2' # Installation IFS directory. + + +################################################################################ +# +# Conditional compilation parameters. +# +################################################################################ + +setenv WITH_TRIO 1 # Configure trio support. +setenv WITH_THREADS 1 # Configure thread support. +setenv WITH_THREAD_ALLOC 1 # Whether allocation hooks are per-thread. +setenv WITH_TREE 1 # Compile DOM tree API. +setenv WITH_OUTPUT 1 # Compile serialization/saving support. +setenv WITH_PUSH 1 # Compile push parser. +setenv WITH_READER 1 # Compile parsing interface. +setenv WITH_PATTERN 1 # Compile pattern node selection interface. +setenv WITH_WRITER 1 # Compile saving interface. +setenv WITH_SAX1 1 # Compile SAX version 1 interface. +setenv WITH_FTP 1 # Compile FTP support. +setenv WITH_HTTP 1 # Compile HTTP support. +setenv WITH_VALID 1 # Compile DTD validation support. +setenv WITH_HTML 1 # Compile HTML support. +setenv WITH_LEGACY 1 # Compile deprecated API. +setenv WITH_C14N 1 # Compile canonicalization support. +setenv WITH_CATALOG 1 # Compile catalog support. +setenv WITH_DOCB 1 # Compile SGML Docbook support. +setenv WITH_XPATH 1 # Compile XPath support. +setenv WITH_XPTR 1 # Compile XPointer support. +setenv WITH_XINCLUDE 1 # Compile XInclude support. +setenv WITH_ICONV 1 # Whether iconv support is available. +setenv WITH_ICU 0 # Whether icu support is available. +setenv WITH_ISO8859X 1 # Compile ISO-8859-* support if no iconv. +setenv WITH_DEBUG 1 # Compile debugging module. +setenv WITH_MEM_DEBUG 1 # Compile memory debugging module. +setenv WITH_RUN_DEBUG 1 # Compile runtime debugging. +setenv WITH_REGEXPS 1 # Compile regular expression interfaces. +setenv WITH_SCHEMAS 1 # Compile schema validation interface. +setenv WITH_SCHEMATRON 1 # Compile schematron validation interface. +setenv WITH_MODULES 1 # Compile module interfaces. +setenv WITH_ZLIB 0 # Whether zlib is available. +setenv WITH_LZMA 0 # Whether LZMA is available. + +# Define ZLIB locations. This is ignored if WITH_ZLIB is 0. + +setenv ZLIB_INCLUDE '/zlib/include' # ZLIB include IFS directory. +setenv ZLIB_LIB 'ZLIB' # ZLIB library. +setenv ZLIB_BNDDIR 'ZLIB_A' # ZLIB binding directory. + +################################################################################ +# +# OS/400 specific definitions. +# +################################################################################ + +setenv LIBIFSNAME "/QSYS.LIB/${TARGETLIB}.LIB" +setenv MODULE_EXTENSION '.SRVPGM' + + +################################################################################ +# +# Extract version information. +# +################################################################################ + + +# Transitional: get file name of configure script. + +AUTOCONFSCRIPT="${TOPDIR}/configure.ac" + +if [ ! -f "${AUTOCONFSCRIPT}" ] +then AUTOCONFSCRIPT="${TOPDIR}/configure.in" +fi + +# Need to get the version definitions. + +eval "`grep '^LIBXML_[A-Z]*_VERSION=' \"${AUTOCONFSCRIPT}\"`" +eval "`grep '^LIBXML_MICRO_VERSION_SUFFIX=' \"${AUTOCONFSCRIPT}\"`" +LIBXML_VERSION="${LIBXML_MAJOR_VERSION}.${LIBXML_MINOR_VERSION}" +LIBXML_VERSION="${LIBXML_VERSION}.${LIBXML_MICRO_VERSION}" +LIBXML_VERSION="${LIBXML_VERSION}${LIBXML_MICRO_VERSION_SUFFIX}" +LIBXML_VERSION_NUMBER=`expr "${LIBXML_MAJOR_VERSION}" \* 10000 + \ + "${LIBXML_MINOR_VERSION}" \* 100 + \ + "${LIBXML_MICRO_VERSION}"` +export LIBXML_MAJOR_VERSION LIBXML_MINOR_VERSION +export LIBXML_MICRO_VERSION LIBXML_MICROVERSION_SUFFIX +export LIBXML_VERSION LIBXML_VERSION_NUMBER +setenv LIBXML_VERSION_EXTRA '' +setenv VERSION "${LIBXML_VERSION}" + + +################################################################################ +# +# Procedures. +# +################################################################################ + +# action_needed dest [src] +# +# dest is an object to build +# if specified, src is an object on which dest depends. +# +# exit 0 (succeeds) if some action has to be taken, else 1. + +action_needed() + +{ + [ ! -e "${1}" ] && return 0 + [ "${2}" ] || return 1 + [ "${1}" -ot "${2}" ] && return 0 + return 1 +} + + +# make_module [option] module_name source_name +# +# Compile source name into ASCII module if needed. +# As side effect, append the module name to variable MODULES. +# Set LINK to "YES" if the module has been compiled. +# Options are: +# --define <additional definitions> +# --ebcdic +# --sysiconv + +make_module() + +{ + DEFN= + EBCDIC= + SYSICONV= + while true + do case "${1}" in + --define) + DEFN="${2}" + shift + ;; + --ebcdic) + EBCDIC=yes + ;; + --sysiconv) + SYSICONV=yes + ;; + *) break + esac + shift + done + MODULES="${MODULES} ${1}" + MODIFSNAME="${LIBIFSNAME}/${1}.MODULE" + action_needed "${MODIFSNAME}" "${2}" || return 0; + + # #pragma convert has to be in the source file itself, i.e. + # putting it in an include file makes it only active + # for that include file. + # Thus we build a temporary file with the pragma prepended to + # the source file and we compile that temporary file. + + rm -f __tmpsrcf.c + if [ -z "${EBCDIC}" ] + then echo "#line 1 \"${2}\"" >> __tmpsrcf.c + echo "#pragma convert(819)" >> __tmpsrcf.c + echo '#include "wrappers.h"' >> __tmpsrcf.c + fi + echo "#line 1 \"${2}\"" >> __tmpsrcf.c + cat "${2}" >> __tmpsrcf.c + CMD="CRTCMOD MODULE(${TARGETLIB}/${1}) SRCSTMF('__tmpsrcf.c')" +# CMD="${CMD} OPTION(*INCDIRFIRST *SHOWINC *SHOWSYS)" + CMD="${CMD} OPTION(*INCDIRFIRST)" + CMD="${CMD} SYSIFCOPT(*IFS64IO) LANGLVL(*EXTENDED) LOCALETYPE(*LOCALE)" + CMD="${CMD} INCDIR(" + if [ -z "${SYSICONV}" ] + then CMD="${CMD} '${TOPDIR}/os400/iconv'" + fi + if [ -z "${EBCDIC}" ] + then CMD="${CMD} '/qibm/proddata/qadrt/include'" + fi + CMD="${CMD} '${TOPDIR}/os400' '${TOPDIR}/os400/dlfcn'" + CMD="${CMD} '${IFSDIR}/include/libxml' '${IFSDIR}/include'" + if [ "${ZLIB_INCLUDE}" ] + then CMD="${CMD} '${ZLIB_INCLUDE}'" + fi + CMD="${CMD} '${TOPDIR}' ${INCLUDES})" + CMD="${CMD} TGTCCSID(${TGTCCSID}) TGTRLS(${TGTRLS})" + CMD="${CMD} OUTPUT(${OUTPUT})" + CMD="${CMD} OPTIMIZE(${OPTIMIZE})" + CMD="${CMD} DBGVIEW(${DEBUG})" + CMD="${CMD} DEFINE('_REENTRANT' 'TRIO_HAVE_CONFIG_H' 'NDEBUG' ${DEFN})" + + system "${CMD}" + rm -f __tmpsrcf.c + LINK=YES +} + + +# Determine DB2 object name from IFS name. + +db2_name() + +{ + if [ "${2}" = 'nomangle' ] + then basename "${1}" | + tr 'a-z-' 'A-Z_' | + sed -e 's/\..*//' \ + -e 's/^\(..........\).*$/\1/' + else basename "${1}" | + tr 'a-z-' 'A-Z_' | + sed -e 's/\..*//' \ + -e 's/^TEST/T/' \ + -e 's/^XML/X/' \ + -e 's/^\(.\).*\(.........\)$/\1\2/' + fi +} + + +# Copy IFS file replacing version & configuration info. + +versioned_copy() + +{ + sed -e "s/@LIBXML_VERSION@/${LIBXML_VERSION}/g" \ + \ + -e "s#@LIBXML_MAJOR_VERSION@#${LIBXML_MAJOR_VERSION}#g" \ + -e "s#@LIBXML_MINOR_VERSION@#${LIBXML_MINOR_VERSION}#g" \ + -e "s#@LIBXML_MICRO_VERSION@#${LIBXML_MICRO_VERSION}#g" \ + -e "s#@LIBXML_MICRO_VERSION_SUFFIX@#${LIBXML_MICRO_VERSION_SUFFIX}#g" \ + -e "s#@LIBXML_VERSION@#${LIBXML_VERSION}#g" \ + -e "s#@LIBXML_VERSION_NUMBER@#${LIBXML_VERSION_NUMBER}#g" \ + -e "s#@LIBXML_VERSION_EXTRA@#${LIBXML_VERSION_EXTRA}#g" \ + -e "s#@VERSION@#${VERSION}#g" \ + -e "s#@WITH_TRIO@#${WITH_TRIO}#g" \ + -e "s#@WITH_THREADS@#${WITH_THREADS}#g" \ + -e "s#@WITH_THREAD_ALLOC@#${WITH_THREAD_ALLOC}#g" \ + -e "s#@WITH_TREE@#${WITH_TREE}#g" \ + -e "s#@WITH_OUTPUT@#${WITH_OUTPUT}#g" \ + -e "s#@WITH_PUSH@#${WITH_PUSH}#g" \ + -e "s#@WITH_READER@#${WITH_READER}#g" \ + -e "s#@WITH_PATTERN@#${WITH_PATTERN}#g" \ + -e "s#@WITH_WRITER@#${WITH_WRITER}#g" \ + -e "s#@WITH_SAX1@#${WITH_SAX1}#g" \ + -e "s#@WITH_FTP@#${WITH_FTP}#g" \ + -e "s#@WITH_HTTP@#${WITH_HTTP}#g" \ + -e "s#@WITH_VALID@#${WITH_VALID}#g" \ + -e "s#@WITH_HTML@#${WITH_HTML}#g" \ + -e "s#@WITH_LEGACY@#${WITH_LEGACY}#g" \ + -e "s#@WITH_C14N@#${WITH_C14N}#g" \ + -e "s#@WITH_CATALOG@#${WITH_CATALOG}#g" \ + -e "s#@WITH_DOCB@#${WITH_DOCB}#g" \ + -e "s#@WITH_XPATH@#${WITH_XPATH}#g" \ + -e "s#@WITH_XPTR@#${WITH_XPTR}#g" \ + -e "s#@WITH_XINCLUDE@#${WITH_XINCLUDE}#g" \ + -e "s#@WITH_ICONV@#${WITH_ICONV}#g" \ + -e "s#@WITH_ICU@#${WITH_ICU}#g" \ + -e "s#@WITH_ISO8859X@#${WITH_ISO8859X}#g" \ + -e "s#@WITH_DEBUG@#${WITH_DEBUG}#g" \ + -e "s#@WITH_MEM_DEBUG@#${WITH_MEM_DEBUG}#g" \ + -e "s#@WITH_RUN_DEBUG@#${WITH_RUN_DEBUG}#g" \ + -e "s#@WITH_REGEXPS@#${WITH_REGEXPS}#g" \ + -e "s#@WITH_SCHEMAS@#${WITH_SCHEMAS}#g" \ + -e "s#@WITH_SCHEMATRON@#${WITH_SCHEMATRON}#g" \ + -e "s#@WITH_MODULES@#${WITH_MODULES}#g" \ + -e "s#@WITH_ZLIB@#${WITH_ZLIB}#g" \ + -e "s#@WITH_LZMA@#${WITH_LZMA}#g" +} diff --git a/libxml2/os400/libxmlmain.c b/libxml2/os400/libxmlmain.c new file mode 100644 index 0000000..91c848a --- /dev/null +++ b/libxml2/os400/libxmlmain.c @@ -0,0 +1,102 @@ +/** +*** QADRT/QADRTMAIN2 substitution program. +*** This is needed because the IBM-provided QADRTMAIN2 does not +*** properly translate arguments by default or if no locale is provided. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#include <stdlib.h> +#include <string.h> +#include <iconv.h> +#include <errno.h> +#include <locale.h> + +/* Do not use qadrt.h since it defines unneeded static procedures. */ +extern void QadrtInit(void); +extern int QadrtFreeConversionTable(void); +extern int QadrtFreeEnviron(void); +extern char * setlocale_a(int, const char *); + + +/* The ASCII main program. */ +extern int main_a(int argc, char * * argv); + +/* Global values of original EBCDIC arguments. */ +int ebcdic_argc; +char * * ebcdic_argv; + + +int +main(int argc, char * * argv) + +{ + int i; + int j; + iconv_t cd; + size_t bytecount = 0; + char * inbuf; + char * outbuf; + size_t inbytesleft; + size_t outbytesleft; + char dummybuf[128]; + char tocode[32]; + char fromcode[32]; + + ebcdic_argc = argc; + ebcdic_argv = argv; + + /* Build the encoding converter. */ + strncpy(tocode, "IBMCCSID01208", sizeof tocode); + strncpy(fromcode, "IBMCCSID000000000010", sizeof fromcode); + cd = iconv_open(tocode, fromcode); + + /* Measure the arguments. */ + for (i = 0; i < argc; i++) { + inbuf = argv[i]; + do { + inbytesleft = 0; + outbuf = dummybuf; + outbytesleft = sizeof dummybuf; + j = iconv(cd, + &inbuf, &inbytesleft, &outbuf, &outbytesleft); + bytecount += outbuf - dummybuf; + } while (j == -1 && errno == E2BIG); + /* Reset the shift state. */ + iconv(cd, NULL, &inbytesleft, &outbuf, &outbytesleft); + } + + /* Allocate memory for the ASCII arguments and vector. */ + argv = (char * *) malloc((argc + 1) * sizeof *argv + bytecount); + + /* Build the vector and convert argument encoding. */ + outbuf = (char *) (argv + argc + 1); + outbytesleft = bytecount; + + for (i = 0; i < argc; i++) { + argv[i] = outbuf; + inbuf = ebcdic_argv[i]; + inbytesleft = 0; + iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + iconv(cd, NULL, &inbytesleft, &outbuf, &outbytesleft); + } + + iconv_close(cd); + argv[argc] = NULL; + + /* Try setting the locale regardless of QADRT_ENV_LOCALE. */ + setlocale_a(LC_ALL, ""); + + /* Call the program. */ + i = main_a(argc, argv); + + /* Clean-up allocated items. */ + free((char *) argv); + QadrtFreeConversionTable(); + QadrtFreeEnviron(); + + /* Terminate. */ + return i; +} diff --git a/libxml2/os400/libxmlrpg/DOCBparser.rpgle b/libxml2/os400/libxmlrpg/DOCBparser.rpgle new file mode 100644 index 0000000..08a6b8c --- /dev/null +++ b/libxml2/os400/libxmlrpg/DOCBparser.rpgle @@ -0,0 +1,120 @@ + * Summary: old DocBook SGML parser + * Description: interface for a DocBook SGML non-verifying parser + * This code is DEPRECATED, and should not be used anymore. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(DOCB_PARSER_H__) + /define DOCB_PARSER_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_DOCB_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/parser" + /include "libxmlrpg/parserInternals" + + * Most of the back-end structures from XML and SGML are shared. + + d docbParserCtxtPtr... + d s based(######typedef######) + d like(xmlParserCtxtPtr) + + d docbParserCtxt ds based(docbParserCtxtPtr) + d likeds(xmlParserCtxt) + + d docbSAXHandlerPtr... + d s based(######typedef######) + d like(xmlSAXHandlerPtr) + + d docbSAXHandler ds based(docbSAXHandlerPtr) + d likeds(xmlSAXHandler) + + d docbParserInputPtr... + d s based(######typedef######) + d like(xmlParserInputPtr) + + d docbParserInput... + d ds based(docbParserInputPtr) + d likeds(xmlParserInput) + + d docbDocPtr s based(######typedef######) + d like(xmlDocPtr) + + * There is only few public functions. + + d docbEncodeEntities... + d pr extproc('docbEncodeEntities') + d like(xmlCint) + d out * value options(*string) unsigned char * + d outlen * value int * + d in * value options(*string) const unsigned char + d * + d inlen * value int * + d quoteChar value like(xmlCint) + + d docbSAXParseDoc... + d pr extproc('docbSAXParseDoc') + d like(docbDocPtr) + d cur * value options(*string) xmlChar * + d encoding * value options(*string) const char * + d sax value like(docbSAXHandlerPtr) + d userData * value void * + + d docbParseDoc pr extproc('docbParseDoc') + d like(docbDocPtr) + d cur * value options(*string) xmlChar * + d encoding * value options(*string) const char * + + d docbSAXParseFile... + d pr extproc('docbSAXParseFile') + d like(docbDocPtr) + d filename * value options(*string) const char * + d encoding * value options(*string) const char * + d sax value like(docbSAXHandlerPtr) + d userData * value void * + + d docbParseFile pr extproc('docbParseFile') + d like(docbDocPtr) + d filename * value options(*string) const char * + d encoding * value options(*string) const char * + + * Interfaces for the Push mode. + + d docbFreeParserCtxt... + d pr extproc('docbFreeParserCtxt') + d ctxt value like(docbParserCtxtPtr) + + d docbCreatePushParserCtxt... + d pr extproc('docbCreatePushParserCtxt') + d like(docbParserCtxtPtr) + d sax value like(docbSAXHandlerPtr) + d user_data * value void * + d chunk * value options(*string) const char * + d size value like(xmlCint) + d filename * value options(*string) const char * + d enc value like(xmlCharEncoding) + + d docbParseChunk pr extproc('docbParseChunk') + d like(xmlCint) + d ctxt value like(docbParserCtxtPtr) + d chunk * value options(*string) const char * + d size value like(xmlCint) + d terminate value like(xmlCint) + + d docbCreateFileParserCtxt... + d pr extproc('docbCreateFileParserCtxt') + d like(docbParserCtxtPtr) + d filename * value options(*string) const char * + d encoding * value options(*string) const char * + + d docbParseDocument... + d pr extproc('docbParseDocument') + d like(xmlCint) + d ctxt value like(docbParserCtxtPtr) + + /endif LIBXML_DOCB_ENABLED + /endif DOCB_PARSER_H__ diff --git a/libxml2/os400/libxmlrpg/HTMLparser.rpgle b/libxml2/os400/libxmlrpg/HTMLparser.rpgle new file mode 100644 index 0000000..c27d8e5 --- /dev/null +++ b/libxml2/os400/libxmlrpg/HTMLparser.rpgle @@ -0,0 +1,419 @@ + * Summary: interface for an HTML 4.0 non-verifying parser + * Description: this module implements an HTML 4.0 non-verifying parser + * with API compatible with the XML parser ones. It should + * be able to parse "real world" HTML, even if severely + * broken from a specification point of view. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(HTML_PARSER_H__) + /define HTML_PARSER_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_HTML_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/parser" + + * Most of the back-end structures from XML and HTML are shared. + + d htmlParserCtxtPtr... + d s based(######typedef######) + d like(xmlParserCtxtPtr) + + d htmlParserCtxt ds based(htmlParserCtxtPtr) + d likeds(xmlParserCtxt) + + d htmlParserNodeInfoPtr... + d s based(######typedef######) + d like(xmlParserNodeInfoPtr) + + d htmlParserNodeInfo... + d ds based(htmlParserNodeInfoPtr) + d likeds(xmlParserNodeInfo) + + d htmlSAXHandlerPtr... + d s based(######typedef######) + d like(xmlSAXHandlerPtr) + + d htmlSAXHandler ds based(htmlSAXHandlerPtr) + d likeds(xmlSAXHandler) + + d htmlParserInputPtr... + d s based(######typedef######) + d like(xmlParserInputPtr) + + d htmlParserInput... + d ds based(htmlParserInputPtr) + d likeds(xmlParserInput) + + d htmlDocPtr s based(######typedef######) + d like(xmlDocPtr) + + d htmlNodePtr s based(######typedef######) + d like(xmlNodePtr) + + * Internal description of an HTML element, representing HTML 4.01 + * and XHTML 1.0 (which share the same structure). + + d htmlElemDescPtr... + d s * based(######typedef######) + + d htmlElemDesc ds based(htmlElemDescPtr) + d align qualified + d name * const char * + d startTag like(xmlCchar) Start tag implied ? + d endTag like(xmlCchar) End tag implied ? + d saveEndTag like(xmlCchar) Save end tag ? + d empty like(xmlCchar) Empty element ? + d depr like(xmlCchar) Deprecated element ? + d dtd like(xmlCchar) Loose DTD/Frameset + d isinline like(xmlCchar) Block 0/inline elem? + d desc * const char * + * + * New fields encapsulating HTML structure + * + * Bugs: + * This is a very limited representation. It fails to tell us when + * an element *requires* subelements (we only have whether they're + * allowed or not), and it doesn't tell us where CDATA and PCDATA + * are allowed. Some element relationships are not fully represented: + * these are flagged with the word MODIFIER + * + d subelts * const char * * + d defaultsubelt * const char * + d attrs_opt * const char * * + d attrs_depr * const char * * + d attrs_req * const char * * + + * Internal description of an HTML entity. + + d htmlEntityDescPtr... + d s * based(######typedef######) + + d htmlEntityDesc... + d ds based(htmlEntityDescPtr) + d align qualified + d value like(xmlCuint) + d name * const char * + d desc * const char * + + * There is only few public functions. + + d htmlTagLookup pr extproc('htmlTagLookup') + d like(htmlElemDescPtr) const + d tag * value options(*string) const xmlChar * + + d htmlEntityLookup... + d pr extproc('htmlEntityLookup') + d like(htmlEntityDescPtr) const + d name * value options(*string) const xmlChar * + + d htmlEntityValueLookup... + d pr extproc('htmlEntityValueLookup') + d like(htmlEntityDescPtr) const + d value value like(xmlCuint) + + d htmlIsAutoClosed... + d pr extproc('htmlIsAutoClosed') + d like(xmlCint) + d doc value like(htmlDocPtr) + d elem value like(htmlNodePtr) + + d htmlAutoCloseTag... + d pr extproc('htmlAutoCloseTag') + d like(xmlCint) + d doc value like(htmlDocPtr) + d name * value options(*string) const xmlChar * + d elem value like(htmlNodePtr) + + d htmlParseEntityRef... + d pr extproc('htmlParseEntityRef') + d like(htmlEntityDescPtr) const + d ctxt value like(htmlParserCtxtPtr) + d str * const xmlChar *(*) + + d htmlParseCharRef... + d pr extproc('htmlParseCharRef') + d like(xmlCint) + d ctxt value like(htmlParserCtxtPtr) + + d htmlParseElement... + d pr extproc('htmlParseElement') + d ctxt value like(htmlParserCtxtPtr) + + d htmlNewParserCtxt... + d pr extproc('htmlNewParserCtxt') + d like(htmlParserCtxtPtr) + + d htmlCreateMemoryParserCtxt... + d pr extproc('htmlCreateMemoryParserCtxt') + d like(htmlParserCtxtPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + + d htmlParseDocument... + d pr extproc('htmlParseDocument') + d like(xmlCint) + d ctxt value like(htmlParserCtxtPtr) + + d htmlSAXParseDoc... + d pr extproc('htmlSAXParseDoc') + d like(htmlDocPtr) + d cur * value options(*string) xmlChar * + d encoding * value options(*string) const char * + d sax value like(htmlSAXHandlerPtr) + d userData * value void * + + d htmlParseDoc pr extproc('htmlParseDoc') + d like(htmlDocPtr) + d cur * value options(*string) xmlChar * + d encoding * value options(*string) const char * + + d htmlSAXParseFile... + d pr extproc('htmlSAXParseFile') + d like(htmlDocPtr) + d filename * value options(*string) const char * + d encoding * value options(*string) const char * + d sax value like(htmlSAXHandlerPtr) + d userData * value void * + + d htmlParseFile pr extproc('htmlParseFile') + d like(htmlDocPtr) + d filename * value options(*string) const char * + d encoding * value options(*string) const char * + + d UTF8ToHtml pr extproc('UTF8ToHtml') + d like(xmlCint) + d out 65535 options(*varsize) unsigned char [] + d outlen like(xmlCint) + d in * value options(*string) const unsigned char* + d inlen like(xmlCint) + + d htmlEncodeEntities... + d pr extproc('htmlEncodeEntities') + d like(xmlCint) + d out 65535 options(*varsize) unsigned char [] + d outlen like(xmlCint) + d in * value options(*string) const unsigned char* + d inlen like(xmlCint) + d quoteChar value like(xmlCint) + + d htmlIsScriptAttribute... + d pr extproc('htmlIsScriptAttribute') + d like(xmlCint) + d name * value options(*string) const xmlChar * + + d htmlHandleOmittedElem... + d pr extproc('htmlHandleOmittedElem') + d like(xmlCint) + d val value like(xmlCint) + + /if defined(LIBXML_PUSH_ENABLED) + + * Interfaces for the Push mode. + + d htmlCreatePushParserCtxt... + d pr extproc('htmlCreatePushParserCtxt') + d like(htmlParserCtxtPtr) + d sax value like(htmlSAXHandlerPtr) + d user_data * value void * + d chunk * value options(*string) const char * + d size value like(xmlCint) + d filename * value options(*string) const char * + d enc value like(xmlCharEncoding) + + d htmlParseChunk pr extproc('htmlParseChunk') + d like(xmlCint) + d ctxt value like(htmlParserCtxtPtr) + d chunk * value options(*string) const char * + d size value like(xmlCint) + d terminate value like(xmlCint) + /endif LIBXML_PUSH_ENABLED + + d htmlFreeParserCtxt... + d pr extproc('htmlFreeParserCtxt') + d ctxt value like(htmlParserCtxtPtr) + + * New set of simpler/more flexible APIs + + * xmlParserOption: + * + * This is the set of XML parser options that can be passed down + * to the xmlReadDoc() and similar calls. + + d htmlParserOption... + d s based(######typedef######) + d like(xmlCenum) + d HTML_PARSE_RECOVER... Relaxed parsing + d c X'00000001' + d HTML_PARSE_NODEFDTD... No default doctype + d c X'00000004' + d HTML_PARSE_NOERROR... No error reports + d c X'00000020' + d HTML_PARSE_NOWARNING... No warning reports + d c X'00000040' + d HTML_PARSE_PEDANTIC... Pedantic err reports + d c X'00000080' + d HTML_PARSE_NOBLANKS... Remove blank nodes + d c X'00000100' + d HTML_PARSE_NONET... Forbid net access + d c X'00000800' + d HTML_PARSE_NOIMPLIED... No implied html/body + d c X'00002000' + d HTML_PARSE_COMPACT... compact small txtnod + d c X'00010000' + d HTML_PARSE_IGNORE_ENC... Ignore encoding hint + d c X'00200000' + + d htmlCtxtReset pr extproc('htmlCtxtReset') + d ctxt value like(htmlParserCtxtPtr) + + d htmlCtxtUseOptions... + d pr extproc('htmlCtxtUseOptions') + d like(xmlCint) + d ctxt value like(htmlParserCtxtPtr) + d options value like(xmlCint) + + d htmlReadDoc pr extproc('htmlReadDoc') + d like(htmlDocPtr) + d cur * value options(*string) const xmlChar * + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d htmlReadFile pr extproc('htmlReadFile') + d like(htmlDocPtr) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d htmlReadMemory pr extproc('htmlReadMemory') + d like(htmlDocPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d htmlReadFd pr extproc('htmlReadFd') + d like(htmlDocPtr) + d fd value like(xmlCint) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d htmlReadIO pr extproc('htmlReadIO') + d like(htmlDocPtr) + d ioread value like(xmlInputReadCallback) + d ioclose value like(xmlInputCloseCallback) + d ioctx * value void * + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d htmlCtxtReadDoc... + d pr extproc('htmlCtxtReadDoc') + d like(htmlDocPtr) + d ctxt value like(xmlParserCtxtPtr) + d cur * value options(*string) const xmlChar * + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d htmlCtxtReadFile... + d pr extproc('htmlCtxtReadFile') + d like(htmlDocPtr) + d ctxt value like(xmlParserCtxtPtr) + d filename * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d htmlCtxtReadMemory... + d pr extproc('htmlCtxtReadMemory') + d like(htmlDocPtr) + d ctxt value like(xmlParserCtxtPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d htmlCtxtReadFd pr extproc('htmlCtxtReadFd') + d like(htmlDocPtr) + d ctxt value like(xmlParserCtxtPtr) + d fd value like(xmlCint) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d htmlCtxtReadIO pr extproc('htmlCtxtReadIO') + d like(htmlDocPtr) + d ctxt value like(xmlParserCtxtPtr) + d ioread value like(xmlInputReadCallback) + d ioclose value like(xmlInputCloseCallback) + d ioctx * value void * + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + * Further knowledge of HTML structure + + d htmlStatus s based(######typedef######) + d like(xmlCenum) + d HTML_NA c X'0000' No check at all + d HTML_INVALID c X'0001' + d HTML_DEPRECATED... + d c X'0002' + d HTML_VALID c X'0004' + d HTML_REQUIRED c X'000C' HTML_VALID ored-in + + * Using htmlElemDesc rather than name here, to emphasise the fact + * that otherwise there's a lookup overhead + + d htmlAttrAllowed... + d pr extproc('htmlAttrAllowed') + d like(htmlStatus) + d #param1 value like(htmlElemDescPtr) const + d #param2 * value options(*string) const xmlChar * + d #param3 value like(xmlCint) + + d htmlElementAllowedHere... + d pr extproc('htmlElementAllowedHere') + d like(xmlCint) + d #param1 value like(htmlElemDescPtr) const + d #param2 * value options(*string) const xmlChar * + + d htmlElementStatusHere... + d pr extproc('htmlElementStatusHere') + d like(htmlStatus) + d #param1 value like(htmlElemDescPtr) const + d #param2 value like(htmlElemDescPtr) const + + d htmlNodeStatus pr extproc('htmlNodeStatus') + d like(htmlStatus) + d #param1 value like(htmlNodePtr) + d #param2 value like(xmlCint) + + * C macros implemented as procedures for ILE/RPG support. + + d htmlDefaultSubelement... + d pr * extproc('__htmlDefaultSubelement') const char * + d elt * value const htmlElemDesc * + + d htmlElementAllowedHereDesc... + d pr extproc( + d '__htmlElementAllowedHereDesc') + d like(xmlCint) + d parent * value const htmlElemDesc * + d elt * value const htmlElemDesc * + + d htmlRequiredAttrs... + d pr * extproc('__htmlRequiredAttrs') const char * * + d elt * value const htmlElemDesc * + + /endif LIBXML_HTML_ENABLED + /endif HTML_PARSER_H__ diff --git a/libxml2/os400/libxmlrpg/HTMLtree.rpgle b/libxml2/os400/libxmlrpg/HTMLtree.rpgle new file mode 100644 index 0000000..99c38a0 --- /dev/null +++ b/libxml2/os400/libxmlrpg/HTMLtree.rpgle @@ -0,0 +1,176 @@ + * Summary: specific APIs to process HTML tree, especially serialization + * Description: this module implements a few function needed to process + * tree in an HTML specific way. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(HTML_TREE_H__) + /define HTML_TREE_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_HTML_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + /include "libxmlrpg/HTMLparser" + + * HTML_TEXT_NODE: + * + * Macro. A text node in a HTML document is really implemented + * the same way as a text node in an XML document. + + d HTML_TEXT_NODE c 3 + + * HTML_ENTITY_REF_NODE: + * + * Macro. An entity reference in a HTML document is really implemented + * the same way as an entity reference in an XML document. + + d HTML_ENTITY_REF_NODE... + d c 5 + + * HTML_COMMENT_NODE: + * + * Macro. A comment in a HTML document is really implemented + * the same way as a comment in an XML document. + + d HTML_COMMENT_NODE... + d c 8 + + * HTML_PRESERVE_NODE: + * + * Macro. A preserved node in a HTML document is really implemented + * the same way as a CDATA section in an XML document. + + d HTML_PRESERVE_NODE... + d c 4 + + * HTML_PI_NODE: + * + * Macro. A processing instruction in a HTML document is really implemented + * the same way as a processing instruction in an XML document. + + d HTML_PI_NODE c 7 + + d htmlNewDoc pr extproc('htmlNewDoc') + d like(htmlDocPtr) + d URI * value options(*string) const xmlChar * + d ExternalID * value options(*string) const xmlChar * + + d htmlNewDocNoDtD... + d pr extproc('htmlNewDocNoDtD') + d like(htmlDocPtr) + d URI * value options(*string) const xmlChar * + d ExternalID * value options(*string) const xmlChar * + + d htmlGetMetaEncoding... + d pr * extproc('htmlGetMetaEncoding') const xmlChar * + d doc value like(htmlDocPtr) + + d htmlSetMetaEncoding... + d pr extproc('htmlSetMetaEncoding') + d like(xmlCint) + d doc value like(htmlDocPtr) + d encoding * value options(*string) const xmlChar * + + /if defined(LIBXML_OUTPUT_ENABLED) + d htmlDocDumpMemory... + d pr extproc('htmlDocDumpMemory') + d cur value like(xmlDocPtr) + d mem * value xmlChar * * + d size like(xmlCint) + + d htmlDocDumpMemoryFormat... + d pr extproc('htmlDocDumpMemoryFormat') + d cur value like(xmlDocPtr) + d mem * value xmlChar * * + d size like(xmlCint) + d format value like(xmlCint) + + d htmlDocDump pr extproc('htmlDocDump') + d like(xmlCint) + d f * value FILE * + d cur value like(xmlDocPtr) + + d htmlSaveFile pr extproc('htmlSaveFile') + d like(xmlCint) + d filename * value options(*string) const char * + d cur value like(xmlDocPtr) + + d htmlNodeDump pr extproc('htmlNodeDump') + d like(xmlCint) + d buf value like(xmlBufferPtr) + d doc value like(xmlDocPtr) + d cur value like(xmlNodePtr) + + d htmlNodeDumpFile... + d pr extproc('htmlNodeDumpFile') + d out * value FILE * + d doc value like(xmlDocPtr) + d cur value like(xmlNodePtr) + + d htmlNodeDumpFileFormat... + d pr extproc('htmlNodeDumpFileFormat') + d like(xmlCint) + d out * value FILE * + d doc value like(xmlDocPtr) + d cur value like(xmlNodePtr) + d encoding * value options(*string) const char * + d format value like(xmlCint) + + d htmlSaveFileEnc... + d pr extproc('htmlSaveFileEnc') + d like(xmlCint) + d filename * value options(*string) const char * + d cur value like(xmlDocPtr) + d encoding * value options(*string) const char * + + d htmlSaveFileFormat... + d pr extproc('htmlSaveFileFormat') + d like(xmlCint) + d filename * value options(*string) const char * + d cur value like(xmlDocPtr) + d encoding * value options(*string) const char * + d format value like(xmlCint) + + d htmlNodeDumpFormatOutput... + d pr extproc('htmlNodeDumpFormatOutput') + d buf value like(xmlOutputBufferPtr) + d doc value like(xmlDocPtr) + d cur value like(xmlNodePtr) + d encoding * value options(*string) const char * + d format value like(xmlCint) + + d htmlDocContentDumpOutput... + d pr extproc('htmlDocContentDumpOutput') + d buf value like(xmlOutputBufferPtr) + d cur value like(xmlDocPtr) + d encoding * value options(*string) const char * + + d htmlDocContentDumpFormatOutput... + d pr extproc( + d 'htmlDocContentDumpFormatOutput') + d buf value like(xmlOutputBufferPtr) + d cur value like(xmlDocPtr) + d encoding * value options(*string) const char * + d format value like(xmlCint) + + d htmlNodeDumpOutput... + d pr extproc('htmlNodeDumpOutput') + d buf value like(xmlOutputBufferPtr) + d doc value like(xmlDocPtr) + d cur value like(xmlNodePtr) + d encoding * value options(*string) const char * + + /endif LIBXML_OUTPUT_ENABLD + + d htmlIsBooleanAttr... + d pr extproc('htmlIsBooleanAttr') + d like(xmlCint) + d name * value options(*string) const xmlChar * + + /endif LIBXML_HTML_ENABLED + /endif HTML_TREE_H__ diff --git a/libxml2/os400/libxmlrpg/SAX.rpgle b/libxml2/os400/libxmlrpg/SAX.rpgle new file mode 100644 index 0000000..a22d49a --- /dev/null +++ b/libxml2/os400/libxmlrpg/SAX.rpgle @@ -0,0 +1,213 @@ + * Summary: Old SAX version 1 handler, deprecated + * Description: DEPRECATED set of SAX version 1 interfaces used to + * build the DOM tree. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_SAX_H__) + /define XML_SAX_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/parser" + /include "libxmlrpg/xlink" + + /if defined(LIBXML_LEGACY_ENABLED) + + d getPublicId pr * extproc('getPublicId') const xmlChar * + d ctx * value void * + + d getSystemId pr * extproc('getSystemId') const xmlChar * + d ctx * value void * + + d setDocumentLocator... + d pr extproc('setDocumentLocator') + d ctx * value void * + d loc value like(xmlSAXLocatorPtr) + + d getLineNumber pr extproc('getLineNumber') + d like(xmlCint) + d ctx * value void * + + d getColumnNumber... + d pr extproc('getColumnNumber') + d like(xmlCint) + d ctx * value void * + + d isStandalone pr extproc('isStandalone') + d like(xmlCint) + d ctx * value void * + + d hasInternalSubset... + d pr extproc('hasInternalSubset') + d like(xmlCint) + d ctx * value void * + + d hasExternalSubset... + d pr extproc('hasExternalSubset') + d like(xmlCint) + d ctx * value void * + + d internalSubset pr extproc('internalSubset') + d ctx * value void * + d name * value options(*string) const xmlChar * + d ExternalID * value options(*string) const xmlChar * + d SystemID * value options(*string) const xmlChar * + + d externalSubset pr extproc('externalSubset') + d ctx * value void * + d name * value options(*string) const xmlChar * + d ExternalID * value options(*string) const xmlChar * + d SystemID * value options(*string) const xmlChar * + + d getEntity pr extproc('getEntity') + d like(xmlEntityPtr) + d ctx * value void * + d name * value options(*string) const xmlChar * + + d getParameterEntity... + d pr extproc('getParameterEntity') + d like(xmlEntityPtr) + d ctx * value void * + d name * value options(*string) const xmlChar * + + d resolveEntity pr extproc('resolveEntity') + d like(xmlParserInputPtr) + d ctx * value void * + d publicId * value options(*string) const xmlChar * + d systemId * value options(*string) const xmlChar * + + d entityDecl pr extproc('entityDecl') + d ctx * value void * + d name * value options(*string) const xmlChar * + d type value like(xmlCint) + d publicId * value options(*string) const xmlChar * + d systemId * value options(*string) const xmlChar * + d content * value options(*string) xmlChar * + + d attributeDecl pr extproc('attributeDecl') + d ctx * value void * + d elem * value options(*string) const xmlChar * + d fullname * value options(*string) const xmlChar * + d type value like(xmlCint) + d def value like(xmlCint) + d defaultValue * value options(*string) const xmlChar * + d tree value like(xmlEnumerationPtr) + + d elementDecl pr extproc('elementDecl') + d ctx * value void * + d name * value options(*string) const xmlChar * + d type value like(xmlCint) + d content value like(xmlElementContentPtr) + + d notationDecl pr extproc('notationDecl') + d ctx * value void * + d name * value options(*string) const xmlChar * + d publicId * value options(*string) const xmlChar * + d systemId * value options(*string) const xmlChar * + + d unparsedEntityDecl... + d pr extproc('unparsedEntityDecl') + d ctx * value void * + d name * value options(*string) const xmlChar * + d publicId * value options(*string) const xmlChar * + d systemId * value options(*string) const xmlChar * + d notationName * value options(*string) const xmlChar * + + d startDocument pr extproc('startDocument') + d ctx * value void * + + d endDocument pr extproc('endDocument') + d ctx * value void * + + d attribute pr extproc('attribute') + d ctx * value void * + d fullname * value options(*string) const xmlChar * + d value * value options(*string) const xmlChar * + + d startElement pr extproc('startElement') + d ctx * value void * + d fullname * value options(*string) const xmlChar * + d atts * const xmlChar *(*) + + d endElement pr extproc('endElement') + d ctx * value void * + d name * value options(*string) const xmlChar * + + d reference pr extproc('reference') + d ctx * value void * + d name * value options(*string) const xmlChar * + + d characters pr extproc('characters') + d ctx * value void * + d ch * value options(*string) const xmlChar * + d len value like(xmlCint) + + d ignorableWhitespace... + d pr extproc('ignorableWhitespace') + d ctx * value void * + d ch * value options(*string) const xmlChar * + d len value like(xmlCint) + + d processingInstruction... + d pr extproc('processingInstruction') + d ctx * value void * + d target * value options(*string) const xmlChar * + d data * value options(*string) const xmlChar * + + d globalNamespace... + d pr extproc('globalNamespace') + d ctx * value void * + d href * value options(*string) const xmlChar * + d prefix * value options(*string) const xmlChar * + + d setNamespace pr extproc('setNamespace') + d ctx * value void * + d name * value options(*string) const xmlChar * + + d getNamespace pr extproc('getNamespace') + d like(xmlNsPtr) + d ctx * value void * + + d checkNamespace pr extproc('checkNamespace') + d like(xmlCint) + d ctx * value void * + d nameSpace * value options(*string) xmlChar * + + d namespaceDecl pr extproc('namespaceDecl') + d ctx * value void * + d href * value options(*string) const xmlChar * + d prefix * value options(*string) const xmlChar * + + d comment pr extproc('comment') + d ctx * value void * + d value * value options(*string) const xmlChar * + + d cdataBlock pr extproc('cdataBlock') + d ctx * value void * + d value * value options(*string) const xmlChar * + d len value like(xmlCint) + + /if defined(LIBXML_SAX1_ENABLED) + d initxmlDefaultSAXHandler... + d pr extproc('initxmlDefaultSAXHandler') + d hdlr likeds(xmlSAXHandlerV1) + d warning value like(xmlCint) + + /if defined(LIBXML_HTML_ENABLED) + d inithtmlDefaultSAXHandler... + d pr extproc('inithtmlDefaultSAXHandler') + d hdlr likeds(xmlSAXHandlerV1) + /endif + + /if defined(LIBXML_DOCB_ENABLED) + d initdocbDefaultSAXHandler... + d pr extproc('initdocbDefaultSAXHandler') + d hdlr likeds(xmlSAXHandlerV1) + /endif + /endif LIBXML_SAX1_ENABLED + + /endif LIBXML_LEGACY_ENABLD + + /endif XML_SAX_H__ diff --git a/libxml2/os400/libxmlrpg/SAX2.rpgle b/libxml2/os400/libxmlrpg/SAX2.rpgle new file mode 100644 index 0000000..c72be25 --- /dev/null +++ b/libxml2/os400/libxmlrpg/SAX2.rpgle @@ -0,0 +1,256 @@ + * Summary: SAX2 parser interface used to build the DOM tree + * Description: those are the default SAX2 interfaces used by + * the library when building DOM tree. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_SAX2_H__) + /define XML_SAX2_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/parser" + /include "libxmlrpg/xlink" + + d xmlSAX2GetPublicId... + d pr * extproc('xmlSAX2getPublicId') const xmlChar * + d ctx * value void * + + d xmlSAX2GetSystemId... + d pr * extproc('xmlSAX2getSystemId') const xmlChar * + d ctx * value void * + + d xmlSAX2SetDocumentLocator... + d pr extproc('xmlSAX2SetDocumentLocator') + d ctx * value void * + d loc value like(xmlSAXLocatorPtr) + + d xmlSAX2GetLineNumber... + d pr extproc('xmlSAX2GetLineNumber') + d like(xmlCint) + d ctx * value void * + + d xmlSAX2GetColumnNumber... + d pr extproc('xmlSAX2GetColumnNumber') + d like(xmlCint) + d ctx * value void * + + d xmlSAX2IsStandalone... + d pr extproc('xmlSAX2IsStandalone') + d like(xmlCint) + d ctx * value void * + + d xmlSAX2HasInternalSubset... + d pr extproc('xmlSAX2HasInternalSubset') + d like(xmlCint) + d ctx * value void * + + d xmlSAX2HasExternalSubset... + d pr extproc('xmlSAX2HasExternalSubset') + d like(xmlCint) + d ctx * value void * + + d xmlSAX2InternalSubset... + d pr extproc('xmlSAX2InternalSubset') + d ctx * value void * + d name * value options(*string) const xmlChar * + d ExternalID * value options(*string) const xmlChar * + d SystemID * value options(*string) const xmlChar * + + d xmlSAX2ExternalSubset... + d pr extproc('xmlSAX2ExternalSubset') + d ctx * value void * + d name * value options(*string) const xmlChar * + d ExternalID * value options(*string) const xmlChar * + d SystemID * value options(*string) const xmlChar * + + d xmlSAX2GetEntity... + d pr extproc('xmlSAX2GetEntity') + d like(xmlEntityPtr) + d ctx * value void * + d name * value options(*string) const xmlChar * + + d xmlSAX2GetParameterEntity... + d pr extproc('xmlSAX2GetParameterEntity') + d like(xmlEntityPtr) + d ctx * value void * + d name * value options(*string) const xmlChar * + + d xmlSAX2ResolveEntity... + d pr extproc('xmlSAX2ResolveEntity') + d like(xmlParserInputPtr) + d ctx * value void * + d publicId * value options(*string) const xmlChar * + d systemId * value options(*string) const xmlChar * + + d xmlSAX2EntityDecl... + d pr extproc('xmlSAX2EntityDecl') + d ctx * value void * + d name * value options(*string) const xmlChar * + d type value like(xmlCint) + d publicId * value options(*string) const xmlChar * + d systemId * value options(*string) const xmlChar * + d content * value options(*string) xmlChar * + + d xmlSAX2AttributeDecl... + d pr extproc('xmlSAX2AttributeDecl') + d ctx * value void * + d elem * value options(*string) const xmlChar * + d fullname * value options(*string) const xmlChar * + d type value like(xmlCint) + d def value like(xmlCint) + d defaultValue * value options(*string) const xmlChar * + d tree value like(xmlEnumerationPtr) + + d xmlSAX2ElementDecl... + d pr extproc('xmlSAX2ElementDecl') + d ctx * value void * + d name * value options(*string) const xmlChar * + d type value like(xmlCint) + d content value like(xmlElementContentPtr) + + d xmlSAX2NotationDecl... + d pr extproc('xmlSAX2NotationDecl') + d ctx * value void * + d name * value options(*string) const xmlChar * + d publicId * value options(*string) const xmlChar * + d systemId * value options(*string) const xmlChar * + + d xmlSAX2UnparsedEntityDecl... + d pr extproc('xmlSAX2UnparsedEntityDecl') + d ctx * value void * + d name * value options(*string) const xmlChar * + d publicId * value options(*string) const xmlChar * + d systemId * value options(*string) const xmlChar * + d notationName * value options(*string) xmlChar * + + d xmlSAX2StartDocument... + d pr extproc('xmlSAX2StartDocument') + d ctx * value void * + + d xmlSAX2EndDocument... + d pr extproc('xmlSAX2EndDocument') + d ctx * value void * + + /undefine XML_TESTVAL + /if defined(LIBXML_SAX1_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_HTML_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_WRITER_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_DOCB_ENABLED) + /endif + /if defined(XML_TESTVAL) + d xmlSAX2StartElement... + d pr extproc('xmlSAX2StartElement') + d ctx * value void * + d fullname * value options(*string) const xmlChar * + d atts * const xmlChar *(*) + + d xmlSAX2EndElement... + d pr extproc('xmlSAX2EndElement') + d ctx * value void * + d name * value options(*string) const xmlChar * + + /undefine XML_TESTVAL + /endif + + d xmlSAX2StartElementNs... + d pr extproc('xmlSAX2StartElementNs') + d ctx * value void * + d localname * value options(*string) const xmlChar * + d prefix * value options(*string) const xmlChar * + d URI * value options(*string) const xmlChar * + d nb_namespaces value like(xmlCint) + d namespaces * value const xmlChar *(*) + d nb_attributes value like(xmlCint) + d nb_defaulted value like(xmlCint) + d attributes * const xmlChar *(*) + + d xmlSAX2EndElementNs... + d pr extproc('xmlSAX2EndElementNs') + d ctx * value void * + d localname * value options(*string) const xmlChar * + d prefix * value options(*string) const xmlChar * + d URI * value options(*string) const xmlChar * + + d xmlSAX2Reference... + d pr extproc('xmlSAX2Reference') + d ctx * value void * + d name * value options(*string) const xmlChar * + + d xmlSAX2Characters... + d pr extproc('xmlSAX2Characters') + d ctx * value void * + d ch * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlSAX2IgnorableWhitespace... + d pr extproc('xmlSAX2IgnorableWhitespace') + d ctx * value void * + d ch * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlSAX2ProcessingInstruction... + d pr extproc( + d 'xmlSAX2ProcessingInstruction') + d ctx * value void * + d target * value options(*string) const xmlChar * + d data * value options(*string) const xmlChar * + + d xmlSAX2Comment... + d pr extproc('xmlSAX2Comment') + d ctx * value void * + d value * value options(*string) const xmlChar * + + d xmlSAX2CDataBlock... + d pr extproc('xmlSAX2CDataBlock') + d ctx * value void * + d value * value options(*string) const xmlChar * + d len value like(xmlCint) + + /if defined(LIBXML_SAX1_ENABLED) + d xmlSAXDefaultVersion... + d pr extproc('xmlSAXDefaultVersion') + d like(xmlCint) + d version value like(xmlCint) + /endif LIBXML_SAX1_ENABLED + + d xmlSAXVersion pr extproc('xmlSAXVersion') + d like(xmlCint) + d hdlr likeds(xmlSAXHandler) + d version value like(xmlCint) + + d xmlSAX2InitDefaultSAXHandler... + d pr extproc( + d 'xmlSAX2InitDefaultSAXHandler') + d hdlr likeds(xmlSAXHandler) + d warning value like(xmlCint) + + /if defined(LIBXML_HTML_ENABLED) + d xmlSAX2InitHtmlDefaultSAXHandler... + d pr extproc( + d 'xmlSAX2InitHtmlDefaultSAXHandler') + d hdlr likeds(xmlSAXHandler) + + d htmlDefaultSAXHandlerInit... + d pr extproc('htmlDefaultSAXHandlerInit') + /endif + + /if defined(LIBXML_DOCB_ENABLED) + d xmlSAX2InitDocbDefaultSAXHandler... + d pr extproc( + d 'xmlSAX2InitDocbDefaultSAXHandler') + d hdlr likeds(xmlSAXHandler) + + d docbDefaultSAXHandlerInit... + d pr extproc('docbDefaultSAXHandlerInit') + /endif + + d xmlDefaultSAXHandlerInit... + d pr extproc('xmlDefaultSAXHandlerInit') + + /endif XML_SAX2_H__ diff --git a/libxml2/os400/libxmlrpg/c14n.rpgle b/libxml2/os400/libxmlrpg/c14n.rpgle new file mode 100644 index 0000000..963ed37 --- /dev/null +++ b/libxml2/os400/libxmlrpg/c14n.rpgle @@ -0,0 +1,125 @@ + * Summary: Provide Canonical XML and Exclusive XML Canonicalization + * Description: the c14n modules provides a + * + * "Canonical XML" implementation + * http://www.w3.org/TR/xml-c14n + * + * and an + * + * "Exclusive XML Canonicalization" implementation + * http://www.w3.org/TR/xml-exc-c14n + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_C14N_H__) + /define XML_C14N_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_C14N_ENABLED) + /if defined(LIBXML_OUTPUT_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + /include "libxmlrpg/xpath" + + * XML Canonicazation + * http://www.w3.org/TR/xml-c14n + * + * Exclusive XML Canonicazation + * http://www.w3.org/TR/xml-exc-c14n + * + * Canonical form of an XML document could be created if and only if + * a) default attributes (if any) are added to all nodes + * b) all character and parsed entity references are resolved + * In order to achive this in libxml2 the document MUST be loaded with + * following global setings: + * + * xmlLoadExtDtdDefaultValue = XML_DETECT_IDS ã XML_COMPLETE_ATTRS; + * xmlSubstituteEntitiesDefault(1); + * + * or corresponding parser context setting: + * xmlParserCtxtPtr ctxt; + * + * ... + * ctxt->loadsubset = XML_DETECT_IDS ã XML_COMPLETE_ATTRS; + * ctxt->replaceEntities = 1; + * ... + + * xmlC14NMode: + * + * Predefined values for C14N modes + + d xmlBufferAllocationScheme... + d xmlC14NMode s based(######typedef######) + d like(xmlCenum) + d XML_C14N_1_0 c 0 Original C14N 1.0 + d XML_C14N_EXCLUSIVE_1_0... Exclusive C14N 1.0 + d c 1 + d XML_C14N_1_1 c 2 C14N 1.1 spec + + d xmlC14NDocSaveTo... + d pr extproc('xmlC14NDocSaveTo') + d like(xmlCint) + d doc value like(xmlDocPtr) + d nodes value like(xmlNodeSetPtr) + d mode value like(xmlCint) + d inclusive_ns_prefixes... + d * options(*omit) xmlChar *(*) + d with_comments value like(xmlCint) + d buf value like(xmlOutputBufferPtr) + + d xmlC14NDocDumpMemory... + d pr extproc('xmlC14NDocDumpMemory') + d like(xmlCint) + d doc value like(xmlDocPtr) + d nodes value like(xmlNodeSetPtr) + d mode value like(xmlCint) + d inclusive_ns_prefixes... + d * options(*omit) xmlChar *(*) + d with_comments value like(xmlCint) + d doc_txt_ptr * xmlChar *(*) + + d xmlC14NDocSave pr extproc('xmlC14NDocSave') + d like(xmlCint) + d doc value like(xmlDocPtr) + d nodes value like(xmlNodeSetPtr) + d mode value like(xmlCint) + d inclusive_ns_prefixes... + d * options(*omit) xmlChar *(*) + d with_comments value like(xmlCint) + d filename * value options(*string) const char * + d compression value like(xmlCint) + + * This is the core C14N function + + * xmlC14NIsVisibleCallback: + * @user_data: user data + * @node: the curent node + * @parent: the parent node + * + * Signature for a C14N callback on visible nodes + * + * Returns 1 if the node should be included + + d xmlC14NIsVisibleCallback... + d s * based(######typedef######) + d procptr + + d xmlC14NExecute pr extproc('xmlC14NExecute') + d like(xmlCint) + d doc value like(xmlDocPtr) + d is_visible_callback... + d value like(xmlC14NIsVisibleCallback) + d user_data * value void * + d mode value like(xmlCint) + d inclusive_ns_prefixes... + d * options(*omit) xmlChar *(*) + d with_comments value like(xmlCint) + d buf value like(xmlOutputBufferPtr) + + /endif LIBXML_OUTPUT_ENABLD + /endif LIBXML_C14N_ENABLED + /endif XML_C14N_H__ diff --git a/libxml2/os400/libxmlrpg/catalog.rpgle b/libxml2/os400/libxmlrpg/catalog.rpgle new file mode 100644 index 0000000..1dab819 --- /dev/null +++ b/libxml2/os400/libxmlrpg/catalog.rpgle @@ -0,0 +1,248 @@ + * Summary: interfaces to the Catalog handling system + * Description: the catalog module implements the support for + * XML Catalogs and SGML catalogs + * + * SGML Open Technical Resolution TR9401:1997. + * http://www.jclark.com/sp/catalog.htm + * + * XML Catalogs Working Draft 06 August 2001 + * http://www.oasis-open.org/committees/entity/spec-2001-08-06.html + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_CATALOG_H__) + /define XML_CATALOG_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_CATALOG_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/xmlstring" + /include "libxmlrpg/tree" + + * XML_CATALOGS_NAMESPACE: + * + * The namespace for the XML Catalogs elements. + + d XML_CATALOGS_NAMESPACE... + d c 'urn:oasis:names:+ + d tc:entity:xmlns:xml:catalog' + + * XML_CATALOG_PI: + * + * The specific XML Catalog Processing Instuction name. + + d XML_CATALOG_PI c 'oasis-xml-catalog' + + * The API is voluntarily limited to general cataloging. + + d xmlCatalogPrefer... + d s based(######typedef######) + d like(xmlCenum) + d XML_CATA_PREFER_NONE... + d c 0 + d XML_CATA_PREFER_PUBLIC... + d c 1 + d XML_CATA_PREFER_SYSTEM... + d c 2 + + d xmlCatalogAllow... + d s based(######typedef######) + d like(xmlCenum) + d XML_CATA_ALLOW_NONE... + d c 0 + d XML_CATA_ALLOW_GLOBAL... + d c 1 + d XML_CATA_ALLOW_DOCUMENT... + d c 2 + d XML_CATA_ALLOW_ALL... + d c 3 + + d xmlCatalogPtr s * based(######typedef######) + + * Operations on a given catalog. + + d xmlNewCatalog pr extproc('xmlNewCatalog') + d like(xmlCatalogPtr) + d sgml value like(xmlCint) + + d xmlLoadACatalog... + d pr extproc('xmlLoadACatalog') + d like(xmlCatalogPtr) + d filename * value options(*string) const char * + + d xmlLoadSGMLSuperCatalog... + d pr extproc('xmlLoadSGMLSuperCatalog') + d like(xmlCatalogPtr) + d filename * value options(*string) const char * + + d xmlConvertSGMLCatalog... + d pr extproc('xmlConvertSGMLCatalog') + d like(xmlCint) + d catal value like(xmlCatalogPtr) + + d xmlACatalogAdd pr extproc('xmlACatalogAdd') + d like(xmlCint) + d catal value like(xmlCatalogPtr) + d type * value options(*string) const xmlChar * + d orig * value options(*string) const xmlChar * + d replace * value options(*string) const xmlChar * + + d xmlACatalogRemove... + d pr extproc('xmlACatalogRemove') + d like(xmlCint) + d catal value like(xmlCatalogPtr) + d value * value options(*string) const xmlChar * + + d xmlACatalogResolve... + d pr * extproc('xmlACatalogResolve') xmlChar * + d catal value like(xmlCatalogPtr) + d pubID * value options(*string) const xmlChar * + d sysID * value options(*string) const xmlChar * + + d xmlACatalogResolveSystem... + d pr * extproc('xmlACatalogResolveSystem') xmlChar * + d catal value like(xmlCatalogPtr) + d sysID * value options(*string) const xmlChar * + + d xmlACatalogResolvePublic... + d pr * extproc('xmlACatalogResolvePublic') xmlChar * + d catal value like(xmlCatalogPtr) + d pubID * value options(*string) const xmlChar * + + d xmlACatalogResolveURI... + d pr * extproc('xmlACatalogResolveURI') xmlChar * + d catal value like(xmlCatalogPtr) + d URI * value options(*string) const xmlChar * + + /if defined(LIBXML_OUTPUT_ENABLED) + d xmlACatalogDump... + d pr extproc('xmlACatalogDump') + d catal value like(xmlCatalogPtr) + d out * value FILE * + /endif LIBXML_OUTPUT_ENABLD + + d xmlFreeCatalog pr extproc('xmlFreeCatalog') + d catal value like(xmlCatalogPtr) + + d xmlCatalogIsEmpty... + d pr extproc('xmlCatalogIsEmpty') + d like(xmlCint) + d catal value like(xmlCatalogPtr) + + * Global operations. + + d xmlInitializeCatalog... + d pr extproc('xmlInitializeCatalog') + + d xmlLoadCatalog pr extproc('xmlLoadCatalog') + d like(xmlCint) + d filename * value options(*string) const char * + + d xmlLoadCatalogs... + d pr extproc('xmlLoadCatalogs') + d paths * value options(*string) const char * + + d xmlCatalogCleanup... + d pr extproc('xmlCatalogCleanup') + + /if defined(LIBXML_OUTPUT_ENABLED) + d xmlCatalogDump pr extproc('xmlCatalogDump') + d out * value FILE * + /endif LIBXML_OUTPUT_ENABLD + + d xmlCatalogResolve... + d pr * extproc('xmlCatalogResolve') xmlChar * + d pubID * value options(*string) const xmlChar * + d sysID * value options(*string) const xmlChar * + + d xmlCatalogResolveSystem... + d pr * extproc('xmlCatalogResolveSystem') xmlChar * + d sysID * value options(*string) const xmlChar * + + d xmlCatalogResolvePublic... + d pr * extproc('xmlCatalogResolvePublic') xmlChar * + d pubID * value options(*string) const xmlChar * + + d xmlCatalogResolveURI... + d pr * extproc('xmlCatalogResolveURI') xmlChar * + d URI * value options(*string) const xmlChar * + + d xmlCatalogAdd pr extproc('xmlCatalogAdd') + d like(xmlCint) + d type * value options(*string) const xmlChar * + d orig * value options(*string) const xmlChar * + d replace * value options(*string) const xmlChar * + + d xmlCatalogRemove... + d pr extproc('xmlCatalogRemove') + d like(xmlCint) + d value * value options(*string) const xmlChar * + + d xmlParseCatalogFile... + d pr extproc('xmlParseCatalogFile') + d like(xmlDocPtr) + d filename * value options(*string) const char * + + d xmlCatalogConvert... + d pr extproc('xmlCatalogConvert') + d like(xmlCint) + + * Strictly minimal interfaces for per-document catalogs used + * by the parser. + + d xmlCatalogFreeLocal... + d pr extproc('xmlCatalogFreeLocal') + d catalogs * value void * + + d xmlCatalogAddLocal... + d pr * extproc('xmlCatalogAddLocal') void * + d catalogs * value void * + d URL * value options(*string) const xmlChar * + + d xmlCatalogLocalResolve... + d pr * extproc('xmlCatalogLocalResolve') xmlChar * + d catalogs * value void * + d pubID * value options(*string) const xmlChar * + d sysID * value options(*string) const xmlChar * + + d xmlCatalogLocalResolveURI... + d pr * extproc('xmlCatalogLocalResolveURI') xmlChar * + d catalogs * value void * + d URI * value options(*string) const xmlChar * + + * Preference settings. + + d xmlCatalogSetDebug... + d pr extproc('xmlCatalogSetDebug') + d like(xmlCint) + d level value like(xmlCint) + + d xmlCatalogSetDefaultPrefer... + d pr extproc('xmlCatalogSetDefaultPrefer') + d like(xmlCatalogPrefer) + d prefer value like(xmlCatalogPrefer) + + d xmlCatalogSetDefaults... + d pr extproc('xmlCatalogSetDefaults') + d allow value like(xmlCatalogAllow) + + d xmlCatalogGetDefaults... + d pr extproc('xmlCatalogGetDefaults') + d like(xmlCatalogAllow) + + * DEPRECATED interfaces + + d xmlCatalogGetSystem... + d pr * extproc('xmlCatalogGetSystem') const xmlChar * + d sysID * value options(*string) const xmlChar * + + d xmlCatalogGetPublic... + d pr * extproc('xmlCatalogGetPublic') const xmlChar * + d pubID * value options(*string) const xmlChar * + + /endif LIBXML_CATALOG_ENBLD + /endif XML_CATALOG_H__ diff --git a/libxml2/os400/libxmlrpg/chvalid.rpgle b/libxml2/os400/libxmlrpg/chvalid.rpgle new file mode 100644 index 0000000..c601442 --- /dev/null +++ b/libxml2/os400/libxmlrpg/chvalid.rpgle @@ -0,0 +1,107 @@ + * Summary: Unicode character range checking + * Description: this module exports interfaces for the character + * range validation APIs + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_CHVALID_H__) + /define XML_CHVALID_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/xmlstring" + + * Define our typedefs and structures + + d xmlChSRangePtr s * based(######typedef######) + + d xmlChSRange ds based(xmlChSRangePtr) + d align qualified + d low like(xmlCushort) + d high like(xmlCushort) + + d xmlChLRangePtr s * based(######typedef######) + + d xmlChLRange ds based(xmlChLRangePtr) + d align qualified + d low like(xmlCuint) + d high like(xmlCuint) + + d xmlChRangeGroupPtr... + d s * based(######typedef######) + + d xmlChRangeGroup... + d ds based(xmlChRangeGroupPtr) + d align qualified + d nbShortRange like(xmlCint) + d nbLongRange like(xmlCint) + d shortRange like(xmlChSRangePtr) + d longRange like(xmlChLRangePtr) + + * Range checking routine + + d xmlCharInRange pr extproc('xmlCharInRange') + d like(xmlCint) + d val value like(xmlCuint) + d group like(xmlChRangeGroupPtr) const + + d xmlIsBaseCharGroup... + d ds import('xmlIsBaseCharGroup') + d likeds(xmlChRangeGroup) const + + d xmlIsCharGroup... + d ds import('xmlIsCharGroup') + d likeds(xmlChRangeGroup) const + + d xmlIsCombiningGroup... + d ds import('xmlIsCombiningGroup') + d likeds(xmlChRangeGroup) const + + d xmlIsDigitGroup... + d ds import('xmlIsDigitGroup') + d likeds(xmlChRangeGroup) const + + d xmlIsExtenderGroup... + d ds import('xmlIsExtenderGroup') + d likeds(xmlChRangeGroup) const + + d xmlIsIdeographicGroup... + d ds import('xmlIsIdeographicGroup') + d likeds(xmlChRangeGroup) const + + d xmlIsBaseChar pr extproc('xmlIsBaseChar') + d like(xmlCint) + d ch value like(xmlCuint) + + d xmlIsBlank pr extproc('xmlIsBlank') + d like(xmlCint) + d ch value like(xmlCuint) + + d xmlIsChar pr extproc('xmlIsChar') + d like(xmlCint) + d ch value like(xmlCuint) + + d xmlIsCombining pr extproc('xmlIsCombining') + d like(xmlCint) + d ch value like(xmlCuint) + + d xmlIsDigit pr extproc('xmlIsDigit') + d like(xmlCint) + d ch value like(xmlCuint) + + d xmlIsExtender pr extproc('xmlIsExtender') + d like(xmlCint) + d ch value like(xmlCuint) + + d xmlIsIdeographic... + d pr extproc('xmlIsIdeographic') + d like(xmlCint) + d ch value like(xmlCuint) + + d xmlIsPubidChar pr extproc('xmlIsPubidChar') + d like(xmlCint) + d ch value like(xmlCuint) + + /endif XML_CHVALID_H__ diff --git a/libxml2/os400/libxmlrpg/debugXML.rpgle b/libxml2/os400/libxmlrpg/debugXML.rpgle new file mode 100644 index 0000000..81826bc --- /dev/null +++ b/libxml2/os400/libxmlrpg/debugXML.rpgle @@ -0,0 +1,254 @@ + * Summary: Tree debugging APIs + * Description: Interfaces to a set of routines used for debugging the tree + * produced by the XML parser. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(DEBUG_XML__) + /define DEBUG_XML__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_DEBUG_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + /include "libxmlrpg/xpath" + + * The standard Dump routines. + + d xmlDebugDumpString... + d pr extproc('xmlDebugDumpString') + d output * value FILE * + d str * value options(*string) const xmlChar * + + d xmlDebugDumpAttr... + d pr extproc('xmlDebugDumpAttr') + d output * value FILE * + d attr value like(xmlAttrPtr) + d depth value like(xmlCint) + + d xmlDebugDumpAttrList... + d pr extproc('xmlDebugDumpAttrList') + d output * value FILE * + d attr value like(xmlAttrPtr) + d depth value like(xmlCint) + + d xmlDebugDumpOneNode... + d pr extproc('xmlDebugDumpOneNode') + d output * value FILE * + d node value like(xmlNodePtr) + d depth value like(xmlCint) + + d xmlDebugDumpNode... + d pr extproc('xmlDebugDumpNode') + d output * value FILE * + d node value like(xmlNodePtr) + d depth value like(xmlCint) + + d xmlDebugDumpNodeList... + d pr extproc('xmlDebugDumpNodeList') + d output * value FILE * + d node value like(xmlNodePtr) + d depth value like(xmlCint) + + d xmlDebugDumpDocumentHead... + d pr extproc('xmlDebugDumpDocumentHead') + d output * value FILE * + d doc value like(xmlDocPtr) + + d xmlDebugDumpDocument... + d pr extproc('xmlDebugDumpDocument') + d output * value FILE * + d doc value like(xmlDocPtr) + + d xmlDebugDumpDTD... + d pr extproc('xmlDebugDumpDTD') + d output * value FILE * + d dtd value like(xmlDtdPtr) + + d xmlDebugDumpEntities... + d pr extproc('xmlDebugDumpEntities') + d output * value FILE * + d doc value like(xmlDocPtr) + + **************************************************************** + * * + * Checking routines * + * * + **************************************************************** + + d xmlDebugCheckDocument... + d pr extproc('xmlDebugCheckDocument') + d like(xmlCint) + d output * value FILE * + d doc value like(xmlDocPtr) + + **************************************************************** + * * + * XML shell helpers * + * * + **************************************************************** + + d xmlLsOneNode pr extproc('xmlLsOneNode') + d output * value FILE * + d node value like(xmlNodePtr) + + d xmlLsCountNode pr extproc('xmlLsCountNode') + d like(xmlCint) + d node value like(xmlNodePtr) + + d xmlBoolToText pr * extproc('xmlBoolToText') const char * + d boolval value like(xmlCint) + + **************************************************************** + * * + * The XML shell related structures and functions * + * * + **************************************************************** + + /if defined(LIBXML_XPATH_ENABLED) + + * xmlShellReadlineFunc: + * @prompt: a string prompt + * + * This is a generic signature for the XML shell input function. + * + * Returns a string which will be freed by the Shell. + + d xmlShellReadlineFunc... + d s * based(######typedef######) + d procptr + + * xmlShellCtxt: + * + * A debugging shell context. + * TODO: add the defined function tables. + + d xmlShellCtxtPtr... + d s * based(######typedef######) + + d xmlSchellCtxt ds based(xmlShellCtxtPtr) + d align qualified + d filename * char * + d doc like(xmlDocPtr) + d node like(xmlNodePtr) + d pctxt like(xmlXPathContextPtr) + d loaded like(xmlCint) + d output * FILE * + d input like(xmlShellReadlineFunc) + + * xmlShellCmd: + * @ctxt: a shell context + * @arg: a string argument + * @node: a first node + * @node2: a second node + * + * This is a generic signature for the XML shell functions. + * + * Returns an int, negative returns indicating errors. + + d xmlShellCmd s * based(######typedef######) + d procptr + + d xmlShellPrintXPathError... + d pr extproc('xmlShellPrintXPathError') + d errorType value like(xmlCint) + d arg * value options(*string) const char * + + d xmlShellPrintXPathResult... + d pr extproc('xmlShellPrintXPathResult') + d list value like(xmlXPathObjectPtr) + + d xmlShellList pr extproc('xmlShellList') + d like(xmlCint) + d ctxt value like(xmlShellCtxtPtr) + d arg * value options(*string) char * + d node value like(xmlNodePtr) + d node2 value like(xmlNodePtr) + + d xmlShellBase pr extproc('xmlShellBase') + d like(xmlCint) + d ctxt value like(xmlShellCtxtPtr) + d arg * value options(*string) char * + d node value like(xmlNodePtr) + d node2 value like(xmlNodePtr) + + d xmlShellDir pr extproc('xmlShellDir') + d like(xmlCint) + d ctxt value like(xmlShellCtxtPtr) + d arg * value options(*string) char * + d node value like(xmlNodePtr) + d node2 value like(xmlNodePtr) + + d xmlShellLoad pr extproc('xmlShellLoad') + d like(xmlCint) + d ctxt value like(xmlShellCtxtPtr) + d filename * value options(*string) char * + d node value like(xmlNodePtr) + d node2 value like(xmlNodePtr) + + /if defined(LIBXML_OUTPUT_ENABLED) + d xmlShellPrintNode... + d pr extproc('xmlShellPrintNode') + d node value like(xmlNodePtr) + + d xmlShellCat pr extproc('xmlShellCat') + d like(xmlCint) + d ctxt value like(xmlShellCtxtPtr) + d arg * value options(*string) char * + d node value like(xmlNodePtr) + d node2 value like(xmlNodePtr) + + d xmlShellWrite pr extproc('xmlShellWrite') + d like(xmlCint) + d ctxt value like(xmlShellCtxtPtr) + d filename * value options(*string) char * + d node value like(xmlNodePtr) + d node2 value like(xmlNodePtr) + + d xmlShellSave pr extproc('xmlShellSave') + d like(xmlCint) + d ctxt value like(xmlShellCtxtPtr) + d filename * value options(*string) char * + d node value like(xmlNodePtr) + d node2 value like(xmlNodePtr) + /endif LIBXML_OUTPUT_ENABLD + + /if defined(LIBXML_VALID_ENABLED) + d xmlShellValidate... + d pr extproc('xmlShellValidate') + d like(xmlCint) + d ctxt value like(xmlShellCtxtPtr) + d dtd * value options(*string) char * + d node value like(xmlNodePtr) + d node2 value like(xmlNodePtr) + /endif LIBXML_VALID_ENABLED + + d xmlShellDu pr extproc('xmlShellDu') + d like(xmlCint) + d ctxt value like(xmlShellCtxtPtr) + d arg * value options(*string) char * + d tree value like(xmlNodePtr) + d node2 value like(xmlNodePtr) + + d xmlShellPwd pr extproc('xmlShellPwd') + d like(xmlCint) + d ctxt value like(xmlShellCtxtPtr) + d buffer * value options(*string) char * + d node value like(xmlNodePtr) + d node2 value like(xmlNodePtr) + + * The Shell interface. + + d xmlShell pr extproc('xmlShell') + d doc value like(xmlDocPtr) + d filename * value options(*string) char * + d input value like(xmlShellReadlineFunc) + d output * value FILE * + + /endif LIBXML_XPATH_ENABLED + /endif LIBXML_DEBUG_ENABLED + /endif DEBUG_XML__ diff --git a/libxml2/os400/libxmlrpg/dict.rpgle b/libxml2/os400/libxmlrpg/dict.rpgle new file mode 100644 index 0000000..c061e4c --- /dev/null +++ b/libxml2/os400/libxmlrpg/dict.rpgle @@ -0,0 +1,85 @@ + * Summary: string dictionary + * Description: dictionary of reusable strings, just used to avoid + * allocation and freeing operations. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_DICT_H__) + /define XML_DICT_H__ + + * The dictionary. + + d xmlDictPtr s * based(######typedef######) + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + + * Initializer + + d xmlInitializeDict... + d pr extproc('xmlInitializeDict') + d like(xmlCint) + + * Constructor and destructor. + + d xmlDictCreate pr extproc('xmlDictCreate') + d like(xmlDictPtr) + + d xmlDictSetLimit... + d pr extproc('xmlDictSetLimit') + d like(xmlCsize_t) + d dict value like(xmlDictPtr) + d limit value like(xmlCsize_t) + + d xmlDictGetUsage... + d pr extproc('xmlDictGetUsage') + d like(xmlCsize_t) + d dict value like(xmlDictPtr) + + d xmlDictCreateSub... + d pr extproc('xmlDictCreateSub') + d like(xmlDictPtr) + d sub value like(xmlDictPtr) + + d xmlDictReference... + d pr extproc('xmlDictGetReference') + d like(xmlCint) + d dict value like(xmlDictPtr) + + d xmlDictFree pr extproc('xmlDictFree') + d dict value like(xmlDictPtr) + + * Lookup of entry in the dictionary. + + d xmlDictLookup pr * extproc('xmlDictLookup') const xmlChar * + d dict value like(xmlDictPtr) + d name * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlDictExists pr * extproc('xmlDictExists') const xmlChar * + d dict value like(xmlDictPtr) + d name * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlDictQLookup pr * extproc('xmlDictQLookup') const xmlChar * + d dict value like(xmlDictPtr) + d name * value options(*string) const xmlChar * + d name * value options(*string) const xmlChar * + + d xmlDictOwns pr extproc('xmlDictOwns') + d like(xmlCint) + d dict value like(xmlDictPtr) + d str * value options(*string) const xmlChar * + + d xmlDictSize pr extproc('xmlDictSize') + d like(xmlCint) + d dict value like(xmlDictPtr) + + * Cleanup function + + d xmlDictCleanup pr extproc('xmlDictCleanup') + + /endif ! XML_DICT_H__ diff --git a/libxml2/os400/libxmlrpg/encoding.rpgle b/libxml2/os400/libxmlrpg/encoding.rpgle new file mode 100644 index 0000000..8153f3c --- /dev/null +++ b/libxml2/os400/libxmlrpg/encoding.rpgle @@ -0,0 +1,284 @@ + * Summary: interface for the encoding conversion functions + * Description: interface for the encoding conversion functions needed for + * XML basic encoding and iconv() support. + * + * Related specs are + * rfc2044 (UTF-8 and UTF-16) F. Yergeau Alis Technologies + * [ISO-10646] UTF-8 and UTF-16 in Annexes + * [ISO-8859-1] ISO Latin-1 characters codes. + * [UNICODE] The Unicode Consortium, "The Unicode Standard -- + * Worldwide Character Encoding -- Version 1.0", Addison- + * Wesley, Volume 1, 1991, Volume 2, 1992. UTF-8 is + * described in Unicode Technical Report #4. + * [US-ASCII] Coded Character Set--7-bit American Standard Code for + * Information Interchange, ANSI X3.4-1986. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_CHAR_ENCODING_H__) + /define XML_CHAR_ENCODING_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + + * xmlCharEncoding: + * + * Predefined values for some standard encodings. + * Libxml does not do beforehand translation on UTF8 and ISOLatinX. + * It also supports ASCII, ISO-8859-1, and UTF16 (LE and BE) by default. + * + * Anything else would have to be translated to UTF8 before being + * given to the parser itself. The BOM for UTF16 and the encoding + * declaration are looked at and a converter is looked for at that + * point. If not found the parser stops here as asked by the XML REC. A + * converter can be registered by the user + * xmlRegisterCharEncodingHandler but the current form doesn't allow + * stateful transcoding (a serious problem agreed !). If iconv has been + * found it will be used automatically and allow stateful transcoding, + * the simplest is then to be sure to enable iconv and to provide iconv + * libs for the encoding support needed. + * + * Note that the generic "UTF-16" is not a predefined value. Instead, only + * the specific UTF-16LE and UTF-16BE are present. + + d xmlCharEncoding... + d s based(######typedef######) + d like(xmlCenum) + d XML_CHAR_ENCODING_ERROR... No encoding detected + d c -1 + d XML_CHAR_ENCODING_NONE... No encoding detected + d c 0 + d XML_CHAR_ENCODING_UTF8... UTF-8 + d c 1 + d XML_CHAR_ENCODING_UTF16LE... UTF-16 little endian + d c 2 + d XML_CHAR_ENCODING_UTF16BE... UTF-16 big endian + d c 3 + d XML_CHAR_ENCODING_UCS4LE... UCS-4 little endian + d c 4 + d XML_CHAR_ENCODING_UCS4BE... UCS-4 big endian + d c 5 + d XML_CHAR_ENCODING_EBCDIC... EBCDIC uh! + d c 6 + d XML_CHAR_ENCODING_UCS4_2143... UCS-4 unusual order + d c 7 + d XML_CHAR_ENCODING_UCS4_3412... UCS-4 unusual order + d c 8 + d XML_CHAR_ENCODING_UCS2... UCS-2 + d c 9 + d XML_CHAR_ENCODING_8859_1... ISO-8859-1 ISOLatin1 + d c 10 + d XML_CHAR_ENCODING_8859_2... ISO-8859-2 ISOLatin2 + d c 11 + d XML_CHAR_ENCODING_8859_3... ISO-8859-3 + d c 12 + d XML_CHAR_ENCODING_8859_4... ISO-8859-4 + d c 13 + d XML_CHAR_ENCODING_8859_5... ISO-8859-5 + d c 14 + d XML_CHAR_ENCODING_8859_6... ISO-8859-6 + d c 15 + d XML_CHAR_ENCODING_8859_7... ISO-8859-7 + d c 16 + d XML_CHAR_ENCODING_8859_8... ISO-8859-8 + d c 17 + d XML_CHAR_ENCODING_8859_9... ISO-8859-9 + d c 18 + d XML_CHAR_ENCODING_2022_JP... ISO-2022-JP + d c 19 + d XML_CHAR_ENCODING_SHIFT_JIS... Shift_JIS + d c 20 + d XML_CHAR_ENCODING_EUC_JP... EUC-JP + d c 21 + d XML_CHAR_ENCODING_ASCII... Pure ASCII + d c 22 + + * xmlCharEncodingInputFunc: + * @out: a pointer to an array of bytes to store the UTF-8 result + * @outlen: the length of @out + * @in: a pointer to an array of chars in the original encoding + * @inlen: the length of @in + * + * Take a block of chars in the original encoding and try to convert + * it to an UTF-8 block of chars out. + * + * Returns the number of bytes written, -1 if lack of space, or -2 + * if the transcoding failed. + * The value of @inlen after return is the number of octets consumed + * if the return value is positive, else unpredictiable. + * The value of @outlen after return is the number of octets consumed. + + d xmlCharEncodingInputFunc... + d s * based(######typedef######) + d procptr + + * xmlCharEncodingOutputFunc: + * @out: a pointer to an array of bytes to store the result + * @outlen: the length of @out + * @in: a pointer to an array of UTF-8 chars + * @inlen: the length of @in + * + * Take a block of UTF-8 chars in and try to convert it to another + * encoding. + * Note: a first call designed to produce heading info is called with + * in = NULL. If stateful this should also initialize the encoder state. + * + * Returns the number of bytes written, -1 if lack of space, or -2 + * if the transcoding failed. + * The value of @inlen after return is the number of octets consumed + * if the return value is positive, else unpredictiable. + * The value of @outlen after return is the number of octets produced. + + d xmlCharEncodingOutputFunc... + d s * based(######typedef######) + d procptr + + * Block defining the handlers for non UTF-8 encodings. + * If iconv is supported, there are two extra fields. + + /if defined(LIBXML_ICU_ENABLED) + d uconv_t ds based(######typedef######) + d align qualified + d uconv * UConverter * + d utf8 * UConverter * + /endif + + d xmlCharEncodingHandlerPtr... + d s * based(######typedef######) + + d xmlCharEncodingHandler... + d ds based(xmlCharEncodingHandlerPtr) + d align qualified + d name * char * + d input like(xmlCharEncodingInputFunc) + d output like(xmlCharEncodingOutputFunc) + * + /if defined(LIBXML_ICONV_ENABLED) + d iconv_in * iconv_t + d iconv_out * iconv_t + /endif LIBXML_ICONV_ENABLED + * + /if defined(LIBXML_ICU_ENABLED) + d uconv_in * uconv_t * + d uconv_out * uconv_t * + /endif LIBXML_ICU_ENABLED + + /include "libxmlrpg/tree" + + * Interfaces for encoding handlers. + + d xmlInitCharEncodingHandlers... + d pr extproc( + d 'xmlInitCharEncodingHandlers') + + d xmlCleanupCharEncodingHandlers... + d pr extproc( + d 'xmlCleanupCharEncodingHandlers') + + d xmlRegisterCharEncodingHandler... + d pr extproc( + d 'xmlRegisterCharEncodingHandler') + d handler value like(xmlCharEncodingHandlerPtr) + + d xmlGetCharEncodingHandler... + d pr extproc('xmlGetCharEncodingHandler') + d like(xmlCharEncodingHandlerPtr) + d enc value like(xmlCharEncoding) + + d xmlFindCharEncodingHandler... + d pr extproc('xmlFindCharEncodingHandler') + d like(xmlCharEncodingHandlerPtr) + d name * value options(*string) const char * + + d xmlNewCharEncodingHandler... + d pr extproc('xmlNewCharEncodingHandler') + d like(xmlCharEncodingHandlerPtr) + d name * value options(*string) const char * + d input value like(xmlCharEncodingInputFunc) + d output value like(xmlCharEncodingOutputFunc) + + * Interfaces for encoding names and aliases. + + d xmlAddEncodingAlias... + d pr extproc('xmlAddEncodingAlias') + d like(xmlCint) + d name * value options(*string) const char * + d alias * value options(*string) const char * + + d xmlDelEncodingAlias... + d pr extproc('xmlDelEncodingAlias') + d like(xmlCint) + d alias * value options(*string) const char * + + d xmlGetEncodingAlias... + d pr * extproc('xmlGetEncodingAlias') const char * + d alias * value options(*string) const char * + + d xmlCleanupEncodingAliases... + d pr extproc('xmlCleanupEncodingAliases') + + d xmlParseCharEncoding... + d pr extproc('xmlParseCharEncoding') + d like(xmlCharEncoding) + d name * value options(*string) const char * + + d xmlGetCharEncodingName... + d pr * extproc('xmlGetCharEncodingName') const char * + d enc value like(xmlCharEncoding) + + * Interfaces directly used by the parsers. + + d xmlDetectCharEncoding... + d pr extproc('xmlDetectCharEncoding') + d like(xmlCharEncoding) + d in * value options(*string) const unsigned char* + d len value like(xmlCint) + + d xmlCharEncOutFunc... + d pr extproc('xmlCharEncOutFunc') + d like(xmlCint) + d handler likeds(xmlCharEncodingHandler) + d out value like(xmlBufferPtr) + d in value like(xmlBufferPtr) + + d xmlCharEncInFunc... + d pr extproc('xmlCharEncInFunc') + d like(xmlCint) + d handler likeds(xmlCharEncodingHandler) + d out value like(xmlBufferPtr) + d in value like(xmlBufferPtr) + + d xmlCharEncFirstLine... + d pr extproc('xmlCharEncFirstLine') + d like(xmlCint) + d handler likeds(xmlCharEncodingHandler) + d out value like(xmlBufferPtr) + d in value like(xmlBufferPtr) + + d xmlCharEncCloseFunc... + d pr extproc('xmlCharEncCloseFunc') + d like(xmlCint) + d handler likeds(xmlCharEncodingHandler) + + * Export a few useful functions + + /if defined(LIBXML_OUTPUT_ENABLED) + d UTF8Toisolat1 pr extproc('UTF8Toisolat1') + d like(xmlCint) + d out 65535 options(*varsize) unsigned char (*) + d outlen like(xmlCint) + d in * value options(*string) const unsigned char* + d inlen like(xmlCint) + + /endif LIBXML_OUTPUT_ENABLD + + d isolat1ToUTF8 pr extproc('isolat1ToUTF8') + d like(xmlCint) + d out 65535 options(*varsize) unsigned char (*) + d outlen like(xmlCint) + d in * value options(*string) const unsigned char* + d inlen like(xmlCint) + + /endif XML_CHAR_ENCODING_H diff --git a/libxml2/os400/libxmlrpg/entities.rpgle b/libxml2/os400/libxmlrpg/entities.rpgle new file mode 100644 index 0000000..eeec1b6 --- /dev/null +++ b/libxml2/os400/libxmlrpg/entities.rpgle @@ -0,0 +1,176 @@ + * Summary: interface for the XML entities handling + * Description: this module provides some of the entity API needed + * for the parser and applications. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_ENTITIES_H__) + /define XML_ENTITIES_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + + * The different valid entity types. + + d xmlEntityType s based(######typedef######) + d like(xmlCenum) + d XML_INTERNAL_GENERAL_ENTITY... + d c 1 + d XML_EXTERNAL_GENERAL_PARSED_ENTITY... + d c 2 + d XML_EXTERNAL_GENERAL_UNPARSED_ENTITY... + d c 3 + d XML_INTERNAL_PARAMETER_ENTITY... + d c 4 + d XML_EXTERNAL_PARAMETER_ENTITY... + d c 5 + d XML_INTERNAL_PREDEFINED_ENTITY... + d c 6 + + * An unit of storage for an entity, contains the string, the value + * and the linkind data needed for the linking in the hash table. + + d xmlEntity ds based(xmlEntityPtr) + d align qualified + d #private * void * + d type like(xmlElementType) XML_ENTITY_DECL + d name * const xmlChar * + d children like(xmlNodePtr) First child link + d last like(xmlNodePtr) Last child link + d parent like(xmlDtdPtr) -> DTD + d next like(xmlNodePtr) next sibling link + d prev like(xmlNodePtr) prev sibling link + d doc like(xmlDocPtr) containing document + d orig * xmlChar * + d content * xmlChar * + d length like(xmlCint) content length + d etype like(xmlEntityType) The entity type + d ExternalID * const xmlChar * + d SystemlID * const xmlChar * + d nexte like(xmlEntityPtr) unused + d URI * const xmlChar * + d owner like(xmlCint) Owns children ? + d checked like(xmlCint) Content checked ? + + * All entities are stored in an hash table. + * There is 2 separate hash tables for global and parameter entities. + + d xmlEntitiesTablePtr... + d s * based(######typedef######) + + * External functions: + + /if defined(LIBXML_LEGACY_ENABLED) + d xmlInitializePredefinedEntities... + d pr extproc( + d 'xmlInitializePredefinedEntities') + /endif LIBXML_LEGACY_ENABLD + + d xmlNewEntity pr extproc('xmlNewEntity') + d like(xmlEntityPtr) + d doc value like(xmlDocPtr) + d name * value options(*string) const xmlChar * + d type value like(xmlCint) + d ExternalID * value options(*string) const xmlChar * + d SystemID * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + d xmlAddDocEntity... + d pr extproc('xmlAddDocEntity') + d like(xmlEntityPtr) + d doc value like(xmlDocPtr) + d name * value options(*string) const xmlChar * + d type value like(xmlCint) + d ExternalID * value options(*string) const xmlChar * + d SystemID * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + d xmlAddDtdEntity... + d pr extproc('xmlAddDtdEntity') + d like(xmlEntityPtr) + d doc value like(xmlDocPtr) + d name * value options(*string) const xmlChar * + d type value like(xmlCint) + d ExternalID * value options(*string) const xmlChar * + d SystemID * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + d xmlGetPredefinedEntity... + d pr extproc('xmlGetPredefinedEntity') + d like(xmlEntityPtr) + d name * value options(*string) const xmlChar * + + d xmlGetDocEntity... + d pr extproc('xmlGetDocEntity') + d like(xmlEntityPtr) + d doc value like(xmlDocPtr) + d name * value options(*string) const xmlChar * + + d xmlGetDtdEntity... + d pr extproc('xmlGetDtdEntity') + d like(xmlEntityPtr) + d doc value like(xmlDocPtr) + d name * value options(*string) const xmlChar * + + d xmlGetParameterEntity... + d pr extproc('xmlGetParameterEntity') + d like(xmlEntityPtr) + d doc value like(xmlDocPtr) + d name * value options(*string) const xmlChar * + + + /if defined(LIBXML_LEGACY_ENABLED) + d xmlEncodeEntities... + d pr * extproc('xmlEncodeEntities') xmlChar * + d doc value like(xmlDocPtr) + d input * value options(*string) const xmlChar * + /endif LIBXML_LEGACY_ENABLD + + d xmlEncodeEntitiesReentrant... + d pr * extproc( xmlChar * + d 'xmlEncodeEntitiesReentrant') + d doc value like(xmlDocPtr) + d input * value options(*string) const xmlChar * +XMLPU + d xmlEncodeSpecialChars... + d pr * extproc('xmlSpecialChars') xmlChar * + d doc value like(xmlDocPtr) + d input * value options(*string) const xmlChar * +XMLPU + d xmlCreateEntitiesTable... + d pr extproc('xmlCreateEntitiesTable') + d like(xmlEntitiesTablePtr) + + /if defined(LIBXML_TREE_ENABLED) + d xmlCopyEntitiesTable... + d pr extproc('xmlCopyEntitiesTable') + d like(xmlEntitiesTablePtr) + d table value like(xmlEntitiesTablePtr) + /endif LIBXML_TREE_ENABLED + + d xmlFreeEntitiesTable... + d pr extproc('xmlFreeEntitiesTable') + d table value like(xmlEntitiesTablePtr) +XMLPU + /if defined(LIBXML_OUTPUT_ENABLED) + d xmlDumpEntitiesTable... + d pr extproc('xmlDumpEntitiesTable') + d buf value like(xmlBufferPtr) + d table value like(xmlEntitiesTablePtr) +XMLPU + d xmlDumpEntityDecl... + d pr extproc('xmlDumpEntityDecl') + d buf value like(xmlBufferPtr) + d ent value like(xmlEntityPtr) + /endif LIBXML_OUTPUT_ENABLD + + /if defined(LIBXML_LEGACY_ENABLED) + d xmlCleanupPredefinedEntities... + d pr extproc( +XMLPUd 'xmlCleanupPredefinedEntities') + /endif LIBXML_LEGACY_ENABLD + + /endif XML_ENTITIES_H__ diff --git a/libxml2/os400/libxmlrpg/globals.rpgle b/libxml2/os400/libxmlrpg/globals.rpgle new file mode 100644 index 0000000..3fe3a9b --- /dev/null +++ b/libxml2/os400/libxmlrpg/globals.rpgle @@ -0,0 +1,581 @@ + * Summary: interface for all global variables of the library + * Description: all the global variables and thread handling for + * those variables is handled by this module. + * + * The bottom of this file is automatically generated by build_glob.py + * based on the description file global.data + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_GLOBALS_H) + /define XML_GLOBALS_H + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/parser" + /include "libxmlrpg/xmlerror" + /include "libxmlrpg/SAX" + /include "libxmlrpg/SAX2" + /include "libxmlrpg/xmlmemory" + + d xmlInitGlobals pr extproc('xmlInitGlobals') + + d xmlCleanupGlobals... + d pr extproc('xmlCleanupGlobals') + + * xmlParserInputBufferCreateFilenameFunc: + * @URI: the URI to read from + * @enc: the requested source encoding + * + * Signature for the function doing the lookup for a suitable input method + * corresponding to an URI. + * + * Returns the new xmlParserInputBufferPtr in case of success or NULL if no + * method was found. + + d xmlParserInputBufferCreateFilenameFunc... + d s * based(######typedef######) + d procptr + + * xmlOutputBufferCreateFilenameFunc: + * @URI: the URI to write to + * @enc: the requested target encoding + * + * Signature for the function doing the lookup for a suitable output method + * corresponding to an URI. + * + * Returns the new xmlOutputBufferPtr in case of success or NULL if no + * method was found. + + d xmlOutputBufferCreateFilenameFunc... + d s * based(######typedef######) + d procptr + + d xmlParserInputBufferCreateFilenameDefault... + d pr extproc('xmlParserInputBufferCreate+ + d FilenameDefault') + d like(xmlParserInputBuffer... + d CreateFilenameFunc) + d func value like(xmlParserInputBuffer... + d CreateFilenameFunc) + + d xmlOutputBufferCreateFilenameDefault... + d pr extproc('xmlOutputBufferCreate+ + d FilenameDefault') + d like(xmlOutputBuffer... + d CreateFilenameFunc) + d func value like(xmlOutputBuffer... + d CreateFilenameFunc) + + * xmlRegisterNodeFunc: + * @node: the current node + * + * Signature for the registration callback of a created node + + d xmlRegisterNodeFunc... + d s * based(######typedef######) + d procptr + + * xmlDeregisterNodeFunc: + * @node: the current node + * + * Signature for the deregistration callback of a discarded node + + d xmlDeregisterNodeFunc... + d s * based(######typedef######) + d procptr + + d xmlGlobalStatePtr... + d s * based(######typedef######) + + d xmlGlobalState ds based(xmlGlobalStatePtr) + d align qualified + d xmlParserVersion... + d * const char * + d xmlDefaultSAXLocator... + d likeds(xmlSAXLocator) + d xmlDefaultSAXHandler... + d likeds(xmlSAXHandlerV1) + d docbDefaultSAXHandler... + d likeds(xmlSAXHandlerV1) + d htmlDefaultSAXHandler... + d likeds(xmlSAXHandlerV1) + d xmlFree like(xmlFreeFunc) + d xmlMalloc like(xmlMallocFunc) + d xmlMemStrdup like(xmlStrdupFunc) + d xmlRealloc like(xmlReallocFunc) + d xmlGenericError... + d like(xmlGenericErrorFunc) + d xmlStructuredError... + d like(xmlStructuredErrorFunc) + d xmlGenericErrorContext... + d * void * + d oldXMLWDcompatibility... + d like(xmlCint) + d xmlBufferAllocScheme... + d like(xmlBufferAllocationScheme) + d xmlDefaultBufferSize... + d like(xmlCint) + d xmlSubstituteEntitiesDefaultValue... + d like(xmlCint) + d xmlDoValidityCheckingDefaultValue... + d like(xmlCint) + d xmlGetWarningsDefaultValue... + d like(xmlCint) + d xmlKeepBlanksDefaultValue... + d like(xmlCint) + d xmlLineNumbersDefaultValue... + d like(xmlCint) + d xmlLoadExtDtdDefaultValue... + d like(xmlCint) + d xmlParserDebugEntities... + d like(xmlCint) + d xmlPedanticParserDefaultValue... + d like(xmlCint) + d xmlSaveNoEmptyTags... + d like(xmlCint) + d xmlIndentTreeOutput... + d like(xmlCint) + d xmlTreeIndentString... + d * const char * + d xmlRegisterNodeDefaultValue... + d like(xmlRegisterNodeFunc) + d xmlDeregisterNodeDefaultValue... + d like(xmlDeregisterNodeFunc) + d xmlMallocAtomic... + d like(xmlMallocFunc) + d xmlLastError likeds(xmlError) + d xmlParserInputBufferCreateFilenameValue... + d like(xmlParserInputBuffer... + d CreateFilenameFunc) + d xmlOutputBufferCreateFilenameValue... + d like(xmlOutputBuffer... + d CreateFilenameFunc) + d xmlStructuredErrorContext... + d * void * + + /include "libxmlrpg/threads" + + d xmlInitializeGlobalState... + d pr extproc('xmlInitializeGlobalState') + d qs value like(xmlGlobalStatePtr) + + d xmlThrDefSetGenericErrorFunc... + d pr extproc( + d 'xmlThrDefSetGenericErrorFunc') + d ctx * value void * + d handler value like(xmlGenericErrorFunc) + + d xmlThrDefSetStructuredErrorFunc... + d pr extproc( + d 'xmlThrDefSetStructuredErrorFunc') + d ctx * value void * + d handler value like(xmlStructuredErrorFunc) + + d xmlRegisterNodeDefault... + d pr extproc('xmlRegisterNodeDefault') + d like(xmlRegisterNodeFunc) + d func value like(xmlRegisterNodeFunc) + + d xmlThrDefRegisterNodeDefault... + d pr extproc( + d 'xmlThrDefRegisterNodeDefault') + d like(xmlRegisterNodeFunc) + d func value like(xmlRegisterNodeFunc) + + d xmlDeregisterNodeDefault... + d pr extproc('xmlDeregisterNodeDefault') + d like(xmlDeregisterNodeFunc) + d func value like(xmlDeregisterNodeFunc) + + d xmlThrDefDeregisterNodeDefault... + d pr extproc( + d 'xmlThrDefDeregisterNodeDefault') + d like(xmlDeregisterNodeFunc) + d func value like(xmlDeregisterNodeFunc) + + d xmlThrDefOutputBufferCreateFilenameDefault... + d pr extproc('xmlThrDefOutputBuffer+ + d CreateFilenameDefault') + d like(xmlOutputBuffer... + d CreateFilenameFunc) + d func value like(xmlOutputBuffer... + d CreateFilenameFunc) + + d xmlThrDefParserInputBufferCreateFilenameDefault... + d pr extproc('xmlThrDefParserInputBuffer+ + d CreateFilenameDefault') + d like(xmlParserInputBuffer... + d CreateFilenameFunc) + d func value like(xmlParserInputBuffer... + d CreateFilenameFunc) + + /if defined(LIBXML_DOCB_ENABLED) + d get_docbDefaultSAXHandler... + d pr extproc( + d '__get_docbDefaultSAXHandler') + d likeds(xmlSAXHandlerV1) + + d set_docbDefaultSAXHandler... + d pr extproc( + d '__set_docbDefaultSAXHandler') + d value value likeds(xmlSAXHandlerV1) + /endif + + /if defined(LIBXML_HTML_ENABLED) + d get_htmlDefaultSAXHandler... + d pr extproc( + d '__get_htmlDefaultSAXHandler') + d likeds(xmlSAXHandlerV1) + + d set_htmlDefaultSAXHandler... + d pr extproc( + d '__set_htmlDefaultSAXHandler') + d value value likeds(xmlSAXHandlerV1) + /endif + + d get_xmlLastError... + d pr extproc('__get_xmlLastError') + d likeds(xmlError) + + d set_xmlLastError... + d pr extproc('__set_xmlLastError') + d value value likeds(xmlError) + + d get_oldXMLWDcompatibility... + d pr extproc( + d '__get_oldXMLWDcompatibility') + d like(xmlCint) + + d set_oldXMLWDcompatibility... + d pr extproc( + d '__set_oldXMLWDcompatibility') + d value value like(xmlCint) + + d get_xmlBufferAllocScheme... + d pr extproc('__get_xmlBufferAllocScheme') + d like(xmlBufferAllocationScheme) + + d set_xmlBufferAllocScheme... + d pr extproc('__set_xmlBufferAllocScheme') + d value value like(xmlBufferAllocationScheme) + + d xmlThrDefBufferAllocScheme... + d pr extproc('xmlThrDefBufferAllocScheme') + d like(xmlBufferAllocationScheme) + d v value like(xmlBufferAllocationScheme) + + d get_xmlDefaultBufferSize... + d pr extproc('__get_xmlDefaultBufferSize') + d like(xmlCint) + + d set_xmlDefaultBufferSize... + d pr extproc('__set_xmlDefaultBufferSize') + d value value like(xmlCint) + + d xmlThrDefDefaultBufferSize... + d pr extproc('xmlThrDefDefaultBufferSize') + d like(xmlCint) + d v value like(xmlCint) + + d get_xmlDefaultSAXHandler... + d pr extproc('__get_xmlDefaultSAXHandler') + d likeds(xmlSAXHandlerV1) + + d set_xmlDefaultSAXHandler... + d pr extproc('__set_xmlDefaultSAXHandler') + d value value likeds(xmlSAXHandlerV1) + + d get_xmlDefaultSAXLocator... + d pr extproc('__get_xmlDefaultSAXLocator') + d likeds(xmlSAXLocator) + + d set_xmlDefaultSAXLocator... + d pr extproc('__set_xmlDefaultSAXLocator') + d value value likeds(xmlSAXLocator) + + d get_xmlDoValidityCheckingDefaultValue... + d pr extproc('__get_xmlDoValidity+ + d CheckingDefaultValue') + d like(xmlCint) + + d set_xmlDoValidityCheckingDefaultValue... + d pr extproc('__set_xmlDoValidity+ + d CheckingDefaultValue') + d value value like(xmlCint) + + d xmlThrDefDoValidityCheckingDefaultValue... + d pr extproc('xmlThrDefDoValidity+ + d CheckingDefaultValue') + d like(xmlCint) + d v value like(xmlCint) + + d get_xmlGenericError... + d pr extproc('__get_xmlGenericError') + d like(xmlGenericErrorFunc) + + d set_xmlGenericError... + d pr extproc('__set_xmlGenericError') + d func value like(xmlGenericErrorFunc) + + d get_xmlStructuredError... + d pr extproc('__get_xmlStructuredError') + d like(xmlStructuredErrorFunc) + + d set_xmlStructuredError... + d pr extproc('__set_xmlStructuredError') + d func value like(xmlStructuredErrorFunc) + + d xmlStructuredError... + d pr extproc('__call_xmlStructuredError') + d userData * value options(*string) void * + d error value like(xmlErrorPtr) + + d get_xmlGenericErrorContext... + d pr extproc( + d '__get_xmlGenericErrorContext') + d * void * + + d set_xmlGenericErrorContext... + d pr extproc( + d '__set_xmlGenericErrorContext') + d value * value options(*string) void * + + d get_xmlStructuredErrorContext... + d pr extproc( + d '__get_xmlStructuredErrorContext') + d * void * + + d set_xmlStructuredErrorContext... + d pr extproc( + d '__set_xmlStructuredErrorContext') + d value * value options(*string) void * + + d get_xmlGetWarningsDefaultValue... + d pr extproc( + d '__get_xmlGetWarningsDefaultValue') + d like(xmlCint) + + d set_xmlGetWarningsDefaultValue... + d pr extproc( + d '__set_xmlGetWarningsDefaultValue') + d value value like(xmlCint) + + d xmlThrDefGetWarningsDefaultValue... + d pr extproc( + d 'xmlThrDefGetWarningsDefaultValue') + d like(xmlCint) + d v value like(xmlCint) + + d get_xmlIndentTreeOutput... + d pr extproc('__get_xmlIndentTreeOutput') + d like(xmlCint) + + d set_xmlIndentTreeOutput... + d pr extproc('__set_xmlIndentTreeOutput') + d value value like(xmlCint) + + d xmlThrDefIndentTreeOutput... + d pr extproc('xmlThrDefIndentTreeOutput') + d like(xmlCint) + d v value like(xmlCint) + + d get_xmlTreeIndentString... + d pr * extproc('__get_xmlTreeIndentString') const char * + + d set_xmlTreeIndentString... + d pr extproc('__set_xmlTreeIndentString') + d value * value options(*string) const char * + + d xmlThrDefTreeIndentString... + d pr * extproc('xmlThrDefTreeIndentString') const char * + d v * value options(*string) const char * + + d get_xmlKeepBlanksDefaultValue... + d pr extproc( + d '__get_xmlKeepBlanksDefaultValue') + d like(xmlCint) + + d set_xmlKeepBlanksDefaultValue... + d pr extproc( + d '__set_xmlKeepBlanksDefaultValue') + d value value like(xmlCint) + + d xmlThrDefKeepBlanksDefaultValue... + d pr extproc( + d 'xmlThrDefKeepBlanksDefaultValue') + d like(xmlCint) + d v value like(xmlCint) + + d get_xmlLineNumbersDefaultValue... + d pr extproc( + d '__get_xmlLineNumbersDefaultValue') + d like(xmlCint) + + d set_xmlLineNumbersDefaultValue... + d pr extproc( + d '__set_xmlLineNumbersDefaultValue') + d value value like(xmlCint) + + d xmlThrDefLineNumbersDefaultValue... + d pr extproc( + d 'xmlThrDefLineNumbersDefaultValue') + d like(xmlCint) + d v value like(xmlCint) + + d get_xmlLoadExtDtdDefaultValue... + d pr extproc( + d '__get_xmlLoadExtDtdDefaultValue') + d like(xmlCint) + + d set_xmlLoadExtDtdDefaultValue... + d pr extproc( + d '__set_xmlLoadExtDtdDefaultValue') + d value value like(xmlCint) + + d xmlThrDefLoadExtDtdDefaultValue... + d pr extproc( + d 'xmlThrDefLoadExtDtdDefaultValue') + d like(xmlCint) + d v value like(xmlCint) + + d get_xmlParserDebugEntities... + d pr extproc( + d '__get_xmlParserDebugEntities') + d like(xmlCint) + + d set_xmlParserDebugEntities... + d pr extproc( + d '__set_xmlParserDebugEntities') + d value value like(xmlCint) + + d xmlThrDefParserDebugEntities... + d pr extproc( + d 'xmlThrDefParserDebugEntities') + d like(xmlCint) + d v value like(xmlCint) + + d get_xmlParserVersion... + d pr * extproc('__get_xmlParserVersion') const char * + + d set_xmlParserVersion... + d pr extproc('__set_xmlParserVersion') + d value * value options(*string) const char * + + d get_xmlPedanticParserDefaultValue... + d pr extproc('__get_xmlPedantic+ + d ParserDefaultValue') + d like(xmlCint) + + d set_xmlPedanticParserDefaultValue... + d pr extproc('__set_xmlPedantic+ + d ParserDefaultValue') + d value value like(xmlCint) + + d xmlThrDefPedanticParserDefaultValue... + d pr extproc('xmlThrDefPedantic+ + d ParserDefaultValue') + d like(xmlCint) + d v value like(xmlCint) + + d get_xmlSaveNoEmptyTags... + d pr extproc('__get_xmlSaveNoEmptyTags') + d like(xmlCint) + + d set_xmlSaveNoEmptyTags... + d pr extproc('__set_xmlSaveNoEmptyTags') + d value value like(xmlCint) + + d xmlThrDefSaveNoEmptyTags... + d pr extproc('xmlThrDefSaveNoEmptyTags') + d like(xmlCint) + d v value like(xmlCint) + + d get_xmlSubstituteEntitiesDefaultValue... + d pr extproc('__get_xmlSubstitute+ + d EntitiesDefaultValue') + d like(xmlCint) + + d set_xmlSubstituteEntitiesDefaultValue... + d pr extproc('__set_xmlSubstitute+ + d EntitiesDefaultValue') + d value value like(xmlCint) + + d xmlThrDefSubstituteEntitiesDefaultValue... + d pr extproc('xmlThrDefSubstitute+ + d EntitiesDefaultValue') + d like(xmlCint) + d v value like(xmlCint) + + d get_xmlRegisterNodeDefaultValue... + d pr extproc('__get_xmlRegisterNode+ + d DefaultValue') + d like(xmlRegisterNodeFunc) + + d set_xmlRegisterNodeDefaultValue... + d pr extproc('__set_xmlRegisterNode+ + d DefaultValue') + d value value like(xmlRegisterNodeFunc) + + d xmlRegisterNodeDefaultValue... + d pr extproc('__call_xmlRegisterNode+ + d DefaultValue') + d node value like(xmlNodePtr) + + d get_xmlDeregisterNodeDefaultValue... + d pr extproc('__get_xmlDeregisterNode+ + d DefaultValue') + d like(xmlDeregisterNodeFunc) + + d set_xmlDeregisterNodeDefaultValue... + d pr extproc('__set_xmlDeregisterNode+ + d DefaultValue') + d value value like(xmlDeregisterNodeFunc) + + d xmlDeregisterNodeDefaultValue... + d pr extproc('__call_xmlDeregisterNode+ + d DefaultValue') + d node value like(xmlNodePtr) + + d get_xmlParserInputBufferCreateFilenameValue... + d pr extproc('__get_xmlParserInputBuffer+ + d CreateFilenameValue') + d like(xmlParserInputBuffer... + d CreateFilenameFunc) + + d set_xmlParserInputBufferCreateFilenameValue... + d pr extproc('__set_xmlParserInputBuffer+ + d CreateFilenameValue') + d value value like(xmlParserInputBuffer... + d CreateFilenameFunc) + + d xmlParserInputBufferCreateFilenameValue... + d pr extproc('__call_xmlParserInputBuffer+ + d CreateFilenameValue') + d like(xmlParserInputBufferPtr) + d URI * value options(*string) const char * + d enc value like(xmlCharEncoding) + + d get_xmlOutputBufferCreateFilenameValue... + d pr extproc('__get_xmlOutputBuffer+ + d CreateFilenameValue') + d like( + d xmlOutputBufferCreateFilenameFunc) + + d set_xmlOutputBufferCreateFilenameValue... + d pr extproc('__set_xmlOutputBuffer+ + d CreateFilenameValue') + d value value like( + d xmlOutputBufferCreateFilenameFunc) + + d xmlOutputBufferCreateFilenameValue... + d pr extproc('__call_xmlOutputBuffer+ + d CreateFilenameValue') + d like(xmlOutputBufferPtr) + d URI * value options(*string) const char * + d encoder value like(xmlCharEncodingHandlerPtr) + d compression value like(xmlCint) + + /endif XML_GLOBALS_H diff --git a/libxml2/os400/libxmlrpg/hash.rpgle b/libxml2/os400/libxmlrpg/hash.rpgle new file mode 100644 index 0000000..b2169df --- /dev/null +++ b/libxml2/os400/libxmlrpg/hash.rpgle @@ -0,0 +1,243 @@ + * Summary: Chained hash tables + * Description: This module implements the hash table support used in + * various places in the library. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_HASH_H__) + /define XML_HASH_H__ + + /include "libxmlrpg/xmlTypesC" + + * The hash table. + + d xmlHashTablePtr... + d s * based(######typedef######) + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/parser" + /include "libxmlrpg/dict" + + * function types: + + * xmlHashDeallocator: + * @payload: the data in the hash + * @name: the name associated + * + * Callback to free data from a hash. + + d xmlHashDeallocator... + d s * based(######typedef######) + d procptr + + * xmlHashCopier: + * @payload: the data in the hash + * @name: the name associated + * + * Callback to copy data from a hash. + * + * Returns a copy of the data or NULL in case of error. + + d xmlHashCopier s * based(######typedef######) + d procptr + + * xmlHashScanner: + * @payload: the data in the hash + * @data: extra scannner data + * @name: the name associated + * + * Callback when scanning data in a hash with the simple scanner. + + d xmlHashScanner s * based(######typedef######) + d procptr + + * xmlHashScannerFull: + * @payload: the data in the hash + * @data: extra scannner data + * @name: the name associated + * @name2: the second name associated + * @name3: the third name associated + * + * Callback when scanning data in a hash with the full scanner. + + d xmlHashScannerFull... + d s * based(######typedef######) + d procptr + + * Constructor and destructor. + + d xmlHashCreate pr extproc('xmlHashCreate') + d like(xmlHashTablePtr) + d size value like(xmlCint) + + d xmlHashCreateDict... + d pr extproc('xmlHashCreateDict') + d like(xmlHashTablePtr) + d size value like(xmlCint) + d dict value like(xmlDictPtr) + + d xmlHashFree pr extproc('xmlHashFree') + d table value like(xmlHashTablePtr) + d f value like(xmlHashDeallocator) + + * Add a new entry to the hash table. + + d xmlHashAddEntry... + d pr extproc('xmlHashAddEntry') + d like(xmlCint) + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d userdata * value options(*string) void * + + d xmlHashUpdateEntry... + d pr extproc('xmlHashUpdateEntry') + d like(xmlCint) + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d userdata * value options(*string) void * + d f value like(xmlHashDeallocator) + + d xmlHashAddEntry2... + d pr extproc('xmlHashAddEntry2') + d like(xmlCint) + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d name2 * value options(*string) const xmlChar * + d userdata * value options(*string) void * + + d xmlHashUpdateEntry2... + d pr extproc('xmlHashUpdateEntry2') + d like(xmlCint) + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d name2 * value options(*string) const xmlChar * + d userdata * value options(*string) void * + d f value like(xmlHashDeallocator) + + d xmlHashAddEntry3... + d pr extproc('xmlHashAddEntry3') + d like(xmlCint) + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d name2 * value options(*string) const xmlChar * + d name3 * value options(*string) const xmlChar * + d userdata * value options(*string) void * + + d xmlHashUpdateEntry3... + d pr extproc('xmlHashUpdateEntry3') + d like(xmlCint) + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d name2 * value options(*string) const xmlChar * + d name3 * value options(*string) const xmlChar * + d userdata * value options(*string) void * + d f value like(xmlHashDeallocator) + + * Remove an entry from the hash table. + + d xmlHashRemoveEntry... + d pr extproc('xmlHashRemoveEntry') + d like(xmlCint) + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d f value like(xmlHashDeallocator) + + d xmlHashRemoveEntry2... + d pr extproc('xmlHashRemoveEntry2') + d like(xmlCint) + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d name2 * value options(*string) const xmlChar * + d f value like(xmlHashDeallocator) + + d xmlHashRemoveEntry3... + d pr extproc('xmlHashRemoveEntry3') + d like(xmlCint) + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d name2 * value options(*string) const xmlChar * + d name3 * value options(*string) const xmlChar * + d f value like(xmlHashDeallocator) + + * Retrieve the userdata. + + d xmlHashLookup pr * extproc('xmlHashLookup') void * + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + + d xmlHashLookup2 pr * extproc('xmlHashLookup2') void * + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d name2 * value options(*string) const xmlChar * + + d xmlHashLookup3 pr * extproc('xmlHashLookup3') void * + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d name2 * value options(*string) const xmlChar * + d name3 * value options(*string) const xmlChar * + + d xmlHashQLookup pr * extproc('xmlHashQLookup') void * + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d prefix * value options(*string) const xmlChar * + + d xmlHashQLookup2... + d pr * extproc('xmlHashQLookup2') void * + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d prefix * value options(*string) const xmlChar * + d name2 * value options(*string) const xmlChar * + d prefix2 * value options(*string) const xmlChar * + + d xmlHashQLookup3... + d pr * extproc('xmlHashQLookup3') void * + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d prefix * value options(*string) const xmlChar * + d name2 * value options(*string) const xmlChar * + d prefix2 * value options(*string) const xmlChar * + d name3 * value options(*string) const xmlChar * + d prefix3 * value options(*string) const xmlChar * + + * Helpers. + + d xmlHashCopy pr extproc('xmlHashCopy') + d like(xmlHashTablePtr) + d table value like(xmlHashTablePtr) + d f value like(xmlHashCopier) + + d xmlHashSize pr extproc('xmlHashSize') + d like(xmlCint) + d table value like(xmlHashTablePtr) + + d xmlHashScan pr extproc('xmlHashScan') + d table value like(xmlHashTablePtr) + d f value like(xmlHashScanner) + d data * value options(*string) void * + + d xmlHashScan3 pr extproc('xmlHashScan3') + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d name2 * value options(*string) const xmlChar * + d name3 * value options(*string) const xmlChar * + d f value like(xmlHashScanner) + d data * value options(*string) void * + + d xmlHashScanFull... + d pr extproc('xmlHashScanFull') + d table value like(xmlHashTablePtr) + d f value like(xmlHashScannerFull) + d data * value options(*string) void * + + d xmlHashScanFull3... + d pr extproc('xmlHashScanFull3') + d table value like(xmlHashTablePtr) + d name * value options(*string) const xmlChar * + d name2 * value options(*string) const xmlChar * + d name3 * value options(*string) const xmlChar * + d f value like(xmlHashScannerFull) + d data * value options(*string) void * + + /endif XML_HASH_H__ diff --git a/libxml2/os400/libxmlrpg/list.rpgle b/libxml2/os400/libxmlrpg/list.rpgle new file mode 100644 index 0000000..ce2fa1c --- /dev/null +++ b/libxml2/os400/libxmlrpg/list.rpgle @@ -0,0 +1,179 @@ + * Summary: lists interfaces + * Description: this module implement the list support used in + * various place in the library. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_LINK_INCLUDE__) + /define XML_LINK_INCLUDE__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + + d xmlLinkPtr s * based(######typedef######) + + d xmlListPtr s * based(######typedef######) + + * xmlListDeallocator: + * @lk: the data to deallocate + * + * Callback function used to free data from a list. + + d xmlListDeallocator... + d s * based(######typedef######) + d procptr + + * xmlListDataCompare: + * @data0: the first data + * @data1: the second data + * + * Callback function used to compare 2 data. + * + * Returns 0 is equality, -1 or 1 otherwise depending on the ordering. + + d xmlListDataCompare... + d s * based(######typedef######) + d procptr + + * xmlListWalker: + * @data: the data found in the list + * @user: extra user provided data to the walker + * + * Callback function used when walking a list with xmlListWalk(). + * + * Returns 0 to stop walking the list, 1 otherwise. + + d xmlListWalker s * based(######typedef######) + d procptr + + * Creation/Deletion + + d xmlListCreate pr extproc('xmlListCreate') + d like(xmlListPtr) + d deallocator value like(xmlListDeallocator) + d compare value like(xmlListDataCompare) + + d xmlListDelete pr extproc('xmlListDelete') + d l value like(xmlListPtr) + + * Basic Operators + + d xmlListSearch pr * extproc('xmlListSearch') void * + d l value like(xmlListPtr) + d data * value void * + + d xmlListReverseSearch... + d pr * extproc('xmlListReverseSearch') void * + d l value like(xmlListPtr) + d data * value void * + + d xmlListInsert pr extproc('xmlListInsert') + d like(xmlCint) + d l value like(xmlListPtr) + d data * value void * + + d xmlListAppend pr extproc('xmlListAppend') + d like(xmlCint) + d l value like(xmlListPtr) + d data * value void * + + d xmlListRemoveFirst... + d pr extproc('xmlListRemoveFirst') + d like(xmlCint) + d l value like(xmlListPtr) + d data * value void * + + d xmlListRemoveLast... + d pr extproc('xmlListRemoveLast') + d like(xmlCint) + d l value like(xmlListPtr) + d data * value void * + + d xmlListRemoveAll... + d pr extproc('xmlListRemoveAll') + d like(xmlCint) + d l value like(xmlListPtr) + d data * value void * + + d xmlListClear pr extproc('xmlListClear') + d l value like(xmlListPtr) + + d xmlListEmpty pr extproc('xmlListEmpty') + d like(xmlCint) + d l value like(xmlListPtr) + + d xmlListFront pr extproc('xmlListFront') + d like(xmlLinkPtr) + d l value like(xmlListPtr) + + d xmlListEnd pr extproc('xmlListEnd') + d like(xmlLinkPtr) + d l value like(xmlListPtr) + + d xmlListSize pr extproc('xmlListSize') + d like(xmlCint) + d l value like(xmlListPtr) + + d xmlListPopFront... + d pr extproc('xmlListPopFront') + d l value like(xmlListPtr) + + d xmlListPopBack... + d pr extproc('xmlListPopBack') + d l value like(xmlListPtr) + + d xmlListPushFront... + d pr extproc('xmlListPushFront') + d like(xmlCint) + d l value like(xmlListPtr) + d data * value void * + + d xmlListPushBack... + d pr extproc('xmlListPushBack') + d like(xmlCint) + d l value like(xmlListPtr) + d data * value void * + + * Advanced Operators + + d xmlListReverse pr extproc('xmlListReverse') + d l value like(xmlListPtr) + + d xmlListSort pr extproc('xmlListSort') + d l value like(xmlListPtr) + + d xmlListWalk pr extproc('xmlListWalk') + d l value like(xmlListPtr) + d walker value like(xmlListWalker) + d user * value const void * + + d xmlListReverseWalk... + d pr extproc('xmlListReverseWalk') + d l value like(xmlListPtr) + d walker value like(xmlListWalker) + d user * value const void * + + d xmlListMerge pr extproc('xmlListMerge') + d l1 value like(xmlListPtr) + d l2 value like(xmlListPtr) + + d xmlListDup pr extproc('xmlListDup') + d like(xmlListPtr) + d old value like(xmlListPtr) + + d xmlListCopy pr extproc('xmlListCopy') + d like(xmlCint) + d cur value like(xmlListPtr) + d old value like(xmlListPtr) const + + * Link operators + + d xmlListGetData pr * extproc('xmlListGetData') void * + d lk value like(xmlLinkPtr) + + * xmlListUnique() + * xmlListSwap + + /endif XML_LINK_INCLUDE__ diff --git a/libxml2/os400/libxmlrpg/nanoftp.rpgle b/libxml2/os400/libxmlrpg/nanoftp.rpgle new file mode 100644 index 0000000..ac4f2aa --- /dev/null +++ b/libxml2/os400/libxmlrpg/nanoftp.rpgle @@ -0,0 +1,172 @@ + * Summary: minimal FTP implementation + * Description: minimal FTP implementation allowing to fetch resources + * like external subset. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(NANO_FTP_H__) + /define NANO_FTP_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_FTP_ENABLED) + + /include "libxmlrpg/xmlTypesC" + + d INVALID_SOCKET c -1 + + * ftpListCallback: + * @userData: user provided data for the callback + * @filename: the file name (including "->" when links are shown) + * @attrib: the attribute string + * @owner: the owner string + * @group: the group string + * @size: the file size + * @links: the link count + * @year: the year + * @month: the month + * @day: the day + * @hour: the hour + * @minute: the minute + * + * A callback for the xmlNanoFTPList command. + * Note that only one of year and day:minute are specified. + + d ftpListCallback... + d s * based(######typedef######) + d procptr + + * ftpDataCallback: + * @userData: the user provided context + * @data: the data received + * @len: its size in bytes + * + * A callback for the xmlNanoFTPGet command. + + d ftpDataCallback... + d s * based(######typedef######) + d procptr + + * Init + + d xmlNanoFTPInit pr extproc('xmlNanoFTPInit') + + d xmlNanoFTPCleanup... + d pr extproc('xmlNanoFTPCleanup') + + * Creating/freeing contexts. + + d xmlNanoFTPNewCtxt... + d pr * extproc('xmlNanoFTPNewCtxt') void * + d URL * value options(*string) const char * + + d xmlNanoFTPFreeCtxt... + d pr extproc('xmlNanoFTPFreeCtxt') + d ctx * value void * + + d xmlNanoFTPConnectTo... + d pr * extproc('xmlNanoFTPConnectTo') void * + d server * value options(*string) const char * + d port value like(xmlCint) + + * Opening/closing session connections. + + d xmlNanoFTPOpen pr * extproc('xmlNanoFTPOpen') void * + d URL * value options(*string) const char * + + d xmlNanoFTPConnect... + d pr extproc('xmlNanoFTPConnect') + d like(xmlCint) + d ctx * value void * + + d xmlNanoFTPClose... + d pr extproc('xmlNanoFTPClose') + d like(xmlCint) + d ctx * value void * + + d xmlNanoFTPQuit pr extproc('xmlNanoFTPQuit') + d like(xmlCint) + d ctx * value void * + + d xmlNanoFTPScanProxy... + d pr extproc('xmlNanoFTPScanProxy') + d URL * value options(*string) const char * + + d xmlNanoFTPProxy... + d pr extproc('xmlNanoFTPProxy') + d host * value options(*string) const char * + d port value like(xmlCint) + d user * value options(*string) const char * + d passwd * value options(*string) const char * + d type value like(xmlCint) + + d xmlNanoFTPUpdateURL... + d pr extproc('xmlNanoFTPUpdateURL') + d like(xmlCint) + d ctx * value void * + d URL * value options(*string) const char * + + * Rather internal commands. + + d xmlNanoFTPGetResponse... + d pr extproc('xmlNanoFTPGetResponse') + d like(xmlCint) + d ctx * value void * + + d xmlNanoFTPCheckResponse... + d pr extproc('xmlNanoFTPCheckResponse') + d like(xmlCint) + d ctx * value void * + + * CD/DIR/GET handlers. + + d xmlNanoFTPCwd pr extproc('xmlNanoFTPCwd') + d like(xmlCint) + d ctx * value void * + d directory * value options(*string) const char * + + d xmlNanoFTPDele pr extproc('xmlNanoFTPDele') + d like(xmlCint) + d ctx * value void * + d file * value options(*string) const char * + + d xmlNanoFTPGetConnection... + d pr extproc('xmlNanoFTPGetConnection') Socket descriptor + d like(xmlCint) + d ctx * value void * + + d xmlNanoFTPCloseConnection... + d pr extproc('xmlNanoFTPCloseConnection') + d like(xmlCint) + d ctx * value void * + + d xmlNanoFTPList pr extproc('xmlNanoFTPList') + d like(xmlCint) + d ctx * value void * + d callback value like(ftpListCallback) + d userData * value void * + d filename * value options(*string) const char * + + d xmlNanoFTPGetSocket... + d pr extproc('xmlNanoFTPGetSocket') Socket descriptor + d like(xmlCint) + d ctx * value void * + d filename * value options(*string) const char * + + d xmlNanoFTPGet pr extproc('xmlNanoFTPGet') + d like(xmlCint) + d ctx * value void * + d callback value like(ftpDataCallback) + d userData * value void * + d filename * value options(*string) const char * + + d xmlNanoFTPRead pr extproc('xmlNanoFTPRead') + d like(xmlCint) + d ctx * value void * + d dest * value void * + d len value like(xmlCint) + + /endif LIBXML_FTP_ENABLED + /endif NANO_FTP_H__ diff --git a/libxml2/os400/libxmlrpg/nanohttp.rpgle b/libxml2/os400/libxmlrpg/nanohttp.rpgle new file mode 100644 index 0000000..d4e6008 --- /dev/null +++ b/libxml2/os400/libxmlrpg/nanohttp.rpgle @@ -0,0 +1,110 @@ + * Summary: minimal HTTP implementation + * Description: minimal HTTP implementation allowing to fetch resources + * like external subset. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(NANO_HTTP_H__) + /define NANO_HTTP_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_HTTP_ENABLED) + + /include "libxmlrpg/xmlTypesC" + + d xmlNanoHTTPInit... + d pr extproc('xmlNanoHTTPInit') + + d xmlNanoHTTPCleanup... + d pr extproc('xmlNanoHTTPCleanup') + + d xmlNanoHTTPScanProxy... + d pr extproc('xmlNanoHTTPScanProxy') + d URL * value options(*string) const char * + + d xmlNanoHTTPFetch... + d pr extproc('xmlNanoHTTPFetch') + d like(xmlCint) + d URL * value options(*string) const char * + d filename * value options(*string) const char * + + d xmlNanoHTTPMethod... + d pr * extproc('xmlNanoHTTPMethod') void * + d URL * value options(*string) const char * + d method * value options(*string) const char * + d input * value options(*string) const char * + d contentType * value char * * + d headers * value options(*string) const char * + d ilen value like(xmlCint) + + d xmlNanoHTTPMethodRedir... + d pr * extproc('xmlNanoHTTPMethodRedir') void * + d URL * value options(*string) const char * + d method * value options(*string) const char * + d input * value options(*string) const char * + d contentType * value char * * + d redir * value char * * + d headers * value options(*string) const char * + d ilen value like(xmlCint) + + d xmlNanoHTTPOpen... + d pr * extproc('xmlNanoHTTPOpen') void * + d URL * value options(*string) const char * + d contentType * char *(*) + + d xmlNanoHTTPOpenRedir... + d pr * extproc('xmlNanoHTTPOpenRedir') void * + d URL * value options(*string) const char * + d contentType * value char * * + d redir * value char * * + + d xmlNanoHTTPReturnCode... + d pr extproc('xmlNanoHTTPReturnCode') + d like(xmlCint) + d ctx * value void * + + d xmlNanoHTTPAuthHeader... + d pr * extproc('xmlNanoHTTPAuthHeader') const char * + d ctx * value void * + + d xmlNanoHTTPRedir... + d pr * extproc('xmlNanoHTTPRedir') const char * + d ctx * value void * + + d xmlNanoHTTPContentLength... + d pr extproc('xmlNanoHTTPContentLength') + d like(xmlCint) + d ctx * value void * + + d xmlNanoHTTPEncoding... + d pr * extproc('xmlNanoHTTPEncoding') const char * + d ctx * value void * + + d xmlNanoHTTPMimeType... + d pr * extproc('xmlNanoHTTPMimeType') const char * + d ctx * value void * + + d xmlNanoHTTPRead... + d pr extproc('xmlNanoHTTPRead') + d like(xmlCint) + d ctx * value void * + d dest * value void * + d len value like(xmlCint) + + /if defined(LIBXML_OUTPUT_ENABLED) + d xmlNanoHTTPSave... + d pr extproc('xmlNanoHTTPSave') + d like(xmlCint) + d ctxt * value void * + d filename * value options(*string) const char * + /endif LIBXML_OUTPUT_ENABLD + + d xmlNanoHTTPClose... + d pr extproc('xmlNanoHTTPClose') + d ctx * value void * + + /endif LIBXML_HTTP_ENABLED + /endif NANO_HTTP_H__ diff --git a/libxml2/os400/libxmlrpg/parser.rpgle b/libxml2/os400/libxmlrpg/parser.rpgle new file mode 100644 index 0000000..fa48d4f --- /dev/null +++ b/libxml2/os400/libxmlrpg/parser.rpgle @@ -0,0 +1,1436 @@ + * Summary: the core parser module + * Description: Interfaces, constants and types related to the XML parser + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_PARSER_H__) + /define XML_PARSER_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + /include "libxmlrpg/dict" + /include "libxmlrpg/hash" + /include "libxmlrpg/valid" + /include "libxmlrpg/entities" + /include "libxmlrpg/xmlerror" + /include "libxmlrpg/xmlstring" + + * XML_DEFAULT_VERSION: + * + * The default version of XML used: 1.0 + + d XML_DEFAULT_VERSION... + d c '1.0' + + * xmlParserInput: + * + * An xmlParserInput is an input flow for the XML processor. + * Each entity parsed is associated an xmlParserInput (except the + * few predefined ones). This is the case both for internal entities + * - in which case the flow is already completely in memory - or + * external entities - in which case we use the buf structure for + * progressive reading and I18N conversions to the internal UTF-8 format. + + * xmlParserInputDeallocate: + * @str: the string to deallocate + * + * Callback for freeing some parser input allocations. + + d xmlParserInputDeallocate... + d s * based(######typedef######) + d procptr + + * Input buffer + + d xmlParserInput ds based(xmlParserInputPtr) + d align qualified + d buf like(xmlParserInputBufferPtr) UTF-8 encoded buffer + d filename * const char * + d directory * const char * + d base * const char * + d cur * const char * + d end * const char * + d length like(xmlCint) Length if known + d line like(xmlCint) Current line + d col like(xmlCint) Current column + * + * NOTE: consumed is only tested for equality in the parser code, + * so even if there is an overflow this should not give troubles + * for parsing very large instances. + * + d consumed like(xmlCulong) # consumed xmlChars + d free like(xmlParserInputDeallocate) base deallocator + d encoding * const xmlChar * + d version * const xmlChar * + d standalone like(xmlCint) Standalone entity ? + d id like(xmlCint) Entity unique ID + + * xmlParserNodeInfo: + * + * The parser can be asked to collect Node informations, i.e. at what + * place in the file they were detected. + * NOTE: This is off by default and not very well tested. + + d xmlParserNodeInfoPtr... + d s * based(######typedef######) + + d xmlParserNodeInfo... + d ds based(xmlParserNodeInfoPtr) + d align qualified + d node like(xmlNodePtr) const + * Position & line # that text that created the node begins & ends on + d begin_pos like(xmlCulong) + d begin_line like(xmlCulong) + d end_pos like(xmlCulong) + d end_line like(xmlCulong) + + d xmlParserNodeInfoSeqPtr... + d s * based(######typedef######) + + d xmlParserNodeInfoSeq... + d ds based(xmlParserNodeInfoSeqPtr) + d align qualified + d maximum like(xmlCulong) + d length like(xmlCulong) + d buffer like(xmlParserNodeInfoPtr) + + * xmlParserInputState: + * + * The parser is now working also as a state based parser. + * The recursive one use the state info for entities processing. + + d xmlParserInputState... + d s based(######typedef######) + d like(xmlCenum) + d XML_PARSER_EOF... Nothing to parse + d c -1 + d XML_PARSER_START... Nothing parsed + d c 0 + d XML_PARSER_MISC... Misc* b4 int subset + d c 1 + d XML_PARSER_PI c 2 In proc instr + d XML_PARSER_DTD... In some DTD content + d c 3 + d XML_PARSER_PROLOG... Misc* after int sbst + d c 4 + d XML_PARSER_COMMENT... Within a comment + d c 5 + d XML_PARSER_START_TAG... Within a start tag + d c 6 + d XML_PARSER_CONTENT... Within the content + d c 7 + d XML_PARSER_CDATA_SECTION... Within a CDATA + d c 8 + d XML_PARSER_END_TAG... Within a closing tag + d c 9 + d XML_PARSER_ENTITY_DECL... In an entity decl + d c 10 + d XML_PARSER_ENTITY_VALUE... In entity decl value + d c 11 + d XML_PARSER_ATTRIBUTE_VALUE... In attribute value + d c 12 + d XML_PARSER_SYSTEM_LITERAL... In a SYSTEM value + d c 13 + d XML_PARSER_EPILOG... Last end tag Misc* + d c 14 + d XML_PARSER_IGNORE... In IGNORED section + d c 15 + d XML_PARSER_PUBLIC_LITERAL... In a PUBLIC value + d c 16 + + * XML_DETECT_IDS: + * + * Bit in the loadsubset context field to tell to do ID/REFs lookups. + * Use it to initialize xmlLoadExtDtdDefaultValue. + + d XML_DETECT_IDS c 2 + + * XML_COMPLETE_ATTRS: + * + * Bit in the loadsubset context field to tell to do complete the + * elements attributes lists with the ones defaulted from the DTDs. + * Use it to initialize xmlLoadExtDtdDefaultValue. + + d XML_COMPLETE_ATTRS... + d c 4 + + * XML_SKIP_IDS: + * + * Bit in the loadsubset context field to tell to not do ID/REFs + * registration. + * Used to initialize xmlLoadExtDtdDefaultValue in some special cases. + + d XML_SKIP_IDS c 8 + + * xmlParserMode: + * + * A parser can operate in various modes + + d xmlParserMode s based(######typedef######) + d like(xmlCenum) + d XML_PARSE_UNKNOWN... + d c 0 + d XML_PARSE_DOM... + d c 1 + d XML_PARSE_SAX... + d c 2 + d XML_PARSE_PUSH_DOM... + d c 3 + d XML_PARSE_PUSH_SAX... + d c 4 + d XML_PARSE_READER... + d c 5 + + * xmlParserCtxt: + * + * The parser context. + * NOTE This doesn't completely define the parser state, the (current ?) + * design of the parser uses recursive function calls since this allow + * and easy mapping from the production rules of the specification + * to the actual code. The drawback is that the actual function call + * also reflect the parser state. However most of the parsing routines + * takes as the only argument the parser context pointer, so migrating + * to a state based parser for progressive parsing shouldn't be too + * hard. + + d xmlParserCtxt ds based(xmlParserCtxtPtr) + d align qualified + d sax like(xmlSAXHandlerPtr) The SAX handler + d userData * SAX only-4 DOM build + d myDoc like(xmlDocPtr) Document being built + d wellFormed like(xmlCint) Well formed doc ? + d replaceEntities... Replace entities ? + d like(xmlCint) + d version * const xmlChar * + d encoding * const xmlChar * + d standalone like(xmlCint) Standalone document + d html like(xmlCint) HTML state/type + * + * Input stream stack + * + d input like(xmlParserInputPtr) Current input stream + d inputNr like(xmlCint) # current in streams + d inputMax like(xmlCint) Max # of in streams + d inputTab * xmlParserInputPtr * + * + * Node analysis stack only used for DOM building + * + d node like(xmlNodePtr) Current parsed node + d nodeNr like(xmlCint) Parsing stack depth + d nodeMax like(xmlCint) Max stack depth + d nodeTab * xmlNodePtr * + * + d record_info like(xmlCint) Keep node info ? + d node_seq likeds(xmlParserNodeInfoSeq) Parsed nodes info + * + d errNo like(xmlCint) Error code + * + d hasExternalSubset... + d like(xmlCint) + d hasPErefs like(xmlCint) + d external like(xmlCint) Parsing ext. entity? + * + d valid like(xmlCint) Valid document ? + d validate like(xmlCint) Try to validate ? + d vctxt likeds(xmlValidCtxt) Validity context + * + d instate like(xmlParserInputState) Current input type + d token like(xmlCint) Next look-ahead char + * + d directory * char * + * + * Node name stack + * + d name * const xmlChar * + d nameNr like(xmlCint) Parsing stack depth + d nameMax like(xmlCint) Max stack depth + d nameTab * const xmlChar * * + * + d nbChars like(xmlClong) # xmlChars processed + d checkIndex like(xmlClong) 4 progressive parse + d keepBlanks like(xmlCint) Ugly but ... + d disableSAX like(xmlCint) Disable SAX cllbacks + d inSubset like(xmlCint) In int 1/ext 2 sbset + d intSubName * const xmlChar * + d extSubURI * const xmlChar * + d extSubSytem * const xmlChar * + * + * xml:space values + * + d space * int * + d spaceNr like(xmlCint) Parsing stack depth + d spaceMax like(xmlCint) Max stack depth + d spaceTab * int * + * + d depth like(xmlCint) To detect loops + d entity like(xmlParserInputPtr) To check boundaries + d charset like(xmlCint) In-memory content + d nodelen like(xmlCint) Speed up parsing + d nodemem like(xmlCint) Speed up parsing + d pedantic like(xmlCint) Enb. pedantic warng + d #private * void * + * + d loadsubset like(xmlCint) Load ext. subset ? + d linenumbers like(xmlCint) Set line numbers ? + d catalogs * void * + d recovery like(xmlCint) Run in recovery mode + d progressive like(xmlCint) Progressive parsing? + d dict like(xmlDictPtr) Parser dictionary + d atts * const xmlChar * + d maxatts like(xmlCint) Above array size + d docdict like(xmlCint) Use dictionary ? + * + * pre-interned strings + * + d str_xml * const xmlChar * + d str_xmlns * const xmlChar * + d str_xml_ms * const xmlChar * + * + * Everything below is used only by the new SAX mode + * + d sax2 like(xmlCint) New SAX mode ? + d nsNr like(xmlCint) # inherited nmspaces + d nsMax like(xmlCint) Array size + d nsTab * const xmlChar * + d attallocs * int * + d pushTab * void * + d attsDefault like(xmlHashTablePtr) Defaulted attrs + d attsSpecial like(xmlHashTablePtr) non-CDATA attrs + d nsWellFormed like(xmlCint) Doc namespace OK ? + d options like(xmlCint) Extra options + * + * Those fields are needed only for treaming parsing so far + * + d dictNames like(xmlCint) Dict names in tree ? + d freeElemsNr like(xmlCint) # free element nodes + d freeElems like(xmlNodePtr) Free elem nodes list + d freeAttrsNr like(xmlCint) # free attr. nodes + d freeAttrs like(xmlAttrPtr) Free attr noes list + * + * the complete error informations for the last error. + * + d lastError likeds(xmlError) + d parseMode like(xmlParserMode) The parser mode + d nbentities like(xmlCulong) # entity references + d sizeentities like(xmlCulong) Parsed entities size + * + * for use by HTML non-recursive parser + * + d nodeInfo like(xmlParserNodeInfoPtr) Current NodeInfo + d nodeInfoNr like(xmlCint) Parsing stack depth + d nodeInfoMax like(xmlCint) Max stack depth + d nodeInfoTab * xmlParserNodeInfo * + * + d input_id like(xmlCint) Label inputs ? + d sizeentcopy like(xmlCulong) Entity copy volume + + * xmlSAXLocator: + * + * A SAX Locator. + + d xmlSAXLocator ds based(xmlSAXLocatorPtr) + d align qualified + d getPublicId * procptr + d getSystemId * procptr + d getLineNumber * procptr + d getColumnNumber... + d * procptr + + * xmlSAXHandler: + * + * A SAX handler is bunch of callbacks called by the parser when + * processing of the input generate data or structure informations. + + * resolveEntitySAXFunc: + * @ctx: the user data (XML parser context) + * @publicId: The public ID of the entity + * @systemId: The system ID of the entity + * + * Callback: + * The entity loader, to control the loading of external entities, + * the application can either: + * - override this resolveEntity() callback in the SAX block + * - or better use the xmlSetExternalEntityLoader() function to + * set up it's own entity resolution routine + * + * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour. + + d resolveEntitySAXFunc... + d s * based(######typedef######) + d procptr + + * internalSubsetSAXFunc: + * @ctx: the user data (XML parser context) + * @name: the root element name + * @ExternalID: the external ID + * @SystemID: the SYSTEM ID (e.g. filename or URL) + * + * Callback on internal subset declaration. + + d internalSubsetSAXFunc... + d s * based(######typedef######) + d procptr + + * externalSubsetSAXFunc: + * @ctx: the user data (XML parser context) + * @name: the root element name + * @ExternalID: the external ID + * @SystemID: the SYSTEM ID (e.g. filename or URL) + * + * Callback on external subset declaration. + + d externalSubsetSAXFunc... + d s * based(######typedef######) + d procptr + + * getEntitySAXFunc: + * @ctx: the user data (XML parser context) + * @name: The entity name + * + * Get an entity by name. + * + * Returns the xmlEntityPtr if found. + + d getEntitySAXFunc... + d s * based(######typedef######) + d procptr + + * getParameterEntitySAXFunc: + * @ctx: the user data (XML parser context) + * @name: The entity name + * + * Get a parameter entity by name. + * + * Returns the xmlEntityPtr if found. + + d getParameterEntitySAXFunc... + d s * based(######typedef######) + d procptr + + * entityDeclSAXFunc: + * @ctx: the user data (XML parser context) + * @name: the entity name + * @type: the entity type + * @publicId: The public ID of the entity + * @systemId: The system ID of the entity + * @content: the entity value (without processing). + * + * An entity definition has been parsed. + + d entityDeclSAXFunc... + d s * based(######typedef######) + d procptr + + * notationDeclSAXFunc: + * @ctx: the user data (XML parser context) + * @name: The name of the notation + * @publicId: The public ID of the entity + * @systemId: The system ID of the entity + * + * What to do when a notation declaration has been parsed. + + d notationDeclSAXFunc... + d s * based(######typedef######) + d procptr + + * attributeDeclSAXFunc: + * @ctx: the user data (XML parser context) + * @elem: the name of the element + * @fullname: the attribute name + * @type: the attribute type + * @def: the type of default value + * @defaultValue: the attribute default value + * @tree: the tree of enumerated value set + * + * An attribute definition has been parsed. + + d attributeDeclSAXFunc... + d s * based(######typedef######) + d procptr + + * elementDeclSAXFunc: + * @ctx: the user data (XML parser context) + * @name: the element name + * @type: the element type + * @content: the element value tree + * + * An element definition has been parsed. + + d elementDeclSAXFunc... + d s * based(######typedef######) + d procptr + + * unparsedEntityDeclSAXFunc: + * @ctx: the user data (XML parser context) + * @name: The name of the entity + * @publicId: The public ID of the entity + * @systemId: The system ID of the entity + * @notationName: the name of the notation + * + * What to do when an unparsed entity declaration is parsed. + + d unparsedEntityDeclSAXFunc... + d s * based(######typedef######) + d procptr + + * setDocumentLocatorSAXFunc: + * @ctx: the user data (XML parser context) + * @loc: A SAX Locator + * + * Receive the document locator at startup, actually xmlDefaultSAXLocator. + * Everything is available on the context, so this is useless in our case. + + d setDocumentLocatorSAXFunc... + d s * based(######typedef######) + d procptr + + * startDocumentSAXFunc: + * @ctx: the user data (XML parser context) + * + * Called when the document start being processed. + + d startDocumentSAXFunc... + d s * based(######typedef######) + d procptr + + * endDocumentSAXFunc: + * @ctx: the user data (XML parser context) + * + * Called when the document end has been detected. + + d endDocumentSAXFunc... + d s * based(######typedef######) + d procptr + + * startElementSAXFunc: + * @ctx: the user data (XML parser context) + * @name: The element name, including namespace prefix + * @atts: An array of name/value attributes pairs, NULL terminated + * + * Called when an opening tag has been processed. + + d startElementSAXFunc... + d s * based(######typedef######) + d procptr + + * endElementSAXFunc: + * @ctx: the user data (XML parser context) + * @name: The element name + * + * Called when the end of an element has been detected. + + d endElementSAXFunc... + d s * based(######typedef######) + d procptr + + * attributeSAXFunc: + * @ctx: the user data (XML parser context) + * @name: The attribute name, including namespace prefix + * @value: The attribute value + * + * Handle an attribute that has been read by the parser. + * The default handling is to convert the attribute into an + * DOM subtree and past it in a new xmlAttr element added to + * the element. + + d attributeSAXFunc... + d s * based(######typedef######) + d procptr + + * referenceSAXFunc: + * @ctx: the user data (XML parser context) + * @name: The entity name + * + * Called when an entity reference is detected. + + d referenceSAXFunc... + d s * based(######typedef######) + d procptr + + * charactersSAXFunc: + * @ctx: the user data (XML parser context) + * @ch: a xmlChar string + * @len: the number of xmlChar + * + * Receiving some chars from the parser. + + d charactersSAXFunc... + d s * based(######typedef######) + d procptr + + * ignorableWhitespaceSAXFunc: + * @ctx: the user data (XML parser context) + * @ch: a xmlChar string + * @len: the number of xmlChar + * + * Receiving some ignorable whitespaces from the parser. + * UNUSED: by default the DOM building will use characters. + + d ignorableWhitespaceSAXFunc... + d s * based(######typedef######) + d procptr + + * processingInstructionSAXFunc: + * @ctx: the user data (XML parser context) + * @target: the target name + * @data: the PI data's + * + * A processing instruction has been parsed. + + d processingInstructionSAXFunc... + d s * based(######typedef######) + d procptr + + * commentSAXFunc: + * @ctx: the user data (XML parser context) + * @value: the comment content + * + * A comment has been parsed. + + d commentSAXFunc... + d s * based(######typedef######) + d procptr + + * cdataBlockSAXFunc: + * @ctx: the user data (XML parser context) + * @value: The pcdata content + * @len: the block length + * + * Called when a pcdata block has been parsed. + + d cdataBlockSAXFunc... + d s * based(######typedef######) + d procptr + + * warningSAXFunc: + * @ctx: an XML parser context + * @msg: the message to display/transmit + * @...: extra parameters for the message display + * + * Display and format a warning messages, callback. + + d warningSAXFunc... + d s * based(######typedef######) + d procptr + + * errorSAXFunc: + * @ctx: an XML parser context + * @msg: the message to display/transmit + * @...: extra parameters for the message display + * + * Display and format an error messages, callback. + + d errorSAXFunc... + d s * based(######typedef######) + d procptr + + * fatalErrorSAXFunc: + * @ctx: an XML parser context + * @msg: the message to display/transmit + * @...: extra parameters for the message display + * + * Display and format fatal error messages, callback. + * Note: so far fatalError() SAX callbacks are not used, error() + * get all the callbacks for errors. + + d fatalErrorSAXFunc... + d s * based(######typedef######) + d procptr + + * isStandaloneSAXFunc: + * @ctx: the user data (XML parser context) + * + * Is this document tagged standalone? + * + * Returns 1 if true + + d isStandaloneSAXFunc... + d s * based(######typedef######) + d procptr + + * hasInternalSubsetSAXFunc: + * @ctx: the user data (XML parser context) + * + * Does this document has an internal subset. + * + * Returns 1 if true + + d hasInternalSubsetSAXFunc... + d s * based(######typedef######) + d procptr + + * hasExternalSubsetSAXFunc: + * @ctx: the user data (XML parser context) + * + * Does this document has an external subset? + * + * Returns 1 if true + + d hasExternalSubsetSAXFunc... + d s * based(######typedef######) + d procptr + + ************************************************************************ + * * + * The SAX version 2 API extensions * + * * + ************************************************************************ + + * XML_SAX2_MAGIC: + * + * Special constant found in SAX2 blocks initialized fields + + d XML_SAX2_MAGIC c X'DEEDBEAF' + + * startElementNsSAX2Func: + * @ctx: the user data (XML parser context) + * @localname: the local name of the element + * @prefix: the element namespace prefix if available + * @URI: the element namespace name if available + * @nb_namespaces: number of namespace definitions on that node + * @namespaces: pointer to the array of prefix/URI pairs namespace + * definitions + * @nb_attributes: the number of attributes on that node + * @nb_defaulted: the number of defaulted attributes. The defaulted + * ones are at the end of the array + * @attributes: pointer to the array of + * (localname/prefix/URI/value/end) attribute values. + * + * SAX2 callback when an element start has been detected by the parser. + * It provides the namespace informations for the element, as well as + * the new namespace declarations on the element. + + d startElementNsSAX2Func... + d s * based(######typedef######) + d procptr + + * endElementNsSAX2Func: + * @ctx: the user data (XML parser context) + * @localname: the local name of the element + * @prefix: the element namespace prefix if available + * @URI: the element namespace name if available + * + * SAX2 callback when an element end has been detected by the parser. + * It provides the namespace informations for the element. + + d endElementNsSAX2Func... + d s * based(######typedef######) + d procptr + + d xmlSAXHandler ds based(xmlSAXHandlerPtr) + d align qualified + d internalSubset... + d like(internalSubsetSAXFunc) + d isStandalone like(isStandaloneSAXFunc) + d hasInternalSubset... + d like(hasInternalSubsetSAXFunc) + d hasExternalSubset... + d like(hasExternalSubsetSAXFunc) + d resolveEntity like(resolveEntitySAXFunc) + d getEntity like(getEntitySAXFunc) + d entityDecl like(entityDeclSAXFunc) + d notationDecl like(notationDeclSAXFunc) + d attributeDecl like(attributeDeclSAXFunc) + d elementDecl like(elementDeclSAXFunc) + d unparsedEntityDecl... + d like(unparsedEntityDeclSAXFunc) + d setDocumentLocator... + d like(setDocumentLocatorSAXFunc) + d startDocument like(startDocumentSAXFunc) + d endDocument like(endDocumentSAXFunc) + d startElement like(startElementSAXFunc) + d endElement like(endElementSAXFunc) + d reference like(referenceSAXFunc) + d characters like(charactersSAXFunc) + d ignorableWhitespace... + d like(ignorableWhitespaceSAXFunc) + d processingInstruction... + d like(processingInstructionSAXFunc) + d comment like(commentSAXFunc) + d warning like(warningSAXFunc) + d error like(errorSAXFunc) + d fatalError like(fatalErrorSAXFunc) + d getParameterEntity... + d like(getParameterEntitySAXFunc) + d cdataBlock like(cdataBlockSAXFunc) + d externalSubset... + d like(externalSubsetSAXFunc) + d initialized like(xmlCuint) + * + * The following fields are extensions available only on version 2 + * + d #private * void * + d startElementNs... + d like(startElementNsSAX2Func) + d endELementNs like(endElementNsSAX2Func) + d serror like(xmlStructuredErrorFunc) + + * SAX Version 1 + + d xmlSAXHandlerV1Ptr... + d s * based(######typedef######) + + d xmlSAXHandlerV1... + d ds based(xmlSAXHandlerV1Ptr) + d align qualified + d internalSubset... + d like(internalSubsetSAXFunc) + d isStandalone like(isStandaloneSAXFunc) + d hasInternalSubset... + d like(hasInternalSubsetSAXFunc) + d hasExternalSubset... + d like(hasExternalSubsetSAXFunc) + d resolveEntity like(resolveEntitySAXFunc) + d getEntity like(getEntitySAXFunc) + d entityDecl like(entityDeclSAXFunc) + d notationDecl like(notationDeclSAXFunc) + d attributeDecl like(attributeDeclSAXFunc) + d elementDecl like(elementDeclSAXFunc) + d unparsedEntityDecl... + d like(unparsedEntityDeclSAXFunc) + d setDocumentLocator... + d like(setDocumentLocatorSAXFunc) + d startDocument like(startDocumentSAXFunc) + d endDocument like(endDocumentSAXFunc) + d startElement like(startElementSAXFunc) + d endElement like(endElementSAXFunc) + d reference like(referenceSAXFunc) + d characters like(charactersSAXFunc) + d ignorableWhitespace... + d like(ignorableWhitespaceSAXFunc) + d processingInstruction... + d like(processingInstructionSAXFunc) + d comment like(commentSAXFunc) + d warning like(warningSAXFunc) + d error like(errorSAXFunc) + d fatalError like(fatalErrorSAXFunc) + d getParameterEntity... + d like(getParameterEntitySAXFunc) + d cdataBlock like(cdataBlockSAXFunc) + d externalSubset... + d like(externalSubsetSAXFunc) + d initialized like(xmlCuint) + + * xmlExternalEntityLoader: + * @URL: The System ID of the resource requested + * @ID: The Public ID of the resource requested + * @context: the XML parser context + * + * External entity loaders types. + * + * Returns the entity input parser. + + d xmlExternalEntityLoader... + d s * based(######typedef######) + d procptr + + /include "libxmlrpg/encoding" + /include "libxmlrpg/xmlIO" + /include "libxmlrpg/globals" + + * Init/Cleanup + + d xmlInitParser pr extproc('xmlInitParser') + + d xmlCleanupParser... + d pr extproc('xmlCleanupParser') + + * Input functions + + d xmlParserInputRead... + d pr extproc('xmlParserInputRead') + d like(xmlCint) + d in value like(xmlParserInputPtr) + d len value like(xmlCint) + + d xmlParserInputGrow... + d pr extproc('xmlParserInputGrow') + d like(xmlCint) + d in value like(xmlParserInputPtr) + d len value like(xmlCint) + + * Basic parsing Interfaces + + /if defined(LIBXML_SAX1_ENABLED) + d xmlParseDoc pr extproc('xmlParseDoc') + d like(xmlDocPtr) + d cur * value options(*string) const xmlChar * + + d xmlParseFile pr extproc('xmlParseFile') + d like(xmlDocPtr) + d filename * value options(*string) const char * + + d xmlParseMemory pr extproc('xmlParseMemory') + d like(xmlDocPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + /endif LIBXML_SAX1_ENABLED + + d xmlSubstituteEntitiesDefault... + d pr extproc( + d 'xmlSubstituteEntitiesDefault') + d like(xmlCint) + d val value like(xmlCint) + + d xmlKeepBlanksDefault... + d pr extproc('xmlKeepBlanksDefault') + d like(xmlCint) + d val value like(xmlCint) + + d xmlStopParser pr extproc('xmlStopParser') + d ctxt value like(xmlParserCtxtPtr) + + d xmlPedanticParserDefault... + d pr extproc('xmlPedanticParserDefault') + d like(xmlCint) + d val value like(xmlCint) + + d xmlLineNumbersDefault... + d pr extproc('xmlLineNumbersDefault') + d like(xmlCint) + d val value like(xmlCint) + + /if defined(LIBXML_SAX1_ENABLED) + * Recovery mode + + d xmlRecoverDoc pr extproc('xmlRecoverDoc') + d like(xmlDocPtr) + d cur * value options(*string) const xmlChar * + + d xmlRecoverMemory... + d pr extproc('xmlRecoverMemory') + d like(xmlDocPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + + d xmlRecoverFile pr extproc('xmlRecoverFile') + d like(xmlDocPtr) + d filename * value options(*string) const char * + /endif LIBXML_SAX1_ENABLED + + * Less common routines and SAX interfaces + + d xmlParseDocument... + d pr extproc('xmlParseDocument') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseExtParsedEnt... + d pr extproc('xmlParseExtParsedEnt') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + + /if defined(LIBXML_SAX1_ENABLED) + d xmlSAXUserParseFile... + d pr extproc('xmlSAXUserParseFile') + d like(xmlCint) + d sax value like(xmlSAXHandlerPtr) + d user_data * value void * + d filename * value options(*string) const char * + + d xmlSAXUserParseMemory... + d pr extproc('xmlSAXUserParseMemory') + d like(xmlCint) + d sax value like(xmlSAXHandlerPtr) + d user_data * value void * + d buffer * value options(*string) const char * + d size value like(xmlCint) + + d xmlSAXParseDoc pr extproc('xmlSAXParseDoc') + d like(xmlDocPtr) + d sax value like(xmlSAXHandlerPtr) + d cur * value options(*string) const xmlChar * + d recovery value like(xmlCint) + + d xmlSAXParseMemory... + d pr extproc('xmlSAXParseMemory') + d like(xmlDocPtr) + d sax value like(xmlSAXHandlerPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + d recovery value like(xmlCint) + + d xmlSAXParseMemoryWithData... + d pr extproc('xmlSAXParseMemoryWithData') + d like(xmlDocPtr) + d sax value like(xmlSAXHandlerPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + d recovery value like(xmlCint) + d data * value void * + + d xmlSAXParseFile... + d pr extproc('xmlSAXParseFile') + d like(xmlDocPtr) + d sax value like(xmlSAXHandlerPtr) + d filename * value options(*string) const char * + d recovery value like(xmlCint) + + d xmlSAXParseFileWithData... + d pr extproc('xmlSAXParseFileWithData') + d like(xmlDocPtr) + d sax value like(xmlSAXHandlerPtr) + d filename * value options(*string) const char * + d recovery value like(xmlCint) + d data * value void * + + d xmlSAXParseEntity... + d pr extproc('xmlSAXParseEntity') + d like(xmlDocPtr) + d sax value like(xmlSAXHandlerPtr) + d filename * value options(*string) const char * + + d xmlParseEntity... + d pr extproc('xmlParseEntity') + d like(xmlDocPtr) + d filename * value options(*string) const char * + /endif LIBXML_SAX1_ENABLED + + /if defined(LIBXML_VALID_ENABLED) + d xmlSAXParseDTD pr extproc('xmlSAXParseDTD') + d like(xmlDtdPtr) + d sax value like(xmlSAXHandlerPtr) + d ExternalID * value options(*string) const xmlChar * + d SystemID * value options(*string) const xmlChar * + + d xmlParseDTD pr extproc('xmlParseDTD') + d like(xmlDtdPtr) + d ExternalID * value options(*string) const xmlChar * + d SystemID * value options(*string) const xmlChar * + + d xmlIOParseDTD pr extproc('xmlIOParseDTD') + d like(xmlDtdPtr) + d sax value like(xmlSAXHandlerPtr) + d input value like(xmlParserInputBufferPtr) + d enc value like(xmlCharEncoding) + /endif LIBXML_VALID_ENABLED + + /if defined(LIBXML_SAX1_ENABLED) + d xmlParseBalancedChunkMemory... + d pr extproc( + d 'xmlParseBalancedChunkMemory') + d like(xmlCint) + d doc value like(xmlDocPtr) + d sax value like(xmlSAXHandlerPtr) + d user_data * value void * + d depth value like(xmlCint) + d user_data * value void * + d string * value options(*string) const xmlChar * + d lst * value xmlNodePtr * + /endif LIBXML_SAX1_ENABLED + + d xmlParseInNodeContext... + d pr extproc('xmlParseInNodeContext') + d like(xmlParserErrors) + d node value like(xmlNodePtr) + d data * value options(*string) const char * + d datalen value like(xmlCint) + d options value like(xmlCint) + d lst * value xmlNodePtr * + + /if defined(LIBXML_SAX1_ENABLED) + d xmlParseBalancedChunkMemoryRecover... + d pr extproc( + d 'xmlParseBalancedChunkMemoryRecover') + d like(xmlCint) + d doc value like(xmlDocPtr) + d sax value like(xmlSAXHandlerPtr) + d user_data * value void * + d depth value like(xmlCint) + d string * value options(*string) const xmlChar * + d lst * value xmlNodePtr * + d recover value like(xmlCint) + + d xmlParseExternalEntity... + d pr extproc('xmlParseExternalEntity') + d like(xmlCint) + d doc value like(xmlDocPtr) + d sax value like(xmlSAXHandlerPtr) + d user_data * value void * + d depth value like(xmlCint) + d URL * value options(*string) const xmlChar * + d ID * value options(*string) const xmlChar * + d lst * value xmlNodePtr * + /endif LIBXML_SAX1_ENABLED + + d xmlParseCtxtExternalEntity... + d pr extproc('xmlParseCtxtExternalEntity') + d like(xmlCint) + d sax value like(xmlSAXHandlerPtr) + d URL * value options(*string) const xmlChar * + d ID * value options(*string) const xmlChar * + d lst * value xmlNodePtr * + + * Parser contexts handling. + + d xmlNewParserCtxt... + d pr extproc('xmlNewParserCtxt') + d like(xmlParserCtxtPtr) + + d xmlInitParserCtxt... + d pr extproc('xmlInitParserCtxt') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + + d xmlClearParserCtxt... + d pr extproc('xmlClearParserCtxt') + d ctxt value like(xmlParserCtxtPtr) + + d xmlFreeParserCtxt... + d pr extproc('xmlFreeParserCtxt') + d ctxt value like(xmlParserCtxtPtr) + + /if defined(LIBXML_SAX1_ENABLED) + d xmlSetupParserForBuffer... + d pr extproc('xmlSetupParserForBuffer') + d ctxt value like(xmlParserCtxtPtr) + d buffer * value options(*string) const xmlChar * + d filename * value options(*string) const char * + /endif LIBXML_SAX1_ENABLED + + d xmlCreateDocParserCtxt... + d pr extproc('xmlCreateDocParserCtxt') + d like(xmlParserCtxtPtr) + d cur * value options(*string) const xmlChar * + + /if defined(LIBXML_LEGACY_ENABLED) + * Reading/setting optional parsing features. + + d xmlGetFeaturesList... + d pr extproc('xmlGetFeaturesList') + d like(xmlCint) + d len like(xmlCint) + d result * const char *(*) + + d xmlGetFeature pr extproc('xmlGetFeature') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d name * value options(*string) const char * + d result * value void * + + d xmlSetFeature pr extproc('xmlSetFeature') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d name * value options(*string) const char * + d result * value void * + /endif LIBXML_LEGACY_ENABLD + + /if defined(LIBXML_PUSH_ENABLED) + * Interfaces for the Push mode. + + d xmlCreatePushParserCtxt... + d pr extproc('xmlCreatePushParserCtxt') + d like(xmlParserCtxtPtr) + d sax value like(xmlSAXHandlerPtr) + d user_data * value void * + d chunk * value options(*string) const char * + d size value like(xmlCint) + d filename * value options(*string) const char * + + d xmlParseChunk pr extproc('xmlParseChunk') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d chunk * value options(*string) const char * + d size value like(xmlCint) + d terminate value like(xmlCint) + /endif LIBXML_PUSH_ENABLED + + * Special I/O mode. + + d xmlCreateIOParserCtxt... + d pr extproc('xmlCreateIOParserCtxt') + d like(xmlParserCtxtPtr) + d sax value like(xmlSAXHandlerPtr) + d user_data * value void * + d ioread value like(xmlInputReadCallback) + d ioclose value like(xmlInputCloseCallback) + d ioctx * value void * + d enc value like(xmlCharEncoding) + + d xmlNewIOInputStream... + d pr extproc('xmlNewIOInputStream') + d like(xmlParserInputPtr) + d ctxt value like(xmlParserCtxtPtr) + d input value like(xmlParserInputBufferPtr) + d enc value like(xmlCharEncoding) + + * Node infos. + + d xmlParserFindNodeInfo... + d pr * extproc('xmlParserFindNodeInfo') xmlParserNodeInfo * + d ctxt value like(xmlParserCtxtPtr) + d node value like(xmlNodePtr) const + + d xmlInitNodeInfoSeq... + d pr extproc('xmlInitNodeInfoSeq') + d seq value like(xmlParserNodeInfoSeqPtr) + + d xmlClearNodeInfoSeq... + d pr extproc('xmlClearNodeInfoSeq') + d seq value like(xmlParserNodeInfoSeqPtr) + + d xmlParserFindNodeInfoIndex... + d pr extproc('xmlParserFindNodeInfoIndex') + d like(xmlCulong) + d seq value like(xmlParserNodeInfoSeqPtr) + d node value like(xmlNodePtr) const + + d xmlParserAddNodeInfo... + d pr extproc('xmlParserAddNodeInfo') + d ctxt value like(xmlParserCtxtPtr) + d info value like(xmlParserNodeInfoPtr) const + + * External entities handling actually implemented in xmlIO. + + d xmlSetExternalEntityLoader... + d pr extproc('xmlSetExternalEntityLoader') + d f value like(xmlExternalEntityLoader) + + d xmlGetExternalEntityLoader... + d pr extproc('xmlGetExternalEntityLoader') + d like(xmlExternalEntityLoader) + + d xmlLoadExternalEntity... + d pr extproc('xmlLoadExternalEntity') + d like(xmlParserInputPtr) + d URL * value options(*string) const char * + d ID * value options(*string) const char * + d ctxt value like(xmlParserCtxtPtr) + + * Index lookup, actually implemented in the encoding module + + d xmlByteConsumed... + d pr extproc('xmlByteConsumed') + d like(xmlClong) + d ctxt value like(xmlParserCtxtPtr) + + * New set of simpler/more flexible APIs + + * xmlParserOption: + * + * This is the set of XML parser options that can be passed down + * to the xmlReadDoc() and similar calls. + + d xmlParserOption... + d s based(######typedef######) + d like(xmlCenum) + d XML_PARSE_RECOVER... Recover on errors + d c X'00000001' + d XML_PARSE_NOENT... Substitute entities + d c X'00000002' + d XML_PARSE_DTDLOAD... Load external subset + d c X'00000004' + d XML_PARSE_DTDATTR... Default DTD attrs + d c X'00000008' + d XML_PARSE_DTDVALID... Validate with DTD + d c X'00000010' + d XML_PARSE_NOERROR... Suppress err reports + d c X'00000020' + d XML_PARSE_NOWARNING... Suppr warn reports + d c X'00000040' + d XML_PARSE_PEDANTIC... Pedantic err report + d c X'00000080' + d XML_PARSE_NOBLANKS... Remove blank nodes + d c X'00000100' + d XML_PARSE_SAX1... Use SAX1 internally + d c X'00000200' + d XML_PARSE_XINCLUDE... Impl XInclude subst + d c X'00000400' + d XML_PARSE_NONET... Forbid netwrk access + d c X'00000800' + d XML_PARSE_NODICT... No contxt dict reuse + d c X'00001000' + d XML_PARSE_NSCLEAN... Rmv redndnt ns decls + d c X'00002000' + d XML_PARSE_NOCDATA... CDATA as text nodes + d c X'00004000' + d XML_PARSE_NOXINCNODE... No XINCL START/END + d c X'00008000' + d XML_PARSE_COMPACT... Compact text nodes + d c X'00010000' + d XML_PARSE_OLD10... B4 upd5 compatible + d c X'00020000' + d XML_PARSE_NOBASEFIX... No XINC xml:base fix + d c X'00040000' + d XML_PARSE_HUGE... No parsing limit + d c X'00080000' + d XML_PARSE_OLDSAX... Use SAX2 b4 2.7.0 + d c X'00100000' + d XML_PARSE_IGNORE_ENC... No int doc code hint + d c X'00200000' + d XML_PARSE_BIG_LINES... Big line#-->PSVI fld + d c X'00400000' + + d xmlCtxtReset pr extproc('xmlCtxtReset') + d ctxt value like(xmlParserCtxtPtr) + + d xmlCtxtResetPush... + d pr extproc('xmlCtxtResetPush') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d chunk * value options(*string) const char * + d size value like(xmlCint) + d filename * value options(*string) const char * + d encoding * value options(*string) const char * + + d xmlCtxtUseOptions... + d pr extproc('xmlCtxtUseOptions') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d options value like(xmlCint) + + d xmlReadDoc pr extproc('xmlReadDoc') + d like(xmlDocPtr) + d cur * value options(*string) const xmlChar * + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlReadFile pr extproc('xmlReadFile') + d like(xmlDocPtr) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlReadMemory pr extproc('xmlReadMemory') + d like(xmlDocPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlReadFd pr extproc('xmlReadFd') + d like(xmlDocPtr) + d fd value like(xmlCint) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlReadIO pr extproc('xmlReadIO') + d like(xmlDocPtr) + d ioread value like(xmlInputReadCallback) + d ioclose value like(xmlInputCloseCallback) + d ioctx * value void * + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlCtxtReadDoc pr extproc('xmlCtxtReadDoc') + d like(xmlDocPtr) + d ctxt value like(xmlParserCtxtPtr) + d cur * value options(*string) const xmlChar * + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlCtxtReadFile... + d pr extproc('xmlCtxtReadFile') + d like(xmlDocPtr) + d ctxt value like(xmlParserCtxtPtr) + d filename * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlCtxtReadMemory... + d pr extproc('xmlCtxtReadMemory') + d like(xmlDocPtr) + d ctxt value like(xmlParserCtxtPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlCtxtReadFd pr extproc('xmlCtxtReadFd') + d like(xmlDocPtr) + d ctxt value like(xmlParserCtxtPtr) + d fd value like(xmlCint) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlCtxtReadIO pr extproc('xmlCtxtReadIO') + d like(xmlDocPtr) + d ctxt value like(xmlParserCtxtPtr) + d ioread value like(xmlInputReadCallback) + d ioclose value like(xmlInputCloseCallback) + d ioctx * value void * + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + * Library wide options + + * xmlFeature: + * + * Used to examine the existance of features that can be enabled + * or disabled at compile-time. + * They used to be called XML_FEATURE_xxx but this clashed with Expat + + d xmlFeature s based(######typedef######) + d like(xmlCenum) + d XML_WITH_THREAD... + d c 1 + d XML_WITH_TREE c 2 + d XML_WITH_OUTPUT... + d c 3 + d XML_WITH_PUSH c 4 + d XML_WITH_READER... + d c 5 + d XML_WITH_PATTERN... + d c 6 + d XML_WITH_WRITER... + d c 7 + d XML_WITH_SAX1 c 8 + d XML_WITH_FTP c 9 + d XML_WITH_HTTP c 10 + d XML_WITH_VALID... + d c 11 + d XML_WITH_HTML c 12 + d XML_WITH_LEGACY... + d c 13 + d XML_WITH_C14N c 14 + d XML_WITH_CATALOG... + d c 15 + d XML_WITH_XPATH... + d c 16 + d XML_WITH_XPTR c 17 + d XML_WITH_XINCLUDE... + d c 18 + d XML_WITH_ICONV... + d c 19 + d XML_WITH_ISO8859X... + d c 20 + d XML_WITH_UNICODE... + d c 21 + d XML_WITH_REGEXP... + d c 22 + d XML_WITH_AUTOMATA... + d c 23 + d XML_WITH_EXPR c 24 + d XML_WITH_SCHEMAS... + d c 25 + d XML_WITH_SCHEMATRON... + d c 26 + d XML_WITH_MODULES... + d c 27 + d XML_WITH_DEBUG... + d c 28 + d XML_WITH_DEBUG_MEM... + d c 29 + d XML_WITH_DEBUG_RUN... + d c 30 + d XML_WITH_ZLIB c 31 + d XML_WITH_ICU c 32 + d XML_WITH_LZMA c 33 + d XML_WITH_NONE c 99999 + + d xmlHasFeature pr extproc('xmlHasFeature') + d like(xmlCint) + d feature value like(xmlFeature) + + /endif XML_PARSER_H__ diff --git a/libxml2/os400/libxmlrpg/parserInternals.rpgle b/libxml2/os400/libxmlrpg/parserInternals.rpgle new file mode 100644 index 0000000..6c8f388 --- /dev/null +++ b/libxml2/os400/libxmlrpg/parserInternals.rpgle @@ -0,0 +1,598 @@ + * Summary: internals routines and limits exported by the parser. + * Description: this module exports a number of internal parsing routines + * they are not really all intended for applications but + * can prove useful doing low level processing. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_PARSER_INTERNALS_H__) + /define XML_PARSER_INTERNALS_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/parser" + /include "libxmlrpg/HTMLparser" + /include "libxmlrpg/chvalid" + + * xmlParserMaxDepth: + * + * arbitrary depth limit for the XML documents that we allow to + * process. This is not a limitation of the parser but a safety + * boundary feature, use XML_PARSE_HUGE option to override it. + + d xmlParserMaxDepth... + d s import('xmlParserMaxDepth') + d like(xmlCuint) + + * XML_MAX_TEXT_LENGTH: + * + * Maximum size allowed for a single text node when building a tree. + * This is not a limitation of the parser but a safety boundary feature, + * use XML_PARSE_HUGE option to override it. + * Introduced in 2.9.0 + + d XML_MAX_TEXT_LENGTH... + d c 10000000 + + * XML_MAX_NAME_LENGTH: + * + * Maximum size allowed for a markup identitier + * This is not a limitation of the parser but a safety boundary feature, + * use XML_PARSE_HUGE option to override it. + * Note that with the use of parsing dictionaries overriding the limit + * may result in more runtime memory usage in face of "unfriendly' content + * Introduced in 2.9.0 + + d XML_MAX_NAME_LENGTH... + d c 50000 + + * XML_MAX_DICTIONARY_LIMIT: + * + * Maximum size allowed by the parser for a dictionary by default + * This is not a limitation of the parser but a safety boundary feature, + * use XML_PARSE_HUGE option to override it. + * Introduced in 2.9.0 + + d XML_MAX_DICTIONARY_LIMIT... + d c 10000000 + + * XML_MAX_LOOKUP_LIMIT: + * + * Maximum size allowed by the parser for ahead lookup + * This is an upper boundary enforced by the parser to avoid bad + * behaviour on "unfriendly' content + * Introduced in 2.9.0 + + d XML_MAX_LOOKUP_LIMIT... + d c 10000000 + + * XML_MAX_NAMELEN: + * + * Identifiers can be longer, but this will be more costly + * at runtime. + + d XML_MAX_NAMELEN... + d c 100 + + * INPUT_CHUNK: + * + * The parser tries to always have that amount of input ready. + * One of the point is providing context when reporting errors. + + d INPUT_CHUNK c 250 + + * Global variables used for predefined strings. + + d xmlStringText s 4 import('xmlStringText') \0 in 5th byte + + d xmlStringTextNoenc... + d s 9 import('xmlStringTextNoenc') \0 in 10th byte + + d xmlStringComment... + d s 7 import('xmlStringComment') \0 in 8th byte + + * Function to finish the work of the macros where needed. + + d xmlIsLetter pr extproc('xmlIsLetter') + d like(xmlCint) + d c value like(xmlCint) + + * Parser context. + + d xmlCreateFileParserCtxt... + d pr extproc('xmlCreateFileParserCtxt') + d like(xmlParserCtxtPtr) + d filename * value options(*string) const char * + + d xmlCreateURLParserCtxt... + d pr extproc('xmlCreateURLParserCtxt') + d like(xmlParserCtxtPtr) + d filename * value options(*string) const char * + d options value like(xmlCint) + + d xmlCreateMemoryParserCtxt... + d pr extproc('xmlCreateMemoryParserCtxt') + d like(xmlParserCtxtPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + + d xmlCreateEntityParserCtxt... + d pr extproc('xmlCreateEntityParserCtxt') + d like(xmlParserCtxtPtr) + d URL * value options(*string) const xmlChar * + d ID * value options(*string) const xmlChar * + d base * value options(*string) const xmlChar * + + d xmlSwitchEncoding... + d pr extproc('xmlSwitchEncoding') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d enc value like(xmlCharEncoding) + + d xmlSwitchToEncoding... + d pr extproc('xmlSwitchToEncoding') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d handler value like(xmlCharEncodingHandlerPtr) + + d xmlSwitchInputEncoding... + d pr extproc('xmlSwitchInputEncoding') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d input value like(xmlParserInputPtr) + d handler value like(xmlCharEncodingHandlerPtr) + + * Input Streams. + + d xmlNewStringInputStream... + d pr extproc('xmlNewStringInputStream') + d like(xmlParserInputPtr) + d ctxt value like(xmlParserCtxtPtr) + d buffer * value options(*string) const xmlChar * + + d xmlNewEntityInputStream... + d pr extproc('xmlNewEntityInputStream') + d like(xmlParserInputPtr) + d ctxt value like(xmlParserCtxtPtr) + d entity value like(xmlEntityPtr) + + d xmlPushInput pr extproc('xmlPushInput') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d input value like(xmlParserInputPtr) + + d xmlPopInput pr extproc('xmlPopInput') + d like(xmlChar) + d ctxt value like(xmlParserCtxtPtr) + + d xmlFreeInputStream... + d pr extproc('xmlFreeInputStream') + d input value like(xmlParserInputPtr) + + d xmlNewInputFromFile... + d pr extproc('xmlNewInputFromFile') + d like(xmlParserInputPtr) + d ctxt value like(xmlParserCtxtPtr) + d filename * value options(*string) const char * + + d xmlNewInputStream... + d pr extproc('xmlNewInputStream') + d like(xmlParserInputPtr) + d ctxt value like(xmlParserCtxtPtr) + + * Namespaces. + + d xmlSplitQName pr * extproc('xmlSplitQName') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + d name * value options(*string) const xmlChar * + d prefix * xmlChar *(*) + + * Generic production rules. + + d xmlParseName pr * extproc('xmlParseName') const xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseNmtoken... + d pr * extproc('xmlParseNmtoken') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseEntityValue... + d pr * extproc('xmlParseEntityValue') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + d orig * xmlChar *(*) + + d xmlParseAttValue... + d pr * extproc('xmlParseAttValue') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseSystemLiteral... + d pr * extproc('xmlParseSystemLiteral') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlParsePubidLiteral... + d pr * extproc('xmlParsePubidLiteral') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseCharData... + d pr extproc('xmlParseCharData') + d ctxt value like(xmlParserCtxtPtr) + d cdata value like(xmlCint) + + d xmlParseExternalID... + d pr * extproc('xmlParseExternalID') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + d publicID * xmlChar *(*) + d strict value like(xmlCint) + + d xmlParseComment... + d pr extproc('xmlParseComment') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParsePITarget... + d pr * extproc('xmlParsePITarget') const xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlParsePI pr extproc('xmlParsePI') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseNotationDecl... + d pr extproc('xmlParseNotationDecl') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseEntityDecl... + d pr extproc('xmlParseEntityDecl') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseDefaultDecl... + d pr extproc('xmlParseDefaultDecl') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d value * xmlChar *(*) + + d xmlParseNotationType... + d pr extproc('xmlParseNotationType') + d like(xmlEnumerationPtr) + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseEnumerationType... + d pr extproc('xmlParseEnumerationType') + d like(xmlEnumerationPtr) + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseEnumeratedType... + d pr extproc('xmlParseEnumeratedType') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d tree * value xmlEnumerationPtr * + + d xmlParseAttributeType... + d pr extproc('xmlParseAttributeType') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d tree * value xmlEnumerationPtr * + + d xmlParseAttributeListDecl... + d pr extproc('xmlParseAttributeListDecl') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseElementMixedContentDecl... + d pr extproc( + d 'xmlParseElementMixedContentDecl') + d like(xmlElementContentPtr) + d ctxt value like(xmlParserCtxtPtr) + d inputchk value like(xmlCint) + + d xmlParseElementChildrenContentDecl... + d pr extproc( + d 'xmlParseElementChildrenContentDecl') + d like(xmlElementContentPtr) + d ctxt value like(xmlParserCtxtPtr) + d inputchk value like(xmlCint) + + d xmlParseElementContentDecl... + d pr extproc('xmlParseElementContentDecl') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d name * value options(*string) const xmlChar * + d result * value xmlElementContentPtr + d * + + d xmlParseElementDecl... + d pr extproc('xmlParseElementDecl') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseMarkupDecl... + d pr extproc('xmlParseMarkupDecl') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseCharRef... + d pr extproc('xmlParseCharRef') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseEntityRef... + d pr extproc('xmlParseEntityRef') + d like(xmlEntityPtr) + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseReference... + d pr extproc('xmlParseReference') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParsePEReference... + d pr extproc('xmlParsePEReference') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseDocTypeDecl... + d pr extproc('xmlParseDocTypeDecl') + d ctxt value like(xmlParserCtxtPtr) + + /if defined(LIBXML_SAX1_ENABLED) + d xmlParseAttribute... + d pr * extproc('xmlParseAttribute') const xmlChar * + d ctxt value like(xmlParserCtxtPtr) + d value * xmlChar *(*) + + d xmlParseStartTag... + d pr * extproc('xmlParseStartTag') const xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseEndTag pr extproc('xmlParseEndTag') + d ctxt value like(xmlParserCtxtPtr) + /endif LIBXML_SAX1_ENABLED + + d xmlParseCDSect pr extproc('xmlParseCDSect') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseContent... + d pr extproc('xmlParseContent') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseElement... + d pr extproc('xmlParseElement') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseVersionNum... + d pr * extproc('xmlParseVersionNum') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseVersionInfo... + d pr * extproc('xmlParseVersionInfo') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseEncName... + d pr * extproc('xmlParseEncName') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseEncodingDecl... + d pr * extproc('xmlParseEncodingDecl') const xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseSDDecl pr extproc('xmlParseSDDecl') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseXMLDecl... + d pr extproc('xmlParseXMLDecl') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseTextDecl... + d pr extproc('xmlParseTextDecl') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseMisc pr extproc('xmlParseMisc') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseExternalSubset... + d pr extproc('xmlParseExternalSubset') + d ctxt value like(xmlParserCtxtPtr) + d ExternalID * value options(*string) const xmlChar * + d SystemID * value options(*string) const xmlChar * + + * XML_SUBSTITUTE_NONE: + * + * If no entities need to be substituted. + + d XML_SUBSTITUTE_NONE... + d c 0 + + * XML_SUBSTITUTE_REF: + * + * Whether general entities need to be substituted. + + d XML_SUBSTITUTE_REF... + d c 1 + + * XML_SUBSTITUTE_PEREF: + * + * Whether parameter entities need to be substituted. + + d XML_SUBSTITUTE_PEREF... + d c 2 + + * XML_SUBSTITUTE_BOTH: + * + * Both general and parameter entities need to be substituted. + + d XML_SUBSTITUTE_BOTH... + d c 3 + + d xmlStringDecodeEntities... + d pr * extproc('xmlStringDecodeEntities') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + d str * value options(*string) const xmlChar * + d what value like(xmlCint) + d end value like(xmlChar) + d end2 value like(xmlChar) + d end3 value like(xmlChar) + + d xmlStringLenDecodeEntities... + d pr * extproc('xmlStringLenDecodeEntities')xmlChar * + d ctxt value like(xmlParserCtxtPtr) + d str * value options(*string) const xmlChar * + d len value like(xmlCint) + d what value like(xmlCint) + d end value like(xmlChar) + d end2 value like(xmlChar) + d end3 value like(xmlChar) + + * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP. + + d nodePush pr extproc('nodePush') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d value value like(xmlNodePtr) + + d nodePop pr extproc('nodePop') + d like(xmlNodePtr) + d ctxt value like(xmlParserCtxtPtr) + + d inputPush pr extproc('inputPush') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d value value like(xmlParserInputPtr) + + d inputPop pr extproc('inputPop') + d like(xmlParserInputPtr) + d ctxt value like(xmlParserCtxtPtr) + + d namePop pr * extproc('namePop') const xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d namePush pr extproc('namePush') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d value * value options(*string) const xmlChar * + + * other commodities shared between parser.c and parserInternals. + + d xmlSkipBlankChars... + d pr extproc('xmlSkipBlankChars') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + + d xmlStringCurrentChar... + d pr extproc('xmlStringCurrentChar') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d cur * value options(*string) const xmlChar * + d len * value int * + + d xmlParserHandlePEReference... + d pr extproc('xmlParserHandlePEReference') + d ctxt value like(xmlParserCtxtPtr) + + d xmlCheckLanguageID... + d pr extproc('xmlCheckLanguageID') + d like(xmlCint) + d lang * value options(*string) const xmlChar * + + * Really core function shared with HTML parser. + + d xmlCurrentChar pr extproc('xmlCurrentChar') + d like(xmlCint) + d ctxt value like(xmlParserCtxtPtr) + d len * value int * + + d xmlCopyCharMultiByte... + d pr extproc('xmlCopyCharMultiByte') + d like(xmlCint) + d out * value options(*string) xmlChar * + d val value like(xmlCint) + + d xmlCopyChar pr extproc('xmlCopyChar') + d like(xmlCint) + d len value like(xmlCint) + d out * value options(*string) xmlChar * + d val value like(xmlCint) + + d xmlNextChar pr extproc('xmlNextChar') + d ctxt value like(xmlParserCtxtPtr) + + d xmlParserInputShrink... + d pr extproc('xmlParserInputShrink') + d in value like(xmlParserInputPtr) + + /if defined(LIBXML_HTML_ENABLED) + + * Actually comes from the HTML parser but launched from the init stuff. + + d htmlInitAutoClose... + d pr extproc('htmlInitAutoClose') + + d htmlCreateFileParserCtxt... + d pr extproc('htmlCreateFileParserCtxt') + d like(htmlParserCtxtPtr) + d filename * value options(*string) const char * + d encoding * value options(*string) const char * + /endif + + * Specific function to keep track of entities references + * and used by the XSLT debugger. + + /if defined(LIBXML_LEGACY_ENABLED) + * xmlEntityReferenceFunc: + * @ent: the entity + * @firstNode: the fist node in the chunk + * @lastNode: the last nod in the chunk + * + * Callback function used when one needs to be able to track back the + * provenance of a chunk of nodes inherited from an entity replacement. + + d xmlEntityReferenceFunc... + d s * based(######typedef######) + d procptr + + d xmlSetEntityReferenceFunc... + d pr extproc('xmlSetEntityReferenceFunc') + d func value like(xmlEntityReferenceFunc) + + d xmlParseQuotedString... + d pr * extproc('xmlParseQuotedString') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlParseNamespace... + d pr extproc('xmlParseNamespace') + d ctxt value like(xmlParserCtxtPtr) + + d xmlNamespaceParseNSDef... + d pr * extproc('xmlNamespaceParseNSDef') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlScanName pr * extproc('xmlScanName') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlNamespaceParseNCName... + d pr * extproc('xmlNamespaceParseNCName') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + + d xmlParserHandleReference... + d pr extproc('xmlParserHandleReference') + d ctxt value like(xmlParserCtxtPtr) + + d xmlNamespaceParseQName... + d pr * extproc('xmlNamespaceParseQName') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + d prefix * xmlChar *(*) + + * Entities + + d xmlDecodeEntities... + d pr * extproc('xmlDecodeEntities') xmlChar * + d ctxt value like(xmlParserCtxtPtr) + d len value like(xmlCint) + d what value like(xmlCint) + d end value like(xmlChar) + d end2 value like(xmlChar) + d end3 value like(xmlChar) + + d xmlHandleEntity... + d pr extproc('xmlHandleEntity') + d ctxt value like(xmlParserCtxtPtr) + d entity value like(xmlEntityPtr) + /endif LIBXML_LEGACY_ENABLD + + /endif diff --git a/libxml2/os400/libxmlrpg/pattern.rpgle b/libxml2/os400/libxmlrpg/pattern.rpgle new file mode 100644 index 0000000..ef02301 --- /dev/null +++ b/libxml2/os400/libxmlrpg/pattern.rpgle @@ -0,0 +1,130 @@ + * Summary: pattern expression handling + * Description: allows to compile and test pattern expressions for nodes + * either in a tree or based on a parser state. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_PATTERN_H__) + /define XML_PATTERN_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_PATTERN_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + /include "libxmlrpg/dict" + + * xmlPattern: + * + * A compiled (XPath based) pattern to select nodes + + d xmlPatternPtr... + d s * based(######typedef######) + + * xmlPatternFlags: + * + * This is the set of options affecting the behaviour of pattern + * matching with this module + + d xmlPatternFlags... + d s based(######typedef######) + d like(xmlCenum) + d XML_PATTERN_DEFAULT... Simple pattern match + d c X'0000' + d XML_PATTERN_XPATH... Std XPath pattern + d c X'0001' + d XML_PATTERN_XSSEL... Schm sel XPth subset + d c X'0002' + d XML_PATTERN_XSFIELD... Schm fld XPth subset + d c X'0004' + + d xmlFreePattern pr extproc('xmlFreePattern') + d comp value like(xmlPatternPtr) + + d xmlFreePatternList... + d pr extproc('xmlFreePatternList') + d comp value like(xmlPatternPtr) + + d xmlPatterncompile... + d pr extproc('xmlPatterncompile') + d like(xmlPatternPtr) + d pattern * value options(*string) const xmlChar * + d dict * value xmlDict * + d flags value like(xmlCint) + d namespaces * const xmlChar *(*) + + d xmlPatternMatch... + d pr extproc('xmlPatternMatch') + d like(xmlCint) + d comp value like(xmlPatternPtr) + d node value like(xmlNodePtr) + + * streaming interfaces + + d xmlStreamCtxtPtr... + d s * based(######typedef######) + + d xmlPatternStreamable... + d pr extproc('xmlPatternStreamable') + d like(xmlCint) + d comp value like(xmlPatternPtr) + + d xmlPatternMaxDepth... + d pr extproc('xmlPatternMaxDepth') + d like(xmlCint) + d comp value like(xmlPatternPtr) + + d xmlPatternMinDepth... + d pr extproc('xmlPatternMinDepth') + d like(xmlCint) + d comp value like(xmlPatternPtr) + + d xmlPatternFromRoot... + d pr extproc('xmlPatternFromRoot') + d like(xmlCint) + d comp value like(xmlPatternPtr) + + d xmlPatternGetStreamCtxt... + d pr extproc('xmlPatternGetStreamCtxt') + d like(xmlStreamCtxtPtr) + d comp value like(xmlPatternPtr) + + d xmlFreeStreamCtxt... + d pr extproc('xmlFreeStreamCtxt') + d stream value like(xmlStreamCtxtPtr) + + d xmlStreamPushNode... + d pr extproc('xmlStreamPushNode') + d like(xmlCint) + d stream value like(xmlStreamCtxtPtr) + d name * value options(*string) const xmlChar * + d ns * value options(*string) const xmlChar * + d nodeType value like(xmlCint) + + d xmlStreamPush pr extproc('xmlStreamPush') + d like(xmlCint) + d stream value like(xmlStreamCtxtPtr) + d name * value options(*string) const xmlChar * + d ns * value options(*string) const xmlChar * + + d xmlStreamPushAttr... + d pr extproc('xmlStreamPushAttr') + d like(xmlCint) + d stream value like(xmlStreamCtxtPtr) + d name * value options(*string) const xmlChar * + d ns * value options(*string) const xmlChar * + + d xmlStreamPop pr extproc('xmlStreamPop') + d like(xmlCint) + d stream value like(xmlStreamCtxtPtr) + + d xmlStreamWantsAnyNode... + d pr extproc('xmlStreamWantsAnyNode') + d like(xmlCint) + d stream value like(xmlStreamCtxtPtr) + + /endif LIBXML_PATTERN_ENBLD + /endif XML_PATTERN_H__ diff --git a/libxml2/os400/libxmlrpg/relaxng.rpgle b/libxml2/os400/libxmlrpg/relaxng.rpgle new file mode 100644 index 0000000..15b8471 --- /dev/null +++ b/libxml2/os400/libxmlrpg/relaxng.rpgle @@ -0,0 +1,310 @@ + * Summary: implementation of the Relax-NG validation + * Description: implementation of the Relax-NG validation + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_RELAX_NG__) + /define XML_RELAX_NG__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_SCHEMAS_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/hash" + /include "libxmlrpg/xmlstring" + + d xmlRelaxNGPtr s * based(######typedef######) + + * xmlRelaxNGValidityErrorFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of an error callback from a Relax-NG validation + + d xmlRelaxNGValidityErrorFunc... + d s * based(######typedef######) + d procptr + + * xmlRelaxNGValidityWarningFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of a warning callback from a Relax-NG validation + + d xmlRelaxNGValidityWarningFunc... + d s * based(######typedef######) + d procptr + + * A schemas validation context + + d xmlRelaxNGParserCtxtPtr... + d s * based(######typedef######) + + d xmlRelaxNGValidCtxtPtr... + d s * based(######typedef######) + + * xmlRelaxNGValidErr: + * + * List of possible Relax NG validation errors + + d xmlRelaxNGValidErr... + d s based(######typedef######) + d like(xmlCenum) + d XML_RELAXNG_OK... + d c 0 + d XML_RELAXNG_ERR_MEMORY... + d c 1 + d XML_RELAXNG_ERR_TYPE... + d c 2 + d XML_RELAXNG_ERR_TYPEVAL... + d c 3 + d XML_RELAXNG_ERR_DUPID... + d c 4 + d XML_RELAXNG_ERR_TYPECMP... + d c 5 + d XML_RELAXNG_ERR_NOSTATE... + d c 6 + d XML_RELAXNG_ERR_NODEFINE... + d c 7 + d XML_RELAXNG_ERR_LISTEXTRA... + d c 8 + d XML_RELAXNG_ERR_LISTEMPTY... + d c 9 + d XML_RELAXNG_ERR_INTERNODATA... + d c 10 + d XML_RELAXNG_ERR_INTERSEQ... + d c 11 + d XML_RELAXNG_ERR_INTEREXTRA... + d c 12 + d XML_RELAXNG_ERR_ELEMNAME... + d c 13 + d XML_RELAXNG_ERR_ATTRNAME... + d c 14 + d XML_RELAXNG_ERR_ELEMNONS... + d c 15 + d XML_RELAXNG_ERR_ATTRNONS... + d c 16 + d XML_RELAXNG_ERR_ELEMWRONGNS... + d c 17 + d XML_RELAXNG_ERR_ATTRWRONGNS... + d c 18 + d XML_RELAXNG_ERR_ELEMEXTRANS... + d c 19 + d XML_RELAXNG_ERR_ATTREXTRANS... + d c 20 + d XML_RELAXNG_ERR_ELEMNOTEMPTY... + d c 21 + d XML_RELAXNG_ERR_NOELEM... + d c 22 + d XML_RELAXNG_ERR_NOTELEM... + d c 23 + d XML_RELAXNG_ERR_ATTRVALID... + d c 24 + d XML_RELAXNG_ERR_CONTENTVALID... + d c 25 + d XML_RELAXNG_ERR_EXTRACONTENT... + d c 26 + d XML_RELAXNG_ERR_INVALIDATTR... + d c 27 + d XML_RELAXNG_ERR_DATAELEM... + d c 28 + d XML_RELAXNG_ERR_VALELEM... + d c 29 + d XML_RELAXNG_ERR_LISTELEM... + d c 30 + d XML_RELAXNG_ERR_DATATYPE... + d c 31 + d XML_RELAXNG_ERR_VALUE... + d c 32 + d XML_RELAXNG_ERR_LIST... + d c 33 + d XML_RELAXNG_ERR_NOGRAMMAR... + d c 34 + d XML_RELAXNG_ERR_EXTRADATA... + d c 35 + d XML_RELAXNG_ERR_LACKDATA... + d c 36 + d XML_RELAXNG_ERR_INTERNAL... + d c 37 + d XML_RELAXNG_ERR_ELEMWRONG... + d c 38 + d XML_RELAXNG_ERR_TEXTWRONG... + d c 39 + + * xmlRelaxNGParserFlags: + * + * List of possible Relax NG Parser flags + + d xmlRelaxNGParserFlag... + d s based(######typedef######) + d like(xmlCenum) + d XML_RELAXNGP_NONE... + d c 0 + d XML_RELAXNGP_FREE_DOC... + d c 1 + d XML_RELAXNGP_CRNG... + d c 2 + + d xmlRelaxNGInitTypes... + d pr extproc('xmlRelaxNGInitTypes') + d like(xmlCint) + + d xmlRelaxNGCleanupTypes... + d pr extproc('xmlRelaxNGCleanupTypes') + + + * Interfaces for parsing. + + d xmlRelaxNGNewParserCtxt... + d pr extproc('xmlRelaxNGNewParserCtxt') + d like(xmlRelaxNGParserCtxtPtr) + d URL * value options(*string) const char * + + d xmlRelaxNGNewMemParserCtxt... + d pr extproc('xmlRelaxNGNewMemParserCtxt') + d like(xmlRelaxNGParserCtxtPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + + d xmlRelaxNGNewDocParserCtxt... + d pr extproc('xmlRelaxNGNewDocParserCtxt') + d like(xmlRelaxNGParserCtxtPtr) + d doc value like(xmlDocPtr) + + d xmlRelaxParserSetFlag... + d pr extproc('xmlRelaxParserSetFlag') + d like(xmlCint) + d ctxt value like(xmlRelaxNGParserCtxtPtr) + d flag value like(xmlCint) + + d xmlRelaxNGFreeParserCtxt... + d pr extproc('xmlRelaxNGFreeParserCtxt') + d ctxt value like(xmlRelaxNGParserCtxtPtr) + + d xmlRelaxNGSetParserErrors... + d pr extproc('xmlRelaxNGSetParserErrors') + d ctxt value like(xmlRelaxNGParserCtxtPtr) + d err value + d like(xmlRelaxNGValidityErrorFunc) + d warn value + d like(xmlRelaxNGValidityWarningFunc) + d ctx * value void * + + d xmlRelaxNGGetParserErrors... + d pr extproc('xmlRelaxNGGetParserErrors') + d like(xmlCint) + d ctxt value like(xmlRelaxNGParserCtxtPtr) + d err like(xmlRelaxNGValidityErrorFunc) + d warn like(xmlRelaxNGValidityWarningFunc) + d ctx * void *(*) + + d xmlRelaxNGSetParserStructuredErrors... + d pr extproc( + d 'xmlRelaxNGSetParserStructuredErrors' + d ) + d ctxt value like(xmlRelaxNGParserCtxtPtr) + d serror value like(xmlStructuredErrorFunc) + d ctx * value void * + + d xmlRelaxNGParse... + d pr extproc('xmlRelaxNGParse') + d like(xmlRelaxNGPtr) + d ctxt value like(xmlRelaxNGParserCtxtPtr) + + d xmlRelaxNGFree pr extproc('xmlRelaxNGFree') + d schema value like(xmlRelaxNGPtr) + + + /if defined(LIBXML_OUTPUT_ENABLED) + d xmlRelaxNGDump pr extproc('xmlRelaxNGDump') + d output * value FILE * + d schema value like(xmlRelaxNGPtr) + + d xmlRelaxNGDumpTree... + d pr extproc('xmlRelaxNGDumpTree') + d output * value FILE * + d schema value like(xmlRelaxNGPtr) + /endif LIBXML_OUTPUT_ENABLD + + * Interfaces for validating + + d xmlRelaxNGSetValidErrors... + d pr extproc('xmlRelaxNGSetValidErrors') + d ctxt value like(xmlRelaxNGValidCtxtPtr) + d err value + d like(xmlRelaxNGValidityErrorFunc) + d warn value + d like(xmlRelaxNGValidityWarningFunc) + d ctx * value void * + + d xmlRelaxNGGetValidErrors... + d pr extproc('xmlRelaxNGGetValidErrors') + d like(xmlCint) + d ctxt value like(xmlRelaxNGValidCtxtPtr) + d err like(xmlRelaxNGValidityErrorFunc) + d warn like(xmlRelaxNGValidityWarningFunc) + d ctx * value void * * + + d xmlRelaxNGSetValidStructuredErrors... + d pr extproc( + d 'xmlRelaxNGSetValidStructuredErrors') + d ctxt value like(xmlRelaxNGValidCtxtPtr) + d serror value like(xmlStructuredErrorFunc) + d ctx * value void * + + d xmlRelaxNGNewValidCtxt... + d pr extproc('xmlRelaxNGNewValidCtxt') + d like(xmlRelaxNGValidCtxtPtr) + d schema value like(xmlRelaxNGPtr) + + d xmlRelaxNGFreeValidCtxt... + d pr extproc('xmlRelaxNGFreeValidCtxt') + d ctxt value like(xmlRelaxNGValidCtxtPtr) + + d xmlRelaxNGValidateDoc... + d pr extproc('xmlRelaxNGValidateDoc') + d like(xmlCint) + d ctxt value like(xmlRelaxNGValidCtxtPtr) + d doc value like(xmlDocPtr) + + * Interfaces for progressive validation when possible + + d xmlRelaxNGValidatePushElement... + d pr extproc( + d 'xmlRelaxNGValidatePushElement') + d like(xmlCint) + d ctxt value like(xmlRelaxNGValidCtxtPtr) + d doc value like(xmlDocPtr) + d elem value like(xmlNodePtr) + + d xmlRelaxNGValidatePushCData... + d pr extproc( + d 'xmlRelaxNGValidatePushCData') + d like(xmlCint) + d ctxt value like(xmlRelaxNGValidCtxtPtr) + d data * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlRelaxNGValidatePopElement... + d pr extproc( + d 'xmlRelaxNGValidatePopElement') + d like(xmlCint) + d ctxt value like(xmlRelaxNGValidCtxtPtr) + d doc value like(xmlDocPtr) + d elem value like(xmlNodePtr) + + d xmlRelaxNGValidateFullElement... + d pr extproc( + d 'xmlRelaxNGValidateFullElement') + d like(xmlCint) + d ctxt value like(xmlRelaxNGValidCtxtPtr) + d doc value like(xmlDocPtr) + d elem value like(xmlNodePtr) + + /endif LIBXML_SCHEMAS_ENBLD + /endif XML_RELAX_NG__ diff --git a/libxml2/os400/libxmlrpg/schemasInternals.rpgle b/libxml2/os400/libxmlrpg/schemasInternals.rpgle new file mode 100644 index 0000000..8d3013e --- /dev/null +++ b/libxml2/os400/libxmlrpg/schemasInternals.rpgle @@ -0,0 +1,1142 @@ + * Summary: internal interfaces for XML Schemas + * Description: internal interfaces for the XML Schemas handling + * and schema validity checking + * The Schemas development is a Work In Progress. + * Some of those interfaces are not garanteed to be API or + * ABI stable ! + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_SCHEMA_INTERNALS_H__) + /define XML_SCHEMA_INTERNALS_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_SCHEMAS_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/xmlregexp" + /include "libxmlrpg/hash" + /include "libxmlrpg/dict" + + d xmlSchemaValType... + d s based(######typedef######) + d like(xmlCenum) + d XML_SCHEMAS_UNKNOWN... + d c 0 + d XML_SCHEMAS_STRING... + d c 1 + d XML_SCHEMAS_NORMSTRING... + d c 2 + d XML_SCHEMAS_DECIMAL... + d c 3 + d XML_SCHEMAS_TIME... + d c 4 + d XML_SCHEMAS_GDAY... + d c 5 + d XML_SCHEMAS_GMONTH... + d c 6 + d XML_SCHEMAS_GMONTHDAY... + d c 7 + d XML_SCHEMAS_GYEAR... + d c 8 + d XML_SCHEMAS_GYEARMONTH... + d c 9 + d XML_SCHEMAS_DATE... + d c 10 + d XML_SCHEMAS_DATETIME... + d c 11 + d XML_SCHEMAS_DURATION... + d c 12 + d XML_SCHEMAS_FLOAT... + d c 13 + d XML_SCHEMAS_DOUBLE... + d c 14 + d XML_SCHEMAS_BOOLEAN... + d c 15 + d XML_SCHEMAS_TOKEN... + d c 16 + d XML_SCHEMAS_LANGUAGE... + d c 17 + d XML_SCHEMAS_NMTOKEN... + d c 18 + d XML_SCHEMAS_NMTOKENS... + d c 19 + d XML_SCHEMAS_NAME... + d c 20 + d XML_SCHEMAS_QNAME... + d c 21 + d XML_SCHEMAS_NCNAME... + d c 22 + d XML_SCHEMAS_ID... + d c 23 + d XML_SCHEMAS_IDREF... + d c 24 + d XML_SCHEMAS_IDREFS... + d c 25 + d XML_SCHEMAS_ENTITY... + d c 26 + d XML_SCHEMAS_ENTITIES... + d c 27 + d XML_SCHEMAS_NOTATION... + d c 28 + d XML_SCHEMAS_ANYURI... + d c 29 + d XML_SCHEMAS_INTEGER... + d c 30 + d XML_SCHEMAS_NPINTEGER... + d c 31 + d XML_SCHEMAS_NINTEGER... + d c 32 + d XML_SCHEMAS_NNINTEGER... + d c 33 + d XML_SCHEMAS_PINTEGER... + d c 34 + d XML_SCHEMAS_INT... + d c 35 + d XML_SCHEMAS_UINT... + d c 36 + d XML_SCHEMAS_LONG... + d c 37 + d XML_SCHEMAS_ULONG... + d c 38 + d XML_SCHEMAS_SHORT... + d c 39 + d XML_SCHEMAS_USHORT... + d c 40 + d XML_SCHEMAS_BYTE... + d c 41 + d XML_SCHEMAS_UBYTE... + d c 42 + d XML_SCHEMAS_HEXBINARY... + d c 43 + d XML_SCHEMAS_BASE64BINARY... + d c 44 + d XML_SCHEMAS_ANYTYPE... + d c 45 + d XML_SCHEMAS_ANYSIMPLETYPE... + d c 46 + + * XML Schemas defines multiple type of types. + + d xmlSchemaTypeType... + d s based(######typedef######) + d like(xmlCenum) + d XML_SCHEMA_TYPE_BASIC... A builtin datatype + d c 1 + d XML_SCHEMA_TYPE_ANY... + d c 2 + d XML_SCHEMA_TYPE_FACET... + d c 3 + d XML_SCHEMA_TYPE_SIMPLE... + d c 4 + d XML_SCHEMA_TYPE_COMPLEX... + d c 5 + d XML_SCHEMA_TYPE_SEQUENCE... + d c 6 + d XML_SCHEMA_TYPE_CHOICE... + d c 7 + d XML_SCHEMA_TYPE_ALL... + d c 8 + d XML_SCHEMA_TYPE_SIMPLE_CONTENT... + d c 9 + d XML_SCHEMA_TYPE_COMPLEX_CONTENT... + d c 10 + d XML_SCHEMA_TYPE_UR... + d c 11 + d XML_SCHEMA_TYPE_RESTRICTION... + d c 12 + d XML_SCHEMA_TYPE_EXTENSION... + d c 13 + d XML_SCHEMA_TYPE_ELEMENT... + d c 14 + d XML_SCHEMA_TYPE_ATTRIBUTE... + d c 15 + d XML_SCHEMA_TYPE_ATTRIBUTEGROUP... + d c 16 + d XML_SCHEMA_TYPE_GROUP... + d c 17 + d XML_SCHEMA_TYPE_NOTATION... + d c 18 + d XML_SCHEMA_TYPE_LIST... + d c 19 + d XML_SCHEMA_TYPE_UNION... + d c 20 + d XML_SCHEMA_TYPE_ANY_ATTRIBUTE... + d c 21 + d XML_SCHEMA_TYPE_IDC_UNIQUE... + d c 22 + d XML_SCHEMA_TYPE_IDC_KEY... + d c 23 + d XML_SCHEMA_TYPE_IDC_KEYREF... + d c 24 + d XML_SCHEMA_TYPE_PARTICLE... + d c 25 + d XML_SCHEMA_TYPE_ATTRIBUTE_USE... + d c 26 + d XML_SCHEMA_FACET_MININCLUSIVE... + d c 1000 + d XML_SCHEMA_FACET_MINEXCLUSIVE... + d c 1001 + d XML_SCHEMA_FACET_MAXINCLUSIVE... + d c 1002 + d XML_SCHEMA_FACET_MAXEXCLUSIVE... + d c 1003 + d XML_SCHEMA_FACET_TOTALDIGITS... + d c 1004 + d XML_SCHEMA_FACET_FRACTIONDIGITS... + d c 1005 + d XML_SCHEMA_FACET_PATTERN... + d c 1006 + d XML_SCHEMA_FACET_ENUMERATION... + d c 1007 + d XML_SCHEMA_FACET_WHITESPACE... + d c 1008 + d XML_SCHEMA_FACET_LENGTH... + d c 1009 + d XML_SCHEMA_FACET_MAXLENGTH... + d c 1010 + d XML_SCHEMA_FACET_MINLENGTH... + d c 1011 + d XML_SCHEMA_EXTRA_QNAMEREF... + d c 2000 + d XML_SCHEMA_EXTRA_ATTR_USE_PROHIB... + d c 2001 + + d xmlSchemaContentType... + d s based(######typedef######) + d like(xmlCenum) + d XML_SCHEMA_CONTENT_UNKNOWN... + d c 0 + d XML_SCHEMA_CONTENT_EMPTY... + d c 1 + d XML_SCHEMA_CONTENT_ELEMENTS... + d c 2 + d XML_SCHEMA_CONTENT_MIXED... + d c 3 + d XML_SCHEMA_CONTENT_SIMPLE... + d c 4 + d XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS... Obsolete + d c 5 + d XML_SCHEMA_CONTENT_BASIC... + d c 6 + d XML_SCHEMA_CONTENT_ANY... + d c 7 + + d xmlSchemaValPtr... + d s * based(######typedef######) + + d xmlSchemaTypePtr... + d s * based(######typedef######) + + d xmlSchemaFacetPtr... + d s * based(######typedef######) + + * Annotation + + d xmlSchemaAnnotPtr... + d s * based(######typedef######) + + d xmlSchemaAnnot ds based(xmlSchemaAnnotPtr) + d align qualified + d next like(xmlSchemaAnnotPtr) + d content like(xmlNodePtr) The annotation + + * XML_SCHEMAS_ANYATTR_SKIP: + * + * Skip unknown attribute from validation + * Obsolete, not used anymore. + + d XML_SCHEMAS_ANYATTR_SKIP... + d c 1 + + * XML_SCHEMAS_ANYATTR_LAX: + * + * Ignore validation non definition on attributes + * Obsolete, not used anymore. + + d XML_SCHEMAS_ANYATTR_LAX... + d c 2 + + * XML_SCHEMAS_ANYATTR_STRICT: + * + * Apply strict validation rules on attributes + * Obsolete, not used anymore. + + d XML_SCHEMAS_ANYATTR_STRICT... + d c 3 + + * XML_SCHEMAS_ANY_SKIP: + * + * Skip unknown attribute from validation + + d XML_SCHEMAS_ANY_SKIP... + d c 1 + + * XML_SCHEMAS_ANY_LAX: + * + * Used by wildcards. + * Validate if type found, don't worry if not found + + d XML_SCHEMAS_ANY_LAX... + d c 2 + + * XML_SCHEMAS_ANY_STRICT: + * + * Used by wildcards. + * Apply strict validation rules + + d XML_SCHEMAS_ANY_STRICT... + d c 3 + + * XML_SCHEMAS_ATTR_USE_PROHIBITED: + * + * Used by wildcards. + * The attribute is prohibited. + + d XML_SCHEMAS_ATTR_USE_PROHIBITED... + d c 0 + + * XML_SCHEMAS_ATTR_USE_REQUIRED: + * + * The attribute is required. + + d XML_SCHEMAS_ATTR_USE_REQUIRED... + d c 1 + + * XML_SCHEMAS_ATTR_USE_OPTIONAL: + * + * The attribute is optional. + + d XML_SCHEMAS_ATTR_USE_OPTIONAL... + d c 2 + + * XML_SCHEMAS_ATTR_GLOBAL: + * + * allow elements in no namespace + + d XML_SCHEMAS_ATTR_GLOBAL... + d c X'0001' + + * XML_SCHEMAS_ATTR_NSDEFAULT: + * + * allow elements in no namespace + + d XML_SCHEMAS_ATTR_NSDEFAULT... + d c X'0080' + + * XML_SCHEMAS_ATTR_INTERNAL_RESOLVED: + * + * this is set when the "type" and "ref" references + * have been resolved. + + d XML_SCHEMAS_ATTR_INTERNAL_RESOLVED... + d c X'0100' + + * XML_SCHEMAS_ATTR_FIXED: + * + * the attribute has a fixed value + + d XML_SCHEMAS_ATTR_FIXED... + d c X'0200' + + * xmlSchemaAttribute: + * An attribute definition. + + d xmlSchemaAttributePtr... + d s * based(######typedef######) + + d xmlSchemaAttribute... + d ds based(xmlSchemaAttributePtr) + d align qualified + d type like(xmlSchemaTypeType) + d next like(xmlSchemaAttributePtr) Next attribute + d name * const xmlChar * + d id * const xmlChar * + d ref * const xmlChar * + d refNs * const xmlChar * + d typeName * const xmlChar * + d typeNs * const xmlChar * + d annot like(xmlSchemaAnnotPtr) + * + d base like(xmlSchemaTypePtr) Deprecated + d occurs like(xmlCint) Deprecated + d defValue * const xmlChar * + d subtypes like(xmlSchemaTypePtr) The type definition + d node like(xmlNodePtr) + d targetNamespace... const xmlChar * + d * + d flags like(xmlCint) + d refPrefix * const xmlChar * + d defVal like(xmlSchemaValPtr) Compiled constraint + d refDecl like(xmlSchemaAttributePtr) Deprecated + + * xmlSchemaAttributeLink: + * Used to build a list of attribute uses on complexType definitions. + * WARNING: Deprecated; not used. + + d xmlSchemaAttributeLinkPtr... + d s * based(######typedef######) + + d xmlSchemaAttributeLink... + d ds based(xmlSchemaAttributeLinkPtr) + d align qualified + d next like(xmlSchemaAttributeLinkPtr) The next link + d attr like(xmlSchemaAttributePtr) The linked attribute + + * XML_SCHEMAS_WILDCARD_COMPLETE: + * + * If the wildcard is complete. + + d XML_SCHEMAS_WILDCARD_COMPLETE... + d c X'0001' + + * xmlSchemaCharValueLink: + * Used to build a list of namespaces on wildcards. + + d xmlSchemaWildcardNsPtr... + d s * based(######typedef######) + + d xmlSchemaWildcardNs... + d ds based(xmlSchemaWildcardNsPtr) + d align qualified + d next like(xmlSchemaWildcardNsPtr) The next link + d value * const xmlChar * + + * xmlSchemaWildcard. + * A wildcard. + + d xmlSchemaWildcardPtr... + d s * based(######typedef######) + + d xmlSchemaWildcard... + d ds based(xmlSchemaWildcardPtr) + d align qualified + d type like(xmlSchemaTypeType) Kind of type + d id * const xmlChar * + d annot like(xmlSchemaAnnotPtr) + d node like(xmlNodePtr) + d minOccurs like(xmlCint) Deprecated; not used + d maxOccurs like(xmlCint) Deprecated; not used + d processContents... + d like(xmlCint) + d any like(xmlCint) Ns constraint ##any? + d nsSet like(xmlSchemaWildcardNsPtr) Allowed namspce list + d negNsSet like(xmlSchemaWildcardNsPtr) Negated namespace + d flags like(xmlCint) Deprecated; not used + + * XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED: + * + * The attribute wildcard has been already builded. + + d XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED... + d c X'0001' + + * XML_SCHEMAS_ATTRGROUP_GLOBAL: + * + * The attribute wildcard has been already builded. + + d XML_SCHEMAS_ATTRGROUP_GLOBAL... + d c X'0002' + + * XML_SCHEMAS_ATTRGROUP_MARKED: + * + * Marks the attr group as marked; used for circular checks. + + d XML_SCHEMAS_ATTRGROUP_MARKED... + d c X'0004' + + * XML_SCHEMAS_ATTRGROUP_REDEFINED: + * + * The attr group was redefined. + + d XML_SCHEMAS_ATTRGROUP_REDEFINED... + d c X'0008' + + * XML_SCHEMAS_ATTRGROUP_HAS_REFS: + * + * Whether this attr. group contains attr. group references. + + d XML_SCHEMAS_ATTRGROUP_HAS_REFS... + d c X'0010' + + * An attribute group definition. + * + * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures + * must be kept similar + + d xmlSchemaAttributeGroupPtr... + d s * based(######typedef######) + + d xmlSchemaAttributeGroup... + d ds based(xmlSchemaAttributeGroupPtr) + d align qualified + d type like(xmlSchemaTypeType) Kind of type + d next like(xmlSchemaAttributePtr) Next attribute + d name * const xmlChar * + d id * const xmlChar * + d ref * const xmlChar * + d refNs * const xmlChar * + d annot like(xmlSchemaAnnotPtr) + * + d attributes like(xmlSchemaAttributePtr) Deprecated; not used + d node like(xmlNodePtr) + d flags like(xmlCint) + d attributeWildcard... + d like(xmlSchemaWildcardPtr) + d refPrefix * const xmlChar * + d refItem like(xmlSchemaAttributeGroupPtr) Deprecated; not used + d targetNamespace... + d * const xmlChar * + d attrUses * void * + + * xmlSchemaTypeLink: + * Used to build a list of types (e.g. member types of + * simpleType with variety "union"). + + d xmlSchemaTypeLinkPtr... + d s * based(######typedef######) + + d xmlSchemaTypeLink... + d ds based(xmlSchemaTypeLinkPtr) + d align qualified + d next like(xmlSchemaTypeLinkPtr) Next type link + d type like(xmlSchemaTypePtr) Linked type + + * xmlSchemaFacetLink: + * Used to build a list of facets. + + d xmlSchemaFacetLinkPtr... + d s * based(######typedef######) + + d xmlSchemaFacetLink... + d ds based(xmlSchemaFacetLinkPtr) + d align qualified + d next like(xmlSchemaFacetLinkPtr) Next facet link + d facet like(xmlSchemaFacetPtr) Linked facet + + * XML_SCHEMAS_TYPE_MIXED: + * + * the element content type is mixed + + d XML_SCHEMAS_TYPE_MIXED... + d c X'00000001' + + * XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION: + * + * the simple or complex type has a derivation method of "extension". + + d XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION... + d c X'00000002' + + * XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION: + * + * the simple or complex type has a derivation method of "restriction". + + d XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION... + d c X'00000004' + + * XML_SCHEMAS_TYPE_GLOBAL: + * + * the type is global + + d XML_SCHEMAS_TYPE_GLOBAL... + d c X'00000008' + + * XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD: + * + * the complexType owns an attribute wildcard, i.e. + * it can be freed by the complexType + + d XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD... Obsolete. + d c X'00000010' + + * XML_SCHEMAS_TYPE_VARIETY_ABSENT: + * + * the simpleType has a variety of "absent". + * TODO: Actually not necessary :-/, since if + * none of the variety flags occur then it's + * automatically absent. + + d XML_SCHEMAS_TYPE_VARIETY_ABSENT... + d c X'00000020' + + * XML_SCHEMAS_TYPE_VARIETY_LIST: + * + * the simpleType has a variety of "list". + + d XML_SCHEMAS_TYPE_VARIETY_LIST... + d c X'00000040' + + * XML_SCHEMAS_TYPE_VARIETY_UNION: + * + * the simpleType has a variety of "union". + + d XML_SCHEMAS_TYPE_VARIETY_UNION... + d c X'00000080' + + * XML_SCHEMAS_TYPE_VARIETY_ATOMIC: + * + * the simpleType has a variety of "union". + + d XML_SCHEMAS_TYPE_VARIETY_ATOMIC... + d c X'00000100' + + * XML_SCHEMAS_TYPE_FINAL_EXTENSION: + * + * the complexType has a final of "extension". + + d XML_SCHEMAS_TYPE_FINAL_EXTENSION... + d c X'00000200' + + * XML_SCHEMAS_TYPE_FINAL_RESTRICTION: + * + * the simpleType/complexType has a final of "restriction". + + d XML_SCHEMAS_TYPE_FINAL_RESTRICTION... + d c X'00000400' + + * XML_SCHEMAS_TYPE_FINAL_LIST: + * + * the simpleType has a final of "list". + + d XML_SCHEMAS_TYPE_FINAL_LIST... + d c X'00000800' + + * XML_SCHEMAS_TYPE_FINAL_UNION: + * + * the simpleType has a final of "union". + + d XML_SCHEMAS_TYPE_FINAL_UNION... + d c X'00001000' + + * XML_SCHEMAS_TYPE_FINAL_DEFAULT: + * + * the simpleType has a final of "default". + + d XML_SCHEMAS_TYPE_FINAL_DEFAULT... + d c X'00002000' + + * XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE: + * + * Marks the item as a builtin primitive. + + d XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE... + d c X'00004000' + + * XML_SCHEMAS_TYPE_MARKED: + * + * Marks the item as marked; used for circular checks. + + d XML_SCHEMAS_TYPE_MARKED... + d c X'00010000' + + * XML_SCHEMAS_TYPE_BLOCK_DEFAULT: + * + * the complexType did not specify 'block' so use the default of the + * <schema> item. + + d XML_SCHEMAS_TYPE_BLOCK_DEFAULT... + d c X'00020000' + + * XML_SCHEMAS_TYPE_BLOCK_EXTENSION: + * + * the complexType has a 'block' of "extension". + + d XML_SCHEMAS_TYPE_BLOCK_EXTENSION... + d c X'00040000' + + * XML_SCHEMAS_TYPE_BLOCK_RESTRICTION: + * + * the complexType has a 'block' of "restriction". + + d XML_SCHEMAS_TYPE_BLOCK_RESTRICTION... + d c X'00080000' + + * XML_SCHEMAS_TYPE_ABSTRACT: + * + * the simple/complexType is abstract. + + d XML_SCHEMAS_TYPE_ABSTRACT... + d c X'00100000' + + * XML_SCHEMAS_TYPE_FACETSNEEDVALUE: + * + * indicates if the facets need a computed value + + d XML_SCHEMAS_TYPE_FACETSNEEDVALUE... + d c X'00200000' + + * XML_SCHEMAS_TYPE_INTERNAL_RESOLVED: + * + * indicates that the type was typefixed + + d XML_SCHEMAS_TYPE_INTERNAL_RESOLVED... + d c X'00400000' + + * XML_SCHEMAS_TYPE_INTERNAL_INVALID: + * + * indicates that the type is invalid + + d XML_SCHEMAS_TYPE_INTERNAL_INVALID... + d c X'00800000' + + * XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE: + * + * a whitespace-facet value of "preserve" + + d XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE... + d c X'01000000' + + * XML_SCHEMAS_TYPE_WHITESPACE_REPLACE: + * + * a whitespace-facet value of "replace" + + d XML_SCHEMAS_TYPE_WHITESPACE_REPLACE... + d c X'02000000' + + * XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE: + * + * a whitespace-facet value of "collapse" + + d XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE... + d c X'04000000' + + * XML_SCHEMAS_TYPE_HAS_FACETS: + * + * has facets + + d XML_SCHEMAS_TYPE_HAS_FACETS... + d c X'08000000' + + * XML_SCHEMAS_TYPE_NORMVALUENEEDED: + * + * indicates if the facets (pattern) need a normalized value + + d XML_SCHEMAS_TYPE_NORMVALUENEEDED... + d c X'10000000' + + * XML_SCHEMAS_TYPE_FIXUP_1: + * + * First stage of fixup was done. + + d XML_SCHEMAS_TYPE_FIXUP_1... + d c X'20000000' + + * XML_SCHEMAS_TYPE_REDEFINED: + * + * The type was redefined. + + d XML_SCHEMAS_TYPE_REDEFINED... + d c X'40000000' + + /if defined(DISABLED) + * XML_SCHEMAS_TYPE_REDEFINING: + * + * The type redefines an other type. + + d XML_SCHEMAS_TYPE_REDEFINING... + d c X'80000000' + /endif + + * _xmlSchemaType: + * + * Schemas type definition. + + d xmlSchemaType... + d ds based(xmlSchemaTypePtr) + d align qualified + d type like(xmlSchemaTypeType) Kind of type + d next like(xmlSchemaTypePtr) Next type + d name * const xmlChar * + d id * const xmlChar * + d ref * const xmlChar * + d refNs * const xmlChar * + d annot like(xmlSchemaAnnotPtr) + d subtypes like(xmlSchemaTypePtr) + d attributes like(xmlSchemaAttributePtr) Deprecated; not used + d node like(xmlNodePtr) + d minOccurs like(xmlCint) Deprecated; not used + d maxOccurs like(xmlCint) Deprecated; not used + * + d flags like(xmlCint) + d contentType like(xmlSchemaContentType) + d base * const xmlChar * + d baseNs * const xmlChar * + d baseType like(xmlSchemaTypePtr) Base type component + d facets like(xmlSchemaFacetPtr) Local facets + d redef like(xmlSchemaTypePtr) Deprecated; not used + d recurse like(xmlCint) Obsolete + d attributeUses like(xmlSchemaAttributeLinkPtr) Deprecated; not used + d attributeWildcard... + d like(xmlSchemaWildcardPtr) + d builtInType like(xmlCint) Built-in types type + d memberTypes like(xmlSchemaTypeLinkPtr) Union member-types + d facetSet like(xmlSchemaFacetLinkPtr) All facets + d refPrefix * const xmlChar * + d contentTypeDef... + d like(xmlSchemaTypePtr) + d contModel like(xmlRegexpPtr) Content model autom. + d targetNamespace... + d * const xmlChar * + d attrUses * void * + + * xmlSchemaElement: + * An element definition. + * + * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of + * structures must be kept similar + + * XML_SCHEMAS_ELEM_NILLABLE: + * + * the element is nillable + + d XML_SCHEMAS_ELEM_NILLABLE... + d c X'00000001' + + * XML_SCHEMAS_ELEM_GLOBAL: + * + * the element is global + + d XML_SCHEMAS_ELEM_GLOBAL... + d c X'00000002' + + * XML_SCHEMAS_ELEM_DEFAULT: + * + * the element has a default value + + d XML_SCHEMAS_ELEM_DEFAULT... + d c X'00000004' + + * XML_SCHEMAS_ELEM_FIXED: + * + * the element has a fixed value + + d XML_SCHEMAS_ELEM_FIXED... + d c X'00000008' + + * XML_SCHEMAS_ELEM_ABSTRACT: + * + * the element is abstract + + d XML_SCHEMAS_ELEM_ABSTRACT... + d c X'00000010' + + * XML_SCHEMAS_ELEM_TOPLEVEL: + * + * the element is top level + * obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead + + d XML_SCHEMAS_ELEM_TOPLEVEL... + d c X'00000020' + + * XML_SCHEMAS_ELEM_REF: + * + * the element is a reference to a type + + d XML_SCHEMAS_ELEM_REF... + d c X'00000040' + + * XML_SCHEMAS_ELEM_NSDEFAULT: + * + * allow elements in no namespace + * Obsolete, not used anymore. + + d XML_SCHEMAS_ELEM_NSDEFAULT... + d c X'00000080' + + * XML_SCHEMAS_ELEM_INTERNAL_RESOLVED: + * + * this is set when "type", "ref", "substitutionGroup" + * references have been resolved. + + d XML_SCHEMAS_ELEM_INTERNAL_RESOLVED... + d c X'00000100' + + * XML_SCHEMAS_ELEM_CIRCULAR: + * + * a helper flag for the search of circular references. + + d XML_SCHEMAS_ELEM_CIRCULAR... + d c X'00000200' + + * XML_SCHEMAS_ELEM_BLOCK_ABSENT: + * + * the "block" attribute is absent + + d XML_SCHEMAS_ELEM_BLOCK_ABSENT... + d c X'00000400' + + * XML_SCHEMAS_ELEM_BLOCK_EXTENSION: + * + * disallowed substitutions are absent + + d XML_SCHEMAS_ELEM_BLOCK_EXTENSION... + d c X'00000800' + + * XML_SCHEMAS_ELEM_BLOCK_RESTRICTION: + * + * disallowed substitutions: "restriction" + + d XML_SCHEMAS_ELEM_BLOCK_RESTRICTION... + d c X'00001000' + + * XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION: + * + * disallowed substitutions: "substituion" + + d XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION... + d c X'00002000' + + * XML_SCHEMAS_ELEM_FINAL_ABSENT: + * + * substitution group exclusions are absent + + d XML_SCHEMAS_ELEM_FINAL_ABSENT... + d c X'00004000' + + * XML_SCHEMAS_ELEM_FINAL_EXTENSION: + * + * substitution group exclusions: "extension" + + d XML_SCHEMAS_ELEM_FINAL_EXTENSION... + d c X'00008000' + + * XML_SCHEMAS_ELEM_FINAL_RESTRICTION: + * + * substitution group exclusions: "restriction" + + d XML_SCHEMAS_ELEM_FINAL_RESTRICTION... + d c X'00010000' + + * XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD: + * + * the declaration is a substitution group head + + d XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD... + d c X'00020000' + + * XML_SCHEMAS_ELEM_INTERNAL_CHECKED: + * + * this is set when the elem decl has been checked against + * all constraints + + d XML_SCHEMAS_ELEM_INTERNAL_CHECKED... + d c X'00040000' + + d xmlSchemaElementPtr... + d s * based(######typedef######) + + d xmlSchemaElement... + d ds based(xmlSchemaElementPtr) + d align qualified + d type like(xmlSchemaTypeType) Kind of type + d next like(xmlSchemaElementPtr) Not used ? + d name * const xmlChar * + d id * const xmlChar * + d ref * const xmlChar * + d refNs * const xmlChar * + d annot like(xmlSchemaAnnotPtr) + d subtypes like(xmlSchemaTypePtr) + d attributes like(xmlSchemaAttributePtr) Deprecated; not used + d node like(xmlNodePtr) + d minOccurs like(xmlCint) Deprecated; not used + d maxOccurs like(xmlCint) Deprecated; not used + * + d flags like(xmlCint) + d targetNamespace... + d * const xmlChar * + d namedType * const xmlChar * + d namedTypeNs * const xmlChar * + d substGroup * const xmlChar * + d substGroupNs * const xmlChar * + d scope * const xmlChar * + d value * const xmlChar * + d refDecl like(xmlSchemaElementPtr) + d contModel like(xmlRegexpPtr) + d contentType like(xmlSchemaContentType) + d refPrefix * const xmlChar * + d devVal like(xmlSchemaValPtr) Comp val constraint + d idcs * void * + + * XML_SCHEMAS_FACET_UNKNOWN: + * + * unknown facet handling + + d XML_SCHEMAS_FACET_UNKNOWN... + d c 0 + + * XML_SCHEMAS_FACET_PRESERVE: + * + * preserve the type of the facet + + d XML_SCHEMAS_FACET_PRESERVE... + d c 1 + + * XML_SCHEMAS_FACET_REPLACE: + * + * replace the type of the facet + + d XML_SCHEMAS_FACET_REPLACE... + d c 2 + + * XML_SCHEMAS_FACET_COLLAPSE: + * + * collapse the types of the facet + + d XML_SCHEMAS_FACET_COLLAPSE... + d c 3 + + * A facet definition. + + d xmlSchemaFacet... + d ds based(xmlSchemaFacetPtr) + d align qualified + d type like(xmlSchemaTypeType) Kind of type + d next like(xmlSchemaFacetPtr) Next type in seq. + d value * const xmlChar * + d id * const xmlChar * + d annot like(xmlSchemaAnnotPtr) + d node like(xmlNodePtr) + d fixed like(xmlCint) _FACET_PRESERVE, etc + d whitespace like(xmlCint) + d val like(xmlSchemaValPtr) Compiled value + d regexp like(xmlRegexpPtr) Regexp for patterns + + * A notation definition. + + d xmlSchemaNotationPtr... + d s * based(######typedef######) + + d xmlSchemaNotation... + d ds based(xmlSchemaNotationPtr) + d align qualified + d type like(xmlSchemaTypeType) Kind of type + d name * const xmlChar * + d annot like(xmlSchemaAnnotPtr) + d identifier * const xmlChar * + d targetNamespace... + d * const xmlChar * + + * TODO: Actually all those flags used for the schema should sit + * on the schema parser context, since they are used only + * during parsing an XML schema document, and not available + * on the component level as per spec. + + * XML_SCHEMAS_QUALIF_ELEM: + * + * Reflects elementFormDefault == qualified in + * an XML schema document. + + d XML_SCHEMAS_QUALIF_ELEM... + d c X'00000001' + + * XML_SCHEMAS_QUALIF_ATTR: + * + * Reflects attributeFormDefault == qualified in + * an XML schema document. + + d XML_SCHEMAS_QUALIF_ATTR... + d c X'00000002' + + * XML_SCHEMAS_FINAL_DEFAULT_EXTENSION: + * + * the schema has "extension" in the set of finalDefault. + + d XML_SCHEMAS_FINAL_DEFAULT_EXTENSION... + d c X'00000004' + + * XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION: + * + * the schema has "restriction" in the set of finalDefault. + + d XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION... + d c X'00000008' + + * XML_SCHEMAS_FINAL_DEFAULT_LIST: + * + * the cshema has "list" in the set of finalDefault. + + d XML_SCHEMAS_FINAL_DEFAULT_LIST... + d c X'00000010' + + * XML_SCHEMAS_FINAL_DEFAULT_UNION: + * + * the schema has "union" in the set of finalDefault. + + d XML_SCHEMAS_FINAL_DEFAULT_UNION... + d c X'00000020' + + * XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION: + * + * the schema has "extension" in the set of blockDefault. + + d XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION... + d c X'00000040' + + * XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION: + * + * the schema has "restriction" in the set of blockDefault. + + d XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION... + d c X'00000080' + + * XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION: + * + * the schema has "substitution" in the set of blockDefault. + + d XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION... + d c X'00000100' + + * XML_SCHEMAS_INCLUDING_CONVERT_NS: + * + * the schema is currently including an other schema with + * no target namespace. + + d XML_SCHEMAS_INCLUDING_CONVERT_NS... + d c X'00000200' + + * _xmlSchema: + * + * A Schemas definition + + d xmlSchema ds based(xmlSchemaPtr) + d align qualified + d name * const xmlChar * + d targetNamespace... + d * const xmlChar * + d version * const xmlChar * + d id * const xmlChar * + d doc like(xmlDocPtr) + d annot like(xmlSchemaAnnotPtr) + d flags like(xmlCint) + * + d typeDecl like(xmlHashTablePtr) + d attrDecl like(xmlHashTablePtr) + d attrGrpDecl like(xmlHashTablePtr) + d elemDecl like(xmlHashTablePtr) + d notaDecl like(xmlHashTablePtr) + d schemasImports... + d like(xmlHashTablePtr) + * + d #private * void * + d groupDecl like(xmlHashTablePtr) + d dict like(xmlDictPtr) + d includes * void * + d preserve like(xmlCint) Do not free doc ? + d counter like(xmlCint) For name uniqueness + d idcDef like(xmlHashTablePtr) All id-constr. defs + d volatiles * void * + + d xmlSchemaFreeType... + d pr extproc('xmlSchemaFreeType') + d type value like(xmlSchemaTypePtr) + + d xmlSchemaFreeWildcard... + d pr extproc('xmlSchemaFreeWildcard') + d wildcard value like(xmlSchemaWildcardPtr) + + /endif LIBXML_SCHEMAS_ENBLD + /endif SCHEMA_INTERNALS_H__ diff --git a/libxml2/os400/libxmlrpg/schematron.rpgle b/libxml2/os400/libxmlrpg/schematron.rpgle new file mode 100644 index 0000000..8271ca5 --- /dev/null +++ b/libxml2/os400/libxmlrpg/schematron.rpgle @@ -0,0 +1,204 @@ + * Summary: XML Schemastron implementation + * Description: interface to the XML Schematron validity checking. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_SCHEMATRON_H__) + /define XML_SCHEMATRON_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_SCHEMATRON_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + + d xmlSchematronValidOptions... + d s based(######typedef######) + d like(xmlCenum) + d XML_SCHEMATRON_OUT_QUIET... Quiet no report + d c X'0001' + d XML_SCHEMATRON_OUT_TEXT... Build textual report + d c X'0002' + d XML_SCHEMATRON_OUT_XML... Output SVRL + d c X'0004' + d XML_SCHEMATRON_OUT_ERROR... Output to error func + d c X'0008' + d XML_SCHEMATRON_OUT_FILE... Output to file descr + d c X'0100' + d XML_SCHEMATRON_OUT_BUFFER... Output to a buffer + d c X'0200' + d XML_SCHEMATRON_OUT_IO... Output to I/O mech + d c X'0400' + + * The schemas related types are kept internal + + d xmlSchematronPtr... + d s * based(######typedef######) + + * xmlSchematronValidityErrorFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of an error callback from a Schematron validation + + d xmlSchematronValidityErrorFunc... + d s * based(######typedef######) + d procptr + + * xmlSchematronValidityWarningFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of a warning callback from a Schematron validation + + d xmlSchematronValidityWarningFunc... + d s * based(######typedef######) + d procptr + + * A schemas validation context + + d xmlSchematronParserCtxtPtr... + d s * based(######typedef######) + + d xmlSchematronValidCtxtPtr... + d s * based(######typedef######) + + * Interfaces for parsing. + + d xmlSchematronNewParserCtxt... + d pr extproc('xmlSchematronNewParserCtxt') + d like(xmlSchematronParserCtxtPtr) + d URL * value options(*string) const char * + + d xmlSchematronNewMemParserCtxt... + d pr extproc( + d 'xmlSchematronNewMemParserCtxt') + d like(xmlSchematronParserCtxtPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + + d xmlSchematronNewDocParserCtxt... + d pr extproc( + d 'xmlSchematronNewDocParserCtxt') + d like(xmlSchematronParserCtxtPtr) + d doc value like(xmlDocPtr) + + d xmlSchematronFreeParserCtxt... + d pr extproc( + d 'xmlSchematronFreeParserCtxt') + d ctxt value + d like(xmlSchematronParserCtxtPtr) + + /if defined(DISABLED) + d xmlSchematronSetParserErrors... + d pr extproc( + d 'xmlSchematronSetParserErrors') + d ctxt value + d like(xmlSchematronParserCtxtPtr) + d err value + d like(xmlSchematronValidityErrorFunc) + d warn value like( + d xmlSchematronValidityWarningFunc) + d ctx * value void * + + d xmlSchematronGetParserErrors... + d pr extproc( + d 'xmlSchematronGetParserErrors') + d like(xmlCint) + d ctxt value + d like(xmlSchematronParserCtxtPtr) + d err like(xmlSchematronValidityErrorFunc) + d warn like( + d xmlSchematronValidityWarningFunc) + d ctx * void *(*) + + d xmlSchematronIsValid... + d pr extproc('xmlSchematronIsValid') + d like(xmlCint) + d ctxt value like(xmlSchematronValidCtxtPtr) + /endif + + d xmlSchematronParse... + d pr extproc('xmlSchematronParse') + d like(xmlSchematronPtr) + d ctxt value + d like(xmlSchematronParserCtxtPtr) + + d xmlSchematronFree... + d pr extproc('xmlSchematronFree') + d schema value like(xmlSchematronPtr) + + * Interfaces for validating + + d xmlSchematronSetValidStructuredErrors... + d pr extproc('xmlSchematronSetValidStruct- + d uredErrors') + d ctxt value like(xmlSchematronValidCtxtPtr) + d serror value like(xmlStructuredErrorFunc) + d ctx * value void * + + /if defined(DISABLED) + d xmlSchematronSetValidErrors... + d pr extproc( + d 'xmlSchematronSetValidErrors') + d ctxt value like(xmlSchematronValidCtxtPtr) + d err value + d like(xmlSchematronValidityErrorFunc) + d warn value like( + d xmlSchematronValidityWarningFunc) + d ctx * value void * + + d xmlSchematronGetValidErrors... + d pr extproc( + d 'xmlSchematronGetValidErrors') + d like(xmlCint) + d ctxt value like(xmlSchematronValidCtxtPtr) + d err like(xmlSchematronValidityErrorFunc) + d warn like( + d xmlSchematronValidityWarningFunc) + d ctx * void *(*) + + d xmlSchematronSetValidOptions... + d pr extproc( + d 'xmlSchematronSetValidOptions') + d like(xmlCint) + d ctxt value like(xmlSchematronValidCtxtPtr) + d options value like(xmlCint) + + d xmlSchematronValidCtxtGetOptions... + d pr extproc( + d 'xmlSchematronValidCtxtGetOptions') + d like(xmlCint) + d ctxt value like(xmlSchematronValidCtxtPtr) + + d xmlSchematronValidateOneElement... + d pr extproc( + d 'xmlSchematronValidateOneElement') + d like(xmlCint) + d ctxt value like(xmlSchematronValidCtxtPtr) + d elem value like(xmlNodePtr) + /endif + + d xmlSchematronNewValidCtxt... + d pr extproc('xmlSchematronNewValidCtxt') + d like(xmlSchematronValidCtxtPtr) + d schema value like(xmlSchematronPtr) + d options value like(xmlCint) + + d xmlSchematronFreeValidCtxt... + d pr extproc('xmlSchematronFreeValidCtxt') + d ctxt value like(xmlSchematronValidCtxtPtr) + + d xmlSchematronValidateDoc... + d pr extproc('xmlSchematronValidateDoc') + d like(xmlCint) + d ctxt value like(xmlSchematronValidCtxtPtr) + d instance value like(xmlDocPtr) + + /endif _SCHEMATRON_ENABLED + /endif XML_SCHEMATRON_H__ diff --git a/libxml2/os400/libxmlrpg/threads.rpgle b/libxml2/os400/libxmlrpg/threads.rpgle new file mode 100644 index 0000000..124798b --- /dev/null +++ b/libxml2/os400/libxmlrpg/threads.rpgle @@ -0,0 +1,73 @@ + * Summary: interfaces for thread handling + * Description: set of generic threading related routines + * should work with pthreads, Windows native or TLS threads + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_THREADS_H__) + /define XML_THREADS_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + + * xmlMutex are a simple mutual exception locks. + + d xmlMutexPtr s * based(######typedef######) + + * xmlRMutex are reentrant mutual exception locks. + + d xmlRMutexPtr s * based(######typedef######) + + /include "libxmlrpg/globals" + + d xmlNewMutex pr extproc('xmlNewMutex') + d like(xmlMutexPtr) + + d xmlMutexLock pr extproc('xmlMutexLock') + d tok value like(xmlMutexPtr) + + d xmlMutexUnlock pr extproc('xmlMutexUnlock') + d tok value like(xmlMutexPtr) + + d xmlFreeMutex pr extproc('xmlFreeMutex') + d tok value like(xmlMutexPtr) + + d xmlNewRMutex pr extproc('xmlNewRMutex') + d like(xmlRMutexPtr) + + d xmlRMutexLock pr extproc('xmlRMutexLock') + d tok value like(xmlRMutexPtr) + + d xmlRMutexUnlock... + d pr extproc('xmlRMutexUnlock') + d tok value like(xmlRMutexPtr) + + d xmlFreeRMutex pr extproc('xmlFreeRMutex') + d tok value like(xmlRMutexPtr) + + * Library wide APIs. + + d xmlInitThreads pr extproc('xmlInitThreads') + + d xmlLockLibrary pr extproc('xmlLockLibrary') + + d xmlUnlockLibrary... + d pr extproc('xmlUnlockLibrary') + + d xmlGetThreadId pr extproc('xmlGetThreadId') + d like(xmlCint) + + d xmlIsMainThread... + d pr extproc('xmlIsMainThread') + d like(xmlCint) + + d xmlCleanupThreads... + d pr extproc('xmlCleanupThreads') + + d xmlGetGlobalState... + d pr extproc('xmlGetGlobalState') + d like(xmlGlobalStatePtr) + + /endif XML_THREADS_H__ diff --git a/libxml2/os400/libxmlrpg/transcode.rpgle b/libxml2/os400/libxmlrpg/transcode.rpgle new file mode 100644 index 0000000..b96e4e8 --- /dev/null +++ b/libxml2/os400/libxmlrpg/transcode.rpgle @@ -0,0 +1,71 @@ + * Supplementary character code conversion functions for + * EBCDIC environments. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(TRANSCODE_H__) + /define TRANSCODE_H__ + + /include "libxmlrpg/dict" + /include "libxmlrpg/xmlstdarg" + + d xmlZapDict pr extproc('xmlZapDict') + d dict like(xmlDictPtr) + + d xmlTranscodeResult... + d pr * extproc('xmlTranscodeResult') const char * + d s * value options(*string) const xmlChar * + d encoding * value options(*string) const char * + d dict like(xmlDictPtr) options(*omit) + d freeproc * value procptr + + d xmlTranscodeString... + d pr * extproc('xmlTranscodeString') const xmlChar * + d s * value options(*string) const char * + d encoding * value options(*string) const char * + d dict like(xmlDictPtr) options(*omit) + + d xmlTranscodeWString... + d pr * extproc('xmlTranscodeWString') const xmlChar * + d s * value options(*string) const char * + d encoding * value options(*string) const char * + d dict like(xmlDictPtr) options(*omit) + + d xmlTranscodeHString... + d pr * extproc('xmlTranscodeHString') const xmlChar * + d s * value options(*string) const char * + d encoding * value options(*string) const char * + d dict like(xmlDictPtr) options(*omit) + + /if not defined(XML_NO_SHORT_NAMES) + d xmlTR pr * extproc('xmlTranscodeResult') const char * + d s * value options(*string) const xmlChar * + d encoding * value options(*string) const char * + d dict like(xmlDictPtr) options(*omit) + d freeproc * value procptr + + d xmlTS pr * extproc('xmlTranscodeString') const xmlChar * + d s * value options(*string) const char * + d encoding * value options(*string) const char * + d dict like(xmlDictPtr) options(*omit) + + d xmlTW pr * extproc('xmlTranscodeWString') const xmlChar * + d s * value options(*string) const char * + d encoding * value options(*string) const char * + d dict like(xmlDictPtr) options(*omit) + + d xmlTH pr * extproc('xmlTranscodeHString') const xmlChar * + d s * value options(*string) const char * + d encoding * value options(*string) const char * + d dict like(xmlDictPtr) options(*omit) + /endif + + d xmlVasprintf pr * extproc('xmlVasprintf') + d dict like(xmlDictPtr) options(*omit) + d encoding * value options(*string) const char * + d fmt * value options(*string) const xmlChar * + d args likeds(xmlVaList) + + /endif diff --git a/libxml2/os400/libxmlrpg/tree.rpgle b/libxml2/os400/libxmlrpg/tree.rpgle new file mode 100644 index 0000000..6512778 --- /dev/null +++ b/libxml2/os400/libxmlrpg/tree.rpgle @@ -0,0 +1,1681 @@ + * Summary: interfaces for tree manipulation + * Description: this module describes the structures found in an tree + * resulting from an XML or HTML parsing, as well as the API + * provided for various processing on that tree + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_TREE_H__) + /define XML_TREE_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/xmlstring" + + + * Some of the basic types pointer to structures: + + * xmlIO.h + + d xmlParserInputBufferPtr... + d s * based(######typedef######) + + d xmlOutputBufferPtr... + d s * based(######typedef######) + + * parser.h + + d xmlParserInputPtr... + d s * based(######typedef######) + + d xmlParserCtxtPtr... + d s * based(######typedef######) + + d xmlSAXLocatorPtr... + d s * based(######typedef######) + + d xmlSAXHandlerPtr... + d s * based(######typedef######) + + * entities.h + + d xmlEntityPtr s * based(######typedef######) + + + * BASE_BUFFER_SIZE: + * + * default buffer size 4000. + + d BASE_BUFFER_SIZE... + d c 4096 + + * LIBXML_NAMESPACE_DICT: + * + * Defines experimental behaviour: + * 1) xmlNs gets an additional field @context (a xmlDoc) + * 2) when creating a tree, xmlNs->href is stored in the dict of xmlDoc. + + /if defined(DO_NOT_COMPILE) + /define LIBXML_NAMESPACE_DICT + /endif + + * xmlBufferAllocationScheme: + * + * A buffer allocation scheme can be defined to either match exactly the + * need or double it's allocated size each time it is found too small. + + d xmlBufferAllocationScheme... + d s based(######typedef######) + d like(xmlCenum) + d XML_BUFFER_ALLOC_DOUBLEIT... + d c 0 + d XML_BUFFER_ALLOC_EXACT... + d c 1 + d XML_BUFFER_ALLOC_IMMUTABLE... + d c 2 + d XML_BUFFER_ALLOC_IO... + d c 3 + d XML_BUFFER_ALLOC_HYBRID... + d c 4 + + * xmlBuffer: + * + * A buffer structure, this old construct is limited to 2GB and + * is being deprecated, use API with xmlBuf instead + + d xmlBufferPtr s * based(######typedef######) + + d xmlBuffer ds based(xmlBufferPtr) + d align qualified + d content * xmlChar * + d use like(xmlCuint) + d size like(xmlCuint) + d alloc like(xmlBufferAllocationScheme) The realloc method + d contentIO * xmlChar * + + * xmlBufPtr: + * + * A pointer to a buffer structure, the actual structure internals are not + * public + + d xmlBufPtr s * based(######typedef######) + + * A few public routines for xmlBuf. As those are expected to be used + * mostly internally the bulk of the routines are internal in buf.h + + d xmlBufContent pr * extproc('xmlBufContent') xmlChar * + d buf value like(xmlBufPtr) const + + d xmlBufEnd pr * extproc('xmlBufEnd') xmlChar * + d buf value like(xmlBufPtr) const + + d xmlBufUse pr extproc('xmlBufUse') + d like(xmlCsize_t) + d buf value like(xmlBufPtr) const + + d xmlBufShrink pr extproc('xmlBufShrink') + d like(xmlCsize_t) + d buf value like(xmlBufPtr) + d len value like(xmlCsize_t) + + * LIBXML2_NEW_BUFFER: + * + * Macro used to express that the API use the new buffers for + * xmlParserInputBuffer and xmlOutputBuffer. The change was + * introduced in 2.9.0. + + /define LIBXML2_NEW_BUFFER + + * XML_XML_NAMESPACE: + * + * This is the namespace for the special xml: prefix predefined in the + * XML Namespace specification. + + d XML_XML_NAMESPACE... + d c 'http://www.w3.org/XML/1998/+ + d namespace' + + * XML_XML_ID: + * + * This is the name for the special xml:id attribute + + d XML_XML_ID c 'xml:id' + + * The different element types carried by an XML tree. + * + * NOTE: This is synchronized with DOM Level1 values + * See http://www.w3.org/TR/REC-DOM-Level-1/ + * + * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should + * be deprecated to use an XML_DTD_NODE. + + d xmlElementType s based(######typedef######) + d like(xmlCenum) + d XML_ELEMENT_NODE... + d c 1 + d XML_ATTRIBUTE_NODE... + d c 2 + d XML_TEXT_NODE c 3 + d XML_CDATA_SECTION_NODE... + d c 4 + d XML_ENTITY_REF_NODE... + d c 5 + d XML_ENTITY_NODE... + d c 6 + d XML_PI_NODE c 7 + d XML_COMMENT_NODE... + d c 8 + d XML_DOCUMENT_NODE... + d c 9 + d XML_DOCUMENT_TYPE_NODE... + d c 10 + d XML_DOCUMENT_FRAG_NODE... + d c 11 + d XML_NOTATION_NODE... + d c 12 + d XML_HTML_DOCUMENT_NODE... + d c 13 + d XML_DTD_NODE c 14 + d XML_ELEMENT_DECL... + d c 15 + d XML_ATTRIBUTE_DECL... + d c 16 + d XML_ENTITY_DECL... + d c 17 + d XML_NAMESPACE_DECL... + d c 18 + d XML_LOCAL_NAMESPACE... + d c 18 Alias + d XML_XINCLUDE_START... + d c 19 + d XML_XINCLUDE_END... + d c 20 + /if defined(LIBXML_DOCB_ENABLED) + d XML_DOCB_DOCUMENT_NODE... + d c 21 + /endif + + * xmlNotation: + * + * A DTD Notation definition. + + d xmlNotationPtr s * based(######typedef######) + + d xmlNotation ds based(xmlNotationPtr) + d align qualified + d name * const xmlChar * + d PublicID * const xmlChar * + d SystemID * const xmlChar * + + * xmlAttributeType: + * + * A DTD Attribute type definition. + + d xmlAttributeType... + d s based(######typedef######) + d like(xmlCenum) + d XML_ATTRIBUTE_CDATA... + d c 1 + d XML_ATTRIBUTE_ID... + d c 2 + d XML_ATTRIBUTE_IDREF... + d c 3 + d XML_ATTRIBUTE_IDREFS... + d c 4 + d XML_ATTRIBUTE_ENTITY... + d c 5 + d XML_ATTRIBUTE_ENTITIES... + d c 6 + d XML_ATTRIBUTE_NMTOKEN... + d c 7 + d XML_ATTRIBUTE_NMTOKENS... + d c 8 + d XML_ATTRIBUTE_ENUMERATION... + d c 9 + d XML_ATTRIBUTE_NOTATION... + d c 10 + + * xmlAttributeDefault: + * + * A DTD Attribute default definition. + + d xmlAttributeDefault... + d s based(######typedef######) + d like(xmlCenum) + d XML_ATTRIBUTE_NONE... + d c 1 + d XML_ATTRIBUTE_REQUIRED... + d c 2 + d XML_ATTRIBUTE_IMPLIED... + d c 3 + d XML_ATTRIBUTE_FIXED... + d c 4 + + * xmlEnumeration: + * + * List structure used when there is an enumeration in DTDs. + + d xmlEnumerationPtr... + d s * based(######typedef######) + + d xmlEnumeration ds based(xmlEnumerationPtr) + d align qualified + d next like(xmlEnumerationPtr) Next one + d name * const xmlChar * + + * Forward pointer declarations. + + d xmlNodePtr s * based(######typedef######) + d xmlDocPtr s * based(######typedef######) + d xmlDtdPtr s * based(######typedef######) + + * xmlAttribute: + * + * An Attribute declaration in a DTD. + + d xmlAttributePtr... + d s * based(######typedef######) + + d xmlAttribute ds based(xmlAttributePtr) + d align qualified + d #private * Application data + d type like(xmlElementType) XML_ATTRIBUTE_DECL + d name * const xmlChar * + d children like(xmlNodePtr) NULL + d last like(xmlNodePtr) NULL + d parent like(xmlDtdPtr) -> DTD + d next like(xmlNodePtr) next sibling link + d prev like(xmlNodePtr) previous sibling lnk + d doc like(xmlDocPtr) The containing doc + d nexth like(xmlAttributePtr) Next in hash table + d atype like(xmlAttributeType) The attribute type + d def like(xmlAttributeDefault) The default + d defaultValue * or const xmlChar * + d tree like(xmlEnumerationPtr) or enum tree + d prefix * const xmlChar * + d elem * const xmlChar * + + * xmlElementContentType: + * + * Possible definitions of element content types. + + d xmlElementContentType... + d s based(######typedef######) + d like(xmlCenum) + d XML_ELEMENT_CONTENT_PCDATA... + d c 1 + d XML_ELEMENT_CONTENT_ELEMENT... + d c 2 + d XML_ELEMENT_CONTENT_SEQ... + d c 3 + d XML_ELEMENT_CONTENT_OR... + d c 4 + + * xmlElementContentOccur: + * + * Possible definitions of element content occurrences. + + d xmlElementContentOccur... + d s based(######typedef######) + d like(xmlCenum) + d XML_ELEMENT_CONTENT_ONCE... + d c 1 + d XML_ELEMENT_CONTENT_OPT... + d c 2 + d XML_ELEMENT_CONTENT_MULT... + d c 3 + d XML_ELEMENT_CONTENT_PLUS... + d c 4 + + * xmlElementContent: + * + * An XML Element content as stored after parsing an element definition + * in a DTD. + + d xmlElementContentPtr... + d s * based(######typedef######) + + d xmlElementContent... + d ds based(xmlElementContentPtr) + d align qualified + d type like(xmlElementContentType) + d ocur like(xmlElementContentOccur) + d name * const xmlChar * + d c1 like(xmlElementContentPtr) First child + d c2 like(xmlElementContentPtr) Second child + d parent like(xmlElementContentPtr) Parent + d prefix * const xmlChar * + + * xmlElementTypeVal: + * + * The different possibilities for an element content type. + + d xmlElementTypeVal... + d s based(######typedef######) + d like(xmlCenum) + d XML_ELEMENT_TYPE_UNDEFINED... + d c 0 + d XML_ELEMENT_TYPE_EMPTY... + d c 1 + d XML_ELEMENT_TYPE_ANY... + d c 2 + d XML_ELEMENT_TYPE_MIXED... + d c 3 + d XML_ELEMENT_TYPE_ELEMENT... + d c 4 + + /include "libxmlrpg/xmlregexp" + + * xmlElement: + * + * An XML Element declaration from a DTD. + + d xmlElementPtr s * based(######typedef######) + + d xmlElement ds based(xmlElementPtr) + d align qualified + d #private * Application data + d type like(xmlElementType) XML_ELEMENT_DECL + d name * const xmlChar * + d children like(xmlNodePtr) NULL + d last like(xmlNodePtr) NULL + d parent like(xmlDtdPtr) -> DTD + d next like(xmlNodePtr) next sibling link + d prev like(xmlNodePtr) previous sibling lnk + d doc like(xmlDocPtr) The containing doc + d etype like(xmlElementTypeVal) The type + d content like(xmlElementContentPtr) Allowed elem content + d attributes like(xmlAttributePtr) Declared attributes + d prefix * const xmlChar * + /if defined(LIBXML_REGEXP_ENABLED) + d contModel like(xmlRegexpPtr) Validating regexp + /else + d contModel * + /endif + + * XML_LOCAL_NAMESPACE: + * + * A namespace declaration node. + + * xmlNs: + * + * An XML namespace. + * Note that prefix == NULL is valid, it defines the default namespace + * within the subtree (until overridden). + * + * xmlNsType is unified with xmlElementType. + + d xmlNsType s based(######typedef######) enum + d like(xmlElementType) + + d xmlNsPtr s * based(######typedef######) + + d xmlNs ds based(xmlNsPtr) + d align qualified + d next like(xmlNsPtr) next Ns link + d type like(xmlNsType) Global or local + d href * const xmlChar * + d prefix * const xmlChar * + d #private * Application data + d context like(xmlDocPtr) normally an xmlDoc + + * xmlDtd: + * + * An XML DTD, as defined by <!DOCTYPE ... There is actually one for + * the internal subset and for the external subset. + + d xmlDtd ds based(xmlDtdPtr) + d align qualified + d #private * Application data + d type like(xmlElementType) XML_DTD_NODE + d name * const xmlChar * + d children like(xmlNodePtr) Property link value + d last like(xmlNodePtr) Last child link + d parent like(xmlDocPtr) Child->parent link + d next like(xmlNodePtr) next sibling link + d prev like(xmlNodePtr) previous sibling lnk + d doc like(xmlDocPtr) The containing doc + d notations * notations hash table + d elements * elements hash table + d entities * entities hash table + d ExternalID * const xmlChar * + d SystemID * const xmlChar * + d pentities * param. ent. h table + + * xmlAttr: + * + * An attribute on an XML node. + + d xmlAttrPtr s * based(######typedef######) + + d xmlAttr ds based(xmlAttrPtr) + d align qualified + d #private * Application data + d type like(xmlElementType) XML_ATTRIBUTE_NODE + d name * const xmlChar * + d children like(xmlNodePtr) Property link value + d last like(xmlNodePtr) NULL + d parent like(xmlNodePtr) Child->parent link + d next like(xmlAttrPtr) next sibling link + d prev like(xmlAttrPtr) previous sibling lnk + d doc like(xmlDocPtr) The containing doc + d ns like(xmlNsPtr) Associated namespace + d atype like(xmlAttributeType) For validation + d psvi * Type/PSVI info + + * xmlID: + * + * An XML ID instance. + + d xmlIdPtr s * based(######typedef######) + + d xmlID ds based(xmlIdPtr) + d align qualified + d next like(xmlIdPtr) Next ID + d attr like(xmlAttrPtr) Attribute holding it + d name * const xmlChar * + d lineno like(xmlCint) Line # if not avail + d doc like(xmlDocPtr) Doc holding ID + + * xmlRef: + * + * An XML IDREF instance. + + d xmlRefPtr s * based(######typedef######) + + d xmlRef ds based(xmlRefPtr) + d align qualified + d next like(xmlRefPtr) Next Ref + d value * const xmlChar * + d attr like(xmlAttrPtr) Attribute holding it + d name * const xmlChar * + d lineno like(xmlCint) Line # if not avail + + * xmlNode: + * + * A node in an XML tree. + + d xmlNode ds based(xmlNodePtr) + d align qualified + d #private * Application data + d type like(xmlElementType) + d name * const xmlChar * + d children like(xmlNodePtr) Parent->children lnk + d last like(xmlNodePtr) Last child link + d parent like(xmlNodePtr) Child->parent link + d next like(xmlNodePtr) next sibling link + d prev like(xmlNodePtr) previous sibling lnk + d doc like(xmlDocPtr) The containing doc + d ns like(xmlNsPtr) Associated namespace + d content * xmlChar * + d properties like(xmlAttrPtr) Properties list + d nsDef like(xmlNsPtr) Node ns definitions + d psvi * Type/PSVI info + d line like(xmlCushort) + d extra like(xmlCushort) Data for XPath/XSLT + + * xmlDocProperty + * + * Set of properties of the document as found by the parser + * Some of them are linked to similary named xmlParserOption + + d xmlDocProperties... + d s based(######typedef######) + d like(xmlCenum) + d XML_DOC_WELLFORMED... + d c X'00000001' + d XML_DOC_NSVALID... + d c X'00000002' + d XML_DOC_OLD10 c X'00000004' + d XML_DOC_DTDVALID... + d c X'00000008' + d XML_DOC_XINCLUDE... + d c X'00000010' + d XML_DOC_USERBUILT... + d c X'00000020' + d XML_DOC_INTERNAL... + d c X'00000030' + d XML_DOC_HTML c X'00000080' + + * xmlDoc: + * + * An XML document. + + d xmlDoc ds based(xmlDocPtr) + d align qualified + d #private * Application data + d type like(xmlElementType) XML_DOCUMENT_NODE + d name * const xmlChar * + d children like(xmlNodePtr) The document tree + d last like(xmlNodePtr) Last child link + d parent like(xmlNodePtr) Child->parent link + d next like(xmlNodePtr) next sibling link + d prev like(xmlNodePtr) previous sibling lnk + d doc like(xmlDocPtr) Reference to itself + d compression like(xmlCint) zlib compression lev + d standalone like(xmlCint) + d intSubset like(xmlDtdPtr) Internal subset + d extSubset like(xmlDtdPtr) External subset + d oldns like(xmlNsPtr) Global namespace + d version * const xmlChar * + d encoding * const xmlChar * + d ids * IDs hash table + d refs * IDREFs hash table + d URL * const xmlChar * + d charset like(xmlCint) In-memory encoding + d dict * xmlDictPtr for names + d psvi * Type/PSVI ino + d parseFlags like(xmlCint) xmlParserOption's + d properties like(xmlCint) xmlDocProperties + + * xmlDOMWrapAcquireNsFunction: + * @ctxt: a DOM wrapper context + * @node: the context node (element or attribute) + * @nsName: the requested namespace name + * @nsPrefix: the requested namespace prefix + * + * A function called to acquire namespaces (xmlNs) from the wrapper. + * + * Returns an xmlNsPtr or NULL in case of an error. + + d xmlDOMWrapAcquireNsFunction... + d s * based(######typedef######) + d procptr + + * xmlDOMWrapCtxt: + * + * Context for DOM wrapper-operations. + + d xmlDOMWrapCtxtPtr... + d s * based(######typedef######) + + d xmlDOMWrapCtxt... + d ds based(xmlDOMWrapCtxtPtr) + d align qualified + d #private * void * + d type like(xmlCint) + d namespaceMap * void * + d getNsForNodeFunc... + d like(xmlDOMWrapAcquireNsFunction) + + + * Variables. + + * Some helper functions + + /undefine XML_TESTVAL + /if defined(LIBXML_TREE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_XPATH_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_SCHEMAS_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_DEBUG_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_HTML_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_SAX1_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_HTML_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_WRITER_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_DOCB_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlValidateNCName... + d pr extproc('xmlValidateNCName') + d like(xmlCint) + d value * value options(*string) const xmlChar * + d space value like(xmlCint) + + /undefine XML_TESTVAL + /endif + + /if defined(LIBXML_TREE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_SCHEMAS_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlValidateQName... + d pr extproc('xmlValidateQName') + d like(xmlCint) + d value * value options(*string) const xmlChar * + d space value like(xmlCint) + + d xmlValidateName... + d pr extproc('xmlValidateName') + d like(xmlCint) + d value * value options(*string) const xmlChar * + d space value like(xmlCint) + + d xmlValidateNMToken... + d pr extproc('xmlValidateNMToken') + d like(xmlCint) + d value * value options(*string) const xmlChar * + d space value like(xmlCint) + + /undefine XML_TESTVAL + /endif + + d xmlBuildQName pr * extproc('xmlBuildQName') xmlChar * + d ncname * value options(*string) const xmlChar * + d prefix * value options(*string) const xmlChar * + d memory 65535 options(*varsize: *omit) xmlChar[] + d len value like(xmlCint) memory length + + d xmlSplitQName2 pr * extproc('xmlSplitQName2') xmlChar * + d name * value options(*string) const xmlChar * + d prefix * xmlChar * + + d xmlSplitQName3 pr * extproc('xmlSplitQName3') const xmlChar * + d name * value options(*string) const xmlChar * + d len like(xmlCint) + + * Handling Buffers, the old ones see @xmlBuf for the new ones. + + d xmlSetBufferAllocationScheme... + d pr extproc( + d 'xmlSetBufferAllocationScheme') + d scheme value + d like(xmlBufferAllocationScheme) + + d xmlGetBufferAllocationScheme... + d pr extproc( + d 'xmlGetBufferAllocationScheme') + d like(xmlBufferAllocationScheme) + + d xmlBufferCreate... + d pr extproc('xmlBufferCreate') + d like(xmlBufferPtr) + + d xmlBufferCreateSize... + d pr extproc('xmlBufferCreateSize') + d like(xmlBufferPtr) + d size value like(xmlCsize_t) + + d xmlBufferCreateStatic... + d pr extproc('xmlBufferCreateStatic') + d like(xmlBufferPtr) + d mem * value + d size value like(xmlCsize_t) + + d xmlBufferResize... + d pr extproc('xmlBufferResize') + d like(xmlCint) + d buf value like(xmlBufferPtr) + d size value like(xmlCsize_t) + + d xmlBufferFree pr extproc('xmlBufferFree') + d buf value like(xmlBufferPtr) + + d xmlBufferDump pr extproc('xmlBufferDump') + d like(xmlCint) + d file * value FILE * + d buf value like(xmlBufferPtr) + + d xmlBufferAdd pr extproc('xmlBufferAdd') + d like(xmlCint) + d buf value like(xmlBufferPtr) + d str * value options(*string) const xmlChar * + d len value like(xmlCint) str length + + d xmlBufferAddHead... + d pr extproc('xmlBufferAddHead') + d like(xmlCint) + d buf value like(xmlBufferPtr) + d str * value options(*string) const xmlChar * + d len value like(xmlCint) str length + + d xmlBufferCat pr extproc('xmlBufferCat') + d like(xmlCint) + d buf value like(xmlBufferPtr) + d str * value options(*string) const xmlChar * + + d xmlBufferCCat pr extproc('xmlBufferCCat') + d like(xmlCint) + d buf value like(xmlBufferPtr) + d str * value options(*string) const char * + + d xmlBufferShrink... + d pr extproc('xmlBufferShrink') + d like(xmlCint) + d buf value like(xmlBufferPtr) + d len value like(xmlCuint) + + d xmlBufferGrow pr extproc('xmlBufferGrow') + d like(xmlCint) + d buf value like(xmlBufferPtr) + d len value like(xmlCuint) + + d xmlBufferEmpty pr extproc('xmlBufferEmpty') + d buf value like(xmlBufferPtr) + + d xmlBufferContent... + d pr * extproc('xmlBufferContent') const xmlChar * + d buf value like(xmlBufferPtr) + + d xmlBufferDetach... + d pr * extproc('xmlBufferDetach') xmlChar * + d buf value like(xmlBufferPtr) + + d xmlBufferSetAllocationScheme... + d pr extproc( + d 'xmlBufferSetAllocationScheme') + d buf value like(xmlBufferPtr) + d scheme value + d like(xmlBufferAllocationScheme) + + d xmlBufferLength... + d pr extproc('xmlBufferLength') + d like(xmlCint) + d buf value like(xmlBufferPtr) + + * Creating/freeing new structures. + + d xmlCreateIntSubset... + d pr extproc('xmlCreateIntSubset') + d like(xmlDtdPtr) + d doc value like(xmlDocPtr) + d name * value options(*string) const xmlChar * + d ExternalID * value options(*string) const xmlChar * + d SystemlID * value options(*string) const xmlChar * + + d xmlNewDtd pr extproc('xmlNewDtd') + d like(xmlDtdPtr) + d doc value like(xmlDocPtr) + d name * value options(*string) const xmlChar * + d ExternalID * value options(*string) const xmlChar * + d SystemlID * value options(*string) const xmlChar * + + d xmlGetIntSubset... + d pr extproc('xmlGetIntSubset') + d like(xmlDtdPtr) + d doc value like(xmlDocPtr) + + d xmlFreeDtd pr extproc('xmlFreeDtd') + d cur value like(xmlDtdPtr) + + /if defined(LIBXML_LEGACY_ENABLED) + d xmlNewGlobalNs pr extproc('xmlNewGlobalNs') + d like(xmlNsPtr) + d doc value like(xmlDocPtr) + d href * value options(*string) const xmlChar * + d prefix * value options(*string) const xmlChar * + /endif LIBXML_LEGACY_ENABLD + + d xmlNewNs pr extproc('xmlNewNs') + d like(xmlNsPtr) + d node value like(xmlNodePtr) + d href * value options(*string) const xmlChar * + d prefix * value options(*string) const xmlChar * + + d xmlFreeNs pr extproc('xmlFreeNs') + d cur value like(xmlNsPtr) + + d xmlFreeNsList pr extproc('xmlFreeNsList') + d cur value like(xmlNsPtr) + + d xmlNewDoc pr extproc('xmlNewDoc') + d like(xmlDocPtr) + d version * value options(*string) const xmlChar * + + d xmlFreeDoc pr extproc('xmlFreeDoc') + d cur value like(xmlDocPtr) + + d xmlNewDocProp pr extproc('xmlNewDocProp') + d like(xmlAttrPtr) + d name * value options(*string) const xmlChar * + d value * value options(*string) const xmlChar * + + /if defined(LIBXML_TREE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_HTML_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_SCHEMAS_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlNewProp pr extproc('xmlNewProp') + d like(xmlAttrPtr) + d node value like(xmlNodePtr) + d name * value options(*string) const xmlChar * + d value * value options(*string) const xmlChar * + + /undefine XML_TESTVAL + /endif + + d xmlNewNsProp pr extproc('xmlNewNsProp') + d like(xmlAttrPtr) + d node value like(xmlNodePtr) + d ns value like(xmlNsPtr) + d name * value options(*string) const xmlChar * + d value * value options(*string) const xmlChar * + + d xmlNewNsPropEatName... + d pr extproc('xmlNewNsPropEatName') + d like(xmlAttrPtr) + d node value like(xmlNodePtr) + d ns value like(xmlNsPtr) + d name * value xmlChar * + d value * value options(*string) const xmlChar * + + d xmlFreePropList... + d pr extproc('xmlFreePropList') + d cur value like(xmlAttrPtr) + + d xmlFreeProp pr extproc('xmlFreeProp') + d cur value like(xmlAttrPtr) + + d xmlCopyProp pr extproc('xmlCopyProp') + d like(xmlAttrPtr) + d target value like(xmlNodePtr) + d cur value like(xmlAttrPtr) + + d xmlCopyPropList... + d pr extproc('xmlCopyPropList') + d like(xmlAttrPtr) + d target value like(xmlNodePtr) + d cur value like(xmlAttrPtr) + + /if defined(LIBXML_TREE_ENABLED) + d xmlCopyDtd pr extproc('xmlCopyDtd') + d like(xmlDtdPtr) + d dtd value like(xmlDtdPtr) + /endif LIBXML_TREE_ENABLED + + /if defined(LIBXML_TREE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_SCHEMAS_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlCopyDoc pr extproc('xmlCopyDoc') + d like(xmlDocPtr) + d doc value like(xmlDocPtr) + d recursive value like(xmlCint) + + /undefine XML_TESTVAL + /endif + + * Creating new nodes. + + d xmlNewDocNode pr extproc('xmlNewDocNode') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d ns value like(xmlNsPtr) + d name * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + d xmlNewDocNodeEatName... + d pr extproc('xmlNewDocNodeEatName') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d ns value like(xmlNsPtr) + d name * value xmlChar * + d content * value options(*string) const xmlChar * + + d xmlNewNode pr extproc('xmlNewNode') + d like(xmlNodePtr) + d ns value like(xmlNsPtr) + d name * value options(*string) const xmlChar * + + d xmlNewNodeEatName... + d pr extproc('xmlNewNodeEatName') + d like(xmlNodePtr) + d ns value like(xmlNsPtr) + d name * value xmlChar * + + /if defined(LIBXML_TREE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_SCHEMAS_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlNewChild pr extproc('xmlNewChild') + d like(xmlNodePtr) + d parent value like(xmlNodePtr) + d ns value like(xmlNsPtr) + d name * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + /undefine XML_TESTVAL + /endif + + d xmlNewDocText pr extproc('xmlNewDocText') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d content * value options(*string) const xmlChar * + + d xmlNewText pr extproc('xmlNewText') + d like(xmlNodePtr) + d content * value options(*string) const xmlChar * + + d xmlNewDocPI pr extproc('xmlNewDocPI') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d name * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + d xmlNewPI pr extproc('xmlNewPI') + d like(xmlNodePtr) + d name * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + d xmlNewDocTextLen... + d pr extproc('xmlNewDocTextLen') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d content * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlNewTextLen pr extproc('xmlNewTextLen') + d like(xmlNodePtr) + d content * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlNewDocComment... + d pr extproc('xmlNewDocComment') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d content * value options(*string) const xmlChar * + + d xmlNewComment pr extproc('xmlNewComment') + d like(xmlNodePtr) + d content * value options(*string) const xmlChar * + + d xmlNewCDataBlock... + d pr extproc('xmlNewCDataBlock') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d content * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlNewCharRef pr extproc('xmlNewCharRef') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d name * value options(*string) const xmlChar * + + d xmlNewReference... + d pr extproc('xmlNewReference') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d name * value options(*string) const xmlChar * + + d xmlCopyNode pr extproc('xmlCopyNode') + d like(xmlNodePtr) + d node value like(xmlNodePtr) + d recursive value like(xmlCint) + + d xmlDocCopyNode pr extproc('xmlDocCopyNode') + d like(xmlNodePtr) + d node value like(xmlNodePtr) + d doc value like(xmlDocPtr) + d recursive value like(xmlCint) + + d xmlDocCopyNodeList... + d pr extproc('xmlDocCopyNodeList') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d node value like(xmlNodePtr) + + d xmlCopyNodeList... + d pr extproc('xmlCopyNodeList') + d like(xmlNodePtr) + d node value like(xmlNodePtr) + + /if defined(LIBXML_TREE_ENABLED) + d xmlNewTextChild... + d pr extproc('xmlNewTextChild') + d like(xmlNodePtr) + d parent value like(xmlNodePtr) + d ns value like(xmlNsPtr) + d name * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + d xmlNewDocRawNode... + d pr extproc('xmlNewDocRawNode') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d ns value like(xmlNsPtr) + d name * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + d xmlNewDocFragment... + d pr extproc('xmlNewDocFragment') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + /endif LIBXML_TREE_ENABLED + + * Navigating. + + d xmlNewDocFragment... + d xmlGetLineNo pr extproc('xmlGetLineNo') + d like(xmlClong) + d node value like(xmlNodePtr) + + /if defined(LIBXML_TREE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_DEBUG_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlGetNodePath pr * extproc('xmlGetNodePath') xmlChar * + d node value like(xmlNodePtr) + + /undefine XML_TESTVAL + /endif + + d xmlDocGetRootElement... + d pr extproc('xmlDocGetRootElement') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + + d xmlGetLastChild... + d pr extproc('xmlGetLastChild') + d like(xmlNodePtr) + d parent value like(xmlNodePtr) + + d xmlNodeIsText pr extproc('xmlNodeIsText') + d like(xmlCint) + d node value like(xmlNodePtr) + + d xmlIsBlankNode pr extproc('xmlIsBlankNode') + d like(xmlCint) + d node value like(xmlNodePtr) + + * Changing the structure. + + /if defined(LIBXML_TREE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_WRITER_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlDocSetRootElement... + d pr extproc('xmlDocSetRootElement') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d root value like(xmlNodePtr) + + /undefine XML_TESTVAL + /endif + + /if defined(LIBXML_TREE_ENABLED) + d xmlNodeSetName pr extproc('xmlNodeSetName') + d node value like(xmlNodePtr) + d name * value options(*string) const xmlChar * + /endif LIBXML_TREE_ENABLED + + d xmlAddChild pr extproc('xmlAddChild') + d like(xmlNodePtr) + d parent value like(xmlNodePtr) + d cur value like(xmlNodePtr) + + d xmlAddChildList... + d pr extproc('xmlAddChildList') + d like(xmlNodePtr) + d parent value like(xmlNodePtr) + d cur value like(xmlNodePtr) + + /if defined(LIBXML_TREE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_WRITER_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlReplaceNode pr extproc('xmlReplaceNode') + d like(xmlNodePtr) + d old value like(xmlNodePtr) + d cur value like(xmlNodePtr) + + /undefine XML_TESTVAL + /endif + + /if defined(LIBXML_TREE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_HTML_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_SCHEMAS_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlAddPrevSibling... + d pr extproc('xmlAddPrevSibling') + d like(xmlNodePtr) + d cur value like(xmlNodePtr) + d elem value like(xmlNodePtr) + + /undefine XML_TESTVAL + /endif + + d xmlAddSibling pr extproc('xmlAddSibling') + d like(xmlNodePtr) + d cur value like(xmlNodePtr) + d elem value like(xmlNodePtr) + + d xmlAddNextSibling... + d pr extproc('xmlAddNextSibling') + d like(xmlNodePtr) + d cur value like(xmlNodePtr) + d elem value like(xmlNodePtr) + + d xmlUnlinkNode pr extproc('xmlUnlinkNode') + d cur value like(xmlNodePtr) + + d xmlTextMerge pr extproc('xmlTextMerge') + d like(xmlNodePtr) + d first value like(xmlNodePtr) + d second value like(xmlNodePtr) + + d xmlTextConcat pr extproc('xmlTextConcat') + d like(xmlCint) + d node value like(xmlNodePtr) + d content * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlFreeNodeList... + d pr extproc('xmlFreeNodeList') + d cur value like(xmlNodePtr) + + d xmlFreeNode pr extproc('xmlFreeNode') + d cur value like(xmlNodePtr) + + d xmlSetTreeDoc pr extproc('xmlSetTreeDoc') + d tree value like(xmlNodePtr) + d doc value like(xmlDocPtr) + + d xmlSetListDoc pr extproc('xmlSetListDoc') + d list value like(xmlNodePtr) + d doc value like(xmlDocPtr) + + * Namespaces. + + d xmlSearchNs pr extproc('xmlSearchNs') + d like(xmlNsPtr) + d doc value like(xmlDocPtr) + d node value like(xmlNodePtr) + d nameSpace * value options(*string) const xmlChar * + + d xmlSearchNsByHref... + d pr extproc('xmlSearchNsByHref') + d like(xmlNsPtr) + d doc value like(xmlDocPtr) + d node value like(xmlNodePtr) + d href * value options(*string) const xmlChar * + + /if defined(LIBXML_TREE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_XPATH_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_SCHEMAS_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlGetNsList pr * extproc('xmlGetNsList') xmlNsPtr * + d doc value like(xmlDocPtr) + d node value like(xmlNodePtr) + + /undefine XML_TESTVAL + /endif + + d xmlSetNs pr extproc('xmlSetNs') + d node value like(xmlNodePtr) + d ns value like(xmlNsPtr) + + d xmlCopyNamespace... + d pr extproc('xmlCopyNamespace') + d like(xmlNsPtr) + d cur value like(xmlNsPtr) + + d xmlCopyNamespaceList... + d pr extproc('xmlCopyNamespaceList') + d like(xmlNsPtr) + d cur value like(xmlNsPtr) + + * Changing the content. + + /if defined(LIBXML_TREE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_XINCLUDE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_SCHEMAS_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_HTML_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlSetProp pr extproc('xmlSetProp') + d like(xmlAttrPtr) + d node value like(xmlNodePtr) + d name * value options(*string) const xmlChar * + d value * value options(*string) const xmlChar * + + d xmlSetNsProp pr extproc('xmlSetNsProp') + d like(xmlAttrPtr) + d node value like(xmlNodePtr) + d ns value like(xmlNsPtr) + d name * value options(*string) const xmlChar * + d value * value options(*string) const xmlChar * + + /undefine XML_TESTVAL + /endif + + d xmlGetNoNsProp pr * extproc('xmlGetNoNsProp') xmlChar * + d node value like(xmlNodePtr) + d name * value options(*string) const xmlChar * + + d xmlGetProp pr * extproc('xmlGetProp') xmlChar * + d node value like(xmlNodePtr) + d name * value options(*string) const xmlChar * + + d xmlHasProp pr extproc('xmlHasProp') + d like(xmlAttrPtr) + d node value like(xmlNodePtr) + d name * value options(*string) const xmlChar * + + d xmlHasNsProp pr extproc('xmlHasNsProp') + d like(xmlAttrPtr) + d node value like(xmlNodePtr) + d name * value options(*string) const xmlChar * + d nameSpace * value options(*string) const xmlChar * + + d xmlGetNsProp pr * extproc('xmlGetNsProp') xmlChar * + d node value like(xmlNodePtr) + d name * value options(*string) const xmlChar * + d nameSpace * value options(*string) const xmlChar * + + d xmlStringGetNodeList... + d pr extproc('xmlStringGetNodeList') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d value * value options(*string) const xmlChar * + + d xmlStringLenGetNodeList... + d pr extproc('xmlStringLenGetNodeList') + d like(xmlNodePtr) + d doc value like(xmlDocPtr) + d value * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlNodeListGetString... + d pr * extproc('xmlNodeListGetString') xmlChar * + d doc value like(xmlDocPtr) + d list value like(xmlNodePtr) + d inLine value like(xmlCint) + + /if defined(LIBXML_TREE_ENABLED) + d xmlNodeListGetRawString... + d pr * extproc('xmlNodeListGetRawString') xmlChar * + d doc value like(xmlDocPtr) + d list value like(xmlNodePtr) + d inLine value like(xmlCint) + /endif LIBXML_TREE_ENABLED + + d xmlNodeSetContent... + d pr extproc('xmlNodeSetContent') + d cur value like(xmlNodePtr) + d content * value options(*string) const xmlChar * + + /if defined(LIBXML_TREE_ENABLED) + d xmlNodeSetContentLen... + d pr extproc('xmlNodeSetContentLen') + d cur value like(xmlNodePtr) + d content * value options(*string) const xmlChar * + d len value like(xmlCint) + /endif LIBXML_TREE_ENABLED + + d xmlNodeAddContent... + d pr extproc('xmlNodeAddContent') + d cur value like(xmlNodePtr) + d content * value options(*string) const xmlChar * + + d xmlNodeAddContentLen... + d pr extproc('xmlNodeAddContentLen') + d cur value like(xmlNodePtr) + d content * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlNodeGetContent... + d pr * extproc('xmlNodeGetContent') xmlChar * + d cur value like(xmlNodePtr) + + d xmlNodeBufGetContent... + d pr extproc('xmlNodeBufGetContent') + d like(xmlCint) + d buffer value like(xmlBufferPtr) + d cur value like(xmlNodePtr) + + d xmlBufGetNodeContent... + d pr extproc('xmlBufGetNodeContent') + d like(xmlCint) + d buf value like(xmlBufPtr) + d cur value like(xmlNodePtr) + + d xmlNodeGetLang pr * extproc('xmlNodeGetLang') xmlChar * + d cur value like(xmlNodePtr) + + d xmlNodeGetSpacePreserve... + d pr extproc('xmlNodeGetSpacePreserve') + d like(xmlCint) + d cur value like(xmlNodePtr) + + /if defined(LIBXML_TREE_ENABLED) + d xmlNodeSetLang pr extproc('xmlNodeSetLang') + d cur value like(xmlNodePtr) + d lang * value options(*string) const xmlChar * + + d xmlNodeSetSpacePreserve... + d pr extproc('xmlNodeSetSpacePreserve') + d cur value like(xmlNodePtr) + d val value like(xmlCint) + /endif LIBXML_TREE_ENABLED + + d xmlNodeGetBase pr * extproc('xmlNodeGetBase') xmlChar * + d doc value like(xmlDocPtr) + d cur value like(xmlNodePtr) + + /if defined(LIBXML_TREE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_XINCLUDE_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlNodeSetBase pr extproc('xmlNodeSetBase') + d node value like(xmlNodePtr) + d uri * value options(*string) const xmlChar * + + /undefine XML_TESTVAL + /endif + + * Removing content. + + d xmlRemoveProp pr extproc('xmlRemoveProp') + d like(xmlCint) + d cur value like(xmlAttrPtr) + + /if defined(LIBXML_TREE_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_SCHEMAS_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlUnsetNsProp pr extproc('xmlUnsetNsProp') + d like(xmlCint) + d node value like(xmlNodePtr) + d ns value like(xmlNsPtr) + d name * value options(*string) const xmlChar * + + d xmlUnsetProp pr extproc('xmlUnsetProp') + d like(xmlCint) + d node value like(xmlNodePtr) + d name * value options(*string) const xmlChar * + + /undefine XML_TESTVAL + /endif + + * Internal, don't use. + + d xmlBufferWriteCharacter... Warning: renamed + d pr extproc('xmlBufferWriteCHAR') + d buf value like(xmlBufferPtr) + d string * value options(*string) const xmlChar * + + d xmlBufferWriteChar... + d pr extproc('xmlBufferWriteChar') + d buf value like(xmlBufferPtr) + d string * value options(*string) const xmlChar * + + d xmlBufferWriteQuotedString... + d pr extproc('xmlBufferWriteQuotedString') + d buf value like(xmlBufferPtr) + d string * value options(*string) const xmlChar * + + /if defined(LIBXML_OUTPUT_ENABLED) + d xmlAttrSerializeTxtContent... + d pr extproc('xmlAttrSerializeTxtContent') + d buf value like(xmlBufferPtr) + d attr value like(xmlAttrPtr) + d string * value options(*string) const xmlChar * + /endif LIBXML_OUTPUT_ENABLD + + /if defined(LIBXML_TREE_ENABLED) + + * Namespace handling. + + d xmlReconciliateNs... + d pr extproc('xmlReconciliateNs') + d like(xmlCint) + d doc value like(xmlDocPtr) + d tree value like(xmlNodePtr) + /endif + + /if defined(LIBXML_OUTPUT_ENABLED) + + * Saving. + + d xmlDocDumpFormatMemory... + d pr extproc('xmlDocDumpFormatMemory') + d cur value like(xmlDocPtr) + d mem * xmlChar * (*) + d size like(xmlCint) + d format value like(xmlCint) + + d xmlDocDumpMemory... + d pr extproc('xmlDocDumpMemory') + d cur value like(xmlDocPtr) + d mem * xmlChar * (*) + d size like(xmlCint) + + d xmlDocDumpMemoryEnc... + d pr extproc('xmlDocDumpMemoryEnc') + d out_doc value like(xmlDocPtr) + d doc_txt_ptr * xmlChar * (*) + d doc_txt_len like(xmlCint) + d txt_encoding * value options(*string) const char * + + d xmlDocDumpFormatMemoryEnc... + d pr extproc('xmlDocDumpFormatMemoryEnc') + d out_doc value like(xmlDocPtr) + d doc_txt_ptr * xmlChar * (*) + d doc_txt_len like(xmlCint) + d txt_encoding * value options(*string) const char * + d format value like(xmlCint) + + d xmlDocFormatDump... + d pr extproc('xmlDocFormatDump') + d like(xmlCint) + d f * value FILE * + d cur value like(xmlDocPtr) + d format value like(xmlCint) + + d xmlDocDump pr extproc('xmlDocDump') + d like(xmlCint) + d f * value FILE * + d cur value like(xmlDocPtr) + + d xmlElemDump pr extproc('xmlElemDump') + d f * value FILE * + d doc value like(xmlDocPtr) + d cur value like(xmlNodePtr) + + d xmlSaveFile pr extproc('xmlSaveFile') + d like(xmlCint) + d filename * value options(*string) const char * + d cur value like(xmlDocPtr) + + d xmlSaveFormatFile... + d pr extproc('xmlSaveFormatFile') + d like(xmlCint) + d filename * value options(*string) const char * + d cur value like(xmlDocPtr) + d format value like(xmlCint) + + d xmlBufNodeDump pr extproc('xmlBufNodeDump') + d like(xmlCsize_t) + d buf value like(xmlBufPtr) + d doc value like(xmlDocPtr) + d cur value like(xmlNodePtr) + d level value like(xmlCint) + d format value like(xmlCint) + + d xmlNodeDump pr extproc('xmlNodeDump') + d like(xmlCint) + d buf value like(xmlBufferPtr) + d doc value like(xmlDocPtr) + d cur value like(xmlNodePtr) + d level value like(xmlCint) + d format value like(xmlCint) + + d xmlSaveFileTo pr extproc('xmlSaveFileTo') + d like(xmlCint) + d buf value like(xmlOutputBufferPtr) + d cur value like(xmlDocPtr) + d encoding * value options(*string) const char * + + d xmlSaveFormatFileTo... + d pr extproc('xmlSaveFormatFileTo') + d like(xmlCint) + d buf value like(xmlOutputBufferPtr) + d cur value like(xmlDocPtr) + d encoding * value options(*string) const char * + d format value like(xmlCint) + + d xmlNodeDumpOutput... + d pr extproc('xmlNodeDumpOutput') + d buf value like(xmlOutputBufferPtr) + d doc value like(xmlDocPtr) + d cur value like(xmlNodePtr) + d level value like(xmlCint) + d format value like(xmlCint) + d encoding * value options(*string) const char * + + d xmlSaveFormatFileEnc... + d pr extproc('xmlSaveFormatFileEnc') + d like(xmlCint) + d filename * value options(*string) const char * + d cur value like(xmlDocPtr) + d encoding * value options(*string) const char * + d format value like(xmlCint) + + d xmlSaveFileEnc pr extproc('xmlSaveFileEnc') + d like(xmlCint) + d filename * value options(*string) const char * + d cur value like(xmlDocPtr) + d encoding * value options(*string) const char * + /endif LIBXML_OUTPUT_ENABLD + + * XHTML + + d xmlIsXHTML pr extproc('xmlIsXHTML') + d like(xmlCint) + d systemID * value options(*string) const xmlChar * + d publicID * value options(*string) const xmlChar * + + * Compression. + + d xmlGetDocCompressMode... + d pr extproc('xmlGetDocCompressMode') + d like(xmlCint) + d doc value like(xmlDocPtr) + + d xmlSetDocCompressMode... + d pr extproc('xmlSetDocCompressMode') + d doc value like(xmlDocPtr) + d mode value like(xmlCint) + + d xmlGetCompressMode... + d pr extproc('xmlGetCompressMode') + d like(xmlCint) + + d xmlSetCompressMode... + d pr extproc('xmlSetCompressMode') + d mode value like(xmlCint) + + * DOM-wrapper helper functions. + + d xmlDOMWrapNewCtxt... + d pr extproc('xmlDOMWrapNewCtxt') + d like(xmlDOMWrapCtxtPtr) + + d xmlDOMWrapFreeCtxt... + d pr extproc('xmlDOMWrapFreeCtxt') + d ctxt value like(xmlDOMWrapCtxtPtr) + + d xmlDOMWrapReconcileNamespaces... + d pr extproc( + d 'xmlDOMWrapReconcileNamespaces') + d like(xmlCint) + d ctxt value like(xmlDOMWrapCtxtPtr) + d elem value like(xmlNodePtr) + d options value like(xmlCint) + + d xmlDOMWrapAdoptNode... + d pr extproc('xmlDOMWrapAdoptNode') + d like(xmlCint) + d ctxt value like(xmlDOMWrapCtxtPtr) + d sourceDoc value like(xmlDocPtr) + d node value like(xmlNodePtr) + d destDoc value like(xmlDocPtr) + d destParent value like(xmlNodePtr) + d options value like(xmlCint) + + d xmlDOMWrapRemoveNode... + d pr extproc('xmlDOMWrapRemoveNode') + d like(xmlCint) + d ctxt value like(xmlDOMWrapCtxtPtr) + d doc value like(xmlDocPtr) + d node value like(xmlNodePtr) + d options value like(xmlCint) + + d xmlDOMWrapCloneNode... + d pr extproc('xmlDOMWrapCloneNode') + d like(xmlCint) + d ctxt value like(xmlDOMWrapCtxtPtr) + d sourceDoc value like(xmlDocPtr) + d node value like(xmlNodePtr) + d clonedNode like(xmlNodePtr) + d destDoc value like(xmlDocPtr) + d destParent value like(xmlNodePtr) + d options value like(xmlCint) + + /if defined(LIBXML_TREE_ENABLED) + + * 5 interfaces from DOM ElementTraversal, but different in entities + * traversal. + + d xmlChildElementCount... + d pr extproc('xmlChildElementCount') + d like(xmlClong) + d parent value like(xmlNodePtr) + + d xmlNextElementSibling... + d pr extproc('xmlNextElementSibling') + d like(xmlNodePtr) + d node value like(xmlNodePtr) + + d xmlFirstElementChild... + d pr extproc('xmlFirstElementChild') + d like(xmlNodePtr) + d parent value like(xmlNodePtr) + + d xmlLastElementChild... + d pr extproc('xmlLastElementChild') + d like(xmlNodePtr) + d parent value like(xmlNodePtr) + + d xmlPreviousElementSibling... + d pr extproc('xmlPreviousElementSibling') + d like(xmlNodePtr) + d node value like(xmlNodePtr) + /endif + + /if not defined(XML_PARSER_H__) + /include "libxmlrpg/xmlmemory" + /endif + + /endif XML_TREE_H__ diff --git a/libxml2/os400/libxmlrpg/uri.rpgle b/libxml2/os400/libxmlrpg/uri.rpgle new file mode 100644 index 0000000..de03392 --- /dev/null +++ b/libxml2/os400/libxmlrpg/uri.rpgle @@ -0,0 +1,103 @@ + * Summary: library of generic URI related routines + * Description: library of generic URI related routines + * Implements RFC 2396 + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_URI_H__) + /define XML_URI_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + + * xmlURI: + * + * A parsed URI reference. This is a struct containing the various fields + * as described in RFC 2396 but separated for further processing. + * + * Note: query is a deprecated field which is incorrectly unescaped. + * query_raw takes precedence over query if the former is set. + * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00127 + + d xmlURIPtr s * based(######typedef######) + + d xmlURI ds based(xmlURIPtr) + d align qualified + d scheme * char * + d opaque * char * + d authority * char * + d server * char * + d user * char * + d port like(xmlCint) + d path * char * + d query * char * + d fragment * char * + d cleanup like(xmlCint) + d query_raw * char * + + d xmlCreateURI pr extproc('xmlCreateURI') + d like(xmlURIPtr) + + d xmlBuildURI pr * extproc('xmlBuildURI') xmlChar * + d URI * value options(*string) const xmlChar * + d base * value options(*string) const xmlChar * + + d xmlBuildRelativeURI... + d pr * extproc('xmlBuildRelativeURI') xmlChar * + d URI * value options(*string) const xmlChar * + d base * value options(*string) const xmlChar * + + d xmlParseURI pr extproc('xmlParseURI') + d like(xmlURIPtr) + d str * value options(*string) const char * + + d xmlParseURIRaw pr extproc('xmlParseURIRaw') + d like(xmlURIPtr) + d str * value options(*string) const char * + d raw value like(xmlCint) + + d xmlParseURIReference... + d pr extproc('xmlParseURIReference') + d like(xmlCint) + d uri value like(xmlURIPtr) + d str * value options(*string) const char * + + d xmlSaveUri pr * extproc('xmlSaveUri') xmlChar * + d uri value like(xmlURIPtr) + + d xmlPrintURI pr extproc('xmlPrintURI') + d stream * value FILE * + d uri value like(xmlURIPtr) + + d xmlURIEscapeStr... + d pr * extproc('xmlURIEscapeStr') xmlChar * + d str * value options(*string) const xmlChar * + d list * value options(*string) const xmlChar * + + d xmlURIUnescapeString... + d pr * extproc('xmlURIUnescapeString') char * + d str * value options(*string) const char * + d len value like(xmlCint) + d target * value options(*string) char * + + d xmlNormalizeURIPath... + d pr extproc('xmlNormalizeURIPath') + d like(xmlCint) + d path * value options(*string) char * + + d xmlURIEscape pr * extproc('xmlURIEscape') xmlChar * + d str * value options(*string) const xmlChar * + + d xmlFreeURI pr extproc('xmlFreeURI') + d uri value like(xmlURIPtr) + + d xmlCanonicPath pr * extproc('xmlCanonicPath') xmlChar * + d path * value options(*string) const xmlChar * + + d xmlPathToURI pr * extproc('xmlPathToURI') xmlChar * + d path * value options(*string) const xmlChar * + + /endif XML_URI_H__ diff --git a/libxml2/os400/libxmlrpg/valid.rpgle b/libxml2/os400/libxmlrpg/valid.rpgle new file mode 100644 index 0000000..32ebbd3 --- /dev/null +++ b/libxml2/os400/libxmlrpg/valid.rpgle @@ -0,0 +1,605 @@ + * Summary: The DTD validation + * Description: API for the DTD handling and the validity checking + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_VALID_H__) + /define XML_VALID_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/xmlerror" + /include "libxmlrpg/tree" + /include "libxmlrpg/list" + /include "libxmlrpg/xmlautomata" + /include "libxmlrpg/xmlregexp" + + * Validation state added for non-determinist content model. + + d xmlValidStatePtr... + d s * based(######typedef######) + + * xmlValidityErrorFunc: + * @ctx: usually an xmlValidCtxtPtr to a validity error context, + * but comes from ctxt->userData (which normally contains such + * a pointer); ctxt->userData can be changed by the user. + * @msg: the string to format *printf like vararg + * @...: remaining arguments to the format + * + * Callback called when a validity error is found. This is a message + * oriented function similar to an *printf function. + + d xmlValidityErrorFunc... + d s * based(######typedef######) + d procptr + + * xmlValidityWarningFunc: + * @ctx: usually an xmlValidCtxtPtr to a validity error context, + * but comes from ctxt->userData (which normally contains such + * a pointer); ctxt->userData can be changed by the user. + * @msg: the string to format *printf like vararg + * @...: remaining arguments to the format + * + * Callback called when a validity warning is found. This is a message + * oriented function similar to an *printf function. + + d xmlValidityWarningFunc... + d s * based(######typedef######) + d procptr + + * xmlValidCtxt: + * An xmlValidCtxt is used for error reporting when validating. + + d xmlValidCtxtPtr... + d s * based(######typedef######) + + d xmlValidCtxt ds based(xmlValidCtxtPtr) + d align qualified + d userdata * void * + d error like(xmlValidityErrorFunc) Error callback + d warning like(xmlValidityWarningFunc) Warning callback + * + * Node analysis stack used when validating within entities + * + d node like(xmlNodePtr) Current parsed Node + d nodeNr like(xmlCint) Parsing stack depth + d nodeMax like(xmlCint) Max stack depth + d nodeTab * xmlNodePtr * + * + d finishDtd like(xmlCuint) + d doc like(xmlDocPtr) The document + d valid like(xmlCint) Temp check result + * + * state state used for non-determinist content validation + * + d vstate * xmlValidState * + d vstateNr like(xmlCint) Validat. stack depth + d vstateMax like(xmlCint) Max stack depth + d vstateTab * xmlValidState * + * + /if defined(LIBXML_REGEXP_ENABLED) + d am like(xmlAutomataPtr) The automata + d state like(xmlAutomataStatePtr) Automata build state + /else + d am * + d state * + /endif + + * ALL notation declarations are stored in a table. + * There is one table per DTD. + + d xmlNotationTablePtr... + d s * based(######typedef######) + + * ALL element declarations are stored in a table. + * There is one table per DTD. + + d xmlElementTablePtr... + d s * based(######typedef######) + + * ALL attribute declarations are stored in a table. + * There is one table per DTD. + + d xmlAttributeTablePtr... + d s * based(######typedef######) + + * ALL IDs attributes are stored in a table. + * There is one table per document. + + d xmlIDTablePtr s * based(######typedef######) + + * ALL Refs attributes are stored in a table. + * There is one table per document. + + d xmlRefTablePtr s * based(######typedef######) + + * Notation + + d xmlAddNotationDecl... + d pr extproc('xmlAddNotationDecl') + d like(xmlNotationPtr) + d ctxt value like(xmlValidCtxtPtr) + d dtd value like(xmlDtdPtr) + d name * value options(*string) const xmlChar * + d PublicID * value options(*string) const xmlChar * + d SystemID * value options(*string) const xmlChar * + + /if defined(LIBXML_TREE_ENABLED) + d xmlCopyNotationTable... + d pr extproc('xmlCopyNotationTable') + d like(xmlNotationPtr) + d table value like(xmlNotationTablePtr) + /endif LIBXML_TREE_ENABLED + + d xmlFreeNotationTable... + d pr extproc('xmlFreeNotationTable') + d table value like(xmlNotationTablePtr) + + /if defined(LIBXML_OUTPUT_ENABLED) + d xmlDumpNotationDecl... + d pr extproc('xmlDumpNotationDecl') + d buf value like(xmlBufferPtr) + d nota value like(xmlNotationPtr) + + d xmlDumpNotationTable... + d pr extproc('xmlDumpNotationTable') + d buf value like(xmlBufferPtr) + d table value like(xmlNotationTablePtr) + /endif LIBXML_OUTPUT_ENABLD + + * Element Content + * the non Doc version are being deprecated + + d xmlNewElementContent... + d pr extproc('xmlNewElementContent') + d like(xmlElementContentPtr) + d name * value const xmlChar * + d type value like(xmlElementContentType) + + d xmlCopyElementContent... + d pr extproc('xmlCopyElementContent') + d like(xmlElementContentPtr) + d content value like(xmlElementContentPtr) + + d xmlFreeElementContent... + d pr extproc('xmlFreeElementContent') + d cur value like(xmlElementContentPtr) + + * the new versions with doc argument + + d xmlNewDocElementContent... + d pr extproc('xmlNewDocElementContent') + d like(xmlElementContentPtr) + d doc value like(xmlDocPtr) + d name * value const xmlChar * + d type value like(xmlElementContentType) + + d xmlCopyDocElementContent... + d pr extproc('xmlCopyDocElementContent') + d like(xmlElementContentPtr) + d doc value like(xmlDocPtr) + d content value like(xmlElementContentPtr) + + d xmlFreeDocElementContent... + d pr extproc('xmlFreeDocElementContent') + d doc value like(xmlDocPtr) + d cur value like(xmlElementContentPtr) + + d xmlSnprintfElementContent... + d pr extproc('xmlSnprintfElementContent') + d buf 65535 options(*varsize) + d size value like(xmlCint) + d content value like(xmlElementContentPtr) + d englob value like(xmlCint) + + /if defined(LIBXML_OUTPUT_ENABLED) + * DEPRECATED + d xmlSprintfElementContent... + d pr extproc('xmlSprintfElementContent') + d buf 65535 options(*varsize) + d content value like(xmlElementContentPtr) + d englob value like(xmlCint) + /endif LIBXML_OUTPUT_ENABLD + + * DEPRECATED + + * Element + + d xmlAddElementDecl... + d pr extproc('xmlAddElementDecl') + d like(xmlElementPtr) + d ctxt value like(xmlValidCtxtPtr) + d dtd value like(xmlDtdPtr) + d name * value options(*string) const xmlChar * + d type value like(xmlElementTypeVal) + d content value like(xmlElementContentPtr) + + /if defined(LIBXML_TREE_ENABLED) + d xmlCopyElementTable... + d pr extproc('xmlCopyElementTable') + d like(xmlElementTablePtr) + d table value like(xmlElementTablePtr) + /endif LIBXML_TREE_ENABLED + + d xmlFreeElementTable... + d pr extproc('xmlFreeElementTable') + d table value like(xmlElementTablePtr) + + /if defined(LIBXML_OUTPUT_ENABLED) + d xmlDumpElementTable... + d pr extproc('xmlDumpElementTable') + d buf value like(xmlBufferPtr) + d table value like(xmlElementTablePtr) + + d xmlDumpElementDecl... + d pr extproc('xmlDumpElementDecl') + d buf value like(xmlBufferPtr) + d elem value like(xmlElementPtr) + /endif LIBXML_OUTPUT_ENABLD + + * Enumeration + + d xmlCreateEnumeration... + d pr extproc('xmlCreateEnumeration') + d like(xmlEnumerationPtr) + d name * value options(*string) const xmlChar * + + d xmlFreeEnumeration... + d pr extproc('xmlFreeEnumeration') + d cur value like(xmlEnumerationPtr) + + /if defined(LIBXML_TREE_ENABLED) + d xmlCopyEnumeration... + d pr extproc('xmlCopyEnumeration') + d like(xmlEnumerationPtr) + d cur value like(xmlEnumerationPtr) + /endif LIBXML_TREE_ENABLED + + * Attribute + + d xmlAddAttributeDecl... + d pr extproc('xmlAddAttributeDecl') + d like(xmlAttributePtr) + d ctxt value like(xmlValidCtxtPtr) + d dtd value like(xmlDtdPtr) + d elem * value options(*string) const xmlChar * + d name * value options(*string) const xmlChar * + d ns * value options(*string) const xmlChar * + d type value like(xmlAttributeType) + d def value like(xmlAttributeDefault) + d defaultValue * value options(*string) const xmlChar * + d tree value like(xmlEnumerationPtr) + + /if defined(LIBXML_TREE_ENABLED) + d xmlCopyAttributeTable... + d pr extproc('xmlCopyAttributeTable') + d like(xmlAttributeTablePtr) + d table value like(xmlAttributeTablePtr) + /endif LIBXML_TREE_ENABLED + + d xmlFreeAttributeTable... + d pr extproc('xmlFreeAttributeTable') + d table value like(xmlAttributeTablePtr) + + /if defined(LIBXML_OUTPUT_ENABLED) + d xmlDumpAttributeTable... + d pr extproc('xmlDumpAttributeTable') + d buf value like(xmlBufferPtr) + d table value like(xmlAttributeTablePtr) + + d xmlDumpAttributeDecl... + d pr extproc('xmlDumpAttributeDecl') + d buf value like(xmlBufferPtr) + d attr value like(xmlAttributePtr) + /endif LIBXML_OUTPUT_ENABLD + + * IDs + + d xmlAddID pr extproc('xmlAddID') + d like(xmlIDPtr) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d value * value options(*string) const xmlChar * + d attr value like(xmlAttrPtr) + + d xmlFreeIdTable pr extproc('xmlFreeIDTable') + d table value like(xmlIDTablePtr) + + d xmlGetID pr extproc('xmlGetID') + d like(xmlAttrPtr) + d doc value like(xmlDocPtr) + d ID * value options(*string) const xmlChar * + + d xmlIsID pr extproc('xmlIsID') + d like(xmlCint) + d doc value like(xmlDocPtr) + d node value like(xmlNodePtr) + d attr value like(xmlAttrPtr) + + d xmlRemoveID pr extproc('xmlRemoveID') + d like(xmlCint) + d doc value like(xmlDocPtr) + d attr value like(xmlAttrPtr) + + * IDREFs + + d xmlAddRef pr extproc('xmlAddRef') + d like(xmlRefPtr) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d value * value options(*string) const xmlChar * + d attr value like(xmlAttrPtr) + + d xmlFreeRefTable... + d pr extproc('xmlFreeRefTable') + d table value like(xmlRefTablePtr) + + d xmlIsRef pr extproc('xmlIsRef') + d like(xmlCint) + d doc value like(xmlDocPtr) + d node value like(xmlNodePtr) + d attr value like(xmlAttrPtr) + + d xmlRemoveRef pr extproc('xmlRemoveRef') + d like(xmlCint) + d doc value like(xmlDocPtr) + d attr value like(xmlAttrPtr) + + d xmlGetRefs pr extproc('xmlGetRefs') + d like(xmlListPtr) + d doc value like(xmlDocPtr) + d ID * value options(*string) const xmlChar * + + * The public function calls related to validity checking. + + /if defined(LIBXML_VALID_ENABLED) + * Allocate/Release Validation Contexts + + d xmlNewValidCtxt... + d pr extproc('xmlNewValidCtxt') + d like(xmlValidCtxtPtr) + + d xmlFreeValidCtxt... + d pr extproc('xmlFreeValidCtxt') + d ctxt value like(xmlValidCtxtPtr) + + d xmlValidateRoot... + d pr extproc('xmlValidateRoot') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + + d xmlValidateElementDecl... + d pr extproc('xmlValidateElementDecl') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d elem value like(xmlElementPtr) + + d xmlValidNormalizeAttributeValue... + d pr * extproc( xmlChar * + d 'xmlValidNormalizeAttributeValue') + d doc value like(xmlDocPtr) + d elem value like(xmlNodePtr) + d name * value options(*string) const xmlChar * + d value * value options(*string) const xmlChar * + + d xmlValidCtxtNormalizeAttributeValue... + d pr * extproc('xmlValidCtxt+ xmlChar * + d NormalizeAttributeValue') + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d elem value like(xmlNodePtr) + d name * value options(*string) const xmlChar * + d value * value options(*string) const xmlChar * + + d xmlValidateAttributeDecl... + d pr extproc('xmlValidateAttributeDecl') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d attr value like(xmlAttributePtr) + + d xmlValidateAttributeValue... + d pr extproc('xmlValidateAttributeValue') + d like(xmlCint) + d type value like(xmlAttributeType) + d value * value options(*string) const xmlChar * + + d xmlValidateNotationDecl... + d pr extproc('xmlValidateNotationDecl') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d nota value like(xmlNotationPtr) + + d xmlValidateDtd pr extproc('xmlValidateDtd') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d dtd value like(xmlDtdPtr) + + d xmlValidateDtdFinal... + d pr extproc('xmlValidateDtdFinal') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + + d xmlValidateDocument... + d pr extproc('xmlValidateDocument') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + + d xmlValidateElement... + d pr extproc('xmlValidateElement') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d elem value like(xmlNodePtr) + + d xmlValidateOneElement... + d pr extproc('xmlValidateOneElement') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d elem value like(xmlNodePtr) + + d xmlValidateOneAttribute... + d pr extproc('xmlValidateOneAttribute') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d elem value like(xmlNodePtr) + d attr value like(xmlAttrPtr) + d value * value options(*string) const xmlChar * + + d xmlValidateOneNamespace... + d pr extproc('xmlValidateOneNamespace') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d elem value like(xmlNodePtr) + d prefix * value options(*string) const xmlChar * + d ns value like(xmlNsPtr) + d value * value options(*string) const xmlChar * + + d xmlValidateDocumentFinal... + d pr extproc('xmlValidateDocumentFinal') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + /endif LIBXML_VALID_ENABLED + + /undefine XML_TESTVAL + /if defined(LIBXML_VALID_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_SCHEMAS_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlValidateNotationUse... + d pr extproc('xmlValidateNotationUse') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d notationName * value options(*string) const xmlChar * + + /undefine XML_TESTVAL + /endif + + d xmlIsMixedElement... + d pr extproc('xmlIsMixedElement') + d like(xmlCint) + d doc value like(xmlDocPtr) + d name * value options(*string) const xmlChar * + + d xmlGetDtdAttrDesc... + d pr extproc('xmlGetDtdAttrDesc') + d like(xmlAttributePtr) + d dtd value like(xmlDtdPtr) + d elem * value options(*string) const xmlChar * + d name * value options(*string) const xmlChar * + + d xmlGetDtdQAttrDesc... + d pr extproc('xmlGetDtdQAttrDesc') + d like(xmlAttributePtr) + d dtd value like(xmlDtdPtr) + d elem * value options(*string) const xmlChar * + d name * value options(*string) const xmlChar * + d prefix * value options(*string) const xmlChar * + + d xmlGetDtdNotationDesc... + d pr extproc('xmlGetDtdNotationDesc') + d like(xmlNotationPtr) + d dtd value like(xmlDtdPtr) + d name * value options(*string) const xmlChar * + + d xmlGetDtdQElementDesc... + d pr extproc('xmlGetDtdQElementDesc') + d like(xmlElementPtr) + d dtd value like(xmlDtdPtr) + d name * value options(*string) const xmlChar * + d prefix * value options(*string) const xmlChar * + + d xmlGetDtdElementDesc... + d pr extproc('xmlGetDtdElementDesc') + d like(xmlElementPtr) + d dtd value like(xmlDtdPtr) + d name * value options(*string) const xmlChar * + + /if defined(LIBXML_VALID_ENABLED) + d xmlValidGetPotentialChildren... + d pr extproc( + d 'xmlValidGetPotentialChildren') + d like(xmlCint) + d ctree * value xmlElementContent * + d names * const xmlChar *(*) + d len like(xmlCint) + d max value like(xmlCint) + + d xmlValidGetValidElements... + d pr extproc('xmlValidGetValidElements') + d like(xmlCint) + d prev like(xmlNodePtr) + d next like(xmlNodePtr) + d names * const xmlChar *(*) + d max value like(xmlCint) + + d xmlValidateNameValue... + d pr extproc('xmlValidateNameValue') + d like(xmlCint) + d value * value options(*string) const xmlChar * + + d xmlValidateNamesValue... + d pr extproc('xmlValidateNamesValue') + d like(xmlCint) + d value * value options(*string) const xmlChar * + + d xmlValidateNmtokenValue... + d pr extproc('xmlValidateNmtokenValue') + d like(xmlCint) + d value * value options(*string) const xmlChar * + + d xmlValidateNmtokensValue... + d pr extproc('xmlValidateNmtokensValue') + d like(xmlCint) + d value * value options(*string) const xmlChar * + + /if defined(LIBXML_REGEXP_ENABLED) + * Validation based on the regexp support + + d xmlValidBuildContentModel... + d pr extproc('xmlValidBuildContentModel') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d elem value like(xmlElementPtr) + + d xmlValidatePushElement... + d pr extproc('xmlValidatePushElement') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d elem value like(xmlNodePtr) + d qname * value options(*string) const xmlChar * + + d xmlValidatePushCData... + d pr extproc('xmlValidatePushCData') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d data * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlValidatePopElement... + d pr extproc('xmlValidatePopElement') + d like(xmlCint) + d ctxt value like(xmlValidCtxtPtr) + d doc value like(xmlDocPtr) + d elem value like(xmlNodePtr) + d qname * value options(*string) const xmlChar * + + /endif LIBXML_REGEXP_ENABLD + /endif LIBXML_VALID_ENABLED + /endif XML_VALID_H__ diff --git a/libxml2/os400/libxmlrpg/xinclude.rpgle b/libxml2/os400/libxmlrpg/xinclude.rpgle new file mode 100644 index 0000000..93b7c51 --- /dev/null +++ b/libxml2/os400/libxmlrpg/xinclude.rpgle @@ -0,0 +1,156 @@ + * Summary: implementation of XInclude + * Description: API to handle XInclude processing, + * implements the + * World Wide Web Consortium Last Call Working Draft 10 November 2003 + * http://www.w3.org/TR/2003/WD-xinclude-20031110 + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_XINCLUDE_H__) + /define XML_XINCLUDE_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + + /if defined(LIBXML_XINCLUDE_ENABLED) + + * XINCLUDE_NS: + * + * Macro defining the Xinclude namespace: http://www.w3.org/2003/XInclude + + d XINCLUDE_NS c 'http://www.w3.org/2003/XInclude' + + + * XINCLUDE_OLD_NS: + * + * Define the draft Xinclude namespace: http://www.w3.org/2001/XInclude + + d XINCLUDE_OLD_NS... + d c 'http://www.w3.org/2001/XInclude' + + * XINCLUDE_NODE: + * + * Macro defining "include" + + d XINCLUDE_NODE c 'include' + + * XINCLUDE_FALLBACK: + * + * Macro defining "fallback" + + d XINCLUDE_FALLBACK... + d c 'fallback' + + * XINCLUDE_HREF: + * + * Macro defining "href" + + d XINCLUDE_HREF c 'href' + + * XINCLUDE_PARSE: + * + * Macro defining "parse" + + d XINCLUDE_PARSE c 'parse' + + * XINCLUDE_PARSE_XML: + * + * Macro defining "xml" + + d XINCLUDE_PARSE_XML... + d c 'xml' + + * XINCLUDE_PARSE_TEXT: + * + * Macro defining "text" + + d XINCLUDE_PARSE_TEXT... + d c 'text' + + * XINCLUDE_PARSE_ENCODING: + * + * Macro defining "encoding" + + d XINCLUDE_PARSE_ENCODING... + d c 'encoding' + + * XINCLUDE_PARSE_XPOINTER: + * + * Macro defining "xpointer" + + d XINCLUDE_PARSE_XPOINTER... + d c 'xpointer' + + d xmlXIncludeCtxtPtr... + d s * based(######typedef######) + + * standalone processing + + d xmlXIncludeProcess... + d pr extproc('xmlXIncludeProcess') + d like(xmlCint) + d doc value like(xmlDocPtr) + + d xmlXIncludeProcessFlags... + d pr extproc('xmlXIncludeProcessFlags') + d like(xmlCint) + d doc value like(xmlDocPtr) + d flags value like(xmlCint) + + d xmlXIncludeProcessFlagsData... + d pr extproc( + d 'xmlXIncludeProcessFlagsData') + d like(xmlCint) + d doc value like(xmlDocPtr) + d flags value like(xmlCint) + d data * value void * + + d xmlXIncludeProcessTreeFlagsData... + d pr extproc( + d 'xmlXIncludeProcessTreeFlagsData') + d like(xmlCint) + d tree value like(xmlNodePtr) + d flags value like(xmlCint) + d data * value void * + + d xmlXIncludeProcessTree... + d pr extproc('xmlXIncludeProcessTree') + d like(xmlCint) + d tree value like(xmlNodePtr) + + d xmlXIncludeProcessTreeFlags... + d pr extproc( + d 'xmlXIncludeProcessTreeFlags') + d like(xmlCint) + d tree value like(xmlNodePtr) + d flags value like(xmlCint) + + + * contextual processing + + d xmlXIncludeNewContext... + d pr extproc('xmlXIncludeNewContext') + d like(xmlXIncludeCtxtPtr) + d doc value like(xmlDocPtr) + + d xmlXIncludeSetFlags... + d pr extproc('xmlXIncludeSetFlags') + d like(xmlCint) + d ctxt value like(xmlXIncludeCtxtPtr) + d flags value like(xmlCint) + + d xmlXIncludeFreeContext... + d pr extproc('xmlXIncludeFreeContext') + d ctxt value like(xmlXIncludeCtxtPtr) + + d xmlXIncludeProcessNode... + d pr extproc('xmlXIncludeProcessNode') + d like(xmlCint) + d ctxt value like(xmlXIncludeCtxtPtr) + d tree value like(xmlNodePtr) + + /endif XINCLUDE_ENABLED + /endif XML_XINCLUDE_H__ diff --git a/libxml2/os400/libxmlrpg/xlink.rpgle b/libxml2/os400/libxmlrpg/xlink.rpgle new file mode 100644 index 0000000..e6ebdc6 --- /dev/null +++ b/libxml2/os400/libxmlrpg/xlink.rpgle @@ -0,0 +1,169 @@ + * Summary: unfinished XLink detection module + * Description: unfinished XLink detection module + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_XLINK_H__) + /define XML_XLINK_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_XPTR_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + + * Various defines for the various Link properties. + * + * NOTE: the link detection layer will try to resolve QName expansion + * of namespaces. If "foo" is the prefix for "http://foo.com/" + * then the link detection layer will expand role="foo:myrole" + * to "http://foo.com/:myrole". + * NOTE: the link detection layer will expand URI-Refences found on + * href attributes by using the base mechanism if found. + + d xlinkRef s * based(######typedef######) xmlChar * + d xlinkRole s * based(######typedef######) xmlChar * + d xlinkTitle s * based(######typedef######) xmlChar * + + d xlinkType s based(######typedef######) + d like(xmlCenum) + d XLINK_TYPE_NONE... + d c 0 + d XLINK_TYPE_SIMPLE... + d c 1 + d XLINK_TYPE_EXTENDED... + d c 2 + d XLINK_TYPE_EXTENDED_SET... + d c 3 + + d xlinkShow s based(######typedef######) + d like(xmlCenum) + d XLINK_SHOW_NONE... + d c 0 + d XLINK_SHOW_NEW... + d c 1 + d XLINK_SHOW_EMBED... + d c 2 + d XLINK_SHOW_REPLACE... + d c 3 + + d xlinkActuate s based(######typedef######) + d like(xmlCenum) + d XLINK_ACTUATE_NONE... + d c 0 + d XLINK_ACTUATE_AUTO... + d c 1 + d XLINK_ACTUATE_ONREQUEST... + d c 2 + + * xlinkNodeDetectFunc: + * @ctx: user data pointer + * @node: the node to check + * + * This is the prototype for the link detection routine. + * It calls the default link detection callbacks upon link detection. + + d xlinkNodeDetectFunc... + d s * based(######typedef######) + d procptr + + * The link detection module interact with the upper layers using + * a set of callback registered at parsing time. + + * xlinkSimpleLinkFunk: + * @ctx: user data pointer + * @node: the node carrying the link + * @href: the target of the link + * @role: the role string + * @title: the link title + * + * This is the prototype for a simple link detection callback. + + d xlinkSimpleLinkFunk... + d s * based(######typedef######) + d procptr + + * xlinkExtendedLinkFunk: + * @ctx: user data pointer + * @node: the node carrying the link + * @nbLocators: the number of locators detected on the link + * @hrefs: pointer to the array of locator hrefs + * @roles: pointer to the array of locator roles + * @nbArcs: the number of arcs detected on the link + * @from: pointer to the array of source roles found on the arcs + * @to: pointer to the array of target roles found on the arcs + * @show: array of values for the show attributes found on the arcs + * @actuate: array of values for the actuate attributes found on the arcs + * @nbTitles: the number of titles detected on the link + * @title: array of titles detected on the link + * @langs: array of xml:lang values for the titles + * + * This is the prototype for a extended link detection callback. + + d xlinkExtendedLinkFunk... + d s * based(######typedef######) + d procptr + + * xlinkExtendedLinkSetFunk: + * @ctx: user data pointer + * @node: the node carrying the link + * @nbLocators: the number of locators detected on the link + * @hrefs: pointer to the array of locator hrefs + * @roles: pointer to the array of locator roles + * @nbTitles: the number of titles detected on the link + * @title: array of titles detected on the link + * @langs: array of xml:lang values for the titles + * + * This is the prototype for a extended link set detection callback. + + d xlinkExtendedLinkSetFunk... + d s * based(######typedef######) + d procptr + + * This is the structure containing a set of Links detection callbacks. + * + * There is no default xlink callbacks, if one want to get link + * recognition activated, those call backs must be provided before parsing. + + d xlinkHandlerPtr... + d s * based(######typedef######) xmlChar * + + d xlinkHandler ds based(xlinkHandlerPtr) + d align qualified + d simple like(xlinkSimpleLinkFunk) + d extended like(xlinkExtendedLinkFunk) + d set like(xlinkExtendedLinkSetFunk) + + * The default detection routine, can be overridden, they call the default + * detection callbacks. + + d xlinkGetDefaultDetect... + d pr extproc('xlinkGetDefaultDetect') + d like(xlinkNodeDetectFunc) + + d xlinkSetDefaultDetect... + d pr extproc('xlinkSetDefaultDetect') + d func value like(xlinkNodeDetectFunc) + + * Routines to set/get the default handlers. + + d xlinkGetDefaultHandler... + d pr extproc('xlinkGetDefaultHandler') + d like(xlinkHandlerPtr) + + d xlinkSetDefaultHandler... + d pr extproc('xlinkSetDefaultHandler') + d handler value like(xlinkHandlerPtr) + + * Link detection module itself. + + d xlinkIsLink pr extproc('xlinkIsLink') + d like(xlinkType) + d doc value like(xmlDocPtr) + d node value like(xmlNodePtr) + + /endif LIBXML_XPTR_ENABLED + /endif XML_XLINK_H__ diff --git a/libxml2/os400/libxmlrpg/xmlIO.rpgle b/libxml2/os400/libxmlrpg/xmlIO.rpgle new file mode 100644 index 0000000..6c0afcc --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlIO.rpgle @@ -0,0 +1,464 @@ + * Summary: interface for the I/O interfaces used by the parser + * Description: interface for the I/O interfaces used by the parser + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_IO_H__) + /define XML_IO_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + + * Those are the functions and datatypes for the parser input + * I/O structures. + + * xmlInputMatchCallback: + * @filename: the filename or URI + * + * Callback used in the I/O Input API to detect if the current handler + * can provide input fonctionnalities for this resource. + * + * Returns 1 if yes and 0 if another Input module should be used + + d xmlInputMatchCallback... + d s * based(######typedef######) + d procptr + + * xmlInputOpenCallback: + * @filename: the filename or URI + * + * Callback used in the I/O Input API to open the resource + * + * Returns an Input context or NULL in case or error + + d xmlInputOpenCallback... + d s * based(######typedef######) + d procptr + + * xmlInputReadCallback: + * @context: an Input context + * @buffer: the buffer to store data read + * @len: the length of the buffer in bytes + * + * Callback used in the I/O Input API to read the resource + * + * Returns the number of bytes read or -1 in case of error + + d xmlInputReadCallback... + d s * based(######typedef######) + d procptr + + * xmlInputCloseCallback: + * @context: an Input context + * + * Callback used in the I/O Input API to close the resource + * + * Returns 0 or -1 in case of error + + d xmlInputCloseCallback... + d s * based(######typedef######) + d procptr + + /if defined(LIBXML_OUTPUT_ENABLED) + + * Those are the functions and datatypes for the library output + * I/O structures. + + * xmlOutputMatchCallback: + * @filename: the filename or URI + * + * Callback used in the I/O Output API to detect if the current handler + * can provide output fonctionnalities for this resource. + * + * Returns 1 if yes and 0 if another Output module should be used + + d xmlOutputMatchCallback... + d s * based(######typedef######) + d procptr + + * xmlOutputOpenCallback: + * @filename: the filename or URI + * + * Callback used in the I/O Output API to open the resource + * + * Returns an Output context or NULL in case or error + + d xmlOutputOpenCallback... + d s * based(######typedef######) + d procptr + + * xmlOutputWriteCallback: + * @context: an Output context + * @buffer: the buffer of data to write + * @len: the length of the buffer in bytes + * + * Callback used in the I/O Output API to write to the resource + * + * Returns the number of bytes written or -1 in case of error + + d xmlOutputWriteCallback... + d s * based(######typedef######) + d procptr + + * xmlOutputCloseCallback: + * @context: an Output context + * + * Callback used in the I/O Output API to close the resource + * + * Returns 0 or -1 in case of error + + d xmlOutputCloseCallback... + d s * based(######typedef######) + d procptr + /endif LIBXML_OUTPUT_ENABLD + + /include "libxmlrpg/globals" + /include "libxmlrpg/tree" + /include "libxmlrpg/parser" + /include "libxmlrpg/encoding" + + d xmlParserInputBuffer... + d ds based(xmlParserInputBufferPtr) + d align qualified + d context * void * + d readcallback like(xmlInputReadCallback) + d closecallback like(xmlInputCloseCallback) + * + d encoder like(xmlCharEncodingHandlerPtr) Conversions --> UTF8 + * + d buffer like(xmlBufPtr) UTF-8 local buffer + d raw like(xmlBufPtr) Raw input buffer + d compressed like(xmlCint) + d error like(xmlCint) + d rawconsumed like(xmlCulong) + + /if defined(LIBXML_OUTPUT_ENABLED) + d xmlOutputBuffer... + d ds based(xmlOutputBufferPtr) + d align qualified + d context * void * + d writecallback like(xmlOutputWriteCallback) + d closecallback like(xmlOutputCloseCallback) + * + d encoder like(xmlCharEncodingHandlerPtr) Conversions --> UTF8 + * + d buffer like(xmlBufPtr) UTF-8/ISOLatin local + d conv like(xmlBufPtr) Buffer for output + d written like(xmlCint) Total # byte written + d error like(xmlCint) + /endif LIBXML_OUTPUT_ENABLD + + * Interfaces for input + + d xmlCleanupInputCallbacks... + d pr extproc('xmlCleanupInputCallbacks') + + d xmlPopInputCallbacks... + d pr extproc('xmlPopInputCallbacks') + d like(xmlCint) + + d xmlRegisterDefaultInputCallbacks... + d pr extproc( + d 'xmlRegisterDefaultInputCallbacks') + + d xmlAllocParserInputBuffer... + d pr extproc('xmlAllocParserInputBuffer') + d like(xmlParserInputBufferPtr) + d enc value like(xmlCharEncoding) + + d xmlParserInputBufferCreateFilename... + d pr extproc( + d 'xmlParserInputBufferCreateFilename') + d like(xmlParserInputBufferPtr) + d URI * value options(*string) const char * + d enc value like(xmlCharEncoding) + + d xmlParserInputBufferCreateFile... + d pr extproc( + d 'xmlParserInputBufferCreateFile') + d like(xmlParserInputBufferPtr) + d file * value FILE * + d enc value like(xmlCharEncoding) + + d xmlParserInputBufferCreateFd... + d pr extproc( + d 'xmlParserInputBufferCreateFd') + d like(xmlParserInputBufferPtr) + d fd value like(xmlCint) + d enc value like(xmlCharEncoding) + + d xmlParserInputBufferCreateMem... + d pr extproc( + d 'xmlParserInputBufferCreateMem') + d like(xmlParserInputBufferPtr) + d mem * value options(*string) const char * + d size value like(xmlCint) + d enc value like(xmlCharEncoding) + + d xmlParserInputBufferCreateStatic... + d pr extproc( + d 'xmlParserInputBufferCreateStatic') + d like(xmlParserInputBufferPtr) + d mem * value options(*string) const char * + d size value like(xmlCint) + d enc value like(xmlCharEncoding) + + d xmlParserInputBufferCreateIO... + d pr extproc( + d 'xmlParserInputBufferCreateIO') + d like(xmlParserInputBufferPtr) + d ioread value like(xmlInputReadCallback) + d ioclose value like(xmlInputCloseCallback) + d ioctx * value void * + d enc value like(xmlCharEncoding) + + d xmlParserInputBufferRead... + d pr extproc('xmlParserInputBufferRead') + d like(xmlCint) + d in value like(xmlParserInputBufferPtr) + d len value like(xmlCint) + + d xmlParserInputBufferGrow... + d pr extproc('xmlParserInputBufferGrow') + d like(xmlCint) + d in value like(xmlParserInputBufferPtr) + d len value like(xmlCint) + + d xmlParserInputBufferPush... + d pr extproc('xmlParserInputBufferPush') + d like(xmlCint) + d in value like(xmlParserInputBufferPtr) + d len value like(xmlCint) + d buf * value options(*string) const char * + + d xmlFreeParserInputBuffer... + d pr extproc('xmlFreeParserInputBuffer') + d in value like(xmlParserInputBufferPtr) + + d xmlParserGetDirectory... + d pr * extproc('xmlParserGetDirectory') char * + d filename * value options(*string) const char * + + d xmlRegisterInputCallbacks... + d pr extproc('xmlRegisterInputCallbacks') + d like(xmlCint) + d matchFunc value like(xmlInputMatchCallback) + d openFunc value like(xmlInputOpenCallback) + d readFunc value like(xmlInputReadCallback) + d closeFunc value like(xmlInputCloseCallback) + + /if defined(LIBXML_OUTPUT_ENABLED) + + * Interfaces for output + + d xmlCleanupOutputCallbacks... + d pr extproc('xmlCleanupOutputCallbacks') + + d xmlRegisterDefaultOutputCallbacks... + d pr extproc( + d 'xmlRegisterDefaultOuputCallbacks') + + d xmlAllocOutputBuffer... + d pr extproc('xmlAllocOutputBuffer') + d like(xmlOutputBufferPtr) + d encoder value + d like(xmlCharEncodingHandlerPtr) + + d xmlOutputBufferCreateFilename... + d pr extproc( + d 'xmlOutputBufferCreateFilename') + d like(xmlOutputBufferPtr) + d URI * value options(*string) const char * + d encoder value + d like(xmlCharEncodingHandlerPtr) + d compression value like(xmlCint) + + d xmlOutputBufferCreateFile... + d pr extproc('xmlOutputBufferCreateFile') + d like(xmlOutputBufferPtr) + d file * value FILE * + d encoder value + d like(xmlCharEncodingHandlerPtr) + + d xmlOutputBufferCreateBuffer... + d pr extproc( + d 'xmlOutputBufferCreateBuffer') + d like(xmlOutputBufferPtr) + d buffer value like(xmlBufferPtr) + d encoder value + d like(xmlCharEncodingHandlerPtr) + + d xmlOutputBufferCreateFd... + d pr extproc('xmlOutputBufferCreateFd') + d like(xmlOutputBufferPtr) + d fd value like(xmlCint) + d encoder value + d like(xmlCharEncodingHandlerPtr) + + d xmlOutputBufferCreateIO... + d pr extproc('xmlOutputBufferCreateIO') + d like(xmlOutputBufferPtr) + d iowrite value like(xmlOutputWriteCallback) + d ioclose value like(xmlOutputCloseCallback) + d ioctx * value void * + d encoder value + d like(xmlCharEncodingHandlerPtr) + + * Couple of APIs to get the output without digging into the buffers + + d xmlOutputBufferGetContent... + d pr * extproc('xmlOutputBufferGetContent') const xmlChar * + d out value like(xmlOutputBufferPtr) + + d xmlOutputBufferGetSize... + d pr extproc('xmlOutputBufferGetSize') + d like(xmlCsize_t) + d out value like(xmlOutputBufferPtr) + + d xmlOutputBufferWrite... + d pr extproc('xmlOutputBufferWrite') + d like(xmlCint) + d out value like(xmlOutputBufferPtr) + d len value like(xmlCint) + d buf * value options(*string) const char * + + d xmlOutputBufferWriteString... + d pr extproc('xmlOutputBufferWriteString') + d like(xmlCint) + d out value like(xmlOutputBufferPtr) + d str * value options(*string) const char * + + d xmlOutputBufferWriteEscape... + d pr extproc('xmlOutputBufferWriteEscape') + d like(xmlCint) + d out value like(xmlOutputBufferPtr) + d str * value options(*string) const xmlChar * + d escaping value like(xmlCharEncodingOutputFunc) + + d xmlOutputBufferFlush... + d pr extproc('xmlOutputBufferFlush') + d like(xmlCint) + d out value like(xmlOutputBufferPtr) + + d xmlOutputBufferClose... + d pr extproc('xmlOutputBufferClose') + d like(xmlCint) + d out value like(xmlOutputBufferPtr) + + d xmlRegisterOutputCallbacks... + d pr extproc('xmlRegisterOutputCallbacks') + d like(xmlCint) + d matchFunc value like(xmlOutputMatchCallback) + d openFunc value like(xmlOutputOpenCallback) + d writeFunc value like(xmlOutputWriteCallback) + d closeFunc value like(xmlOutputCloseCallback) + + /if defined(LIBXML_HTTP_ENABLED) + + * This function only exists if HTTP support built into the library + + d xmlRegisterHTTPPostCallbacks... + d pr extproc( + d 'xmlRegisterHTTPPostCallbacks') + + /endif LIBXML_HTTP_ENABLED + /endif LIBXML_OUTPUT_ENABLD + + d xmlCheckHTTPInput... + d pr extproc('xmlCheckHTTPInput') + d like(xmlParserInputPtr) + d ctxt value like(xmlParserCtxtPtr) + d ret value like(xmlParserInputPtr) + + * A predefined entity loader disabling network accesses + + d xmlNoNetExternalEntityLoader... + d pr extproc( + d 'xmlNoNetExternalEntityLoader') + d like(xmlParserInputPtr) + d URL * value options(*string) const char * + d ID * value options(*string) const char * + d ctxt value like(xmlParserCtxtPtr) + + * xmlNormalizeWindowsPath is obsolete, don't use it. + * Check xmlCanonicPath in uri.h for a better alternative. + + d xmlNormalizeWindowsPath... + d pr * extproc('xmlNormalizeWindowsPath') xmlChar * + d path * value options(*string) const xmlChar * + + d xmlCheckFilename... + d pr extproc('xmlCheckFilename') + d like(xmlCint) + d path * value options(*string) const char * + + * Default 'file://' protocol callbacks + + d xmlFileMatch pr extproc('xmlFileMatch') + d like(xmlCint) + d filename * value options(*string) const char * + + d xmlFileOpen pr * extproc('xmlFileOpen') void * + d filename * value options(*string) const char * + + d xmlFileRead pr extproc('xmlFileRead') + d like(xmlCint) + d context * value void * + d buffer 65535 options(*varsize) + d len value like(xmlCint) + + d xmlFileClose pr extproc('xmlFileClose') + d like(xmlCint) + d context * value void * + + * Default 'http://' protocol callbacks + + /if defined(LIBXML_HTTP_ENABLED) + d xmlIOHTTPMatch pr extproc('xmlIOHTTPMatch') + d like(xmlCint) + d filename * value options(*string) const char * + + d xmlIOHTTPOpen pr * extproc('xmlIOHTTPOpen') void * + d filename * value options(*string) const char * + + /if defined(LIBXML_OUTPUT_ENABLED) + d xmlIOHTTPOpenW pr * extproc('xmlIOHTTPOpenW') void * + d post_uri * value options(*string) const char * + d compression value like(xmlCint) + /endif LIBXML_OUTPUT_ENABLD + + d xmlIOHTTPRead pr extproc('xmlIOHTTPRead') + d like(xmlCint) + d context * value void * + d buffer 65535 options(*varsize) + d len value like(xmlCint) + + d xmlIOHTTPClose pr extproc('xmlIOHTTPClose') + d like(xmlCint) + d context * value void * + /endif LIBXML_HTTP_ENABLED + + * Default 'ftp://' protocol callbacks + + /if defined(LIBXML_FTP_ENABLED) + d xmlIOFTPMatch pr extproc('xmlIOFTPMatch') + d like(xmlCint) + d filename * value options(*string) const char * + + d xmlIOFTPOpen pr * extproc('xmlIOFTPOpen') void * + d filename * value options(*string) const char * + + d xmlIOFTPRead pr extproc('xmlIOFTPRead') + d like(xmlCint) + d context * value void * + d buffer 65535 options(*varsize) + d len value like(xmlCint) + + d xmlIOFTPClose pr extproc('xmlIOFTPClose') + d like(xmlCint) + d context * value void * + /endif LIBXML_FTP_ENABLED + + /endif XML_IO_H__ diff --git a/libxml2/os400/libxmlrpg/xmlTypesC.rpgle b/libxml2/os400/libxmlrpg/xmlTypesC.rpgle new file mode 100644 index 0000000..48a23bf --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlTypesC.rpgle @@ -0,0 +1,26 @@ + * Eqivalent of C data types. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XMLTYPESC_H__) + /define XMLTYPESC_H__ + + d xmlCchar s 3i 0 based(######typedef######) + d xmlCuchar s 3u 0 based(######typedef######) + d xmlCshort s 5i 0 based(######typedef######) + d xmlCushort s 5u 0 based(######typedef######) + d xmlCint s 10i 0 based(######typedef######) + d xmlCuInt s 10u 0 based(######typedef######) + d xmlClong s 10i 0 based(######typedef######) + d xmlCulong s 10u 0 based(######typedef######) + d xmlClonglong s 20i 0 based(######typedef######) + d xmlCulonglong s 20u 0 based(######typedef######) + d xmlCenum s 10i 0 based(######typedef######) + d xmlCssize_t s 10i 0 based(######typedef######) + d xmlCsize_t s 10u 0 based(######typedef######) + d xmlCfloat s 4f based(######typedef######) + d xmlCdouble s 8f based(######typedef######) + + /endif diff --git a/libxml2/os400/libxmlrpg/xmlautomata.rpgle b/libxml2/os400/libxmlrpg/xmlautomata.rpgle new file mode 100644 index 0000000..0e9cc22 --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlautomata.rpgle @@ -0,0 +1,183 @@ + * Summary: API to build regexp automata + * Description: the API to build regexp automata + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_AUTOMATA_H__) + /define XML_AUTOMATA_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_REGEXP_ENABLED) + /if defined(LIBXML_AUTOMATA_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + /include "libxmlrpg/xmlregexp" + + * xmlAutomataPtr: + * + * A libxml automata description, It can be compiled into a regexp + + d xmlAutomataPtr s * based(######typedef######) + + * xmlAutomataStatePtr: + * + * A state int the automata description, + + d xmlAutomataStatePtr... + d s * based(######typedef######) + + * Building API + + d xmlNewAutomata pr extproc('xmlNewAutomata') + d like(xmlAutomataPtr) + + d xmlFreeAutomata... + d pr extproc('xmlFreeAutomata') + d am value like(xmlAutomataPtr) + + d xmlAutomataGetInitState... + d pr extproc('xmlAutomataGetInitState') + d like(xmlAutomataStatePtr) + d am value like(xmlAutomataPtr) + + d xmlAutomataSetFinalState... + d pr extproc('xmlAutomataSetFinalState') + d like(xmlCint) + d am value like(xmlAutomataPtr) + d state value like(xmlAutomataStatePtr) + + d xmlAutomataNewState... + d pr extproc('xmlAutomataNewState') + d like(xmlAutomataStatePtr) + d am value like(xmlAutomataPtr) + + d xmlAutomataNewTransition... + d pr extproc('xmlAutomataNewTransition') + d like(xmlAutomataStatePtr) + d am value like(xmlAutomataPtr) + d from value like(xmlAutomataStatePtr) + d to value like(xmlAutomataStatePtr) + d token * value options(*string) const xmlChar * + d data * value options(*string) void * + + d xmlAutomataNewTransition2... + d pr extproc('xmlAutomataNewTransition2') + d like(xmlAutomataStatePtr) + d am value like(xmlAutomataPtr) + d from value like(xmlAutomataStatePtr) + d to value like(xmlAutomataStatePtr) + d token * value options(*string) const xmlChar * + d token2 * value options(*string) const xmlChar * + d data * value options(*string) void * + + d xmlAutomataNewNegTrans... + d pr extproc('xmlAutomataNewNegTrans') + d like(xmlAutomataStatePtr) + d am value like(xmlAutomataPtr) + d from value like(xmlAutomataStatePtr) + d to value like(xmlAutomataStatePtr) + d token * value options(*string) const xmlChar * + d token2 * value options(*string) const xmlChar * + d data * value options(*string) void * + + d xmlAutomataNewCountTrans... + d pr extproc('xmlAutomataNewCountTrans') + d like(xmlAutomataStatePtr) + d am value like(xmlAutomataPtr) + d from value like(xmlAutomataStatePtr) + d to value like(xmlAutomataStatePtr) + d token * value options(*string) const xmlChar * + d min value like(xmlCint) + d max value like(xmlCint) + d data * value options(*string) void * + + d xmlAutomataNewCountTrans2... + d pr extproc('xmlAutomataNewCountTrans2') + d like(xmlAutomataStatePtr) + d am value like(xmlAutomataPtr) + d from value like(xmlAutomataStatePtr) + d to value like(xmlAutomataStatePtr) + d token * value options(*string) const xmlChar * + d token2 * value options(*string) const xmlChar * + d min value like(xmlCint) + d max value like(xmlCint) + d data * value options(*string) void * + + d xmlAutomataNewOnceTrans... + d pr extproc('xmlAutomataNewOnceTrans') + d like(xmlAutomataStatePtr) + d am value like(xmlAutomataPtr) + d from value like(xmlAutomataStatePtr) + d to value like(xmlAutomataStatePtr) + d token * value options(*string) const xmlChar * + d min value like(xmlCint) + d max value like(xmlCint) + d data * value options(*string) void * + + d xmlAutomataNewOnceTrans2... + d pr extproc('xmlAutomataNewOnceTrans2') + d like(xmlAutomataStatePtr) + d am value like(xmlAutomataPtr) + d from value like(xmlAutomataStatePtr) + d to value like(xmlAutomataStatePtr) + d token * value options(*string) const xmlChar * + d token2 * value options(*string) const xmlChar * + d min value like(xmlCint) + d max value like(xmlCint) + d data * value options(*string) void * + + d xmlAutomataNewAllTrans... + d pr extproc('xmlAutomataNewAllTrans') + d like(xmlAutomataStatePtr) + d am value like(xmlAutomataPtr) + d from value like(xmlAutomataStatePtr) + d to value like(xmlAutomataStatePtr) + d lax value like(xmlCint) + + d xmlAutomataNewEpsilon... + d pr extproc('xmlAutomataNewEpsilon') + d like(xmlAutomataStatePtr) + d am value like(xmlAutomataPtr) + d from value like(xmlAutomataStatePtr) + d to value like(xmlAutomataStatePtr) + + d xmlAutomataNewCountedTrans... + d pr extproc('xmlAutomataNewCountedTrans') + d like(xmlAutomataStatePtr) + d am value like(xmlAutomataPtr) + d from value like(xmlAutomataStatePtr) + d to value like(xmlAutomataStatePtr) + d counter value like(xmlCint) + + d xmlAutomataNewCounterTrans... + d pr extproc('xmlAutomataNewCounterTrans') + d like(xmlAutomataStatePtr) + d am value like(xmlAutomataPtr) + d from value like(xmlAutomataStatePtr) + d to value like(xmlAutomataStatePtr) + d counter value like(xmlCint) + + d xmlAutomataNewCounter... + d pr extproc('xmlAutomataNewCounter') + d like(xmlCint) + d am value like(xmlAutomataPtr) + d min value like(xmlCint) + d max value like(xmlCint) + + d xmlAutomataCompile... + d pr extproc('xmlAutomataCompile') + d like(xmlRegexpPtr) + d am value like(xmlAutomataPtr) + + d xmlAutomataIsDeterminist... + d pr extproc('xmlAutomataIsDeterminist') + d like(xmlCint) + d am value like(xmlAutomataPtr) + + /endif AUTOMATA_ENABLED + /endif LIBXML_REGEXP_ENABLD + /endif XML_AUTOMATA_H__ diff --git a/libxml2/os400/libxmlrpg/xmlerror.rpgle b/libxml2/os400/libxmlrpg/xmlerror.rpgle new file mode 100644 index 0000000..6688b37 --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlerror.rpgle @@ -0,0 +1,1686 @@ + * Summary: error handling + * Description: the API used to report errors + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_ERROR_H__) + /define XML_ERROR_H__ + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/parser" + + * xmlErrorLevel: + * + * Indicates the level of an error + + d xmlErrorLevel s based(######typedef######) + d like(xmlCenum) + d XML_ERR_NONE c 0 + d XML_ERR_WARNING... A simple warning + d c 1 + d XML_ERR_ERROR c 2 A recoverable error + d XML_ERR_FATAL c 3 A fatal error + + * xmlErrorDomain: + * + * Indicates where an error may have come from + + d xmlErrorDomain s based(######typedef######) + d like(xmlCenum) + d XML_FROM_NONE c 0 + d XML_FROM_PARSER... XML parser + d c 1 + d XML_FROM_TREE c 2 Tree module + d XML_FROM_NAMESPACE... XML Namespace module + d c 3 + d XML_FROM_DTD c 4 DTD validation + d XML_FROM_HTML c 5 HTML parser + d XML_FROM_MEMORY... Memory allocator + d c 6 + d XML_FROM_OUTPUT... serialization code + d c 7 + d XML_FROM_IO c 8 Input/Output stack + d XML_FROM_FTP c 9 FTP module + d XML_FROM_HTTP c 10 HTTP module + d XML_FROM_XINCLUDE... XInclude processing + d c 11 + d XML_FROM_XPATH... XPath module + d c 12 + d XML_FROM_XPOINTER... XPointer module + d c 13 + d XML_FROM_REGEXP... Regexp module + d c 14 + d XML_FROM_DATATYPE... W3C XML Schm Dtatype + d c 15 + d XML_FROM_SCHEMASP... W3C XML Schm parser + d c 16 + d XML_FROM_SCHEMASV... W3C XML Schm valid. + d c 17 + d XML_FROM_RELAXNGP... Relax-NG parser + d c 18 + d XML_FROM_RELAXNGV... Relax-NG validator + d c 19 + d XML_FROM_CATALOG... Catalog module + d c 20 + d XML_FROM_C14N c 21 Canonicalization + d XML_FROM_XSLT c 22 Engine from libxslt + d XML_FROM_VALID... DTD valid. w/ ctxt + d c 23 + d XML_FROM_CHECK... Error check module + d c 24 + d XML_FROM_WRITER... xmlwriter module + d c 25 + d XML_FROM_MODULE... Dyn. loaded module + d c 26 + d XML_FROM_I18N c 27 Mod hdlg char conv + d XML_FROM_SCHEMATRONV... Schematron valid + d c 28 + d XML_FROM_BUFFER... Buffers module + d c 29 + d XML_FROM_URI c 30 URI module + + * xmlError: + * + * An XML Error instance. + + d xmlErrorPtr s * based(######typedef######) + + d xmlError ds based(xmlErrorPtr) + d align qualified + d domain like(xmlCint) Libpart raising err + d code like(xmlCint) Error code + d message * char * + d level like(xmlErrorLevel) Error severity + d file * File name + d line like(xmlCint) Line number + d str1 * char * + d str2 * char * + d str3 * char * + d int1 like(xmlCint) Extra number info + d int2 like(xmlCint) Error column + d ctxt * void * + d node * void * + + * xmlParserError: + * + * This is an error that the XML (or HTML) parser can generate + + d xmlParserErrors... + d s based(######typedef######) + d like(xmlCenum) + d XML_ERR_OK c 0 + d XML_ERR_INTERNAL_ERROR... + d c 1 + d XML_ERR_NO_MEMORY... + d c 2 + d XML_ERR_DOCUMENT_START... + d c 3 + d XML_ERR_DOCUMENT_EMPTY... + d c 4 + d XML_ERR_DOCUMENT_END... + d c 5 + d XML_ERR_INVALID_HEX_CHARREF... + d c 6 + d XML_ERR_INVALID_DEC_CHARREF... + d c 7 + d XML_ERR_INVALID_CHARREF... + d c 8 + d XML_ERR_INVALID_CHAR... + d c 9 + d XML_ERR_CHARREF_AT_EOF... + d c 10 + d XML_ERR_CHARREF_IN_PROLOG... + d c 11 + d XML_ERR_CHARREF_IN_EPILOG... + d c 12 + d XML_ERR_CHARREF_IN_DTD... + d c 13 + d XML_ERR_ENTITYREF_AT_EOF... + d c 14 + d XML_ERR_ENTITYREF_IN_PROLOG... + d c 15 + d XML_ERR_ENTITYREF_IN_EPILOG... + d c 16 + d XML_ERR_ENTITYREF_IN_DTD... + d c 17 + d XML_ERR_PEREF_AT_EOF... + d c 18 + d XML_ERR_PEREF_IN_PROLOG... + d c 19 + d XML_ERR_PEREF_IN_EPILOG... + d c 20 + d XML_ERR_PEREF_IN_INT_SUBSET... + d c 21 + d XML_ERR_ENTITYREF_NO_NAME... + d c 22 + d XML_ERR_ENTITYREF_SEMICOL_MISSING... + d c 23 + d XML_ERR_PEREF_NO_NAME... + d c 24 + d XML_ERR_PEREF_SEMICOL_MISSING... + d c 25 + d XML_ERR_UNDECLARED_ENTITY... + d c 26 + d XML_WAR_UNDECLARED_ENTITY... + d c 27 + d XML_ERR_UNPARSED_ENTITY... + d c 28 + d XML_ERR_ENTITY_IS_EXTERNAL... + d c 29 + d XML_ERR_ENTITY_IS_PARAMETER... + d c 30 + d XML_ERR_UNKNOWN_ENCODING... + d c 31 + d XML_ERR_UNSUPPORTED_ENCODING... + d c 32 + d XML_ERR_STRING_NOT_STARTED... + d c 33 + d XML_ERR_STRING_NOT_CLOSED... + d c 34 + d XML_ERR_NS_DECL_ERROR... + d c 35 + d XML_ERR_ENTITY_NOT_STARTED... + d c 36 + d XML_ERR_ENTITY_NOT_FINISHED... + d c 37 + d XML_ERR_LT_IN_ATTRIBUTE... + d c 38 + d XML_ERR_ATTRIBUTE_NOT_STARTED... + d c 39 + d XML_ERR_ATTRIBUTE_NOT_FINISHED... + d c 40 + d XML_ERR_ATTRIBUTE_WITHOUT_VALUE... + d c 41 + d XML_ERR_ATTRIBUTE_REDEFINED... + d c 42 + d XML_ERR_LITERAL_NOT_STARTED... + d c 43 + d XML_ERR_LITERAL_NOT_FINISHED... + d c 44 + d XML_ERR_COMMENT_NOT_FINISHED... + d c 45 + d XML_ERR_PI_NOT_STARTED... + d c 46 + d XML_ERR_PI_NOT_FINISHED... + d c 47 + d XML_ERR_NOTATION_NOT_STARTED... + d c 48 + d XML_ERR_NOTATION_NOT_FINISHED... + d c 49 + d XML_ERR_ATTLIST_NOT_STARTED... + d c 50 + d XML_ERR_ATTLIST_NOT_FINISHED... + d c 51 + d XML_ERR_MIXED_NOT_STARTED... + d c 52 + d XML_ERR_MIXED_NOT_FINISHED... + d c 53 + d XML_ERR_ELEMCONTENT_NOT_STARTED... + d c 54 + d XML_ERR_ELEMCONTENT_NOT_FINISHED... + d c 55 + d XML_ERR_XMLDECL_NOT_STARTED... + d c 56 + d XML_ERR_XMLDECL_NOT_FINISHED... + d c 57 + d XML_ERR_CONDSEC_NOT_STARTED... + d c 58 + d XML_ERR_CONDSEC_NOT_FINISHED... + d c 59 + d XML_ERR_EXT_SUBSET_NOT_FINISHED... + d c 60 + d XML_ERR_DOCTYPE_NOT_FINISHED... + d c 61 + d XML_ERR_MISPLACED_CDATA_END... + d c 62 + d XML_ERR_CDATA_NOT_FINISHED... + d c 63 + d XML_ERR_RESERVED_XML_NAME... + d c 64 + d XML_ERR_SPACE_REQUIRED... + d c 65 + d XML_ERR_SEPARATOR_REQUIRED... + d c 66 + d XML_ERR_NMTOKEN_REQUIRED... + d c 67 + d XML_ERR_NAME_REQUIRED... + d c 68 + d XML_ERR_PCDATA_REQUIRED... + d c 69 + d XML_ERR_URI_REQUIRED... + d c 70 + d XML_ERR_PUBID_REQUIRED... + d c 71 + d XML_ERR_LT_REQUIRED... + d c 72 + d XML_ERR_GT_REQUIRED... + d c 73 + d XML_ERR_LTSLASH_REQUIRED... + d c 74 + d XML_ERR_EQUAL_REQUIRED... + d c 75 + d XML_ERR_TAG_NAME_MISMATCH... + d c 76 + d XML_ERR_TAG_NOT_FINISHED... + d c 77 + d XML_ERR_STANDALONE_VALUE... + d c 78 + d XML_ERR_ENCODING_NAME... + d c 79 + d XML_ERR_HYPHEN_IN_COMMENT... + d c 80 + d XML_ERR_INVALID_ENCODING... + d c 81 + d XML_ERR_EXT_ENTITY_STANDALONE... + d c 82 + d XML_ERR_CONDSEC_INVALID... + d c 83 + d XML_ERR_VALUE_REQUIRED... + d c 84 + d XML_ERR_NOT_WELL_BALANCED... + d c 85 + d XML_ERR_EXTRA_CONTENT... + d c 86 + d XML_ERR_ENTITY_CHAR_ERROR... + d c 87 + d XML_ERR_ENTITY_PE_INTERNAL... + d c 88 + d XML_ERR_ENTITY_LOOP... + d c 89 + d XML_ERR_ENTITY_BOUNDARY... + d c 90 + d XML_ERR_INVALID_URI... + d c 91 + d XML_ERR_URI_FRAGMENT... + d c 92 + d XML_WAR_CATALOG_PI... + d c 93 + d XML_ERR_NO_DTD... + d c 94 + d XML_ERR_CONDSEC_INVALID_KEYWORD... + d c 95 + d XML_ERR_VERSION_MISSING... + d c 96 + d XML_WAR_UNKNOWN_VERSION... + d c 97 + d XML_WAR_LANG_VALUE... + d c 98 + d XML_WAR_NS_URI... + d c 99 + d XML_WAR_NS_URI_RELATIVE... + d c 100 + d XML_ERR_MISSING_ENCODING... + d c 101 + d XML_WAR_SPACE_VALUE... + d c 102 + d XML_ERR_NOT_STANDALONE... + d c 103 + d XML_ERR_ENTITY_PROCESSING... + d c 104 + d XML_ERR_NOTATION_PROCESSING... + d c 105 + d XML_WAR_NS_COLUMN... + d c 106 + d XML_WAR_ENTITY_REDEFINED... + d c 107 + d XML_ERR_UNKNOWN_VERSION... + d c 108 + d XML_ERR_VERSION_MISMATCH... + d c 109 + d XML_ERR_NAME_TOO_LONG... + d c 110 + d XML_ERR_USER_STOP... + d c 111 + d XML_NS_ERR_XML_NAMESPACE... + d c 200 + d XML_NS_ERR_UNDEFINED_NAMESPACE... + d c 201 + d XML_NS_ERR_QNAME... + d c 202 + d XML_NS_ERR_ATTRIBUTE_REDEFINED... + d c 203 + d XML_NS_ERR_EMPTY... + d c 204 + d XML_NS_ERR_COLON... + d c 205 + d XML_DTD_ATTRIBUTE_DEFAULT... + d c 500 + d XML_DTD_ATTRIBUTE_REDEFINED... + d c 501 + d XML_DTD_ATTRIBUTE_VALUE... + d c 502 + d XML_DTD_CONTENT_ERROR... + d c 503 + d XML_DTD_CONTENT_MODEL... + d c 504 + d XML_DTD_CONTENT_NOT_DETERMINIST... + d c 505 + d XML_DTD_DIFFERENT_PREFIX... + d c 506 + d XML_DTD_ELEM_DEFAULT_NAMESPACE... + d c 507 + d XML_DTD_ELEM_NAMESPACE... + d c 508 + d XML_DTD_ELEM_REDEFINED... + d c 509 + d XML_DTD_EMPTY_NOTATION... + d c 510 + d XML_DTD_ENTITY_TYPE... + d c 511 + d XML_DTD_ID_FIXED... + d c 512 + d XML_DTD_ID_REDEFINED... + d c 513 + d XML_DTD_ID_SUBSET... + d c 514 + d XML_DTD_INVALID_CHILD... + d c 515 + d XML_DTD_INVALID_DEFAULT... + d c 516 + d XML_DTD_LOAD_ERROR... + d c 517 + d XML_DTD_MISSING_ATTRIBUTE... + d c 518 + d XML_DTD_MIXED_CORRUPT... + d c 519 + d XML_DTD_MULTIPLE_ID... + d c 520 + d XML_DTD_NO_DOC... + d c 521 + d XML_DTD_NO_DTD... + d c 522 + d XML_DTD_NO_ELEM_NAME... + d c 523 + d XML_DTD_NO_PREFIX... + d c 524 + d XML_DTD_NO_ROOT... + d c 525 + d XML_DTD_NOTATION_REDEFINED... + d c 526 + d XML_DTD_NOTATION_VALUE... + d c 527 + d XML_DTD_NOT_EMPTY... + d c 528 + d XML_DTD_NOT_PCDATA... + d c 529 + d XML_DTD_NOT_STANDALONE... + d c 530 + d XML_DTD_ROOT_NAME... + d c 531 + d XML_DTD_STANDALONE_WHITE_SPACE... + d c 532 + d XML_DTD_UNKNOWN_ATTRIBUTE... + d c 533 + d XML_DTD_UNKNOWN_ELEM... + d c 534 + d XML_DTD_UNKNOWN_ENTITY... + d c 535 + d XML_DTD_UNKNOWN_ID... + d c 536 + d XML_DTD_UNKNOWN_NOTATION... + d c 537 + d XML_DTD_STANDALONE_DEFAULTED... + d c 538 + d XML_DTD_XMLID_VALUE... + d c 539 + d XML_DTD_XMLID_TYPE... + d c 540 + d XML_DTD_DUP_TOKEN... + d c 541 + d XML_HTML_STRUCURE_ERROR... + d c 800 + d XML_HTML_UNKNOWN_TAG... + d c 801 + d XML_RNGP_ANYNAME_ATTR_ANCESTOR... + d c 1000 + d XML_RNGP_ATTR_CONFLICT... + d c 1001 + d XML_RNGP_ATTRIBUTE_CHILDREN... + d c 1002 + d XML_RNGP_ATTRIBUTE_CONTENT... + d c 1003 + d XML_RNGP_ATTRIBUTE_EMPTY... + d c 1004 + d XML_RNGP_ATTRIBUTE_NOOP... + d c 1005 + d XML_RNGP_CHOICE_CONTENT... + d c 1006 + d XML_RNGP_CHOICE_EMPTY... + d c 1007 + d XML_RNGP_CREATE_FAILURE... + d c 1008 + d XML_RNGP_DATA_CONTENT... + d c 1009 + d XML_RNGP_DEF_CHOICE_AND_INTERLEAVE... + d c 1010 + d XML_RNGP_DEFINE_CREATE_FAILED... + d c 1011 + d XML_RNGP_DEFINE_EMPTY... + d c 1012 + d XML_RNGP_DEFINE_MISSING... + d c 1013 + d XML_RNGP_DEFINE_NAME_MISSING... + d c 1014 + d XML_RNGP_ELEM_CONTENT_EMPTY... + d c 1015 + d XML_RNGP_ELEM_CONTENT_ERROR... + d c 1016 + d XML_RNGP_ELEMENT_EMPTY... + d c 1017 + d XML_RNGP_ELEMENT_CONTENT... + d c 1018 + d XML_RNGP_ELEMENT_NAME... + d c 1019 + d XML_RNGP_ELEMENT_NO_CONTENT... + d c 1020 + d XML_RNGP_ELEM_TEXT_CONFLICT... + d c 1021 + d XML_RNGP_EMPTY... + d c 1022 + d XML_RNGP_EMPTY_CONSTRUCT... + d c 1023 + d XML_RNGP_EMPTY_CONTENT... + d c 1024 + d XML_RNGP_EMPTY_NOT_EMPTY... + d c 1025 + d XML_RNGP_ERROR_TYPE_LIB... + d c 1026 + d XML_RNGP_EXCEPT_EMPTY... + d c 1027 + d XML_RNGP_EXCEPT_MISSING... + d c 1028 + d XML_RNGP_EXCEPT_MULTIPLE... + d c 1029 + d XML_RNGP_EXCEPT_NO_CONTENT... + d c 1030 + d XML_RNGP_EXTERNALREF_EMTPY... + d c 1031 + d XML_RNGP_EXTERNAL_REF_FAILURE... + d c 1032 + d XML_RNGP_EXTERNALREF_RECURSE... + d c 1033 + d XML_RNGP_FORBIDDEN_ATTRIBUTE... + d c 1034 + d XML_RNGP_FOREIGN_ELEMENT... + d c 1035 + d XML_RNGP_GRAMMAR_CONTENT... + d c 1036 + d XML_RNGP_GRAMMAR_EMPTY... + d c 1037 + d XML_RNGP_GRAMMAR_MISSING... + d c 1038 + d XML_RNGP_GRAMMAR_NO_START... + d c 1039 + d XML_RNGP_GROUP_ATTR_CONFLICT... + d c 1040 + d XML_RNGP_HREF_ERROR... + d c 1041 + d XML_RNGP_INCLUDE_EMPTY... + d c 1042 + d XML_RNGP_INCLUDE_FAILURE... + d c 1043 + d XML_RNGP_INCLUDE_RECURSE... + d c 1044 + d XML_RNGP_INTERLEAVE_ADD... + d c 1045 + d XML_RNGP_INTERLEAVE_CREATE_FAILED... + d c 1046 + d XML_RNGP_INTERLEAVE_EMPTY... + d c 1047 + d XML_RNGP_INTERLEAVE_NO_CONTENT... + d c 1048 + d XML_RNGP_INVALID_DEFINE_NAME... + d c 1049 + d XML_RNGP_INVALID_URI... + d c 1050 + d XML_RNGP_INVALID_VALUE... + d c 1051 + d XML_RNGP_MISSING_HREF... + d c 1052 + d XML_RNGP_NAME_MISSING... + d c 1053 + d XML_RNGP_NEED_COMBINE... + d c 1054 + d XML_RNGP_NOTALLOWED_NOT_EMPTY... + d c 1055 + d XML_RNGP_NSNAME_ATTR_ANCESTOR... + d c 1056 + d XML_RNGP_NSNAME_NO_NS... + d c 1057 + d XML_RNGP_PARAM_FORBIDDEN... + d c 1058 + d XML_RNGP_PARAM_NAME_MISSING... + d c 1059 + d XML_RNGP_PARENTREF_CREATE_FAILED... + d c 1060 + d XML_RNGP_PARENTREF_NAME_INVALID... + d c 1061 + d XML_RNGP_PARENTREF_NO_NAME... + d c 1062 + d XML_RNGP_PARENTREF_NO_PARENT... + d c 1063 + d XML_RNGP_PARENTREF_NOT_EMPTY... + d c 1064 + d XML_RNGP_PARSE_ERROR... + d c 1065 + d XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME... + d c 1066 + d XML_RNGP_PAT_ATTR_ATTR... + d c 1067 + d XML_RNGP_PAT_ATTR_ELEM... + d c 1068 + d XML_RNGP_PAT_DATA_EXCEPT_ATTR... + d c 1069 + d XML_RNGP_PAT_DATA_EXCEPT_ELEM... + d c 1070 + d XML_RNGP_PAT_DATA_EXCEPT_EMPTY... + d c 1071 + d XML_RNGP_PAT_DATA_EXCEPT_GROUP... + d c 1072 + d XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE... + d c 1073 + d XML_RNGP_PAT_DATA_EXCEPT_LIST... + d c 1074 + d XML_RNGP_PAT_DATA_EXCEPT_ONEMORE... + d c 1075 + d XML_RNGP_PAT_DATA_EXCEPT_REF... + d c 1076 + d XML_RNGP_PAT_DATA_EXCEPT_TEXT... + d c 1077 + d XML_RNGP_PAT_LIST_ATTR... + d c 1078 + d XML_RNGP_PAT_LIST_ELEM... + d c 1079 + d XML_RNGP_PAT_LIST_INTERLEAVE... + d c 1080 + d XML_RNGP_PAT_LIST_LIST... + d c 1081 + d XML_RNGP_PAT_LIST_REF... + d c 1082 + d XML_RNGP_PAT_LIST_TEXT... + d c 1083 + d XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME... + d c 1084 + d XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME... + d c 1085 + d XML_RNGP_PAT_ONEMORE_GROUP_ATTR... + d c 1086 + d XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR... + d c 1087 + d XML_RNGP_PAT_START_ATTR... + d c 1088 + d XML_RNGP_PAT_START_DATA... + d c 1089 + d XML_RNGP_PAT_START_EMPTY... + d c 1090 + d XML_RNGP_PAT_START_GROUP... + d c 1091 + d XML_RNGP_PAT_START_INTERLEAVE... + d c 1092 + d XML_RNGP_PAT_START_LIST... + d c 1093 + d XML_RNGP_PAT_START_ONEMORE... + d c 1094 + d XML_RNGP_PAT_START_TEXT... + d c 1095 + d XML_RNGP_PAT_START_VALUE... + d c 1096 + d XML_RNGP_PREFIX_UNDEFINED... + d c 1097 + d XML_RNGP_REF_CREATE_FAILED... + d c 1098 + d XML_RNGP_REF_CYCLE... + d c 1099 + d XML_RNGP_REF_NAME_INVALID... + d c 1100 + d XML_RNGP_REF_NO_DEF... + d c 1101 + d XML_RNGP_REF_NO_NAME... + d c 1102 + d XML_RNGP_REF_NOT_EMPTY... + d c 1103 + d XML_RNGP_START_CHOICE_AND_INTERLEAVE... + d c 1104 + d XML_RNGP_START_CONTENT... + d c 1105 + d XML_RNGP_START_EMPTY... + d c 1106 + d XML_RNGP_START_MISSING... + d c 1107 + d XML_RNGP_TEXT_EXPECTED... + d c 1108 + d XML_RNGP_TEXT_HAS_CHILD... + d c 1109 + d XML_RNGP_TYPE_MISSING... + d c 1110 + d XML_RNGP_TYPE_NOT_FOUND... + d c 1111 + d XML_RNGP_TYPE_VALUE... + d c 1112 + d XML_RNGP_UNKNOWN_ATTRIBUTE... + d c 1113 + d XML_RNGP_UNKNOWN_COMBINE... + d c 1114 + d XML_RNGP_UNKNOWN_CONSTRUCT... + d c 1115 + d XML_RNGP_UNKNOWN_TYPE_LIB... + d c 1116 + d XML_RNGP_URI_FRAGMENT... + d c 1117 + d XML_RNGP_URI_NOT_ABSOLUTE... + d c 1118 + d XML_RNGP_VALUE_EMPTY... + d c 1119 + d XML_RNGP_VALUE_NO_CONTENT... + d c 1120 + d XML_RNGP_XMLNS_NAME... + d c 1121 + d XML_RNGP_XML_NS... + d c 1122 + d XML_XPATH_EXPRESSION_OK... + d c 1200 + d XML_XPATH_NUMBER_ERROR... + d c 1201 + d XML_XPATH_UNFINISHED_LITERAL_ERROR... + d c 1202 + d XML_XPATH_START_LITERAL_ERROR... + d c 1203 + d XML_XPATH_VARIABLE_REF_ERROR... + d c 1204 + d XML_XPATH_UNDEF_VARIABLE_ERROR... + d c 1205 + d XML_XPATH_INVALID_PREDICATE_ERROR... + d c 1206 + d XML_XPATH_EXPR_ERROR... + d c 1207 + d XML_XPATH_UNCLOSED_ERROR... + d c 1208 + d XML_XPATH_UNKNOWN_FUNC_ERROR... + d c 1209 + d XML_XPATH_INVALID_OPERAND... + d c 1210 + d XML_XPATH_INVALID_TYPE... + d c 1211 + d XML_XPATH_INVALID_ARITY... + d c 1212 + d XML_XPATH_INVALID_CTXT_SIZE... + d c 1213 + d XML_XPATH_INVALID_CTXT_POSITION... + d c 1214 + d XML_XPATH_MEMORY_ERROR... + d c 1215 + d XML_XPTR_SYNTAX_ERROR... + d c 1216 + d XML_XPTR_RESOURCE_ERROR... + d c 1217 + d XML_XPTR_SUB_RESOURCE_ERROR... + d c 1218 + d XML_XPATH_UNDEF_PREFIX_ERROR... + d c 1219 + d XML_XPATH_ENCODING_ERROR... + d c 1220 + d XML_XPATH_INVALID_CHAR_ERROR... + d c 1231 + d XML_TREE_INVALID_HEX... + d c 1300 + d XML_TREE_INVALID_DEC... + d c 1301 + d XML_TREE_UNTERMINATED_ENTITY... + d c 1302 + d XML_TREE_NOT_UTF8... + d c 1303 + d XML_SAVE_NOT_UTF8... + d c 1400 + d XML_SAVE_CHAR_INVALID... + d c 1401 + d XML_SAVE_NO_DOCTYPE... + d c 1402 + d XML_SAVE_UNKNOWN_ENCODING... + d c 1403 + d XML_REGEXP_COMPILE_ERROR... + d c 1403 + d XML_IO_UNKNOWN... + d c 1500 + d XML_IO_EACCES c 1501 + d XML_IO_EAGAIN c 1502 + d XML_IO_EBADF c 1503 + d XML_IO_EBADMSG... + d c 1504 + d XML_IO_EBUSY c 1505 + d XML_IO_ECANCELED... + d c 1506 + d XML_IO_ECHILD c 1507 + d XML_IO_EDEADLK... + d c 1508 + d XML_IO_EDOM c 1509 + d XML_IO_EEXIST c 1510 + d XML_IO_EFAULT c 1511 + d XML_IO_EFBIG c 1512 + d XML_IO_EINPROGRESS... + d c 1513 + d XML_IO_EINTR c 1514 + d XML_IO_EINVAL c 1515 + d XML_IO_EIO c 1516 + d XML_IO_EISDIR c 1517 + d XML_IO_EMFILE c 1518 + d XML_IO_EMLINK c 1519 + d XML_IO_EMSGSIZE... + d c 1520 + d XML_IO_ENAMETOOLONG... + d c 1521 + d XML_IO_ENFILE c 1522 + d XML_IO_ENODEV c 1523 + d XML_IO_ENOENT c 1524 + d XML_IO_ENOEXEC... + d c 1525 + d XML_IO_ENOLCK c 1526 + d XML_IO_ENOMEM c 1527 + d XML_IO_ENOSPC c 1528 + d XML_IO_ENOSYS c 1529 + d XML_IO_ENOTDIR... + d c 1530 + d XML_IO_ENOTEMPTY... + d c 1531 + d XML_IO_ENOTSUP... + d c 1532 + d XML_IO_ENOTTY c 1533 + d XML_IO_ENXIO c 1534 + d XML_IO_EPERM c 1535 + d XML_IO_EPIPE c 1536 + d XML_IO_ERANGE c 1537 + d XML_IO_EROFS c 1538 + d XML_IO_ESPIPE c 1539 + d XML_IO_ESRCH c 1540 + d XML_IO_ETIMEDOUT... + d c 1541 + d XML_IO_EXDEV c 1542 + d XML_IO_NETWORK_ATTEMPT... + d c 1543 + d XML_IO_ENCODER... + d c 1544 + d XML_IO_FLUSH c 1545 + d XML_IO_WRITE c 1546 + d XML_IO_NO_INPUT... + d c 1547 + d XML_IO_BUFFER_FULL... + d c 1548 + d XML_IO_LOAD_ERROR... + d c 1549 + d XML_IO_ENOTSOCK... + d c 1550 + d XML_IO_EISCONN... + d c 1551 + d XML_IO_ECONNREFUSED... + d c 1552 + d XML_IO_ENETUNREACH... + d c 1553 + d XML_IO_EADDRINUSE... + d c 1554 + d XML_IO_EALREADY... + d c 1555 + d XML_IO_EAFNOSUPPORT... + d c 1556 + d XML_XINCLUDE_RECURSION... + d c 1600 + d XML_XINCLUDE_PARSE_VALUE... + d c 1601 + d XML_XINCLUDE_ENTITY_DEF_MISMATCH... + d c 1602 + d XML_XINCLUDE_NO_HREF... + d c 1603 + d XML_XINCLUDE_NO_FALLBACK... + d c 1604 + d XML_XINCLUDE_HREF_URI... + d c 1605 + d XML_XINCLUDE_TEXT_FRAGMENT... + d c 1606 + d XML_XINCLUDE_TEXT_DOCUMENT... + d c 1607 + d XML_XINCLUDE_INVALID_CHAR... + d c 1608 + d XML_XINCLUDE_BUILD_FAILED... + d c 1609 + d XML_XINCLUDE_UNKNOWN_ENCODING... + d c 1610 + d XML_XINCLUDE_MULTIPLE_ROOT... + d c 1611 + d XML_XINCLUDE_XPTR_FAILED... + d c 1612 + d XML_XINCLUDE_XPTR_RESULT... + d c 1613 + d XML_XINCLUDE_INCLUDE_IN_INCLUDE... + d c 1614 + d XML_XINCLUDE_FALLBACKS_IN_INCLUDE... + d c 1615 + d XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE... + d c 1616 + d XML_XINCLUDE_DEPRECATED_NS... + d c 1617 + d XML_XINCLUDE_FRAGMENT_ID... + d c 1618 + d XML_CATALOG_MISSING_ATTR... + d c 1650 + d XML_CATALOG_ENTRY_BROKEN... + d c 1651 + d XML_CATALOG_PREFER_VALUE... + d c 1652 + d XML_CATALOG_NOT_CATALOG... + d c 1653 + d XML_CATALOG_RECURSION... + d c 1654 + d XML_SCHEMAP_PREFIX_UNDEFINED... + d c 1700 + d XML_SCHEMAP_ATTRFORMDEFAULT_VALUE... + d c 1701 + d XML_SCHEMAP_ATTRGRP_NONAME_NOREF... + d c 1702 + d XML_SCHEMAP_ATTR_NONAME_NOREF... + d c 1703 + d XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF... + d c 1704 + d XML_SCHEMAP_ELEMFORMDEFAULT_VALUE... + d c 1705 + d XML_SCHEMAP_ELEM_NONAME_NOREF... + d c 1706 + d XML_SCHEMAP_EXTENSION_NO_BASE... + d c 1707 + d XML_SCHEMAP_FACET_NO_VALUE... + d c 1708 + d XML_SCHEMAP_FAILED_BUILD_IMPORT... + d c 1709 + d XML_SCHEMAP_GROUP_NONAME_NOREF... + d c 1710 + d XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI... + d c 1711 + d XML_SCHEMAP_IMPORT_REDEFINE_NSNAME... + d c 1712 + d XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI... + d c 1713 + d XML_SCHEMAP_INVALID_BOOLEAN... + d c 1714 + d XML_SCHEMAP_INVALID_ENUM... + d c 1715 + d XML_SCHEMAP_INVALID_FACET... + d c 1716 + d XML_SCHEMAP_INVALID_FACET_VALUE... + d c 1717 + d XML_SCHEMAP_INVALID_MAXOCCURS... + d c 1718 + d XML_SCHEMAP_INVALID_MINOCCURS... + d c 1719 + d XML_SCHEMAP_INVALID_REF_AND_SUBTYPE... + d c 1720 + d XML_SCHEMAP_INVALID_WHITE_SPACE... + d c 1721 + d XML_SCHEMAP_NOATTR_NOREF... + d c 1722 + d XML_SCHEMAP_NOTATION_NO_NAME... + d c 1723 + d XML_SCHEMAP_NOTYPE_NOREF... + d c 1724 + d XML_SCHEMAP_REF_AND_SUBTYPE... + d c 1725 + d XML_SCHEMAP_RESTRICTION_NONAME_NOREF... + d c 1726 + d XML_SCHEMAP_SIMPLETYPE_NONAME... + d c 1727 + d XML_SCHEMAP_TYPE_AND_SUBTYPE... + d c 1728 + d XML_SCHEMAP_UNKNOWN_ALL_CHILD... + d c 1729 + d XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD... + d c 1730 + d XML_SCHEMAP_UNKNOWN_ATTR_CHILD... + d c 1731 + d XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD... + d c 1732 + d XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP... + d c 1733 + d XML_SCHEMAP_UNKNOWN_BASE_TYPE... + d c 1734 + d XML_SCHEMAP_UNKNOWN_CHOICE_CHILD... + d c 1735 + d XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD... + d c 1736 + d XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD... + d c 1737 + d XML_SCHEMAP_UNKNOWN_ELEM_CHILD... + d c 1738 + d XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD... + d c 1739 + d XML_SCHEMAP_UNKNOWN_FACET_CHILD... + d c 1740 + d XML_SCHEMAP_UNKNOWN_FACET_TYPE... + d c 1741 + d XML_SCHEMAP_UNKNOWN_GROUP_CHILD... + d c 1742 + d XML_SCHEMAP_UNKNOWN_IMPORT_CHILD... + d c 1743 + d XML_SCHEMAP_UNKNOWN_LIST_CHILD... + d c 1744 + d XML_SCHEMAP_UNKNOWN_NOTATION_CHILD... + d c 1745 + d XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD... + d c 1746 + d XML_SCHEMAP_UNKNOWN_REF... + d c 1747 + d XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD... + d c 1748 + d XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD... + d c 1749 + d XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD... + d c 1750 + d XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD... + d c 1751 + d XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD... + d c 1752 + d XML_SCHEMAP_UNKNOWN_TYPE... + d c 1753 + d XML_SCHEMAP_UNKNOWN_UNION_CHILD... + d c 1754 + d XML_SCHEMAP_ELEM_DEFAULT_FIXED... + d c 1755 + d XML_SCHEMAP_REGEXP_INVALID... + d c 1756 + d XML_SCHEMAP_FAILED_LOAD... + d c 1757 + d XML_SCHEMAP_NOTHING_TO_PARSE... + d c 1758 + d XML_SCHEMAP_NOROOT... + d c 1759 + d XML_SCHEMAP_REDEFINED_GROUP... + d c 1760 + d XML_SCHEMAP_REDEFINED_TYPE... + d c 1761 + d XML_SCHEMAP_REDEFINED_ELEMENT... + d c 1762 + d XML_SCHEMAP_REDEFINED_ATTRGROUP... + d c 1763 + d XML_SCHEMAP_REDEFINED_ATTR... + d c 1764 + d XML_SCHEMAP_REDEFINED_NOTATION... + d c 1765 + d XML_SCHEMAP_FAILED_PARSE... + d c 1766 + d XML_SCHEMAP_UNKNOWN_PREFIX... + d c 1767 + d XML_SCHEMAP_DEF_AND_PREFIX... + d c 1768 + d XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD... + d c 1769 + d XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI... + d c 1770 + d XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI... + d c 1771 + d XML_SCHEMAP_NOT_SCHEMA... + d c 1772 + d XML_SCHEMAP_UNKNOWN_MEMBER_TYPE... + d c 1773 + d XML_SCHEMAP_INVALID_ATTR_USE... + d c 1774 + d XML_SCHEMAP_RECURSIVE... + d c 1775 + d XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE... + d c 1776 + d XML_SCHEMAP_INVALID_ATTR_COMBINATION... + d c 1777 + d XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION... + d c 1778 + d XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD... + d c 1779 + d XML_SCHEMAP_INVALID_ATTR_NAME... + d c 1780 + d XML_SCHEMAP_REF_AND_CONTENT... + d c 1781 + d XML_SCHEMAP_CT_PROPS_CORRECT_1... + d c 1782 + d XML_SCHEMAP_CT_PROPS_CORRECT_2... + d c 1783 + d XML_SCHEMAP_CT_PROPS_CORRECT_3... + d c 1784 + d XML_SCHEMAP_CT_PROPS_CORRECT_4... + d c 1785 + d XML_SCHEMAP_CT_PROPS_CORRECT_5... + d c 1786 + d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1... + d c 1787 + d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1... + d c 1788 + d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2... + d c 1789 + d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2... + d c 1790 + d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3... + d c 1791 + d XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER... + d c 1792 + d XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE... + d c 1793 + d XML_SCHEMAP_UNION_NOT_EXPRESSIBLE... + d c 1794 + d XML_SCHEMAP_SRC_IMPORT_3_1... + d c 1795 + d XML_SCHEMAP_SRC_IMPORT_3_2... + d c 1796 + d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1... + d c 1797 + d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2... + d c 1798 + d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3... + d c 1799 + d XML_SCHEMAP_COS_CT_EXTENDS_1_3... + d c 1800 + d XML_SCHEMAV_NOROOT... + d c 1801 + d XML_SCHEMAV_UNDECLAREDELEM... + d c 1802 + d XML_SCHEMAV_NOTTOPLEVEL... + d c 1803 + d XML_SCHEMAV_MISSING... + d c 1804 + d XML_SCHEMAV_WRONGELEM... + d c 1805 + d XML_SCHEMAV_NOTYPE... + d c 1806 + d XML_SCHEMAV_NOROLLBACK... + d c 1807 + d XML_SCHEMAV_ISABSTRACT... + d c 1808 + d XML_SCHEMAV_NOTEMPTY... + d c 1809 + d XML_SCHEMAV_ELEMCONT... + d c 1810 + d XML_SCHEMAV_HAVEDEFAULT... + d c 1811 + d XML_SCHEMAV_NOTNILLABLE... + d c 1812 + d XML_SCHEMAV_EXTRACONTENT... + d c 1813 + d XML_SCHEMAV_INVALIDATTR... + d c 1814 + d XML_SCHEMAV_INVALIDELEM... + d c 1815 + d XML_SCHEMAV_NOTDETERMINIST... + d c 1816 + d XML_SCHEMAV_CONSTRUCT... + d c 1817 + d XML_SCHEMAV_INTERNAL... + d c 1818 + d XML_SCHEMAV_NOTSIMPLE... + d c 1819 + d XML_SCHEMAV_ATTRUNKNOWN... + d c 1820 + d XML_SCHEMAV_ATTRINVALID... + d c 1821 + d XML_SCHEMAV_VALUE... + d c 1822 + d XML_SCHEMAV_FACET... + d c 1823 + d XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1... + d c 1824 + d XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2... + d c 1825 + d XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3... + d c 1826 + d XML_SCHEMAV_CVC_TYPE_3_1_1... + d c 1827 + d XML_SCHEMAV_CVC_TYPE_3_1_2... + d c 1828 + d XML_SCHEMAV_CVC_FACET_VALID... + d c 1829 + d XML_SCHEMAV_CVC_LENGTH_VALID... + d c 1830 + d XML_SCHEMAV_CVC_MINLENGTH_VALID... + d c 1831 + d XML_SCHEMAV_CVC_MAXLENGTH_VALID... + d c 1832 + d XML_SCHEMAV_CVC_MININCLUSIVE_VALID... + d c 1833 + d XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID... + d c 1834 + d XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID... + d c 1835 + d XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID... + d c 1836 + d XML_SCHEMAV_CVC_TOTALDIGITS_VALID... + d c 1837 + d XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID... + d c 1838 + d XML_SCHEMAV_CVC_PATTERN_VALID... + d c 1839 + d XML_SCHEMAV_CVC_ENUMERATION_VALID... + d c 1840 + d XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1... + d c 1841 + d XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2... + d c 1842 + d XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3... + d c 1843 + d XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4... + d c 1844 + d XML_SCHEMAV_CVC_ELT_1... + d c 1845 + d XML_SCHEMAV_CVC_ELT_2... + d c 1846 + d XML_SCHEMAV_CVC_ELT_3_1... + d c 1847 + d XML_SCHEMAV_CVC_ELT_3_2_1... + d c 1848 + d XML_SCHEMAV_CVC_ELT_3_2_2... + d c 1849 + d XML_SCHEMAV_CVC_ELT_4_1... + d c 1850 + d XML_SCHEMAV_CVC_ELT_4_2... + d c 1851 + d XML_SCHEMAV_CVC_ELT_4_3... + d c 1852 + d XML_SCHEMAV_CVC_ELT_5_1_1... + d c 1853 + d XML_SCHEMAV_CVC_ELT_5_1_2... + d c 1854 + d XML_SCHEMAV_CVC_ELT_5_2_1... + d c 1855 + d XML_SCHEMAV_CVC_ELT_5_2_2_1... + d c 1856 + d XML_SCHEMAV_CVC_ELT_5_2_2_2_1... + d c 1857 + d XML_SCHEMAV_CVC_ELT_5_2_2_2_2... + d c 1858 + d XML_SCHEMAV_CVC_ELT_6... + d c 1859 + d XML_SCHEMAV_CVC_ELT_7... + d c 1860 + d XML_SCHEMAV_CVC_ATTRIBUTE_1... + d c 1861 + d XML_SCHEMAV_CVC_ATTRIBUTE_2... + d c 1862 + d XML_SCHEMAV_CVC_ATTRIBUTE_3... + d c 1863 + d XML_SCHEMAV_CVC_ATTRIBUTE_4... + d c 1864 + d XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1... + d c 1865 + d XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1... + d c 1866 + d XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2... + d c 1867 + d XML_SCHEMAV_CVC_COMPLEX_TYPE_4... + d c 1868 + d XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1... + d c 1869 + d XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2... + d c 1870 + d XML_SCHEMAV_ELEMENT_CONTENT... + d c 1871 + d XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING... + d c 1872 + d XML_SCHEMAV_CVC_COMPLEX_TYPE_1... + d c 1873 + d XML_SCHEMAV_CVC_AU... + d c 1874 + d XML_SCHEMAV_CVC_TYPE_1... + d c 1875 + d XML_SCHEMAV_CVC_TYPE_2... + d c 1876 + d XML_SCHEMAV_CVC_IDC... + d c 1877 + d XML_SCHEMAV_CVC_WILDCARD... + d c 1878 + d XML_SCHEMAV_MISC... + d c 1879 + d XML_XPTR_UNKNOWN_SCHEME... + d c 1900 + d XML_XPTR_CHILDSEQ_START... + d c 1901 + d XML_XPTR_EVAL_FAILED... + d c 1902 + d XML_XPTR_EXTRA_OBJECTS... + d c 1903 + d XML_C14N_CREATE_CTXT... + d c 1950 + d XML_C14N_REQUIRES_UTF8... + d c 1951 + d XML_C14N_CREATE_STACK... + d c 1952 + d XML_C14N_INVALID_NODE... + d c 1953 + d XML_C14N_UNKNOW_NODE... + d c 1954 + d XML_C14N_RELATIVE_NAMESPACE... + d c 1955 + d XML_FTP_PASV_ANSWER... + d c 2000 + d XML_FTP_EPSV_ANSWER... + d c 2001 + d XML_FTP_ACCNT... + d c 2002 + d XML_FTP_URL_SYNTAX... + d c 2003 + d XML_HTTP_URL_SYNTAX... + d c 2020 + d XML_HTTP_USE_IP... + d c 2021 + d XML_HTTP_UNKNOWN_HOST... + d c 2022 + d XML_SCHEMAP_SRC_SIMPLE_TYPE_1... + d c 3000 + d XML_SCHEMAP_SRC_SIMPLE_TYPE_2... + d c 3001 + d XML_SCHEMAP_SRC_SIMPLE_TYPE_3... + d c 3002 + d XML_SCHEMAP_SRC_SIMPLE_TYPE_4... + d c 3003 + d XML_SCHEMAP_SRC_RESOLVE... + d c 3004 + d XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE... + d c 3005 + d XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE... + d c 3006 + d XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES... + d c 3007 + d XML_SCHEMAP_ST_PROPS_CORRECT_1... + d c 3008 + d XML_SCHEMAP_ST_PROPS_CORRECT_2... + d c 3009 + d XML_SCHEMAP_ST_PROPS_CORRECT_3... + d c 3010 + d XML_SCHEMAP_COS_ST_RESTRICTS_1_1... + d c 3011 + d XML_SCHEMAP_COS_ST_RESTRICTS_1_2... + d c 3012 + d XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1... + d c 3013 + d XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2... + d c 3014 + d XML_SCHEMAP_COS_ST_RESTRICTS_2_1... + d c 3015 + d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1... + d c 3016 + d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2... + d c 3017 + d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1... + d c 3018 + d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2... + d c 3019 + d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3... + d c 3020 + d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4... + d c 3021 + d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5... + d c 3022 + d XML_SCHEMAP_COS_ST_RESTRICTS_3_1... + d c 3023 + d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1... + d c 3024 + d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2... + d c 3025 + d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2... + d c 3026 + d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1... + d c 3027 + d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3... + d c 3028 + d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4... + d c 3029 + d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5... + d c 3030 + d XML_SCHEMAP_COS_ST_DERIVED_OK_2_1... + d c 3031 + d XML_SCHEMAP_COS_ST_DERIVED_OK_2_2... + d c 3032 + d XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED... + d c 3033 + d XML_SCHEMAP_S4S_ELEM_MISSING... + d c 3034 + d XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED... + d c 3035 + d XML_SCHEMAP_S4S_ATTR_MISSING... + d c 3036 + d XML_SCHEMAP_S4S_ATTR_INVALID_VALUE... + d c 3037 + d XML_SCHEMAP_SRC_ELEMENT_1... + d c 3038 + d XML_SCHEMAP_SRC_ELEMENT_2_1... + d c 3039 + d XML_SCHEMAP_SRC_ELEMENT_2_2... + d c 3040 + d XML_SCHEMAP_SRC_ELEMENT_3... + d c 3041 + d XML_SCHEMAP_P_PROPS_CORRECT_1... + d c 3042 + d XML_SCHEMAP_P_PROPS_CORRECT_2_1... + d c 3043 + d XML_SCHEMAP_P_PROPS_CORRECT_2_2... + d c 3044 + d XML_SCHEMAP_E_PROPS_CORRECT_2... + d c 3045 + d XML_SCHEMAP_E_PROPS_CORRECT_3... + d c 3046 + d XML_SCHEMAP_E_PROPS_CORRECT_4... + d c 3047 + d XML_SCHEMAP_E_PROPS_CORRECT_5... + d c 3048 + d XML_SCHEMAP_E_PROPS_CORRECT_6... + d c 3049 + d XML_SCHEMAP_SRC_INCLUDE... + d c 3050 + d XML_SCHEMAP_SRC_ATTRIBUTE_1... + d c 3051 + d XML_SCHEMAP_SRC_ATTRIBUTE_2... + d c 3052 + d XML_SCHEMAP_SRC_ATTRIBUTE_3_1... + d c 3053 + d XML_SCHEMAP_SRC_ATTRIBUTE_3_2... + d c 3054 + d XML_SCHEMAP_SRC_ATTRIBUTE_4... + d c 3055 + d XML_SCHEMAP_NO_XMLNS... + d c 3056 + d XML_SCHEMAP_NO_XSI... + d c 3057 + d XML_SCHEMAP_COS_VALID_DEFAULT_1... + d c 3058 + d XML_SCHEMAP_COS_VALID_DEFAULT_2_1... + d c 3059 + d XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1... + d c 3060 + d XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2... + d c 3061 + d XML_SCHEMAP_CVC_SIMPLE_TYPE... + d c 3062 + d XML_SCHEMAP_COS_CT_EXTENDS_1_1... + d c 3063 + d XML_SCHEMAP_SRC_IMPORT_1_1... + d c 3064 + d XML_SCHEMAP_SRC_IMPORT_1_2... + d c 3065 + d XML_SCHEMAP_SRC_IMPORT_2... + d c 3066 + d XML_SCHEMAP_SRC_IMPORT_2_1... + d c 3067 + d XML_SCHEMAP_SRC_IMPORT_2_2... + d c 3068 + d XML_SCHEMAP_INTERNAL... Non W3C + d c 3069 + d XML_SCHEMAP_NOT_DETERMINISTIC... + d c 3070 + d XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1... + d c 3071 + d XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2... + d c 3072 + d XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3... + d c 3073 + d XML_SCHEMAP_MG_PROPS_CORRECT_1... + d c 3074 + d XML_SCHEMAP_MG_PROPS_CORRECT_2... + d c 3075 + d XML_SCHEMAP_SRC_CT_1... + d c 3076 + d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3... + d c 3077 + d XML_SCHEMAP_AU_PROPS_CORRECT_2... + d c 3078 + d XML_SCHEMAP_A_PROPS_CORRECT_2... + d c 3079 + d XML_SCHEMAP_C_PROPS_CORRECT... + d c 3080 + d XML_SCHEMAP_SRC_REDEFINE... + d c 3081 + d XML_SCHEMAP_SRC_IMPORT... + d c 3082 + d XML_SCHEMAP_WARN_SKIP_SCHEMA... + d c 3083 + d XML_SCHEMAP_WARN_UNLOCATED_SCHEMA... + d c 3084 + d XML_SCHEMAP_WARN_ATTR_REDECL_PROH... + d c 3085 + d XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH... + d c 3086 + d XML_SCHEMAP_AG_PROPS_CORRECT... + d c 3087 + d XML_SCHEMAP_COS_CT_EXTENDS_1_2... + d c 3088 + d XML_SCHEMAP_AU_PROPS_CORRECT... + d c 3089 + d XML_SCHEMAP_A_PROPS_CORRECT_3... + d c 3090 + d XML_SCHEMAP_COS_ALL_LIMITED... + d c 3091 + d XML_SCHEMATRONV_ASSERT... + d c 4000 + d XML_SCHEMATRONV_REPORT... + d c 4001 + d XML_MODULE_OPEN... + d c 4900 + d XML_MODULE_CLOSE... + d c 4901 + d XML_CHECK_FOUND_ELEMENT... + d c 5000 + d XML_CHECK_FOUND_ATTRIBUTE... + d c 5001 + d XML_CHECK_FOUND_TEXT... + d c 5002 + d XML_CHECK_FOUND_CDATA... + d c 5003 + d XML_CHECK_FOUND_ENTITYREF... + d c 5004 + d XML_CHECK_FOUND_ENTITY... + d c 5005 + d XML_CHECK_FOUND_PI... + d c 5006 + d XML_CHECK_FOUND_COMMENT... + d c 5007 + d XML_CHECK_FOUND_DOCTYPE... + d c 5008 + d XML_CHECK_FOUND_FRAGMENT... + d c 5009 + d XML_CHECK_FOUND_NOTATION... + d c 5010 + d XML_CHECK_UNKNOWN_NODE... + d c 5011 + d XML_CHECK_ENTITY_TYPE... + d c 5012 + d XML_CHECK_NO_PARENT... + d c 5013 + d XML_CHECK_NO_DOC... + d c 5014 + d XML_CHECK_NO_NAME... + d c 5015 + d XML_CHECK_NO_ELEM... + d c 5016 + d XML_CHECK_WRONG_DOC... + d c 5017 + d XML_CHECK_NO_PREV... + d c 5018 + d XML_CHECK_WRONG_PREV... + d c 5019 + d XML_CHECK_NO_NEXT... + d c 5020 + d XML_CHECK_WRONG_NEXT... + d c 5021 + d XML_CHECK_NOT_DTD... + d c 5022 + d XML_CHECK_NOT_ATTR... + d c 5023 + d XML_CHECK_NOT_ATTR_DECL... + d c 5024 + d XML_CHECK_NOT_ELEM_DECL... + d c 5025 + d XML_CHECK_NOT_ENTITY_DECL... + d c 5026 + d XML_CHECK_NOT_NS_DECL... + d c 5027 + d XML_CHECK_NO_HREF... + d c 5028 + d XML_CHECK_WRONG_PARENT... + d c 5029 + d XML_CHECK_NS_SCOPE... + d c 5030 + d XML_CHECK_NS_ANCESTOR... + d c 5031 + d XML_CHECK_NOT_UTF8... + d c 5032 + d XML_CHECK_NO_DICT... + d c 5033 + d XML_CHECK_NOT_NCNAME... + d c 5034 + d XML_CHECK_OUTSIDE_DICT... + d c 5035 + d XML_CHECK_WRONG_NAME... + d c 5036 + d XML_CHECK_NAME_NOT_NULL... + d c 5037 + d XML_I18N_NO_NAME... + d c 6000 + d XML_I18N_NO_HANDLER... + d c 6001 + d XML_I18N_EXCESS_HANDLER... + d c 6002 + d XML_I18N_CONV_FAILED... + d c 6003 + d XML_I18N_NO_OUTPUT... + d c 6004 + d XML_BUF_OVERFLOW... + d c 7000 + + * xmlGenericErrorFunc: + * @ctx: a parsing context + * @msg: the message + * @...: the extra arguments of the varags to format the message + * + * Signature of the function to use when there is an error and + * no parsing or validity context available . + + d xmlGenericErrorFunc... + d s * based(######typedef######) + d procptr + + * xmlStructuredErrorFunc: + * @userData: user provided data for the error callback + * @error: the error being raised. + * + * Signature of the function to use when there is an error and + * the module handles the new error reporting mechanism. + + d xmlStructuredErrorFunc... + d s * based(######typedef######) + d procptr + + * Use the following function to reset the two global variables + * xmlGenericError and xmlGenericErrorContext. + + d xmlSetGenericErrorFunc... + d pr extproc('xmlSetGenericErrorFunc') + d ctx * value void * + d handler value like(xmlGenericErrorFunc) + + d initGenericErrorDefaultFunc... + d pr extproc( + d 'initGenericErrorDefaultFunc') + d handler like(xmlGenericErrorFunc) + + d xmlSetStructuredErrorFunc... + d pr extproc('xmlSetStructuredErrorFunc') + d ctx * value void * + d handler value like(xmlGenericErrorFunc) + + * Default message routines used by SAX and Valid context for error + * and warning reporting. + * + * These are vararg functions. + * The following prototypes support up to 8 pointer arguments. + * Other argument signature can be achieved by defining alternate + * prototypes redirected to the same function. + + d xmlParserError pr extproc('xmlParserError') + d ctx * value void * + d msg * value options(*string) const char * + d handler value like(xmlGenericErrorFunc) + d arg1 * value options(*string: *nopass) + d arg2 * value options(*string: *nopass) + d arg3 * value options(*string: *nopass) + d arg4 * value options(*string: *nopass) + d arg5 * value options(*string: *nopass) + d arg6 * value options(*string: *nopass) + d arg7 * value options(*string: *nopass) + d arg8 * value options(*string: *nopass) + + d xmlParserWarning... + d pr extproc('xmlParserWarning') + d ctx * value void * + d msg * value options(*string) const char * + d handler value like(xmlGenericErrorFunc) + d arg1 * value options(*string: *nopass) + d arg2 * value options(*string: *nopass) + d arg3 * value options(*string: *nopass) + d arg4 * value options(*string: *nopass) + d arg5 * value options(*string: *nopass) + d arg6 * value options(*string: *nopass) + d arg7 * value options(*string: *nopass) + d arg8 * value options(*string: *nopass) + + d xmlParserValidityError... + d pr extproc('xmlParserValidityError') + d ctx * value void * + d msg * value options(*string) const char * + d handler value like(xmlGenericErrorFunc) + d arg1 * value options(*string: *nopass) + d arg2 * value options(*string: *nopass) + d arg3 * value options(*string: *nopass) + d arg4 * value options(*string: *nopass) + d arg5 * value options(*string: *nopass) + d arg6 * value options(*string: *nopass) + d arg7 * value options(*string: *nopass) + d arg8 * value options(*string: *nopass) + + d xmlParserValidityWarning... + d pr extproc('xmlParserValidityWarning') + d ctx * value void * + d msg * value options(*string) const char * + d handler value like(xmlGenericErrorFunc) + d arg1 * value options(*string: *nopass) + d arg2 * value options(*string: *nopass) + d arg3 * value options(*string: *nopass) + d arg4 * value options(*string: *nopass) + d arg5 * value options(*string: *nopass) + d arg6 * value options(*string: *nopass) + d arg7 * value options(*string: *nopass) + d arg8 * value options(*string: *nopass) + + d xmlParserPrintFileInfo... + d pr extproc('xmlParserPrintFileInfo') + d input value like(xmlParserInputPtr) + + d xmlParserPrintFileContext... + d pr extproc('xmlParserPrintFileContext') + d input value like(xmlParserInputPtr) + + * Extended error information routines + + d xmlGetLastError... + d pr extproc('xmlGetLastError') + d like(xmlErrorPtr) + + d xmlResetLastError... + d pr extproc('xmlResetLastError') + + d xmlCtxtGetLastError... + d pr extproc('xmlCtxtGetLastError') + d like(xmlErrorPtr) + d ctx * value void * + + d xmlCtxtResetLastError... + d pr extproc('xmlCtxtResetLastError') + d ctx * value void * + + d xmlResetError pr extproc('xmlResetError') + d err value like(xmlErrorPtr) + + d xmlCopyError pr extproc('xmlCopyError') + d like(xmlCint) + d from value like(xmlErrorPtr) + d to value like(xmlErrorPtr) + + /endif XML_ERROR_H__ diff --git a/libxml2/os400/libxmlrpg/xmlexports.rpgle b/libxml2/os400/libxmlrpg/xmlexports.rpgle new file mode 100644 index 0000000..9a6fd10 --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlexports.rpgle @@ -0,0 +1,15 @@ + * Summary: macros for marking symbols as exportable/importable. + * Description: macros for marking symbols as exportable/importable. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_EXPORTS_H__) + /define XML_EXPORTS_H__ + + * The definition in the original C header file are not appliable to + * ILE/RPG. + * Therefore this file is intentionally empty. + + /endif XML_EXPORTS_H__ diff --git a/libxml2/os400/libxmlrpg/xmlmemory.rpgle b/libxml2/os400/libxmlrpg/xmlmemory.rpgle new file mode 100644 index 0000000..472e941 --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlmemory.rpgle @@ -0,0 +1,247 @@ + * Summary: interface for the memory allocator + * Description: provides interfaces for the memory allocator, + * including debugging capabilities. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(DEBUG_MEMORY_ALLOC__) + /define DEBUG_MEMORY_ALLOC__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + + * DEBUG_MEMORY: + * + * DEBUG_MEMORY replaces the allocator with a collect and debug + * shell to the libc allocator. + * DEBUG_MEMORY should only be activated when debugging + * libxml i.e. if libxml has been configured with --with-debug-mem too. + + * /define DEBUG_MEMORY_FREED + * /define DEBUG_MEMORY_LOCATION + + /if defined(DEBUG) + /if not defined(DEBUG_MEMORY) + /define DEBUG_MEMORY + /endif + /endif + + * DEBUG_MEMORY_LOCATION: + * + * DEBUG_MEMORY_LOCATION should be activated only when debugging + * libxml i.e. if libxml has been configured with --with-debug-mem too. + + /if defined(DEBUG_MEMORY_LOCATION) + /endif + + * The XML memory wrapper support 4 basic overloadable functions. + + * xmlFreeFunc: + * @mem: an already allocated block of memory + * + * Signature for a free() implementation. + + d xmlFreeFunc s * based(######typedef######) + d procptr + + * xmlMallocFunc: + * @size: the size requested in bytes + * + * Signature for a malloc() implementation. + * + * Returns a pointer to the newly allocated block or NULL in case of error. + + d xmlMallocFunc s * based(######typedef######) + d procptr + + * xmlReallocFunc: + * @mem: an already allocated block of memory + * @size: the new size requested in bytes + * + * Signature for a realloc() implementation. + * + * Returns a pointer to the newly reallocated block or NULL in case of error. + + d xmlReallocFunc s * based(######typedef######) + d procptr + + * xmlStrdupFunc: + * @str: a zero terminated string + * + * Signature for an strdup() implementation. + * + * Returns the copy of the string or NULL in case of error. + + d xmlStrdupFunc s * based(######typedef######) + d procptr + + * The 5 interfaces used for all memory handling within libxml. + * Since indirect calls are only supported via a based prototype, + * storage is accessed via functions. + + d get_xmlFree pr extproc('__get_xmlFree') + d like(xmlFreeFunc) + + d set_xmlFree pr extproc('__set_xmlFree') + d func value like(xmlFreeFunc) + + d xmlFree pr extproc('__call_xmlFree') + d mem * value void * + + d get_xmlMalloc pr extproc('__get_xmlMalloc') + d like(xmlMallocFunc) + + d set_xmlMalloc pr extproc('__set_xmlMalloc') + d func value like(xmlMallocFunc) + + d xmlMalloc pr * extproc('__call_xmlMalloc') void * + d size value like(xmlCsize_t) + + d get_xmlMallocAtomic... + d pr extproc('__get_xmlMallocAtomic') + d like(xmlMallocFunc) + + d set_xmlMallocAtomic... + d pr extproc('__set_xmlMallocAtomic') + d func value like(xmlMallocFunc) + + d xmlMallocAtomic... + d pr * extproc('__call_xmlMallocAtomic') void * + d size value like(xmlCsize_t) + + d get_xmlRealloc pr extproc('__get_xmlRealloc') + d like(xmlReallocFunc) + + d set_xmlRealloc pr extproc('__set_xmlRealloc') + d func value like(xmlReallocFunc) + + d xmlRealloc pr * extproc('__call_xmlRealloc') void * + d mem * value void * + d size value like(xmlCsize_t) + + d get_xmlMemStrdup... + d pr extproc('__get_xmlMemStrdup') + d like(xmlStrdupFunc) + + d set_xmlMemStrdup... + d pr extproc('__set_xmlMemstrdup') + d func value like(xmlStrdupFunc) + + d xmlMemStrdup pr * extproc('__call_xmlMemStrdup') void * + d str * value options(*string) const char * + + * The way to overload the existing functions. + * The xmlGc function have an extra entry for atomic block + * allocations useful for garbage collected memory allocators + + d xmlMemSetup pr extproc('xmlMemSetup') + d like(xmlCint) + d freeFunc value like(xmlFreeFunc) + d mallocFunc value like(xmlMallocFunc) + d reallocFunc value like(xmlReallocFunc) + d strdupFunc value like(xmlStrdupFunc) + + d xmlMemGet pr extproc('xmlMemGet') + d like(xmlCint) + d freeFunc like(xmlFreeFunc) + d mallocFunc like(xmlMallocFunc) + d reallocFunc like(xmlReallocFunc) + d strdupFunc like(xmlStrdupFunc) + + d xmlGcMemSetup pr extproc('xmlGcMemSetup') + d like(xmlCint) + d freeFunc value like(xmlFreeFunc) + d mallocFunc value like(xmlMallocFunc) + d mallocAtomicFunc... + d value like(xmlMallocFunc) + d reallocFunc value like(xmlReallocFunc) + d strdupFunc value like(xmlStrdupFunc) + + d xmlGcMemGet pr extproc('xmlGcMemGet') + d like(xmlCint) + d freeFunc like(xmlFreeFunc) + d mallocFunc like(xmlMallocFunc) + d mallocAtomicFunc... + d like(xmlMallocFunc) + d reallocFunc like(xmlReallocFunc) + d strdupFunc like(xmlStrdupFunc) + + * Initialization of the memory layer. + + d xmlInitMemory pr extproc('xmlInitMemory') + d like(xmlCint) + + * Cleanup of the memory layer. + + d xmlCleanupMemory... + d pr extproc('xmlCleanupMemory') + + * These are specific to the XML debug memory wrapper. + + d xmlMemUsed pr extproc('xmlMemUsed') + d like(xmlCint) + + d xmlMemBlocks pr extproc('xmlMemBlocks') + d like(xmlCint) + + d xmlMemDisplay pr extproc('xmlMemDisplay') + d fp * value FILE * + + d xmlMmDisplayLast... + d pr extproc('xmlMemDisplayLast') + d fp * value FILE * + d nbBytes value like(xmlClong) + + d xmlMemShow pr extproc('xmlMemShow') + d fp * value FILE * + d nr value like(xmlCint) + + d xmlMemoryDump pr extproc('xmlMemoryDump') + + d xmlMemMalloc pr * extproc('xmlMemMalloc') void * + d size value like(xmlCsize_t) + + d xmlMemRealloc pr * extproc('xmlMemRealloc') void * + d ptr * value void * + d size value like(xmlCsize_t) + + d xmlMemFree pr extproc('xmlMemFree') + d ptr * value void * + + d xmlMemoryStrdup... + d pr * extproc('xmlMemoryStrdup') char * + d str * value options(*string) const char * + + d xmlMallocLoc pr * extproc('xmlMallocLoc') void * + d size value like(xmlCsize_t) + d file * value options(*string) const char * + d line value like(xmlCint) + + d xmlReallocLoc pr * extproc('xmlReallocLoc') void * + d ptr * value void * + d size value like(xmlCsize_t) + d file * value options(*string) const char * + d line value like(xmlCint) + + d xmlMallocAtomicLoc... + d pr * extproc('xmlMallocAtomicLoc') void * + d size value like(xmlCsize_t) + d file * value options(*string) const char * + d line value like(xmlCint) + + d xmlMemStrdupLoc... + d pr * extproc('xmlMemStrdupLoc') char * + d str * value options(*string) const char * + d file * value options(*string) const char * + d line value like(xmlCint) + + /if not defined(XML_GLOBALS_H) + /if not defined(XML_THREADS_H__) + /include "libxmlrpg/threads" + /include "libxmlrpg/globals" + /endif + /endif + + /endif DEBUG_MEMORY_ALLOC__ diff --git a/libxml2/os400/libxmlrpg/xmlmodule.rpgle b/libxml2/os400/libxmlrpg/xmlmodule.rpgle new file mode 100644 index 0000000..035254d --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlmodule.rpgle @@ -0,0 +1,57 @@ + * Summary: dynamic module loading + * Description: basic API for dynamic module loading, used by + * libexslt added in 2.6.17 + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_MODULE_H__) + /define XML_MODULE_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_MODULES_ENABLED) + + /include "libxmlrpg/xmlTypesC" + + * xmlModulePtr: + * + * A handle to a dynamically loaded module + + d xmlModulePtr s * based(######typedef######) + + * xmlModuleOption: + * + * enumeration of options that can be passed down to xmlModuleOpen() + + d xmlModuleOption... + d s based(######typedef######) + d like(xmlCenum) + d XML_MODULE_LAZY... Lazy binding + d c 1 + d XML_MODULE_LOCAL... Local binding + d c 2 + + d xmlModuleOpen pr extproc('xmlModuleOpen') + d like(xmlModulePtr) + d filename * value options(*string) const char * + d options value like(xmlCint) + + d xmlModuleSymbol... + d pr extproc('xmlModuleSymbol') + d like(xmlCint) + d module value like(xmlModulePtr) + d name * value options(*string) const char * + d result * void *(*) + + d xmlModuleClose pr extproc('xmlModuleClose') + d like(xmlCint) + d module value like(xmlModulePtr) + + d xmlModuleFree pr extproc('xmlModuleFree') + d like(xmlCint) + d module value like(xmlModulePtr) + + /endif LIBXML_MODULES_ENBLD + /endif XML_MODULE_H__ diff --git a/libxml2/os400/libxmlrpg/xmlreader.rpgle b/libxml2/os400/libxmlrpg/xmlreader.rpgle new file mode 100644 index 0000000..9ec76b3 --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlreader.rpgle @@ -0,0 +1,668 @@ + * Summary: the XMLReader implementation + * Description: API of the XML streaming API based on C# interfaces. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_XMLREADER_H__) + /define XML_XMLREADER_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + /include "libxmlrpg/xmlIO" + + /if defined(LIBXML_SCHEMAS_ENABLED) + /include "libxmlrpg/relaxng" + /include "libxmlrpg/xmlschemas" + /endif + + * xmlParserSeverities: + * + * How severe an error callback is when the per-reader error callback API + * is used. + + d xmlParserSeverities... + d s based(######typedef######) + d like(xmlCenum) + d XML_PARSER_SEVERITY_VALIDITY_WARNING... + d c 1 + d XML_PARSER_SEVERITY_VALIDITY_ERROR... + d c 2 + d XML_PARSER_SEVERITY_WARNING... + d c 3 + d XML_PARSER_SEVERITY_ERROR... + d c 4 + + /if defined(LIBXML_READER_ENABLED) + + * xmlTextReaderMode: + * + * Internal state values for the reader. + + d xmlTextReaderMode... + d s based(######typedef######) + d like(xmlCenum) + d XML_TEXTREADER_MODE_INITIAL... + d c 0 + d XML_TEXTREADER_MODE_INTERACTIVE... + d c 1 + d XML_TEXTREADER_MODE_ERROR... + d c 2 + d XML_TEXTREADER_MODE_EOF... + d c 3 + d XML_TEXTREADER_MODE_CLOSED... + d c 4 + d XML_TEXTREADER_MODE_READING... + d c 5 + + * xmlParserProperties: + * + * Some common options to use with xmlTextReaderSetParserProp, but it + * is better to use xmlParserOption and the xmlReaderNewxxx and + * xmlReaderForxxx APIs now. + + d xmlParserProperties... + d s based(######typedef######) + d like(xmlCenum) + d XML_PARSER_LOADDTD... + d c 1 + d XML_PARSER_DEFAULTATTRS... + d c 2 + d XML_PARSER_VALIDATE... + d c 3 + d XML_PARSER_SUBST_ENTITIES... + d c 4 + + * xmlReaderTypes: + * + * Predefined constants for the different types of nodes. + + d xmlReaderTypes s based(######typedef######) + d like(xmlCenum) + d XML_READER_TYPE_NONE... + d c 0 + d XML_READER_TYPE_ELEMENT... + d c 1 + d XML_READER_TYPE_ATTRIBUTE... + d c 2 + d XML_READER_TYPE_TEXT... + d c 3 + d XML_READER_TYPE_CDATA... + d c 4 + d XML_READER_TYPE_ENTITY_REFERENCE... + d c 5 + d XML_READER_TYPE_ENTITY... + d c 6 + d XML_READER_TYPE_PROCESSING_INSTRUCTION... + d c 7 + d XML_READER_TYPE_COMMENT... + d c 8 + d XML_READER_TYPE_DOCUMENT... + d c 9 + d XML_READER_TYPE_DOCUMENT_TYPE... + d c 10 + d XML_READER_TYPE_DOCUMENT_FRAGMENT... + d c 11 + d XML_READER_TYPE_NOTATION... + d c 12 + d XML_READER_TYPE_WHITESPACE... + d c 13 + d XML_READER_TYPE_SIGNIFICANT_WHITESPACE... + d c 14 + d XML_READER_TYPE_END_ELEMENT... + d c 15 + d XML_READER_TYPE_END_ENTITY... + d c 16 + d XML_READER_TYPE_XML_DECLARATION... + d c 17 + + * xmlTextReaderPtr: + * + * Pointer to an xmlReader context. + + d xmlTextReaderPtr... + d s * based(######typedef######) + + * Constructors & Destructor + + d xmlNewTextReader... + d pr extproc('xmlNewTextReader') + d like(xmlTextReaderPtr) + d input value like(xmlParserInputBufferPtr) + d URI * value options(*string) const char * + + d xmlNewTextReaderFilename... + d pr extproc('xmlNewTextReaderFilename') + d like(xmlTextReaderPtr) + d URI * value options(*string) const char * + + d xmlFreeTextReader... + d pr extproc('xmlFreeTextReader') + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderSetup... + d pr extproc('xmlTextReaderSetup') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d input value like(xmlParserInputBufferPtr) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + * Iterators + + d xmlTextReaderRead... + d pr extproc('xmlTextReaderRead') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + /if defined(LIBXML_WRITER_ENABLED) + d xmlTextReaderReadInnerXml... + d pr * extproc('xmlTextReaderReadInnerXml') xmlChar * + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderReadOuterXml... + d pr * extproc('xmlTextReaderReadOuterXml') xmlChar * + d reader value like(xmlTextReaderPtr) + /endif + + d xmlTextReaderReadString... + d pr * extproc('xmlTextReaderReadString') xmlChar * + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderReadAttributeValue... + d pr extproc( + d 'xmlTextReaderReadAttributeValue') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + * Attributes of the node + + d xmlTextReaderAttributeCount... + d pr extproc( + d 'xmlTextReaderAttributeCount') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderDepth... + d pr extproc('xmlTextReaderDepth') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderHasAttributes... + d pr extproc('xmlTextReaderHasAttributes') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderHasValue... + d pr extproc('xmlTextReaderHasValue') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderIsDefault... + d pr extproc('xmlTextReaderIsDefault') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderIsEmptyElement... + d pr extproc( + d 'xmlTextReaderIsEmptyElement') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderNodeType... + d pr extproc('xmlTextReaderNodeType') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderQuoteChar... + d pr extproc('xmlTextReaderQuoteChar') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderReadState... + d pr extproc('xmlTextReaderReadState') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderIsNamespaceDecl... + d pr extproc( + d 'xmlTextReaderIsNamespaceDecl') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderConstBaseUri... + d pr * extproc('xmlTextReaderConstBaseUri') const xmlChar * + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderConstLocalName... + d pr * extproc( const xmlChar * + d 'xmlTextReaderConstLocalName') + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderConstName... + d pr * extproc('xmlTextReaderConstName') const xmlChar * + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderConstNamespaceUri... + d pr * extproc( const xmlChar * + d 'xmlTextReaderConstNamespaceUri') + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderConstPrefix... + d pr * extproc('xmlTextReaderConstPrefix') const xmlChar * + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderConstXmlLang... + d pr * extproc('xmlTextReaderConstXmlLang') const xmlChar * + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderConstString... + d pr * extproc('xmlTextReaderConstString') const xmlChar * + d reader value like(xmlTextReaderPtr) + d str * value options(*string) const xmlChar * + + d xmlTextReaderConstValue... + d pr * extproc('xmlTextReaderConstValue') const xmlChar * + d reader value like(xmlTextReaderPtr) + + * use the Const version of the routine for + * better performance and simpler code + + d xmlTextReaderBaseUri... + d pr * extproc('xmlTextReaderBaseUri') xmlChar * + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderLocalName... + d pr * extproc('xmlTextReaderLocalName') xmlChar * + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderName... + d pr * extproc('xmlTextReaderName') xmlChar * + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderNamespaceUri... + d pr * extproc('xmlTextReaderNamespaceUri') xmlChar * + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderPrefix... + d pr * extproc('xmlTextReaderPrefix') xmlChar * + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderXmlLang... + d pr * extproc('xmlTextReaderXmlLang') xmlChar * + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderValue... + d pr * extproc('xmlTextReaderValue') xmlChar * + d reader value like(xmlTextReaderPtr) + + * Methods of the XmlTextReader + + d xmlTextReaderClose... + d pr extproc('xmlTextReaderClose') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderGetAttributeNo... + d pr * extproc( xmlChar * + d 'xmlTextReaderGetAttributeNo') + d reader value like(xmlTextReaderPtr) + d no value like(xmlCint) + + d xmlTextReaderGetAttribute... + d pr * extproc('xmlTextReaderGetAttribute') xmlChar * + d reader value like(xmlTextReaderPtr) + d name * value options(*string) const xmlChar * + + d xmlTextReaderGetAttributeNs... + d pr * extproc( xmlChar * + d 'xmlTextReaderGetAttributeNs') + d reader value like(xmlTextReaderPtr) + d localName * value options(*string) const xmlChar * + d namespaceURI * value options(*string) const xmlChar * + + d xmlTextReaderGetRemainder... + d pr extproc('xmlTextReaderGetRemainder') + d like(xmlParserInputBufferPtr) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderLookupNamespace... + d pr * extproc( xmlChar * + d 'xmlTextReaderLookupNamespace') + d reader value like(xmlTextReaderPtr) + d prefix * value options(*string) const xmlChar * + + d xmlTextReaderMoveToAttributeNo... + d pr extproc( + d 'xmlTextReaderMoveToAttributeNo') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d no value like(xmlCint) + + d xmlTextReaderMoveToAttribute... + d pr extproc( + d 'xmlTextReaderMoveToAttribute') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d name * value options(*string) const xmlChar * + + d xmlTextReaderMoveToAttributeNs... + d pr extproc( + d 'xmlTextReaderMoveToAttributeNs') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d localName * value options(*string) const xmlChar * + d namespaceURI * value options(*string) const xmlChar * + + d xmlTextReaderMoveToFirstAttribute... + d pr extproc( + d 'xmlTextReaderMoveToFirstAttribute') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderMoveToNextAttribute... + d pr extproc( + d 'xmlTextReaderMoveToNextAttribute') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderMoveToElement... + d pr extproc('xmlTextReaderMoveToElement') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderNormalization... + d pr extproc('xmlTextReaderNormalization') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderConstEncoding... + d pr * extproc('xmlTextReaderConstEncoding')const xmlChar * + d reader value like(xmlTextReaderPtr) + + * Extensions + + d xmlTextReaderSetParserProp... + d pr extproc('xmlTextReaderSetParserProp') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d prop value like(xmlCint) + d value value like(xmlCint) + + d xmlTextReaderGetParserProp... + d pr extproc('xmlTextReaderGetParserProp') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d prop value like(xmlCint) + + d xmlTextReaderCurrentNode... + d pr extproc('xmlTextReaderCurrentNode') + d like(xmlNodePtr) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderGetParserLineNumber... + d pr extproc( + d 'xmlTextReaderGetParserLineNumber') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderGetParserColumnNumber... + d pr extproc( + d 'xmlTextReaderGetParserColumnNumber') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderPreserve... + d pr extproc('xmlTextReaderPreserve') + d like(xmlNodePtr) + d reader value like(xmlTextReaderPtr) + + /if defined(LIBXML_PATTERN_ENABLED) + d xmlTextReaderPreservePattern... + d pr extproc( + d 'xmlTextReaderPreservePattern') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d pattern * value options(*string) const xmlChar * + d namespaces * const xmlChar *(*) + /endif LIBXML_PATTERN_ENBLD + + d xmlTextReaderCurrentDoc... + d pr extproc('xmlTextReaderCurrentDoc') + d like(xmlDocPtr) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderExpand... + d pr extproc('xmlTextReaderExpand') + d like(xmlNodePtr) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderNext... + d pr extproc('xmlTextReaderNext') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderNextSibling... + d pr extproc('xmlTextReaderNextSibling') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderIsValid... + d pr extproc('xmlTextReaderIsValid') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + /if defined(LIBXML_SCHEMAS_ENABLED) + d xmlTextReaderRelaxNGValidate... + d pr extproc( + d 'xmlTextReaderRelaxNGValidate') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d rng * value options(*string) const char * + + d xmlTextReaderRelaxNGValidateCtxt... + d pr extproc( + d 'xmlTextReaderRelaxNGValidateCtxt') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d ctxt value like(xmlRelaxNGValidCtxtPtr) + d options value like(xmlCint) + + d xmlTextReaderRelaxNGSetSchema... + d pr extproc( + d 'xmlTextReaderRelaxNGSetSchema') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d schema value like(xmlRelaxNGPtr) + + d xmlTextReaderSchemaValidate... + d pr extproc( + d 'xmlTextReaderSchemaValidate') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d xsd * value options(*string) const char * + + d xmlTextReaderSchemaValidateCtxt... + d pr extproc( + d 'xmlTextReaderSchemaValidateCtxt') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d ctxt value like(xmlSchemaValidCtxtPtr) + d options value like(xmlCint) + + d xmlTextReaderSetSchema... + d pr extproc('xmlTextReaderSetSchema') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d schema value like(xmlSchemaPtr) + /endif + + d xmlTextReaderConstXmlVersion... + d pr * extproc( const xmlChar * + d 'xmlTextReaderConstXmlVersion') + d reader value like(xmlTextReaderPtr) + + d xmlTextReaderStandalone... + d pr extproc('xmlTextReaderStandalone') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + + * Index lookup + + d xmlTextReaderByteConsumed... + d pr extproc('xmlTextReaderByteConsumed') + d like(xmlClong) + d reader value like(xmlTextReaderPtr) + + * New more complete APIs for simpler creation and reuse of readers + + d xmlReaderWalker... + d pr extproc('xmlReaderWalker') + d like(xmlTextReaderPtr) + d doc value like(xmlDocPtr) + + d xmlReaderForDoc... + d pr extproc('xmlReaderForDoc') + d like(xmlTextReaderPtr) + d cur * value options(*string) const xmlChar * + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlReaderForFile... + d pr extproc('xmlReaderForFile') + d like(xmlTextReaderPtr) + d filename * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlReaderForMemory... + d pr extproc('xmlReaderForMemory') + d like(xmlTextReaderPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlReaderForFd pr extproc('xmlReaderForFd') + d like(xmlTextReaderPtr) + d fd value like(xmlCint) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlReaderForIO pr extproc('xmlReaderForIO') + d like(xmlTextReaderPtr) + d ioread value like(xmlInputReadCallback) + d ioclose value like(xmlInputCloseCallback) + d ioctx * value void * + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlReaderNewWalker... + d pr extproc('xmlReaderNewWalker') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d doc value like(xmlDocPtr) + + d xmlReaderNewDoc... + d pr extproc('xmlReaderNewDoc') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d cur * value options(*string) const xmlChar * + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlReaderNewFile... + d pr extproc('xmlReaderNewFile') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d filename * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlReaderNewMemory... + d pr extproc('xmlReaderNewMemory') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlReaderNewFd pr extproc('xmlReaderNewFd') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d fd value like(xmlCint) + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlReaderNewIO pr extproc('xmlReaderNewIO') + d like(xmlCint) + d reader value like(xmlTextReaderPtr) + d ioread value like(xmlInputReadCallback) + d ioclose value like(xmlInputCloseCallback) + d ioctx * value void * + d URL * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + * Error handling extensions + + d xmlTextReaderLocatorPtr... + d s * based(######typedef######) void * + + * xmlTextReaderErrorFunc: + * @arg: the user argument + * @msg: the message + * @severity: the severity of the error + * @locator: a locator indicating where the error occured + * + * Signature of an error callback from a reader parser + + d xmlTextReaderErrorFunc... + d s * based(######typedef######) + d procptr + + d xmlTextReaderLocatorLineNumber... + d pr extproc( + d 'xmlTextReaderLocatorLineNumber') + d like(xmlCint) + d locator value like(xmlTextReaderLocatorPtr) + + d xmlTextReaderLocatorBaseURI... + d pr * extproc( xmlChar * + d 'xmlTextReaderLocatorBaseURI') + d locator value like(xmlTextReaderLocatorPtr) + + d xmlTextReaderSetErrorHandler... + d pr extproc( + d 'xmlTextReaderSetErrorHandler') + d reader value like(xmlTextReaderPtr) + d f value like(xmlTextReaderErrorFunc) + d arg * value void * + + d xmlTextReaderSetStructuredErrorHandler... + d pr extproc('xmlTextReaderSetStructuredE- + d rrorHandler') + d reader value like(xmlTextReaderPtr) + d f value like(xmlStructuredErrorFunc) + d arg * value void * + + d xmlTextReaderGetErrorHandler... + d pr extproc( + d 'xmlTextReaderGetErrorHandler') + d reader value like(xmlTextReaderPtr) + d f like(xmlTextReaderErrorFunc) + d arg * void *(*) + + /endif LIBXML_READER_ENABLD + /endif XML_XMLREADER_H__ diff --git a/libxml2/os400/libxmlrpg/xmlregexp.rpgle b/libxml2/os400/libxmlrpg/xmlregexp.rpgle new file mode 100644 index 0000000..01d411a --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlregexp.rpgle @@ -0,0 +1,262 @@ + * Summary: regular expressions handling + * Description: basic API for libxml regular expressions handling used + * for XML Schemas and validation. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_REGEXP_H__) + /define XML_REGEXP_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_REGEXP_ENABLED) + + /include "libxmlrpg/xmlTypesC" + + * xmlRegexpPtr: + * + * A libxml regular expression, they can actually be far more complex + * thank the POSIX regex expressions. + + d xmlRegexpPtr s * based(######typedef######) + + * xmlRegExecCtxtPtr: + * + * A libxml progressive regular expression evaluation context + + d xmlRegExecCtxtPtr... + d s * based(######typedef######) + + /include "libxmlrpg/tree" + /include "libxmlrpg/dict" + + * The POSIX like API + + d xmlRegexpCompile... + d pr extproc('xmlRegexpCompile') + d like(xmlRegexpPtr) + d regexp * value options(*string) const xmlChar * + + d xmlRegFreeRegexp... + d pr extproc('xmlRegFreeRegexp') + d regexp value like(xmlRegexpPtr) + + d xmlRegexpExec pr extproc('xmlRegexpExec') + d like(xmlCint) + d comp value like(xmlRegexpPtr) + d value * value options(*string) const xmlChar * + + d xmlRegexpPrint pr extproc('xmlRegexpPrint') + d output * value FILE * + d regexp value like(xmlRegexpPtr) + + d xmlRegexpIsDeterminist... + d pr extproc('xmlRegexpIsDeterminist') + d like(xmlCint) + d comp value like(xmlRegexpPtr) + + * xmlRegExecCallbacks: + * @exec: the regular expression context + * @token: the current token string + * @transdata: transition data + * @inputdata: input data + * + * Callback function when doing a transition in the automata + + d xmlRegExecCallbacks... + d s * based(######typedef######) + d procptr + + * The progressive API + + d xmlRegNewExecCtxt... + d pr extproc('xmlRegNewExecCtxt') + d like(xmlRegExecCtxtPtr) + d comp value like(xmlRegexpPtr) + d callback value like(xmlRegExecCallbacks) + d data * value void * + + d xmlRegFreeExecCtxt... + d pr extproc('xmlRegFreeExecCtxt') + d exec value like(xmlRegExecCtxtPtr) + + d xmlRegExecPushString... + d pr extproc('xmlRegExecPushString') + d like(xmlCint) + d exec value like(xmlRegExecCtxtPtr) + d value * value options(*string) const xmlChar * + d data * value void * + + d xmlRegExecPushString2... + d pr extproc('xmlRegExecPushString2') + d like(xmlCint) + d exec value like(xmlRegExecCtxtPtr) + d value * value options(*string) const xmlChar * + d value2 * value options(*string) const xmlChar * + d data * value void * + + d xmlRegExecNextValues... + d pr extproc('xmlRegExecNextValues') + d like(xmlCint) + d exec value like(xmlRegExecCtxtPtr) + d nbval like(xmlCint) + d nbneg like(xmlCint) + d values * xmlChar * (*) + d terminal like(xmlCint) + + d xmlRegExecErrInfo... + d pr extproc('xmlRegExecErrInfo') + d like(xmlCint) + d exec value like(xmlRegExecCtxtPtr) + d string * const xmlChar * (*) + d nbval like(xmlCint) + d nbneg like(xmlCint) + d values * xmlChar * (*) + d terminal like(xmlCint) + + /if defined(LIBXML_EXPR_ENABLED) + + * Formal regular expression handling + * Its goal is to do some formal work on content models + + * expressions are used within a context + + d xmlExpCtxtPtr s * based(######typedef######) + + d xmlExpFreeCtxt pr extproc('xmlExpFreeCtxt') + d ctxt value like(xmlExpCtxtPtr) + + d xmlExpNewCtxt pr extproc('xmlExpNewCtxt') + d like(xmlExpCtxtPtr) + d maxNodes value like(xmlCint) + d dict value like(xmlDictPtr) + + d xmlExpCtxtNbNodes... + d pr extproc('xmlExpCtxtNbNodes') + d like(xmlCint) + d ctxt value like(xmlExpCtxtPtr) + + d xmlExpCtxtNbCons... + d pr extproc('xmlExpCtxtNbCons') + d like(xmlCint) + d ctxt value like(xmlExpCtxtPtr) + + * Expressions are trees but the tree is opaque + + d xmlExpNodePtr s * based(######typedef######) + + d xmlExpNodeType s based(######typedef######) + d like(xmlCenum) + d XML_EXP_EMPTY c 0 + d XML_EXP_FORBID... + d c 1 + d XML_EXP_ATOM c 2 + d XML_EXP_SEQ c 3 + d XML_EXP_OR c 4 + d XML_EXP_COUNT c 5 + + * 2 core expressions shared by all for the empty language set + * and for the set with just the empty token + + d forbiddenExp s import('forbiddenExp') + d like(xmlExpNodePtr) + + d emptyExp s import('emptyExp') + d like(xmlExpNodePtr) + + + * Expressions are reference counted internally + + d xmlExpFree pr extproc('xmlExpFree') + d expr value like(xmlExpNodePtr) + + d xmlExpRef pr extproc('xmlExpRef') + d expr value like(xmlExpNodePtr) + + * constructors can be either manual or from a string + + d xmlExpParse pr extproc('xmlExpParse') + d like(xmlExpNodePtr) + d ctxt value like(xmlExpCtxtPtr) + d expr * value options(*string) const char * + + d xmlExpNewAtom pr extproc('xmlExpNewAtom') + d like(xmlExpNodePtr) + d ctxt value like(xmlExpCtxtPtr) + d name * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlExpNewOr pr extproc('xmlExpNewOr') + d like(xmlExpNodePtr) + d ctxt value like(xmlExpCtxtPtr) + d left value like(xmlExpNodePtr) + d right value like(xmlExpNodePtr) + + d xmlExpNewSeq pr extproc('xmlExpNewSeq') + d like(xmlExpNodePtr) + d ctxt value like(xmlExpCtxtPtr) + d left value like(xmlExpNodePtr) + d right value like(xmlExpNodePtr) + + d xmlExpNewRange pr extproc('xmlExpNewRange') + d like(xmlExpNodePtr) + d ctxt value like(xmlExpCtxtPtr) + d subset value like(xmlExpNodePtr) + d min value like(xmlCint) + d max value like(xmlCint) + + * The really interesting APIs + + d xmlExpIsNillable... + d pr extproc('xmlExpIsNillable') + d like(xmlCint) + d expr value like(xmlExpNodePtr) + + d xmlExpMaxToken pr extproc('xmlExpMaxToken') + d like(xmlCint) + d expr value like(xmlExpNodePtr) + + d xmlExpGetLanguage... + d pr extproc('xmlExpGetLanguage') + d like(xmlCint) + d ctxt value like(xmlExpCtxtPtr) + d expr value like(xmlExpNodePtr) + d langList * const xmlChar *(*) + d len value like(xmlCint) + + d xmlExpGetStart pr extproc('xmlExpGetStart') + d like(xmlCint) + d ctxt value like(xmlExpCtxtPtr) + d expr value like(xmlExpNodePtr) + d tokList * const xmlChar *(*) + d len value like(xmlCint) + + d xmlExpStringDerive... + d pr extproc('xmlExpStringDerive') + d like(xmlExpNodePtr) + d ctxt value like(xmlExpCtxtPtr) + d expr value like(xmlExpNodePtr) + d str * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlExpExpDerive... + d pr extproc('xmlExpExpDerive') + d like(xmlExpNodePtr) + d ctxt value like(xmlExpCtxtPtr) + d expr value like(xmlExpNodePtr) + d sub value like(xmlExpNodePtr) + + d xmlExpSubsume pr extproc('xmlExpSubsume') + d like(xmlCint) + d ctxt value like(xmlExpCtxtPtr) + d expr value like(xmlExpNodePtr) + d sub value like(xmlExpNodePtr) + + d xmlExpDump pr extproc('xmlExpDump') + d buf value like(xmlBufferPtr) + d expr value like(xmlExpNodePtr) + /endif LIBXML_EXPR_ENABLED + /endif LIBXML_REGEXP_ENABLD + /endif XML_REGEXP_H__ diff --git a/libxml2/os400/libxmlrpg/xmlsave.rpgle b/libxml2/os400/libxmlrpg/xmlsave.rpgle new file mode 100644 index 0000000..ad0d15d --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlsave.rpgle @@ -0,0 +1,105 @@ + * Summary: the XML document serializer + * Description: API to save document or subtree of document + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_XMLSAVE_H__) + /define XML_XMLSAVE_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_OUTPUT_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + /include "libxmlrpg/encoding" + /include "libxmlrpg/xmlIO" + + * xmlSaveOption: + * + * This is the set of XML save options that can be passed down + * to the xmlSaveToFd() and similar calls. + + d xmlSaveOption s based(######typedef######) + d like(xmlCenum) + d XML_SAVE_FORMAT... Format save output + d c X'0001' + d XML_SAVE_NO_DECL... Drop xml declaration + d c X'0002' + d XML_SAVE_NO_EMPTY... No empty tags + d c X'0004' + d XML_SAVE_NO_XHTML... No XHTML1 specific + d c X'0008' + d XML_SAVE_XHTML... Frce XHTML1 specific + d c X'0010' + d XML_SAVE_AS_XML... Frce XML on HTML doc + d c X'0020' + d XML_SAVE_AS_HTML... Frce HTML on XML doc + d c X'0040' + d XML_SAVE_WSNONSIG... Fmt w/ non-sig space + d c X'0080' + + d xmlSaveCtxtPtr s * based(######typedef######) + + d xmlSaveToFd pr extproc('xmlSaveToFd') + d like(xmlSaveCtxtPtr) + d fd value like(xmlCint) + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlSaveToFilename... + d pr extproc('xmlSaveToFilename') + d like(xmlSaveCtxtPtr) + d filename * value options(*string) const char * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlSaveToBuffer... + d pr extproc('xmlSaveToBuffer') + d like(xmlSaveCtxtPtr) + d buffer value like(xmlBufferPtr) + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlSaveToIO pr extproc('xmlSaveToIO') + d like(xmlSaveCtxtPtr) + d iowrite value like(xmlOutputWriteCallback) + d ioclose value like(xmlOutputCloseCallback) + d ioctx * value void * + d encoding * value options(*string) const char * + d options value like(xmlCint) + + d xmlSaveDoc pr extproc('xmlSaveDoc') + d like(xmlClong) + d ctxt value like(xmlSaveCtxtPtr) + d doc value like(xmlDocPtr) + + d xmlSaveTree pr extproc('xmlSaveTree') + d like(xmlClong) + d ctxt value like(xmlSaveCtxtPtr) + d node value like(xmlNodePtr) + + d xmlSaveFlush pr extproc('xmlSaveFlush') + d like(xmlCint) + d ctxt value like(xmlSaveCtxtPtr) + + d xmlSaveClose pr extproc('xmlSaveClose') + d like(xmlCint) + d ctxt value like(xmlSaveCtxtPtr) + + d xmlSaveSetEscape... + d pr extproc('xmlSaveSetEscape') + d like(xmlCint) + d ctxt value like(xmlSaveCtxtPtr) + d escape value like(xmlCharEncodingOutputFunc) + + d xmlSaveSetAttrEscape... + d pr extproc('xmlSaveSetAttrEscape') + d like(xmlCint) + d ctxt value like(xmlSaveCtxtPtr) + d escape value like(xmlCharEncodingOutputFunc) + + /endif LIBXML_OUTPUT_ENABLD + /endif XML_XMLSAVE_H__ diff --git a/libxml2/os400/libxmlrpg/xmlschemas.rpgle b/libxml2/os400/libxmlrpg/xmlschemas.rpgle new file mode 100644 index 0000000..f34ddcd --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlschemas.rpgle @@ -0,0 +1,331 @@ + * Summary: incomplete XML Schemas structure implementation + * Description: interface to the XML Schemas handling and schema validity + * checking, it is incomplete right now. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_SCHEMA_H__) + /define XML_SCHEMA_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_SCHEMAS_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + + * This error codes are obsolete; not used any more. + + d xmlSchemaValidError... + d s based(######typedef######) + d like(xmlCenum) + d XML_SCHEMAS_ERR_OK... + d c 0 + d XML_SCHEMAS_ERR_NOROOT... + d c 1 + d XML_SCHEMAS_ERR_UNDECLAREDELEM... + d c 2 + d XML_SCHEMAS_ERR_NOTTOPLEVEL... + d c 3 + d XML_SCHEMAS_ERR_MISSING... + d c 4 + d XML_SCHEMAS_ERR_WRONGELEM... + d c 5 + d XML_SCHEMAS_ERR_NOTYPE... + d c 6 + d XML_SCHEMAS_ERR_NOROLLBACK... + d c 7 + d XML_SCHEMAS_ERR_ISABSTRACT... + d c 8 + d XML_SCHEMAS_ERR_NOTEMPTY... + d c 9 + d XML_SCHEMAS_ERR_ELEMCONT... + d c 10 + d XML_SCHEMAS_ERR_HAVEDEFAULT... + d c 11 + d XML_SCHEMAS_ERR_NOTNILLABLE... + d c 12 + d XML_SCHEMAS_ERR_EXTRACONTENT... + d c 13 + d XML_SCHEMAS_ERR_INVALIDATTR... + d c 14 + d XML_SCHEMAS_ERR_INVALIDELEM... + d c 15 + d XML_SCHEMAS_ERR_NOTDETERMINIST... + d c 16 + d XML_SCHEMAS_ERR_CONSTRUCT... + d c 17 + d XML_SCHEMAS_ERR_INTERNAL... + d c 18 + d XML_SCHEMAS_ERR_NOTSIMPLE... + d c 19 + d XML_SCHEMAS_ERR_ATTRUNKNOWN... + d c 20 + d XML_SCHEMAS_ERR_ATTRINVALID... + d c 21 + d XML_SCHEMAS_ERR_VALUE... + d c 22 + d XML_SCHEMAS_ERR_FACET... + d c 23 + d XML_SCHEMAS_ERR_... + d c 24 + d XML_SCHEMAS_ERR_XXX... + d c 25 + + * ATTENTION: Change xmlSchemaSetValidOptions's check + * for invalid values, if adding to the validation + * options below. + + * xmlSchemaValidOption: + * + * This is the set of XML Schema validation options. + + d xmlSchemaValidOption... + d s based(######typedef######) + d like(xmlCenum) + * + * Default/fixed: create an attribute node + * or an element's text node on the instance. + * + d XML_SCHEMA_VAL_VC_I_CREATE... + d c X'0001' + /if defined(DISABLED) + * + * assemble schemata using + * xsi:schemaLocation and + * xsi:noNamespaceSchemaLocation + * + d XML_SCHEMA_VAL_XSI_ASSEMBLE... + d c X'0002' + /endif + + * The schemas related types are kept internal + + d xmlSchemaPtr s * based(######typedef######) + + * xmlSchemaValidityErrorFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of an error callback from an XSD validation + + d xmlSchemaValidityErrorFunc... + d s * based(######typedef######) + d procptr + + * xmlSchemaValidityWarningFunc: + * @ctx: the validation context + * @msg: the message + * @...: extra arguments + * + * Signature of a warning callback from an XSD validation + + d xmlSchemaValidityWarningFunc... + d s * based(######typedef######) + d procptr + + * A schemas validation context + + d xmlSchemaParserCtxtPtr... + d s * based(######typedef######) + + d xmlSchemaValidCtxtPtr... + d s * based(######typedef######) + + * xmlSchemaValidityLocatorFunc: + * @ctx: user provided context + * @file: returned file information + * @line: returned line information + * + * A schemas validation locator, a callback called by the validator. + * This is used when file or node informations are not available + * to find out what file and line number are affected + * + * Returns: 0 in case of success and -1 in case of error + + d xmlSchemaValidityLocatorFunc... + d s * based(######typedef######) + d procptr + + * Interfaces for parsing. + + d xmlSchemaNewParserCtxt... + d pr extproc('xmlSchemaNewParserCtxt') + d like(xmlSchemaParserCtxtPtr) + d URL * value options(*string) const char * + + d xmlSchemaNewMemParserCtxt... + d pr extproc('xmlSchemaNewMemParserCtxt') + d like(xmlSchemaParserCtxtPtr) + d buffer * value options(*string) const char * + d size value like(xmlCint) + + d xmlSchemaNewDocParserCtxt... + d pr extproc('xmlSchemaNewDocParserCtxt') + d like(xmlSchemaParserCtxtPtr) + d doc value like(xmlDocPtr) + + d xmlSchemaFreeParserCtxt... + d pr extproc('xmlSchemaFreeParserCtxt') + d ctxt value like(xmlSchemaParserCtxtPtr) + + d xmlSchemaSetParserErrors... + d pr extproc('xmlSchemaSetParserErrors') + d ctxt value like(xmlSchemaParserCtxtPtr) + d err value + d like(xmlSchemaValidityErrorFunc) + d warn value + d like(xmlSchemaValidityWarningFunc) + d ctx * value void * + + d xmlSchemaSetParserStructuredErrors... + d pr extproc( + d 'xmlSchemaSetParserStructuredErrors') + d ctxt value like(xmlSchemaParserCtxtPtr) + d serror value like(xmlStructuredErrorFunc) + d ctx * value void * + + d xmlSchemaGetParserErrors... + d pr extproc('xmlSchemaGetParserErrors') + d like(xmlCint) + d ctxt value like(xmlSchemaParserCtxtPtr) + d err like(xmlSchemaValidityErrorFunc) + d warn like(xmlSchemaValidityWarningFunc) + d ctx * void *(*) + + d xmlSchemaIsValid... + d pr extproc('xmlSchemaIsValid') + d like(xmlCint) + d ctxt value like(xmlSchemaValidCtxtPtr) + + d xmlSchemaParse pr extproc('xmlSchemaParse') + d like(xmlSchemaPtr) + d ctxt value like(xmlSchemaParserCtxtPtr) + + d xmlSchemaFree pr extproc('xmlSchemaFree') + d schema value like(xmlSchemaPtr) + + /if defined(LIBXML_OUTPUT_ENABLED) + d xmlSchemaDump pr extproc('xmlSchemaDump') + d output * value FILE * + d schema value like(xmlSchemaPtr) + /endif LIBXML_OUTPUT_ENABLD + + * Interfaces for validating + + d xmlSchemaSetValidErrors... + d pr extproc('xmlSchemaSetValidErrors') + d ctxt value like(xmlSchemaValidCtxtPtr) + d err value + d like(xmlSchemaValidityErrorFunc) + d warn value + d like(xmlSchemaValidityWarningFunc) + d ctx * value void * + + d xmlSchemaSetValidStructuredErrors... + d pr extproc( + d 'xmlSchemaSetValidStructuredErrors') + d ctxt value like(xmlSchemaValidCtxtPtr) + d serror value like(xmlStructuredErrorFunc) + d ctx * value void * + + d xmlSchemaGetValidErrors... + d pr extproc('xmlSchemaGetValidErrors') + d like(xmlCint) + d ctxt value like(xmlSchemaValidCtxtPtr) + d err like(xmlSchemaValidityErrorFunc) + d warn like(xmlSchemaValidityWarningFunc) + d ctx * void *(*) + + d xmlSchemaSetValidOptions... + d pr extproc('xmlSchemaSetValidOptions') + d like(xmlCint) + d ctxt value like(xmlSchemaValidCtxtPtr) + d options value like(xmlCint) + + d xmlSchemaValidateSetFilename... + d pr extproc( + d 'xmlSchemaValidateSetFilename') + d vctxt value like(xmlSchemaValidCtxtPtr) + d filename * value options(*string) const char * + + d xmlSchemaValidCtxtGetOptions... + d pr extproc( + d 'xmlSchemaValidCtxtGetOptions') + d like(xmlCint) + d ctxt value like(xmlSchemaValidCtxtPtr) + + d xmlSchemaNewValidCtxt... + d pr extproc('xmlSchemaNewValidCtxt') + d like(xmlSchemaValidCtxtPtr) + d schema value like(xmlSchemaPtr) + + d xmlSchemaFreeValidCtxt... + d pr extproc('xmlSchemaFreeValidCtxt') + d ctxt value like(xmlSchemaValidCtxtPtr) + + d xmlSchemaValidateDoc... + d pr extproc('xmlSchemaValidateDoc') + d like(xmlCint) + d ctxt value like(xmlSchemaValidCtxtPtr) + d instance value like(xmlDocPtr) + + d xmlSchemaValidateOneElement... + d pr extproc( + d 'xmlSchemaValidateOneElement') + d like(xmlCint) + d ctxt value like(xmlSchemaValidCtxtPtr) + d elem value like(xmlNodePtr) + + d xmlSchemaValidateStream... + d pr extproc('xmlSchemaValidateStream') + d like(xmlCint) + d ctxt value like(xmlSchemaValidCtxtPtr) + d input value like(xmlParserInputBufferPtr) + d enc value like(xmlCharEncoding) + d sax value like(xmlSAXHandlerPtr) + d user_data * value void * + + d xmlSchemaValidateFile... + d pr extproc('xmlSchemaValidateFile') + d like(xmlCint) + d ctxt value like(xmlSchemaValidCtxtPtr) + d filename * value options(*string) const char * + d options value like(xmlCint) + + d xmlSchemaValidCtxtGetParserCtxt... + d pr extproc( + d 'xmlSchemaValidCtxtGetParserCtxt') + d like(xmlParserCtxtPtr) + d ctxt value like(xmlSchemaValidCtxtPtr) + + * Interface to insert Schemas SAX validation in a SAX stream + + d xmlSchemaSAXPlugPtr... + d s * based(######typedef######) + + d xmlSchemaSAXPlug... + d pr extproc('xmlSchemaSAXPlug') + d like(xmlSchemaSAXPlugPtr) + d ctxt value like(xmlSchemaValidCtxtPtr) + d sax like(xmlSAXHandlerPtr) + d user_data * void *(*) + + d xmlSchemaSAXUnplug... + d pr extproc('xmlSchemaSAXUnplug') + d like(xmlCint) + d plug value like(xmlSchemaSAXPlugPtr) + + d xmlSchemaValidateSetLocator... + d pr extproc( + d 'xmlSchemaValidateSetLocator') + d vctxt value like(xmlSchemaValidCtxtPtr) + d f value + d like(xmlSchemaValidityLocatorFunc) + d ctxt * value void * + + /endif LIBXML_SCHEMAS_ENBLD + /endif XML_SCHEMA_H__ diff --git a/libxml2/os400/libxmlrpg/xmlschemastypes.rpgle b/libxml2/os400/libxmlrpg/xmlschemastypes.rpgle new file mode 100644 index 0000000..ecd6aba --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlschemastypes.rpgle @@ -0,0 +1,254 @@ + * Summary: implementation of XML Schema Datatypes + * Description: module providing the XML Schema Datatypes implementation + * both definition and validity checking + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_SCHEMA_TYPES_H__) + /define XML_SCHEMA_TYPES_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_SCHEMAS_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/schemasInternals" + /include "libxmlrpg/xmlschemas" + + d xmlSchemaWhitespaceValueType... + d s based(######typedef######) + d like(xmlCenum) + d XML_SCHEMA_WHITESPACE_UNKNOWN... + d c 0 + d XML_SCHEMA_WHITESPACE_PRESERVE... + d c 1 + d XML_SCHEMA_WHITESPACE_REPLACE... + d c 2 + d XML_SCHEMA_WHITESPACE_COLLAPSE... + d c 3 + + d xmlSchemaInitTypes... + d pr extproc('xmlSchemaInitTypes') + + d xmlSchemaCleanupTypes... + d pr extproc('xmlSchemaCleanupTypes') + + d xmlSchemaGetPredefinedType... + d pr extproc('xmlSchemaGetPredefinedType') + d like(xmlSchemaTypePtr) + d name * value options(*string) const xmlChar * + d ns * value options(*string) const xmlChar * + + d xmlSchemaValidatePredefinedType... + d pr extproc( + d 'xmlSchemaValidatePredefinedType') + d like(xmlCint) + d type value like(xmlSchemaTypePtr) + d value * value options(*string) const xmlChar * + d val * value xmlSchemaValPtr * + + d xmlSchemaValPredefTypeNode... + d pr extproc('xmlSchemaValPredefTypeNode') + d like(xmlCint) + d type value like(xmlSchemaTypePtr) + d value * value options(*string) const xmlChar * + d val * value xmlSchemaValPtr * + d node value like(xmlNodePtr) + + d xmlSchemaValidateFacet... + d pr extproc('xmlSchemaValidateFacet') + d like(xmlCint) + d base value like(xmlSchemaTypePtr) + d facet value like(xmlSchemaFacetPtr) + d value * value options(*string) const xmlChar * + d val value like(xmlSchemaValPtr) + + d xmlSchemaValidateFacetWhtsp... + d pr extproc( + d 'xmlSchemaValidateFacetWhtsp') + d like(xmlCint) + d facet value like(xmlSchemaFacetPtr) + d fws value + d like(xmlSchemaWhitespaceValueType) + d valType value like(xmlSchemaValType) + d value * value options(*string) const xmlChar * + d val value like(xmlSchemaValPtr) + d ws value + d like(xmlSchemaWhitespaceValueType) + + d xmlSchemaFreeValue... + d pr extproc('xmlSchemaFreeValue') + d val value like(xmlSchemaValPtr) + + d xmlSchemaNewFacet... + d pr extproc('xmlSchemaNewFacet') + d like(xmlSchemaFacetPtr) + + d xmlSchemaCheckFacet... + d pr extproc('xmlSchemaCheckFacet') + d like(xmlCint) + d facet value like(xmlSchemaFacetPtr) + d typeDecl value like(xmlSchemaTypePtr) + d ctxt value like(xmlSchemaParserCtxtPtr) + d name * value options(*string) const xmlChar * + + d xmlSchemaFreeFacet... + d pr extproc('xmlSchemaFreeFacet') + d facet value like(xmlSchemaFacetPtr) + + d xmlSchemaCompareValues... + d pr extproc('xmlSchemaCompareValues') + d like(xmlCint) + d x value like(xmlSchemaValPtr) + d y value like(xmlSchemaValPtr) + + d xmlSchemaGetBuiltInListSimpleTypeItemType... + d pr extproc('xmlSchemaGetBuiltInListSimp- + d leTypeItemType') + d like(xmlSchemaTypePtr) + d type value like(xmlSchemaTypePtr) + + d xmlSchemaValidateListSimpleTypeFacet... + d pr extproc('xmlSchemaValidateListSimple- + d TypeFacet') + d like(xmlCint) + d facet value like(xmlSchemaFacetPtr) + d value * value options(*string) const xmlChar * + d actualLen value like(xmlCulong) + d expectedLen * value unsigned long * + + d xmlSchemaGetBuiltInType... + d pr extproc('xmlSchemaGetBuiltInType') + d like(xmlSchemaTypePtr) + d type value like(xmlSchemaValType) + + d xmlSchemaIsBuiltInTypeFacet... + d pr extproc( + d 'xmlSchemaIsBuiltInTypeFacet') + d like(xmlCint) + d type value like(xmlSchemaTypePtr) + d facetType value like(xmlCint) + + d xmlSchemaCollapseString... + d pr * extproc('xmlSchemaCollapseString') xmlChar * + d value * value options(*string) const xmlChar * + + d xmlSchemaWhiteSpaceReplace... + d pr * extproc('xmlSchemaWhiteSpaceReplace')xmlChar * + d value * value options(*string) const xmlChar * + + d xmlSchemaGetFacetValueAsULong... + d pr extproc( + d 'xmlSchemaGetFacetValueAsULong') + d like(xmlCulong) + d facet value like(xmlSchemaFacetPtr) + + d xmlSchemaValidateLengthFacet... + d pr extproc( + d 'xmlSchemaValidateLengthFacet') + d like(xmlCint) + d type value like(xmlSchemaTypePtr) + d facet value like(xmlSchemaFacetPtr) + d value * value options(*string) const xmlChar * + d val value like(xmlSchemaValPtr) + d length like(xmlCulong) + + d xmlSchemaValidateLengthFacetWhtsp... + d pr extproc( + d 'xmlSchemaValidateLengthFacetWhtsp') + d like(xmlCint) + d facet value like(xmlSchemaFacetPtr) + d valType value like(xmlSchemaValType) + d value * value options(*string) const xmlChar * + d val value like(xmlSchemaValPtr) + d length like(xmlCulong) + d ws value + d like(xmlSchemaWhitespaceValueType) + + d xmlSchemaValPredefTypeNodeNoNorm... + d pr extproc( + d 'xmlSchemaValPredefTypeNodeNoNorm') + d like(xmlCint) + d type value like(xmlSchemaTypePtr) + d value * value options(*string) const xmlChar * + d val like(xmlSchemaValPtr) + d node value like(xmlNodePtr) + + d xmlSchemaGetCanonValue... + d pr extproc('xmlSchemaGetCanonValue') + d like(xmlCint) + d val value like(xmlSchemaValPtr) + d retValue * value const xmlChar * * + + d xmlSchemaGetCanonValueWhtsp... + d pr extproc( + d 'xmlSchemaGetCanonValueWhtsp') + d like(xmlCint) + d val value like(xmlSchemaValPtr) + d retValue * value const xmlChar * * + d ws value + d like(xmlSchemaWhitespaceValueType) + + d xmlSchemaValueAppend... + d pr extproc('xmlSchemaValueAppend') + d like(xmlCint) + d prev value like(xmlSchemaValPtr) + d cur value like(xmlSchemaValPtr) + + d xmlSchemaValueGetNext... + d pr extproc('xmlSchemaValueGetNext') + d like(xmlSchemaValPtr) + d cur value like(xmlSchemaValPtr) + + d xmlSchemaValueGetAsString... + d pr * extproc('xmlSchemaValueGetAsString') const xmlChar * + d val value like(xmlSchemaValPtr) + + d xmlSchemaValueGetAsBoolean... + d pr extproc('xmlSchemaValueGetAsBoolean') + d like(xmlCint) + d val value like(xmlSchemaValPtr) + + d xmlSchemaNewStringValue... + d pr extproc('xmlSchemaNewStringValue') + d like(xmlSchemaValPtr) + d type value like(xmlSchemaValType) + d value * value options(*string) const xmlChar * + + d xmlSchemaNewNOTATIONValue... + d pr extproc('xmlSchemaNewNOTATIONValue') + d like(xmlSchemaValPtr) + d name * value options(*string) const xmlChar * + d ns * value options(*string) const xmlChar * + + d xmlSchemaNewQNameValue... + d pr extproc('xmlSchemaNewQNameValue') + d like(xmlSchemaValPtr) + d namespaceName * value options(*string) const xmlChar * + d localName * value options(*string) const xmlChar * + + d xmlSchemaCompareValuesWhtsp... + d pr extproc( + d 'xmlSchemaCompareValuesWhtsp') + d like(xmlCint) + d x value like(xmlSchemaValPtr) + d xws value + d like(xmlSchemaWhitespaceValueType) + d y value like(xmlSchemaValPtr) + d yws value + d like(xmlSchemaWhitespaceValueType) + + d xmlSchemaCopyValue... + d pr extproc('xmlSchemaCopyValue') + d like(xmlSchemaValPtr) + d val value like(xmlSchemaValPtr) + + d xmlSchemaGetValType... + d pr extproc('xmlSchemaGetValType') + d like(xmlSchemaValType) + d val value like(xmlSchemaValPtr) + + /endif LIBXML_SCHEMAS_ENBLD + /endif XML_SCHEMA_TYPES_H__ diff --git a/libxml2/os400/libxmlrpg/xmlstdarg.rpgle b/libxml2/os400/libxmlrpg/xmlstdarg.rpgle new file mode 100644 index 0000000..3c8e200 --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlstdarg.rpgle @@ -0,0 +1,35 @@ + * Summary: va_list support for ILE/RPG. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_STDARG_H__) + /define XML_STDARG_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + + * The va_list object. + + d xmlVaList ds based(######typedef######) + d align qualified + d current * + d next * + + * Procedures. + + d xmlVaStart pr extproc('__xmlVaStart') + d list likeds(xmlVaList) + d lastargaddr * value + d lastargsize value like(xmlCsize_t) + + d xmlVaArg pr * extproc('__xmlVaArg') + d list likeds(xmlVaList) + d dest * value + d argsize value like(xmlCsize_t) + + d xmlVaEnd pr extproc('__xmlVaEnd') + d list likeds(xmlVaList) + + /endif XML_STDARG_H__ diff --git a/libxml2/os400/libxmlrpg/xmlstring.rpgle b/libxml2/os400/libxmlrpg/xmlstring.rpgle new file mode 100644 index 0000000..8980fc0 --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlstring.rpgle @@ -0,0 +1,180 @@ + * Summary: set of routines to process strings + * Description: type and interfaces needed for the internal string + * handling of the library, especially UTF8 processing. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_STRING_H__) + /define XML_STRING_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/xmlstdarg" + + * xmlChar: + * + * This is a basic byte in an UTF-8 encoded string. + * It's unsigned allowing to pinpoint case where char * are assigned + * to xmlChar * (possibly making serialization back impossible). + + d xmlChar s based(######typedef######) + d like(xmlCuchar) + + * xmlChar handling + + d xmlStrdup pr * extproc('xmlStrdup') xmlChar * + d cur * value options(*string) const xmlChar * + + d xmlStrndup pr * extproc('xmlStrndup') xmlChar * + d cur * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlCharStrndup pr * extproc('xmlCharStrndup') xmlChar * + d cur * value options(*string) const char * + d len value like(xmlCint) + + d xmlCharStrdup pr * extproc('xmlCharStrdup') xmlChar * + d cur * value options(*string) const char * + + d xmlStrsub pr * extproc('xmlStrsub') const xmlChar * + d str * value options(*string) const xmlChar * + d start value like(xmlCint) + d len value like(xmlCint) + + d xmlStrchr pr * extproc('xmlStrchr') const xmlChar * + d str * value options(*string) const xmlChar * + d val value like(xmlChar) + + d xmlStrstr pr * extproc('xmlStrstr') const xmlChar * + d str * value options(*string) const xmlChar * + d val * value options(*string) const xmlChar * + + d xmlStrcasestr pr * extproc('xmlStrcasestr') const xmlChar * + d str * value options(*string) const xmlChar * + d val * value options(*string) const xmlChar * + + d xmlStrcmp pr extproc('xmlStrcmp') + d like(xmlCint) + d str1 * value options(*string) const xmlChar * + d str2 * value options(*string) const xmlChar * + + d xmlStrncmp pr extproc('xmlStrncmp') + d like(xmlCint) + d str1 * value options(*string) const xmlChar * + d str2 * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlStrcasecmp pr extproc('xmlStrcasecmp') + d like(xmlCint) + d str1 * value options(*string) const xmlChar * + d str2 * value options(*string) const xmlChar * + + d xmlStrncasecmp pr extproc('xmlStrncasecmp') + d like(xmlCint) + d str1 * value options(*string) const xmlChar * + d str2 * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlStrEqual pr extproc('xmlStrEqual') + d like(xmlCint) + d str1 * value options(*string) const xmlChar * + d str2 * value options(*string) const xmlChar * + + d xmlStrQEqual pr extproc('xmlStrQEqual') + d like(xmlCint) + d pref * value options(*string) const xmlChar * + d name * value options(*string) const xmlChar * + d stre * value options(*string) const xmlChar * + + d xmlStrlen pr extproc('xmlStrlen') + d like(xmlCint) + d str * value options(*string) const xmlChar * + + d xmlStrcat pr * extproc('xmlStrcat') xmlChar * + d cur * value options(*string) xmlChar * + d add * value options(*string) const xmlChar * + + d xmlStrncat pr * extproc('xmlStrncat') xmlChar * + d cur * value options(*string) xmlChar * + d add * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlStrncatNew pr * extproc('xmlStrncatNew') xmlChar * + d str1 * value options(*string) const xmlChar * + d str2 * value options(*string) const xmlChar * + d len value like(xmlCint) + + * xmlStrPrintf() is a vararg function. + * The following prototype supports up to 8 pointer arguments. + * Other argument signature can be achieved by defining alternate + * prototypes redirected to the same function. + + d xmlStrPrintf pr extproc('xmlStrPrintf') + d like(xmlCint) + d buf * value options(*string) xmlChar * + d len value like(xmlCint) + d msg * value options(*string) const xmlChar * + d arg1 * value options(*string: *nopass) + d arg2 * value options(*string: *nopass) + d arg3 * value options(*string: *nopass) + d arg4 * value options(*string: *nopass) + d arg5 * value options(*string: *nopass) + d arg6 * value options(*string: *nopass) + d arg7 * value options(*string: *nopass) + d arg8 * value options(*string: *nopass) + + d xmlStrVPrintf pr extproc('xmlStrVPrintf') + d like(xmlCint) + d buf * value options(*string) xmlChar * + d len value like(xmlCint) + d msg * value options(*string) const xmlChar * + d ap likeds(xmlVaList) + + d xmlGetUTF8Char pr extproc('xmlGetUTF8Char') + d like(xmlCint) + d utf * value options(*string) const uns. char * + d len like(xmlCint) + + d xmlCheckUTF8 pr extproc('xmlCheckUTF8') + d like(xmlCint) + d utf * value options(*string) const uns. char * + + d xmlUTF8Strsize pr extproc('xmlUTF8Strsize') + d like(xmlCint) + d utf * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlUTF8Strndup pr * extproc('xmlUTF8Strndup') xmlChar * + d utf * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlUTF8Strpos pr * extproc('xmlUTF8Strpos') const xmlChar * + d utf * value options(*string) const xmlChar * + d pos value like(xmlCint) + + d xmlUTF8Strloc pr extproc('xmlUTF8Strloc') + d like(xmlCint) + d utf * value options(*string) const xmlChar * + d utfchar * value options(*string) const xmlChar * + + d xmlUTF8Strsub pr * extproc('xmlUTF8Strsub') xmlChar * + d utf * value options(*string) const xmlChar * + d start value like(xmlCint) + d len value like(xmlCint) + + d xmlUTF8Strlen pr extproc('xmlUTF8Strlen') + d like(xmlCint) + d utf * value options(*string) const xmlChar * + + d xmlUTF8Size pr extproc('xmlUTF8Size') + d like(xmlCint) + d utf * value options(*string) const xmlChar * + + d xmlUTF8Charcmp pr extproc('xmlUTF8Charcmp') + d like(xmlCint) + d utf1 * value options(*string) const xmlChar * + d utf2 * value options(*string) const xmlChar * + + /endif XML_STRING_H__ diff --git a/libxml2/os400/libxmlrpg/xmlunicode.rpgle b/libxml2/os400/libxmlrpg/xmlunicode.rpgle new file mode 100644 index 0000000..c4c4ba1 --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlunicode.rpgle @@ -0,0 +1,836 @@ + * Summary: Unicode character APIs + * Description: API for the Unicode character APIs + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_UNICODE_H__) + /define XML_UNICODE_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_UNICODE_ENABLED) + + /include "libxmlrpg/xmlTypesC" + + d xmlUCSIsAegeanNumbers... + d pr extproc('xmlUCSIsAegeanNumbers') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsAlphabeticPresentationForms... + d pr extproc( + d 'xmlUCSIsAlphabeticPresentationForms' + d ) + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsArabic pr extproc('xmlUCSIsArabic') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsArabicPresentationFormsA... + d pr extproc( + d 'xmlUCSIsArabicPresentationFormsA') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsArabicPresentationFormsB... + d pr extproc( + d 'xmlUCSIsArabicPresentationFormsB') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsArmenian... + d pr extproc('xmlUCSIsArmenian') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsArrows pr extproc('xmlUCSIsArrows') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsBasicLatin... + d pr extproc('xmlUCSIsBasicLatin') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsBengali... + d pr extproc('xmlUCSIsBengali') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsBlockElements... + d pr extproc('xmlUCSIsBlockElements') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsBopomofo... + d pr extproc('xmlUCSIsBopomofo') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsBopomofoExtended... + d pr extproc('xmlUCSIsBopomofoExtended') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsBoxDrawing... + d pr extproc('xmlUCSIsBoxDrawing') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsBraillePatterns... + d pr extproc('xmlUCSIsBraillePatterns') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsBuhid pr extproc('xmlUCSIsBuhid') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsByzantineMusicalSymbols... + d pr extproc( + d 'xmlUCSIsByzantineMusicalSymbols') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCJKCompatibility... + d pr extproc('xmlUCSIsCJKCompatibility') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCJKCompatibilityForms... + d pr extproc( + d 'xmlUCSIsCJKCompatibilityForms') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCJKCompatibilityIdeographs... + d pr extproc( + d 'xmlUCSIsCJKCompatibilityIdeographs') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCJKCompatibilityIdeographsSupplement... + d pr extproc('xmlUCSIsCJKCompatibilityIde- + d ographsSupplement') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCJKRadicalsSupplement... + d pr extproc( + d 'xmlUCSIsCJKRadicalsSupplement') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCJKSymbolsandPunctuation... + d pr extproc( + d 'xmlUCSIsCJKSymbolsandPunctuation') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCJKUnifiedIdeographs... + d pr extproc( + d 'xmlUCSIsCJKUnifiedIdeographs') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCJKUnifiedIdeographsExtensionA... + d pr extproc('xmlUCSIsCJKUnifiedIdeograph- + d sExtensionA') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCJKUnifiedIdeographsExtensionB... + d pr extproc('xmlUCSIsCJKUnifiedIdeograph- + d sExtensionB') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCherokee... + d pr extproc('xmlUCSIsCherokee') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCombiningDiacriticalMarks... + d pr extproc( + d 'xmlUCSIsCombiningDiacriticalMarks') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCombiningDiacriticalMarksforSymbols... + d pr extproc('xmlUCSIsCombiningDiacritica- + d lMarksforSymbols') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCombiningHalfMarks... + d pr extproc('xmlUCSIsCombiningHalfMarks') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCombiningMarksforSymbols... + d pr extproc( + d 'xmlUCSIsCombiningMarksforSymbols') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsControlPictures... + d pr extproc('xmlUCSIsControlPictures') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCurrencySymbols... + d pr extproc('xmlUCSIsCurrencySymbols') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCypriotSyllabary... + d pr extproc('xmlUCSIsCypriotSyllabary') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCyrillic... + d pr extproc('xmlUCSIsCyrillic') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCyrillicSupplement... + d pr extproc('xmlUCSIsCyrillicSupplement') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsDeseret... + d pr extproc('xmlUCSIsDeseret') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsDevanagari... + d pr extproc('xmlUCSIsDevanagari') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsDingbats... + d pr extproc('xmlUCSIsDingbats') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsEnclosedAlphanumerics... + d pr extproc( + d 'xmlUCSIsEnclosedAlphanumerics') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsEnclosedCJKLettersandMonths... + d pr extproc( + d 'xmlUCSIsEnclosedCJKLettersandMonths' + d ) + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsEthiopic... + d pr extproc('xmlUCSIsEthiopic') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsGeneralPunctuation... + d pr extproc('xmlUCSIsGeneralPunctuation') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsGeometricShapes... + d pr extproc('xmlUCSIsGeometricShapes') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsGeorgian... + d pr extproc('xmlUCSIsGeorgian') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsGothic pr extproc('xmlUCSIsGothic') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsGreek pr extproc('xmlUCSIsGreek') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsGreekExtended... + d pr extproc('xmlUCSIsGreekExtended') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsGreekandCoptic... + d pr extproc('xmlUCSIsGreekandCoptic') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsGujarati... + d pr extproc('xmlUCSIsGujarati') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsGurmukhi... + d pr extproc('xmlUCSIsGurmukhi') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsHalfwidthandFullwidthForms... + d pr extproc( + d 'xmlUCSIsHalfwidthandFullwidthForms') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsHangulCompatibilityJamo... + d pr extproc( + d 'xmlUCSIsHangulCompatibilityJamo') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsHangulJamo... + d pr extproc('xmlUCSIsHangulJamo') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsHangulSyllables... + d pr extproc('xmlUCSIsHangulSyllables') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsHanunoo... + d pr extproc('xmlUCSIsHanunoo') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsHebrew pr extproc('xmlUCSIsHebrew') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsHighPrivateUseSurrogates... + d pr extproc( + d 'xmlUCSIsHighPrivateUseSurrogates') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsHighSurrogates... + d pr extproc('xmlUCSIsHighSurrogates') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsHiragana... + d pr extproc('xmlUCSIsHiragana') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsIPAExtensions... + d pr extproc('xmlUCSIsIPAExtensions') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsIdeographicDescriptionCharacters... + d pr extproc('xmlUCSIsIdeographicDescript- + d ionCharacters') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsKanbun pr extproc('xmlUCSIsKanbun') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsKangxiRadicals... + d pr extproc('xmlUCSIsKangxiRadicals') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsKannada... + d pr extproc('xmlUCSIsKannada') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsKatakana... + d pr extproc('xmlUCSIsKatakana') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsKatakanaPhoneticExtensions... + d pr extproc( + d 'xmlUCSIsKatakanaPhoneticExtensions') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsKhmer pr extproc('xmlUCSIsKhmer') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsKhmerSymbols... + d pr extproc('xmlUCSIsKhmerSymbols') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsLao pr extproc('xmlUCSIsLao') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsLatin1Supplement... + d pr extproc('xmlUCSIsLatin1Supplement') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsLatinExtendedA... + d pr extproc('xmlUCSIsLatinExtendedA') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsLatinExtendedB... + d pr extproc('xmlUCSIsLatinExtendedB') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsLatinExtendedAdditional... + d pr extproc( + d 'xmlUCSIsLatinExtendedAdditional') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsLetterlikeSymbols... + d pr extproc('xmlUCSIsLetterlikeSymbols') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsLimbu pr extproc('xmlUCSIsLimbu') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsLinearBIdeograms... + d pr extproc('xmlUCSIsLinearBIdeograms') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsLinearBSyllabary... + d pr extproc('xmlUCSIsLinearBSyllabary') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsLowSurrogates... + d pr extproc('xmlUCSIsLowSurrogates') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsMalayalam... + d pr extproc('xmlUCSIsMalayalam') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsMathematicalAlphanumericSymbols... + d pr extproc('xmlUCSIsMathematicalAlphanu- + d mericSymbols') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsMathematicalOperators... + d pr extproc( + d 'xmlUCSIsMathematicalOperators') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsMiscellaneousMathematicalSymbolsA... + d pr extproc('xmlUCSIsMiscellaneousMathem- + d aticalSymbolsA') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsMiscellaneousMathematicalSymbolsB... + d pr extproc('xmlUCSIsMiscellaneousMathem- + d aticalSymbolsB') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsMiscellaneousSymbols... + d pr extproc( + d 'xmlUCSIsMiscellaneousSymbols') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsMiscellaneousSymbolsandArrows... + d pr extproc('xmlUCSIsMiscellaneousSymbol- + d sandArrows') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsMiscellaneousTechnical... + d pr extproc( + d 'xmlUCSIsMiscellaneousTechnical') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsMongolian... + d pr extproc('xmlUCSIsMongolian') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsMusicalSymbols... + d pr extproc('xmlUCSIsMusicalSymbols') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsMyanmar... + d pr extproc('xmlUCSIsMyanmar') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsNumberForms... + d pr extproc('xmlUCSIsNumberForms') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsOgham pr extproc('xmlUCSIsOgham') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsOldItalic... + d pr extproc('xmlUCSIsOldItalic') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsOpticalCharacterRecognition... + d pr extproc( + d 'xmlUCSIsOpticalCharacterRecognition' + d ) + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsOriya pr extproc('xmlUCSIsOriya') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsOsmanya... + d pr extproc('xmlUCSIsOsmanya') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsPhoneticExtensions... + d pr extproc('xmlUCSIsPhoneticExtensions') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsPrivateUse... + d pr extproc('xmlUCSIsPrivateUse') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsPrivateUseArea... + d pr extproc('xmlUCSIsPrivateUseArea') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsRunic pr extproc('xmlUCSIsRunic') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsShavian... + d pr extproc('xmlUCSIsShavian') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsSinhala... + d pr extproc('xmlUCSIsSinhala') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsSmallFormVariants... + d pr extproc('xmlUCSIsSmallFormVariants') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsSpacingModifierLetters... + d pr extproc( + d 'xmlUCSIsSpacingModifierLetters') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsSpecials... + d pr extproc('xmlUCSIsSpecials') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsSuperscriptsandSubscripts... + d pr extproc( + d 'xmlUCSIsSuperscriptsandSubscripts') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsSupplementalArrowsA... + d pr extproc( + d 'xmlUCSIsSupplementalArrowsA') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsSupplementalArrowsB... + d pr extproc( + d 'xmlUCSIsSupplementalArrowsB') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsSupplementalMathematicalOperators... + d pr extproc('xmlUCSIsSupplementalMathema- + d ticalOperators') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsSupplementaryPrivateUseAreaA... + d pr extproc('xmlUCSIsSupplementaryPrivat- + d eUseAreaA') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsSupplementaryPrivateUseAreaB... + d pr extproc('xmlUCSIsSupplementaryPrivat- + d eUseAreaB') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsSyriac pr extproc('xmlUCSIsSyriac') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsTagalog... + d pr extproc('xmlUCSIsTagalog') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsTagbanwa... + d pr extproc('xmlUCSIsTagbanwa') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsTags pr extproc('xmlUCSIsTags') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsTaiLe pr extproc('xmlUCSIsTaiLe') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsTaiXuanJingSymbols... + d pr extproc('xmlUCSIsTaiXuanJingSymbols') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsTamil pr extproc('xmlUCSIsTamil') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsTelugu pr extproc('xmlUCSIsTelugu') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsThaana pr extproc('xmlUCSIsThaana') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsThai pr extproc('xmlUCSIsThai') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsTibetan... + d pr extproc('xmlUCSIsTibetan') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsUgaritic... + d pr extproc('xmlUCSIsUgaritic') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsUnifiedCanadianAboriginalSyllabics... + d pr extproc('xmlUCSIsUnifiedCanadianAbor- + d iginalSyllabics') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsVariationSelectors... + d pr extproc('xmlUCSIsVariationSelectors') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsVariationSelectorsSupplement... + d pr extproc('xmlUCSIsVariationSelectorsS- + d upplement') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsYiRadicals... + d pr extproc('xmlUCSIsYiRadicals') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsYiSyllables... + d pr extproc('xmlUCSIsYiSyllables') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsYijingHexagramSymbols... + d pr extproc( + d 'xmlUCSIsYijingHexagramSymbols') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsBlock pr extproc('xmlUCSIsBlock') + d like(xmlCint) + d code value like(xmlCint) + d block * value options(*string) const char * + + d xmlUCSIsCatC pr extproc('xmlUCSIsCatC') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatCc pr extproc('xmlUCSIsCatCc') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatCf pr extproc('xmlUCSIsCatCf') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatCo pr extproc('xmlUCSIsCatCo') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatCs pr extproc('xmlUCSIsCatCs') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatL pr extproc('xmlUCSIsCatL') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatLl pr extproc('xmlUCSIsCatLl') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatLm pr extproc('xmlUCSIsCatLm') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatLo pr extproc('xmlUCSIsCatLo') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatLt pr extproc('xmlUCSIsCatLt') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatLu pr extproc('xmlUCSIsCatLu') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatM pr extproc('xmlUCSIsCatM') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatMc pr extproc('xmlUCSIsCatMc') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatMe pr extproc('xmlUCSIsCatMe') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatMn pr extproc('xmlUCSIsCatMn') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatN pr extproc('xmlUCSIsCatN') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatNd pr extproc('xmlUCSIsCatNd') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatNl pr extproc('xmlUCSIsCatNl') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatNo pr extproc('xmlUCSIsCatNo') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatP pr extproc('xmlUCSIsCatP') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatPc pr extproc('xmlUCSIsCatPc') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatPd pr extproc('xmlUCSIsCatPd') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatPe pr extproc('xmlUCSIsCatPe') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatPf pr extproc('xmlUCSIsCatPf') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatPi pr extproc('xmlUCSIsCatPi') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatPo pr extproc('xmlUCSIsCatPo') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatPs pr extproc('xmlUCSIsCatPs') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatS pr extproc('xmlUCSIsCatS') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatSc pr extproc('xmlUCSIsCatSc') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatSk pr extproc('xmlUCSIsCatSk') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatSm pr extproc('xmlUCSIsCatSm') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatSo pr extproc('xmlUCSIsCatSo') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatZ pr extproc('xmlUCSIsCatZ') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatZl pr extproc('xmlUCSIsCatZl') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatZp pr extproc('xmlUCSIsCatZp') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCatZs pr extproc('xmlUCSIsCatZs') + d like(xmlCint) + d code value like(xmlCint) + + d xmlUCSIsCat pr extproc('xmlUCSIsCat') + d like(xmlCint) + d code value like(xmlCint) + d cat * value options(*string) const char * + + /endif LIBXML_UNICODE_ENBLD + /endif XML_UNICODE_H__ diff --git a/libxml2/os400/libxmlrpg/xmlversion.rpgle.in b/libxml2/os400/libxmlrpg/xmlversion.rpgle.in new file mode 100644 index 0000000..955599e --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlversion.rpgle.in @@ -0,0 +1,353 @@ + * Summary: compile-time version informations + * Description: compile-time version informations for the XML library + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_VERSION_H__) + /define XML_VERSION_H__ + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/xmlexports" + + * use those to be sure nothing nasty will happen if + * your library and includes mismatch + + + d xmlCheckVersion... + d pr extproc('xmlCheckVersion') + d version value like(xmlCint) + + * LIBXML_DOTTED_VERSION: + * + * the version string like "1.2.3" + + d LIBXML_DOTTED_VERSION... + d c '@VERSION@' + + * LIBXML_VERSION: + * + * the version number: 1.2.3 value is 10203 + + d LIBXML_VERSION c @LIBXML_VERSION_NUMBER@ + + * LIBXML_VERSION_STRING: + * + * the version number string, 1.2.3 value is "10203" + + d LIBXML_VERSION_STRING... + d c '@LIBXML_VERSION_NUMBER@' + + * LIBXML_VERSION_EXTRA: + * + * extra version information, used to show a CVS compilation + + d LIBXML_VERSION_EXTRA... + d c '@LIBXML_VERSION_EXTRA@' + + * For conditional compilation + /define DEFINED_1 + /undefine DEFINED_0 + + /if defined(DEFINED_@WITH_TRIO@) + * WITH_TRIO: + * + * defined if the trio support need to be configured in + + /define WITH_TRIO + /else + * WITHOUT_TRIO: + * + * defined if the trio support should not be configured in + + /define WITHOUT_TRIO + /endif + + * LIBXML_THREAD_ENABLED: + * + * Whether the thread support is configured in + + /if defined(DEFINED_@WITH_THREADS@) + /define LIBXML_THREAD_ENABLED + /endif + + * LIBXML_THREAD_ALLOC_ENABLED: + * + * Whether the allocation hooks are per-thread + + /if defined(DEFINED_@WITH_THREAD_ALLOC@) + /define LIBXML_THREAD_ALLOC_ENABLED + /endif + + * LIBXML_TREE_ENABLED: + * + * Whether the DOM like tree manipulation API support is configured in + + /if defined(DEFINED_@WITH_TREE@) + /define LIBXML_TREE_ENABLED + /endif + + * LIBXML_OUTPUT_ENABLED: + * + * Whether the serialization/saving support is configured in + + /if defined(DEFINED_@WITH_OUTPUT@) + /define LIBXML_OUTPUT_ENABLED + /endif + + * LIBXML_PUSH_ENABLED: + * + * Whether the push parsing interfaces are configured in + + /if defined(DEFINED_@WITH_PUSH@) + /define LIBXML_PUSH_ENABLED + /endif + + * LIBXML_READER_ENABLED: + * + * Whether the xmlReader parsing interface is configured in + + /if defined(DEFINED_@WITH_READER@) + /define LIBXML_READER_ENABLED + /endif + + * LIBXML_PATTERN_ENABLED: + * + * Whether the xmlPattern node selection interface is configured in + + /if defined(DEFINED_@WITH_PATTERN@) + /define LIBXML_PATTERN_ENABLED + /endif + + * LIBXML_WRITER_ENABLED: + * + * Whether the xmlWriter saving interface is configured in + + /if defined(DEFINED_@WITH_WRITER@) + /define LIBXML_WRITER_ENABLED + /endif + + * LIBXML_SAX1_ENABLED: + * + * Whether the older SAX1 interface is configured in + + /if defined(DEFINED_@WITH_SAX1@) + /define LIBXML_SAX1_ENABLED + /endif + + * LIBXML_FTP_ENABLED: + * + * Whether the FTP support is configured in + + /if defined(DEFINED_@WITH_FTP@) + /define LIBXML_FTP_ENABLED + /endif + + * LIBXML_HTTP_ENABLED: + * + * Whether the HTTP support is configured in + + /if defined(DEFINED_@WITH_HTTP@) + /define LIBXML_HTTP_ENABLED + /endif + + * LIBXML_VALID_ENABLED: + * + * Whether the DTD validation support is configured in + + /if defined(DEFINED_@WITH_VALID@) + /define LIBXML_VALID_ENABLED + /endif + + * LIBXML_HTML_ENABLED: + * + * Whether the HTML support is configured in + + /if defined(DEFINED_@WITH_HTML@) + /define LIBXML_HTML_ENABLED + /endif + + * LIBXML_LEGACY_ENABLED: + * + * Whether the deprecated APIs are compiled in for compatibility + + /if defined(DEFINED_@WITH_LEGACY@) + /define LIBXML_LEGACY_ENABLED + /endif + + * LIBXML_C14N_ENABLED: + * + * Whether the Canonicalization support is configured in + + /if defined(DEFINED_@WITH_C14N@) + /define LIBXML_C14N_ENABLED + /endif + + * LIBXML_CATALOG_ENABLED: + * + * Whether the Catalog support is configured in + + /if defined(DEFINED_@WITH_CATALOG@) + /define LIBXML_CATALOG_ENABLED + /endif + + * LIBXML_DOCB_ENABLED: + * + * Whether the SGML Docbook support is configured in + + /if defined(DEFINED_@WITH_DOCB@) + /define LIBXML_DOCB_ENABLED + /endif + + * LIBXML_XPATH_ENABLED: + * + * Whether XPath is configured in + + /if defined(DEFINED_@WITH_XPATH@) + /define LIBXML_XPATH_ENABLED + /endif + + * LIBXML_XPTR_ENABLED: + * + * Whether XPointer is configured in + + /if defined(DEFINED_@WITH_XPTR@) + /define LIBXML_XPTR_ENABLED + /endif + + * LIBXML_XINCLUDE_ENABLED: + * + * Whether XInclude is configured in + + /if defined(DEFINED_@WITH_XINCLUDE@) + /define LIBXML_XINCLUDE_ENABLED + /endif + + * LIBXML_ICONV_ENABLED: + * + * Whether iconv support is available + + /if defined(DEFINED_@WITH_ICONV@) + /define LIBXML_ICONV_ENABLED + /endif + + * LIBXML_ICU_ENABLED: + * + * Whether icu support is available + + /if defined(DEFINED_@WITH_ICU@) + /define LIBXML_ICU_ENABLED + /endif + + * LIBXML_ISO8859X_ENABLED: + * + * Whether ISO-8859-* support is made available in case iconv is not + + /if defined(DEFINED_@WITH_ISO8859X@) + /define LIBXML_ISO8859X_ENABLED + /endif + + * LIBXML_DEBUG_ENABLED: + * + * Whether Debugging module is configured in + + /if defined(DEFINED_@WITH_DEBUG@) + /define LIBXML_DEBUG_ENABLED + /endif + + * DEBUG_MEMORY_LOCATION: + * + * Whether the memory debugging is configured in + + /if defined(DEFINED_@WITH_MEM_DEBUG@) + /define DEBUG_MEMORY_LOCATION + /endif + + * LIBXML_DEBUG_RUNTIME: + * + * Whether the runtime debugging is configured in + + /if defined(DEFINED_@WITH_RUN_DEBUG@) + /define LIBXML_DEBUG_RUNTIME + /endif + + * LIBXML_UNICODE_ENABLED: + * + * Whether the Unicode related interfaces are compiled in + + /if defined(DEFINED_@WITH_REGEXPS@) + /define LIBXML_UNICODE_ENABLED + /endif + + * LIBXML_REGEXP_ENABLED: + * + * Whether the regular expressions interfaces are compiled in + + /if defined(DEFINED_@WITH_REGEXPS@) + /define LIBXML_REGEXP_ENABLED + /endif + + * LIBXML_AUTOMATA_ENABLED: + * + * Whether the automata interfaces are compiled in + + /if defined(DEFINED_@WITH_REGEXPS@) + /define LIBXML_AUTOMATA_ENABLED + /endif + + * LIBXML_EXPR_ENABLED: + * + * Whether the formal expressions interfaces are compiled in + + /if defined(DEFINED_@WITH_SCHEMAS@) + /define LIBXML_EXPR_ENABLED + /endif + + * LIBXML_SCHEMAS_ENABLED: + * + * Whether the Schemas validation interfaces are compiled in + + /if defined(DEFINED_@WITH_SCHEMAS@) + /define LIBXML_SCHEMAS_ENABLED + /endif + + * LIBXML_SCHEMATRON_ENABLED: + * + * Whether the Schematron validation interfaces are compiled in + + /if defined(DEFINED_@WITH_SCHEMATRON@) + /define LIBXML_SCHEMATRON_ENABLED + /endif + + * LIBXML_MODULES_ENABLED: + * + * Whether the module interfaces are compiled in + + /if defined(DEFINED_@WITH_MODULES@) + /define LIBXML_MODULES_ENABLED + + * LIBXML_MODULE_EXTENSION: + * + * the string suffix used by dynamic modules (usually shared libraries) + + d LIBXML_MODULE_EXTENSION... + d c '.SRVPGM' + /endif + + * LIBXML_ZLIB_ENABLED: + * + * Whether the Zlib support is compiled in + + /if defined(DEFINED_@WITH_ZLIB@) + /define LIBXML_ZLIB_ENABLED + /endif + + * LIBXML_LZMA_ENABLED: + * + * Whether the Lzma support is compiled in + + /if defined(DEFINED_@WITH_LZMA@) + /define LIBXML_LZMA_ENABLED + /endif + /endif diff --git a/libxml2/os400/libxmlrpg/xmlwriter.rpgle b/libxml2/os400/libxmlrpg/xmlwriter.rpgle new file mode 100644 index 0000000..c8530f8 --- /dev/null +++ b/libxml2/os400/libxmlrpg/xmlwriter.rpgle @@ -0,0 +1,801 @@ + * Summary: text writing API for XML + * Description: text writing API for XML + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_XMLWRITER_H__) + /define XML_XMLWRITER_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_WRITER_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/xmlstdarg" + /include "libxmlrpg/xmlIO" + /include "libxmlrpg/list" + /include "libxmlrpg/xmlstring" + + d xmlTextWriterPtr... + d s * based(######typedef######) + + * Constructors & Destructor + + d xmlNewTextWriter... + d pr extproc('xmlNewTextWriter') + d like(xmlTextWriterPtr) + d out value like(xmlOutputBufferPtr) + + d xmlNewTextWriterFilename... + d pr extproc('xmlNewTextWriterFilename') + d like(xmlTextWriterPtr) + d uri * value options(*string) const char * + d compression value like(xmlCint) + + d xmlNewTextWriterMemory... + d pr extproc('xmlNewTextWriterMemory') + d like(xmlTextWriterPtr) + d buf value like(xmlBufferPtr) + d compression value like(xmlCint) + + d xmlNewTextWriterPushParser... + d pr extproc('xmlNewTextWriterPushParser') + d like(xmlTextWriterPtr) + d ctxt value like(xmlParserCtxtPtr) + d compression value like(xmlCint) + + d xmlNewTextWriterDoc... + d pr extproc('xmlNewTextWriterDoc') + d like(xmlTextWriterPtr) + d doc like(xmlDocPtr) + d compression value like(xmlCint) + + d xmlNewTextWriterTree... + d pr extproc('xmlNewTextWriterTree') + d like(xmlTextWriterPtr) + d doc value like(xmlDocPtr) + d node value like(xmlNodePtr) + d compression value like(xmlCint) + + d xmlFreeTextWriter... + d pr extproc('xmlFreeTextWriter') + d writer value like(xmlTextWriterPtr) + + * Functions + + * Document + + d xmlTextWriterStartDocument... + d pr extproc('xmlTextWriterStartDocument') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d version * value options(*string) const char * + d encoding * value options(*string) const char * + d standalone * value options(*string) const char * + + d xmlTextWriterEndDocument... + d pr extproc('xmlTextWriterEndDocument') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + * Comments + + d xmlTextWriterStartComment... + d pr extproc('xmlTextWriterStartComment') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + d xmlTextWriterEndComment... + d pr extproc('xmlTextWriterEndComment') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + d xmlTextWriterWriteFormatComment... + d pr extproc( + d 'xmlTextWriterWriteFormatComment') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d format * value options(*string: *nopass) const char * + d #vararg1 * value options(*string: *nopass) void * + d #vararg2 * value options(*string: *nopass) void * + d #vararg3 * value options(*string: *nopass) void * + d #vararg4 * value options(*string: *nopass) void * + d #vararg5 * value options(*string: *nopass) void * + d #vararg6 * value options(*string: *nopass) void * + d #vararg7 * value options(*string: *nopass) void * + d #vararg8 * value options(*string: *nopass) void * + + d xmlTextWriterWriteVFormatComment... + d pr extproc( + d 'xmlTextWriterWriteVFormatComment') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d format * value options(*string) const char * + d argptr likeds(xmlVaList) + + d xmlTextWriterWriteComment... + d pr extproc('xmlTextWriterWriteComment') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d content * value options(*string) const xmlChar * + + * Elements + + d xmlTextWriterStartElement... + d pr extproc('xmlTextWriterStartElement') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + + d xmlTextWriterStartElementNS... + d pr extproc( + d 'xmlTextWriterStartElementNS') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d prefix * value options(*string) const xmlChar * + d name * value options(*string) const xmlChar * + d namespaceURI * value options(*string) const xmlChar * + + d xmlTextWriterEndElement... + d pr extproc('xmlTextWriterEndElement') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + d xmlTextWriterFullEndElement... + d pr extproc( + d 'xmlTextWriterFullEndElement') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + * Elements conveniency functions + + d xmlTextWriterWriteFormatElement... + d pr extproc( + d 'xmlTextWriterWriteFormatElement') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d format * value options(*string) const char * + d #vararg1 * value options(*string: *nopass) void * + d #vararg2 * value options(*string: *nopass) void * + d #vararg3 * value options(*string: *nopass) void * + d #vararg4 * value options(*string: *nopass) void * + d #vararg5 * value options(*string: *nopass) void * + d #vararg6 * value options(*string: *nopass) void * + d #vararg7 * value options(*string: *nopass) void * + d #vararg8 * value options(*string: *nopass) void * + + d xmlTextWriterWriteVFormatElement... + d pr extproc( + d 'xmlTextWriterWriteVFormatElement') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d format * value options(*string) const char * + d argptr likeds(xmlVaList) + + d xmlTextWriterWriteElement... + d pr extproc('xmlTextWriterWriteElement') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + d xmlTextWriterWriteFormatElementNS... + d pr extproc( + d 'xmlTextWriterWriteFormatElementNS') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d prefix * value options(*string) const xmlChar * + d name * value options(*string) const xmlChar * + d namespaceURI * value options(*string) const xmlChar * + d format * value options(*string) const char * + d #vararg1 * value options(*string: *nopass) void * + d #vararg2 * value options(*string: *nopass) void * + d #vararg3 * value options(*string: *nopass) void * + d #vararg4 * value options(*string: *nopass) void * + d #vararg5 * value options(*string: *nopass) void * + d #vararg6 * value options(*string: *nopass) void * + d #vararg7 * value options(*string: *nopass) void * + d #vararg8 * value options(*string: *nopass) void * + + d xmlTextWriterWriteVFormatElementNS... + d pr extproc( + d 'xmlTextWriterWriteVFormatElementNS') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d prefix * value options(*string) const xmlChar * + d name * value options(*string) const xmlChar * + d namespaceURI * value options(*string) const xmlChar * + d format * value options(*string) const char * + d argptr likeds(xmlVaList) + + d xmlTextWriterWriteElementNS... + d pr extproc( + d 'xmlTextWriterWriteElementNS') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d prefix * value options(*string) const xmlChar * + d name * value options(*string) const xmlChar * + d namespaceURI * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + * Text + + d xmlTextWriterWriteFormatRaw... + d pr extproc( + d 'xmlTextWriterWriteFormatRaw') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d format * value options(*string) const char * + d #vararg1 * value options(*string: *nopass) void * + d #vararg2 * value options(*string: *nopass) void * + d #vararg3 * value options(*string: *nopass) void * + d #vararg4 * value options(*string: *nopass) void * + d #vararg5 * value options(*string: *nopass) void * + d #vararg6 * value options(*string: *nopass) void * + d #vararg7 * value options(*string: *nopass) void * + d #vararg8 * value options(*string: *nopass) void * + + d xmlTextWriterWriteVFormatRaw... + d pr extproc( + d 'xmlTextWriterWriteVFormatRaw') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d format * value options(*string) const char * + d argptr likeds(xmlVaList) + + d xmlTextWriterWriteRawLen... + d pr extproc('xmlTextWriterWriteRawLen') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d content * value options(*string) const xmlChar * + d len value like(xmlCint) + + d xmlTextWriterWriteRaw... + d pr extproc('xmlTextWriterWriteRaw') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d content * value options(*string) const xmlChar * + + d xmlTextWriterWriteFormatString... + d pr extproc( + d 'xmlTextWriterWriteFormatString') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d format * value options(*string) const char * + d #vararg1 * value options(*string: *nopass) void * + d #vararg2 * value options(*string: *nopass) void * + d #vararg3 * value options(*string: *nopass) void * + d #vararg4 * value options(*string: *nopass) void * + d #vararg5 * value options(*string: *nopass) void * + d #vararg6 * value options(*string: *nopass) void * + d #vararg7 * value options(*string: *nopass) void * + d #vararg8 * value options(*string: *nopass) void * + + d xmlTextWriterWriteVFormatString... + d pr extproc( + d 'xmlTextWriterWriteVFormatString') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d format * value options(*string) const char * + d argptr likeds(xmlVaList) + + d xmlTextWriterWriteString... + d pr extproc('xmlTextWriterWriteString') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d content * value options(*string) const xmlChar * + + d xmlTextWriterWriteBase64... + d pr extproc('xmlTextWriterWriteBase64') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d data * value options(*string) const char * + d start value like(xmlCint) + d len value like(xmlCint) + + d xmlTextWriterWriteBinHex... + d pr extproc('xmlTextWriterWriteBinHex') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d data * value options(*string) const char * + d start value like(xmlCint) + d len value like(xmlCint) + + * Attributes + + d xmlTextWriterStartAttribute... + d pr extproc( + d 'xmlTextWriterStartAttribute') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + + d xmlTextWriterStartAttributeNS... + d pr extproc( + d 'xmlTextWriterStartAttributeNS') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d prefix * value options(*string) const xmlChar * + d name * value options(*string) const xmlChar * + d namespaceURI * value options(*string) const xmlChar * + + d xmlTextWriterEndAttribute... + d pr extproc('xmlTextWriterEndAttribute') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + * Attributes conveniency functions + + d xmlTextWriterWriteFormatAttribute... + d pr extproc( + d 'xmlTextWriterWriteFormatAttribute') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d format * value options(*string) const char * + d #vararg1 * value options(*string: *nopass) void * + d #vararg2 * value options(*string: *nopass) void * + d #vararg3 * value options(*string: *nopass) void * + d #vararg4 * value options(*string: *nopass) void * + d #vararg5 * value options(*string: *nopass) void * + d #vararg6 * value options(*string: *nopass) void * + d #vararg7 * value options(*string: *nopass) void * + d #vararg8 * value options(*string: *nopass) void * + + d xmlTextWriterWriteVFormatAttribute... + d pr extproc( + d 'xmlTextWriterWriteVFormatAttribute') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d format * value options(*string) const char * + d argptr likeds(xmlVaList) + + d xmlTextWriterWriteAttribute... + d pr extproc( + d 'xmlTextWriterWriteAttribute') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + d xmlTextWriterWriteFormatAttributeNS... + d pr extproc( + d 'xmlTextWriterWriteFormatAttributeNS' + d ) + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d prefix * value options(*string) const xmlChar * + d name * value options(*string) const xmlChar * + d namespaceURI * value options(*string) const xmlChar * + d format * value options(*string) const char * + d #vararg1 * value options(*string: *nopass) void * + d #vararg2 * value options(*string: *nopass) void * + d #vararg3 * value options(*string: *nopass) void * + d #vararg4 * value options(*string: *nopass) void * + d #vararg5 * value options(*string: *nopass) void * + d #vararg6 * value options(*string: *nopass) void * + d #vararg7 * value options(*string: *nopass) void * + d #vararg8 * value options(*string: *nopass) void * + + d xmlTextWriterWriteVFormatAttributeNS... + d pr extproc('xmlTextWriterWriteVFormatAt- + d tributeNS') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d prefix * value options(*string) const xmlChar * + d name * value options(*string) const xmlChar * + d namespaceURI * value options(*string) const xmlChar * + d format * value options(*string) const char * + d argptr likeds(xmlVaList) + + d xmlTextWriterWriteAttributeNS... + d pr extproc( + d 'xmlTextWriterWriteAttributeNS') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d prefix * value options(*string) const xmlChar * + d name * value options(*string) const xmlChar * + d namespaceURI * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + * PI's + + d xmlTextWriterStartPI... + d pr extproc('xmlTextWriterStartPI') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d target * value options(*string) const xmlChar * + + d xmlTextWriterEndPI... + d pr extproc('xmlTextWriterEndPI') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + * PI conveniency functions + + d xmlTextWriterWriteFormatPI... + d pr extproc('xmlTextWriterWriteFormatPI') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d target * value options(*string) const xmlChar * + d format * value options(*string) const char * + d #vararg1 * value options(*string: *nopass) void * + d #vararg2 * value options(*string: *nopass) void * + d #vararg3 * value options(*string: *nopass) void * + d #vararg4 * value options(*string: *nopass) void * + d #vararg5 * value options(*string: *nopass) void * + d #vararg6 * value options(*string: *nopass) void * + d #vararg7 * value options(*string: *nopass) void * + d #vararg8 * value options(*string: *nopass) void * + + d xmlTextWriterWriteVFormatPI... + d pr extproc( + d 'xmlTextWriterWriteVFormatPI') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d target * value options(*string) const xmlChar * + d format * value options(*string) const char * + d argptr likeds(xmlVaList) + + d xmlTextWriterWritePI... + d pr extproc('xmlTextWriterWritePI') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d target * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + * xmlTextWriterWriteProcessingInstruction: + * + * This macro maps to xmlTextWriterWritePI + + d xmlTextWriterWriteProcessingInstruction... + d pr extproc('xmlTextWriterWritePI') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d target * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + * CDATA + + d xmlTextWriterStartCDATA... + d pr extproc('xmlTextWriterStartCDATA') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + d xmlTextWriterEndCDATA... + d pr extproc('xmlTextWriterEndCDATA') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + * CDATA conveniency functions + + d xmlTextWriterWriteFormatCDATA... + d pr extproc( + d 'xmlTextWriterWriteFormatCDATA') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d format * value options(*string) const char * + d #vararg1 * value options(*string: *nopass) void * + d #vararg2 * value options(*string: *nopass) void * + d #vararg3 * value options(*string: *nopass) void * + d #vararg4 * value options(*string: *nopass) void * + d #vararg5 * value options(*string: *nopass) void * + d #vararg6 * value options(*string: *nopass) void * + d #vararg7 * value options(*string: *nopass) void * + d #vararg8 * value options(*string: *nopass) void * + + d xmlTextWriterWriteVFormatCDATA... + d pr extproc( + d 'xmlTextWriterWriteVFormatCDATA') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d format * value options(*string) const char * + d argptr likeds(xmlVaList) + + d xmlTextWriterWriteCDATA... + d pr extproc('xmlTextWriterWriteCDATA') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d content * value options(*string) const xmlChar * + + * DTD + + d xmlTextWriterStartDTD... + d pr extproc('xmlTextWriterStartDTD') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d pubid * value options(*string) const xmlChar * + d sysid * value options(*string) const xmlChar * + + d xmlTextWriterEndDTD... + d pr extproc('xmlTextWriterEndDTD') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + * DTD conveniency functions + + d xmlTextWriterWriteFormatDTD... + d pr extproc( + d 'xmlTextWriterWriteFormatDTD') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d pubid * value options(*string) const xmlChar * + d sysid * value options(*string) const xmlChar * + d format * value options(*string) const char * + d #vararg1 * value options(*string: *nopass) void * + d #vararg2 * value options(*string: *nopass) void * + d #vararg3 * value options(*string: *nopass) void * + d #vararg4 * value options(*string: *nopass) void * + d #vararg5 * value options(*string: *nopass) void * + d #vararg6 * value options(*string: *nopass) void * + d #vararg7 * value options(*string: *nopass) void * + d #vararg8 * value options(*string: *nopass) void * + + d xmlTextWriterWriteVFormatDTD... + d pr extproc( + d 'xmlTextWriterWriteVFormatDTD') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d pubid * value options(*string) const xmlChar * + d sysid * value options(*string) const xmlChar * + d format * value options(*string) const char * + d argptr likeds(xmlVaList) + + d xmlTextWriterWriteDTD... + d pr extproc('xmlTextWriterWriteDTD') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d pubid * value options(*string) const xmlChar * + d sysid * value options(*string) const xmlChar * + d subset * value options(*string) const xmlChar * + + * xmlTextWriterWriteDocType: + * + * this macro maps to xmlTextWriterWriteDTD + + d xmlTextWriterWriteDocType... + d pr extproc('xmlTextWriterWriteDTD') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d pubid * value options(*string) const xmlChar * + d sysid * value options(*string) const xmlChar * + d subset * value options(*string) const xmlChar * + + * DTD element definition + + d xmlTextWriterStartDTDElement... + d pr extproc( + d 'xmlTextWriterStartDTDElement') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + + d xmlTextWriterEndDTDElement... + d pr extproc('xmlTextWriterEndDTDElement') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + * DTD element definition conveniency functions + + d xmlTextWriterWriteFormatDTDElement... + d pr extproc( + d 'xmlTextWriterWriteFormatDTDElement') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d format * value options(*string) const char * + d #vararg1 * value options(*string: *nopass) void * + d #vararg2 * value options(*string: *nopass) void * + d #vararg3 * value options(*string: *nopass) void * + d #vararg4 * value options(*string: *nopass) void * + d #vararg5 * value options(*string: *nopass) void * + d #vararg6 * value options(*string: *nopass) void * + d #vararg7 * value options(*string: *nopass) void * + d #vararg8 * value options(*string: *nopass) void * + + d xmlTextWriterWriteVFormatDTDElement... + d pr extproc( + d 'xmlTextWriterWriteVFormatDTDElement' + d ) + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d format * value options(*string) const char * + d argptr likeds(xmlVaList) + + d xmlTextWriterWriteDTDElement... + d pr extproc( + d 'xmlTextWriterWriteDTDElement') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + * DTD attribute list definition + + d xmlTextWriterStartDTDAttlist... + d pr extproc( + d 'xmlTextWriterStartDTDAttlist') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + + d xmlTextWriterEndDTDAttlist... + d pr extproc('xmlTextWriterEndDTDAttlist') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + * DTD attribute list definition conveniency functions + + d xmlTextWriterWriteFormatDTDAttlist... + d pr extproc( + d 'xmlTextWriterWriteFormatDTDAttlist') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d format * value options(*string) const char * + d #vararg1 * value options(*string: *nopass) void * + d #vararg2 * value options(*string: *nopass) void * + d #vararg3 * value options(*string: *nopass) void * + d #vararg4 * value options(*string: *nopass) void * + d #vararg5 * value options(*string: *nopass) void * + d #vararg6 * value options(*string: *nopass) void * + d #vararg7 * value options(*string: *nopass) void * + d #vararg8 * value options(*string: *nopass) void * + + d xmlTextWriterWriteVFormatDTDAttlist... + d pr extproc( + d 'xmlTextWriterWriteVFormatDTDAttlist' + d ) + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d format * value options(*string) const char * + d argptr likeds(xmlVaList) + + d xmlTextWriterWriteDTDAttlist... + d pr extproc( + d 'xmlTextWriterWriteDTDAttlist') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + * DTD entity definition + + d xmlTextWriterStartDTDEntity... + d pr extproc( + d 'xmlTextWriterStartDTDEntity') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d pe value like(xmlCint) + d name * value options(*string) const xmlChar * + + d xmlTextWriterEndDTDEntity... + d pr extproc('xmlTextWriterEndDTDEntity') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + * DTD entity definition conveniency functions + + d xmlTextWriterWriteFormatDTDInternalEntity... + d pr extproc('xmlTextWriterWriteFormatDTD- + d InternalEntity') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d pe value like(xmlCint) + d name * value options(*string) const xmlChar * + d format * value options(*string) const char * + d #vararg1 * value options(*string: *nopass) void * + d #vararg2 * value options(*string: *nopass) void * + d #vararg3 * value options(*string: *nopass) void * + d #vararg4 * value options(*string: *nopass) void * + d #vararg5 * value options(*string: *nopass) void * + d #vararg6 * value options(*string: *nopass) void * + d #vararg7 * value options(*string: *nopass) void * + d #vararg8 * value options(*string: *nopass) void * + + d xmlTextWriterWriteVFormatDTDInternalEntity... + d pr extproc('xmlTextWriterWriteVFormatDT- + d DInternalEntity') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d pe value like(xmlCint) + d name * value options(*string) const xmlChar * + d format * value options(*string) const char * + d argptr likeds(xmlVaList) + + d xmlTextWriterWriteDTDInternalEntity... + d pr extproc( + d 'xmlTextWriterWriteDTDInternalEntity' + d ) + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d pe value like(xmlCint) + d name * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + d xmlTextWriterWriteDTDExternalEntity... + d pr extproc( + d 'xmlTextWriterWriteDTDExternalEntity' + d ) + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d pe value like(xmlCint) + d name * value options(*string) const xmlChar * + d pubid * value options(*string) const xmlChar * + d sysid * value options(*string) const xmlChar * + d ndataid * value options(*string) const xmlChar * + + d xmlTextWriterWriteDTDExternalEntityContents... + d pr extproc('xmlTextWriterWriteDTDExtern- + d alEntityContents') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d pubid * value options(*string) const xmlChar * + d sysid * value options(*string) const xmlChar * + d ndataid * value options(*string) const xmlChar * + + d xmlTextWriterWriteDTDEntity... + d pr extproc( + d 'xmlTextWriterWriteDTDEntity') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d pe value like(xmlCint) + d name * value options(*string) const xmlChar * + d pubid * value options(*string) const xmlChar * + d sysid * value options(*string) const xmlChar * + d ndataid * value options(*string) const xmlChar * + d content * value options(*string) const xmlChar * + + * DTD notation definition + + d xmlTextWriterWriteDTDNotation... + d pr extproc( + d 'xmlTextWriterWriteDTDNotation') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d name * value options(*string) const xmlChar * + d pubid * value options(*string) const xmlChar * + d sysid * value options(*string) const xmlChar * + + * Indentation + + d xmlTextWriterSetIndent... + d pr extproc('xmlTextWriterSetIndent') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d indent value like(xmlCint) + + d xmlTextWriterSetIndentString... + d pr extproc( + d 'xmlTextWriterSetIndentString') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d str * value options(*string) const xmlChar * + + d xmlTextWriterSetQuoteChar... + d pr extproc('xmlTextWriterSetQuoteChar') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + d quotechar value like(xmlChar) + + * misc + + d xmlTextWriterFlush... + d pr extproc('xmlTextWriterFlush') + d like(xmlCint) + d writer value like(xmlTextWriterPtr) + + /endif LIBXML_WRITER_ENABLD + /endif XML_XMLWRITER_H__ diff --git a/libxml2/os400/libxmlrpg/xpath.rpgle b/libxml2/os400/libxmlrpg/xpath.rpgle new file mode 100644 index 0000000..6e591ee --- /dev/null +++ b/libxml2/os400/libxmlrpg/xpath.rpgle @@ -0,0 +1,675 @@ + * Summary: XML Path Language implementation + * Description: API for the XML Path Language implementation + * + * XML Path Language implementation + * XPath is a language for addressing parts of an XML document, + * designed to be used by both XSLT and XPointer + * http://www.w3.org/TR/xpath + * + * Implements + * W3C Recommendation 16 November 1999 + * http://www.w3.org/TR/1999/REC-xpath-19991116 + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_XPATH_H__) + /define XML_XPATH_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_XPATH_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/xmlerror" + /include "libxmlrpg/tree" + /include "libxmlrpg/hash" + /endif LIBXML_XPATH_ENABLED + + /if defined(LIBXML_XPATH_ENABLED) + + d xmlXPathContextPtr... + d s * based(######typedef######) + + d xmlXPathParserContextPtr... + d s * based(######typedef######) + + * The set of XPath error codes. + + d xmlXPathError s based(######typedef######) + d like(xmlCenum) + d XPATH_EXPRESSION_OK... + d c 0 + d XPATH_NUMBER_ERROR... + d c 1 + d XPATH_UNFINISHED_LITERAL_ERROR... + d c 2 + d XPATH_START_LITERAL_ERROR... + d c 3 + d XPATH_VARIABLE_REF_ERROR... + d c 4 + d XPATH_UNDEF_VARIABLE_ERROR... + d c 5 + d XPATH_INVALID_PREDICATE_ERROR... + d c 6 + d XPATH_EXPR_ERROR... + d c 7 + d XPATH_UNCLOSED_ERROR... + d c 8 + d XPATH_UNKNOWN_FUNC_ERROR... + d c 9 + d XPATH_INVALID_OPERAND... + d c 10 + d XPATH_INVALID_TYPE... + d c 11 + d XPATH_INVALID_ARITY... + d c 12 + d XPATH_INVALID_CTXT_SIZE... + d c 13 + d XPATH_INVALID_CTXT_POSITION... + d c 14 + d XPATH_MEMORY_ERROR... + d c 15 + d XPTR_SYNTAX_ERROR... + d c 16 + d XPTR_RESOURCE_ERROR... + d c 17 + d XPTR_SUB_RESOURCE_ERROR... + d c 18 + d XPATH_UNDEF_PREFIX_ERROR... + d c 19 + d XPATH_ENCODING_ERROR... + d c 20 + d XPATH_INVALID_CHAR_ERROR... + d c 21 + d XPATH_INVALID_CTXT... + d c 22 + d XPATH_STACK_ERROR... + d c 23 + d XPATH_FORBID_VARIABLE_ERROR... + d c 24 + + * A node-set (an unordered collection of nodes without duplicates). + + d xmlNodeSetPtr s * based(######typedef######) + + d xmlNodeSet ds based(xmlNodeSetPtr) + d align qualified + d nodeNr like(xmlCint) Set node count + d nodeMax like(xmlCint) Max # nodes in set + d nodeTab * xmlNodePtr * + + * An expression is evaluated to yield an object, which + * has one of the following four basic types: + * - node-set + * - boolean + * - number + * - string + * + * @@ XPointer will add more types ! + + d xmlXPathObjectType... + d s based(######typedef######) + d like(xmlCenum) + d XPATH_UNDEFINED... + d c 0 + d XPATH_NODESET c 1 + d XPATH_BOOLEAN c 2 + d XPATH_NUMBER c 3 + d XPATH_STRING c 4 + d XPATH_POINT c 5 + d XPATH_RANGE c 6 + d XPATH_LOCATIONSET... + d c 7 + d XPATH_USERS c 8 + d XPATH_XSLT_TREE... R/O XSLT value tree + d c 9 + + d xmlXPathObjectPtr... + d s * based(######typedef######) + + d xmlXPathObject ds based(xmlXPathObjectPtr) + d align qualified + d type like(xmlXPathObjectType) + d nodesetval like(xmlNodeSetPtr) + d boolval like(xmlCint) + d floatval like(xmlCdouble) + d stringval * xmlChar * + d user * void * + d index like(xmlCint) + d user2 * void * + d index2 like(xmlCint) + + * xmlXPathConvertFunc: + * @obj: an XPath object + * @type: the number of the target type + * + * A conversion function is associated to a type and used to cast + * the new type to primitive values. + * + * Returns -1 in case of error, 0 otherwise + + d xmlXPathConvertFunc... + d s * based(######typedef######) + d procptr + + * Extra type: a name and a conversion function. + + d xmlXPathTypePtr... + d s * based(######typedef######) + + d xmlXPathType ds based(xmlXPathTypePtr) + d align qualified + d name * The type name + d func like(xmlXPathConvertFunc) Conversion function + + * Extra variable: a name and a value. + + d xmlXPathVariablePtr... + d s * based(######typedef######) + + d xmlXPathVariable... + d ds based(xmlXPathVariablePtr) + d align qualified + d name * The variable name + d value like(xmlXPathObjectPtr) The value + + * xmlXPathEvalFunc: + * @ctxt: an XPath parser context + * @nargs: the number of arguments passed to the function + * + * An XPath evaluation function, the parameters are on the XPath + * context stack. + + d xmlXPathEvalFunc... + d s * based(######typedef######) + d procptr + + * Extra function: a name and an evaluation function. + + d xmlXPathFuncPtr... + d s * based(######typedef######) + + d xmlXPathFunct ds based(xmlXPathFuncPtr) + d align qualified + d name * The function name + d func like(xmlXPathEvalFunc) Evaluation function + + * xmlXPathAxisFunc: + * @ctxt: the XPath interpreter context + * @cur: the previous node being explored on that axis + * + * An axis traversal function. To traverse an axis, the engine calls + * the first time with cur == NULL and repeat until the function returns + * NULL indicating the end of the axis traversal. + * + * Returns the next node in that axis or NULL if at the end of the axis. + + d xmlXPathAxisFunc... + d s * based(######typedef######) + d procptr + + * Extra axis: a name and an axis function. + + d xmlXPathAxisPtr... + d s * based(######typedef######) + + d xmlXPathAxis ds based(xmlXPathAxisPtr) + d align qualified + d name * The axis name + d func like(xmlXPathAxisFunc) The search function + + * xmlXPathFunction: + * @ctxt: the XPath interprestation context + * @nargs: the number of arguments + * + * An XPath function. + * The arguments (if any) are popped out from the context stack + * and the result is pushed on the stack. + + d xmlXPathFunction... + d s * based(######typedef######) + d procptr + + * Function and Variable Lookup. + + * xmlXPathVariableLookupFunc: + * @ctxt: an XPath context + * @name: name of the variable + * @ns_uri: the namespace name hosting this variable + * + * Prototype for callbacks used to plug variable lookup in the XPath + * engine. + * + * Returns the XPath object value or NULL if not found. + + d xmlXPathVariableLookupFunc... + d s * based(######typedef######) + d procptr + + * xmlXPathFuncLookupFunc: + * @ctxt: an XPath context + * @name: name of the function + * @ns_uri: the namespace name hosting this function + * + * Prototype for callbacks used to plug function lookup in the XPath + * engine. + * + * Returns the XPath function or NULL if not found. + + d xmlXPathFuncLookupFunc... + d s * based(######typedef######) + d procptr + + * xmlXPathFlags: + * Flags for XPath engine compilation and runtime + + * XML_XPATH_CHECKNS: + * + * check namespaces at compilation + + d XML_XPATH_CHECKNS... + d c X'0001' + + * XML_XPATH_NOVAR: + * + * forbid variables in expression + + d XML_XPATH_NOVAR... + d c X'0002' + + * xmlXPathContext: + * + * Expression evaluation occurs with respect to a context. + * he context consists of: + * - a node (the context node) + * - a node list (the context node list) + * - a set of variable bindings + * - a function library + * - the set of namespace declarations in scope for the expression + * Following the switch to hash tables, this need to be trimmed up at + * the next binary incompatible release. + * The node may be modified when the context is passed to libxml2 + * for an XPath evaluation so you may need to initialize it again + * before the next call. + + d xmlXPathContext... + d ds based(xmlXPathContextPtr) + d align qualified + d doc like(xmlDocPtr) Current document + d node like(xmlNodePtr) Current node + * + d nb_variables_unused... Unused (hash table) + d like(xmlCint) + d max_variables_unused... Unused (hash table) + d like(xmlCint) + d varHash like(xmlHashTablePtr) Defined variables + * + d nb_types like(xmlCint) # of defined types + d max_types like(xmlCint) Max number of types + d types like(xmlXPathTypePtr) Defined types array + * + d nb_funcs_unused... Unused (hash table) + d like(xmlCint) + d max_funcs_unused... Unused (hash table) + d like(xmlCint) + d funcHash like(xmlHashTablePtr) Defined functions + * + d nb_axis like(xmlCint) # of defined axis + d max_axis like(xmlCint) Max number of axis + d axis like(xmlXPathAxisPtr) Defined axis array + * + * the namespace nodes of the context node + * + d namespaces * xmlNsPtr * + d nsNr like(xmlCint) # scope namespaces + d user * procptr Function to free + * + * extra variables + * + d contextSize like(xmlCint) The context size + d proximityPosition... + d like(xmlCint) + * + * extra stuff for XPointer + * + d xptr like(xmlCint) XPointer context ? + d here like(xmlNodePtr) For here() + d origin like(xmlNodePtr) For origin() + * + * the set of namespace declarations in scope for the expression + * + d nsHash like(xmlHashTablePtr) Namespace hashtable + d varLookupFunc like(xmlXPathVariableLookupFunc) Var lookup function + d varLookupData * void * + * + * Possibility to link in an extra item + * + d extra * void * + * + * The function name and URI when calling a function + * + d function * const xmlChar * + d functionURI * const xmlChar * + * + * function lookup function and data + * + d funcLookupFunc... Func lookup func + d like(xmlXPathVariableLookupFunc) + d funcLookupData... void * + d * + * + * temporary namespace lists kept for walking the namespace axis + * + d tmpNsList * xmlNsPtr * + d tmpNsNr like(xmlCint) # scope namespaces + * + * error reporting mechanism + * + d userData * void * + d error like(xmlStructuredErrorFunc) Error callback + d lastError likeds(xmlError) The last error + d debugNode like(xmlNodePtr) XSLT source node + * + * dictionary + * + d dict like(xmlDictPtr) Dictionary if any + * + d flags like(xmlCint) Compilation control + * + * Cache for reusal of XPath objects + * + d cache * void * + + * The structure of a compiled expression form is not public. + + d xmlXPathCompExprPtr... + d s * based(######typedef######) + + * xmlXPathParserContext: + * + * An XPath parser context. It contains pure parsing informations, + * an xmlXPathContext, and the stack of objects. + + d xmlXPathParserContext... + d ds based(xmlXPathParserContextPtr) + d align qualified + d cur * const xmlChar * + d base * const xmlChar * + * + d error like(xmlCint) Error code + * + d context like(xmlXPathContextPtr) Evaluation context + d value like(xmlXPathObjectPtr) The current value + d valueNr like(xmlCint) Value stack depth + d valueMax like(xmlCint) Max stack depth + d valueTab * xmlXPathObjectPtr * + * + d comp like(xmlXPathCompExprPtr) Precompiled expr. + d xptr like(xmlCint) XPointer expression? + d ancestor like(xmlNodePtr) To walk prec. axis + * + d valueFrame like(xmlCint) Limit stack pop + + ************************************************************************** + * * + * Public API * + * * + ************************************************************************** + + * Objects and Nodesets handling + + d xmlXPathNAN s import('xmlXPathNAN') + d like(xmlCdouble) + + d xmlXPathPINF s import('xmlXPathPINF') + d like(xmlCdouble) + + d xmlXPathNINF s import('xmlXPathNINF') + d like(xmlCdouble) + + d xmlXPathFreeObject... + d pr extproc('xmlXPathFreeObject') + d obj value like(xmlXPathObjectPtr) + + d xmlXPathNodeSetCreate... + d pr extproc('xmlXPathNodeSetCreate') + d like(xmlNodeSetPtr) + d val value like(xmlNodePtr) + + d xmlXPathFreeNodeSetList... + d pr extproc('xmlXPathFreeNodeSetList') + d obj value like(xmlXPathObjectPtr) + + d xmlXPathFreeNodeSet... + d pr extproc('xmlXPathFreeNodeSet') + d obj value like(xmlNodeSetPtr) + + d xmlXPathObjectCopy... + d pr extproc('xmlXPathObjectCopy') + d like(xmlXPathObjectPtr) + d val value like(xmlXPathObjectPtr) + + d xmlXPathCmpNodes... + d pr extproc('xmlXPathCmpNodes') + d like(xmlCint) + d node1 value like(xmlNodePtr) + d node2 value like(xmlNodePtr) + + * Conversion functions to basic types. + + d xmlXPathCastNumberToBoolean... + d pr extproc( + d 'xmlXPathCastNumberToBoolean') + d like(xmlCint) + d val value like(xmlCdouble) + + d xmlXPathCastStringToBoolean... + d pr extproc( + d 'xmlXPathCastStringToBoolean') + d like(xmlCint) + d val * value options(*string) const xmlChar * + + d xmlXPathCastNodeSetToBoolean... + d pr extproc( + d 'xmlXPathCastNodeSetToBoolean') + d like(xmlCint) + d ns value like(xmlNodeSetPtr) + + d xmlXPathCastToBoolean... + d pr extproc('xmlXPathCastToBoolean') + d like(xmlCint) + d val value like(xmlXPathObjectPtr) + + d xmlXPathCastBooleanToNumber... + d pr extproc( + d 'xmlXPathCastBooleanToNumber') + d like(xmlCdouble) + d val value like(xmlCint) + + d xmlXPathCastStringToNumber... + d pr extproc('xmlXPathCastStringToNumber') + d like(xmlCdouble) + d val * value options(*string) const xmlChar * + + d xmlXPathCastNodeToNumber... + d pr extproc('xmlXPathCastNodeToNumber') + d like(xmlCdouble) + d node value like(xmlNodePtr) + + d xmlXPathCastNodeSetToNumber... + d pr extproc( + d 'xmlXPathCastNodeSetToNumber') + d like(xmlCdouble) + d ns value like(xmlNodeSetPtr) + + d xmlXPathCastToNumber... + d pr extproc('xmlXPathCastToNumber') + d like(xmlCdouble) + d val value like(xmlXPathObjectPtr) + + d xmlXPathCastBooleanToString... + d pr * extproc( xmlChar * + d 'xmlXPathCastBooleanToString') + d val value like(xmlCint) + + d xmlXPathCastNumberToString... + d pr * extproc('xmlXPathCastNumberToString')xmlChar * + d val value like(xmlCdouble) + + d xmlXPathCastNodeToString... + d pr * extproc('xmlXPathCastNodeToString') xmlChar * + d node value like(xmlNodePtr) + + d xmlXPathCastNodeSetToString... + d pr * extproc('xmlXPathCastNodeSetToString'xmlChar * + d ) + d ns value like(xmlNodeSetPtr) + + d xmlXPathCastToString... + d pr * extproc('xmlXPathCastToString') xmlChar * + d val value like(xmlXPathObjectPtr) + + d xmlXPathConvertBoolean... + d pr extproc('xmlXPathConvertBoolean') + d like(xmlXPathObjectPtr) + d val value like(xmlXPathObjectPtr) + + d xmlXPathConvertNumber... + d pr extproc('xmlXPathConvertNumber') + d like(xmlXPathObjectPtr) + d val value like(xmlXPathObjectPtr) + + d xmlXPathConvertString... + d pr extproc('xmlXPathConvertString') + d like(xmlXPathObjectPtr) + d val value like(xmlXPathObjectPtr) + + * Context handling. + + d xmlXPathNewContext... + d pr extproc('xmlXPathNewContext') + d like(xmlXPathContextPtr) + d doc value like(xmlDocPtr) + + d xmlXPathFreeContext... + d pr extproc('xmlXPathFreeContext') + d ctxt value like(xmlXPathContextPtr) + + d xmlXPathContextSetCache... + d pr extproc('xmlXPathContextSetCache') + d like(xmlCint) + d ctxt value like(xmlXPathContextPtr) + d active value like(xmlCint) + d value value like(xmlCint) + d options value like(xmlCint) + + * Evaluation functions. + + d xmlXPathOrderDocElems... + d pr extproc('xmlXPathOrderDocElems') + d like(xmlClong) + d doc value like(xmlDocPtr) + + d xmlXPathSetContextNode... + d pr extproc('xmlXPathSetContextNode') + d like(xmlCint) + d node value like(xmlNodePtr) + d ctx value like(xmlXPathContextPtr) + + d xmlXPathNodeEval... + d pr extproc('xmlXPathNodeEval') + d like(xmlXPathObjectPtr) + d node value like(xmlNodePtr) + d str * value options(*string) const xmlChar * + d ctx value like(xmlXPathContextPtr) + + d xmlXPathEval pr extproc('xmlXPathEval') + d like(xmlXPathObjectPtr) + d str * value options(*string) const xmlChar * + d ctx value like(xmlXPathContextPtr) + + d xmlXPathEvalExpression... + d pr extproc('xmlXPathEvalExpression') + d like(xmlXPathObjectPtr) + d str * value options(*string) const xmlChar * + d ctxt value like(xmlXPathContextPtr) + + d xmlXPathEvalPredicate... + d pr extproc('xmlXPathEvalPredicate') + d like(xmlCint) + d ctxt value like(xmlXPathContextPtr) + d res value like(xmlXPathObjectPtr) + + * Separate compilation/evaluation entry points. + + d xmlXPathCompile... + d pr extproc('xmlXPathCompile') + d like(xmlXPathCompExprPtr) + d str * value options(*string) const xmlChar * + + d xmlXPathCtxtCompile... + d pr extproc('xmlXPathCtxtCompile') + d like(xmlXPathCompExprPtr) + d ctxt value like(xmlXPathContextPtr) + d str * value options(*string) const xmlChar * + + d xmlXPathCompiledEval... + d pr extproc('xmlXPathCompiledEval') + d like(xmlXPathObjectPtr) + d comp value like(xmlXPathCompExprPtr) + d ctx value like(xmlXPathContextPtr) + + d xmlXPathCompiledEvalToBoolean... + d pr extproc( + d 'xmlXPathCompiledEvalToBoolean') + d like(xmlCint) + d comp value like(xmlXPathCompExprPtr) + d ctxt value like(xmlXPathContextPtr) + + d xmlXPathFreeCompExpr... + d pr extproc('xmlXPathFreeCompExpr') + d comp value like(xmlXPathCompExprPtr) + /endif LIBXML_XPATH_ENABLED + + /undefine XML_TESTVAL + /if defined(LIBXML_XPATH_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_SCHEMAS_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlXPathInit pr extproc('xmlXPathInit') + + d xmlXPathIsNaN pr extproc('xmlXPathIsNaN') + d like(xmlCint) + d val value like(xmlCdouble) + + d xmlXPathIsInf pr extproc('xmlXPathIsInf') + d like(xmlCint) + d val value like(xmlCdouble) + + /undefine XML_TESTVAL + /endif + + * C macros implemented as procedures for ILE/RPG support. + + /if defined(LIBXML_XPATH_ENABLED) + d xmlXPathNodeSetGetLength... + d pr extproc('__xmlXPathNodeSetGetLength') + d like(xmlCint) + d ns value like(xmlNodeSetPtr) + + d xmlXPathNodeSetItem... + d pr extproc('__xmlXPathNodeSetItem') + d like(xmlNodePtr) + d ns value like(xmlNodeSetPtr) + d index value like(xmlCint) + + d xmlXPathNodeSetIsEmpty... + d pr extproc('__xmlXPathNodeSetIsEmpty') + d like(xmlCint) + d ns value like(xmlNodeSetPtr) + /endif LIBXML_XPATH_ENABLED + /endif XML_XPATH_H__ diff --git a/libxml2/os400/libxmlrpg/xpathInternals.rpgle b/libxml2/os400/libxmlrpg/xpathInternals.rpgle new file mode 100644 index 0000000..a6d12e1 --- /dev/null +++ b/libxml2/os400/libxmlrpg/xpathInternals.rpgle @@ -0,0 +1,693 @@ + * Summary: internal interfaces for XML Path Language implementation + * Description: internal interfaces for XML Path Language implementation + * used to build new modules on top of XPath like XPointer and + * XSLT + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_XPATH_INTERNALS_H__) + /define XML_XPATH_INTERNALS_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_XPATH_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/xpath" + + ************************************************************************ + * * + * Helpers * + * * + ************************************************************************ + + * Many of these macros may later turn into functions. They + * shouldn't be used in #ifdef's preprocessor instructions. + + d xmlXPathPopBoolean... + d pr extproc('xmlXPathPopBoolean') + d like(xmlCint) + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathPopNumber... + d pr extproc('xmlXPathPopNumber') + d like(xmlCdouble) + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathPopString... + d pr * extproc('xmlXPathPopString') xmlChar * + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathPopNodeSet... + d pr extproc('xmlXPathPopNodeSet') + d like(xmlNodeSetPtr) + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathPopExternal... + d pr * extproc('xmlXPathPopExternal') void * + d ctxt value like(xmlXPathParserContextPtr) + + * Variable Lookup forwarding. + + d xmlXPathRegisterVariableLookup... + d pr extproc( + d 'xmlXPathRegisterVariableLookup') + d ctxt value like(xmlXPathContextPtr) + d f value + d like(xmlXPathVariableLookupFunc) + d data * value void * + + * Function Lookup forwarding. + + d xmlXPathRegisterFuncLookup... + d pr extproc('xmlXPathRegisterFuncLookup') + d ctxt value like(xmlXPathContextPtr) + d f value like(xmlXPathFuncLookupFunc) + d funcCtxt * value void * + + * Error reporting. + * Note this procedure is renamed in RPG to avoid character case clash with + * data type xmlXPathError. + + d xmlXPathReportError... + d pr extproc('xmlXPatherror') + d ctxt value like(xmlXPathParserContextPtr) + d file * value options(*string) const char * + d line value like(xmlCint) + d no value like(xmlCint) + + d xmlXPathErr pr extproc('xmlXPathErr') + d ctxt value like(xmlXPathParserContextPtr) + d error value like(xmlCint) + + /if defined(LIBXML_DEBUG_ENABLED) + d xmlXPathDebugDumpObject... + d pr extproc('xmlXPathDebugDumpObject') + d output * value FILE * + d cur value like(xmlXPathObjectPtr) + d depth value like(xmlCint) + + d xmlXPathDebugDumpCompExpr... + d pr extproc('xmlXPathDebugDumpCompExpr') + d output * value FILE * + d comp value like(xmlXPathCompExprPtr) + d depth value like(xmlCint) + /endif + + * NodeSet handling. + + d xmlXPathNodeSetContains... + d pr extproc('xmlXPathNodeSetContains') + d like(xmlCint) + d cur value like(xmlNodeSetPtr) + d val value like(xmlNodePtr) + + d xmlXPathDifference... + d pr extproc('xmlXPathDifference') + d like(xmlNodeSetPtr) + d nodes1 value like(xmlNodeSetPtr) + d nodes2 value like(xmlNodeSetPtr) + + d xmlXPathIntersection... + d pr extproc('xmlXPathIntersection') + d like(xmlNodeSetPtr) + d nodes1 value like(xmlNodeSetPtr) + d nodes2 value like(xmlNodeSetPtr) + + d xmlXPathDistinctSorted... + d pr extproc('xmlXPathDistinctSorted') + d like(xmlNodeSetPtr) + d nodes value like(xmlNodeSetPtr) + + d xmlXPathDistinct... + d pr extproc('xmlXPathDistinct') + d like(xmlNodeSetPtr) + d nodes value like(xmlNodeSetPtr) + + d xmlXPathHasSameNodes... + d pr extproc('xmlXPathHasSameNodes') + d like(xmlCint) + d nodes1 value like(xmlNodeSetPtr) + d nodes2 value like(xmlNodeSetPtr) + + d xmlXPathNodeLeadingSorted... + d pr extproc('xmlXPathNodeLeadingSorted') + d like(xmlNodeSetPtr) + d nodes value like(xmlNodeSetPtr) + d node value like(xmlNodePtr) + + d xmlXPathLeadingSorted... + d pr extproc('xmlXPathLeadingSorted') + d like(xmlNodeSetPtr) + d nodes1 value like(xmlNodeSetPtr) + d nodes2 value like(xmlNodeSetPtr) + + d xmlXPathNodeLeading... + d pr extproc('xmlXPathNodeLeading') + d like(xmlNodeSetPtr) + d nodes value like(xmlNodeSetPtr) + d node value like(xmlNodePtr) + + d xmlXPathLeading... + d pr extproc('xmlXPathLeading') + d like(xmlNodeSetPtr) + d nodes1 value like(xmlNodeSetPtr) + d nodes2 value like(xmlNodeSetPtr) + + d xmlXPathNodeTrailingSorted... + d pr extproc('xmlXPathNodeTrailingSorted') + d like(xmlNodeSetPtr) + d nodes value like(xmlNodeSetPtr) + d node value like(xmlNodePtr) + + d xmlXPathTrailingSorted... + d pr extproc('xmlXPathTrailingSorted') + d like(xmlNodeSetPtr) + d nodes1 value like(xmlNodeSetPtr) + d nodes2 value like(xmlNodeSetPtr) + + d xmlXPathNodeTrailing... + d pr extproc('xmlXPathNodeTrailing') + d like(xmlNodeSetPtr) + d nodes value like(xmlNodeSetPtr) + d node value like(xmlNodePtr) + + d xmlXPathTrailing... + d pr extproc('xmlXPathTrailing') + d like(xmlNodeSetPtr) + d nodes1 value like(xmlNodeSetPtr) + d nodes2 value like(xmlNodeSetPtr) + + * Extending a context. + + d xmlXPathRegisterNs... + d pr extproc('xmlXPathRegisterNs') + d like(xmlCint) + d ctxt value like(xmlXPathContextPtr) + d prefix * value options(*string) const xmlChar * + d ns_uri * value options(*string) const xmlChar * + + d xmlXPathNsLookup... + d pr * extproc('xmlXPathNsLookup') const xmlChar * + d ctxt value like(xmlXPathContextPtr) + d prefix * value options(*string) const xmlChar * + + d xmlXPathRegisteredNsCleanup... + d pr extproc( + d 'xmlXPathRegisteredNsCleanup') + d ctxt value like(xmlXPathContextPtr) + + d xmlXPathRegisterFunc... + d pr extproc('xmlXPathRegisterFunc') + d like(xmlCint) + d ctxt value like(xmlXPathContextPtr) + d name * value options(*string) const xmlChar * + d f value like(xmlXPathFunction) + + d xmlXPathRegisterFuncNS... + d pr extproc('xmlXPathRegisterFuncNS') + d like(xmlCint) + d ctxt value like(xmlXPathContextPtr) + d name * value options(*string) const xmlChar * + d ns_uri * value options(*string) const xmlChar * + d f value like(xmlXPathFunction) + + d xmlXPathRegisterVariable... + d pr extproc('xmlXPathRegisterVariable') + d like(xmlCint) + d ctxt value like(xmlXPathContextPtr) + d name * value options(*string) const xmlChar * + d value value like(xmlXPathObjectPtr) + + d xmlXPathRegisterVariableNS... + d pr extproc('xmlXPathRegisterVariableNS') + d like(xmlCint) + d ctxt value like(xmlXPathContextPtr) + d name * value options(*string) const xmlChar * + d ns_uri * value options(*string) const xmlChar * + d value value like(xmlXPathObjectPtr) + + d xmlXPathFunctionLookup... + d pr extproc('xmlXPathFunctionLookup') + d like(xmlXPathFunction) + d ctxt value like(xmlXPathContextPtr) + d name * value options(*string) const xmlChar * + + d xmlXPathFunctionLookupNS... + d pr extproc('xmlXPathFunctionLookupNS') + d like(xmlXPathFunction) + d ctxt value like(xmlXPathContextPtr) + d name * value options(*string) const xmlChar * + d ns_uri * value options(*string) const xmlChar * + + d xmlXPathRegisteredFuncsCleanup... + d pr extproc( + d 'xmlXPathRegisteredFuncsCleanup') + d ctxt value like(xmlXPathContextPtr) + + d xmlXPathVariableLookup... + d pr extproc('xmlXPathVariableLookup') + d like(xmlXPathObjectPtr) + d ctxt value like(xmlXPathContextPtr) + d name * value options(*string) const xmlChar * + + d xmlXPathVariableLookupNS... + d pr extproc('xmlXPathVariableLookupNS') + d like(xmlXPathObjectPtr) + d ctxt value like(xmlXPathContextPtr) + d name * value options(*string) const xmlChar * + d ns_uri * value options(*string) const xmlChar * + + d xmlXPathRegisteredVariablesCleanup... + d pr extproc( + d 'xmlXPathRegisteredVariablesCleanup') + d ctxt value like(xmlXPathContextPtr) + + * Utilities to extend XPath. + + d xmlXPathNewParserContext... + d pr extproc('xmlXPathNewParserContext') + d like(xmlXPathParserContextPtr) + d str * value options(*string) const xmlChar * + d ctxt value like(xmlXPathContextPtr) + + d xmlXPathFreeParserContext... + d pr extproc('xmlXPathFreeParserContext') + d ctxt value like(xmlXPathParserContextPtr) + + + * TODO: remap to xmlXPathValuePop and Push. + + d valuePop pr extproc('valuePop') + d like(xmlXPathObjectPtr) + d ctxt value like(xmlXPathParserContextPtr) + + d valuePush pr extproc('valuePush') + d like(xmlCint) + d ctxt value like(xmlXPathParserContextPtr) + d value value like(xmlXPathObjectPtr) + + d xmlXPathNewString... + d pr extproc('xmlXPathNewString') + d like(xmlXPathObjectPtr) + d val * value options(*string) const xmlChar * + + d xmlXPathNewCString... + d pr extproc('xmlXPathNewCString') + d like(xmlXPathObjectPtr) + d val * value options(*string) const char * + + d xmlXPathWrapString... + d pr extproc('xmlXPathWrapString') + d like(xmlXPathObjectPtr) + d val * value options(*string) xmlChar * + + d xmlXPathWrapCString... + d pr extproc('xmlXPathWrapCString') + d like(xmlXPathObjectPtr) + d val * value options(*string) char * + + d xmlXPathNewFloat... + d pr extproc('xmlXPathNewFloat') + d like(xmlXPathObjectPtr) + d val value like(xmlCdouble) + + d xmlXPathNewBoolean... + d pr extproc('xmlXPathNewBoolean') + d like(xmlXPathObjectPtr) + d val value like(xmlCint) + + d xmlXPathNewNodeSet... + d pr extproc('xmlXPathNewNodeSet') + d like(xmlXPathObjectPtr) + d val value like(xmlNodePtr) + + d xmlXPathNewValueTree... + d pr extproc('xmlXPathNewValueTree') + d like(xmlXPathObjectPtr) + d val value like(xmlNodePtr) + + d xmlXPathNodeSetAdd... + d pr extproc('xmlXPathNodeSetAdd') + d like(xmlCint) + d cur value like(xmlNodeSetPtr) + d val value like(xmlNodePtr) + + d xmlXPathNodeSetAddUnique... + d pr extproc('xmlXPathNodeSetAddUnique') + d like(xmlCint) + d cur value like(xmlNodeSetPtr) + d val value like(xmlNodePtr) + + d xmlXPathNodeSetAddNs... + d pr extproc('xmlXPathNodeSetAddNs') + d like(xmlCint) + d cur value like(xmlNodeSetPtr) + d node value like(xmlNodePtr) + d ns value like(xmlNsPtr) + + d xmlXPathNodeSetSort... + d pr extproc('xmlXPathNodeSetSort') + d set value like(xmlNodeSetPtr) + + d xmlXPathRoot pr extproc('xmlXPathRoot') + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathEvalExpr... + d pr extproc('xmlXPathEvalExpr') + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathParseName... + d pr * extproc('xmlXPathParseName') xmlChar * + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathParseNCName... + d pr * extproc('xmlXPathParseNCName') xmlChar * + d ctxt value like(xmlXPathParserContextPtr) + + * Existing functions. + + d xmlXPathStringEvalNumber... + d pr extproc('xmlXPathStringEvalNumber') + d like(xmlCdouble) + d str * value options(*string) const xmlChar * + + d xmlXPathEvaluatePredicateResult... + d pr extproc( + d 'xmlXPathEvaluatePredicateResult') + d like(xmlCint) + d ctxt value like(xmlXPathParserContextPtr) + d res value like(xmlXPathObjectPtr) + + d xmlXPathRegisterAllFunctions... + d pr extproc( + d 'xmlXPathRegisterAllFunctions') + d ctxt value like(xmlXPathContextPtr) + + d xmlXPathNodeSetMerge... + d pr extproc('xmlXPathNodeSetMerge') + d like(xmlNodeSetPtr) + d val1 value like(xmlNodeSetPtr) + d val2 value like(xmlNodeSetPtr) + + d xmlXPathNodeSetDel... + d pr extproc('xmlXPathNodeSetDel') + d cur value like(xmlNodeSetPtr) + d val value like(xmlNodePtr) + + d xmlXPathNodeSetRemove... + d pr extproc('xmlXPathNodeSetRemove') + d cur value like(xmlNodeSetPtr) + d val value like(xmlCint) + + d xmlXPathNewNodeSetList... + d pr extproc('xmlXPathNewNodeSetList') + d like(xmlXPathObjectPtr) + d val value like(xmlNodeSetPtr) + + d xmlXPathWrapNodeSet... + d pr extproc('xmlXPathWrapNodeSet') + d like(xmlXPathObjectPtr) + d val value like(xmlNodeSetPtr) + + d xmlXPathWrapExternal... + d pr extproc('xmlXPathWrapExternal') + d like(xmlXPathObjectPtr) + d val * value void * + + d xmlXPathEqualValues... + d pr extproc('xmlXPathEqualValues') + d like(xmlCint) + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathNotEqualValues... + d pr extproc('xmlXPathNotEqualValues') + d like(xmlCint) + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathCompareValues... + d pr extproc('xmlXPathCompareValues') + d like(xmlCint) + d ctxt value like(xmlXPathParserContextPtr) + d inf value like(xmlCint) + d strict value like(xmlCint) + + d xmlXPathValueFlipSign... + d pr extproc('xmlXPathValueFlipSign') + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathAddValues... + d pr extproc('xmlXPathAddValues') + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathSubValues... + d pr extproc('xmlXPathSubValues') + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathMultValues... + d pr extproc('xmlXPathMultValues') + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathDivValues... + d pr extproc('xmlXPathDivValues') + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathModValues... + d pr extproc('xmlXPathModValues') + d ctxt value like(xmlXPathParserContextPtr) + + d xmlXPathIsNodeType... + d pr extproc('xmlXPathIsNodeType') + d like(xmlCint) + d name * value options(*string) const xmlChar * + + * Some of the axis navigation routines. + + d xmlXPathNextSelf... + d pr extproc('xmlXPathNextSelf') + d like(xmlNodePtr) + d ctxt value like(xmlXPathParserContextPtr) + d cur value like(xmlNodePtr) + + d xmlXPathNextChild... + d pr extproc('xmlXPathNextChild') + d like(xmlNodePtr) + d ctxt value like(xmlXPathParserContextPtr) + d cur value like(xmlNodePtr) + + d xmlXPathNextDescendant... + d pr extproc('xmlXPathNextDescendant') + d like(xmlNodePtr) + d ctxt value like(xmlXPathParserContextPtr) + d cur value like(xmlNodePtr) + + d xmlXPathNextDescendantOrSelf... + d pr extproc( + d 'xmlXPathNextDescendantOrSelf') + d like(xmlNodePtr) + d ctxt value like(xmlXPathParserContextPtr) + d cur value like(xmlNodePtr) + + d xmlXPathNextParent... + d pr extproc('xmlXPathNextParent') + d like(xmlNodePtr) + d ctxt value like(xmlXPathParserContextPtr) + d cur value like(xmlNodePtr) + + d xmlXPathNextAncestorOrSelf... + d pr extproc('xmlXPathNextAncestorOrSelf') + d like(xmlNodePtr) + d ctxt value like(xmlXPathParserContextPtr) + d cur value like(xmlNodePtr) + + d xmlXPathNextFollowingSibling... + d pr extproc( + d 'xmlXPathNextFollowingSibling') + d like(xmlNodePtr) + d ctxt value like(xmlXPathParserContextPtr) + d cur value like(xmlNodePtr) + + d xmlXPathNextFollowing... + d pr extproc('xmlXPathNextFollowing') + d like(xmlNodePtr) + d ctxt value like(xmlXPathParserContextPtr) + d cur value like(xmlNodePtr) + + d xmlXPathNextNamespace... + d pr extproc('xmlXPathNextNamespace') + d like(xmlNodePtr) + d ctxt value like(xmlXPathParserContextPtr) + d cur value like(xmlNodePtr) + + d xmlXPathNextAttribute... + d pr extproc('xmlXPathNextAttribute') + d like(xmlNodePtr) + d ctxt value like(xmlXPathParserContextPtr) + d cur value like(xmlNodePtr) + + d xmlXPathNextPreceding... + d pr extproc('xmlXPathNextPreceding') + d like(xmlNodePtr) + d ctxt value like(xmlXPathParserContextPtr) + d cur value like(xmlNodePtr) + + d xmlXPathNextAncestor... + d pr extproc('xmlXPathNextAncestor') + d like(xmlNodePtr) + d ctxt value like(xmlXPathParserContextPtr) + d cur value like(xmlNodePtr) + + d xmlXPathNextPrecedingSibling... + d pr extproc( + d 'xmlXPathNextPrecedingSibling') + d like(xmlNodePtr) + d ctxt value like(xmlXPathParserContextPtr) + d cur value like(xmlNodePtr) + + * The official core of XPath functions. + + d xmlXPathLastFunction... + d pr extproc('xmlXPathLastFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathPositionFunction... + d pr extproc('xmlXPathPositionFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathCountFunction... + d pr extproc('xmlXPathCountFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathIdFunction... + d pr extproc('xmlXPathIdFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathLocalNameFunction... + d pr extproc('xmlXPathLocalNameFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathNamespaceURIFunction... + d pr extproc( + d 'xmlXPathNamespaceURIFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathStringFunction... + d pr extproc('xmlXPathStringFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathStringLengthFunction... + d pr extproc( + d 'xmlXPathStringLengthFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathConcatFunction... + d pr extproc('xmlXPathConcatFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathContainsFunction... + d pr extproc('xmlXPathContainsFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathStartsWithFunction... + d pr extproc('xmlXPathStartsWithFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathSubstringFunction... + d pr extproc('xmlXPathSubstringFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathSubstringBeforeFunction... + d pr extproc( + d 'xmlXPathSubstringBeforeFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathSubstringAfterFunction... + d pr extproc( + d 'xmlXPathSubstringAfterFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + + d xmlXPathNormalizeFunction... + d pr extproc('xmlXPathNormalizeFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathTranslateFunction... + d pr extproc('xmlXPathTranslateFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathNotFunction... + d pr extproc('xmlXPathNotFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathTrueFunction... + d pr extproc('xmlXPathTrueFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathFalseFunction... + d pr extproc('xmlXPathFalseFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathLangFunction... + d pr extproc('xmlXPathLangFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathNumberFunction... + d pr extproc('xmlXPathNumberFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathSumFunction... + d pr extproc('xmlXPathSumFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathFloorFunction... + d pr extproc('xmlXPathFloorFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathCeilingFunction... + d pr extproc('xmlXPathCeilingFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathRoundFunction... + d pr extproc('xmlXPathRoundFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPathBooleanFunction... + d pr extproc('xmlXPathBooleanFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + * Really internal functions + + d xmlXPathNodeSetFreeNs... + d pr extproc('xmlXPathNodeSetFreeNs') + d ns value like(xmlNsPtr) + + /endif LIBXML_XPATH_ENABLED + /endif XPATH_INTERNALS_H__ diff --git a/libxml2/os400/libxmlrpg/xpointer.rpgle b/libxml2/os400/libxmlrpg/xpointer.rpgle new file mode 100644 index 0000000..29ef0f3 --- /dev/null +++ b/libxml2/os400/libxmlrpg/xpointer.rpgle @@ -0,0 +1,158 @@ + * Summary: API to handle XML Pointers + * Description: API to handle XML Pointers + * Base implementation was made accordingly to + * W3C Candidate Recommendation 7 June 2000 + * http://www.w3.org/TR/2000/CR-xptr-20000607 + * + * Added support for the element() scheme described in: + * W3C Proposed Recommendation 13 November 2002 + * http://www.w3.org/TR/2002/PR-xptr-element-20021113/ + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_XPTR_H__) + /define XML_XPTR_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_XPTR_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/tree" + /include "libxmlrpg/xpath" + + * A Location Set + + d xmlLocationSetPtr... + d s * based(######typedef######) + + d xmlLocationSet ds based(xmlLocationSetPtr) + d align qualified + d locNr like(xmlCint) # locations in set + d locMax like(xmlCint) Max locations in set + d locTab * xmlXPathObjectPtr * + + * Handling of location sets. + + d xmlXPtrLocationSetCreate... + d pr extproc('xmlXPtrLocationSetCreate') + d like(xmlLocationSetPtr) + d val value like(xmlXPathObjectPtr) + + d xmlXPtrFreeLocationSet... + d pr extproc('xmlXPtrFreeLocationSet') + d obj value like(xmlLocationSetPtr) + + d xmlXPtrLocationSetMerge... + d pr extproc('xmlXPtrLocationSetMerge') + d like(xmlLocationSetPtr) + d val1 value like(xmlLocationSetPtr) + d val2 value like(xmlLocationSetPtr) + + d xmlXPtrNewRange... + d pr extproc('xmlXPtrNewRange') + d like(xmlXPathObjectPtr) + d start value like(xmlNodePtr) + d startindex value like(xmlCint) + d end value like(xmlNodePtr) + d endindex value like(xmlCint) + + d xmlXPtrNewRangePoints... + d pr extproc('xmlXPtrNewRangePoints') + d like(xmlXPathObjectPtr) + d start value like(xmlXPathObjectPtr) + d end value like(xmlXPathObjectPtr) + + d xmlXPtrNewRangeNodePoint... + d pr extproc('xmlXPtrNewRangeNodePoint') + d like(xmlXPathObjectPtr) + d start value like(xmlNodePtr) + d end value like(xmlXPathObjectPtr) + + d xmlXPtrNewRangePointNode... + d pr extproc('xmlXPtrNewRangePointNode') + d like(xmlXPathObjectPtr) + d start value like(xmlXPathObjectPtr) + d end value like(xmlNodePtr) + + d xmlXPtrNewRangeNodes... + d pr extproc('xmlXPtrNewRangeNodes') + d like(xmlXPathObjectPtr) + d start value like(xmlNodePtr) + d end value like(xmlNodePtr) + + d xmlXPtrNewLocationSetNodes... + d pr extproc('xmlXPtrNewLocationSetNodes') + d like(xmlXPathObjectPtr) + d start value like(xmlNodePtr) + d end value like(xmlNodePtr) + + d xmlXPtrNewLocationSetNodeSet... + d pr extproc( + d 'xmlXPtrNewLocationSetNodeSet') + d like(xmlXPathObjectPtr) + d set value like(xmlNodeSetPtr) + + d xmlXPtrNewRangeNodeObject... + d pr extproc('xmlXPtrNewRangeNodeObject') + d like(xmlXPathObjectPtr) + d start value like(xmlNodePtr) + d end value like(xmlXPathObjectPtr) + + d xmlXPtrNewCollapsedRange... + d pr extproc('xmlXPtrNewCollapsedRange') + d like(xmlXPathObjectPtr) + d start value like(xmlNodePtr) + + d xmlXPtrLocationSetAdd... + d pr extproc('xmlXPtrLocationSetAdd') + d cur value like(xmlLocationSetPtr) + d val value like(xmlXPathObjectPtr) + + d xmlXPtrWrapLocationSet... + d pr extproc('xmlXPtrWrapLocationSet') + d like(xmlXPathObjectPtr) + d val value like(xmlLocationSetPtr) + + d xmlXPtrLocationSetDel... + d pr extproc('xmlXPtrLocationSetDel') + d cur value like(xmlLocationSetPtr) + d val value like(xmlXPathObjectPtr) + + d xmlXPtrLocationSetRemove... + d pr extproc('xmlXPtrLocationSetRemove') + d cur value like(xmlLocationSetPtr) + d val value like(xmlCint) + + * Functions. + + d xmlXPtrNewContext... + d pr extproc('xmlXPtrNewContext') + d like(xmlXPathContextPtr) + d doc value like(xmlDocPtr) + d here value like(xmlNodePtr) + d origin value like(xmlNodePtr) + + d xmlXPtrEval pr extproc('xmlXPtrEval') + d like(xmlXPathObjectPtr) + d str * value options(*string) const xmlChar * + d ctx value like(xmlXPathContextPtr) + + d xmlXPtrRangeToFunction... + d pr extproc('xmlXPtrRangeToFunction') + d ctxt value like(xmlXPathParserContextPtr) + d nargs value like(xmlCint) + + d xmlXPtrBuildNodeList... + d pr extproc('xmlXPtrBuildNodeList') + d like(xmlNodePtr) + d obj value like(xmlXPathObjectPtr) + + d xmlXPtrEvalRangePredicate... + d pr extproc('xmlXPtrEvalRangePredicate') + d ctxt value like(xmlXPathParserContextPtr) + + /endif LIBXML_XPTR_ENABLED + /endif XML_XPTR_H__ diff --git a/libxml2/os400/make-bldcsndfa.sh b/libxml2/os400/make-bldcsndfa.sh new file mode 100644 index 0000000..57cf012 --- /dev/null +++ b/libxml2/os400/make-bldcsndfa.sh @@ -0,0 +1,43 @@ +#!/bin/sh +# +# Compilation script for the iconv names DFA builer. +# +# See Copyright for the status of this software. +# +# Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +# + +SCRIPTDIR=`dirname "${0}"` +. "${SCRIPTDIR}/initscript.sh" +cd "${TOPDIR}/os400/iconv/bldcsndfa" + + +# This is for old XML library (bootstrapping). +#rm -rf xml.h xml +#ln -s /QSYS.LIB/XML.LIB/H.FILE/XML.MBR xml.h +#mkdir xml +#mkdir xml/h +#ln -s /QSYS.LIB/XML.LIB/H.FILE/UTF8.MBR xml/h/utf8 + + +# Compile. + +CMD="CRTCMOD MODULE(${TARGETLIB}/BLDCSNDFA) SRCSTMF('bldcsndfa.c')" +CMD="${CMD} SYSIFCOPT(*IFS64IO) LANGLVL(*EXTENDED) LOCALETYPE(*LOCALE)" +CMD="${CMD} INCDIR(" +CMD="${CMD} '${IFSDIR}/include' ${INCLUDES})" +CMD="${CMD} TGTCCSID(${TGTCCSID}) TGTRLS(${TGTRLS})" +CMD="${CMD} OUTPUT(${OUTPUT})" +CMD="${CMD} OPTIMIZE(10)" +CMD="${CMD} DBGVIEW(${DEBUG})" +#CMD="${CMD} DEFINE('OLDXML' 'xmlXPathSetContextNode=xmlXPathSetCurrentNode')" + +system "${CMD}" + +# Link + +CMD="CRTPGM PGM(${TARGETLIB}/BLDCSNDFA) MODULE(${TARGETLIB}/BLDCSNDFA)" +CMD="${CMD} BNDDIR(${TARGETLIB}/${DYNBNDDIR})" +#CMD="${CMD} BNDDIR(XML/XML)" +CMD="${CMD} TGTRLS(${TGTRLS})" +system "${CMD}" diff --git a/libxml2/os400/make-include.sh b/libxml2/os400/make-include.sh new file mode 100644 index 0000000..4e5b058 --- /dev/null +++ b/libxml2/os400/make-include.sh @@ -0,0 +1,81 @@ +#!/bin/sh +# +# Installation of the C header files in the OS/400 library. +# +# See Copyright for the status of this software. +# +# Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +# + +SCRIPTDIR=`dirname "${0}"` +. "${SCRIPTDIR}/initscript.sh" +cd "${TOPDIR}/include" + + +# Create the OS/400 source program file for the C header files. + +SRCPF="${LIBIFSNAME}/LIBXML.FILE" + +if action_needed "${SRCPF}" +then CMD="CRTSRCPF FILE(${TARGETLIB}/LIBXML) RCDLEN(112)" + CMD="${CMD} CCSID(${TGTCCSID}) TEXT('libxml2: C/C++ header files')" + system "${CMD}" +fi + + +# Create the IFS directory for the C header files. + +if action_needed "${IFSDIR}/include/libxml" +then mkdir -p "${IFSDIR}/include/libxml" +fi + + + +# Enumeration values may be used as va_arg tagfields, so they MUST be +# integers. + +copy_hfile() + +{ + sed -e '1i\ +#pragma enum(int)\ +' "${@}" -e '$a\ +#pragma enum(pop)\ +' +} + +# Copy the header files to DB2 library. Link from IFS include directory. + +for HFILE in "${TOPDIR}/os400/transcode.h" libxml/*.h libxml/*.h.in +do CMD="cat \"${HFILE}\"" + DEST="${SRCPF}/`db2_name \"${HFILE}\" nomangle`.MBR" + + case "`basename \"${HFILE}\"`" in + + xmlwin32version.h*) + continue;; # Not on M$W ! + + *.in) CMD="${CMD} | versioned_copy";; + + xmlschemastypes.h) # Special case: rename colliding file. + DEST="${SRCPF}/SCHMTYPES.MBR";; + + esac + + if action_needed "${DEST}" "${HFILE}" + then eval "${CMD}" | copy_hfile > tmphdrfile + + # Need to translate to target CCSID. + + CMD="CPY OBJ('`pwd`/tmphdrfile') TOOBJ('${DEST}')" + CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)" + system "${CMD}" + fi + + IFSFILE="${IFSDIR}/include/libxml/`basename \"${HFILE}\" .in`" + + if action_needed "${IFSFILE}" "${DEST}" + then rm -f "${IFSFILE}" + ln -s "${DEST}" "${IFSFILE}" + fi +done diff --git a/libxml2/os400/make-rpg.sh b/libxml2/os400/make-rpg.sh new file mode 100644 index 0000000..664b47b --- /dev/null +++ b/libxml2/os400/make-rpg.sh @@ -0,0 +1,100 @@ +#!/bin/sh +# +# Installation of the ILE/RPG header files in the OS/400 library. +# +# See Copyright for the status of this software. +# +# Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +# + +SCRIPTDIR=`dirname "${0}"` +. "${SCRIPTDIR}/initscript.sh" +cd "${TOPDIR}/os400/libxmlrpg" + + +# Create the OS/400 source program file for the ILE/RPG header files. + +SRCPF="${LIBIFSNAME}/LIBXMLRPG.FILE" + +if action_needed "${SRCPF}" +then CMD="CRTSRCPF FILE(${TARGETLIB}/LIBXMLRPG) RCDLEN(112)" + CMD="${CMD} CCSID(${TGTCCSID}) TEXT('libxml2: ILE/RPG header files')" + system "${CMD}" +fi + + +# Map file names to DB2 name syntax. + +for HFILE in *.rpgle *.rpgle.in +do NAME="`basename \"${HFILE}\" .in`" + VAR="`basename \"${NAME}\" .rpgle`" + VAL="`db2_name \"${NAME}\" nomangle`" + + if [ "${VAR}" = 'xmlschemastypes' ] + then VAL=SCHMTYPES + fi + + eval "VAR_${VAR}=\"${VAL}\"" + echo "${VAR} s/${VAR}/${VAL}/g" +done > tmpsubstfile1 + +# Order substitution commands so that a prefix appears after all +# file names beginning with the prefix. + +sort -r tmpsubstfile1 | sed 's/^[^ ]*[ ]*//' > tmpsubstfile2 + + +change_include() + +{ + sed -e '\#^....../include *"libxmlrpg/#{' \ + -e 's///' \ + -e 's/".*//' \ + -f tmpsubstfile2 \ + -e 's#.*# /include libxmlrpg,&#' \ + -e '}' +} + + +# Create the IFS directory for the ILE/RPG header files. + +RPGIFSDIR="${IFSDIR}/include/libxmlrpg" + +if action_needed "${RPGIFSDIR}" +then mkdir -p "${RPGIFSDIR}" +fi + +# Copy the header files to IFS ILE/RPG include directory. +# Copy them with include path editing to the DB2 library. + +for HFILE in *.rpgle *.rpgle.in +do IFSCMD="cat \"${HFILE}\"" + DB2CMD="change_include < \"${HFILE}\"" + IFSFILE="`basename \"${HFILE}\" .in`" + + case "${HFILE}" in + + *.in) IFSCMD="${IFSCMD} | versioned_copy" + DB2CMD="${DB2CMD} | versioned_copy" + ;; + esac + + IFSDEST="${RPGIFSDIR}/${IFSFILE}" + + if action_needed "${IFSDEST}" "${HFILE}" + then eval "${IFSCMD}" > "${IFSDEST}" + fi + + eval DB2MBR="\"\${VAR_`basename \"${IFSDEST}\" .rpgle`}\"" + DB2DEST="${SRCPF}/${DB2MBR}.MBR" + + if action_needed "${DB2DEST}" "${HFILE}" + then eval "${DB2CMD}" | change_include > tmphdrfile + + # Need to translate to target CCSID. + + CMD="CPY OBJ('`pwd`/tmphdrfile') TOOBJ('${DB2DEST}')" + CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)" + system "${CMD}" + fi +done diff --git a/libxml2/os400/make-src.sh b/libxml2/os400/make-src.sh new file mode 100644 index 0000000..6094de8 --- /dev/null +++ b/libxml2/os400/make-src.sh @@ -0,0 +1,355 @@ +#!/bin/sh +# +# libxml compilation script for the OS/400. +# +# See Copyright for the status of this software. +# +# Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +# + +SCRIPTDIR=`dirname "${0}"` +. "${SCRIPTDIR}/initscript.sh" +cd "${TOPDIR}" + + +# Create and compile the identification source file. + +echo '#pragma comment(user, "libxml2 version '"${LIBXML_VERSION}"'")' > os400.c +echo '#pragma comment(user, __DATE__)' >> os400.c +echo '#pragma comment(user, __TIME__)' >> os400.c +echo '#pragma comment(copyright, "Copyright (C) 1998-2015 Daniel Veillard. OS/400 version by P. Monnerat.")' >> os400.c +make_module OS400 os400.c +LINK= # No need to rebuild service program yet. +MODULES= + + +# Get source list. + +foldlines() + +{ + sed -e ':begin' \ + -e '/\\$/{' \ + -e 's/\\$/ /' \ + -e 'N' \ + -e 'bbegin' \ + -e '}' \ + -e 's/\n//g' \ + -e 's/[[:space:]]*$//' +} + + +get_make_var() + +{ + foldlines < Makefile.am | + sed -e "/^${1}[[:space:]]*=[[:space:]]*/{" \ + -e 's///' \ + -e 'q' \ + -e '}' \ + -e 'd' +} + + +docb_sources=`get_make_var docb_sources` +trio_sources=`get_make_var trio_sources` +CSOURCES=`eval echo "\`get_make_var libxml2_la_SOURCES | tr '()' '{}'\`"` + + +# Compile the sources into modules. + +INCLUDES="'`pwd`'" + +# OS/400 specific modules first. + +make_module --ebcdic DLFCN "${SCRIPTDIR}/dlfcn/dlfcn.c" +make_module --ebcdic ICONV "${SCRIPTDIR}/iconv/iconv.c" +make_module --ebcdic WRAPPERS "${SCRIPTDIR}/wrappers.c" +make_module TRANSCODE "${SCRIPTDIR}/transcode.c" +make_module RPGSUPPORT "${SCRIPTDIR}/rpgsupport.c" + +# Regular libxml2 modules. + +for SRC in ${CSOURCES} +do MODULE=`db2_name "${SRC}"` + make_module "${MODULE}" "${SRC}" +done + + +# If needed, (re)create the static binding directory. + +if action_needed "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR" +then LINK=YES +fi + +if [ "${LINK}" ] +then rm -rf "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR" + CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${STATBNDDIR})" + CMD="${CMD} TEXT('libxml2 static binding directory')" + system "${CMD}" + + for MODULE in ${MODULES} + do CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${STATBNDDIR})" + CMD="${CMD} OBJ((${TARGETLIB}/${MODULE} *MODULE))" + system "${CMD}" + done +fi + + +# The exportation file for service program creation must be in a DB2 +# source file, so make sure it exists. + +if action_needed "${LIBIFSNAME}/TOOLS.FILE" +then CMD="CRTSRCPF FILE(${TARGETLIB}/TOOLS) RCDLEN(112)" + CMD="${CMD} CCSID(${TGTCCSID}) TEXT('libxml2: build tools')" + system "${CMD}" +fi + + +# Generate all exported symbol table versions in a binding source file. + +BSF="${LIBIFSNAME}/TOOLS.FILE/BNDSRC.MBR" +PGMEXPS= + +OS400SYMS=`cat os400/transcode.h os400/rpgsupport.h | + sed -e 'H' \ + -e 'g' \ + -e 's/\n/ /' \ + -e 's/\\$/ /' \ + -e 's/.*/& /' \ + -e 's/\/\*.*\*\// /g' \ + -e 'h' \ + -e ':loop' \ + -e 'g' \ + -e '/\/\*/d' \ + -e '/;/!d' \ + -e 's/[^;]*;//' \ + -e 'x' \ + -e 's/[[:space:]]*;.*$//' \ + -e '/XMLPUBFUN/{' \ + -e 's/[[:space:]]*(.*$//' \ + -e 's/.*[[:space:]*]//' \ + -e 'p' \ + -e 'bloop' \ + -e '}' \ + -e '/XMLPUBVAR/!bloop' \ + -e ':loop2' \ + -e '/\[[^][]*\]/{' \ + -e 's///' \ + -e 'bloop2' \ + -e '}' \ + -e 's/[[:space:]]*,[[:space:]]*/,/g' \ + -e 's/[^,]*[[:space:]*]//' \ + -e 's/[^[:alnum:]_,]//g' \ + -e 's/,/\n/g' \ + -e 'p' \ + -e 'bloop'` + +sed -e 's/#.*//' \ + -e 's/[[:space:]]*$//' \ + -e 's/^[[:space:]]*//' \ + -e '/^*global:$/d' \ + -e '/^$/d' \ + -e '/[[:space:]]*{$/{' \ + -e 's///' \ + -e 'h' \ + -e 's/[^A-Za-z0-9]/_/g' \ + -e 's/^[0-9]/_&/' \ + -e 'x' \ + -e 'G' \ + -e 's/\(.*\)\n\(.*\)/\2_SIGNATURE="\1"/' \ + -e 'p' \ + -e 's/.*//' \ + -e 'x' \ + -e "s/.*/SONAME='&'/" \ + -e 'b' \ + -e '}' \ + -e '/[[:space:]]*;$/!d' \ + -e 's///' \ + -e '/^xmlDllMain$/d' \ + -e '/^}[[:space:]]*/!{' \ + -e 'H' \ + -e 'd' \ + -e '}' \ + -e 's///' \ + -e '/^$/!{' \ + -e 's/[^A-Za-z0-9]/_/g' \ + -e 's/^[0-9]/_&/' \ + -e 's/.*/${&}/' \ + -e 'x' \ + -e 'H' \ + -e 's/.*//' \ + -e '}' \ + -e 'x' \ + -e 's/\n/ /g' \ + -e 's/^[[:space:]]*//' \ + -e 's/.*/declare ${SONAME}="&"/' \ + -e 's/.*/&; PGMEXPS="${SONAME} ${PGMEXPS}"/' \ + < "${TOPDIR}/libxml2.syms" > bndvars +. ./bndvars + +PGMLVL=CURRENT +for PGMEXP in ${PGMEXPS} +do SIGNATURE=`echo "${PGMEXP}" | sed 's/^LIBXML2_//'` + eval ENTRIES=\"\${${PGMEXP}}\" + echo " STRPGMEXP PGMLVL(*${PGMLVL}) SIGNATURE('${SIGNATURE}')" + for ENTRY in ${ENTRIES} ${OS400SYMS} + do echo " EXPORT SYMBOL('${ENTRY}')" + done + echo ' ENDPGMEXP' + PGMLVL=PRV +done > "${BSF}" + + +# Build the service program if needed. + +if action_needed "${LIBIFSNAME}/${SRVPGM}.SRVPGM" +then LINK=YES +fi + +if [ "${LINK}" ] +then CMD="CRTSRVPGM SRVPGM(${TARGETLIB}/${SRVPGM})" + CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(BNDSRC)" + CMD="${CMD} MODULE(${TARGETLIB}/OS400)" + CMD="${CMD} BNDDIR((${TARGETLIB}/${STATBNDDIR})" + if [ "${WITH_ZLIB}" -ne 0 ] + then CMD="${CMD} (${ZLIB_LIB}/${ZLIB_BNDDIR})" + fi + CMD="${CMD})" + CMD="${CMD} BNDSRVPGM(QADRTTS)" + CMD="${CMD} TEXT('libxml2 dynamic library')" + CMD="${CMD} TGTRLS(${TGTRLS})" + system "${CMD}" + LINK=YES +fi + + +# If needed, (re)create the dynamic binding directory. + +if action_needed "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR" +then LINK=YES +fi + +if [ "${LINK}" ] +then rm -rf "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR" + CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${DYNBNDDIR})" + CMD="${CMD} TEXT('libxml2 dynamic binding directory')" + system "${CMD}" + CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${DYNBNDDIR})" + CMD="${CMD} OBJ((*LIBL/${SRVPGM} *SRVPGM))" + system "${CMD}" +fi + + +# Compile the ASCII main() stub. + +make_module --ebcdic --sysiconv LIBXMLMAIN "${SCRIPTDIR}/libxmlmain.c" + + +# Compile and link program xmllint. + +if action_needed "${LIBIFSNAME}/XMLLINT.PGM" "xmllint.c" || + action_needed "${LIBIFSNAME}/XMLLINT.PGM" "${LIBIFSNAME}/${SRVPGM}.SRVPGM" || + action_needed "${LIBIFSNAME}/XMLLINT.PGM" "${LIBIFSNAME}/LIBXMLMAIN.MODULE" +then make_module XMLLINT xmllint.c + CMD="CRTPGM PGM(${TARGETLIB}/XMLLINT) MODULE(${TARGETLIB}/XMLLINT)" + CMD="${CMD} ENTMOD(${TARGETLIB}/LIBXMLMAIN)" + CMD="${CMD} BNDSRVPGM(QADRTTS) BNDDIR((${TARGETLIB}/${STATBNDDIR})" + if [ "${WITH_ZLIB}" -ne 0 ] + then CMD="${CMD} (${ZLIB_LIB}/${ZLIB_BNDDIR})" + fi + CMD="${CMD}) ACTGRP(*NEW) TEXT('XML tool')" + CMD="${CMD} TGTRLS(${TGTRLS})" + system "${CMD}" + rm -f "${LIBIFSNAME}/XMLLINT.MODULE" +fi + +# Install xmllint in IFS. + +if [ ! -d "${IFSDIR}/bin" ] +then mkdir -p "${IFSDIR}/bin" +fi +rm -f "${IFSDIR}/bin/xmllint" +ln -s "${LIBIFSNAME}/XMLLINT.PGM" "${IFSDIR}/bin/xmllint" + +# Prepare the XMLLINT command and its response program. + +if action_needed "${LIBIFSNAME}/XMLLINTCL.PGM" "${SCRIPTDIR}/xmllintcl.c" +then make_module --ebcdic XMLLINTCL "${SCRIPTDIR}/xmllintcl.c" + CMD="CRTPGM PGM(${TARGETLIB}/XMLLINTCL) MODULE(${TARGETLIB}/XMLLINTCL)" + CMD="${CMD} ACTGRP(*NEW) TEXT('XMLLINT command response')" + CMD="${CMD} TGTRLS(${TGTRLS})" + system "${CMD}" + rm -f "${LIBIFSNAME}/XMLLINTCL.MODULE" +fi + +if action_needed "${LIBIFSNAME}/TOOLS.FILE/XMLLINT.MBR" \ + "${SCRIPTDIR}/xmllint.cmd" +then CMD="CPY OBJ('${SCRIPTDIR}/xmllint.cmd')" + CMD="${CMD} TOOBJ('${LIBIFSNAME}/TOOLS.FILE/XMLLINT.MBR')" + CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)" + system "${CMD}" +fi + +if action_needed "${LIBIFSNAME}/XMLLINT.CMD" \ + "${LIBIFSNAME}/TOOLS.FILE/XMLLINT.MBR" +then CMD="CRTCMD CMD(${TARGETLIB}/XMLLINT) PGM(${TARGETLIB}/XMLLINTCL)" + CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(XMLLINT) THDSAFE(*YES)" + CMD="${CMD} TEXT('XML tool') REPLACE(*YES)" + system "${CMD}" +fi + + +# Compile and link program xmlcatalog. + +if action_needed "${LIBIFSNAME}/XMLCATALOG.PGM" "xmlcatalog.c" || + action_needed "${LIBIFSNAME}/XMLCATALOG.PGM" \ + "${LIBIFSNAME}/${SRVPGM}.SRVPGM" || + action_needed "${LIBIFSNAME}/XMLCATALOG.PGM" \ + "${LIBIFSNAME}/LIBXMLMAIN.MODULE" +then make_module XMLCATALOG xmlcatalog.c + CMD="CRTPGM PGM(${TARGETLIB}/XMLCATALOG)" + CMD="${CMD} MODULE(${TARGETLIB}/XMLCATALOG)" + CMD="${CMD} ENTMOD(${TARGETLIB}/LIBXMLMAIN)" + CMD="${CMD} BNDSRVPGM(QADRTTS) BNDDIR((${TARGETLIB}/${STATBNDDIR})" + if [ "${WITH_ZLIB}" -ne 0 ] + then CMD="${CMD} (${ZLIB_LIB}/${ZLIB_BNDDIR})" + fi + CMD="${CMD}) ACTGRP(*NEW) TEXT('XML/SGML catalog tool')" + CMD="${CMD} TGTRLS(${TGTRLS})" + system "${CMD}" + rm -f "${LIBIFSNAME}/XMLCATALOG.MODULE" +fi + +# Install xmlcatalog in IFS. + +rm -f "${IFSDIR}/bin/xmlcatalog" +ln -s "${LIBIFSNAME}/XMLCATALOG.PGM" "${IFSDIR}/bin/xmlcatalog" + +# Prepare the XMLCATALOG command and its response program. + +if action_needed "${LIBIFSNAME}/XMLCATLGCL.PGM" "${SCRIPTDIR}/xmlcatlgcl.c" +then make_module --ebcdic XMLCATLGCL "${SCRIPTDIR}/xmlcatlgcl.c" + CMD="CRTPGM PGM(${TARGETLIB}/XMLCATLGCL)" + CMD="${CMD} MODULE(${TARGETLIB}/XMLCATLGCL)" + CMD="${CMD} ACTGRP(*NEW) TEXT('XMLCATALOG command response')" + CMD="${CMD} TGTRLS(${TGTRLS})" + system "${CMD}" + rm -f "${LIBIFSNAME}/XMLCATLGCL.MODULE" +fi + +if action_needed "${LIBIFSNAME}/TOOLS.FILE/XMLCATALOG.MBR" \ + "${SCRIPTDIR}/xmlcatalog.cmd" +then CMD="CPY OBJ('${SCRIPTDIR}/xmlcatalog.cmd')" + CMD="${CMD} TOOBJ('${LIBIFSNAME}/TOOLS.FILE/XMLCATALOG.MBR')" + CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)" + system "${CMD}" +fi + +if action_needed "${LIBIFSNAME}/XMLCATALOG.CMD" \ + "${LIBIFSNAME}/TOOLS.FILE/XMLCATALOG.MBR" +then CMD="CRTCMD CMD(${TARGETLIB}/XMLCATALOG) PGM(${TARGETLIB}/XMLCATLGCL)" + CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(XMLCATALOG)" + CMD="${CMD} THDSAFE(*YES) TEXT('XML/SGML catalog tool') REPLACE(*YES)" + system "${CMD}" +fi diff --git a/libxml2/os400/make.sh b/libxml2/os400/make.sh new file mode 100644 index 0000000..95a35a2 --- /dev/null +++ b/libxml2/os400/make.sh @@ -0,0 +1,84 @@ +#!/bin/sh +# +# libxml2 compilation script for the OS/400. +# This is a shell script since make is not a standard component of OS/400. +# +# See Copyright for the status of this software. +# +# Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +# + +SCRIPTDIR=`dirname "${0}"` +. "${SCRIPTDIR}/initscript.sh" +cd "${TOPDIR}" + + +# Create the OS/400 library if it does not exist. + +if action_needed "${LIBIFSNAME}" +then CMD="CRTLIB LIB(${TARGETLIB})" + CMD="${CMD} TEXT('libxml2: XML parser and toolkit API')" + system "${CMD}" +fi + + +# Create the DOCS source file if it does not exist. + +if action_needed "${LIBIFSNAME}/DOCS.FILE" +then CMD="CRTSRCPF FILE(${TARGETLIB}/DOCS) RCDLEN(112)" + CMD="${CMD} CCSID(${TGTCCSID}) TEXT('Documentation texts')" + system "${CMD}" +fi + + +# Copy some documentation files if needed. + +for TEXT in "${TOPDIR}/AUTHORS" "${TOPDIR}/ChangeLog" \ + "${TOPDIR}/Copyright" "${TOPDIR}/HACKING" "${TOPDIR}/README" \ + "${TOPDIR}/MAINTAINERS" "${TOPDIR}/NEWS" "${TOPDIR}/TODO" \ + "${TOPDIR}/TODO_SCHEMAS" "${TOPDIR}/os400/README400" +do if [ -f "${TEXT}" ] + then MEMBER="`basename \"${TEXT}\" .OS400`" + MEMBER="${LIBIFSNAME}/DOCS.FILE/`db2_name \"${MEMBER}\"`.MBR" + + if action_needed "${MEMBER}" "${TEXT}" + then # Sources are in UTF-8. + rm -f "${TOPDIR}/tmpfile"[12] + CMD="CPY OBJ('${TEXT}') TOOBJ('${TOPDIR}/tmpfile1')" + CMD="${CMD} FROMCCSID(1208) TOCCSID(${TGTCCSID})" + CMD="${CMD} DTAFMT(*TEXT) REPLACE(*YES)" + system "${CMD}" + # Make sure all lines are < 100 characters. + sed -e 's/.\{99\}/&\ +/g' -e 's/\n$//' "${TOPDIR}/tmpfile1" > "${TOPDIR}/tmpfile2" + CMD="CPY OBJ('${TOPDIR}/tmpfile2') TOOBJ('${MEMBER}')" + CMD="${CMD} TOCCSID(${TGTCCSID})" + CMD="${CMD} DTAFMT(*TEXT) REPLACE(*YES)" + system "${CMD}" + fi + fi +done + + +# Build files from template. + +configFile() + +{ + args=`set | sed -e '/^[A-Za-z_][A-Za-z0-9_]*=/!d' \ + -e 's/[\/\\\\&]/\\\\&/g' \ + -e "s/'/'\\\\\\''/g" \ + -e 's/^\([^=]*\)=\(.*\)$/-e '\''s\/@\1@\/\2\/g'\'/` + eval sed ${args} < "${1}".in > "${1}" +} + +configFile include/libxml/xmlversion.h +configFile os400/os400config.h +mv os400/os400config.h config.h + + +# Build in each directory. + +for SUBDIR in include rpg src +do "${SCRIPTDIR}/make-${SUBDIR}.sh" +done diff --git a/libxml2/os400/os400config.h.in b/libxml2/os400/os400config.h.in new file mode 100644 index 0000000..3966ac8 --- /dev/null +++ b/libxml2/os400/os400config.h.in @@ -0,0 +1,353 @@ +/** +*** Configuration parameters for the OS/400 implementation. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +/* Define to 1 if you have the <ansidecl.h> header file. */ +#undef HAVE_ANSIDECL_H + +/* Define to 1 if you have the <arpa/inet.h> header file. */ +#define HAVE_ARPA_INET_H 1 + +/* Define to 1 if you have the <arpa/nameser.h> header file. */ +#define HAVE_ARPA_NAMESER_H 1 + +/* Whether struct sockaddr::__ss_family exists */ +#undef HAVE_BROKEN_SS_FAMILY + +/* Define to 1 if you have the `class' function. */ +#undef HAVE_CLASS + +/* Define to 1 if you have the <ctype.h> header file. */ +#define HAVE_CTYPE_H 1 + +/* Define to 1 if you have the <dirent.h> header file. */ +#define HAVE_DIRENT_H 1 + +/* Define to 1 if you have the <dlfcn.h> header file. */ +#define HAVE_DLFCN_H 1 /* Locally emulated. */ + +/* Have dlopen based dso */ +#define HAVE_DLOPEN 1 /* Locally emulated. */ + +/* Define to 1 if you have the <dl.h> header file. */ +#undef HAVE_DL_H + +/* Define to 1 if you have the <errno.h> header file. */ +#define HAVE_ERRNO_H 1 + +/* Define to 1 if you have the <fcntl.h> header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `finite' function. */ +#undef HAVE_FINITE + +/* Define to 1 if you have the <float.h> header file. */ +#define HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `fpclass' function. */ +#undef HAVE_FPCLASS + +/* Define to 1 if you have the `fprintf' function. */ +#undef HAVE_FPRINTF /* Use trio. */ + +/* Define to 1 if you have the `fp_class' function. */ +#undef HAVE_FP_CLASS + +/* Define to 1 if you have the <fp_class.h> header file. */ +#undef HAVE_FP_CLASS_H + +/* Define to 1 if you have the `ftime' function. */ +#undef HAVE_FTIME + +/* Define if getaddrinfo is there */ +#define HAVE_GETADDRINFO 1 + +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define to 1 if you have the <ieeefp.h> header file. */ +#undef HAVE_IEEEFP_H + +/* Define to 1 if you have the <inttypes.h> header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isascii' function. */ +#define HAVE_ISASCII 1 + +/* Define if isinf is there */ +#undef HAVE_ISINF + +/* Define if isnan is there */ +#undef HAVE_ISNAN + +/* Define to 1 if you have the `isnand' function. */ +#undef HAVE_ISNAND + +/* Define if history library is there (-lhistory) */ +#undef HAVE_LIBHISTORY + +/* Have compression library */ +#undef HAVE_LIBLZMA + +/* Define if pthread library is there (-lpthread) */ +#undef HAVE_LIBPTHREAD + +/* Define if readline library is there (-lreadline) */ +#undef HAVE_LIBREADLINE + +/* Have compression library */ +#undef HAVE_LIBZ + +/* Define to 1 if you have the <limits.h> header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the `localtime' function. */ +#define HAVE_LOCALTIME 1 + +/* Define to 1 if you have the <lzma.h> header file. */ +#undef HAVE_LZMA_H + +/* Define to 1 if you have the <malloc.h> header file. */ +#undef HAVE_MALLOC_H + +/* Define to 1 if you have the <math.h> header file. */ +#define HAVE_MATH_H 1 + +/* Define to 1 if you have the <memory.h> header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `mmap' function. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the `munmap' function. */ +#undef HAVE_MUNMAP + +/* mmap() is no good without munmap() */ +#if defined(HAVE_MMAP) && !defined(HAVE_MUNMAP) +# undef /**/ HAVE_MMAP +#endif + +/* Define to 1 if you have the <nan.h> header file. */ +#undef HAVE_NAN_H + +/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the <netdb.h> header file. */ +#define HAVE_NETDB_H 1 + +/* Define to 1 if you have the <netinet/in.h> header file. */ +#define HAVE_NETINET_IN_H 1 + +/* Define to 1 if you have the <poll.h> header file. */ +#undef HAVE_POLL_H + +/* Define to 1 if you have the `printf' function. */ +#undef HAVE_PRINTF /* Use trio. */ + +/* Define to 1 if you have the `vprintf' function. */ +#undef HAVE_VPRINTF /* Use trio. */ + +/* Define if <pthread.h> is there */ +#define HAVE_PTHREAD_H 1 + +/* Define to 1 if you have the `putenv' function. */ +#define HAVE_PUTENV 1 + +/* Define to 1 if you have the `rand' function. */ +#define HAVE_RAND 1 + +/* Define to 1 if you have the `rand_r' function. */ +#define HAVE_RAND_R 1 + +/* Define to 1 if you have the <resolv.h> header file. */ +#define HAVE_RESOLV_H 1 + +/* Have shl_load based dso */ +#undef HAVE_SHLLOAD + +/* Define to 1 if you have the `signal' function. */ +#undef HAVE_SIGNAL + +/* Define to 1 if you have the <signal.h> header file. */ +#define HAVE_SIGNAL_H 1 + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF /* Use trio. */ + +/* Define to 1 if you have the `sprintf' function. */ +#undef HAVE_SPRINTF /* Use trio. */ + +/* Define to 1 if you have the `srand' function. */ +#define HAVE_SRAND 1 + +/* Define to 1 if you have the `scanf' function. */ +#undef HAVE_SCANF /* Use trio. */ + +/* Define to 1 if you have the `fscanf' function. */ +#undef HAVE_FSCANF /* Use trio. */ + +/* Define to 1 if you have the `sscanf' function. */ +#undef HAVE_SSCANF /* Use trio. */ + +/* Define to 1 if you have the `stat' function. */ +#define HAVE_STAT 1 + +/* Define to 1 if you have the <stdarg.h> header file. */ +#define HAVE_STDARG_H 1 /* Overloaded */ + +/* Define to 1 if you have the <stdint.h> header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the <stdlib.h> header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the `strftime' function. */ +#define HAVE_STRFTIME 1 + +/* Define to 1 if you have the <strings.h> header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the <string.h> header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strndup' function. */ +#undef HAVE_STRNDUP + +/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the <sys/mman.h> header file. */ +#define HAVE_SYS_MMAN_H 1 + +/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. + */ +#undef HAVE_SYS_NDIR_H + +/* Define to 1 if you have the <sys/select.h> header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the <sys/socket.h> header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the <sys/timeb.h> header file. */ +#define HAVE_SYS_TIMEB_H 1 + +/* Define to 1 if you have the <sys/time.h> header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the <sys/types.h> header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `time' function. */ +#define HAVE_TIME 1 + +/* Define to 1 if you have the <time.h> header file. */ +#define HAVE_TIME_H 1 + +/* Define to 1 if you have the <unistd.h> header file. */ +#define HAVE_UNISTD_H 1 + +/* Whether va_copy() is available */ +#undef HAVE_VA_COPY + +/* Define to 1 if you have the `vfprintf' function. */ +#undef HAVE_VFPRINTF /* Use trio. */ + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF /* Use trio. */ + +/* Define to 1 if you have the `vsprintf' function. */ +#undef HAVE_VSPRINTF /* Use trio. */ + +/* Define to 1 if you have the <zlib.h> header file. */ +/* Actually dependent on the compilation script. */ +#if @WITH_ZLIB@ +#define HAVE_ZLIB_H 1 +#else +#undef HAVE_ZLIB_H +#endif + +/* Define to 1 if you have the `_stat' function. */ +#undef HAVE__STAT + +/* Whether __va_copy() is available */ +#undef HAVE___VA_COPY + +/* Define as const if the declaration of iconv() needs const. */ +#define ICONV_CONST + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + +/* Name of package */ +#define PACKAGE "libxml2" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Support for IPv6 */ +#define SUPPORT_IP6 + +/* Version number of package */ +#define VERSION "@VERSION@" + +/* Determine what socket length (socklen_t) data type is */ +#define XML_SOCKLEN_T socklen_t + +/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>, + <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +#undef _UINT32_T + +/* Using the Win32 Socket implementation */ +#undef _WINSOCKAPI_ + +/* ss_family is not defined here, use __ss_family instead */ +#undef ss_family + +/* Define to the type of an unsigned integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +#undef uint32_t + +/* Type cast for the send() function 2nd arg */ +#define SEND_ARG2_CAST (char *) + +/* Type cast for the gethostbyname() argument */ +#define GETHOSTBYNAME_ARG_CAST (char *) + +/* Define if va_list is an array type */ +#define VA_LIST_IS_ARRAY 1 diff --git a/libxml2/os400/rpgsupport.c b/libxml2/os400/rpgsupport.c new file mode 100644 index 0000000..ad4cc5d --- /dev/null +++ b/libxml2/os400/rpgsupport.c @@ -0,0 +1,270 @@ +/** +*** Additional procedures for ILE/RPG support. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#include <sys/types.h> + +#include <stdarg.h> + +#include "libxml/xmlmemory.h" +#include "libxml/xpath.h" +#include "libxml/parser.h" +#include "libxml/HTMLparser.h" + +#include "rpgsupport.h" + + +/** +*** ILE/RPG cannot directly derefence a pointer and has no macros. +*** The following additional procedures supply these functions. +*** In addition, the following code is adjusted for threads control at +*** compile time via the C macros. +**/ + +#define THREADED_VAR(name, type) \ + type __get_##name(void) { return name; } \ + void __set_##name(type arg) { name = arg; } + + +THREADED_VAR(xmlFree, xmlFreeFunc) + +void +__call_xmlFree(void * mem) + +{ + xmlFree(mem); +} + + +THREADED_VAR(xmlMalloc, xmlMallocFunc) + +void * +__call_xmlMalloc(size_t size) + +{ + return xmlMalloc(size); +} + + +THREADED_VAR(xmlMallocAtomic, xmlMallocFunc) + +void * +__call_xmlMallocAtomic(size_t size) + +{ + return xmlMallocAtomic(size); +} + + +THREADED_VAR(xmlRealloc, xmlReallocFunc) + +void * +__call_xmlRealloc(void * mem, size_t size) + +{ + return xmlRealloc(mem, size); +} + + +THREADED_VAR(xmlMemStrdup, xmlStrdupFunc) + +char * +__call_xmlMemStrdup(const char * str) + +{ + return xmlMemStrdup(str); +} + + +#ifdef LIBXML_DOCB_ENABLED +THREADED_VAR(docbDefaultSAXHandler, xmlSAXHandlerV1) +#endif + + +#ifdef LIBXML_HTML_ENABLED +THREADED_VAR(htmlDefaultSAXHandler, xmlSAXHandlerV1) +#endif + + +THREADED_VAR(xmlLastError, xmlError) + +THREADED_VAR(oldXMLWDcompatibility, int) +THREADED_VAR(xmlBufferAllocScheme, xmlBufferAllocationScheme) +THREADED_VAR(xmlDefaultBufferSize, int) +THREADED_VAR(xmlDefaultSAXHandler, xmlSAXHandlerV1) +THREADED_VAR(xmlDefaultSAXLocator, xmlSAXLocator) +THREADED_VAR(xmlDoValidityCheckingDefaultValue, int) + +/* No caller to xmlGenericError() because the argument list is unknown. */ +THREADED_VAR(xmlGenericError, xmlGenericErrorFunc) + + +THREADED_VAR(xmlStructuredError, xmlStructuredErrorFunc) + +void +__call_xmlStructuredError(void * userData, xmlErrorPtr error) + +{ + xmlStructuredError(userData, error); +} + +THREADED_VAR(xmlGenericErrorContext, void *) +THREADED_VAR(xmlStructuredErrorContext, void *) +THREADED_VAR(xmlGetWarningsDefaultValue, int) +THREADED_VAR(xmlIndentTreeOutput, int) +THREADED_VAR(xmlTreeIndentString, const char *) +THREADED_VAR(xmlKeepBlanksDefaultValue, int) +THREADED_VAR(xmlLineNumbersDefaultValue, int) +THREADED_VAR(xmlLoadExtDtdDefaultValue, int) +THREADED_VAR(xmlParserDebugEntities, int) +THREADED_VAR(xmlParserVersion, const char *) +THREADED_VAR(xmlPedanticParserDefaultValue, int) +THREADED_VAR(xmlSaveNoEmptyTags, int) +THREADED_VAR(xmlSubstituteEntitiesDefaultValue, int) + + +THREADED_VAR(xmlRegisterNodeDefaultValue, xmlRegisterNodeFunc) + +void +__call_xmlRegisterNodeDefaultValue(xmlNodePtr node) + +{ + xmlRegisterNodeDefaultValue(node); +} + + +THREADED_VAR(xmlDeregisterNodeDefaultValue, xmlDeregisterNodeFunc) + +void +__call_xmlDeregisterNodeDefaultValue(xmlNodePtr node) + +{ + xmlDeregisterNodeDefaultValue(node); +} + + +THREADED_VAR(xmlParserInputBufferCreateFilenameValue, xmlParserInputBufferCreateFilenameFunc) + +xmlParserInputBufferPtr +__call_xmlParserInputBufferCreateFilenameValue(const char *URI, + xmlCharEncoding enc) + +{ + return xmlParserInputBufferCreateFilenameValue(URI, enc); +} + + +THREADED_VAR(xmlOutputBufferCreateFilenameValue, xmlOutputBufferCreateFilenameFunc) + +xmlOutputBufferPtr +__call_xmlOutputBufferCreateFilenameValue(const char *URI, + xmlCharEncodingHandlerPtr encoder, int compression) + +{ + return xmlOutputBufferCreateFilenameValue(URI, encoder, compression); +} + + + +/** +*** va_list support. +**/ + +void +__xmlVaStart(char * * list, char * lastargaddr, size_t lastargsize) + +{ + list[1] = lastargaddr + lastargsize; +} + + +void * +__xmlVaArg(char * * list, void * dest, size_t argsize) + +{ + size_t align; + + if (!argsize) + return (void *) NULL; + + for (align = 16; align > argsize; align >>= 1) + ; + + align--; + list[0] = list[1] + (align - (((size_t) list[0] - 1) & align)); + list[1] = list[0] + argsize; + + if (dest) + memcpy(dest, list[0], argsize); + + return (void *) list[0]; +} + + +void +__xmlVaEnd(char * * list) + +{ + /* Nothing to do. */ +} + + +#ifdef LIBXML_XPATH_ENABLED + +int +__xmlXPathNodeSetGetLength(const xmlNodeSet * ns) + +{ + return xmlXPathNodeSetGetLength(ns); +} + + +xmlNodePtr +__xmlXPathNodeSetItem(const xmlNodeSet * ns, int index) + +{ + return xmlXPathNodeSetItem(ns, index); +} + + +int +__xmlXPathNodeSetIsEmpty(const xmlNodeSet * ns) + +{ + return xmlXPathNodeSetIsEmpty(ns); +} + +#endif + + +#ifdef LIBXML_HTML_ENABLED + +const char * +__htmlDefaultSubelement(const htmlElemDesc * elt) + +{ + return htmlDefaultSubelement(elt); +} + + +int +__htmlElementAllowedHereDesc(const htmlElemDesc * parent, + const htmlElemDesc * elt) + +{ + return htmlElementAllowedHereDesc(parent, elt); +} + + +const char * * +__htmlRequiredAttrs(const htmlElemDesc * elt) + +{ + return htmlRequiredAttrs(elt); +} + +#endif diff --git a/libxml2/os400/rpgsupport.h b/libxml2/os400/rpgsupport.h new file mode 100644 index 0000000..d8016d7 --- /dev/null +++ b/libxml2/os400/rpgsupport.h @@ -0,0 +1,157 @@ +/** +*** Additional delarations for ILE/RPG support. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#ifndef __RPGSUPPORT_H__ +#define __RPGSUPPORT_H__ + +#include <sys/types.h> + +#include <libxml/xmlmemory.h> +#include <libxml/xpath.h> +#include "libxml/HTMLparser.h" + + +XMLPUBFUN xmlFreeFunc __get_xmlFree(void); +XMLPUBFUN void __set_xmlFree(xmlFreeFunc freefunc); +XMLPUBFUN void __call_xmlFree(void * mem); +XMLPUBFUN xmlMallocFunc __get_xmlMalloc(void); +XMLPUBFUN void __set_xmlMalloc(xmlMallocFunc allocfunc); +XMLPUBFUN void * __call_xmlMalloc(size_t size); +XMLPUBFUN xmlMallocFunc __get_xmlMallocAtomic(void); +XMLPUBFUN void __set_xmlMallocAtomic(xmlMallocFunc allocfunc); +XMLPUBFUN void * __call_xmlMallocAtomic(size_t size); +XMLPUBFUN xmlReallocFunc __get_xmlRealloc(void); +XMLPUBFUN void __set_xmlRealloc(xmlReallocFunc reallocfunc); +XMLPUBFUN void * __call_xmlRealloc(void * mem, size_t size); +XMLPUBFUN xmlStrdupFunc __get_xmlMemStrdup(void); +XMLPUBFUN void __set_xmlMemStrdup(xmlStrdupFunc strdupfunc); +XMLPUBFUN char * __call_xmlMemStrdup(const char * str); + +#ifdef LIBXML_DOCB_ENABLED +XMLPUBFUN xmlSAXHandlerV1 __get_docbDefaultSAXHandler(void); +XMLPUBFUN void __set_docbDefaultSAXHandler(xmlSAXHandlerV1 hdlr); +#endif + +#ifdef LIBXML_HTML_ENABLED +XMLPUBFUN xmlSAXHandlerV1 __get_htmlDefaultSAXHandler(void); +XMLPUBFUN void __set_htmlDefaultSAXHandler(xmlSAXHandlerV1 hdlr); +#endif + +XMLPUBFUN xmlError __get_xmlLastError(void); +XMLPUBFUN void __set_xmlLastError(xmlError err); + +XMLPUBFUN int __get_oldXMLWDcompatibility(void); +XMLPUBFUN void __set_oldXMLWDcompatibility(int val); + +XMLPUBFUN xmlBufferAllocationScheme __get_xmlBufferAllocScheme(void); +XMLPUBFUN void __set_xmlBufferAllocScheme(xmlBufferAllocationScheme val); + +XMLPUBFUN int __get_xmlDefaultBufferSize(void); +XMLPUBFUN void __set_xmlDefaultBufferSize(int val); + +XMLPUBFUN xmlSAXHandlerV1 __get_xmlDefaultSAXHandler(void); +XMLPUBFUN void __set_xmlDefaultSAXHandler(xmlSAXHandlerV1 val); + +XMLPUBFUN xmlSAXLocator __get_xmlDefaultSAXLocator(void); +XMLPUBFUN void __set_xmlDefaultSAXLocator(xmlSAXLocator val); + +XMLPUBFUN int __get_xmlDoValidityCheckingDefaultValue(void); +XMLPUBFUN void __set_xmlDoValidityCheckingDefaultValue(int val); + +XMLPUBFUN xmlGenericErrorFunc __get_xmlGenericError(void); +XMLPUBFUN void __set_xmlGenericError(xmlGenericErrorFunc val); + +XMLPUBFUN xmlStructuredErrorFunc __get_xmlStructuredError(void); +XMLPUBFUN void __set_xmlStructuredError(xmlStructuredErrorFunc val); +XMLPUBFUN void __call_xmlStructuredError(void *userData, xmlErrorPtr error); + +XMLPUBFUN void * __get_xmlGenericErrorContext(void); +XMLPUBFUN void __set_xmlGenericErrorContext(void * val); + +XMLPUBFUN void * __get_xmlStructuredErrorContext(void); +XMLPUBFUN void __set_xmlStructuredErrorContext(void * val); + +XMLPUBFUN int __get_xmlGetWarningsDefaultValue(void); +XMLPUBFUN void __set_xmlGetWarningsDefaultValue(int val); + +XMLPUBFUN int __get_xmlIndentTreeOutput(void); +XMLPUBFUN void __set_xmlIndentTreeOutput(int val); + +XMLPUBFUN const char * __get_xmlTreeIndentString(void); +XMLPUBFUN void __set_xmlTreeIndentString(const char * val); + +XMLPUBFUN int __get_xmlKeepBlanksDefaultValue(void); +XMLPUBFUN void __set_xmlKeepBlanksDefaultValue(int val); + +XMLPUBFUN int __get_xmlLineNumbersDefaultValue(void); +XMLPUBFUN void __set_xmlLineNumbersDefaultValue(int val); + +XMLPUBFUN int __get_xmlLoadExtDtdDefaultValue(void); +XMLPUBFUN void __set_xmlLoadExtDtdDefaultValue(int val); + +XMLPUBFUN int __get_xmlParserDebugEntities(void); +XMLPUBFUN void __set_xmlParserDebugEntities(int val); + +XMLPUBFUN const char * __get_xmlParserVersion(void); +XMLPUBFUN void __set_xmlParserVersion(const char * val); + +XMLPUBFUN int __get_xmlPedanticParserDefaultValue(void); +XMLPUBFUN void __set_xmlPedanticParserDefaultValue(int val); + +XMLPUBFUN int __get_xmlSaveNoEmptyTags(void); +XMLPUBFUN void __set_xmlSaveNoEmptyTags(int val); + +XMLPUBFUN int __get_xmlSubstituteEntitiesDefaultValue(void); +XMLPUBFUN void __set_xmlSubstituteEntitiesDefaultValue(int val); + +XMLPUBFUN xmlRegisterNodeFunc __get_xmlRegisterNodeDefaultValue(void); +XMLPUBFUN void __set_xmlRegisterNodeDefaultValue(xmlRegisterNodeFunc val); +XMLPUBFUN void __call_xmlRegisterNodeDefaultValue(xmlNodePtr node); + +XMLPUBFUN xmlDeregisterNodeFunc __get_xmlDeregisterNodeDefaultValue(void); +XMLPUBFUN void __set_xmlDeregisterNodeDefaultValue(xmlDeregisterNodeFunc val); +XMLPUBFUN void __call_xmlDeregisterNodeDefaultValue(xmlNodePtr node); + +XMLPUBFUN xmlParserInputBufferCreateFilenameFunc + __get_xmlParserInputBufferCreateFilenameValue(void); +XMLPUBFUN void __set_xmlParserInputBufferCreateFilenameValue( + xmlParserInputBufferCreateFilenameFunc val); +XMLPUBFUN xmlParserInputBufferPtr + __call_xmlParserInputBufferCreateFilenameValue(const char *URI, + xmlCharEncoding enc); + +XMLPUBFUN xmlOutputBufferCreateFilenameFunc + __get_xmlOutputBufferCreateFilenameValue(void); +XMLPUBFUN void __set_xmlOutputBufferCreateFilenameValue( + xmlOutputBufferCreateFilenameFunc val); +XMLPUBFUN xmlOutputBufferPtr + __call_xmlOutputBufferCreateFilenameValue(const char *URI, + xmlCharEncodingHandlerPtr encoder, + int compression); + + +XMLPUBFUN void __xmlVaStart(char * * list, + char * lastargaddr, size_t lastargsize); +XMLPUBFUN void * __xmlVaArg(char * * list, void * dest, size_t argsize); +XMLPUBFUN void __xmlVaEnd(char * * list); + +#ifdef LIBXML_XPATH_ENABLED +XMLPUBFUN int __xmlXPathNodeSetGetLength(xmlNodeSetPtr ns); +XMLPUBFUN xmlNodePtr __xmlXPathNodeSetItem(xmlNodeSetPtr ns, int index); +XMLPUBFUN int __xmlXPathNodeSetIsEmpty(xmlNodeSetPtr ns); +#endif + +#ifdef LIBXML_HTML_ENABLED +XMLPUBFUN const char * __htmlDefaultSubelement(const htmlElemDesc * elt); +XMLPUBFUN int __htmlElementAllowedHereDesc(const htmlElemDesc * parent, + const htmlElemDesc * elt); +XMLPUBFUN const char * * + __htmlRequiredAttrs(const htmlElemDesc * elt); +#endif + +#endif diff --git a/libxml2/os400/transcode.c b/libxml2/os400/transcode.c new file mode 100644 index 0000000..bae6187 --- /dev/null +++ b/libxml2/os400/transcode.c @@ -0,0 +1,268 @@ +/** +*** Transcoding support and wrappers. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#define IN_LIBXML +#include "libxml.h" + +#include <sys/types.h> +#include <iconv.h> +#include "libxml/xmlmemory.h" +#include "libxml/dict.h" +#include "transcode.h" + + +/** +*** Destroy a dictionary and mark as destroyed. +**/ + +void +xmlZapDict(xmlDictPtr * dict) + +{ + if (dict && *dict) { + xmlDictFree(*dict); + *dict = (xmlDictPtr) NULL; + } +} + + +/** +*** Support for inline conversion from/to UTF-8. +*** This is targetted to function parameter encoding conversion. +*** Method is: +*** - Convert string from/to UTF-8. +*** - Keep it in a dictionary. +*** - Free original string if a release procedure is provided. +*** Can also be called without dictionary to convert a string from/to UTF-8 +*** into xmlMalloc'ed dynamic storage. +**/ + +const char * +xmlTranscodeResult(const xmlChar * s, const char * encoding, + xmlDictPtr * dict, void (*freeproc)(const void *)) + +{ + size_t l; + iconv_t cd; + char * srcp; + char * dstp; + size_t srcc; + size_t dstc; + char * ts; + const char * ret; + int err; + static const int nullstring[] = { 0 }; + + /* Convert from UTF-8. */ + + if (!s) + return (const char *) NULL; + + ret = (const char *) NULL; + ts = (char *) NULL; + err = 0; + l = xmlStrlen(s); + + if (!l && dict) + ret = (const char *) nullstring; + else { + if (dict && !*dict) + err = !(*dict = xmlDictCreate()); + + if (!err) + err = !(ts = xmlMalloc(4 * l + 4)); + + dstp = ts; + dstc = 4 * l; + + if (!err && l) { + if (!encoding) + encoding = "ibm-0"; /* Job's encoding. */ + + cd = iconv_open(encoding, "UTF-8"); + + if (cd == (iconv_t) -1) + err = 1; + else { + srcp = (char *) s; + srcc = l; + srcc = iconv(cd, &srcp, &srcc, &dstp, &dstc); + iconv_close(cd); + err = srcc == (size_t) -1; + } + } + + if (!err) { + dstp[0] = dstp[1] = dstp[2] = dstp[3] = '\0'; + + if (!dict) { + if (dstc) + ts = xmlRealloc(ts, (dstp - ts) + 4); + + ret = (const char *) ts; + ts = (char *) NULL; + } + else + ret = (char *) xmlDictLookup(*dict, + (xmlChar *) ts, dstp - ts + 1); + } + } + + if (ts) + xmlFree(ts); + + if (freeproc) + (*freeproc)(s); + + return ret; +} + + +/** +*** Support for inline conversion to UTF-8. +*** Method is: +*** - Convert string to UTF-8. +*** - Keep it in a dictionary. +*** Can also be called without dictionary to convert a string to UTF-8 into +*** xmlMalloc'ed dynamic storage. +**/ + +static const xmlChar * +inTranscode(const char * s, size_t l, const char * encoding, xmlDictPtr * dict) + +{ + iconv_t cd; + char * srcp; + char * dstp; + size_t srcc; + size_t dstc; + xmlChar * ts; + const xmlChar * ret; + static const xmlChar nullstring[] = { 0 }; + + if (!l && dict) + return nullstring; + + if (dict && !*dict) + if (!(*dict = xmlDictCreate())) + return (const xmlChar *) NULL; + + ts = (xmlChar *) xmlMalloc(6 * l + 1); + + if (!ts) + return (const xmlChar *) NULL; + + dstp = (char *) ts; + dstc = 6 * l; + + if (l) { + if (!encoding) + encoding = "ibm-0"; /* Use job's encoding. */ + + cd = iconv_open("UTF-8", encoding); + + if (cd == (iconv_t) -1) { + xmlFree((char *) ts); + return (const xmlChar *) NULL; + } + + srcp = (char *) s; + srcc = l; + srcc = iconv(cd, &srcp, &srcc, &dstp, &dstc); + iconv_close(cd); + + if (srcc == (size_t) -1) { + xmlFree((char *) ts); + return (const xmlChar *) NULL; + } + } + + *dstp = '\0'; + + if (!dict) { + if (dstc) + ts = xmlRealloc(ts, (dstp - ts) + 1); + + return ts; + } + + ret = xmlDictLookup(*dict, ts, dstp - ts + 1); + xmlFree((char *) ts); + return ret; +} + + +/** +*** Input 8-bit character string parameter. +**/ + +const xmlChar * +xmlTranscodeString(const char * s, const char * encoding, xmlDictPtr * dict) + +{ + if (!s) + return (const xmlChar *) NULL; + + return inTranscode(s, xmlStrlen(s), encoding, dict); +} + + +/** +*** Input 16-bit character string parameter. +**/ + +const xmlChar * +xmlTranscodeWString(const char * s, const char * encoding, xmlDictPtr * dict) + +{ + size_t i; + + if (!s) + return (const xmlChar *) NULL; + + for (i = 0; s[i] && s[i + 1]; i += 2) + ; + + return inTranscode(s, i, encoding, dict); +} + + +/** +*** Input 32-bit character string parameter. +**/ + +const xmlChar * +xmlTranscodeHString(const char * s, const char * encoding, xmlDictPtr * dict) + +{ + size_t i; + + if (!s) + return (const xmlChar *) NULL; + + for (i = 0; s[i] && s[i + 1] && s[i + 2] && s[i + 3]; i += 4) + ; + + return inTranscode(s, i, encoding, dict); +} + + +/** +*** vasprintf() implementation with result transcoding. +**/ + +const char * +xmlVasprintf(xmlDictPtr * dict, const char * encoding, + const xmlChar * fmt, va_list args) + +{ + char * s = NULL; + + vasprintf(&s, fmt, args); + return xmlTranscodeResult((const xmlChar *) s, encoding, dict, free); +} diff --git a/libxml2/os400/transcode.h b/libxml2/os400/transcode.h new file mode 100644 index 0000000..6ca5773 --- /dev/null +++ b/libxml2/os400/transcode.h @@ -0,0 +1,43 @@ +/** +*** Transcoding support declarations. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#ifndef _TRANSCODE_H_ +#define _TRANSCODE_H_ + +#include <stdarg.h> +#include <libxml/dict.h> + + +XMLPUBFUN void xmlZapDict(xmlDictPtr * dict); +XMLPUBFUN const char * xmlTranscodeResult(const xmlChar * s, + const char * encoding, xmlDictPtr * dict, + void (*freeproc)(const void *)); +XMLPUBFUN const xmlChar * xmlTranscodeString(const char * s, + const char * encoding, xmlDictPtr * dict); +XMLPUBFUN const xmlChar * xmlTranscodeWString(const char * s, + const char * encoding, xmlDictPtr * dict); +XMLPUBFUN const xmlChar * xmlTranscodeHString(const char * s, + const char * encoding, xmlDictPtr * dict); + +#ifndef XML_NO_SHORT_NAMES +/** +*** Since the above functions are generally called "inline" (i.e.: several +*** times nested in a single expression), define shorthand names +*** to minimize calling statement length. +**/ + +#define xmlTR xmlTranscodeResult +#define xmlTS xmlTranscodeString +#define xmlTW xmlTranscodeWString +#define xmlTH xmlTranscodeHstring +#endif + +XMLPUBFUN const char * xmlVasprintf(xmlDictPtr * dict, const char * encoding, + const xmlChar * fmt, va_list args); + +#endif diff --git a/libxml2/os400/wrappers.c b/libxml2/os400/wrappers.c new file mode 100644 index 0000000..9f592b7 --- /dev/null +++ b/libxml2/os400/wrappers.c @@ -0,0 +1,170 @@ +/** +*** UTF-8/EBCDIC wrappers to system and C library procedures. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#include <sys/types.h> +#include <sys/socket.h> +#include <arpa/inet.h> +#include <stdlib.h> +#include <dlfcn.h> +#include <netdb.h> +#include <errno.h> + +#include "config.h" + +#include "libxml/xmlmemory.h" + +#include "transcode.h" + + +static const char * lxdles = NULL; + + +int +_lx_getaddrinfo(const char * node, const char * service, + const struct addrinfo * hints, struct addrinfo * * res) + +{ + xmlDictPtr d = NULL; + int i; + + i = getaddrinfo(xmlTranscodeResult(node, NULL, &d, NULL), + xmlTranscodeResult(service, NULL, &d, NULL), hints, res); + xmlZapDict(&d); + return i; +} + + +const char * +_lx_inet_ntop(int af, const void * src, char * dst, socklen_t size) + +{ + const char * cp1 = inet_ntop(af, src, dst, size); + char const * cp2; + int i; + + if (!cp1) + return cp1; + + if (!(cp2 = xmlTranscodeString(cp1, NULL, NULL))) + return cp2; + + i = strlen(cp2); + + if (i >= size) { + xmlFree((char *) cp2); + errno = ENOSPC; + return (const char *) NULL; + } + + memcpy(dst, cp2, i + 1); + xmlFree((char *) cp2); + return dst; +} + + +void * +_lx_dlopen(const char * filename, int flag) + +{ + xmlDictPtr d = NULL; + void * result; + + result = dlopen(xmlTranscodeResult(filename, NULL, &d, NULL), flag); + xmlZapDict(&d); + return result; +} + + +void * +_lx_dlsym(void * handle, const char * symbol) + +{ + xmlDictPtr d = NULL; + void * result; + + result = dlsym(handle, xmlTranscodeResult(symbol, NULL, &d, NULL)); + xmlZapDict(&d); + return result; +} + + +char * +_lx_dlerror(void) + +{ + char * cp1 = (char *) dlerror(); + + if (!cp1) + return cp1; + + if (lxdles) + xmlFree((char *) lxdles); + + lxdles = (const char *) xmlTranscodeString(cp1, NULL, NULL); + return (char *) lxdles; +} + + +#ifdef HAVE_ZLIB_H +#include <zlib.h> + +gzFile +_lx_gzopen(const char * path, const char * mode) + +{ + xmlDictPtr d = NULL; + gzFile f; + + f = gzopen(xmlTranscodeResult(path, NULL, &d, NULL), + xmlTranscodeResult(mode, NULL, &d, NULL)); + xmlZapDict(&d); + return f; +} + + +gzFile +_lx_gzdopen(int fd, const char * mode) + +{ + xmlDictPtr d = NULL; + gzFile f; + + f = gzdopen(fd, xmlTranscodeResult(mode, NULL, &d, NULL)); + xmlZapDict(&d); + return f; +} + +int +_lx_inflateInit2_(z_streamp strm, int windowBits, + const char * version, int stream_size) + +{ + xmlDictPtr d = NULL; + int r; + + r = inflateInit2_(strm, windowBits, + xmlTranscodeResult(version, NULL, &d, NULL), stream_size); + xmlZapDict(&d); + return r; +} + +int +_lx_deflateInit2_(z_streamp strm, int level, int method, int windowBits, + int memLevel, int strategy, const char * version, int stream_size) + +{ + xmlDictPtr d = NULL; + int r; + + r = deflateInit2_(strm, level, method, windowBits, memLevel, strategy, + xmlTranscodeResult(version, NULL, &d, NULL), stream_size); + xmlZapDict(&d); + return r; +} + +#endif diff --git a/libxml2/os400/wrappers.h b/libxml2/os400/wrappers.h new file mode 100644 index 0000000..388ec8c --- /dev/null +++ b/libxml2/os400/wrappers.h @@ -0,0 +1,70 @@ +/** +*** Replace system/C library calls by EBCDIC wrappers. +*** This is a layer inserted between libxml2 itself and the EBCDIC +*** environment. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#ifndef __WRAPPERS_H_ +#define __WRAPPERS_H_ + +/** +*** OS/400 specific defines. +**/ + +#define __cplusplus__strings__ + +/** +*** Force header inclusions before renaming procedures to UTF-8 wrappers. +**/ + +#include <sys/types.h> +#include <sys/socket.h> +#include <arpa/inet.h> +#include <netdb.h> + +#include "dlfcn.h" + + +/** +*** UTF-8 wrappers prototypes. +**/ + +extern int _lx_getaddrinfo(const char * node, const char * service, + const struct addrinfo * hints, struct addrinfo * * res); +extern const char * + _lx_inet_ntop(int af, + const void * src, char * dst, socklen_t size); +extern void * _lx_dlopen(const char * filename, int flag); +extern void * _lx_dlsym(void * handle, const char * symbol); +extern char * _lx_dlerror(void); + + +#ifdef HAVE_ZLIB_H + +#include <zlib.h> + +extern gzFile _lx_gzopen(const char * path, const char * mode); +extern gzFile _lx_gzdopen(int fd, const char * mode); + +#endif + + +/** +*** Rename data/procedures to UTF-8 wrappers. +**/ + +#define getaddrinfo _lx_getaddrinfo +#define inet_ntop _lx_inet_ntop +#define dlopen _lx_dlopen +#define dlsym _lx_dlsym +#define dlerror _lx_dlerror +#define gzopen _lx_gzopen +#define gzdopen _lx_gzdopen +#define inflateInit2_ _lx_inflateInit2_ +#define deflateInit2_ _lx_deflateInit2_ + +#endif diff --git a/libxml2/os400/xmlcatalog.cmd b/libxml2/os400/xmlcatalog.cmd new file mode 100644 index 0000000..92f0270 --- /dev/null +++ b/libxml2/os400/xmlcatalog.cmd @@ -0,0 +1,112 @@ +/* XMLCATALOG CL command. */ +/* */ +/* See Copyright for the status of this software. */ +/* */ +/* Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. */ + +/* Interface to program XMLCATLGCL */ + + CMD PROMPT('XML/SGML catalog tool') + + /* Catalog file path. */ + + PARM KWD(INSTMF) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2) + + CASE(*MIXED) EXPR(*YES) MIN(1) SPCVAL((*NEW '')) + + CHOICE('Stream file path') + + PROMPT('XML/SGML catalog file') + + /* Catalog kind: XML/SGML. */ + + PARM KWD(KIND) TYPE(*CHAR) LEN(7) VARY(*YES *INT2) + + EXPR(*YES) RSTD(*YES) DFT(*XML) + + SPCVAL((*XML '') (*SGML '--sgml')) + + PROMPT('Catalog kind') + + /* Output file. */ + + PARM KWD(OUTSTMF) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2) + + CASE(*MIXED) EXPR(*YES) DFT(*STDOUT) + + SPCVAL((*STDOUT '') (*INSTMF X'00')) + + CHOICE('*STDOUT, *INSTMF or file path') + + PROMPT('Output stream file path') + + /* Convert SGML to XML catalog. */ + + PARM KWD(CONVERT) TYPE(*CHAR) LEN(10) VARY(*YES *INT2) + + RSTD(*YES) SPCVAL((*YES '--convert') (*NO '')) + + EXPR(*YES) DFT(*NO) PMTCTL(TYPEXML) + + PROMPT('Convert SGML to XML catalog') + + /* SGML super catalog update. */ + + PARM KWD(SUPERUPD) TYPE(*CHAR) LEN(17) VARY(*YES *INT2) + + SPCVAL((*YES '') (*NO '--no-super-update')) + + EXPR(*YES) DFT(*YES) RSTD(*YES) PMTCTL(TYPESGML) + + PROMPT('Update the SGML super catalog') + + /* Verbose/debug output. */ + + PARM KWD(VERBOSE) TYPE(*CHAR) LEN(4) VARY(*YES *INT2) + + RSTD(*YES) SPCVAL((*YES '-v') (*NO '')) + + EXPR(*YES) DFT(*NO) + + PROMPT('Output debugging information') + + /* Interactive shell not supported. */ + + /* Values to delete. */ + + PARM KWD(DELETE) TYPE(*PNAME) LEN(256) VARY(*YES *INT2) + + CASE(*MIXED) MAX(64) EXPR(*YES) + + CHOICE('Identifier value') + + PROMPT('Delete System/URI identifier') + + /* Values to add. */ + + PARM KWD(ADD) TYPE(XMLELEM) MAX(10) PMTCTL(TYPEXML) + + PROMPT('Add definition') +XMLELEM: ELEM TYPE(*CHAR) LEN(16) VARY(*YES *INT2) DFT(*PUBLIC) + + PROMPT('Entry type') + + EXPR(*YES) RSTD(*YES) SPCVAL( + + (*PUBLIC 'public') + + (*SYSTEM 'system') + + (*URI 'uri') + + (*REWRITESYSTEM 'rewriteSystem') + + (*REWRITEURI 'rewriteURI') + + (*DELEGATEPUBLIC 'delegatePublic') + + (*DELEGATESYSTEM 'delegateSystem') + + (*DELEGATEURI 'delegateURI') + + (*NEXTCATALOG 'nextCatalog') + + ) + ELEM TYPE(*PNAME) LEN(256) VARY(*YES *INT2) EXPR(*YES) + + CASE(*MIXED) PROMPT('Original reference/file name') + ELEM TYPE(*PNAME) LEN(256) VARY(*YES *INT2) EXPR(*YES) + + CASE(*MIXED) PROMPT('Replacement entity URI') + + PARM KWD(SGMLADD) TYPE(SGMLELEM) MAX(10) + + PMTCTL(TYPESGML) PROMPT('Add SGML definition') +SGMLELEM: ELEM TYPE(*PNAME) LEN(256) VARY(*YES *INT2) EXPR(*YES) + + CASE(*MIXED) PROMPT('SGML catalog file name') + ELEM TYPE(*PNAME) LEN(256) VARY(*YES *INT2) EXPR(*YES) + + CASE(*MIXED) PROMPT('SGML definition') + + /* Entities to resolve. */ + + PARM KWD(ENTITY) TYPE(*PNAME) LEN(256) VARY(*YES *INT2) + + CASE(*MIXED) EXPR(*YES) MAX(150) + + PROMPT('Resolve entity') + + /* Additional catalog files. */ + + PARM KWD(CATALOG) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2) + + CASE(*MIXED) EXPR(*YES) MAX(150) DFT(*DEFAULT) + + CHOICE('Catalog stream file path') + + PROMPT('Additional catalog file') SPCVAL( + + (*DEFAULT '/etc/xml/catalog') + + (*NONE '') + + ) + + + /* Conditional prompting. */ + +TYPEXML: PMTCTL CTL(KIND) COND((*EQ '')) +TYPESGML: PMTCTL CTL(KIND) COND((*NE '')) diff --git a/libxml2/os400/xmlcatlgcl.c b/libxml2/os400/xmlcatlgcl.c new file mode 100644 index 0000000..6f1e4ff --- /dev/null +++ b/libxml2/os400/xmlcatlgcl.c @@ -0,0 +1,288 @@ +/** +*** XMLCATALOG command response program. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <qshell.h> + + +/* Variable-length string, with 16-bit length. */ +typedef struct { + short len; + char string[5000]; +} vary2; + + +/* Variable-length string, with 32-bit length. */ +typedef struct { + int len; + char string[5000]; +} vary4; + + +/* Multiple occurrence parameter list. */ +#define paramlist(itemsize, itemtype) \ + _Packed struct { \ + short len; \ + _Packed union { \ + char _pad[itemsize]; \ + itemtype param; \ + } item[1]; \ + } + +/* Add element list structure. */ +typedef struct { + short elcount; /* Element count (=3). */ + paramlist(16, char) type; /* vary2(16). */ + paramlist(256, char) origin; /* vary2(256). */ + paramlist(256, char) replace; /* vary2(256). */ +} addelement; + +/* SGML add element list structure. */ +typedef struct { + short elcount; /* Element count (=3). */ + paramlist(256, char) catalog; /* vary2(256). */ + paramlist(256, char) ident; /* vary2(256). */ +} sgmladdelement; + + +/* Arguments from CL command. */ +typedef struct { + char * pgm; /* Program name. */ + vary2 * instmf; /* Input catalog file name. */ + vary2 * kind; /* Catalog kind. */ + vary2 * outstmf; /* Output catalog file name. */ + vary2 * convert; /* Convert SGML to XML. */ + vary2 * superupd; /* --no-super-update. */ + vary2 * verbose; /* Verbose output. */ + paramlist(256 + 2, vary2) * delete; /* Identifiers to delete. */ + paramlist(2, unsigned short) * add; /* Items to add. */ + paramlist(2, unsigned short) * sgmladd; /* SGML items to add. */ + paramlist(256 + 2, vary2) * resolve; /* Identifiers to resolve. */ + paramlist(5000 + 2, vary2) * catalog; /* Additional catalog files. */ +} arguments; + + +/* Definition of QSHELL program. */ +extern void qshell(vary4 * cmd); +#pragma linkage(qshell, OS) +#pragma map(qshell, "QSHELL/QZSHQSHC") + +/* Macro to handle displacements. */ +#define OFFSETBY(t, p, n) ((t *) (((char *) (p)) + (n))) + + +static void +vary4nappend(vary4 * dst, const char * src, size_t len) + +{ + if (len > sizeof(dst->string) - dst->len) + len = sizeof(dst->string) - dst->len; + + if (len) { + memcpy(dst->string + dst->len, src, len); + dst->len += len; + } +} + + +static void +vary4append(vary4 * dst, const char * src) + +{ + vary4nappend(dst, src, strlen(src)); +} + + +static void +vary4arg(vary4 * dst, const char * arg) + +{ + vary4nappend(dst, " ", 1); + vary4append(dst, arg); +} + + +static void +vary4varg(vary4 * dst, vary2 * arg) + +{ + vary4nappend(dst, " ", 1); + vary4nappend(dst, arg->string, arg->len); +} + + +static void +vary4vescape(vary4 * dst, vary2 * arg) + +{ + int i; + + for (i = 0; i < arg->len; i++) + if (arg->string[i] == '\'') + vary4nappend(dst, "'\"'\"'", 5); + else + vary4nappend(dst, arg->string + i, 1); +} + + +static void +vary4vargquote(vary4 * dst, vary2 * arg) + +{ + vary4nappend(dst, " '", 2); + vary4vescape(dst, arg); + vary4nappend(dst, "'", 1); +} + + +int +main(int argsc, arguments * args) + +{ + vary4 cmd; + int i; + char c; + addelement * aelp; + sgmladdelement * saelp; + + /* Specify additional catalogs. */ + cmd.len = 0; + if (args->catalog->len) { + for (i = 0; i < args->catalog->len && + !args->catalog->item[i].param.len; i++) + ; + + vary4append(&cmd, "XML_CATALOG_FILES="); + if (i < args->catalog->len) { + c = '\''; + for (i = 0; i < args->catalog->len; i++) { + if (!args->catalog->item[i].param.len) + continue; + vary4nappend(&cmd, &c, 1); + c = ' '; + vary4vescape(&cmd, + &args->catalog->item[i].param); + } + vary4nappend(&cmd, "'", 1); + } + vary4nappend(&cmd, " ", 1); + } + + /* find length of library name. */ + for (i = 0; i < 10 && args->pgm[i] && args->pgm[i] != '/'; i++) + ; + + /* Store program name in command buffer. */ + vary4append(&cmd, "/QSYS.LIB/"); + vary4nappend(&cmd, args->pgm, i); + vary4append(&cmd, ".LIB/XMLCATALOG.PGM"); + + /* Map command arguments to standard xmlcatalog argument vector. */ + if (args->kind && args->kind->len) + vary4varg(&cmd, args->kind); + + if (args->verbose && args->verbose->len) + vary4varg(&cmd, args->verbose); + + if (args->delete) + for (i = 0; i < args->delete->len; i++) { + vary4arg(&cmd, "--del"); + vary4vargquote(&cmd, &args->delete->item[i].param); + } + + if (args->kind && args->kind->len) { + /* Process SGML-specific parameters. */ + if (args->superupd && args->superupd->len) + vary4varg(&cmd, args->superupd); + + if (args->sgmladd) + for (i = 0; i < args->sgmladd->len; i++) { + saelp = OFFSETBY(sgmladdelement, args->sgmladd, + args->sgmladd->item[i].param); + if (!((vary2 *) &saelp->catalog)->len) + continue; + vary4arg(&cmd, "--add"); + vary4vargquote(&cmd, (vary2 *) &saelp->catalog); + vary4vargquote(&cmd, (vary2 *) &saelp->ident); + } + } + else { + /* Process XML-specific parameters. */ + if (args->convert && args->convert->len) + vary4varg(&cmd, args->convert); + + if (args->add) + for (i = 0; i < args->add->len; i++) { + aelp = OFFSETBY(addelement, args->add, + args->add->item[i].param); + if (!((vary2 *) &aelp->origin)->len) + continue; + vary4arg(&cmd, "--add"); + vary4varg(&cmd, (vary2 *) &aelp->type); + vary4vargquote(&cmd, (vary2 *) &aelp->origin); + vary4vargquote(&cmd, (vary2 *) &aelp->replace); + } + } + + /* Avoid INSTMF(*NEW) and OUTSMTF(*INSTMF). */ + if (args->outstmf && args->outstmf->len && !args->outstmf->string[0]) + if (args->instmf && args->instmf->len) + args->outstmf = args->instmf; + else + args->outstmf = NULL; + + /* If INSTMF(*NEW) and OUTSTMF(somepath), Use --create --noout and + somepath as (unexisting) input file. */ + if (args->outstmf && args->outstmf->len) + if (!args->instmf || !args->instmf->len) { + vary4arg(&cmd, "--create"); + vary4arg(&cmd, "--noout"); + args->instmf = args->outstmf; + args->outstmf = NULL; + } + + /* If output to input file, use --noout option. */ + if (args->instmf && args->outstmf && args->instmf->len && + args->instmf->len == args->outstmf->len && + !strncmp(args->instmf->string, args->outstmf->string, + args->instmf->len)) { + vary4arg(&cmd, "--noout"); + args->outstmf = NULL; + } + + /* If no input file create catalog, else specify the input file name. */ + /* Specify the input file name: my be a dummy one. */ + if (!args->instmf || !args->instmf->len) { + vary4arg(&cmd, "--create -"); + vary4arg(&cmd, ".dmyxmlcatalog"); + } + else { + vary4arg(&cmd, "-"); + vary4vargquote(&cmd, args->instmf); + } + + /* Query entities. */ + + if (args->resolve) + for (i = 0; i < args->resolve->len; i++) + vary4vargquote(&cmd, &args->resolve->item[i].param); + + /* Redirect output if requested. */ + if (args->outstmf && args->outstmf->len) { + vary4arg(&cmd, ">"); + vary4vargquote(&cmd, args->outstmf); + } + + /* Execute the shell command. */ + qshell(&cmd); + + /* Terminate. */ + exit(0); +} diff --git a/libxml2/os400/xmllint.cmd b/libxml2/os400/xmllint.cmd new file mode 100644 index 0000000..1582837 --- /dev/null +++ b/libxml2/os400/xmllint.cmd @@ -0,0 +1,146 @@ +/* XMLLINT CL command. */ +/* */ +/* See Copyright for the status of this software. */ +/* */ +/* Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. */ + +/* Interface to program XMLLINTCL */ + + CMD PROMPT('XML tool') + + /* XML input file location. */ + + PARM KWD(STMF) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2) + + CASE(*MIXED) EXPR(*YES) MIN(1) + + CHOICE('Stream file path') + + PROMPT('XML Stream file') + + /* DTD location. */ + + PARM KWD(DTD) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2) + + CASE(*MIXED) EXPR(*YES) PASSVAL(*NULL) + + CHOICE('ID, URL or stream file path') + + PROMPT('DTD id, URL or file path') + + PARM KWD(DTDLOCATOR) TYPE(*CHAR) LEN(8) DFT(*DTDURL) + + SPCVAL(*DTDURL *DTDFPI) EXPR(*YES) RSTD(*YES) + + PROMPT('DTD locator is URL/FPI') + + /* Schema location. */ + + PARM KWD(SCHEMA) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2) + + CASE(*MIXED) EXPR(*YES) PASSVAL(*NULL) + + CHOICE('URL or stream file path') + + PROMPT('Schema URL or stream file path') + + PARM KWD(SCHEMAKIND) TYPE(*CHAR) LEN(12) VARY(*YES *INT2) + + RSTD(*YES) DFT(*XSD) + + PROMPT('Validating schema kind') + + CHOICE('Keyword') SPCVAL( + + (*XSD '--schema') + + (*RELAXNG '--relaxng') + + (*SCHEMATRON '--schematron') + + ) + + /* Output location. */ + + PARM KWD(OUTSTMF) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2) + + CASE(*MIXED) EXPR(*YES) PASSVAL(*NULL) + + CHOICE('Stream file path') + + PROMPT('Output stream file path') + + /* Other parameters with arguments. */ + + PARM KWD(XPATH) TYPE(*CHAR) LEN(5000) VARY(*YES *INT2) + + CASE(*MIXED) EXPR(*YES) PASSVAL(*NULL) + + CHOICE('XPath expression') + + PROMPT('XPath filter') + + PARM KWD(PATTERN) TYPE(*CHAR) LEN(5000) VARY(*YES *INT2) + + CASE(*MIXED) EXPR(*YES) PASSVAL(*NULL) + + CHOICE('Reader pattern') + + PROMPT('Reader node filter') + + /* Paths for resources. */ + + PARM KWD(PATH) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2) + + CASE(*MIXED) EXPR(*YES) MAX(64) + + CHOICE('IFS directory path') + + PROMPT('Path for resources') + + PARM KWD(PRETTY) TYPE(*CHAR) LEN(11) VARY(*YES *INT2) + + RSTD(*YES) DFT(*NONE) + + PROMPT('Pretty-print style') + + CHOICE('Keyword') SPCVAL( + + (*NONE '0') + + (*FORMAT '1') + + (*WHITESPACE '2') + + ) + + PARM KWD(MAXMEM) TYPE(*UINT4) EXPR(*YES) DFT(0) + + CHOICE('Number of bytes') + + PROMPT('Maximum dynamic memory') + + PARM KWD(ENCODING) TYPE(*CHAR) LEN(32) VARY(*YES *INT2) + + CASE(*MIXED) EXPR(*YES) PASSVAL(*NULL) + + PMTCTL(ENCODING) CHOICE('Encoding name') + + PROMPT('Output character encoding') +ENCODING: PMTCTL CTL(OUTSTMF) COND(*SPCFD) + + /* Boolean options. */ + /* --shell is not supported from command mode. */ + + PARM KWD(OPTIONS) TYPE(*CHAR) LEN(20) VARY(*YES *INT2) + + MAX(50) RSTD(*YES) PROMPT('Options') + + CHOICE('Keyword') SPCVAL( + + (*VERSION '--version') + + (*DEBUG '--debug') + + (*DEBUGENT '--debugent') + + (*COPY '--copy') + + (*RECOVER '--recover') + + (*HUGE '--huge') + + (*NOENT '--noent') + + (*NOENC '--noenc') + + (*NOOUT '--noout') + + (*LOADTRACE '--load-trace') + + (*NONET '--nonet') + + (*NOCOMPACT '--nocompact') + + (*HTMLOUT '--htmlout') + + (*NOWRAP '--nowrap') + + (*VALID '--valid') + + (*POSTVALID '--postvalid') + + (*TIMING '--timing') + + (*REPEAT '--repeat') + + (*INSERT '--insert') + + (*COMPRESS '--compress') + + (*HTML '--html') + + (*XMLOUT '--xmlout') + + (*NODEFDTD '--nodefdtd') + + (*PUSH '--push') + + (*PUSHSMALL '--pushsmall') + + (*MEMORY '--memory') + + (*NOWARNING '--nowarning') + + (*NOBLANKS '--noblanks') + + (*NOCDATA '--nocdata') + + (*FORMAT '--format') + + (*DROPDTD '--dropdtd') + + (*NSCLEAN '--nsclean') + + (*TESTIO '--testIO') + + (*CATALOGS '--catalogs') + + (*NOCATALOGS '--nocatalogs') + + (*AUTO '--auto') + + (*XINCLUDE '--xinclude') + + (*NOXINCLUDENODE '--noxincludenode') + + (*NOFIXUPBASEURIS '--nofixup-base-uris') + + (*LOADDTD '--loaddtd') + + (*DTDATTR '--dtdattr') + + (*STREAM '--stream') + + (*WALKER '--walker') + + (*CHKREGISTER '--chkregister') + + (*C14N '--c14n') + + (*C14N11 '--c14n11') + + (*EXCC14N '--exc-c14n') + + (*SAX1 '--sax1') + + (*SAX '--sax') + + (*OLDXML10 '--oldxml10') + + ) diff --git a/libxml2/os400/xmllintcl.c b/libxml2/os400/xmllintcl.c new file mode 100644 index 0000000..1226385 --- /dev/null +++ b/libxml2/os400/xmllintcl.c @@ -0,0 +1,216 @@ +/** +*** XMLLINT command response program. +*** +*** See Copyright for the status of this software. +*** +*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. +**/ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <qshell.h> + + +/* Variable-length string, with 16-bit length. */ +typedef struct { + short len; + char string[5000]; +} vary2; + + +/* Variable-length string, with 32-bit length. */ +typedef struct { + int len; + char string[5000]; +} vary4; + + +/* Multiple occurrence parameter list. */ +#define paramlist(itemsize, itemtype) \ + _Packed struct { \ + short len; \ + union { \ + char _pad[itemsize]; \ + itemtype param; \ + } item[1]; \ + } + + +/* Arguments from CL command. */ +typedef struct { + char * pgm; /* Program name. */ + vary2 * stmf; /* XML file name or URL. */ + vary2 * dtd; /* DTD location or public identifier. */ + char * dtdvalid; /* *DTDURL or *DTDFPI. */ + vary2 * schema; /* Schema file name or URL. */ + vary2 * schemakind; /* --schema/--relaxng/--schematron. */ + vary2 * outstmf; /* Output stream file name. */ + vary2 * xpath; /* XPath filter. */ + vary2 * pattern; /* Reader filter pattern. */ + paramlist(5000 + 2, vary2) * path; /* Path for resources. */ + vary2 * pretty; /* Pretty-print style. */ + unsigned long * maxmem; /* Maximum dynamic memory. */ + vary2 * encoding; /* Output encoding. */ + paramlist(20 + 2, vary2) * options; /* Other options. */ +} arguments; + + +/* Definition of QSHELL program. */ +extern void qshell(vary4 * cmd); +#pragma linkage(qshell, OS) +#pragma map(qshell, "QSHELL/QZSHQSHC") + + +static void +vary4nappend(vary4 * dst, const char * src, size_t len) + +{ + if (len > sizeof(dst->string) - dst->len) + len = sizeof(dst->string) - dst->len; + + if (len) { + memcpy(dst->string + dst->len, src, len); + dst->len += len; + } +} + + +static void +vary4append(vary4 * dst, const char * src) + +{ + vary4nappend(dst, src, strlen(src)); +} + + +static void +vary4arg(vary4 * dst, const char * arg) + +{ + vary4nappend(dst, " ", 1); + vary4append(dst, arg); +} + + +static void +vary4varg(vary4 * dst, vary2 * arg) + +{ + vary4nappend(dst, " ", 1); + vary4nappend(dst, arg->string, arg->len); +} + + +static void +vary4vescape(vary4 * dst, vary2 * arg) + +{ + int i; + + for (i = 0; i < arg->len; i++) + if (arg->string[i] == '\'') + vary4nappend(dst, "'\"'\"'", 5); + else + vary4nappend(dst, arg->string + i, 1); +} + + +static void +vary4vargquote(vary4 * dst, vary2 * arg) + +{ + vary4nappend(dst, " '", 2); + vary4vescape(dst, arg); + vary4nappend(dst, "'", 1); +} + + +int +main(int argsc, arguments * args) + +{ + vary4 cmd; + int i; + char textbuf[20]; + char * lang; + + /* find length of library name. */ + for (i = 0; i < 10 && args->pgm[i] && args->pgm[i] != '/'; i++) + ; + + /* Store program name in command buffer. */ + cmd.len = 0; + vary4append(&cmd, "/QSYS.LIB/"); + vary4nappend(&cmd, args->pgm, i); + vary4append(&cmd, ".LIB/XMLLINT.PGM"); + + /* Map command arguments to standard xmllint argument vector. */ + + if (args->dtd && args->dtd->len) { + if (args->dtdvalid && args->dtdvalid[4] == 'F') + vary4arg(&cmd, "--dtdvalidfpi"); + else + vary4arg(&cmd, "--dtdvalid"); + + vary4vargquote(&cmd, args->dtd); + } + + if (args->schema && args->schema->len) { + vary4varg(&cmd, args->schemakind); + vary4vargquote(&cmd, args->schema); + } + + if (args->outstmf && args->outstmf->len) { + vary4arg(&cmd, "--output"); + vary4vargquote(&cmd, args->outstmf); + + if (args->encoding && args->encoding->len) { + vary4arg(&cmd, "--encoding"); + vary4vargquote(&cmd, args->encoding); + } + } + + if (args->xpath && args->xpath->len) { + vary4arg(&cmd, "--xpath"); + vary4vargquote(&cmd, args->xpath); + } + + if (args->pattern && args->pattern->len) { + vary4arg(&cmd, "--pattern"); + vary4vargquote(&cmd, args->pattern); + } + + if (args->path && args->path->len) { + vary4arg(&cmd, "--path '"); + vary4vescape(&cmd, &args->path->item[0].param); + for (i = 1; i < args->path->len; i++) { + vary4nappend(&cmd, ":", 1); + vary4vescape(&cmd, &args->path->item[i].param); + } + vary4nappend(&cmd, "'", 1); + } + + if (args->pretty && args->pretty->len && + args->pretty->string[0] != '0') { + vary4arg(&cmd, "--pretty"); + vary4varg(&cmd, args->pretty); + } + + if (args->maxmem && *args->maxmem) { + snprintf(textbuf, sizeof textbuf, "%lu", *args->maxmem); + vary4arg(&cmd, "--maxmem"); + vary4arg(&cmd, textbuf); + } + + for (i = 0; i < args->options->len; i++) + vary4varg(&cmd, &args->options->item[i].param); + + vary4vargquote(&cmd, args->stmf); + + /* Execute the shell command. */ + qshell(&cmd); + + /* Terminate. */ + exit(0); +} |