summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorMark A. Hershberger <mah@debian.(none)>2009-03-25 00:35:28 -0400
committerMark A. Hershberger <mah@debian.(none)>2009-03-25 00:35:28 -0400
commitba50031707469046407a35b77a3cd81351e951b3 (patch)
tree5c03e723bdbfabae09d41a3ab1253dff41eeed4a /ext
parent0a36161e13484a99ccf69bb38f206462d27cc6d6 (diff)
downloadphp-ba50031707469046407a35b77a3cd81351e951b3.tar.gz
Imported Upstream version 5.1.5upstream/5.1.5
Diffstat (limited to 'ext')
-rw-r--r--ext/com_dotnet/com_com.c14
-rw-r--r--ext/com_dotnet/com_handlers.c14
-rw-r--r--ext/com_dotnet/com_iterator.c55
-rwxr-xr-xext/com_dotnet/com_persist.c1566
-rw-r--r--ext/com_dotnet/com_variant.c4
-rw-r--r--ext/com_dotnet/php_com_dotnet_internal.h6
-rwxr-xr-xext/com_dotnet/tests/27974.phpt86
-rw-r--r--ext/com_dotnet/tests/bug34272.phpt22
-rw-r--r--ext/curl/interface.c354
-rw-r--r--ext/curl/multi.c9
-rw-r--r--ext/curl/php_curl.h9
-rw-r--r--ext/curl/streams.c8
-rw-r--r--ext/date/lib/parse_date.c21374
-rw-r--r--ext/date/lib/parse_date.c.orig21528
-rw-r--r--ext/date/lib/parse_date.re146
-rw-r--r--ext/date/lib/parse_tz.c7
-rw-r--r--ext/date/lib/timelib.c17
-rw-r--r--ext/date/lib/timelib.h6
-rw-r--r--ext/date/lib/timelib_structs.h22
-rw-r--r--ext/date/lib/timezonedb.h1193
-rw-r--r--ext/date/lib/timezonemap.h19
-rw-r--r--ext/date/lib/tm2unixtime.c9
-rw-r--r--ext/date/php_date.c187
-rw-r--r--ext/date/php_date.h6
-rw-r--r--ext/date/tests/bug26317.phpt2
-rw-r--r--ext/date/tests/bug26320.phpt4
-rw-r--r--ext/date/tests/bug36224.phpt13
-rw-r--r--ext/date/tests/bug36510.phpt14
-rw-r--r--ext/date/tests/bug36599.phpt12
-rw-r--r--ext/date/tests/bug36988.phpt12
-rw-r--r--ext/date/tests/bug37017.phpt16
-rw-r--r--ext/dba/dba_db4.c20
-rwxr-xr-xext/dba/tests/bug36436.phpt34
-rw-r--r--ext/dbase/dbf_head.c11
-rw-r--r--ext/dom/attr.c4
-rw-r--r--ext/dom/dom_iterators.c24
-rw-r--r--ext/dom/domimplementation.c8
-rw-r--r--ext/dom/element.c4
-rw-r--r--ext/dom/namednodemap.c56
-rw-r--r--ext/dom/node.c4
-rw-r--r--ext/dom/notation.c16
-rw-r--r--ext/dom/php_dom.c18
-rw-r--r--ext/dom/tests/bug36756.phpt35
-rw-r--r--ext/dom/tests/bug37277.phpt25
-rw-r--r--ext/dom/tests/dom007.phpt99
-rw-r--r--ext/exif/exif.c6
-rw-r--r--ext/fbsql/php_fbsql.c62
-rw-r--r--ext/fbsql/php_fbsql.h36
-rw-r--r--ext/ftp/ftp.c10
-rw-r--r--ext/gd/gd.c73
-rw-r--r--ext/gd/gd_ctx.c18
-rw-r--r--ext/gd/libgd/gd.c2
-rw-r--r--ext/gd/libgd/gd.h10
-rw-r--r--ext/gd/libgd/gd_gd2.c4
-rw-r--r--ext/gd/libgd/gd_gif_in.c39
-rw-r--r--ext/gd/libgd/gd_gif_out.c6
-rw-r--r--ext/gd/libgd/gd_jpeg.c62
-rw-r--r--ext/gd/libgd/gd_png.c21
-rw-r--r--ext/gd/tests/bug36697.phpt31
-rw-r--r--ext/gd/tests/bug37346.gif4
-rw-r--r--ext/gd/tests/bug37346.phpt13
-rw-r--r--ext/gd/tests/bug37360.gifbin0 -> 65646 bytes
-rw-r--r--ext/gd/tests/bug37360.phpt14
-rw-r--r--ext/gettext/config.w324
-rw-r--r--ext/hash/config.m44
-rw-r--r--ext/hash/config.w324
-rw-r--r--ext/hash/hash_adler32.c6
-rw-r--r--ext/hash/hash_tiger.c45
-rw-r--r--ext/hash/php_hash.h4
-rw-r--r--ext/hash/php_hash_types.h6
-rw-r--r--ext/iconv/iconv.c38
-rw-r--r--ext/iconv/php_iconv.h4
-rw-r--r--ext/iconv/tests/bug37176.phpt10
-rw-r--r--ext/imap/php_imap.c124
-rw-r--r--ext/imap/php_imap.h5
-rw-r--r--ext/informix/config.m44
-rw-r--r--ext/informix/ifx.ec43
-rw-r--r--ext/mbstring/config.m44
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfilter.c18
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfilter.h1
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_convert.c4
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_convert.h1
-rw-r--r--ext/mbstring/mbstring.c265
-rw-r--r--ext/mbstring/mbstring.h4
-rw-r--r--ext/mhash/mhash.c4
-rw-r--r--ext/ming/ming.c52
-rw-r--r--ext/msession/CREDITS3
-rw-r--r--ext/msession/README33
-rw-r--r--ext/msession/config.m436
-rw-r--r--ext/msession/msession-test.php125
-rw-r--r--ext/msession/msession.c1375
-rw-r--r--ext/msession/msession.php10
-rw-r--r--ext/msession/php_msession.h106
-rw-r--r--ext/msession/reqclient.h171
-rw-r--r--ext/mssql/php_mssql.c7
-rwxr-xr-xext/mysql/tests/001.phpt7
-rw-r--r--ext/mysqli/mysqli.c62
-rw-r--r--ext/mysqli/mysqli_api.c197
-rw-r--r--ext/mysqli/mysqli_driver.c1
-rw-r--r--ext/mysqli/mysqli_nonapi.c20
-rw-r--r--ext/mysqli/mysqli_prop.c169
-rw-r--r--ext/mysqli/mysqli_repl.c22
-rw-r--r--ext/mysqli/mysqli_warning.c8
-rw-r--r--ext/mysqli/php_mysqli.h65
-rw-r--r--ext/mysqli/tests/002.phpt1
-rw-r--r--ext/mysqli/tests/014.phpt5
-rw-r--r--ext/mysqli/tests/015.phpt3
-rw-r--r--ext/mysqli/tests/017.phpt6
-rw-r--r--ext/mysqli/tests/045.phpt6
-rw-r--r--ext/mysqli/tests/049.phpt10
-rw-r--r--ext/mysqli/tests/bug34810.phpt5
-rw-r--r--ext/mysqli/tests/bug36420.phpt25
-rw-r--r--ext/mysqli/tests/bug36745.phpt23
-rw-r--r--ext/mysqli/tests/bug36802.phpt42
-rw-r--r--ext/mysqli/tests/connect.inc6
-rw-r--r--ext/oci8/config.m415
-rw-r--r--ext/oci8/config.w329
-rw-r--r--ext/oci8/oci8.c61
-rw-r--r--ext/oci8/oci8_interface.c32
-rw-r--r--ext/oci8/oci8_lob.c91
-rw-r--r--ext/oci8/oci8_statement.c28
-rw-r--r--ext/oci8/php_oci8_int.h6
-rw-r--r--ext/oci8/tests/bind_empty.phpt4
-rw-r--r--ext/oci8/tests/bind_long.phpt38
-rw-r--r--ext/oci8/tests/bind_long_raw.phpt38
-rw-r--r--ext/oci8/tests/bind_raw.phpt39
-rw-r--r--ext/oci8/tests/bug36010.phpt26
-rw-r--r--ext/oci8/tests/bug36096.phpt28
-rw-r--r--ext/oci8/tests/cursors.phpt10
-rw-r--r--ext/oci8/tests/debug.phpt18
-rw-r--r--ext/oci8/tests/error1.phpt13
-rw-r--r--ext/oci8/tests/exec_fetch.phpt5
-rw-r--r--ext/oci8/tests/fetch_array.phpt96
-rw-r--r--ext/oci8/tests/fetch_assoc.phpt24
-rw-r--r--ext/oci8/tests/fetch_object.phpt26
-rw-r--r--ext/oci8/tests/fetch_row.phpt24
-rw-r--r--ext/oci8/tests/field_funcs.phpt4
-rw-r--r--ext/oci8/tests/field_funcs1.phpt2
-rw-r--r--ext/oci8/tests/field_funcs_old.phpt2
-rw-r--r--ext/oci8/tests/lob_001.phptbin1256 -> 1305 bytes
-rw-r--r--ext/oci8/tests/lob_011.phpt4
-rw-r--r--ext/oci8/tests/lob_019.phptbin0 -> 1548 bytes
-rw-r--r--ext/oci8/tests/lob_020.phptbin0 -> 1597 bytes
-rw-r--r--ext/oci8/tests/select_null.phpt4
-rw-r--r--ext/oci8/tests/test.gifbin0 -> 2523 bytes
-rw-r--r--ext/openssl/openssl.c7
-rw-r--r--ext/openssl/xp_ssl.c59
-rw-r--r--ext/pcre/config.w326
-rw-r--r--ext/pcre/config0.m46
-rw-r--r--ext/pcre/pcrelib/ChangeLog284
-rw-r--r--ext/pcre/pcrelib/LICENCE2
-rw-r--r--ext/pcre/pcrelib/NEWS22
-rw-r--r--ext/pcre/pcrelib/NON-UNIX-USE36
-rw-r--r--ext/pcre/pcrelib/README41
-rw-r--r--ext/pcre/pcrelib/dftables.c2
-rw-r--r--ext/pcre/pcrelib/doc/Tech.Notes7
-rw-r--r--ext/pcre/pcrelib/doc/pcre.txt1345
-rw-r--r--ext/pcre/pcrelib/pcre.def12
-rw-r--r--ext/pcre/pcrelib/pcre.h60
-rw-r--r--ext/pcre/pcrelib/pcre_compile.c287
-rw-r--r--ext/pcre/pcrelib/pcre_config.c8
-rw-r--r--ext/pcre/pcrelib/pcre_dfa_exec.c225
-rw-r--r--ext/pcre/pcrelib/pcre_exec.c465
-rw-r--r--ext/pcre/pcrelib/pcre_fullinfo.c4
-rw-r--r--ext/pcre/pcrelib/pcre_get.c2
-rw-r--r--ext/pcre/pcrelib/pcre_globals.c2
-rw-r--r--ext/pcre/pcrelib/pcre_info.c4
-rw-r--r--ext/pcre/pcrelib/pcre_internal.h99
-rw-r--r--ext/pcre/pcrelib/pcre_maketables.c33
-rw-r--r--ext/pcre/pcrelib/pcre_ord2utf8.c4
-rw-r--r--ext/pcre/pcrelib/pcre_printint.src (renamed from ext/pcre/pcrelib/pcre_printint.c)45
-rw-r--r--ext/pcre/pcrelib/pcre_refcount.c4
-rw-r--r--ext/pcre/pcrelib/pcre_scanner.cc8
-rw-r--r--ext/pcre/pcrelib/pcre_scanner_unittest.cc1
-rw-r--r--ext/pcre/pcrelib/pcre_study.c4
-rw-r--r--ext/pcre/pcrelib/pcre_tables.c150
-rw-r--r--ext/pcre/pcrelib/pcre_try_flipped.c4
-rw-r--r--ext/pcre/pcrelib/pcre_ucp_findchar.c53
-rw-r--r--ext/pcre/pcrelib/pcre_ucp_searchfuncs.c175
-rw-r--r--ext/pcre/pcrelib/pcre_valid_utf8.c4
-rw-r--r--ext/pcre/pcrelib/pcre_version.c9
-rw-r--r--ext/pcre/pcrelib/pcre_xclass.c45
-rw-r--r--ext/pcre/pcrelib/pcrecpp.cc19
-rw-r--r--ext/pcre/pcrelib/pcrecpp.h163
-rw-r--r--ext/pcre/pcrelib/pcrecpp_unittest.cc61
-rw-r--r--ext/pcre/pcrelib/pcrecpparg.h171
-rw-r--r--ext/pcre/pcrelib/pcregrep.c991
-rw-r--r--ext/pcre/pcrelib/pcreposix.c45
-rw-r--r--ext/pcre/pcrelib/pcreposix.h58
-rw-r--r--ext/pcre/pcrelib/pcretest.c193
-rw-r--r--ext/pcre/pcrelib/testdata/grepinput22
-rw-r--r--ext/pcre/pcrelib/testdata/greplist5
-rw-r--r--ext/pcre/pcrelib/testdata/grepoutput128
-rw-r--r--ext/pcre/pcrelib/testdata/testinput240
-rw-r--r--ext/pcre/pcrelib/testdata/testinput326
-rw-r--r--ext/pcre/pcrelib/testdata/testinput43
-rw-r--r--ext/pcre/pcrelib/testdata/testinput55
-rw-r--r--ext/pcre/pcrelib/testdata/testinput6224
-rw-r--r--ext/pcre/pcrelib/testdata/testinput712
-rw-r--r--ext/pcre/pcrelib/testdata/testinput9217
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput12
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput2236
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput356
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput46
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput5207
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput6434
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput719
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput82
-rw-r--r--ext/pcre/pcrelib/testdata/testoutput9397
-rw-r--r--ext/pcre/pcrelib/ucp.h76
-rw-r--r--ext/pcre/pcrelib/ucp_findchar.c160
-rw-r--r--ext/pcre/pcrelib/ucpinternal.h116
-rw-r--r--ext/pcre/pcrelib/ucptable.c18065
-rw-r--r--ext/pcre/php_pcre.c24
-rw-r--r--ext/pcre/tests/bug26927.phpt2
-rwxr-xr-xext/pdo/CREDITS3
-rw-r--r--ext/pdo/package2.xml19
-rwxr-xr-xext/pdo/pdo_dbh.c55
-rw-r--r--ext/pdo/pdo_sql_parser.c22
-rw-r--r--ext/pdo/pdo_sql_parser.c.orig22
-rw-r--r--ext/pdo/pdo_sql_parser.re20
-rwxr-xr-xext/pdo/pdo_stmt.c108
-rwxr-xr-xext/pdo/php_pdo_driver.h8
-rw-r--r--ext/pdo/tests/bug_35671.phpt45
-rw-r--r--ext/pdo/tests/pdo_011.phpt66
-rw-r--r--ext/pdo/tests/pdo_014.phpt2
-rwxr-xr-xext/pdo/tests/pdo_031.phpt2
-rw-r--r--ext/pdo_dblib/package2.xml4
-rw-r--r--ext/pdo_firebird/package2.xml4
-rwxr-xr-xext/pdo_mysql/CREDITS5
-rwxr-xr-xext/pdo_mysql/config.m47
-rwxr-xr-xext/pdo_mysql/mysql_driver.c61
-rwxr-xr-xext/pdo_mysql/mysql_statement.c33
-rw-r--r--ext/pdo_mysql/package2.xml12
-rwxr-xr-xext/pdo_mysql/pdo_mysql.c4
-rwxr-xr-xext/pdo_mysql/php_pdo_mysql_int.h6
-rwxr-xr-xext/pdo_oci/config.m410
-rwxr-xr-xext/pdo_oci/oci_statement.c6
-rw-r--r--ext/pdo_oci/package2.xml7
-rw-r--r--ext/pdo_oci/tests/bug_33707.phpt3
-rwxr-xr-xext/pdo_odbc/config.m44
-rwxr-xr-xext/pdo_odbc/odbc_driver.c24
-rwxr-xr-xext/pdo_odbc/odbc_stmt.c10
-rw-r--r--ext/pdo_odbc/package2.xml6
-rwxr-xr-xext/pdo_odbc/php_pdo_odbc_int.h6
-rw-r--r--ext/pdo_pgsql/config.w327
-rw-r--r--ext/pdo_pgsql/package2.xml16
-rw-r--r--ext/pdo_pgsql/pdo_pgsql.c12
-rw-r--r--ext/pdo_pgsql/pgsql_driver.c42
-rw-r--r--ext/pdo_pgsql/pgsql_statement.c10
-rw-r--r--ext/pdo_pgsql/tests/bug36727.phpt23
-rw-r--r--ext/pdo_sqlite/config.m45
-rw-r--r--ext/pdo_sqlite/package2.xml8
-rw-r--r--ext/pgsql/pgsql.c11
-rwxr-xr-xext/pgsql/tests/80_bug36625.phpt49
-rw-r--r--ext/posix/CREDITS2
-rw-r--r--ext/reflection/php_reflection.c335
-rwxr-xr-xext/reflection/tests/001.phpt2
-rwxr-xr-xext/reflection/tests/002.phpt2
-rwxr-xr-xext/reflection/tests/003.phpt4
-rwxr-xr-xext/reflection/tests/004.phpt4
-rwxr-xr-xext/reflection/tests/005.phpt2
-rwxr-xr-xext/reflection/tests/006.phpt2
-rwxr-xr-xext/reflection/tests/007.phpt162
-rwxr-xr-xext/reflection/tests/bug26640.phpt4
-rwxr-xr-xext/reflection/tests/bug26695.phpt4
-rwxr-xr-xext/reflection/tests/bug29268.phpt9
-rwxr-xr-xext/reflection/tests/bug29523.phpt4
-rwxr-xr-xext/reflection/tests/bug29828.phpt4
-rw-r--r--ext/reflection/tests/bug29986.phpt41
-rwxr-xr-xext/reflection/tests/bug30146.phpt4
-rwxr-xr-xext/reflection/tests/bug30148.phpt4
-rwxr-xr-xext/reflection/tests/bug30209.phpt4
-rwxr-xr-xext/reflection/tests/bug30856.phpt4
-rwxr-xr-xext/reflection/tests/bug30961.phpt4
-rwxr-xr-xext/reflection/tests/bug31651.phpt4
-rwxr-xr-xext/reflection/tests/bug32981.phpt4
-rwxr-xr-xext/reflection/tests/bug33312.phpt4
-rwxr-xr-xext/reflection/tests/bug33389.phpt4
-rwxr-xr-xext/reflection/tests/bug36308.phpt22
-rw-r--r--ext/reflection/tests/bug36337.phpt30
-rw-r--r--ext/reflection/tests/bug36434.phpt33
-rwxr-xr-xext/reflection/tests/parameters_001.phpt4
-rwxr-xr-xext/reflection/tests/parameters_002.phpt209
-rwxr-xr-xext/reflection/tests/property_exists.phpt4
-rwxr-xr-xext/reflection/tests/static_properties_002.phpt4
-rw-r--r--ext/session/mod_files.c10
-rw-r--r--ext/session/php_session.h8
-rw-r--r--ext/session/session.c18
-rw-r--r--ext/session/tests/bug36459.phpt41
-rw-r--r--ext/simplexml/php_simplexml.h17
-rw-r--r--ext/simplexml/simplexml.c488
-rwxr-xr-xext/simplexml/tests/009b.phpt35
-rwxr-xr-xext/simplexml/tests/026.phpt40
-rwxr-xr-xext/simplexml/tests/027.phpt74
-rwxr-xr-xext/simplexml/tests/028.phpt42
-rwxr-xr-xext/simplexml/tests/029.phpt40
-rw-r--r--ext/simplexml/tests/030.phpt44
-rw-r--r--ext/simplexml/tests/031.phpt57
-rwxr-xr-xext/simplexml/tests/032.phpt45
-rwxr-xr-xext/simplexml/tests/033.phpt137
-rwxr-xr-xext/simplexml/tests/bug35785.phpt25
-rw-r--r--ext/simplexml/tests/bug36611.phpt28
-rw-r--r--ext/soap/php_encoding.c169
-rw-r--r--ext/soap/php_encoding.h4
-rw-r--r--ext/soap/php_http.c52
-rw-r--r--ext/soap/php_schema.c131
-rw-r--r--ext/soap/php_schema.h8
-rw-r--r--ext/soap/php_sdl.c1114
-rw-r--r--ext/soap/php_sdl.h7
-rw-r--r--ext/soap/php_soap.h20
-rw-r--r--ext/soap/soap.c383
-rw-r--r--ext/soap/tests/bugs/bug30045.phpt2
-rwxr-xr-xext/soap/tests/bugs/bug35142.phpt20
-rwxr-xr-xext/soap/tests/bugs/bug36226.phpt139
-rwxr-xr-xext/soap/tests/bugs/bug36575.phpt52
-rwxr-xr-xext/soap/tests/bugs/bug36575.wsdl87
-rwxr-xr-xext/soap/tests/bugs/bug36614.phpt13
-rwxr-xr-xext/soap/tests/bugs/bug36614.wsdl204
-rwxr-xr-xext/soap/tests/bugs/bug36629.phpt53
-rwxr-xr-xext/soap/tests/bugs/bug36908.phpt46
-rwxr-xr-xext/soap/tests/bugs/bug36908.wsdl51
-rwxr-xr-xext/soap/tests/bugs/bug37083.phpt58
-rwxr-xr-xext/soap/tests/bugs/bug37083.wsdl99
-rwxr-xr-xext/soap/tests/bugs/bug37278.phpt24
-rwxr-xr-xext/soap/tests/classmap003.phpt54
-rwxr-xr-xext/soap/tests/classmap003.wsdl51
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_001w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_002w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_003w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_004w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_005w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_006w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_007w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_008w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_009w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_010w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_001w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_002w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_003w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_004w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_005w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_006w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_007w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_008w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_009w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_010w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_001w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_002w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_003w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_004w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_005w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_006w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_007w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_008w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_009w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_010w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_011w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_012w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_013w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_014w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_015w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_016w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_017w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_001w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_002w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_003w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_004w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_005w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_006w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_007w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_008w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_009w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_010w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_011w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_012w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_013w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_014w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_015w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_016w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_017w.phpt1
-rw-r--r--ext/soap/tests/interop/Round4/GroupI/r4_groupI_xsd_006w.phptbin1045 -> 1072 bytes
-rw-r--r--ext/soap/tests/schema/schema075.phpt2
-rw-r--r--ext/soap/tests/schema/schema076.phpt2
-rw-r--r--ext/soap/tests/schema/schema077.phpt2
-rw-r--r--ext/soap/tests/schema/schema078.phpt2
-rw-r--r--ext/soap/tests/schema/schema079.phpt2
-rw-r--r--ext/soap/tests/schema/schema080.phpt2
-rw-r--r--ext/soap/tests/server017.phpt1
-rw-r--r--ext/soap/tests/server018.phpt1
-rwxr-xr-xext/soap/tests/server022.phpt1
-rwxr-xr-xext/soap/tests/server023.phpt37
-rwxr-xr-xext/soap/tests/server024.phpt49
-rwxr-xr-xext/soap/tests/server025.phpt46
-rwxr-xr-xext/soap/tests/server025.wsdl55
-rw-r--r--ext/soap/tests/soap12/T63.phpt1
-rw-r--r--ext/sockets/sockets.c2
-rwxr-xr-xext/spl/doxygen.cfg4
-rw-r--r--ext/spl/examples/directorygraphiterator.inc11
-rw-r--r--ext/spl/examples/directorytreeiterator.inc9
-rwxr-xr-xext/spl/internal/iteratoriterator.inc2
-rwxr-xr-xext/spl/php_spl.c67
-rwxr-xr-xext/spl/spl.php131
-rwxr-xr-xext/spl/spl_array.c123
-rwxr-xr-xext/spl/spl_directory.c267
-rwxr-xr-xext/spl/spl_directory.h20
-rwxr-xr-xext/spl/spl_engine.c16
-rwxr-xr-xext/spl/spl_engine.h6
-rwxr-xr-xext/spl/spl_functions.c6
-rwxr-xr-xext/spl/spl_iterators.c223
-rwxr-xr-xext/spl/spl_iterators.h6
-rwxr-xr-xext/spl/spl_observer.c11
-rwxr-xr-xext/spl/spl_sxe.c54
-rwxr-xr-xext/spl/tests/array_017.phpt2
-rwxr-xr-xext/spl/tests/array_019.phpt32
-rwxr-xr-xext/spl/tests/array_020.phpt66
-rwxr-xr-xext/spl/tests/array_021.phpt31
-rwxr-xr-xext/spl/tests/array_022.phpt94
-rw-r--r--ext/spl/tests/bug34548.phpt2
-rw-r--r--ext/spl/tests/bug36258.phpt21
-rwxr-xr-xext/spl/tests/bug36287.phpt40
-rw-r--r--ext/spl/tests/bug36825.phpt33
-rwxr-xr-xext/spl/tests/bug36941.phpt46
-rwxr-xr-xext/spl/tests/iterator_012.phpt2
-rwxr-xr-xext/spl/tests/iterator_019.phpt2
-rwxr-xr-xext/spl/tests/iterator_030.phpt46
-rwxr-xr-xext/spl/tests/iterator_031.phpt118
-rwxr-xr-xext/spl/tests/iterator_032.phpt52
-rwxr-xr-xext/spl/tests/iterator_033.phpt46
-rwxr-xr-xext/spl/tests/iterator_034.phpt190
-rw-r--r--ext/spl/tests/iterator_035.phpt17
-rwxr-xr-xext/spl/tests/spl_autoload_008.phpt131
-rwxr-xr-xext/spl/tests/sxe_005.phpt46
-rw-r--r--ext/sqlite/sqlite.c15
-rw-r--r--ext/standard/array.c42
-rw-r--r--ext/standard/basic_functions.c71
-rw-r--r--ext/standard/basic_functions.h9
-rw-r--r--ext/standard/crc32.c15
-rw-r--r--ext/standard/credits.c6
-rw-r--r--ext/standard/credits_ext.h9
-rw-r--r--ext/standard/cyr_convert.c6
-rw-r--r--ext/standard/dir.c4
-rw-r--r--ext/standard/exec.c6
-rw-r--r--ext/standard/file.c27
-rw-r--r--ext/standard/file.h3
-rw-r--r--ext/standard/filestat.c116
-rw-r--r--ext/standard/filters.c123
-rw-r--r--ext/standard/ftp_fopen_wrapper.c4
-rw-r--r--ext/standard/html.c4
-rw-r--r--ext/standard/http.c17
-rw-r--r--ext/standard/http_fopen_wrapper.c16
-rw-r--r--ext/standard/incomplete_class.c6
-rw-r--r--ext/standard/info.c40
-rw-r--r--ext/standard/math.c4
-rw-r--r--ext/standard/pack.c8
-rw-r--r--ext/standard/php_array.h13
-rw-r--r--ext/standard/php_ext_syslog.h3
-rw-r--r--ext/standard/php_filestat.h8
-rw-r--r--ext/standard/php_fopen_wrapper.c24
-rw-r--r--ext/standard/php_incomplete_class.h6
-rw-r--r--ext/standard/php_math.h5
-rw-r--r--ext/standard/php_smart_str.h2
-rw-r--r--ext/standard/reg.c4
-rw-r--r--ext/standard/scanf.c28
-rw-r--r--ext/standard/streamsfuncs.c16
-rw-r--r--ext/standard/string.c48
-rw-r--r--ext/standard/syslog.c28
-rw-r--r--ext/standard/tests/array/array_chunk2.phpt146
-rwxr-xr-xext/standard/tests/array/array_combine.phpt122
-rw-r--r--ext/standard/tests/array/array_count_values2.phpt43
-rwxr-xr-xext/standard/tests/array/array_diff_assoc.phpt49
-rw-r--r--ext/standard/tests/array/array_diff_key2.phpt44
-rw-r--r--ext/standard/tests/file/bug24313.phpt2
-rw-r--r--ext/standard/tests/file/bug37158.phpt39
-rw-r--r--ext/standard/tests/file/userstreams.phpt6
-rw-r--r--ext/standard/tests/filters/read.phpt72
-rwxr-xr-xext/standard/tests/general_functions/bug35229.phpt2
-rwxr-xr-xext/standard/tests/general_functions/bug36011.phpt46
-rw-r--r--ext/standard/tests/math/bug21523.phpt3
-rw-r--r--ext/standard/tests/strings/bug33605.phpt11
-rw-r--r--ext/standard/tests/strings/bug36148.phpt29
-rw-r--r--ext/standard/tests/strings/bug36306.phpt15
-rw-r--r--ext/standard/tests/strings/bug36944.phpt26
-rw-r--r--ext/standard/tests/strings/substr_compare.phpt39
-rw-r--r--ext/standard/tests/strings/url_t.phpt7
-rw-r--r--ext/standard/url.c8
-rw-r--r--ext/standard/url_scanner_ex.c713
-rw-r--r--ext/standard/url_scanner_ex.c.orig781
-rw-r--r--ext/standard/url_scanner_ex.re6
-rw-r--r--ext/standard/user_filters.c21
-rw-r--r--ext/standard/var.c48
-rw-r--r--ext/tidy/php_tidy.def1
-rw-r--r--ext/tidy/tidy.c42
-rw-r--r--ext/tokenizer/tests/002.phpt196
-rw-r--r--ext/tokenizer/tests/003.phpt4
-rw-r--r--ext/tokenizer/tests/bug26463.phpt28
-rw-r--r--ext/wddx/wddx.c17
-rw-r--r--ext/xml/xml.c5
-rw-r--r--ext/xmlreader/php_xmlreader.c79
-rw-r--r--ext/xmlreader/tests/011.phpt34
-rwxr-xr-xext/xmlreader/tests/012.dtd2
-rwxr-xr-xext/xmlreader/tests/012.phpt69
-rwxr-xr-xext/xmlreader/tests/012.xml3
-rw-r--r--ext/xmlreader/tests/bug36743.phpt25
-rw-r--r--ext/xmlrpc/tests/bug37057.phpt62
-rw-r--r--ext/xmlrpc/tests/bug38431.phpt25
-rw-r--r--ext/xmlrpc/xmlrpc-epi-php.c10
-rw-r--r--ext/xmlwriter/CREDITS3
-rw-r--r--ext/xmlwriter/php_xmlwriter.c27
-rw-r--r--ext/xsl/php_xsl.c10
-rw-r--r--ext/xsl/xsltprocessor.c5
511 files changed, 48782 insertions, 39853 deletions
diff --git a/ext/com_dotnet/com_com.c b/ext/com_dotnet/com_com.c
index 76d188080..7d3dd5834 100644
--- a/ext/com_dotnet/com_com.c
+++ b/ext/com_dotnet/com_com.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_com.c,v 1.16.2.1 2006/01/01 12:50:00 sniper Exp $ */
+/* $Id: com_com.c,v 1.16.2.2 2006/01/26 11:17:34 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -336,7 +336,7 @@ PHP_FUNCTION(com_get_active_object)
/* Performs an Invoke on the given com object.
* returns a failure code and creates an exception if there was an error */
HRESULT php_com_invoke_helper(php_com_dotnet_object *obj, DISPID id_member,
- WORD flags, DISPPARAMS *disp_params, VARIANT *v TSRMLS_DC)
+ WORD flags, DISPPARAMS *disp_params, VARIANT *v, int silent TSRMLS_DC)
{
HRESULT hr;
unsigned int arg_err;
@@ -345,7 +345,7 @@ HRESULT php_com_invoke_helper(php_com_dotnet_object *obj, DISPID id_member,
hr = IDispatch_Invoke(V_DISPATCH(&obj->v), id_member,
&IID_NULL, LOCALE_SYSTEM_DEFAULT, flags, disp_params, v, &e, &arg_err);
- if (FAILED(hr)) {
+ if (silent == 0 && FAILED(hr)) {
char *source = NULL, *desc = NULL, *msg = NULL;
int source_len, desc_len;
@@ -543,7 +543,7 @@ int php_com_do_invoke_byref(php_com_dotnet_object *obj, char *name, int namelen,
}
/* this will create an exception if needed */
- hr = php_com_invoke_helper(obj, dispid, flags, &disp_params, v TSRMLS_CC);
+ hr = php_com_invoke_helper(obj, dispid, flags, &disp_params, v, 0 TSRMLS_CC);
/* release variants */
if (vargs) {
@@ -581,7 +581,7 @@ int php_com_do_invoke_byref(php_com_dotnet_object *obj, char *name, int namelen,
int php_com_do_invoke_by_id(php_com_dotnet_object *obj, DISPID dispid,
- WORD flags, VARIANT *v, int nargs, zval **args TSRMLS_DC)
+ WORD flags, VARIANT *v, int nargs, zval **args, int silent TSRMLS_DC)
{
DISPID altdispid;
DISPPARAMS disp_params;
@@ -610,7 +610,7 @@ int php_com_do_invoke_by_id(php_com_dotnet_object *obj, DISPID dispid,
}
/* this will create an exception if needed */
- hr = php_com_invoke_helper(obj, dispid, flags, &disp_params, v TSRMLS_CC);
+ hr = php_com_invoke_helper(obj, dispid, flags, &disp_params, v, silent TSRMLS_CC);
/* release variants */
if (vargs) {
@@ -646,7 +646,7 @@ int php_com_do_invoke(php_com_dotnet_object *obj, char *name, int namelen,
return FAILURE;
}
- return php_com_do_invoke_by_id(obj, dispid, flags, v, nargs, args TSRMLS_CC);
+ return php_com_do_invoke_by_id(obj, dispid, flags, v, nargs, args, 0 TSRMLS_CC);
}
/* {{{ proto string com_create_guid()
diff --git a/ext/com_dotnet/com_handlers.c b/ext/com_dotnet/com_handlers.c
index a73721c4b..911fc73a9 100644
--- a/ext/com_dotnet/com_handlers.c
+++ b/ext/com_dotnet/com_handlers.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_handlers.c,v 1.30.2.2 2006/01/01 12:50:00 sniper Exp $ */
+/* $Id: com_handlers.c,v 1.30.2.5 2006/02/07 11:50:54 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -101,7 +101,7 @@ static zval *com_read_dimension(zval *object, zval *offset, int type TSRMLS_DC)
VariantInit(&v);
if (SUCCESS == php_com_do_invoke_by_id(obj, DISPID_VALUE,
- DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 1, &offset TSRMLS_CC)) {
+ DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 1, &offset, 0 TSRMLS_CC)) {
php_com_zval_from_variant(return_value, &v, obj->code_page TSRMLS_CC);
VariantClear(&v);
}
@@ -140,7 +140,7 @@ static void com_write_dimension(zval *object, zval *offset, zval *value TSRMLS_D
VariantInit(&v);
if (SUCCESS == php_com_do_invoke_by_id(obj, DISPID_VALUE,
- DISPATCH_METHOD|DISPATCH_PROPERTYPUT, &v, 2, args TSRMLS_CC)) {
+ DISPATCH_METHOD|DISPATCH_PROPERTYPUT, &v, 2, args, 0 TSRMLS_CC)) {
VariantClear(&v);
}
} else if (V_ISARRAY(&obj->v)) {
@@ -503,9 +503,9 @@ static int com_object_cast(zval *readobj, zval *writeobj, int type, int should_f
VariantInit(&v);
if (V_VT(&obj->v) == VT_DISPATCH) {
- if (FAILURE == php_com_do_invoke_by_id(obj, DISPID_VALUE,
- DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 0, NULL TSRMLS_CC)) {
- return FAILURE;
+ if (SUCCESS != php_com_do_invoke_by_id(obj, DISPID_VALUE,
+ DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 0, NULL, 1 TSRMLS_CC)) {
+ VariantCopy(&v, &obj->v);
}
} else {
VariantCopy(&v, &obj->v);
@@ -634,9 +634,11 @@ void php_com_object_free_storage(void *object TSRMLS_DC)
VariantClear(&obj->v);
if (obj->method_cache) {
+ zend_hash_destroy(obj->method_cache);
FREE_HASHTABLE(obj->method_cache);
}
if (obj->id_of_name_cache) {
+ zend_hash_destroy(obj->id_of_name_cache);
FREE_HASHTABLE(obj->id_of_name_cache);
}
efree(obj);
diff --git a/ext/com_dotnet/com_iterator.c b/ext/com_dotnet/com_iterator.c
index 5093ba52b..27afaa621 100644
--- a/ext/com_dotnet/com_iterator.c
+++ b/ext/com_dotnet/com_iterator.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_iterator.c,v 1.9.2.1 2006/01/01 12:50:00 sniper Exp $ */
+/* $Id: com_iterator.c,v 1.9.2.2 2006/02/07 11:50:54 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -38,6 +38,7 @@ struct php_com_iterator {
VARIANT safe_array;
VARTYPE sa_type;
LONG sa_max;
+ zval *zdata;
};
static void com_iter_dtor(zend_object_iterator *iter TSRMLS_DC)
@@ -49,6 +50,9 @@ static void com_iter_dtor(zend_object_iterator *iter TSRMLS_DC)
}
VariantClear(&I->v);
VariantClear(&I->safe_array);
+ if (I->zdata) {
+ zval_ptr_dtor((zval**)&I->zdata);
+ }
efree(I);
}
@@ -56,32 +60,18 @@ static int com_iter_valid(zend_object_iterator *iter TSRMLS_DC)
{
struct php_com_iterator *I = (struct php_com_iterator*)iter->data;
- if (I->key == (ulong)-1) {
- return FAILURE;
+ if (I->zdata) {
+ return SUCCESS;
}
- return SUCCESS;
+
+ return FAILURE;
}
static void com_iter_get_data(zend_object_iterator *iter, zval ***data TSRMLS_DC)
{
struct php_com_iterator *I = (struct php_com_iterator*)iter->data;
- zval **ptr_ptr;
- zval *ptr;
-
- /* sanity */
- if (I->key == (ulong)-1) {
- *data = NULL;
- return;
- }
-
- MAKE_STD_ZVAL(ptr);
- php_com_zval_from_variant(ptr, &I->v, I->code_page TSRMLS_CC);
- /* php_com_wrap_variant(ptr, &I->v, I->code_page TSRMLS_CC); */
- ptr_ptr = emalloc(sizeof(*ptr_ptr));
- *ptr_ptr = ptr;
- *data = ptr_ptr;
- return;
+ *data = &I->zdata;
}
static int com_iter_get_key(zend_object_iterator *iter, char **str_key, uint *str_key_len,
@@ -100,15 +90,20 @@ static int com_iter_move_forwards(zend_object_iterator *iter TSRMLS_DC)
{
struct php_com_iterator *I = (struct php_com_iterator*)iter->data;
unsigned long n_fetched;
+ zval *ptr;
/* release current cached element */
VariantClear(&I->v);
+ if (I->zdata) {
+ zval_ptr_dtor((zval**)&I->zdata);
+ I->zdata = NULL;
+ }
+
if (I->ev) {
/* Get the next element */
if (SUCCEEDED(IEnumVARIANT_Next(I->ev, 1, &I->v, &n_fetched)) && n_fetched > 0) {
I->key++;
- return SUCCESS;
} else {
/* indicate that there are no more items */
I->key = (ulong)-1;
@@ -121,13 +116,17 @@ static int com_iter_move_forwards(zend_object_iterator *iter TSRMLS_DC)
return FAILURE;
}
I->key++;
- if (php_com_safearray_get_elem(&I->safe_array, &I->v, (LONG)I->key TSRMLS_CC)) {
- return SUCCESS;
- } else {
+ if (php_com_safearray_get_elem(&I->safe_array, &I->v, (LONG)I->key TSRMLS_CC) == 0) {
I->key = (ulong)-1;
return FAILURE;
}
}
+
+ MAKE_STD_ZVAL(ptr);
+ php_com_zval_from_variant(ptr, &I->v, I->code_page TSRMLS_CC);
+ /* php_com_wrap_variant(ptr, &I->v, I->code_page TSRMLS_CC); */
+ I->zdata = ptr;
+ return SUCCESS;
}
@@ -148,6 +147,7 @@ zend_object_iterator *php_com_iter_get(zend_class_entry *ce, zval *object TSRMLS
DISPPARAMS dp;
VARIANT v;
unsigned long n_fetched;
+ zval *ptr;
obj = CDNO_FETCH(object);
@@ -163,6 +163,7 @@ zend_object_iterator *php_com_iter_get(zend_class_entry *ce, zval *object TSRMLS
I->iter.funcs = &com_iter_funcs;
I->iter.data = I;
I->code_page = obj->code_page;
+ I->zdata = NULL;
VariantInit(&I->safe_array);
VariantInit(&I->v);
@@ -189,6 +190,9 @@ zend_object_iterator *php_com_iter_get(zend_class_entry *ce, zval *object TSRMLS
/* pre-fetch the element */
if (php_com_safearray_get_elem(&I->safe_array, &I->v, bound TSRMLS_CC)) {
I->key = bound;
+ MAKE_STD_ZVAL(ptr);
+ php_com_zval_from_variant(ptr, &I->v, I->code_page TSRMLS_CC);
+ I->zdata = ptr;
} else {
I->key = (ulong)-1;
}
@@ -220,6 +224,9 @@ zend_object_iterator *php_com_iter_get(zend_class_entry *ce, zval *object TSRMLS
if (SUCCEEDED(IEnumVARIANT_Next(I->ev, 1, &I->v, &n_fetched)) && n_fetched > 0) {
/* indicate that we have element 0 */
I->key = 0;
+ MAKE_STD_ZVAL(ptr);
+ php_com_zval_from_variant(ptr, &I->v, I->code_page TSRMLS_CC);
+ I->zdata = ptr;
} else {
/* indicate that there are no more items */
I->key = (ulong)-1;
diff --git a/ext/com_dotnet/com_persist.c b/ext/com_dotnet/com_persist.c
index 37db84b80..b59d2ebb4 100755
--- a/ext/com_dotnet/com_persist.c
+++ b/ext/com_dotnet/com_persist.c
@@ -1,785 +1,781 @@
-/*
- +----------------------------------------------------------------------+
- | PHP Version 5 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2006 The PHP Group |
- +----------------------------------------------------------------------+
- | This source file is subject to version 3.01 of the PHP license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available through the world-wide-web at the following url: |
- | http://www.php.net/license/3_01.txt |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Author: Wez Furlong <wez@thebrainroom.com> |
- +----------------------------------------------------------------------+
- */
-
-/* $Id: com_persist.c,v 1.5.2.1 2006/01/01 12:50:00 sniper Exp $ */
-
-/* Infrastructure for working with persistent COM objects.
- * Implements: IStream* wrapper for PHP streams.
- * TODO: Magic __wakeup and __sleep handlers for serialization
- * (can wait till 5.1) */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "php.h"
-#include "php_ini.h"
-#include "ext/standard/info.h"
-#include "php_com_dotnet.h"
-#include "php_com_dotnet_internal.h"
-#include "Zend/zend_exceptions.h"
-
-/* {{{ expose php_stream as a COM IStream */
-
-typedef struct {
- CONST_VTBL struct IStreamVtbl *lpVtbl;
- DWORD engine_thread;
- LONG refcount;
- php_stream *stream;
- int id;
-} php_istream;
-
-static int le_istream;
-static void istream_destructor(php_istream *stm);
-
-static void istream_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
-{
- php_istream *stm = (php_istream *)rsrc->ptr;
- istream_destructor(stm);
-}
-
-#ifdef ZTS
-# define TSRMLS_FIXED() TSRMLS_FETCH();
-#else
-# define TSRMLS_FIXED()
-#endif
-
-#define FETCH_STM() \
- TSRMLS_FIXED() \
- php_istream *stm = (php_istream*)This; \
- if (GetCurrentThreadId() != stm->engine_thread) \
- return RPC_E_WRONG_THREAD;
-
-static HRESULT STDMETHODCALLTYPE stm_queryinterface(
- IStream *This,
- /* [in] */ REFIID riid,
- /* [iid_is][out] */ void **ppvObject)
-{
- FETCH_STM();
-
- if (IsEqualGUID(&IID_IUnknown, riid) ||
- IsEqualGUID(&IID_IStream, riid)) {
- *ppvObject = This;
- InterlockedIncrement(&stm->refcount);
- return S_OK;
- }
-
- *ppvObject = NULL;
- return E_NOINTERFACE;
-}
-
-static ULONG STDMETHODCALLTYPE stm_addref(IStream *This)
-{
- FETCH_STM();
-
- return InterlockedIncrement(&stm->refcount);
-}
-
-static ULONG STDMETHODCALLTYPE stm_release(IStream *This)
-{
- ULONG ret;
- FETCH_STM();
-
- ret = InterlockedDecrement(&stm->refcount);
- if (ret == 0) {
- /* destroy it */
- if (stm->id)
- zend_list_delete(stm->id);
- }
- return ret;
-}
-
-static HRESULT STDMETHODCALLTYPE stm_read(IStream *This, void *pv, ULONG cb, ULONG *pcbRead)
-{
- int nread;
- FETCH_STM();
-
- nread = php_stream_read(stm->stream, pv, cb);
-
- if (pcbRead) {
- *pcbRead = nread > 0 ? nread : 0;
- }
- if (nread > 0) {
- return S_OK;
- }
- return S_FALSE;
-}
-
-static HRESULT STDMETHODCALLTYPE stm_write(IStream *This, void const *pv, ULONG cb, ULONG *pcbWritten)
-{
- int nwrote;
- FETCH_STM();
-
- nwrote = php_stream_write(stm->stream, pv, cb);
-
- if (pcbWritten) {
- *pcbWritten = nwrote > 0 ? nwrote : 0;
- }
- if (nwrote > 0) {
- return S_OK;
- }
- return S_FALSE;
-}
-
-static HRESULT STDMETHODCALLTYPE stm_seek(IStream *This, LARGE_INTEGER dlibMove,
- DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
-{
- off_t offset;
- int whence;
- int ret;
- FETCH_STM();
-
- switch (dwOrigin) {
- case STREAM_SEEK_SET: whence = SEEK_SET; break;
- case STREAM_SEEK_CUR: whence = SEEK_CUR; break;
- case STREAM_SEEK_END: whence = SEEK_END; break;
- default:
- return STG_E_INVALIDFUNCTION;
- }
-
- if (dlibMove.HighPart) {
- /* we don't support 64-bit offsets */
- return STG_E_INVALIDFUNCTION;
- }
-
- offset = dlibMove.QuadPart;
-
- ret = php_stream_seek(stm->stream, offset, whence);
-
- if (plibNewPosition) {
- plibNewPosition->QuadPart = (ULONGLONG)(ret >= 0 ? ret : 0);
- }
-
- return ret >= 0 ? S_OK : STG_E_INVALIDFUNCTION;
-}
-
-static HRESULT STDMETHODCALLTYPE stm_set_size(IStream *This, ULARGE_INTEGER libNewSize)
-{
- FETCH_STM();
-
- if (libNewSize.HighPart) {
- return STG_E_INVALIDFUNCTION;
- }
-
- if (php_stream_truncate_supported(stm->stream)) {
- int ret = php_stream_truncate_set_size(stm->stream, (size_t)libNewSize.QuadPart);
-
- if (ret == 0) {
- return S_OK;
- }
- }
-
- return STG_E_INVALIDFUNCTION;
-}
-
-static HRESULT STDMETHODCALLTYPE stm_copy_to(IStream *This, IStream *pstm, ULARGE_INTEGER cb,
- ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten)
-{
- FETCH_STM();
-
- return E_NOTIMPL;
-}
-
-static HRESULT STDMETHODCALLTYPE stm_commit(IStream *This, DWORD grfCommitFlags)
-{
- FETCH_STM();
-
- php_stream_flush(stm->stream);
-
- return S_OK;
-}
-
-static HRESULT STDMETHODCALLTYPE stm_revert(IStream *This)
-{
- /* NOP */
- return S_OK;
-}
-
-static HRESULT STDMETHODCALLTYPE stm_lock_region(IStream *This,
- ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD lockType)
-{
- return STG_E_INVALIDFUNCTION;
-}
-
-static HRESULT STDMETHODCALLTYPE stm_unlock_region(IStream *This,
- ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD lockType)
-{
- return STG_E_INVALIDFUNCTION;
-}
-
-static HRESULT STDMETHODCALLTYPE stm_stat(IStream *This,
- STATSTG *pstatstg, DWORD grfStatFlag)
-{
- return STG_E_INVALIDFUNCTION;
-}
-
-static HRESULT STDMETHODCALLTYPE stm_clone(IStream *This, IStream **ppstm)
-{
- return STG_E_INVALIDFUNCTION;
-}
-
-static struct IStreamVtbl php_istream_vtbl = {
- stm_queryinterface,
- stm_addref,
- stm_release,
- stm_read,
- stm_write,
- stm_seek,
- stm_set_size,
- stm_copy_to,
- stm_commit,
- stm_revert,
- stm_lock_region,
- stm_unlock_region,
- stm_stat,
- stm_clone
-};
-
-static void istream_destructor(php_istream *stm)
-{
- TSRMLS_FETCH();
-
- if (stm->id) {
- int id = stm->id;
- stm->id = 0;
- zend_list_delete(id);
- return;
- }
-
- if (stm->refcount > 0) {
- CoDisconnectObject((IUnknown*)stm, 0);
- }
-
- zend_list_delete(stm->stream->rsrc_id);
-
- CoTaskMemFree(stm);
-}
-/* }}} */
-
-PHPAPI IStream *php_com_wrapper_export_stream(php_stream *stream TSRMLS_DC)
-{
- php_istream *stm = (php_istream*)CoTaskMemAlloc(sizeof(*stm));
-
- if (stm == NULL)
- return NULL;
-
- memset(stm, 0, sizeof(*stm));
- stm->engine_thread = GetCurrentThreadId();
- stm->lpVtbl = &php_istream_vtbl;
- stm->refcount = 1;
- stm->stream = stream;
-
- zend_list_addref(stream->rsrc_id);
- stm->id = zend_list_insert(stm, le_istream);
-
- return (IStream*)stm;
-}
-
-#define CPH_ME(fname, arginfo) PHP_ME(com_persist, fname, arginfo, ZEND_ACC_PUBLIC)
-#define CPH_SME(fname, arginfo) PHP_ME(com_persist, fname, arginfo, ZEND_ACC_ALLOW_STATIC|ZEND_ACC_PUBLIC)
-#define CPH_METHOD(fname) static PHP_METHOD(com_persist, fname)
-
-#define CPH_FETCH() php_com_persist_helper *helper = (php_com_persist_helper*)zend_object_store_get_object(getThis() TSRMLS_CC);
-
-#define CPH_NO_OBJ() if (helper->unk == NULL) { php_com_throw_exception(E_INVALIDARG, "No COM object is associated with this helper instance" TSRMLS_CC); return; }
-
-typedef struct {
- zend_object std;
- long codepage;
- IUnknown *unk;
- IPersistStream *ips;
- IPersistStreamInit *ipsi;
- IPersistFile *ipf;
-} php_com_persist_helper;
-
-static zend_object_handlers helper_handlers;
-static zend_class_entry *helper_ce;
-
-static inline HRESULT get_persist_stream(php_com_persist_helper *helper)
-{
- if (!helper->ips && helper->unk) {
- return IUnknown_QueryInterface(helper->unk, &IID_IPersistStream, &helper->ips);
- }
- return helper->ips ? S_OK : E_NOTIMPL;
-}
-
-static inline HRESULT get_persist_stream_init(php_com_persist_helper *helper)
-{
- if (!helper->ipsi && helper->unk) {
- return IUnknown_QueryInterface(helper->unk, &IID_IPersistStreamInit, &helper->ipsi);
- }
- return helper->ipsi ? S_OK : E_NOTIMPL;
-}
-
-static inline HRESULT get_persist_file(php_com_persist_helper *helper)
-{
- if (!helper->ipf && helper->unk) {
- return IUnknown_QueryInterface(helper->unk, &IID_IPersistFile, &helper->ipf);
- }
- return helper->ipf ? S_OK : E_NOTIMPL;
-}
-
-
-/* {{{ proto string COMPersistHelper::GetCurFile()
- Determines the filename into which an object will be saved, or false if none is set, via IPersistFile::GetCurFile */
-CPH_METHOD(GetCurFileName)
-{
- HRESULT res;
- OLECHAR *olename = NULL;
- CPH_FETCH();
-
- CPH_NO_OBJ();
-
- res = get_persist_file(helper);
- if (helper->ipf) {
- res = IPersistFile_GetCurFile(helper->ipf, &olename);
-
- if (res == S_OK) {
- Z_TYPE_P(return_value) = IS_STRING;
- Z_STRVAL_P(return_value) = php_com_olestring_to_string(olename,
- &Z_STRLEN_P(return_value), helper->codepage TSRMLS_CC);
- CoTaskMemFree(olename);
- return;
- } else if (res == S_FALSE) {
- CoTaskMemFree(olename);
- RETURN_FALSE;
- }
- php_com_throw_exception(res, NULL TSRMLS_CC);
- } else {
- php_com_throw_exception(res, NULL TSRMLS_CC);
- }
-}
-/* }}} */
-
-
-/* {{{ proto bool COMPersistHelper::SaveToFile(string filename [, bool remember])
- Persist object data to file, via IPersistFile::Save */
-CPH_METHOD(SaveToFile)
-{
- HRESULT res;
- char *filename, *fullpath = NULL;
- int filename_len;
- zend_bool remember = TRUE;
- OLECHAR *olefilename = NULL;
- CPH_FETCH();
-
- CPH_NO_OBJ();
-
- res = get_persist_file(helper);
- if (helper->ipf) {
- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s!|b",
- &filename, &filename_len, &remember)) {
- php_com_throw_exception(E_INVALIDARG, "Invalid arguments" TSRMLS_CC);
- return;
- }
-
- if (filename) {
- fullpath = expand_filepath(filename, NULL TSRMLS_CC);
-
- if (PG(safe_mode) && (!php_checkuid(fullpath, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
- RETURN_FALSE;
- }
-
- if (php_check_open_basedir(fullpath TSRMLS_CC)) {
- RETURN_FALSE;
- }
-
- olefilename = php_com_string_to_olestring(filename, strlen(fullpath), helper->codepage TSRMLS_CC);
- efree(fullpath);
- }
- res = IPersistFile_Save(helper->ipf, olefilename, remember);
- if (SUCCEEDED(res)) {
- if (!olefilename) {
- res = IPersistFile_GetCurFile(helper->ipf, &olefilename);
- if (S_OK == res) {
- IPersistFile_SaveCompleted(helper->ipf, olefilename);
- CoTaskMemFree(olefilename);
- olefilename = NULL;
- }
- } else if (remember) {
- IPersistFile_SaveCompleted(helper->ipf, olefilename);
- }
- }
-
- if (olefilename) {
- efree(olefilename);
- }
-
- if (FAILED(res)) {
- php_com_throw_exception(res, NULL TSRMLS_CC);
- }
-
- } else {
- php_com_throw_exception(res, NULL TSRMLS_CC);
- }
-}
-/* }}} */
-
-/* {{{ proto bool COMPersistHelper::LoadFromFile(string filename [, int flags])
- Load object data from file, via IPersistFile::Load */
-CPH_METHOD(LoadFromFile)
-{
- HRESULT res;
- char *filename, *fullpath;
- int filename_len;
- long flags = 0;
- OLECHAR *olefilename;
- CPH_FETCH();
-
- CPH_NO_OBJ();
-
- res = get_persist_file(helper);
- if (helper->ipf) {
-
- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l",
- &filename, &filename_len, &flags)) {
- php_com_throw_exception(E_INVALIDARG, "Invalid arguments" TSRMLS_CC);
- return;
- }
-
- fullpath = expand_filepath(filename, NULL TSRMLS_CC);
-
- if (PG(safe_mode) && (!php_checkuid(fullpath, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
- RETURN_FALSE;
- }
-
- if (php_check_open_basedir(fullpath TSRMLS_CC)) {
- RETURN_FALSE;
- }
-
- olefilename = php_com_string_to_olestring(fullpath, strlen(fullpath), helper->codepage TSRMLS_CC);
- efree(fullpath);
-
- res = IPersistFile_Load(helper->ipf, olefilename, flags);
- efree(olefilename);
-
- if (FAILED(res)) {
- php_com_throw_exception(res, NULL TSRMLS_CC);
- }
-
- } else {
- php_com_throw_exception(res, NULL TSRMLS_CC);
- }
-}
-/* }}} */
-
-/* {{{ proto int COMPersistHelper::GetMaxStreamSize()
- Gets maximum stream size required to store the object data, via IPersistStream::GetSizeMax (or IPersistStreamInit::GetSizeMax) */
-CPH_METHOD(GetMaxStreamSize)
-{
- HRESULT res;
- ULARGE_INTEGER size;
- CPH_FETCH();
-
- CPH_NO_OBJ();
-
- res = get_persist_stream_init(helper);
- if (helper->ipsi) {
- res = IPersistStreamInit_GetSizeMax(helper->ipsi, &size);
- } else {
- res = get_persist_stream(helper);
- if (helper->ips) {
- res = IPersistStream_GetSizeMax(helper->ips, &size);
- } else {
- php_com_throw_exception(res, NULL TSRMLS_CC);
- return;
- }
- }
-
- if (res != S_OK) {
- php_com_throw_exception(res, NULL TSRMLS_CC);
- } else {
- /* TODO: handle 64 bit properly */
- RETURN_LONG((LONG)size.QuadPart);
- }
-}
-/* }}} */
-
-/* {{{ proto int COMPersistHelper::InitNew()
- Initializes the object to a default state, via IPersistStreamInit::InitNew */
-CPH_METHOD(InitNew)
-{
- HRESULT res;
- CPH_FETCH();
-
- CPH_NO_OBJ();
-
- res = get_persist_stream_init(helper);
- if (helper->ipsi) {
- res = IPersistStreamInit_InitNew(helper->ipsi);
-
- if (res != S_OK) {
- php_com_throw_exception(res, NULL TSRMLS_CC);
- } else {
- RETURN_TRUE;
- }
- } else {
- php_com_throw_exception(res, NULL TSRMLS_CC);
- }
-}
-/* }}} */
-
-/* {{{ proto mixed COMPersistHelper::LoadFromStream(resource stream)
- Initializes an object from the stream where it was previously saved, via IPersistStream::Load or OleLoadFromStream */
-CPH_METHOD(LoadFromStream)
-{
- zval *zstm;
- php_stream *stream;
- IStream *stm = NULL;
- HRESULT res;
- CPH_FETCH();
-
- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zstm)) {
- php_com_throw_exception(E_INVALIDARG, "invalid arguments" TSRMLS_CC);
- return;
- }
-
- php_stream_from_zval_no_verify(stream, &zstm);
-
- if (stream == NULL) {
- php_com_throw_exception(E_INVALIDARG, "expected a stream" TSRMLS_CC);
- return;
- }
-
- stm = php_com_wrapper_export_stream(stream TSRMLS_CC);
- if (stm == NULL) {
- php_com_throw_exception(E_UNEXPECTED, "failed to wrap stream" TSRMLS_CC);
- return;
- }
-
- res = S_OK;
- RETVAL_TRUE;
-
- if (helper->unk == NULL) {
- IDispatch *disp = NULL;
-
- /* we need to create an object and load using OleLoadFromStream */
- res = OleLoadFromStream(stm, &IID_IDispatch, &disp);
-
- if (SUCCEEDED(res)) {
- php_com_wrap_dispatch(return_value, disp, COMG(code_page) TSRMLS_CC);
- }
- } else {
- res = get_persist_stream_init(helper);
- if (helper->ipsi) {
- res = IPersistStreamInit_Load(helper->ipsi, stm);
- } else {
- res = get_persist_stream(helper);
- if (helper->ips) {
- res = IPersistStreamInit_Load(helper->ipsi, stm);
- }
- }
- }
- IStream_Release(stm);
-
- if (FAILED(res)) {
- php_com_throw_exception(res, NULL TSRMLS_CC);
- RETURN_NULL();
- }
-}
-/* }}} */
-
-/* {{{ proto int COMPersistHelper::SaveToStream(resource stream)
- Saves the object to a stream, via IPersistStream::Save */
-CPH_METHOD(SaveToStream)
-{
- zval *zstm;
- php_stream *stream;
- IStream *stm = NULL;
- HRESULT res;
- CPH_FETCH();
-
- CPH_NO_OBJ();
-
- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zstm)) {
- php_com_throw_exception(E_INVALIDARG, "invalid arguments" TSRMLS_CC);
- return;
- }
-
- php_stream_from_zval_no_verify(stream, &zstm);
-
- if (stream == NULL) {
- php_com_throw_exception(E_INVALIDARG, "expected a stream" TSRMLS_CC);
- return;
- }
-
- stm = php_com_wrapper_export_stream(stream TSRMLS_CC);
- if (stm == NULL) {
- php_com_throw_exception(E_UNEXPECTED, "failed to wrap stream" TSRMLS_CC);
- return;
- }
-
- res = get_persist_stream_init(helper);
- if (helper->ipsi) {
- res = IPersistStreamInit_Save(helper->ipsi, stm, TRUE);
- } else {
- res = get_persist_stream(helper);
- if (helper->ips) {
- res = IPersistStream_Save(helper->ips, stm, TRUE);
- }
- }
-
- IStream_Release(stm);
-
- if (FAILED(res)) {
- php_com_throw_exception(res, NULL TSRMLS_CC);
- return;
- }
-
- RETURN_TRUE;
-}
-/* }}} */
-
-/* {{{ proto int COMPersistHelper::__construct([object com_object])
- Creates a persistence helper object, usually associated with a com_object */
-CPH_METHOD(__construct)
-{
- php_com_dotnet_object *obj = NULL;
- zval *zobj = NULL;
- CPH_FETCH();
-
- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|O!",
- &zobj, php_com_variant_class_entry)) {
- php_com_throw_exception(E_INVALIDARG, "invalid arguments" TSRMLS_CC);
- return;
- }
-
- if (!zobj) {
- return;
- }
-
- obj = CDNO_FETCH(zobj);
-
- if (V_VT(&obj->v) != VT_DISPATCH || V_DISPATCH(&obj->v) == NULL) {
- php_com_throw_exception(E_INVALIDARG, "parameter must represent an IDispatch COM object" TSRMLS_CC);
- return;
- }
-
- /* it is always safe to cast an interface to IUnknown */
- helper->unk = (IUnknown*)V_DISPATCH(&obj->v);
- IUnknown_AddRef(helper->unk);
- helper->codepage = obj->code_page;
-}
-/* }}} */
-
-
-
-
-static zend_function_entry com_persist_helper_methods[] = {
- CPH_ME(__construct, NULL)
- CPH_ME(GetCurFileName, NULL)
- CPH_ME(SaveToFile, NULL)
- CPH_ME(LoadFromFile, NULL)
- CPH_ME(GetMaxStreamSize, NULL)
- CPH_ME(InitNew, NULL)
- CPH_ME(LoadFromStream, NULL)
- CPH_ME(SaveToStream, NULL)
- {NULL, NULL, NULL}
-};
-
-static void helper_free_storage(void *obj TSRMLS_DC)
-{
- php_com_persist_helper *object = (php_com_persist_helper*)obj;
-
- if (object->ipf) {
- IPersistFile_Release(object->ipf);
- }
- if (object->ips) {
- IPersistStream_Release(object->ips);
- }
- if (object->ipsi) {
- IPersistStreamInit_Release(object->ipsi);
- }
- if (object->unk) {
- IUnknown_Release(object->unk);
- }
- zend_hash_destroy(object->std.properties);
- FREE_HASHTABLE(object->std.properties);
- efree(object);
-}
-
-
-static void helper_clone(void *obj, void **clone_ptr TSRMLS_DC)
-{
- php_com_persist_helper *clone, *object = (php_com_persist_helper*)obj;
-
- clone = emalloc(sizeof(*object));
- memcpy(clone, object, sizeof(*object));
- *clone_ptr = clone;
-
- ALLOC_HASHTABLE(clone->std.properties);
- zend_hash_init(clone->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
-
- if (clone->ipf) {
- IPersistFile_AddRef(clone->ipf);
- }
- if (clone->ips) {
- IPersistStream_AddRef(clone->ips);
- }
- if (clone->ipsi) {
- IPersistStreamInit_AddRef(clone->ipsi);
- }
- if (clone->unk) {
- IUnknown_AddRef(clone->unk);
- }
-}
-
-static zend_object_value helper_new(zend_class_entry *ce TSRMLS_DC)
-{
- php_com_persist_helper *helper;
- zend_object_value retval;
-
- helper = emalloc(sizeof(*helper));
- memset(helper, 0, sizeof(*helper));
-
- ALLOC_HASHTABLE(helper->std.properties);
- zend_hash_init(helper->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
- helper->std.ce = helper_ce;
-
- retval.handle = zend_objects_store_put(helper, NULL, helper_free_storage, helper_clone TSRMLS_CC);
- retval.handlers = &helper_handlers;
-
- return retval;
-}
-
-int php_com_persist_minit(INIT_FUNC_ARGS)
-{
- zend_class_entry ce;
-
- memcpy(&helper_handlers, zend_get_std_object_handlers(), sizeof(helper_handlers));
- helper_handlers.clone_obj = NULL;
-
- INIT_CLASS_ENTRY(ce, "COMPersistHelper", com_persist_helper_methods);
- ce.create_object = helper_new;
- helper_ce = zend_register_internal_class(&ce TSRMLS_CC);
- helper_ce->ce_flags |= ZEND_ACC_FINAL;
-
- le_istream = zend_register_list_destructors_ex(istream_dtor,
- NULL, "com_dotnet_istream_wrapper", module_number);
-
- return SUCCESS;
-}
-
-/*
- * Local variables:
- * tab-width: 4
- * c-basic-offset: 4
- * End:
- * vim600: noet sw=4 ts=4 fdm=marker
- * vim<600: noet sw=4 ts=4
- */
+/*
+ +----------------------------------------------------------------------+
+ | PHP Version 5 |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1997-2006 The PHP Group |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 3.01 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available through the world-wide-web at the following url: |
+ | http://www.php.net/license/3_01.txt |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Author: Wez Furlong <wez@thebrainroom.com> |
+ +----------------------------------------------------------------------+
+ */
+
+/* $Id: com_persist.c,v 1.5.2.3 2006/03/29 14:28:41 tony2001 Exp $ */
+
+/* Infrastructure for working with persistent COM objects.
+ * Implements: IStream* wrapper for PHP streams.
+ * TODO: Magic __wakeup and __sleep handlers for serialization
+ * (can wait till 5.1) */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "php.h"
+#include "php_ini.h"
+#include "ext/standard/info.h"
+#include "php_com_dotnet.h"
+#include "php_com_dotnet_internal.h"
+#include "Zend/zend_exceptions.h"
+
+/* {{{ expose php_stream as a COM IStream */
+
+typedef struct {
+ CONST_VTBL struct IStreamVtbl *lpVtbl;
+ DWORD engine_thread;
+ LONG refcount;
+ php_stream *stream;
+ int id;
+} php_istream;
+
+static int le_istream;
+static void istream_destructor(php_istream *stm);
+
+static void istream_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
+{
+ php_istream *stm = (php_istream *)rsrc->ptr;
+ istream_destructor(stm);
+}
+
+#ifdef ZTS
+# define TSRMLS_FIXED() TSRMLS_FETCH();
+#else
+# define TSRMLS_FIXED()
+#endif
+
+#define FETCH_STM() \
+ TSRMLS_FIXED() \
+ php_istream *stm = (php_istream*)This; \
+ if (GetCurrentThreadId() != stm->engine_thread) \
+ return RPC_E_WRONG_THREAD;
+
+static HRESULT STDMETHODCALLTYPE stm_queryinterface(
+ IStream *This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject)
+{
+ FETCH_STM();
+
+ if (IsEqualGUID(&IID_IUnknown, riid) ||
+ IsEqualGUID(&IID_IStream, riid)) {
+ *ppvObject = This;
+ InterlockedIncrement(&stm->refcount);
+ return S_OK;
+ }
+
+ *ppvObject = NULL;
+ return E_NOINTERFACE;
+}
+
+static ULONG STDMETHODCALLTYPE stm_addref(IStream *This)
+{
+ FETCH_STM();
+
+ return InterlockedIncrement(&stm->refcount);
+}
+
+static ULONG STDMETHODCALLTYPE stm_release(IStream *This)
+{
+ ULONG ret;
+ FETCH_STM();
+
+ ret = InterlockedDecrement(&stm->refcount);
+ if (ret == 0) {
+ /* destroy it */
+ if (stm->id)
+ zend_list_delete(stm->id);
+ }
+ return ret;
+}
+
+static HRESULT STDMETHODCALLTYPE stm_read(IStream *This, void *pv, ULONG cb, ULONG *pcbRead)
+{
+ int nread;
+ FETCH_STM();
+
+ nread = php_stream_read(stm->stream, pv, cb);
+
+ if (pcbRead) {
+ *pcbRead = nread > 0 ? nread : 0;
+ }
+ if (nread > 0) {
+ return S_OK;
+ }
+ return S_FALSE;
+}
+
+static HRESULT STDMETHODCALLTYPE stm_write(IStream *This, void const *pv, ULONG cb, ULONG *pcbWritten)
+{
+ int nwrote;
+ FETCH_STM();
+
+ nwrote = php_stream_write(stm->stream, pv, cb);
+
+ if (pcbWritten) {
+ *pcbWritten = nwrote > 0 ? nwrote : 0;
+ }
+ if (nwrote > 0) {
+ return S_OK;
+ }
+ return S_FALSE;
+}
+
+static HRESULT STDMETHODCALLTYPE stm_seek(IStream *This, LARGE_INTEGER dlibMove,
+ DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
+{
+ off_t offset;
+ int whence;
+ int ret;
+ FETCH_STM();
+
+ switch (dwOrigin) {
+ case STREAM_SEEK_SET: whence = SEEK_SET; break;
+ case STREAM_SEEK_CUR: whence = SEEK_CUR; break;
+ case STREAM_SEEK_END: whence = SEEK_END; break;
+ default:
+ return STG_E_INVALIDFUNCTION;
+ }
+
+ if (dlibMove.HighPart) {
+ /* we don't support 64-bit offsets */
+ return STG_E_INVALIDFUNCTION;
+ }
+
+ offset = dlibMove.QuadPart;
+
+ ret = php_stream_seek(stm->stream, offset, whence);
+
+ if (plibNewPosition) {
+ plibNewPosition->QuadPart = (ULONGLONG)(ret >= 0 ? ret : 0);
+ }
+
+ return ret >= 0 ? S_OK : STG_E_INVALIDFUNCTION;
+}
+
+static HRESULT STDMETHODCALLTYPE stm_set_size(IStream *This, ULARGE_INTEGER libNewSize)
+{
+ FETCH_STM();
+
+ if (libNewSize.HighPart) {
+ return STG_E_INVALIDFUNCTION;
+ }
+
+ if (php_stream_truncate_supported(stm->stream)) {
+ int ret = php_stream_truncate_set_size(stm->stream, (size_t)libNewSize.QuadPart);
+
+ if (ret == 0) {
+ return S_OK;
+ }
+ }
+
+ return STG_E_INVALIDFUNCTION;
+}
+
+static HRESULT STDMETHODCALLTYPE stm_copy_to(IStream *This, IStream *pstm, ULARGE_INTEGER cb,
+ ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten)
+{
+ FETCH_STM();
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE stm_commit(IStream *This, DWORD grfCommitFlags)
+{
+ FETCH_STM();
+
+ php_stream_flush(stm->stream);
+
+ return S_OK;
+}
+
+static HRESULT STDMETHODCALLTYPE stm_revert(IStream *This)
+{
+ /* NOP */
+ return S_OK;
+}
+
+static HRESULT STDMETHODCALLTYPE stm_lock_region(IStream *This,
+ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD lockType)
+{
+ return STG_E_INVALIDFUNCTION;
+}
+
+static HRESULT STDMETHODCALLTYPE stm_unlock_region(IStream *This,
+ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD lockType)
+{
+ return STG_E_INVALIDFUNCTION;
+}
+
+static HRESULT STDMETHODCALLTYPE stm_stat(IStream *This,
+ STATSTG *pstatstg, DWORD grfStatFlag)
+{
+ return STG_E_INVALIDFUNCTION;
+}
+
+static HRESULT STDMETHODCALLTYPE stm_clone(IStream *This, IStream **ppstm)
+{
+ return STG_E_INVALIDFUNCTION;
+}
+
+static struct IStreamVtbl php_istream_vtbl = {
+ stm_queryinterface,
+ stm_addref,
+ stm_release,
+ stm_read,
+ stm_write,
+ stm_seek,
+ stm_set_size,
+ stm_copy_to,
+ stm_commit,
+ stm_revert,
+ stm_lock_region,
+ stm_unlock_region,
+ stm_stat,
+ stm_clone
+};
+
+static void istream_destructor(php_istream *stm)
+{
+ TSRMLS_FETCH();
+
+ if (stm->id) {
+ int id = stm->id;
+ stm->id = 0;
+ zend_list_delete(id);
+ return;
+ }
+
+ if (stm->refcount > 0) {
+ CoDisconnectObject((IUnknown*)stm, 0);
+ }
+
+ zend_list_delete(stm->stream->rsrc_id);
+
+ CoTaskMemFree(stm);
+}
+/* }}} */
+
+PHPAPI IStream *php_com_wrapper_export_stream(php_stream *stream TSRMLS_DC)
+{
+ php_istream *stm = (php_istream*)CoTaskMemAlloc(sizeof(*stm));
+
+ if (stm == NULL)
+ return NULL;
+
+ memset(stm, 0, sizeof(*stm));
+ stm->engine_thread = GetCurrentThreadId();
+ stm->lpVtbl = &php_istream_vtbl;
+ stm->refcount = 1;
+ stm->stream = stream;
+
+ zend_list_addref(stream->rsrc_id);
+ stm->id = zend_list_insert(stm, le_istream);
+
+ return (IStream*)stm;
+}
+
+#define CPH_ME(fname, arginfo) PHP_ME(com_persist, fname, arginfo, ZEND_ACC_PUBLIC)
+#define CPH_SME(fname, arginfo) PHP_ME(com_persist, fname, arginfo, ZEND_ACC_ALLOW_STATIC|ZEND_ACC_PUBLIC)
+#define CPH_METHOD(fname) static PHP_METHOD(com_persist, fname)
+
+#define CPH_FETCH() php_com_persist_helper *helper = (php_com_persist_helper*)zend_object_store_get_object(getThis() TSRMLS_CC);
+
+#define CPH_NO_OBJ() if (helper->unk == NULL) { php_com_throw_exception(E_INVALIDARG, "No COM object is associated with this helper instance" TSRMLS_CC); return; }
+
+typedef struct {
+ zend_object std;
+ long codepage;
+ IUnknown *unk;
+ IPersistStream *ips;
+ IPersistStreamInit *ipsi;
+ IPersistFile *ipf;
+} php_com_persist_helper;
+
+static zend_object_handlers helper_handlers;
+static zend_class_entry *helper_ce;
+
+static inline HRESULT get_persist_stream(php_com_persist_helper *helper)
+{
+ if (!helper->ips && helper->unk) {
+ return IUnknown_QueryInterface(helper->unk, &IID_IPersistStream, &helper->ips);
+ }
+ return helper->ips ? S_OK : E_NOTIMPL;
+}
+
+static inline HRESULT get_persist_stream_init(php_com_persist_helper *helper)
+{
+ if (!helper->ipsi && helper->unk) {
+ return IUnknown_QueryInterface(helper->unk, &IID_IPersistStreamInit, &helper->ipsi);
+ }
+ return helper->ipsi ? S_OK : E_NOTIMPL;
+}
+
+static inline HRESULT get_persist_file(php_com_persist_helper *helper)
+{
+ if (!helper->ipf && helper->unk) {
+ return IUnknown_QueryInterface(helper->unk, &IID_IPersistFile, &helper->ipf);
+ }
+ return helper->ipf ? S_OK : E_NOTIMPL;
+}
+
+
+/* {{{ proto string COMPersistHelper::GetCurFile()
+ Determines the filename into which an object will be saved, or false if none is set, via IPersistFile::GetCurFile */
+CPH_METHOD(GetCurFileName)
+{
+ HRESULT res;
+ OLECHAR *olename = NULL;
+ CPH_FETCH();
+
+ CPH_NO_OBJ();
+
+ res = get_persist_file(helper);
+ if (helper->ipf) {
+ res = IPersistFile_GetCurFile(helper->ipf, &olename);
+
+ if (res == S_OK) {
+ Z_TYPE_P(return_value) = IS_STRING;
+ Z_STRVAL_P(return_value) = php_com_olestring_to_string(olename,
+ &Z_STRLEN_P(return_value), helper->codepage TSRMLS_CC);
+ CoTaskMemFree(olename);
+ return;
+ } else if (res == S_FALSE) {
+ CoTaskMemFree(olename);
+ RETURN_FALSE;
+ }
+ php_com_throw_exception(res, NULL TSRMLS_CC);
+ } else {
+ php_com_throw_exception(res, NULL TSRMLS_CC);
+ }
+}
+/* }}} */
+
+
+/* {{{ proto bool COMPersistHelper::SaveToFile(string filename [, bool remember])
+ Persist object data to file, via IPersistFile::Save */
+CPH_METHOD(SaveToFile)
+{
+ HRESULT res;
+ char *filename, *fullpath = NULL;
+ int filename_len;
+ zend_bool remember = TRUE;
+ OLECHAR *olefilename = NULL;
+ CPH_FETCH();
+
+ CPH_NO_OBJ();
+
+ res = get_persist_file(helper);
+ if (helper->ipf) {
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s!|b",
+ &filename, &filename_len, &remember)) {
+ php_com_throw_exception(E_INVALIDARG, "Invalid arguments" TSRMLS_CC);
+ return;
+ }
+
+ if (filename) {
+ fullpath = expand_filepath(filename, NULL TSRMLS_CC);
+
+ if (PG(safe_mode) && (!php_checkuid(fullpath, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
+ RETURN_FALSE;
+ }
+
+ if (php_check_open_basedir(fullpath TSRMLS_CC)) {
+ RETURN_FALSE;
+ }
+
+ olefilename = php_com_string_to_olestring(filename, strlen(fullpath), helper->codepage TSRMLS_CC);
+ efree(fullpath);
+ }
+ res = IPersistFile_Save(helper->ipf, olefilename, remember);
+ if (SUCCEEDED(res)) {
+ if (!olefilename) {
+ res = IPersistFile_GetCurFile(helper->ipf, &olefilename);
+ if (S_OK == res) {
+ IPersistFile_SaveCompleted(helper->ipf, olefilename);
+ CoTaskMemFree(olefilename);
+ olefilename = NULL;
+ }
+ } else if (remember) {
+ IPersistFile_SaveCompleted(helper->ipf, olefilename);
+ }
+ }
+
+ if (olefilename) {
+ efree(olefilename);
+ }
+
+ if (FAILED(res)) {
+ php_com_throw_exception(res, NULL TSRMLS_CC);
+ }
+
+ } else {
+ php_com_throw_exception(res, NULL TSRMLS_CC);
+ }
+}
+/* }}} */
+
+/* {{{ proto bool COMPersistHelper::LoadFromFile(string filename [, int flags])
+ Load object data from file, via IPersistFile::Load */
+CPH_METHOD(LoadFromFile)
+{
+ HRESULT res;
+ char *filename, *fullpath;
+ int filename_len;
+ long flags = 0;
+ OLECHAR *olefilename;
+ CPH_FETCH();
+
+ CPH_NO_OBJ();
+
+ res = get_persist_file(helper);
+ if (helper->ipf) {
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l",
+ &filename, &filename_len, &flags)) {
+ php_com_throw_exception(E_INVALIDARG, "Invalid arguments" TSRMLS_CC);
+ return;
+ }
+
+ fullpath = expand_filepath(filename, NULL TSRMLS_CC);
+
+ if (PG(safe_mode) && (!php_checkuid(fullpath, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
+ RETURN_FALSE;
+ }
+
+ if (php_check_open_basedir(fullpath TSRMLS_CC)) {
+ RETURN_FALSE;
+ }
+
+ olefilename = php_com_string_to_olestring(fullpath, strlen(fullpath), helper->codepage TSRMLS_CC);
+ efree(fullpath);
+
+ res = IPersistFile_Load(helper->ipf, olefilename, flags);
+ efree(olefilename);
+
+ if (FAILED(res)) {
+ php_com_throw_exception(res, NULL TSRMLS_CC);
+ }
+
+ } else {
+ php_com_throw_exception(res, NULL TSRMLS_CC);
+ }
+}
+/* }}} */
+
+/* {{{ proto int COMPersistHelper::GetMaxStreamSize()
+ Gets maximum stream size required to store the object data, via IPersistStream::GetSizeMax (or IPersistStreamInit::GetSizeMax) */
+CPH_METHOD(GetMaxStreamSize)
+{
+ HRESULT res;
+ ULARGE_INTEGER size;
+ CPH_FETCH();
+
+ CPH_NO_OBJ();
+
+ res = get_persist_stream_init(helper);
+ if (helper->ipsi) {
+ res = IPersistStreamInit_GetSizeMax(helper->ipsi, &size);
+ } else {
+ res = get_persist_stream(helper);
+ if (helper->ips) {
+ res = IPersistStream_GetSizeMax(helper->ips, &size);
+ } else {
+ php_com_throw_exception(res, NULL TSRMLS_CC);
+ return;
+ }
+ }
+
+ if (res != S_OK) {
+ php_com_throw_exception(res, NULL TSRMLS_CC);
+ } else {
+ /* TODO: handle 64 bit properly */
+ RETURN_LONG((LONG)size.QuadPart);
+ }
+}
+/* }}} */
+
+/* {{{ proto int COMPersistHelper::InitNew()
+ Initializes the object to a default state, via IPersistStreamInit::InitNew */
+CPH_METHOD(InitNew)
+{
+ HRESULT res;
+ CPH_FETCH();
+
+ CPH_NO_OBJ();
+
+ res = get_persist_stream_init(helper);
+ if (helper->ipsi) {
+ res = IPersistStreamInit_InitNew(helper->ipsi);
+
+ if (res != S_OK) {
+ php_com_throw_exception(res, NULL TSRMLS_CC);
+ } else {
+ RETURN_TRUE;
+ }
+ } else {
+ php_com_throw_exception(res, NULL TSRMLS_CC);
+ }
+}
+/* }}} */
+
+/* {{{ proto mixed COMPersistHelper::LoadFromStream(resource stream)
+ Initializes an object from the stream where it was previously saved, via IPersistStream::Load or OleLoadFromStream */
+CPH_METHOD(LoadFromStream)
+{
+ zval *zstm;
+ php_stream *stream;
+ IStream *stm = NULL;
+ HRESULT res;
+ CPH_FETCH();
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zstm)) {
+ php_com_throw_exception(E_INVALIDARG, "invalid arguments" TSRMLS_CC);
+ return;
+ }
+
+ php_stream_from_zval_no_verify(stream, &zstm);
+
+ if (stream == NULL) {
+ php_com_throw_exception(E_INVALIDARG, "expected a stream" TSRMLS_CC);
+ return;
+ }
+
+ stm = php_com_wrapper_export_stream(stream TSRMLS_CC);
+ if (stm == NULL) {
+ php_com_throw_exception(E_UNEXPECTED, "failed to wrap stream" TSRMLS_CC);
+ return;
+ }
+
+ res = S_OK;
+ RETVAL_TRUE;
+
+ if (helper->unk == NULL) {
+ IDispatch *disp = NULL;
+
+ /* we need to create an object and load using OleLoadFromStream */
+ res = OleLoadFromStream(stm, &IID_IDispatch, &disp);
+
+ if (SUCCEEDED(res)) {
+ php_com_wrap_dispatch(return_value, disp, COMG(code_page) TSRMLS_CC);
+ }
+ } else {
+ res = get_persist_stream_init(helper);
+ if (helper->ipsi) {
+ res = IPersistStreamInit_Load(helper->ipsi, stm);
+ } else {
+ res = get_persist_stream(helper);
+ if (helper->ips) {
+ res = IPersistStreamInit_Load(helper->ipsi, stm);
+ }
+ }
+ }
+ IStream_Release(stm);
+
+ if (FAILED(res)) {
+ php_com_throw_exception(res, NULL TSRMLS_CC);
+ RETURN_NULL();
+ }
+}
+/* }}} */
+
+/* {{{ proto int COMPersistHelper::SaveToStream(resource stream)
+ Saves the object to a stream, via IPersistStream::Save */
+CPH_METHOD(SaveToStream)
+{
+ zval *zstm;
+ php_stream *stream;
+ IStream *stm = NULL;
+ HRESULT res;
+ CPH_FETCH();
+
+ CPH_NO_OBJ();
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zstm)) {
+ php_com_throw_exception(E_INVALIDARG, "invalid arguments" TSRMLS_CC);
+ return;
+ }
+
+ php_stream_from_zval_no_verify(stream, &zstm);
+
+ if (stream == NULL) {
+ php_com_throw_exception(E_INVALIDARG, "expected a stream" TSRMLS_CC);
+ return;
+ }
+
+ stm = php_com_wrapper_export_stream(stream TSRMLS_CC);
+ if (stm == NULL) {
+ php_com_throw_exception(E_UNEXPECTED, "failed to wrap stream" TSRMLS_CC);
+ return;
+ }
+
+ res = get_persist_stream_init(helper);
+ if (helper->ipsi) {
+ res = IPersistStreamInit_Save(helper->ipsi, stm, TRUE);
+ } else {
+ res = get_persist_stream(helper);
+ if (helper->ips) {
+ res = IPersistStream_Save(helper->ips, stm, TRUE);
+ }
+ }
+
+ IStream_Release(stm);
+
+ if (FAILED(res)) {
+ php_com_throw_exception(res, NULL TSRMLS_CC);
+ return;
+ }
+
+ RETURN_TRUE;
+}
+/* }}} */
+
+/* {{{ proto int COMPersistHelper::__construct([object com_object])
+ Creates a persistence helper object, usually associated with a com_object */
+CPH_METHOD(__construct)
+{
+ php_com_dotnet_object *obj = NULL;
+ zval *zobj = NULL;
+ CPH_FETCH();
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|O!",
+ &zobj, php_com_variant_class_entry)) {
+ php_com_throw_exception(E_INVALIDARG, "invalid arguments" TSRMLS_CC);
+ return;
+ }
+
+ if (!zobj) {
+ return;
+ }
+
+ obj = CDNO_FETCH(zobj);
+
+ if (V_VT(&obj->v) != VT_DISPATCH || V_DISPATCH(&obj->v) == NULL) {
+ php_com_throw_exception(E_INVALIDARG, "parameter must represent an IDispatch COM object" TSRMLS_CC);
+ return;
+ }
+
+ /* it is always safe to cast an interface to IUnknown */
+ helper->unk = (IUnknown*)V_DISPATCH(&obj->v);
+ IUnknown_AddRef(helper->unk);
+ helper->codepage = obj->code_page;
+}
+/* }}} */
+
+
+
+
+static zend_function_entry com_persist_helper_methods[] = {
+ CPH_ME(__construct, NULL)
+ CPH_ME(GetCurFileName, NULL)
+ CPH_ME(SaveToFile, NULL)
+ CPH_ME(LoadFromFile, NULL)
+ CPH_ME(GetMaxStreamSize, NULL)
+ CPH_ME(InitNew, NULL)
+ CPH_ME(LoadFromStream, NULL)
+ CPH_ME(SaveToStream, NULL)
+ {NULL, NULL, NULL}
+};
+
+static void helper_free_storage(void *obj TSRMLS_DC)
+{
+ php_com_persist_helper *object = (php_com_persist_helper*)obj;
+
+ if (object->ipf) {
+ IPersistFile_Release(object->ipf);
+ }
+ if (object->ips) {
+ IPersistStream_Release(object->ips);
+ }
+ if (object->ipsi) {
+ IPersistStreamInit_Release(object->ipsi);
+ }
+ if (object->unk) {
+ IUnknown_Release(object->unk);
+ }
+ zend_object_std_dtor(&object->std TSRMLS_CC);
+ efree(object);
+}
+
+
+static void helper_clone(void *obj, void **clone_ptr TSRMLS_DC)
+{
+ php_com_persist_helper *clone, *object = (php_com_persist_helper*)obj;
+
+ clone = emalloc(sizeof(*object));
+ memcpy(clone, object, sizeof(*object));
+ *clone_ptr = clone;
+
+ zend_object_std_init(&clone->std, object->std.ce TSRMLS_CC);
+
+ if (clone->ipf) {
+ IPersistFile_AddRef(clone->ipf);
+ }
+ if (clone->ips) {
+ IPersistStream_AddRef(clone->ips);
+ }
+ if (clone->ipsi) {
+ IPersistStreamInit_AddRef(clone->ipsi);
+ }
+ if (clone->unk) {
+ IUnknown_AddRef(clone->unk);
+ }
+}
+
+static zend_object_value helper_new(zend_class_entry *ce TSRMLS_DC)
+{
+ php_com_persist_helper *helper;
+ zend_object_value retval;
+
+ helper = emalloc(sizeof(*helper));
+ memset(helper, 0, sizeof(*helper));
+
+ zend_object_std_init(&helper->std, helper_ce TSRMLS_CC);
+
+ retval.handle = zend_objects_store_put(helper, NULL, helper_free_storage, helper_clone TSRMLS_CC);
+ retval.handlers = &helper_handlers;
+
+ return retval;
+}
+
+int php_com_persist_minit(INIT_FUNC_ARGS)
+{
+ zend_class_entry ce;
+
+ memcpy(&helper_handlers, zend_get_std_object_handlers(), sizeof(helper_handlers));
+ helper_handlers.clone_obj = NULL;
+
+ INIT_CLASS_ENTRY(ce, "COMPersistHelper", com_persist_helper_methods);
+ ce.create_object = helper_new;
+ helper_ce = zend_register_internal_class(&ce TSRMLS_CC);
+ helper_ce->ce_flags |= ZEND_ACC_FINAL;
+
+ le_istream = zend_register_list_destructors_ex(istream_dtor,
+ NULL, "com_dotnet_istream_wrapper", module_number);
+
+ return SUCCESS;
+}
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
diff --git a/ext/com_dotnet/com_variant.c b/ext/com_dotnet/com_variant.c
index 4e12c1aac..59ffa9687 100644
--- a/ext/com_dotnet/com_variant.c
+++ b/ext/com_dotnet/com_variant.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_variant.c,v 1.11.2.1 2006/01/01 12:50:00 sniper Exp $ */
+/* $Id: com_variant.c,v 1.11.2.2 2006/02/04 10:57:27 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -40,7 +40,7 @@ static void safe_array_from_zval(VARIANT *v, zval *z, int codepage TSRMLS_DC)
int keytype;
char *strindex;
int strindexlen;
- long intindex;
+ long intindex = -1;
long max_index = 0;
VARIANT *va;
zval **item;
diff --git a/ext/com_dotnet/php_com_dotnet_internal.h b/ext/com_dotnet/php_com_dotnet_internal.h
index c479e16b0..2f4fcf173 100644
--- a/ext/com_dotnet/php_com_dotnet_internal.h
+++ b/ext/com_dotnet/php_com_dotnet_internal.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_com_dotnet_internal.h,v 1.14.2.2 2006/01/01 12:50:00 sniper Exp $ */
+/* $Id: php_com_dotnet_internal.h,v 1.14.2.3 2006/01/26 11:17:34 rrichards Exp $ */
#ifndef PHP_COM_DOTNET_INTERNAL_H
#define PHP_COM_DOTNET_INTERNAL_H
@@ -102,11 +102,11 @@ PHP_FUNCTION(com_load_typelib);
PHP_FUNCTION(com_get_active_object);
HRESULT php_com_invoke_helper(php_com_dotnet_object *obj, DISPID id_member,
- WORD flags, DISPPARAMS *disp_params, VARIANT *v TSRMLS_DC);
+ WORD flags, DISPPARAMS *disp_params, VARIANT *v, int silent TSRMLS_DC);
HRESULT php_com_get_id_of_name(php_com_dotnet_object *obj, char *name,
int namelen, DISPID *dispid TSRMLS_DC);
int php_com_do_invoke_by_id(php_com_dotnet_object *obj, DISPID dispid,
- WORD flags, VARIANT *v, int nargs, zval **args TSRMLS_DC);
+ WORD flags, VARIANT *v, int nargs, zval **args, int silent TSRMLS_DC);
int php_com_do_invoke(php_com_dotnet_object *obj, char *name, int namelen,
WORD flags, VARIANT *v, int nargs, zval **args TSRMLS_DC);
int php_com_do_invoke_byref(php_com_dotnet_object *obj, char *name, int namelen,
diff --git a/ext/com_dotnet/tests/27974.phpt b/ext/com_dotnet/tests/27974.phpt
index 6c1bdce02..b764e8dd2 100755
--- a/ext/com_dotnet/tests/27974.phpt
+++ b/ext/com_dotnet/tests/27974.phpt
@@ -1,43 +1,43 @@
---TEST--
-COM: mapping a safearray
---SKIPIF--
-<?php # vim:ft=php
-if (!extension_loaded("com_dotnet")) print "skip COM/.Net support not present"; ?>
---FILE--
-<?php // $Id: 27974.phpt,v 1.2 2004/05/03 20:10:58 wez Exp $
-error_reporting(E_ALL);
-
-try {
- $v = new VARIANT(array("123", "456", "789"));
- var_dump($v);
- print $v[0] . "\n";
- print $v[1] . "\n";
- print $v[2] . "\n";
- $v[1] = "hello";
- foreach ($v as $item) {
- var_dump($item);
- }
- try {
- $v[3] = "shouldn't work";
- } catch (com_exception $e) {
- if ($e->getCode() != DISP_E_BADINDEX) {
- throw $e;
- }
- echo "Got BADINDEX exception OK!\n";
- }
- echo "OK!";
-} catch (Exception $e) {
- print $e;
-}
-?>
---EXPECT--
-object(variant)#1 (0) {
-}
-123
-456
-789
-string(3) "123"
-string(5) "hello"
-string(3) "789"
-Got BADINDEX exception OK!
-OK!
+--TEST--
+COM: mapping a safearray
+--SKIPIF--
+<?php # vim:ft=php
+if (!extension_loaded("com_dotnet")) print "skip COM/.Net support not present"; ?>
+--FILE--
+<?php // $Id: 27974.phpt,v 1.2.4.1 2006/02/04 10:57:28 rrichards Exp $
+error_reporting(E_ALL);
+
+try {
+ $v = new VARIANT(array("123", "456", "789"));
+ var_dump($v);
+ print $v[0] . "\n";
+ print $v[1] . "\n";
+ print $v[2] . "\n";
+ $v[1] = "hello";
+ foreach ($v as $item) {
+ var_dump($item);
+ }
+ try {
+ $v[3] = "shouldn't work";
+ } catch (com_exception $e) {
+ if ($e->getCode() != DISP_E_BADINDEX) {
+ throw $e;
+ }
+ echo "Got BADINDEX exception OK!\n";
+ }
+ echo "OK!";
+} catch (Exception $e) {
+ print $e;
+}
+?>
+--EXPECT--
+object(variant)#1 (0) {
+}
+123
+456
+789
+string(3) "123"
+string(5) "hello"
+string(3) "789"
+Got BADINDEX exception OK!
+OK!
diff --git a/ext/com_dotnet/tests/bug34272.phpt b/ext/com_dotnet/tests/bug34272.phpt
new file mode 100644
index 000000000..3a65e2ce2
--- /dev/null
+++ b/ext/com_dotnet/tests/bug34272.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Bug #34272 (empty array onto COM object blows up)
+--SKIPIF--
+<?php
+if (!extension_loaded("com_dotnet")) print "skip COM/.Net support not present"; ?>
+--FILE--
+<?php
+error_reporting(E_ALL);
+
+try {
+ $dict = new COM("Scripting.Dictionary");
+ $dict->add('foo', array());
+ print sizeof($dict['foo'])."\n";
+ $dict->add('bar', array(23));
+ print sizeof($dict['bar'])." \n";
+} catch (Exception $e) {
+ print $e;
+}
+?>
+--EXPECT--
+0
+1
diff --git a/ext/curl/interface.c b/ext/curl/interface.c
index e5e956847..dfdbfe78e 100644
--- a/ext/curl/interface.c
+++ b/ext/curl/interface.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: interface.c,v 1.62.2.11 2006/01/05 18:07:55 iliaa Exp $ */
+/* $Id: interface.c,v 1.62.2.16 2006/08/10 17:16:35 iliaa Exp $ */
#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
@@ -47,13 +47,11 @@
/* {{{ cruft for thread safe SSL crypto locks */
#if defined(ZTS) && defined(HAVE_CURL_SSL)
# ifdef PHP_WIN32
-# define PHP_CURL_NEED_SSL_TSL
# define PHP_CURL_NEED_OPENSSL_TSL
# include <openssl/crypto.h>
# else /* !PHP_WIN32 */
# if defined(HAVE_CURL_OPENSSL)
# if defined(HAVE_OPENSSL_CRYPTO_H)
-# define PHP_CURL_NEED_SSL_TSL
# define PHP_CURL_NEED_OPENSSL_TSL
# include <openssl/crypto.h>
# else
@@ -64,7 +62,6 @@
# endif
# elif defined(HAVE_CURL_GNUTLS)
# if defined(HAVE_GCRYPT_H)
-# define PHP_CURL_NEED_SSL_TSL
# define PHP_CURL_NEED_GNUTLS_TSL
# include <gcrypt.h>
# else
@@ -94,10 +91,61 @@
int le_curl;
int le_curl_multi_handle;
-#ifdef PHP_CURL_NEED_SSL_TSL
-static inline void php_curl_ssl_init(void);
-static inline void php_curl_ssl_cleanup(void);
+#ifdef PHP_CURL_NEED_OPENSSL_TSL /* {{{ */
+static MUTEX_T *php_curl_openssl_tsl = NULL;
+
+static void php_curl_ssl_lock(int mode, int n, const char * file, int line)
+{
+ if (mode & CRYPTO_LOCK) {
+ tsrm_mutex_lock(php_curl_openssl_tsl[n]);
+ } else {
+ tsrm_mutex_unlock(php_curl_openssl_tsl[n]);
+ }
+}
+
+static unsigned long php_curl_ssl_id(void)
+{
+ return (unsigned long) tsrm_thread_id();
+}
+#endif
+/* }}} */
+
+#ifdef PHP_CURL_NEED_GNUTLS_TSL /* {{{ */
+static int php_curl_ssl_mutex_create(void **m)
+{
+ if (*((MUTEX_T *) m) = tsrm_mutex_alloc()) {
+ return SUCCESS;
+ } else {
+ return FAILURE;
+ }
+}
+
+static int php_curl_ssl_mutex_destroy(void **m)
+{
+ tsrm_mutex_free(*((MUTEX_T *) m));
+ return SUCCESS;
+}
+
+static int php_curl_ssl_mutex_lock(void **m)
+{
+ return tsrm_mutex_lock(*((MUTEX_T *) m));
+}
+
+static int php_curl_ssl_mutex_unlock(void **m)
+{
+ return tsrm_mutex_unlock(*((MUTEX_T *) m));
+}
+
+static struct gcry_thread_cbs php_curl_gnutls_tsl = {
+ GCRY_THREAD_OPTION_USER,
+ NULL,
+ php_curl_ssl_mutex_create,
+ php_curl_ssl_mutex_destroy,
+ php_curl_ssl_mutex_lock,
+ php_curl_ssl_mutex_unlock
+};
#endif
+/* }}} */
static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC);
@@ -113,11 +161,16 @@ static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC);
strncasecmp(str, "file:", sizeof("file:") - 1) == 0) \
{ \
php_url *tmp_url; \
- \
+ \
if (!(tmp_url = php_url_parse_ex(str, len))) { \
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid url '%s'", str); \
RETURN_FALSE; \
} \
+ \
+ if (php_memnstr(str, tmp_url->path, strlen(tmp_url->path), str + len)) { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Url '%s' contains unencoded control characters.", str); \
+ RETURN_FALSE; \
+ } \
\
if (tmp_url->query || tmp_url->fragment || php_check_open_basedir(tmp_url->path TSRMLS_CC) || \
(PG(safe_mode) && !php_checkuid(tmp_url->path, "rb+", CHECKUID_CHECK_MODE_PARAM)) \
@@ -135,6 +188,7 @@ zend_function_entry curl_functions[] = {
PHP_FE(curl_copy_handle, NULL)
PHP_FE(curl_version, NULL)
PHP_FE(curl_setopt, NULL)
+ PHP_FE(curl_setopt_array, NULL)
PHP_FE(curl_exec, NULL)
PHP_FE(curl_getinfo, NULL)
PHP_FE(curl_error, NULL)
@@ -337,6 +391,7 @@ PHP_MINIT_FUNCTION(curl)
REGISTER_CURL_CONSTANT(CURLINFO_CONTENT_TYPE);
REGISTER_CURL_CONSTANT(CURLINFO_REDIRECT_TIME);
REGISTER_CURL_CONSTANT(CURLINFO_REDIRECT_COUNT);
+ REGISTER_CURL_CONSTANT(CURLINFO_HEADER_OUT);
/* cURL protocol constants (curl_version) */
REGISTER_CURL_CONSTANT(CURL_VERSION_IPV6);
@@ -447,9 +502,24 @@ PHP_MINIT_FUNCTION(curl)
REGISTER_CURL_CONSTANT(CURLFTPAUTH_TLS);
#endif
-#ifdef PHP_CURL_NEED_SSL_TSL
- php_curl_ssl_init();
+#ifdef PHP_CURL_NEED_OPENSSL_TSL
+ {
+ int i, c = CRYPTO_num_locks();
+
+ php_curl_openssl_tsl = malloc(c * sizeof(MUTEX_T));
+
+ for (i = 0; i < c; ++i) {
+ php_curl_openssl_tsl[i] = tsrm_mutex_alloc();
+ }
+
+ CRYPTO_set_id_callback(php_curl_ssl_id);
+ CRYPTO_set_locking_callback(php_curl_ssl_lock);
+ }
#endif
+#ifdef PHP_CURL_NEED_GNUTLS_TSL
+ gcry_control(GCRYCTL_SET_THREAD_CBS, &php_curl_gnutls_tsl);
+#endif
+
if (curl_global_init(CURL_GLOBAL_SSL) != CURLE_OK) {
return FAILURE;
}
@@ -486,9 +556,26 @@ PHP_MSHUTDOWN_FUNCTION(curl)
php_unregister_url_stream_wrapper("ftp" TSRMLS_CC);
php_unregister_url_stream_wrapper("ldap" TSRMLS_CC);
#endif
+#ifdef PHP_CURL_NEED_OPENSSL_TSL
+ /* ensure there are valid callbacks set */
+ CRYPTO_set_id_callback(php_curl_ssl_id);
+ CRYPTO_set_locking_callback(php_curl_ssl_lock);
+#endif
curl_global_cleanup();
-#ifdef PHP_CURL_NEED_SSL_TSL
- php_curl_ssl_cleanup();
+#ifdef PHP_CURL_NEED_OPENSSL_TSL
+ if (php_curl_openssl_tsl) {
+ int i, c = CRYPTO_num_locks();
+
+ CRYPTO_set_id_callback(NULL);
+ CRYPTO_set_locking_callback(NULL);
+
+ for (i = 0; i < c; ++i) {
+ tsrm_mutex_free(php_curl_openssl_tsl[i]);
+ }
+
+ free(php_curl_openssl_tsl);
+ php_curl_openssl_tsl = NULL;
+ }
#endif
return SUCCESS;
}
@@ -719,6 +806,23 @@ static size_t curl_write_header(char *data, size_t size, size_t nmemb, void *ctx
}
/* }}} */
+static int curl_debug(CURL *cp, curl_infotype type, char *buf, size_t buf_len, void *ctx)
+{
+ php_curl *ch = (php_curl *) ctx;
+
+ if (type == CURLINFO_HEADER_OUT) {
+ if (ch->header.str_len) {
+ efree(ch->header.str);
+ }
+ if (buf_len > 0) {
+ ch->header.str = estrndup(buf, buf_len);
+ ch->header.str_len = buf_len;
+ }
+ }
+
+ return 0;
+}
+
#if CURLOPT_PASSWDFUNCTION != 0
/* {{{ curl_passwd
*/
@@ -841,6 +945,7 @@ static void alloc_curl_handle(php_curl **ch)
(*ch)->handlers->read = ecalloc(1, sizeof(php_curl_read));
(*ch)->in_callback = 0;
+ (*ch)->header.str_len = 0;
memset(&(*ch)->err, 0, sizeof((*ch)->err));
@@ -949,24 +1054,10 @@ PHP_FUNCTION(curl_copy_handle)
}
/* }}} */
-/* {{{ proto bool curl_setopt(resource ch, int option, mixed value)
- Set an option for a CURL transfer */
-PHP_FUNCTION(curl_setopt)
+static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *return_value TSRMLS_DC)
{
- zval **zid, **zoption, **zvalue;
- php_curl *ch;
CURLcode error=CURLE_OK;
- int option;
-
- if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &zid, &zoption, &zvalue) == FAILURE) {
- WRONG_PARAM_COUNT;
- }
-
- ZEND_FETCH_RESOURCE(ch, php_curl *, zid, -1, le_curl_name, le_curl);
- convert_to_long_ex(zoption);
-
- option = Z_LVAL_PP(zoption);
switch (option) {
case CURLOPT_INFILESIZE:
case CURLOPT_VERBOSE:
@@ -979,7 +1070,6 @@ PHP_FUNCTION(curl_setopt)
case CURLOPT_FTPLISTONLY:
case CURLOPT_FTPAPPEND:
case CURLOPT_NETRC:
- case CURLOPT_FOLLOWLOCATION:
case CURLOPT_PUT:
#if CURLOPT_MUTE != 0
case CURLOPT_MUTE:
@@ -1030,6 +1120,16 @@ PHP_FUNCTION(curl_setopt)
convert_to_long_ex(zvalue);
error = curl_easy_setopt(ch->cp, option, Z_LVAL_PP(zvalue));
break;
+ case CURLOPT_FOLLOWLOCATION:
+ convert_to_long_ex(zvalue);
+ if ((PG(open_basedir) && *PG(open_basedir)) || PG(safe_mode)) {
+ if (Z_LVAL_PP(zvalue) != 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set");
+ RETURN_FALSE;
+ }
+ }
+ error = curl_easy_setopt(ch->cp, option, Z_LVAL_PP(zvalue));
+ break;
case CURLOPT_URL:
case CURLOPT_PROXY:
case CURLOPT_USERPWD:
@@ -1122,6 +1222,8 @@ PHP_FUNCTION(curl_setopt)
if (Z_LVAL_PP(zvalue)) {
ch->handlers->write->type = PHP_CURL_BINARY;
+ } else {
+ ch->handlers->write->type = PHP_CURL_ASCII;
}
break;
case CURLOPT_WRITEFUNCTION:
@@ -1294,23 +1396,93 @@ PHP_FUNCTION(curl_setopt)
break;
}
+ case CURLINFO_HEADER_OUT:
+ convert_to_long_ex(zvalue);
+ if (Z_LVAL_PP(zvalue) == 1) {
+ curl_easy_setopt(ch->cp, CURLOPT_DEBUGFUNCTION, curl_debug);
+ curl_easy_setopt(ch->cp, CURLOPT_DEBUGDATA, (void *)ch);
+ curl_easy_setopt(ch->cp, CURLOPT_VERBOSE, 1);
+ } else {
+ curl_easy_setopt(ch->cp, CURLOPT_DEBUGFUNCTION, NULL);
+ curl_easy_setopt(ch->cp, CURLOPT_DEBUGDATA, NULL);
+ curl_easy_setopt(ch->cp, CURLOPT_VERBOSE, 0);
+ }
+ break;
}
SAVE_CURL_ERROR(ch, error);
if (error != CURLE_OK) {
- RETURN_FALSE;
+ return 1;
} else {
+ return 0;
+ }
+}
+
+/* {{{ proto bool curl_setopt(resource ch, int option, mixed value)
+ Set an option for a CURL transfer */
+PHP_FUNCTION(curl_setopt)
+{
+ zval **zid, **zoption, **zvalue;
+ php_curl *ch;
+
+ if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &zid, &zoption, &zvalue) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ ZEND_FETCH_RESOURCE(ch, php_curl *, zid, -1, le_curl_name, le_curl);
+
+ convert_to_long_ex(zoption);
+
+ if (!_php_curl_setopt(ch, Z_LVAL_PP(zoption), zvalue, return_value TSRMLS_CC)) {
RETURN_TRUE;
+ } else {
+ RETURN_FALSE;
}
}
/* }}} */
+/* {{{ proto bool curl_setopt_array(resource ch, array options)
+ Set an array of option for a CURL transfer */
+PHP_FUNCTION(curl_setopt_array)
+{
+ zval *zid, *arr, **entry;
+ php_curl *ch;
+ long option;
+ HashPosition pos;
+ char *string_key;
+ int str_key_len;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "za", &zid, &arr) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ ZEND_FETCH_RESOURCE(ch, php_curl *, &zid, -1, le_curl_name, le_curl);
+
+ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
+ while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) {
+ if (zend_hash_get_current_key_ex(Z_ARRVAL_P(arr), &string_key, &str_key_len, &option, 0, &pos) == HASH_KEY_IS_STRING) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Array keys must be CURLOPT constants or equivalent interger values.");
+ RETURN_FALSE;
+ }
+ if (_php_curl_setopt(ch, option, entry, return_value TSRMLS_CC)) {
+ RETURN_FALSE;
+ }
+ zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos);
+ }
+ RETURN_TRUE;
+}
+/* }}} */
+
/* {{{ _php_curl_cleanup_handle(ch)
Cleanup an execution phase */
void _php_curl_cleanup_handle(php_curl *ch)
{
if (ch->handlers->write->buf.len > 0) {
- memset(&ch->handlers->write->buf, 0, sizeof(smart_str));
+ smart_str_free(&ch->handlers->write->buf);
+ }
+ if (ch->header.str_len) {
+ efree(ch->header.str);
+ ch->header.str_len = 0;
}
memset(ch->err.str, 0, CURL_ERROR_SIZE + 1);
@@ -1341,7 +1513,6 @@ PHP_FUNCTION(curl_exec)
if (ch->handlers->write->buf.len > 0) {
smart_str_free(&ch->handlers->write->buf);
}
-
RETURN_FALSE;
}
@@ -1349,10 +1520,8 @@ PHP_FUNCTION(curl_exec)
if (ch->handlers->write->method == PHP_CURL_RETURN && ch->handlers->write->buf.len > 0) {
--ch->uses;
- if (ch->handlers->write->type != PHP_CURL_BINARY) {
- smart_str_0(&ch->handlers->write->buf);
- }
- RETURN_STRINGL(ch->handlers->write->buf.c, ch->handlers->write->buf.len, 0);
+ smart_str_0(&ch->handlers->write->buf);
+ RETURN_STRINGL(ch->handlers->write->buf.c, ch->handlers->write->buf.len, 1);
}
--ch->uses;
RETURN_TRUE;
@@ -1443,6 +1612,9 @@ PHP_FUNCTION(curl_getinfo)
if (curl_easy_getinfo(ch->cp, CURLINFO_REDIRECT_TIME, &d_code) == CURLE_OK) {
CAAD("redirect_time", d_code);
}
+ if (ch->header.str_len > 0) {
+ CAAS("request_header", ch->header.str);
+ }
} else {
option = Z_LVAL_PP(zoption);
switch (option) {
@@ -1493,6 +1665,12 @@ PHP_FUNCTION(curl_getinfo)
}
break;
}
+ case CURLINFO_HEADER_OUT:
+ if (ch->header.str_len > 0) {
+ RETURN_STRINGL(ch->header.str, ch->header.str_len, 1);
+ } else {
+ RETURN_FALSE;
+ }
}
}
}
@@ -1574,6 +1752,9 @@ static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC)
zend_llist_clean(&ch->to_free.slist);
zend_llist_clean(&ch->to_free.post);
+ if (ch->handlers->write->buf.len > 0) {
+ smart_str_free(&ch->handlers->write->buf);
+ }
if (ch->handlers->write->func_name) {
zval_ptr_dtor(&ch->handlers->write->func_name);
}
@@ -1586,6 +1767,10 @@ static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC)
if (ch->handlers->passwd) {
zval_ptr_dtor(&ch->handlers->passwd);
}
+ if (ch->header.str_len > 0) {
+ efree(ch->header.str);
+ }
+
efree(ch->handlers->write);
efree(ch->handlers->write_header);
efree(ch->handlers->read);
@@ -1594,105 +1779,6 @@ static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC)
}
/* }}} */
-#ifdef PHP_CURL_NEED_OPENSSL_TSL
-/* {{{ */
-static MUTEX_T *php_curl_openssl_tsl = NULL;
-
-static void php_curl_ssl_lock(int mode, int n, const char * file, int line)
-{
- if (mode & CRYPTO_LOCK) {
- tsrm_mutex_lock(php_curl_openssl_tsl[n]);
- } else {
- tsrm_mutex_unlock(php_curl_openssl_tsl[n]);
- }
-}
-
-static unsigned long php_curl_ssl_id(void)
-{
- return (unsigned long) tsrm_thread_id();
-}
-
-static inline void php_curl_ssl_init(void)
-{
- int i, c = CRYPTO_num_locks();
-
- php_curl_openssl_tsl = malloc(c * sizeof(MUTEX_T));
-
- for (i = 0; i < c; ++i) {
- php_curl_openssl_tsl[i] = tsrm_mutex_alloc();
- }
-
- CRYPTO_set_id_callback(php_curl_ssl_id);
- CRYPTO_set_locking_callback(php_curl_ssl_lock);
-}
-
-static inline void php_curl_ssl_cleanup(void)
-{
- if (php_curl_openssl_tsl) {
- int i, c = CRYPTO_num_locks();
-
- CRYPTO_set_id_callback(NULL);
- CRYPTO_set_locking_callback(NULL);
-
- for (i = 0; i < c; ++i) {
- tsrm_mutex_free(php_curl_openssl_tsl[i]);
- }
-
- free(php_curl_openssl_tsl);
- php_curl_openssl_tsl = NULL;
- }
-}
-#endif /* PHP_CURL_NEED_OPENSSL_TSL */
-/* }}} */
-
-#ifdef PHP_CURL_NEED_GNUTLS_TSL
-/* {{{ */
-static int php_curl_ssl_mutex_create(void **m)
-{
- if (*((MUTEX_T *) m) = tsrm_mutex_alloc()) {
- return SUCCESS;
- } else {
- return FAILURE;
- }
-}
-
-static int php_curl_ssl_mutex_destroy(void **m)
-{
- tsrm_mutex_free(*((MUTEX_T *) m));
- return SUCCESS;
-}
-
-static int php_curl_ssl_mutex_lock(void **m)
-{
- return tsrm_mutex_lock(*((MUTEX_T *) m));
-}
-
-static int php_curl_ssl_mutex_unlock(void **m)
-{
- return tsrm_mutex_unlock(*((MUTEX_T *) m));
-}
-
-static struct gcry_thread_cbs php_curl_gnutls_tsl = {
- GCRY_THREAD_OPTION_USER,
- NULL,
- php_curl_ssl_mutex_create,
- php_curl_ssl_mutex_destroy,
- php_curl_ssl_mutex_lock,
- php_curl_ssl_mutex_unlock
-};
-
-static inline void php_curl_ssl_init(void)
-{
- gcry_control(GCRYCTL_SET_THREAD_CBS, &php_curl_gnutls_tsl);
-}
-
-static inline void php_curl_ssl_cleanup(void)
-{
- return;
-}
-#endif /* PHP_CURL_NEED_GNUTLS_TSL */
-/* }}} */
-
#endif /* HAVE_CURL */
/*
diff --git a/ext/curl/multi.c b/ext/curl/multi.c
index 15404ec8d..bf21aaf59 100644
--- a/ext/curl/multi.c
+++ b/ext/curl/multi.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: multi.c,v 1.19.2.2 2006/01/01 12:50:01 sniper Exp $ */
+/* $Id: multi.c,v 1.19.2.3 2006/04/13 11:26:10 tony2001 Exp $ */
#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
@@ -195,11 +195,8 @@ PHP_FUNCTION(curl_multi_getcontent)
ZEND_FETCH_RESOURCE(ch, php_curl *, &z_ch, -1, le_curl_name, le_curl);
if (ch->handlers->write->method == PHP_CURL_RETURN && ch->handlers->write->buf.len > 0) {
- if (ch->handlers->write->type != PHP_CURL_BINARY) {
- smart_str_0(&ch->handlers->write->buf);
- }
-
- RETURN_STRINGL(ch->handlers->write->buf.c, ch->handlers->write->buf.len, 0);
+ smart_str_0(&ch->handlers->write->buf);
+ RETURN_STRINGL(ch->handlers->write->buf.c, ch->handlers->write->buf.len, 1);
}
}
diff --git a/ext/curl/php_curl.h b/ext/curl/php_curl.h
index 67ab5d3f3..a250e9aed 100644
--- a/ext/curl/php_curl.h
+++ b/ext/curl/php_curl.h
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_curl.h,v 1.44.2.1 2006/01/01 12:50:01 sniper Exp $ */
+/* $Id: php_curl.h,v 1.44.2.2 2006/01/24 20:11:14 iliaa Exp $ */
#ifndef _PHP_CURL_H
#define _PHP_CURL_H
@@ -63,6 +63,7 @@ PHP_FUNCTION(curl_version);
PHP_FUNCTION(curl_init);
PHP_FUNCTION(curl_copy_handle);
PHP_FUNCTION(curl_setopt);
+PHP_FUNCTION(curl_setopt_array);
PHP_FUNCTION(curl_exec);
PHP_FUNCTION(curl_getinfo);
PHP_FUNCTION(curl_error);
@@ -107,6 +108,11 @@ struct _php_curl_error {
int no;
};
+struct _php_curl_send_headers {
+ char *str;
+ size_t str_len;
+};
+
struct _php_curl_free {
zend_llist str;
zend_llist post;
@@ -116,6 +122,7 @@ struct _php_curl_free {
typedef struct {
struct _php_curl_error err;
struct _php_curl_free to_free;
+ struct _php_curl_send_headers header;
void ***thread_ctx;
CURL *cp;
php_curl_handlers *handlers;
diff --git a/ext/curl/streams.c b/ext/curl/streams.c
index cae8e315f..a62aa1a39 100644
--- a/ext/curl/streams.c
+++ b/ext/curl/streams.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streams.c,v 1.14.2.2 2006/01/01 12:50:01 sniper Exp $ */
+/* $Id: streams.c,v 1.14.2.3 2006/08/10 17:16:35 iliaa Exp $ */
/* This file implements cURL based wrappers.
* NOTE: If you are implementing your own streams that are intended to
@@ -289,7 +289,11 @@ php_stream *php_curl_stream_opener(php_stream_wrapper *wrapper, char *filename,
curl_easy_setopt(curlstream->curl, CURLOPT_WRITEHEADER, stream);
/* currently buggy (bug is in curl) */
- curl_easy_setopt(curlstream->curl, CURLOPT_FOLLOWLOCATION, 1);
+ if ((PG(open_basedir) && *PG(open_basedir)) || PG(safe_mode)) {
+ curl_easy_setopt(curlstream->curl, CURLOPT_FOLLOWLOCATION, 0);
+ } else {
+ curl_easy_setopt(curlstream->curl, CURLOPT_FOLLOWLOCATION, 1);
+ }
curl_easy_setopt(curlstream->curl, CURLOPT_ERRORBUFFER, curlstream->errstr);
curl_easy_setopt(curlstream->curl, CURLOPT_VERBOSE, 0);
diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c
index 56329be88..323482d1f 100644
--- a/ext/date/lib/parse_date.c
+++ b/ext/date/lib/parse_date.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.12 on Wed Jan 4 15:16:35 2006 */
+/* Generated by re2c 0.9.12 on Tue Apr 11 20:02:18 2006 */
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: parse_date.c,v 1.29.2.24 2006/01/04 21:31:29 derick Exp $ */
+/* $Id: parse_date.c,v 1.29.2.30 2006/04/11 18:03:46 derick Exp $ */
#include "timelib.h"
@@ -98,13 +98,13 @@ typedef unsigned char uchar;
#define timelib_string_free free
-#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; } }
+#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; } }
#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; }
-#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
+#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
#define TIMELIB_UNHAVE_DATE() { s->time->have_date = 0; s->time->d = 0; s->time->m = 0; s->time->y = 0; }
#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; s->time->relative.weekday_behavior = 0; }
#define TIMELIB_HAVE_WEEKDAY_RELATIVE() { s->time->have_weekday_relative = 1; }
-#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { return TIMELIB_ERROR; } else { s->time.have_zone = 1; } }
+#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { add_warning(s, "Double timezone specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_zone = 1; } }
#define TIMELIB_INIT s->cur = cursor; str = timelib_string(s); ptr = str
#define TIMELIB_DEINIT timelib_string_free(str)
@@ -141,7 +141,7 @@ typedef struct Scanner {
int fd;
uchar *lim, *str, *ptr, *cur, *tok, *pos;
unsigned int line, len;
- int errors;
+ struct timelib_error_container *errors;
struct timelib_time *time;
timelib_tzdb *tzdb;
@@ -286,7 +286,7 @@ static timelib_lookup_table const timelib_month_lookup[] = {
static char* timelib_ltrim(char *s)
{
char *ptr = s;
- while (ptr[0] == ' ') {
+ while (ptr[0] == ' ' || ptr[0] == '\t') {
ptr++;
}
return ptr;
@@ -326,6 +326,24 @@ uchar *fill(Scanner *s, uchar *cursor){
}
#endif
+static void add_warning(Scanner *s, char *error)
+{
+ s->errors->warning_count++;
+ s->errors->warning_messages = realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
+ s->errors->warning_messages[s->errors->warning_count - 1].position = s->tok ? s->tok - s->str : 0;
+ s->errors->warning_messages[s->errors->warning_count - 1].character = s->tok ? *s->tok : 0;
+ s->errors->warning_messages[s->errors->warning_count - 1].message = strdup(error);
+}
+
+static void add_error(Scanner *s, char *error)
+{
+ s->errors->error_count++;
+ s->errors->error_messages = realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
+ s->errors->error_messages[s->errors->error_count - 1].position = s->tok ? s->tok - s->str : 0;
+ s->errors->error_messages[s->errors->error_count - 1].character = s->tok ? *s->tok : 0;
+ s->errors->error_messages[s->errors->error_count - 1].message = strdup(error);
+}
+
static timelib_sll timelib_meridian(char **ptr, timelib_sll h)
{
timelib_sll retval = 0;
@@ -496,7 +514,7 @@ static timelib_sll timelib_lookup_relative_text(char **ptr, int *behavior)
static timelib_sll timelib_get_relative_text(char **ptr, int *behavior)
{
- while (**ptr == ' ' || **ptr == '-' || **ptr == '/') {
+ while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '/') {
++*ptr;
}
return timelib_lookup_relative_text(ptr, behavior);
@@ -528,7 +546,7 @@ static long timelib_lookup_month(char **ptr)
static long timelib_get_month(char **ptr)
{
- while (**ptr == ' ' || **ptr == '-' || **ptr == '.' || **ptr == '/') {
+ while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '.' || **ptr == '/') {
++*ptr;
}
return timelib_lookup_month(ptr);
@@ -536,7 +554,7 @@ static long timelib_get_month(char **ptr)
static void timelib_eat_spaces(char **ptr)
{
- while (**ptr == ' ') {
+ while (**ptr == ' ' || **ptr == '\t') {
++*ptr;
}
}
@@ -547,7 +565,7 @@ static const timelib_relunit* timelib_lookup_relunit(char **ptr)
char *begin = *ptr, *end;
const timelib_relunit *tp, *value = NULL;
- while (**ptr != '\0' && **ptr != ' ') {
+ while (**ptr != '\0' && **ptr != ' ' && **ptr != '\t') {
++*ptr;
}
end = *ptr;
@@ -591,7 +609,7 @@ static void timelib_set_relative(char **ptr, timelib_sll amount, int behavior, S
static timelib_tz_lookup_table* zone_search(const char *word, long gmtoffset, int isdst)
{
int first_found = 0;
- timelib_tz_lookup_table *tp, *first_found_elem;
+ timelib_tz_lookup_table *tp, *first_found_elem = NULL;
timelib_tz_lookup_table *fmp;
if (strcasecmp("utc", word) == 0 || strcasecmp("gmt", word) == 0) {
@@ -660,7 +678,7 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_
*tz_not_found = 0;
- while (**ptr == ' ' || **ptr == '(') {
+ while (**ptr == ' ' || **ptr == '\t' || **ptr == '(') {
++*ptr;
}
if (**ptr == '+') {
@@ -685,9 +703,11 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_
char *tz_abbr;
t->is_localtime = 1;
- t->zone_type = TIMELIB_ZONETYPE_ABBR;
offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &found);
+ if (found) {
+ t->zone_type = TIMELIB_ZONETYPE_ABBR;
+ }
#if 0
/* If we found a TimeZone identifier, use it */
if (tz_name) {
@@ -703,7 +723,7 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_
found++;
}
}
- if (t->zone_type != TIMELIB_ZONETYPE_ID) {
+ if (found && t->zone_type != TIMELIB_ZONETYPE_ID) {
timelib_time_tz_abbr_update(t, tz_abbr);
}
free(tz_abbr);
@@ -739,11 +759,11 @@ std:
{
static unsigned char yybm[] = {
0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 208, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 208, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 192, 64, 192, 0,
+ 208, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 128, 64, 192, 0,
8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -780,12 +800,12 @@ std:
YYDEBUG(1, *YYCURSOR);
++YYCURSOR;
yy0:
- if((YYLIMIT - YYCURSOR) < 26) YYFILL(26);
+ if((YYLIMIT - YYCURSOR) < 29) YYFILL(29);
yych = *YYCURSOR;
YYDEBUG(-1, yych);
switch(yych){
case 0x00: case 0x0A: goto yy48;
- case ' ': goto yy45;
+ case 0x09: case ' ': goto yy45;
case '(': goto yy42;
case '+': case '-': goto yy41;
case ',': case '.': goto yy47;
@@ -853,16 +873,16 @@ yy2:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy1283;
+ goto yy1405;
}
} else {
if(yych <= 'd'){
if(yych <= 'Z') goto yy133;
- if(yych >= 'a') goto yy136;
+ if(yych >= 'a') goto yy138;
goto yy3;
} else {
- if(yych <= 'e') goto yy1292;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'e') goto yy1414;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -873,8 +893,11 @@ yy3:
int tz_not_found;
DEBUG_OUTPUT("tzcorrection | tz");
TIMELIB_INIT;
+ TIMELIB_HAVE_TZ();
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
TIMELIB_DEINIT;
return TIMELIB_TIMEZONE;
}
@@ -888,7 +911,7 @@ yy4:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy1283;
+ goto yy1405;
}
} else {
if(yych <= 'd'){
@@ -896,7 +919,7 @@ yy4:
if(yych <= '`') goto yy3;
goto yy133;
} else {
- if(yych <= 'e') goto yy1283;
+ if(yych <= 'e') goto yy1405;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -911,12 +934,12 @@ yy5:
goto yy133;
} else {
if(yych <= 'H'){
- if(yych <= 'E') goto yy1254;
+ if(yych <= 'E') goto yy1376;
goto yy133;
} else {
- if(yych <= 'I') goto yy1255;
+ if(yych <= 'I') goto yy1377;
if(yych <= 'N') goto yy133;
- goto yy1253;
+ goto yy1375;
}
}
} else {
@@ -925,16 +948,16 @@ yy5:
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych == 'e') goto yy1270;
- goto yy136;
+ if(yych == 'e') goto yy1392;
+ goto yy138;
}
} else {
if(yych <= 'n'){
- if(yych <= 'i') goto yy1271;
- goto yy136;
+ if(yych <= 'i') goto yy1393;
+ goto yy138;
} else {
- if(yych <= 'o') goto yy1269;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'o') goto yy1391;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -949,12 +972,12 @@ yy6:
goto yy133;
} else {
if(yych <= 'H'){
- if(yych <= 'E') goto yy1254;
+ if(yych <= 'E') goto yy1376;
goto yy133;
} else {
- if(yych <= 'I') goto yy1255;
+ if(yych <= 'I') goto yy1377;
if(yych <= 'N') goto yy133;
- goto yy1253;
+ goto yy1375;
}
}
} else {
@@ -963,15 +986,15 @@ yy6:
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych == 'e') goto yy1254;
+ if(yych == 'e') goto yy1376;
goto yy133;
}
} else {
if(yych <= 'n'){
- if(yych <= 'i') goto yy1255;
+ if(yych <= 'i') goto yy1377;
goto yy133;
} else {
- if(yych <= 'o') goto yy1253;
+ if(yych <= 'o') goto yy1375;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -984,25 +1007,25 @@ yy7:
if(yych <= 'A'){
if(yych == ')') goto yy132;
if(yych <= '@') goto yy3;
- goto yy1225;
+ goto yy1345;
} else {
- if(yych == 'I') goto yy1226;
+ if(yych == 'I') goto yy1346;
if(yych <= 'N') goto yy133;
- goto yy1227;
+ goto yy1347;
}
} else {
if(yych <= 'h'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- if(yych <= 'a') goto yy1239;
- goto yy136;
+ if(yych <= 'a') goto yy1360;
+ goto yy138;
} else {
if(yych <= 'n'){
- if(yych <= 'i') goto yy1240;
- goto yy136;
+ if(yych <= 'i') goto yy1361;
+ goto yy138;
} else {
- if(yych <= 'o') goto yy1241;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'o') goto yy1362;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1014,24 +1037,24 @@ yy8:
if(yych <= 'A'){
if(yych == ')') goto yy132;
if(yych <= '@') goto yy3;
- goto yy1225;
+ goto yy1345;
} else {
- if(yych == 'I') goto yy1226;
+ if(yych == 'I') goto yy1346;
if(yych <= 'N') goto yy133;
- goto yy1227;
+ goto yy1347;
}
} else {
if(yych <= 'h'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- if(yych <= 'a') goto yy1225;
+ if(yych <= 'a') goto yy1345;
goto yy133;
} else {
if(yych <= 'n'){
- if(yych <= 'i') goto yy1226;
+ if(yych <= 'i') goto yy1346;
goto yy133;
} else {
- if(yych <= 'o') goto yy1227;
+ if(yych <= 'o') goto yy1347;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1039,131 +1062,143 @@ yy8:
}
yy9:
YYDEBUG(9, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= 'W'){
- if(yych <= 'G'){
- if(yych <= '@'){
- if(yych == ')') goto yy132;
- goto yy3;
- } else {
- if(yych == 'E') goto yy1161;
- goto yy133;
- }
- } else {
- if(yych <= 'O'){
- if(yych <= 'H') goto yy1162;
- if(yych <= 'N') goto yy133;
- goto yy1163;
- } else {
- if(yych == 'U') goto yy1164;
- if(yych <= 'V') goto yy133;
- goto yy1165;
- }
- }
- } else {
- if(yych <= 'n'){
- if(yych <= 'd'){
- if(yych <= 'Z') goto yy133;
- if(yych <= '`') goto yy3;
- goto yy136;
- } else {
- if(yych <= 'e') goto yy1194;
- if(yych == 'h') goto yy1195;
- goto yy136;
- }
- } else {
- if(yych <= 'u'){
- if(yych <= 'o') goto yy1196;
- if(yych <= 't') goto yy136;
- goto yy1197;
- } else {
- if(yych == 'w') goto yy1198;
- if(yych <= 'z') goto yy136;
- goto yy3;
- }
- }
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case ')': goto yy132;
+ case '0':
+ case '1': goto yy1277;
+ case '2': goto yy1278;
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy1279;
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D': case 'F':
+ case 'G': case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N': case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T': case 'V': case 'X':
+ case 'Y':
+ case 'Z': goto yy133;
+ case 'E': goto yy1272;
+ case 'H': goto yy1273;
+ case 'O': goto yy1274;
+ case 'U': goto yy1275;
+ case 'W': goto yy1276;
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd': case 'f':
+ case 'g': case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n': case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't': case 'v': case 'x':
+ case 'y':
+ case 'z': goto yy138;
+ case 'e': goto yy1314;
+ case 'h': goto yy1315;
+ case 'o': goto yy1316;
+ case 'u': goto yy1317;
+ case 'w': goto yy1318;
+ default: goto yy3;
}
yy10:
YYDEBUG(10, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= 'W'){
- if(yych <= 'G'){
- if(yych <= '@'){
- if(yych == ')') goto yy132;
- goto yy3;
- } else {
- if(yych == 'E') goto yy1161;
- goto yy133;
- }
- } else {
- if(yych <= 'O'){
- if(yych <= 'H') goto yy1162;
- if(yych <= 'N') goto yy133;
- goto yy1163;
- } else {
- if(yych == 'U') goto yy1164;
- if(yych <= 'V') goto yy133;
- goto yy1165;
- }
- }
- } else {
- if(yych <= 'n'){
- if(yych <= 'd'){
- if(yych <= 'Z') goto yy133;
- if(yych <= '`') goto yy3;
- goto yy133;
- } else {
- if(yych <= 'e') goto yy1161;
- if(yych == 'h') goto yy1162;
- goto yy133;
- }
- } else {
- if(yych <= 'u'){
- if(yych <= 'o') goto yy1163;
- if(yych <= 't') goto yy133;
- goto yy1164;
- } else {
- if(yych == 'w') goto yy1165;
- if(yych <= 'z') goto yy133;
- goto yy3;
- }
- }
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case ')': goto yy132;
+ case '0':
+ case '1': goto yy1277;
+ case '2': goto yy1278;
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy1279;
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D': case 'F':
+ case 'G': case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N': case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T': case 'V': case 'X':
+ case 'Y':
+ case 'Z': case 'a':
+ case 'b':
+ case 'c':
+ case 'd': case 'f':
+ case 'g': case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n': case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't': case 'v': case 'x':
+ case 'y':
+ case 'z': goto yy133;
+ case 'E': case 'e': goto yy1272;
+ case 'H': case 'h': goto yy1273;
+ case 'O': case 'o': goto yy1274;
+ case 'U': case 'u': goto yy1275;
+ case 'W': case 'w': goto yy1276;
+ default: goto yy3;
}
yy11:
YYDEBUG(11, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '-') goto yy1157;
- if(yych <= '0') goto yy12;
- if(yych <= '9') goto yy1158;
+ if(yych == '-') goto yy1268;
+ if(yych <= '/') goto yy12;
+ if(yych <= '9') goto yy1269;
goto yy12;
yy12:
YYDEBUG(12, *YYCURSOR);
{
-/* printf("unexpected character: #%d, %c ", *s->tok, *s->tok); */
- s->errors++;
+ add_error(s, "Unexpected character");
goto std;
}
yy13:
YYDEBUG(13, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: goto yy1230;
+ case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -1171,11 +1206,11 @@ yy13:
case 'T': case 'V':
case 'W':
case 'X':
- case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm': case 'o': case 'w': case 'y': goto yy1121;
- case '-': goto yy615;
- case '.': goto yy1123;
- case '/': goto yy614;
- case '0': goto yy1156;
+ case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm': case 'o': case 'w': case 'y': goto yy1232;
+ case '-': goto yy695;
+ case '.': goto yy1234;
+ case '/': goto yy694;
+ case '0': goto yy1267;
case '1':
case '2':
case '3':
@@ -1184,33 +1219,22 @@ yy13:
case '6':
case '7':
case '8':
- case '9': goto yy1155;
- case ':': goto yy1124;
- case 'n': goto yy612;
- case 'r': goto yy613;
- case 's': goto yy606;
- case 't': goto yy610;
+ case '9': goto yy1266;
+ case ':': goto yy1235;
+ case 'n': goto yy692;
+ case 'r': goto yy693;
+ case 's': goto yy686;
+ case 't': goto yy690;
default: goto yy12;
}
yy14:
YYDEBUG(14, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: goto yy682;
+ case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -1220,46 +1244,35 @@ yy14:
case 'W':
case 'X':
case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm': case 'o':
- case 'p': case 'w': case 'y': goto yy604;
- case '-': goto yy615;
- case '.': goto yy618;
- case '/': goto yy614;
+ case 'p': case 'w': case 'y': goto yy684;
+ case '-': goto yy695;
+ case '.': goto yy696;
+ case '/': goto yy694;
case '0':
case '1':
- case '2': goto yy1155;
+ case '2': goto yy1266;
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
- case '9': goto yy1122;
- case ':': goto yy627;
- case 'n': goto yy612;
- case 'r': goto yy613;
- case 's': goto yy606;
- case 't': goto yy610;
+ case '9': goto yy1233;
+ case ':': goto yy705;
+ case 'n': goto yy692;
+ case 'r': goto yy693;
+ case 's': goto yy686;
+ case 't': goto yy690;
default: goto yy12;
}
yy15:
YYDEBUG(15, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: goto yy682;
+ case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -1269,46 +1282,35 @@ yy15:
case 'W':
case 'X':
case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm': case 'o':
- case 'p': case 'w': case 'y': goto yy604;
- case '-': goto yy615;
- case '.': goto yy618;
- case '/': goto yy614;
+ case 'p': case 'w': case 'y': goto yy684;
+ case '-': goto yy695;
+ case '.': goto yy696;
+ case '/': goto yy694;
case '0':
case '1':
case '2':
- case '3': goto yy1122;
+ case '3': goto yy1233;
case '4':
case '5':
case '6':
case '7':
case '8':
- case '9': goto yy1119;
- case ':': goto yy627;
- case 'n': goto yy612;
- case 'r': goto yy613;
- case 's': goto yy606;
- case 't': goto yy610;
+ case '9': goto yy1229;
+ case ':': goto yy705;
+ case 'n': goto yy692;
+ case 'r': goto yy693;
+ case 's': goto yy686;
+ case 't': goto yy690;
default: goto yy12;
}
yy16:
YYDEBUG(16, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: goto yy682;
+ case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -1318,12 +1320,12 @@ yy16:
case 'W':
case 'X':
case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm': case 'o':
- case 'p': case 'w': case 'y': goto yy604;
- case '-': goto yy615;
- case '.': goto yy618;
- case '/': goto yy614;
+ case 'p': case 'w': case 'y': goto yy684;
+ case '-': goto yy695;
+ case '.': goto yy696;
+ case '/': goto yy694;
case '0':
- case '1': goto yy1119;
+ case '1': goto yy1229;
case '2':
case '3':
case '4':
@@ -1331,33 +1333,22 @@ yy16:
case '6':
case '7':
case '8':
- case '9': goto yy611;
- case ':': goto yy627;
- case 'n': goto yy612;
- case 'r': goto yy613;
- case 's': goto yy606;
- case 't': goto yy610;
+ case '9': goto yy691;
+ case ':': goto yy705;
+ case 'n': goto yy692;
+ case 'r': goto yy693;
+ case 's': goto yy686;
+ case 't': goto yy690;
default: goto yy12;
}
yy17:
YYDEBUG(17, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: goto yy682;
+ case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -1367,10 +1358,10 @@ yy17:
case 'W':
case 'X':
case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm': case 'o':
- case 'p': case 'w': case 'y': goto yy604;
- case '-': goto yy615;
- case '.': goto yy618;
- case '/': goto yy614;
+ case 'p': case 'w': case 'y': goto yy684;
+ case '-': goto yy695;
+ case '.': goto yy696;
+ case '/': goto yy694;
case '0':
case '1':
case '2':
@@ -1380,93 +1371,117 @@ yy17:
case '6':
case '7':
case '8':
- case '9': goto yy611;
- case ':': goto yy627;
- case 'n': goto yy612;
- case 'r': goto yy613;
- case 's': goto yy606;
- case 't': goto yy610;
+ case '9': goto yy691;
+ case ':': goto yy705;
+ case 'n': goto yy692;
+ case 'r': goto yy693;
+ case 's': goto yy686;
+ case 't': goto yy690;
default: goto yy12;
}
yy18:
YYDEBUG(18, *YYCURSOR);
- yyaccept = 1;
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'H'){
- if(yych <= '.'){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '/') goto yy3;
- if(yych <= '9') goto yy359;
- if(yych <= '@') goto yy3;
- goto yy133;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych == '/') goto yy3;
+ goto yy423;
+ }
}
} else {
- if(yych <= 'W'){
- if(yych <= 'I') goto yy602;
- if(yych == 'V') goto yy601;
- goto yy133;
+ if(yych <= 'V'){
+ if(yych <= 'H'){
+ if(yych <= '@') goto yy3;
+ goto yy133;
+ } else {
+ if(yych <= 'I') goto yy681;
+ if(yych <= 'U') goto yy133;
+ goto yy680;
+ }
} else {
if(yych <= 'Z'){
- if(yych <= 'X') goto yy601;
+ if(yych == 'X') goto yy680;
goto yy133;
} else {
if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
}
yy19:
YYDEBUG(19, *YYCURSOR);
- yyaccept = 1;
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= 'I'){
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'H') goto yy133;
- goto yy599;
+ goto yy133;
} else {
- if(yych <= 'Z') goto yy133;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy136;
- goto yy3;
+ if(yych <= 'Z'){
+ if(yych <= 'I') goto yy678;
+ goto yy133;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy138;
+ goto yy3;
+ }
}
}
yy20:
YYDEBUG(20, *YYCURSOR);
- yyaccept = 1;
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= 'I'){
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'H') goto yy133;
- goto yy597;
+ goto yy133;
} else {
- if(yych <= 'Z') goto yy133;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy136;
- goto yy3;
+ if(yych <= 'Z'){
+ if(yych <= 'I') goto yy676;
+ goto yy133;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy138;
+ goto yy3;
+ }
}
}
yy21:
@@ -1477,18 +1492,18 @@ yy21:
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'A') goto yy580;
+ if(yych <= 'A') goto yy659;
if(yych <= 'T') goto yy133;
- goto yy579;
+ goto yy658;
}
} else {
if(yych <= 'a'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy589;
+ goto yy668;
} else {
- if(yych == 'u') goto yy588;
- if(yych <= 'z') goto yy136;
+ if(yych == 'u') goto yy667;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1500,17 +1515,17 @@ yy22:
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'A') goto yy580;
+ if(yych <= 'A') goto yy659;
if(yych <= 'T') goto yy133;
- goto yy579;
+ goto yy658;
}
} else {
if(yych <= 'a'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy580;
+ goto yy659;
} else {
- if(yych == 'u') goto yy579;
+ if(yych == 'u') goto yy658;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1526,16 +1541,16 @@ yy23:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy541;
+ goto yy620;
}
} else {
if(yych <= 'N'){
- if(yych == 'I') goto yy542;
+ if(yych == 'I') goto yy621;
goto yy133;
} else {
- if(yych <= 'O') goto yy543;
+ if(yych <= 'O') goto yy622;
if(yych <= 'Q') goto yy133;
- goto yy544;
+ goto yy623;
}
}
} else {
@@ -1543,19 +1558,19 @@ yy23:
if(yych <= 'd'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy136;
+ goto yy138;
} else {
- if(yych <= 'e') goto yy560;
- if(yych <= 'h') goto yy136;
- goto yy561;
+ if(yych <= 'e') goto yy639;
+ if(yych <= 'h') goto yy138;
+ goto yy640;
}
} else {
if(yych <= 'q'){
- if(yych == 'o') goto yy562;
- goto yy136;
+ if(yych == 'o') goto yy641;
+ goto yy138;
} else {
- if(yych <= 'r') goto yy563;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'r') goto yy642;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1571,16 +1586,16 @@ yy24:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy541;
+ goto yy620;
}
} else {
if(yych <= 'N'){
- if(yych == 'I') goto yy542;
+ if(yych == 'I') goto yy621;
goto yy133;
} else {
- if(yych <= 'O') goto yy543;
+ if(yych <= 'O') goto yy622;
if(yych <= 'Q') goto yy133;
- goto yy544;
+ goto yy623;
}
}
} else {
@@ -1590,16 +1605,16 @@ yy24:
if(yych <= '`') goto yy3;
goto yy133;
} else {
- if(yych <= 'e') goto yy541;
+ if(yych <= 'e') goto yy620;
if(yych <= 'h') goto yy133;
- goto yy542;
+ goto yy621;
}
} else {
if(yych <= 'q'){
- if(yych == 'o') goto yy543;
+ if(yych == 'o') goto yy622;
goto yy133;
} else {
- if(yych <= 'r') goto yy544;
+ if(yych <= 'r') goto yy623;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1615,12 +1630,12 @@ yy25:
goto yy133;
} else {
if(yych <= 'O'){
- if(yych <= 'G') goto yy524;
+ if(yych <= 'G') goto yy599;
goto yy133;
} else {
- if(yych <= 'P') goto yy523;
+ if(yych <= 'P') goto yy598;
if(yych <= 'T') goto yy133;
- goto yy522;
+ goto yy597;
}
}
} else {
@@ -1629,16 +1644,16 @@ yy25:
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych == 'g') goto yy534;
- goto yy136;
+ if(yych == 'g') goto yy611;
+ goto yy138;
}
} else {
if(yych <= 't'){
- if(yych <= 'p') goto yy533;
- goto yy136;
+ if(yych <= 'p') goto yy610;
+ goto yy138;
} else {
- if(yych <= 'u') goto yy532;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'u') goto yy609;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1653,12 +1668,12 @@ yy26:
goto yy133;
} else {
if(yych <= 'O'){
- if(yych <= 'G') goto yy524;
+ if(yych <= 'G') goto yy599;
goto yy133;
} else {
- if(yych <= 'P') goto yy523;
+ if(yych <= 'P') goto yy598;
if(yych <= 'T') goto yy133;
- goto yy522;
+ goto yy597;
}
}
} else {
@@ -1667,15 +1682,15 @@ yy26:
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych == 'g') goto yy524;
+ if(yych == 'g') goto yy599;
goto yy133;
}
} else {
if(yych <= 't'){
- if(yych <= 'p') goto yy523;
+ if(yych <= 'p') goto yy598;
goto yy133;
} else {
- if(yych <= 'u') goto yy522;
+ if(yych <= 'u') goto yy597;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1691,17 +1706,17 @@ yy27:
goto yy132;
} else {
if(yych <= '@') goto yy3;
- if(yych <= 'A') goto yy469;
+ if(yych <= 'A') goto yy540;
goto yy133;
}
} else {
if(yych <= 'H'){
- if(yych <= 'E') goto yy468;
+ if(yych <= 'E') goto yy539;
goto yy133;
} else {
- if(yych <= 'I') goto yy470;
+ if(yych <= 'I') goto yy541;
if(yych <= 'T') goto yy133;
- goto yy471;
+ goto yy542;
}
}
} else {
@@ -1710,17 +1725,17 @@ yy27:
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych <= 'a') goto yy496;
- if(yych <= 'd') goto yy136;
- goto yy495;
+ if(yych <= 'a') goto yy569;
+ if(yych <= 'd') goto yy138;
+ goto yy568;
}
} else {
if(yych <= 't'){
- if(yych == 'i') goto yy497;
- goto yy136;
+ if(yych == 'i') goto yy570;
+ goto yy138;
} else {
- if(yych <= 'u') goto yy498;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'u') goto yy571;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1735,17 +1750,17 @@ yy28:
goto yy132;
} else {
if(yych <= '@') goto yy3;
- if(yych <= 'A') goto yy469;
+ if(yych <= 'A') goto yy540;
goto yy133;
}
} else {
if(yych <= 'H'){
- if(yych <= 'E') goto yy468;
+ if(yych <= 'E') goto yy539;
goto yy133;
} else {
- if(yych <= 'I') goto yy470;
+ if(yych <= 'I') goto yy541;
if(yych <= 'T') goto yy133;
- goto yy471;
+ goto yy542;
}
}
} else {
@@ -1754,16 +1769,16 @@ yy28:
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych <= 'a') goto yy469;
+ if(yych <= 'a') goto yy540;
if(yych <= 'd') goto yy133;
- goto yy468;
+ goto yy539;
}
} else {
if(yych <= 't'){
- if(yych == 'i') goto yy470;
+ if(yych == 'i') goto yy541;
goto yy133;
} else {
- if(yych <= 'u') goto yy471;
+ if(yych <= 'u') goto yy542;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1779,16 +1794,16 @@ yy29:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'B') goto yy133;
- goto yy458;
+ goto yy529;
}
} else {
if(yych <= 'b'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy136;
+ goto yy138;
} else {
- if(yych <= 'c') goto yy463;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'c') goto yy534;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1802,7 +1817,7 @@ yy30:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'B') goto yy133;
- goto yy458;
+ goto yy529;
}
} else {
if(yych <= 'b'){
@@ -1810,7 +1825,7 @@ yy30:
if(yych <= '`') goto yy3;
goto yy133;
} else {
- if(yych <= 'c') goto yy458;
+ if(yych <= 'c') goto yy529;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1825,16 +1840,16 @@ yy31:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy356;
+ goto yy420;
}
} else {
if(yych <= 'd'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy136;
+ goto yy138;
} else {
- if(yych <= 'e') goto yy451;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'e') goto yy522;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1848,7 +1863,7 @@ yy32:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy356;
+ goto yy420;
}
} else {
if(yych <= 'd'){
@@ -1856,7 +1871,7 @@ yy32:
if(yych <= '`') goto yy3;
goto yy133;
} else {
- if(yych <= 'e') goto yy356;
+ if(yych <= 'e') goto yy420;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1871,16 +1886,16 @@ yy33:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy339;
+ goto yy403;
}
} else {
if(yych <= 'd'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy136;
+ goto yy138;
} else {
- if(yych <= 'e') goto yy348;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'e') goto yy412;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1894,7 +1909,7 @@ yy34:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy339;
+ goto yy403;
}
} else {
if(yych <= 'd'){
@@ -1902,7 +1917,7 @@ yy34:
if(yych <= '`') goto yy3;
goto yy133;
} else {
- if(yych <= 'e') goto yy339;
+ if(yych <= 'e') goto yy403;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1915,19 +1930,19 @@ yy35:
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'I') goto yy321;
+ if(yych == 'I') goto yy367;
if(yych <= 'K') goto yy133;
- goto yy322;
+ goto yy368;
}
} else {
if(yych <= 'i'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- if(yych <= 'h') goto yy136;
- goto yy330;
+ if(yych <= 'h') goto yy138;
+ goto yy385;
} else {
- if(yych == 'l') goto yy331;
- if(yych <= 'z') goto yy136;
+ if(yych == 'l') goto yy386;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1939,18 +1954,18 @@ yy36:
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'I') goto yy321;
+ if(yych == 'I') goto yy367;
if(yych <= 'K') goto yy133;
- goto yy322;
+ goto yy368;
}
} else {
if(yych <= 'i'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
if(yych <= 'h') goto yy133;
- goto yy321;
+ goto yy367;
} else {
- if(yych == 'l') goto yy322;
+ if(yych == 'l') goto yy368;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1961,14 +1976,14 @@ yy37:
if(yych <= 'A'){
if(yych == ')') goto yy132;
if(yych <= '@') goto yy3;
- goto yy315;
+ goto yy319;
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych <= 'a') goto yy318;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'a') goto yy343;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1978,13 +1993,13 @@ yy38:
if(yych <= 'A'){
if(yych == ')') goto yy132;
if(yych <= '@') goto yy3;
- goto yy315;
+ goto yy319;
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych <= 'a') goto yy315;
+ if(yych <= 'a') goto yy319;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1999,16 +2014,16 @@ yy39:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy133;
- goto yy153;
+ goto yy157;
}
} else {
if(yych <= 'q'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy136;
+ goto yy138;
} else {
- if(yych <= 'r') goto yy235;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'r') goto yy239;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -2022,7 +2037,7 @@ yy40:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy133;
- goto yy153;
+ goto yy157;
}
} else {
if(yych <= 'q'){
@@ -2030,30 +2045,30 @@ yy40:
if(yych <= '`') goto yy3;
goto yy133;
} else {
- if(yych <= 'r') goto yy153;
+ if(yych <= 'r') goto yy157;
if(yych <= 'z') goto yy133;
goto yy3;
}
}
yy41:
YYDEBUG(41, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if(yybm[0+yych] & 16) {
goto yy54;
}
if(yych <= '/') goto yy12;
- if(yych <= '1') goto yy146;
- if(yych <= '2') goto yy147;
- if(yych <= '9') goto yy148;
+ if(yych <= '1') goto yy150;
+ if(yych <= '2') goto yy151;
+ if(yych <= '9') goto yy152;
goto yy12;
yy42:
YYDEBUG(42, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@') goto yy12;
- if(yych <= 'Z') goto yy145;
+ if(yych <= 'Z') goto yy149;
if(yych <= '`') goto yy12;
- if(yych <= 'z') goto yy145;
+ if(yych <= 'z') goto yy149;
goto yy12;
yy43:
YYDEBUG(43, *YYCURSOR);
@@ -2064,7 +2079,7 @@ yy43:
} else {
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
yy44:
@@ -2125,50 +2140,96 @@ yy52:
if(yybm[0+yych] & 8) {
goto yy51;
}
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': goto yy56;
- case 'D': case 'd': goto yy61;
- case 'F': case 'f': goto yy63;
- case 'H': case 'h': goto yy60;
- case 'M': case 'm': goto yy59;
- case 'S': case 's': goto yy58;
- case 'T': case 't': goto yy65;
- case 'W': case 'w': goto yy62;
- case 'Y': case 'y': goto yy64;
- default: goto yy53;
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy56;
+ if(yych >= ' ') goto yy56;
+ goto yy53;
+ } else {
+ if(yych == 'D') goto yy61;
+ if(yych >= 'F') goto yy63;
+ goto yy53;
+ }
+ } else {
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy60;
+ if(yych >= 'M') goto yy59;
+ goto yy53;
+ } else {
+ if(yych <= 'S'){
+ if(yych >= 'S') goto yy58;
+ goto yy53;
+ } else {
+ if(yych <= 'T') goto yy65;
+ if(yych >= 'W') goto yy62;
+ goto yy53;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy64;
+ if(yych >= 'd') goto yy61;
+ goto yy53;
+ } else {
+ if(yych <= 'f'){
+ if(yych >= 'f') goto yy63;
+ goto yy53;
+ } else {
+ if(yych == 'h') goto yy60;
+ goto yy53;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'm') goto yy59;
+ if(yych <= 'r') goto yy53;
+ if(yych <= 's') goto yy58;
+ goto yy65;
+ } else {
+ if(yych <= 'w'){
+ if(yych >= 'w') goto yy62;
+ goto yy53;
+ } else {
+ if(yych == 'y') goto yy64;
+ goto yy53;
+ }
+ }
+ }
}
yy53:
YYDEBUG(53, *YYCURSOR);
YYCURSOR = YYMARKER;
switch(yyaccept){
- case 26: goto yy1291;
- case 24: goto yy1260;
- case 25: goto yy1268;
- case 23: goto yy1184;
- case 22: goto yy1181;
- case 11: goto yy634;
- case 20: goto yy1127;
- case 21: goto yy1135;
- case 13: goto yy784;
- case 18: goto yy1024;
- case 12: goto yy775;
- case 8: goto yy420;
- case 17: goto yy889;
- case 6: goto yy363;
- case 10: goto yy620;
- case 16: goto yy922;
- case 19: goto yy933;
- case 15: goto yy915;
- case 14: goto yy880;
- case 9: goto yy526;
- case 5: goto yy341;
- case 4: goto yy172;
- case 1: goto yy3;
- case 7: goto yy385;
+ case 26: goto yy1413;
+ case 24: goto yy1382;
+ case 25: goto yy1390;
+ case 23: goto yy1304;
+ case 22: goto yy1301;
+ case 11: goto yy713;
+ case 20: goto yy1238;
+ case 21: goto yy1246;
+ case 13: goto yy870;
+ case 18: goto yy1134;
+ case 12: goto yy860;
+ case 8: goto yy491;
+ case 17: goto yy978;
+ case 6: goto yy426;
+ case 10: goto yy698;
+ case 16: goto yy1032;
+ case 19: goto yy1026;
+ case 15: goto yy1005;
+ case 14: goto yy971;
+ case 9: goto yy601;
+ case 5: goto yy405;
+ case 4: goto yy176;
+ case 0: goto yy3;
+ case 7: goto yy448;
case 3: goto yy69;
case 2: goto yy46;
- case 0: goto yy12;
+ case 1: goto yy12;
}
yy54:
YYDEBUG(54, *YYCURSOR);
@@ -2192,18 +2253,64 @@ yy56:
goto yy57;
yy57:
YYDEBUG(57, *YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': goto yy56;
- case 'D': case 'd': goto yy61;
- case 'F': case 'f': goto yy63;
- case 'H': case 'h': goto yy60;
- case 'M': case 'm': goto yy59;
- case 'S': case 's': goto yy58;
- case 'T': case 't': goto yy65;
- case 'W': case 'w': goto yy62;
- case 'Y': case 'y': goto yy64;
- default: goto yy53;
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy56;
+ if(yych <= 0x1F) goto yy53;
+ goto yy56;
+ } else {
+ if(yych == 'D') goto yy61;
+ if(yych <= 'E') goto yy53;
+ goto yy63;
+ }
+ } else {
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy60;
+ if(yych <= 'L') goto yy53;
+ goto yy59;
+ } else {
+ if(yych <= 'S'){
+ if(yych <= 'R') goto yy53;
+ goto yy58;
+ } else {
+ if(yych <= 'T') goto yy65;
+ if(yych <= 'V') goto yy53;
+ goto yy62;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy64;
+ if(yych <= 'c') goto yy53;
+ goto yy61;
+ } else {
+ if(yych <= 'f'){
+ if(yych <= 'e') goto yy53;
+ goto yy63;
+ } else {
+ if(yych == 'h') goto yy60;
+ goto yy53;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'm') goto yy59;
+ if(yych <= 'r') goto yy53;
+ if(yych >= 't') goto yy65;
+ goto yy58;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy53;
+ goto yy62;
+ } else {
+ if(yych == 'y') goto yy64;
+ goto yy53;
+ }
+ }
+ }
}
yy58:
YYDEBUG(58, *YYCURSOR);
@@ -2791,34 +2898,58 @@ yy134:
yy135:
YYDEBUG(135, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == ')') goto yy132;
- goto yy3;
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ if(yych >= '{') goto yy3;
+ goto yy136;
+ }
yy136:
YYDEBUG(136, *YYCURSOR);
- yyaccept = 1;
+ yych = *++YYCURSOR;
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ if(yych >= '{') goto yy3;
+ goto yy137;
+ }
+yy137:
+ YYDEBUG(137, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == ')') goto yy132;
+ goto yy3;
+yy138:
+ YYDEBUG(138, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '@'){
if(yych <= ')'){
if(yych <= '(') goto yy3;
goto yy132;
} else {
- if(yych == '/') goto yy138;
+ if(yych == '/') goto yy140;
goto yy3;
}
} else {
if(yych <= '_'){
if(yych <= 'Z') goto yy134;
if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '`') goto yy3;
if(yych >= '{') goto yy3;
- goto yy137;
+ goto yy139;
}
}
-yy137:
- YYDEBUG(137, *YYCURSOR);
- yyaccept = 1;
+yy139:
+ YYDEBUG(139, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '@'){
if(yych <= ')'){
@@ -2826,88 +2957,134 @@ yy137:
goto yy132;
} else {
if(yych != '/') goto yy3;
- goto yy138;
+ goto yy140;
}
} else {
if(yych <= '_'){
if(yych <= 'Z') goto yy135;
if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy138:
- YYDEBUG(138, *YYCURSOR);
+yy140:
+ YYDEBUG(140, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yych <= '@') goto yy53;
if(yych >= '[') goto yy53;
- goto yy139;
-yy139:
- YYDEBUG(139, *YYCURSOR);
+ goto yy141;
+yy141:
+ YYDEBUG(141, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yybm[0+yych] & 32) {
- goto yy140;
+ goto yy142;
}
goto yy53;
-yy140:
- YYDEBUG(140, *YYCURSOR);
- yyaccept = 1;
+yy142:
+ YYDEBUG(142, *YYCURSOR);
+ yyaccept = 0;
YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy141;
-yy141:
- YYDEBUG(141, *YYCURSOR);
+ goto yy143;
+yy143:
+ YYDEBUG(143, *YYCURSOR);
if(yybm[0+yych] & 32) {
- goto yy140;
+ goto yy142;
}
- if(yych == '/') goto yy138;
- if(yych == '_') goto yy138;
+ if(yych == '/') goto yy140;
+ if(yych == '_') goto yy140;
goto yy3;
-yy142:
- YYDEBUG(142, *YYCURSOR);
- yyaccept = 1;
+yy144:
+ YYDEBUG(144, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy3;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych >= '{') goto yy3;
+ goto yy145;
+ }
+ }
+yy145:
+ YYDEBUG(145, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy3;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych >= '{') goto yy3;
+ goto yy146;
+ }
+ }
+yy146:
+ YYDEBUG(146, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '_'){
if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '`') goto yy3;
if(yych >= '{') goto yy3;
- goto yy143;
+ goto yy147;
}
}
-yy143:
- YYDEBUG(143, *YYCURSOR);
+yy147:
+ YYDEBUG(147, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy144;
-yy144:
- YYDEBUG(144, *YYCURSOR);
+ goto yy148;
+yy148:
+ YYDEBUG(148, *YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy138;
+ if(yych == '/') goto yy140;
goto yy53;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
-yy145:
- YYDEBUG(145, *YYCURSOR);
+yy149:
+ YYDEBUG(149, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@'){
if(yych == ')') goto yy132;
@@ -2918,160 +3095,356 @@ yy145:
if(yych <= 'z') goto yy133;
goto yy3;
}
-yy146:
- YYDEBUG(146, *YYCURSOR);
- yyaccept = 1;
+yy150:
+ YYDEBUG(150, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy148;
- case ':': goto yy149;
- default: goto yy3;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= '9'){
+ if(yych <= '/') goto yy3;
+ goto yy152;
+ } else {
+ if(yych <= ':') goto yy153;
+ if(yych <= 'C') goto yy3;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy3;
+ if(yych <= 'T') goto yy57;
+ goto yy3;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy3;
+ if(yych <= 'Y') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy3;
+ } else {
+ if(yych == 'g') goto yy3;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy3;
+ }
+ }
+ }
}
-yy147:
- YYDEBUG(147, *YYCURSOR);
- yyaccept = 1;
+yy151:
+ YYDEBUG(151, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3': goto yy148;
- case '4':
- case '5': goto yy150;
- case '6':
- case '7':
- case '8':
- case '9': goto yy151;
- case ':': goto yy149;
- default: goto yy3;
+ if(yych <= 'T'){
+ if(yych <= ':'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= '3'){
+ if(yych <= '/') goto yy3;
+ goto yy152;
+ } else {
+ if(yych <= '5') goto yy154;
+ if(yych <= '9') goto yy155;
+ goto yy153;
+ }
+ }
+ } else {
+ if(yych <= 'G'){
+ if(yych <= 'D'){
+ if(yych <= 'C') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'F') goto yy57;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'L'){
+ if(yych <= 'H') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'M') goto yy57;
+ if(yych <= 'R') goto yy3;
+ goto yy57;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= 'Y'){
+ if(yych == 'W') goto yy57;
+ if(yych <= 'X') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'c') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'f') goto yy57;
+ goto yy3;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'l'){
+ if(yych <= 'h') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'm') goto yy57;
+ if(yych <= 'r') goto yy3;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy3;
+ }
+ }
+ }
}
-yy148:
- YYDEBUG(148, *YYCURSOR);
- yyaccept = 1;
+yy152:
+ YYDEBUG(152, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5': goto yy150;
- case '6':
- case '7':
- case '8':
- case '9': goto yy151;
- case ':': goto yy149;
- default: goto yy3;
+ if(yych <= 'T'){
+ if(yych <= 'C'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= '5'){
+ if(yych <= '/') goto yy3;
+ goto yy154;
+ } else {
+ if(yych <= '9') goto yy155;
+ if(yych >= ';') goto yy3;
+ goto yy153;
+ }
+ }
+ } else {
+ if(yych <= 'G'){
+ if(yych == 'E') goto yy3;
+ if(yych <= 'F') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'L'){
+ if(yych <= 'H') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'M') goto yy57;
+ if(yych <= 'R') goto yy3;
+ goto yy57;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= 'Y'){
+ if(yych == 'W') goto yy57;
+ if(yych <= 'X') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'c') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'f') goto yy57;
+ goto yy3;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'l'){
+ if(yych <= 'h') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'm') goto yy57;
+ if(yych <= 'r') goto yy3;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy3;
+ }
+ }
+ }
}
-yy149:
- YYDEBUG(149, *YYCURSOR);
+yy153:
+ YYDEBUG(153, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy3;
- if(yych <= '5') goto yy152;
+ if(yych <= '5') goto yy156;
if(yych <= '9') goto yy132;
goto yy3;
-yy150:
- YYDEBUG(150, *YYCURSOR);
- yyaccept = 1;
+yy154:
+ YYDEBUG(154, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy151;
- default: goto yy3;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy155;
+ if(yych <= 'C') goto yy3;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy3;
+ if(yych <= 'T') goto yy57;
+ goto yy3;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy3;
+ if(yych <= 'Y') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy3;
+ } else {
+ if(yych == 'g') goto yy3;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy3;
+ }
+ }
+ }
}
-yy151:
- YYDEBUG(151, *YYCURSOR);
- yyaccept = 1;
+yy155:
+ YYDEBUG(155, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yybm[0+yych] & 8) {
goto yy51;
}
- if(yych <= 'X'){
- if(yych <= 'G'){
- if(yych <= 'C'){
- if(yych == ' ') goto yy57;
- goto yy3;
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy3;
+ goto yy57;
} else {
- if(yych == 'E') goto yy3;
- if(yych <= 'F') goto yy57;
- goto yy3;
+ if(yych == 'D') goto yy57;
+ if(yych <= 'E') goto yy3;
+ goto yy57;
}
} else {
- if(yych <= 'R'){
- if(yych <= 'H') goto yy57;
- if(yych == 'M') goto yy57;
- goto yy3;
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy57;
+ if(yych <= 'L') goto yy3;
+ goto yy57;
} else {
+ if(yych <= 'R') goto yy3;
if(yych <= 'T') goto yy57;
- if(yych == 'W') goto yy57;
- goto yy3;
+ if(yych <= 'V') goto yy3;
+ goto yy57;
}
}
} else {
- if(yych <= 'l'){
- if(yych <= 'e'){
- if(yych <= 'Y') goto yy57;
- if(yych == 'd') goto yy57;
- goto yy3;
+ if(yych <= 'h'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy57;
+ if(yych <= 'c') goto yy3;
+ goto yy57;
} else {
- if(yych == 'g') goto yy3;
- if(yych <= 'h') goto yy57;
- goto yy3;
+ if(yych == 'f') goto yy57;
+ if(yych <= 'g') goto yy3;
+ goto yy57;
}
} else {
- if(yych <= 'v'){
- if(yych <= 'm') goto yy57;
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
if(yych <= 'r') goto yy3;
- if(yych <= 't') goto yy57;
- goto yy3;
+ goto yy57;
} else {
- if(yych == 'x') goto yy3;
- if(yych <= 'y') goto yy57;
- goto yy3;
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy3;
+ }
}
}
}
-yy152:
- YYDEBUG(152, *YYCURSOR);
+yy156:
+ YYDEBUG(156, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy3;
if(yych <= '9') goto yy132;
goto yy3;
-yy153:
- YYDEBUG(153, *YYCURSOR);
+yy157:
+ YYDEBUG(157, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych <= ')'){
@@ -3080,7 +3453,7 @@ yy153:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy154;
+ goto yy158;
}
} else {
if(yych <= 'd'){
@@ -3088,13 +3461,13 @@ yy153:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'e') goto yy154;
+ if(yych <= 'e') goto yy158;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy154:
- YYDEBUG(154, *YYCURSOR);
+yy158:
+ YYDEBUG(158, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'V'){
if(yych <= ')'){
@@ -3103,7 +3476,7 @@ yy154:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'U') goto yy135;
- goto yy155;
+ goto yy159;
}
} else {
if(yych <= 'u'){
@@ -3111,181 +3484,261 @@ yy154:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'v') goto yy155;
+ if(yych <= 'v') goto yy159;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy155:
- YYDEBUG(155, *YYCURSOR);
- yyaccept = 1;
+yy159:
+ YYDEBUG(159, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'I'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'H') goto yy136;
+ goto yy160;
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'i') goto yy160;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy160:
+ YYDEBUG(160, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'O'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'N') goto yy137;
+ goto yy161;
+ }
+ } else {
+ if(yych <= 'n'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'o') goto yy161;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy161:
+ YYDEBUG(161, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'H'){
+ if(yych <= 'T'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'I') goto yy156;
- if(yych != 'i') goto yy3;
- goto yy156;
+ if(yych <= 'U') goto yy162;
+ if(yych != 'u') goto yy3;
+ goto yy162;
}
-yy156:
- YYDEBUG(156, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'O') goto yy157;
- if(yych != 'o') goto yy53;
- goto yy157;
-yy157:
- YYDEBUG(157, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'U') goto yy158;
- if(yych != 'u') goto yy53;
- goto yy158;
-yy158:
- YYDEBUG(158, *YYCURSOR);
+yy162:
+ YYDEBUG(162, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy159;
+ if(yych == 'S') goto yy163;
if(yych != 's') goto yy53;
- goto yy159;
-yy159:
- YYDEBUG(159, *YYCURSOR);
+ goto yy163;
+yy163:
+ YYDEBUG(163, *YYCURSOR);
++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
yych = *YYCURSOR;
- goto yy160;
-yy160:
- YYDEBUG(160, *YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': goto yy159;
- case 'D': case 'd': goto yy164;
- case 'F': case 'f': goto yy166;
- case 'H': case 'h': goto yy163;
- case 'M': case 'm': goto yy162;
- case 'S': case 's': goto yy161;
- case 'T': case 't': goto yy168;
- case 'W': case 'w': goto yy165;
- case 'Y': case 'y': goto yy167;
- default: goto yy53;
+ goto yy164;
+yy164:
+ YYDEBUG(164, *YYCURSOR);
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy163;
+ if(yych <= 0x1F) goto yy53;
+ goto yy163;
+ } else {
+ if(yych == 'D') goto yy168;
+ if(yych <= 'E') goto yy53;
+ goto yy170;
+ }
+ } else {
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy167;
+ if(yych <= 'L') goto yy53;
+ goto yy166;
+ } else {
+ if(yych <= 'S'){
+ if(yych <= 'R') goto yy53;
+ goto yy165;
+ } else {
+ if(yych <= 'T') goto yy172;
+ if(yych <= 'V') goto yy53;
+ goto yy169;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy171;
+ if(yych <= 'c') goto yy53;
+ goto yy168;
+ } else {
+ if(yych <= 'f'){
+ if(yych <= 'e') goto yy53;
+ goto yy170;
+ } else {
+ if(yych == 'h') goto yy167;
+ goto yy53;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'm') goto yy166;
+ if(yych <= 'r') goto yy53;
+ if(yych >= 't') goto yy172;
+ goto yy165;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy53;
+ goto yy169;
+ } else {
+ if(yych == 'y') goto yy171;
+ goto yy53;
+ }
+ }
+ }
}
-yy161:
- YYDEBUG(161, *YYCURSOR);
+yy165:
+ YYDEBUG(165, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= 'D'){
- if(yych == 'A') goto yy222;
+ if(yych == 'A') goto yy226;
goto yy53;
} else {
- if(yych <= 'E') goto yy223;
+ if(yych <= 'E') goto yy227;
if(yych <= 'T') goto yy53;
- goto yy221;
+ goto yy225;
}
} else {
if(yych <= 'd'){
- if(yych == 'a') goto yy222;
+ if(yych == 'a') goto yy226;
goto yy53;
} else {
- if(yych <= 'e') goto yy223;
- if(yych == 'u') goto yy221;
+ if(yych <= 'e') goto yy227;
+ if(yych == 'u') goto yy225;
goto yy53;
}
}
-yy162:
- YYDEBUG(162, *YYCURSOR);
+yy166:
+ YYDEBUG(166, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'O'){
- if(yych == 'I') goto yy213;
+ if(yych == 'I') goto yy217;
if(yych <= 'N') goto yy53;
- goto yy212;
+ goto yy216;
} else {
if(yych <= 'i'){
if(yych <= 'h') goto yy53;
- goto yy213;
+ goto yy217;
} else {
- if(yych == 'o') goto yy212;
+ if(yych == 'o') goto yy216;
goto yy53;
}
}
-yy163:
- YYDEBUG(163, *YYCURSOR);
+yy167:
+ YYDEBUG(167, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy210;
- if(yych == 'o') goto yy210;
+ if(yych == 'O') goto yy214;
+ if(yych == 'o') goto yy214;
goto yy53;
-yy164:
- YYDEBUG(164, *YYCURSOR);
+yy168:
+ YYDEBUG(168, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy209;
- if(yych == 'a') goto yy209;
+ if(yych == 'A') goto yy213;
+ if(yych == 'a') goto yy213;
goto yy53;
-yy165:
- YYDEBUG(165, *YYCURSOR);
+yy169:
+ YYDEBUG(169, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy201;
- if(yych == 'e') goto yy201;
+ if(yych == 'E') goto yy205;
+ if(yych == 'e') goto yy205;
goto yy53;
-yy166:
- YYDEBUG(166, *YYCURSOR);
+yy170:
+ YYDEBUG(170, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
- if(yych == 'O') goto yy186;
+ if(yych == 'O') goto yy190;
if(yych <= 'Q') goto yy53;
- goto yy185;
+ goto yy189;
} else {
if(yych <= 'o'){
if(yych <= 'n') goto yy53;
- goto yy186;
+ goto yy190;
} else {
- if(yych == 'r') goto yy185;
+ if(yych == 'r') goto yy189;
goto yy53;
}
}
-yy167:
- YYDEBUG(167, *YYCURSOR);
+yy171:
+ YYDEBUG(171, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy182;
- if(yych == 'e') goto yy182;
+ if(yych == 'E') goto yy186;
+ if(yych == 'e') goto yy186;
goto yy53;
-yy168:
- YYDEBUG(168, *YYCURSOR);
+yy172:
+ YYDEBUG(172, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'H') goto yy169;
+ if(yych == 'H') goto yy173;
if(yych <= 'T') goto yy53;
- goto yy170;
+ goto yy174;
} else {
if(yych <= 'h'){
if(yych <= 'g') goto yy53;
- goto yy169;
+ goto yy173;
} else {
- if(yych == 'u') goto yy170;
+ if(yych == 'u') goto yy174;
goto yy53;
}
}
-yy169:
- YYDEBUG(169, *YYCURSOR);
+yy173:
+ YYDEBUG(173, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'U') goto yy177;
- if(yych == 'u') goto yy177;
+ if(yych == 'U') goto yy181;
+ if(yych == 'u') goto yy181;
goto yy53;
-yy170:
- YYDEBUG(170, *YYCURSOR);
+yy174:
+ YYDEBUG(174, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy171;
+ if(yych == 'E') goto yy175;
if(yych != 'e') goto yy53;
- goto yy171;
-yy171:
- YYDEBUG(171, *YYCURSOR);
+ goto yy175;
+yy175:
+ YYDEBUG(175, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'S') goto yy173;
- if(yych == 's') goto yy173;
- goto yy172;
-yy172:
- YYDEBUG(172, *YYCURSOR);
+ if(yych == 'S') goto yy177;
+ if(yych == 's') goto yy177;
+ goto yy176;
+yy176:
+ YYDEBUG(176, *YYCURSOR);
{
timelib_sll i;
- int behavior;
+ int behavior = 0;
DEBUG_OUTPUT("relativetext");
TIMELIB_INIT;
TIMELIB_HAVE_RELATIVE();
@@ -3298,1268 +3751,1306 @@ yy172:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-yy173:
- YYDEBUG(173, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy174;
- if(yych != 'd') goto yy53;
- goto yy174;
-yy174:
- YYDEBUG(174, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy175;
- if(yych != 'a') goto yy53;
- goto yy175;
-yy175:
- YYDEBUG(175, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych != 'y') goto yy53;
- goto yy176;
-yy176:
- YYDEBUG(176, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy172;
yy177:
YYDEBUG(177, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'R') goto yy178;
- if(yych != 'r') goto yy172;
+ yych = *++YYCURSOR;
+ if(yych == 'D') goto yy178;
+ if(yych != 'd') goto yy53;
goto yy178;
yy178:
YYDEBUG(178, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy179;
- if(yych != 's') goto yy53;
+ if(yych == 'A') goto yy179;
+ if(yych != 'a') goto yy53;
goto yy179;
yy179:
YYDEBUG(179, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy180;
- if(yych != 'd') goto yy53;
+ if(yych == 'Y') goto yy180;
+ if(yych != 'y') goto yy53;
goto yy180;
yy180:
YYDEBUG(180, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy181;
- if(yych != 'a') goto yy53;
- goto yy181;
+ goto yy176;
yy181:
YYDEBUG(181, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy176;
- goto yy53;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych == 'R') goto yy182;
+ if(yych != 'r') goto yy176;
+ goto yy182;
yy182:
YYDEBUG(182, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy183;
- if(yych != 'a') goto yy53;
+ if(yych == 'S') goto yy183;
+ if(yych != 's') goto yy53;
goto yy183;
yy183:
YYDEBUG(183, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy184;
- if(yych != 'r') goto yy53;
+ if(yych == 'D') goto yy184;
+ if(yych != 'd') goto yy53;
goto yy184;
yy184:
YYDEBUG(184, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy176;
- if(yych == 's') goto yy176;
- goto yy172;
+ if(yych == 'A') goto yy185;
+ if(yych != 'a') goto yy53;
+ goto yy185;
yy185:
YYDEBUG(185, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy198;
- if(yych == 'i') goto yy198;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy180;
goto yy53;
yy186:
YYDEBUG(186, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy187;
- if(yych != 'r') goto yy53;
+ if(yych == 'A') goto yy187;
+ if(yych != 'a') goto yy53;
goto yy187;
yy187:
YYDEBUG(187, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy188;
- if(yych != 't') goto yy53;
+ if(yych == 'R') goto yy188;
+ if(yych != 'r') goto yy53;
goto yy188;
yy188:
YYDEBUG(188, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'N'){
- if(yych == 'H') goto yy190;
- if(yych <= 'M') goto yy53;
- goto yy189;
- } else {
- if(yych <= 'h'){
- if(yych <= 'g') goto yy53;
- goto yy190;
- } else {
- if(yych != 'n') goto yy53;
- goto yy189;
- }
- }
+ if(yych == 'S') goto yy180;
+ if(yych == 's') goto yy180;
+ goto yy176;
yy189:
YYDEBUG(189, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy195;
- if(yych == 'i') goto yy195;
+ if(yych == 'I') goto yy202;
+ if(yych == 'i') goto yy202;
goto yy53;
yy190:
YYDEBUG(190, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy191;
- if(yych != 'n') goto yy53;
+ if(yych == 'R') goto yy191;
+ if(yych != 'r') goto yy53;
goto yy191;
yy191:
YYDEBUG(191, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy192;
- if(yych != 'i') goto yy53;
+ if(yych == 'T') goto yy192;
+ if(yych != 't') goto yy53;
goto yy192;
yy192:
YYDEBUG(192, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy193;
- if(yych != 'g') goto yy53;
- goto yy193;
+ if(yych <= 'N'){
+ if(yych == 'H') goto yy194;
+ if(yych <= 'M') goto yy53;
+ goto yy193;
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'g') goto yy53;
+ goto yy194;
+ } else {
+ if(yych != 'n') goto yy53;
+ goto yy193;
+ }
+ }
yy193:
YYDEBUG(193, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy194;
- if(yych != 'h') goto yy53;
- goto yy194;
+ if(yych == 'I') goto yy199;
+ if(yych == 'i') goto yy199;
+ goto yy53;
yy194:
YYDEBUG(194, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy184;
- if(yych == 't') goto yy184;
- goto yy53;
+ if(yych == 'N') goto yy195;
+ if(yych != 'n') goto yy53;
+ goto yy195;
yy195:
YYDEBUG(195, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy196;
- if(yych != 'g') goto yy53;
+ if(yych == 'I') goto yy196;
+ if(yych != 'i') goto yy53;
goto yy196;
yy196:
YYDEBUG(196, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy197;
- if(yych != 'h') goto yy53;
+ if(yych == 'G') goto yy197;
+ if(yych != 'g') goto yy53;
goto yy197;
yy197:
YYDEBUG(197, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy184;
- if(yych == 't') goto yy184;
- goto yy53;
+ if(yych == 'H') goto yy198;
+ if(yych != 'h') goto yy53;
+ goto yy198;
yy198:
YYDEBUG(198, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'D') goto yy199;
- if(yych != 'd') goto yy172;
- goto yy199;
+ yych = *++YYCURSOR;
+ if(yych == 'T') goto yy188;
+ if(yych == 't') goto yy188;
+ goto yy53;
yy199:
YYDEBUG(199, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy200;
- if(yych != 'a') goto yy53;
+ if(yych == 'G') goto yy200;
+ if(yych != 'g') goto yy53;
goto yy200;
yy200:
YYDEBUG(200, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy176;
- goto yy53;
+ if(yych == 'H') goto yy201;
+ if(yych != 'h') goto yy53;
+ goto yy201;
yy201:
YYDEBUG(201, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'E'){
- if(yych <= 'C') goto yy53;
- if(yych <= 'D') goto yy203;
- goto yy202;
- } else {
- if(yych <= 'c') goto yy53;
- if(yych <= 'd') goto yy203;
- if(yych >= 'f') goto yy53;
- goto yy202;
- }
+ if(yych == 'T') goto yy188;
+ if(yych == 't') goto yy188;
+ goto yy53;
yy202:
YYDEBUG(202, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'K') goto yy184;
- if(yych == 'k') goto yy184;
- goto yy53;
-yy203:
- YYDEBUG(203, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'N') goto yy204;
- if(yych != 'n') goto yy172;
+ if(yych == 'D') goto yy203;
+ if(yych != 'd') goto yy176;
+ goto yy203;
+yy203:
+ YYDEBUG(203, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'A') goto yy204;
+ if(yych != 'a') goto yy53;
goto yy204;
yy204:
YYDEBUG(204, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy205;
- if(yych != 'e') goto yy53;
- goto yy205;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy180;
+ goto yy53;
yy205:
YYDEBUG(205, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy206;
- if(yych != 's') goto yy53;
- goto yy206;
+ if(yych <= 'E'){
+ if(yych <= 'C') goto yy53;
+ if(yych <= 'D') goto yy207;
+ goto yy206;
+ } else {
+ if(yych <= 'c') goto yy53;
+ if(yych <= 'd') goto yy207;
+ if(yych >= 'f') goto yy53;
+ goto yy206;
+ }
yy206:
YYDEBUG(206, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy207;
- if(yych != 'd') goto yy53;
- goto yy207;
+ if(yych == 'K') goto yy188;
+ if(yych == 'k') goto yy188;
+ goto yy53;
yy207:
YYDEBUG(207, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy208;
- if(yych != 'a') goto yy53;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych == 'N') goto yy208;
+ if(yych != 'n') goto yy176;
goto yy208;
yy208:
YYDEBUG(208, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy176;
- goto yy53;
+ if(yych == 'E') goto yy209;
+ if(yych != 'e') goto yy53;
+ goto yy209;
yy209:
YYDEBUG(209, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy184;
- if(yych == 'y') goto yy184;
- goto yy53;
+ if(yych == 'S') goto yy210;
+ if(yych != 's') goto yy53;
+ goto yy210;
yy210:
YYDEBUG(210, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'U') goto yy211;
- if(yych != 'u') goto yy53;
+ if(yych == 'D') goto yy211;
+ if(yych != 'd') goto yy53;
goto yy211;
yy211:
YYDEBUG(211, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy184;
- if(yych == 'r') goto yy184;
- goto yy53;
+ if(yych == 'A') goto yy212;
+ if(yych != 'a') goto yy53;
+ goto yy212;
yy212:
YYDEBUG(212, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy217;
- if(yych == 'n') goto yy217;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy180;
goto yy53;
yy213:
YYDEBUG(213, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy214;
- if(yych != 'n') goto yy53;
- goto yy214;
+ if(yych == 'Y') goto yy188;
+ if(yych == 'y') goto yy188;
+ goto yy53;
yy214:
YYDEBUG(214, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'U'){
- if(yych == 'S') goto yy176;
- if(yych <= 'T') goto yy172;
- goto yy215;
- } else {
- if(yych <= 's'){
- if(yych <= 'r') goto yy172;
- goto yy176;
- } else {
- if(yych != 'u') goto yy172;
- goto yy215;
- }
- }
+ yych = *++YYCURSOR;
+ if(yych == 'U') goto yy215;
+ if(yych != 'u') goto yy53;
+ goto yy215;
yy215:
YYDEBUG(215, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy216;
- if(yych != 't') goto yy53;
- goto yy216;
+ if(yych == 'R') goto yy188;
+ if(yych == 'r') goto yy188;
+ goto yy53;
yy216:
YYDEBUG(216, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy184;
- if(yych == 'e') goto yy184;
+ if(yych == 'N') goto yy221;
+ if(yych == 'n') goto yy221;
goto yy53;
yy217:
YYDEBUG(217, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'N') goto yy218;
+ if(yych != 'n') goto yy53;
+ goto yy218;
+yy218:
+ YYDEBUG(218, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'T'){
- if(yych == 'D') goto yy218;
- if(yych <= 'S') goto yy172;
+ if(yych <= 'U'){
+ if(yych == 'S') goto yy180;
+ if(yych <= 'T') goto yy176;
goto yy219;
} else {
- if(yych <= 'd'){
- if(yych <= 'c') goto yy172;
- goto yy218;
+ if(yych <= 's'){
+ if(yych <= 'r') goto yy176;
+ goto yy180;
} else {
- if(yych == 't') goto yy219;
- goto yy172;
+ if(yych != 'u') goto yy176;
+ goto yy219;
}
}
-yy218:
- YYDEBUG(218, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy220;
- if(yych == 'a') goto yy220;
- goto yy53;
yy219:
YYDEBUG(219, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy184;
- if(yych == 'h') goto yy184;
- goto yy53;
+ if(yych == 'T') goto yy220;
+ if(yych != 't') goto yy53;
+ goto yy220;
yy220:
YYDEBUG(220, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy176;
+ if(yych == 'E') goto yy188;
+ if(yych == 'e') goto yy188;
goto yy53;
yy221:
YYDEBUG(221, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'N') goto yy232;
- if(yych == 'n') goto yy232;
- goto yy53;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych == 'D') goto yy222;
+ if(yych <= 'S') goto yy176;
+ goto yy223;
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'c') goto yy176;
+ goto yy222;
+ } else {
+ if(yych == 't') goto yy223;
+ goto yy176;
+ }
+ }
yy222:
YYDEBUG(222, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy227;
- if(yych == 't') goto yy227;
+ if(yych == 'A') goto yy224;
+ if(yych == 'a') goto yy224;
goto yy53;
yy223:
YYDEBUG(223, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy224;
- if(yych != 'c') goto yy53;
- goto yy224;
+ if(yych == 'H') goto yy188;
+ if(yych == 'h') goto yy188;
+ goto yy53;
yy224:
YYDEBUG(224, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'S'){
- if(yych == 'O') goto yy225;
- if(yych <= 'R') goto yy172;
- goto yy176;
- } else {
- if(yych <= 'o'){
- if(yych <= 'n') goto yy172;
- goto yy225;
- } else {
- if(yych == 's') goto yy176;
- goto yy172;
- }
- }
+ yych = *++YYCURSOR;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy180;
+ goto yy53;
yy225:
YYDEBUG(225, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy226;
- if(yych != 'n') goto yy53;
- goto yy226;
+ if(yych == 'N') goto yy236;
+ if(yych == 'n') goto yy236;
+ goto yy53;
yy226:
YYDEBUG(226, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy184;
- if(yych == 'd') goto yy184;
+ if(yych == 'T') goto yy231;
+ if(yych == 't') goto yy231;
goto yy53;
yy227:
YYDEBUG(227, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'U') goto yy228;
- if(yych != 'u') goto yy172;
+ yych = *++YYCURSOR;
+ if(yych == 'C') goto yy228;
+ if(yych != 'c') goto yy53;
goto yy228;
yy228:
YYDEBUG(228, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy229;
- if(yych != 'r') goto yy53;
- goto yy229;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'S'){
+ if(yych == 'O') goto yy229;
+ if(yych <= 'R') goto yy176;
+ goto yy180;
+ } else {
+ if(yych <= 'o'){
+ if(yych <= 'n') goto yy176;
+ goto yy229;
+ } else {
+ if(yych == 's') goto yy180;
+ goto yy176;
+ }
+ }
yy229:
YYDEBUG(229, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy230;
- if(yych != 'd') goto yy53;
+ if(yych == 'N') goto yy230;
+ if(yych != 'n') goto yy53;
goto yy230;
yy230:
YYDEBUG(230, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy231;
- if(yych != 'a') goto yy53;
- goto yy231;
+ if(yych == 'D') goto yy188;
+ if(yych == 'd') goto yy188;
+ goto yy53;
yy231:
YYDEBUG(231, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy176;
- goto yy53;
-yy232:
- YYDEBUG(232, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'D') goto yy233;
- if(yych != 'd') goto yy172;
+ if(yych == 'U') goto yy232;
+ if(yych != 'u') goto yy176;
+ goto yy232;
+yy232:
+ YYDEBUG(232, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'R') goto yy233;
+ if(yych != 'r') goto yy53;
goto yy233;
yy233:
YYDEBUG(233, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy234;
- if(yych != 'a') goto yy53;
+ if(yych == 'D') goto yy234;
+ if(yych != 'd') goto yy53;
goto yy234;
yy234:
YYDEBUG(234, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy176;
- goto yy53;
+ if(yych == 'A') goto yy235;
+ if(yych != 'a') goto yy53;
+ goto yy235;
yy235:
YYDEBUG(235, *YYCURSOR);
- yyaccept = 1;
+ yych = *++YYCURSOR;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy180;
+ goto yy53;
+yy236:
+ YYDEBUG(236, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych == 'D') goto yy237;
+ if(yych != 'd') goto yy176;
+ goto yy237;
+yy237:
+ YYDEBUG(237, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'A') goto yy238;
+ if(yych != 'a') goto yy53;
+ goto yy238;
+yy238:
+ YYDEBUG(238, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy180;
+ goto yy53;
+yy239:
+ YYDEBUG(239, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy154;
+ goto yy158;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy236;
- if(yych <= 'z') goto yy137;
+ if(yych == 'e') goto yy240;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy236:
- YYDEBUG(236, *YYCURSOR);
- yyaccept = 1;
+yy240:
+ YYDEBUG(240, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'V'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'U') goto yy135;
- goto yy155;
+ goto yy159;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'v') goto yy237;
- if(yych <= 'z') goto yy142;
+ if(yych == 'v') goto yy241;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy237:
- YYDEBUG(237, *YYCURSOR);
- yyaccept = 1;
+yy241:
+ YYDEBUG(241, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'I'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'H') goto yy3;
- goto yy156;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'H') goto yy136;
+ goto yy160;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'i') goto yy238;
- if(yych <= 'z') goto yy143;
+ if(yych == 'i') goto yy242;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy238:
- YYDEBUG(238, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'O') goto yy157;
- if(yych != 'o') goto yy144;
- goto yy239;
-yy239:
- YYDEBUG(239, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'U') goto yy158;
- if(yych != 'u') goto yy144;
- goto yy240;
-yy240:
- YYDEBUG(240, *YYCURSOR);
+yy242:
+ YYDEBUG(242, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'O'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'N') goto yy137;
+ goto yy161;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'o') goto yy243;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy243:
+ YYDEBUG(243, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'T') goto yy3;
+ goto yy162;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'u') goto yy244;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy244:
+ YYDEBUG(244, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
if(yych <= '/'){
if(yych <= '.') goto yy53;
- goto yy138;
+ goto yy140;
} else {
- if(yych == 'S') goto yy159;
+ if(yych == 'S') goto yy163;
goto yy53;
}
} else {
if(yych <= 'r'){
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- goto yy143;
+ goto yy147;
} else {
- if(yych <= 's') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych <= 's') goto yy245;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
}
-yy241:
- YYDEBUG(241, *YYCURSOR);
+yy245:
+ YYDEBUG(245, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'h'){
if(yych <= '`'){
if(yych <= '/'){
- if(yych <= '.') goto yy160;
- goto yy138;
+ if(yych <= '.') goto yy164;
+ goto yy140;
} else {
- if(yych == '_') goto yy138;
- goto yy160;
+ if(yych == '_') goto yy140;
+ goto yy164;
}
} else {
if(yych <= 'e'){
- if(yych == 'd') goto yy245;
- goto yy143;
+ if(yych == 'd') goto yy249;
+ goto yy147;
} else {
- if(yych <= 'f') goto yy247;
- if(yych <= 'g') goto yy143;
- goto yy244;
+ if(yych <= 'f') goto yy251;
+ if(yych <= 'g') goto yy147;
+ goto yy248;
}
}
} else {
if(yych <= 't'){
if(yych <= 'm'){
- if(yych <= 'l') goto yy143;
- goto yy243;
+ if(yych <= 'l') goto yy147;
+ goto yy247;
} else {
- if(yych <= 'r') goto yy143;
- if(yych >= 't') goto yy249;
- goto yy242;
+ if(yych <= 'r') goto yy147;
+ if(yych >= 't') goto yy253;
+ goto yy246;
}
} else {
if(yych <= 'x'){
- if(yych == 'w') goto yy246;
- goto yy143;
+ if(yych == 'w') goto yy250;
+ goto yy147;
} else {
- if(yych <= 'y') goto yy248;
- if(yych <= 'z') goto yy143;
- goto yy160;
+ if(yych <= 'y') goto yy252;
+ if(yych <= 'z') goto yy147;
+ goto yy164;
}
}
}
-yy242:
- YYDEBUG(242, *YYCURSOR);
+yy246:
+ YYDEBUG(246, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= 'D'){
- if(yych == 'A') goto yy222;
- goto yy144;
+ if(yych == 'A') goto yy226;
+ goto yy148;
} else {
- if(yych <= 'E') goto yy223;
- if(yych <= 'T') goto yy144;
- goto yy221;
+ if(yych <= 'E') goto yy227;
+ if(yych <= 'T') goto yy148;
+ goto yy225;
}
} else {
if(yych <= 'd'){
- if(yych == 'a') goto yy301;
- goto yy144;
+ if(yych == 'a') goto yy305;
+ goto yy148;
} else {
- if(yych <= 'e') goto yy302;
- if(yych == 'u') goto yy303;
- goto yy144;
+ if(yych <= 'e') goto yy306;
+ if(yych == 'u') goto yy307;
+ goto yy148;
}
}
-yy243:
- YYDEBUG(243, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= 'O'){
- if(yych == 'I') goto yy213;
- if(yych <= 'N') goto yy144;
- goto yy212;
- } else {
- if(yych <= 'i'){
- if(yych <= 'h') goto yy144;
- goto yy292;
- } else {
- if(yych == 'o') goto yy293;
- goto yy144;
- }
- }
-yy244:
- YYDEBUG(244, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'O') goto yy210;
- if(yych == 'o') goto yy290;
- goto yy144;
-yy245:
- YYDEBUG(245, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy209;
- if(yych == 'a') goto yy289;
- goto yy144;
-yy246:
- YYDEBUG(246, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy201;
- if(yych == 'e') goto yy281;
- goto yy144;
yy247:
YYDEBUG(247, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'R'){
- if(yych == 'O') goto yy186;
- if(yych <= 'Q') goto yy144;
- goto yy185;
+ if(yych <= 'O'){
+ if(yych == 'I') goto yy217;
+ if(yych <= 'N') goto yy148;
+ goto yy216;
} else {
- if(yych <= 'o'){
- if(yych <= 'n') goto yy144;
- goto yy265;
+ if(yych <= 'i'){
+ if(yych <= 'h') goto yy148;
+ goto yy296;
} else {
- if(yych == 'r') goto yy266;
- goto yy144;
+ if(yych == 'o') goto yy297;
+ goto yy148;
}
}
yy248:
YYDEBUG(248, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy182;
- if(yych == 'e') goto yy262;
- goto yy144;
+ if(yych == 'O') goto yy214;
+ if(yych == 'o') goto yy294;
+ goto yy148;
yy249:
YYDEBUG(249, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'U'){
- if(yych == 'H') goto yy169;
- if(yych <= 'T') goto yy144;
- goto yy170;
- } else {
- if(yych <= 'h'){
- if(yych <= 'g') goto yy144;
- goto yy250;
- } else {
- if(yych == 'u') goto yy251;
- goto yy144;
- }
- }
+ if(yych == 'A') goto yy213;
+ if(yych == 'a') goto yy293;
+ goto yy148;
yy250:
YYDEBUG(250, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'U') goto yy177;
- if(yych == 'u') goto yy257;
- goto yy144;
+ if(yych == 'E') goto yy205;
+ if(yych == 'e') goto yy285;
+ goto yy148;
yy251:
YYDEBUG(251, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy171;
- if(yych != 'e') goto yy144;
- goto yy252;
-yy252:
- YYDEBUG(252, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
- } else {
- if(yych == 'S') goto yy173;
- goto yy172;
- }
+ if(yych <= 'R'){
+ if(yych == 'O') goto yy190;
+ if(yych <= 'Q') goto yy148;
+ goto yy189;
} else {
- if(yych <= 'r'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
+ if(yych <= 'o'){
+ if(yych <= 'n') goto yy148;
+ goto yy269;
} else {
- if(yych <= 's') goto yy253;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych == 'r') goto yy270;
+ goto yy148;
}
}
+yy252:
+ YYDEBUG(252, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'E') goto yy186;
+ if(yych == 'e') goto yy266;
+ goto yy148;
yy253:
YYDEBUG(253, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy174;
- if(yych != 'd') goto yy144;
- goto yy254;
+ if(yych <= 'U'){
+ if(yych == 'H') goto yy173;
+ if(yych <= 'T') goto yy148;
+ goto yy174;
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'g') goto yy148;
+ goto yy254;
+ } else {
+ if(yych == 'u') goto yy255;
+ goto yy148;
+ }
+ }
yy254:
YYDEBUG(254, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy175;
- if(yych != 'a') goto yy144;
- goto yy255;
+ if(yych == 'U') goto yy181;
+ if(yych == 'u') goto yy261;
+ goto yy148;
yy255:
YYDEBUG(255, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych != 'y') goto yy144;
+ if(yych == 'E') goto yy175;
+ if(yych != 'e') goto yy148;
goto yy256;
yy256:
YYDEBUG(256, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy138;
- goto yy172;
- } else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- if(yych <= 'z') goto yy143;
- goto yy172;
- }
-yy257:
- YYDEBUG(257, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '^'){
if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
+ if(yych <= '.') goto yy176;
+ goto yy140;
} else {
- if(yych == 'R') goto yy178;
- goto yy172;
+ if(yych == 'S') goto yy177;
+ goto yy176;
}
} else {
- if(yych <= 'q'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
+ if(yych <= 'r'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
} else {
- if(yych <= 'r') goto yy258;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych <= 's') goto yy257;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
+yy257:
+ YYDEBUG(257, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'D') goto yy178;
+ if(yych != 'd') goto yy148;
+ goto yy258;
yy258:
YYDEBUG(258, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy179;
- if(yych != 's') goto yy144;
+ if(yych == 'A') goto yy179;
+ if(yych != 'a') goto yy148;
goto yy259;
yy259:
YYDEBUG(259, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy180;
- if(yych != 'd') goto yy144;
+ if(yych == 'Y') goto yy180;
+ if(yych != 'y') goto yy148;
goto yy260;
yy260:
YYDEBUG(260, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy181;
- if(yych != 'a') goto yy144;
- goto yy261;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '^'){
+ if(yych == '/') goto yy140;
+ goto yy176;
+ } else {
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
+ }
yy261:
YYDEBUG(261, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy256;
- goto yy144;
-yy262:
- YYDEBUG(262, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy183;
- if(yych != 'a') goto yy144;
- goto yy263;
-yy263:
- YYDEBUG(263, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy184;
- if(yych != 'r') goto yy144;
- goto yy264;
-yy264:
- YYDEBUG(264, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
+ if(yych <= '.') goto yy176;
+ goto yy140;
} else {
- if(yych == 'S') goto yy176;
- goto yy172;
+ if(yych == 'R') goto yy182;
+ goto yy176;
}
} else {
- if(yych <= 'r'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
+ if(yych <= 'q'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
} else {
- if(yych <= 's') goto yy256;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych <= 'r') goto yy262;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
+yy262:
+ YYDEBUG(262, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'S') goto yy183;
+ if(yych != 's') goto yy148;
+ goto yy263;
+yy263:
+ YYDEBUG(263, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'D') goto yy184;
+ if(yych != 'd') goto yy148;
+ goto yy264;
+yy264:
+ YYDEBUG(264, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'A') goto yy185;
+ if(yych != 'a') goto yy148;
+ goto yy265;
yy265:
YYDEBUG(265, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy187;
- if(yych == 'r') goto yy270;
- goto yy144;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy260;
+ goto yy148;
yy266:
YYDEBUG(266, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy198;
- if(yych != 'i') goto yy144;
+ if(yych == 'A') goto yy187;
+ if(yych != 'a') goto yy148;
goto yy267;
yy267:
YYDEBUG(267, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'R') goto yy188;
+ if(yych != 'r') goto yy148;
+ goto yy268;
+yy268:
+ YYDEBUG(268, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
+ if(yych <= '.') goto yy176;
+ goto yy140;
} else {
- if(yych == 'D') goto yy199;
- goto yy172;
+ if(yych == 'S') goto yy180;
+ goto yy176;
}
} else {
- if(yych <= 'c'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
+ if(yych <= 'r'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
} else {
- if(yych <= 'd') goto yy268;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych <= 's') goto yy260;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
-yy268:
- YYDEBUG(268, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy200;
- if(yych != 'a') goto yy144;
- goto yy269;
yy269:
YYDEBUG(269, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy256;
- goto yy144;
+ if(yych == 'R') goto yy191;
+ if(yych == 'r') goto yy274;
+ goto yy148;
yy270:
YYDEBUG(270, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy188;
- if(yych != 't') goto yy144;
+ if(yych == 'I') goto yy202;
+ if(yych != 'i') goto yy148;
goto yy271;
yy271:
YYDEBUG(271, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= 'N'){
- if(yych == 'H') goto yy190;
- if(yych <= 'M') goto yy144;
- goto yy189;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '^'){
+ if(yych <= '/'){
+ if(yych <= '.') goto yy176;
+ goto yy140;
+ } else {
+ if(yych == 'D') goto yy203;
+ goto yy176;
+ }
} else {
- if(yych <= 'h'){
- if(yych <= 'g') goto yy144;
- goto yy273;
+ if(yych <= 'c'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
} else {
- if(yych != 'n') goto yy144;
- goto yy272;
+ if(yych <= 'd') goto yy272;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
yy272:
YYDEBUG(272, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy195;
- if(yych == 'i') goto yy278;
- goto yy144;
+ if(yych == 'A') goto yy204;
+ if(yych != 'a') goto yy148;
+ goto yy273;
yy273:
YYDEBUG(273, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy191;
- if(yych != 'n') goto yy144;
- goto yy274;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy260;
+ goto yy148;
yy274:
YYDEBUG(274, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy192;
- if(yych != 'i') goto yy144;
+ if(yych == 'T') goto yy192;
+ if(yych != 't') goto yy148;
goto yy275;
yy275:
YYDEBUG(275, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy193;
- if(yych != 'g') goto yy144;
- goto yy276;
+ if(yych <= 'N'){
+ if(yych == 'H') goto yy194;
+ if(yych <= 'M') goto yy148;
+ goto yy193;
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'g') goto yy148;
+ goto yy277;
+ } else {
+ if(yych != 'n') goto yy148;
+ goto yy276;
+ }
+ }
yy276:
YYDEBUG(276, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy194;
- if(yych != 'h') goto yy144;
- goto yy277;
+ if(yych == 'I') goto yy199;
+ if(yych == 'i') goto yy282;
+ goto yy148;
yy277:
YYDEBUG(277, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy184;
- if(yych == 't') goto yy264;
- goto yy144;
+ if(yych == 'N') goto yy195;
+ if(yych != 'n') goto yy148;
+ goto yy278;
yy278:
YYDEBUG(278, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy196;
- if(yych != 'g') goto yy144;
+ if(yych == 'I') goto yy196;
+ if(yych != 'i') goto yy148;
goto yy279;
yy279:
YYDEBUG(279, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy197;
- if(yych != 'h') goto yy144;
+ if(yych == 'G') goto yy197;
+ if(yych != 'g') goto yy148;
goto yy280;
yy280:
YYDEBUG(280, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy184;
- if(yych == 't') goto yy264;
- goto yy144;
+ if(yych == 'H') goto yy198;
+ if(yych != 'h') goto yy148;
+ goto yy281;
yy281:
YYDEBUG(281, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'E'){
- if(yych <= 'C') goto yy144;
- if(yych <= 'D') goto yy203;
- goto yy202;
- } else {
- if(yych <= 'c') goto yy144;
- if(yych <= 'd') goto yy283;
- if(yych >= 'f') goto yy144;
- goto yy282;
- }
+ if(yych == 'T') goto yy188;
+ if(yych == 't') goto yy268;
+ goto yy148;
yy282:
YYDEBUG(282, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'K') goto yy184;
- if(yych == 'k') goto yy264;
- goto yy144;
+ if(yych == 'G') goto yy200;
+ if(yych != 'g') goto yy148;
+ goto yy283;
yy283:
YYDEBUG(283, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
- } else {
- if(yych == 'N') goto yy204;
- goto yy172;
- }
- } else {
- if(yych <= 'm'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
- } else {
- if(yych <= 'n') goto yy284;
- if(yych <= 'z') goto yy143;
- goto yy172;
- }
- }
+ yych = *++YYCURSOR;
+ if(yych == 'H') goto yy201;
+ if(yych != 'h') goto yy148;
+ goto yy284;
yy284:
YYDEBUG(284, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy205;
- if(yych != 'e') goto yy144;
- goto yy285;
+ if(yych == 'T') goto yy188;
+ if(yych == 't') goto yy268;
+ goto yy148;
yy285:
YYDEBUG(285, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy206;
- if(yych != 's') goto yy144;
- goto yy286;
+ if(yych <= 'E'){
+ if(yych <= 'C') goto yy148;
+ if(yych <= 'D') goto yy207;
+ goto yy206;
+ } else {
+ if(yych <= 'c') goto yy148;
+ if(yych <= 'd') goto yy287;
+ if(yych >= 'f') goto yy148;
+ goto yy286;
+ }
yy286:
YYDEBUG(286, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy207;
- if(yych != 'd') goto yy144;
- goto yy287;
+ if(yych == 'K') goto yy188;
+ if(yych == 'k') goto yy268;
+ goto yy148;
yy287:
YYDEBUG(287, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy208;
- if(yych != 'a') goto yy144;
- goto yy288;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '^'){
+ if(yych <= '/'){
+ if(yych <= '.') goto yy176;
+ goto yy140;
+ } else {
+ if(yych == 'N') goto yy208;
+ goto yy176;
+ }
+ } else {
+ if(yych <= 'm'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
+ } else {
+ if(yych <= 'n') goto yy288;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
+ }
+ }
yy288:
YYDEBUG(288, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy256;
- goto yy144;
+ if(yych == 'E') goto yy209;
+ if(yych != 'e') goto yy148;
+ goto yy289;
yy289:
YYDEBUG(289, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy184;
- if(yych == 'y') goto yy264;
- goto yy144;
+ if(yych == 'S') goto yy210;
+ if(yych != 's') goto yy148;
+ goto yy290;
yy290:
YYDEBUG(290, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'U') goto yy211;
- if(yych != 'u') goto yy144;
+ if(yych == 'D') goto yy211;
+ if(yych != 'd') goto yy148;
goto yy291;
yy291:
YYDEBUG(291, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy184;
- if(yych == 'r') goto yy264;
- goto yy144;
+ if(yych == 'A') goto yy212;
+ if(yych != 'a') goto yy148;
+ goto yy292;
yy292:
YYDEBUG(292, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy214;
- if(yych == 'n') goto yy298;
- goto yy144;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy260;
+ goto yy148;
yy293:
YYDEBUG(293, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy217;
- if(yych != 'n') goto yy144;
- goto yy294;
+ if(yych == 'Y') goto yy188;
+ if(yych == 'y') goto yy268;
+ goto yy148;
yy294:
YYDEBUG(294, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '^'){
- if(yych <= 'C'){
- if(yych == '/') goto yy138;
- goto yy172;
- } else {
- if(yych <= 'D') goto yy218;
- if(yych == 'T') goto yy219;
- goto yy172;
- }
- } else {
- if(yych <= 'd'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- if(yych <= 'c') goto yy143;
- goto yy295;
- } else {
- if(yych == 't') goto yy296;
- if(yych <= 'z') goto yy143;
- goto yy172;
- }
- }
+ yych = *++YYCURSOR;
+ if(yych == 'U') goto yy215;
+ if(yych != 'u') goto yy148;
+ goto yy295;
yy295:
YYDEBUG(295, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy220;
- if(yych == 'a') goto yy297;
- goto yy144;
+ if(yych == 'R') goto yy188;
+ if(yych == 'r') goto yy268;
+ goto yy148;
yy296:
YYDEBUG(296, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy184;
- if(yych == 'h') goto yy264;
- goto yy144;
+ if(yych == 'N') goto yy218;
+ if(yych == 'n') goto yy302;
+ goto yy148;
yy297:
YYDEBUG(297, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy256;
- goto yy144;
+ if(yych == 'N') goto yy221;
+ if(yych != 'n') goto yy148;
+ goto yy298;
yy298:
YYDEBUG(298, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych <= 'R'){
- if(yych == '/') goto yy138;
- goto yy172;
+ if(yych <= 'C'){
+ if(yych == '/') goto yy140;
+ goto yy176;
} else {
- if(yych <= 'S') goto yy176;
- if(yych == 'U') goto yy215;
- goto yy172;
+ if(yych <= 'D') goto yy222;
+ if(yych == 'T') goto yy223;
+ goto yy176;
}
} else {
- if(yych <= 's'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- if(yych <= 'r') goto yy143;
- goto yy256;
+ if(yych <= 'd'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ if(yych <= 'c') goto yy147;
+ goto yy299;
} else {
- if(yych == 'u') goto yy299;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych == 't') goto yy300;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
yy299:
YYDEBUG(299, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy216;
- if(yych != 't') goto yy144;
- goto yy300;
+ if(yych == 'A') goto yy224;
+ if(yych == 'a') goto yy301;
+ goto yy148;
yy300:
YYDEBUG(300, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy184;
- if(yych == 'e') goto yy264;
- goto yy144;
+ if(yych == 'H') goto yy188;
+ if(yych == 'h') goto yy268;
+ goto yy148;
yy301:
YYDEBUG(301, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy227;
- if(yych == 't') goto yy310;
- goto yy144;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy260;
+ goto yy148;
yy302:
YYDEBUG(302, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'C') goto yy224;
- if(yych == 'c') goto yy307;
- goto yy144;
-yy303:
- YYDEBUG(303, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'N') goto yy232;
- if(yych != 'n') goto yy144;
- goto yy304;
-yy304:
- YYDEBUG(304, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
+ if(yych <= 'R'){
+ if(yych == '/') goto yy140;
+ goto yy176;
} else {
- if(yych == 'D') goto yy233;
- goto yy172;
+ if(yych <= 'S') goto yy180;
+ if(yych == 'U') goto yy219;
+ goto yy176;
}
} else {
- if(yych <= 'c'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
+ if(yych <= 's'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ if(yych <= 'r') goto yy147;
+ goto yy260;
} else {
- if(yych <= 'd') goto yy305;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych == 'u') goto yy303;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
+yy303:
+ YYDEBUG(303, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'T') goto yy220;
+ if(yych != 't') goto yy148;
+ goto yy304;
+yy304:
+ YYDEBUG(304, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'E') goto yy188;
+ if(yych == 'e') goto yy268;
+ goto yy148;
yy305:
YYDEBUG(305, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy234;
- if(yych != 'a') goto yy144;
- goto yy306;
+ if(yych == 'T') goto yy231;
+ if(yych == 't') goto yy314;
+ goto yy148;
yy306:
YYDEBUG(306, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy256;
- goto yy144;
+ if(yych == 'C') goto yy228;
+ if(yych == 'c') goto yy311;
+ goto yy148;
yy307:
YYDEBUG(307, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'N') goto yy236;
+ if(yych != 'n') goto yy148;
+ goto yy308;
+yy308:
+ YYDEBUG(308, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych <= 'N'){
- if(yych == '/') goto yy138;
- goto yy172;
+ if(yych <= '/'){
+ if(yych <= '.') goto yy176;
+ goto yy140;
} else {
- if(yych <= 'O') goto yy225;
- if(yych == 'S') goto yy176;
- goto yy172;
+ if(yych == 'D') goto yy237;
+ goto yy176;
}
} else {
- if(yych <= 'o'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- if(yych <= 'n') goto yy143;
- goto yy308;
+ if(yych <= 'c'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
} else {
- if(yych == 's') goto yy256;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych <= 'd') goto yy309;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
-yy308:
- YYDEBUG(308, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'N') goto yy226;
- if(yych != 'n') goto yy144;
- goto yy309;
yy309:
YYDEBUG(309, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy184;
- if(yych == 'd') goto yy264;
- goto yy144;
+ if(yych == 'A') goto yy238;
+ if(yych != 'a') goto yy148;
+ goto yy310;
yy310:
YYDEBUG(310, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy260;
+ goto yy148;
+yy311:
+ YYDEBUG(311, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
+ if(yych <= 'N'){
+ if(yych == '/') goto yy140;
+ goto yy176;
} else {
- if(yych == 'U') goto yy228;
- goto yy172;
+ if(yych <= 'O') goto yy229;
+ if(yych == 'S') goto yy180;
+ goto yy176;
}
} else {
- if(yych <= 't'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
+ if(yych <= 'o'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ if(yych <= 'n') goto yy147;
+ goto yy312;
} else {
- if(yych <= 'u') goto yy311;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych == 's') goto yy260;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
-yy311:
- YYDEBUG(311, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy229;
- if(yych != 'r') goto yy144;
- goto yy312;
yy312:
YYDEBUG(312, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy230;
- if(yych != 'd') goto yy144;
+ if(yych == 'N') goto yy230;
+ if(yych != 'n') goto yy148;
goto yy313;
yy313:
YYDEBUG(313, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy231;
- if(yych != 'a') goto yy144;
- goto yy314;
+ if(yych == 'D') goto yy188;
+ if(yych == 'd') goto yy268;
+ goto yy148;
yy314:
YYDEBUG(314, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy256;
- goto yy144;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '^'){
+ if(yych <= '/'){
+ if(yych <= '.') goto yy176;
+ goto yy140;
+ } else {
+ if(yych == 'U') goto yy232;
+ goto yy176;
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
+ } else {
+ if(yych <= 'u') goto yy315;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
+ }
+ }
yy315:
YYDEBUG(315, *YYCURSOR);
yych = *++YYCURSOR;
+ if(yych == 'R') goto yy233;
+ if(yych != 'r') goto yy148;
+ goto yy316;
+yy316:
+ YYDEBUG(316, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'D') goto yy234;
+ if(yych != 'd') goto yy148;
+ goto yy317;
+yy317:
+ YYDEBUG(317, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'A') goto yy235;
+ if(yych != 'a') goto yy148;
+ goto yy318;
+yy318:
+ YYDEBUG(318, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy260;
+ goto yy148;
+yy319:
+ YYDEBUG(319, *YYCURSOR);
+ yych = *++YYCURSOR;
if(yych <= 'S'){
if(yych <= ')'){
if(yych <= '(') goto yy3;
@@ -4567,7 +5058,7 @@ yy315:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'R') goto yy134;
- goto yy316;
+ goto yy320;
}
} else {
if(yych <= 'r'){
@@ -4575,13 +5066,13 @@ yy315:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 's') goto yy316;
+ if(yych <= 's') goto yy320;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy316:
- YYDEBUG(316, *YYCURSOR);
+yy320:
+ YYDEBUG(320, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -4590,7 +5081,7 @@ yy316:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy317;
+ goto yy321;
}
} else {
if(yych <= 's'){
@@ -4598,83 +5089,469 @@ yy316:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy317;
+ if(yych <= 't') goto yy321;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy317:
- YYDEBUG(317, *YYCURSOR);
- yyaccept = 1;
+yy321:
+ YYDEBUG(321, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy160;
+ case 0x09: case ' ': goto yy163;
case ')': goto yy132;
+ case 'A':
+ case 'B':
+ case 'C': case 'E': case 'G': case 'I':
+ case 'J':
+ case 'K':
+ case 'L': case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R': case 'U':
+ case 'V': case 'X': case 'Z': case 'a':
+ case 'b':
+ case 'c': case 'e': case 'g': case 'i':
+ case 'j':
+ case 'k':
+ case 'l': case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r': case 'u':
+ case 'v': case 'x': case 'z': goto yy136;
+ case 'D': case 'd': goto yy325;
+ case 'F': case 'f': goto yy327;
+ case 'H': case 'h': goto yy324;
+ case 'M': case 'm': goto yy323;
+ case 'S': case 's': goto yy322;
+ case 'T': case 't': goto yy329;
+ case 'W': case 'w': goto yy326;
+ case 'Y': case 'y': goto yy328;
default: goto yy3;
}
-yy318:
- YYDEBUG(318, *YYCURSOR);
- yyaccept = 1;
+yy322:
+ YYDEBUG(322, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'U'){
+ if(yych <= 'A'){
+ if(yych == ')') goto yy132;
+ if(yych <= '@') goto yy3;
+ goto yy340;
+ } else {
+ if(yych == 'E') goto yy341;
+ if(yych <= 'T') goto yy137;
+ goto yy342;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy340;
+ goto yy137;
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'e') goto yy341;
+ goto yy137;
+ } else {
+ if(yych <= 'u') goto yy342;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+ }
+yy323:
+ YYDEBUG(323, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'O'){
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych == 'I') goto yy338;
+ if(yych <= 'N') goto yy137;
+ goto yy339;
+ }
+ } else {
+ if(yych <= 'i'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'h') goto yy137;
+ goto yy338;
+ } else {
+ if(yych == 'o') goto yy339;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy324:
+ YYDEBUG(324, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'O'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'N') goto yy137;
+ goto yy337;
+ }
+ } else {
+ if(yych <= 'n'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'o') goto yy337;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy325:
+ YYDEBUG(325, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'A'){
+ if(yych == ')') goto yy132;
+ if(yych <= '@') goto yy3;
+ goto yy336;
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy336;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy326:
+ YYDEBUG(326, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'E'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy137;
+ goto yy335;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'e') goto yy335;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy327:
+ YYDEBUG(327, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'R'){
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych == 'O') goto yy333;
+ if(yych <= 'Q') goto yy137;
+ goto yy334;
+ }
+ } else {
+ if(yych <= 'o'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'n') goto yy137;
+ goto yy333;
+ } else {
+ if(yych == 'r') goto yy334;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy328:
+ YYDEBUG(328, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'E'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy137;
+ goto yy332;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'e') goto yy332;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy329:
+ YYDEBUG(329, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'U'){
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych == 'H') goto yy330;
+ if(yych <= 'T') goto yy137;
+ goto yy331;
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'g') goto yy137;
+ goto yy330;
+ } else {
+ if(yych == 'u') goto yy331;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy330:
+ YYDEBUG(330, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'T'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'U') goto yy181;
+ if(yych == 'u') goto yy181;
+ goto yy3;
+ }
+yy331:
+ YYDEBUG(331, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'D'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'E') goto yy175;
+ if(yych == 'e') goto yy175;
+ goto yy3;
+ }
+yy332:
+ YYDEBUG(332, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'A') goto yy187;
+ if(yych == 'a') goto yy187;
+ goto yy3;
+ }
+yy333:
+ YYDEBUG(333, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Q'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'R') goto yy191;
+ if(yych == 'r') goto yy191;
+ goto yy3;
+ }
+yy334:
+ YYDEBUG(334, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'H'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'I') goto yy202;
+ if(yych == 'i') goto yy202;
+ goto yy3;
+ }
+yy335:
+ YYDEBUG(335, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych == ')') goto yy132;
+ if(yych <= 'C') goto yy3;
+ goto yy207;
+ } else {
+ if(yych <= 'c'){
+ if(yych <= 'E') goto yy206;
+ goto yy3;
+ } else {
+ if(yych <= 'd') goto yy207;
+ if(yych <= 'e') goto yy206;
+ goto yy3;
+ }
+ }
+yy336:
+ YYDEBUG(336, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'X'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'Y') goto yy188;
+ if(yych == 'y') goto yy188;
+ goto yy3;
+ }
+yy337:
+ YYDEBUG(337, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'U') goto yy215;
+ if(yych == 'u') goto yy215;
+ goto yy3;
+ }
+yy338:
+ YYDEBUG(338, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'M'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'N') goto yy218;
+ if(yych == 'n') goto yy218;
+ goto yy3;
+ }
+yy339:
+ YYDEBUG(339, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'M'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'N') goto yy221;
+ if(yych == 'n') goto yy221;
+ goto yy3;
+ }
+yy340:
+ YYDEBUG(340, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'S'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'T') goto yy231;
+ if(yych == 't') goto yy231;
+ goto yy3;
+ }
+yy341:
+ YYDEBUG(341, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'B'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'C') goto yy228;
+ if(yych == 'c') goto yy228;
+ goto yy3;
+ }
+yy342:
+ YYDEBUG(342, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'M'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'N') goto yy236;
+ if(yych == 'n') goto yy236;
+ goto yy3;
+ }
+yy343:
+ YYDEBUG(343, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'R') goto yy134;
- goto yy316;
+ goto yy320;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 's') goto yy319;
- if(yych <= 'z') goto yy137;
+ if(yych == 's') goto yy344;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy319:
- YYDEBUG(319, *YYCURSOR);
- yyaccept = 1;
+yy344:
+ YYDEBUG(344, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy317;
+ goto yy321;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy320;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy345;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy320:
- YYDEBUG(320, *YYCURSOR);
- yyaccept = 1;
+yy345:
+ YYDEBUG(345, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': goto yy160;
+ case 0x09: case ' ': goto yy163;
case ')': goto yy132;
- case '/': case '_': goto yy138;
+ case '/': case '_': goto yy140;
+ case 'A':
+ case 'B':
+ case 'C': case 'E': case 'G': case 'I':
+ case 'J':
+ case 'K':
+ case 'L': case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R': case 'U':
+ case 'V': case 'X': case 'Z': goto yy136;
+ case 'D': goto yy325;
+ case 'F': goto yy327;
+ case 'H': goto yy324;
+ case 'M': goto yy323;
+ case 'S': goto yy322;
+ case 'T': goto yy329;
+ case 'W': goto yy326;
+ case 'Y': goto yy328;
case 'a':
case 'b':
case 'c': case 'e': case 'g': case 'i':
@@ -4685,19 +5562,585 @@ yy320:
case 'p':
case 'q':
case 'r': case 'u':
- case 'v': case 'x': case 'z': goto yy143;
- case 'd': goto yy245;
- case 'f': goto yy247;
- case 'h': goto yy244;
- case 'm': goto yy243;
- case 's': goto yy242;
- case 't': goto yy249;
- case 'w': goto yy246;
- case 'y': goto yy248;
+ case 'v': case 'x': case 'z': goto yy145;
+ case 'd': goto yy349;
+ case 'f': goto yy351;
+ case 'h': goto yy348;
+ case 'm': goto yy347;
+ case 's': goto yy346;
+ case 't': goto yy353;
+ case 'w': goto yy350;
+ case 'y': goto yy352;
default: goto yy3;
}
-yy321:
- YYDEBUG(321, *YYCURSOR);
+yy346:
+ YYDEBUG(346, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'D'){
+ if(yych <= 'A') goto yy340;
+ goto yy137;
+ } else {
+ if(yych <= 'E') goto yy341;
+ if(yych <= 'T') goto yy137;
+ goto yy342;
+ }
+ }
+ } else {
+ if(yych <= 'a'){
+ if(yych <= '^'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy364;
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'e') goto yy365;
+ goto yy146;
+ } else {
+ if(yych <= 'u') goto yy366;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+ }
+yy347:
+ YYDEBUG(347, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'O'){
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= 'H'){
+ if(yych <= '@') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'I') goto yy338;
+ if(yych <= 'N') goto yy137;
+ goto yy339;
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= '^'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy146;
+ }
+ } else {
+ if(yych <= 'n'){
+ if(yych <= 'i') goto yy362;
+ goto yy146;
+ } else {
+ if(yych <= 'o') goto yy363;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+ }
+yy348:
+ YYDEBUG(348, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'O'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'N') goto yy137;
+ goto yy337;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'o') goto yy361;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy349:
+ YYDEBUG(349, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy336;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy360;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy350:
+ YYDEBUG(350, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy137;
+ goto yy335;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy359;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy351:
+ YYDEBUG(351, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= 'N'){
+ if(yych <= '@') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'O') goto yy333;
+ if(yych <= 'Q') goto yy137;
+ goto yy334;
+ }
+ }
+ } else {
+ if(yych <= 'n'){
+ if(yych <= '^'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy146;
+ }
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'o') goto yy357;
+ goto yy146;
+ } else {
+ if(yych <= 'r') goto yy358;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+ }
+yy352:
+ YYDEBUG(352, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy137;
+ goto yy332;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy356;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy353:
+ YYDEBUG(353, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= 'G'){
+ if(yych <= '@') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'H') goto yy330;
+ if(yych <= 'T') goto yy137;
+ goto yy331;
+ }
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= '^'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy146;
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych >= 'i') goto yy146;
+ goto yy354;
+ } else {
+ if(yych <= 'u') goto yy355;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+ }
+yy354:
+ YYDEBUG(354, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'T') goto yy3;
+ goto yy181;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'u') goto yy261;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy355:
+ YYDEBUG(355, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'D') goto yy3;
+ goto yy175;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy256;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy356:
+ YYDEBUG(356, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy187;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy267;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy357:
+ YYDEBUG(357, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'Q') goto yy3;
+ goto yy191;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'r') goto yy274;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy358:
+ YYDEBUG(358, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'I'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'H') goto yy3;
+ goto yy202;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'i') goto yy271;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy359:
+ YYDEBUG(359, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'C') goto yy3;
+ if(yych <= 'D') goto yy207;
+ goto yy206;
+ }
+ } else {
+ if(yych <= 'c'){
+ if(yych == '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy147;
+ } else {
+ if(yych <= 'd') goto yy287;
+ if(yych <= 'e') goto yy286;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy360:
+ YYDEBUG(360, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'X') goto yy3;
+ goto yy188;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'y') goto yy268;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy361:
+ YYDEBUG(361, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'T') goto yy3;
+ goto yy215;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'u') goto yy295;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy362:
+ YYDEBUG(362, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'N'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'M') goto yy3;
+ goto yy218;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'n') goto yy302;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy363:
+ YYDEBUG(363, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'N'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'M') goto yy3;
+ goto yy221;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'n') goto yy298;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy364:
+ YYDEBUG(364, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'S') goto yy3;
+ goto yy231;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 't') goto yy314;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy365:
+ YYDEBUG(365, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'C'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'B') goto yy3;
+ goto yy228;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'c') goto yy311;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy366:
+ YYDEBUG(366, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'N'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'M') goto yy3;
+ goto yy236;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'n') goto yy308;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy367:
+ YYDEBUG(367, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'G'){
if(yych <= ')'){
@@ -4706,7 +6149,7 @@ yy321:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'F') goto yy134;
- goto yy328;
+ goto yy374;
}
} else {
if(yych <= 'f'){
@@ -4714,13 +6157,13 @@ yy321:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'g') goto yy328;
+ if(yych <= 'g') goto yy374;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy322:
- YYDEBUG(322, *YYCURSOR);
+yy368:
+ YYDEBUG(368, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych <= ')'){
@@ -4729,7 +6172,7 @@ yy322:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy323;
+ goto yy369;
}
} else {
if(yych <= 'd'){
@@ -4737,13 +6180,13 @@ yy322:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'e') goto yy323;
+ if(yych <= 'e') goto yy369;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy323:
- YYDEBUG(323, *YYCURSOR);
+yy369:
+ YYDEBUG(369, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'V'){
if(yych <= ')'){
@@ -4752,7 +6195,7 @@ yy323:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'U') goto yy135;
- goto yy324;
+ goto yy370;
}
} else {
if(yych <= 'u'){
@@ -4760,43 +6203,77 @@ yy323:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'v') goto yy324;
+ if(yych <= 'v') goto yy370;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy324:
- YYDEBUG(324, *YYCURSOR);
- yyaccept = 1;
+yy370:
+ YYDEBUG(370, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'E'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy136;
+ goto yy371;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'e') goto yy371;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy371:
+ YYDEBUG(371, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'N'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'M') goto yy137;
+ goto yy372;
+ }
+ } else {
+ if(yych <= 'm'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'n') goto yy372;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy372:
+ YYDEBUG(372, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'D'){
+ if(yych <= 'S'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'E') goto yy325;
- if(yych != 'e') goto yy3;
- goto yy325;
+ if(yych <= 'T') goto yy373;
+ if(yych != 't') goto yy3;
+ goto yy373;
}
-yy325:
- YYDEBUG(325, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'N') goto yy326;
- if(yych != 'n') goto yy53;
- goto yy326;
-yy326:
- YYDEBUG(326, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy327;
- if(yych != 't') goto yy53;
- goto yy327;
-yy327:
- YYDEBUG(327, *YYCURSOR);
+yy373:
+ YYDEBUG(373, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy159;
- if(yych == 'h') goto yy159;
+ if(yych == 'H') goto yy163;
+ if(yych == 'h') goto yy163;
goto yy53;
-yy328:
- YYDEBUG(328, *YYCURSOR);
+yy374:
+ YYDEBUG(374, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'H'){
if(yych <= ')'){
@@ -4805,7 +6282,7 @@ yy328:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'G') goto yy135;
- goto yy329;
+ goto yy375;
}
} else {
if(yych <= 'g'){
@@ -4813,205 +6290,708 @@ yy328:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'h') goto yy329;
+ if(yych <= 'h') goto yy375;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy329:
- YYDEBUG(329, *YYCURSOR);
- yyaccept = 1;
+yy375:
+ YYDEBUG(375, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy136;
+ goto yy376;
+ }
+ } else {
+ if(yych <= 's'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 't') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy376:
+ YYDEBUG(376, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'S'){
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case 0x09: case ' ': goto yy163;
+ case ')': goto yy132;
+ case 'A':
+ case 'B':
+ case 'C': case 'E': case 'G': case 'I':
+ case 'J':
+ case 'K':
+ case 'L': case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R': case 'U':
+ case 'V': case 'X': case 'Z': case 'a':
+ case 'b':
+ case 'c': case 'e': case 'g': case 'i':
+ case 'j':
+ case 'k':
+ case 'l': case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r': case 'u':
+ case 'v': case 'x': case 'z': goto yy137;
+ case 'D': case 'd': goto yy377;
+ case 'F': case 'f': goto yy378;
+ case 'H': case 'h': goto yy379;
+ case 'M': case 'm': goto yy380;
+ case 'S': case 's': goto yy381;
+ case 'T': case 't': goto yy382;
+ case 'W': case 'w': goto yy383;
+ case 'Y': case 'y': goto yy384;
+ default: goto yy3;
+ }
+yy377:
+ YYDEBUG(377, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'T') goto yy159;
- if(yych == 't') goto yy159;
+ if(yych <= 'A') goto yy213;
+ if(yych == 'a') goto yy213;
goto yy3;
}
-yy330:
- YYDEBUG(330, *YYCURSOR);
- yyaccept = 1;
+yy378:
+ YYDEBUG(378, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Q'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == 'O') goto yy190;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'o'){
+ if(yych <= 'R') goto yy189;
+ if(yych <= 'n') goto yy3;
+ goto yy190;
+ } else {
+ if(yych == 'r') goto yy189;
+ goto yy3;
+ }
+ }
+yy379:
+ YYDEBUG(379, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'N'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'O') goto yy214;
+ if(yych == 'o') goto yy214;
+ goto yy3;
+ }
+yy380:
+ YYDEBUG(380, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'N'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == 'I') goto yy217;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'i'){
+ if(yych <= 'O') goto yy216;
+ if(yych <= 'h') goto yy3;
+ goto yy217;
+ } else {
+ if(yych == 'o') goto yy216;
+ goto yy3;
+ }
+ }
+yy381:
+ YYDEBUG(381, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'A') goto yy226;
+ if(yych == 'E') goto yy227;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'U') goto yy225;
+ if(yych == 'a') goto yy226;
+ goto yy3;
+ } else {
+ if(yych <= 'e') goto yy227;
+ if(yych == 'u') goto yy225;
+ goto yy3;
+ }
+ }
+yy382:
+ YYDEBUG(382, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == 'H') goto yy173;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'U') goto yy174;
+ if(yych <= 'g') goto yy3;
+ goto yy173;
+ } else {
+ if(yych == 'u') goto yy174;
+ goto yy3;
+ }
+ }
+yy383:
+ YYDEBUG(383, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'E') goto yy205;
+ if(yych == 'e') goto yy205;
+ goto yy3;
+ }
+yy384:
+ YYDEBUG(384, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'E') goto yy186;
+ if(yych == 'e') goto yy186;
+ goto yy3;
+ }
+yy385:
+ YYDEBUG(385, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'G'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'F') goto yy134;
- goto yy328;
+ goto yy374;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'g') goto yy337;
- if(yych <= 'z') goto yy137;
+ if(yych == 'g') goto yy392;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy331:
- YYDEBUG(331, *YYCURSOR);
- yyaccept = 1;
+yy386:
+ YYDEBUG(386, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy323;
+ goto yy369;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy332;
- if(yych <= 'z') goto yy137;
+ if(yych == 'e') goto yy387;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy332:
- YYDEBUG(332, *YYCURSOR);
- yyaccept = 1;
+yy387:
+ YYDEBUG(387, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'V'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'U') goto yy135;
- goto yy324;
+ goto yy370;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'v') goto yy333;
- if(yych <= 'z') goto yy142;
+ if(yych == 'v') goto yy388;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy333:
- YYDEBUG(333, *YYCURSOR);
- yyaccept = 1;
+yy388:
+ YYDEBUG(388, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'D') goto yy3;
- goto yy325;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy136;
+ goto yy371;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy334;
- if(yych <= 'z') goto yy143;
+ if(yych == 'e') goto yy389;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy334:
- YYDEBUG(334, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'N') goto yy326;
- if(yych != 'n') goto yy144;
- goto yy335;
-yy335:
- YYDEBUG(335, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy327;
- if(yych != 't') goto yy144;
- goto yy336;
-yy336:
- YYDEBUG(336, *YYCURSOR);
+yy389:
+ YYDEBUG(389, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'N'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'M') goto yy137;
+ goto yy372;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'n') goto yy390;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy390:
+ YYDEBUG(390, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'S') goto yy3;
+ goto yy373;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 't') goto yy391;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy391:
+ YYDEBUG(391, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
if(yych <= '/'){
if(yych <= '.') goto yy53;
- goto yy138;
+ goto yy140;
} else {
- if(yych == 'H') goto yy159;
+ if(yych == 'H') goto yy163;
goto yy53;
}
} else {
if(yych <= 'g'){
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- goto yy143;
+ goto yy147;
} else {
- if(yych <= 'h') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'h') goto yy245;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
}
-yy337:
- YYDEBUG(337, *YYCURSOR);
- yyaccept = 1;
+yy392:
+ YYDEBUG(392, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'G') goto yy135;
- goto yy329;
+ goto yy375;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'h') goto yy338;
- if(yych <= 'z') goto yy142;
+ if(yych == 'h') goto yy393;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy338:
- YYDEBUG(338, *YYCURSOR);
- yyaccept = 1;
+yy393:
+ YYDEBUG(393, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'S') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 't') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy339:
- YYDEBUG(339, *YYCURSOR);
+yy394:
+ YYDEBUG(394, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case 0x09: case ' ': goto yy163;
+ case ')': goto yy132;
+ case '/': case '_': goto yy140;
+ case 'A':
+ case 'B':
+ case 'C': case 'E': case 'G': case 'I':
+ case 'J':
+ case 'K':
+ case 'L': case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R': case 'U':
+ case 'V': case 'X': case 'Z': goto yy137;
+ case 'D': goto yy377;
+ case 'F': goto yy378;
+ case 'H': goto yy379;
+ case 'M': goto yy380;
+ case 'S': goto yy381;
+ case 'T': goto yy382;
+ case 'W': goto yy383;
+ case 'Y': goto yy384;
+ case 'a':
+ case 'b':
+ case 'c': case 'e': case 'g': case 'i':
+ case 'j':
+ case 'k':
+ case 'l': case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r': case 'u':
+ case 'v': case 'x': case 'z': goto yy146;
+ case 'd': goto yy395;
+ case 'f': goto yy396;
+ case 'h': goto yy397;
+ case 'm': goto yy398;
+ case 's': goto yy399;
+ case 't': goto yy400;
+ case 'w': goto yy401;
+ case 'y': goto yy402;
+ default: goto yy3;
+ }
+yy395:
+ YYDEBUG(395, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy213;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy293;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy396:
+ YYDEBUG(396, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy3;
+ goto yy140;
+ } else {
+ if(yych == 'O') goto yy190;
+ if(yych <= 'Q') goto yy3;
+ goto yy189;
+ }
+ } else {
+ if(yych <= 'n'){
+ if(yych == '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy147;
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'o') goto yy269;
+ goto yy147;
+ } else {
+ if(yych <= 'r') goto yy270;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+ }
+yy397:
+ YYDEBUG(397, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'O'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'N') goto yy3;
+ goto yy214;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'o') goto yy294;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy398:
+ YYDEBUG(398, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'O'){
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy3;
+ goto yy140;
+ } else {
+ if(yych == 'I') goto yy217;
+ if(yych <= 'N') goto yy3;
+ goto yy216;
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych == '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy147;
+ } else {
+ if(yych <= 'n'){
+ if(yych <= 'i') goto yy296;
+ goto yy147;
+ } else {
+ if(yych <= 'o') goto yy297;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+ }
+yy399:
+ YYDEBUG(399, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'D'){
+ if(yych <= 'A') goto yy226;
+ goto yy3;
+ } else {
+ if(yych <= 'E') goto yy227;
+ if(yych <= 'T') goto yy3;
+ goto yy225;
+ }
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= '_'){
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy305;
+ goto yy147;
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'e') goto yy306;
+ goto yy147;
+ } else {
+ if(yych <= 'u') goto yy307;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+ }
+yy400:
+ YYDEBUG(400, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy3;
+ goto yy140;
+ } else {
+ if(yych == 'H') goto yy173;
+ if(yych <= 'T') goto yy3;
+ goto yy174;
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych == '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy147;
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'h') goto yy254;
+ goto yy147;
+ } else {
+ if(yych <= 'u') goto yy255;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+ }
+yy401:
+ YYDEBUG(401, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'D') goto yy3;
+ goto yy205;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy285;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy402:
+ YYDEBUG(402, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'D') goto yy3;
+ goto yy186;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy266;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy403:
+ YYDEBUG(403, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'D'){
if(yych <= ')'){
@@ -5020,7 +7000,7 @@ yy339:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'C') goto yy134;
- goto yy340;
+ goto yy404;
}
} else {
if(yych <= 'c'){
@@ -5028,36 +7008,36 @@ yy339:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'd') goto yy340;
+ if(yych <= 'd') goto yy404;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy340:
- YYDEBUG(340, *YYCURSOR);
+yy404:
+ YYDEBUG(404, *YYCURSOR);
++YYCURSOR;
if((yych = *YYCURSOR) <= 'N'){
if(yych <= ')'){
if(yych >= ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'M') goto yy135;
- goto yy342;
+ goto yy406;
}
} else {
if(yych <= 'm'){
if(yych <= 'Z') goto yy135;
if(yych >= 'a') goto yy135;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= 'n') goto yy342;
+ if(yych <= 'n') goto yy406;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy341:
- YYDEBUG(341, *YYCURSOR);
+yy405:
+ YYDEBUG(405, *YYCURSOR);
{
const timelib_relunit* relunit;
@@ -5073,158 +7053,230 @@ yy341:
TIMELIB_DEINIT;
return TIMELIB_WEEKDAY;
}
-yy342:
- YYDEBUG(342, *YYCURSOR);
- yyaccept = 1;
+yy406:
+ YYDEBUG(406, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'E'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy136;
+ goto yy407;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'e') goto yy407;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy407:
+ YYDEBUG(407, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'S'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'R') goto yy137;
+ goto yy408;
+ }
+ } else {
+ if(yych <= 'r'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 's') goto yy408;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy408:
+ YYDEBUG(408, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'D'){
+ if(yych <= 'C'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'E') goto yy343;
- if(yych != 'e') goto yy3;
- goto yy343;
+ if(yych <= 'D') goto yy409;
+ if(yych != 'd') goto yy3;
+ goto yy409;
}
-yy343:
- YYDEBUG(343, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'S') goto yy344;
- if(yych != 's') goto yy53;
- goto yy344;
-yy344:
- YYDEBUG(344, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy345;
- if(yych != 'd') goto yy53;
- goto yy345;
-yy345:
- YYDEBUG(345, *YYCURSOR);
+yy409:
+ YYDEBUG(409, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy346;
+ if(yych == 'A') goto yy410;
if(yych != 'a') goto yy53;
- goto yy346;
-yy346:
- YYDEBUG(346, *YYCURSOR);
+ goto yy410;
+yy410:
+ YYDEBUG(410, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
+ if(yych == 'Y') goto yy411;
if(yych != 'y') goto yy53;
- goto yy347;
-yy347:
- YYDEBUG(347, *YYCURSOR);
+ goto yy411;
+yy411:
+ YYDEBUG(411, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy341;
-yy348:
- YYDEBUG(348, *YYCURSOR);
- yyaccept = 1;
+ goto yy405;
+yy412:
+ YYDEBUG(412, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'C') goto yy134;
- goto yy340;
+ goto yy404;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'd') goto yy349;
- if(yych <= 'z') goto yy137;
+ if(yych == 'd') goto yy413;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy349:
- YYDEBUG(349, *YYCURSOR);
+yy413:
+ YYDEBUG(413, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'M') goto yy135;
- goto yy342;
+ goto yy406;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 'n') goto yy350;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 'n') goto yy414;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy350:
- YYDEBUG(350, *YYCURSOR);
- yyaccept = 1;
+yy414:
+ YYDEBUG(414, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'D') goto yy3;
- goto yy343;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy136;
+ goto yy407;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy351;
- if(yych <= 'z') goto yy143;
+ if(yych == 'e') goto yy415;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy351:
- YYDEBUG(351, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'S') goto yy344;
- if(yych != 's') goto yy144;
- goto yy352;
-yy352:
- YYDEBUG(352, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy345;
- if(yych != 'd') goto yy144;
- goto yy353;
-yy353:
- YYDEBUG(353, *YYCURSOR);
+yy415:
+ YYDEBUG(415, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'S'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'R') goto yy137;
+ goto yy408;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 's') goto yy416;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy416:
+ YYDEBUG(416, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'C') goto yy3;
+ goto yy409;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'd') goto yy417;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy417:
+ YYDEBUG(417, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy346;
- if(yych != 'a') goto yy144;
- goto yy354;
-yy354:
- YYDEBUG(354, *YYCURSOR);
+ if(yych == 'A') goto yy410;
+ if(yych != 'a') goto yy148;
+ goto yy418;
+yy418:
+ YYDEBUG(418, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych != 'y') goto yy144;
- goto yy355;
-yy355:
- YYDEBUG(355, *YYCURSOR);
+ if(yych == 'Y') goto yy411;
+ if(yych != 'y') goto yy148;
+ goto yy419;
+yy419:
+ YYDEBUG(419, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy138;
- goto yy341;
+ if(yych == '/') goto yy140;
+ goto yy405;
} else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy341;
- if(yych <= 'z') goto yy143;
- goto yy341;
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy405;
+ if(yych <= 'z') goto yy147;
+ goto yy405;
}
-yy356:
- YYDEBUG(356, *YYCURSOR);
+yy420:
+ YYDEBUG(420, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'C'){
if(yych <= ')'){
@@ -5233,7 +7285,7 @@ yy356:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'B') goto yy134;
- goto yy357;
+ goto yy421;
}
} else {
if(yych <= 'b'){
@@ -5241,98 +7293,104 @@ yy356:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'c') goto yy357;
+ if(yych <= 'c') goto yy421;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy357:
- YYDEBUG(357, *YYCURSOR);
- yyaccept = 1;
+yy421:
+ YYDEBUG(421, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych == 'E') goto yy366;
- goto yy135;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych == 'E') goto yy429;
+ goto yy135;
+ }
} else {
if(yych <= 'd'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'e') goto yy366;
+ if(yych <= 'e') goto yy429;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy358:
- YYDEBUG(358, *YYCURSOR);
+yy422:
+ YYDEBUG(422, *YYCURSOR);
++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 17) YYFILL(17);
+ if((YYLIMIT - YYCURSOR) < 20) YYFILL(20);
yych = *YYCURSOR;
- goto yy359;
-yy359:
- YYDEBUG(359, *YYCURSOR);
+ goto yy423;
+yy423:
+ YYDEBUG(423, *YYCURSOR);
if(yybm[0+yych] & 64) {
- goto yy358;
+ goto yy422;
}
if(yych <= '/') goto yy53;
- if(yych <= '2') goto yy362;
- if(yych <= '3') goto yy364;
- if(yych <= '9') goto yy365;
+ if(yych <= '2') goto yy425;
+ if(yych <= '3') goto yy427;
+ if(yych <= '9') goto yy428;
goto yy53;
-yy360:
- YYDEBUG(360, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 0x1F) goto yy3;
- if(yych == '/') goto yy3;
- if(yych <= '9') goto yy359;
- goto yy3;
-yy361:
- YYDEBUG(361, *YYCURSOR);
+yy424:
+ YYDEBUG(424, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy359;
- if(yych <= '0') goto yy440;
- if(yych <= '2') goto yy441;
- if(yych <= '3') goto yy442;
- goto yy359;
-yy362:
- YYDEBUG(362, *YYCURSOR);
- ++YYCURSOR;
- if((yych = *YYCURSOR) <= 'm'){
+ if(yych <= '/') goto yy423;
+ if(yych <= '0') goto yy511;
+ if(yych <= '2') goto yy512;
+ if(yych <= '3') goto yy513;
+ goto yy423;
+yy425:
+ YYDEBUG(425, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy378;
- goto yy422;
+ if(yych <= '/') goto yy441;
+ goto yy493;
} else {
- if(yych <= '2') goto yy439;
- if(yych <= '9') goto yy422;
- goto yy378;
+ if(yych <= '2') goto yy510;
+ if(yych <= '9') goto yy493;
+ goto yy441;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy374;
- if(yych <= 'q') goto yy378;
- goto yy375;
+ if(yych <= 'n') goto yy437;
+ if(yych <= 'q') goto yy441;
+ goto yy438;
} else {
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy363:
- YYDEBUG(363, *YYCURSOR);
+yy426:
+ YYDEBUG(426, *YYCURSOR);
{
DEBUG_OUTPUT("datetextual | datenoyear");
@@ -5345,215 +7403,253 @@ yy363:
TIMELIB_DEINIT;
return TIMELIB_DATE_TEXT;
}
-yy364:
- YYDEBUG(364, *YYCURSOR);
- yych = *++YYCURSOR;
+yy427:
+ YYDEBUG(427, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy378;
- goto yy422;
+ if(yych <= '/') goto yy441;
+ goto yy493;
} else {
- if(yych <= '2') goto yy371;
- if(yych <= '9') goto yy372;
- goto yy378;
+ if(yych <= '2') goto yy434;
+ if(yych <= '9') goto yy435;
+ goto yy441;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy374;
- if(yych <= 'q') goto yy378;
- goto yy375;
+ if(yych <= 'n') goto yy437;
+ if(yych <= 'q') goto yy441;
+ goto yy438;
} else {
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy365:
- YYDEBUG(365, *YYCURSOR);
- yych = *++YYCURSOR;
+yy428:
+ YYDEBUG(428, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy378;
- goto yy370;
+ if(yych <= '/') goto yy441;
+ goto yy433;
} else {
- if(yych <= '2') goto yy371;
- if(yych <= '9') goto yy372;
- goto yy378;
+ if(yych <= '2') goto yy434;
+ if(yych <= '9') goto yy435;
+ goto yy441;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy374;
- if(yych <= 'q') goto yy378;
- goto yy375;
+ if(yych <= 'n') goto yy437;
+ if(yych <= 'q') goto yy441;
+ goto yy438;
} else {
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy366:
- YYDEBUG(366, *YYCURSOR);
- yyaccept = 1;
+yy429:
+ YYDEBUG(429, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'M'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'L') goto yy136;
+ goto yy430;
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'm') goto yy430;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy430:
+ YYDEBUG(430, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'B'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'A') goto yy137;
+ goto yy431;
+ }
+ } else {
+ if(yych <= 'a'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'b') goto yy431;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy431:
+ YYDEBUG(431, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'L'){
+ if(yych <= 'D'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'M') goto yy367;
- if(yych != 'm') goto yy3;
- goto yy367;
+ if(yych <= 'E') goto yy432;
+ if(yych != 'e') goto yy3;
+ goto yy432;
}
-yy367:
- YYDEBUG(367, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'B') goto yy368;
- if(yych != 'b') goto yy53;
- goto yy368;
-yy368:
- YYDEBUG(368, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy369;
- if(yych != 'e') goto yy53;
- goto yy369;
-yy369:
- YYDEBUG(369, *YYCURSOR);
+yy432:
+ YYDEBUG(432, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy358;
- if(yych == 'r') goto yy358;
+ if(yych == 'R') goto yy422;
+ if(yych == 'r') goto yy422;
goto yy53;
-yy370:
- YYDEBUG(370, *YYCURSOR);
+yy433:
+ YYDEBUG(433, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '9') goto yy421;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy492;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy371:
- YYDEBUG(371, *YYCURSOR);
+yy434:
+ YYDEBUG(434, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '3') goto yy421;
- if(yych <= '9') goto yy418;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '3') goto yy492;
+ if(yych <= '9') goto yy489;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy372:
- YYDEBUG(372, *YYCURSOR);
+yy435:
+ YYDEBUG(435, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '9') goto yy418;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy489;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy373:
- YYDEBUG(373, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy378;
-yy374:
- YYDEBUG(374, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy378;
-yy375:
- YYDEBUG(375, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy378;
-yy376:
- YYDEBUG(376, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy378;
-yy377:
- YYDEBUG(377, *YYCURSOR);
- ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 14) YYFILL(14);
+yy436:
+ YYDEBUG(436, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy441;
+yy437:
+ YYDEBUG(437, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy441;
+yy438:
+ YYDEBUG(438, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy441;
+yy439:
+ YYDEBUG(439, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy441;
+yy440:
+ YYDEBUG(440, *YYCURSOR);
+ yyaccept = 6;
+ YYMARKER = ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 17) YYFILL(17);
yych = *YYCURSOR;
- goto yy378;
-yy378:
- YYDEBUG(378, *YYCURSOR);
+ goto yy441;
+yy441:
+ YYDEBUG(441, *YYCURSOR);
if(yybm[0+yych] & 128) {
- goto yy377;
+ goto yy440;
}
- if(yych <= '/') goto yy363;
- if(yych <= '1') goto yy379;
- if(yych <= '2') goto yy380;
- if(yych <= '9') goto yy381;
- goto yy363;
-yy379:
- YYDEBUG(379, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych <= '2'){
+ if(yych <= '/') goto yy426;
+ if(yych <= '1') goto yy482;
+ goto yy483;
} else {
- if(yych <= '9') goto yy417;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy484;
+ if(yych != 'T') goto yy426;
+ goto yy442;
}
-yy380:
- YYDEBUG(380, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
+yy442:
+ YYDEBUG(442, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '1') goto yy443;
+ if(yych <= '2') goto yy444;
+ if(yych <= '9') goto yy445;
+ goto yy53;
+yy443:
+ YYDEBUG(443, *YYCURSOR);
+ yych = *++YYCURSOR;
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy53;
} else {
- if(yych <= '3') goto yy417;
- if(yych <= '9') goto yy382;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy445;
+ if(yych <= ':') goto yy446;
+ goto yy53;
}
-yy381:
- YYDEBUG(381, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
+yy444:
+ YYDEBUG(444, *YYCURSOR);
+ yych = *++YYCURSOR;
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy53;
} else {
- if(yych <= '9') goto yy382;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '3') goto yy445;
+ if(yych == ':') goto yy446;
+ goto yy53;
}
-yy382:
- YYDEBUG(382, *YYCURSOR);
+yy445:
+ YYDEBUG(445, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy363;
- if(yych <= '9') goto yy415;
- goto yy363;
-yy383:
- YYDEBUG(383, *YYCURSOR);
+ if(yych == '.') goto yy446;
+ if(yych != ':') goto yy53;
+ goto yy446;
+yy446:
+ YYDEBUG(446, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy384;
- if(yych <= '9') goto yy386;
+ if(yych <= '5') goto yy447;
+ if(yych <= '9') goto yy449;
goto yy53;
-yy384:
- YYDEBUG(384, *YYCURSOR);
+yy447:
+ YYDEBUG(447, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy387;
- goto yy385;
+ if(yych == '.') goto yy450;
+ goto yy448;
} else {
- if(yych <= '9') goto yy386;
- if(yych <= ':') goto yy387;
- goto yy385;
+ if(yych <= '9') goto yy449;
+ if(yych <= ':') goto yy450;
+ goto yy448;
}
-yy385:
- YYDEBUG(385, *YYCURSOR);
+yy448:
+ YYDEBUG(448, *YYCURSOR);
{
int tz_not_found;
@@ -5576,353 +7672,470 @@ yy385:
if (*ptr != '\0') {
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
}
TIMELIB_DEINIT;
return TIMELIB_SHORTDATE_WITH_TIME;
}
-yy386:
- YYDEBUG(386, *YYCURSOR);
+yy449:
+ YYDEBUG(449, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy387;
- if(yych != ':') goto yy385;
- goto yy387;
-yy387:
- YYDEBUG(387, *YYCURSOR);
+ if(yych == '.') goto yy450;
+ if(yych != ':') goto yy448;
+ goto yy450;
+yy450:
+ YYDEBUG(450, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy388;
- if(yych <= '6') goto yy389;
- if(yych <= '9') goto yy390;
+ if(yych <= '5') goto yy451;
+ if(yych <= '6') goto yy452;
+ if(yych <= '9') goto yy453;
goto yy53;
-yy388:
- YYDEBUG(388, *YYCURSOR);
+yy451:
+ YYDEBUG(451, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy385;
- if(yych <= '9') goto yy391;
- goto yy385;
-yy389:
- YYDEBUG(389, *YYCURSOR);
+ if(yych <= '/') goto yy448;
+ if(yych <= '9') goto yy454;
+ goto yy448;
+yy452:
+ YYDEBUG(452, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '0') goto yy391;
- goto yy385;
-yy390:
- YYDEBUG(390, *YYCURSOR);
+ if(yych == '0') goto yy454;
+ goto yy448;
+yy453:
+ YYDEBUG(453, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy385;
-yy391:
- YYDEBUG(391, *YYCURSOR);
+ goto yy448;
+yy454:
+ YYDEBUG(454, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '+'){
- if(yych <= '\''){
- if(yych != ' ') goto yy385;
- goto yy392;
+ if(yych <= '*'){
+ if(yych <= 0x1F){
+ if(yych != 0x09) goto yy448;
+ goto yy455;
} else {
- if(yych <= '(') goto yy395;
- if(yych <= '*') goto yy385;
- goto yy394;
+ if(yych <= ' ') goto yy455;
+ if(yych == '(') goto yy458;
+ goto yy448;
}
} else {
if(yych <= '@'){
- if(yych == '-') goto yy394;
- goto yy385;
+ if(yych == ',') goto yy448;
+ if(yych <= '-') goto yy457;
+ goto yy448;
} else {
- if(yych <= 'Z') goto yy396;
- if(yych <= '`') goto yy385;
- if(yych <= 'z') goto yy397;
- goto yy385;
+ if(yych <= 'Z') goto yy459;
+ if(yych <= '`') goto yy448;
+ if(yych <= 'z') goto yy460;
+ goto yy448;
}
}
-yy392:
- YYDEBUG(392, *YYCURSOR);
+yy455:
+ YYDEBUG(455, *YYCURSOR);
++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
+ if((YYLIMIT - YYCURSOR) < 8) YYFILL(8);
yych = *YYCURSOR;
- goto yy393;
-yy393:
- YYDEBUG(393, *YYCURSOR);
- if(yych <= '+'){
- if(yych <= '\''){
- if(yych == ' ') goto yy392;
+ goto yy456;
+yy456:
+ YYDEBUG(456, *YYCURSOR);
+ if(yych <= '*'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy455;
goto yy53;
} else {
- if(yych <= '(') goto yy395;
- if(yych <= '*') goto yy53;
- goto yy394;
+ if(yych <= ' ') goto yy455;
+ if(yych == '(') goto yy458;
+ goto yy53;
}
} else {
if(yych <= '@'){
- if(yych != '-') goto yy53;
- goto yy394;
+ if(yych == ',') goto yy53;
+ if(yych >= '.') goto yy53;
+ goto yy457;
} else {
- if(yych <= 'Z') goto yy396;
+ if(yych <= 'Z') goto yy459;
if(yych <= '`') goto yy53;
- if(yych <= 'z') goto yy397;
+ if(yych <= 'z') goto yy460;
goto yy53;
}
}
-yy394:
- YYDEBUG(394, *YYCURSOR);
+yy457:
+ YYDEBUG(457, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy410;
- if(yych <= '2') goto yy411;
- if(yych <= '9') goto yy412;
+ if(yych <= '1') goto yy477;
+ if(yych <= '2') goto yy478;
+ if(yych <= '9') goto yy479;
goto yy53;
-yy395:
- YYDEBUG(395, *YYCURSOR);
+yy458:
+ YYDEBUG(458, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@') goto yy53;
- if(yych <= 'Z') goto yy397;
+ if(yych <= 'Z') goto yy460;
if(yych <= '`') goto yy53;
- if(yych <= 'z') goto yy397;
+ if(yych <= 'z') goto yy460;
goto yy53;
-yy396:
- YYDEBUG(396, *YYCURSOR);
+yy459:
+ YYDEBUG(459, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@'){
- if(yych == ')') goto yy390;
- goto yy385;
+ if(yych == ')') goto yy453;
+ goto yy448;
} else {
- if(yych <= 'Z') goto yy398;
- if(yych <= '`') goto yy385;
- if(yych <= 'z') goto yy401;
- goto yy385;
+ if(yych <= 'Z') goto yy461;
+ if(yych <= '`') goto yy448;
+ if(yych <= 'z') goto yy466;
+ goto yy448;
}
-yy397:
- YYDEBUG(397, *YYCURSOR);
+yy460:
+ YYDEBUG(460, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@'){
- if(yych == ')') goto yy390;
- goto yy385;
+ if(yych == ')') goto yy453;
+ goto yy448;
} else {
- if(yych <= 'Z') goto yy398;
- if(yych <= '`') goto yy385;
- if(yych >= '{') goto yy385;
- goto yy398;
+ if(yych <= 'Z') goto yy461;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy461;
}
-yy398:
- YYDEBUG(398, *YYCURSOR);
+yy461:
+ YYDEBUG(461, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@'){
- if(yych == ')') goto yy390;
- goto yy385;
+ if(yych == ')') goto yy453;
+ goto yy448;
} else {
- if(yych <= 'Z') goto yy399;
- if(yych <= '`') goto yy385;
- if(yych >= '{') goto yy385;
- goto yy399;
+ if(yych <= 'Z') goto yy462;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy462;
}
-yy399:
- YYDEBUG(399, *YYCURSOR);
+yy462:
+ YYDEBUG(462, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@'){
- if(yych == ')') goto yy390;
- goto yy385;
+ if(yych == ')') goto yy453;
+ goto yy448;
} else {
- if(yych <= 'Z') goto yy400;
- if(yych <= '`') goto yy385;
- if(yych >= '{') goto yy385;
- goto yy400;
+ if(yych <= 'Z') goto yy463;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy463;
}
-yy400:
- YYDEBUG(400, *YYCURSOR);
+yy463:
+ YYDEBUG(463, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == ')') goto yy390;
- goto yy385;
-yy401:
- YYDEBUG(401, *YYCURSOR);
+ if(yych <= '@'){
+ if(yych == ')') goto yy453;
+ goto yy448;
+ } else {
+ if(yych <= 'Z') goto yy464;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy464;
+ }
+yy464:
+ YYDEBUG(464, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '@'){
+ if(yych == ')') goto yy453;
+ goto yy448;
+ } else {
+ if(yych <= 'Z') goto yy465;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy465;
+ }
+yy465:
+ YYDEBUG(465, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == ')') goto yy453;
+ goto yy448;
+yy466:
+ YYDEBUG(466, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '@'){
if(yych <= ')'){
- if(yych <= '(') goto yy385;
- goto yy390;
+ if(yych <= '(') goto yy448;
+ goto yy453;
} else {
- if(yych == '/') goto yy403;
- goto yy385;
+ if(yych == '/') goto yy468;
+ goto yy448;
}
} else {
if(yych <= '_'){
- if(yych <= 'Z') goto yy399;
- if(yych <= '^') goto yy385;
- goto yy403;
+ if(yych <= 'Z') goto yy462;
+ if(yych <= '^') goto yy448;
+ goto yy468;
} else {
- if(yych <= '`') goto yy385;
- if(yych >= '{') goto yy385;
- goto yy402;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy467;
}
}
-yy402:
- YYDEBUG(402, *YYCURSOR);
+yy467:
+ YYDEBUG(467, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '@'){
if(yych <= ')'){
- if(yych <= '(') goto yy385;
- goto yy390;
+ if(yych <= '(') goto yy448;
+ goto yy453;
} else {
- if(yych != '/') goto yy385;
- goto yy403;
+ if(yych != '/') goto yy448;
+ goto yy468;
}
} else {
if(yych <= '_'){
- if(yych <= 'Z') goto yy400;
- if(yych <= '^') goto yy385;
- goto yy403;
+ if(yych <= 'Z') goto yy463;
+ if(yych <= '^') goto yy448;
+ goto yy468;
} else {
- if(yych <= '`') goto yy385;
- if(yych <= 'z') goto yy407;
- goto yy385;
+ if(yych <= '`') goto yy448;
+ if(yych <= 'z') goto yy472;
+ goto yy448;
}
}
-yy403:
- YYDEBUG(403, *YYCURSOR);
+yy468:
+ YYDEBUG(468, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yych <= '@') goto yy53;
if(yych >= '[') goto yy53;
- goto yy404;
-yy404:
- YYDEBUG(404, *YYCURSOR);
+ goto yy469;
+yy469:
+ YYDEBUG(469, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yych <= '`') goto yy53;
if(yych >= '{') goto yy53;
- goto yy405;
-yy405:
- YYDEBUG(405, *YYCURSOR);
+ goto yy470;
+yy470:
+ YYDEBUG(470, *YYCURSOR);
yyaccept = 7;
YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy406;
-yy406:
- YYDEBUG(406, *YYCURSOR);
+ goto yy471;
+yy471:
+ YYDEBUG(471, *YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy403;
- goto yy385;
+ if(yych == '/') goto yy468;
+ goto yy448;
} else {
- if(yych <= '_') goto yy403;
- if(yych <= '`') goto yy385;
- if(yych <= 'z') goto yy405;
- goto yy385;
+ if(yych <= '_') goto yy468;
+ if(yych <= '`') goto yy448;
+ if(yych <= 'z') goto yy470;
+ goto yy448;
}
-yy407:
- YYDEBUG(407, *YYCURSOR);
+yy472:
+ YYDEBUG(472, *YYCURSOR);
+ yyaccept = 7;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy448;
+ goto yy453;
+ } else {
+ if(yych == '/') goto yy468;
+ goto yy448;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy464;
+ if(yych <= '^') goto yy448;
+ goto yy468;
+ } else {
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy473;
+ }
+ }
+yy473:
+ YYDEBUG(473, *YYCURSOR);
+ yyaccept = 7;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy448;
+ goto yy453;
+ } else {
+ if(yych == '/') goto yy468;
+ goto yy448;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy465;
+ if(yych <= '^') goto yy448;
+ goto yy468;
+ } else {
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy474;
+ }
+ }
+yy474:
+ YYDEBUG(474, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == ')') goto yy390;
- if(yych <= '.') goto yy385;
- goto yy403;
+ if(yych == ')') goto yy453;
+ if(yych <= '.') goto yy448;
+ goto yy468;
} else {
if(yych <= '_'){
- if(yych <= '^') goto yy385;
- goto yy403;
+ if(yych <= '^') goto yy448;
+ goto yy468;
} else {
- if(yych <= '`') goto yy385;
- if(yych >= '{') goto yy385;
- goto yy408;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy475;
}
}
-yy408:
- YYDEBUG(408, *YYCURSOR);
+yy475:
+ YYDEBUG(475, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy409;
-yy409:
- YYDEBUG(409, *YYCURSOR);
+ goto yy476;
+yy476:
+ YYDEBUG(476, *YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy403;
+ if(yych == '/') goto yy468;
goto yy53;
} else {
- if(yych <= '_') goto yy403;
+ if(yych <= '_') goto yy468;
if(yych <= '`') goto yy53;
- if(yych <= 'z') goto yy408;
+ if(yych <= 'z') goto yy475;
goto yy53;
}
-yy410:
- YYDEBUG(410, *YYCURSOR);
+yy477:
+ YYDEBUG(477, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy385;
- if(yych <= '9') goto yy412;
- if(yych <= ':') goto yy413;
- goto yy385;
-yy411:
- YYDEBUG(411, *YYCURSOR);
+ if(yych <= '/') goto yy448;
+ if(yych <= '9') goto yy479;
+ if(yych <= ':') goto yy480;
+ goto yy448;
+yy478:
+ YYDEBUG(478, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '5'){
- if(yych <= '/') goto yy385;
- if(yych >= '4') goto yy414;
- goto yy412;
+ if(yych <= '/') goto yy448;
+ if(yych >= '4') goto yy481;
+ goto yy479;
} else {
- if(yych <= '9') goto yy390;
- if(yych <= ':') goto yy413;
- goto yy385;
+ if(yych <= '9') goto yy453;
+ if(yych <= ':') goto yy480;
+ goto yy448;
}
-yy412:
- YYDEBUG(412, *YYCURSOR);
+yy479:
+ YYDEBUG(479, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy385;
- if(yych <= '5') goto yy414;
- if(yych <= '9') goto yy390;
- if(yych >= ';') goto yy385;
- goto yy413;
-yy413:
- YYDEBUG(413, *YYCURSOR);
+ if(yych <= '/') goto yy448;
+ if(yych <= '5') goto yy481;
+ if(yych <= '9') goto yy453;
+ if(yych >= ';') goto yy448;
+ goto yy480;
+yy480:
+ YYDEBUG(480, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy385;
- if(yych <= '5') goto yy414;
- if(yych <= '9') goto yy390;
- goto yy385;
-yy414:
- YYDEBUG(414, *YYCURSOR);
+ if(yych <= '/') goto yy448;
+ if(yych <= '5') goto yy481;
+ if(yych <= '9') goto yy453;
+ goto yy448;
+yy481:
+ YYDEBUG(481, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy385;
- if(yych <= '9') goto yy390;
- goto yy385;
-yy415:
- YYDEBUG(415, *YYCURSOR);
+ if(yych <= '/') goto yy448;
+ if(yych <= '9') goto yy453;
+ goto yy448;
+yy482:
+ YYDEBUG(482, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/'){
+ if(yych == '.') goto yy446;
+ goto yy426;
+ } else {
+ if(yych <= '9') goto yy488;
+ if(yych <= ':') goto yy446;
+ goto yy426;
+ }
+yy483:
+ YYDEBUG(483, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/'){
+ if(yych == '.') goto yy446;
+ goto yy426;
+ } else {
+ if(yych <= '3') goto yy488;
+ if(yych <= '9') goto yy485;
+ if(yych <= ':') goto yy446;
+ goto yy426;
+ }
+yy484:
+ YYDEBUG(484, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/'){
+ if(yych == '.') goto yy446;
+ goto yy426;
+ } else {
+ if(yych <= '9') goto yy485;
+ if(yych <= ':') goto yy446;
+ goto yy426;
+ }
+yy485:
+ YYDEBUG(485, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy363;
- if(yych >= ':') goto yy363;
- goto yy416;
-yy416:
- YYDEBUG(416, *YYCURSOR);
+ if(yych <= '/') goto yy426;
+ if(yych >= ':') goto yy426;
+ goto yy486;
+yy486:
+ YYDEBUG(486, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy363;
-yy417:
- YYDEBUG(417, *YYCURSOR);
+ if(yych <= '/') goto yy426;
+ if(yych >= ':') goto yy426;
+ goto yy487;
+yy487:
+ YYDEBUG(487, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy426;
+yy488:
+ YYDEBUG(488, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '9') goto yy415;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy486;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy418:
- YYDEBUG(418, *YYCURSOR);
+yy489:
+ YYDEBUG(489, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy363;
- if(yych >= ':') goto yy363;
- goto yy419;
-yy419:
- YYDEBUG(419, *YYCURSOR);
+ if(yych <= '/') goto yy426;
+ if(yych >= ':') goto yy426;
+ goto yy490;
+yy490:
+ YYDEBUG(490, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) <= '/') goto yy420;
- if(yych <= '9') goto yy416;
- goto yy420;
-yy420:
- YYDEBUG(420, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '/') goto yy491;
+ if(yych <= '9') goto yy487;
+ goto yy491;
+yy491:
+ YYDEBUG(491, *YYCURSOR);
{
DEBUG_OUTPUT("datenoday");
@@ -5935,377 +8148,390 @@ yy420:
TIMELIB_DEINIT;
return TIMELIB_DATE_NO_DAY;
}
-yy421:
- YYDEBUG(421, *YYCURSOR);
+yy492:
+ YYDEBUG(492, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '9') goto yy419;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy490;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy422:
- YYDEBUG(422, *YYCURSOR);
+yy493:
+ YYDEBUG(493, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= ':'){
if(yych <= '/'){
- if(yych != '.') goto yy378;
- goto yy423;
+ if(yych != '.') goto yy441;
+ goto yy494;
} else {
- if(yych <= '1') goto yy424;
- if(yych <= '2') goto yy425;
- if(yych <= '9') goto yy426;
- goto yy383;
+ if(yych <= '1') goto yy495;
+ if(yych <= '2') goto yy496;
+ if(yych <= '9') goto yy497;
+ goto yy446;
}
} else {
if(yych <= 'q'){
- if(yych == 'n') goto yy374;
- goto yy378;
+ if(yych == 'n') goto yy437;
+ goto yy441;
} else {
- if(yych <= 'r') goto yy375;
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 'r') goto yy438;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy423:
- YYDEBUG(423, *YYCURSOR);
- yych = *++YYCURSOR;
+yy494:
+ YYDEBUG(494, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '2'){
- if(yych <= '/') goto yy378;
- if(yych <= '1') goto yy429;
- goto yy430;
+ if(yych <= '/') goto yy441;
+ if(yych <= '1') goto yy500;
+ goto yy501;
} else {
- if(yych <= '5') goto yy431;
- if(yych <= '9') goto yy432;
- goto yy378;
+ if(yych <= '5') goto yy502;
+ if(yych <= '9') goto yy503;
+ goto yy441;
}
-yy424:
- YYDEBUG(424, *YYCURSOR);
+yy495:
+ YYDEBUG(495, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '9') goto yy428;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy499;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy425:
- YYDEBUG(425, *YYCURSOR);
+yy496:
+ YYDEBUG(496, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '3') goto yy428;
- if(yych <= '9') goto yy427;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '3') goto yy499;
+ if(yych <= '9') goto yy498;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy426:
- YYDEBUG(426, *YYCURSOR);
+yy497:
+ YYDEBUG(497, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '9') goto yy427;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy498;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy427:
- YYDEBUG(427, *YYCURSOR);
+yy498:
+ YYDEBUG(498, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy420;
- if(yych <= '9') goto yy415;
- goto yy420;
-yy428:
- YYDEBUG(428, *YYCURSOR);
+ if(yych <= '/') goto yy491;
+ if(yych <= '9') goto yy486;
+ goto yy491;
+yy499:
+ YYDEBUG(499, *YYCURSOR);
yyaccept = 8;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy420;
+ if(yych == '.') goto yy446;
+ goto yy491;
} else {
- if(yych <= '9') goto yy415;
- if(yych <= ':') goto yy383;
- goto yy420;
+ if(yych <= '9') goto yy486;
+ if(yych <= ':') goto yy446;
+ goto yy491;
}
-yy429:
- YYDEBUG(429, *YYCURSOR);
+yy500:
+ YYDEBUG(500, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy433;
- goto yy363;
+ if(yych == '.') goto yy504;
+ goto yy426;
} else {
- if(yych <= '9') goto yy438;
- if(yych <= ':') goto yy433;
- goto yy363;
+ if(yych <= '9') goto yy509;
+ if(yych <= ':') goto yy504;
+ goto yy426;
}
-yy430:
- YYDEBUG(430, *YYCURSOR);
+yy501:
+ YYDEBUG(501, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy433;
- goto yy363;
+ if(yych == '.') goto yy504;
+ goto yy426;
} else {
- if(yych <= '3') goto yy438;
- if(yych <= '9') goto yy437;
- if(yych <= ':') goto yy433;
- goto yy363;
+ if(yych <= '3') goto yy509;
+ if(yych <= '9') goto yy508;
+ if(yych <= ':') goto yy504;
+ goto yy426;
}
-yy431:
- YYDEBUG(431, *YYCURSOR);
+yy502:
+ YYDEBUG(502, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy433;
- goto yy363;
+ if(yych == '.') goto yy504;
+ goto yy426;
} else {
- if(yych <= '9') goto yy437;
- if(yych <= ':') goto yy433;
- goto yy363;
+ if(yych <= '9') goto yy508;
+ if(yych <= ':') goto yy504;
+ goto yy426;
}
-yy432:
- YYDEBUG(432, *YYCURSOR);
+yy503:
+ YYDEBUG(503, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych != '.') goto yy363;
- goto yy433;
+ if(yych != '.') goto yy426;
+ goto yy504;
} else {
- if(yych <= '9') goto yy382;
- if(yych >= ';') goto yy363;
- goto yy433;
+ if(yych <= '9') goto yy485;
+ if(yych >= ';') goto yy426;
+ goto yy504;
}
-yy433:
- YYDEBUG(433, *YYCURSOR);
+yy504:
+ YYDEBUG(504, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy434;
- if(yych <= '6') goto yy435;
- if(yych <= '9') goto yy386;
+ if(yych <= '5') goto yy505;
+ if(yych <= '6') goto yy506;
+ if(yych <= '9') goto yy449;
goto yy53;
-yy434:
- YYDEBUG(434, *YYCURSOR);
+yy505:
+ YYDEBUG(505, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy387;
- goto yy385;
+ if(yych == '.') goto yy450;
+ goto yy448;
} else {
- if(yych <= '9') goto yy436;
- if(yych <= ':') goto yy387;
- goto yy385;
+ if(yych <= '9') goto yy507;
+ if(yych <= ':') goto yy450;
+ goto yy448;
}
-yy435:
- YYDEBUG(435, *YYCURSOR);
+yy506:
+ YYDEBUG(506, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy387;
- goto yy385;
+ if(yych == '.') goto yy450;
+ goto yy448;
} else {
- if(yych <= '0') goto yy391;
- if(yych == ':') goto yy387;
- goto yy385;
+ if(yych <= '0') goto yy454;
+ if(yych == ':') goto yy450;
+ goto yy448;
}
-yy436:
- YYDEBUG(436, *YYCURSOR);
+yy507:
+ YYDEBUG(507, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '-'){
- if(yych <= '('){
- if(yych == ' ') goto yy392;
- if(yych <= '\'') goto yy385;
- goto yy395;
+ if(yych <= ','){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy455;
+ if(yych <= 0x1F) goto yy448;
+ goto yy455;
} else {
- if(yych == '+') goto yy394;
- if(yych <= ',') goto yy385;
- goto yy394;
+ if(yych <= '('){
+ if(yych <= '\'') goto yy448;
+ goto yy458;
+ } else {
+ if(yych == '+') goto yy457;
+ goto yy448;
+ }
}
} else {
- if(yych <= '@'){
- if(yych <= '.') goto yy387;
- if(yych == ':') goto yy387;
- goto yy385;
+ if(yych <= ':'){
+ if(yych <= '-') goto yy457;
+ if(yych <= '.') goto yy450;
+ if(yych <= '9') goto yy448;
+ goto yy450;
} else {
- if(yych <= 'Z') goto yy396;
- if(yych <= '`') goto yy385;
- if(yych <= 'z') goto yy397;
- goto yy385;
+ if(yych <= 'Z'){
+ if(yych <= '@') goto yy448;
+ goto yy459;
+ } else {
+ if(yych <= '`') goto yy448;
+ if(yych <= 'z') goto yy460;
+ goto yy448;
+ }
}
}
-yy437:
- YYDEBUG(437, *YYCURSOR);
+yy508:
+ YYDEBUG(508, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy387;
- goto yy363;
+ if(yych == '.') goto yy450;
+ goto yy426;
} else {
- if(yych <= '9') goto yy415;
- if(yych <= ':') goto yy387;
- goto yy363;
+ if(yych <= '9') goto yy486;
+ if(yych <= ':') goto yy450;
+ goto yy426;
}
-yy438:
- YYDEBUG(438, *YYCURSOR);
+yy509:
+ YYDEBUG(509, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy433;
- goto yy363;
+ if(yych == '.') goto yy504;
+ goto yy426;
} else {
- if(yych <= '9') goto yy415;
- if(yych <= ':') goto yy433;
- goto yy363;
+ if(yych <= '9') goto yy486;
+ if(yych <= ':') goto yy504;
+ goto yy426;
}
-yy439:
- YYDEBUG(439, *YYCURSOR);
+yy510:
+ YYDEBUG(510, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= ':'){
if(yych <= '/'){
- if(yych == '.') goto yy423;
- goto yy378;
+ if(yych == '.') goto yy494;
+ goto yy441;
} else {
- if(yych <= '1') goto yy424;
- if(yych <= '2') goto yy425;
- if(yych <= '9') goto yy426;
- goto yy383;
+ if(yych <= '1') goto yy495;
+ if(yych <= '2') goto yy496;
+ if(yych <= '9') goto yy497;
+ goto yy446;
}
} else {
if(yych <= 'q'){
- if(yych == 'n') goto yy374;
- goto yy378;
+ if(yych == 'n') goto yy437;
+ goto yy441;
} else {
- if(yych <= 'r') goto yy375;
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 'r') goto yy438;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy440:
- YYDEBUG(440, *YYCURSOR);
- yych = *++YYCURSOR;
+yy511:
+ YYDEBUG(511, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy378;
- if(yych <= '0') goto yy422;
- goto yy443;
+ if(yych <= '/') goto yy441;
+ if(yych <= '0') goto yy493;
+ goto yy514;
} else {
- if(yych <= '2') goto yy450;
- if(yych <= '9') goto yy443;
- goto yy378;
+ if(yych <= '2') goto yy521;
+ if(yych <= '9') goto yy514;
+ goto yy441;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy374;
- if(yych <= 'q') goto yy378;
- goto yy375;
+ if(yych <= 'n') goto yy437;
+ if(yych <= 'q') goto yy441;
+ goto yy438;
} else {
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy441:
- YYDEBUG(441, *YYCURSOR);
- yych = *++YYCURSOR;
+yy512:
+ YYDEBUG(512, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy378;
- goto yy443;
+ if(yych <= '/') goto yy441;
+ goto yy514;
} else {
- if(yych <= '2') goto yy450;
- if(yych <= '9') goto yy443;
- goto yy378;
+ if(yych <= '2') goto yy521;
+ if(yych <= '9') goto yy514;
+ goto yy441;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy374;
- if(yych <= 'q') goto yy378;
- goto yy375;
+ if(yych <= 'n') goto yy437;
+ if(yych <= 'q') goto yy441;
+ goto yy438;
} else {
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy442:
- YYDEBUG(442, *YYCURSOR);
- yych = *++YYCURSOR;
+yy513:
+ YYDEBUG(513, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy378;
- goto yy443;
+ if(yych <= '/') goto yy441;
+ goto yy514;
} else {
- if(yych <= '2') goto yy371;
- if(yych <= '9') goto yy372;
- goto yy378;
+ if(yych <= '2') goto yy434;
+ if(yych <= '9') goto yy435;
+ goto yy441;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy374;
- if(yych <= 'q') goto yy378;
- goto yy375;
+ if(yych <= 'n') goto yy437;
+ if(yych <= 'q') goto yy441;
+ goto yy438;
} else {
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy443:
- YYDEBUG(443, *YYCURSOR);
+yy514:
+ YYDEBUG(514, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '9'){
if(yych <= '.'){
- if(yych <= ',') goto yy378;
- if(yych >= '.') goto yy423;
- goto yy444;
+ if(yych <= ',') goto yy441;
+ if(yych >= '.') goto yy494;
+ goto yy515;
} else {
- if(yych <= '/') goto yy378;
- if(yych <= '1') goto yy424;
- if(yych <= '2') goto yy425;
- goto yy426;
+ if(yych <= '/') goto yy441;
+ if(yych <= '1') goto yy495;
+ if(yych <= '2') goto yy496;
+ goto yy497;
}
} else {
if(yych <= 'q'){
- if(yych <= ':') goto yy383;
- if(yych == 'n') goto yy374;
- goto yy378;
+ if(yych <= ':') goto yy446;
+ if(yych == 'n') goto yy437;
+ goto yy441;
} else {
- if(yych <= 'r') goto yy375;
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 'r') goto yy438;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy444:
- YYDEBUG(444, *YYCURSOR);
+yy515:
+ YYDEBUG(515, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy445;
-yy445:
- YYDEBUG(445, *YYCURSOR);
+ goto yy516;
+yy516:
+ YYDEBUG(516, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) <= '/') goto yy446;
- if(yych <= '9') goto yy447;
- goto yy446;
-yy446:
- YYDEBUG(446, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '/') goto yy517;
+ if(yych <= '9') goto yy518;
+ goto yy517;
+yy517:
+ YYDEBUG(517, *YYCURSOR);
{
DEBUG_OUTPUT("pgtextshort");
@@ -6318,185 +8544,228 @@ yy446:
TIMELIB_DEINIT;
return TIMELIB_PG_TEXT;
}
-yy447:
- YYDEBUG(447, *YYCURSOR);
+yy518:
+ YYDEBUG(518, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy446;
- if(yych >= ':') goto yy446;
- goto yy448;
-yy448:
- YYDEBUG(448, *YYCURSOR);
+ if(yych <= '/') goto yy517;
+ if(yych >= ':') goto yy517;
+ goto yy519;
+yy519:
+ YYDEBUG(519, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy446;
- if(yych >= ':') goto yy446;
- goto yy449;
-yy449:
- YYDEBUG(449, *YYCURSOR);
+ if(yych <= '/') goto yy517;
+ if(yych >= ':') goto yy517;
+ goto yy520;
+yy520:
+ YYDEBUG(520, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy446;
-yy450:
- YYDEBUG(450, *YYCURSOR);
+ goto yy517;
+yy521:
+ YYDEBUG(521, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '9'){
if(yych <= '.'){
- if(yych <= ',') goto yy378;
- if(yych <= '-') goto yy444;
- goto yy423;
+ if(yych <= ',') goto yy441;
+ if(yych <= '-') goto yy515;
+ goto yy494;
} else {
- if(yych <= '/') goto yy378;
- if(yych <= '1') goto yy424;
- if(yych <= '2') goto yy425;
- goto yy426;
+ if(yych <= '/') goto yy441;
+ if(yych <= '1') goto yy495;
+ if(yych <= '2') goto yy496;
+ goto yy497;
}
} else {
if(yych <= 'q'){
- if(yych <= ':') goto yy383;
- if(yych == 'n') goto yy374;
- goto yy378;
+ if(yych <= ':') goto yy446;
+ if(yych == 'n') goto yy437;
+ goto yy441;
} else {
- if(yych <= 'r') goto yy375;
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 'r') goto yy438;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy451:
- YYDEBUG(451, *YYCURSOR);
- yyaccept = 1;
+yy522:
+ YYDEBUG(522, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'C'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'B') goto yy134;
- goto yy357;
+ goto yy421;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'c') goto yy452;
- if(yych <= 'z') goto yy137;
+ if(yych == 'c') goto yy523;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy452:
- YYDEBUG(452, *YYCURSOR);
- yyaccept = 1;
+yy523:
+ YYDEBUG(523, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'E'){
- if(yych <= 'D') goto yy135;
- goto yy366;
+ if(yych <= '^'){
+ if(yych <= 'D'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'E') goto yy429;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'd'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'e') goto yy453;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'e') goto yy524;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy453:
- YYDEBUG(453, *YYCURSOR);
- yyaccept = 1;
+yy524:
+ YYDEBUG(524, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'M'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'L') goto yy3;
- goto yy367;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'L') goto yy136;
+ goto yy430;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'm') goto yy454;
- if(yych <= 'z') goto yy143;
+ if(yych == 'm') goto yy525;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy454:
- YYDEBUG(454, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'B') goto yy368;
- if(yych != 'b') goto yy144;
- goto yy455;
-yy455:
- YYDEBUG(455, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy369;
- if(yych != 'e') goto yy144;
- goto yy456;
-yy456:
- YYDEBUG(456, *YYCURSOR);
+yy525:
+ YYDEBUG(525, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'B'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'A') goto yy137;
+ goto yy431;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'b') goto yy526;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy526:
+ YYDEBUG(526, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'D') goto yy3;
+ goto yy432;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy527;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy527:
+ YYDEBUG(527, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
if(yych <= '/'){
if(yych <= '.') goto yy53;
- goto yy138;
+ goto yy140;
} else {
- if(yych == 'R') goto yy358;
+ if(yych == 'R') goto yy422;
goto yy53;
}
} else {
if(yych <= 'q'){
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- goto yy143;
+ goto yy147;
} else {
- if(yych <= 'r') goto yy457;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'r') goto yy528;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
}
-yy457:
- YYDEBUG(457, *YYCURSOR);
+yy528:
+ YYDEBUG(528, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
- if(yych == '/') goto yy138;
- goto yy359;
+ if(yych == '/') goto yy140;
+ goto yy423;
} else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy359;
- if(yych <= 'z') goto yy143;
- goto yy359;
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy423;
+ if(yych <= 'z') goto yy147;
+ goto yy423;
}
-yy458:
- YYDEBUG(458, *YYCURSOR);
+yy529:
+ YYDEBUG(529, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -6505,7 +8774,7 @@ yy458:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy134;
- goto yy459;
+ goto yy530;
}
} else {
if(yych <= 's'){
@@ -6513,183 +8782,257 @@ yy458:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 't') goto yy459;
+ if(yych <= 't') goto yy530;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy459:
- YYDEBUG(459, *YYCURSOR);
- yyaccept = 1;
+yy530:
+ YYDEBUG(530, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'O') goto yy135;
- goto yy460;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'O') goto yy135;
+ goto yy531;
+ }
} else {
if(yych <= 'n'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'o') goto yy460;
+ if(yych <= 'o') goto yy531;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy460:
- YYDEBUG(460, *YYCURSOR);
- yyaccept = 1;
+yy531:
+ YYDEBUG(531, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'B'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'A') goto yy136;
+ goto yy532;
+ }
+ } else {
+ if(yych <= 'a'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'b') goto yy532;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy532:
+ YYDEBUG(532, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'E'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy137;
+ goto yy533;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'e') goto yy533;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy533:
+ YYDEBUG(533, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'A'){
+ if(yych <= 'Q'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'B') goto yy461;
- if(yych != 'b') goto yy3;
- goto yy461;
+ if(yych <= 'R') goto yy422;
+ if(yych == 'r') goto yy422;
+ goto yy3;
}
-yy461:
- YYDEBUG(461, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy462;
- if(yych != 'e') goto yy53;
- goto yy462;
-yy462:
- YYDEBUG(462, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy358;
- if(yych == 'r') goto yy358;
- goto yy53;
-yy463:
- YYDEBUG(463, *YYCURSOR);
- yyaccept = 1;
+yy534:
+ YYDEBUG(534, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy134;
- goto yy459;
+ goto yy530;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy464;
- if(yych <= 'z') goto yy137;
+ if(yych == 't') goto yy535;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy464:
- YYDEBUG(464, *YYCURSOR);
- yyaccept = 1;
+yy535:
+ YYDEBUG(535, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'O'){
- if(yych <= 'N') goto yy135;
- goto yy460;
+ if(yych <= '^'){
+ if(yych <= 'N'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'O') goto yy531;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'n'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'o') goto yy465;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'o') goto yy536;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy465:
- YYDEBUG(465, *YYCURSOR);
- yyaccept = 1;
+yy536:
+ YYDEBUG(536, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'B'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'A') goto yy3;
- goto yy461;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'A') goto yy136;
+ goto yy532;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'b') goto yy466;
- if(yych <= 'z') goto yy143;
+ if(yych == 'b') goto yy537;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy466:
- YYDEBUG(466, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy462;
- if(yych != 'e') goto yy144;
- goto yy467;
-yy467:
- YYDEBUG(467, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy537:
+ YYDEBUG(537, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych == 'R') goto yy358;
- goto yy53;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy137;
+ goto yy533;
}
} else {
- if(yych <= 'q'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= 'r') goto yy457;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych == 'e') goto yy538;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
}
}
-yy468:
- YYDEBUG(468, *YYCURSOR);
+yy538:
+ YYDEBUG(538, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'Q') goto yy3;
+ goto yy422;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'r') goto yy528;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy539:
+ YYDEBUG(539, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'V'){
if(yych <= 'B'){
@@ -6698,12 +9041,12 @@ yy468:
goto yy134;
} else {
if(yych <= 'O'){
- if(yych <= 'C') goto yy483;
+ if(yych <= 'C') goto yy555;
goto yy134;
} else {
- if(yych <= 'P') goto yy482;
+ if(yych <= 'P') goto yy554;
if(yych <= 'U') goto yy134;
- goto yy484;
+ goto yy556;
}
}
} else {
@@ -6712,22 +9055,22 @@ yy468:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych == 'c') goto yy483;
+ if(yych == 'c') goto yy555;
goto yy134;
}
} else {
if(yych <= 'u'){
- if(yych <= 'p') goto yy482;
+ if(yych <= 'p') goto yy554;
goto yy134;
} else {
- if(yych <= 'v') goto yy484;
+ if(yych <= 'v') goto yy556;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
}
-yy469:
- YYDEBUG(469, *YYCURSOR);
+yy540:
+ YYDEBUG(540, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -6736,7 +9079,7 @@ yy469:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy134;
- goto yy477;
+ goto yy549;
}
} else {
if(yych <= 's'){
@@ -6744,13 +9087,13 @@ yy469:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 't') goto yy477;
+ if(yych <= 't') goto yy549;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy470:
- YYDEBUG(470, *YYCURSOR);
+yy541:
+ YYDEBUG(541, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'X'){
if(yych <= ')'){
@@ -6759,7 +9102,7 @@ yy470:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'W') goto yy134;
- goto yy475;
+ goto yy547;
}
} else {
if(yych <= 'w'){
@@ -6767,13 +9110,13 @@ yy470:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'x') goto yy475;
+ if(yych <= 'x') goto yy547;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy471:
- YYDEBUG(471, *YYCURSOR);
+yy542:
+ YYDEBUG(542, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -6782,7 +9125,7 @@ yy471:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy472;
+ goto yy543;
}
} else {
if(yych <= 'm'){
@@ -6790,54 +9133,81 @@ yy471:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'n') goto yy472;
+ if(yych <= 'n') goto yy543;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy472:
- YYDEBUG(472, *YYCURSOR);
+yy543:
+ YYDEBUG(543, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'D'){
if(yych <= ')'){
- if(yych <= '(') goto yy341;
+ if(yych <= '(') goto yy405;
goto yy132;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'C') goto yy135;
- goto yy473;
+ goto yy544;
}
} else {
if(yych <= 'c'){
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy341;
+ if(yych <= '`') goto yy405;
goto yy135;
} else {
- if(yych <= 'd') goto yy473;
+ if(yych <= 'd') goto yy544;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy473:
- YYDEBUG(473, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
+yy544:
+ YYDEBUG(544, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'A'){
if(yych == ')') goto yy132;
- goto yy3;
+ if(yych <= '@') goto yy3;
+ goto yy545;
} else {
- if(yych <= 'A') goto yy474;
- if(yych != 'a') goto yy3;
- goto yy474;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy136;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy545;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy474:
- YYDEBUG(474, *YYCURSOR);
+yy545:
+ YYDEBUG(545, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy347;
- goto yy53;
-yy475:
- YYDEBUG(475, *YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy137;
+ goto yy546;
+ }
+ } else {
+ if(yych <= 'x'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'y') goto yy546;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy546:
+ YYDEBUG(546, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == ')') goto yy132;
+ goto yy405;
+yy547:
+ YYDEBUG(547, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -6846,7 +9216,7 @@ yy475:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy476;
+ goto yy548;
}
} else {
if(yych <= 's'){
@@ -6854,108 +9224,166 @@ yy475:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy476;
+ if(yych <= 't') goto yy548;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy476:
- YYDEBUG(476, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'G'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy548:
+ YYDEBUG(548, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'H'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
+ }
} else {
- if(yych <= 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy3;
+ if(yych <= 'g'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'h') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy477:
- YYDEBUG(477, *YYCURSOR);
+yy549:
+ YYDEBUG(549, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= ')'){
- if(yych <= '(') goto yy341;
+ if(yych <= '(') goto yy405;
goto yy132;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'T') goto yy135;
- goto yy478;
+ goto yy550;
}
} else {
if(yych <= 't'){
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy341;
+ if(yych <= '`') goto yy405;
goto yy135;
} else {
- if(yych <= 'u') goto yy478;
+ if(yych <= 'u') goto yy550;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy478:
- YYDEBUG(478, *YYCURSOR);
- yyaccept = 1;
+yy550:
+ YYDEBUG(550, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'R'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy136;
+ goto yy551;
+ }
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'r') goto yy551;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy551:
+ YYDEBUG(551, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'D'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy137;
+ goto yy552;
+ }
+ } else {
+ if(yych <= 'c'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'd') goto yy552;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy552:
+ YYDEBUG(552, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'Q'){
+ if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'R') goto yy479;
- if(yych != 'r') goto yy3;
- goto yy479;
+ if(yych <= 'A') goto yy553;
+ if(yych != 'a') goto yy3;
+ goto yy553;
}
-yy479:
- YYDEBUG(479, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy480;
- if(yych != 'd') goto yy53;
- goto yy480;
-yy480:
- YYDEBUG(480, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy481;
- if(yych != 'a') goto yy53;
- goto yy481;
-yy481:
- YYDEBUG(481, *YYCURSOR);
+yy553:
+ YYDEBUG(553, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy347;
+ if(yych == 'Y') goto yy411;
+ if(yych == 'y') goto yy411;
goto yy53;
-yy482:
- YYDEBUG(482, *YYCURSOR);
- yyaccept = 1;
+yy554:
+ YYDEBUG(554, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych == 'T') goto yy490;
- goto yy135;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych == 'T') goto yy563;
+ goto yy135;
+ }
} else {
if(yych <= 's'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy490;
+ if(yych <= 't') goto yy563;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy483:
- YYDEBUG(483, *YYCURSOR);
+yy555:
+ YYDEBUG(555, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'O'){
if(yych <= ')'){
@@ -6964,7 +9392,7 @@ yy483:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'N') goto yy135;
- goto yy488;
+ goto yy560;
}
} else {
if(yych <= 'n'){
@@ -6972,13 +9400,13 @@ yy483:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'o') goto yy488;
+ if(yych <= 'o') goto yy560;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy484:
- YYDEBUG(484, *YYCURSOR);
+yy556:
+ YYDEBUG(556, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych <= ')'){
@@ -6987,7 +9415,7 @@ yy484:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy135;
- goto yy485;
+ goto yy557;
}
} else {
if(yych <= 'd'){
@@ -6995,104 +9423,270 @@ yy484:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'e') goto yy485;
+ if(yych <= 'e') goto yy557;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy485:
- YYDEBUG(485, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'M'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy557:
+ YYDEBUG(557, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'N'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'M') goto yy136;
+ goto yy558;
+ }
} else {
- if(yych <= 'N') goto yy486;
- if(yych != 'n') goto yy3;
- goto yy486;
+ if(yych <= 'm'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'n') goto yy558;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy486:
- YYDEBUG(486, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy487;
- if(yych != 't') goto yy53;
- goto yy487;
-yy487:
- YYDEBUG(487, *YYCURSOR);
+yy558:
+ YYDEBUG(558, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy53;
-yy488:
- YYDEBUG(488, *YYCURSOR);
- yyaccept = 1;
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy137;
+ goto yy559;
+ }
+ } else {
+ if(yych <= 's'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 't') goto yy559;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy559:
+ YYDEBUG(559, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'M'){
+ if(yych <= 'G'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'N') goto yy489;
- if(yych != 'n') goto yy3;
- goto yy489;
+ if(yych <= 'H') goto yy163;
+ if(yych == 'h') goto yy163;
+ goto yy3;
}
-yy489:
- YYDEBUG(489, *YYCURSOR);
+yy560:
+ YYDEBUG(560, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy159;
- if(yych == 'd') goto yy159;
- goto yy53;
-yy490:
- YYDEBUG(490, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '.'){
+ if(yych <= 'N'){
if(yych <= ')'){
- if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ if(yych <= '(') goto yy3;
+ goto yy132;
} else {
- if(yych == '-') goto yy361;
- goto yy359;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'M') goto yy136;
+ goto yy561;
}
} else {
- if(yych <= 'D'){
- if(yych <= '/') goto yy3;
- if(yych <= '9') goto yy359;
- goto yy3;
+ if(yych <= 'm'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
} else {
- if(yych <= 'E') goto yy491;
- if(yych != 'e') goto yy3;
- goto yy491;
+ if(yych <= 'n') goto yy561;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
}
}
-yy491:
- YYDEBUG(491, *YYCURSOR);
+yy561:
+ YYDEBUG(561, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy492;
- if(yych != 'm') goto yy53;
- goto yy492;
-yy492:
- YYDEBUG(492, *YYCURSOR);
+ if(yych <= 'D'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy137;
+ goto yy562;
+ }
+ } else {
+ if(yych <= 'c'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'd') goto yy562;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy562:
+ YYDEBUG(562, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy164;
+ if(yych <= 0x1F) goto yy3;
+ goto yy164;
+ } else {
+ if(yych == ')') goto yy132;
+ if(yych <= 'C') goto yy3;
+ goto yy164;
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy164;
+ if(yych <= 'G') goto yy3;
+ goto yy164;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy3;
+ goto yy164;
+ } else {
+ if(yych <= 'R') goto yy3;
+ if(yych <= 'T') goto yy164;
+ goto yy3;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy3;
+ if(yych <= 'Y') goto yy164;
+ goto yy3;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy164;
+ goto yy3;
+ } else {
+ if(yych == 'g') goto yy3;
+ goto yy164;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy164;
+ if(yych <= 'r') goto yy3;
+ goto yy164;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy3;
+ goto yy164;
+ } else {
+ if(yych == 'y') goto yy164;
+ goto yy3;
+ }
+ }
+ }
+ }
+yy563:
+ YYDEBUG(563, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
+ } else {
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
+ }
+ } else {
+ if(yych <= 'Z'){
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'E') goto yy136;
+ goto yy564;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'e') goto yy564;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+ }
+yy564:
+ YYDEBUG(564, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy493;
- if(yych != 'b') goto yy53;
- goto yy493;
-yy493:
- YYDEBUG(493, *YYCURSOR);
+ if(yych <= 'M'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'L') goto yy137;
+ goto yy565;
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'm') goto yy565;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy565:
+ YYDEBUG(565, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'B') goto yy566;
+ if(yych != 'b') goto yy3;
+ goto yy566;
+ }
+yy566:
+ YYDEBUG(566, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy494;
+ if(yych == 'E') goto yy567;
if(yych != 'e') goto yy53;
- goto yy494;
-yy494:
- YYDEBUG(494, *YYCURSOR);
+ goto yy567;
+yy567:
+ YYDEBUG(567, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy358;
- if(yych == 'r') goto yy358;
+ if(yych == 'R') goto yy422;
+ if(yych == 'r') goto yy422;
goto yy53;
-yy495:
- YYDEBUG(495, *YYCURSOR);
- yyaccept = 1;
+yy568:
+ YYDEBUG(568, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'V'){
if(yych <= '@'){
@@ -7100,17 +9694,17 @@ yy495:
if(yych <= '(') goto yy3;
goto yy132;
} else {
- if(yych == '/') goto yy138;
+ if(yych == '/') goto yy140;
goto yy3;
}
} else {
if(yych <= 'O'){
- if(yych == 'C') goto yy483;
+ if(yych == 'C') goto yy555;
goto yy134;
} else {
- if(yych <= 'P') goto yy482;
+ if(yych <= 'P') goto yy554;
if(yych <= 'U') goto yy134;
- goto yy484;
+ goto yy556;
}
}
} else {
@@ -7118,524 +9712,717 @@ yy495:
if(yych <= '_'){
if(yych <= 'Z') goto yy134;
if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '`') goto yy3;
- if(yych <= 'b') goto yy137;
- goto yy510;
+ if(yych <= 'b') goto yy139;
+ goto yy584;
}
} else {
if(yych <= 'u'){
- if(yych == 'p') goto yy509;
- goto yy137;
+ if(yych == 'p') goto yy583;
+ goto yy139;
} else {
- if(yych <= 'v') goto yy511;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'v') goto yy585;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy496:
- YYDEBUG(496, *YYCURSOR);
- yyaccept = 1;
+yy569:
+ YYDEBUG(569, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy134;
- goto yy477;
+ goto yy549;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy504;
- if(yych <= 'z') goto yy137;
+ if(yych == 't') goto yy578;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy497:
- YYDEBUG(497, *YYCURSOR);
- yyaccept = 1;
+yy570:
+ YYDEBUG(570, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'X'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'W') goto yy134;
- goto yy475;
+ goto yy547;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'x') goto yy502;
- if(yych <= 'z') goto yy137;
+ if(yych == 'x') goto yy576;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy498:
- YYDEBUG(498, *YYCURSOR);
- yyaccept = 1;
+yy571:
+ YYDEBUG(571, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy472;
+ goto yy543;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy499;
- if(yych <= 'z') goto yy137;
+ if(yych == 'n') goto yy572;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy499:
- YYDEBUG(499, *YYCURSOR);
+yy572:
+ YYDEBUG(572, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'C') goto yy135;
- goto yy473;
+ goto yy544;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 'd') goto yy500;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 'd') goto yy573;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy500:
- YYDEBUG(500, *YYCURSOR);
- yyaccept = 1;
+yy573:
+ YYDEBUG(573, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'A'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
- goto yy474;
+ goto yy545;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy574;
+ if(yych <= 'z') goto yy145;
+ goto yy3;
+ }
+ }
+yy574:
+ YYDEBUG(574, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy137;
+ goto yy546;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych <= 'a') goto yy501;
- if(yych <= 'z') goto yy143;
+ if(yych == 'y') goto yy575;
+ if(yych <= 'z') goto yy146;
goto yy3;
}
}
-yy501:
- YYDEBUG(501, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy355;
- goto yy144;
-yy502:
- YYDEBUG(502, *YYCURSOR);
- yyaccept = 1;
+yy575:
+ YYDEBUG(575, *YYCURSOR);
+ yyaccept = 5;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy405;
+ goto yy140;
+ } else {
+ if(yych <= '_'){
+ if(yych <= '^') goto yy405;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy405;
+ if(yych <= 'z') goto yy147;
+ goto yy405;
+ }
+ }
+yy576:
+ YYDEBUG(576, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy476;
+ goto yy548;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy503;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy577;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy503:
- YYDEBUG(503, *YYCURSOR);
- yyaccept = 1;
+yy577:
+ YYDEBUG(577, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'G') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'h') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 'h') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy504:
- YYDEBUG(504, *YYCURSOR);
+yy578:
+ YYDEBUG(578, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'U'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'T') goto yy135;
- goto yy478;
+ goto yy550;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 'u') goto yy505;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 'u') goto yy579;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy505:
- YYDEBUG(505, *YYCURSOR);
- yyaccept = 1;
+yy579:
+ YYDEBUG(579, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'R'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'Q') goto yy3;
- goto yy479;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy136;
+ goto yy551;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'r') goto yy506;
- if(yych <= 'z') goto yy143;
+ if(yych == 'r') goto yy580;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy506:
- YYDEBUG(506, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy480;
- if(yych != 'd') goto yy144;
- goto yy507;
-yy507:
- YYDEBUG(507, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy481;
- if(yych != 'a') goto yy144;
- goto yy508;
-yy508:
- YYDEBUG(508, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy355;
- goto yy144;
-yy509:
- YYDEBUG(509, *YYCURSOR);
- yyaccept = 1;
+yy580:
+ YYDEBUG(580, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= 'D'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy137;
+ goto yy552;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'd') goto yy581;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy581:
+ YYDEBUG(581, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy553;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= 'a') goto yy582;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy582:
+ YYDEBUG(582, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'Y') goto yy411;
+ if(yych == 'y') goto yy419;
+ goto yy148;
+yy583:
+ YYDEBUG(583, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'T'){
- if(yych <= 'S') goto yy135;
- goto yy490;
+ if(yych <= '^'){
+ if(yych <= 'S'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'T') goto yy563;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 's'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 't') goto yy517;
- if(yych <= 'z') goto yy142;
+ if(yych <= 't') goto yy592;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy510:
- YYDEBUG(510, *YYCURSOR);
- yyaccept = 1;
+yy584:
+ YYDEBUG(584, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'O'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'N') goto yy135;
- goto yy488;
+ goto yy560;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'o') goto yy515;
- if(yych <= 'z') goto yy142;
+ if(yych == 'o') goto yy589;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy511:
- YYDEBUG(511, *YYCURSOR);
- yyaccept = 1;
+yy585:
+ YYDEBUG(585, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy135;
- goto yy485;
+ goto yy557;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy512;
- if(yych <= 'z') goto yy142;
+ if(yych == 'e') goto yy586;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy512:
- YYDEBUG(512, *YYCURSOR);
- yyaccept = 1;
+yy586:
+ YYDEBUG(586, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'M') goto yy3;
- goto yy486;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'M') goto yy136;
+ goto yy558;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy513;
- if(yych <= 'z') goto yy143;
+ if(yych == 'n') goto yy587;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy513:
- YYDEBUG(513, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy487;
- if(yych != 't') goto yy144;
- goto yy514;
-yy514:
- YYDEBUG(514, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy587:
+ YYDEBUG(587, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych == 'H') goto yy159;
- goto yy53;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy137;
+ goto yy559;
}
} else {
- if(yych <= 'g'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= 'h') goto yy241;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych == 't') goto yy588;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
}
}
-yy515:
- YYDEBUG(515, *YYCURSOR);
- yyaccept = 1;
+yy588:
+ YYDEBUG(588, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'H'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'G') goto yy3;
+ goto yy163;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'h') goto yy245;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy589:
+ YYDEBUG(589, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'M') goto yy3;
- goto yy489;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'M') goto yy136;
+ goto yy561;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy516;
- if(yych <= 'z') goto yy143;
+ if(yych == 'n') goto yy590;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy516:
- YYDEBUG(516, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy590:
+ YYDEBUG(590, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych == 'D') goto yy159;
- goto yy53;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy137;
+ goto yy562;
}
} else {
- if(yych <= 'c'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= 'd') goto yy241;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych == 'd') goto yy591;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
}
}
-yy517:
- YYDEBUG(517, *YYCURSOR);
- yyaccept = 1;
+yy591:
+ YYDEBUG(591, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case 0x09: case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
+ case 'T': case 'W': case 'Y': goto yy164;
+ case ')': goto yy132;
+ case '/': case '_': goto yy140;
+ case 'a':
+ case 'b':
+ case 'c': case 'e': case 'g': case 'i':
+ case 'j':
+ case 'k':
+ case 'l': case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r': case 'u':
+ case 'v': case 'x': case 'z': goto yy147;
+ case 'd': goto yy249;
+ case 'f': goto yy251;
+ case 'h': goto yy248;
+ case 'm': goto yy247;
+ case 's': goto yy246;
+ case 't': goto yy253;
+ case 'w': goto yy250;
+ case 'y': goto yy252;
+ default: goto yy3;
+ }
+yy592:
+ YYDEBUG(592, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy138;
- goto yy359;
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych == 'E') goto yy491;
- if(yych <= '^') goto yy3;
- goto yy138;
+ if(yych <= '^'){
+ if(yych <= 'D'){
+ if(yych <= '@') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'E') goto yy564;
+ if(yych <= 'Z') goto yy136;
+ goto yy3;
+ }
} else {
if(yych <= 'd'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy143;
+ goto yy145;
} else {
- if(yych <= 'e') goto yy518;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'e') goto yy593;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
}
-yy518:
- YYDEBUG(518, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'M') goto yy492;
- if(yych != 'm') goto yy144;
- goto yy519;
-yy519:
- YYDEBUG(519, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'B') goto yy493;
- if(yych != 'b') goto yy144;
- goto yy520;
-yy520:
- YYDEBUG(520, *YYCURSOR);
+yy593:
+ YYDEBUG(593, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'M'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'L') goto yy137;
+ goto yy565;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'm') goto yy594;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy594:
+ YYDEBUG(594, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'B'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'A') goto yy3;
+ goto yy566;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'b') goto yy595;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy595:
+ YYDEBUG(595, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy494;
- if(yych != 'e') goto yy144;
- goto yy521;
-yy521:
- YYDEBUG(521, *YYCURSOR);
+ if(yych == 'E') goto yy567;
+ if(yych != 'e') goto yy148;
+ goto yy596;
+yy596:
+ YYDEBUG(596, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
if(yych <= '/'){
if(yych <= '.') goto yy53;
- goto yy138;
+ goto yy140;
} else {
- if(yych == 'R') goto yy358;
+ if(yych == 'R') goto yy422;
goto yy53;
}
} else {
if(yych <= 'q'){
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- goto yy143;
+ goto yy147;
} else {
- if(yych <= 'r') goto yy457;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'r') goto yy528;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
}
-yy522:
- YYDEBUG(522, *YYCURSOR);
+yy597:
+ YYDEBUG(597, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'G'){
if(yych <= ')'){
@@ -7644,7 +10431,7 @@ yy522:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'F') goto yy134;
- goto yy529;
+ goto yy605;
}
} else {
if(yych <= 'f'){
@@ -7652,13 +10439,13 @@ yy522:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'g') goto yy529;
+ if(yych <= 'g') goto yy605;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy523:
- YYDEBUG(523, *YYCURSOR);
+yy598:
+ YYDEBUG(598, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
if(yych <= ')'){
@@ -7667,7 +10454,7 @@ yy523:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy134;
- goto yy527;
+ goto yy602;
}
} else {
if(yych <= 'q'){
@@ -7675,13 +10462,13 @@ yy523:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'r') goto yy527;
+ if(yych <= 'r') goto yy602;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy524:
- YYDEBUG(524, *YYCURSOR);
+yy599:
+ YYDEBUG(599, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'O'){
if(yych <= ')'){
@@ -7690,7 +10477,7 @@ yy524:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'N') goto yy134;
- goto yy525;
+ goto yy600;
}
} else {
if(yych <= 'n'){
@@ -7698,25 +10485,25 @@ yy524:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'o') goto yy525;
+ if(yych <= 'o') goto yy600;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy525:
- YYDEBUG(525, *YYCURSOR);
+yy600:
+ YYDEBUG(600, *YYCURSOR);
++YYCURSOR;
if((yych = *YYCURSOR) <= '@'){
if(yych == ')') goto yy132;
- goto yy526;
+ goto yy601;
} else {
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy526;
+ if(yych <= '`') goto yy601;
if(yych <= 'z') goto yy135;
- goto yy526;
+ goto yy601;
}
-yy526:
- YYDEBUG(526, *YYCURSOR);
+yy601:
+ YYDEBUG(601, *YYCURSOR);
{
DEBUG_OUTPUT("ago");
@@ -7731,344 +10518,530 @@ yy526:
TIMELIB_DEINIT;
return TIMELIB_AGO;
}
-yy527:
- YYDEBUG(527, *YYCURSOR);
- yyaccept = 1;
+yy602:
+ YYDEBUG(602, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'I') goto yy135;
- goto yy528;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'I') goto yy135;
+ goto yy603;
+ }
} else {
if(yych <= 'h'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'i') goto yy528;
+ if(yych <= 'i') goto yy603;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy528:
- YYDEBUG(528, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'K'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy603:
+ YYDEBUG(603, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'L'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'K') goto yy136;
+ goto yy604;
+ }
} else {
- if(yych <= 'L') goto yy358;
- if(yych == 'l') goto yy358;
- goto yy3;
+ if(yych <= 'k'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'l') goto yy604;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy529:
- YYDEBUG(529, *YYCURSOR);
- yyaccept = 1;
+yy604:
+ YYDEBUG(604, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy423;
+ goto yy3;
} else {
- if(yych <= '-') goto yy361;
+ if(yych <= ' ') goto yy423;
+ if(yych == ')') goto yy132;
+ goto yy3;
+ }
+ } else {
+ if(yych <= '@'){
if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy605:
+ YYDEBUG(605, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
+ } else {
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'U') goto yy135;
- goto yy530;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'U') goto yy135;
+ goto yy606;
+ }
} else {
if(yych <= 't'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'u') goto yy530;
+ if(yych <= 'u') goto yy606;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy530:
- YYDEBUG(530, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'R'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy606:
+ YYDEBUG(606, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'S'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'R') goto yy136;
+ goto yy607;
+ }
} else {
- if(yych <= 'S') goto yy531;
- if(yych != 's') goto yy3;
- goto yy531;
+ if(yych <= 'r'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 's') goto yy607;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy531:
- YYDEBUG(531, *YYCURSOR);
+yy607:
+ YYDEBUG(607, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy358;
- if(yych == 't') goto yy358;
- goto yy53;
-yy532:
- YYDEBUG(532, *YYCURSOR);
- yyaccept = 1;
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy137;
+ goto yy608;
+ }
+ } else {
+ if(yych <= 's'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 't') goto yy608;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy608:
+ YYDEBUG(608, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
+ } else {
+ if(yych <= '.'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
+ } else {
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ }
+ }
+yy609:
+ YYDEBUG(609, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'G'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'F') goto yy134;
- goto yy529;
+ goto yy605;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'g') goto yy538;
- if(yych <= 'z') goto yy137;
+ if(yych == 'g') goto yy616;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy533:
- YYDEBUG(533, *YYCURSOR);
- yyaccept = 1;
+yy610:
+ YYDEBUG(610, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'R'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy134;
- goto yy527;
+ goto yy602;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'r') goto yy536;
- if(yych <= 'z') goto yy137;
+ if(yych == 'r') goto yy613;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy534:
- YYDEBUG(534, *YYCURSOR);
- yyaccept = 1;
+yy611:
+ YYDEBUG(611, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'O'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'N') goto yy134;
- goto yy525;
+ goto yy600;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'o') goto yy535;
- if(yych <= 'z') goto yy137;
+ if(yych == 'o') goto yy612;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy535:
- YYDEBUG(535, *YYCURSOR);
+yy612:
+ YYDEBUG(612, *YYCURSOR);
yyaccept = 9;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '@'){
if(yych <= ')'){
- if(yych <= '(') goto yy526;
+ if(yych <= '(') goto yy601;
goto yy132;
} else {
- if(yych == '/') goto yy138;
- goto yy526;
+ if(yych == '/') goto yy140;
+ goto yy601;
}
} else {
if(yych <= '_'){
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy526;
- goto yy138;
+ if(yych <= '^') goto yy601;
+ goto yy140;
} else {
- if(yych <= '`') goto yy526;
- if(yych <= 'z') goto yy142;
- goto yy526;
+ if(yych <= '`') goto yy601;
+ if(yych <= 'z') goto yy144;
+ goto yy601;
}
}
-yy536:
- YYDEBUG(536, *YYCURSOR);
- yyaccept = 1;
+yy613:
+ YYDEBUG(613, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'I'){
- if(yych <= 'H') goto yy135;
- goto yy528;
+ if(yych <= '^'){
+ if(yych <= 'H'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'I') goto yy603;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'h'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'i') goto yy537;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'i') goto yy614;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy537:
- YYDEBUG(537, *YYCURSOR);
- yyaccept = 1;
+yy614:
+ YYDEBUG(614, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'L'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'K') goto yy3;
- goto yy358;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'K') goto yy136;
+ goto yy604;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'l') goto yy457;
- if(yych <= 'z') goto yy143;
+ if(yych == 'l') goto yy615;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy538:
- YYDEBUG(538, *YYCURSOR);
- yyaccept = 1;
+yy615:
+ YYDEBUG(615, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ goto yy423;
} else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
+ }
+ } else {
+ if(yych <= 'Z'){
+ if(yych <= '/') goto yy140;
+ if(yych <= '9') goto yy423;
+ if(yych <= '@') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= '_'){
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+ }
+yy616:
+ YYDEBUG(616, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'U'){
- if(yych <= 'T') goto yy135;
- goto yy530;
+ if(yych <= '^'){
+ if(yych <= 'T'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'U') goto yy606;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 't'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'u') goto yy539;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'u') goto yy617;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy539:
- YYDEBUG(539, *YYCURSOR);
- yyaccept = 1;
+yy617:
+ YYDEBUG(617, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'R') goto yy3;
- goto yy531;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'R') goto yy136;
+ goto yy607;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 's') goto yy618;
+ if(yych <= 'z') goto yy145;
+ goto yy3;
+ }
+ }
+yy618:
+ YYDEBUG(618, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy137;
+ goto yy608;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 's') goto yy540;
- if(yych <= 'z') goto yy143;
+ if(yych == 't') goto yy619;
+ if(yych <= 'z') goto yy146;
goto yy3;
}
}
-yy540:
- YYDEBUG(540, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy619:
+ YYDEBUG(619, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= ','){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy423;
+ goto yy3;
} else {
- if(yych == 'T') goto yy358;
- goto yy53;
+ if(yych <= ' ') goto yy423;
+ if(yych == ')') goto yy132;
+ goto yy3;
}
} else {
- if(yych <= 's'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '^'){
+ if(yych == '/') goto yy140;
+ if(yych <= '9') goto yy423;
+ goto yy3;
} else {
- if(yych <= 't') goto yy457;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
}
}
-yy541:
- YYDEBUG(541, *YYCURSOR);
+yy620:
+ YYDEBUG(620, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'B'){
if(yych <= ')'){
@@ -8077,7 +11050,7 @@ yy541:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'A') goto yy134;
- goto yy555;
+ goto yy634;
}
} else {
if(yych <= 'a'){
@@ -8085,37 +11058,37 @@ yy541:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'b') goto yy555;
+ if(yych <= 'b') goto yy634;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy542:
- YYDEBUG(542, *YYCURSOR);
+yy621:
+ YYDEBUG(621, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'F') goto yy552;
+ if(yych == 'F') goto yy631;
if(yych <= 'Q') goto yy134;
- goto yy551;
+ goto yy630;
}
} else {
if(yych <= 'f'){
if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'e') goto yy134;
- goto yy552;
+ goto yy631;
} else {
- if(yych == 'r') goto yy551;
+ if(yych == 'r') goto yy630;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy543:
- YYDEBUG(543, *YYCURSOR);
+yy622:
+ YYDEBUG(622, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= ')'){
@@ -8124,7 +11097,7 @@ yy543:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'T') goto yy134;
- goto yy548;
+ goto yy627;
}
} else {
if(yych <= 't'){
@@ -8132,13 +11105,13 @@ yy543:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'u') goto yy548;
+ if(yych <= 'u') goto yy627;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy544:
- YYDEBUG(544, *YYCURSOR);
+yy623:
+ YYDEBUG(623, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'I'){
if(yych <= ')'){
@@ -8147,7 +11120,7 @@ yy544:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'H') goto yy134;
- goto yy545;
+ goto yy624;
}
} else {
if(yych <= 'h'){
@@ -8155,54 +11128,76 @@ yy544:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'i') goto yy545;
+ if(yych <= 'i') goto yy624;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy545:
- YYDEBUG(545, *YYCURSOR);
+yy624:
+ YYDEBUG(624, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'D'){
if(yych <= ')'){
- if(yych <= '(') goto yy341;
+ if(yych <= '(') goto yy405;
goto yy132;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'C') goto yy135;
- goto yy546;
+ goto yy625;
}
} else {
if(yych <= 'c'){
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy341;
+ if(yych <= '`') goto yy405;
goto yy135;
} else {
- if(yych <= 'd') goto yy546;
+ if(yych <= 'd') goto yy625;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy546:
- YYDEBUG(546, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
+yy625:
+ YYDEBUG(625, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'A'){
if(yych == ')') goto yy132;
- goto yy3;
+ if(yych <= '@') goto yy3;
+ goto yy626;
} else {
- if(yych <= 'A') goto yy547;
- if(yych != 'a') goto yy3;
- goto yy547;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy136;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy626;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy547:
- YYDEBUG(547, *YYCURSOR);
+yy626:
+ YYDEBUG(626, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy347;
- goto yy53;
-yy548:
- YYDEBUG(548, *YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy137;
+ goto yy546;
+ }
+ } else {
+ if(yych <= 'x'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'y') goto yy546;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy627:
+ YYDEBUG(627, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
if(yych <= ')'){
@@ -8211,7 +11206,7 @@ yy548:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy135;
- goto yy549;
+ goto yy628;
}
} else {
if(yych <= 'q'){
@@ -8219,31 +11214,59 @@ yy548:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'r') goto yy549;
+ if(yych <= 'r') goto yy628;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy549:
- YYDEBUG(549, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'S'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy628:
+ YYDEBUG(628, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy136;
+ goto yy629;
+ }
} else {
- if(yych <= 'T') goto yy550;
- if(yych != 't') goto yy3;
- goto yy550;
+ if(yych <= 's'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 't') goto yy629;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy550:
- YYDEBUG(550, *YYCURSOR);
+yy629:
+ YYDEBUG(629, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy53;
-yy551:
- YYDEBUG(551, *YYCURSOR);
+ if(yych <= 'H'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy137;
+ goto yy562;
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'h') goto yy562;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy630:
+ YYDEBUG(630, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'S'){
if(yych <= ')'){
@@ -8252,7 +11275,7 @@ yy551:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'R') goto yy135;
- goto yy554;
+ goto yy633;
}
} else {
if(yych <= 'r'){
@@ -8260,13 +11283,13 @@ yy551:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 's') goto yy554;
+ if(yych <= 's') goto yy633;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy552:
- YYDEBUG(552, *YYCURSOR);
+yy631:
+ YYDEBUG(631, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -8275,7 +11298,7 @@ yy552:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy553;
+ goto yy632;
}
} else {
if(yych <= 's'){
@@ -8283,137 +11306,200 @@ yy552:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy553;
+ if(yych <= 't') goto yy632;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy553:
- YYDEBUG(553, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'G'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy632:
+ YYDEBUG(632, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'H'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
+ }
} else {
- if(yych <= 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy3;
+ if(yych <= 'g'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'h') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy554:
- YYDEBUG(554, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'S'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy633:
+ YYDEBUG(633, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy136;
+ goto yy376;
+ }
} else {
- if(yych <= 'T') goto yy159;
- if(yych == 't') goto yy159;
- goto yy3;
+ if(yych <= 's'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 't') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy555:
- YYDEBUG(555, *YYCURSOR);
- yyaccept = 1;
+yy634:
+ YYDEBUG(634, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'R') goto yy135;
- goto yy556;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'R') goto yy135;
+ goto yy635;
+ }
} else {
if(yych <= 'q'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'r') goto yy556;
+ if(yych <= 'r') goto yy635;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy556:
- YYDEBUG(556, *YYCURSOR);
- yyaccept = 1;
+yy635:
+ YYDEBUG(635, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'U'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'T') goto yy136;
+ goto yy636;
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'u') goto yy636;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy636:
+ YYDEBUG(636, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'A'){
+ if(yych == ')') goto yy132;
+ if(yych <= '@') goto yy3;
+ goto yy637;
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy637;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy637:
+ YYDEBUG(637, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'T'){
+ if(yych <= 'Q'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'U') goto yy557;
- if(yych != 'u') goto yy3;
- goto yy557;
+ if(yych <= 'R') goto yy638;
+ if(yych != 'r') goto yy3;
+ goto yy638;
}
-yy557:
- YYDEBUG(557, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy558;
- if(yych != 'a') goto yy53;
- goto yy558;
-yy558:
- YYDEBUG(558, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy559;
- if(yych != 'r') goto yy53;
- goto yy559;
-yy559:
- YYDEBUG(559, *YYCURSOR);
+yy638:
+ YYDEBUG(638, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy358;
- if(yych == 'y') goto yy358;
+ if(yych == 'Y') goto yy422;
+ if(yych == 'y') goto yy422;
goto yy53;
-yy560:
- YYDEBUG(560, *YYCURSOR);
- yyaccept = 1;
+yy639:
+ YYDEBUG(639, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'B'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'A') goto yy134;
- goto yy555;
+ goto yy634;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'b') goto yy574;
- if(yych <= 'z') goto yy137;
+ if(yych == 'b') goto yy653;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy561:
- YYDEBUG(561, *YYCURSOR);
- yyaccept = 1;
+yy640:
+ YYDEBUG(640, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'R'){
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= 'E'){
if(yych <= '@') goto yy3;
goto yy134;
} else {
- if(yych <= 'F') goto yy552;
+ if(yych <= 'F') goto yy631;
if(yych <= 'Q') goto yy134;
- goto yy551;
+ goto yy630;
}
}
} else {
@@ -8422,414 +11508,487 @@ yy561:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy137;
+ goto yy139;
}
} else {
if(yych <= 'q'){
- if(yych <= 'f') goto yy571;
- goto yy137;
+ if(yych <= 'f') goto yy650;
+ goto yy139;
} else {
- if(yych <= 'r') goto yy570;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'r') goto yy649;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy562:
- YYDEBUG(562, *YYCURSOR);
- yyaccept = 1;
+yy641:
+ YYDEBUG(641, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'U'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'T') goto yy134;
- goto yy548;
+ goto yy627;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'u') goto yy567;
- if(yych <= 'z') goto yy137;
+ if(yych == 'u') goto yy646;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy563:
- YYDEBUG(563, *YYCURSOR);
- yyaccept = 1;
+yy642:
+ YYDEBUG(642, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'I'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'H') goto yy134;
- goto yy545;
+ goto yy624;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'i') goto yy564;
- if(yych <= 'z') goto yy137;
+ if(yych == 'i') goto yy643;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy564:
- YYDEBUG(564, *YYCURSOR);
+yy643:
+ YYDEBUG(643, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'C') goto yy135;
- goto yy546;
+ goto yy625;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 'd') goto yy565;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 'd') goto yy644;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy565:
- YYDEBUG(565, *YYCURSOR);
- yyaccept = 1;
+yy644:
+ YYDEBUG(644, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'A'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
- goto yy547;
+ goto yy626;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy645;
+ if(yych <= 'z') goto yy145;
+ goto yy3;
+ }
+ }
+yy645:
+ YYDEBUG(645, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy137;
+ goto yy546;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych <= 'a') goto yy566;
- if(yych <= 'z') goto yy143;
+ if(yych == 'y') goto yy575;
+ if(yych <= 'z') goto yy146;
goto yy3;
}
}
-yy566:
- YYDEBUG(566, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy355;
- goto yy144;
-yy567:
- YYDEBUG(567, *YYCURSOR);
- yyaccept = 1;
+yy646:
+ YYDEBUG(646, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'R'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy135;
- goto yy549;
+ goto yy628;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'r') goto yy568;
- if(yych <= 'z') goto yy142;
+ if(yych == 'r') goto yy647;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy568:
- YYDEBUG(568, *YYCURSOR);
- yyaccept = 1;
+yy647:
+ YYDEBUG(647, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'S') goto yy3;
- goto yy550;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy136;
+ goto yy629;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy569;
- if(yych <= 'z') goto yy143;
+ if(yych == 't') goto yy648;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy569:
- YYDEBUG(569, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy648:
+ YYDEBUG(648, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'H'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych == 'H') goto yy159;
- goto yy53;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy137;
+ goto yy562;
}
} else {
- if(yych <= 'g'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= 'h') goto yy241;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych == 'h') goto yy591;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
}
}
-yy570:
- YYDEBUG(570, *YYCURSOR);
- yyaccept = 1;
+yy649:
+ YYDEBUG(649, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'R') goto yy135;
- goto yy554;
+ goto yy633;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 's') goto yy573;
- if(yych <= 'z') goto yy142;
+ if(yych == 's') goto yy652;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy571:
- YYDEBUG(571, *YYCURSOR);
- yyaccept = 1;
+yy650:
+ YYDEBUG(650, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy553;
+ goto yy632;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy572;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy651;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy572:
- YYDEBUG(572, *YYCURSOR);
- yyaccept = 1;
+yy651:
+ YYDEBUG(651, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'G') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'h') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 'h') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy573:
- YYDEBUG(573, *YYCURSOR);
- yyaccept = 1;
+yy652:
+ YYDEBUG(652, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'S') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 't') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy574:
- YYDEBUG(574, *YYCURSOR);
- yyaccept = 1;
+yy653:
+ YYDEBUG(653, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'R'){
- if(yych <= 'Q') goto yy135;
- goto yy556;
+ if(yych <= '^'){
+ if(yych <= 'Q'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'R') goto yy635;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'q'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'r') goto yy575;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'r') goto yy654;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy575:
- YYDEBUG(575, *YYCURSOR);
- yyaccept = 1;
+yy654:
+ YYDEBUG(654, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'U'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'T') goto yy3;
- goto yy557;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'T') goto yy136;
+ goto yy636;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'u') goto yy576;
- if(yych <= 'z') goto yy143;
+ if(yych == 'u') goto yy655;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy576:
- YYDEBUG(576, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy558;
- if(yych != 'a') goto yy144;
- goto yy577;
-yy577:
- YYDEBUG(577, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy559;
- if(yych != 'r') goto yy144;
- goto yy578;
-yy578:
- YYDEBUG(578, *YYCURSOR);
+yy655:
+ YYDEBUG(655, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy637;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy656;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy656:
+ YYDEBUG(656, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'Q') goto yy3;
+ goto yy638;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'r') goto yy657;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy657:
+ YYDEBUG(657, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
if(yych <= '/'){
if(yych <= '.') goto yy53;
- goto yy138;
+ goto yy140;
} else {
- if(yych == 'Y') goto yy358;
+ if(yych == 'Y') goto yy422;
goto yy53;
}
} else {
if(yych <= 'x'){
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- goto yy143;
+ goto yy147;
} else {
- if(yych <= 'y') goto yy457;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'y') goto yy528;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
}
-yy579:
- YYDEBUG(579, *YYCURSOR);
+yy658:
+ YYDEBUG(658, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'L') goto yy586;
+ if(yych == 'L') goto yy665;
if(yych <= 'M') goto yy134;
- goto yy585;
+ goto yy664;
}
} else {
if(yych <= 'l'){
if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'k') goto yy134;
- goto yy586;
+ goto yy665;
} else {
- if(yych == 'n') goto yy585;
+ if(yych == 'n') goto yy664;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy580:
- YYDEBUG(580, *YYCURSOR);
+yy659:
+ YYDEBUG(659, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -8838,7 +11997,7 @@ yy580:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy581;
+ goto yy660;
}
} else {
if(yych <= 'm'){
@@ -8846,155 +12005,234 @@ yy580:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'n') goto yy581;
+ if(yych <= 'n') goto yy660;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy581:
- YYDEBUG(581, *YYCURSOR);
- yyaccept = 1;
+yy660:
+ YYDEBUG(660, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'U') goto yy135;
- goto yy582;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'U') goto yy135;
+ goto yy661;
+ }
} else {
if(yych <= 't'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'u') goto yy582;
+ if(yych <= 'u') goto yy661;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy582:
- YYDEBUG(582, *YYCURSOR);
- yyaccept = 1;
+yy661:
+ YYDEBUG(661, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'A'){
+ if(yych == ')') goto yy132;
+ if(yych <= '@') goto yy3;
+ goto yy662;
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy136;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy662;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy662:
+ YYDEBUG(662, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'R'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy137;
+ goto yy663;
+ }
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'r') goto yy663;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy663:
+ YYDEBUG(663, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
+ if(yych <= 'X'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'A') goto yy583;
- if(yych != 'a') goto yy3;
- goto yy583;
+ if(yych <= 'Y') goto yy422;
+ if(yych == 'y') goto yy422;
+ goto yy3;
}
-yy583:
- YYDEBUG(583, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy584;
- if(yych != 'r') goto yy53;
- goto yy584;
-yy584:
- YYDEBUG(584, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy358;
- if(yych == 'y') goto yy358;
- goto yy53;
-yy585:
- YYDEBUG(585, *YYCURSOR);
- yyaccept = 1;
+yy664:
+ YYDEBUG(664, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych == 'E') goto yy587;
- goto yy135;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych == 'E') goto yy666;
+ goto yy135;
+ }
} else {
if(yych <= 'd'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'e') goto yy587;
+ if(yych <= 'e') goto yy666;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy586:
- YYDEBUG(586, *YYCURSOR);
- yyaccept = 1;
+yy665:
+ YYDEBUG(665, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'Y') goto yy135;
- goto yy587;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'Y') goto yy135;
+ goto yy666;
+ }
} else {
if(yych <= 'x'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'y') goto yy587;
+ if(yych <= 'y') goto yy666;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy587:
- YYDEBUG(587, *YYCURSOR);
- yyaccept = 1;
+yy666:
+ YYDEBUG(666, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= ')'){
- if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ if(yych <= ','){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy423;
+ goto yy3;
+ } else {
+ if(yych <= ' ') goto yy423;
+ if(yych == ')') goto yy132;
+ goto yy3;
+ }
} else {
- if(yych == '/') goto yy3;
- if(yych <= '9') goto yy359;
- goto yy3;
+ if(yych <= '@'){
+ if(yych == '/') goto yy3;
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy588:
- YYDEBUG(588, *YYCURSOR);
- yyaccept = 1;
+yy667:
+ YYDEBUG(667, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= 'K'){
if(yych <= '@') goto yy3;
goto yy134;
} else {
- if(yych <= 'L') goto yy586;
+ if(yych <= 'L') goto yy665;
if(yych <= 'M') goto yy134;
- goto yy585;
+ goto yy664;
}
}
} else {
@@ -9003,441 +12241,507 @@ yy588:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy137;
+ goto yy139;
}
} else {
if(yych <= 'm'){
- if(yych <= 'l') goto yy595;
- goto yy137;
+ if(yych <= 'l') goto yy674;
+ goto yy139;
} else {
- if(yych <= 'n') goto yy594;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'n') goto yy673;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy589:
- YYDEBUG(589, *YYCURSOR);
- yyaccept = 1;
+yy668:
+ YYDEBUG(668, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy581;
+ goto yy660;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy590;
- if(yych <= 'z') goto yy137;
+ if(yych == 'n') goto yy669;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy590:
- YYDEBUG(590, *YYCURSOR);
- yyaccept = 1;
+yy669:
+ YYDEBUG(669, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'U'){
- if(yych <= 'T') goto yy135;
- goto yy582;
+ if(yych <= '^'){
+ if(yych <= 'T'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'U') goto yy661;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 't'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'u') goto yy591;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'u') goto yy670;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy591:
- YYDEBUG(591, *YYCURSOR);
- yyaccept = 1;
+yy670:
+ YYDEBUG(670, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'A'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
- goto yy583;
+ goto yy662;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy671;
+ if(yych <= 'z') goto yy145;
+ goto yy3;
+ }
+ }
+yy671:
+ YYDEBUG(671, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy137;
+ goto yy663;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych <= 'a') goto yy592;
- if(yych <= 'z') goto yy143;
+ if(yych == 'r') goto yy672;
+ if(yych <= 'z') goto yy146;
goto yy3;
}
}
-yy592:
- YYDEBUG(592, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy584;
- if(yych != 'r') goto yy144;
- goto yy593;
-yy593:
- YYDEBUG(593, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy672:
+ YYDEBUG(672, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych == 'Y') goto yy358;
- goto yy53;
+ if(yych <= '/') goto yy140;
+ if(yych <= 'X') goto yy3;
+ goto yy422;
}
} else {
- if(yych <= 'x'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= 'y') goto yy457;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych == 'y') goto yy528;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
}
}
-yy594:
- YYDEBUG(594, *YYCURSOR);
- yyaccept = 1;
+yy673:
+ YYDEBUG(673, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'E'){
- if(yych <= 'D') goto yy135;
- goto yy587;
+ if(yych <= '^'){
+ if(yych <= 'D'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'E') goto yy666;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'd'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'e') goto yy596;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'e') goto yy675;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy595:
- YYDEBUG(595, *YYCURSOR);
- yyaccept = 1;
+yy674:
+ YYDEBUG(674, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'Y'){
- if(yych <= 'X') goto yy135;
- goto yy587;
+ if(yych <= '^'){
+ if(yych <= 'X'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'Y') goto yy666;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'x'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'y') goto yy596;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'y') goto yy675;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy596:
- YYDEBUG(596, *YYCURSOR);
- yyaccept = 1;
+yy675:
+ YYDEBUG(675, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= '('){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- goto yy359;
+ goto yy423;
} else {
- if(yych <= ')') goto yy360;
- if(yych <= '.') goto yy359;
- goto yy138;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= '_'){
- if(yych <= '9') goto yy359;
- if(yych <= '^') goto yy3;
- goto yy138;
+ if(yych <= 'Z'){
+ if(yych <= '/') goto yy140;
+ if(yych <= '9') goto yy423;
+ if(yych <= '@') goto yy3;
+ goto yy136;
} else {
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy143;
- goto yy3;
+ if(yych <= '_'){
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy145;
+ goto yy3;
+ }
}
}
-yy597:
- YYDEBUG(597, *YYCURSOR);
- yyaccept = 1;
+yy676:
+ YYDEBUG(676, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= 'I'){
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'H') goto yy134;
- goto yy598;
+ goto yy134;
} else {
- if(yych <= 'Z') goto yy134;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy134;
- goto yy3;
+ if(yych <= 'Z'){
+ if(yych >= 'J') goto yy134;
+ goto yy677;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy134;
+ goto yy3;
+ }
}
}
-yy598:
- YYDEBUG(598, *YYCURSOR);
- yyaccept = 1;
+yy677:
+ YYDEBUG(677, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= '('){
- if(yych <= 0x1F) goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy423;
+ goto yy3;
} else {
- if(yych <= ')') goto yy360;
- if(yych <= '.') goto yy359;
+ if(yych <= ' ') goto yy423;
+ if(yych == ')') goto yy132;
goto yy3;
}
} else {
- if(yych <= 'Z'){
- if(yych <= '9') goto yy359;
- if(yych <= '@') goto yy3;
- goto yy135;
+ if(yych <= '@'){
+ if(yych == '/') goto yy3;
+ if(yych <= '9') goto yy423;
+ goto yy3;
} else {
+ if(yych <= 'Z') goto yy135;
if(yych <= '`') goto yy3;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy599:
- YYDEBUG(599, *YYCURSOR);
- yyaccept = 1;
+yy678:
+ YYDEBUG(678, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= 'I'){
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'H') goto yy134;
- goto yy600;
+ goto yy134;
} else {
- if(yych <= 'Z') goto yy134;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy134;
- goto yy3;
+ if(yych <= 'Z'){
+ if(yych >= 'J') goto yy134;
+ goto yy679;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy134;
+ goto yy3;
+ }
}
}
-yy600:
- YYDEBUG(600, *YYCURSOR);
- yyaccept = 1;
+yy679:
+ YYDEBUG(679, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= 'I'){
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'H') goto yy135;
- goto yy587;
+ goto yy135;
} else {
- if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy135;
- goto yy3;
+ if(yych <= 'Z'){
+ if(yych <= 'I') goto yy666;
+ goto yy135;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy135;
+ goto yy3;
+ }
}
}
-yy601:
- YYDEBUG(601, *YYCURSOR);
- yyaccept = 1;
+yy680:
+ YYDEBUG(680, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= '('){
- if(yych <= 0x1F) goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy423;
+ goto yy3;
} else {
- if(yych <= ')') goto yy360;
- if(yych <= '.') goto yy359;
+ if(yych <= ' ') goto yy423;
+ if(yych == ')') goto yy132;
goto yy3;
}
} else {
- if(yych <= 'Z'){
- if(yych <= '9') goto yy359;
- if(yych <= '@') goto yy3;
- goto yy134;
+ if(yych <= '@'){
+ if(yych == '/') goto yy3;
+ if(yych <= '9') goto yy423;
+ goto yy3;
} else {
+ if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy602:
- YYDEBUG(602, *YYCURSOR);
- yyaccept = 1;
+yy681:
+ YYDEBUG(681, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= 'I'){
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'H') goto yy134;
- goto yy598;
+ goto yy134;
} else {
- if(yych <= 'Z') goto yy134;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy134;
- goto yy3;
+ if(yych <= 'Z'){
+ if(yych <= 'I') goto yy677;
+ goto yy134;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy134;
+ goto yy3;
+ }
}
}
-yy603:
- YYDEBUG(603, *YYCURSOR);
+yy682:
+ YYDEBUG(682, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy684;
+ if(yych <= '0') goto yy932;
+ if(yych <= '1') goto yy933;
+ if(yych <= '9') goto yy934;
+ goto yy684;
+yy683:
+ YYDEBUG(683, *YYCURSOR);
++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
yych = *YYCURSOR;
- goto yy604;
-yy604:
- YYDEBUG(604, *YYCURSOR);
+ goto yy684;
+yy684:
+ YYDEBUG(684, *YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ': goto yy603;
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',':
+ case 0x09: case ' ': goto yy683;
case '-':
- case '.': goto yy616;
- case 'A': case 'a': goto yy624;
- case 'D': case 'd': goto yy608;
- case 'F': case 'f': goto yy609;
+ case '.': goto yy783;
+ case 'A': case 'a': goto yy702;
+ case 'D': case 'd': goto yy688;
+ case 'F': case 'f': goto yy689;
case 'H': case 'h': goto yy60;
- case 'I': goto yy619;
- case 'J': case 'j': goto yy623;
- case 'M': case 'm': goto yy607;
- case 'N': case 'n': goto yy626;
- case 'O': case 'o': goto yy625;
- case 'P': case 'p': goto yy628;
- case 'S': case 's': goto yy605;
+ case 'I': goto yy697;
+ case 'J': case 'j': goto yy701;
+ case 'M': case 'm': goto yy687;
+ case 'N': case 'n': goto yy704;
+ case 'O': case 'o': goto yy703;
+ case 'P': case 'p': goto yy706;
+ case 'S': case 's': goto yy685;
case 'T': case 't': goto yy65;
- case 'V': goto yy621;
+ case 'V': goto yy699;
case 'W': case 'w': goto yy62;
- case 'X': goto yy622;
+ case 'X': goto yy700;
case 'Y': case 'y': goto yy64;
default: goto yy53;
}
-yy605:
- YYDEBUG(605, *YYCURSOR);
+yy685:
+ YYDEBUG(685, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= 'D'){
if(yych == 'A') goto yy119;
goto yy53;
} else {
- if(yych <= 'E') goto yy1118;
+ if(yych <= 'E') goto yy1228;
if(yych <= 'T') goto yy53;
goto yy118;
}
@@ -9446,20 +12750,20 @@ yy605:
if(yych == 'a') goto yy119;
goto yy53;
} else {
- if(yych <= 'e') goto yy1118;
+ if(yych <= 'e') goto yy1228;
if(yych == 'u') goto yy118;
goto yy53;
}
}
-yy606:
- YYDEBUG(606, *YYCURSOR);
+yy686:
+ YYDEBUG(686, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '`'){
if(yych <= 'D'){
if(yych == 'A') goto yy119;
goto yy53;
} else {
- if(yych <= 'E') goto yy1118;
+ if(yych <= 'E') goto yy1228;
if(yych == 'U') goto yy118;
goto yy53;
}
@@ -9467,20 +12771,20 @@ yy606:
if(yych <= 'e'){
if(yych <= 'a') goto yy119;
if(yych <= 'd') goto yy53;
- goto yy1118;
+ goto yy1228;
} else {
if(yych <= 's') goto yy53;
- if(yych <= 't') goto yy843;
+ if(yych <= 't') goto yy929;
if(yych <= 'u') goto yy118;
goto yy53;
}
}
-yy607:
- YYDEBUG(607, *YYCURSOR);
+yy687:
+ YYDEBUG(687, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'O'){
if(yych <= 'H'){
- if(yych == 'A') goto yy715;
+ if(yych == 'A') goto yy798;
goto yy53;
} else {
if(yych <= 'I') goto yy110;
@@ -9489,7 +12793,7 @@ yy607:
}
} else {
if(yych <= 'h'){
- if(yych == 'a') goto yy715;
+ if(yych == 'a') goto yy798;
goto yy53;
} else {
if(yych <= 'i') goto yy110;
@@ -9497,28 +12801,28 @@ yy607:
goto yy53;
}
}
-yy608:
- YYDEBUG(608, *YYCURSOR);
+yy688:
+ YYDEBUG(688, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych == 'A') goto yy106;
if(yych <= 'D') goto yy53;
- goto yy702;
+ goto yy785;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
goto yy106;
} else {
- if(yych == 'e') goto yy702;
+ if(yych == 'e') goto yy785;
goto yy53;
}
}
-yy609:
- YYDEBUG(609, *YYCURSOR);
+yy689:
+ YYDEBUG(689, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
if(yych <= 'N'){
- if(yych == 'E') goto yy718;
+ if(yych == 'E') goto yy801;
goto yy53;
} else {
if(yych <= 'O') goto yy83;
@@ -9527,7 +12831,7 @@ yy609:
}
} else {
if(yych <= 'n'){
- if(yych == 'e') goto yy718;
+ if(yych == 'e') goto yy801;
goto yy53;
} else {
if(yych <= 'o') goto yy83;
@@ -9535,8 +12839,8 @@ yy609:
goto yy53;
}
}
-yy610:
- YYDEBUG(610, *YYCURSOR);
+yy690:
+ YYDEBUG(690, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych == 'H') goto yy66;
@@ -9545,67 +12849,67 @@ yy610:
} else {
if(yych <= 'h'){
if(yych <= 'g') goto yy53;
- goto yy1117;
+ goto yy1227;
} else {
if(yych == 'u') goto yy67;
goto yy53;
}
}
-yy611:
- YYDEBUG(611, *YYCURSOR);
+yy691:
+ YYDEBUG(691, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy852;
+ if(yych == '-') goto yy936;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy851;
+ if(yych <= '9') goto yy935;
goto yy57;
-yy612:
- YYDEBUG(612, *YYCURSOR);
+yy692:
+ YYDEBUG(692, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'c'){
- if(yych == 'O') goto yy655;
+ if(yych == 'O') goto yy736;
goto yy53;
} else {
- if(yych <= 'd') goto yy843;
- if(yych == 'o') goto yy655;
+ if(yych <= 'd') goto yy929;
+ if(yych == 'o') goto yy736;
goto yy53;
}
-yy613:
- YYDEBUG(613, *YYCURSOR);
+yy693:
+ YYDEBUG(693, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy843;
+ if(yych == 'd') goto yy929;
goto yy53;
-yy614:
- YYDEBUG(614, *YYCURSOR);
+yy694:
+ YYDEBUG(694, *YYCURSOR);
yych = *++YYCURSOR;
YYDEBUG(-1, yych);
switch(yych){
case '0':
case '1':
- case '2': goto yy783;
- case '3': goto yy785;
+ case '2': goto yy869;
+ case '3': goto yy871;
case '4':
case '5':
case '6':
case '7':
case '8':
- case '9': goto yy786;
- case 'A': case 'a': goto yy790;
- case 'D': case 'd': goto yy794;
- case 'F': case 'f': goto yy788;
- case 'J': case 'j': goto yy787;
- case 'M': case 'm': goto yy789;
- case 'N': case 'n': goto yy793;
- case 'O': case 'o': goto yy792;
- case 'S': case 's': goto yy791;
+ case '9': goto yy872;
+ case 'A': case 'a': goto yy876;
+ case 'D': case 'd': goto yy880;
+ case 'F': case 'f': goto yy874;
+ case 'J': case 'j': goto yy873;
+ case 'M': case 'm': goto yy875;
+ case 'N': case 'n': goto yy879;
+ case 'O': case 'o': goto yy878;
+ case 'S': case 's': goto yy877;
default: goto yy53;
}
-yy615:
- YYDEBUG(615, *YYCURSOR);
+yy695:
+ YYDEBUG(695, *YYCURSOR);
yych = *++YYCURSOR;
YYDEBUG(-1, yych);
switch(yych){
- case '0': goto yy734;
- case '1': goto yy735;
+ case '0': goto yy819;
+ case '1': goto yy820;
case '2':
case '3':
case '4':
@@ -9613,92 +12917,56 @@ yy615:
case '6':
case '7':
case '8':
- case '9': goto yy736;
- case 'A': case 'a': goto yy740;
- case 'D': case 'd': goto yy744;
- case 'F': case 'f': goto yy738;
- case 'J': case 'j': goto yy737;
- case 'M': case 'm': goto yy739;
- case 'N': case 'n': goto yy743;
- case 'O': case 'o': goto yy742;
- case 'S': case 's': goto yy741;
- default: goto yy617;
+ case '9': goto yy821;
+ case 'A': case 'a': goto yy825;
+ case 'D': case 'd': goto yy829;
+ case 'F': case 'f': goto yy823;
+ case 'J': case 'j': goto yy822;
+ case 'M': case 'm': goto yy824;
+ case 'N': case 'n': goto yy828;
+ case 'O': case 'o': goto yy827;
+ case 'S': case 's': goto yy826;
+ default: goto yy784;
}
-yy616:
- YYDEBUG(616, *YYCURSOR);
- ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
- yych = *YYCURSOR;
- goto yy617;
-yy617:
- YYDEBUG(617, *YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',':
- case '-':
- case '.': goto yy616;
- case 'A': case 'a': goto yy699;
- case 'D': case 'd': goto yy701;
- case 'F': case 'f': goto yy697;
- case 'I': goto yy619;
- case 'J': case 'j': goto yy623;
- case 'M': case 'm': goto yy698;
- case 'N': case 'n': goto yy626;
- case 'O': case 'o': goto yy625;
- case 'S': case 's': goto yy700;
- case 'V': goto yy621;
- case 'X': goto yy622;
- default: goto yy53;
- }
-yy618:
- YYDEBUG(618, *YYCURSOR);
+yy696:
+ YYDEBUG(696, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '1'){
- if(yych <= '/') goto yy617;
- if(yych <= '0') goto yy693;
- goto yy694;
+ if(yych <= '/') goto yy784;
+ if(yych <= '0') goto yy774;
+ goto yy775;
} else {
- if(yych <= '5') goto yy695;
- if(yych <= '9') goto yy696;
- goto yy617;
+ if(yych <= '5') goto yy776;
+ if(yych <= '9') goto yy777;
+ goto yy784;
}
-yy619:
- YYDEBUG(619, *YYCURSOR);
+yy697:
+ YYDEBUG(697, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'H'){
- if(yych <= '.'){
- if(yych >= ' ') goto yy657;
- goto yy620;
+ if(yych <= '/'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '/') goto yy620;
- if(yych <= '9') goto yy659;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '.') goto yy738;
+ goto yy698;
}
} else {
- if(yych <= 'V'){
- if(yych <= 'I') goto yy692;
- if(yych >= 'V') goto yy665;
- goto yy620;
+ if(yych <= 'U'){
+ if(yych <= '9') goto yy740;
+ if(yych == 'I') goto yy773;
+ goto yy698;
} else {
- if(yych == 'X') goto yy665;
- goto yy620;
+ if(yych == 'W') goto yy698;
+ if(yych <= 'X') goto yy746;
+ goto yy698;
}
}
-yy620:
- YYDEBUG(620, *YYCURSOR);
+yy698:
+ YYDEBUG(698, *YYCURSOR);
{
DEBUG_OUTPUT("datenoyearrev");
@@ -9710,114 +12978,154 @@ yy620:
TIMELIB_DEINIT;
return TIMELIB_DATE_TEXT;
}
-yy621:
- YYDEBUG(621, *YYCURSOR);
+yy699:
+ YYDEBUG(699, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '9') goto yy659;
- if(yych == 'I') goto yy690;
- goto yy620;
+ if(yych <= '9'){
+ if(yych <= '.') goto yy738;
+ if(yych <= '/') goto yy698;
+ goto yy740;
+ } else {
+ if(yych == 'I') goto yy771;
+ goto yy698;
+ }
}
-yy622:
- YYDEBUG(622, *YYCURSOR);
+yy700:
+ YYDEBUG(700, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '9') goto yy659;
- if(yych == 'I') goto yy689;
- goto yy620;
+ if(yych <= '9'){
+ if(yych <= '.') goto yy738;
+ if(yych <= '/') goto yy698;
+ goto yy740;
+ } else {
+ if(yych == 'I') goto yy770;
+ goto yy698;
+ }
}
-yy623:
- YYDEBUG(623, *YYCURSOR);
+yy701:
+ YYDEBUG(701, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'A') goto yy682;
+ if(yych == 'A') goto yy763;
if(yych <= 'T') goto yy53;
- goto yy681;
+ goto yy762;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
- goto yy682;
+ goto yy763;
} else {
- if(yych == 'u') goto yy681;
+ if(yych == 'u') goto yy762;
goto yy53;
}
}
-yy624:
- YYDEBUG(624, *YYCURSOR);
+yy702:
+ YYDEBUG(702, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= 'L'){
- if(yych == '.') goto yy629;
+ if(yych == '.') goto yy707;
goto yy53;
} else {
- if(yych <= 'M') goto yy630;
- if(yych == 'P') goto yy675;
+ if(yych <= 'M') goto yy708;
+ if(yych == 'P') goto yy756;
goto yy53;
}
} else {
if(yych <= 'o'){
- if(yych <= 'U') goto yy674;
- if(yych == 'm') goto yy630;
+ if(yych <= 'U') goto yy755;
+ if(yych == 'm') goto yy708;
goto yy53;
} else {
- if(yych <= 'p') goto yy675;
- if(yych == 'u') goto yy674;
+ if(yych <= 'p') goto yy756;
+ if(yych == 'u') goto yy755;
goto yy53;
}
}
-yy625:
- YYDEBUG(625, *YYCURSOR);
+yy703:
+ YYDEBUG(703, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy669;
- if(yych == 'c') goto yy669;
+ if(yych == 'C') goto yy750;
+ if(yych == 'c') goto yy750;
goto yy53;
-yy626:
- YYDEBUG(626, *YYCURSOR);
+yy704:
+ YYDEBUG(704, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy655;
- if(yych == 'o') goto yy655;
+ if(yych == 'O') goto yy736;
+ if(yych == 'o') goto yy736;
goto yy53;
-yy627:
- YYDEBUG(627, *YYCURSOR);
+yy705:
+ YYDEBUG(705, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy633;
- if(yych <= '9') goto yy635;
+ if(yych <= '5') goto yy712;
+ if(yych <= '9') goto yy714;
goto yy53;
-yy628:
- YYDEBUG(628, *YYCURSOR);
+yy706:
+ YYDEBUG(706, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'L'){
if(yych != '.') goto yy53;
- goto yy629;
+ goto yy707;
} else {
- if(yych <= 'M') goto yy630;
- if(yych == 'm') goto yy630;
+ if(yych <= 'M') goto yy708;
+ if(yych == 'm') goto yy708;
goto yy53;
}
-yy629:
- YYDEBUG(629, *YYCURSOR);
+yy707:
+ YYDEBUG(707, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy630;
+ if(yych == 'M') goto yy708;
if(yych != 'm') goto yy53;
- goto yy630;
-yy630:
- YYDEBUG(630, *YYCURSOR);
+ goto yy708;
+yy708:
+ YYDEBUG(708, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 0x1F){
+ if(yych <= 0x00) goto yy710;
+ if(yych == 0x09) goto yy710;
+ goto yy53;
+ } else {
+ if(yych <= ' ') goto yy710;
+ if(yych != '.') goto yy53;
+ goto yy709;
+ }
+yy709:
+ YYDEBUG(709, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 0x09){
+ if(yych <= 0x00) goto yy710;
+ if(yych <= 0x08) goto yy53;
+ goto yy710;
+ } else {
+ if(yych != ' ') goto yy53;
+ goto yy710;
+ }
+yy710:
+ YYDEBUG(710, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) == '.') goto yy632;
- goto yy631;
-yy631:
- YYDEBUG(631, *YYCURSOR);
+ goto yy711;
+yy711:
+ YYDEBUG(711, *YYCURSOR);
{
DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12");
@@ -9834,24 +13142,20 @@ yy631:
TIMELIB_DEINIT;
return TIMELIB_TIME12;
}
-yy632:
- YYDEBUG(632, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy631;
-yy633:
- YYDEBUG(633, *YYCURSOR);
+yy712:
+ YYDEBUG(712, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy636;
- goto yy634;
+ if(yych == '.') goto yy715;
+ goto yy713;
} else {
- if(yych <= '9') goto yy649;
- if(yych <= ':') goto yy636;
- goto yy634;
+ if(yych <= '9') goto yy729;
+ if(yych <= ':') goto yy715;
+ goto yy713;
}
-yy634:
- YYDEBUG(634, *YYCURSOR);
+yy713:
+ YYDEBUG(713, *YYCURSOR);
{
int tz_not_found;
@@ -9870,252 +13174,313 @@ yy634:
if (*ptr != '\0') {
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
}
TIMELIB_DEINIT;
return TIMELIB_TIME24_WITH_ZONE;
}
-yy635:
- YYDEBUG(635, *YYCURSOR);
+yy714:
+ YYDEBUG(714, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy636;
- if(yych != ':') goto yy634;
- goto yy636;
-yy636:
- YYDEBUG(636, *YYCURSOR);
+ if(yych == '.') goto yy715;
+ if(yych != ':') goto yy713;
+ goto yy715;
+yy715:
+ YYDEBUG(715, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy637;
- if(yych <= '6') goto yy638;
- if(yych <= '9') goto yy639;
+ if(yych <= '5') goto yy716;
+ if(yych <= '6') goto yy717;
+ if(yych <= '9') goto yy718;
goto yy53;
-yy637:
- YYDEBUG(637, *YYCURSOR);
+yy716:
+ YYDEBUG(716, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy643;
- goto yy634;
-yy638:
- YYDEBUG(638, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy722;
+ goto yy713;
+yy717:
+ YYDEBUG(717, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych == '0') goto yy643;
- goto yy634;
-yy639:
- YYDEBUG(639, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych == '0') goto yy722;
+ goto yy713;
+yy718:
+ YYDEBUG(718, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych != '.') goto yy634;
- goto yy640;
-yy640:
- YYDEBUG(640, *YYCURSOR);
+ if(yych != '.') goto yy713;
+ goto yy719;
+yy719:
+ YYDEBUG(719, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy641;
-yy641:
- YYDEBUG(641, *YYCURSOR);
+ goto yy720;
+yy720:
+ YYDEBUG(720, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy642;
-yy642:
- YYDEBUG(642, *YYCURSOR);
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy641;
- goto yy634;
-yy643:
- YYDEBUG(643, *YYCURSOR);
+ goto yy721;
+yy721:
+ YYDEBUG(721, *YYCURSOR);
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy720;
+ goto yy713;
+yy722:
+ YYDEBUG(722, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'A'){
- if(yych <= '-'){
- if(yych != ' ') goto yy634;
- goto yy644;
+ if(yych <= '@'){
+ if(yych <= 0x1F){
+ if(yych != 0x09) goto yy713;
+ goto yy723;
} else {
- if(yych <= '.') goto yy640;
- if(yych <= '@') goto yy634;
- goto yy646;
+ if(yych <= ' ') goto yy723;
+ if(yych == '.') goto yy719;
+ goto yy713;
}
} else {
if(yych <= '`'){
- if(yych == 'P') goto yy646;
- goto yy634;
+ if(yych <= 'A') goto yy725;
+ if(yych == 'P') goto yy725;
+ goto yy713;
} else {
- if(yych <= 'a') goto yy646;
- if(yych == 'p') goto yy646;
- goto yy634;
+ if(yych <= 'a') goto yy725;
+ if(yych == 'p') goto yy725;
+ goto yy713;
}
}
-yy644:
- YYDEBUG(644, *YYCURSOR);
+yy723:
+ YYDEBUG(723, *YYCURSOR);
++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+ if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
yych = *YYCURSOR;
- goto yy645;
-yy645:
- YYDEBUG(645, *YYCURSOR);
- if(yych <= 'O'){
- if(yych <= ' '){
- if(yych <= 0x1F) goto yy53;
- goto yy644;
+ goto yy724;
+yy724:
+ YYDEBUG(724, *YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy723;
+ goto yy53;
} else {
- if(yych != 'A') goto yy53;
- goto yy646;
+ if(yych <= ' ') goto yy723;
+ if(yych <= '@') goto yy53;
+ goto yy725;
}
} else {
- if(yych <= 'a'){
- if(yych <= 'P') goto yy646;
- if(yych <= '`') goto yy53;
- goto yy646;
+ if(yych <= '`'){
+ if(yych != 'P') goto yy53;
+ goto yy725;
} else {
+ if(yych <= 'a') goto yy725;
if(yych != 'p') goto yy53;
- goto yy646;
+ goto yy725;
}
}
-yy646:
- YYDEBUG(646, *YYCURSOR);
+yy725:
+ YYDEBUG(725, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'L'){
if(yych != '.') goto yy53;
- goto yy647;
+ goto yy726;
} else {
- if(yych <= 'M') goto yy648;
- if(yych == 'm') goto yy648;
+ if(yych <= 'M') goto yy727;
+ if(yych == 'm') goto yy727;
goto yy53;
}
-yy647:
- YYDEBUG(647, *YYCURSOR);
+yy726:
+ YYDEBUG(726, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy648;
+ if(yych == 'M') goto yy727;
if(yych != 'm') goto yy53;
- goto yy648;
-yy648:
- YYDEBUG(648, *YYCURSOR);
+ goto yy727;
+yy727:
+ YYDEBUG(727, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '.') goto yy632;
- goto yy631;
-yy649:
- YYDEBUG(649, *YYCURSOR);
+ if(yych <= 0x1F){
+ if(yych <= 0x00) goto yy710;
+ if(yych == 0x09) goto yy710;
+ goto yy53;
+ } else {
+ if(yych <= ' ') goto yy710;
+ if(yych != '.') goto yy53;
+ goto yy728;
+ }
+yy728:
+ YYDEBUG(728, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 0x09){
+ if(yych <= 0x00) goto yy710;
+ if(yych <= 0x08) goto yy53;
+ goto yy710;
+ } else {
+ if(yych == ' ') goto yy710;
+ goto yy53;
+ }
+yy729:
+ YYDEBUG(729, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= '-'){
- if(yych != ' ') goto yy634;
- goto yy650;
+ if(yych <= ':'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy730;
+ if(yych <= 0x1F) goto yy713;
+ goto yy730;
} else {
- if(yych <= '.') goto yy636;
- if(yych == ':') goto yy636;
- goto yy634;
+ if(yych == '.') goto yy715;
+ if(yych <= '9') goto yy713;
+ goto yy715;
}
} else {
- if(yych <= '`'){
- if(yych <= 'A') goto yy652;
- if(yych == 'P') goto yy652;
- goto yy634;
+ if(yych <= 'P'){
+ if(yych == 'A') goto yy732;
+ if(yych <= 'O') goto yy713;
+ goto yy732;
} else {
- if(yych <= 'a') goto yy652;
- if(yych == 'p') goto yy652;
- goto yy634;
+ if(yych <= 'a'){
+ if(yych <= '`') goto yy713;
+ goto yy732;
+ } else {
+ if(yych == 'p') goto yy732;
+ goto yy713;
+ }
}
}
-yy650:
- YYDEBUG(650, *YYCURSOR);
+yy730:
+ YYDEBUG(730, *YYCURSOR);
++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+ if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
yych = *YYCURSOR;
- goto yy651;
-yy651:
- YYDEBUG(651, *YYCURSOR);
- if(yych <= 'O'){
- if(yych <= ' '){
- if(yych <= 0x1F) goto yy53;
- goto yy650;
+ goto yy731;
+yy731:
+ YYDEBUG(731, *YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy730;
+ goto yy53;
} else {
- if(yych != 'A') goto yy53;
- goto yy652;
+ if(yych <= ' ') goto yy730;
+ if(yych <= '@') goto yy53;
+ goto yy732;
}
} else {
- if(yych <= 'a'){
- if(yych <= 'P') goto yy652;
- if(yych <= '`') goto yy53;
- goto yy652;
+ if(yych <= '`'){
+ if(yych != 'P') goto yy53;
+ goto yy732;
} else {
+ if(yych <= 'a') goto yy732;
if(yych != 'p') goto yy53;
- goto yy652;
+ goto yy732;
}
}
-yy652:
- YYDEBUG(652, *YYCURSOR);
+yy732:
+ YYDEBUG(732, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'L'){
if(yych != '.') goto yy53;
- goto yy653;
+ goto yy733;
} else {
- if(yych <= 'M') goto yy654;
- if(yych == 'm') goto yy654;
+ if(yych <= 'M') goto yy734;
+ if(yych == 'm') goto yy734;
goto yy53;
}
-yy653:
- YYDEBUG(653, *YYCURSOR);
+yy733:
+ YYDEBUG(733, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy654;
+ if(yych == 'M') goto yy734;
if(yych != 'm') goto yy53;
- goto yy654;
-yy654:
- YYDEBUG(654, *YYCURSOR);
+ goto yy734;
+yy734:
+ YYDEBUG(734, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '.') goto yy632;
- goto yy631;
-yy655:
- YYDEBUG(655, *YYCURSOR);
+ if(yych <= 0x1F){
+ if(yych <= 0x00) goto yy710;
+ if(yych == 0x09) goto yy710;
+ goto yy53;
+ } else {
+ if(yych <= ' ') goto yy710;
+ if(yych != '.') goto yy53;
+ goto yy735;
+ }
+yy735:
+ YYDEBUG(735, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 0x09){
+ if(yych <= 0x00) goto yy710;
+ if(yych <= 0x08) goto yy53;
+ goto yy710;
+ } else {
+ if(yych == ' ') goto yy710;
+ goto yy53;
+ }
+yy736:
+ YYDEBUG(736, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'V') goto yy656;
+ if(yych == 'V') goto yy737;
if(yych != 'v') goto yy53;
- goto yy656;
-yy656:
- YYDEBUG(656, *YYCURSOR);
+ goto yy737;
+yy737:
+ YYDEBUG(737, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych != 0x09) goto yy698;
+ goto yy738;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'E'){
- if(yych <= 'D') goto yy620;
- goto yy661;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'e') goto yy661;
- goto yy620;
+ if(yych <= 'E') goto yy742;
+ if(yych == 'e') goto yy742;
+ goto yy698;
}
}
-yy657:
- YYDEBUG(657, *YYCURSOR);
+yy738:
+ YYDEBUG(738, *YYCURSOR);
++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
yych = *YYCURSOR;
- goto yy658;
-yy658:
- YYDEBUG(658, *YYCURSOR);
- if(yych <= 0x1F) goto yy53;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy53;
- if(yych >= ':') goto yy53;
- goto yy659;
-yy659:
- YYDEBUG(659, *YYCURSOR);
+ goto yy739;
+yy739:
+ YYDEBUG(739, *YYCURSOR);
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy738;
+ if(yych <= 0x1F) goto yy53;
+ goto yy738;
+ } else {
+ if(yych <= '.'){
+ if(yych <= ',') goto yy53;
+ goto yy738;
+ } else {
+ if(yych <= '/') goto yy53;
+ if(yych >= ':') goto yy53;
+ goto yy740;
+ }
+ }
+yy740:
+ YYDEBUG(740, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) <= '/') goto yy660;
- if(yych <= '9') goto yy666;
- goto yy660;
-yy660:
- YYDEBUG(660, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '/') goto yy741;
+ if(yych <= '9') goto yy747;
+ goto yy741;
+yy741:
+ YYDEBUG(741, *YYCURSOR);
{
DEBUG_OUTPUT("datefull");
@@ -10129,639 +13494,792 @@ yy660:
TIMELIB_DEINIT;
return TIMELIB_DATE_FULL;
}
-yy661:
- YYDEBUG(661, *YYCURSOR);
+yy742:
+ YYDEBUG(742, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy662;
+ if(yych == 'M') goto yy743;
if(yych != 'm') goto yy53;
- goto yy662;
-yy662:
- YYDEBUG(662, *YYCURSOR);
+ goto yy743;
+yy743:
+ YYDEBUG(743, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy663;
+ if(yych == 'B') goto yy744;
if(yych != 'b') goto yy53;
- goto yy663;
-yy663:
- YYDEBUG(663, *YYCURSOR);
+ goto yy744;
+yy744:
+ YYDEBUG(744, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy664;
+ if(yych == 'E') goto yy745;
if(yych != 'e') goto yy53;
- goto yy664;
-yy664:
- YYDEBUG(664, *YYCURSOR);
+ goto yy745;
+yy745:
+ YYDEBUG(745, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy665;
+ if(yych == 'R') goto yy746;
if(yych != 'r') goto yy53;
- goto yy665;
-yy665:
- YYDEBUG(665, *YYCURSOR);
+ goto yy746;
+yy746:
+ YYDEBUG(746, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- if(yych <= '9') goto yy659;
- goto yy620;
-yy666:
- YYDEBUG(666, *YYCURSOR);
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy738;
+ if(yych <= 0x1F) goto yy698;
+ goto yy738;
+ } else {
+ if(yych <= '.'){
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ } else {
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
+ }
+ }
+yy747:
+ YYDEBUG(747, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy660;
- if(yych >= ':') goto yy660;
- goto yy667;
-yy667:
- YYDEBUG(667, *YYCURSOR);
+ if(yych <= '/') goto yy741;
+ if(yych >= ':') goto yy741;
+ goto yy748;
+yy748:
+ YYDEBUG(748, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy660;
- if(yych >= ':') goto yy660;
- goto yy668;
-yy668:
- YYDEBUG(668, *YYCURSOR);
+ if(yych <= '/') goto yy741;
+ if(yych >= ':') goto yy741;
+ goto yy749;
+yy749:
+ YYDEBUG(749, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy660;
-yy669:
- YYDEBUG(669, *YYCURSOR);
+ goto yy741;
+yy750:
+ YYDEBUG(750, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy670;
+ if(yych == 'T') goto yy751;
if(yych != 't') goto yy53;
- goto yy670;
-yy670:
- YYDEBUG(670, *YYCURSOR);
+ goto yy751;
+yy751:
+ YYDEBUG(751, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'O'){
- if(yych <= 'N') goto yy620;
- goto yy671;
+ if(yych <= 'N'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'o') goto yy620;
- goto yy671;
+ if(yych <= 'O') goto yy752;
+ if(yych != 'o') goto yy698;
+ goto yy752;
}
}
-yy671:
- YYDEBUG(671, *YYCURSOR);
+yy752:
+ YYDEBUG(752, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy672;
+ if(yych == 'B') goto yy753;
if(yych != 'b') goto yy53;
- goto yy672;
-yy672:
- YYDEBUG(672, *YYCURSOR);
+ goto yy753;
+yy753:
+ YYDEBUG(753, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy673;
+ if(yych == 'E') goto yy754;
if(yych != 'e') goto yy53;
- goto yy673;
-yy673:
- YYDEBUG(673, *YYCURSOR);
+ goto yy754;
+yy754:
+ YYDEBUG(754, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy665;
- if(yych == 'r') goto yy665;
+ if(yych == 'R') goto yy746;
+ if(yych == 'r') goto yy746;
goto yy53;
-yy674:
- YYDEBUG(674, *YYCURSOR);
+yy755:
+ YYDEBUG(755, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy678;
- if(yych == 'g') goto yy678;
+ if(yych == 'G') goto yy759;
+ if(yych == 'g') goto yy759;
goto yy53;
-yy675:
- YYDEBUG(675, *YYCURSOR);
+yy756:
+ YYDEBUG(756, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy676;
+ if(yych == 'R') goto yy757;
if(yych != 'r') goto yy53;
- goto yy676;
-yy676:
- YYDEBUG(676, *YYCURSOR);
+ goto yy757;
+yy757:
+ YYDEBUG(757, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'I'){
- if(yych <= 'H') goto yy620;
- goto yy677;
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'i') goto yy620;
- goto yy677;
+ if(yych <= 'I') goto yy758;
+ if(yych != 'i') goto yy698;
+ goto yy758;
}
}
-yy677:
- YYDEBUG(677, *YYCURSOR);
+yy758:
+ YYDEBUG(758, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'L') goto yy665;
- if(yych == 'l') goto yy665;
+ if(yych == 'L') goto yy746;
+ if(yych == 'l') goto yy746;
goto yy53;
-yy678:
- YYDEBUG(678, *YYCURSOR);
+yy759:
+ YYDEBUG(759, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'U'){
- if(yych <= 'T') goto yy620;
- goto yy679;
+ if(yych <= 'T'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'u') goto yy620;
- goto yy679;
+ if(yych <= 'U') goto yy760;
+ if(yych != 'u') goto yy698;
+ goto yy760;
}
}
-yy679:
- YYDEBUG(679, *YYCURSOR);
+yy760:
+ YYDEBUG(760, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy680;
+ if(yych == 'S') goto yy761;
if(yych != 's') goto yy53;
- goto yy680;
-yy680:
- YYDEBUG(680, *YYCURSOR);
+ goto yy761;
+yy761:
+ YYDEBUG(761, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy665;
- if(yych == 't') goto yy665;
+ if(yych == 'T') goto yy746;
+ if(yych == 't') goto yy746;
goto yy53;
-yy681:
- YYDEBUG(681, *YYCURSOR);
+yy762:
+ YYDEBUG(762, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
- if(yych == 'L') goto yy688;
+ if(yych == 'L') goto yy769;
if(yych <= 'M') goto yy53;
- goto yy687;
+ goto yy768;
} else {
if(yych <= 'l'){
if(yych <= 'k') goto yy53;
- goto yy688;
+ goto yy769;
} else {
- if(yych == 'n') goto yy687;
+ if(yych == 'n') goto yy768;
goto yy53;
}
}
-yy682:
- YYDEBUG(682, *YYCURSOR);
+yy763:
+ YYDEBUG(763, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy683;
+ if(yych == 'N') goto yy764;
if(yych != 'n') goto yy53;
- goto yy683;
-yy683:
- YYDEBUG(683, *YYCURSOR);
+ goto yy764;
+yy764:
+ YYDEBUG(764, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'U'){
- if(yych <= 'T') goto yy620;
- goto yy684;
+ if(yych <= 'T'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'u') goto yy620;
- goto yy684;
+ if(yych <= 'U') goto yy765;
+ if(yych != 'u') goto yy698;
+ goto yy765;
}
}
-yy684:
- YYDEBUG(684, *YYCURSOR);
+yy765:
+ YYDEBUG(765, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy685;
+ if(yych == 'A') goto yy766;
if(yych != 'a') goto yy53;
- goto yy685;
-yy685:
- YYDEBUG(685, *YYCURSOR);
+ goto yy766;
+yy766:
+ YYDEBUG(766, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy686;
+ if(yych == 'R') goto yy767;
if(yych != 'r') goto yy53;
- goto yy686;
-yy686:
- YYDEBUG(686, *YYCURSOR);
+ goto yy767;
+yy767:
+ YYDEBUG(767, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy665;
- if(yych == 'y') goto yy665;
+ if(yych == 'Y') goto yy746;
+ if(yych == 'y') goto yy746;
goto yy53;
-yy687:
- YYDEBUG(687, *YYCURSOR);
+yy768:
+ YYDEBUG(768, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'E'){
- if(yych <= 'D') goto yy620;
- goto yy665;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'e') goto yy665;
- goto yy620;
+ if(yych <= 'E') goto yy746;
+ if(yych == 'e') goto yy746;
+ goto yy698;
}
}
-yy688:
- YYDEBUG(688, *YYCURSOR);
+yy769:
+ YYDEBUG(769, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'Y'){
- if(yych <= 'X') goto yy620;
- goto yy665;
+ if(yych <= 'X'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'y') goto yy665;
- goto yy620;
+ if(yych <= 'Y') goto yy746;
+ if(yych == 'y') goto yy746;
+ goto yy698;
}
}
-yy689:
- YYDEBUG(689, *YYCURSOR);
+yy770:
+ YYDEBUG(770, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '9') goto yy659;
- if(yych == 'I') goto yy665;
- goto yy620;
+ if(yych <= '9'){
+ if(yych <= '.') goto yy738;
+ if(yych <= '/') goto yy698;
+ goto yy740;
+ } else {
+ if(yych == 'I') goto yy746;
+ goto yy698;
+ }
}
-yy690:
- YYDEBUG(690, *YYCURSOR);
+yy771:
+ YYDEBUG(771, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '9') goto yy659;
- if(yych != 'I') goto yy620;
- goto yy691;
+ if(yych <= '9'){
+ if(yych <= '.') goto yy738;
+ if(yych <= '/') goto yy698;
+ goto yy740;
+ } else {
+ if(yych != 'I') goto yy698;
+ goto yy772;
+ }
}
-yy691:
- YYDEBUG(691, *YYCURSOR);
+yy772:
+ YYDEBUG(772, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '9') goto yy659;
- if(yych == 'I') goto yy665;
- goto yy620;
+ if(yych <= '9'){
+ if(yych <= '.') goto yy738;
+ if(yych <= '/') goto yy698;
+ goto yy740;
+ } else {
+ if(yych == 'I') goto yy746;
+ goto yy698;
+ }
}
-yy692:
- YYDEBUG(692, *YYCURSOR);
+yy773:
+ YYDEBUG(773, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '9') goto yy659;
- if(yych == 'I') goto yy665;
- goto yy620;
+ if(yych <= '9'){
+ if(yych <= '.') goto yy738;
+ if(yych <= '/') goto yy698;
+ goto yy740;
+ } else {
+ if(yych == 'I') goto yy746;
+ goto yy698;
+ }
}
-yy693:
- YYDEBUG(693, *YYCURSOR);
+yy774:
+ YYDEBUG(774, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych == '.') goto yy724;
- goto yy634;
+ if(yych <= '.'){
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ goto yy808;
} else {
- if(yych <= '9') goto yy733;
- if(yych <= ':') goto yy636;
- goto yy634;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy818;
+ if(yych <= ':') goto yy715;
+ goto yy713;
}
-yy694:
- YYDEBUG(694, *YYCURSOR);
+yy775:
+ YYDEBUG(775, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy724;
- goto yy634;
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ if(yych <= '.') goto yy808;
+ goto yy713;
} else {
- if(yych <= '2') goto yy733;
- if(yych <= '9') goto yy649;
- if(yych <= ':') goto yy636;
- goto yy634;
+ if(yych <= '2') goto yy818;
+ if(yych <= '9') goto yy729;
+ if(yych <= ':') goto yy715;
+ goto yy713;
}
-yy695:
- YYDEBUG(695, *YYCURSOR);
+yy776:
+ YYDEBUG(776, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych == '.') goto yy724;
- goto yy634;
+ if(yych <= '.'){
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ goto yy808;
} else {
- if(yych <= '9') goto yy649;
- if(yych <= ':') goto yy636;
- goto yy634;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy729;
+ if(yych <= ':') goto yy715;
+ goto yy713;
}
-yy696:
- YYDEBUG(696, *YYCURSOR);
+yy777:
+ YYDEBUG(777, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy724;
- if(yych == ':') goto yy636;
- goto yy634;
-yy697:
- YYDEBUG(697, *YYCURSOR);
+ if(yych <= '.'){
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ goto yy808;
+ } else {
+ if(yych == ':') goto yy715;
+ goto yy713;
+ }
+yy778:
+ YYDEBUG(778, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy718;
- if(yych == 'e') goto yy718;
+ if(yych == 'E') goto yy801;
+ if(yych == 'e') goto yy801;
goto yy53;
-yy698:
- YYDEBUG(698, *YYCURSOR);
+yy779:
+ YYDEBUG(779, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy715;
- if(yych == 'a') goto yy715;
+ if(yych == 'A') goto yy798;
+ if(yych == 'a') goto yy798;
goto yy53;
-yy699:
- YYDEBUG(699, *YYCURSOR);
+yy780:
+ YYDEBUG(780, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'P') goto yy675;
+ if(yych == 'P') goto yy756;
if(yych <= 'T') goto yy53;
- goto yy674;
+ goto yy755;
} else {
if(yych <= 'p'){
if(yych <= 'o') goto yy53;
- goto yy675;
+ goto yy756;
} else {
- if(yych == 'u') goto yy674;
+ if(yych == 'u') goto yy755;
goto yy53;
}
}
-yy700:
- YYDEBUG(700, *YYCURSOR);
+yy781:
+ YYDEBUG(781, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy708;
- if(yych == 'e') goto yy708;
+ if(yych == 'E') goto yy791;
+ if(yych == 'e') goto yy791;
goto yy53;
-yy701:
- YYDEBUG(701, *YYCURSOR);
+yy782:
+ YYDEBUG(782, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy702;
- if(yych != 'e') goto yy53;
- goto yy702;
-yy702:
- YYDEBUG(702, *YYCURSOR);
+ if(yych == 'E') goto yy785;
+ if(yych == 'e') goto yy785;
+ goto yy53;
+yy783:
+ YYDEBUG(783, *YYCURSOR);
+ ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
+ yych = *YYCURSOR;
+ goto yy784;
+yy784:
+ YYDEBUG(784, *YYCURSOR);
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case 0x09: case ' ': case '-':
+ case '.': goto yy783;
+ case 'A': case 'a': goto yy780;
+ case 'D': case 'd': goto yy782;
+ case 'F': case 'f': goto yy778;
+ case 'I': goto yy697;
+ case 'J': case 'j': goto yy701;
+ case 'M': case 'm': goto yy779;
+ case 'N': case 'n': goto yy704;
+ case 'O': case 'o': goto yy703;
+ case 'S': case 's': goto yy781;
+ case 'V': goto yy699;
+ case 'X': goto yy700;
+ default: goto yy53;
+ }
+yy785:
+ YYDEBUG(785, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy703;
+ if(yych == 'C') goto yy786;
if(yych != 'c') goto yy53;
- goto yy703;
-yy703:
- YYDEBUG(703, *YYCURSOR);
+ goto yy786;
+yy786:
+ YYDEBUG(786, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'E'){
- if(yych <= 'D') goto yy620;
- goto yy704;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'e') goto yy620;
- goto yy704;
+ if(yych <= 'E') goto yy787;
+ if(yych != 'e') goto yy698;
+ goto yy787;
}
}
-yy704:
- YYDEBUG(704, *YYCURSOR);
+yy787:
+ YYDEBUG(787, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy705;
+ if(yych == 'M') goto yy788;
if(yych != 'm') goto yy53;
- goto yy705;
-yy705:
- YYDEBUG(705, *YYCURSOR);
+ goto yy788;
+yy788:
+ YYDEBUG(788, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy706;
+ if(yych == 'B') goto yy789;
if(yych != 'b') goto yy53;
- goto yy706;
-yy706:
- YYDEBUG(706, *YYCURSOR);
+ goto yy789;
+yy789:
+ YYDEBUG(789, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy707;
+ if(yych == 'E') goto yy790;
if(yych != 'e') goto yy53;
- goto yy707;
-yy707:
- YYDEBUG(707, *YYCURSOR);
+ goto yy790;
+yy790:
+ YYDEBUG(790, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy665;
- if(yych == 'r') goto yy665;
+ if(yych == 'R') goto yy746;
+ if(yych == 'r') goto yy746;
goto yy53;
-yy708:
- YYDEBUG(708, *YYCURSOR);
+yy791:
+ YYDEBUG(791, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'P') goto yy709;
+ if(yych == 'P') goto yy792;
if(yych != 'p') goto yy53;
- goto yy709;
-yy709:
- YYDEBUG(709, *YYCURSOR);
+ goto yy792;
+yy792:
+ YYDEBUG(792, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'T'){
- if(yych <= 'S') goto yy620;
- goto yy710;
+ if(yych <= 'S'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 't') goto yy620;
- goto yy710;
+ if(yych <= 'T') goto yy793;
+ if(yych != 't') goto yy698;
+ goto yy793;
}
}
-yy710:
- YYDEBUG(710, *YYCURSOR);
+yy793:
+ YYDEBUG(793, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'E'){
- if(yych <= 'D') goto yy620;
- goto yy711;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'e') goto yy620;
- goto yy711;
+ if(yych <= 'E') goto yy794;
+ if(yych != 'e') goto yy698;
+ goto yy794;
}
}
-yy711:
- YYDEBUG(711, *YYCURSOR);
+yy794:
+ YYDEBUG(794, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy712;
+ if(yych == 'M') goto yy795;
if(yych != 'm') goto yy53;
- goto yy712;
-yy712:
- YYDEBUG(712, *YYCURSOR);
+ goto yy795;
+yy795:
+ YYDEBUG(795, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy713;
+ if(yych == 'B') goto yy796;
if(yych != 'b') goto yy53;
- goto yy713;
-yy713:
- YYDEBUG(713, *YYCURSOR);
+ goto yy796;
+yy796:
+ YYDEBUG(796, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy714;
+ if(yych == 'E') goto yy797;
if(yych != 'e') goto yy53;
- goto yy714;
-yy714:
- YYDEBUG(714, *YYCURSOR);
+ goto yy797;
+yy797:
+ YYDEBUG(797, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy665;
- if(yych == 'r') goto yy665;
+ if(yych == 'R') goto yy746;
+ if(yych == 'r') goto yy746;
goto yy53;
-yy715:
- YYDEBUG(715, *YYCURSOR);
+yy798:
+ YYDEBUG(798, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
- if(yych == 'R') goto yy716;
+ if(yych == 'R') goto yy799;
if(yych <= 'X') goto yy53;
- goto yy665;
+ goto yy746;
} else {
if(yych <= 'r'){
if(yych <= 'q') goto yy53;
- goto yy716;
+ goto yy799;
} else {
- if(yych == 'y') goto yy665;
+ if(yych == 'y') goto yy746;
goto yy53;
}
}
-yy716:
- YYDEBUG(716, *YYCURSOR);
+yy799:
+ YYDEBUG(799, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'C'){
- if(yych <= 'B') goto yy620;
- goto yy717;
+ if(yych <= 'B'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'c') goto yy620;
- goto yy717;
+ if(yych <= 'C') goto yy800;
+ if(yych != 'c') goto yy698;
+ goto yy800;
}
}
-yy717:
- YYDEBUG(717, *YYCURSOR);
+yy800:
+ YYDEBUG(800, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy665;
- if(yych == 'h') goto yy665;
+ if(yych == 'H') goto yy746;
+ if(yych == 'h') goto yy746;
goto yy53;
-yy718:
- YYDEBUG(718, *YYCURSOR);
+yy801:
+ YYDEBUG(801, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy719;
+ if(yych == 'B') goto yy802;
if(yych != 'b') goto yy53;
- goto yy719;
-yy719:
- YYDEBUG(719, *YYCURSOR);
+ goto yy802;
+yy802:
+ YYDEBUG(802, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'R'){
- if(yych <= 'Q') goto yy620;
- goto yy720;
+ if(yych <= 'Q'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'r') goto yy620;
- goto yy720;
+ if(yych <= 'R') goto yy803;
+ if(yych != 'r') goto yy698;
+ goto yy803;
}
}
-yy720:
- YYDEBUG(720, *YYCURSOR);
+yy803:
+ YYDEBUG(803, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'U') goto yy721;
+ if(yych == 'U') goto yy804;
if(yych != 'u') goto yy53;
- goto yy721;
-yy721:
- YYDEBUG(721, *YYCURSOR);
+ goto yy804;
+yy804:
+ YYDEBUG(804, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy722;
+ if(yych == 'A') goto yy805;
if(yych != 'a') goto yy53;
- goto yy722;
-yy722:
- YYDEBUG(722, *YYCURSOR);
+ goto yy805;
+yy805:
+ YYDEBUG(805, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy723;
+ if(yych == 'R') goto yy806;
if(yych != 'r') goto yy53;
- goto yy723;
-yy723:
- YYDEBUG(723, *YYCURSOR);
+ goto yy806;
+yy806:
+ YYDEBUG(806, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy665;
- if(yych == 'y') goto yy665;
+ if(yych == 'Y') goto yy746;
+ if(yych == 'y') goto yy746;
goto yy53;
-yy724:
- YYDEBUG(724, *YYCURSOR);
+yy807:
+ YYDEBUG(807, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy725;
- if(yych <= '6') goto yy726;
- if(yych <= '9') goto yy727;
+ if(yych <= '9') goto yy817;
goto yy53;
-yy725:
- YYDEBUG(725, *YYCURSOR);
+yy808:
+ YYDEBUG(808, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '5') goto yy809;
+ if(yych <= '6') goto yy810;
+ if(yych <= '9') goto yy811;
+ goto yy53;
+yy809:
+ YYDEBUG(809, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy732;
- goto yy634;
-yy726:
- YYDEBUG(726, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy816;
+ goto yy713;
+yy810:
+ YYDEBUG(810, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy640;
- goto yy634;
+ if(yych == '.') goto yy719;
+ goto yy713;
} else {
- if(yych <= '0') goto yy732;
- if(yych <= '9') goto yy728;
- goto yy634;
+ if(yych <= '0') goto yy816;
+ if(yych <= '9') goto yy812;
+ goto yy713;
}
-yy727:
- YYDEBUG(727, *YYCURSOR);
+yy811:
+ YYDEBUG(811, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych >= ':') goto yy634;
- goto yy728;
-yy728:
- YYDEBUG(728, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ if(yych >= ':') goto yy713;
+ goto yy812;
+yy812:
+ YYDEBUG(812, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) <= '/') goto yy729;
- if(yych <= '9') goto yy730;
- goto yy729;
-yy729:
- YYDEBUG(729, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '/') goto yy813;
+ if(yych <= '9') goto yy814;
+ goto yy813;
+yy813:
+ YYDEBUG(813, *YYCURSOR);
{
DEBUG_OUTPUT("pointed date");
@@ -10774,585 +14292,649 @@ yy729:
TIMELIB_DEINIT;
return TIMELIB_DATE_FULL_POINTED;
}
-yy730:
- YYDEBUG(730, *YYCURSOR);
+yy814:
+ YYDEBUG(814, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy729;
- if(yych >= ':') goto yy729;
- goto yy731;
-yy731:
- YYDEBUG(731, *YYCURSOR);
+ if(yych <= '/') goto yy813;
+ if(yych >= ':') goto yy813;
+ goto yy815;
+yy815:
+ YYDEBUG(815, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy729;
-yy732:
- YYDEBUG(732, *YYCURSOR);
+ goto yy813;
+yy816:
+ YYDEBUG(816, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= '-'){
- if(yych == ' ') goto yy644;
- goto yy634;
+ if(yych <= '9'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy723;
+ if(yych <= 0x1F) goto yy713;
+ goto yy723;
} else {
- if(yych <= '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy730;
- goto yy634;
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ goto yy814;
}
} else {
- if(yych <= '`'){
- if(yych <= 'A') goto yy646;
- if(yych == 'P') goto yy646;
- goto yy634;
+ if(yych <= 'P'){
+ if(yych == 'A') goto yy725;
+ if(yych <= 'O') goto yy713;
+ goto yy725;
} else {
- if(yych <= 'a') goto yy646;
- if(yych == 'p') goto yy646;
- goto yy634;
+ if(yych <= 'a'){
+ if(yych <= '`') goto yy713;
+ goto yy725;
+ } else {
+ if(yych == 'p') goto yy725;
+ goto yy713;
+ }
}
}
-yy733:
- YYDEBUG(733, *YYCURSOR);
+yy817:
+ YYDEBUG(817, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy813;
+ if(yych <= '9') goto yy812;
+ goto yy813;
+yy818:
+ YYDEBUG(818, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= '-'){
- if(yych == ' ') goto yy650;
- goto yy634;
+ if(yych <= ':'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy730;
+ if(yych <= 0x1F) goto yy713;
+ goto yy730;
} else {
- if(yych <= '.') goto yy724;
- if(yych == ':') goto yy636;
- goto yy634;
+ if(yych <= '-'){
+ if(yych <= ',') goto yy713;
+ goto yy807;
+ } else {
+ if(yych <= '.') goto yy808;
+ if(yych <= '9') goto yy713;
+ goto yy715;
+ }
}
} else {
- if(yych <= '`'){
- if(yych <= 'A') goto yy652;
- if(yych == 'P') goto yy652;
- goto yy634;
+ if(yych <= 'P'){
+ if(yych == 'A') goto yy732;
+ if(yych <= 'O') goto yy713;
+ goto yy732;
} else {
- if(yych <= 'a') goto yy652;
- if(yych == 'p') goto yy652;
- goto yy634;
+ if(yych <= 'a'){
+ if(yych <= '`') goto yy713;
+ goto yy732;
+ } else {
+ if(yych == 'p') goto yy732;
+ goto yy713;
+ }
}
}
-yy734:
- YYDEBUG(734, *YYCURSOR);
+yy819:
+ YYDEBUG(819, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy773;
- if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy736;
- goto yy53;
-yy735:
- YYDEBUG(735, *YYCURSOR);
+ if(yych <= '.'){
+ if(yych <= ',') goto yy53;
+ if(yych <= '-') goto yy858;
+ goto yy807;
+ } else {
+ if(yych <= '/') goto yy53;
+ if(yych <= '9') goto yy821;
+ goto yy53;
+ }
+yy820:
+ YYDEBUG(820, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy773;
- if(yych <= '/') goto yy53;
- if(yych >= '3') goto yy53;
- goto yy736;
-yy736:
- YYDEBUG(736, *YYCURSOR);
+ if(yych <= '.'){
+ if(yych <= ',') goto yy53;
+ if(yych <= '-') goto yy858;
+ goto yy807;
+ } else {
+ if(yych <= '/') goto yy53;
+ if(yych >= '3') goto yy53;
+ goto yy821;
+ }
+yy821:
+ YYDEBUG(821, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy773;
+ if(yych <= ',') goto yy53;
+ if(yych <= '-') goto yy858;
+ if(yych <= '.') goto yy807;
goto yy53;
-yy737:
- YYDEBUG(737, *YYCURSOR);
+yy822:
+ YYDEBUG(822, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'A') goto yy769;
+ if(yych == 'A') goto yy854;
if(yych <= 'T') goto yy53;
- goto yy768;
+ goto yy853;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
- goto yy769;
+ goto yy854;
} else {
- if(yych == 'u') goto yy768;
+ if(yych == 'u') goto yy853;
goto yy53;
}
}
-yy738:
- YYDEBUG(738, *YYCURSOR);
+yy823:
+ YYDEBUG(823, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy766;
- if(yych == 'e') goto yy766;
+ if(yych == 'E') goto yy851;
+ if(yych == 'e') goto yy851;
goto yy53;
-yy739:
- YYDEBUG(739, *YYCURSOR);
+yy824:
+ YYDEBUG(824, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy763;
- if(yych == 'a') goto yy763;
+ if(yych == 'A') goto yy848;
+ if(yych == 'a') goto yy848;
goto yy53;
-yy740:
- YYDEBUG(740, *YYCURSOR);
+yy825:
+ YYDEBUG(825, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'P') goto yy760;
+ if(yych == 'P') goto yy845;
if(yych <= 'T') goto yy53;
- goto yy759;
+ goto yy844;
} else {
if(yych <= 'p'){
if(yych <= 'o') goto yy53;
- goto yy760;
+ goto yy845;
} else {
- if(yych == 'u') goto yy759;
+ if(yych == 'u') goto yy844;
goto yy53;
}
}
-yy741:
- YYDEBUG(741, *YYCURSOR);
+yy826:
+ YYDEBUG(826, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy756;
- if(yych == 'e') goto yy756;
+ if(yych == 'E') goto yy841;
+ if(yych == 'e') goto yy841;
goto yy53;
-yy742:
- YYDEBUG(742, *YYCURSOR);
+yy827:
+ YYDEBUG(827, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy754;
- if(yych == 'c') goto yy754;
+ if(yych == 'C') goto yy839;
+ if(yych == 'c') goto yy839;
goto yy53;
-yy743:
- YYDEBUG(743, *YYCURSOR);
+yy828:
+ YYDEBUG(828, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy752;
- if(yych == 'o') goto yy752;
+ if(yych == 'O') goto yy837;
+ if(yych == 'o') goto yy837;
goto yy53;
-yy744:
- YYDEBUG(744, *YYCURSOR);
+yy829:
+ YYDEBUG(829, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy745;
+ if(yych == 'E') goto yy830;
if(yych != 'e') goto yy53;
- goto yy745;
-yy745:
- YYDEBUG(745, *YYCURSOR);
+ goto yy830;
+yy830:
+ YYDEBUG(830, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy746;
+ if(yych == 'C') goto yy831;
if(yych != 'c') goto yy53;
- goto yy746;
-yy746:
- YYDEBUG(746, *YYCURSOR);
+ goto yy831;
+yy831:
+ YYDEBUG(831, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych >= '.') goto yy738;
+ goto yy832;
}
} else {
- if(yych <= 'E'){
- if(yych <= '9') goto yy659;
- if(yych <= 'D') goto yy620;
- goto yy704;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'e') goto yy704;
- goto yy620;
+ if(yych <= 'E') goto yy787;
+ if(yych == 'e') goto yy787;
+ goto yy698;
}
}
-yy747:
- YYDEBUG(747, *YYCURSOR);
+yy832:
+ YYDEBUG(832, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy658;
- if(yych <= '0') goto yy748;
- if(yych <= '2') goto yy749;
- if(yych <= '3') goto yy750;
- goto yy658;
-yy748:
- YYDEBUG(748, *YYCURSOR);
+ if(yych <= '/') goto yy739;
+ if(yych <= '0') goto yy833;
+ if(yych <= '2') goto yy834;
+ if(yych <= '3') goto yy835;
+ goto yy739;
+yy833:
+ YYDEBUG(833, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy660;
- if(yych <= '0') goto yy666;
- if(yych <= '9') goto yy751;
- goto yy660;
-yy749:
- YYDEBUG(749, *YYCURSOR);
+ if(yych <= '/') goto yy741;
+ if(yych <= '0') goto yy747;
+ if(yych <= '9') goto yy836;
+ goto yy741;
+yy834:
+ YYDEBUG(834, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy660;
- if(yych <= '9') goto yy751;
- goto yy660;
-yy750:
- YYDEBUG(750, *YYCURSOR);
+ if(yych <= '/') goto yy741;
+ if(yych <= '9') goto yy836;
+ goto yy741;
+yy835:
+ YYDEBUG(835, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy660;
- if(yych <= '1') goto yy751;
- if(yych <= '9') goto yy666;
- goto yy660;
-yy751:
- YYDEBUG(751, *YYCURSOR);
+ if(yych <= '/') goto yy741;
+ if(yych <= '1') goto yy836;
+ if(yych <= '9') goto yy747;
+ goto yy741;
+yy836:
+ YYDEBUG(836, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy660;
- if(yych <= '9') goto yy667;
- goto yy660;
-yy752:
- YYDEBUG(752, *YYCURSOR);
+ if(yych <= '/') goto yy741;
+ if(yych <= '9') goto yy748;
+ goto yy741;
+yy837:
+ YYDEBUG(837, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'V') goto yy753;
+ if(yych == 'V') goto yy838;
if(yych != 'v') goto yy53;
- goto yy753;
-yy753:
- YYDEBUG(753, *YYCURSOR);
+ goto yy838;
+yy838:
+ YYDEBUG(838, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'E'){
- if(yych <= '9') goto yy659;
- if(yych <= 'D') goto yy620;
- goto yy661;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'e') goto yy661;
- goto yy620;
+ if(yych <= 'E') goto yy742;
+ if(yych == 'e') goto yy742;
+ goto yy698;
}
}
-yy754:
- YYDEBUG(754, *YYCURSOR);
+yy839:
+ YYDEBUG(839, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy755;
+ if(yych == 'T') goto yy840;
if(yych != 't') goto yy53;
- goto yy755;
-yy755:
- YYDEBUG(755, *YYCURSOR);
+ goto yy840;
+yy840:
+ YYDEBUG(840, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'O'){
- if(yych <= '9') goto yy659;
- if(yych <= 'N') goto yy620;
- goto yy671;
+ if(yych <= 'N'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'o') goto yy671;
- goto yy620;
+ if(yych <= 'O') goto yy752;
+ if(yych == 'o') goto yy752;
+ goto yy698;
}
}
-yy756:
- YYDEBUG(756, *YYCURSOR);
+yy841:
+ YYDEBUG(841, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'P') goto yy757;
+ if(yych == 'P') goto yy842;
if(yych != 'p') goto yy53;
- goto yy757;
-yy757:
- YYDEBUG(757, *YYCURSOR);
+ goto yy842;
+yy842:
+ YYDEBUG(842, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'T'){
- if(yych <= '9') goto yy659;
- if(yych <= 'S') goto yy620;
- goto yy758;
+ if(yych <= 'S'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 't') goto yy620;
- goto yy758;
+ if(yych <= 'T') goto yy843;
+ if(yych != 't') goto yy698;
+ goto yy843;
}
}
-yy758:
- YYDEBUG(758, *YYCURSOR);
+yy843:
+ YYDEBUG(843, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'E'){
- if(yych <= '9') goto yy659;
- if(yych <= 'D') goto yy620;
- goto yy711;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'e') goto yy711;
- goto yy620;
+ if(yych <= 'E') goto yy794;
+ if(yych == 'e') goto yy794;
+ goto yy698;
}
}
-yy759:
- YYDEBUG(759, *YYCURSOR);
+yy844:
+ YYDEBUG(844, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy762;
- if(yych == 'g') goto yy762;
+ if(yych == 'G') goto yy847;
+ if(yych == 'g') goto yy847;
goto yy53;
-yy760:
- YYDEBUG(760, *YYCURSOR);
+yy845:
+ YYDEBUG(845, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy761;
+ if(yych == 'R') goto yy846;
if(yych != 'r') goto yy53;
- goto yy761;
-yy761:
- YYDEBUG(761, *YYCURSOR);
+ goto yy846;
+yy846:
+ YYDEBUG(846, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'I'){
- if(yych <= '9') goto yy659;
- if(yych <= 'H') goto yy620;
- goto yy677;
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'i') goto yy677;
- goto yy620;
+ if(yych <= 'I') goto yy758;
+ if(yych == 'i') goto yy758;
+ goto yy698;
}
}
-yy762:
- YYDEBUG(762, *YYCURSOR);
+yy847:
+ YYDEBUG(847, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'U'){
- if(yych <= '9') goto yy659;
- if(yych <= 'T') goto yy620;
- goto yy679;
+ if(yych <= 'T'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'u') goto yy679;
- goto yy620;
+ if(yych <= 'U') goto yy760;
+ if(yych == 'u') goto yy760;
+ goto yy698;
}
}
-yy763:
- YYDEBUG(763, *YYCURSOR);
+yy848:
+ YYDEBUG(848, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
- if(yych == 'R') goto yy764;
+ if(yych == 'R') goto yy849;
if(yych <= 'X') goto yy53;
- goto yy765;
+ goto yy850;
} else {
if(yych <= 'r'){
if(yych <= 'q') goto yy53;
- goto yy764;
+ goto yy849;
} else {
- if(yych == 'y') goto yy765;
+ if(yych == 'y') goto yy850;
goto yy53;
}
}
-yy764:
- YYDEBUG(764, *YYCURSOR);
+yy849:
+ YYDEBUG(849, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'C'){
- if(yych <= '9') goto yy659;
- if(yych <= 'B') goto yy620;
- goto yy717;
+ if(yych <= 'B'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'c') goto yy717;
- goto yy620;
+ if(yych <= 'C') goto yy800;
+ if(yych == 'c') goto yy800;
+ goto yy698;
}
}
-yy765:
- YYDEBUG(765, *YYCURSOR);
+yy850:
+ YYDEBUG(850, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '-'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= ',') goto yy657;
- goto yy747;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- if(yych <= '9') goto yy659;
- goto yy620;
+ if(yych <= '.'){
+ if(yych <= '-') goto yy832;
+ goto yy738;
+ } else {
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
+ }
}
-yy766:
- YYDEBUG(766, *YYCURSOR);
+yy851:
+ YYDEBUG(851, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy767;
+ if(yych == 'B') goto yy852;
if(yych != 'b') goto yy53;
- goto yy767;
-yy767:
- YYDEBUG(767, *YYCURSOR);
+ goto yy852;
+yy852:
+ YYDEBUG(852, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'R'){
- if(yych <= '9') goto yy659;
- if(yych <= 'Q') goto yy620;
- goto yy720;
+ if(yych <= 'Q'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'r') goto yy720;
- goto yy620;
+ if(yych <= 'R') goto yy803;
+ if(yych == 'r') goto yy803;
+ goto yy698;
}
}
-yy768:
- YYDEBUG(768, *YYCURSOR);
+yy853:
+ YYDEBUG(853, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
- if(yych == 'L') goto yy772;
+ if(yych == 'L') goto yy857;
if(yych <= 'M') goto yy53;
- goto yy771;
+ goto yy856;
} else {
if(yych <= 'l'){
if(yych <= 'k') goto yy53;
- goto yy772;
+ goto yy857;
} else {
- if(yych == 'n') goto yy771;
+ if(yych == 'n') goto yy856;
goto yy53;
}
}
-yy769:
- YYDEBUG(769, *YYCURSOR);
+yy854:
+ YYDEBUG(854, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy770;
+ if(yych == 'N') goto yy855;
if(yych != 'n') goto yy53;
- goto yy770;
-yy770:
- YYDEBUG(770, *YYCURSOR);
+ goto yy855;
+yy855:
+ YYDEBUG(855, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'U'){
- if(yych <= '9') goto yy659;
- if(yych <= 'T') goto yy620;
- goto yy684;
+ if(yych <= 'T'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'u') goto yy684;
- goto yy620;
+ if(yych <= 'U') goto yy765;
+ if(yych == 'u') goto yy765;
+ goto yy698;
}
}
-yy771:
- YYDEBUG(771, *YYCURSOR);
+yy856:
+ YYDEBUG(856, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'E'){
- if(yych <= '9') goto yy659;
- if(yych <= 'D') goto yy620;
- goto yy665;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'e') goto yy665;
- goto yy620;
+ if(yych <= 'E') goto yy746;
+ if(yych == 'e') goto yy746;
+ goto yy698;
}
}
-yy772:
- YYDEBUG(772, *YYCURSOR);
+yy857:
+ YYDEBUG(857, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'Y'){
- if(yych <= '9') goto yy659;
- if(yych <= 'X') goto yy620;
- goto yy665;
+ if(yych <= 'X'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'y') goto yy665;
- goto yy620;
+ if(yych <= 'Y') goto yy746;
+ if(yych == 'y') goto yy746;
+ goto yy698;
}
}
-yy773:
- YYDEBUG(773, *YYCURSOR);
+yy858:
+ YYDEBUG(858, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '2') goto yy774;
- if(yych <= '3') goto yy776;
- if(yych <= '9') goto yy777;
+ if(yych <= '2') goto yy859;
+ if(yych <= '3') goto yy861;
+ if(yych <= '9') goto yy862;
goto yy53;
-yy774:
- YYDEBUG(774, *YYCURSOR);
+yy859:
+ YYDEBUG(859, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych <= '/') goto yy775;
- if(yych <= '9') goto yy777;
- if(yych >= 'n') goto yy779;
- goto yy775;
+ if(yych <= '/') goto yy860;
+ if(yych <= '9') goto yy868;
+ if(yych >= 'n') goto yy864;
+ goto yy860;
} else {
if(yych <= 'r'){
- if(yych >= 'r') goto yy780;
- goto yy775;
+ if(yych >= 'r') goto yy865;
+ goto yy860;
} else {
- if(yych <= 's') goto yy778;
- if(yych <= 't') goto yy781;
- goto yy775;
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
}
}
-yy775:
- YYDEBUG(775, *YYCURSOR);
+yy860:
+ YYDEBUG(860, *YYCURSOR);
{
DEBUG_OUTPUT("gnudateshort");
@@ -11365,87 +14947,116 @@ yy775:
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
-yy776:
- YYDEBUG(776, *YYCURSOR);
+yy861:
+ YYDEBUG(861, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych <= '/') goto yy775;
- if(yych <= '1') goto yy777;
- if(yych <= 'm') goto yy775;
- goto yy779;
+ if(yych <= '1'){
+ if(yych <= '/') goto yy860;
+ goto yy868;
+ } else {
+ if(yych <= '9') goto yy812;
+ if(yych <= 'm') goto yy860;
+ goto yy864;
+ }
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy775;
- goto yy780;
+ if(yych <= 'q') goto yy860;
+ goto yy865;
} else {
- if(yych <= 's') goto yy778;
- if(yych <= 't') goto yy781;
- goto yy775;
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
}
}
-yy777:
- YYDEBUG(777, *YYCURSOR);
+yy862:
+ YYDEBUG(862, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'q'){
- if(yych == 'n') goto yy779;
- goto yy775;
+ if(yych <= 'n'){
+ if(yych <= '/') goto yy860;
+ if(yych <= '9') goto yy812;
+ if(yych <= 'm') goto yy860;
+ goto yy864;
} else {
- if(yych <= 'r') goto yy780;
- if(yych <= 's') goto yy778;
- if(yych <= 't') goto yy781;
- goto yy775;
+ if(yych <= 'r'){
+ if(yych <= 'q') goto yy860;
+ goto yy865;
+ } else {
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
+ }
}
-yy778:
- YYDEBUG(778, *YYCURSOR);
+yy863:
+ YYDEBUG(863, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 't') goto yy782;
+ if(yych == 't') goto yy867;
goto yy53;
-yy779:
- YYDEBUG(779, *YYCURSOR);
+yy864:
+ YYDEBUG(864, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy782;
+ if(yych == 'd') goto yy867;
goto yy53;
-yy780:
- YYDEBUG(780, *YYCURSOR);
+yy865:
+ YYDEBUG(865, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy782;
+ if(yych == 'd') goto yy867;
goto yy53;
-yy781:
- YYDEBUG(781, *YYCURSOR);
+yy866:
+ YYDEBUG(866, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != 'h') goto yy53;
- goto yy782;
-yy782:
- YYDEBUG(782, *YYCURSOR);
+ goto yy867;
+yy867:
+ YYDEBUG(867, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy775;
-yy783:
- YYDEBUG(783, *YYCURSOR);
+ goto yy860;
+yy868:
+ YYDEBUG(868, *YYCURSOR);
+ yyaccept = 12;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'n'){
+ if(yych <= '/') goto yy860;
+ if(yych <= '9') goto yy814;
+ if(yych <= 'm') goto yy860;
+ goto yy864;
+ } else {
+ if(yych <= 'r'){
+ if(yych <= 'q') goto yy860;
+ goto yy865;
+ } else {
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
+ }
+ }
+yy869:
+ YYDEBUG(869, *YYCURSOR);
yyaccept = 13;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
if(yych <= '/'){
- if(yych >= '/') goto yy837;
- goto yy784;
+ if(yych >= '/') goto yy923;
+ goto yy870;
} else {
- if(yych <= '9') goto yy786;
- if(yych >= 'n') goto yy834;
- goto yy784;
+ if(yych <= '9') goto yy872;
+ if(yych >= 'n') goto yy920;
+ goto yy870;
}
} else {
if(yych <= 'r'){
- if(yych >= 'r') goto yy835;
- goto yy784;
+ if(yych >= 'r') goto yy921;
+ goto yy870;
} else {
- if(yych <= 's') goto yy833;
- if(yych <= 't') goto yy836;
- goto yy784;
+ if(yych <= 's') goto yy919;
+ if(yych <= 't') goto yy922;
+ goto yy870;
}
}
-yy784:
- YYDEBUG(784, *YYCURSOR);
+yy870:
+ YYDEBUG(870, *YYCURSOR);
{
DEBUG_OUTPUT("americanshort | american");
@@ -11460,252 +15071,258 @@ yy784:
TIMELIB_DEINIT;
return TIMELIB_AMERICAN;
}
-yy785:
- YYDEBUG(785, *YYCURSOR);
+yy871:
+ YYDEBUG(871, *YYCURSOR);
yyaccept = 13;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
if(yych <= '/'){
- if(yych <= '.') goto yy784;
- goto yy837;
+ if(yych <= '.') goto yy870;
+ goto yy923;
} else {
- if(yych <= '1') goto yy786;
- if(yych <= 'm') goto yy784;
- goto yy834;
+ if(yych <= '1') goto yy872;
+ if(yych <= 'm') goto yy870;
+ goto yy920;
}
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy784;
- goto yy835;
+ if(yych <= 'q') goto yy870;
+ goto yy921;
} else {
- if(yych <= 's') goto yy833;
- if(yych <= 't') goto yy836;
- goto yy784;
+ if(yych <= 's') goto yy919;
+ if(yych <= 't') goto yy922;
+ goto yy870;
}
}
-yy786:
- YYDEBUG(786, *YYCURSOR);
+yy872:
+ YYDEBUG(872, *YYCURSOR);
yyaccept = 13;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych == '/') goto yy837;
- if(yych <= 'm') goto yy784;
- goto yy834;
+ if(yych == '/') goto yy923;
+ if(yych <= 'm') goto yy870;
+ goto yy920;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy784;
- goto yy835;
+ if(yych <= 'q') goto yy870;
+ goto yy921;
} else {
- if(yych <= 's') goto yy833;
- if(yych <= 't') goto yy836;
- goto yy784;
+ if(yych <= 's') goto yy919;
+ if(yych <= 't') goto yy922;
+ goto yy870;
}
}
-yy787:
- YYDEBUG(787, *YYCURSOR);
+yy873:
+ YYDEBUG(873, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'A') goto yy832;
+ if(yych == 'A') goto yy918;
if(yych <= 'T') goto yy53;
- goto yy831;
+ goto yy917;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
- goto yy832;
+ goto yy918;
} else {
- if(yych == 'u') goto yy831;
+ if(yych == 'u') goto yy917;
goto yy53;
}
}
-yy788:
- YYDEBUG(788, *YYCURSOR);
+yy874:
+ YYDEBUG(874, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy830;
- if(yych == 'e') goto yy830;
+ if(yych == 'E') goto yy916;
+ if(yych == 'e') goto yy916;
goto yy53;
-yy789:
- YYDEBUG(789, *YYCURSOR);
+yy875:
+ YYDEBUG(875, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy829;
- if(yych == 'a') goto yy829;
+ if(yych == 'A') goto yy915;
+ if(yych == 'a') goto yy915;
goto yy53;
-yy790:
- YYDEBUG(790, *YYCURSOR);
+yy876:
+ YYDEBUG(876, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'P') goto yy828;
+ if(yych == 'P') goto yy914;
if(yych <= 'T') goto yy53;
- goto yy827;
+ goto yy913;
} else {
if(yych <= 'p'){
if(yych <= 'o') goto yy53;
- goto yy828;
+ goto yy914;
} else {
- if(yych == 'u') goto yy827;
+ if(yych == 'u') goto yy913;
goto yy53;
}
}
-yy791:
- YYDEBUG(791, *YYCURSOR);
+yy877:
+ YYDEBUG(877, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy825;
- if(yych == 'e') goto yy825;
+ if(yych == 'E') goto yy911;
+ if(yych == 'e') goto yy911;
goto yy53;
-yy792:
- YYDEBUG(792, *YYCURSOR);
+yy878:
+ YYDEBUG(878, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy824;
- if(yych == 'c') goto yy824;
+ if(yych == 'C') goto yy910;
+ if(yych == 'c') goto yy910;
goto yy53;
-yy793:
- YYDEBUG(793, *YYCURSOR);
+yy879:
+ YYDEBUG(879, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy823;
- if(yych == 'o') goto yy823;
+ if(yych == 'O') goto yy909;
+ if(yych == 'o') goto yy909;
goto yy53;
-yy794:
- YYDEBUG(794, *YYCURSOR);
+yy880:
+ YYDEBUG(880, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy795;
+ if(yych == 'E') goto yy881;
if(yych != 'e') goto yy53;
- goto yy795;
-yy795:
- YYDEBUG(795, *YYCURSOR);
+ goto yy881;
+yy881:
+ YYDEBUG(881, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy796;
+ if(yych == 'C') goto yy882;
if(yych != 'c') goto yy53;
- goto yy796;
-yy796:
- YYDEBUG(796, *YYCURSOR);
+ goto yy882;
+yy882:
+ YYDEBUG(882, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '/') goto yy53;
- goto yy797;
-yy797:
- YYDEBUG(797, *YYCURSOR);
+ goto yy883;
+yy883:
+ YYDEBUG(883, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy798;
-yy798:
- YYDEBUG(798, *YYCURSOR);
+ goto yy884;
+yy884:
+ YYDEBUG(884, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy799;
-yy799:
- YYDEBUG(799, *YYCURSOR);
+ goto yy885;
+yy885:
+ YYDEBUG(885, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy800;
-yy800:
- YYDEBUG(800, *YYCURSOR);
+ goto yy886;
+yy886:
+ YYDEBUG(886, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy801;
-yy801:
- YYDEBUG(801, *YYCURSOR);
+ goto yy887;
+yy887:
+ YYDEBUG(887, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy802;
-yy802:
- YYDEBUG(802, *YYCURSOR);
+ goto yy888;
+yy888:
+ YYDEBUG(888, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy803;
- if(yych <= '2') goto yy804;
+ if(yych <= '1') goto yy889;
+ if(yych <= '2') goto yy890;
goto yy53;
-yy803:
- YYDEBUG(803, *YYCURSOR);
+yy889:
+ YYDEBUG(889, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy805;
+ if(yych <= '9') goto yy891;
goto yy53;
-yy804:
- YYDEBUG(804, *YYCURSOR);
+yy890:
+ YYDEBUG(890, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= '4') goto yy53;
- goto yy805;
-yy805:
- YYDEBUG(805, *YYCURSOR);
+ goto yy891;
+yy891:
+ YYDEBUG(891, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy806;
-yy806:
- YYDEBUG(806, *YYCURSOR);
+ goto yy892;
+yy892:
+ YYDEBUG(892, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= '6') goto yy53;
- goto yy807;
-yy807:
- YYDEBUG(807, *YYCURSOR);
+ goto yy893;
+yy893:
+ YYDEBUG(893, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy808;
-yy808:
- YYDEBUG(808, *YYCURSOR);
+ goto yy894;
+yy894:
+ YYDEBUG(894, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy809;
-yy809:
- YYDEBUG(809, *YYCURSOR);
+ goto yy895;
+yy895:
+ YYDEBUG(895, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy810;
- if(yych <= '6') goto yy811;
+ if(yych <= '5') goto yy896;
+ if(yych <= '6') goto yy897;
goto yy53;
-yy810:
- YYDEBUG(810, *YYCURSOR);
+yy896:
+ YYDEBUG(896, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy812;
+ if(yych <= '9') goto yy898;
goto yy53;
-yy811:
- YYDEBUG(811, *YYCURSOR);
+yy897:
+ YYDEBUG(897, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '0') goto yy53;
- goto yy812;
-yy812:
- YYDEBUG(812, *YYCURSOR);
+ goto yy898;
+yy898:
+ YYDEBUG(898, *YYCURSOR);
yych = *++YYCURSOR;
+ if(yych == 0x09) goto yy899;
if(yych != ' ') goto yy53;
- goto yy813;
-yy813:
- YYDEBUG(813, *YYCURSOR);
+ goto yy899;
+yy899:
+ YYDEBUG(899, *YYCURSOR);
++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
yych = *YYCURSOR;
- goto yy814;
-yy814:
- YYDEBUG(814, *YYCURSOR);
- if(yych <= '*'){
- if(yych == ' ') goto yy813;
- goto yy53;
+ goto yy900;
+yy900:
+ YYDEBUG(900, *YYCURSOR);
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy899;
+ if(yych <= 0x1F) goto yy53;
+ goto yy899;
} else {
- if(yych == ',') goto yy53;
- if(yych >= '.') goto yy53;
- goto yy815;
+ if(yych <= '+'){
+ if(yych <= '*') goto yy53;
+ goto yy901;
+ } else {
+ if(yych != '-') goto yy53;
+ goto yy901;
+ }
}
-yy815:
- YYDEBUG(815, *YYCURSOR);
+yy901:
+ YYDEBUG(901, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy816;
- if(yych <= '2') goto yy818;
- if(yych <= '9') goto yy819;
+ if(yych <= '1') goto yy902;
+ if(yych <= '2') goto yy904;
+ if(yych <= '9') goto yy905;
goto yy53;
-yy816:
- YYDEBUG(816, *YYCURSOR);
+yy902:
+ YYDEBUG(902, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) <= '/') goto yy817;
- if(yych <= '9') goto yy819;
- if(yych <= ':') goto yy820;
- goto yy817;
-yy817:
- YYDEBUG(817, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '/') goto yy903;
+ if(yych <= '9') goto yy905;
+ if(yych <= ':') goto yy906;
+ goto yy903;
+yy903:
+ YYDEBUG(903, *YYCURSOR);
{
int tz_not_found;
@@ -11720,261 +15337,258 @@ yy817:
s->time->i = timelib_get_nr((char **) &ptr, 2);
s->time->s = timelib_get_nr((char **) &ptr, 2);
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
TIMELIB_DEINIT;
return TIMELIB_CLF;
}
-yy818:
- YYDEBUG(818, *YYCURSOR);
+yy904:
+ YYDEBUG(904, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '5'){
- if(yych <= '/') goto yy817;
- if(yych >= '4') goto yy821;
- goto yy819;
+ if(yych <= '/') goto yy903;
+ if(yych >= '4') goto yy907;
+ goto yy905;
} else {
- if(yych <= '9') goto yy822;
- if(yych <= ':') goto yy820;
- goto yy817;
+ if(yych <= '9') goto yy908;
+ if(yych <= ':') goto yy906;
+ goto yy903;
}
-yy819:
- YYDEBUG(819, *YYCURSOR);
+yy905:
+ YYDEBUG(905, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy817;
- if(yych <= '5') goto yy821;
- if(yych <= '9') goto yy822;
- if(yych >= ';') goto yy817;
- goto yy820;
-yy820:
- YYDEBUG(820, *YYCURSOR);
+ if(yych <= '/') goto yy903;
+ if(yych <= '5') goto yy907;
+ if(yych <= '9') goto yy908;
+ if(yych >= ';') goto yy903;
+ goto yy906;
+yy906:
+ YYDEBUG(906, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy817;
- if(yych <= '5') goto yy821;
- if(yych <= '9') goto yy822;
- goto yy817;
-yy821:
- YYDEBUG(821, *YYCURSOR);
+ if(yych <= '/') goto yy903;
+ if(yych <= '5') goto yy907;
+ if(yych <= '9') goto yy908;
+ goto yy903;
+yy907:
+ YYDEBUG(907, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy817;
- if(yych >= ':') goto yy817;
- goto yy822;
-yy822:
- YYDEBUG(822, *YYCURSOR);
+ if(yych <= '/') goto yy903;
+ if(yych >= ':') goto yy903;
+ goto yy908;
+yy908:
+ YYDEBUG(908, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy817;
-yy823:
- YYDEBUG(823, *YYCURSOR);
+ goto yy903;
+yy909:
+ YYDEBUG(909, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'V') goto yy796;
- if(yych == 'v') goto yy796;
+ if(yych == 'V') goto yy882;
+ if(yych == 'v') goto yy882;
goto yy53;
-yy824:
- YYDEBUG(824, *YYCURSOR);
+yy910:
+ YYDEBUG(910, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy796;
- if(yych == 't') goto yy796;
+ if(yych == 'T') goto yy882;
+ if(yych == 't') goto yy882;
goto yy53;
-yy825:
- YYDEBUG(825, *YYCURSOR);
+yy911:
+ YYDEBUG(911, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'P') goto yy826;
+ if(yych == 'P') goto yy912;
if(yych != 'p') goto yy53;
- goto yy826;
-yy826:
- YYDEBUG(826, *YYCURSOR);
+ goto yy912;
+yy912:
+ YYDEBUG(912, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'S'){
- if(yych == '/') goto yy797;
+ if(yych == '/') goto yy883;
goto yy53;
} else {
- if(yych <= 'T') goto yy796;
- if(yych == 't') goto yy796;
+ if(yych <= 'T') goto yy882;
+ if(yych == 't') goto yy882;
goto yy53;
}
-yy827:
- YYDEBUG(827, *YYCURSOR);
+yy913:
+ YYDEBUG(913, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy796;
- if(yych == 'g') goto yy796;
+ if(yych == 'G') goto yy882;
+ if(yych == 'g') goto yy882;
goto yy53;
-yy828:
- YYDEBUG(828, *YYCURSOR);
+yy914:
+ YYDEBUG(914, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy796;
- if(yych == 'r') goto yy796;
+ if(yych == 'R') goto yy882;
+ if(yych == 'r') goto yy882;
goto yy53;
-yy829:
- YYDEBUG(829, *YYCURSOR);
+yy915:
+ YYDEBUG(915, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
- if(yych == 'R') goto yy796;
+ if(yych == 'R') goto yy882;
if(yych <= 'X') goto yy53;
- goto yy796;
+ goto yy882;
} else {
if(yych <= 'r'){
if(yych <= 'q') goto yy53;
- goto yy796;
+ goto yy882;
} else {
- if(yych == 'y') goto yy796;
+ if(yych == 'y') goto yy882;
goto yy53;
}
}
-yy830:
- YYDEBUG(830, *YYCURSOR);
+yy916:
+ YYDEBUG(916, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy796;
- if(yych == 'b') goto yy796;
+ if(yych == 'B') goto yy882;
+ if(yych == 'b') goto yy882;
goto yy53;
-yy831:
- YYDEBUG(831, *YYCURSOR);
+yy917:
+ YYDEBUG(917, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
- if(yych == 'L') goto yy796;
+ if(yych == 'L') goto yy882;
if(yych <= 'M') goto yy53;
- goto yy796;
+ goto yy882;
} else {
if(yych <= 'l'){
if(yych <= 'k') goto yy53;
- goto yy796;
+ goto yy882;
} else {
- if(yych == 'n') goto yy796;
+ if(yych == 'n') goto yy882;
goto yy53;
}
}
-yy832:
- YYDEBUG(832, *YYCURSOR);
+yy918:
+ YYDEBUG(918, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy796;
- if(yych == 'n') goto yy796;
+ if(yych == 'N') goto yy882;
+ if(yych == 'n') goto yy882;
goto yy53;
-yy833:
- YYDEBUG(833, *YYCURSOR);
+yy919:
+ YYDEBUG(919, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 't') goto yy842;
+ if(yych == 't') goto yy928;
goto yy53;
-yy834:
- YYDEBUG(834, *YYCURSOR);
+yy920:
+ YYDEBUG(920, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy842;
+ if(yych == 'd') goto yy928;
goto yy53;
-yy835:
- YYDEBUG(835, *YYCURSOR);
+yy921:
+ YYDEBUG(921, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy842;
+ if(yych == 'd') goto yy928;
goto yy53;
-yy836:
- YYDEBUG(836, *YYCURSOR);
+yy922:
+ YYDEBUG(922, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'h') goto yy842;
+ if(yych == 'h') goto yy928;
goto yy53;
-yy837:
- YYDEBUG(837, *YYCURSOR);
+yy923:
+ YYDEBUG(923, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy838;
-yy838:
- YYDEBUG(838, *YYCURSOR);
+ goto yy924;
+yy924:
+ YYDEBUG(924, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy784;
- if(yych >= ':') goto yy784;
- goto yy839;
-yy839:
- YYDEBUG(839, *YYCURSOR);
+ if(yych <= '/') goto yy870;
+ if(yych >= ':') goto yy870;
+ goto yy925;
+yy925:
+ YYDEBUG(925, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy784;
- if(yych >= ':') goto yy784;
- goto yy840;
-yy840:
- YYDEBUG(840, *YYCURSOR);
+ if(yych <= '/') goto yy870;
+ if(yych >= ':') goto yy870;
+ goto yy926;
+yy926:
+ YYDEBUG(926, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy784;
- if(yych >= ':') goto yy784;
- goto yy841;
-yy841:
- YYDEBUG(841, *YYCURSOR);
+ if(yych <= '/') goto yy870;
+ if(yych >= ':') goto yy870;
+ goto yy927;
+yy927:
+ YYDEBUG(927, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy784;
-yy842:
- YYDEBUG(842, *YYCURSOR);
+ goto yy870;
+yy928:
+ YYDEBUG(928, *YYCURSOR);
yyaccept = 13;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '/') goto yy837;
- goto yy784;
-yy843:
- YYDEBUG(843, *YYCURSOR);
+ if(yych == '/') goto yy923;
+ goto yy870;
+yy929:
+ YYDEBUG(929, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '-') goto yy617;
- if(yych <= '.') goto yy845;
- if(yych >= '0') goto yy617;
- goto yy844;
-yy844:
- YYDEBUG(844, *YYCURSOR);
+ if(yych <= ','){
+ if(yych == 0x09) goto yy931;
+ goto yy784;
+ } else {
+ if(yych <= '.') goto yy931;
+ if(yych >= '0') goto yy784;
+ goto yy930;
+ }
+yy930:
+ YYDEBUG(930, *YYCURSOR);
yych = *++YYCURSOR;
YYDEBUG(-1, yych);
switch(yych){
- case 'A': case 'a': goto yy790;
- case 'D': case 'd': goto yy794;
- case 'F': case 'f': goto yy788;
- case 'J': case 'j': goto yy787;
- case 'M': case 'm': goto yy789;
- case 'N': case 'n': goto yy793;
- case 'O': case 'o': goto yy792;
- case 'S': case 's': goto yy791;
+ case 'A': case 'a': goto yy876;
+ case 'D': case 'd': goto yy880;
+ case 'F': case 'f': goto yy874;
+ case 'J': case 'j': goto yy873;
+ case 'M': case 'm': goto yy875;
+ case 'N': case 'n': goto yy879;
+ case 'O': case 'o': goto yy878;
+ case 'S': case 's': goto yy877;
default: goto yy53;
}
-yy845:
- YYDEBUG(845, *YYCURSOR);
+yy931:
+ YYDEBUG(931, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy617;
- if(yych <= '0') goto yy846;
- if(yych <= '1') goto yy847;
- if(yych <= '9') goto yy848;
- goto yy617;
-yy846:
- YYDEBUG(846, *YYCURSOR);
+ if(yych <= '/') goto yy784;
+ if(yych <= '0') goto yy932;
+ if(yych <= '1') goto yy933;
+ if(yych <= '9') goto yy934;
+ goto yy784;
+yy932:
+ YYDEBUG(932, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '.') goto yy849;
+ if(yych <= ',') goto yy53;
+ if(yych <= '.') goto yy807;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy848;
+ if(yych <= '9') goto yy934;
goto yy53;
-yy847:
- YYDEBUG(847, *YYCURSOR);
+yy933:
+ YYDEBUG(933, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '.') goto yy849;
+ if(yych <= ',') goto yy53;
+ if(yych <= '.') goto yy807;
if(yych <= '/') goto yy53;
if(yych >= '3') goto yy53;
- goto yy848;
-yy848:
- YYDEBUG(848, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych != '.') goto yy53;
- goto yy849;
-yy849:
- YYDEBUG(849, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '/') goto yy53;
- if(yych >= ':') goto yy53;
- goto yy850;
-yy850:
- YYDEBUG(850, *YYCURSOR);
+ goto yy934;
+yy934:
+ YYDEBUG(934, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy729;
- if(yych <= '9') goto yy728;
- goto yy729;
-yy851:
- YYDEBUG(851, *YYCURSOR);
+ if(yych <= ',') goto yy53;
+ if(yych <= '.') goto yy807;
+ goto yy53;
+yy935:
+ YYDEBUG(935, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy852;
+ if(yych == '-') goto yy936;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy879;
+ if(yych <= '9') goto yy970;
goto yy57;
-yy852:
- YYDEBUG(852, *YYCURSOR);
+yy936:
+ YYDEBUG(936, *YYCURSOR);
yych = *++YYCURSOR;
YYDEBUG(-1, yych);
switch(yych){
- case '0': goto yy734;
- case '1': goto yy735;
+ case '0': goto yy945;
+ case '1': goto yy946;
case '2':
case '3':
case '4':
@@ -11982,128 +15596,206 @@ yy852:
case '6':
case '7':
case '8':
- case '9': goto yy736;
- case 'A': case 'a': goto yy856;
- case 'D': case 'd': goto yy860;
- case 'F': case 'f': goto yy854;
- case 'J': case 'j': goto yy853;
- case 'M': case 'm': goto yy855;
- case 'N': case 'n': goto yy859;
- case 'O': case 'o': goto yy858;
- case 'S': case 's': goto yy857;
+ case '9': goto yy947;
+ case 'A': case 'a': goto yy940;
+ case 'D': case 'd': goto yy944;
+ case 'F': case 'f': goto yy938;
+ case 'J': case 'j': goto yy937;
+ case 'M': case 'm': goto yy939;
+ case 'N': case 'n': goto yy943;
+ case 'O': case 'o': goto yy942;
+ case 'S': case 's': goto yy941;
default: goto yy53;
}
-yy853:
- YYDEBUG(853, *YYCURSOR);
+yy937:
+ YYDEBUG(937, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'A') goto yy878;
+ if(yych == 'A') goto yy969;
if(yych <= 'T') goto yy53;
- goto yy877;
+ goto yy968;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
- goto yy878;
+ goto yy969;
} else {
- if(yych == 'u') goto yy877;
+ if(yych == 'u') goto yy968;
goto yy53;
}
}
-yy854:
- YYDEBUG(854, *YYCURSOR);
+yy938:
+ YYDEBUG(938, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy876;
- if(yych == 'e') goto yy876;
+ if(yych == 'E') goto yy967;
+ if(yych == 'e') goto yy967;
goto yy53;
-yy855:
- YYDEBUG(855, *YYCURSOR);
+yy939:
+ YYDEBUG(939, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy875;
- if(yych == 'a') goto yy875;
+ if(yych == 'A') goto yy966;
+ if(yych == 'a') goto yy966;
goto yy53;
-yy856:
- YYDEBUG(856, *YYCURSOR);
+yy940:
+ YYDEBUG(940, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'P') goto yy874;
+ if(yych == 'P') goto yy965;
if(yych <= 'T') goto yy53;
- goto yy873;
+ goto yy964;
} else {
if(yych <= 'p'){
if(yych <= 'o') goto yy53;
- goto yy874;
+ goto yy965;
} else {
- if(yych == 'u') goto yy873;
+ if(yych == 'u') goto yy964;
goto yy53;
}
}
-yy857:
- YYDEBUG(857, *YYCURSOR);
+yy941:
+ YYDEBUG(941, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy871;
- if(yych == 'e') goto yy871;
+ if(yych == 'E') goto yy962;
+ if(yych == 'e') goto yy962;
goto yy53;
-yy858:
- YYDEBUG(858, *YYCURSOR);
+yy942:
+ YYDEBUG(942, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy870;
- if(yych == 'c') goto yy870;
+ if(yych == 'C') goto yy961;
+ if(yych == 'c') goto yy961;
goto yy53;
-yy859:
- YYDEBUG(859, *YYCURSOR);
+yy943:
+ YYDEBUG(943, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy869;
- if(yych == 'o') goto yy869;
+ if(yych == 'O') goto yy960;
+ if(yych == 'o') goto yy960;
goto yy53;
-yy860:
- YYDEBUG(860, *YYCURSOR);
+yy944:
+ YYDEBUG(944, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy861;
- if(yych != 'e') goto yy53;
- goto yy861;
-yy861:
- YYDEBUG(861, *YYCURSOR);
+ if(yych == 'E') goto yy952;
+ if(yych == 'e') goto yy952;
+ goto yy53;
+yy945:
+ YYDEBUG(945, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == '-') goto yy948;
+ if(yych <= '/') goto yy53;
+ if(yych <= '9') goto yy947;
+ goto yy53;
+yy946:
+ YYDEBUG(946, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy862;
+ if(yych == '-') goto yy948;
+ if(yych <= '/') goto yy53;
+ if(yych >= '3') goto yy53;
+ goto yy947;
+yy947:
+ YYDEBUG(947, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != '-') goto yy53;
+ goto yy948;
+yy948:
+ YYDEBUG(948, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '2') goto yy949;
+ if(yych <= '3') goto yy950;
+ if(yych <= '9') goto yy951;
+ goto yy53;
+yy949:
+ YYDEBUG(949, *YYCURSOR);
+ yyaccept = 12;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'n'){
+ if(yych <= '/') goto yy860;
+ if(yych <= '9') goto yy951;
+ if(yych <= 'm') goto yy860;
+ goto yy864;
+ } else {
+ if(yych <= 'r'){
+ if(yych <= 'q') goto yy860;
+ goto yy865;
+ } else {
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
+ }
+ }
+yy950:
+ YYDEBUG(950, *YYCURSOR);
+ yyaccept = 12;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'n'){
+ if(yych <= '/') goto yy860;
+ if(yych <= '1') goto yy951;
+ if(yych <= 'm') goto yy860;
+ goto yy864;
+ } else {
+ if(yych <= 'r'){
+ if(yych <= 'q') goto yy860;
+ goto yy865;
+ } else {
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
+ }
+ }
+yy951:
+ YYDEBUG(951, *YYCURSOR);
+ yyaccept = 12;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'q'){
+ if(yych == 'n') goto yy864;
+ goto yy860;
+ } else {
+ if(yych <= 'r') goto yy865;
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
+ }
+yy952:
+ YYDEBUG(952, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'C') goto yy953;
if(yych != 'c') goto yy53;
- goto yy862;
-yy862:
- YYDEBUG(862, *YYCURSOR);
+ goto yy953;
+yy953:
+ YYDEBUG(953, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '-') goto yy53;
- goto yy863;
-yy863:
- YYDEBUG(863, *YYCURSOR);
+ goto yy954;
+yy954:
+ YYDEBUG(954, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '0') goto yy864;
- if(yych <= '2') goto yy865;
- if(yych <= '3') goto yy866;
+ if(yych <= '0') goto yy955;
+ if(yych <= '2') goto yy956;
+ if(yych <= '3') goto yy957;
goto yy53;
-yy864:
- YYDEBUG(864, *YYCURSOR);
+yy955:
+ YYDEBUG(955, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '0') goto yy53;
- if(yych <= '9') goto yy867;
+ if(yych <= '9') goto yy958;
goto yy53;
-yy865:
- YYDEBUG(865, *YYCURSOR);
+yy956:
+ YYDEBUG(956, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy867;
+ if(yych <= '9') goto yy958;
goto yy53;
-yy866:
- YYDEBUG(866, *YYCURSOR);
+yy957:
+ YYDEBUG(957, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= '2') goto yy53;
- goto yy867;
-yy867:
- YYDEBUG(867, *YYCURSOR);
+ goto yy958;
+yy958:
+ YYDEBUG(958, *YYCURSOR);
++YYCURSOR;
- goto yy868;
-yy868:
- YYDEBUG(868, *YYCURSOR);
+ goto yy959;
+yy959:
+ YYDEBUG(959, *YYCURSOR);
{
DEBUG_OUTPUT("pgtextreverse");
@@ -12116,110 +15808,98 @@ yy868:
TIMELIB_DEINIT;
return TIMELIB_PG_TEXT;
}
-yy869:
- YYDEBUG(869, *YYCURSOR);
+yy960:
+ YYDEBUG(960, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'V') goto yy862;
- if(yych == 'v') goto yy862;
+ if(yych == 'V') goto yy953;
+ if(yych == 'v') goto yy953;
goto yy53;
-yy870:
- YYDEBUG(870, *YYCURSOR);
+yy961:
+ YYDEBUG(961, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy862;
- if(yych == 't') goto yy862;
+ if(yych == 'T') goto yy953;
+ if(yych == 't') goto yy953;
goto yy53;
-yy871:
- YYDEBUG(871, *YYCURSOR);
+yy962:
+ YYDEBUG(962, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'P') goto yy872;
+ if(yych == 'P') goto yy963;
if(yych != 'p') goto yy53;
- goto yy872;
-yy872:
- YYDEBUG(872, *YYCURSOR);
+ goto yy963;
+yy963:
+ YYDEBUG(963, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'S'){
- if(yych == '-') goto yy863;
+ if(yych == '-') goto yy954;
goto yy53;
} else {
- if(yych <= 'T') goto yy862;
- if(yych == 't') goto yy862;
+ if(yych <= 'T') goto yy953;
+ if(yych == 't') goto yy953;
goto yy53;
}
-yy873:
- YYDEBUG(873, *YYCURSOR);
+yy964:
+ YYDEBUG(964, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy862;
- if(yych == 'g') goto yy862;
+ if(yych == 'G') goto yy953;
+ if(yych == 'g') goto yy953;
goto yy53;
-yy874:
- YYDEBUG(874, *YYCURSOR);
+yy965:
+ YYDEBUG(965, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy862;
- if(yych == 'r') goto yy862;
+ if(yych == 'R') goto yy953;
+ if(yych == 'r') goto yy953;
goto yy53;
-yy875:
- YYDEBUG(875, *YYCURSOR);
+yy966:
+ YYDEBUG(966, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
- if(yych == 'R') goto yy862;
+ if(yych == 'R') goto yy953;
if(yych <= 'X') goto yy53;
- goto yy862;
+ goto yy953;
} else {
if(yych <= 'r'){
if(yych <= 'q') goto yy53;
- goto yy862;
+ goto yy953;
} else {
- if(yych == 'y') goto yy862;
+ if(yych == 'y') goto yy953;
goto yy53;
}
}
-yy876:
- YYDEBUG(876, *YYCURSOR);
+yy967:
+ YYDEBUG(967, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy862;
- if(yych == 'b') goto yy862;
+ if(yych == 'B') goto yy953;
+ if(yych == 'b') goto yy953;
goto yy53;
-yy877:
- YYDEBUG(877, *YYCURSOR);
+yy968:
+ YYDEBUG(968, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
- if(yych == 'L') goto yy862;
+ if(yych == 'L') goto yy953;
if(yych <= 'M') goto yy53;
- goto yy862;
+ goto yy953;
} else {
if(yych <= 'l'){
if(yych <= 'k') goto yy53;
- goto yy862;
+ goto yy953;
} else {
- if(yych == 'n') goto yy862;
+ if(yych == 'n') goto yy953;
goto yy53;
}
}
-yy878:
- YYDEBUG(878, *YYCURSOR);
+yy969:
+ YYDEBUG(969, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy862;
- if(yych == 'n') goto yy862;
+ if(yych == 'N') goto yy953;
+ if(yych == 'n') goto yy953;
goto yy53;
-yy879:
- YYDEBUG(879, *YYCURSOR);
+yy970:
+ YYDEBUG(970, *YYCURSOR);
yyaccept = 14;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -12228,25 +15908,26 @@ yy879:
case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm':
case 'n':
case 'o': case 's':
- case 't': case 'w': case 'y': goto yy884;
- case '-': goto yy881;
- case '.': goto yy887;
- case '/': goto yy882;
- case '0': goto yy900;
- case '1': goto yy901;
- case '2': goto yy902;
- case '3': goto yy903;
+ case 't': case 'w': case 'y': goto yy975;
+ case '-': goto yy972;
+ case '.': goto yy976;
+ case '/': goto yy973;
+ case '0': goto yy989;
+ case '1': goto yy990;
+ case '2': goto yy992;
+ case '3': goto yy993;
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': goto yy51;
- case 'W': goto yy904;
- default: goto yy880;
+ case ':': goto yy991;
+ case 'W': goto yy994;
+ default: goto yy971;
}
-yy880:
- YYDEBUG(880, *YYCURSOR);
+yy971:
+ YYDEBUG(971, *YYCURSOR);
{
DEBUG_OUTPUT("year4");
@@ -12255,13 +15936,13 @@ yy880:
TIMELIB_DEINIT;
return TIMELIB_CLF;
}
-yy881:
- YYDEBUG(881, *YYCURSOR);
+yy972:
+ YYDEBUG(972, *YYCURSOR);
yych = *++YYCURSOR;
YYDEBUG(-1, yych);
switch(yych){
- case '0': goto yy1046;
- case '1': goto yy1047;
+ case '0': goto yy1156;
+ case '1': goto yy1157;
case '2':
case '3':
case '4':
@@ -12269,126 +15950,76 @@ yy881:
case '6':
case '7':
case '8':
- case '9': goto yy1048;
- case 'A': case 'a': goto yy1041;
- case 'D': case 'd': goto yy1045;
- case 'F': case 'f': goto yy1039;
- case 'J': case 'j': goto yy1038;
- case 'M': case 'm': goto yy1040;
- case 'N': case 'n': goto yy1044;
- case 'O': case 'o': goto yy1043;
- case 'S': case 's': goto yy1042;
- default: goto yy886;
+ case '9': goto yy1158;
+ case 'A': case 'a': goto yy1151;
+ case 'D': case 'd': goto yy1155;
+ case 'F': case 'f': goto yy1149;
+ case 'J': case 'j': goto yy1148;
+ case 'M': case 'm': goto yy1150;
+ case 'N': case 'n': goto yy1154;
+ case 'O': case 'o': goto yy1153;
+ case 'S': case 's': goto yy1152;
+ default: goto yy1121;
}
-yy882:
- YYDEBUG(882, *YYCURSOR);
+yy973:
+ YYDEBUG(973, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '0') goto yy1019;
- if(yych <= '1') goto yy1020;
- if(yych <= '9') goto yy1021;
+ if(yych <= '0') goto yy1129;
+ if(yych <= '1') goto yy1130;
+ if(yych <= '9') goto yy1131;
goto yy53;
-yy883:
- YYDEBUG(883, *YYCURSOR);
+yy974:
+ YYDEBUG(974, *YYCURSOR);
++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
yych = *YYCURSOR;
- goto yy884;
-yy884:
- YYDEBUG(884, *YYCURSOR);
+ goto yy975;
+yy975:
+ YYDEBUG(975, *YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ': goto yy883;
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',':
+ case 0x09: case ' ': goto yy974;
case '-':
- case '.': goto yy885;
- case 'A': case 'a': goto yy895;
- case 'D': case 'd': goto yy899;
- case 'F': case 'f': goto yy893;
+ case '.': goto yy1120;
+ case 'A': case 'a': goto yy984;
+ case 'D': case 'd': goto yy988;
+ case 'F': case 'f': goto yy982;
case 'H': case 'h': goto yy60;
- case 'I': goto yy888;
- case 'J': case 'j': goto yy892;
- case 'M': case 'm': goto yy894;
- case 'N': case 'n': goto yy898;
- case 'O': case 'o': goto yy897;
- case 'S': case 's': goto yy896;
+ case 'I': goto yy977;
+ case 'J': case 'j': goto yy981;
+ case 'M': case 'm': goto yy983;
+ case 'N': case 'n': goto yy987;
+ case 'O': case 'o': goto yy986;
+ case 'S': case 's': goto yy985;
case 'T': case 't': goto yy65;
- case 'V': goto yy890;
+ case 'V': goto yy979;
case 'W': case 'w': goto yy62;
- case 'X': goto yy891;
+ case 'X': goto yy980;
case 'Y': case 'y': goto yy64;
default: goto yy53;
}
-yy885:
- YYDEBUG(885, *YYCURSOR);
- ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
- yych = *YYCURSOR;
- goto yy886;
-yy886:
- YYDEBUG(886, *YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',':
- case '-':
- case '.': goto yy885;
- case 'A': case 'a': goto yy895;
- case 'D': case 'd': goto yy1011;
- case 'F': case 'f': goto yy1008;
- case 'I': goto yy888;
- case 'J': case 'j': goto yy892;
- case 'M': case 'm': goto yy1009;
- case 'N': case 'n': goto yy898;
- case 'O': case 'o': goto yy897;
- case 'S': case 's': goto yy1010;
- case 'V': goto yy890;
- case 'X': goto yy891;
- default: goto yy53;
- }
-yy887:
- YYDEBUG(887, *YYCURSOR);
+yy976:
+ YYDEBUG(976, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy886;
- if(yych <= '0') goto yy1005;
- if(yych <= '2') goto yy1006;
- if(yych <= '3') goto yy1007;
- goto yy886;
-yy888:
- YYDEBUG(888, *YYCURSOR);
+ if(yych <= '/') goto yy1121;
+ if(yych <= '0') goto yy1113;
+ if(yych <= '2') goto yy1114;
+ if(yych <= '3') goto yy1115;
+ goto yy1121;
+yy977:
+ YYDEBUG(977, *YYCURSOR);
++YYCURSOR;
if((yych = *YYCURSOR) <= 'U'){
- if(yych == 'I') goto yy1004;
- goto yy889;
+ if(yych == 'I') goto yy1112;
+ goto yy978;
} else {
- if(yych == 'W') goto yy889;
- if(yych <= 'X') goto yy958;
- goto yy889;
+ if(yych == 'W') goto yy978;
+ if(yych <= 'X') goto yy1066;
+ goto yy978;
}
-yy889:
- YYDEBUG(889, *YYCURSOR);
+yy978:
+ YYDEBUG(978, *YYCURSOR);
{
DEBUG_OUTPUT("datenodayrev");
@@ -12401,38 +16032,38 @@ yy889:
TIMELIB_DEINIT;
return TIMELIB_DATE_NO_DAY;
}
-yy890:
- YYDEBUG(890, *YYCURSOR);
+yy979:
+ YYDEBUG(979, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy1002;
- goto yy889;
-yy891:
- YYDEBUG(891, *YYCURSOR);
+ if(yych == 'I') goto yy1110;
+ goto yy978;
+yy980:
+ YYDEBUG(980, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy1001;
- goto yy889;
-yy892:
- YYDEBUG(892, *YYCURSOR);
+ if(yych == 'I') goto yy1109;
+ goto yy978;
+yy981:
+ YYDEBUG(981, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'A') goto yy994;
+ if(yych == 'A') goto yy1102;
if(yych <= 'T') goto yy53;
- goto yy993;
+ goto yy1101;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
- goto yy994;
+ goto yy1102;
} else {
- if(yych == 'u') goto yy993;
+ if(yych == 'u') goto yy1101;
goto yy53;
}
}
-yy893:
- YYDEBUG(893, *YYCURSOR);
+yy982:
+ YYDEBUG(982, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
if(yych <= 'N'){
- if(yych == 'E') goto yy987;
+ if(yych == 'E') goto yy1095;
goto yy53;
} else {
if(yych <= 'O') goto yy83;
@@ -12441,7 +16072,7 @@ yy893:
}
} else {
if(yych <= 'n'){
- if(yych == 'e') goto yy987;
+ if(yych == 'e') goto yy1095;
goto yy53;
} else {
if(yych <= 'o') goto yy83;
@@ -12449,12 +16080,12 @@ yy893:
goto yy53;
}
}
-yy894:
- YYDEBUG(894, *YYCURSOR);
+yy983:
+ YYDEBUG(983, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'O'){
if(yych <= 'H'){
- if(yych == 'A') goto yy984;
+ if(yych == 'A') goto yy1092;
goto yy53;
} else {
if(yych <= 'I') goto yy110;
@@ -12463,7 +16094,7 @@ yy894:
}
} else {
if(yych <= 'h'){
- if(yych == 'a') goto yy984;
+ if(yych == 'a') goto yy1092;
goto yy53;
} else {
if(yych <= 'i') goto yy110;
@@ -12471,31 +16102,31 @@ yy894:
goto yy53;
}
}
-yy895:
- YYDEBUG(895, *YYCURSOR);
+yy984:
+ YYDEBUG(984, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'P') goto yy978;
+ if(yych == 'P') goto yy1086;
if(yych <= 'T') goto yy53;
- goto yy977;
+ goto yy1085;
} else {
if(yych <= 'p'){
if(yych <= 'o') goto yy53;
- goto yy978;
+ goto yy1086;
} else {
- if(yych == 'u') goto yy977;
+ if(yych == 'u') goto yy1085;
goto yy53;
}
}
-yy896:
- YYDEBUG(896, *YYCURSOR);
+yy985:
+ YYDEBUG(985, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= 'D'){
if(yych == 'A') goto yy119;
goto yy53;
} else {
- if(yych <= 'E') goto yy970;
+ if(yych <= 'E') goto yy1078;
if(yych <= 'T') goto yy53;
goto yy118;
}
@@ -12504,75 +16135,82 @@ yy896:
if(yych == 'a') goto yy119;
goto yy53;
} else {
- if(yych <= 'e') goto yy970;
+ if(yych <= 'e') goto yy1078;
if(yych == 'u') goto yy118;
goto yy53;
}
}
-yy897:
- YYDEBUG(897, *YYCURSOR);
+yy986:
+ YYDEBUG(986, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy965;
- if(yych == 'c') goto yy965;
+ if(yych == 'C') goto yy1073;
+ if(yych == 'c') goto yy1073;
goto yy53;
-yy898:
- YYDEBUG(898, *YYCURSOR);
+yy987:
+ YYDEBUG(987, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy959;
- if(yych == 'o') goto yy959;
+ if(yych == 'O') goto yy1067;
+ if(yych == 'o') goto yy1067;
goto yy53;
-yy899:
- YYDEBUG(899, *YYCURSOR);
+yy988:
+ YYDEBUG(988, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych == 'A') goto yy106;
if(yych <= 'D') goto yy53;
- goto yy952;
+ goto yy1060;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
goto yy106;
} else {
- if(yych == 'e') goto yy952;
+ if(yych == 'e') goto yy1060;
goto yy53;
}
}
-yy900:
- YYDEBUG(900, *YYCURSOR);
+yy989:
+ YYDEBUG(989, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '0') goto yy950;
- if(yych <= '9') goto yy951;
+ if(yych <= '0') goto yy1058;
+ if(yych <= '9') goto yy1059;
goto yy57;
-yy901:
- YYDEBUG(901, *YYCURSOR);
+yy990:
+ YYDEBUG(990, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '2') goto yy917;
- if(yych <= '9') goto yy916;
+ if(yych <= '2') goto yy1027;
+ if(yych <= '9') goto yy1006;
goto yy57;
-yy902:
- YYDEBUG(902, *YYCURSOR);
+yy991:
+ YYDEBUG(991, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '0') goto yy1007;
+ if(yych <= '1') goto yy1008;
+ goto yy53;
+yy992:
+ YYDEBUG(992, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy916;
+ if(yych <= '9') goto yy1006;
goto yy57;
-yy903:
- YYDEBUG(903, *YYCURSOR);
+yy993:
+ YYDEBUG(993, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '5') goto yy912;
- if(yych <= '6') goto yy913;
+ if(yych <= '5') goto yy1002;
+ if(yych <= '6') goto yy1003;
if(yych <= '9') goto yy51;
goto yy57;
-yy904:
- YYDEBUG(904, *YYCURSOR);
+yy994:
+ YYDEBUG(994, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '5'){
if(yych <= '/') goto yy53;
- if(yych <= '0') goto yy905;
- if(yych <= '4') goto yy906;
- goto yy907;
+ if(yych <= '0') goto yy995;
+ if(yych <= '4') goto yy996;
+ goto yy997;
} else {
if(yych <= 'E'){
if(yych <= 'D') goto yy53;
@@ -12582,32 +16220,32 @@ yy904:
goto yy53;
}
}
-yy905:
- YYDEBUG(905, *YYCURSOR);
+yy995:
+ YYDEBUG(995, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '0') goto yy53;
- if(yych <= '9') goto yy908;
+ if(yych <= '9') goto yy998;
goto yy53;
-yy906:
- YYDEBUG(906, *YYCURSOR);
+yy996:
+ YYDEBUG(996, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy908;
+ if(yych <= '9') goto yy998;
goto yy53;
-yy907:
- YYDEBUG(907, *YYCURSOR);
+yy997:
+ YYDEBUG(997, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= '4') goto yy53;
- goto yy908;
-yy908:
- YYDEBUG(908, *YYCURSOR);
+ goto yy998;
+yy998:
+ YYDEBUG(998, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) <= '/') goto yy909;
- if(yych <= '7') goto yy910;
- goto yy909;
-yy909:
- YYDEBUG(909, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '/') goto yy999;
+ if(yych <= '7') goto yy1000;
+ goto yy999;
+yy999:
+ YYDEBUG(999, *YYCURSOR);
{
timelib_sll w, d;
@@ -12626,12 +16264,12 @@ yy909:
TIMELIB_DEINIT;
return TIMELIB_ISO_WEEK;
}
-yy910:
- YYDEBUG(910, *YYCURSOR);
+yy1000:
+ YYDEBUG(1000, *YYCURSOR);
++YYCURSOR;
- goto yy911;
-yy911:
- YYDEBUG(911, *YYCURSOR);
+ goto yy1001;
+yy1001:
+ YYDEBUG(1001, *YYCURSOR);
{
timelib_sll w, d;
@@ -12650,73 +16288,78 @@ yy911:
TIMELIB_DEINIT;
return TIMELIB_ISO_WEEK;
}
-yy912:
- YYDEBUG(912, *YYCURSOR);
+yy1002:
+ YYDEBUG(1002, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy914;
+ if(yych <= '9') goto yy1004;
goto yy57;
-yy913:
- YYDEBUG(913, *YYCURSOR);
+yy1003:
+ YYDEBUG(1003, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '6') goto yy914;
+ if(yych <= '6') goto yy1004;
if(yych <= '9') goto yy51;
goto yy57;
-yy914:
- YYDEBUG(914, *YYCURSOR);
+yy1004:
+ YYDEBUG(1004, *YYCURSOR);
yyaccept = 15;
yych = *(YYMARKER = ++YYCURSOR);
if(yybm[0+yych] & 8) {
goto yy51;
}
- if(yych <= 'X'){
- if(yych <= 'G'){
- if(yych <= 'C'){
- if(yych == ' ') goto yy57;
- goto yy915;
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych >= ' ') goto yy57;
+ goto yy1005;
} else {
- if(yych == 'E') goto yy915;
- if(yych <= 'F') goto yy57;
- goto yy915;
+ if(yych == 'D') goto yy57;
+ if(yych >= 'F') goto yy57;
+ goto yy1005;
}
} else {
- if(yych <= 'R'){
- if(yych <= 'H') goto yy57;
- if(yych == 'M') goto yy57;
- goto yy915;
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy57;
+ if(yych >= 'M') goto yy57;
+ goto yy1005;
} else {
+ if(yych <= 'R') goto yy1005;
if(yych <= 'T') goto yy57;
- if(yych == 'W') goto yy57;
- goto yy915;
+ if(yych >= 'W') goto yy57;
+ goto yy1005;
}
}
} else {
- if(yych <= 'l'){
- if(yych <= 'e'){
- if(yych <= 'Y') goto yy57;
- if(yych == 'd') goto yy57;
- goto yy915;
+ if(yych <= 'h'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy57;
+ if(yych >= 'd') goto yy57;
+ goto yy1005;
} else {
- if(yych == 'g') goto yy915;
- if(yych <= 'h') goto yy57;
- goto yy915;
+ if(yych == 'f') goto yy57;
+ if(yych >= 'h') goto yy57;
+ goto yy1005;
}
} else {
- if(yych <= 'v'){
- if(yych <= 'm') goto yy57;
- if(yych <= 'r') goto yy915;
- if(yych <= 't') goto yy57;
- goto yy915;
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych >= 's') goto yy57;
+ goto yy1005;
} else {
- if(yych == 'x') goto yy915;
- if(yych <= 'y') goto yy57;
- goto yy915;
+ if(yych <= 'w'){
+ if(yych >= 'w') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1005;
+ }
}
}
}
-yy915:
- YYDEBUG(915, *YYCURSOR);
+yy1005:
+ YYDEBUG(1005, *YYCURSOR);
{
DEBUG_OUTPUT("pgydotd");
@@ -12729,110 +16372,427 @@ yy915:
TIMELIB_DEINIT;
return TIMELIB_PG_YEARDAY;
}
-yy916:
- YYDEBUG(916, *YYCURSOR);
+yy1006:
+ YYDEBUG(1006, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy914;
+ if(yych <= '9') goto yy1004;
goto yy57;
-yy917:
- YYDEBUG(917, *YYCURSOR);
+yy1007:
+ YYDEBUG(1007, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '0') goto yy53;
+ if(yych <= '9') goto yy1009;
+ goto yy53;
+yy1008:
+ YYDEBUG(1008, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych >= '3') goto yy53;
+ goto yy1009;
+yy1009:
+ YYDEBUG(1009, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != ':') goto yy53;
+ goto yy1010;
+yy1010:
+ YYDEBUG(1010, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '0') goto yy1011;
+ if(yych <= '2') goto yy1012;
+ if(yych <= '3') goto yy1013;
+ goto yy53;
+yy1011:
+ YYDEBUG(1011, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '0') goto yy53;
+ if(yych <= '9') goto yy1014;
+ goto yy53;
+yy1012:
+ YYDEBUG(1012, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '9') goto yy1014;
+ goto yy53;
+yy1013:
+ YYDEBUG(1013, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych >= '2') goto yy53;
+ goto yy1014;
+yy1014:
+ YYDEBUG(1014, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != ' ') goto yy53;
+ goto yy1015;
+yy1015:
+ YYDEBUG(1015, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '1') goto yy1016;
+ if(yych <= '2') goto yy1017;
+ goto yy53;
+yy1016:
+ YYDEBUG(1016, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '9') goto yy1018;
+ goto yy53;
+yy1017:
+ YYDEBUG(1017, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych >= '4') goto yy53;
+ goto yy1018;
+yy1018:
+ YYDEBUG(1018, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != ':') goto yy53;
+ goto yy1019;
+yy1019:
+ YYDEBUG(1019, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych >= '6') goto yy53;
+ goto yy1020;
+yy1020:
+ YYDEBUG(1020, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych >= ':') goto yy53;
+ goto yy1021;
+yy1021:
+ YYDEBUG(1021, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != ':') goto yy53;
+ goto yy1022;
+yy1022:
+ YYDEBUG(1022, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '5') goto yy1023;
+ if(yych <= '6') goto yy1024;
+ goto yy53;
+yy1023:
+ YYDEBUG(1023, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '9') goto yy1025;
+ goto yy53;
+yy1024:
+ YYDEBUG(1024, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != '0') goto yy53;
+ goto yy1025;
+yy1025:
+ YYDEBUG(1025, *YYCURSOR);
+ ++YYCURSOR;
+ goto yy1026;
+yy1026:
+ YYDEBUG(1026, *YYCURSOR);
+
+{
+ int tz_not_found;
+ DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif");
+ TIMELIB_INIT;
+ TIMELIB_HAVE_TIME();
+ TIMELIB_HAVE_DATE();
+ s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->m = timelib_get_nr((char **) &ptr, 2);
+ s->time->d = timelib_get_nr((char **) &ptr, 2);
+ s->time->h = timelib_get_nr((char **) &ptr, 2);
+ s->time->i = timelib_get_nr((char **) &ptr, 2);
+ s->time->s = timelib_get_nr((char **) &ptr, 2);
+ if (*ptr == '.') {
+ s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
+ if (*ptr) { /* timezone is optional */
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
+ }
+ }
+ TIMELIB_DEINIT;
+ return TIMELIB_XMLRPC_SOAP;
+ }
+yy1027:
+ YYDEBUG(1027, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '2'){
if(yych <= '/') goto yy57;
- if(yych >= '1') goto yy919;
- goto yy918;
+ if(yych >= '1') goto yy1029;
+ goto yy1028;
} else {
- if(yych <= '3') goto yy920;
- if(yych <= '9') goto yy914;
+ if(yych <= '3') goto yy1030;
+ if(yych <= '9') goto yy1004;
goto yy57;
}
-yy918:
- YYDEBUG(918, *YYCURSOR);
+yy1028:
+ YYDEBUG(1028, *YYCURSOR);
yyaccept = 15;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0': goto yy51;
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy921;
- default: goto yy915;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= '0'){
+ if(yych <= '/') goto yy1005;
+ goto yy51;
+ } else {
+ if(yych <= '9') goto yy1031;
+ if(yych <= 'C') goto yy1005;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1005;
+ if(yych <= 'T') goto yy57;
+ goto yy1005;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1005;
+ if(yych <= 'Y') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych == 'g') goto yy1005;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1005;
+ }
+ }
+ }
}
-yy919:
- YYDEBUG(919, *YYCURSOR);
+yy1029:
+ YYDEBUG(1029, *YYCURSOR);
yyaccept = 15;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy921;
- default: goto yy915;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= '/') goto yy1005;
+ if(yych <= '9') goto yy1031;
+ if(yych <= 'C') goto yy1005;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1005;
+ if(yych <= 'T') goto yy57;
+ goto yy1005;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1005;
+ if(yych <= 'Y') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych == 'g') goto yy1005;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1005;
+ }
+ }
+ }
}
-yy920:
- YYDEBUG(920, *YYCURSOR);
+yy1030:
+ YYDEBUG(1030, *YYCURSOR);
yyaccept = 15;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1': goto yy921;
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy51;
- default: goto yy915;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= '1'){
+ if(yych <= '/') goto yy1005;
+ goto yy1031;
+ } else {
+ if(yych <= '9') goto yy51;
+ if(yych <= 'C') goto yy1005;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1005;
+ if(yych <= 'T') goto yy57;
+ goto yy1005;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1005;
+ if(yych <= 'Y') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych == 'g') goto yy1005;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1005;
+ }
+ }
+ }
}
-yy921:
- YYDEBUG(921, *YYCURSOR);
+yy1031:
+ YYDEBUG(1031, *YYCURSOR);
yyaccept = 16;
yych = *(YYMARKER = ++YYCURSOR);
if(yybm[0+yych] & 8) {
goto yy51;
}
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': goto yy56;
- case 'D': case 'd': goto yy61;
- case 'F': case 'f': goto yy63;
- case 'H': case 'h': goto yy60;
- case 'M': case 'm': goto yy59;
- case 'S': case 's': goto yy58;
- case 'T': goto yy923;
- case 'W': case 'w': goto yy62;
- case 'Y': case 'y': goto yy64;
- case 't': goto yy924;
- default: goto yy922;
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy56;
+ if(yych >= ' ') goto yy56;
+ goto yy1032;
+ } else {
+ if(yych == 'D') goto yy61;
+ if(yych >= 'F') goto yy63;
+ goto yy1032;
+ }
+ } else {
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy60;
+ if(yych >= 'M') goto yy59;
+ goto yy1032;
+ } else {
+ if(yych <= 'S'){
+ if(yych >= 'S') goto yy58;
+ goto yy1032;
+ } else {
+ if(yych <= 'T') goto yy1033;
+ if(yych >= 'W') goto yy62;
+ goto yy1032;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy64;
+ if(yych >= 'd') goto yy61;
+ goto yy1032;
+ } else {
+ if(yych <= 'f'){
+ if(yych >= 'f') goto yy63;
+ goto yy1032;
+ } else {
+ if(yych == 'h') goto yy60;
+ goto yy1032;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'm') goto yy59;
+ if(yych <= 'r') goto yy1032;
+ if(yych <= 's') goto yy58;
+ goto yy1034;
+ } else {
+ if(yych <= 'w'){
+ if(yych >= 'w') goto yy62;
+ goto yy1032;
+ } else {
+ if(yych == 'y') goto yy64;
+ goto yy1032;
+ }
+ }
+ }
}
-yy922:
- YYDEBUG(922, *YYCURSOR);
+yy1032:
+ YYDEBUG(1032, *YYCURSOR);
{
DEBUG_OUTPUT("datenocolon");
@@ -12844,16 +16804,16 @@ yy922:
TIMELIB_DEINIT;
return TIMELIB_DATE_NOCOLON;
}
-yy923:
- YYDEBUG(923, *YYCURSOR);
+yy1033:
+ YYDEBUG(1033, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'H'){
if(yych <= '2'){
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy940;
- goto yy941;
+ if(yych <= '1') goto yy1048;
+ goto yy1049;
} else {
- if(yych <= '9') goto yy942;
+ if(yych <= '9') goto yy1050;
if(yych <= 'G') goto yy53;
goto yy66;
}
@@ -12867,16 +16827,16 @@ yy923:
goto yy53;
}
}
-yy924:
- YYDEBUG(924, *YYCURSOR);
+yy1034:
+ YYDEBUG(1034, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'H'){
if(yych <= '2'){
if(yych <= '/') goto yy53;
- if(yych >= '2') goto yy926;
- goto yy925;
+ if(yych >= '2') goto yy1036;
+ goto yy1035;
} else {
- if(yych <= '9') goto yy927;
+ if(yych <= '9') goto yy1037;
if(yych <= 'G') goto yy53;
goto yy66;
}
@@ -12890,693 +16850,689 @@ yy924:
goto yy53;
}
}
-yy925:
- YYDEBUG(925, *YYCURSOR);
+yy1035:
+ YYDEBUG(1035, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy934;
- if(yych <= '9') goto yy927;
+ if(yych <= '5') goto yy1042;
+ if(yych <= '9') goto yy1037;
goto yy53;
-yy926:
- YYDEBUG(926, *YYCURSOR);
+yy1036:
+ YYDEBUG(1036, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '3') goto yy934;
- if(yych <= '5') goto yy928;
+ if(yych <= '3') goto yy1042;
+ if(yych <= '5') goto yy1038;
goto yy53;
-yy927:
- YYDEBUG(927, *YYCURSOR);
+yy1037:
+ YYDEBUG(1037, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= '6') goto yy53;
- goto yy928;
-yy928:
- YYDEBUG(928, *YYCURSOR);
+ goto yy1038;
+yy1038:
+ YYDEBUG(1038, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy929;
-yy929:
- YYDEBUG(929, *YYCURSOR);
+ goto yy1039;
+yy1039:
+ YYDEBUG(1039, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy930;
- if(yych <= '6') goto yy931;
+ if(yych <= '5') goto yy1040;
+ if(yych <= '6') goto yy1041;
goto yy53;
-yy930:
- YYDEBUG(930, *YYCURSOR);
+yy1040:
+ YYDEBUG(1040, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy932;
+ if(yych <= '9') goto yy1025;
goto yy53;
-yy931:
- YYDEBUG(931, *YYCURSOR);
+yy1041:
+ YYDEBUG(1041, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych != '0') goto yy53;
- goto yy932;
-yy932:
- YYDEBUG(932, *YYCURSOR);
- ++YYCURSOR;
- goto yy933;
-yy933:
- YYDEBUG(933, *YYCURSOR);
-
-{
- int tz_not_found;
- DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx");
- TIMELIB_INIT;
- TIMELIB_HAVE_TIME();
- TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- s->time->m = timelib_get_nr((char **) &ptr, 2);
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- s->time->h = timelib_get_nr((char **) &ptr, 2);
- s->time->i = timelib_get_nr((char **) &ptr, 2);
- s->time->s = timelib_get_nr((char **) &ptr, 2);
- if (*ptr == '.') {
- s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
- if (*ptr) { /* timezone is optional */
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
- }
- }
- TIMELIB_DEINIT;
- return TIMELIB_XMLRPC_SOAP;
- }
-yy934:
- YYDEBUG(934, *YYCURSOR);
+ if(yych == '0') goto yy1025;
+ goto yy53;
+yy1042:
+ YYDEBUG(1042, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy935;
- if(yych <= '9') goto yy929;
+ if(yych <= '5') goto yy1043;
+ if(yych <= '9') goto yy1039;
goto yy53;
-yy935:
- YYDEBUG(935, *YYCURSOR);
+yy1043:
+ YYDEBUG(1043, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy936;
- if(yych <= '6') goto yy937;
- if(yych <= '9') goto yy929;
+ if(yych <= '5') goto yy1044;
+ if(yych <= '6') goto yy1045;
+ if(yych <= '9') goto yy1039;
goto yy53;
-yy936:
- YYDEBUG(936, *YYCURSOR);
+yy1044:
+ YYDEBUG(1044, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy938;
- if(yych <= '6') goto yy939;
- if(yych <= '9') goto yy932;
+ if(yych <= '5') goto yy1046;
+ if(yych <= '6') goto yy1047;
+ if(yych <= '9') goto yy1025;
goto yy53;
-yy937:
- YYDEBUG(937, *YYCURSOR);
+yy1045:
+ YYDEBUG(1045, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '0') goto yy938;
- if(yych <= '5') goto yy930;
- if(yych <= '6') goto yy931;
+ if(yych <= '0') goto yy1046;
+ if(yych <= '5') goto yy1040;
+ if(yych <= '6') goto yy1041;
goto yy53;
-yy938:
- YYDEBUG(938, *YYCURSOR);
+yy1046:
+ YYDEBUG(1046, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '9') goto yy932;
- goto yy933;
-yy939:
- YYDEBUG(939, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '9') goto yy1025;
+ goto yy1026;
+yy1047:
+ YYDEBUG(1047, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '0') goto yy932;
- goto yy933;
-yy940:
- YYDEBUG(940, *YYCURSOR);
+ if(yych == '0') goto yy1025;
+ goto yy1026;
+yy1048:
+ YYDEBUG(1048, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy949;
- if(yych <= '9') goto yy942;
- if(yych <= ':') goto yy943;
+ if(yych <= '5') goto yy1057;
+ if(yych <= '9') goto yy1050;
+ if(yych <= ':') goto yy1051;
goto yy53;
-yy941:
- YYDEBUG(941, *YYCURSOR);
+yy1049:
+ YYDEBUG(1049, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '5'){
if(yych <= '/') goto yy53;
- if(yych <= '3') goto yy949;
- goto yy928;
+ if(yych <= '3') goto yy1057;
+ goto yy1038;
} else {
- if(yych == ':') goto yy943;
+ if(yych == ':') goto yy1051;
goto yy53;
}
-yy942:
- YYDEBUG(942, *YYCURSOR);
+yy1050:
+ YYDEBUG(1050, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy928;
+ if(yych <= '5') goto yy1038;
if(yych != ':') goto yy53;
- goto yy943;
-yy943:
- YYDEBUG(943, *YYCURSOR);
+ goto yy1051;
+yy1051:
+ YYDEBUG(1051, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= '6') goto yy53;
- goto yy944;
-yy944:
- YYDEBUG(944, *YYCURSOR);
+ goto yy1052;
+yy1052:
+ YYDEBUG(1052, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy945;
-yy945:
- YYDEBUG(945, *YYCURSOR);
+ goto yy1053;
+yy1053:
+ YYDEBUG(1053, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy946;
-yy946:
- YYDEBUG(946, *YYCURSOR);
+ goto yy1054;
+yy1054:
+ YYDEBUG(1054, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy947;
- if(yych <= '6') goto yy948;
+ if(yych <= '5') goto yy1055;
+ if(yych <= '6') goto yy1056;
goto yy53;
-yy947:
- YYDEBUG(947, *YYCURSOR);
+yy1055:
+ YYDEBUG(1055, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy932;
+ if(yych <= '9') goto yy1025;
goto yy53;
-yy948:
- YYDEBUG(948, *YYCURSOR);
+yy1056:
+ YYDEBUG(1056, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '0') goto yy932;
+ if(yych == '0') goto yy1025;
goto yy53;
-yy949:
- YYDEBUG(949, *YYCURSOR);
+yy1057:
+ YYDEBUG(1057, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy935;
- if(yych <= '9') goto yy929;
- if(yych <= ':') goto yy943;
+ if(yych <= '5') goto yy1043;
+ if(yych <= '9') goto yy1039;
+ if(yych <= ':') goto yy1051;
goto yy53;
-yy950:
- YYDEBUG(950, *YYCURSOR);
+yy1058:
+ YYDEBUG(1058, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
if(yych <= '0') goto yy51;
- if(yych <= '9') goto yy914;
+ if(yych <= '9') goto yy1004;
goto yy57;
-yy951:
- YYDEBUG(951, *YYCURSOR);
+yy1059:
+ YYDEBUG(1059, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '2'){
if(yych <= '/') goto yy57;
- if(yych <= '0') goto yy918;
- goto yy919;
+ if(yych <= '0') goto yy1028;
+ goto yy1029;
} else {
- if(yych <= '3') goto yy920;
- if(yych <= '9') goto yy914;
+ if(yych <= '3') goto yy1030;
+ if(yych <= '9') goto yy1004;
goto yy57;
}
-yy952:
- YYDEBUG(952, *YYCURSOR);
+yy1060:
+ YYDEBUG(1060, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy953;
+ if(yych == 'C') goto yy1061;
if(yych != 'c') goto yy53;
- goto yy953;
-yy953:
- YYDEBUG(953, *YYCURSOR);
+ goto yy1061;
+yy1061:
+ YYDEBUG(1061, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'E') goto yy954;
- if(yych != 'e') goto yy889;
- goto yy954;
-yy954:
- YYDEBUG(954, *YYCURSOR);
+ if(yych == 'E') goto yy1062;
+ if(yych != 'e') goto yy978;
+ goto yy1062;
+yy1062:
+ YYDEBUG(1062, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy955;
+ if(yych == 'M') goto yy1063;
if(yych != 'm') goto yy53;
- goto yy955;
-yy955:
- YYDEBUG(955, *YYCURSOR);
+ goto yy1063;
+yy1063:
+ YYDEBUG(1063, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy956;
+ if(yych == 'B') goto yy1064;
if(yych != 'b') goto yy53;
- goto yy956;
-yy956:
- YYDEBUG(956, *YYCURSOR);
+ goto yy1064;
+yy1064:
+ YYDEBUG(1064, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy957;
+ if(yych == 'E') goto yy1065;
if(yych != 'e') goto yy53;
- goto yy957;
-yy957:
- YYDEBUG(957, *YYCURSOR);
+ goto yy1065;
+yy1065:
+ YYDEBUG(1065, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy958;
+ if(yych == 'R') goto yy1066;
if(yych != 'r') goto yy53;
- goto yy958;
-yy958:
- YYDEBUG(958, *YYCURSOR);
+ goto yy1066;
+yy1066:
+ YYDEBUG(1066, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy889;
-yy959:
- YYDEBUG(959, *YYCURSOR);
+ goto yy978;
+yy1067:
+ YYDEBUG(1067, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'V') goto yy960;
+ if(yych == 'V') goto yy1068;
if(yych != 'v') goto yy53;
- goto yy960;
-yy960:
- YYDEBUG(960, *YYCURSOR);
+ goto yy1068;
+yy1068:
+ YYDEBUG(1068, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'E') goto yy961;
- if(yych != 'e') goto yy889;
- goto yy961;
-yy961:
- YYDEBUG(961, *YYCURSOR);
+ if(yych == 'E') goto yy1069;
+ if(yych != 'e') goto yy978;
+ goto yy1069;
+yy1069:
+ YYDEBUG(1069, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy962;
+ if(yych == 'M') goto yy1070;
if(yych != 'm') goto yy53;
- goto yy962;
-yy962:
- YYDEBUG(962, *YYCURSOR);
+ goto yy1070;
+yy1070:
+ YYDEBUG(1070, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy963;
+ if(yych == 'B') goto yy1071;
if(yych != 'b') goto yy53;
- goto yy963;
-yy963:
- YYDEBUG(963, *YYCURSOR);
+ goto yy1071;
+yy1071:
+ YYDEBUG(1071, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy964;
+ if(yych == 'E') goto yy1072;
if(yych != 'e') goto yy53;
- goto yy964;
-yy964:
- YYDEBUG(964, *YYCURSOR);
+ goto yy1072;
+yy1072:
+ YYDEBUG(1072, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy958;
- if(yych == 'r') goto yy958;
+ if(yych == 'R') goto yy1066;
+ if(yych == 'r') goto yy1066;
goto yy53;
-yy965:
- YYDEBUG(965, *YYCURSOR);
+yy1073:
+ YYDEBUG(1073, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy966;
+ if(yych == 'T') goto yy1074;
if(yych != 't') goto yy53;
- goto yy966;
-yy966:
- YYDEBUG(966, *YYCURSOR);
+ goto yy1074;
+yy1074:
+ YYDEBUG(1074, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'O') goto yy967;
- if(yych != 'o') goto yy889;
- goto yy967;
-yy967:
- YYDEBUG(967, *YYCURSOR);
+ if(yych == 'O') goto yy1075;
+ if(yych != 'o') goto yy978;
+ goto yy1075;
+yy1075:
+ YYDEBUG(1075, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy968;
+ if(yych == 'B') goto yy1076;
if(yych != 'b') goto yy53;
- goto yy968;
-yy968:
- YYDEBUG(968, *YYCURSOR);
+ goto yy1076;
+yy1076:
+ YYDEBUG(1076, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy969;
+ if(yych == 'E') goto yy1077;
if(yych != 'e') goto yy53;
- goto yy969;
-yy969:
- YYDEBUG(969, *YYCURSOR);
+ goto yy1077;
+yy1077:
+ YYDEBUG(1077, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy958;
- if(yych == 'r') goto yy958;
+ if(yych == 'R') goto yy1066;
+ if(yych == 'r') goto yy1066;
goto yy53;
-yy970:
- YYDEBUG(970, *YYCURSOR);
+yy1078:
+ YYDEBUG(1078, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'P'){
if(yych == 'C') goto yy121;
if(yych <= 'O') goto yy53;
- goto yy971;
+ goto yy1079;
} else {
if(yych <= 'c'){
if(yych <= 'b') goto yy53;
goto yy121;
} else {
if(yych != 'p') goto yy53;
- goto yy971;
+ goto yy1079;
}
}
-yy971:
- YYDEBUG(971, *YYCURSOR);
+yy1079:
+ YYDEBUG(1079, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy972;
- if(yych != 't') goto yy889;
- goto yy972;
-yy972:
- YYDEBUG(972, *YYCURSOR);
+ if(yych == 'T') goto yy1080;
+ if(yych != 't') goto yy978;
+ goto yy1080;
+yy1080:
+ YYDEBUG(1080, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'E') goto yy973;
- if(yych != 'e') goto yy889;
- goto yy973;
-yy973:
- YYDEBUG(973, *YYCURSOR);
+ if(yych == 'E') goto yy1081;
+ if(yych != 'e') goto yy978;
+ goto yy1081;
+yy1081:
+ YYDEBUG(1081, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy974;
+ if(yych == 'M') goto yy1082;
if(yych != 'm') goto yy53;
- goto yy974;
-yy974:
- YYDEBUG(974, *YYCURSOR);
+ goto yy1082;
+yy1082:
+ YYDEBUG(1082, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy975;
+ if(yych == 'B') goto yy1083;
if(yych != 'b') goto yy53;
- goto yy975;
-yy975:
- YYDEBUG(975, *YYCURSOR);
+ goto yy1083;
+yy1083:
+ YYDEBUG(1083, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy976;
+ if(yych == 'E') goto yy1084;
if(yych != 'e') goto yy53;
- goto yy976;
-yy976:
- YYDEBUG(976, *YYCURSOR);
+ goto yy1084;
+yy1084:
+ YYDEBUG(1084, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy958;
- if(yych == 'r') goto yy958;
+ if(yych == 'R') goto yy1066;
+ if(yych == 'r') goto yy1066;
goto yy53;
-yy977:
- YYDEBUG(977, *YYCURSOR);
+yy1085:
+ YYDEBUG(1085, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy981;
- if(yych == 'g') goto yy981;
+ if(yych == 'G') goto yy1089;
+ if(yych == 'g') goto yy1089;
goto yy53;
-yy978:
- YYDEBUG(978, *YYCURSOR);
+yy1086:
+ YYDEBUG(1086, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy979;
+ if(yych == 'R') goto yy1087;
if(yych != 'r') goto yy53;
- goto yy979;
-yy979:
- YYDEBUG(979, *YYCURSOR);
+ goto yy1087;
+yy1087:
+ YYDEBUG(1087, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'I') goto yy980;
- if(yych != 'i') goto yy889;
- goto yy980;
-yy980:
- YYDEBUG(980, *YYCURSOR);
+ if(yych == 'I') goto yy1088;
+ if(yych != 'i') goto yy978;
+ goto yy1088;
+yy1088:
+ YYDEBUG(1088, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'L') goto yy958;
- if(yych == 'l') goto yy958;
+ if(yych == 'L') goto yy1066;
+ if(yych == 'l') goto yy1066;
goto yy53;
-yy981:
- YYDEBUG(981, *YYCURSOR);
+yy1089:
+ YYDEBUG(1089, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'U') goto yy982;
- if(yych != 'u') goto yy889;
- goto yy982;
-yy982:
- YYDEBUG(982, *YYCURSOR);
+ if(yych == 'U') goto yy1090;
+ if(yych != 'u') goto yy978;
+ goto yy1090;
+yy1090:
+ YYDEBUG(1090, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy983;
+ if(yych == 'S') goto yy1091;
if(yych != 's') goto yy53;
- goto yy983;
-yy983:
- YYDEBUG(983, *YYCURSOR);
+ goto yy1091;
+yy1091:
+ YYDEBUG(1091, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy958;
- if(yych == 't') goto yy958;
+ if(yych == 'T') goto yy1066;
+ if(yych == 't') goto yy1066;
goto yy53;
-yy984:
- YYDEBUG(984, *YYCURSOR);
+yy1092:
+ YYDEBUG(1092, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
- if(yych == 'R') goto yy985;
+ if(yych == 'R') goto yy1093;
if(yych <= 'X') goto yy53;
- goto yy958;
+ goto yy1066;
} else {
if(yych <= 'r'){
if(yych <= 'q') goto yy53;
- goto yy985;
+ goto yy1093;
} else {
- if(yych == 'y') goto yy958;
+ if(yych == 'y') goto yy1066;
goto yy53;
}
}
-yy985:
- YYDEBUG(985, *YYCURSOR);
+yy1093:
+ YYDEBUG(1093, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'C') goto yy986;
- if(yych != 'c') goto yy889;
- goto yy986;
-yy986:
- YYDEBUG(986, *YYCURSOR);
+ if(yych == 'C') goto yy1094;
+ if(yych != 'c') goto yy978;
+ goto yy1094;
+yy1094:
+ YYDEBUG(1094, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy958;
- if(yych == 'h') goto yy958;
+ if(yych == 'H') goto yy1066;
+ if(yych == 'h') goto yy1066;
goto yy53;
-yy987:
- YYDEBUG(987, *YYCURSOR);
+yy1095:
+ YYDEBUG(1095, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy988;
+ if(yych == 'B') goto yy1096;
if(yych != 'b') goto yy53;
- goto yy988;
-yy988:
- YYDEBUG(988, *YYCURSOR);
+ goto yy1096;
+yy1096:
+ YYDEBUG(1096, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'R') goto yy989;
- if(yych != 'r') goto yy889;
- goto yy989;
-yy989:
- YYDEBUG(989, *YYCURSOR);
+ if(yych == 'R') goto yy1097;
+ if(yych != 'r') goto yy978;
+ goto yy1097;
+yy1097:
+ YYDEBUG(1097, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'U') goto yy990;
+ if(yych == 'U') goto yy1098;
if(yych != 'u') goto yy53;
- goto yy990;
-yy990:
- YYDEBUG(990, *YYCURSOR);
+ goto yy1098;
+yy1098:
+ YYDEBUG(1098, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy991;
+ if(yych == 'A') goto yy1099;
if(yych != 'a') goto yy53;
- goto yy991;
-yy991:
- YYDEBUG(991, *YYCURSOR);
+ goto yy1099;
+yy1099:
+ YYDEBUG(1099, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy992;
+ if(yych == 'R') goto yy1100;
if(yych != 'r') goto yy53;
- goto yy992;
-yy992:
- YYDEBUG(992, *YYCURSOR);
+ goto yy1100;
+yy1100:
+ YYDEBUG(1100, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy958;
- if(yych == 'y') goto yy958;
+ if(yych == 'Y') goto yy1066;
+ if(yych == 'y') goto yy1066;
goto yy53;
-yy993:
- YYDEBUG(993, *YYCURSOR);
+yy1101:
+ YYDEBUG(1101, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
- if(yych == 'L') goto yy1000;
+ if(yych == 'L') goto yy1108;
if(yych <= 'M') goto yy53;
- goto yy999;
+ goto yy1107;
} else {
if(yych <= 'l'){
if(yych <= 'k') goto yy53;
- goto yy1000;
+ goto yy1108;
} else {
- if(yych == 'n') goto yy999;
+ if(yych == 'n') goto yy1107;
goto yy53;
}
}
-yy994:
- YYDEBUG(994, *YYCURSOR);
+yy1102:
+ YYDEBUG(1102, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy995;
+ if(yych == 'N') goto yy1103;
if(yych != 'n') goto yy53;
- goto yy995;
-yy995:
- YYDEBUG(995, *YYCURSOR);
+ goto yy1103;
+yy1103:
+ YYDEBUG(1103, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'U') goto yy996;
- if(yych != 'u') goto yy889;
- goto yy996;
-yy996:
- YYDEBUG(996, *YYCURSOR);
+ if(yych == 'U') goto yy1104;
+ if(yych != 'u') goto yy978;
+ goto yy1104;
+yy1104:
+ YYDEBUG(1104, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy997;
+ if(yych == 'A') goto yy1105;
if(yych != 'a') goto yy53;
- goto yy997;
-yy997:
- YYDEBUG(997, *YYCURSOR);
+ goto yy1105;
+yy1105:
+ YYDEBUG(1105, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy998;
+ if(yych == 'R') goto yy1106;
if(yych != 'r') goto yy53;
- goto yy998;
-yy998:
- YYDEBUG(998, *YYCURSOR);
+ goto yy1106;
+yy1106:
+ YYDEBUG(1106, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy958;
- if(yych == 'y') goto yy958;
+ if(yych == 'Y') goto yy1066;
+ if(yych == 'y') goto yy1066;
goto yy53;
-yy999:
- YYDEBUG(999, *YYCURSOR);
+yy1107:
+ YYDEBUG(1107, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy958;
- if(yych == 'e') goto yy958;
- goto yy889;
-yy1000:
- YYDEBUG(1000, *YYCURSOR);
+ if(yych == 'E') goto yy1066;
+ if(yych == 'e') goto yy1066;
+ goto yy978;
+yy1108:
+ YYDEBUG(1108, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy958;
- if(yych == 'y') goto yy958;
- goto yy889;
-yy1001:
- YYDEBUG(1001, *YYCURSOR);
+ if(yych == 'Y') goto yy1066;
+ if(yych == 'y') goto yy1066;
+ goto yy978;
+yy1109:
+ YYDEBUG(1109, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy958;
- goto yy889;
-yy1002:
- YYDEBUG(1002, *YYCURSOR);
+ if(yych == 'I') goto yy1066;
+ goto yy978;
+yy1110:
+ YYDEBUG(1110, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych != 'I') goto yy889;
- goto yy1003;
-yy1003:
- YYDEBUG(1003, *YYCURSOR);
+ if(yych != 'I') goto yy978;
+ goto yy1111;
+yy1111:
+ YYDEBUG(1111, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy958;
- goto yy889;
-yy1004:
- YYDEBUG(1004, *YYCURSOR);
+ if(yych == 'I') goto yy1066;
+ goto yy978;
+yy1112:
+ YYDEBUG(1112, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy958;
- goto yy889;
-yy1005:
- YYDEBUG(1005, *YYCURSOR);
+ if(yych == 'I') goto yy1066;
+ goto yy978;
+yy1113:
+ YYDEBUG(1113, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '0') goto yy1018;
- if(yych <= '9') goto yy1017;
+ if(yych <= '0') goto yy1128;
+ if(yych <= '9') goto yy1127;
goto yy53;
-yy1006:
- YYDEBUG(1006, *YYCURSOR);
+yy1114:
+ YYDEBUG(1114, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1016;
+ if(yych <= '9') goto yy1126;
goto yy53;
-yy1007:
- YYDEBUG(1007, *YYCURSOR);
+yy1115:
+ YYDEBUG(1115, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1014;
- if(yych <= '6') goto yy1013;
+ if(yych <= '5') goto yy1124;
+ if(yych <= '6') goto yy1123;
goto yy53;
-yy1008:
- YYDEBUG(1008, *YYCURSOR);
+yy1116:
+ YYDEBUG(1116, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy987;
- if(yych == 'e') goto yy987;
+ if(yych == 'E') goto yy1095;
+ if(yych == 'e') goto yy1095;
goto yy53;
-yy1009:
- YYDEBUG(1009, *YYCURSOR);
+yy1117:
+ YYDEBUG(1117, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy984;
- if(yych == 'a') goto yy984;
+ if(yych == 'A') goto yy1092;
+ if(yych == 'a') goto yy1092;
goto yy53;
-yy1010:
- YYDEBUG(1010, *YYCURSOR);
+yy1118:
+ YYDEBUG(1118, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy1012;
- if(yych == 'e') goto yy1012;
+ if(yych == 'E') goto yy1122;
+ if(yych == 'e') goto yy1122;
goto yy53;
-yy1011:
- YYDEBUG(1011, *YYCURSOR);
+yy1119:
+ YYDEBUG(1119, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy952;
- if(yych == 'e') goto yy952;
+ if(yych == 'E') goto yy1060;
+ if(yych == 'e') goto yy1060;
goto yy53;
-yy1012:
- YYDEBUG(1012, *YYCURSOR);
+yy1120:
+ YYDEBUG(1120, *YYCURSOR);
+ ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
+ yych = *YYCURSOR;
+ goto yy1121;
+yy1121:
+ YYDEBUG(1121, *YYCURSOR);
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case 0x09: case ' ': case '-':
+ case '.': goto yy1120;
+ case 'A': case 'a': goto yy984;
+ case 'D': case 'd': goto yy1119;
+ case 'F': case 'f': goto yy1116;
+ case 'I': goto yy977;
+ case 'J': case 'j': goto yy981;
+ case 'M': case 'm': goto yy1117;
+ case 'N': case 'n': goto yy987;
+ case 'O': case 'o': goto yy986;
+ case 'S': case 's': goto yy1118;
+ case 'V': goto yy979;
+ case 'X': goto yy980;
+ default: goto yy53;
+ }
+yy1122:
+ YYDEBUG(1122, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'P') goto yy971;
- if(yych == 'p') goto yy971;
+ if(yych == 'P') goto yy1079;
+ if(yych == 'p') goto yy1079;
goto yy53;
-yy1013:
- YYDEBUG(1013, *YYCURSOR);
+yy1123:
+ YYDEBUG(1123, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '6') goto yy1015;
+ if(yych <= '6') goto yy1125;
goto yy53;
-yy1014:
- YYDEBUG(1014, *YYCURSOR);
+yy1124:
+ YYDEBUG(1124, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy1015;
-yy1015:
- YYDEBUG(1015, *YYCURSOR);
+ goto yy1125;
+yy1125:
+ YYDEBUG(1125, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy915;
-yy1016:
- YYDEBUG(1016, *YYCURSOR);
+ goto yy1005;
+yy1126:
+ YYDEBUG(1126, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1015;
+ if(yych <= '9') goto yy1125;
goto yy53;
-yy1017:
- YYDEBUG(1017, *YYCURSOR);
+yy1127:
+ YYDEBUG(1127, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1015;
+ if(yych <= '9') goto yy1125;
goto yy53;
-yy1018:
- YYDEBUG(1018, *YYCURSOR);
+yy1128:
+ YYDEBUG(1128, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '0') goto yy53;
- if(yych <= '9') goto yy1015;
+ if(yych <= '9') goto yy1125;
goto yy53;
-yy1019:
- YYDEBUG(1019, *YYCURSOR);
+yy1129:
+ YYDEBUG(1129, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '.') goto yy53;
- if(yych <= '/') goto yy1022;
- if(yych <= '0') goto yy1021;
- if(yych <= '9') goto yy1032;
+ if(yych <= '/') goto yy1132;
+ if(yych <= '0') goto yy1131;
+ if(yych <= '9') goto yy1142;
goto yy53;
-yy1020:
- YYDEBUG(1020, *YYCURSOR);
+yy1130:
+ YYDEBUG(1130, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '.') goto yy53;
- if(yych <= '/') goto yy1022;
- if(yych <= '2') goto yy1032;
+ if(yych <= '/') goto yy1132;
+ if(yych <= '2') goto yy1142;
goto yy53;
-yy1021:
- YYDEBUG(1021, *YYCURSOR);
+yy1131:
+ YYDEBUG(1131, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '/') goto yy53;
- goto yy1022;
-yy1022:
- YYDEBUG(1022, *YYCURSOR);
+ goto yy1132;
+yy1132:
+ YYDEBUG(1132, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '2') goto yy1023;
- if(yych <= '3') goto yy1025;
- if(yych <= '9') goto yy1026;
+ if(yych <= '2') goto yy1133;
+ if(yych <= '3') goto yy1135;
+ if(yych <= '9') goto yy1136;
goto yy53;
-yy1023:
- YYDEBUG(1023, *YYCURSOR);
+yy1133:
+ YYDEBUG(1133, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych <= '/') goto yy1024;
- if(yych <= '9') goto yy1026;
- if(yych >= 'n') goto yy1028;
- goto yy1024;
+ if(yych <= '/') goto yy1134;
+ if(yych <= '9') goto yy1136;
+ if(yych >= 'n') goto yy1138;
+ goto yy1134;
} else {
if(yych <= 'r'){
- if(yych >= 'r') goto yy1029;
- goto yy1024;
+ if(yych >= 'r') goto yy1139;
+ goto yy1134;
} else {
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
}
-yy1024:
- YYDEBUG(1024, *YYCURSOR);
+yy1134:
+ YYDEBUG(1134, *YYCURSOR);
{
DEBUG_OUTPUT("iso8601date | iso8601dateslash | dateslash");
@@ -13588,1055 +17544,1048 @@ yy1024:
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
-yy1025:
- YYDEBUG(1025, *YYCURSOR);
+yy1135:
+ YYDEBUG(1135, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych <= '/') goto yy1024;
- if(yych <= '1') goto yy1026;
- if(yych <= 'm') goto yy1024;
- goto yy1028;
+ if(yych <= '/') goto yy1134;
+ if(yych <= '1') goto yy1136;
+ if(yych <= 'm') goto yy1134;
+ goto yy1138;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy1024;
- goto yy1029;
+ if(yych <= 'q') goto yy1134;
+ goto yy1139;
} else {
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
}
-yy1026:
- YYDEBUG(1026, *YYCURSOR);
+yy1136:
+ YYDEBUG(1136, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'q'){
- if(yych == 'n') goto yy1028;
- goto yy1024;
+ if(yych == 'n') goto yy1138;
+ goto yy1134;
} else {
- if(yych <= 'r') goto yy1029;
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 'r') goto yy1139;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
-yy1027:
- YYDEBUG(1027, *YYCURSOR);
+yy1137:
+ YYDEBUG(1137, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 't') goto yy1031;
+ if(yych == 't') goto yy1141;
goto yy53;
-yy1028:
- YYDEBUG(1028, *YYCURSOR);
+yy1138:
+ YYDEBUG(1138, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy1031;
+ if(yych == 'd') goto yy1141;
goto yy53;
-yy1029:
- YYDEBUG(1029, *YYCURSOR);
+yy1139:
+ YYDEBUG(1139, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy1031;
+ if(yych == 'd') goto yy1141;
goto yy53;
-yy1030:
- YYDEBUG(1030, *YYCURSOR);
+yy1140:
+ YYDEBUG(1140, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != 'h') goto yy53;
- goto yy1031;
-yy1031:
- YYDEBUG(1031, *YYCURSOR);
+ goto yy1141;
+yy1141:
+ YYDEBUG(1141, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy1024;
-yy1032:
- YYDEBUG(1032, *YYCURSOR);
+ goto yy1134;
+yy1142:
+ YYDEBUG(1142, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '/') goto yy53;
- goto yy1033;
-yy1033:
- YYDEBUG(1033, *YYCURSOR);
+ goto yy1143;
+yy1143:
+ YYDEBUG(1143, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '2'){
if(yych <= '/') goto yy53;
- if(yych >= '1') goto yy1035;
- goto yy1034;
+ if(yych >= '1') goto yy1145;
+ goto yy1144;
} else {
- if(yych <= '3') goto yy1036;
- if(yych <= '9') goto yy1026;
+ if(yych <= '3') goto yy1146;
+ if(yych <= '9') goto yy1136;
goto yy53;
}
-yy1034:
- YYDEBUG(1034, *YYCURSOR);
+yy1144:
+ YYDEBUG(1144, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
if(yych <= '0'){
- if(yych <= '/') goto yy1024;
- goto yy1026;
+ if(yych <= '/') goto yy1134;
+ goto yy1136;
} else {
- if(yych <= '9') goto yy1037;
- if(yych <= 'm') goto yy1024;
- goto yy1028;
+ if(yych <= '9') goto yy1147;
+ if(yych <= 'm') goto yy1134;
+ goto yy1138;
}
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy1024;
- goto yy1029;
+ if(yych <= 'q') goto yy1134;
+ goto yy1139;
} else {
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
}
-yy1035:
- YYDEBUG(1035, *YYCURSOR);
+yy1145:
+ YYDEBUG(1145, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych <= '/') goto yy1024;
- if(yych <= '9') goto yy1037;
- if(yych <= 'm') goto yy1024;
- goto yy1028;
+ if(yych <= '/') goto yy1134;
+ if(yych <= '9') goto yy1147;
+ if(yych <= 'm') goto yy1134;
+ goto yy1138;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy1024;
- goto yy1029;
+ if(yych <= 'q') goto yy1134;
+ goto yy1139;
} else {
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
}
-yy1036:
- YYDEBUG(1036, *YYCURSOR);
+yy1146:
+ YYDEBUG(1146, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych <= '/') goto yy1024;
- if(yych <= '1') goto yy1037;
- if(yych <= 'm') goto yy1024;
- goto yy1028;
+ if(yych <= '/') goto yy1134;
+ if(yych <= '1') goto yy1147;
+ if(yych <= 'm') goto yy1134;
+ goto yy1138;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy1024;
- goto yy1029;
+ if(yych <= 'q') goto yy1134;
+ goto yy1139;
} else {
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
}
-yy1037:
- YYDEBUG(1037, *YYCURSOR);
+yy1147:
+ YYDEBUG(1147, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych == '/') goto yy1031;
- if(yych <= 'm') goto yy1024;
- goto yy1028;
+ if(yych == '/') goto yy1141;
+ if(yych <= 'm') goto yy1134;
+ goto yy1138;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy1024;
- goto yy1029;
+ if(yych <= 'q') goto yy1134;
+ goto yy1139;
} else {
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
}
-yy1038:
- YYDEBUG(1038, *YYCURSOR);
+yy1148:
+ YYDEBUG(1148, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'A') goto yy1113;
+ if(yych == 'A') goto yy1223;
if(yych <= 'T') goto yy53;
- goto yy1112;
+ goto yy1222;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
- goto yy1113;
+ goto yy1223;
} else {
- if(yych == 'u') goto yy1112;
+ if(yych == 'u') goto yy1222;
goto yy53;
}
}
-yy1039:
- YYDEBUG(1039, *YYCURSOR);
+yy1149:
+ YYDEBUG(1149, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy1110;
- if(yych == 'e') goto yy1110;
+ if(yych == 'E') goto yy1220;
+ if(yych == 'e') goto yy1220;
goto yy53;
-yy1040:
- YYDEBUG(1040, *YYCURSOR);
+yy1150:
+ YYDEBUG(1150, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy1107;
- if(yych == 'a') goto yy1107;
+ if(yych == 'A') goto yy1217;
+ if(yych == 'a') goto yy1217;
goto yy53;
-yy1041:
- YYDEBUG(1041, *YYCURSOR);
+yy1151:
+ YYDEBUG(1151, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'P') goto yy1104;
+ if(yych == 'P') goto yy1214;
if(yych <= 'T') goto yy53;
- goto yy1103;
+ goto yy1213;
} else {
if(yych <= 'p'){
if(yych <= 'o') goto yy53;
- goto yy1104;
+ goto yy1214;
} else {
- if(yych == 'u') goto yy1103;
+ if(yych == 'u') goto yy1213;
goto yy53;
}
}
-yy1042:
- YYDEBUG(1042, *YYCURSOR);
+yy1152:
+ YYDEBUG(1152, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy1100;
- if(yych == 'e') goto yy1100;
+ if(yych == 'E') goto yy1210;
+ if(yych == 'e') goto yy1210;
goto yy53;
-yy1043:
- YYDEBUG(1043, *YYCURSOR);
+yy1153:
+ YYDEBUG(1153, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy1098;
- if(yych == 'c') goto yy1098;
+ if(yych == 'C') goto yy1208;
+ if(yych == 'c') goto yy1208;
goto yy53;
-yy1044:
- YYDEBUG(1044, *YYCURSOR);
+yy1154:
+ YYDEBUG(1154, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy1096;
- if(yych == 'o') goto yy1096;
+ if(yych == 'O') goto yy1206;
+ if(yych == 'o') goto yy1206;
goto yy53;
-yy1045:
- YYDEBUG(1045, *YYCURSOR);
+yy1155:
+ YYDEBUG(1155, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy1094;
- if(yych == 'e') goto yy1094;
+ if(yych == 'E') goto yy1204;
+ if(yych == 'e') goto yy1204;
goto yy53;
-yy1046:
- YYDEBUG(1046, *YYCURSOR);
+yy1156:
+ YYDEBUG(1156, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/'){
- if(yych == '-') goto yy1049;
+ if(yych == '-') goto yy1159;
goto yy53;
} else {
- if(yych <= '0') goto yy1048;
- if(yych <= '9') goto yy1068;
+ if(yych <= '0') goto yy1158;
+ if(yych <= '9') goto yy1178;
goto yy53;
}
-yy1047:
- YYDEBUG(1047, *YYCURSOR);
+yy1157:
+ YYDEBUG(1157, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy1049;
+ if(yych == '-') goto yy1159;
if(yych <= '/') goto yy53;
- if(yych <= '2') goto yy1068;
+ if(yych <= '2') goto yy1178;
goto yy53;
-yy1048:
- YYDEBUG(1048, *YYCURSOR);
+yy1158:
+ YYDEBUG(1158, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '-') goto yy53;
- goto yy1049;
-yy1049:
- YYDEBUG(1049, *YYCURSOR);
+ goto yy1159;
+yy1159:
+ YYDEBUG(1159, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '2') goto yy1050;
- if(yych <= '3') goto yy1051;
- if(yych <= '9') goto yy1052;
+ if(yych <= '2') goto yy1160;
+ if(yych <= '3') goto yy1161;
+ if(yych <= '9') goto yy1162;
goto yy53;
-yy1050:
- YYDEBUG(1050, *YYCURSOR);
+yy1160:
+ YYDEBUG(1160, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '9'){
- if(yych <= '/') goto yy775;
- goto yy1052;
+ if(yych <= '/') goto yy860;
+ goto yy1162;
} else {
- if(yych == 'T') goto yy1057;
- goto yy775;
+ if(yych == 'T') goto yy1167;
+ goto yy860;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy1054;
- if(yych <= 'q') goto yy775;
- goto yy1055;
+ if(yych <= 'n') goto yy1164;
+ if(yych <= 'q') goto yy860;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy775;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy860;
}
}
-yy1051:
- YYDEBUG(1051, *YYCURSOR);
+yy1161:
+ YYDEBUG(1161, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy775;
- goto yy1052;
+ if(yych <= '/') goto yy860;
+ goto yy1162;
} else {
- if(yych == 'T') goto yy1057;
- goto yy775;
+ if(yych == 'T') goto yy1167;
+ goto yy860;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy1054;
- if(yych <= 'q') goto yy775;
- goto yy1055;
+ if(yych <= 'n') goto yy1164;
+ if(yych <= 'q') goto yy860;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy775;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy860;
}
}
-yy1052:
- YYDEBUG(1052, *YYCURSOR);
+yy1162:
+ YYDEBUG(1162, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych == 'T') goto yy1057;
- if(yych <= 'm') goto yy775;
- goto yy1054;
+ if(yych == 'T') goto yy1167;
+ if(yych <= 'm') goto yy860;
+ goto yy1164;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy775;
- goto yy1055;
+ if(yych <= 'q') goto yy860;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy775;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy860;
}
}
-yy1053:
- YYDEBUG(1053, *YYCURSOR);
+yy1163:
+ YYDEBUG(1163, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 't') goto yy1067;
+ if(yych == 't') goto yy1177;
goto yy53;
-yy1054:
- YYDEBUG(1054, *YYCURSOR);
+yy1164:
+ YYDEBUG(1164, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy1067;
+ if(yych == 'd') goto yy1177;
goto yy53;
-yy1055:
- YYDEBUG(1055, *YYCURSOR);
+yy1165:
+ YYDEBUG(1165, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy1067;
+ if(yych == 'd') goto yy1177;
goto yy53;
-yy1056:
- YYDEBUG(1056, *YYCURSOR);
+yy1166:
+ YYDEBUG(1166, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'h') goto yy1067;
+ if(yych == 'h') goto yy1177;
goto yy53;
-yy1057:
- YYDEBUG(1057, *YYCURSOR);
+yy1167:
+ YYDEBUG(1167, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy1058;
- if(yych <= '2') goto yy1059;
- if(yych <= '9') goto yy1060;
+ if(yych <= '1') goto yy1168;
+ if(yych <= '2') goto yy1169;
+ if(yych <= '9') goto yy1170;
goto yy53;
-yy1058:
- YYDEBUG(1058, *YYCURSOR);
+yy1168:
+ YYDEBUG(1168, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1060;
- if(yych <= ':') goto yy1061;
+ if(yych <= '9') goto yy1170;
+ if(yych <= ':') goto yy1171;
goto yy53;
-yy1059:
- YYDEBUG(1059, *YYCURSOR);
+yy1169:
+ YYDEBUG(1169, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '3') goto yy1060;
- if(yych == ':') goto yy1061;
+ if(yych <= '3') goto yy1170;
+ if(yych == ':') goto yy1171;
goto yy53;
-yy1060:
- YYDEBUG(1060, *YYCURSOR);
+yy1170:
+ YYDEBUG(1170, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy1061;
-yy1061:
- YYDEBUG(1061, *YYCURSOR);
+ goto yy1171;
+yy1171:
+ YYDEBUG(1171, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1062;
- if(yych <= '9') goto yy1063;
+ if(yych <= '5') goto yy1172;
+ if(yych <= '9') goto yy1173;
goto yy53;
-yy1062:
- YYDEBUG(1062, *YYCURSOR);
+yy1172:
+ YYDEBUG(1172, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1063;
- if(yych <= ':') goto yy1064;
+ if(yych <= '9') goto yy1173;
+ if(yych <= ':') goto yy1174;
goto yy53;
-yy1063:
- YYDEBUG(1063, *YYCURSOR);
+yy1173:
+ YYDEBUG(1173, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy1064;
-yy1064:
- YYDEBUG(1064, *YYCURSOR);
+ goto yy1174;
+yy1174:
+ YYDEBUG(1174, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1065;
- if(yych <= '6') goto yy1066;
- if(yych <= '9') goto yy932;
+ if(yych <= '5') goto yy1175;
+ if(yych <= '6') goto yy1176;
+ if(yych <= '9') goto yy1025;
goto yy53;
-yy1065:
- YYDEBUG(1065, *YYCURSOR);
+yy1175:
+ YYDEBUG(1175, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '9') goto yy932;
- goto yy933;
-yy1066:
- YYDEBUG(1066, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '9') goto yy1025;
+ goto yy1026;
+yy1176:
+ YYDEBUG(1176, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '0') goto yy932;
- goto yy933;
-yy1067:
- YYDEBUG(1067, *YYCURSOR);
+ if(yych == '0') goto yy1025;
+ goto yy1026;
+yy1177:
+ YYDEBUG(1177, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'T') goto yy1057;
- goto yy775;
-yy1068:
- YYDEBUG(1068, *YYCURSOR);
+ if(yych == 'T') goto yy1167;
+ goto yy860;
+yy1178:
+ YYDEBUG(1178, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '-') goto yy53;
- goto yy1069;
-yy1069:
- YYDEBUG(1069, *YYCURSOR);
+ goto yy1179;
+yy1179:
+ YYDEBUG(1179, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '2'){
if(yych <= '/') goto yy53;
- if(yych >= '1') goto yy1071;
- goto yy1070;
+ if(yych >= '1') goto yy1181;
+ goto yy1180;
} else {
- if(yych <= '3') goto yy1072;
- if(yych <= '9') goto yy1052;
+ if(yych <= '3') goto yy1182;
+ if(yych <= '9') goto yy1162;
goto yy53;
}
-yy1070:
- YYDEBUG(1070, *YYCURSOR);
+yy1180:
+ YYDEBUG(1180, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '9'){
- if(yych <= '/') goto yy775;
- if(yych <= '0') goto yy1052;
- goto yy1073;
+ if(yych <= '/') goto yy860;
+ if(yych <= '0') goto yy1162;
+ goto yy1183;
} else {
- if(yych == 'T') goto yy1057;
- goto yy775;
+ if(yych == 'T') goto yy1167;
+ goto yy860;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy1054;
- if(yych <= 'q') goto yy775;
- goto yy1055;
+ if(yych <= 'n') goto yy1164;
+ if(yych <= 'q') goto yy860;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy775;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy860;
}
}
-yy1071:
- YYDEBUG(1071, *YYCURSOR);
+yy1181:
+ YYDEBUG(1181, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '9'){
- if(yych <= '/') goto yy775;
- goto yy1073;
+ if(yych <= '/') goto yy860;
+ goto yy1183;
} else {
- if(yych == 'T') goto yy1057;
- goto yy775;
+ if(yych == 'T') goto yy1167;
+ goto yy860;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy1054;
- if(yych <= 'q') goto yy775;
- goto yy1055;
+ if(yych <= 'n') goto yy1164;
+ if(yych <= 'q') goto yy860;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy775;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy860;
}
}
-yy1072:
- YYDEBUG(1072, *YYCURSOR);
+yy1182:
+ YYDEBUG(1182, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy775;
- goto yy1073;
+ if(yych <= '/') goto yy860;
+ goto yy1183;
} else {
- if(yych == 'T') goto yy1057;
- goto yy775;
+ if(yych == 'T') goto yy1167;
+ goto yy860;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy1054;
- if(yych <= 'q') goto yy775;
- goto yy1055;
+ if(yych <= 'n') goto yy1164;
+ if(yych <= 'q') goto yy860;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy775;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy860;
}
}
-yy1073:
- YYDEBUG(1073, *YYCURSOR);
+yy1183:
+ YYDEBUG(1183, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych == 'T') goto yy1074;
- if(yych <= 'm') goto yy1024;
- goto yy1054;
+ if(yych == 'T') goto yy1184;
+ if(yych <= 'm') goto yy1134;
+ goto yy1164;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy1024;
- goto yy1055;
+ if(yych <= 'q') goto yy1134;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy1024;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy1134;
}
}
-yy1074:
- YYDEBUG(1074, *YYCURSOR);
+yy1184:
+ YYDEBUG(1184, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy1075;
- if(yych <= '2') goto yy1076;
- if(yych <= '9') goto yy1060;
+ if(yych <= '1') goto yy1185;
+ if(yych <= '2') goto yy1186;
+ if(yych <= '9') goto yy1170;
goto yy53;
-yy1075:
- YYDEBUG(1075, *YYCURSOR);
+yy1185:
+ YYDEBUG(1185, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1077;
- if(yych <= ':') goto yy1061;
+ if(yych <= '9') goto yy1187;
+ if(yych <= ':') goto yy1171;
goto yy53;
-yy1076:
- YYDEBUG(1076, *YYCURSOR);
+yy1186:
+ YYDEBUG(1186, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '3') goto yy1077;
- if(yych == ':') goto yy1061;
+ if(yych <= '3') goto yy1187;
+ if(yych == ':') goto yy1171;
goto yy53;
-yy1077:
- YYDEBUG(1077, *YYCURSOR);
+yy1187:
+ YYDEBUG(1187, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy1078;
-yy1078:
- YYDEBUG(1078, *YYCURSOR);
+ goto yy1188;
+yy1188:
+ YYDEBUG(1188, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1079;
- if(yych <= '9') goto yy1063;
+ if(yych <= '5') goto yy1189;
+ if(yych <= '9') goto yy1173;
goto yy53;
-yy1079:
- YYDEBUG(1079, *YYCURSOR);
+yy1189:
+ YYDEBUG(1189, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1080;
- if(yych <= ':') goto yy1064;
+ if(yych <= '9') goto yy1190;
+ if(yych <= ':') goto yy1174;
goto yy53;
-yy1080:
- YYDEBUG(1080, *YYCURSOR);
+yy1190:
+ YYDEBUG(1190, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy1081;
-yy1081:
- YYDEBUG(1081, *YYCURSOR);
+ goto yy1191;
+yy1191:
+ YYDEBUG(1191, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1082;
- if(yych <= '6') goto yy1083;
- if(yych <= '9') goto yy932;
+ if(yych <= '5') goto yy1192;
+ if(yych <= '6') goto yy1193;
+ if(yych <= '9') goto yy1025;
goto yy53;
-yy1082:
- YYDEBUG(1082, *YYCURSOR);
+yy1192:
+ YYDEBUG(1192, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '9') goto yy1084;
- goto yy933;
-yy1083:
- YYDEBUG(1083, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '9') goto yy1194;
+ goto yy1026;
+yy1193:
+ YYDEBUG(1193, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych != '0') goto yy933;
- goto yy1084;
-yy1084:
- YYDEBUG(1084, *YYCURSOR);
+ if(yych != '0') goto yy1026;
+ goto yy1194;
+yy1194:
+ YYDEBUG(1194, *YYCURSOR);
yyaccept = 19;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych != '.') goto yy933;
- goto yy1085;
-yy1085:
- YYDEBUG(1085, *YYCURSOR);
+ if(yych != '.') goto yy1026;
+ goto yy1195;
+yy1195:
+ YYDEBUG(1195, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy1086;
-yy1086:
- YYDEBUG(1086, *YYCURSOR);
+ goto yy1196;
+yy1196:
+ YYDEBUG(1196, *YYCURSOR);
yyaccept = 19;
YYMARKER = ++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
yych = *YYCURSOR;
- goto yy1087;
-yy1087:
- YYDEBUG(1087, *YYCURSOR);
+ goto yy1197;
+yy1197:
+ YYDEBUG(1197, *YYCURSOR);
if(yych <= ','){
- if(yych != '+') goto yy933;
- goto yy1088;
+ if(yych != '+') goto yy1026;
+ goto yy1198;
} else {
- if(yych <= '-') goto yy1088;
- if(yych <= '/') goto yy933;
- if(yych <= '9') goto yy1086;
- goto yy933;
+ if(yych <= '-') goto yy1198;
+ if(yych <= '/') goto yy1026;
+ if(yych <= '9') goto yy1196;
+ goto yy1026;
}
-yy1088:
- YYDEBUG(1088, *YYCURSOR);
+yy1198:
+ YYDEBUG(1198, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy1089;
- if(yych <= '2') goto yy1090;
- if(yych <= '9') goto yy1091;
+ if(yych <= '1') goto yy1199;
+ if(yych <= '2') goto yy1200;
+ if(yych <= '9') goto yy1201;
goto yy53;
-yy1089:
- YYDEBUG(1089, *YYCURSOR);
+yy1199:
+ YYDEBUG(1199, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '9') goto yy1091;
- if(yych <= ':') goto yy1092;
- goto yy933;
-yy1090:
- YYDEBUG(1090, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '9') goto yy1201;
+ if(yych <= ':') goto yy1202;
+ goto yy1026;
+yy1200:
+ YYDEBUG(1200, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '5'){
- if(yych <= '/') goto yy933;
- if(yych >= '4') goto yy1093;
- goto yy1091;
+ if(yych <= '/') goto yy1026;
+ if(yych >= '4') goto yy1203;
+ goto yy1201;
} else {
- if(yych <= '9') goto yy932;
- if(yych <= ':') goto yy1092;
- goto yy933;
+ if(yych <= '9') goto yy1025;
+ if(yych <= ':') goto yy1202;
+ goto yy1026;
}
-yy1091:
- YYDEBUG(1091, *YYCURSOR);
+yy1201:
+ YYDEBUG(1201, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '5') goto yy1093;
- if(yych <= '9') goto yy932;
- if(yych >= ';') goto yy933;
- goto yy1092;
-yy1092:
- YYDEBUG(1092, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '5') goto yy1203;
+ if(yych <= '9') goto yy1025;
+ if(yych >= ';') goto yy1026;
+ goto yy1202;
+yy1202:
+ YYDEBUG(1202, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '5') goto yy1093;
- if(yych <= '9') goto yy932;
- goto yy933;
-yy1093:
- YYDEBUG(1093, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '5') goto yy1203;
+ if(yych <= '9') goto yy1025;
+ goto yy1026;
+yy1203:
+ YYDEBUG(1203, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '9') goto yy932;
- goto yy933;
-yy1094:
- YYDEBUG(1094, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '9') goto yy1025;
+ goto yy1026;
+yy1204:
+ YYDEBUG(1204, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy1095;
+ if(yych == 'C') goto yy1205;
if(yych != 'c') goto yy53;
- goto yy1095;
-yy1095:
- YYDEBUG(1095, *YYCURSOR);
+ goto yy1205;
+yy1205:
+ YYDEBUG(1205, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'E') goto yy954;
- if(yych == 'e') goto yy954;
- goto yy889;
+ if(yych <= 'E') goto yy1062;
+ if(yych == 'e') goto yy1062;
+ goto yy978;
}
-yy1096:
- YYDEBUG(1096, *YYCURSOR);
+yy1206:
+ YYDEBUG(1206, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'V') goto yy1097;
+ if(yych == 'V') goto yy1207;
if(yych != 'v') goto yy53;
- goto yy1097;
-yy1097:
- YYDEBUG(1097, *YYCURSOR);
+ goto yy1207;
+yy1207:
+ YYDEBUG(1207, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'E') goto yy961;
- if(yych == 'e') goto yy961;
- goto yy889;
+ if(yych <= 'E') goto yy1069;
+ if(yych == 'e') goto yy1069;
+ goto yy978;
}
-yy1098:
- YYDEBUG(1098, *YYCURSOR);
+yy1208:
+ YYDEBUG(1208, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy1099;
+ if(yych == 'T') goto yy1209;
if(yych != 't') goto yy53;
- goto yy1099;
-yy1099:
- YYDEBUG(1099, *YYCURSOR);
+ goto yy1209;
+yy1209:
+ YYDEBUG(1209, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'O') goto yy967;
- if(yych == 'o') goto yy967;
- goto yy889;
+ if(yych <= 'O') goto yy1075;
+ if(yych == 'o') goto yy1075;
+ goto yy978;
}
-yy1100:
- YYDEBUG(1100, *YYCURSOR);
+yy1210:
+ YYDEBUG(1210, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'P') goto yy1101;
+ if(yych == 'P') goto yy1211;
if(yych != 'p') goto yy53;
- goto yy1101;
-yy1101:
- YYDEBUG(1101, *YYCURSOR);
+ goto yy1211;
+yy1211:
+ YYDEBUG(1211, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'T') goto yy1102;
- if(yych != 't') goto yy889;
- goto yy1102;
+ if(yych <= 'T') goto yy1212;
+ if(yych != 't') goto yy978;
+ goto yy1212;
}
-yy1102:
- YYDEBUG(1102, *YYCURSOR);
+yy1212:
+ YYDEBUG(1212, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'E') goto yy973;
- if(yych == 'e') goto yy973;
- goto yy889;
+ if(yych <= 'E') goto yy1081;
+ if(yych == 'e') goto yy1081;
+ goto yy978;
}
-yy1103:
- YYDEBUG(1103, *YYCURSOR);
+yy1213:
+ YYDEBUG(1213, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy1106;
- if(yych == 'g') goto yy1106;
+ if(yych == 'G') goto yy1216;
+ if(yych == 'g') goto yy1216;
goto yy53;
-yy1104:
- YYDEBUG(1104, *YYCURSOR);
+yy1214:
+ YYDEBUG(1214, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy1105;
+ if(yych == 'R') goto yy1215;
if(yych != 'r') goto yy53;
- goto yy1105;
-yy1105:
- YYDEBUG(1105, *YYCURSOR);
+ goto yy1215;
+yy1215:
+ YYDEBUG(1215, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'I') goto yy980;
- if(yych == 'i') goto yy980;
- goto yy889;
+ if(yych <= 'I') goto yy1088;
+ if(yych == 'i') goto yy1088;
+ goto yy978;
}
-yy1106:
- YYDEBUG(1106, *YYCURSOR);
+yy1216:
+ YYDEBUG(1216, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'U') goto yy982;
- if(yych == 'u') goto yy982;
- goto yy889;
+ if(yych <= 'U') goto yy1090;
+ if(yych == 'u') goto yy1090;
+ goto yy978;
}
-yy1107:
- YYDEBUG(1107, *YYCURSOR);
+yy1217:
+ YYDEBUG(1217, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
- if(yych == 'R') goto yy1108;
+ if(yych == 'R') goto yy1218;
if(yych <= 'X') goto yy53;
- goto yy1109;
+ goto yy1219;
} else {
if(yych <= 'r'){
if(yych <= 'q') goto yy53;
- goto yy1108;
+ goto yy1218;
} else {
- if(yych == 'y') goto yy1109;
+ if(yych == 'y') goto yy1219;
goto yy53;
}
}
-yy1108:
- YYDEBUG(1108, *YYCURSOR);
+yy1218:
+ YYDEBUG(1218, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'B'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'C') goto yy986;
- if(yych == 'c') goto yy986;
- goto yy889;
+ if(yych <= 'C') goto yy1094;
+ if(yych == 'c') goto yy1094;
+ goto yy978;
}
-yy1109:
- YYDEBUG(1109, *YYCURSOR);
+yy1219:
+ YYDEBUG(1219, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '-') goto yy863;
- goto yy889;
-yy1110:
- YYDEBUG(1110, *YYCURSOR);
+ if(yych == '-') goto yy954;
+ goto yy978;
+yy1220:
+ YYDEBUG(1220, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy1111;
+ if(yych == 'B') goto yy1221;
if(yych != 'b') goto yy53;
- goto yy1111;
-yy1111:
- YYDEBUG(1111, *YYCURSOR);
+ goto yy1221;
+yy1221:
+ YYDEBUG(1221, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'Q'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'R') goto yy989;
- if(yych == 'r') goto yy989;
- goto yy889;
+ if(yych <= 'R') goto yy1097;
+ if(yych == 'r') goto yy1097;
+ goto yy978;
}
-yy1112:
- YYDEBUG(1112, *YYCURSOR);
+yy1222:
+ YYDEBUG(1222, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
- if(yych == 'L') goto yy1116;
+ if(yych == 'L') goto yy1226;
if(yych <= 'M') goto yy53;
- goto yy1115;
+ goto yy1225;
} else {
if(yych <= 'l'){
if(yych <= 'k') goto yy53;
- goto yy1116;
+ goto yy1226;
} else {
- if(yych == 'n') goto yy1115;
+ if(yych == 'n') goto yy1225;
goto yy53;
}
}
-yy1113:
- YYDEBUG(1113, *YYCURSOR);
+yy1223:
+ YYDEBUG(1223, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy1114;
+ if(yych == 'N') goto yy1224;
if(yych != 'n') goto yy53;
- goto yy1114;
-yy1114:
- YYDEBUG(1114, *YYCURSOR);
+ goto yy1224;
+yy1224:
+ YYDEBUG(1224, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'U') goto yy996;
- if(yych == 'u') goto yy996;
- goto yy889;
+ if(yych <= 'U') goto yy1104;
+ if(yych == 'u') goto yy1104;
+ goto yy978;
}
-yy1115:
- YYDEBUG(1115, *YYCURSOR);
+yy1225:
+ YYDEBUG(1225, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'E') goto yy958;
- if(yych == 'e') goto yy958;
- goto yy889;
+ if(yych <= 'E') goto yy1066;
+ if(yych == 'e') goto yy1066;
+ goto yy978;
}
-yy1116:
- YYDEBUG(1116, *YYCURSOR);
+yy1226:
+ YYDEBUG(1226, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'X'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'Y') goto yy958;
- if(yych == 'y') goto yy958;
- goto yy889;
+ if(yych <= 'Y') goto yy1066;
+ if(yych == 'y') goto yy1066;
+ goto yy978;
}
-yy1117:
- YYDEBUG(1117, *YYCURSOR);
+yy1227:
+ YYDEBUG(1227, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'T'){
- if(yych <= '-') goto yy617;
- if(yych <= '.') goto yy845;
- if(yych <= '/') goto yy844;
- goto yy617;
+ if(yych <= '/'){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy784;
+ goto yy931;
+ } else {
+ if(yych <= ',') goto yy784;
+ if(yych <= '.') goto yy931;
+ goto yy930;
+ }
} else {
- if(yych <= 'U') goto yy74;
- if(yych == 'u') goto yy74;
- goto yy617;
+ if(yych <= 'U'){
+ if(yych <= 'T') goto yy784;
+ goto yy74;
+ } else {
+ if(yych == 'u') goto yy74;
+ goto yy784;
+ }
}
-yy1118:
- YYDEBUG(1118, *YYCURSOR);
+yy1228:
+ YYDEBUG(1228, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'P'){
if(yych == 'C') goto yy121;
if(yych <= 'O') goto yy53;
- goto yy709;
+ goto yy792;
} else {
if(yych <= 'c'){
if(yych <= 'b') goto yy53;
goto yy121;
} else {
- if(yych == 'p') goto yy709;
+ if(yych == 'p') goto yy792;
goto yy53;
}
}
-yy1119:
- YYDEBUG(1119, *YYCURSOR);
+yy1229:
+ YYDEBUG(1229, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'm'){
- if(yych <= '.'){
- if(yych <= ',') goto yy1121;
- if(yych <= '-') goto yy615;
- goto yy845;
+ if(yych <= '9'){
+ if(yych <= ','){
+ if(yych != 0x09) goto yy1232;
+ goto yy1230;
} else {
- if(yych <= '/') goto yy844;
- if(yych <= '9') goto yy851;
- goto yy1121;
+ if(yych <= '-') goto yy695;
+ if(yych <= '.') goto yy931;
+ if(yych <= '/') goto yy930;
+ goto yy935;
}
} else {
- if(yych <= 'r'){
- if(yych <= 'n') goto yy612;
- if(yych <= 'q') goto yy1121;
- goto yy613;
+ if(yych <= 'q'){
+ if(yych == 'n') goto yy692;
+ goto yy1232;
} else {
- if(yych <= 's') goto yy606;
- if(yych <= 't') goto yy610;
- goto yy1121;
+ if(yych <= 'r') goto yy693;
+ if(yych <= 's') goto yy686;
+ if(yych <= 't') goto yy690;
+ goto yy1232;
}
}
-yy1120:
- YYDEBUG(1120, *YYCURSOR);
+yy1230:
+ YYDEBUG(1230, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy1232;
+ if(yych <= '0') goto yy932;
+ if(yych <= '1') goto yy933;
+ if(yych <= '9') goto yy934;
+ goto yy1232;
+yy1231:
+ YYDEBUG(1231, *YYCURSOR);
++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
yych = *YYCURSOR;
- goto yy1121;
-yy1121:
- YYDEBUG(1121, *YYCURSOR);
+ goto yy1232;
+yy1232:
+ YYDEBUG(1232, *YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ': goto yy1120;
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',':
+ case 0x09: case ' ': goto yy1231;
case '-':
- case '.': goto yy616;
- case 'A': case 'a': goto yy699;
- case 'D': case 'd': goto yy608;
- case 'F': case 'f': goto yy609;
+ case '.': goto yy783;
+ case 'A': case 'a': goto yy780;
+ case 'D': case 'd': goto yy688;
+ case 'F': case 'f': goto yy689;
case 'H': case 'h': goto yy60;
- case 'I': goto yy619;
- case 'J': case 'j': goto yy623;
- case 'M': case 'm': goto yy607;
- case 'N': case 'n': goto yy626;
- case 'O': case 'o': goto yy625;
- case 'S': case 's': goto yy605;
+ case 'I': goto yy697;
+ case 'J': case 'j': goto yy701;
+ case 'M': case 'm': goto yy687;
+ case 'N': case 'n': goto yy704;
+ case 'O': case 'o': goto yy703;
+ case 'S': case 's': goto yy685;
case 'T': case 't': goto yy65;
- case 'V': goto yy621;
+ case 'V': goto yy699;
case 'W': case 'w': goto yy62;
- case 'X': goto yy622;
+ case 'X': goto yy700;
case 'Y': case 'y': goto yy64;
default: goto yy53;
}
-yy1122:
- YYDEBUG(1122, *YYCURSOR);
+yy1233:
+ YYDEBUG(1233, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= ':'){
- if(yych <= '.'){
- if(yych <= ',') goto yy1121;
- if(yych <= '-') goto yy615;
- goto yy1123;
+ if(yych <= '9'){
+ if(yych <= '-'){
+ if(yych == 0x09) goto yy1230;
+ if(yych <= ',') goto yy1232;
+ goto yy695;
} else {
- if(yych <= '/') goto yy844;
- if(yych <= '5') goto yy1125;
- if(yych <= '9') goto yy851;
- goto yy1124;
+ if(yych <= '.') goto yy1234;
+ if(yych <= '/') goto yy930;
+ if(yych <= '5') goto yy1236;
+ goto yy935;
}
} else {
if(yych <= 'q'){
- if(yych == 'n') goto yy612;
- goto yy1121;
+ if(yych <= ':') goto yy1235;
+ if(yych == 'n') goto yy692;
+ goto yy1232;
} else {
- if(yych <= 'r') goto yy613;
- if(yych <= 's') goto yy606;
- if(yych <= 't') goto yy610;
- goto yy1121;
+ if(yych <= 'r') goto yy693;
+ if(yych <= 's') goto yy686;
+ if(yych <= 't') goto yy690;
+ goto yy1232;
}
}
-yy1123:
- YYDEBUG(1123, *YYCURSOR);
+yy1234:
+ YYDEBUG(1234, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '1'){
- if(yych <= '/') goto yy617;
- if(yych <= '0') goto yy1147;
- goto yy1148;
+ if(yych <= '/') goto yy784;
+ if(yych <= '0') goto yy1258;
+ goto yy1259;
} else {
- if(yych <= '5') goto yy1149;
- if(yych <= '9') goto yy1150;
- goto yy617;
+ if(yych <= '5') goto yy1260;
+ if(yych <= '9') goto yy1261;
+ goto yy784;
}
-yy1124:
- YYDEBUG(1124, *YYCURSOR);
+yy1235:
+ YYDEBUG(1235, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1142;
- if(yych <= '9') goto yy1143;
+ if(yych <= '5') goto yy1253;
+ if(yych <= '9') goto yy1254;
goto yy53;
-yy1125:
- YYDEBUG(1125, *YYCURSOR);
+yy1236:
+ YYDEBUG(1236, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy852;
+ if(yych == '-') goto yy936;
if(yych <= '/') goto yy57;
if(yych >= ':') goto yy57;
- goto yy1126;
-yy1126:
- YYDEBUG(1126, *YYCURSOR);
+ goto yy1237;
+yy1237:
+ YYDEBUG(1237, *YYCURSOR);
yyaccept = 20;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -14645,25 +18594,26 @@ yy1126:
case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm':
case 'n':
case 'o': case 's':
- case 't': case 'w': case 'y': goto yy884;
- case '-': goto yy881;
- case '.': goto yy887;
- case '/': goto yy882;
- case '0': goto yy1128;
- case '1': goto yy1129;
- case '2': goto yy1130;
- case '3': goto yy1131;
+ case 't': case 'w': case 'y': goto yy975;
+ case '-': goto yy972;
+ case '.': goto yy976;
+ case '/': goto yy973;
+ case '0': goto yy1239;
+ case '1': goto yy1240;
+ case '2': goto yy1241;
+ case '3': goto yy1242;
case '4':
- case '5': goto yy1132;
- case '6': goto yy1133;
+ case '5': goto yy1243;
+ case '6': goto yy1244;
case '7':
case '8':
case '9': goto yy51;
- case 'W': goto yy904;
- default: goto yy1127;
+ case ':': goto yy991;
+ case 'W': goto yy994;
+ default: goto yy1238;
}
-yy1127:
- YYDEBUG(1127, *YYCURSOR);
+yy1238:
+ YYDEBUG(1238, *YYCURSOR);
{
DEBUG_OUTPUT("gnunocolon");
@@ -14679,107 +18629,113 @@ yy1127:
break;
default:
TIMELIB_DEINIT;
+ add_error(s, "Double time specification");
return TIMELIB_ERROR;
}
s->time->have_time++;
TIMELIB_DEINIT;
return TIMELIB_GNU_NOCOLON;
}
-yy1128:
- YYDEBUG(1128, *YYCURSOR);
+yy1239:
+ YYDEBUG(1239, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '0') goto yy1140;
- if(yych <= '9') goto yy1141;
+ if(yych <= '0') goto yy1251;
+ if(yych <= '9') goto yy1252;
goto yy57;
-yy1129:
- YYDEBUG(1129, *YYCURSOR);
+yy1240:
+ YYDEBUG(1240, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '2') goto yy1139;
- if(yych <= '9') goto yy1138;
+ if(yych <= '2') goto yy1250;
+ if(yych <= '9') goto yy1249;
goto yy57;
-yy1130:
- YYDEBUG(1130, *YYCURSOR);
+yy1241:
+ YYDEBUG(1241, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy1138;
+ if(yych <= '9') goto yy1249;
goto yy57;
-yy1131:
- YYDEBUG(1131, *YYCURSOR);
+yy1242:
+ YYDEBUG(1242, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '5') goto yy1136;
- if(yych <= '6') goto yy1137;
- if(yych <= '9') goto yy1134;
+ if(yych <= '5') goto yy1247;
+ if(yych <= '6') goto yy1248;
+ if(yych <= '9') goto yy1245;
goto yy57;
-yy1132:
- YYDEBUG(1132, *YYCURSOR);
+yy1243:
+ YYDEBUG(1243, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy1134;
+ if(yych <= '9') goto yy1245;
goto yy57;
-yy1133:
- YYDEBUG(1133, *YYCURSOR);
+yy1244:
+ YYDEBUG(1244, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '0') goto yy1134;
+ if(yych <= '0') goto yy1245;
if(yych <= '9') goto yy51;
goto yy57;
-yy1134:
- YYDEBUG(1134, *YYCURSOR);
+yy1245:
+ YYDEBUG(1245, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
if(yybm[0+yych] & 8) {
goto yy51;
}
- if(yych <= 'X'){
- if(yych <= 'G'){
- if(yych <= 'C'){
- if(yych == ' ') goto yy57;
- goto yy1135;
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych >= ' ') goto yy57;
+ goto yy1246;
} else {
- if(yych == 'E') goto yy1135;
- if(yych <= 'F') goto yy57;
- goto yy1135;
+ if(yych == 'D') goto yy57;
+ if(yych >= 'F') goto yy57;
+ goto yy1246;
}
} else {
- if(yych <= 'R'){
- if(yych <= 'H') goto yy57;
- if(yych == 'M') goto yy57;
- goto yy1135;
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy57;
+ if(yych >= 'M') goto yy57;
+ goto yy1246;
} else {
+ if(yych <= 'R') goto yy1246;
if(yych <= 'T') goto yy57;
- if(yych == 'W') goto yy57;
- goto yy1135;
+ if(yych >= 'W') goto yy57;
+ goto yy1246;
}
}
} else {
- if(yych <= 'l'){
- if(yych <= 'e'){
- if(yych <= 'Y') goto yy57;
- if(yych == 'd') goto yy57;
- goto yy1135;
+ if(yych <= 'h'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy57;
+ if(yych >= 'd') goto yy57;
+ goto yy1246;
} else {
- if(yych == 'g') goto yy1135;
- if(yych <= 'h') goto yy57;
- goto yy1135;
+ if(yych == 'f') goto yy57;
+ if(yych >= 'h') goto yy57;
+ goto yy1246;
}
} else {
- if(yych <= 'v'){
- if(yych <= 'm') goto yy57;
- if(yych <= 'r') goto yy1135;
- if(yych <= 't') goto yy57;
- goto yy1135;
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych >= 's') goto yy57;
+ goto yy1246;
} else {
- if(yych == 'x') goto yy1135;
- if(yych <= 'y') goto yy57;
- goto yy1135;
+ if(yych <= 'w'){
+ if(yych >= 'w') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
}
}
}
-yy1135:
- YYDEBUG(1135, *YYCURSOR);
+yy1246:
+ YYDEBUG(1246, *YYCURSOR);
{
int tz_not_found;
@@ -14792,328 +18748,629 @@ yy1135:
if (*ptr != '\0') {
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
}
TIMELIB_DEINIT;
return TIMELIB_ISO_NOCOLON;
}
-yy1136:
- YYDEBUG(1136, *YYCURSOR);
+yy1247:
+ YYDEBUG(1247, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy914;
- default: goto yy1135;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= '/') goto yy1246;
+ if(yych <= '9') goto yy1004;
+ if(yych <= 'C') goto yy1246;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1246;
+ if(yych <= 'T') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1246;
+ if(yych <= 'Y') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych == 'g') goto yy1246;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
}
-yy1137:
- YYDEBUG(1137, *YYCURSOR);
+yy1248:
+ YYDEBUG(1248, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6': goto yy914;
- case '7':
- case '8':
- case '9': goto yy51;
- default: goto yy1135;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= '6'){
+ if(yych <= '/') goto yy1246;
+ goto yy1004;
+ } else {
+ if(yych <= '9') goto yy51;
+ if(yych <= 'C') goto yy1246;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1246;
+ if(yych <= 'T') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1246;
+ if(yych <= 'Y') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych == 'g') goto yy1246;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
}
-yy1138:
- YYDEBUG(1138, *YYCURSOR);
+yy1249:
+ YYDEBUG(1249, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy914;
- default: goto yy1135;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= '/') goto yy1246;
+ if(yych <= '9') goto yy1004;
+ if(yych <= 'C') goto yy1246;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1246;
+ if(yych <= 'T') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1246;
+ if(yych <= 'Y') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych == 'g') goto yy1246;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
}
-yy1139:
- YYDEBUG(1139, *YYCURSOR);
+yy1250:
+ YYDEBUG(1250, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0': goto yy918;
- case '1':
- case '2': goto yy919;
- case '3': goto yy920;
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy914;
- default: goto yy1135;
+ if(yych <= 'T'){
+ if(yych <= '9'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= '0'){
+ if(yych <= '/') goto yy1246;
+ goto yy1028;
+ } else {
+ if(yych <= '2') goto yy1029;
+ if(yych <= '3') goto yy1030;
+ goto yy1004;
+ }
+ }
+ } else {
+ if(yych <= 'G'){
+ if(yych <= 'D'){
+ if(yych <= 'C') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'F') goto yy57;
+ goto yy1246;
+ }
+ } else {
+ if(yych <= 'L'){
+ if(yych <= 'H') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'M') goto yy57;
+ if(yych <= 'R') goto yy1246;
+ goto yy57;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= 'Y'){
+ if(yych == 'W') goto yy57;
+ if(yych <= 'X') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'c') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'f') goto yy57;
+ goto yy1246;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'l'){
+ if(yych <= 'h') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'm') goto yy57;
+ if(yych <= 'r') goto yy1246;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
}
-yy1140:
- YYDEBUG(1140, *YYCURSOR);
+yy1251:
+ YYDEBUG(1251, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0': goto yy51;
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy914;
- default: goto yy1135;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= '0'){
+ if(yych <= '/') goto yy1246;
+ goto yy51;
+ } else {
+ if(yych <= '9') goto yy1004;
+ if(yych <= 'C') goto yy1246;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1246;
+ if(yych <= 'T') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1246;
+ if(yych <= 'Y') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych == 'g') goto yy1246;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
}
-yy1141:
- YYDEBUG(1141, *YYCURSOR);
+yy1252:
+ YYDEBUG(1252, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0': goto yy918;
- case '1':
- case '2': goto yy919;
- case '3': goto yy920;
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy914;
- default: goto yy1135;
+ if(yych <= 'T'){
+ if(yych <= '9'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= '0'){
+ if(yych <= '/') goto yy1246;
+ goto yy1028;
+ } else {
+ if(yych <= '2') goto yy1029;
+ if(yych <= '3') goto yy1030;
+ goto yy1004;
+ }
+ }
+ } else {
+ if(yych <= 'G'){
+ if(yych <= 'D'){
+ if(yych <= 'C') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'F') goto yy57;
+ goto yy1246;
+ }
+ } else {
+ if(yych <= 'L'){
+ if(yych <= 'H') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'M') goto yy57;
+ if(yych <= 'R') goto yy1246;
+ goto yy57;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= 'Y'){
+ if(yych == 'W') goto yy57;
+ if(yych <= 'X') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'c') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'f') goto yy57;
+ goto yy1246;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'l'){
+ if(yych <= 'h') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'm') goto yy57;
+ if(yych <= 'r') goto yy1246;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
}
-yy1142:
- YYDEBUG(1142, *YYCURSOR);
+yy1253:
+ YYDEBUG(1253, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy1144;
- goto yy634;
+ if(yych == '.') goto yy1255;
+ goto yy713;
} else {
- if(yych <= '9') goto yy1143;
- if(yych <= ':') goto yy1144;
- goto yy634;
+ if(yych <= '9') goto yy1254;
+ if(yych <= ':') goto yy1255;
+ goto yy713;
}
-yy1143:
- YYDEBUG(1143, *YYCURSOR);
+yy1254:
+ YYDEBUG(1254, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy1144;
- if(yych != ':') goto yy634;
- goto yy1144;
-yy1144:
- YYDEBUG(1144, *YYCURSOR);
+ if(yych == '.') goto yy1255;
+ if(yych != ':') goto yy713;
+ goto yy1255;
+yy1255:
+ YYDEBUG(1255, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1145;
- if(yych <= '6') goto yy1146;
- if(yych <= '9') goto yy639;
+ if(yych <= '5') goto yy1256;
+ if(yych <= '6') goto yy1257;
+ if(yych <= '9') goto yy718;
goto yy53;
-yy1145:
- YYDEBUG(1145, *YYCURSOR);
+yy1256:
+ YYDEBUG(1256, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy639;
- goto yy634;
-yy1146:
- YYDEBUG(1146, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy718;
+ goto yy713;
+yy1257:
+ YYDEBUG(1257, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych == '0') goto yy639;
- goto yy634;
-yy1147:
- YYDEBUG(1147, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych == '0') goto yy718;
+ goto yy713;
+yy1258:
+ YYDEBUG(1258, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych == '.') goto yy1151;
- goto yy634;
+ if(yych <= '.'){
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ goto yy1262;
} else {
- if(yych <= '9') goto yy1150;
- if(yych <= ':') goto yy1144;
- goto yy634;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy1261;
+ if(yych <= ':') goto yy1255;
+ goto yy713;
}
-yy1148:
- YYDEBUG(1148, *YYCURSOR);
+yy1259:
+ YYDEBUG(1259, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy1151;
- goto yy634;
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ if(yych <= '.') goto yy1262;
+ goto yy713;
} else {
- if(yych <= '2') goto yy1150;
- if(yych <= '9') goto yy1143;
- if(yych <= ':') goto yy1144;
- goto yy634;
+ if(yych <= '2') goto yy1261;
+ if(yych <= '9') goto yy1254;
+ if(yych <= ':') goto yy1255;
+ goto yy713;
}
-yy1149:
- YYDEBUG(1149, *YYCURSOR);
+yy1260:
+ YYDEBUG(1260, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych == '.') goto yy1151;
- goto yy634;
+ if(yych <= '.'){
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ goto yy1262;
} else {
- if(yych <= '9') goto yy1143;
- if(yych <= ':') goto yy1144;
- goto yy634;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy1254;
+ if(yych <= ':') goto yy1255;
+ goto yy713;
}
-yy1150:
- YYDEBUG(1150, *YYCURSOR);
+yy1261:
+ YYDEBUG(1261, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy1151;
- if(yych == ':') goto yy1144;
- goto yy634;
-yy1151:
- YYDEBUG(1151, *YYCURSOR);
+ if(yych <= '.'){
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ goto yy1262;
+ } else {
+ if(yych == ':') goto yy1255;
+ goto yy713;
+ }
+yy1262:
+ YYDEBUG(1262, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1152;
- if(yych <= '6') goto yy1153;
- if(yych <= '9') goto yy727;
+ if(yych <= '5') goto yy1263;
+ if(yych <= '6') goto yy1264;
+ if(yych <= '9') goto yy811;
goto yy53;
-yy1152:
- YYDEBUG(1152, *YYCURSOR);
+yy1263:
+ YYDEBUG(1263, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy1154;
- goto yy634;
-yy1153:
- YYDEBUG(1153, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy1265;
+ goto yy713;
+yy1264:
+ YYDEBUG(1264, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy640;
- goto yy634;
+ if(yych == '.') goto yy719;
+ goto yy713;
} else {
- if(yych <= '0') goto yy1154;
- if(yych <= '9') goto yy728;
- goto yy634;
+ if(yych <= '0') goto yy1265;
+ if(yych <= '9') goto yy812;
+ goto yy713;
}
-yy1154:
- YYDEBUG(1154, *YYCURSOR);
+yy1265:
+ YYDEBUG(1265, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy730;
- goto yy634;
-yy1155:
- YYDEBUG(1155, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy814;
+ goto yy713;
+yy1266:
+ YYDEBUG(1266, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= ':'){
- if(yych <= '.'){
- if(yych <= ',') goto yy604;
- if(yych <= '-') goto yy615;
- goto yy618;
+ if(yych <= '9'){
+ if(yych <= '-'){
+ if(yych == 0x09) goto yy682;
+ if(yych <= ',') goto yy684;
+ goto yy695;
} else {
- if(yych <= '/') goto yy614;
- if(yych <= '5') goto yy1125;
- if(yych <= '9') goto yy851;
- goto yy627;
+ if(yych <= '.') goto yy696;
+ if(yych <= '/') goto yy694;
+ if(yych <= '5') goto yy1236;
+ goto yy935;
}
} else {
if(yych <= 'q'){
- if(yych == 'n') goto yy612;
- goto yy604;
+ if(yych <= ':') goto yy705;
+ if(yych == 'n') goto yy692;
+ goto yy684;
} else {
- if(yych <= 'r') goto yy613;
- if(yych <= 's') goto yy606;
- if(yych <= 't') goto yy610;
- goto yy604;
+ if(yych <= 'r') goto yy693;
+ if(yych <= 's') goto yy686;
+ if(yych <= 't') goto yy690;
+ goto yy684;
}
}
-yy1156:
- YYDEBUG(1156, *YYCURSOR);
+yy1267:
+ YYDEBUG(1267, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= ':'){
- if(yych <= '.'){
- if(yych <= ',') goto yy1121;
- if(yych <= '-') goto yy615;
- goto yy1123;
+ if(yych <= '9'){
+ if(yych <= '-'){
+ if(yych == 0x09) goto yy1230;
+ if(yych <= ',') goto yy1232;
+ goto yy695;
} else {
- if(yych <= '/') goto yy614;
- if(yych <= '5') goto yy1125;
- if(yych <= '9') goto yy851;
- goto yy1124;
+ if(yych <= '.') goto yy1234;
+ if(yych <= '/') goto yy694;
+ if(yych <= '5') goto yy1236;
+ goto yy935;
}
} else {
if(yych <= 'q'){
- if(yych == 'n') goto yy612;
- goto yy1121;
+ if(yych <= ':') goto yy1235;
+ if(yych == 'n') goto yy692;
+ goto yy1232;
} else {
- if(yych <= 'r') goto yy613;
- if(yych <= 's') goto yy606;
- if(yych <= 't') goto yy610;
- goto yy1121;
+ if(yych <= 'r') goto yy693;
+ if(yych <= 's') goto yy686;
+ if(yych <= 't') goto yy690;
+ goto yy1232;
}
}
-yy1157:
- YYDEBUG(1157, *YYCURSOR);
+yy1268:
+ YYDEBUG(1268, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '0') goto yy53;
+ if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy1158;
-yy1158:
- YYDEBUG(1158, *YYCURSOR);
+ goto yy1269;
+yy1269:
+ YYDEBUG(1269, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy1159;
-yy1159:
- YYDEBUG(1159, *YYCURSOR);
- if(yych <= '/') goto yy1160;
- if(yych <= '9') goto yy1158;
- goto yy1160;
-yy1160:
- YYDEBUG(1160, *YYCURSOR);
+ goto yy1270;
+yy1270:
+ YYDEBUG(1270, *YYCURSOR);
+ if(yych <= '/') goto yy1271;
+ if(yych <= '9') goto yy1269;
+ goto yy1271;
+yy1271:
+ YYDEBUG(1271, *YYCURSOR);
{
timelib_ull i;
@@ -15137,8 +19394,8 @@ yy1160:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-yy1161:
- YYDEBUG(1161, *YYCURSOR);
+yy1272:
+ YYDEBUG(1272, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -15147,7 +19404,7 @@ yy1161:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy1192;
+ goto yy1312;
}
} else {
if(yych <= 'm'){
@@ -15155,61 +19412,61 @@ yy1161:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'n') goto yy1192;
+ if(yych <= 'n') goto yy1312;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1162:
- YYDEBUG(1162, *YYCURSOR);
+yy1273:
+ YYDEBUG(1273, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'I') goto yy1186;
+ if(yych == 'I') goto yy1306;
if(yych <= 'T') goto yy134;
- goto yy1185;
+ goto yy1305;
}
} else {
if(yych <= 'i'){
if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'h') goto yy134;
- goto yy1186;
+ goto yy1306;
} else {
- if(yych == 'u') goto yy1185;
+ if(yych == 'u') goto yy1305;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1163:
- YYDEBUG(1163, *YYCURSOR);
+yy1274:
+ YYDEBUG(1274, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'M'){
if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'D') goto yy1174;
+ if(yych == 'D') goto yy1294;
if(yych <= 'L') goto yy134;
- goto yy1175;
+ goto yy1295;
}
} else {
if(yych <= 'd'){
if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'c') goto yy134;
- goto yy1174;
+ goto yy1294;
} else {
- if(yych == 'm') goto yy1175;
+ if(yych == 'm') goto yy1295;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1164:
- YYDEBUG(1164, *YYCURSOR);
+yy1275:
+ YYDEBUG(1275, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych <= ')'){
@@ -15218,7 +19475,7 @@ yy1164:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy1170;
+ goto yy1290;
}
} else {
if(yych <= 'd'){
@@ -15226,13 +19483,13 @@ yy1164:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'e') goto yy1170;
+ if(yych <= 'e') goto yy1290;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1165:
- YYDEBUG(1165, *YYCURSOR);
+yy1276:
+ YYDEBUG(1276, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych <= ')'){
@@ -15241,7 +19498,7 @@ yy1165:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy1166;
+ goto yy1286;
}
} else {
if(yych <= 'd'){
@@ -15249,13 +19506,81 @@ yy1165:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'e') goto yy1166;
+ if(yych <= 'e') goto yy1286;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1166:
- YYDEBUG(1166, *YYCURSOR);
+yy1277:
+ YYDEBUG(1277, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/'){
+ if(yych == '.') goto yy1235;
+ goto yy53;
+ } else {
+ if(yych <= '9') goto yy1280;
+ if(yych <= ':') goto yy1235;
+ goto yy53;
+ }
+yy1278:
+ YYDEBUG(1278, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/'){
+ if(yych == '.') goto yy1235;
+ goto yy53;
+ } else {
+ if(yych <= '3') goto yy1280;
+ if(yych == ':') goto yy1235;
+ goto yy53;
+ }
+yy1279:
+ YYDEBUG(1279, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == '.') goto yy1235;
+ if(yych == ':') goto yy1235;
+ goto yy53;
+yy1280:
+ YYDEBUG(1280, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/'){
+ if(yych == '.') goto yy1235;
+ goto yy53;
+ } else {
+ if(yych <= '5') goto yy1281;
+ if(yych == ':') goto yy1235;
+ goto yy53;
+ }
+yy1281:
+ YYDEBUG(1281, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych >= ':') goto yy53;
+ goto yy1282;
+yy1282:
+ YYDEBUG(1282, *YYCURSOR);
+ yyaccept = 20;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/') goto yy1238;
+ if(yych <= '5') goto yy1283;
+ if(yych <= '6') goto yy1284;
+ goto yy1238;
+yy1283:
+ YYDEBUG(1283, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '9') goto yy1285;
+ goto yy53;
+yy1284:
+ YYDEBUG(1284, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != '0') goto yy53;
+ goto yy1285;
+yy1285:
+ YYDEBUG(1285, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy1246;
+yy1286:
+ YYDEBUG(1286, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'L'){
if(yych <= ')'){
@@ -15264,7 +19589,7 @@ yy1166:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'K') goto yy135;
- goto yy1167;
+ goto yy1287;
}
} else {
if(yych <= 'k'){
@@ -15272,101 +19597,162 @@ yy1166:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'l') goto yy1167;
+ if(yych <= 'l') goto yy1287;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1167:
- YYDEBUG(1167, *YYCURSOR);
- yyaccept = 1;
+yy1287:
+ YYDEBUG(1287, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'F'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'E') goto yy136;
+ goto yy1288;
+ }
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'f') goto yy1288;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy1288:
+ YYDEBUG(1288, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy137;
+ goto yy1289;
+ }
+ } else {
+ if(yych <= 's'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 't') goto yy1289;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1289:
+ YYDEBUG(1289, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'E'){
+ if(yych <= 'G'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'F') goto yy1168;
- if(yych != 'f') goto yy3;
- goto yy1168;
+ if(yych <= 'H') goto yy163;
+ if(yych == 'h') goto yy163;
+ goto yy3;
}
-yy1168:
- YYDEBUG(1168, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy1169;
- if(yych != 't') goto yy53;
- goto yy1169;
-yy1169:
- YYDEBUG(1169, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy53;
-yy1170:
- YYDEBUG(1170, *YYCURSOR);
+yy1290:
+ YYDEBUG(1290, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'S'){
if(yych <= ')'){
- if(yych <= '(') goto yy341;
+ if(yych <= '(') goto yy405;
goto yy132;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'R') goto yy135;
- goto yy1171;
+ goto yy1291;
}
} else {
if(yych <= 'r'){
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy341;
+ if(yych <= '`') goto yy405;
goto yy135;
} else {
- if(yych <= 's') goto yy1171;
+ if(yych <= 's') goto yy1291;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy1171:
- YYDEBUG(1171, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'C'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy1291:
+ YYDEBUG(1291, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'D'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy136;
+ goto yy1292;
+ }
} else {
- if(yych <= 'D') goto yy1172;
- if(yych != 'd') goto yy3;
- goto yy1172;
+ if(yych <= 'c'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'd') goto yy1292;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1172:
- YYDEBUG(1172, *YYCURSOR);
+yy1292:
+ YYDEBUG(1292, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy1173;
- if(yych != 'a') goto yy53;
- goto yy1173;
-yy1173:
- YYDEBUG(1173, *YYCURSOR);
+ if(yych <= 'A'){
+ if(yych == ')') goto yy132;
+ if(yych <= '@') goto yy3;
+ goto yy1293;
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy1293;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1293:
+ YYDEBUG(1293, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy347;
- goto yy53;
-yy1174:
- YYDEBUG(1174, *YYCURSOR);
+ if(yych <= 'X'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'Y') goto yy411;
+ if(yych == 'y') goto yy411;
+ goto yy3;
+ }
+yy1294:
+ YYDEBUG(1294, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'A'){
if(yych == ')') goto yy132;
if(yych <= '@') goto yy3;
- goto yy1182;
+ goto yy1302;
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
goto yy3;
} else {
- if(yych <= 'a') goto yy1182;
+ if(yych <= 'a') goto yy1302;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1175:
- YYDEBUG(1175, *YYCURSOR);
+yy1295:
+ YYDEBUG(1295, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'O'){
if(yych <= ')'){
@@ -15375,7 +19761,7 @@ yy1175:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'N') goto yy135;
- goto yy1176;
+ goto yy1296;
}
} else {
if(yych <= 'n'){
@@ -15383,47 +19769,81 @@ yy1175:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'o') goto yy1176;
+ if(yych <= 'o') goto yy1296;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1176:
- YYDEBUG(1176, *YYCURSOR);
- yyaccept = 1;
+yy1296:
+ YYDEBUG(1296, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'R'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy136;
+ goto yy1297;
+ }
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'r') goto yy1297;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy1297:
+ YYDEBUG(1297, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'R'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy137;
+ goto yy1298;
+ }
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'r') goto yy1298;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1298:
+ YYDEBUG(1298, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'Q'){
+ if(yych <= 'N'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'R') goto yy1177;
- if(yych != 'r') goto yy3;
- goto yy1177;
+ if(yych <= 'O') goto yy1299;
+ if(yych != 'o') goto yy3;
+ goto yy1299;
}
-yy1177:
- YYDEBUG(1177, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy1178;
- if(yych != 'r') goto yy53;
- goto yy1178;
-yy1178:
- YYDEBUG(1178, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'O') goto yy1179;
- if(yych != 'o') goto yy53;
- goto yy1179;
-yy1179:
- YYDEBUG(1179, *YYCURSOR);
+yy1299:
+ YYDEBUG(1299, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'W') goto yy1180;
+ if(yych == 'W') goto yy1300;
if(yych != 'w') goto yy53;
- goto yy1180;
-yy1180:
- YYDEBUG(1180, *YYCURSOR);
+ goto yy1300;
+yy1300:
+ YYDEBUG(1300, *YYCURSOR);
++YYCURSOR;
- goto yy1181;
-yy1181:
- YYDEBUG(1181, *YYCURSOR);
+ goto yy1301;
+yy1301:
+ YYDEBUG(1301, *YYCURSOR);
{
DEBUG_OUTPUT("tomorrow");
@@ -15435,23 +19855,43 @@ yy1181:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-yy1182:
- YYDEBUG(1182, *YYCURSOR);
+yy1302:
+ YYDEBUG(1302, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'X'){
- if(yych == ')') goto yy132;
- goto yy3;
+ if(yych <= 'Y'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy136;
+ goto yy1303;
+ }
} else {
- if(yych <= 'Y') goto yy1183;
- if(yych != 'y') goto yy3;
- goto yy1183;
+ if(yych <= 'x'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'y') goto yy1303;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1183:
- YYDEBUG(1183, *YYCURSOR);
+yy1303:
+ YYDEBUG(1303, *YYCURSOR);
++YYCURSOR;
- goto yy1184;
-yy1184:
- YYDEBUG(1184, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy1304;
+ } else {
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy1304;
+ if(yych <= 'z') goto yy137;
+ goto yy1304;
+ }
+yy1304:
+ YYDEBUG(1304, *YYCURSOR);
{
DEBUG_OUTPUT("midnight | today");
@@ -15461,31 +19901,31 @@ yy1184:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-yy1185:
- YYDEBUG(1185, *YYCURSOR);
+yy1305:
+ YYDEBUG(1305, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
if(yych <= ')'){
- if(yych <= '(') goto yy341;
+ if(yych <= '(') goto yy405;
goto yy132;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'Q') goto yy135;
- goto yy1188;
+ goto yy1308;
}
} else {
if(yych <= 'q'){
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy341;
+ if(yych <= '`') goto yy405;
goto yy135;
} else {
- if(yych <= 'r') goto yy1188;
+ if(yych <= 'r') goto yy1308;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy1186:
- YYDEBUG(1186, *YYCURSOR);
+yy1306:
+ YYDEBUG(1306, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'S'){
if(yych <= '@'){
@@ -15493,8 +19933,8 @@ yy1186:
goto yy3;
} else {
if(yych <= 'Q') goto yy135;
- if(yych >= 'S') goto yy317;
- goto yy1187;
+ if(yych >= 'S') goto yy321;
+ goto yy1307;
}
} else {
if(yych <= 'q'){
@@ -15502,56 +19942,101 @@ yy1186:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'r') goto yy1187;
- if(yych <= 's') goto yy317;
+ if(yych <= 'r') goto yy1307;
+ if(yych <= 's') goto yy321;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1187:
- YYDEBUG(1187, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'C'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy1307:
+ YYDEBUG(1307, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'D'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy136;
+ goto yy376;
+ }
} else {
- if(yych <= 'D') goto yy159;
- if(yych == 'd') goto yy159;
- goto yy3;
+ if(yych <= 'c'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'd') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1188:
- YYDEBUG(1188, *YYCURSOR);
- yyaccept = 1;
+yy1308:
+ YYDEBUG(1308, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'S'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'R') goto yy136;
+ goto yy1309;
+ }
+ } else {
+ if(yych <= 'r'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 's') goto yy1309;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy1309:
+ YYDEBUG(1309, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'D'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy137;
+ goto yy1310;
+ }
+ } else {
+ if(yych <= 'c'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'd') goto yy1310;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1310:
+ YYDEBUG(1310, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'R'){
+ if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'S') goto yy1189;
- if(yych != 's') goto yy3;
- goto yy1189;
+ if(yych <= 'A') goto yy1311;
+ if(yych != 'a') goto yy3;
+ goto yy1311;
}
-yy1189:
- YYDEBUG(1189, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy1190;
- if(yych != 'd') goto yy53;
- goto yy1190;
-yy1190:
- YYDEBUG(1190, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy1191;
- if(yych != 'a') goto yy53;
- goto yy1191;
-yy1191:
- YYDEBUG(1191, *YYCURSOR);
+yy1311:
+ YYDEBUG(1311, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy347;
+ if(yych == 'Y') goto yy411;
+ if(yych == 'y') goto yy411;
goto yy53;
-yy1192:
- YYDEBUG(1192, *YYCURSOR);
+yy1312:
+ YYDEBUG(1312, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -15560,7 +20045,7 @@ yy1192:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy1193;
+ goto yy1313;
}
} else {
if(yych <= 's'){
@@ -15568,65 +20053,76 @@ yy1192:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy1193;
+ if(yych <= 't') goto yy1313;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1193:
- YYDEBUG(1193, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'G'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy1313:
+ YYDEBUG(1313, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'H'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
+ }
} else {
- if(yych <= 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy3;
+ if(yych <= 'g'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'h') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1194:
- YYDEBUG(1194, *YYCURSOR);
- yyaccept = 1;
+yy1314:
+ YYDEBUG(1314, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy1192;
+ goto yy1312;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy1223;
- if(yych <= 'z') goto yy137;
+ if(yych == 'n') goto yy1343;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1195:
- YYDEBUG(1195, *YYCURSOR);
- yyaccept = 1;
+yy1315:
+ YYDEBUG(1315, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'U'){
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= 'H'){
if(yych <= '@') goto yy3;
goto yy134;
} else {
- if(yych <= 'I') goto yy1186;
+ if(yych <= 'I') goto yy1306;
if(yych <= 'T') goto yy134;
- goto yy1185;
+ goto yy1305;
}
}
} else {
@@ -15635,38 +20131,38 @@ yy1195:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy137;
+ goto yy139;
}
} else {
if(yych <= 't'){
- if(yych <= 'i') goto yy1217;
- goto yy137;
+ if(yych <= 'i') goto yy1337;
+ goto yy139;
} else {
- if(yych <= 'u') goto yy1216;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'u') goto yy1336;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy1196:
- YYDEBUG(1196, *YYCURSOR);
- yyaccept = 1;
+yy1316:
+ YYDEBUG(1316, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'M'){
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= 'C'){
if(yych <= '@') goto yy3;
goto yy134;
} else {
- if(yych <= 'D') goto yy1174;
+ if(yych <= 'D') goto yy1294;
if(yych <= 'L') goto yy134;
- goto yy1175;
+ goto yy1295;
}
}
} else {
@@ -15675,541 +20171,693 @@ yy1196:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy137;
+ goto yy139;
}
} else {
if(yych <= 'l'){
- if(yych <= 'd') goto yy1207;
- goto yy137;
+ if(yych <= 'd') goto yy1327;
+ goto yy139;
} else {
- if(yych <= 'm') goto yy1208;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'm') goto yy1328;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy1197:
- YYDEBUG(1197, *YYCURSOR);
- yyaccept = 1;
+yy1317:
+ YYDEBUG(1317, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy1170;
+ goto yy1290;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy1203;
- if(yych <= 'z') goto yy137;
+ if(yych == 'e') goto yy1323;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1198:
- YYDEBUG(1198, *YYCURSOR);
- yyaccept = 1;
+yy1318:
+ YYDEBUG(1318, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy1166;
+ goto yy1286;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy1199;
- if(yych <= 'z') goto yy137;
+ if(yych == 'e') goto yy1319;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1199:
- YYDEBUG(1199, *YYCURSOR);
- yyaccept = 1;
+yy1319:
+ YYDEBUG(1319, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'L'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'K') goto yy135;
- goto yy1167;
+ goto yy1287;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'l') goto yy1200;
- if(yych <= 'z') goto yy142;
+ if(yych == 'l') goto yy1320;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1200:
- YYDEBUG(1200, *YYCURSOR);
- yyaccept = 1;
+yy1320:
+ YYDEBUG(1320, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'F'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'E') goto yy3;
- goto yy1168;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'E') goto yy136;
+ goto yy1288;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'f') goto yy1201;
- if(yych <= 'z') goto yy143;
+ if(yych == 'f') goto yy1321;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1201:
- YYDEBUG(1201, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy1169;
- if(yych != 't') goto yy144;
- goto yy1202;
-yy1202:
- YYDEBUG(1202, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy1321:
+ YYDEBUG(1321, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych == 'H') goto yy159;
- goto yy53;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy137;
+ goto yy1289;
}
} else {
- if(yych <= 'g'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= 'h') goto yy241;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych == 't') goto yy1322;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
}
}
-yy1203:
- YYDEBUG(1203, *YYCURSOR);
+yy1322:
+ YYDEBUG(1322, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'H'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'G') goto yy3;
+ goto yy163;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'h') goto yy245;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1323:
+ YYDEBUG(1323, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'R') goto yy135;
- goto yy1171;
+ goto yy1291;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 's') goto yy1204;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 's') goto yy1324;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy1204:
- YYDEBUG(1204, *YYCURSOR);
- yyaccept = 1;
+yy1324:
+ YYDEBUG(1324, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'C') goto yy3;
- goto yy1172;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy136;
+ goto yy1292;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'd') goto yy1205;
- if(yych <= 'z') goto yy143;
+ if(yych == 'd') goto yy1325;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1205:
- YYDEBUG(1205, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy1173;
- if(yych != 'a') goto yy144;
- goto yy1206;
-yy1206:
- YYDEBUG(1206, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy355;
- goto yy144;
-yy1207:
- YYDEBUG(1207, *YYCURSOR);
- yyaccept = 1;
+yy1325:
+ YYDEBUG(1325, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'A'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
- goto yy1182;
+ goto yy1293;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy1326;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy1326:
+ YYDEBUG(1326, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'X') goto yy3;
+ goto yy411;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'y') goto yy419;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1327:
+ YYDEBUG(1327, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy1302;
}
} else {
if(yych <= '_'){
if(yych <= 'Z') goto yy135;
if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '`') goto yy3;
- if(yych <= 'a') goto yy1214;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'a') goto yy1334;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1208:
- YYDEBUG(1208, *YYCURSOR);
- yyaccept = 1;
+yy1328:
+ YYDEBUG(1328, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'O'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'N') goto yy135;
- goto yy1176;
+ goto yy1296;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'o') goto yy1209;
- if(yych <= 'z') goto yy142;
+ if(yych == 'o') goto yy1329;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1209:
- YYDEBUG(1209, *YYCURSOR);
- yyaccept = 1;
+yy1329:
+ YYDEBUG(1329, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'R'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'Q') goto yy3;
- goto yy1177;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy136;
+ goto yy1297;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'r') goto yy1210;
- if(yych <= 'z') goto yy143;
+ if(yych == 'r') goto yy1330;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1210:
- YYDEBUG(1210, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy1178;
- if(yych != 'r') goto yy144;
- goto yy1211;
-yy1211:
- YYDEBUG(1211, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'O') goto yy1179;
- if(yych != 'o') goto yy144;
- goto yy1212;
-yy1212:
- YYDEBUG(1212, *YYCURSOR);
+yy1330:
+ YYDEBUG(1330, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy137;
+ goto yy1298;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'r') goto yy1331;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy1331:
+ YYDEBUG(1331, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'O'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'N') goto yy3;
+ goto yy1299;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'o') goto yy1332;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1332:
+ YYDEBUG(1332, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'W') goto yy1180;
- if(yych != 'w') goto yy144;
- goto yy1213;
-yy1213:
- YYDEBUG(1213, *YYCURSOR);
+ if(yych == 'W') goto yy1300;
+ if(yych != 'w') goto yy148;
+ goto yy1333;
+yy1333:
+ YYDEBUG(1333, *YYCURSOR);
yyaccept = 22;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy138;
- goto yy1181;
+ if(yych == '/') goto yy140;
+ goto yy1301;
} else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy1181;
- if(yych <= 'z') goto yy143;
- goto yy1181;
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy1301;
+ if(yych <= 'z') goto yy147;
+ goto yy1301;
}
-yy1214:
- YYDEBUG(1214, *YYCURSOR);
- yyaccept = 1;
+yy1334:
+ YYDEBUG(1334, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'Y'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'X') goto yy3;
- goto yy1183;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy136;
+ goto yy1303;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'y') goto yy1215;
- if(yych <= 'z') goto yy143;
+ if(yych == 'y') goto yy1335;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1215:
- YYDEBUG(1215, *YYCURSOR);
+yy1335:
+ YYDEBUG(1335, *YYCURSOR);
yyaccept = 23;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '^'){
- if(yych == '/') goto yy138;
- goto yy1184;
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy1304;
+ goto yy132;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy1304;
+ }
} else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy1184;
- if(yych <= 'z') goto yy143;
- goto yy1184;
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '^') goto yy1304;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy1304;
+ if(yych <= 'z') goto yy146;
+ goto yy1304;
+ }
}
-yy1216:
- YYDEBUG(1216, *YYCURSOR);
+yy1336:
+ YYDEBUG(1336, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'R'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'Q') goto yy135;
- goto yy1188;
+ goto yy1308;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 'r') goto yy1219;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 'r') goto yy1339;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy1217:
- YYDEBUG(1217, *YYCURSOR);
- yyaccept = 1;
+yy1337:
+ YYDEBUG(1337, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy135;
- if(yych <= 'R') goto yy1187;
- goto yy317;
+ if(yych <= 'R') goto yy1307;
+ goto yy321;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy142;
- goto yy1218;
+ if(yych <= 'q') goto yy144;
+ goto yy1338;
} else {
- if(yych <= 's') goto yy320;
- if(yych <= 'z') goto yy142;
+ if(yych <= 's') goto yy345;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy1218:
- YYDEBUG(1218, *YYCURSOR);
- yyaccept = 1;
+yy1338:
+ YYDEBUG(1338, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'C') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'd') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 'd') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1219:
- YYDEBUG(1219, *YYCURSOR);
- yyaccept = 1;
+yy1339:
+ YYDEBUG(1339, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'R') goto yy3;
- goto yy1189;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'R') goto yy136;
+ goto yy1309;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 's') goto yy1220;
- if(yych <= 'z') goto yy143;
+ if(yych == 's') goto yy1340;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1220:
- YYDEBUG(1220, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy1190;
- if(yych != 'd') goto yy144;
- goto yy1221;
-yy1221:
- YYDEBUG(1221, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy1191;
- if(yych != 'a') goto yy144;
- goto yy1222;
-yy1222:
- YYDEBUG(1222, *YYCURSOR);
+yy1340:
+ YYDEBUG(1340, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy137;
+ goto yy1310;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'd') goto yy1341;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy1341:
+ YYDEBUG(1341, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy1311;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy1342;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1342:
+ YYDEBUG(1342, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy355;
- goto yy144;
-yy1223:
- YYDEBUG(1223, *YYCURSOR);
- yyaccept = 1;
+ if(yych == 'Y') goto yy411;
+ if(yych == 'y') goto yy419;
+ goto yy148;
+yy1343:
+ YYDEBUG(1343, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy1193;
+ goto yy1313;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy1224;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy1344;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1224:
- YYDEBUG(1224, *YYCURSOR);
- yyaccept = 1;
+yy1344:
+ YYDEBUG(1344, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'G') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'h') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 'h') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1225:
- YYDEBUG(1225, *YYCURSOR);
+yy1345:
+ YYDEBUG(1345, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'R') goto yy1236;
+ if(yych == 'R') goto yy1357;
if(yych <= 'X') goto yy134;
- goto yy1237;
+ goto yy1358;
}
} else {
if(yych <= 'r'){
if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'q') goto yy134;
- goto yy1236;
+ goto yy1357;
} else {
- if(yych == 'y') goto yy1237;
+ if(yych == 'y') goto yy1358;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1226:
- YYDEBUG(1226, *YYCURSOR);
+yy1346:
+ YYDEBUG(1346, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'D'){
if(yych <= ')'){
@@ -16218,7 +20866,7 @@ yy1226:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'C') goto yy134;
- goto yy1231;
+ goto yy1351;
}
} else {
if(yych <= 'c'){
@@ -16226,13 +20874,13 @@ yy1226:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'd') goto yy1231;
+ if(yych <= 'd') goto yy1351;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1227:
- YYDEBUG(1227, *YYCURSOR);
+yy1347:
+ YYDEBUG(1347, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -16241,7 +20889,7 @@ yy1227:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy1228;
+ goto yy1348;
}
} else {
if(yych <= 'm'){
@@ -16249,54 +20897,76 @@ yy1227:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'n') goto yy1228;
+ if(yych <= 'n') goto yy1348;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1228:
- YYDEBUG(1228, *YYCURSOR);
+yy1348:
+ YYDEBUG(1348, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'D'){
if(yych <= ')'){
- if(yych <= '(') goto yy341;
+ if(yych <= '(') goto yy405;
goto yy132;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'C') goto yy135;
- goto yy1229;
+ goto yy1349;
}
} else {
if(yych <= 'c'){
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy341;
+ if(yych <= '`') goto yy405;
goto yy135;
} else {
- if(yych <= 'd') goto yy1229;
+ if(yych <= 'd') goto yy1349;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy1229:
- YYDEBUG(1229, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
+yy1349:
+ YYDEBUG(1349, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'A'){
if(yych == ')') goto yy132;
- goto yy3;
+ if(yych <= '@') goto yy3;
+ goto yy1350;
} else {
- if(yych <= 'A') goto yy1230;
- if(yych != 'a') goto yy3;
- goto yy1230;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy136;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy1350;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1230:
- YYDEBUG(1230, *YYCURSOR);
+yy1350:
+ YYDEBUG(1350, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy347;
- goto yy53;
-yy1231:
- YYDEBUG(1231, *YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy137;
+ goto yy546;
+ }
+ } else {
+ if(yych <= 'x'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'y') goto yy546;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1351:
+ YYDEBUG(1351, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -16305,7 +20975,7 @@ yy1231:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy135;
- goto yy1232;
+ goto yy1352;
}
} else {
if(yych <= 'm'){
@@ -16313,88 +20983,140 @@ yy1231:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'n') goto yy1232;
+ if(yych <= 'n') goto yy1352;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1232:
- YYDEBUG(1232, *YYCURSOR);
- yyaccept = 1;
+yy1352:
+ YYDEBUG(1352, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'I'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'H') goto yy136;
+ goto yy1353;
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'i') goto yy1353;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy1353:
+ YYDEBUG(1353, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'G'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'F') goto yy137;
+ goto yy1354;
+ }
+ } else {
+ if(yych <= 'f'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'g') goto yy1354;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1354:
+ YYDEBUG(1354, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'H'){
+ if(yych <= 'G'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'I') goto yy1233;
- if(yych != 'i') goto yy3;
- goto yy1233;
+ if(yych <= 'H') goto yy1355;
+ if(yych != 'h') goto yy3;
+ goto yy1355;
}
-yy1233:
- YYDEBUG(1233, *YYCURSOR);
+yy1355:
+ YYDEBUG(1355, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy1234;
- if(yych != 'g') goto yy53;
- goto yy1234;
-yy1234:
- YYDEBUG(1234, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'H') goto yy1235;
- if(yych != 'h') goto yy53;
- goto yy1235;
-yy1235:
- YYDEBUG(1235, *YYCURSOR);
+ if(yych == 'T') goto yy1356;
+ if(yych != 't') goto yy53;
+ goto yy1356;
+yy1356:
+ YYDEBUG(1356, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy1183;
- if(yych == 't') goto yy1183;
- goto yy53;
-yy1236:
- YYDEBUG(1236, *YYCURSOR);
- yyaccept = 1;
+ goto yy1304;
+yy1357:
+ YYDEBUG(1357, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych == 'C') goto yy1238;
- goto yy135;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych == 'C') goto yy1359;
+ goto yy135;
+ }
} else {
if(yych <= 'b'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'c') goto yy1238;
+ if(yych <= 'c') goto yy1359;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy1237:
- YYDEBUG(1237, *YYCURSOR);
- yyaccept = 1;
+yy1358:
+ YYDEBUG(1358, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '.'){
- if(yych <= ')'){
+ if(yych <= '-'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '-') goto yy361;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
}
} else {
if(yych <= '@'){
- if(yych <= '/') goto yy3;
- if(yych <= '9') goto yy359;
+ if(yych == '/') goto yy3;
+ if(yych <= '9') goto yy423;
goto yy3;
} else {
if(yych <= 'Z') goto yy135;
@@ -16403,35 +21125,46 @@ yy1237:
goto yy3;
}
}
-yy1238:
- YYDEBUG(1238, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'G'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy1359:
+ YYDEBUG(1359, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'H'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy604;
+ }
} else {
- if(yych <= 'H') goto yy358;
- if(yych == 'h') goto yy358;
- goto yy3;
+ if(yych <= 'g'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'h') goto yy604;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1239:
- YYDEBUG(1239, *YYCURSOR);
- yyaccept = 1;
+yy1360:
+ YYDEBUG(1360, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'Y'){
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= 'Q'){
if(yych <= '@') goto yy3;
goto yy134;
} else {
- if(yych <= 'R') goto yy1236;
+ if(yych <= 'R') goto yy1357;
if(yych <= 'X') goto yy134;
- goto yy1237;
+ goto yy1358;
}
}
} else {
@@ -16440,283 +21173,371 @@ yy1239:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy137;
+ goto yy139;
}
} else {
if(yych <= 'x'){
- if(yych <= 'r') goto yy1250;
- goto yy137;
+ if(yych <= 'r') goto yy1372;
+ goto yy139;
} else {
- if(yych <= 'y') goto yy1251;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'y') goto yy1373;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy1240:
- YYDEBUG(1240, *YYCURSOR);
- yyaccept = 1;
+yy1361:
+ YYDEBUG(1361, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'C') goto yy134;
- goto yy1231;
+ goto yy1351;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'd') goto yy1245;
- if(yych <= 'z') goto yy137;
+ if(yych == 'd') goto yy1366;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1241:
- YYDEBUG(1241, *YYCURSOR);
- yyaccept = 1;
+yy1362:
+ YYDEBUG(1362, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy1228;
+ goto yy1348;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy1242;
- if(yych <= 'z') goto yy137;
+ if(yych == 'n') goto yy1363;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1242:
- YYDEBUG(1242, *YYCURSOR);
+yy1363:
+ YYDEBUG(1363, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'C') goto yy135;
- goto yy1229;
+ goto yy1349;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 'd') goto yy1243;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 'd') goto yy1364;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy1243:
- YYDEBUG(1243, *YYCURSOR);
- yyaccept = 1;
+yy1364:
+ YYDEBUG(1364, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'A'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
- goto yy1230;
+ goto yy1350;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy1365;
+ if(yych <= 'z') goto yy145;
+ goto yy3;
+ }
+ }
+yy1365:
+ YYDEBUG(1365, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy137;
+ goto yy546;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych <= 'a') goto yy1244;
- if(yych <= 'z') goto yy143;
+ if(yych == 'y') goto yy575;
+ if(yych <= 'z') goto yy146;
goto yy3;
}
}
-yy1244:
- YYDEBUG(1244, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy355;
- goto yy144;
-yy1245:
- YYDEBUG(1245, *YYCURSOR);
- yyaccept = 1;
+yy1366:
+ YYDEBUG(1366, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy135;
- goto yy1232;
+ goto yy1352;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy1246;
- if(yych <= 'z') goto yy142;
+ if(yych == 'n') goto yy1367;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1246:
- YYDEBUG(1246, *YYCURSOR);
- yyaccept = 1;
+yy1367:
+ YYDEBUG(1367, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'I'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'H') goto yy3;
- goto yy1233;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'H') goto yy136;
+ goto yy1353;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'i') goto yy1247;
- if(yych <= 'z') goto yy143;
+ if(yych == 'i') goto yy1368;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1247:
- YYDEBUG(1247, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'G') goto yy1234;
- if(yych != 'g') goto yy144;
- goto yy1248;
-yy1248:
- YYDEBUG(1248, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'H') goto yy1235;
- if(yych != 'h') goto yy144;
- goto yy1249;
-yy1249:
- YYDEBUG(1249, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy1183;
- if(yych == 't') goto yy1215;
- goto yy144;
-yy1250:
- YYDEBUG(1250, *YYCURSOR);
- yyaccept = 1;
+yy1368:
+ YYDEBUG(1368, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= 'G'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'F') goto yy137;
+ goto yy1354;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'g') goto yy1369;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy1369:
+ YYDEBUG(1369, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'H'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'G') goto yy3;
+ goto yy1355;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'h') goto yy1370;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1370:
+ YYDEBUG(1370, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'T') goto yy1356;
+ if(yych != 't') goto yy148;
+ goto yy1371;
+yy1371:
+ YYDEBUG(1371, *YYCURSOR);
+ yyaccept = 23;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '^'){
+ if(yych == '/') goto yy140;
+ goto yy1304;
+ } else {
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy1304;
+ if(yych <= 'z') goto yy147;
+ goto yy1304;
+ }
+yy1372:
+ YYDEBUG(1372, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'C'){
- if(yych <= 'B') goto yy135;
- goto yy1238;
+ if(yych <= '^'){
+ if(yych <= 'B'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'C') goto yy1359;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'b'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'c') goto yy1252;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'c') goto yy1374;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy1251:
- YYDEBUG(1251, *YYCURSOR);
- yyaccept = 1;
+yy1373:
+ YYDEBUG(1373, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '-') goto yy361;
- if(yych <= '.') goto yy359;
- goto yy138;
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= ',') goto yy3;
+ if(yych <= '-') goto yy424;
+ goto yy423;
+ }
}
} else {
- if(yych <= '^'){
- if(yych <= '9') goto yy359;
+ if(yych <= 'Z'){
+ if(yych <= '/') goto yy140;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'Z') goto yy135;
- goto yy3;
+ goto yy135;
} else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy142;
- goto yy3;
+ if(yych <= '_'){
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy144;
+ goto yy3;
+ }
}
}
-yy1252:
- YYDEBUG(1252, *YYCURSOR);
- yyaccept = 1;
+yy1374:
+ YYDEBUG(1374, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'G') goto yy3;
- goto yy358;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy604;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'h') goto yy457;
- if(yych <= 'z') goto yy143;
+ if(yych == 'h') goto yy615;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1253:
- YYDEBUG(1253, *YYCURSOR);
+yy1375:
+ YYDEBUG(1375, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'W'){
if(yych <= 'N'){
@@ -16724,30 +21545,30 @@ yy1253:
if(yych <= '@') goto yy3;
goto yy134;
} else {
- if(yych <= 'O') goto yy1261;
+ if(yych <= 'O') goto yy1383;
if(yych <= 'U') goto yy134;
- if(yych <= 'V') goto yy1262;
- goto yy1259;
+ if(yych <= 'V') goto yy1384;
+ goto yy1381;
}
} else {
if(yych <= 'o'){
if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'n') goto yy134;
- goto yy1261;
+ goto yy1383;
} else {
if(yych <= 'v'){
if(yych <= 'u') goto yy134;
- goto yy1262;
+ goto yy1384;
} else {
- if(yych <= 'w') goto yy1259;
+ if(yych <= 'w') goto yy1381;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
}
-yy1254:
- YYDEBUG(1254, *YYCURSOR);
+yy1376:
+ YYDEBUG(1376, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'X'){
if(yych <= ')'){
@@ -16756,7 +21577,7 @@ yy1254:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'W') goto yy134;
- goto yy1258;
+ goto yy1380;
}
} else {
if(yych <= 'w'){
@@ -16764,13 +21585,13 @@ yy1254:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'x') goto yy1258;
+ if(yych <= 'x') goto yy1380;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1255:
- YYDEBUG(1255, *YYCURSOR);
+yy1377:
+ YYDEBUG(1377, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -16779,7 +21600,7 @@ yy1255:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy1256;
+ goto yy1378;
}
} else {
if(yych <= 'm'){
@@ -16787,13 +21608,13 @@ yy1255:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'n') goto yy1256;
+ if(yych <= 'n') goto yy1378;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1256:
- YYDEBUG(1256, *YYCURSOR);
+yy1378:
+ YYDEBUG(1378, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -16802,7 +21623,7 @@ yy1256:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy1257;
+ goto yy1379;
}
} else {
if(yych <= 's'){
@@ -16810,25 +21631,36 @@ yy1256:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy1257;
+ if(yych <= 't') goto yy1379;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1257:
- YYDEBUG(1257, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'G'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy1379:
+ YYDEBUG(1379, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'H'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
+ }
} else {
- if(yych <= 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy3;
+ if(yych <= 'g'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'h') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1258:
- YYDEBUG(1258, *YYCURSOR);
+yy1380:
+ YYDEBUG(1380, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -16837,7 +21669,7 @@ yy1258:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy317;
+ goto yy321;
}
} else {
if(yych <= 's'){
@@ -16845,25 +21677,25 @@ yy1258:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy317;
+ if(yych <= 't') goto yy321;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1259:
- YYDEBUG(1259, *YYCURSOR);
+yy1381:
+ YYDEBUG(1381, *YYCURSOR);
++YYCURSOR;
if((yych = *YYCURSOR) <= '@'){
if(yych == ')') goto yy132;
- goto yy1260;
+ goto yy1382;
} else {
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy1260;
+ if(yych <= '`') goto yy1382;
if(yych <= 'z') goto yy135;
- goto yy1260;
+ goto yy1382;
}
-yy1260:
- YYDEBUG(1260, *YYCURSOR);
+yy1382:
+ YYDEBUG(1382, *YYCURSOR);
{
DEBUG_OUTPUT("now");
@@ -16872,8 +21704,8 @@ yy1260:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-yy1261:
- YYDEBUG(1261, *YYCURSOR);
+yy1383:
+ YYDEBUG(1383, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -16882,7 +21714,7 @@ yy1261:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy135;
- goto yy1267;
+ goto yy1389;
}
} else {
if(yych <= 'm'){
@@ -16890,78 +21722,132 @@ yy1261:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'n') goto yy1267;
+ if(yych <= 'n') goto yy1389;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1262:
- YYDEBUG(1262, *YYCURSOR);
- yyaccept = 1;
+yy1384:
+ YYDEBUG(1384, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'E') goto yy135;
- goto yy1263;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'E') goto yy135;
+ goto yy1385;
+ }
} else {
if(yych <= 'd'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'e') goto yy1263;
+ if(yych <= 'e') goto yy1385;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy1263:
- YYDEBUG(1263, *YYCURSOR);
- yyaccept = 1;
+yy1385:
+ YYDEBUG(1385, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'M'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'L') goto yy136;
+ goto yy1386;
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'm') goto yy1386;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy1386:
+ YYDEBUG(1386, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'B'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'A') goto yy137;
+ goto yy1387;
+ }
+ } else {
+ if(yych <= 'a'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'b') goto yy1387;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1387:
+ YYDEBUG(1387, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'L'){
+ if(yych <= 'D'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'M') goto yy1264;
- if(yych != 'm') goto yy3;
- goto yy1264;
+ if(yych <= 'E') goto yy1388;
+ if(yych != 'e') goto yy3;
+ goto yy1388;
}
-yy1264:
- YYDEBUG(1264, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'B') goto yy1265;
- if(yych != 'b') goto yy53;
- goto yy1265;
-yy1265:
- YYDEBUG(1265, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy1266;
- if(yych != 'e') goto yy53;
- goto yy1266;
-yy1266:
- YYDEBUG(1266, *YYCURSOR);
+yy1388:
+ YYDEBUG(1388, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy358;
- if(yych == 'r') goto yy358;
+ if(yych == 'R') goto yy422;
+ if(yych == 'r') goto yy422;
goto yy53;
-yy1267:
- YYDEBUG(1267, *YYCURSOR);
+yy1389:
+ YYDEBUG(1389, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) == ')') goto yy132;
- goto yy1268;
-yy1268:
- YYDEBUG(1268, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy1390;
+ } else {
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy1390;
+ if(yych <= 'z') goto yy136;
+ goto yy1390;
+ }
+yy1390:
+ YYDEBUG(1390, *YYCURSOR);
{
DEBUG_OUTPUT("noon");
@@ -16973,9 +21859,9 @@ yy1268:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-yy1269:
- YYDEBUG(1269, *YYCURSOR);
- yyaccept = 1;
+yy1391:
+ YYDEBUG(1391, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'W'){
if(yych <= '@'){
@@ -16983,17 +21869,17 @@ yy1269:
if(yych <= '(') goto yy3;
goto yy132;
} else {
- if(yych == '/') goto yy138;
+ if(yych == '/') goto yy140;
goto yy3;
}
} else {
if(yych <= 'O'){
if(yych <= 'N') goto yy134;
- goto yy1261;
+ goto yy1383;
} else {
if(yych <= 'U') goto yy134;
- if(yych <= 'V') goto yy1262;
- goto yy1259;
+ if(yych <= 'V') goto yy1384;
+ goto yy1381;
}
}
} else {
@@ -17002,310 +21888,360 @@ yy1269:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy137;
+ goto yy139;
}
} else {
if(yych <= 'v'){
- if(yych <= 'o') goto yy1276;
- if(yych <= 'u') goto yy137;
- goto yy1277;
+ if(yych <= 'o') goto yy1398;
+ if(yych <= 'u') goto yy139;
+ goto yy1399;
} else {
- if(yych <= 'w') goto yy1275;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'w') goto yy1397;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy1270:
- YYDEBUG(1270, *YYCURSOR);
- yyaccept = 1;
+yy1392:
+ YYDEBUG(1392, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'X'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'W') goto yy134;
- goto yy1258;
+ goto yy1380;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'x') goto yy1274;
- if(yych <= 'z') goto yy137;
+ if(yych == 'x') goto yy1396;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1271:
- YYDEBUG(1271, *YYCURSOR);
- yyaccept = 1;
+yy1393:
+ YYDEBUG(1393, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy1256;
+ goto yy1378;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy1272;
- if(yych <= 'z') goto yy137;
+ if(yych == 'n') goto yy1394;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1272:
- YYDEBUG(1272, *YYCURSOR);
- yyaccept = 1;
+yy1394:
+ YYDEBUG(1394, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy1257;
+ goto yy1379;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy1273;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy1395;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1273:
- YYDEBUG(1273, *YYCURSOR);
- yyaccept = 1;
+yy1395:
+ YYDEBUG(1395, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'G') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'h') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 'h') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1274:
- YYDEBUG(1274, *YYCURSOR);
- yyaccept = 1;
+yy1396:
+ YYDEBUG(1396, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy317;
+ goto yy321;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy320;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy345;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1275:
- YYDEBUG(1275, *YYCURSOR);
+yy1397:
+ YYDEBUG(1397, *YYCURSOR);
yyaccept = 24;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '@'){
if(yych <= ')'){
- if(yych <= '(') goto yy1260;
+ if(yych <= '(') goto yy1382;
goto yy132;
} else {
- if(yych == '/') goto yy138;
- goto yy1260;
+ if(yych == '/') goto yy140;
+ goto yy1382;
}
} else {
if(yych <= '_'){
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy1260;
- goto yy138;
+ if(yych <= '^') goto yy1382;
+ goto yy140;
} else {
- if(yych <= '`') goto yy1260;
- if(yych <= 'z') goto yy142;
- goto yy1260;
+ if(yych <= '`') goto yy1382;
+ if(yych <= 'z') goto yy144;
+ goto yy1382;
}
}
-yy1276:
- YYDEBUG(1276, *YYCURSOR);
- yyaccept = 1;
+yy1398:
+ YYDEBUG(1398, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy135;
- goto yy1267;
+ goto yy1389;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy1282;
- if(yych <= 'z') goto yy142;
+ if(yych == 'n') goto yy1404;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1277:
- YYDEBUG(1277, *YYCURSOR);
- yyaccept = 1;
+yy1399:
+ YYDEBUG(1399, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'E'){
- if(yych <= 'D') goto yy135;
- goto yy1263;
+ if(yych <= '^'){
+ if(yych <= 'D'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'E') goto yy1385;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'd'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'e') goto yy1278;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'e') goto yy1400;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy1278:
- YYDEBUG(1278, *YYCURSOR);
- yyaccept = 1;
+yy1400:
+ YYDEBUG(1400, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'M'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'L') goto yy3;
- goto yy1264;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'L') goto yy136;
+ goto yy1386;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'm') goto yy1279;
- if(yych <= 'z') goto yy143;
+ if(yych == 'm') goto yy1401;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1279:
- YYDEBUG(1279, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'B') goto yy1265;
- if(yych != 'b') goto yy144;
- goto yy1280;
-yy1280:
- YYDEBUG(1280, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy1266;
- if(yych != 'e') goto yy144;
- goto yy1281;
-yy1281:
- YYDEBUG(1281, *YYCURSOR);
+yy1401:
+ YYDEBUG(1401, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'B'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'A') goto yy137;
+ goto yy1387;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'b') goto yy1402;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy1402:
+ YYDEBUG(1402, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'D') goto yy3;
+ goto yy1388;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy1403;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1403:
+ YYDEBUG(1403, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
if(yych <= '/'){
if(yych <= '.') goto yy53;
- goto yy138;
+ goto yy140;
} else {
- if(yych == 'R') goto yy358;
+ if(yych == 'R') goto yy422;
goto yy53;
}
} else {
if(yych <= 'q'){
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- goto yy143;
+ goto yy147;
} else {
- if(yych <= 'r') goto yy457;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'r') goto yy528;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
}
-yy1282:
- YYDEBUG(1282, *YYCURSOR);
+yy1404:
+ YYDEBUG(1404, *YYCURSOR);
yyaccept = 25;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych == ')') goto yy132;
- if(yych <= '.') goto yy1268;
- goto yy138;
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy1390;
+ goto yy132;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy1390;
+ }
} else {
if(yych <= '_'){
- if(yych <= '^') goto yy1268;
- goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '^') goto yy1390;
+ goto yy140;
} else {
- if(yych <= '`') goto yy1268;
- if(yych <= 'z') goto yy143;
- goto yy1268;
+ if(yych <= '`') goto yy1390;
+ if(yych <= 'z') goto yy145;
+ goto yy1390;
}
}
-yy1283:
- YYDEBUG(1283, *YYCURSOR);
+yy1405:
+ YYDEBUG(1405, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'S'){
if(yych <= ')'){
@@ -17314,7 +22250,7 @@ yy1283:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'R') goto yy134;
- goto yy1284;
+ goto yy1406;
}
} else {
if(yych <= 'r'){
@@ -17322,13 +22258,13 @@ yy1283:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 's') goto yy1284;
+ if(yych <= 's') goto yy1406;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1284:
- YYDEBUG(1284, *YYCURSOR);
+yy1406:
+ YYDEBUG(1406, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -17337,7 +22273,7 @@ yy1284:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy1285;
+ goto yy1407;
}
} else {
if(yych <= 's'){
@@ -17345,53 +22281,87 @@ yy1284:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy1285;
+ if(yych <= 't') goto yy1407;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1285:
- YYDEBUG(1285, *YYCURSOR);
- yyaccept = 1;
+yy1407:
+ YYDEBUG(1407, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'E'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy136;
+ goto yy1408;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'e') goto yy1408;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy1408:
+ YYDEBUG(1408, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'R'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy137;
+ goto yy1409;
+ }
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'r') goto yy1409;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1409:
+ YYDEBUG(1409, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'D'){
+ if(yych <= 'C'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'E') goto yy1286;
- if(yych != 'e') goto yy3;
- goto yy1286;
+ if(yych <= 'D') goto yy1410;
+ if(yych != 'd') goto yy3;
+ goto yy1410;
}
-yy1286:
- YYDEBUG(1286, *YYCURSOR);
+yy1410:
+ YYDEBUG(1410, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy1287;
- if(yych != 'r') goto yy53;
- goto yy1287;
-yy1287:
- YYDEBUG(1287, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy1288;
- if(yych != 'd') goto yy53;
- goto yy1288;
-yy1288:
- YYDEBUG(1288, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy1289;
+ if(yych == 'A') goto yy1411;
if(yych != 'a') goto yy53;
- goto yy1289;
-yy1289:
- YYDEBUG(1289, *YYCURSOR);
+ goto yy1411;
+yy1411:
+ YYDEBUG(1411, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy1290;
+ if(yych == 'Y') goto yy1412;
if(yych != 'y') goto yy53;
- goto yy1290;
-yy1290:
- YYDEBUG(1290, *YYCURSOR);
+ goto yy1412;
+yy1412:
+ YYDEBUG(1412, *YYCURSOR);
++YYCURSOR;
- goto yy1291;
-yy1291:
- YYDEBUG(1291, *YYCURSOR);
+ goto yy1413;
+yy1413:
+ YYDEBUG(1413, *YYCURSOR);
{
DEBUG_OUTPUT("yesterday");
@@ -17403,130 +22373,175 @@ yy1291:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-yy1292:
- YYDEBUG(1292, *YYCURSOR);
- yyaccept = 1;
+yy1414:
+ YYDEBUG(1414, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'R') goto yy134;
- goto yy1284;
+ goto yy1406;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 's') goto yy1293;
- if(yych <= 'z') goto yy137;
+ if(yych == 's') goto yy1415;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1293:
- YYDEBUG(1293, *YYCURSOR);
- yyaccept = 1;
+yy1415:
+ YYDEBUG(1415, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy1285;
+ goto yy1407;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy1294;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy1416;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1294:
- YYDEBUG(1294, *YYCURSOR);
- yyaccept = 1;
+yy1416:
+ YYDEBUG(1416, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'D') goto yy3;
- goto yy1286;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy136;
+ goto yy1408;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy1295;
- if(yych <= 'z') goto yy143;
+ if(yych == 'e') goto yy1417;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1295:
- YYDEBUG(1295, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy1287;
- if(yych != 'r') goto yy144;
- goto yy1296;
-yy1296:
- YYDEBUG(1296, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy1288;
- if(yych != 'd') goto yy144;
- goto yy1297;
-yy1297:
- YYDEBUG(1297, *YYCURSOR);
+yy1417:
+ YYDEBUG(1417, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy137;
+ goto yy1409;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'r') goto yy1418;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy1418:
+ YYDEBUG(1418, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'C') goto yy3;
+ goto yy1410;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'd') goto yy1419;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1419:
+ YYDEBUG(1419, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy1289;
- if(yych != 'a') goto yy144;
- goto yy1298;
-yy1298:
- YYDEBUG(1298, *YYCURSOR);
+ if(yych == 'A') goto yy1411;
+ if(yych != 'a') goto yy148;
+ goto yy1420;
+yy1420:
+ YYDEBUG(1420, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy1290;
- if(yych != 'y') goto yy144;
- goto yy1299;
-yy1299:
- YYDEBUG(1299, *YYCURSOR);
+ if(yych == 'Y') goto yy1412;
+ if(yych != 'y') goto yy148;
+ goto yy1421;
+yy1421:
+ YYDEBUG(1421, *YYCURSOR);
yyaccept = 26;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy138;
- goto yy1291;
+ if(yych == '/') goto yy140;
+ goto yy1413;
} else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy1291;
- if(yych <= 'z') goto yy143;
- goto yy1291;
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy1413;
+ if(yych <= 'z') goto yy147;
+ goto yy1413;
}
}
}
}
-#define YYMAXFILL 26
+#define YYMAXFILL 29
-timelib_time* timelib_strtotime(char *s, int len, int *errors, timelib_tzdb *tzdb)
+timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container **errors, timelib_tzdb *tzdb)
{
Scanner in;
int t;
char *e = s + len - 1;
+ memset(&in, 0, sizeof(in));
+ in.errors = malloc(sizeof(struct timelib_error_container));
+ in.errors->warning_count = 0;
+ in.errors->warning_messages = NULL;
+ in.errors->error_count = 0;
+ in.errors->error_messages = NULL;
+
while (isspace(*s) && s < e) {
s++;
}
@@ -17534,15 +22549,19 @@ timelib_time* timelib_strtotime(char *s, int len, int *errors, timelib_tzdb *tzd
e--;
}
if (e - s < 1) {
- *errors = 1;
in.time = timelib_time_ctor();
+ add_error(&in, "Empty string");
+ if (errors) {
+ *errors = in.errors;
+ } else {
+ timelib_error_container_dtor(in.errors);
+ }
in.time->y = in.time->d = in.time->m = in.time->h = in.time->i = in.time->s = in.time->f = in.time->z = in.time->dst = -1;
in.time->is_localtime = in.time->zone_type = 0;
return in.time;
}
e++;
- memset(&in, 0, sizeof(in));
in.str = malloc((e - s) + YYMAXFILL);
memset(in.str, 0, (e - s) + YYMAXFILL);
memcpy(in.str, s, (e - s));
@@ -17558,7 +22577,6 @@ timelib_time* timelib_strtotime(char *s, int len, int *errors, timelib_tzdb *tzd
in.time->f = -1;
in.time->z = -1;
in.time->dst = -1;
- in.errors = 0;
in.tzdb = tzdb;
in.time->is_localtime = 0;
in.time->zone_type = 0;
@@ -17571,7 +22589,11 @@ timelib_time* timelib_strtotime(char *s, int len, int *errors, timelib_tzdb *tzd
} while(t != EOI);
free(in.str);
- *errors = in.errors;
+ if (errors) {
+ *errors = in.errors;
+ } else {
+ timelib_error_container_dtor(in.errors);
+ }
return in.time;
}
diff --git a/ext/date/lib/parse_date.c.orig b/ext/date/lib/parse_date.c.orig
index 61769557e..2b4a3aead 100644
--- a/ext/date/lib/parse_date.c.orig
+++ b/ext/date/lib/parse_date.c.orig
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.12 on Wed Jan 4 15:16:35 2006 */
+/* Generated by re2c 0.9.12 on Tue Apr 11 20:02:18 2006 */
#line 1 "ext/date/lib/parse_date.re"
/*
+----------------------------------------------------------------------+
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: parse_date.c,v 1.29.2.24 2006/01/04 21:31:29 derick Exp $ */
+/* $Id: parse_date.c,v 1.29.2.30 2006/04/11 18:03:46 derick Exp $ */
#include "timelib.h"
@@ -99,13 +99,13 @@ typedef unsigned char uchar;
#define timelib_string_free free
-#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; } }
+#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; } }
#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; }
-#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
+#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
#define TIMELIB_UNHAVE_DATE() { s->time->have_date = 0; s->time->d = 0; s->time->m = 0; s->time->y = 0; }
#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; s->time->relative.weekday_behavior = 0; }
#define TIMELIB_HAVE_WEEKDAY_RELATIVE() { s->time->have_weekday_relative = 1; }
-#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { return TIMELIB_ERROR; } else { s->time.have_zone = 1; } }
+#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { add_warning(s, "Double timezone specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_zone = 1; } }
#define TIMELIB_INIT s->cur = cursor; str = timelib_string(s); ptr = str
#define TIMELIB_DEINIT timelib_string_free(str)
@@ -142,7 +142,7 @@ typedef struct Scanner {
int fd;
uchar *lim, *str, *ptr, *cur, *tok, *pos;
unsigned int line, len;
- int errors;
+ struct timelib_error_container *errors;
struct timelib_time *time;
timelib_tzdb *tzdb;
@@ -287,7 +287,7 @@ static timelib_lookup_table const timelib_month_lookup[] = {
static char* timelib_ltrim(char *s)
{
char *ptr = s;
- while (ptr[0] == ' ') {
+ while (ptr[0] == ' ' || ptr[0] == '\t') {
ptr++;
}
return ptr;
@@ -327,6 +327,24 @@ uchar *fill(Scanner *s, uchar *cursor){
}
#endif
+static void add_warning(Scanner *s, char *error)
+{
+ s->errors->warning_count++;
+ s->errors->warning_messages = realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
+ s->errors->warning_messages[s->errors->warning_count - 1].position = s->tok ? s->tok - s->str : 0;
+ s->errors->warning_messages[s->errors->warning_count - 1].character = s->tok ? *s->tok : 0;
+ s->errors->warning_messages[s->errors->warning_count - 1].message = strdup(error);
+}
+
+static void add_error(Scanner *s, char *error)
+{
+ s->errors->error_count++;
+ s->errors->error_messages = realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
+ s->errors->error_messages[s->errors->error_count - 1].position = s->tok ? s->tok - s->str : 0;
+ s->errors->error_messages[s->errors->error_count - 1].character = s->tok ? *s->tok : 0;
+ s->errors->error_messages[s->errors->error_count - 1].message = strdup(error);
+}
+
static timelib_sll timelib_meridian(char **ptr, timelib_sll h)
{
timelib_sll retval = 0;
@@ -497,7 +515,7 @@ static timelib_sll timelib_lookup_relative_text(char **ptr, int *behavior)
static timelib_sll timelib_get_relative_text(char **ptr, int *behavior)
{
- while (**ptr == ' ' || **ptr == '-' || **ptr == '/') {
+ while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '/') {
++*ptr;
}
return timelib_lookup_relative_text(ptr, behavior);
@@ -529,7 +547,7 @@ static long timelib_lookup_month(char **ptr)
static long timelib_get_month(char **ptr)
{
- while (**ptr == ' ' || **ptr == '-' || **ptr == '.' || **ptr == '/') {
+ while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '.' || **ptr == '/') {
++*ptr;
}
return timelib_lookup_month(ptr);
@@ -537,7 +555,7 @@ static long timelib_get_month(char **ptr)
static void timelib_eat_spaces(char **ptr)
{
- while (**ptr == ' ') {
+ while (**ptr == ' ' || **ptr == '\t') {
++*ptr;
}
}
@@ -548,7 +566,7 @@ static const timelib_relunit* timelib_lookup_relunit(char **ptr)
char *begin = *ptr, *end;
const timelib_relunit *tp, *value = NULL;
- while (**ptr != '\0' && **ptr != ' ') {
+ while (**ptr != '\0' && **ptr != ' ' && **ptr != '\t') {
++*ptr;
}
end = *ptr;
@@ -592,7 +610,7 @@ static void timelib_set_relative(char **ptr, timelib_sll amount, int behavior, S
static timelib_tz_lookup_table* zone_search(const char *word, long gmtoffset, int isdst)
{
int first_found = 0;
- timelib_tz_lookup_table *tp, *first_found_elem;
+ timelib_tz_lookup_table *tp, *first_found_elem = NULL;
timelib_tz_lookup_table *fmp;
if (strcasecmp("utc", word) == 0 || strcasecmp("gmt", word) == 0) {
@@ -661,7 +679,7 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_
*tz_not_found = 0;
- while (**ptr == ' ' || **ptr == '(') {
+ while (**ptr == ' ' || **ptr == '\t' || **ptr == '(') {
++*ptr;
}
if (**ptr == '+') {
@@ -686,9 +704,11 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_
char *tz_abbr;
t->is_localtime = 1;
- t->zone_type = TIMELIB_ZONETYPE_ABBR;
offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &found);
+ if (found) {
+ t->zone_type = TIMELIB_ZONETYPE_ABBR;
+ }
#if 0
/* If we found a TimeZone identifier, use it */
if (tz_name) {
@@ -704,7 +724,7 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_
found++;
}
}
- if (t->zone_type != TIMELIB_ZONETYPE_ID) {
+ if (found && t->zone_type != TIMELIB_ZONETYPE_ID) {
timelib_time_tz_abbr_update(t, tz_abbr);
}
free(tz_abbr);
@@ -735,17 +755,17 @@ static int scan(Scanner *s)
std:
s->tok = cursor;
s->len = 0;
-#line 844 "ext/date/lib/parse_date.re"
+#line 865 "ext/date/lib/parse_date.re"
{
static unsigned char yybm[] = {
0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 208, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 208, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 192, 64, 192, 0,
+ 208, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 128, 64, 192, 0,
8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -774,7 +794,7 @@ std:
0, 0, 0, 0, 0, 0, 0, 0,
};
-#line 778 "ext/date/lib/parse_date.c"
+#line 798 "ext/date/lib/parse_date.c"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
@@ -783,12 +803,12 @@ std:
YYDEBUG(1, *YYCURSOR);
++YYCURSOR;
yy0:
- if((YYLIMIT - YYCURSOR) < 26) YYFILL(26);
+ if((YYLIMIT - YYCURSOR) < 29) YYFILL(29);
yych = *YYCURSOR;
YYDEBUG(-1, yych);
switch(yych){
case 0x00: case 0x0A: goto yy48;
- case ' ': goto yy45;
+ case 0x09: case ' ': goto yy45;
case '(': goto yy42;
case '+': case '-': goto yy41;
case ',': case '.': goto yy47;
@@ -856,33 +876,36 @@ yy2:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy1283;
+ goto yy1405;
}
} else {
if(yych <= 'd'){
if(yych <= 'Z') goto yy133;
- if(yych >= 'a') goto yy136;
+ if(yych >= 'a') goto yy138;
goto yy3;
} else {
- if(yych <= 'e') goto yy1292;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'e') goto yy1414;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
yy3:
YYDEBUG(3, *YYCURSOR);
-#line 1339 "ext/date/lib/parse_date.re"
+#line 1369 "ext/date/lib/parse_date.re"
{
int tz_not_found;
DEBUG_OUTPUT("tzcorrection | tz");
TIMELIB_INIT;
+ TIMELIB_HAVE_TZ();
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
TIMELIB_DEINIT;
return TIMELIB_TIMEZONE;
}
-#line 879 "ext/date/lib/parse_date.c"
+#line 902 "ext/date/lib/parse_date.c"
yy4:
YYDEBUG(4, *YYCURSOR);
yych = *++YYCURSOR;
@@ -893,7 +916,7 @@ yy4:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy1283;
+ goto yy1405;
}
} else {
if(yych <= 'd'){
@@ -901,7 +924,7 @@ yy4:
if(yych <= '`') goto yy3;
goto yy133;
} else {
- if(yych <= 'e') goto yy1283;
+ if(yych <= 'e') goto yy1405;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -916,12 +939,12 @@ yy5:
goto yy133;
} else {
if(yych <= 'H'){
- if(yych <= 'E') goto yy1254;
+ if(yych <= 'E') goto yy1376;
goto yy133;
} else {
- if(yych <= 'I') goto yy1255;
+ if(yych <= 'I') goto yy1377;
if(yych <= 'N') goto yy133;
- goto yy1253;
+ goto yy1375;
}
}
} else {
@@ -930,16 +953,16 @@ yy5:
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych == 'e') goto yy1270;
- goto yy136;
+ if(yych == 'e') goto yy1392;
+ goto yy138;
}
} else {
if(yych <= 'n'){
- if(yych <= 'i') goto yy1271;
- goto yy136;
+ if(yych <= 'i') goto yy1393;
+ goto yy138;
} else {
- if(yych <= 'o') goto yy1269;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'o') goto yy1391;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -954,12 +977,12 @@ yy6:
goto yy133;
} else {
if(yych <= 'H'){
- if(yych <= 'E') goto yy1254;
+ if(yych <= 'E') goto yy1376;
goto yy133;
} else {
- if(yych <= 'I') goto yy1255;
+ if(yych <= 'I') goto yy1377;
if(yych <= 'N') goto yy133;
- goto yy1253;
+ goto yy1375;
}
}
} else {
@@ -968,15 +991,15 @@ yy6:
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych == 'e') goto yy1254;
+ if(yych == 'e') goto yy1376;
goto yy133;
}
} else {
if(yych <= 'n'){
- if(yych <= 'i') goto yy1255;
+ if(yych <= 'i') goto yy1377;
goto yy133;
} else {
- if(yych <= 'o') goto yy1253;
+ if(yych <= 'o') goto yy1375;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -989,25 +1012,25 @@ yy7:
if(yych <= 'A'){
if(yych == ')') goto yy132;
if(yych <= '@') goto yy3;
- goto yy1225;
+ goto yy1345;
} else {
- if(yych == 'I') goto yy1226;
+ if(yych == 'I') goto yy1346;
if(yych <= 'N') goto yy133;
- goto yy1227;
+ goto yy1347;
}
} else {
if(yych <= 'h'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- if(yych <= 'a') goto yy1239;
- goto yy136;
+ if(yych <= 'a') goto yy1360;
+ goto yy138;
} else {
if(yych <= 'n'){
- if(yych <= 'i') goto yy1240;
- goto yy136;
+ if(yych <= 'i') goto yy1361;
+ goto yy138;
} else {
- if(yych <= 'o') goto yy1241;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'o') goto yy1362;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1019,24 +1042,24 @@ yy8:
if(yych <= 'A'){
if(yych == ')') goto yy132;
if(yych <= '@') goto yy3;
- goto yy1225;
+ goto yy1345;
} else {
- if(yych == 'I') goto yy1226;
+ if(yych == 'I') goto yy1346;
if(yych <= 'N') goto yy133;
- goto yy1227;
+ goto yy1347;
}
} else {
if(yych <= 'h'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- if(yych <= 'a') goto yy1225;
+ if(yych <= 'a') goto yy1345;
goto yy133;
} else {
if(yych <= 'n'){
- if(yych <= 'i') goto yy1226;
+ if(yych <= 'i') goto yy1346;
goto yy133;
} else {
- if(yych <= 'o') goto yy1227;
+ if(yych <= 'o') goto yy1347;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1044,133 +1067,145 @@ yy8:
}
yy9:
YYDEBUG(9, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= 'W'){
- if(yych <= 'G'){
- if(yych <= '@'){
- if(yych == ')') goto yy132;
- goto yy3;
- } else {
- if(yych == 'E') goto yy1161;
- goto yy133;
- }
- } else {
- if(yych <= 'O'){
- if(yych <= 'H') goto yy1162;
- if(yych <= 'N') goto yy133;
- goto yy1163;
- } else {
- if(yych == 'U') goto yy1164;
- if(yych <= 'V') goto yy133;
- goto yy1165;
- }
- }
- } else {
- if(yych <= 'n'){
- if(yych <= 'd'){
- if(yych <= 'Z') goto yy133;
- if(yych <= '`') goto yy3;
- goto yy136;
- } else {
- if(yych <= 'e') goto yy1194;
- if(yych == 'h') goto yy1195;
- goto yy136;
- }
- } else {
- if(yych <= 'u'){
- if(yych <= 'o') goto yy1196;
- if(yych <= 't') goto yy136;
- goto yy1197;
- } else {
- if(yych == 'w') goto yy1198;
- if(yych <= 'z') goto yy136;
- goto yy3;
- }
- }
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case ')': goto yy132;
+ case '0':
+ case '1': goto yy1277;
+ case '2': goto yy1278;
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy1279;
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D': case 'F':
+ case 'G': case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N': case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T': case 'V': case 'X':
+ case 'Y':
+ case 'Z': goto yy133;
+ case 'E': goto yy1272;
+ case 'H': goto yy1273;
+ case 'O': goto yy1274;
+ case 'U': goto yy1275;
+ case 'W': goto yy1276;
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd': case 'f':
+ case 'g': case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n': case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't': case 'v': case 'x':
+ case 'y':
+ case 'z': goto yy138;
+ case 'e': goto yy1314;
+ case 'h': goto yy1315;
+ case 'o': goto yy1316;
+ case 'u': goto yy1317;
+ case 'w': goto yy1318;
+ default: goto yy3;
}
yy10:
YYDEBUG(10, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= 'W'){
- if(yych <= 'G'){
- if(yych <= '@'){
- if(yych == ')') goto yy132;
- goto yy3;
- } else {
- if(yych == 'E') goto yy1161;
- goto yy133;
- }
- } else {
- if(yych <= 'O'){
- if(yych <= 'H') goto yy1162;
- if(yych <= 'N') goto yy133;
- goto yy1163;
- } else {
- if(yych == 'U') goto yy1164;
- if(yych <= 'V') goto yy133;
- goto yy1165;
- }
- }
- } else {
- if(yych <= 'n'){
- if(yych <= 'd'){
- if(yych <= 'Z') goto yy133;
- if(yych <= '`') goto yy3;
- goto yy133;
- } else {
- if(yych <= 'e') goto yy1161;
- if(yych == 'h') goto yy1162;
- goto yy133;
- }
- } else {
- if(yych <= 'u'){
- if(yych <= 'o') goto yy1163;
- if(yych <= 't') goto yy133;
- goto yy1164;
- } else {
- if(yych == 'w') goto yy1165;
- if(yych <= 'z') goto yy133;
- goto yy3;
- }
- }
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case ')': goto yy132;
+ case '0':
+ case '1': goto yy1277;
+ case '2': goto yy1278;
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy1279;
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D': case 'F':
+ case 'G': case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N': case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T': case 'V': case 'X':
+ case 'Y':
+ case 'Z': case 'a':
+ case 'b':
+ case 'c':
+ case 'd': case 'f':
+ case 'g': case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n': case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't': case 'v': case 'x':
+ case 'y':
+ case 'z': goto yy133;
+ case 'E': case 'e': goto yy1272;
+ case 'H': case 'h': goto yy1273;
+ case 'O': case 'o': goto yy1274;
+ case 'U': case 'u': goto yy1275;
+ case 'W': case 'w': goto yy1276;
+ default: goto yy3;
}
yy11:
YYDEBUG(11, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '-') goto yy1157;
- if(yych <= '0') goto yy12;
- if(yych <= '9') goto yy1158;
+ if(yych == '-') goto yy1268;
+ if(yych <= '/') goto yy12;
+ if(yych <= '9') goto yy1269;
goto yy12;
yy12:
YYDEBUG(12, *YYCURSOR);
-#line 1405 "ext/date/lib/parse_date.re"
+#line 1440 "ext/date/lib/parse_date.re"
{
-/* printf("unexpected character: #%d, %c ", *s->tok, *s->tok); */
- s->errors++;
+ add_error(s, "Unexpected character");
goto std;
}
-#line 1130 "ext/date/lib/parse_date.c"
+#line 1174 "ext/date/lib/parse_date.c"
yy13:
YYDEBUG(13, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: goto yy1230;
+ case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -1178,11 +1213,11 @@ yy13:
case 'T': case 'V':
case 'W':
case 'X':
- case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm': case 'o': case 'w': case 'y': goto yy1121;
- case '-': goto yy615;
- case '.': goto yy1123;
- case '/': goto yy614;
- case '0': goto yy1156;
+ case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm': case 'o': case 'w': case 'y': goto yy1232;
+ case '-': goto yy695;
+ case '.': goto yy1234;
+ case '/': goto yy694;
+ case '0': goto yy1267;
case '1':
case '2':
case '3':
@@ -1191,33 +1226,22 @@ yy13:
case '6':
case '7':
case '8':
- case '9': goto yy1155;
- case ':': goto yy1124;
- case 'n': goto yy612;
- case 'r': goto yy613;
- case 's': goto yy606;
- case 't': goto yy610;
+ case '9': goto yy1266;
+ case ':': goto yy1235;
+ case 'n': goto yy692;
+ case 'r': goto yy693;
+ case 's': goto yy686;
+ case 't': goto yy690;
default: goto yy12;
}
yy14:
YYDEBUG(14, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: goto yy682;
+ case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -1227,46 +1251,35 @@ yy14:
case 'W':
case 'X':
case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm': case 'o':
- case 'p': case 'w': case 'y': goto yy604;
- case '-': goto yy615;
- case '.': goto yy618;
- case '/': goto yy614;
+ case 'p': case 'w': case 'y': goto yy684;
+ case '-': goto yy695;
+ case '.': goto yy696;
+ case '/': goto yy694;
case '0':
case '1':
- case '2': goto yy1155;
+ case '2': goto yy1266;
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
- case '9': goto yy1122;
- case ':': goto yy627;
- case 'n': goto yy612;
- case 'r': goto yy613;
- case 's': goto yy606;
- case 't': goto yy610;
+ case '9': goto yy1233;
+ case ':': goto yy705;
+ case 'n': goto yy692;
+ case 'r': goto yy693;
+ case 's': goto yy686;
+ case 't': goto yy690;
default: goto yy12;
}
yy15:
YYDEBUG(15, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: goto yy682;
+ case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -1276,46 +1289,35 @@ yy15:
case 'W':
case 'X':
case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm': case 'o':
- case 'p': case 'w': case 'y': goto yy604;
- case '-': goto yy615;
- case '.': goto yy618;
- case '/': goto yy614;
+ case 'p': case 'w': case 'y': goto yy684;
+ case '-': goto yy695;
+ case '.': goto yy696;
+ case '/': goto yy694;
case '0':
case '1':
case '2':
- case '3': goto yy1122;
+ case '3': goto yy1233;
case '4':
case '5':
case '6':
case '7':
case '8':
- case '9': goto yy1119;
- case ':': goto yy627;
- case 'n': goto yy612;
- case 'r': goto yy613;
- case 's': goto yy606;
- case 't': goto yy610;
+ case '9': goto yy1229;
+ case ':': goto yy705;
+ case 'n': goto yy692;
+ case 'r': goto yy693;
+ case 's': goto yy686;
+ case 't': goto yy690;
default: goto yy12;
}
yy16:
YYDEBUG(16, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: goto yy682;
+ case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -1325,12 +1327,12 @@ yy16:
case 'W':
case 'X':
case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm': case 'o':
- case 'p': case 'w': case 'y': goto yy604;
- case '-': goto yy615;
- case '.': goto yy618;
- case '/': goto yy614;
+ case 'p': case 'w': case 'y': goto yy684;
+ case '-': goto yy695;
+ case '.': goto yy696;
+ case '/': goto yy694;
case '0':
- case '1': goto yy1119;
+ case '1': goto yy1229;
case '2':
case '3':
case '4':
@@ -1338,33 +1340,22 @@ yy16:
case '6':
case '7':
case '8':
- case '9': goto yy611;
- case ':': goto yy627;
- case 'n': goto yy612;
- case 'r': goto yy613;
- case 's': goto yy606;
- case 't': goto yy610;
+ case '9': goto yy691;
+ case ':': goto yy705;
+ case 'n': goto yy692;
+ case 'r': goto yy693;
+ case 's': goto yy686;
+ case 't': goto yy690;
default: goto yy12;
}
yy17:
YYDEBUG(17, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: goto yy682;
+ case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -1374,10 +1365,10 @@ yy17:
case 'W':
case 'X':
case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm': case 'o':
- case 'p': case 'w': case 'y': goto yy604;
- case '-': goto yy615;
- case '.': goto yy618;
- case '/': goto yy614;
+ case 'p': case 'w': case 'y': goto yy684;
+ case '-': goto yy695;
+ case '.': goto yy696;
+ case '/': goto yy694;
case '0':
case '1':
case '2':
@@ -1387,93 +1378,117 @@ yy17:
case '6':
case '7':
case '8':
- case '9': goto yy611;
- case ':': goto yy627;
- case 'n': goto yy612;
- case 'r': goto yy613;
- case 's': goto yy606;
- case 't': goto yy610;
+ case '9': goto yy691;
+ case ':': goto yy705;
+ case 'n': goto yy692;
+ case 'r': goto yy693;
+ case 's': goto yy686;
+ case 't': goto yy690;
default: goto yy12;
}
yy18:
YYDEBUG(18, *YYCURSOR);
- yyaccept = 1;
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'H'){
- if(yych <= '.'){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '/') goto yy3;
- if(yych <= '9') goto yy359;
- if(yych <= '@') goto yy3;
- goto yy133;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych == '/') goto yy3;
+ goto yy423;
+ }
}
} else {
- if(yych <= 'W'){
- if(yych <= 'I') goto yy602;
- if(yych == 'V') goto yy601;
- goto yy133;
+ if(yych <= 'V'){
+ if(yych <= 'H'){
+ if(yych <= '@') goto yy3;
+ goto yy133;
+ } else {
+ if(yych <= 'I') goto yy681;
+ if(yych <= 'U') goto yy133;
+ goto yy680;
+ }
} else {
if(yych <= 'Z'){
- if(yych <= 'X') goto yy601;
+ if(yych == 'X') goto yy680;
goto yy133;
} else {
if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
}
yy19:
YYDEBUG(19, *YYCURSOR);
- yyaccept = 1;
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= 'I'){
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'H') goto yy133;
- goto yy599;
+ goto yy133;
} else {
- if(yych <= 'Z') goto yy133;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy136;
- goto yy3;
+ if(yych <= 'Z'){
+ if(yych <= 'I') goto yy678;
+ goto yy133;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy138;
+ goto yy3;
+ }
}
}
yy20:
YYDEBUG(20, *YYCURSOR);
- yyaccept = 1;
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= 'I'){
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'H') goto yy133;
- goto yy597;
+ goto yy133;
} else {
- if(yych <= 'Z') goto yy133;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy136;
- goto yy3;
+ if(yych <= 'Z'){
+ if(yych <= 'I') goto yy676;
+ goto yy133;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy138;
+ goto yy3;
+ }
}
}
yy21:
@@ -1484,18 +1499,18 @@ yy21:
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'A') goto yy580;
+ if(yych <= 'A') goto yy659;
if(yych <= 'T') goto yy133;
- goto yy579;
+ goto yy658;
}
} else {
if(yych <= 'a'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy589;
+ goto yy668;
} else {
- if(yych == 'u') goto yy588;
- if(yych <= 'z') goto yy136;
+ if(yych == 'u') goto yy667;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1507,17 +1522,17 @@ yy22:
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'A') goto yy580;
+ if(yych <= 'A') goto yy659;
if(yych <= 'T') goto yy133;
- goto yy579;
+ goto yy658;
}
} else {
if(yych <= 'a'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy580;
+ goto yy659;
} else {
- if(yych == 'u') goto yy579;
+ if(yych == 'u') goto yy658;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1533,16 +1548,16 @@ yy23:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy541;
+ goto yy620;
}
} else {
if(yych <= 'N'){
- if(yych == 'I') goto yy542;
+ if(yych == 'I') goto yy621;
goto yy133;
} else {
- if(yych <= 'O') goto yy543;
+ if(yych <= 'O') goto yy622;
if(yych <= 'Q') goto yy133;
- goto yy544;
+ goto yy623;
}
}
} else {
@@ -1550,19 +1565,19 @@ yy23:
if(yych <= 'd'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy136;
+ goto yy138;
} else {
- if(yych <= 'e') goto yy560;
- if(yych <= 'h') goto yy136;
- goto yy561;
+ if(yych <= 'e') goto yy639;
+ if(yych <= 'h') goto yy138;
+ goto yy640;
}
} else {
if(yych <= 'q'){
- if(yych == 'o') goto yy562;
- goto yy136;
+ if(yych == 'o') goto yy641;
+ goto yy138;
} else {
- if(yych <= 'r') goto yy563;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'r') goto yy642;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1578,16 +1593,16 @@ yy24:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy541;
+ goto yy620;
}
} else {
if(yych <= 'N'){
- if(yych == 'I') goto yy542;
+ if(yych == 'I') goto yy621;
goto yy133;
} else {
- if(yych <= 'O') goto yy543;
+ if(yych <= 'O') goto yy622;
if(yych <= 'Q') goto yy133;
- goto yy544;
+ goto yy623;
}
}
} else {
@@ -1597,16 +1612,16 @@ yy24:
if(yych <= '`') goto yy3;
goto yy133;
} else {
- if(yych <= 'e') goto yy541;
+ if(yych <= 'e') goto yy620;
if(yych <= 'h') goto yy133;
- goto yy542;
+ goto yy621;
}
} else {
if(yych <= 'q'){
- if(yych == 'o') goto yy543;
+ if(yych == 'o') goto yy622;
goto yy133;
} else {
- if(yych <= 'r') goto yy544;
+ if(yych <= 'r') goto yy623;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1622,12 +1637,12 @@ yy25:
goto yy133;
} else {
if(yych <= 'O'){
- if(yych <= 'G') goto yy524;
+ if(yych <= 'G') goto yy599;
goto yy133;
} else {
- if(yych <= 'P') goto yy523;
+ if(yych <= 'P') goto yy598;
if(yych <= 'T') goto yy133;
- goto yy522;
+ goto yy597;
}
}
} else {
@@ -1636,16 +1651,16 @@ yy25:
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych == 'g') goto yy534;
- goto yy136;
+ if(yych == 'g') goto yy611;
+ goto yy138;
}
} else {
if(yych <= 't'){
- if(yych <= 'p') goto yy533;
- goto yy136;
+ if(yych <= 'p') goto yy610;
+ goto yy138;
} else {
- if(yych <= 'u') goto yy532;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'u') goto yy609;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1660,12 +1675,12 @@ yy26:
goto yy133;
} else {
if(yych <= 'O'){
- if(yych <= 'G') goto yy524;
+ if(yych <= 'G') goto yy599;
goto yy133;
} else {
- if(yych <= 'P') goto yy523;
+ if(yych <= 'P') goto yy598;
if(yych <= 'T') goto yy133;
- goto yy522;
+ goto yy597;
}
}
} else {
@@ -1674,15 +1689,15 @@ yy26:
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych == 'g') goto yy524;
+ if(yych == 'g') goto yy599;
goto yy133;
}
} else {
if(yych <= 't'){
- if(yych <= 'p') goto yy523;
+ if(yych <= 'p') goto yy598;
goto yy133;
} else {
- if(yych <= 'u') goto yy522;
+ if(yych <= 'u') goto yy597;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1698,17 +1713,17 @@ yy27:
goto yy132;
} else {
if(yych <= '@') goto yy3;
- if(yych <= 'A') goto yy469;
+ if(yych <= 'A') goto yy540;
goto yy133;
}
} else {
if(yych <= 'H'){
- if(yych <= 'E') goto yy468;
+ if(yych <= 'E') goto yy539;
goto yy133;
} else {
- if(yych <= 'I') goto yy470;
+ if(yych <= 'I') goto yy541;
if(yych <= 'T') goto yy133;
- goto yy471;
+ goto yy542;
}
}
} else {
@@ -1717,17 +1732,17 @@ yy27:
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych <= 'a') goto yy496;
- if(yych <= 'd') goto yy136;
- goto yy495;
+ if(yych <= 'a') goto yy569;
+ if(yych <= 'd') goto yy138;
+ goto yy568;
}
} else {
if(yych <= 't'){
- if(yych == 'i') goto yy497;
- goto yy136;
+ if(yych == 'i') goto yy570;
+ goto yy138;
} else {
- if(yych <= 'u') goto yy498;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'u') goto yy571;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1742,17 +1757,17 @@ yy28:
goto yy132;
} else {
if(yych <= '@') goto yy3;
- if(yych <= 'A') goto yy469;
+ if(yych <= 'A') goto yy540;
goto yy133;
}
} else {
if(yych <= 'H'){
- if(yych <= 'E') goto yy468;
+ if(yych <= 'E') goto yy539;
goto yy133;
} else {
- if(yych <= 'I') goto yy470;
+ if(yych <= 'I') goto yy541;
if(yych <= 'T') goto yy133;
- goto yy471;
+ goto yy542;
}
}
} else {
@@ -1761,16 +1776,16 @@ yy28:
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych <= 'a') goto yy469;
+ if(yych <= 'a') goto yy540;
if(yych <= 'd') goto yy133;
- goto yy468;
+ goto yy539;
}
} else {
if(yych <= 't'){
- if(yych == 'i') goto yy470;
+ if(yych == 'i') goto yy541;
goto yy133;
} else {
- if(yych <= 'u') goto yy471;
+ if(yych <= 'u') goto yy542;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1786,16 +1801,16 @@ yy29:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'B') goto yy133;
- goto yy458;
+ goto yy529;
}
} else {
if(yych <= 'b'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy136;
+ goto yy138;
} else {
- if(yych <= 'c') goto yy463;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'c') goto yy534;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1809,7 +1824,7 @@ yy30:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'B') goto yy133;
- goto yy458;
+ goto yy529;
}
} else {
if(yych <= 'b'){
@@ -1817,7 +1832,7 @@ yy30:
if(yych <= '`') goto yy3;
goto yy133;
} else {
- if(yych <= 'c') goto yy458;
+ if(yych <= 'c') goto yy529;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1832,16 +1847,16 @@ yy31:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy356;
+ goto yy420;
}
} else {
if(yych <= 'd'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy136;
+ goto yy138;
} else {
- if(yych <= 'e') goto yy451;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'e') goto yy522;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1855,7 +1870,7 @@ yy32:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy356;
+ goto yy420;
}
} else {
if(yych <= 'd'){
@@ -1863,7 +1878,7 @@ yy32:
if(yych <= '`') goto yy3;
goto yy133;
} else {
- if(yych <= 'e') goto yy356;
+ if(yych <= 'e') goto yy420;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1878,16 +1893,16 @@ yy33:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy339;
+ goto yy403;
}
} else {
if(yych <= 'd'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy136;
+ goto yy138;
} else {
- if(yych <= 'e') goto yy348;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'e') goto yy412;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1901,7 +1916,7 @@ yy34:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy133;
- goto yy339;
+ goto yy403;
}
} else {
if(yych <= 'd'){
@@ -1909,7 +1924,7 @@ yy34:
if(yych <= '`') goto yy3;
goto yy133;
} else {
- if(yych <= 'e') goto yy339;
+ if(yych <= 'e') goto yy403;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1922,19 +1937,19 @@ yy35:
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'I') goto yy321;
+ if(yych == 'I') goto yy367;
if(yych <= 'K') goto yy133;
- goto yy322;
+ goto yy368;
}
} else {
if(yych <= 'i'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- if(yych <= 'h') goto yy136;
- goto yy330;
+ if(yych <= 'h') goto yy138;
+ goto yy385;
} else {
- if(yych == 'l') goto yy331;
- if(yych <= 'z') goto yy136;
+ if(yych == 'l') goto yy386;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1946,18 +1961,18 @@ yy36:
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'I') goto yy321;
+ if(yych == 'I') goto yy367;
if(yych <= 'K') goto yy133;
- goto yy322;
+ goto yy368;
}
} else {
if(yych <= 'i'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
if(yych <= 'h') goto yy133;
- goto yy321;
+ goto yy367;
} else {
- if(yych == 'l') goto yy322;
+ if(yych == 'l') goto yy368;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -1968,14 +1983,14 @@ yy37:
if(yych <= 'A'){
if(yych == ')') goto yy132;
if(yych <= '@') goto yy3;
- goto yy315;
+ goto yy319;
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych <= 'a') goto yy318;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'a') goto yy343;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -1985,13 +2000,13 @@ yy38:
if(yych <= 'A'){
if(yych == ')') goto yy132;
if(yych <= '@') goto yy3;
- goto yy315;
+ goto yy319;
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy133;
goto yy3;
} else {
- if(yych <= 'a') goto yy315;
+ if(yych <= 'a') goto yy319;
if(yych <= 'z') goto yy133;
goto yy3;
}
@@ -2006,16 +2021,16 @@ yy39:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy133;
- goto yy153;
+ goto yy157;
}
} else {
if(yych <= 'q'){
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- goto yy136;
+ goto yy138;
} else {
- if(yych <= 'r') goto yy235;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'r') goto yy239;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
}
@@ -2029,7 +2044,7 @@ yy40:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy133;
- goto yy153;
+ goto yy157;
}
} else {
if(yych <= 'q'){
@@ -2037,30 +2052,30 @@ yy40:
if(yych <= '`') goto yy3;
goto yy133;
} else {
- if(yych <= 'r') goto yy153;
+ if(yych <= 'r') goto yy157;
if(yych <= 'z') goto yy133;
goto yy3;
}
}
yy41:
YYDEBUG(41, *YYCURSOR);
- yyaccept = 0;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if(yybm[0+yych] & 16) {
goto yy54;
}
if(yych <= '/') goto yy12;
- if(yych <= '1') goto yy146;
- if(yych <= '2') goto yy147;
- if(yych <= '9') goto yy148;
+ if(yych <= '1') goto yy150;
+ if(yych <= '2') goto yy151;
+ if(yych <= '9') goto yy152;
goto yy12;
yy42:
YYDEBUG(42, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@') goto yy12;
- if(yych <= 'Z') goto yy145;
+ if(yych <= 'Z') goto yy149;
if(yych <= '`') goto yy12;
- if(yych <= 'z') goto yy145;
+ if(yych <= 'z') goto yy149;
goto yy12;
yy43:
YYDEBUG(43, *YYCURSOR);
@@ -2071,7 +2086,7 @@ yy43:
} else {
if(yych <= 'Z') goto yy133;
if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy136;
+ if(yych <= 'z') goto yy138;
goto yy3;
}
yy44:
@@ -2099,11 +2114,11 @@ yy45:
yy46:
YYDEBUG(46, *YYCURSOR);
-#line 1394 "ext/date/lib/parse_date.re"
+#line 1429 "ext/date/lib/parse_date.re"
{
goto std;
}
-#line 2009 "ext/date/lib/parse_date.c"
+#line 2022 "ext/date/lib/parse_date.c"
yy47:
YYDEBUG(47, *YYCURSOR);
yych = *++YYCURSOR;
@@ -2115,12 +2130,12 @@ yy48:
yy49:
YYDEBUG(49, *YYCURSOR);
-#line 1399 "ext/date/lib/parse_date.re"
+#line 1434 "ext/date/lib/parse_date.re"
{
s->pos = cursor; s->line++;
goto std;
}
-#line 2020 "ext/date/lib/parse_date.c"
+#line 2033 "ext/date/lib/parse_date.c"
yy50:
YYDEBUG(50, *YYCURSOR);
yych = *++YYCURSOR;
@@ -2136,50 +2151,96 @@ yy52:
if(yybm[0+yych] & 8) {
goto yy51;
}
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': goto yy56;
- case 'D': case 'd': goto yy61;
- case 'F': case 'f': goto yy63;
- case 'H': case 'h': goto yy60;
- case 'M': case 'm': goto yy59;
- case 'S': case 's': goto yy58;
- case 'T': case 't': goto yy65;
- case 'W': case 'w': goto yy62;
- case 'Y': case 'y': goto yy64;
- default: goto yy53;
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy56;
+ if(yych >= ' ') goto yy56;
+ goto yy53;
+ } else {
+ if(yych == 'D') goto yy61;
+ if(yych >= 'F') goto yy63;
+ goto yy53;
+ }
+ } else {
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy60;
+ if(yych >= 'M') goto yy59;
+ goto yy53;
+ } else {
+ if(yych <= 'S'){
+ if(yych >= 'S') goto yy58;
+ goto yy53;
+ } else {
+ if(yych <= 'T') goto yy65;
+ if(yych >= 'W') goto yy62;
+ goto yy53;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy64;
+ if(yych >= 'd') goto yy61;
+ goto yy53;
+ } else {
+ if(yych <= 'f'){
+ if(yych >= 'f') goto yy63;
+ goto yy53;
+ } else {
+ if(yych == 'h') goto yy60;
+ goto yy53;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'm') goto yy59;
+ if(yych <= 'r') goto yy53;
+ if(yych <= 's') goto yy58;
+ goto yy65;
+ } else {
+ if(yych <= 'w'){
+ if(yych >= 'w') goto yy62;
+ goto yy53;
+ } else {
+ if(yych == 'y') goto yy64;
+ goto yy53;
+ }
+ }
+ }
}
yy53:
YYDEBUG(53, *YYCURSOR);
YYCURSOR = YYMARKER;
switch(yyaccept){
- case 26: goto yy1291;
- case 24: goto yy1260;
- case 25: goto yy1268;
- case 23: goto yy1184;
- case 22: goto yy1181;
- case 11: goto yy634;
- case 20: goto yy1127;
- case 21: goto yy1135;
- case 13: goto yy784;
- case 18: goto yy1024;
- case 12: goto yy775;
- case 8: goto yy420;
- case 17: goto yy889;
- case 6: goto yy363;
- case 10: goto yy620;
- case 16: goto yy922;
- case 19: goto yy933;
- case 15: goto yy915;
- case 14: goto yy880;
- case 9: goto yy526;
- case 5: goto yy341;
- case 4: goto yy172;
- case 1: goto yy3;
- case 7: goto yy385;
+ case 26: goto yy1413;
+ case 24: goto yy1382;
+ case 25: goto yy1390;
+ case 23: goto yy1304;
+ case 22: goto yy1301;
+ case 11: goto yy713;
+ case 20: goto yy1238;
+ case 21: goto yy1246;
+ case 13: goto yy870;
+ case 18: goto yy1134;
+ case 12: goto yy860;
+ case 8: goto yy491;
+ case 17: goto yy978;
+ case 6: goto yy426;
+ case 10: goto yy698;
+ case 16: goto yy1032;
+ case 19: goto yy1026;
+ case 15: goto yy1005;
+ case 14: goto yy971;
+ case 9: goto yy601;
+ case 5: goto yy405;
+ case 4: goto yy176;
+ case 0: goto yy3;
+ case 7: goto yy448;
case 3: goto yy69;
case 2: goto yy46;
- case 0: goto yy12;
+ case 1: goto yy12;
}
yy54:
YYDEBUG(54, *YYCURSOR);
@@ -2203,18 +2264,64 @@ yy56:
goto yy57;
yy57:
YYDEBUG(57, *YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': goto yy56;
- case 'D': case 'd': goto yy61;
- case 'F': case 'f': goto yy63;
- case 'H': case 'h': goto yy60;
- case 'M': case 'm': goto yy59;
- case 'S': case 's': goto yy58;
- case 'T': case 't': goto yy65;
- case 'W': case 'w': goto yy62;
- case 'Y': case 'y': goto yy64;
- default: goto yy53;
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy56;
+ if(yych <= 0x1F) goto yy53;
+ goto yy56;
+ } else {
+ if(yych == 'D') goto yy61;
+ if(yych <= 'E') goto yy53;
+ goto yy63;
+ }
+ } else {
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy60;
+ if(yych <= 'L') goto yy53;
+ goto yy59;
+ } else {
+ if(yych <= 'S'){
+ if(yych <= 'R') goto yy53;
+ goto yy58;
+ } else {
+ if(yych <= 'T') goto yy65;
+ if(yych <= 'V') goto yy53;
+ goto yy62;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy64;
+ if(yych <= 'c') goto yy53;
+ goto yy61;
+ } else {
+ if(yych <= 'f'){
+ if(yych <= 'e') goto yy53;
+ goto yy63;
+ } else {
+ if(yych == 'h') goto yy60;
+ goto yy53;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'm') goto yy59;
+ if(yych <= 'r') goto yy53;
+ if(yych >= 't') goto yy65;
+ goto yy58;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy53;
+ goto yy62;
+ } else {
+ if(yych == 'y') goto yy64;
+ goto yy53;
+ }
+ }
+ }
}
yy58:
YYDEBUG(58, *YYCURSOR);
@@ -2332,7 +2439,7 @@ yy68:
yy69:
YYDEBUG(69, *YYCURSOR);
-#line 1378 "ext/date/lib/parse_date.re"
+#line 1413 "ext/date/lib/parse_date.re"
{
timelib_ull i;
DEBUG_OUTPUT("relative");
@@ -2347,7 +2454,7 @@ yy69:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 2205 "ext/date/lib/parse_date.c"
+#line 2312 "ext/date/lib/parse_date.c"
yy70:
YYDEBUG(70, *YYCURSOR);
yych = *++YYCURSOR;
@@ -2804,34 +2911,58 @@ yy134:
yy135:
YYDEBUG(135, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == ')') goto yy132;
- goto yy3;
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ if(yych >= '{') goto yy3;
+ goto yy136;
+ }
yy136:
YYDEBUG(136, *YYCURSOR);
- yyaccept = 1;
+ yych = *++YYCURSOR;
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ if(yych >= '{') goto yy3;
+ goto yy137;
+ }
+yy137:
+ YYDEBUG(137, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == ')') goto yy132;
+ goto yy3;
+yy138:
+ YYDEBUG(138, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '@'){
if(yych <= ')'){
if(yych <= '(') goto yy3;
goto yy132;
} else {
- if(yych == '/') goto yy138;
+ if(yych == '/') goto yy140;
goto yy3;
}
} else {
if(yych <= '_'){
if(yych <= 'Z') goto yy134;
if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '`') goto yy3;
if(yych >= '{') goto yy3;
- goto yy137;
+ goto yy139;
}
}
-yy137:
- YYDEBUG(137, *YYCURSOR);
- yyaccept = 1;
+yy139:
+ YYDEBUG(139, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '@'){
if(yych <= ')'){
@@ -2839,88 +2970,134 @@ yy137:
goto yy132;
} else {
if(yych != '/') goto yy3;
- goto yy138;
+ goto yy140;
}
} else {
if(yych <= '_'){
if(yych <= 'Z') goto yy135;
if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy138:
- YYDEBUG(138, *YYCURSOR);
+yy140:
+ YYDEBUG(140, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yych <= '@') goto yy53;
if(yych >= '[') goto yy53;
- goto yy139;
-yy139:
- YYDEBUG(139, *YYCURSOR);
+ goto yy141;
+yy141:
+ YYDEBUG(141, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yybm[0+yych] & 32) {
- goto yy140;
+ goto yy142;
}
goto yy53;
-yy140:
- YYDEBUG(140, *YYCURSOR);
- yyaccept = 1;
+yy142:
+ YYDEBUG(142, *YYCURSOR);
+ yyaccept = 0;
YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy141;
-yy141:
- YYDEBUG(141, *YYCURSOR);
+ goto yy143;
+yy143:
+ YYDEBUG(143, *YYCURSOR);
if(yybm[0+yych] & 32) {
- goto yy140;
+ goto yy142;
}
- if(yych == '/') goto yy138;
- if(yych == '_') goto yy138;
+ if(yych == '/') goto yy140;
+ if(yych == '_') goto yy140;
goto yy3;
-yy142:
- YYDEBUG(142, *YYCURSOR);
- yyaccept = 1;
+yy144:
+ YYDEBUG(144, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy3;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych >= '{') goto yy3;
+ goto yy145;
+ }
+ }
+yy145:
+ YYDEBUG(145, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy3;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych >= '{') goto yy3;
+ goto yy146;
+ }
+ }
+yy146:
+ YYDEBUG(146, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '_'){
if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '`') goto yy3;
if(yych >= '{') goto yy3;
- goto yy143;
+ goto yy147;
}
}
-yy143:
- YYDEBUG(143, *YYCURSOR);
+yy147:
+ YYDEBUG(147, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy144;
-yy144:
- YYDEBUG(144, *YYCURSOR);
+ goto yy148;
+yy148:
+ YYDEBUG(148, *YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy138;
+ if(yych == '/') goto yy140;
goto yy53;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
-yy145:
- YYDEBUG(145, *YYCURSOR);
+yy149:
+ YYDEBUG(149, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@'){
if(yych == ')') goto yy132;
@@ -2931,160 +3108,356 @@ yy145:
if(yych <= 'z') goto yy133;
goto yy3;
}
-yy146:
- YYDEBUG(146, *YYCURSOR);
- yyaccept = 1;
+yy150:
+ YYDEBUG(150, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy148;
- case ':': goto yy149;
- default: goto yy3;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= '9'){
+ if(yych <= '/') goto yy3;
+ goto yy152;
+ } else {
+ if(yych <= ':') goto yy153;
+ if(yych <= 'C') goto yy3;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy3;
+ if(yych <= 'T') goto yy57;
+ goto yy3;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy3;
+ if(yych <= 'Y') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy3;
+ } else {
+ if(yych == 'g') goto yy3;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy3;
+ }
+ }
+ }
}
-yy147:
- YYDEBUG(147, *YYCURSOR);
- yyaccept = 1;
+yy151:
+ YYDEBUG(151, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3': goto yy148;
- case '4':
- case '5': goto yy150;
- case '6':
- case '7':
- case '8':
- case '9': goto yy151;
- case ':': goto yy149;
- default: goto yy3;
+ if(yych <= 'T'){
+ if(yych <= ':'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= '3'){
+ if(yych <= '/') goto yy3;
+ goto yy152;
+ } else {
+ if(yych <= '5') goto yy154;
+ if(yych <= '9') goto yy155;
+ goto yy153;
+ }
+ }
+ } else {
+ if(yych <= 'G'){
+ if(yych <= 'D'){
+ if(yych <= 'C') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'F') goto yy57;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'L'){
+ if(yych <= 'H') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'M') goto yy57;
+ if(yych <= 'R') goto yy3;
+ goto yy57;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= 'Y'){
+ if(yych == 'W') goto yy57;
+ if(yych <= 'X') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'c') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'f') goto yy57;
+ goto yy3;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'l'){
+ if(yych <= 'h') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'm') goto yy57;
+ if(yych <= 'r') goto yy3;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy3;
+ }
+ }
+ }
}
-yy148:
- YYDEBUG(148, *YYCURSOR);
- yyaccept = 1;
+yy152:
+ YYDEBUG(152, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5': goto yy150;
- case '6':
- case '7':
- case '8':
- case '9': goto yy151;
- case ':': goto yy149;
- default: goto yy3;
+ if(yych <= 'T'){
+ if(yych <= 'C'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= '5'){
+ if(yych <= '/') goto yy3;
+ goto yy154;
+ } else {
+ if(yych <= '9') goto yy155;
+ if(yych >= ';') goto yy3;
+ goto yy153;
+ }
+ }
+ } else {
+ if(yych <= 'G'){
+ if(yych == 'E') goto yy3;
+ if(yych <= 'F') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'L'){
+ if(yych <= 'H') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'M') goto yy57;
+ if(yych <= 'R') goto yy3;
+ goto yy57;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= 'Y'){
+ if(yych == 'W') goto yy57;
+ if(yych <= 'X') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'c') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'f') goto yy57;
+ goto yy3;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'l'){
+ if(yych <= 'h') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'm') goto yy57;
+ if(yych <= 'r') goto yy3;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy3;
+ }
+ }
+ }
}
-yy149:
- YYDEBUG(149, *YYCURSOR);
+yy153:
+ YYDEBUG(153, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy3;
- if(yych <= '5') goto yy152;
+ if(yych <= '5') goto yy156;
if(yych <= '9') goto yy132;
goto yy3;
-yy150:
- YYDEBUG(150, *YYCURSOR);
- yyaccept = 1;
+yy154:
+ YYDEBUG(154, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy151;
- default: goto yy3;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy155;
+ if(yych <= 'C') goto yy3;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy3;
+ if(yych <= 'T') goto yy57;
+ goto yy3;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy3;
+ if(yych <= 'Y') goto yy57;
+ goto yy3;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy3;
+ } else {
+ if(yych == 'g') goto yy3;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy3;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy3;
+ }
+ }
+ }
}
-yy151:
- YYDEBUG(151, *YYCURSOR);
- yyaccept = 1;
+yy155:
+ YYDEBUG(155, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yybm[0+yych] & 8) {
goto yy51;
}
- if(yych <= 'X'){
- if(yych <= 'G'){
- if(yych <= 'C'){
- if(yych == ' ') goto yy57;
- goto yy3;
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy3;
+ goto yy57;
} else {
- if(yych == 'E') goto yy3;
- if(yych <= 'F') goto yy57;
- goto yy3;
+ if(yych == 'D') goto yy57;
+ if(yych <= 'E') goto yy3;
+ goto yy57;
}
} else {
- if(yych <= 'R'){
- if(yych <= 'H') goto yy57;
- if(yych == 'M') goto yy57;
- goto yy3;
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy57;
+ if(yych <= 'L') goto yy3;
+ goto yy57;
} else {
+ if(yych <= 'R') goto yy3;
if(yych <= 'T') goto yy57;
- if(yych == 'W') goto yy57;
- goto yy3;
+ if(yych <= 'V') goto yy3;
+ goto yy57;
}
}
} else {
- if(yych <= 'l'){
- if(yych <= 'e'){
- if(yych <= 'Y') goto yy57;
- if(yych == 'd') goto yy57;
- goto yy3;
+ if(yych <= 'h'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy57;
+ if(yych <= 'c') goto yy3;
+ goto yy57;
} else {
- if(yych == 'g') goto yy3;
- if(yych <= 'h') goto yy57;
- goto yy3;
+ if(yych == 'f') goto yy57;
+ if(yych <= 'g') goto yy3;
+ goto yy57;
}
} else {
- if(yych <= 'v'){
- if(yych <= 'm') goto yy57;
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
if(yych <= 'r') goto yy3;
- if(yych <= 't') goto yy57;
- goto yy3;
+ goto yy57;
} else {
- if(yych == 'x') goto yy3;
- if(yych <= 'y') goto yy57;
- goto yy3;
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy3;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy3;
+ }
}
}
}
-yy152:
- YYDEBUG(152, *YYCURSOR);
+yy156:
+ YYDEBUG(156, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy3;
if(yych <= '9') goto yy132;
goto yy3;
-yy153:
- YYDEBUG(153, *YYCURSOR);
+yy157:
+ YYDEBUG(157, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych <= ')'){
@@ -3093,7 +3466,7 @@ yy153:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy154;
+ goto yy158;
}
} else {
if(yych <= 'd'){
@@ -3101,13 +3474,13 @@ yy153:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'e') goto yy154;
+ if(yych <= 'e') goto yy158;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy154:
- YYDEBUG(154, *YYCURSOR);
+yy158:
+ YYDEBUG(158, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'V'){
if(yych <= ')'){
@@ -3116,7 +3489,7 @@ yy154:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'U') goto yy135;
- goto yy155;
+ goto yy159;
}
} else {
if(yych <= 'u'){
@@ -3124,182 +3497,262 @@ yy154:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'v') goto yy155;
+ if(yych <= 'v') goto yy159;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy155:
- YYDEBUG(155, *YYCURSOR);
- yyaccept = 1;
+yy159:
+ YYDEBUG(159, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'I'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'H') goto yy136;
+ goto yy160;
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'i') goto yy160;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy160:
+ YYDEBUG(160, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'O'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'N') goto yy137;
+ goto yy161;
+ }
+ } else {
+ if(yych <= 'n'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'o') goto yy161;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy161:
+ YYDEBUG(161, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'H'){
+ if(yych <= 'T'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'I') goto yy156;
- if(yych != 'i') goto yy3;
- goto yy156;
+ if(yych <= 'U') goto yy162;
+ if(yych != 'u') goto yy3;
+ goto yy162;
}
-yy156:
- YYDEBUG(156, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'O') goto yy157;
- if(yych != 'o') goto yy53;
- goto yy157;
-yy157:
- YYDEBUG(157, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'U') goto yy158;
- if(yych != 'u') goto yy53;
- goto yy158;
-yy158:
- YYDEBUG(158, *YYCURSOR);
+yy162:
+ YYDEBUG(162, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy159;
+ if(yych == 'S') goto yy163;
if(yych != 's') goto yy53;
- goto yy159;
-yy159:
- YYDEBUG(159, *YYCURSOR);
+ goto yy163;
+yy163:
+ YYDEBUG(163, *YYCURSOR);
++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
yych = *YYCURSOR;
- goto yy160;
-yy160:
- YYDEBUG(160, *YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': goto yy159;
- case 'D': case 'd': goto yy164;
- case 'F': case 'f': goto yy166;
- case 'H': case 'h': goto yy163;
- case 'M': case 'm': goto yy162;
- case 'S': case 's': goto yy161;
- case 'T': case 't': goto yy168;
- case 'W': case 'w': goto yy165;
- case 'Y': case 'y': goto yy167;
- default: goto yy53;
+ goto yy164;
+yy164:
+ YYDEBUG(164, *YYCURSOR);
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy163;
+ if(yych <= 0x1F) goto yy53;
+ goto yy163;
+ } else {
+ if(yych == 'D') goto yy168;
+ if(yych <= 'E') goto yy53;
+ goto yy170;
+ }
+ } else {
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy167;
+ if(yych <= 'L') goto yy53;
+ goto yy166;
+ } else {
+ if(yych <= 'S'){
+ if(yych <= 'R') goto yy53;
+ goto yy165;
+ } else {
+ if(yych <= 'T') goto yy172;
+ if(yych <= 'V') goto yy53;
+ goto yy169;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy171;
+ if(yych <= 'c') goto yy53;
+ goto yy168;
+ } else {
+ if(yych <= 'f'){
+ if(yych <= 'e') goto yy53;
+ goto yy170;
+ } else {
+ if(yych == 'h') goto yy167;
+ goto yy53;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'm') goto yy166;
+ if(yych <= 'r') goto yy53;
+ if(yych >= 't') goto yy172;
+ goto yy165;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy53;
+ goto yy169;
+ } else {
+ if(yych == 'y') goto yy171;
+ goto yy53;
+ }
+ }
+ }
}
-yy161:
- YYDEBUG(161, *YYCURSOR);
+yy165:
+ YYDEBUG(165, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= 'D'){
- if(yych == 'A') goto yy222;
+ if(yych == 'A') goto yy226;
goto yy53;
} else {
- if(yych <= 'E') goto yy223;
+ if(yych <= 'E') goto yy227;
if(yych <= 'T') goto yy53;
- goto yy221;
+ goto yy225;
}
} else {
if(yych <= 'd'){
- if(yych == 'a') goto yy222;
+ if(yych == 'a') goto yy226;
goto yy53;
} else {
- if(yych <= 'e') goto yy223;
- if(yych == 'u') goto yy221;
+ if(yych <= 'e') goto yy227;
+ if(yych == 'u') goto yy225;
goto yy53;
}
}
-yy162:
- YYDEBUG(162, *YYCURSOR);
+yy166:
+ YYDEBUG(166, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'O'){
- if(yych == 'I') goto yy213;
+ if(yych == 'I') goto yy217;
if(yych <= 'N') goto yy53;
- goto yy212;
+ goto yy216;
} else {
if(yych <= 'i'){
if(yych <= 'h') goto yy53;
- goto yy213;
+ goto yy217;
} else {
- if(yych == 'o') goto yy212;
+ if(yych == 'o') goto yy216;
goto yy53;
}
}
-yy163:
- YYDEBUG(163, *YYCURSOR);
+yy167:
+ YYDEBUG(167, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy210;
- if(yych == 'o') goto yy210;
+ if(yych == 'O') goto yy214;
+ if(yych == 'o') goto yy214;
goto yy53;
-yy164:
- YYDEBUG(164, *YYCURSOR);
+yy168:
+ YYDEBUG(168, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy209;
- if(yych == 'a') goto yy209;
+ if(yych == 'A') goto yy213;
+ if(yych == 'a') goto yy213;
goto yy53;
-yy165:
- YYDEBUG(165, *YYCURSOR);
+yy169:
+ YYDEBUG(169, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy201;
- if(yych == 'e') goto yy201;
+ if(yych == 'E') goto yy205;
+ if(yych == 'e') goto yy205;
goto yy53;
-yy166:
- YYDEBUG(166, *YYCURSOR);
+yy170:
+ YYDEBUG(170, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
- if(yych == 'O') goto yy186;
+ if(yych == 'O') goto yy190;
if(yych <= 'Q') goto yy53;
- goto yy185;
+ goto yy189;
} else {
if(yych <= 'o'){
if(yych <= 'n') goto yy53;
- goto yy186;
+ goto yy190;
} else {
- if(yych == 'r') goto yy185;
+ if(yych == 'r') goto yy189;
goto yy53;
}
}
-yy167:
- YYDEBUG(167, *YYCURSOR);
+yy171:
+ YYDEBUG(171, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy182;
- if(yych == 'e') goto yy182;
+ if(yych == 'E') goto yy186;
+ if(yych == 'e') goto yy186;
goto yy53;
-yy168:
- YYDEBUG(168, *YYCURSOR);
+yy172:
+ YYDEBUG(172, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'H') goto yy169;
+ if(yych == 'H') goto yy173;
if(yych <= 'T') goto yy53;
- goto yy170;
+ goto yy174;
} else {
if(yych <= 'h'){
if(yych <= 'g') goto yy53;
- goto yy169;
+ goto yy173;
} else {
- if(yych == 'u') goto yy170;
+ if(yych == 'u') goto yy174;
goto yy53;
}
}
-yy169:
- YYDEBUG(169, *YYCURSOR);
+yy173:
+ YYDEBUG(173, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'U') goto yy177;
- if(yych == 'u') goto yy177;
+ if(yych == 'U') goto yy181;
+ if(yych == 'u') goto yy181;
goto yy53;
-yy170:
- YYDEBUG(170, *YYCURSOR);
+yy174:
+ YYDEBUG(174, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy171;
+ if(yych == 'E') goto yy175;
if(yych != 'e') goto yy53;
- goto yy171;
-yy171:
- YYDEBUG(171, *YYCURSOR);
+ goto yy175;
+yy175:
+ YYDEBUG(175, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'S') goto yy173;
- if(yych == 's') goto yy173;
- goto yy172;
-yy172:
- YYDEBUG(172, *YYCURSOR);
+ if(yych == 'S') goto yy177;
+ if(yych == 's') goto yy177;
+ goto yy176;
+yy176:
+ YYDEBUG(176, *YYCURSOR);
-#line 1322 "ext/date/lib/parse_date.re"
+#line 1352 "ext/date/lib/parse_date.re"
{
timelib_sll i;
- int behavior;
+ int behavior = 0;
DEBUG_OUTPUT("relativetext");
TIMELIB_INIT;
TIMELIB_HAVE_RELATIVE();
@@ -3312,1269 +3765,1307 @@ yy172:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 2959 "ext/date/lib/parse_date.c"
-yy173:
- YYDEBUG(173, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy174;
- if(yych != 'd') goto yy53;
- goto yy174;
-yy174:
- YYDEBUG(174, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy175;
- if(yych != 'a') goto yy53;
- goto yy175;
-yy175:
- YYDEBUG(175, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych != 'y') goto yy53;
- goto yy176;
-yy176:
- YYDEBUG(176, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy172;
+#line 3409 "ext/date/lib/parse_date.c"
yy177:
YYDEBUG(177, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'R') goto yy178;
- if(yych != 'r') goto yy172;
+ yych = *++YYCURSOR;
+ if(yych == 'D') goto yy178;
+ if(yych != 'd') goto yy53;
goto yy178;
yy178:
YYDEBUG(178, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy179;
- if(yych != 's') goto yy53;
+ if(yych == 'A') goto yy179;
+ if(yych != 'a') goto yy53;
goto yy179;
yy179:
YYDEBUG(179, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy180;
- if(yych != 'd') goto yy53;
+ if(yych == 'Y') goto yy180;
+ if(yych != 'y') goto yy53;
goto yy180;
yy180:
YYDEBUG(180, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy181;
- if(yych != 'a') goto yy53;
- goto yy181;
+ goto yy176;
yy181:
YYDEBUG(181, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy176;
- goto yy53;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych == 'R') goto yy182;
+ if(yych != 'r') goto yy176;
+ goto yy182;
yy182:
YYDEBUG(182, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy183;
- if(yych != 'a') goto yy53;
+ if(yych == 'S') goto yy183;
+ if(yych != 's') goto yy53;
goto yy183;
yy183:
YYDEBUG(183, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy184;
- if(yych != 'r') goto yy53;
+ if(yych == 'D') goto yy184;
+ if(yych != 'd') goto yy53;
goto yy184;
yy184:
YYDEBUG(184, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy176;
- if(yych == 's') goto yy176;
- goto yy172;
+ if(yych == 'A') goto yy185;
+ if(yych != 'a') goto yy53;
+ goto yy185;
yy185:
YYDEBUG(185, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy198;
- if(yych == 'i') goto yy198;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy180;
goto yy53;
yy186:
YYDEBUG(186, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy187;
- if(yych != 'r') goto yy53;
+ if(yych == 'A') goto yy187;
+ if(yych != 'a') goto yy53;
goto yy187;
yy187:
YYDEBUG(187, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy188;
- if(yych != 't') goto yy53;
+ if(yych == 'R') goto yy188;
+ if(yych != 'r') goto yy53;
goto yy188;
yy188:
YYDEBUG(188, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'N'){
- if(yych == 'H') goto yy190;
- if(yych <= 'M') goto yy53;
- goto yy189;
- } else {
- if(yych <= 'h'){
- if(yych <= 'g') goto yy53;
- goto yy190;
- } else {
- if(yych != 'n') goto yy53;
- goto yy189;
- }
- }
+ if(yych == 'S') goto yy180;
+ if(yych == 's') goto yy180;
+ goto yy176;
yy189:
YYDEBUG(189, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy195;
- if(yych == 'i') goto yy195;
+ if(yych == 'I') goto yy202;
+ if(yych == 'i') goto yy202;
goto yy53;
yy190:
YYDEBUG(190, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy191;
- if(yych != 'n') goto yy53;
+ if(yych == 'R') goto yy191;
+ if(yych != 'r') goto yy53;
goto yy191;
yy191:
YYDEBUG(191, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy192;
- if(yych != 'i') goto yy53;
+ if(yych == 'T') goto yy192;
+ if(yych != 't') goto yy53;
goto yy192;
yy192:
YYDEBUG(192, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy193;
- if(yych != 'g') goto yy53;
- goto yy193;
+ if(yych <= 'N'){
+ if(yych == 'H') goto yy194;
+ if(yych <= 'M') goto yy53;
+ goto yy193;
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'g') goto yy53;
+ goto yy194;
+ } else {
+ if(yych != 'n') goto yy53;
+ goto yy193;
+ }
+ }
yy193:
YYDEBUG(193, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy194;
- if(yych != 'h') goto yy53;
- goto yy194;
+ if(yych == 'I') goto yy199;
+ if(yych == 'i') goto yy199;
+ goto yy53;
yy194:
YYDEBUG(194, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy184;
- if(yych == 't') goto yy184;
- goto yy53;
+ if(yych == 'N') goto yy195;
+ if(yych != 'n') goto yy53;
+ goto yy195;
yy195:
YYDEBUG(195, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy196;
- if(yych != 'g') goto yy53;
+ if(yych == 'I') goto yy196;
+ if(yych != 'i') goto yy53;
goto yy196;
yy196:
YYDEBUG(196, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy197;
- if(yych != 'h') goto yy53;
+ if(yych == 'G') goto yy197;
+ if(yych != 'g') goto yy53;
goto yy197;
yy197:
YYDEBUG(197, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy184;
- if(yych == 't') goto yy184;
- goto yy53;
+ if(yych == 'H') goto yy198;
+ if(yych != 'h') goto yy53;
+ goto yy198;
yy198:
YYDEBUG(198, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'D') goto yy199;
- if(yych != 'd') goto yy172;
- goto yy199;
+ yych = *++YYCURSOR;
+ if(yych == 'T') goto yy188;
+ if(yych == 't') goto yy188;
+ goto yy53;
yy199:
YYDEBUG(199, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy200;
- if(yych != 'a') goto yy53;
+ if(yych == 'G') goto yy200;
+ if(yych != 'g') goto yy53;
goto yy200;
yy200:
YYDEBUG(200, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy176;
- goto yy53;
+ if(yych == 'H') goto yy201;
+ if(yych != 'h') goto yy53;
+ goto yy201;
yy201:
YYDEBUG(201, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'E'){
- if(yych <= 'C') goto yy53;
- if(yych <= 'D') goto yy203;
- goto yy202;
- } else {
- if(yych <= 'c') goto yy53;
- if(yych <= 'd') goto yy203;
- if(yych >= 'f') goto yy53;
- goto yy202;
- }
+ if(yych == 'T') goto yy188;
+ if(yych == 't') goto yy188;
+ goto yy53;
yy202:
YYDEBUG(202, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'K') goto yy184;
- if(yych == 'k') goto yy184;
- goto yy53;
-yy203:
- YYDEBUG(203, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'N') goto yy204;
- if(yych != 'n') goto yy172;
+ if(yych == 'D') goto yy203;
+ if(yych != 'd') goto yy176;
+ goto yy203;
+yy203:
+ YYDEBUG(203, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'A') goto yy204;
+ if(yych != 'a') goto yy53;
goto yy204;
yy204:
YYDEBUG(204, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy205;
- if(yych != 'e') goto yy53;
- goto yy205;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy180;
+ goto yy53;
yy205:
YYDEBUG(205, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy206;
- if(yych != 's') goto yy53;
- goto yy206;
+ if(yych <= 'E'){
+ if(yych <= 'C') goto yy53;
+ if(yych <= 'D') goto yy207;
+ goto yy206;
+ } else {
+ if(yych <= 'c') goto yy53;
+ if(yych <= 'd') goto yy207;
+ if(yych >= 'f') goto yy53;
+ goto yy206;
+ }
yy206:
YYDEBUG(206, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy207;
- if(yych != 'd') goto yy53;
- goto yy207;
+ if(yych == 'K') goto yy188;
+ if(yych == 'k') goto yy188;
+ goto yy53;
yy207:
YYDEBUG(207, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy208;
- if(yych != 'a') goto yy53;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych == 'N') goto yy208;
+ if(yych != 'n') goto yy176;
goto yy208;
yy208:
YYDEBUG(208, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy176;
- goto yy53;
+ if(yych == 'E') goto yy209;
+ if(yych != 'e') goto yy53;
+ goto yy209;
yy209:
YYDEBUG(209, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy184;
- if(yych == 'y') goto yy184;
- goto yy53;
+ if(yych == 'S') goto yy210;
+ if(yych != 's') goto yy53;
+ goto yy210;
yy210:
YYDEBUG(210, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'U') goto yy211;
- if(yych != 'u') goto yy53;
+ if(yych == 'D') goto yy211;
+ if(yych != 'd') goto yy53;
goto yy211;
yy211:
YYDEBUG(211, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy184;
- if(yych == 'r') goto yy184;
- goto yy53;
+ if(yych == 'A') goto yy212;
+ if(yych != 'a') goto yy53;
+ goto yy212;
yy212:
YYDEBUG(212, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy217;
- if(yych == 'n') goto yy217;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy180;
goto yy53;
yy213:
YYDEBUG(213, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy214;
- if(yych != 'n') goto yy53;
- goto yy214;
+ if(yych == 'Y') goto yy188;
+ if(yych == 'y') goto yy188;
+ goto yy53;
yy214:
YYDEBUG(214, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'U'){
- if(yych == 'S') goto yy176;
- if(yych <= 'T') goto yy172;
- goto yy215;
- } else {
- if(yych <= 's'){
- if(yych <= 'r') goto yy172;
- goto yy176;
- } else {
- if(yych != 'u') goto yy172;
- goto yy215;
- }
- }
+ yych = *++YYCURSOR;
+ if(yych == 'U') goto yy215;
+ if(yych != 'u') goto yy53;
+ goto yy215;
yy215:
YYDEBUG(215, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy216;
- if(yych != 't') goto yy53;
- goto yy216;
+ if(yych == 'R') goto yy188;
+ if(yych == 'r') goto yy188;
+ goto yy53;
yy216:
YYDEBUG(216, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy184;
- if(yych == 'e') goto yy184;
+ if(yych == 'N') goto yy221;
+ if(yych == 'n') goto yy221;
goto yy53;
yy217:
YYDEBUG(217, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'N') goto yy218;
+ if(yych != 'n') goto yy53;
+ goto yy218;
+yy218:
+ YYDEBUG(218, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'T'){
- if(yych == 'D') goto yy218;
- if(yych <= 'S') goto yy172;
+ if(yych <= 'U'){
+ if(yych == 'S') goto yy180;
+ if(yych <= 'T') goto yy176;
goto yy219;
} else {
- if(yych <= 'd'){
- if(yych <= 'c') goto yy172;
- goto yy218;
+ if(yych <= 's'){
+ if(yych <= 'r') goto yy176;
+ goto yy180;
} else {
- if(yych == 't') goto yy219;
- goto yy172;
+ if(yych != 'u') goto yy176;
+ goto yy219;
}
}
-yy218:
- YYDEBUG(218, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy220;
- if(yych == 'a') goto yy220;
- goto yy53;
yy219:
YYDEBUG(219, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy184;
- if(yych == 'h') goto yy184;
- goto yy53;
+ if(yych == 'T') goto yy220;
+ if(yych != 't') goto yy53;
+ goto yy220;
yy220:
YYDEBUG(220, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy176;
+ if(yych == 'E') goto yy188;
+ if(yych == 'e') goto yy188;
goto yy53;
yy221:
YYDEBUG(221, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'N') goto yy232;
- if(yych == 'n') goto yy232;
- goto yy53;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych == 'D') goto yy222;
+ if(yych <= 'S') goto yy176;
+ goto yy223;
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'c') goto yy176;
+ goto yy222;
+ } else {
+ if(yych == 't') goto yy223;
+ goto yy176;
+ }
+ }
yy222:
YYDEBUG(222, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy227;
- if(yych == 't') goto yy227;
+ if(yych == 'A') goto yy224;
+ if(yych == 'a') goto yy224;
goto yy53;
yy223:
YYDEBUG(223, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy224;
- if(yych != 'c') goto yy53;
- goto yy224;
+ if(yych == 'H') goto yy188;
+ if(yych == 'h') goto yy188;
+ goto yy53;
yy224:
YYDEBUG(224, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'S'){
- if(yych == 'O') goto yy225;
- if(yych <= 'R') goto yy172;
- goto yy176;
- } else {
- if(yych <= 'o'){
- if(yych <= 'n') goto yy172;
- goto yy225;
- } else {
- if(yych == 's') goto yy176;
- goto yy172;
- }
- }
+ yych = *++YYCURSOR;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy180;
+ goto yy53;
yy225:
YYDEBUG(225, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy226;
- if(yych != 'n') goto yy53;
- goto yy226;
+ if(yych == 'N') goto yy236;
+ if(yych == 'n') goto yy236;
+ goto yy53;
yy226:
YYDEBUG(226, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy184;
- if(yych == 'd') goto yy184;
+ if(yych == 'T') goto yy231;
+ if(yych == 't') goto yy231;
goto yy53;
yy227:
YYDEBUG(227, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'U') goto yy228;
- if(yych != 'u') goto yy172;
+ yych = *++YYCURSOR;
+ if(yych == 'C') goto yy228;
+ if(yych != 'c') goto yy53;
goto yy228;
yy228:
YYDEBUG(228, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy229;
- if(yych != 'r') goto yy53;
- goto yy229;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'S'){
+ if(yych == 'O') goto yy229;
+ if(yych <= 'R') goto yy176;
+ goto yy180;
+ } else {
+ if(yych <= 'o'){
+ if(yych <= 'n') goto yy176;
+ goto yy229;
+ } else {
+ if(yych == 's') goto yy180;
+ goto yy176;
+ }
+ }
yy229:
YYDEBUG(229, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy230;
- if(yych != 'd') goto yy53;
+ if(yych == 'N') goto yy230;
+ if(yych != 'n') goto yy53;
goto yy230;
yy230:
YYDEBUG(230, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy231;
- if(yych != 'a') goto yy53;
- goto yy231;
+ if(yych == 'D') goto yy188;
+ if(yych == 'd') goto yy188;
+ goto yy53;
yy231:
YYDEBUG(231, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy176;
- goto yy53;
-yy232:
- YYDEBUG(232, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'D') goto yy233;
- if(yych != 'd') goto yy172;
+ if(yych == 'U') goto yy232;
+ if(yych != 'u') goto yy176;
+ goto yy232;
+yy232:
+ YYDEBUG(232, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'R') goto yy233;
+ if(yych != 'r') goto yy53;
goto yy233;
yy233:
YYDEBUG(233, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy234;
- if(yych != 'a') goto yy53;
+ if(yych == 'D') goto yy234;
+ if(yych != 'd') goto yy53;
goto yy234;
yy234:
YYDEBUG(234, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy176;
- goto yy53;
+ if(yych == 'A') goto yy235;
+ if(yych != 'a') goto yy53;
+ goto yy235;
yy235:
YYDEBUG(235, *YYCURSOR);
- yyaccept = 1;
+ yych = *++YYCURSOR;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy180;
+ goto yy53;
+yy236:
+ YYDEBUG(236, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych == 'D') goto yy237;
+ if(yych != 'd') goto yy176;
+ goto yy237;
+yy237:
+ YYDEBUG(237, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'A') goto yy238;
+ if(yych != 'a') goto yy53;
+ goto yy238;
+yy238:
+ YYDEBUG(238, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy180;
+ goto yy53;
+yy239:
+ YYDEBUG(239, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy154;
+ goto yy158;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy236;
- if(yych <= 'z') goto yy137;
+ if(yych == 'e') goto yy240;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy236:
- YYDEBUG(236, *YYCURSOR);
- yyaccept = 1;
+yy240:
+ YYDEBUG(240, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'V'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'U') goto yy135;
- goto yy155;
+ goto yy159;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'v') goto yy237;
- if(yych <= 'z') goto yy142;
+ if(yych == 'v') goto yy241;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy237:
- YYDEBUG(237, *YYCURSOR);
- yyaccept = 1;
+yy241:
+ YYDEBUG(241, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'I'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'H') goto yy3;
- goto yy156;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'H') goto yy136;
+ goto yy160;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'i') goto yy238;
- if(yych <= 'z') goto yy143;
+ if(yych == 'i') goto yy242;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy238:
- YYDEBUG(238, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'O') goto yy157;
- if(yych != 'o') goto yy144;
- goto yy239;
-yy239:
- YYDEBUG(239, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'U') goto yy158;
- if(yych != 'u') goto yy144;
- goto yy240;
-yy240:
- YYDEBUG(240, *YYCURSOR);
+yy242:
+ YYDEBUG(242, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'O'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'N') goto yy137;
+ goto yy161;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'o') goto yy243;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy243:
+ YYDEBUG(243, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'T') goto yy3;
+ goto yy162;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'u') goto yy244;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy244:
+ YYDEBUG(244, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
if(yych <= '/'){
if(yych <= '.') goto yy53;
- goto yy138;
+ goto yy140;
} else {
- if(yych == 'S') goto yy159;
+ if(yych == 'S') goto yy163;
goto yy53;
}
} else {
if(yych <= 'r'){
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- goto yy143;
+ goto yy147;
} else {
- if(yych <= 's') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych <= 's') goto yy245;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
}
-yy241:
- YYDEBUG(241, *YYCURSOR);
+yy245:
+ YYDEBUG(245, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'h'){
if(yych <= '`'){
if(yych <= '/'){
- if(yych <= '.') goto yy160;
- goto yy138;
+ if(yych <= '.') goto yy164;
+ goto yy140;
} else {
- if(yych == '_') goto yy138;
- goto yy160;
+ if(yych == '_') goto yy140;
+ goto yy164;
}
} else {
if(yych <= 'e'){
- if(yych == 'd') goto yy245;
- goto yy143;
+ if(yych == 'd') goto yy249;
+ goto yy147;
} else {
- if(yych <= 'f') goto yy247;
- if(yych <= 'g') goto yy143;
- goto yy244;
+ if(yych <= 'f') goto yy251;
+ if(yych <= 'g') goto yy147;
+ goto yy248;
}
}
} else {
if(yych <= 't'){
if(yych <= 'm'){
- if(yych <= 'l') goto yy143;
- goto yy243;
+ if(yych <= 'l') goto yy147;
+ goto yy247;
} else {
- if(yych <= 'r') goto yy143;
- if(yych >= 't') goto yy249;
- goto yy242;
+ if(yych <= 'r') goto yy147;
+ if(yych >= 't') goto yy253;
+ goto yy246;
}
} else {
if(yych <= 'x'){
- if(yych == 'w') goto yy246;
- goto yy143;
+ if(yych == 'w') goto yy250;
+ goto yy147;
} else {
- if(yych <= 'y') goto yy248;
- if(yych <= 'z') goto yy143;
- goto yy160;
+ if(yych <= 'y') goto yy252;
+ if(yych <= 'z') goto yy147;
+ goto yy164;
}
}
}
-yy242:
- YYDEBUG(242, *YYCURSOR);
+yy246:
+ YYDEBUG(246, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= 'D'){
- if(yych == 'A') goto yy222;
- goto yy144;
+ if(yych == 'A') goto yy226;
+ goto yy148;
} else {
- if(yych <= 'E') goto yy223;
- if(yych <= 'T') goto yy144;
- goto yy221;
+ if(yych <= 'E') goto yy227;
+ if(yych <= 'T') goto yy148;
+ goto yy225;
}
} else {
if(yych <= 'd'){
- if(yych == 'a') goto yy301;
- goto yy144;
- } else {
- if(yych <= 'e') goto yy302;
- if(yych == 'u') goto yy303;
- goto yy144;
- }
- }
-yy243:
- YYDEBUG(243, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= 'O'){
- if(yych == 'I') goto yy213;
- if(yych <= 'N') goto yy144;
- goto yy212;
- } else {
- if(yych <= 'i'){
- if(yych <= 'h') goto yy144;
- goto yy292;
+ if(yych == 'a') goto yy305;
+ goto yy148;
} else {
- if(yych == 'o') goto yy293;
- goto yy144;
+ if(yych <= 'e') goto yy306;
+ if(yych == 'u') goto yy307;
+ goto yy148;
}
}
-yy244:
- YYDEBUG(244, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'O') goto yy210;
- if(yych == 'o') goto yy290;
- goto yy144;
-yy245:
- YYDEBUG(245, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy209;
- if(yych == 'a') goto yy289;
- goto yy144;
-yy246:
- YYDEBUG(246, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy201;
- if(yych == 'e') goto yy281;
- goto yy144;
yy247:
YYDEBUG(247, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'R'){
- if(yych == 'O') goto yy186;
- if(yych <= 'Q') goto yy144;
- goto yy185;
+ if(yych <= 'O'){
+ if(yych == 'I') goto yy217;
+ if(yych <= 'N') goto yy148;
+ goto yy216;
} else {
- if(yych <= 'o'){
- if(yych <= 'n') goto yy144;
- goto yy265;
+ if(yych <= 'i'){
+ if(yych <= 'h') goto yy148;
+ goto yy296;
} else {
- if(yych == 'r') goto yy266;
- goto yy144;
+ if(yych == 'o') goto yy297;
+ goto yy148;
}
}
yy248:
YYDEBUG(248, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy182;
- if(yych == 'e') goto yy262;
- goto yy144;
+ if(yych == 'O') goto yy214;
+ if(yych == 'o') goto yy294;
+ goto yy148;
yy249:
YYDEBUG(249, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'U'){
- if(yych == 'H') goto yy169;
- if(yych <= 'T') goto yy144;
- goto yy170;
- } else {
- if(yych <= 'h'){
- if(yych <= 'g') goto yy144;
- goto yy250;
- } else {
- if(yych == 'u') goto yy251;
- goto yy144;
- }
- }
+ if(yych == 'A') goto yy213;
+ if(yych == 'a') goto yy293;
+ goto yy148;
yy250:
YYDEBUG(250, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'U') goto yy177;
- if(yych == 'u') goto yy257;
- goto yy144;
+ if(yych == 'E') goto yy205;
+ if(yych == 'e') goto yy285;
+ goto yy148;
yy251:
YYDEBUG(251, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy171;
- if(yych != 'e') goto yy144;
- goto yy252;
-yy252:
- YYDEBUG(252, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
- } else {
- if(yych == 'S') goto yy173;
- goto yy172;
- }
+ if(yych <= 'R'){
+ if(yych == 'O') goto yy190;
+ if(yych <= 'Q') goto yy148;
+ goto yy189;
} else {
- if(yych <= 'r'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
+ if(yych <= 'o'){
+ if(yych <= 'n') goto yy148;
+ goto yy269;
} else {
- if(yych <= 's') goto yy253;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych == 'r') goto yy270;
+ goto yy148;
}
}
+yy252:
+ YYDEBUG(252, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'E') goto yy186;
+ if(yych == 'e') goto yy266;
+ goto yy148;
yy253:
YYDEBUG(253, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy174;
- if(yych != 'd') goto yy144;
- goto yy254;
+ if(yych <= 'U'){
+ if(yych == 'H') goto yy173;
+ if(yych <= 'T') goto yy148;
+ goto yy174;
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'g') goto yy148;
+ goto yy254;
+ } else {
+ if(yych == 'u') goto yy255;
+ goto yy148;
+ }
+ }
yy254:
YYDEBUG(254, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy175;
- if(yych != 'a') goto yy144;
- goto yy255;
+ if(yych == 'U') goto yy181;
+ if(yych == 'u') goto yy261;
+ goto yy148;
yy255:
YYDEBUG(255, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych != 'y') goto yy144;
+ if(yych == 'E') goto yy175;
+ if(yych != 'e') goto yy148;
goto yy256;
yy256:
YYDEBUG(256, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy138;
- goto yy172;
- } else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- if(yych <= 'z') goto yy143;
- goto yy172;
- }
-yy257:
- YYDEBUG(257, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '^'){
if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
+ if(yych <= '.') goto yy176;
+ goto yy140;
} else {
- if(yych == 'R') goto yy178;
- goto yy172;
+ if(yych == 'S') goto yy177;
+ goto yy176;
}
} else {
- if(yych <= 'q'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
+ if(yych <= 'r'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
} else {
- if(yych <= 'r') goto yy258;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych <= 's') goto yy257;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
+yy257:
+ YYDEBUG(257, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'D') goto yy178;
+ if(yych != 'd') goto yy148;
+ goto yy258;
yy258:
YYDEBUG(258, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy179;
- if(yych != 's') goto yy144;
+ if(yych == 'A') goto yy179;
+ if(yych != 'a') goto yy148;
goto yy259;
yy259:
YYDEBUG(259, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy180;
- if(yych != 'd') goto yy144;
+ if(yych == 'Y') goto yy180;
+ if(yych != 'y') goto yy148;
goto yy260;
yy260:
YYDEBUG(260, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy181;
- if(yych != 'a') goto yy144;
- goto yy261;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '^'){
+ if(yych == '/') goto yy140;
+ goto yy176;
+ } else {
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
+ }
yy261:
YYDEBUG(261, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy256;
- goto yy144;
-yy262:
- YYDEBUG(262, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy183;
- if(yych != 'a') goto yy144;
- goto yy263;
-yy263:
- YYDEBUG(263, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy184;
- if(yych != 'r') goto yy144;
- goto yy264;
-yy264:
- YYDEBUG(264, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
+ if(yych <= '.') goto yy176;
+ goto yy140;
} else {
- if(yych == 'S') goto yy176;
- goto yy172;
+ if(yych == 'R') goto yy182;
+ goto yy176;
}
} else {
- if(yych <= 'r'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
+ if(yych <= 'q'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
} else {
- if(yych <= 's') goto yy256;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych <= 'r') goto yy262;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
+yy262:
+ YYDEBUG(262, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'S') goto yy183;
+ if(yych != 's') goto yy148;
+ goto yy263;
+yy263:
+ YYDEBUG(263, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'D') goto yy184;
+ if(yych != 'd') goto yy148;
+ goto yy264;
+yy264:
+ YYDEBUG(264, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'A') goto yy185;
+ if(yych != 'a') goto yy148;
+ goto yy265;
yy265:
YYDEBUG(265, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy187;
- if(yych == 'r') goto yy270;
- goto yy144;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy260;
+ goto yy148;
yy266:
YYDEBUG(266, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy198;
- if(yych != 'i') goto yy144;
+ if(yych == 'A') goto yy187;
+ if(yych != 'a') goto yy148;
goto yy267;
yy267:
YYDEBUG(267, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'R') goto yy188;
+ if(yych != 'r') goto yy148;
+ goto yy268;
+yy268:
+ YYDEBUG(268, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
+ if(yych <= '.') goto yy176;
+ goto yy140;
} else {
- if(yych == 'D') goto yy199;
- goto yy172;
+ if(yych == 'S') goto yy180;
+ goto yy176;
}
} else {
- if(yych <= 'c'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
+ if(yych <= 'r'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
} else {
- if(yych <= 'd') goto yy268;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych <= 's') goto yy260;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
-yy268:
- YYDEBUG(268, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy200;
- if(yych != 'a') goto yy144;
- goto yy269;
yy269:
YYDEBUG(269, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy256;
- goto yy144;
+ if(yych == 'R') goto yy191;
+ if(yych == 'r') goto yy274;
+ goto yy148;
yy270:
YYDEBUG(270, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy188;
- if(yych != 't') goto yy144;
+ if(yych == 'I') goto yy202;
+ if(yych != 'i') goto yy148;
goto yy271;
yy271:
YYDEBUG(271, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= 'N'){
- if(yych == 'H') goto yy190;
- if(yych <= 'M') goto yy144;
- goto yy189;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '^'){
+ if(yych <= '/'){
+ if(yych <= '.') goto yy176;
+ goto yy140;
+ } else {
+ if(yych == 'D') goto yy203;
+ goto yy176;
+ }
} else {
- if(yych <= 'h'){
- if(yych <= 'g') goto yy144;
- goto yy273;
+ if(yych <= 'c'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
} else {
- if(yych != 'n') goto yy144;
- goto yy272;
+ if(yych <= 'd') goto yy272;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
yy272:
YYDEBUG(272, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy195;
- if(yych == 'i') goto yy278;
- goto yy144;
+ if(yych == 'A') goto yy204;
+ if(yych != 'a') goto yy148;
+ goto yy273;
yy273:
YYDEBUG(273, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy191;
- if(yych != 'n') goto yy144;
- goto yy274;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy260;
+ goto yy148;
yy274:
YYDEBUG(274, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy192;
- if(yych != 'i') goto yy144;
+ if(yych == 'T') goto yy192;
+ if(yych != 't') goto yy148;
goto yy275;
yy275:
YYDEBUG(275, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy193;
- if(yych != 'g') goto yy144;
- goto yy276;
+ if(yych <= 'N'){
+ if(yych == 'H') goto yy194;
+ if(yych <= 'M') goto yy148;
+ goto yy193;
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'g') goto yy148;
+ goto yy277;
+ } else {
+ if(yych != 'n') goto yy148;
+ goto yy276;
+ }
+ }
yy276:
YYDEBUG(276, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy194;
- if(yych != 'h') goto yy144;
- goto yy277;
+ if(yych == 'I') goto yy199;
+ if(yych == 'i') goto yy282;
+ goto yy148;
yy277:
YYDEBUG(277, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy184;
- if(yych == 't') goto yy264;
- goto yy144;
+ if(yych == 'N') goto yy195;
+ if(yych != 'n') goto yy148;
+ goto yy278;
yy278:
YYDEBUG(278, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy196;
- if(yych != 'g') goto yy144;
+ if(yych == 'I') goto yy196;
+ if(yych != 'i') goto yy148;
goto yy279;
yy279:
YYDEBUG(279, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy197;
- if(yych != 'h') goto yy144;
+ if(yych == 'G') goto yy197;
+ if(yych != 'g') goto yy148;
goto yy280;
yy280:
YYDEBUG(280, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy184;
- if(yych == 't') goto yy264;
- goto yy144;
+ if(yych == 'H') goto yy198;
+ if(yych != 'h') goto yy148;
+ goto yy281;
yy281:
YYDEBUG(281, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'E'){
- if(yych <= 'C') goto yy144;
- if(yych <= 'D') goto yy203;
- goto yy202;
- } else {
- if(yych <= 'c') goto yy144;
- if(yych <= 'd') goto yy283;
- if(yych >= 'f') goto yy144;
- goto yy282;
- }
+ if(yych == 'T') goto yy188;
+ if(yych == 't') goto yy268;
+ goto yy148;
yy282:
YYDEBUG(282, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'K') goto yy184;
- if(yych == 'k') goto yy264;
- goto yy144;
+ if(yych == 'G') goto yy200;
+ if(yych != 'g') goto yy148;
+ goto yy283;
yy283:
YYDEBUG(283, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
- } else {
- if(yych == 'N') goto yy204;
- goto yy172;
- }
- } else {
- if(yych <= 'm'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
- } else {
- if(yych <= 'n') goto yy284;
- if(yych <= 'z') goto yy143;
- goto yy172;
- }
- }
+ yych = *++YYCURSOR;
+ if(yych == 'H') goto yy201;
+ if(yych != 'h') goto yy148;
+ goto yy284;
yy284:
YYDEBUG(284, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy205;
- if(yych != 'e') goto yy144;
- goto yy285;
+ if(yych == 'T') goto yy188;
+ if(yych == 't') goto yy268;
+ goto yy148;
yy285:
YYDEBUG(285, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy206;
- if(yych != 's') goto yy144;
- goto yy286;
+ if(yych <= 'E'){
+ if(yych <= 'C') goto yy148;
+ if(yych <= 'D') goto yy207;
+ goto yy206;
+ } else {
+ if(yych <= 'c') goto yy148;
+ if(yych <= 'd') goto yy287;
+ if(yych >= 'f') goto yy148;
+ goto yy286;
+ }
yy286:
YYDEBUG(286, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy207;
- if(yych != 'd') goto yy144;
- goto yy287;
+ if(yych == 'K') goto yy188;
+ if(yych == 'k') goto yy268;
+ goto yy148;
yy287:
YYDEBUG(287, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy208;
- if(yych != 'a') goto yy144;
- goto yy288;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '^'){
+ if(yych <= '/'){
+ if(yych <= '.') goto yy176;
+ goto yy140;
+ } else {
+ if(yych == 'N') goto yy208;
+ goto yy176;
+ }
+ } else {
+ if(yych <= 'm'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
+ } else {
+ if(yych <= 'n') goto yy288;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
+ }
+ }
yy288:
YYDEBUG(288, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy256;
- goto yy144;
+ if(yych == 'E') goto yy209;
+ if(yych != 'e') goto yy148;
+ goto yy289;
yy289:
YYDEBUG(289, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy184;
- if(yych == 'y') goto yy264;
- goto yy144;
+ if(yych == 'S') goto yy210;
+ if(yych != 's') goto yy148;
+ goto yy290;
yy290:
YYDEBUG(290, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'U') goto yy211;
- if(yych != 'u') goto yy144;
+ if(yych == 'D') goto yy211;
+ if(yych != 'd') goto yy148;
goto yy291;
yy291:
YYDEBUG(291, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy184;
- if(yych == 'r') goto yy264;
- goto yy144;
+ if(yych == 'A') goto yy212;
+ if(yych != 'a') goto yy148;
+ goto yy292;
yy292:
YYDEBUG(292, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy214;
- if(yych == 'n') goto yy298;
- goto yy144;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy260;
+ goto yy148;
yy293:
YYDEBUG(293, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy217;
- if(yych != 'n') goto yy144;
- goto yy294;
+ if(yych == 'Y') goto yy188;
+ if(yych == 'y') goto yy268;
+ goto yy148;
yy294:
YYDEBUG(294, *YYCURSOR);
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '^'){
- if(yych <= 'C'){
- if(yych == '/') goto yy138;
- goto yy172;
- } else {
- if(yych <= 'D') goto yy218;
- if(yych == 'T') goto yy219;
- goto yy172;
- }
- } else {
- if(yych <= 'd'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- if(yych <= 'c') goto yy143;
- goto yy295;
- } else {
- if(yych == 't') goto yy296;
- if(yych <= 'z') goto yy143;
- goto yy172;
- }
- }
+ yych = *++YYCURSOR;
+ if(yych == 'U') goto yy215;
+ if(yych != 'u') goto yy148;
+ goto yy295;
yy295:
YYDEBUG(295, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy220;
- if(yych == 'a') goto yy297;
- goto yy144;
+ if(yych == 'R') goto yy188;
+ if(yych == 'r') goto yy268;
+ goto yy148;
yy296:
YYDEBUG(296, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy184;
- if(yych == 'h') goto yy264;
- goto yy144;
+ if(yych == 'N') goto yy218;
+ if(yych == 'n') goto yy302;
+ goto yy148;
yy297:
YYDEBUG(297, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy256;
- goto yy144;
+ if(yych == 'N') goto yy221;
+ if(yych != 'n') goto yy148;
+ goto yy298;
yy298:
YYDEBUG(298, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych <= 'R'){
- if(yych == '/') goto yy138;
- goto yy172;
+ if(yych <= 'C'){
+ if(yych == '/') goto yy140;
+ goto yy176;
} else {
- if(yych <= 'S') goto yy176;
- if(yych == 'U') goto yy215;
- goto yy172;
+ if(yych <= 'D') goto yy222;
+ if(yych == 'T') goto yy223;
+ goto yy176;
}
} else {
- if(yych <= 's'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- if(yych <= 'r') goto yy143;
- goto yy256;
+ if(yych <= 'd'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ if(yych <= 'c') goto yy147;
+ goto yy299;
} else {
- if(yych == 'u') goto yy299;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych == 't') goto yy300;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
yy299:
YYDEBUG(299, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy216;
- if(yych != 't') goto yy144;
- goto yy300;
+ if(yych == 'A') goto yy224;
+ if(yych == 'a') goto yy301;
+ goto yy148;
yy300:
YYDEBUG(300, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy184;
- if(yych == 'e') goto yy264;
- goto yy144;
+ if(yych == 'H') goto yy188;
+ if(yych == 'h') goto yy268;
+ goto yy148;
yy301:
YYDEBUG(301, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy227;
- if(yych == 't') goto yy310;
- goto yy144;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy260;
+ goto yy148;
yy302:
YYDEBUG(302, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'C') goto yy224;
- if(yych == 'c') goto yy307;
- goto yy144;
-yy303:
- YYDEBUG(303, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'N') goto yy232;
- if(yych != 'n') goto yy144;
- goto yy304;
-yy304:
- YYDEBUG(304, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
+ if(yych <= 'R'){
+ if(yych == '/') goto yy140;
+ goto yy176;
} else {
- if(yych == 'D') goto yy233;
- goto yy172;
+ if(yych <= 'S') goto yy180;
+ if(yych == 'U') goto yy219;
+ goto yy176;
}
} else {
- if(yych <= 'c'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
+ if(yych <= 's'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ if(yych <= 'r') goto yy147;
+ goto yy260;
} else {
- if(yych <= 'd') goto yy305;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych == 'u') goto yy303;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
+yy303:
+ YYDEBUG(303, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'T') goto yy220;
+ if(yych != 't') goto yy148;
+ goto yy304;
+yy304:
+ YYDEBUG(304, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'E') goto yy188;
+ if(yych == 'e') goto yy268;
+ goto yy148;
yy305:
YYDEBUG(305, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy234;
- if(yych != 'a') goto yy144;
- goto yy306;
+ if(yych == 'T') goto yy231;
+ if(yych == 't') goto yy314;
+ goto yy148;
yy306:
YYDEBUG(306, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy256;
- goto yy144;
+ if(yych == 'C') goto yy228;
+ if(yych == 'c') goto yy311;
+ goto yy148;
yy307:
YYDEBUG(307, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'N') goto yy236;
+ if(yych != 'n') goto yy148;
+ goto yy308;
+yy308:
+ YYDEBUG(308, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych <= 'N'){
- if(yych == '/') goto yy138;
- goto yy172;
+ if(yych <= '/'){
+ if(yych <= '.') goto yy176;
+ goto yy140;
} else {
- if(yych <= 'O') goto yy225;
- if(yych == 'S') goto yy176;
- goto yy172;
+ if(yych == 'D') goto yy237;
+ goto yy176;
}
} else {
- if(yych <= 'o'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- if(yych <= 'n') goto yy143;
- goto yy308;
+ if(yych <= 'c'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
} else {
- if(yych == 's') goto yy256;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych <= 'd') goto yy309;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
-yy308:
- YYDEBUG(308, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'N') goto yy226;
- if(yych != 'n') goto yy144;
- goto yy309;
yy309:
YYDEBUG(309, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy184;
- if(yych == 'd') goto yy264;
- goto yy144;
+ if(yych == 'A') goto yy238;
+ if(yych != 'a') goto yy148;
+ goto yy310;
yy310:
YYDEBUG(310, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy260;
+ goto yy148;
+yy311:
+ YYDEBUG(311, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy172;
- goto yy138;
+ if(yych <= 'N'){
+ if(yych == '/') goto yy140;
+ goto yy176;
} else {
- if(yych == 'U') goto yy228;
- goto yy172;
+ if(yych <= 'O') goto yy229;
+ if(yych == 'S') goto yy180;
+ goto yy176;
}
} else {
- if(yych <= 't'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy172;
- goto yy143;
+ if(yych <= 'o'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ if(yych <= 'n') goto yy147;
+ goto yy312;
} else {
- if(yych <= 'u') goto yy311;
- if(yych <= 'z') goto yy143;
- goto yy172;
+ if(yych == 's') goto yy260;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
}
}
-yy311:
- YYDEBUG(311, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy229;
- if(yych != 'r') goto yy144;
- goto yy312;
yy312:
YYDEBUG(312, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy230;
- if(yych != 'd') goto yy144;
+ if(yych == 'N') goto yy230;
+ if(yych != 'n') goto yy148;
goto yy313;
yy313:
YYDEBUG(313, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy231;
- if(yych != 'a') goto yy144;
- goto yy314;
+ if(yych == 'D') goto yy188;
+ if(yych == 'd') goto yy268;
+ goto yy148;
yy314:
YYDEBUG(314, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy176;
- if(yych == 'y') goto yy256;
- goto yy144;
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '^'){
+ if(yych <= '/'){
+ if(yych <= '.') goto yy176;
+ goto yy140;
+ } else {
+ if(yych == 'U') goto yy232;
+ goto yy176;
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy176;
+ goto yy147;
+ } else {
+ if(yych <= 'u') goto yy315;
+ if(yych <= 'z') goto yy147;
+ goto yy176;
+ }
+ }
yy315:
YYDEBUG(315, *YYCURSOR);
yych = *++YYCURSOR;
+ if(yych == 'R') goto yy233;
+ if(yych != 'r') goto yy148;
+ goto yy316;
+yy316:
+ YYDEBUG(316, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'D') goto yy234;
+ if(yych != 'd') goto yy148;
+ goto yy317;
+yy317:
+ YYDEBUG(317, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'A') goto yy235;
+ if(yych != 'a') goto yy148;
+ goto yy318;
+yy318:
+ YYDEBUG(318, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'Y') goto yy180;
+ if(yych == 'y') goto yy260;
+ goto yy148;
+yy319:
+ YYDEBUG(319, *YYCURSOR);
+ yych = *++YYCURSOR;
if(yych <= 'S'){
if(yych <= ')'){
if(yych <= '(') goto yy3;
@@ -4582,7 +5073,7 @@ yy315:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'R') goto yy134;
- goto yy316;
+ goto yy320;
}
} else {
if(yych <= 'r'){
@@ -4590,13 +5081,13 @@ yy315:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 's') goto yy316;
+ if(yych <= 's') goto yy320;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy316:
- YYDEBUG(316, *YYCURSOR);
+yy320:
+ YYDEBUG(320, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -4605,7 +5096,7 @@ yy316:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy317;
+ goto yy321;
}
} else {
if(yych <= 's'){
@@ -4613,83 +5104,469 @@ yy316:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy317;
+ if(yych <= 't') goto yy321;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy317:
- YYDEBUG(317, *YYCURSOR);
- yyaccept = 1;
+yy321:
+ YYDEBUG(321, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy160;
+ case 0x09: case ' ': goto yy163;
case ')': goto yy132;
+ case 'A':
+ case 'B':
+ case 'C': case 'E': case 'G': case 'I':
+ case 'J':
+ case 'K':
+ case 'L': case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R': case 'U':
+ case 'V': case 'X': case 'Z': case 'a':
+ case 'b':
+ case 'c': case 'e': case 'g': case 'i':
+ case 'j':
+ case 'k':
+ case 'l': case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r': case 'u':
+ case 'v': case 'x': case 'z': goto yy136;
+ case 'D': case 'd': goto yy325;
+ case 'F': case 'f': goto yy327;
+ case 'H': case 'h': goto yy324;
+ case 'M': case 'm': goto yy323;
+ case 'S': case 's': goto yy322;
+ case 'T': case 't': goto yy329;
+ case 'W': case 'w': goto yy326;
+ case 'Y': case 'y': goto yy328;
default: goto yy3;
}
-yy318:
- YYDEBUG(318, *YYCURSOR);
- yyaccept = 1;
+yy322:
+ YYDEBUG(322, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'U'){
+ if(yych <= 'A'){
+ if(yych == ')') goto yy132;
+ if(yych <= '@') goto yy3;
+ goto yy340;
+ } else {
+ if(yych == 'E') goto yy341;
+ if(yych <= 'T') goto yy137;
+ goto yy342;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy340;
+ goto yy137;
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'e') goto yy341;
+ goto yy137;
+ } else {
+ if(yych <= 'u') goto yy342;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+ }
+yy323:
+ YYDEBUG(323, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'O'){
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych == 'I') goto yy338;
+ if(yych <= 'N') goto yy137;
+ goto yy339;
+ }
+ } else {
+ if(yych <= 'i'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'h') goto yy137;
+ goto yy338;
+ } else {
+ if(yych == 'o') goto yy339;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy324:
+ YYDEBUG(324, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'O'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'N') goto yy137;
+ goto yy337;
+ }
+ } else {
+ if(yych <= 'n'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'o') goto yy337;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy325:
+ YYDEBUG(325, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'A'){
+ if(yych == ')') goto yy132;
+ if(yych <= '@') goto yy3;
+ goto yy336;
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy336;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy326:
+ YYDEBUG(326, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'E'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy137;
+ goto yy335;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'e') goto yy335;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy327:
+ YYDEBUG(327, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'R'){
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych == 'O') goto yy333;
+ if(yych <= 'Q') goto yy137;
+ goto yy334;
+ }
+ } else {
+ if(yych <= 'o'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'n') goto yy137;
+ goto yy333;
+ } else {
+ if(yych == 'r') goto yy334;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy328:
+ YYDEBUG(328, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'E'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy137;
+ goto yy332;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'e') goto yy332;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy329:
+ YYDEBUG(329, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'U'){
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych == 'H') goto yy330;
+ if(yych <= 'T') goto yy137;
+ goto yy331;
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'g') goto yy137;
+ goto yy330;
+ } else {
+ if(yych == 'u') goto yy331;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy330:
+ YYDEBUG(330, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'T'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'U') goto yy181;
+ if(yych == 'u') goto yy181;
+ goto yy3;
+ }
+yy331:
+ YYDEBUG(331, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'D'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'E') goto yy175;
+ if(yych == 'e') goto yy175;
+ goto yy3;
+ }
+yy332:
+ YYDEBUG(332, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'A') goto yy187;
+ if(yych == 'a') goto yy187;
+ goto yy3;
+ }
+yy333:
+ YYDEBUG(333, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Q'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'R') goto yy191;
+ if(yych == 'r') goto yy191;
+ goto yy3;
+ }
+yy334:
+ YYDEBUG(334, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'H'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'I') goto yy202;
+ if(yych == 'i') goto yy202;
+ goto yy3;
+ }
+yy335:
+ YYDEBUG(335, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych == ')') goto yy132;
+ if(yych <= 'C') goto yy3;
+ goto yy207;
+ } else {
+ if(yych <= 'c'){
+ if(yych <= 'E') goto yy206;
+ goto yy3;
+ } else {
+ if(yych <= 'd') goto yy207;
+ if(yych <= 'e') goto yy206;
+ goto yy3;
+ }
+ }
+yy336:
+ YYDEBUG(336, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'X'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'Y') goto yy188;
+ if(yych == 'y') goto yy188;
+ goto yy3;
+ }
+yy337:
+ YYDEBUG(337, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'U') goto yy215;
+ if(yych == 'u') goto yy215;
+ goto yy3;
+ }
+yy338:
+ YYDEBUG(338, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'M'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'N') goto yy218;
+ if(yych == 'n') goto yy218;
+ goto yy3;
+ }
+yy339:
+ YYDEBUG(339, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'M'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'N') goto yy221;
+ if(yych == 'n') goto yy221;
+ goto yy3;
+ }
+yy340:
+ YYDEBUG(340, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'S'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'T') goto yy231;
+ if(yych == 't') goto yy231;
+ goto yy3;
+ }
+yy341:
+ YYDEBUG(341, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'B'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'C') goto yy228;
+ if(yych == 'c') goto yy228;
+ goto yy3;
+ }
+yy342:
+ YYDEBUG(342, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'M'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'N') goto yy236;
+ if(yych == 'n') goto yy236;
+ goto yy3;
+ }
+yy343:
+ YYDEBUG(343, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'R') goto yy134;
- goto yy316;
+ goto yy320;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 's') goto yy319;
- if(yych <= 'z') goto yy137;
+ if(yych == 's') goto yy344;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy319:
- YYDEBUG(319, *YYCURSOR);
- yyaccept = 1;
+yy344:
+ YYDEBUG(344, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy317;
+ goto yy321;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy320;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy345;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy320:
- YYDEBUG(320, *YYCURSOR);
- yyaccept = 1;
+yy345:
+ YYDEBUG(345, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': goto yy160;
+ case 0x09: case ' ': goto yy163;
case ')': goto yy132;
- case '/': case '_': goto yy138;
+ case '/': case '_': goto yy140;
+ case 'A':
+ case 'B':
+ case 'C': case 'E': case 'G': case 'I':
+ case 'J':
+ case 'K':
+ case 'L': case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R': case 'U':
+ case 'V': case 'X': case 'Z': goto yy136;
+ case 'D': goto yy325;
+ case 'F': goto yy327;
+ case 'H': goto yy324;
+ case 'M': goto yy323;
+ case 'S': goto yy322;
+ case 'T': goto yy329;
+ case 'W': goto yy326;
+ case 'Y': goto yy328;
case 'a':
case 'b':
case 'c': case 'e': case 'g': case 'i':
@@ -4700,19 +5577,585 @@ yy320:
case 'p':
case 'q':
case 'r': case 'u':
- case 'v': case 'x': case 'z': goto yy143;
- case 'd': goto yy245;
- case 'f': goto yy247;
- case 'h': goto yy244;
- case 'm': goto yy243;
- case 's': goto yy242;
- case 't': goto yy249;
- case 'w': goto yy246;
- case 'y': goto yy248;
+ case 'v': case 'x': case 'z': goto yy145;
+ case 'd': goto yy349;
+ case 'f': goto yy351;
+ case 'h': goto yy348;
+ case 'm': goto yy347;
+ case 's': goto yy346;
+ case 't': goto yy353;
+ case 'w': goto yy350;
+ case 'y': goto yy352;
default: goto yy3;
}
-yy321:
- YYDEBUG(321, *YYCURSOR);
+yy346:
+ YYDEBUG(346, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'D'){
+ if(yych <= 'A') goto yy340;
+ goto yy137;
+ } else {
+ if(yych <= 'E') goto yy341;
+ if(yych <= 'T') goto yy137;
+ goto yy342;
+ }
+ }
+ } else {
+ if(yych <= 'a'){
+ if(yych <= '^'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy364;
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'e') goto yy365;
+ goto yy146;
+ } else {
+ if(yych <= 'u') goto yy366;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+ }
+yy347:
+ YYDEBUG(347, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'O'){
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= 'H'){
+ if(yych <= '@') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'I') goto yy338;
+ if(yych <= 'N') goto yy137;
+ goto yy339;
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= '^'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy146;
+ }
+ } else {
+ if(yych <= 'n'){
+ if(yych <= 'i') goto yy362;
+ goto yy146;
+ } else {
+ if(yych <= 'o') goto yy363;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+ }
+yy348:
+ YYDEBUG(348, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'O'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'N') goto yy137;
+ goto yy337;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'o') goto yy361;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy349:
+ YYDEBUG(349, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy336;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy360;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy350:
+ YYDEBUG(350, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy137;
+ goto yy335;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy359;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy351:
+ YYDEBUG(351, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= 'N'){
+ if(yych <= '@') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'O') goto yy333;
+ if(yych <= 'Q') goto yy137;
+ goto yy334;
+ }
+ }
+ } else {
+ if(yych <= 'n'){
+ if(yych <= '^'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy146;
+ }
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'o') goto yy357;
+ goto yy146;
+ } else {
+ if(yych <= 'r') goto yy358;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+ }
+yy352:
+ YYDEBUG(352, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy137;
+ goto yy332;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy356;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy353:
+ YYDEBUG(353, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= 'G'){
+ if(yych <= '@') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'H') goto yy330;
+ if(yych <= 'T') goto yy137;
+ goto yy331;
+ }
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= '^'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy146;
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych >= 'i') goto yy146;
+ goto yy354;
+ } else {
+ if(yych <= 'u') goto yy355;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+ }
+yy354:
+ YYDEBUG(354, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'T') goto yy3;
+ goto yy181;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'u') goto yy261;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy355:
+ YYDEBUG(355, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'D') goto yy3;
+ goto yy175;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy256;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy356:
+ YYDEBUG(356, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy187;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy267;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy357:
+ YYDEBUG(357, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'Q') goto yy3;
+ goto yy191;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'r') goto yy274;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy358:
+ YYDEBUG(358, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'I'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'H') goto yy3;
+ goto yy202;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'i') goto yy271;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy359:
+ YYDEBUG(359, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'C') goto yy3;
+ if(yych <= 'D') goto yy207;
+ goto yy206;
+ }
+ } else {
+ if(yych <= 'c'){
+ if(yych == '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy147;
+ } else {
+ if(yych <= 'd') goto yy287;
+ if(yych <= 'e') goto yy286;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy360:
+ YYDEBUG(360, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'X') goto yy3;
+ goto yy188;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'y') goto yy268;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy361:
+ YYDEBUG(361, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'T') goto yy3;
+ goto yy215;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'u') goto yy295;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy362:
+ YYDEBUG(362, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'N'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'M') goto yy3;
+ goto yy218;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'n') goto yy302;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy363:
+ YYDEBUG(363, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'N'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'M') goto yy3;
+ goto yy221;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'n') goto yy298;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy364:
+ YYDEBUG(364, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'S') goto yy3;
+ goto yy231;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 't') goto yy314;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy365:
+ YYDEBUG(365, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'C'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'B') goto yy3;
+ goto yy228;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'c') goto yy311;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy366:
+ YYDEBUG(366, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'N'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'M') goto yy3;
+ goto yy236;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'n') goto yy308;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy367:
+ YYDEBUG(367, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'G'){
if(yych <= ')'){
@@ -4721,7 +6164,7 @@ yy321:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'F') goto yy134;
- goto yy328;
+ goto yy374;
}
} else {
if(yych <= 'f'){
@@ -4729,13 +6172,13 @@ yy321:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'g') goto yy328;
+ if(yych <= 'g') goto yy374;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy322:
- YYDEBUG(322, *YYCURSOR);
+yy368:
+ YYDEBUG(368, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych <= ')'){
@@ -4744,7 +6187,7 @@ yy322:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy323;
+ goto yy369;
}
} else {
if(yych <= 'd'){
@@ -4752,13 +6195,13 @@ yy322:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'e') goto yy323;
+ if(yych <= 'e') goto yy369;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy323:
- YYDEBUG(323, *YYCURSOR);
+yy369:
+ YYDEBUG(369, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'V'){
if(yych <= ')'){
@@ -4767,7 +6210,7 @@ yy323:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'U') goto yy135;
- goto yy324;
+ goto yy370;
}
} else {
if(yych <= 'u'){
@@ -4775,43 +6218,77 @@ yy323:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'v') goto yy324;
+ if(yych <= 'v') goto yy370;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy324:
- YYDEBUG(324, *YYCURSOR);
- yyaccept = 1;
+yy370:
+ YYDEBUG(370, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'E'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy136;
+ goto yy371;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'e') goto yy371;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy371:
+ YYDEBUG(371, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'N'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'M') goto yy137;
+ goto yy372;
+ }
+ } else {
+ if(yych <= 'm'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'n') goto yy372;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy372:
+ YYDEBUG(372, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'D'){
+ if(yych <= 'S'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'E') goto yy325;
- if(yych != 'e') goto yy3;
- goto yy325;
+ if(yych <= 'T') goto yy373;
+ if(yych != 't') goto yy3;
+ goto yy373;
}
-yy325:
- YYDEBUG(325, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'N') goto yy326;
- if(yych != 'n') goto yy53;
- goto yy326;
-yy326:
- YYDEBUG(326, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy327;
- if(yych != 't') goto yy53;
- goto yy327;
-yy327:
- YYDEBUG(327, *YYCURSOR);
+yy373:
+ YYDEBUG(373, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy159;
- if(yych == 'h') goto yy159;
+ if(yych == 'H') goto yy163;
+ if(yych == 'h') goto yy163;
goto yy53;
-yy328:
- YYDEBUG(328, *YYCURSOR);
+yy374:
+ YYDEBUG(374, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'H'){
if(yych <= ')'){
@@ -4820,7 +6297,7 @@ yy328:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'G') goto yy135;
- goto yy329;
+ goto yy375;
}
} else {
if(yych <= 'g'){
@@ -4828,205 +6305,708 @@ yy328:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'h') goto yy329;
+ if(yych <= 'h') goto yy375;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy329:
- YYDEBUG(329, *YYCURSOR);
- yyaccept = 1;
+yy375:
+ YYDEBUG(375, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy136;
+ goto yy376;
+ }
+ } else {
+ if(yych <= 's'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 't') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy376:
+ YYDEBUG(376, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'S'){
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case 0x09: case ' ': goto yy163;
+ case ')': goto yy132;
+ case 'A':
+ case 'B':
+ case 'C': case 'E': case 'G': case 'I':
+ case 'J':
+ case 'K':
+ case 'L': case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R': case 'U':
+ case 'V': case 'X': case 'Z': case 'a':
+ case 'b':
+ case 'c': case 'e': case 'g': case 'i':
+ case 'j':
+ case 'k':
+ case 'l': case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r': case 'u':
+ case 'v': case 'x': case 'z': goto yy137;
+ case 'D': case 'd': goto yy377;
+ case 'F': case 'f': goto yy378;
+ case 'H': case 'h': goto yy379;
+ case 'M': case 'm': goto yy380;
+ case 'S': case 's': goto yy381;
+ case 'T': case 't': goto yy382;
+ case 'W': case 'w': goto yy383;
+ case 'Y': case 'y': goto yy384;
+ default: goto yy3;
+ }
+yy377:
+ YYDEBUG(377, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'T') goto yy159;
- if(yych == 't') goto yy159;
+ if(yych <= 'A') goto yy213;
+ if(yych == 'a') goto yy213;
goto yy3;
}
-yy330:
- YYDEBUG(330, *YYCURSOR);
- yyaccept = 1;
+yy378:
+ YYDEBUG(378, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Q'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == 'O') goto yy190;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'o'){
+ if(yych <= 'R') goto yy189;
+ if(yych <= 'n') goto yy3;
+ goto yy190;
+ } else {
+ if(yych == 'r') goto yy189;
+ goto yy3;
+ }
+ }
+yy379:
+ YYDEBUG(379, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'N'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'O') goto yy214;
+ if(yych == 'o') goto yy214;
+ goto yy3;
+ }
+yy380:
+ YYDEBUG(380, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'N'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == 'I') goto yy217;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'i'){
+ if(yych <= 'O') goto yy216;
+ if(yych <= 'h') goto yy3;
+ goto yy217;
+ } else {
+ if(yych == 'o') goto yy216;
+ goto yy3;
+ }
+ }
+yy381:
+ YYDEBUG(381, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'A') goto yy226;
+ if(yych == 'E') goto yy227;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'U') goto yy225;
+ if(yych == 'a') goto yy226;
+ goto yy3;
+ } else {
+ if(yych <= 'e') goto yy227;
+ if(yych == 'u') goto yy225;
+ goto yy3;
+ }
+ }
+yy382:
+ YYDEBUG(382, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == 'H') goto yy173;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'U') goto yy174;
+ if(yych <= 'g') goto yy3;
+ goto yy173;
+ } else {
+ if(yych == 'u') goto yy174;
+ goto yy3;
+ }
+ }
+yy383:
+ YYDEBUG(383, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'E') goto yy205;
+ if(yych == 'e') goto yy205;
+ goto yy3;
+ }
+yy384:
+ YYDEBUG(384, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'E') goto yy186;
+ if(yych == 'e') goto yy186;
+ goto yy3;
+ }
+yy385:
+ YYDEBUG(385, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'G'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'F') goto yy134;
- goto yy328;
+ goto yy374;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'g') goto yy337;
- if(yych <= 'z') goto yy137;
+ if(yych == 'g') goto yy392;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy331:
- YYDEBUG(331, *YYCURSOR);
- yyaccept = 1;
+yy386:
+ YYDEBUG(386, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy323;
+ goto yy369;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy332;
- if(yych <= 'z') goto yy137;
+ if(yych == 'e') goto yy387;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy332:
- YYDEBUG(332, *YYCURSOR);
- yyaccept = 1;
+yy387:
+ YYDEBUG(387, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'V'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'U') goto yy135;
- goto yy324;
+ goto yy370;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'v') goto yy333;
- if(yych <= 'z') goto yy142;
+ if(yych == 'v') goto yy388;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy333:
- YYDEBUG(333, *YYCURSOR);
- yyaccept = 1;
+yy388:
+ YYDEBUG(388, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'D') goto yy3;
- goto yy325;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy136;
+ goto yy371;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy334;
- if(yych <= 'z') goto yy143;
+ if(yych == 'e') goto yy389;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy334:
- YYDEBUG(334, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'N') goto yy326;
- if(yych != 'n') goto yy144;
- goto yy335;
-yy335:
- YYDEBUG(335, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy327;
- if(yych != 't') goto yy144;
- goto yy336;
-yy336:
- YYDEBUG(336, *YYCURSOR);
+yy389:
+ YYDEBUG(389, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'N'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'M') goto yy137;
+ goto yy372;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'n') goto yy390;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy390:
+ YYDEBUG(390, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'S') goto yy3;
+ goto yy373;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 't') goto yy391;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy391:
+ YYDEBUG(391, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
if(yych <= '/'){
if(yych <= '.') goto yy53;
- goto yy138;
+ goto yy140;
} else {
- if(yych == 'H') goto yy159;
+ if(yych == 'H') goto yy163;
goto yy53;
}
} else {
if(yych <= 'g'){
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- goto yy143;
+ goto yy147;
} else {
- if(yych <= 'h') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'h') goto yy245;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
}
-yy337:
- YYDEBUG(337, *YYCURSOR);
- yyaccept = 1;
+yy392:
+ YYDEBUG(392, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'G') goto yy135;
- goto yy329;
+ goto yy375;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'h') goto yy338;
- if(yych <= 'z') goto yy142;
+ if(yych == 'h') goto yy393;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy338:
- YYDEBUG(338, *YYCURSOR);
- yyaccept = 1;
+yy393:
+ YYDEBUG(393, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'S') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 't') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy339:
- YYDEBUG(339, *YYCURSOR);
+yy394:
+ YYDEBUG(394, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case 0x09: case ' ': goto yy163;
+ case ')': goto yy132;
+ case '/': case '_': goto yy140;
+ case 'A':
+ case 'B':
+ case 'C': case 'E': case 'G': case 'I':
+ case 'J':
+ case 'K':
+ case 'L': case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R': case 'U':
+ case 'V': case 'X': case 'Z': goto yy137;
+ case 'D': goto yy377;
+ case 'F': goto yy378;
+ case 'H': goto yy379;
+ case 'M': goto yy380;
+ case 'S': goto yy381;
+ case 'T': goto yy382;
+ case 'W': goto yy383;
+ case 'Y': goto yy384;
+ case 'a':
+ case 'b':
+ case 'c': case 'e': case 'g': case 'i':
+ case 'j':
+ case 'k':
+ case 'l': case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r': case 'u':
+ case 'v': case 'x': case 'z': goto yy146;
+ case 'd': goto yy395;
+ case 'f': goto yy396;
+ case 'h': goto yy397;
+ case 'm': goto yy398;
+ case 's': goto yy399;
+ case 't': goto yy400;
+ case 'w': goto yy401;
+ case 'y': goto yy402;
+ default: goto yy3;
+ }
+yy395:
+ YYDEBUG(395, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy213;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy293;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy396:
+ YYDEBUG(396, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy3;
+ goto yy140;
+ } else {
+ if(yych == 'O') goto yy190;
+ if(yych <= 'Q') goto yy3;
+ goto yy189;
+ }
+ } else {
+ if(yych <= 'n'){
+ if(yych == '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy147;
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'o') goto yy269;
+ goto yy147;
+ } else {
+ if(yych <= 'r') goto yy270;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+ }
+yy397:
+ YYDEBUG(397, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'O'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'N') goto yy3;
+ goto yy214;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'o') goto yy294;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy398:
+ YYDEBUG(398, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'O'){
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy3;
+ goto yy140;
+ } else {
+ if(yych == 'I') goto yy217;
+ if(yych <= 'N') goto yy3;
+ goto yy216;
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych == '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy147;
+ } else {
+ if(yych <= 'n'){
+ if(yych <= 'i') goto yy296;
+ goto yy147;
+ } else {
+ if(yych <= 'o') goto yy297;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+ }
+yy399:
+ YYDEBUG(399, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy3;
+ }
+ } else {
+ if(yych <= 'D'){
+ if(yych <= 'A') goto yy226;
+ goto yy3;
+ } else {
+ if(yych <= 'E') goto yy227;
+ if(yych <= 'T') goto yy3;
+ goto yy225;
+ }
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= '_'){
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy305;
+ goto yy147;
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'e') goto yy306;
+ goto yy147;
+ } else {
+ if(yych <= 'u') goto yy307;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+ }
+yy400:
+ YYDEBUG(400, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'U'){
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy3;
+ goto yy140;
+ } else {
+ if(yych == 'H') goto yy173;
+ if(yych <= 'T') goto yy3;
+ goto yy174;
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych == '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ goto yy147;
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'h') goto yy254;
+ goto yy147;
+ } else {
+ if(yych <= 'u') goto yy255;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+ }
+yy401:
+ YYDEBUG(401, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'D') goto yy3;
+ goto yy205;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy285;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy402:
+ YYDEBUG(402, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'D') goto yy3;
+ goto yy186;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy266;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy403:
+ YYDEBUG(403, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'D'){
if(yych <= ')'){
@@ -5035,7 +7015,7 @@ yy339:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'C') goto yy134;
- goto yy340;
+ goto yy404;
}
} else {
if(yych <= 'c'){
@@ -5043,38 +7023,38 @@ yy339:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'd') goto yy340;
+ if(yych <= 'd') goto yy404;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy340:
- YYDEBUG(340, *YYCURSOR);
+yy404:
+ YYDEBUG(404, *YYCURSOR);
++YYCURSOR;
if((yych = *YYCURSOR) <= 'N'){
if(yych <= ')'){
if(yych >= ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'M') goto yy135;
- goto yy342;
+ goto yy406;
}
} else {
if(yych <= 'm'){
if(yych <= 'Z') goto yy135;
if(yych >= 'a') goto yy135;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= 'n') goto yy342;
+ if(yych <= 'n') goto yy406;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy341:
- YYDEBUG(341, *YYCURSOR);
+yy405:
+ YYDEBUG(405, *YYCURSOR);
-#line 1306 "ext/date/lib/parse_date.re"
+#line 1336 "ext/date/lib/parse_date.re"
{
const timelib_relunit* relunit;
DEBUG_OUTPUT("daytext");
@@ -5089,159 +7069,231 @@ yy341:
TIMELIB_DEINIT;
return TIMELIB_WEEKDAY;
}
-#line 4396 "ext/date/lib/parse_date.c"
-yy342:
- YYDEBUG(342, *YYCURSOR);
- yyaccept = 1;
+#line 6251 "ext/date/lib/parse_date.c"
+yy406:
+ YYDEBUG(406, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'E'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy136;
+ goto yy407;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'e') goto yy407;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy407:
+ YYDEBUG(407, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'S'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'R') goto yy137;
+ goto yy408;
+ }
+ } else {
+ if(yych <= 'r'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 's') goto yy408;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy408:
+ YYDEBUG(408, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'D'){
+ if(yych <= 'C'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'E') goto yy343;
- if(yych != 'e') goto yy3;
- goto yy343;
+ if(yych <= 'D') goto yy409;
+ if(yych != 'd') goto yy3;
+ goto yy409;
}
-yy343:
- YYDEBUG(343, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'S') goto yy344;
- if(yych != 's') goto yy53;
- goto yy344;
-yy344:
- YYDEBUG(344, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy345;
- if(yych != 'd') goto yy53;
- goto yy345;
-yy345:
- YYDEBUG(345, *YYCURSOR);
+yy409:
+ YYDEBUG(409, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy346;
+ if(yych == 'A') goto yy410;
if(yych != 'a') goto yy53;
- goto yy346;
-yy346:
- YYDEBUG(346, *YYCURSOR);
+ goto yy410;
+yy410:
+ YYDEBUG(410, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
+ if(yych == 'Y') goto yy411;
if(yych != 'y') goto yy53;
- goto yy347;
-yy347:
- YYDEBUG(347, *YYCURSOR);
+ goto yy411;
+yy411:
+ YYDEBUG(411, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy341;
-yy348:
- YYDEBUG(348, *YYCURSOR);
- yyaccept = 1;
+ goto yy405;
+yy412:
+ YYDEBUG(412, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'C') goto yy134;
- goto yy340;
+ goto yy404;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'd') goto yy349;
- if(yych <= 'z') goto yy137;
+ if(yych == 'd') goto yy413;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy349:
- YYDEBUG(349, *YYCURSOR);
+yy413:
+ YYDEBUG(413, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'M') goto yy135;
- goto yy342;
+ goto yy406;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 'n') goto yy350;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 'n') goto yy414;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy350:
- YYDEBUG(350, *YYCURSOR);
- yyaccept = 1;
+yy414:
+ YYDEBUG(414, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'D') goto yy3;
- goto yy343;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy136;
+ goto yy407;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy351;
- if(yych <= 'z') goto yy143;
+ if(yych == 'e') goto yy415;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy351:
- YYDEBUG(351, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'S') goto yy344;
- if(yych != 's') goto yy144;
- goto yy352;
-yy352:
- YYDEBUG(352, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy345;
- if(yych != 'd') goto yy144;
- goto yy353;
-yy353:
- YYDEBUG(353, *YYCURSOR);
+yy415:
+ YYDEBUG(415, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'S'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'R') goto yy137;
+ goto yy408;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 's') goto yy416;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy416:
+ YYDEBUG(416, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'C') goto yy3;
+ goto yy409;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'd') goto yy417;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy417:
+ YYDEBUG(417, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy346;
- if(yych != 'a') goto yy144;
- goto yy354;
-yy354:
- YYDEBUG(354, *YYCURSOR);
+ if(yych == 'A') goto yy410;
+ if(yych != 'a') goto yy148;
+ goto yy418;
+yy418:
+ YYDEBUG(418, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych != 'y') goto yy144;
- goto yy355;
-yy355:
- YYDEBUG(355, *YYCURSOR);
+ if(yych == 'Y') goto yy411;
+ if(yych != 'y') goto yy148;
+ goto yy419;
+yy419:
+ YYDEBUG(419, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy138;
- goto yy341;
+ if(yych == '/') goto yy140;
+ goto yy405;
} else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy341;
- if(yych <= 'z') goto yy143;
- goto yy341;
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy405;
+ if(yych <= 'z') goto yy147;
+ goto yy405;
}
-yy356:
- YYDEBUG(356, *YYCURSOR);
+yy420:
+ YYDEBUG(420, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'C'){
if(yych <= ')'){
@@ -5250,7 +7302,7 @@ yy356:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'B') goto yy134;
- goto yy357;
+ goto yy421;
}
} else {
if(yych <= 'b'){
@@ -5258,100 +7310,106 @@ yy356:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'c') goto yy357;
+ if(yych <= 'c') goto yy421;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy357:
- YYDEBUG(357, *YYCURSOR);
- yyaccept = 1;
+yy421:
+ YYDEBUG(421, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych == 'E') goto yy366;
- goto yy135;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych == 'E') goto yy429;
+ goto yy135;
+ }
} else {
if(yych <= 'd'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'e') goto yy366;
+ if(yych <= 'e') goto yy429;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy358:
- YYDEBUG(358, *YYCURSOR);
+yy422:
+ YYDEBUG(422, *YYCURSOR);
++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 17) YYFILL(17);
+ if((YYLIMIT - YYCURSOR) < 20) YYFILL(20);
yych = *YYCURSOR;
- goto yy359;
-yy359:
- YYDEBUG(359, *YYCURSOR);
+ goto yy423;
+yy423:
+ YYDEBUG(423, *YYCURSOR);
if(yybm[0+yych] & 64) {
- goto yy358;
+ goto yy422;
}
if(yych <= '/') goto yy53;
- if(yych <= '2') goto yy362;
- if(yych <= '3') goto yy364;
- if(yych <= '9') goto yy365;
+ if(yych <= '2') goto yy425;
+ if(yych <= '3') goto yy427;
+ if(yych <= '9') goto yy428;
goto yy53;
-yy360:
- YYDEBUG(360, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 0x1F) goto yy3;
- if(yych == '/') goto yy3;
- if(yych <= '9') goto yy359;
- goto yy3;
-yy361:
- YYDEBUG(361, *YYCURSOR);
+yy424:
+ YYDEBUG(424, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy359;
- if(yych <= '0') goto yy440;
- if(yych <= '2') goto yy441;
- if(yych <= '3') goto yy442;
- goto yy359;
-yy362:
- YYDEBUG(362, *YYCURSOR);
- ++YYCURSOR;
- if((yych = *YYCURSOR) <= 'm'){
+ if(yych <= '/') goto yy423;
+ if(yych <= '0') goto yy511;
+ if(yych <= '2') goto yy512;
+ if(yych <= '3') goto yy513;
+ goto yy423;
+yy425:
+ YYDEBUG(425, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy378;
- goto yy422;
+ if(yych <= '/') goto yy441;
+ goto yy493;
} else {
- if(yych <= '2') goto yy439;
- if(yych <= '9') goto yy422;
- goto yy378;
+ if(yych <= '2') goto yy510;
+ if(yych <= '9') goto yy493;
+ goto yy441;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy374;
- if(yych <= 'q') goto yy378;
- goto yy375;
+ if(yych <= 'n') goto yy437;
+ if(yych <= 'q') goto yy441;
+ goto yy438;
} else {
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy363:
- YYDEBUG(363, *YYCURSOR);
+yy426:
+ YYDEBUG(426, *YYCURSOR);
-#line 1125 "ext/date/lib/parse_date.re"
+#line 1151 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("datetextual | datenoyear");
TIMELIB_INIT;
@@ -5363,218 +7421,256 @@ yy363:
TIMELIB_DEINIT;
return TIMELIB_DATE_TEXT;
}
-#line 4626 "ext/date/lib/parse_date.c"
-yy364:
- YYDEBUG(364, *YYCURSOR);
- yych = *++YYCURSOR;
+#line 6561 "ext/date/lib/parse_date.c"
+yy427:
+ YYDEBUG(427, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy378;
- goto yy422;
+ if(yych <= '/') goto yy441;
+ goto yy493;
} else {
- if(yych <= '2') goto yy371;
- if(yych <= '9') goto yy372;
- goto yy378;
+ if(yych <= '2') goto yy434;
+ if(yych <= '9') goto yy435;
+ goto yy441;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy374;
- if(yych <= 'q') goto yy378;
- goto yy375;
+ if(yych <= 'n') goto yy437;
+ if(yych <= 'q') goto yy441;
+ goto yy438;
} else {
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy365:
- YYDEBUG(365, *YYCURSOR);
- yych = *++YYCURSOR;
+yy428:
+ YYDEBUG(428, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy378;
- goto yy370;
+ if(yych <= '/') goto yy441;
+ goto yy433;
} else {
- if(yych <= '2') goto yy371;
- if(yych <= '9') goto yy372;
- goto yy378;
+ if(yych <= '2') goto yy434;
+ if(yych <= '9') goto yy435;
+ goto yy441;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy374;
- if(yych <= 'q') goto yy378;
- goto yy375;
+ if(yych <= 'n') goto yy437;
+ if(yych <= 'q') goto yy441;
+ goto yy438;
} else {
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy366:
- YYDEBUG(366, *YYCURSOR);
- yyaccept = 1;
+yy429:
+ YYDEBUG(429, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'M'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'L') goto yy136;
+ goto yy430;
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'm') goto yy430;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy430:
+ YYDEBUG(430, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'B'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'A') goto yy137;
+ goto yy431;
+ }
+ } else {
+ if(yych <= 'a'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'b') goto yy431;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy431:
+ YYDEBUG(431, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'L'){
+ if(yych <= 'D'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'M') goto yy367;
- if(yych != 'm') goto yy3;
- goto yy367;
+ if(yych <= 'E') goto yy432;
+ if(yych != 'e') goto yy3;
+ goto yy432;
}
-yy367:
- YYDEBUG(367, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'B') goto yy368;
- if(yych != 'b') goto yy53;
- goto yy368;
-yy368:
- YYDEBUG(368, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy369;
- if(yych != 'e') goto yy53;
- goto yy369;
-yy369:
- YYDEBUG(369, *YYCURSOR);
+yy432:
+ YYDEBUG(432, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy358;
- if(yych == 'r') goto yy358;
+ if(yych == 'R') goto yy422;
+ if(yych == 'r') goto yy422;
goto yy53;
-yy370:
- YYDEBUG(370, *YYCURSOR);
+yy433:
+ YYDEBUG(433, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '9') goto yy421;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy492;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy371:
- YYDEBUG(371, *YYCURSOR);
+yy434:
+ YYDEBUG(434, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '3') goto yy421;
- if(yych <= '9') goto yy418;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '3') goto yy492;
+ if(yych <= '9') goto yy489;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy372:
- YYDEBUG(372, *YYCURSOR);
+yy435:
+ YYDEBUG(435, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '9') goto yy418;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy489;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy373:
- YYDEBUG(373, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy378;
-yy374:
- YYDEBUG(374, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy378;
-yy375:
- YYDEBUG(375, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy378;
-yy376:
- YYDEBUG(376, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy378;
-yy377:
- YYDEBUG(377, *YYCURSOR);
- ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 14) YYFILL(14);
+yy436:
+ YYDEBUG(436, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy441;
+yy437:
+ YYDEBUG(437, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy441;
+yy438:
+ YYDEBUG(438, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy441;
+yy439:
+ YYDEBUG(439, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy441;
+yy440:
+ YYDEBUG(440, *YYCURSOR);
+ yyaccept = 6;
+ YYMARKER = ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 17) YYFILL(17);
yych = *YYCURSOR;
- goto yy378;
-yy378:
- YYDEBUG(378, *YYCURSOR);
+ goto yy441;
+yy441:
+ YYDEBUG(441, *YYCURSOR);
if(yybm[0+yych] & 128) {
- goto yy377;
+ goto yy440;
}
- if(yych <= '/') goto yy363;
- if(yych <= '1') goto yy379;
- if(yych <= '2') goto yy380;
- if(yych <= '9') goto yy381;
- goto yy363;
-yy379:
- YYDEBUG(379, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych <= '2'){
+ if(yych <= '/') goto yy426;
+ if(yych <= '1') goto yy482;
+ goto yy483;
} else {
- if(yych <= '9') goto yy417;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy484;
+ if(yych != 'T') goto yy426;
+ goto yy442;
}
-yy380:
- YYDEBUG(380, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
+yy442:
+ YYDEBUG(442, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '1') goto yy443;
+ if(yych <= '2') goto yy444;
+ if(yych <= '9') goto yy445;
+ goto yy53;
+yy443:
+ YYDEBUG(443, *YYCURSOR);
+ yych = *++YYCURSOR;
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy53;
} else {
- if(yych <= '3') goto yy417;
- if(yych <= '9') goto yy382;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy445;
+ if(yych <= ':') goto yy446;
+ goto yy53;
}
-yy381:
- YYDEBUG(381, *YYCURSOR);
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
+yy444:
+ YYDEBUG(444, *YYCURSOR);
+ yych = *++YYCURSOR;
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy53;
} else {
- if(yych <= '9') goto yy382;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '3') goto yy445;
+ if(yych == ':') goto yy446;
+ goto yy53;
}
-yy382:
- YYDEBUG(382, *YYCURSOR);
+yy445:
+ YYDEBUG(445, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy363;
- if(yych <= '9') goto yy415;
- goto yy363;
-yy383:
- YYDEBUG(383, *YYCURSOR);
+ if(yych == '.') goto yy446;
+ if(yych != ':') goto yy53;
+ goto yy446;
+yy446:
+ YYDEBUG(446, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy384;
- if(yych <= '9') goto yy386;
+ if(yych <= '5') goto yy447;
+ if(yych <= '9') goto yy449;
goto yy53;
-yy384:
- YYDEBUG(384, *YYCURSOR);
+yy447:
+ YYDEBUG(447, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy387;
- goto yy385;
+ if(yych == '.') goto yy450;
+ goto yy448;
} else {
- if(yych <= '9') goto yy386;
- if(yych <= ':') goto yy387;
- goto yy385;
+ if(yych <= '9') goto yy449;
+ if(yych <= ':') goto yy450;
+ goto yy448;
}
-yy385:
- YYDEBUG(385, *YYCURSOR);
+yy448:
+ YYDEBUG(448, *YYCURSOR);
-#line 1350 "ext/date/lib/parse_date.re"
+#line 1383 "ext/date/lib/parse_date.re"
{
int tz_not_found;
DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz");
@@ -5596,356 +7692,473 @@ yy385:
if (*ptr != '\0') {
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
}
TIMELIB_DEINIT;
return TIMELIB_SHORTDATE_WITH_TIME;
}
-#line 4820 "ext/date/lib/parse_date.c"
-yy386:
- YYDEBUG(386, *YYCURSOR);
+#line 6795 "ext/date/lib/parse_date.c"
+yy449:
+ YYDEBUG(449, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy387;
- if(yych != ':') goto yy385;
- goto yy387;
-yy387:
- YYDEBUG(387, *YYCURSOR);
+ if(yych == '.') goto yy450;
+ if(yych != ':') goto yy448;
+ goto yy450;
+yy450:
+ YYDEBUG(450, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy388;
- if(yych <= '6') goto yy389;
- if(yych <= '9') goto yy390;
+ if(yych <= '5') goto yy451;
+ if(yych <= '6') goto yy452;
+ if(yych <= '9') goto yy453;
goto yy53;
-yy388:
- YYDEBUG(388, *YYCURSOR);
+yy451:
+ YYDEBUG(451, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy385;
- if(yych <= '9') goto yy391;
- goto yy385;
-yy389:
- YYDEBUG(389, *YYCURSOR);
+ if(yych <= '/') goto yy448;
+ if(yych <= '9') goto yy454;
+ goto yy448;
+yy452:
+ YYDEBUG(452, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '0') goto yy391;
- goto yy385;
-yy390:
- YYDEBUG(390, *YYCURSOR);
+ if(yych == '0') goto yy454;
+ goto yy448;
+yy453:
+ YYDEBUG(453, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy385;
-yy391:
- YYDEBUG(391, *YYCURSOR);
+ goto yy448;
+yy454:
+ YYDEBUG(454, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '+'){
- if(yych <= '\''){
- if(yych != ' ') goto yy385;
- goto yy392;
+ if(yych <= '*'){
+ if(yych <= 0x1F){
+ if(yych != 0x09) goto yy448;
+ goto yy455;
} else {
- if(yych <= '(') goto yy395;
- if(yych <= '*') goto yy385;
- goto yy394;
+ if(yych <= ' ') goto yy455;
+ if(yych == '(') goto yy458;
+ goto yy448;
}
} else {
if(yych <= '@'){
- if(yych == '-') goto yy394;
- goto yy385;
+ if(yych == ',') goto yy448;
+ if(yych <= '-') goto yy457;
+ goto yy448;
} else {
- if(yych <= 'Z') goto yy396;
- if(yych <= '`') goto yy385;
- if(yych <= 'z') goto yy397;
- goto yy385;
+ if(yych <= 'Z') goto yy459;
+ if(yych <= '`') goto yy448;
+ if(yych <= 'z') goto yy460;
+ goto yy448;
}
}
-yy392:
- YYDEBUG(392, *YYCURSOR);
+yy455:
+ YYDEBUG(455, *YYCURSOR);
++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
+ if((YYLIMIT - YYCURSOR) < 8) YYFILL(8);
yych = *YYCURSOR;
- goto yy393;
-yy393:
- YYDEBUG(393, *YYCURSOR);
- if(yych <= '+'){
- if(yych <= '\''){
- if(yych == ' ') goto yy392;
+ goto yy456;
+yy456:
+ YYDEBUG(456, *YYCURSOR);
+ if(yych <= '*'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy455;
goto yy53;
} else {
- if(yych <= '(') goto yy395;
- if(yych <= '*') goto yy53;
- goto yy394;
+ if(yych <= ' ') goto yy455;
+ if(yych == '(') goto yy458;
+ goto yy53;
}
} else {
if(yych <= '@'){
- if(yych != '-') goto yy53;
- goto yy394;
+ if(yych == ',') goto yy53;
+ if(yych >= '.') goto yy53;
+ goto yy457;
} else {
- if(yych <= 'Z') goto yy396;
+ if(yych <= 'Z') goto yy459;
if(yych <= '`') goto yy53;
- if(yych <= 'z') goto yy397;
+ if(yych <= 'z') goto yy460;
goto yy53;
}
}
-yy394:
- YYDEBUG(394, *YYCURSOR);
+yy457:
+ YYDEBUG(457, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy410;
- if(yych <= '2') goto yy411;
- if(yych <= '9') goto yy412;
+ if(yych <= '1') goto yy477;
+ if(yych <= '2') goto yy478;
+ if(yych <= '9') goto yy479;
goto yy53;
-yy395:
- YYDEBUG(395, *YYCURSOR);
+yy458:
+ YYDEBUG(458, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@') goto yy53;
- if(yych <= 'Z') goto yy397;
+ if(yych <= 'Z') goto yy460;
if(yych <= '`') goto yy53;
- if(yych <= 'z') goto yy397;
+ if(yych <= 'z') goto yy460;
goto yy53;
-yy396:
- YYDEBUG(396, *YYCURSOR);
+yy459:
+ YYDEBUG(459, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@'){
- if(yych == ')') goto yy390;
- goto yy385;
+ if(yych == ')') goto yy453;
+ goto yy448;
} else {
- if(yych <= 'Z') goto yy398;
- if(yych <= '`') goto yy385;
- if(yych <= 'z') goto yy401;
- goto yy385;
+ if(yych <= 'Z') goto yy461;
+ if(yych <= '`') goto yy448;
+ if(yych <= 'z') goto yy466;
+ goto yy448;
}
-yy397:
- YYDEBUG(397, *YYCURSOR);
+yy460:
+ YYDEBUG(460, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@'){
- if(yych == ')') goto yy390;
- goto yy385;
+ if(yych == ')') goto yy453;
+ goto yy448;
} else {
- if(yych <= 'Z') goto yy398;
- if(yych <= '`') goto yy385;
- if(yych >= '{') goto yy385;
- goto yy398;
+ if(yych <= 'Z') goto yy461;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy461;
}
-yy398:
- YYDEBUG(398, *YYCURSOR);
+yy461:
+ YYDEBUG(461, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@'){
- if(yych == ')') goto yy390;
- goto yy385;
+ if(yych == ')') goto yy453;
+ goto yy448;
} else {
- if(yych <= 'Z') goto yy399;
- if(yych <= '`') goto yy385;
- if(yych >= '{') goto yy385;
- goto yy399;
+ if(yych <= 'Z') goto yy462;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy462;
}
-yy399:
- YYDEBUG(399, *YYCURSOR);
+yy462:
+ YYDEBUG(462, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '@'){
- if(yych == ')') goto yy390;
- goto yy385;
+ if(yych == ')') goto yy453;
+ goto yy448;
} else {
- if(yych <= 'Z') goto yy400;
- if(yych <= '`') goto yy385;
- if(yych >= '{') goto yy385;
- goto yy400;
+ if(yych <= 'Z') goto yy463;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy463;
}
-yy400:
- YYDEBUG(400, *YYCURSOR);
+yy463:
+ YYDEBUG(463, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == ')') goto yy390;
- goto yy385;
-yy401:
- YYDEBUG(401, *YYCURSOR);
+ if(yych <= '@'){
+ if(yych == ')') goto yy453;
+ goto yy448;
+ } else {
+ if(yych <= 'Z') goto yy464;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy464;
+ }
+yy464:
+ YYDEBUG(464, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '@'){
+ if(yych == ')') goto yy453;
+ goto yy448;
+ } else {
+ if(yych <= 'Z') goto yy465;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy465;
+ }
+yy465:
+ YYDEBUG(465, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == ')') goto yy453;
+ goto yy448;
+yy466:
+ YYDEBUG(466, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '@'){
if(yych <= ')'){
- if(yych <= '(') goto yy385;
- goto yy390;
+ if(yych <= '(') goto yy448;
+ goto yy453;
} else {
- if(yych == '/') goto yy403;
- goto yy385;
+ if(yych == '/') goto yy468;
+ goto yy448;
}
} else {
if(yych <= '_'){
- if(yych <= 'Z') goto yy399;
- if(yych <= '^') goto yy385;
- goto yy403;
+ if(yych <= 'Z') goto yy462;
+ if(yych <= '^') goto yy448;
+ goto yy468;
} else {
- if(yych <= '`') goto yy385;
- if(yych >= '{') goto yy385;
- goto yy402;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy467;
}
}
-yy402:
- YYDEBUG(402, *YYCURSOR);
+yy467:
+ YYDEBUG(467, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '@'){
if(yych <= ')'){
- if(yych <= '(') goto yy385;
- goto yy390;
+ if(yych <= '(') goto yy448;
+ goto yy453;
} else {
- if(yych != '/') goto yy385;
- goto yy403;
+ if(yych != '/') goto yy448;
+ goto yy468;
}
} else {
if(yych <= '_'){
- if(yych <= 'Z') goto yy400;
- if(yych <= '^') goto yy385;
- goto yy403;
+ if(yych <= 'Z') goto yy463;
+ if(yych <= '^') goto yy448;
+ goto yy468;
} else {
- if(yych <= '`') goto yy385;
- if(yych <= 'z') goto yy407;
- goto yy385;
+ if(yych <= '`') goto yy448;
+ if(yych <= 'z') goto yy472;
+ goto yy448;
}
}
-yy403:
- YYDEBUG(403, *YYCURSOR);
+yy468:
+ YYDEBUG(468, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yych <= '@') goto yy53;
if(yych >= '[') goto yy53;
- goto yy404;
-yy404:
- YYDEBUG(404, *YYCURSOR);
+ goto yy469;
+yy469:
+ YYDEBUG(469, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yych <= '`') goto yy53;
if(yych >= '{') goto yy53;
- goto yy405;
-yy405:
- YYDEBUG(405, *YYCURSOR);
+ goto yy470;
+yy470:
+ YYDEBUG(470, *YYCURSOR);
yyaccept = 7;
YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy406;
-yy406:
- YYDEBUG(406, *YYCURSOR);
+ goto yy471;
+yy471:
+ YYDEBUG(471, *YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy403;
- goto yy385;
+ if(yych == '/') goto yy468;
+ goto yy448;
} else {
- if(yych <= '_') goto yy403;
- if(yych <= '`') goto yy385;
- if(yych <= 'z') goto yy405;
- goto yy385;
+ if(yych <= '_') goto yy468;
+ if(yych <= '`') goto yy448;
+ if(yych <= 'z') goto yy470;
+ goto yy448;
}
-yy407:
- YYDEBUG(407, *YYCURSOR);
+yy472:
+ YYDEBUG(472, *YYCURSOR);
+ yyaccept = 7;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy448;
+ goto yy453;
+ } else {
+ if(yych == '/') goto yy468;
+ goto yy448;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy464;
+ if(yych <= '^') goto yy448;
+ goto yy468;
+ } else {
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy473;
+ }
+ }
+yy473:
+ YYDEBUG(473, *YYCURSOR);
+ yyaccept = 7;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy448;
+ goto yy453;
+ } else {
+ if(yych == '/') goto yy468;
+ goto yy448;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy465;
+ if(yych <= '^') goto yy448;
+ goto yy468;
+ } else {
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy474;
+ }
+ }
+yy474:
+ YYDEBUG(474, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == ')') goto yy390;
- if(yych <= '.') goto yy385;
- goto yy403;
+ if(yych == ')') goto yy453;
+ if(yych <= '.') goto yy448;
+ goto yy468;
} else {
if(yych <= '_'){
- if(yych <= '^') goto yy385;
- goto yy403;
+ if(yych <= '^') goto yy448;
+ goto yy468;
} else {
- if(yych <= '`') goto yy385;
- if(yych >= '{') goto yy385;
- goto yy408;
+ if(yych <= '`') goto yy448;
+ if(yych >= '{') goto yy448;
+ goto yy475;
}
}
-yy408:
- YYDEBUG(408, *YYCURSOR);
+yy475:
+ YYDEBUG(475, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy409;
-yy409:
- YYDEBUG(409, *YYCURSOR);
+ goto yy476;
+yy476:
+ YYDEBUG(476, *YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy403;
+ if(yych == '/') goto yy468;
goto yy53;
} else {
- if(yych <= '_') goto yy403;
+ if(yych <= '_') goto yy468;
if(yych <= '`') goto yy53;
- if(yych <= 'z') goto yy408;
+ if(yych <= 'z') goto yy475;
goto yy53;
}
-yy410:
- YYDEBUG(410, *YYCURSOR);
+yy477:
+ YYDEBUG(477, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy385;
- if(yych <= '9') goto yy412;
- if(yych <= ':') goto yy413;
- goto yy385;
-yy411:
- YYDEBUG(411, *YYCURSOR);
+ if(yych <= '/') goto yy448;
+ if(yych <= '9') goto yy479;
+ if(yych <= ':') goto yy480;
+ goto yy448;
+yy478:
+ YYDEBUG(478, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '5'){
- if(yych <= '/') goto yy385;
- if(yych >= '4') goto yy414;
- goto yy412;
+ if(yych <= '/') goto yy448;
+ if(yych >= '4') goto yy481;
+ goto yy479;
} else {
- if(yych <= '9') goto yy390;
- if(yych <= ':') goto yy413;
- goto yy385;
+ if(yych <= '9') goto yy453;
+ if(yych <= ':') goto yy480;
+ goto yy448;
}
-yy412:
- YYDEBUG(412, *YYCURSOR);
+yy479:
+ YYDEBUG(479, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy385;
- if(yych <= '5') goto yy414;
- if(yych <= '9') goto yy390;
- if(yych >= ';') goto yy385;
- goto yy413;
-yy413:
- YYDEBUG(413, *YYCURSOR);
+ if(yych <= '/') goto yy448;
+ if(yych <= '5') goto yy481;
+ if(yych <= '9') goto yy453;
+ if(yych >= ';') goto yy448;
+ goto yy480;
+yy480:
+ YYDEBUG(480, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy385;
- if(yych <= '5') goto yy414;
- if(yych <= '9') goto yy390;
- goto yy385;
-yy414:
- YYDEBUG(414, *YYCURSOR);
+ if(yych <= '/') goto yy448;
+ if(yych <= '5') goto yy481;
+ if(yych <= '9') goto yy453;
+ goto yy448;
+yy481:
+ YYDEBUG(481, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy385;
- if(yych <= '9') goto yy390;
- goto yy385;
-yy415:
- YYDEBUG(415, *YYCURSOR);
+ if(yych <= '/') goto yy448;
+ if(yych <= '9') goto yy453;
+ goto yy448;
+yy482:
+ YYDEBUG(482, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/'){
+ if(yych == '.') goto yy446;
+ goto yy426;
+ } else {
+ if(yych <= '9') goto yy488;
+ if(yych <= ':') goto yy446;
+ goto yy426;
+ }
+yy483:
+ YYDEBUG(483, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/'){
+ if(yych == '.') goto yy446;
+ goto yy426;
+ } else {
+ if(yych <= '3') goto yy488;
+ if(yych <= '9') goto yy485;
+ if(yych <= ':') goto yy446;
+ goto yy426;
+ }
+yy484:
+ YYDEBUG(484, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/'){
+ if(yych == '.') goto yy446;
+ goto yy426;
+ } else {
+ if(yych <= '9') goto yy485;
+ if(yych <= ':') goto yy446;
+ goto yy426;
+ }
+yy485:
+ YYDEBUG(485, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy363;
- if(yych >= ':') goto yy363;
- goto yy416;
-yy416:
- YYDEBUG(416, *YYCURSOR);
+ if(yych <= '/') goto yy426;
+ if(yych >= ':') goto yy426;
+ goto yy486;
+yy486:
+ YYDEBUG(486, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy363;
-yy417:
- YYDEBUG(417, *YYCURSOR);
+ if(yych <= '/') goto yy426;
+ if(yych >= ':') goto yy426;
+ goto yy487;
+yy487:
+ YYDEBUG(487, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy426;
+yy488:
+ YYDEBUG(488, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '9') goto yy415;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy486;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy418:
- YYDEBUG(418, *YYCURSOR);
+yy489:
+ YYDEBUG(489, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy363;
- if(yych >= ':') goto yy363;
- goto yy419;
-yy419:
- YYDEBUG(419, *YYCURSOR);
+ if(yych <= '/') goto yy426;
+ if(yych >= ':') goto yy426;
+ goto yy490;
+yy490:
+ YYDEBUG(490, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) <= '/') goto yy420;
- if(yych <= '9') goto yy416;
- goto yy420;
-yy420:
- YYDEBUG(420, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '/') goto yy491;
+ if(yych <= '9') goto yy487;
+ goto yy491;
+yy491:
+ YYDEBUG(491, *YYCURSOR);
-#line 1099 "ext/date/lib/parse_date.re"
+#line 1125 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("datenoday");
TIMELIB_INIT;
@@ -5957,380 +8170,393 @@ yy420:
TIMELIB_DEINIT;
return TIMELIB_DATE_NO_DAY;
}
-#line 5106 "ext/date/lib/parse_date.c"
-yy421:
- YYDEBUG(421, *YYCURSOR);
+#line 7180 "ext/date/lib/parse_date.c"
+yy492:
+ YYDEBUG(492, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '9') goto yy419;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy490;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy422:
- YYDEBUG(422, *YYCURSOR);
+yy493:
+ YYDEBUG(493, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= ':'){
if(yych <= '/'){
- if(yych != '.') goto yy378;
- goto yy423;
+ if(yych != '.') goto yy441;
+ goto yy494;
} else {
- if(yych <= '1') goto yy424;
- if(yych <= '2') goto yy425;
- if(yych <= '9') goto yy426;
- goto yy383;
+ if(yych <= '1') goto yy495;
+ if(yych <= '2') goto yy496;
+ if(yych <= '9') goto yy497;
+ goto yy446;
}
} else {
if(yych <= 'q'){
- if(yych == 'n') goto yy374;
- goto yy378;
+ if(yych == 'n') goto yy437;
+ goto yy441;
} else {
- if(yych <= 'r') goto yy375;
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 'r') goto yy438;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy423:
- YYDEBUG(423, *YYCURSOR);
- yych = *++YYCURSOR;
+yy494:
+ YYDEBUG(494, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '2'){
- if(yych <= '/') goto yy378;
- if(yych <= '1') goto yy429;
- goto yy430;
+ if(yych <= '/') goto yy441;
+ if(yych <= '1') goto yy500;
+ goto yy501;
} else {
- if(yych <= '5') goto yy431;
- if(yych <= '9') goto yy432;
- goto yy378;
+ if(yych <= '5') goto yy502;
+ if(yych <= '9') goto yy503;
+ goto yy441;
}
-yy424:
- YYDEBUG(424, *YYCURSOR);
+yy495:
+ YYDEBUG(495, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '9') goto yy428;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy499;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy425:
- YYDEBUG(425, *YYCURSOR);
+yy496:
+ YYDEBUG(496, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '3') goto yy428;
- if(yych <= '9') goto yy427;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '3') goto yy499;
+ if(yych <= '9') goto yy498;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy426:
- YYDEBUG(426, *YYCURSOR);
+yy497:
+ YYDEBUG(497, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy363;
+ if(yych == '.') goto yy446;
+ goto yy426;
} else {
- if(yych <= '9') goto yy427;
- if(yych <= ':') goto yy383;
- goto yy363;
+ if(yych <= '9') goto yy498;
+ if(yych <= ':') goto yy446;
+ goto yy426;
}
-yy427:
- YYDEBUG(427, *YYCURSOR);
+yy498:
+ YYDEBUG(498, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy420;
- if(yych <= '9') goto yy415;
- goto yy420;
-yy428:
- YYDEBUG(428, *YYCURSOR);
+ if(yych <= '/') goto yy491;
+ if(yych <= '9') goto yy486;
+ goto yy491;
+yy499:
+ YYDEBUG(499, *YYCURSOR);
yyaccept = 8;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy383;
- goto yy420;
+ if(yych == '.') goto yy446;
+ goto yy491;
} else {
- if(yych <= '9') goto yy415;
- if(yych <= ':') goto yy383;
- goto yy420;
+ if(yych <= '9') goto yy486;
+ if(yych <= ':') goto yy446;
+ goto yy491;
}
-yy429:
- YYDEBUG(429, *YYCURSOR);
+yy500:
+ YYDEBUG(500, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy433;
- goto yy363;
+ if(yych == '.') goto yy504;
+ goto yy426;
} else {
- if(yych <= '9') goto yy438;
- if(yych <= ':') goto yy433;
- goto yy363;
+ if(yych <= '9') goto yy509;
+ if(yych <= ':') goto yy504;
+ goto yy426;
}
-yy430:
- YYDEBUG(430, *YYCURSOR);
+yy501:
+ YYDEBUG(501, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy433;
- goto yy363;
+ if(yych == '.') goto yy504;
+ goto yy426;
} else {
- if(yych <= '3') goto yy438;
- if(yych <= '9') goto yy437;
- if(yych <= ':') goto yy433;
- goto yy363;
+ if(yych <= '3') goto yy509;
+ if(yych <= '9') goto yy508;
+ if(yych <= ':') goto yy504;
+ goto yy426;
}
-yy431:
- YYDEBUG(431, *YYCURSOR);
+yy502:
+ YYDEBUG(502, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy433;
- goto yy363;
+ if(yych == '.') goto yy504;
+ goto yy426;
} else {
- if(yych <= '9') goto yy437;
- if(yych <= ':') goto yy433;
- goto yy363;
+ if(yych <= '9') goto yy508;
+ if(yych <= ':') goto yy504;
+ goto yy426;
}
-yy432:
- YYDEBUG(432, *YYCURSOR);
+yy503:
+ YYDEBUG(503, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych != '.') goto yy363;
- goto yy433;
+ if(yych != '.') goto yy426;
+ goto yy504;
} else {
- if(yych <= '9') goto yy382;
- if(yych >= ';') goto yy363;
- goto yy433;
+ if(yych <= '9') goto yy485;
+ if(yych >= ';') goto yy426;
+ goto yy504;
}
-yy433:
- YYDEBUG(433, *YYCURSOR);
+yy504:
+ YYDEBUG(504, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy434;
- if(yych <= '6') goto yy435;
- if(yych <= '9') goto yy386;
+ if(yych <= '5') goto yy505;
+ if(yych <= '6') goto yy506;
+ if(yych <= '9') goto yy449;
goto yy53;
-yy434:
- YYDEBUG(434, *YYCURSOR);
+yy505:
+ YYDEBUG(505, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy387;
- goto yy385;
+ if(yych == '.') goto yy450;
+ goto yy448;
} else {
- if(yych <= '9') goto yy436;
- if(yych <= ':') goto yy387;
- goto yy385;
+ if(yych <= '9') goto yy507;
+ if(yych <= ':') goto yy450;
+ goto yy448;
}
-yy435:
- YYDEBUG(435, *YYCURSOR);
+yy506:
+ YYDEBUG(506, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy387;
- goto yy385;
+ if(yych == '.') goto yy450;
+ goto yy448;
} else {
- if(yych <= '0') goto yy391;
- if(yych == ':') goto yy387;
- goto yy385;
+ if(yych <= '0') goto yy454;
+ if(yych == ':') goto yy450;
+ goto yy448;
}
-yy436:
- YYDEBUG(436, *YYCURSOR);
+yy507:
+ YYDEBUG(507, *YYCURSOR);
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '-'){
- if(yych <= '('){
- if(yych == ' ') goto yy392;
- if(yych <= '\'') goto yy385;
- goto yy395;
+ if(yych <= ','){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy455;
+ if(yych <= 0x1F) goto yy448;
+ goto yy455;
} else {
- if(yych == '+') goto yy394;
- if(yych <= ',') goto yy385;
- goto yy394;
+ if(yych <= '('){
+ if(yych <= '\'') goto yy448;
+ goto yy458;
+ } else {
+ if(yych == '+') goto yy457;
+ goto yy448;
+ }
}
} else {
- if(yych <= '@'){
- if(yych <= '.') goto yy387;
- if(yych == ':') goto yy387;
- goto yy385;
+ if(yych <= ':'){
+ if(yych <= '-') goto yy457;
+ if(yych <= '.') goto yy450;
+ if(yych <= '9') goto yy448;
+ goto yy450;
} else {
- if(yych <= 'Z') goto yy396;
- if(yych <= '`') goto yy385;
- if(yych <= 'z') goto yy397;
- goto yy385;
+ if(yych <= 'Z'){
+ if(yych <= '@') goto yy448;
+ goto yy459;
+ } else {
+ if(yych <= '`') goto yy448;
+ if(yych <= 'z') goto yy460;
+ goto yy448;
+ }
}
}
-yy437:
- YYDEBUG(437, *YYCURSOR);
+yy508:
+ YYDEBUG(508, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy387;
- goto yy363;
+ if(yych == '.') goto yy450;
+ goto yy426;
} else {
- if(yych <= '9') goto yy415;
- if(yych <= ':') goto yy387;
- goto yy363;
+ if(yych <= '9') goto yy486;
+ if(yych <= ':') goto yy450;
+ goto yy426;
}
-yy438:
- YYDEBUG(438, *YYCURSOR);
+yy509:
+ YYDEBUG(509, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy433;
- goto yy363;
+ if(yych == '.') goto yy504;
+ goto yy426;
} else {
- if(yych <= '9') goto yy415;
- if(yych <= ':') goto yy433;
- goto yy363;
+ if(yych <= '9') goto yy486;
+ if(yych <= ':') goto yy504;
+ goto yy426;
}
-yy439:
- YYDEBUG(439, *YYCURSOR);
+yy510:
+ YYDEBUG(510, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= ':'){
if(yych <= '/'){
- if(yych == '.') goto yy423;
- goto yy378;
+ if(yych == '.') goto yy494;
+ goto yy441;
} else {
- if(yych <= '1') goto yy424;
- if(yych <= '2') goto yy425;
- if(yych <= '9') goto yy426;
- goto yy383;
+ if(yych <= '1') goto yy495;
+ if(yych <= '2') goto yy496;
+ if(yych <= '9') goto yy497;
+ goto yy446;
}
} else {
if(yych <= 'q'){
- if(yych == 'n') goto yy374;
- goto yy378;
+ if(yych == 'n') goto yy437;
+ goto yy441;
} else {
- if(yych <= 'r') goto yy375;
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 'r') goto yy438;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy440:
- YYDEBUG(440, *YYCURSOR);
- yych = *++YYCURSOR;
+yy511:
+ YYDEBUG(511, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy378;
- if(yych <= '0') goto yy422;
- goto yy443;
+ if(yych <= '/') goto yy441;
+ if(yych <= '0') goto yy493;
+ goto yy514;
} else {
- if(yych <= '2') goto yy450;
- if(yych <= '9') goto yy443;
- goto yy378;
+ if(yych <= '2') goto yy521;
+ if(yych <= '9') goto yy514;
+ goto yy441;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy374;
- if(yych <= 'q') goto yy378;
- goto yy375;
+ if(yych <= 'n') goto yy437;
+ if(yych <= 'q') goto yy441;
+ goto yy438;
} else {
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy441:
- YYDEBUG(441, *YYCURSOR);
- yych = *++YYCURSOR;
+yy512:
+ YYDEBUG(512, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy378;
- goto yy443;
+ if(yych <= '/') goto yy441;
+ goto yy514;
} else {
- if(yych <= '2') goto yy450;
- if(yych <= '9') goto yy443;
- goto yy378;
+ if(yych <= '2') goto yy521;
+ if(yych <= '9') goto yy514;
+ goto yy441;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy374;
- if(yych <= 'q') goto yy378;
- goto yy375;
+ if(yych <= 'n') goto yy437;
+ if(yych <= 'q') goto yy441;
+ goto yy438;
} else {
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy442:
- YYDEBUG(442, *YYCURSOR);
- yych = *++YYCURSOR;
+yy513:
+ YYDEBUG(513, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy378;
- goto yy443;
+ if(yych <= '/') goto yy441;
+ goto yy514;
} else {
- if(yych <= '2') goto yy371;
- if(yych <= '9') goto yy372;
- goto yy378;
+ if(yych <= '2') goto yy434;
+ if(yych <= '9') goto yy435;
+ goto yy441;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy374;
- if(yych <= 'q') goto yy378;
- goto yy375;
+ if(yych <= 'n') goto yy437;
+ if(yych <= 'q') goto yy441;
+ goto yy438;
} else {
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy443:
- YYDEBUG(443, *YYCURSOR);
+yy514:
+ YYDEBUG(514, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '9'){
if(yych <= '.'){
- if(yych <= ',') goto yy378;
- if(yych >= '.') goto yy423;
- goto yy444;
+ if(yych <= ',') goto yy441;
+ if(yych >= '.') goto yy494;
+ goto yy515;
} else {
- if(yych <= '/') goto yy378;
- if(yych <= '1') goto yy424;
- if(yych <= '2') goto yy425;
- goto yy426;
+ if(yych <= '/') goto yy441;
+ if(yych <= '1') goto yy495;
+ if(yych <= '2') goto yy496;
+ goto yy497;
}
} else {
if(yych <= 'q'){
- if(yych <= ':') goto yy383;
- if(yych == 'n') goto yy374;
- goto yy378;
+ if(yych <= ':') goto yy446;
+ if(yych == 'n') goto yy437;
+ goto yy441;
} else {
- if(yych <= 'r') goto yy375;
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 'r') goto yy438;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy444:
- YYDEBUG(444, *YYCURSOR);
+yy515:
+ YYDEBUG(515, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy445;
-yy445:
- YYDEBUG(445, *YYCURSOR);
+ goto yy516;
+yy516:
+ YYDEBUG(516, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) <= '/') goto yy446;
- if(yych <= '9') goto yy447;
- goto yy446;
-yy446:
- YYDEBUG(446, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '/') goto yy517;
+ if(yych <= '9') goto yy518;
+ goto yy517;
+yy517:
+ YYDEBUG(517, *YYCURSOR);
-#line 1237 "ext/date/lib/parse_date.re"
+#line 1265 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("pgtextshort");
TIMELIB_INIT;
@@ -6342,186 +8568,229 @@ yy446:
TIMELIB_DEINIT;
return TIMELIB_PG_TEXT;
}
-#line 5439 "ext/date/lib/parse_date.c"
-yy447:
- YYDEBUG(447, *YYCURSOR);
+#line 7526 "ext/date/lib/parse_date.c"
+yy518:
+ YYDEBUG(518, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy446;
- if(yych >= ':') goto yy446;
- goto yy448;
-yy448:
- YYDEBUG(448, *YYCURSOR);
+ if(yych <= '/') goto yy517;
+ if(yych >= ':') goto yy517;
+ goto yy519;
+yy519:
+ YYDEBUG(519, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy446;
- if(yych >= ':') goto yy446;
- goto yy449;
-yy449:
- YYDEBUG(449, *YYCURSOR);
+ if(yych <= '/') goto yy517;
+ if(yych >= ':') goto yy517;
+ goto yy520;
+yy520:
+ YYDEBUG(520, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy446;
-yy450:
- YYDEBUG(450, *YYCURSOR);
+ goto yy517;
+yy521:
+ YYDEBUG(521, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '9'){
if(yych <= '.'){
- if(yych <= ',') goto yy378;
- if(yych <= '-') goto yy444;
- goto yy423;
+ if(yych <= ',') goto yy441;
+ if(yych <= '-') goto yy515;
+ goto yy494;
} else {
- if(yych <= '/') goto yy378;
- if(yych <= '1') goto yy424;
- if(yych <= '2') goto yy425;
- goto yy426;
+ if(yych <= '/') goto yy441;
+ if(yych <= '1') goto yy495;
+ if(yych <= '2') goto yy496;
+ goto yy497;
}
} else {
if(yych <= 'q'){
- if(yych <= ':') goto yy383;
- if(yych == 'n') goto yy374;
- goto yy378;
+ if(yych <= ':') goto yy446;
+ if(yych == 'n') goto yy437;
+ goto yy441;
} else {
- if(yych <= 'r') goto yy375;
- if(yych <= 's') goto yy373;
- if(yych <= 't') goto yy376;
- goto yy378;
+ if(yych <= 'r') goto yy438;
+ if(yych <= 's') goto yy436;
+ if(yych <= 't') goto yy439;
+ goto yy441;
}
}
-yy451:
- YYDEBUG(451, *YYCURSOR);
- yyaccept = 1;
+yy522:
+ YYDEBUG(522, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'C'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'B') goto yy134;
- goto yy357;
+ goto yy421;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'c') goto yy452;
- if(yych <= 'z') goto yy137;
+ if(yych == 'c') goto yy523;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy452:
- YYDEBUG(452, *YYCURSOR);
- yyaccept = 1;
+yy523:
+ YYDEBUG(523, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'E'){
- if(yych <= 'D') goto yy135;
- goto yy366;
+ if(yych <= '^'){
+ if(yych <= 'D'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'E') goto yy429;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'd'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'e') goto yy453;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'e') goto yy524;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy453:
- YYDEBUG(453, *YYCURSOR);
- yyaccept = 1;
+yy524:
+ YYDEBUG(524, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'M'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'L') goto yy3;
- goto yy367;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'L') goto yy136;
+ goto yy430;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'm') goto yy454;
- if(yych <= 'z') goto yy143;
+ if(yych == 'm') goto yy525;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy454:
- YYDEBUG(454, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'B') goto yy368;
- if(yych != 'b') goto yy144;
- goto yy455;
-yy455:
- YYDEBUG(455, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy369;
- if(yych != 'e') goto yy144;
- goto yy456;
-yy456:
- YYDEBUG(456, *YYCURSOR);
+yy525:
+ YYDEBUG(525, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'B'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'A') goto yy137;
+ goto yy431;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'b') goto yy526;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy526:
+ YYDEBUG(526, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'D') goto yy3;
+ goto yy432;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy527;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy527:
+ YYDEBUG(527, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
if(yych <= '/'){
if(yych <= '.') goto yy53;
- goto yy138;
+ goto yy140;
} else {
- if(yych == 'R') goto yy358;
+ if(yych == 'R') goto yy422;
goto yy53;
}
} else {
if(yych <= 'q'){
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- goto yy143;
+ goto yy147;
} else {
- if(yych <= 'r') goto yy457;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'r') goto yy528;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
}
-yy457:
- YYDEBUG(457, *YYCURSOR);
+yy528:
+ YYDEBUG(528, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
- if(yych == '/') goto yy138;
- goto yy359;
+ if(yych == '/') goto yy140;
+ goto yy423;
} else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy359;
- if(yych <= 'z') goto yy143;
- goto yy359;
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy423;
+ if(yych <= 'z') goto yy147;
+ goto yy423;
}
-yy458:
- YYDEBUG(458, *YYCURSOR);
+yy529:
+ YYDEBUG(529, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -6530,7 +8799,7 @@ yy458:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy134;
- goto yy459;
+ goto yy530;
}
} else {
if(yych <= 's'){
@@ -6538,183 +8807,257 @@ yy458:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 't') goto yy459;
+ if(yych <= 't') goto yy530;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy459:
- YYDEBUG(459, *YYCURSOR);
- yyaccept = 1;
+yy530:
+ YYDEBUG(530, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'O') goto yy135;
- goto yy460;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'O') goto yy135;
+ goto yy531;
+ }
} else {
if(yych <= 'n'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'o') goto yy460;
+ if(yych <= 'o') goto yy531;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy460:
- YYDEBUG(460, *YYCURSOR);
- yyaccept = 1;
+yy531:
+ YYDEBUG(531, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'B'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'A') goto yy136;
+ goto yy532;
+ }
+ } else {
+ if(yych <= 'a'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'b') goto yy532;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy532:
+ YYDEBUG(532, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'E'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy137;
+ goto yy533;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'e') goto yy533;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy533:
+ YYDEBUG(533, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'A'){
+ if(yych <= 'Q'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'B') goto yy461;
- if(yych != 'b') goto yy3;
- goto yy461;
+ if(yych <= 'R') goto yy422;
+ if(yych == 'r') goto yy422;
+ goto yy3;
}
-yy461:
- YYDEBUG(461, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy462;
- if(yych != 'e') goto yy53;
- goto yy462;
-yy462:
- YYDEBUG(462, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy358;
- if(yych == 'r') goto yy358;
- goto yy53;
-yy463:
- YYDEBUG(463, *YYCURSOR);
- yyaccept = 1;
+yy534:
+ YYDEBUG(534, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy134;
- goto yy459;
+ goto yy530;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy464;
- if(yych <= 'z') goto yy137;
+ if(yych == 't') goto yy535;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy464:
- YYDEBUG(464, *YYCURSOR);
- yyaccept = 1;
+yy535:
+ YYDEBUG(535, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'O'){
- if(yych <= 'N') goto yy135;
- goto yy460;
+ if(yych <= '^'){
+ if(yych <= 'N'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'O') goto yy531;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'n'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'o') goto yy465;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'o') goto yy536;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy465:
- YYDEBUG(465, *YYCURSOR);
- yyaccept = 1;
+yy536:
+ YYDEBUG(536, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'B'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'A') goto yy3;
- goto yy461;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'A') goto yy136;
+ goto yy532;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'b') goto yy466;
- if(yych <= 'z') goto yy143;
+ if(yych == 'b') goto yy537;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy466:
- YYDEBUG(466, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy462;
- if(yych != 'e') goto yy144;
- goto yy467;
-yy467:
- YYDEBUG(467, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy537:
+ YYDEBUG(537, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych == 'R') goto yy358;
- goto yy53;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy137;
+ goto yy533;
}
} else {
- if(yych <= 'q'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= 'r') goto yy457;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych == 'e') goto yy538;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
}
}
-yy468:
- YYDEBUG(468, *YYCURSOR);
+yy538:
+ YYDEBUG(538, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'Q') goto yy3;
+ goto yy422;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'r') goto yy528;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy539:
+ YYDEBUG(539, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'V'){
if(yych <= 'B'){
@@ -6723,12 +9066,12 @@ yy468:
goto yy134;
} else {
if(yych <= 'O'){
- if(yych <= 'C') goto yy483;
+ if(yych <= 'C') goto yy555;
goto yy134;
} else {
- if(yych <= 'P') goto yy482;
+ if(yych <= 'P') goto yy554;
if(yych <= 'U') goto yy134;
- goto yy484;
+ goto yy556;
}
}
} else {
@@ -6737,22 +9080,22 @@ yy468:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych == 'c') goto yy483;
+ if(yych == 'c') goto yy555;
goto yy134;
}
} else {
if(yych <= 'u'){
- if(yych <= 'p') goto yy482;
+ if(yych <= 'p') goto yy554;
goto yy134;
} else {
- if(yych <= 'v') goto yy484;
+ if(yych <= 'v') goto yy556;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
}
-yy469:
- YYDEBUG(469, *YYCURSOR);
+yy540:
+ YYDEBUG(540, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -6761,7 +9104,7 @@ yy469:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy134;
- goto yy477;
+ goto yy549;
}
} else {
if(yych <= 's'){
@@ -6769,13 +9112,13 @@ yy469:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 't') goto yy477;
+ if(yych <= 't') goto yy549;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy470:
- YYDEBUG(470, *YYCURSOR);
+yy541:
+ YYDEBUG(541, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'X'){
if(yych <= ')'){
@@ -6784,7 +9127,7 @@ yy470:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'W') goto yy134;
- goto yy475;
+ goto yy547;
}
} else {
if(yych <= 'w'){
@@ -6792,13 +9135,13 @@ yy470:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'x') goto yy475;
+ if(yych <= 'x') goto yy547;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy471:
- YYDEBUG(471, *YYCURSOR);
+yy542:
+ YYDEBUG(542, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -6807,7 +9150,7 @@ yy471:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy472;
+ goto yy543;
}
} else {
if(yych <= 'm'){
@@ -6815,54 +9158,81 @@ yy471:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'n') goto yy472;
+ if(yych <= 'n') goto yy543;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy472:
- YYDEBUG(472, *YYCURSOR);
+yy543:
+ YYDEBUG(543, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'D'){
if(yych <= ')'){
- if(yych <= '(') goto yy341;
+ if(yych <= '(') goto yy405;
goto yy132;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'C') goto yy135;
- goto yy473;
+ goto yy544;
}
} else {
if(yych <= 'c'){
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy341;
+ if(yych <= '`') goto yy405;
goto yy135;
} else {
- if(yych <= 'd') goto yy473;
+ if(yych <= 'd') goto yy544;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy473:
- YYDEBUG(473, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
+yy544:
+ YYDEBUG(544, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'A'){
if(yych == ')') goto yy132;
- goto yy3;
+ if(yych <= '@') goto yy3;
+ goto yy545;
} else {
- if(yych <= 'A') goto yy474;
- if(yych != 'a') goto yy3;
- goto yy474;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy136;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy545;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy474:
- YYDEBUG(474, *YYCURSOR);
+yy545:
+ YYDEBUG(545, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy347;
- goto yy53;
-yy475:
- YYDEBUG(475, *YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy137;
+ goto yy546;
+ }
+ } else {
+ if(yych <= 'x'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'y') goto yy546;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy546:
+ YYDEBUG(546, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == ')') goto yy132;
+ goto yy405;
+yy547:
+ YYDEBUG(547, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -6871,7 +9241,7 @@ yy475:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy476;
+ goto yy548;
}
} else {
if(yych <= 's'){
@@ -6879,108 +9249,166 @@ yy475:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy476;
+ if(yych <= 't') goto yy548;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy476:
- YYDEBUG(476, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'G'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy548:
+ YYDEBUG(548, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'H'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
+ }
} else {
- if(yych <= 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy3;
+ if(yych <= 'g'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'h') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy477:
- YYDEBUG(477, *YYCURSOR);
+yy549:
+ YYDEBUG(549, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= ')'){
- if(yych <= '(') goto yy341;
+ if(yych <= '(') goto yy405;
goto yy132;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'T') goto yy135;
- goto yy478;
+ goto yy550;
}
} else {
if(yych <= 't'){
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy341;
+ if(yych <= '`') goto yy405;
goto yy135;
} else {
- if(yych <= 'u') goto yy478;
+ if(yych <= 'u') goto yy550;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy478:
- YYDEBUG(478, *YYCURSOR);
- yyaccept = 1;
+yy550:
+ YYDEBUG(550, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'R'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy136;
+ goto yy551;
+ }
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'r') goto yy551;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy551:
+ YYDEBUG(551, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'D'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy137;
+ goto yy552;
+ }
+ } else {
+ if(yych <= 'c'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'd') goto yy552;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy552:
+ YYDEBUG(552, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'Q'){
+ if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'R') goto yy479;
- if(yych != 'r') goto yy3;
- goto yy479;
+ if(yych <= 'A') goto yy553;
+ if(yych != 'a') goto yy3;
+ goto yy553;
}
-yy479:
- YYDEBUG(479, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy480;
- if(yych != 'd') goto yy53;
- goto yy480;
-yy480:
- YYDEBUG(480, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy481;
- if(yych != 'a') goto yy53;
- goto yy481;
-yy481:
- YYDEBUG(481, *YYCURSOR);
+yy553:
+ YYDEBUG(553, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy347;
+ if(yych == 'Y') goto yy411;
+ if(yych == 'y') goto yy411;
goto yy53;
-yy482:
- YYDEBUG(482, *YYCURSOR);
- yyaccept = 1;
+yy554:
+ YYDEBUG(554, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych == 'T') goto yy490;
- goto yy135;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych == 'T') goto yy563;
+ goto yy135;
+ }
} else {
if(yych <= 's'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy490;
+ if(yych <= 't') goto yy563;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy483:
- YYDEBUG(483, *YYCURSOR);
+yy555:
+ YYDEBUG(555, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'O'){
if(yych <= ')'){
@@ -6989,7 +9417,7 @@ yy483:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'N') goto yy135;
- goto yy488;
+ goto yy560;
}
} else {
if(yych <= 'n'){
@@ -6997,13 +9425,13 @@ yy483:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'o') goto yy488;
+ if(yych <= 'o') goto yy560;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy484:
- YYDEBUG(484, *YYCURSOR);
+yy556:
+ YYDEBUG(556, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych <= ')'){
@@ -7012,7 +9440,7 @@ yy484:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy135;
- goto yy485;
+ goto yy557;
}
} else {
if(yych <= 'd'){
@@ -7020,104 +9448,270 @@ yy484:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'e') goto yy485;
+ if(yych <= 'e') goto yy557;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy485:
- YYDEBUG(485, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'M'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy557:
+ YYDEBUG(557, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'N'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'M') goto yy136;
+ goto yy558;
+ }
} else {
- if(yych <= 'N') goto yy486;
- if(yych != 'n') goto yy3;
- goto yy486;
+ if(yych <= 'm'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'n') goto yy558;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy486:
- YYDEBUG(486, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy487;
- if(yych != 't') goto yy53;
- goto yy487;
-yy487:
- YYDEBUG(487, *YYCURSOR);
+yy558:
+ YYDEBUG(558, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy53;
-yy488:
- YYDEBUG(488, *YYCURSOR);
- yyaccept = 1;
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy137;
+ goto yy559;
+ }
+ } else {
+ if(yych <= 's'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 't') goto yy559;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy559:
+ YYDEBUG(559, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'M'){
+ if(yych <= 'G'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'N') goto yy489;
- if(yych != 'n') goto yy3;
- goto yy489;
+ if(yych <= 'H') goto yy163;
+ if(yych == 'h') goto yy163;
+ goto yy3;
}
-yy489:
- YYDEBUG(489, *YYCURSOR);
+yy560:
+ YYDEBUG(560, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'D') goto yy159;
- if(yych == 'd') goto yy159;
- goto yy53;
-yy490:
- YYDEBUG(490, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '.'){
+ if(yych <= 'N'){
if(yych <= ')'){
- if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ if(yych <= '(') goto yy3;
+ goto yy132;
} else {
- if(yych == '-') goto yy361;
- goto yy359;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'M') goto yy136;
+ goto yy561;
}
} else {
- if(yych <= 'D'){
- if(yych <= '/') goto yy3;
- if(yych <= '9') goto yy359;
- goto yy3;
+ if(yych <= 'm'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
} else {
- if(yych <= 'E') goto yy491;
- if(yych != 'e') goto yy3;
- goto yy491;
+ if(yych <= 'n') goto yy561;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
}
}
-yy491:
- YYDEBUG(491, *YYCURSOR);
+yy561:
+ YYDEBUG(561, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy492;
- if(yych != 'm') goto yy53;
- goto yy492;
-yy492:
- YYDEBUG(492, *YYCURSOR);
+ if(yych <= 'D'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy137;
+ goto yy562;
+ }
+ } else {
+ if(yych <= 'c'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'd') goto yy562;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy562:
+ YYDEBUG(562, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy164;
+ if(yych <= 0x1F) goto yy3;
+ goto yy164;
+ } else {
+ if(yych == ')') goto yy132;
+ if(yych <= 'C') goto yy3;
+ goto yy164;
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy164;
+ if(yych <= 'G') goto yy3;
+ goto yy164;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy3;
+ goto yy164;
+ } else {
+ if(yych <= 'R') goto yy3;
+ if(yych <= 'T') goto yy164;
+ goto yy3;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy3;
+ if(yych <= 'Y') goto yy164;
+ goto yy3;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy164;
+ goto yy3;
+ } else {
+ if(yych == 'g') goto yy3;
+ goto yy164;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy164;
+ if(yych <= 'r') goto yy3;
+ goto yy164;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy3;
+ goto yy164;
+ } else {
+ if(yych == 'y') goto yy164;
+ goto yy3;
+ }
+ }
+ }
+ }
+yy563:
+ YYDEBUG(563, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
+ } else {
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
+ }
+ } else {
+ if(yych <= 'Z'){
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'E') goto yy136;
+ goto yy564;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'e') goto yy564;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+ }
+yy564:
+ YYDEBUG(564, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy493;
- if(yych != 'b') goto yy53;
- goto yy493;
-yy493:
- YYDEBUG(493, *YYCURSOR);
+ if(yych <= 'M'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'L') goto yy137;
+ goto yy565;
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'm') goto yy565;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy565:
+ YYDEBUG(565, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'B') goto yy566;
+ if(yych != 'b') goto yy3;
+ goto yy566;
+ }
+yy566:
+ YYDEBUG(566, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy494;
+ if(yych == 'E') goto yy567;
if(yych != 'e') goto yy53;
- goto yy494;
-yy494:
- YYDEBUG(494, *YYCURSOR);
+ goto yy567;
+yy567:
+ YYDEBUG(567, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy358;
- if(yych == 'r') goto yy358;
+ if(yych == 'R') goto yy422;
+ if(yych == 'r') goto yy422;
goto yy53;
-yy495:
- YYDEBUG(495, *YYCURSOR);
- yyaccept = 1;
+yy568:
+ YYDEBUG(568, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'V'){
if(yych <= '@'){
@@ -7125,17 +9719,17 @@ yy495:
if(yych <= '(') goto yy3;
goto yy132;
} else {
- if(yych == '/') goto yy138;
+ if(yych == '/') goto yy140;
goto yy3;
}
} else {
if(yych <= 'O'){
- if(yych == 'C') goto yy483;
+ if(yych == 'C') goto yy555;
goto yy134;
} else {
- if(yych <= 'P') goto yy482;
+ if(yych <= 'P') goto yy554;
if(yych <= 'U') goto yy134;
- goto yy484;
+ goto yy556;
}
}
} else {
@@ -7143,524 +9737,717 @@ yy495:
if(yych <= '_'){
if(yych <= 'Z') goto yy134;
if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '`') goto yy3;
- if(yych <= 'b') goto yy137;
- goto yy510;
+ if(yych <= 'b') goto yy139;
+ goto yy584;
}
} else {
if(yych <= 'u'){
- if(yych == 'p') goto yy509;
- goto yy137;
+ if(yych == 'p') goto yy583;
+ goto yy139;
} else {
- if(yych <= 'v') goto yy511;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'v') goto yy585;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy496:
- YYDEBUG(496, *YYCURSOR);
- yyaccept = 1;
+yy569:
+ YYDEBUG(569, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy134;
- goto yy477;
+ goto yy549;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy504;
- if(yych <= 'z') goto yy137;
+ if(yych == 't') goto yy578;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy497:
- YYDEBUG(497, *YYCURSOR);
- yyaccept = 1;
+yy570:
+ YYDEBUG(570, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'X'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'W') goto yy134;
- goto yy475;
+ goto yy547;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'x') goto yy502;
- if(yych <= 'z') goto yy137;
+ if(yych == 'x') goto yy576;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy498:
- YYDEBUG(498, *YYCURSOR);
- yyaccept = 1;
+yy571:
+ YYDEBUG(571, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy472;
+ goto yy543;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy499;
- if(yych <= 'z') goto yy137;
+ if(yych == 'n') goto yy572;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy499:
- YYDEBUG(499, *YYCURSOR);
+yy572:
+ YYDEBUG(572, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'C') goto yy135;
- goto yy473;
+ goto yy544;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 'd') goto yy500;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 'd') goto yy573;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy500:
- YYDEBUG(500, *YYCURSOR);
- yyaccept = 1;
+yy573:
+ YYDEBUG(573, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'A'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
- goto yy474;
+ goto yy545;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy574;
+ if(yych <= 'z') goto yy145;
+ goto yy3;
+ }
+ }
+yy574:
+ YYDEBUG(574, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy137;
+ goto yy546;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych <= 'a') goto yy501;
- if(yych <= 'z') goto yy143;
+ if(yych == 'y') goto yy575;
+ if(yych <= 'z') goto yy146;
goto yy3;
}
}
-yy501:
- YYDEBUG(501, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy355;
- goto yy144;
-yy502:
- YYDEBUG(502, *YYCURSOR);
- yyaccept = 1;
+yy575:
+ YYDEBUG(575, *YYCURSOR);
+ yyaccept = 5;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/'){
+ if(yych == ')') goto yy132;
+ if(yych <= '.') goto yy405;
+ goto yy140;
+ } else {
+ if(yych <= '_'){
+ if(yych <= '^') goto yy405;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy405;
+ if(yych <= 'z') goto yy147;
+ goto yy405;
+ }
+ }
+yy576:
+ YYDEBUG(576, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy476;
+ goto yy548;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy503;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy577;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy503:
- YYDEBUG(503, *YYCURSOR);
- yyaccept = 1;
+yy577:
+ YYDEBUG(577, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'G') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'h') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 'h') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy504:
- YYDEBUG(504, *YYCURSOR);
+yy578:
+ YYDEBUG(578, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'U'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'T') goto yy135;
- goto yy478;
+ goto yy550;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 'u') goto yy505;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 'u') goto yy579;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy505:
- YYDEBUG(505, *YYCURSOR);
- yyaccept = 1;
+yy579:
+ YYDEBUG(579, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'R'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'Q') goto yy3;
- goto yy479;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy136;
+ goto yy551;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'r') goto yy506;
- if(yych <= 'z') goto yy143;
+ if(yych == 'r') goto yy580;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy506:
- YYDEBUG(506, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy480;
- if(yych != 'd') goto yy144;
- goto yy507;
-yy507:
- YYDEBUG(507, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy481;
- if(yych != 'a') goto yy144;
- goto yy508;
-yy508:
- YYDEBUG(508, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy355;
- goto yy144;
-yy509:
- YYDEBUG(509, *YYCURSOR);
- yyaccept = 1;
+yy580:
+ YYDEBUG(580, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= 'D'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy137;
+ goto yy552;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'd') goto yy581;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy581:
+ YYDEBUG(581, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy553;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy582;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy582:
+ YYDEBUG(582, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'Y') goto yy411;
+ if(yych == 'y') goto yy419;
+ goto yy148;
+yy583:
+ YYDEBUG(583, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'T'){
- if(yych <= 'S') goto yy135;
- goto yy490;
+ if(yych <= '^'){
+ if(yych <= 'S'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'T') goto yy563;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 's'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 't') goto yy517;
- if(yych <= 'z') goto yy142;
+ if(yych <= 't') goto yy592;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy510:
- YYDEBUG(510, *YYCURSOR);
- yyaccept = 1;
+yy584:
+ YYDEBUG(584, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'O'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'N') goto yy135;
- goto yy488;
+ goto yy560;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'o') goto yy515;
- if(yych <= 'z') goto yy142;
+ if(yych == 'o') goto yy589;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy511:
- YYDEBUG(511, *YYCURSOR);
- yyaccept = 1;
+yy585:
+ YYDEBUG(585, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy135;
- goto yy485;
+ goto yy557;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy512;
- if(yych <= 'z') goto yy142;
+ if(yych == 'e') goto yy586;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy512:
- YYDEBUG(512, *YYCURSOR);
- yyaccept = 1;
+yy586:
+ YYDEBUG(586, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'M') goto yy3;
- goto yy486;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'M') goto yy136;
+ goto yy558;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy513;
- if(yych <= 'z') goto yy143;
+ if(yych == 'n') goto yy587;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy513:
- YYDEBUG(513, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy487;
- if(yych != 't') goto yy144;
- goto yy514;
-yy514:
- YYDEBUG(514, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy587:
+ YYDEBUG(587, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych == 'H') goto yy159;
- goto yy53;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy137;
+ goto yy559;
}
} else {
- if(yych <= 'g'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= 'h') goto yy241;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych == 't') goto yy588;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
}
}
-yy515:
- YYDEBUG(515, *YYCURSOR);
- yyaccept = 1;
+yy588:
+ YYDEBUG(588, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'H'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'G') goto yy3;
+ goto yy163;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'h') goto yy245;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy589:
+ YYDEBUG(589, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'M') goto yy3;
- goto yy489;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'M') goto yy136;
+ goto yy561;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy516;
- if(yych <= 'z') goto yy143;
+ if(yych == 'n') goto yy590;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy516:
- YYDEBUG(516, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy590:
+ YYDEBUG(590, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych == 'D') goto yy159;
- goto yy53;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy137;
+ goto yy562;
}
} else {
- if(yych <= 'c'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= 'd') goto yy241;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych == 'd') goto yy591;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
}
}
-yy517:
- YYDEBUG(517, *YYCURSOR);
- yyaccept = 1;
+yy591:
+ YYDEBUG(591, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case 0x09: case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
+ case 'T': case 'W': case 'Y': goto yy164;
+ case ')': goto yy132;
+ case '/': case '_': goto yy140;
+ case 'a':
+ case 'b':
+ case 'c': case 'e': case 'g': case 'i':
+ case 'j':
+ case 'k':
+ case 'l': case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r': case 'u':
+ case 'v': case 'x': case 'z': goto yy147;
+ case 'd': goto yy249;
+ case 'f': goto yy251;
+ case 'h': goto yy248;
+ case 'm': goto yy247;
+ case 's': goto yy246;
+ case 't': goto yy253;
+ case 'w': goto yy250;
+ case 'y': goto yy252;
+ default: goto yy3;
+ }
+yy592:
+ YYDEBUG(592, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy138;
- goto yy359;
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych == 'E') goto yy491;
- if(yych <= '^') goto yy3;
- goto yy138;
+ if(yych <= '^'){
+ if(yych <= 'D'){
+ if(yych <= '@') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'E') goto yy564;
+ if(yych <= 'Z') goto yy136;
+ goto yy3;
+ }
} else {
if(yych <= 'd'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy143;
+ goto yy145;
} else {
- if(yych <= 'e') goto yy518;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'e') goto yy593;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
}
-yy518:
- YYDEBUG(518, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'M') goto yy492;
- if(yych != 'm') goto yy144;
- goto yy519;
-yy519:
- YYDEBUG(519, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'B') goto yy493;
- if(yych != 'b') goto yy144;
- goto yy520;
-yy520:
- YYDEBUG(520, *YYCURSOR);
+yy593:
+ YYDEBUG(593, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'M'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'L') goto yy137;
+ goto yy565;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'm') goto yy594;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy594:
+ YYDEBUG(594, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'B'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'A') goto yy3;
+ goto yy566;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'b') goto yy595;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy595:
+ YYDEBUG(595, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy494;
- if(yych != 'e') goto yy144;
- goto yy521;
-yy521:
- YYDEBUG(521, *YYCURSOR);
+ if(yych == 'E') goto yy567;
+ if(yych != 'e') goto yy148;
+ goto yy596;
+yy596:
+ YYDEBUG(596, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
if(yych <= '/'){
if(yych <= '.') goto yy53;
- goto yy138;
+ goto yy140;
} else {
- if(yych == 'R') goto yy358;
+ if(yych == 'R') goto yy422;
goto yy53;
}
} else {
if(yych <= 'q'){
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- goto yy143;
+ goto yy147;
} else {
- if(yych <= 'r') goto yy457;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'r') goto yy528;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
}
-yy522:
- YYDEBUG(522, *YYCURSOR);
+yy597:
+ YYDEBUG(597, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'G'){
if(yych <= ')'){
@@ -7669,7 +10456,7 @@ yy522:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'F') goto yy134;
- goto yy529;
+ goto yy605;
}
} else {
if(yych <= 'f'){
@@ -7677,13 +10464,13 @@ yy522:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'g') goto yy529;
+ if(yych <= 'g') goto yy605;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy523:
- YYDEBUG(523, *YYCURSOR);
+yy598:
+ YYDEBUG(598, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
if(yych <= ')'){
@@ -7692,7 +10479,7 @@ yy523:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy134;
- goto yy527;
+ goto yy602;
}
} else {
if(yych <= 'q'){
@@ -7700,13 +10487,13 @@ yy523:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'r') goto yy527;
+ if(yych <= 'r') goto yy602;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy524:
- YYDEBUG(524, *YYCURSOR);
+yy599:
+ YYDEBUG(599, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'O'){
if(yych <= ')'){
@@ -7715,7 +10502,7 @@ yy524:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'N') goto yy134;
- goto yy525;
+ goto yy600;
}
} else {
if(yych <= 'n'){
@@ -7723,27 +10510,27 @@ yy524:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'o') goto yy525;
+ if(yych <= 'o') goto yy600;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy525:
- YYDEBUG(525, *YYCURSOR);
+yy600:
+ YYDEBUG(600, *YYCURSOR);
++YYCURSOR;
if((yych = *YYCURSOR) <= '@'){
if(yych == ')') goto yy132;
- goto yy526;
+ goto yy601;
} else {
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy526;
+ if(yych <= '`') goto yy601;
if(yych <= 'z') goto yy135;
- goto yy526;
+ goto yy601;
}
-yy526:
- YYDEBUG(526, *YYCURSOR);
+yy601:
+ YYDEBUG(601, *YYCURSOR);
-#line 1291 "ext/date/lib/parse_date.re"
+#line 1321 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("ago");
TIMELIB_INIT;
@@ -7757,345 +10544,531 @@ yy526:
TIMELIB_DEINIT;
return TIMELIB_AGO;
}
-#line 6694 "ext/date/lib/parse_date.c"
-yy527:
- YYDEBUG(527, *YYCURSOR);
- yyaccept = 1;
+#line 9333 "ext/date/lib/parse_date.c"
+yy602:
+ YYDEBUG(602, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'I') goto yy135;
- goto yy528;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'I') goto yy135;
+ goto yy603;
+ }
} else {
if(yych <= 'h'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'i') goto yy528;
+ if(yych <= 'i') goto yy603;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy528:
- YYDEBUG(528, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'K'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy603:
+ YYDEBUG(603, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'L'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'K') goto yy136;
+ goto yy604;
+ }
} else {
- if(yych <= 'L') goto yy358;
- if(yych == 'l') goto yy358;
- goto yy3;
+ if(yych <= 'k'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'l') goto yy604;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy529:
- YYDEBUG(529, *YYCURSOR);
- yyaccept = 1;
+yy604:
+ YYDEBUG(604, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy423;
+ goto yy3;
} else {
- if(yych <= '-') goto yy361;
+ if(yych <= ' ') goto yy423;
+ if(yych == ')') goto yy132;
+ goto yy3;
+ }
+ } else {
+ if(yych <= '@'){
if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy605:
+ YYDEBUG(605, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
+ } else {
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'U') goto yy135;
- goto yy530;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'U') goto yy135;
+ goto yy606;
+ }
} else {
if(yych <= 't'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'u') goto yy530;
+ if(yych <= 'u') goto yy606;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy530:
- YYDEBUG(530, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'R'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy606:
+ YYDEBUG(606, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'S'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'R') goto yy136;
+ goto yy607;
+ }
} else {
- if(yych <= 'S') goto yy531;
- if(yych != 's') goto yy3;
- goto yy531;
+ if(yych <= 'r'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 's') goto yy607;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy531:
- YYDEBUG(531, *YYCURSOR);
+yy607:
+ YYDEBUG(607, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy358;
- if(yych == 't') goto yy358;
- goto yy53;
-yy532:
- YYDEBUG(532, *YYCURSOR);
- yyaccept = 1;
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy137;
+ goto yy608;
+ }
+ } else {
+ if(yych <= 's'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 't') goto yy608;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy608:
+ YYDEBUG(608, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
+ } else {
+ if(yych <= '.'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
+ } else {
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ }
+ }
+yy609:
+ YYDEBUG(609, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'G'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'F') goto yy134;
- goto yy529;
+ goto yy605;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'g') goto yy538;
- if(yych <= 'z') goto yy137;
+ if(yych == 'g') goto yy616;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy533:
- YYDEBUG(533, *YYCURSOR);
- yyaccept = 1;
+yy610:
+ YYDEBUG(610, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'R'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy134;
- goto yy527;
+ goto yy602;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'r') goto yy536;
- if(yych <= 'z') goto yy137;
+ if(yych == 'r') goto yy613;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy534:
- YYDEBUG(534, *YYCURSOR);
- yyaccept = 1;
+yy611:
+ YYDEBUG(611, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'O'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'N') goto yy134;
- goto yy525;
+ goto yy600;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'o') goto yy535;
- if(yych <= 'z') goto yy137;
+ if(yych == 'o') goto yy612;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy535:
- YYDEBUG(535, *YYCURSOR);
+yy612:
+ YYDEBUG(612, *YYCURSOR);
yyaccept = 9;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '@'){
if(yych <= ')'){
- if(yych <= '(') goto yy526;
+ if(yych <= '(') goto yy601;
goto yy132;
} else {
- if(yych == '/') goto yy138;
- goto yy526;
+ if(yych == '/') goto yy140;
+ goto yy601;
}
} else {
if(yych <= '_'){
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy526;
- goto yy138;
+ if(yych <= '^') goto yy601;
+ goto yy140;
} else {
- if(yych <= '`') goto yy526;
- if(yych <= 'z') goto yy142;
- goto yy526;
+ if(yych <= '`') goto yy601;
+ if(yych <= 'z') goto yy144;
+ goto yy601;
}
}
-yy536:
- YYDEBUG(536, *YYCURSOR);
- yyaccept = 1;
+yy613:
+ YYDEBUG(613, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'I'){
- if(yych <= 'H') goto yy135;
- goto yy528;
+ if(yych <= '^'){
+ if(yych <= 'H'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'I') goto yy603;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'h'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'i') goto yy537;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'i') goto yy614;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy537:
- YYDEBUG(537, *YYCURSOR);
- yyaccept = 1;
+yy614:
+ YYDEBUG(614, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'L'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'K') goto yy3;
- goto yy358;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'K') goto yy136;
+ goto yy604;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'l') goto yy457;
- if(yych <= 'z') goto yy143;
+ if(yych == 'l') goto yy615;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy538:
- YYDEBUG(538, *YYCURSOR);
- yyaccept = 1;
+yy615:
+ YYDEBUG(615, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ goto yy423;
+ } else {
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
+ }
+ } else {
+ if(yych <= 'Z'){
+ if(yych <= '/') goto yy140;
+ if(yych <= '9') goto yy423;
+ if(yych <= '@') goto yy3;
+ goto yy137;
} else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '_'){
+ if(yych <= '^') goto yy3;
+ goto yy140;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy146;
goto yy3;
}
}
+ }
+yy616:
+ YYDEBUG(616, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
+ }
} else {
- if(yych <= '_'){
- if(yych <= 'U'){
- if(yych <= 'T') goto yy135;
- goto yy530;
+ if(yych <= '^'){
+ if(yych <= 'T'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'U') goto yy606;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 't'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'u') goto yy539;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'u') goto yy617;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy539:
- YYDEBUG(539, *YYCURSOR);
- yyaccept = 1;
+yy617:
+ YYDEBUG(617, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'R') goto yy3;
- goto yy531;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'R') goto yy136;
+ goto yy607;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 's') goto yy540;
- if(yych <= 'z') goto yy143;
+ if(yych == 's') goto yy618;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy540:
- YYDEBUG(540, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy618:
+ YYDEBUG(618, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych == 'T') goto yy358;
- goto yy53;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy137;
+ goto yy608;
}
} else {
- if(yych <= 's'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= 't') goto yy457;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych == 't') goto yy619;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
}
}
-yy541:
- YYDEBUG(541, *YYCURSOR);
+yy619:
+ YYDEBUG(619, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= ','){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy423;
+ goto yy3;
+ } else {
+ if(yych <= ' ') goto yy423;
+ if(yych == ')') goto yy132;
+ goto yy3;
+ }
+ } else {
+ if(yych <= '^'){
+ if(yych == '/') goto yy140;
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy620:
+ YYDEBUG(620, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'B'){
if(yych <= ')'){
@@ -8104,7 +11077,7 @@ yy541:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'A') goto yy134;
- goto yy555;
+ goto yy634;
}
} else {
if(yych <= 'a'){
@@ -8112,37 +11085,37 @@ yy541:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'b') goto yy555;
+ if(yych <= 'b') goto yy634;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy542:
- YYDEBUG(542, *YYCURSOR);
+yy621:
+ YYDEBUG(621, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'F') goto yy552;
+ if(yych == 'F') goto yy631;
if(yych <= 'Q') goto yy134;
- goto yy551;
+ goto yy630;
}
} else {
if(yych <= 'f'){
if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'e') goto yy134;
- goto yy552;
+ goto yy631;
} else {
- if(yych == 'r') goto yy551;
+ if(yych == 'r') goto yy630;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy543:
- YYDEBUG(543, *YYCURSOR);
+yy622:
+ YYDEBUG(622, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= ')'){
@@ -8151,7 +11124,7 @@ yy543:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'T') goto yy134;
- goto yy548;
+ goto yy627;
}
} else {
if(yych <= 't'){
@@ -8159,13 +11132,13 @@ yy543:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'u') goto yy548;
+ if(yych <= 'u') goto yy627;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy544:
- YYDEBUG(544, *YYCURSOR);
+yy623:
+ YYDEBUG(623, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'I'){
if(yych <= ')'){
@@ -8174,7 +11147,7 @@ yy544:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'H') goto yy134;
- goto yy545;
+ goto yy624;
}
} else {
if(yych <= 'h'){
@@ -8182,54 +11155,76 @@ yy544:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'i') goto yy545;
+ if(yych <= 'i') goto yy624;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy545:
- YYDEBUG(545, *YYCURSOR);
+yy624:
+ YYDEBUG(624, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'D'){
if(yych <= ')'){
- if(yych <= '(') goto yy341;
+ if(yych <= '(') goto yy405;
goto yy132;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'C') goto yy135;
- goto yy546;
+ goto yy625;
}
} else {
if(yych <= 'c'){
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy341;
+ if(yych <= '`') goto yy405;
goto yy135;
} else {
- if(yych <= 'd') goto yy546;
+ if(yych <= 'd') goto yy625;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy546:
- YYDEBUG(546, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
+yy625:
+ YYDEBUG(625, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'A'){
if(yych == ')') goto yy132;
- goto yy3;
+ if(yych <= '@') goto yy3;
+ goto yy626;
} else {
- if(yych <= 'A') goto yy547;
- if(yych != 'a') goto yy3;
- goto yy547;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy136;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy626;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy547:
- YYDEBUG(547, *YYCURSOR);
+yy626:
+ YYDEBUG(626, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy347;
- goto yy53;
-yy548:
- YYDEBUG(548, *YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy137;
+ goto yy546;
+ }
+ } else {
+ if(yych <= 'x'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'y') goto yy546;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy627:
+ YYDEBUG(627, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
if(yych <= ')'){
@@ -8238,7 +11233,7 @@ yy548:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy135;
- goto yy549;
+ goto yy628;
}
} else {
if(yych <= 'q'){
@@ -8246,31 +11241,59 @@ yy548:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'r') goto yy549;
+ if(yych <= 'r') goto yy628;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy549:
- YYDEBUG(549, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'S'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy628:
+ YYDEBUG(628, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy136;
+ goto yy629;
+ }
} else {
- if(yych <= 'T') goto yy550;
- if(yych != 't') goto yy3;
- goto yy550;
+ if(yych <= 's'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 't') goto yy629;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy550:
- YYDEBUG(550, *YYCURSOR);
+yy629:
+ YYDEBUG(629, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy53;
-yy551:
- YYDEBUG(551, *YYCURSOR);
+ if(yych <= 'H'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy137;
+ goto yy562;
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'h') goto yy562;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy630:
+ YYDEBUG(630, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'S'){
if(yych <= ')'){
@@ -8279,7 +11302,7 @@ yy551:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'R') goto yy135;
- goto yy554;
+ goto yy633;
}
} else {
if(yych <= 'r'){
@@ -8287,13 +11310,13 @@ yy551:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 's') goto yy554;
+ if(yych <= 's') goto yy633;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy552:
- YYDEBUG(552, *YYCURSOR);
+yy631:
+ YYDEBUG(631, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -8302,7 +11325,7 @@ yy552:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy553;
+ goto yy632;
}
} else {
if(yych <= 's'){
@@ -8310,137 +11333,200 @@ yy552:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy553;
+ if(yych <= 't') goto yy632;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy553:
- YYDEBUG(553, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'G'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy632:
+ YYDEBUG(632, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'H'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
+ }
} else {
- if(yych <= 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy3;
+ if(yych <= 'g'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'h') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy554:
- YYDEBUG(554, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'S'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy633:
+ YYDEBUG(633, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy136;
+ goto yy376;
+ }
} else {
- if(yych <= 'T') goto yy159;
- if(yych == 't') goto yy159;
- goto yy3;
+ if(yych <= 's'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 't') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy555:
- YYDEBUG(555, *YYCURSOR);
- yyaccept = 1;
+yy634:
+ YYDEBUG(634, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'R') goto yy135;
- goto yy556;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'R') goto yy135;
+ goto yy635;
+ }
} else {
if(yych <= 'q'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'r') goto yy556;
+ if(yych <= 'r') goto yy635;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy556:
- YYDEBUG(556, *YYCURSOR);
- yyaccept = 1;
+yy635:
+ YYDEBUG(635, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'U'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'T') goto yy136;
+ goto yy636;
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'u') goto yy636;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy636:
+ YYDEBUG(636, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'A'){
+ if(yych == ')') goto yy132;
+ if(yych <= '@') goto yy3;
+ goto yy637;
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy637;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy637:
+ YYDEBUG(637, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'T'){
+ if(yych <= 'Q'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'U') goto yy557;
- if(yych != 'u') goto yy3;
- goto yy557;
+ if(yych <= 'R') goto yy638;
+ if(yych != 'r') goto yy3;
+ goto yy638;
}
-yy557:
- YYDEBUG(557, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy558;
- if(yych != 'a') goto yy53;
- goto yy558;
-yy558:
- YYDEBUG(558, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy559;
- if(yych != 'r') goto yy53;
- goto yy559;
-yy559:
- YYDEBUG(559, *YYCURSOR);
+yy638:
+ YYDEBUG(638, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy358;
- if(yych == 'y') goto yy358;
+ if(yych == 'Y') goto yy422;
+ if(yych == 'y') goto yy422;
goto yy53;
-yy560:
- YYDEBUG(560, *YYCURSOR);
- yyaccept = 1;
+yy639:
+ YYDEBUG(639, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'B'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'A') goto yy134;
- goto yy555;
+ goto yy634;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'b') goto yy574;
- if(yych <= 'z') goto yy137;
+ if(yych == 'b') goto yy653;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy561:
- YYDEBUG(561, *YYCURSOR);
- yyaccept = 1;
+yy640:
+ YYDEBUG(640, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'R'){
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= 'E'){
if(yych <= '@') goto yy3;
goto yy134;
} else {
- if(yych <= 'F') goto yy552;
+ if(yych <= 'F') goto yy631;
if(yych <= 'Q') goto yy134;
- goto yy551;
+ goto yy630;
}
}
} else {
@@ -8449,414 +11535,487 @@ yy561:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy137;
+ goto yy139;
}
} else {
if(yych <= 'q'){
- if(yych <= 'f') goto yy571;
- goto yy137;
+ if(yych <= 'f') goto yy650;
+ goto yy139;
} else {
- if(yych <= 'r') goto yy570;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'r') goto yy649;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy562:
- YYDEBUG(562, *YYCURSOR);
- yyaccept = 1;
+yy641:
+ YYDEBUG(641, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'U'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'T') goto yy134;
- goto yy548;
+ goto yy627;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'u') goto yy567;
- if(yych <= 'z') goto yy137;
+ if(yych == 'u') goto yy646;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy563:
- YYDEBUG(563, *YYCURSOR);
- yyaccept = 1;
+yy642:
+ YYDEBUG(642, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'I'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'H') goto yy134;
- goto yy545;
+ goto yy624;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'i') goto yy564;
- if(yych <= 'z') goto yy137;
+ if(yych == 'i') goto yy643;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy564:
- YYDEBUG(564, *YYCURSOR);
+yy643:
+ YYDEBUG(643, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'C') goto yy135;
- goto yy546;
+ goto yy625;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 'd') goto yy565;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 'd') goto yy644;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy565:
- YYDEBUG(565, *YYCURSOR);
- yyaccept = 1;
+yy644:
+ YYDEBUG(644, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'A'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
- goto yy547;
+ goto yy626;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy645;
+ if(yych <= 'z') goto yy145;
+ goto yy3;
+ }
+ }
+yy645:
+ YYDEBUG(645, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy137;
+ goto yy546;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych <= 'a') goto yy566;
- if(yych <= 'z') goto yy143;
+ if(yych == 'y') goto yy575;
+ if(yych <= 'z') goto yy146;
goto yy3;
}
}
-yy566:
- YYDEBUG(566, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy355;
- goto yy144;
-yy567:
- YYDEBUG(567, *YYCURSOR);
- yyaccept = 1;
+yy646:
+ YYDEBUG(646, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'R'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy135;
- goto yy549;
+ goto yy628;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'r') goto yy568;
- if(yych <= 'z') goto yy142;
+ if(yych == 'r') goto yy647;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy568:
- YYDEBUG(568, *YYCURSOR);
- yyaccept = 1;
+yy647:
+ YYDEBUG(647, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'S') goto yy3;
- goto yy550;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy136;
+ goto yy629;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy569;
- if(yych <= 'z') goto yy143;
+ if(yych == 't') goto yy648;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy569:
- YYDEBUG(569, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy648:
+ YYDEBUG(648, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'H'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych == 'H') goto yy159;
- goto yy53;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy137;
+ goto yy562;
}
} else {
- if(yych <= 'g'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= 'h') goto yy241;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych == 'h') goto yy591;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
}
}
-yy570:
- YYDEBUG(570, *YYCURSOR);
- yyaccept = 1;
+yy649:
+ YYDEBUG(649, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'R') goto yy135;
- goto yy554;
+ goto yy633;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 's') goto yy573;
- if(yych <= 'z') goto yy142;
+ if(yych == 's') goto yy652;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy571:
- YYDEBUG(571, *YYCURSOR);
- yyaccept = 1;
+yy650:
+ YYDEBUG(650, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy553;
+ goto yy632;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy572;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy651;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy572:
- YYDEBUG(572, *YYCURSOR);
- yyaccept = 1;
+yy651:
+ YYDEBUG(651, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'G') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'h') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 'h') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy573:
- YYDEBUG(573, *YYCURSOR);
- yyaccept = 1;
+yy652:
+ YYDEBUG(652, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'S') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 't') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy574:
- YYDEBUG(574, *YYCURSOR);
- yyaccept = 1;
+yy653:
+ YYDEBUG(653, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'R'){
- if(yych <= 'Q') goto yy135;
- goto yy556;
+ if(yych <= '^'){
+ if(yych <= 'Q'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'R') goto yy635;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'q'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'r') goto yy575;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'r') goto yy654;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy575:
- YYDEBUG(575, *YYCURSOR);
- yyaccept = 1;
+yy654:
+ YYDEBUG(654, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'U'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'T') goto yy3;
- goto yy557;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'T') goto yy136;
+ goto yy636;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'u') goto yy576;
- if(yych <= 'z') goto yy143;
+ if(yych == 'u') goto yy655;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy576:
- YYDEBUG(576, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy558;
- if(yych != 'a') goto yy144;
- goto yy577;
-yy577:
- YYDEBUG(577, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy559;
- if(yych != 'r') goto yy144;
- goto yy578;
-yy578:
- YYDEBUG(578, *YYCURSOR);
+yy655:
+ YYDEBUG(655, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy637;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy656;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy656:
+ YYDEBUG(656, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'Q') goto yy3;
+ goto yy638;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'r') goto yy657;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy657:
+ YYDEBUG(657, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
if(yych <= '/'){
if(yych <= '.') goto yy53;
- goto yy138;
+ goto yy140;
} else {
- if(yych == 'Y') goto yy358;
+ if(yych == 'Y') goto yy422;
goto yy53;
}
} else {
if(yych <= 'x'){
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- goto yy143;
+ goto yy147;
} else {
- if(yych <= 'y') goto yy457;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'y') goto yy528;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
}
-yy579:
- YYDEBUG(579, *YYCURSOR);
+yy658:
+ YYDEBUG(658, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'L') goto yy586;
+ if(yych == 'L') goto yy665;
if(yych <= 'M') goto yy134;
- goto yy585;
+ goto yy664;
}
} else {
if(yych <= 'l'){
if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'k') goto yy134;
- goto yy586;
+ goto yy665;
} else {
- if(yych == 'n') goto yy585;
+ if(yych == 'n') goto yy664;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy580:
- YYDEBUG(580, *YYCURSOR);
+yy659:
+ YYDEBUG(659, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -8865,7 +12024,7 @@ yy580:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy581;
+ goto yy660;
}
} else {
if(yych <= 'm'){
@@ -8873,155 +12032,234 @@ yy580:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'n') goto yy581;
+ if(yych <= 'n') goto yy660;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy581:
- YYDEBUG(581, *YYCURSOR);
- yyaccept = 1;
+yy660:
+ YYDEBUG(660, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'U') goto yy135;
- goto yy582;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'U') goto yy135;
+ goto yy661;
+ }
} else {
if(yych <= 't'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'u') goto yy582;
+ if(yych <= 'u') goto yy661;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy582:
- YYDEBUG(582, *YYCURSOR);
- yyaccept = 1;
+yy661:
+ YYDEBUG(661, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'A'){
+ if(yych == ')') goto yy132;
+ if(yych <= '@') goto yy3;
+ goto yy662;
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy136;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy662;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy662:
+ YYDEBUG(662, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'R'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy137;
+ goto yy663;
+ }
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'r') goto yy663;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy663:
+ YYDEBUG(663, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
+ if(yych <= 'X'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'A') goto yy583;
- if(yych != 'a') goto yy3;
- goto yy583;
+ if(yych <= 'Y') goto yy422;
+ if(yych == 'y') goto yy422;
+ goto yy3;
}
-yy583:
- YYDEBUG(583, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy584;
- if(yych != 'r') goto yy53;
- goto yy584;
-yy584:
- YYDEBUG(584, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy358;
- if(yych == 'y') goto yy358;
- goto yy53;
-yy585:
- YYDEBUG(585, *YYCURSOR);
- yyaccept = 1;
+yy664:
+ YYDEBUG(664, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych == 'E') goto yy587;
- goto yy135;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych == 'E') goto yy666;
+ goto yy135;
+ }
} else {
if(yych <= 'd'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'e') goto yy587;
+ if(yych <= 'e') goto yy666;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy586:
- YYDEBUG(586, *YYCURSOR);
- yyaccept = 1;
+yy665:
+ YYDEBUG(665, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'Y') goto yy135;
- goto yy587;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'Y') goto yy135;
+ goto yy666;
+ }
} else {
if(yych <= 'x'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'y') goto yy587;
+ if(yych <= 'y') goto yy666;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy587:
- YYDEBUG(587, *YYCURSOR);
- yyaccept = 1;
+yy666:
+ YYDEBUG(666, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= ')'){
- if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ if(yych <= ','){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy423;
+ goto yy3;
+ } else {
+ if(yych <= ' ') goto yy423;
+ if(yych == ')') goto yy132;
+ goto yy3;
+ }
} else {
- if(yych == '/') goto yy3;
- if(yych <= '9') goto yy359;
- goto yy3;
+ if(yych <= '@'){
+ if(yych == '/') goto yy3;
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy588:
- YYDEBUG(588, *YYCURSOR);
- yyaccept = 1;
+yy667:
+ YYDEBUG(667, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= 'K'){
if(yych <= '@') goto yy3;
goto yy134;
} else {
- if(yych <= 'L') goto yy586;
+ if(yych <= 'L') goto yy665;
if(yych <= 'M') goto yy134;
- goto yy585;
+ goto yy664;
}
}
} else {
@@ -9030,441 +12268,507 @@ yy588:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy137;
+ goto yy139;
}
} else {
if(yych <= 'm'){
- if(yych <= 'l') goto yy595;
- goto yy137;
+ if(yych <= 'l') goto yy674;
+ goto yy139;
} else {
- if(yych <= 'n') goto yy594;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'n') goto yy673;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy589:
- YYDEBUG(589, *YYCURSOR);
- yyaccept = 1;
+yy668:
+ YYDEBUG(668, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy581;
+ goto yy660;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy590;
- if(yych <= 'z') goto yy137;
+ if(yych == 'n') goto yy669;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy590:
- YYDEBUG(590, *YYCURSOR);
- yyaccept = 1;
+yy669:
+ YYDEBUG(669, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'U'){
- if(yych <= 'T') goto yy135;
- goto yy582;
+ if(yych <= '^'){
+ if(yych <= 'T'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'U') goto yy661;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 't'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'u') goto yy591;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'u') goto yy670;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy591:
- YYDEBUG(591, *YYCURSOR);
- yyaccept = 1;
+yy670:
+ YYDEBUG(670, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'A'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
- goto yy583;
+ goto yy662;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy671;
+ if(yych <= 'z') goto yy145;
+ goto yy3;
+ }
+ }
+yy671:
+ YYDEBUG(671, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy137;
+ goto yy663;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych <= 'a') goto yy592;
- if(yych <= 'z') goto yy143;
+ if(yych == 'r') goto yy672;
+ if(yych <= 'z') goto yy146;
goto yy3;
}
}
-yy592:
- YYDEBUG(592, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy584;
- if(yych != 'r') goto yy144;
- goto yy593;
-yy593:
- YYDEBUG(593, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy672:
+ YYDEBUG(672, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych == 'Y') goto yy358;
- goto yy53;
+ if(yych <= '/') goto yy140;
+ if(yych <= 'X') goto yy3;
+ goto yy422;
}
} else {
- if(yych <= 'x'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= 'y') goto yy457;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych == 'y') goto yy528;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
}
}
-yy594:
- YYDEBUG(594, *YYCURSOR);
- yyaccept = 1;
+yy673:
+ YYDEBUG(673, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'E'){
- if(yych <= 'D') goto yy135;
- goto yy587;
+ if(yych <= '^'){
+ if(yych <= 'D'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'E') goto yy666;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'd'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'e') goto yy596;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'e') goto yy675;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy595:
- YYDEBUG(595, *YYCURSOR);
- yyaccept = 1;
+yy674:
+ YYDEBUG(674, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'Y'){
- if(yych <= 'X') goto yy135;
- goto yy587;
+ if(yych <= '^'){
+ if(yych <= 'X'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'Y') goto yy666;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'x'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'y') goto yy596;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'y') goto yy675;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy596:
- YYDEBUG(596, *YYCURSOR);
- yyaccept = 1;
+yy675:
+ YYDEBUG(675, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= '('){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- goto yy359;
+ goto yy423;
} else {
- if(yych <= ')') goto yy360;
- if(yych <= '.') goto yy359;
- goto yy138;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= '_'){
- if(yych <= '9') goto yy359;
- if(yych <= '^') goto yy3;
- goto yy138;
+ if(yych <= 'Z'){
+ if(yych <= '/') goto yy140;
+ if(yych <= '9') goto yy423;
+ if(yych <= '@') goto yy3;
+ goto yy136;
} else {
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy143;
- goto yy3;
+ if(yych <= '_'){
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy145;
+ goto yy3;
+ }
}
}
-yy597:
- YYDEBUG(597, *YYCURSOR);
- yyaccept = 1;
+yy676:
+ YYDEBUG(676, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= 'I'){
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'H') goto yy134;
- goto yy598;
+ goto yy134;
} else {
- if(yych <= 'Z') goto yy134;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy134;
- goto yy3;
+ if(yych <= 'Z'){
+ if(yych >= 'J') goto yy134;
+ goto yy677;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy134;
+ goto yy3;
+ }
}
}
-yy598:
- YYDEBUG(598, *YYCURSOR);
- yyaccept = 1;
+yy677:
+ YYDEBUG(677, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= '('){
- if(yych <= 0x1F) goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy423;
+ goto yy3;
} else {
- if(yych <= ')') goto yy360;
- if(yych <= '.') goto yy359;
+ if(yych <= ' ') goto yy423;
+ if(yych == ')') goto yy132;
goto yy3;
}
} else {
- if(yych <= 'Z'){
- if(yych <= '9') goto yy359;
- if(yych <= '@') goto yy3;
- goto yy135;
+ if(yych <= '@'){
+ if(yych == '/') goto yy3;
+ if(yych <= '9') goto yy423;
+ goto yy3;
} else {
+ if(yych <= 'Z') goto yy135;
if(yych <= '`') goto yy3;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy599:
- YYDEBUG(599, *YYCURSOR);
- yyaccept = 1;
+yy678:
+ YYDEBUG(678, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= 'I'){
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'H') goto yy134;
- goto yy600;
+ goto yy134;
} else {
- if(yych <= 'Z') goto yy134;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy134;
- goto yy3;
+ if(yych <= 'Z'){
+ if(yych >= 'J') goto yy134;
+ goto yy679;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy134;
+ goto yy3;
+ }
}
}
-yy600:
- YYDEBUG(600, *YYCURSOR);
- yyaccept = 1;
+yy679:
+ YYDEBUG(679, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= 'I'){
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'H') goto yy135;
- goto yy587;
+ goto yy135;
} else {
- if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy135;
- goto yy3;
+ if(yych <= 'Z'){
+ if(yych <= 'I') goto yy666;
+ goto yy135;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy135;
+ goto yy3;
+ }
}
}
-yy601:
- YYDEBUG(601, *YYCURSOR);
- yyaccept = 1;
+yy680:
+ YYDEBUG(680, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= '('){
- if(yych <= 0x1F) goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy423;
+ goto yy3;
} else {
- if(yych <= ')') goto yy360;
- if(yych <= '.') goto yy359;
+ if(yych <= ' ') goto yy423;
+ if(yych == ')') goto yy132;
goto yy3;
}
} else {
- if(yych <= 'Z'){
- if(yych <= '9') goto yy359;
- if(yych <= '@') goto yy3;
- goto yy134;
+ if(yych <= '@'){
+ if(yych == '/') goto yy3;
+ if(yych <= '9') goto yy423;
+ goto yy3;
} else {
+ if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy602:
- YYDEBUG(602, *YYCURSOR);
- yyaccept = 1;
+yy681:
+ YYDEBUG(681, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy423;
}
} else {
- if(yych <= 'I'){
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy3;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'H') goto yy134;
- goto yy598;
+ goto yy134;
} else {
- if(yych <= 'Z') goto yy134;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy134;
- goto yy3;
+ if(yych <= 'Z'){
+ if(yych <= 'I') goto yy677;
+ goto yy134;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy134;
+ goto yy3;
+ }
}
}
-yy603:
- YYDEBUG(603, *YYCURSOR);
+yy682:
+ YYDEBUG(682, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy684;
+ if(yych <= '0') goto yy932;
+ if(yych <= '1') goto yy933;
+ if(yych <= '9') goto yy934;
+ goto yy684;
+yy683:
+ YYDEBUG(683, *YYCURSOR);
++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
yych = *YYCURSOR;
- goto yy604;
-yy604:
- YYDEBUG(604, *YYCURSOR);
+ goto yy684;
+yy684:
+ YYDEBUG(684, *YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ': goto yy603;
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',':
+ case 0x09: case ' ': goto yy683;
case '-':
- case '.': goto yy616;
- case 'A': case 'a': goto yy624;
- case 'D': case 'd': goto yy608;
- case 'F': case 'f': goto yy609;
+ case '.': goto yy783;
+ case 'A': case 'a': goto yy702;
+ case 'D': case 'd': goto yy688;
+ case 'F': case 'f': goto yy689;
case 'H': case 'h': goto yy60;
- case 'I': goto yy619;
- case 'J': case 'j': goto yy623;
- case 'M': case 'm': goto yy607;
- case 'N': case 'n': goto yy626;
- case 'O': case 'o': goto yy625;
- case 'P': case 'p': goto yy628;
- case 'S': case 's': goto yy605;
+ case 'I': goto yy697;
+ case 'J': case 'j': goto yy701;
+ case 'M': case 'm': goto yy687;
+ case 'N': case 'n': goto yy704;
+ case 'O': case 'o': goto yy703;
+ case 'P': case 'p': goto yy706;
+ case 'S': case 's': goto yy685;
case 'T': case 't': goto yy65;
- case 'V': goto yy621;
+ case 'V': goto yy699;
case 'W': case 'w': goto yy62;
- case 'X': goto yy622;
+ case 'X': goto yy700;
case 'Y': case 'y': goto yy64;
default: goto yy53;
}
-yy605:
- YYDEBUG(605, *YYCURSOR);
+yy685:
+ YYDEBUG(685, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= 'D'){
if(yych == 'A') goto yy119;
goto yy53;
} else {
- if(yych <= 'E') goto yy1118;
+ if(yych <= 'E') goto yy1228;
if(yych <= 'T') goto yy53;
goto yy118;
}
@@ -9473,20 +12777,20 @@ yy605:
if(yych == 'a') goto yy119;
goto yy53;
} else {
- if(yych <= 'e') goto yy1118;
+ if(yych <= 'e') goto yy1228;
if(yych == 'u') goto yy118;
goto yy53;
}
}
-yy606:
- YYDEBUG(606, *YYCURSOR);
+yy686:
+ YYDEBUG(686, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '`'){
if(yych <= 'D'){
if(yych == 'A') goto yy119;
goto yy53;
} else {
- if(yych <= 'E') goto yy1118;
+ if(yych <= 'E') goto yy1228;
if(yych == 'U') goto yy118;
goto yy53;
}
@@ -9494,20 +12798,20 @@ yy606:
if(yych <= 'e'){
if(yych <= 'a') goto yy119;
if(yych <= 'd') goto yy53;
- goto yy1118;
+ goto yy1228;
} else {
if(yych <= 's') goto yy53;
- if(yych <= 't') goto yy843;
+ if(yych <= 't') goto yy929;
if(yych <= 'u') goto yy118;
goto yy53;
}
}
-yy607:
- YYDEBUG(607, *YYCURSOR);
+yy687:
+ YYDEBUG(687, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'O'){
if(yych <= 'H'){
- if(yych == 'A') goto yy715;
+ if(yych == 'A') goto yy798;
goto yy53;
} else {
if(yych <= 'I') goto yy110;
@@ -9516,7 +12820,7 @@ yy607:
}
} else {
if(yych <= 'h'){
- if(yych == 'a') goto yy715;
+ if(yych == 'a') goto yy798;
goto yy53;
} else {
if(yych <= 'i') goto yy110;
@@ -9524,28 +12828,28 @@ yy607:
goto yy53;
}
}
-yy608:
- YYDEBUG(608, *YYCURSOR);
+yy688:
+ YYDEBUG(688, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych == 'A') goto yy106;
if(yych <= 'D') goto yy53;
- goto yy702;
+ goto yy785;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
goto yy106;
} else {
- if(yych == 'e') goto yy702;
+ if(yych == 'e') goto yy785;
goto yy53;
}
}
-yy609:
- YYDEBUG(609, *YYCURSOR);
+yy689:
+ YYDEBUG(689, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
if(yych <= 'N'){
- if(yych == 'E') goto yy718;
+ if(yych == 'E') goto yy801;
goto yy53;
} else {
if(yych <= 'O') goto yy83;
@@ -9554,7 +12858,7 @@ yy609:
}
} else {
if(yych <= 'n'){
- if(yych == 'e') goto yy718;
+ if(yych == 'e') goto yy801;
goto yy53;
} else {
if(yych <= 'o') goto yy83;
@@ -9562,8 +12866,8 @@ yy609:
goto yy53;
}
}
-yy610:
- YYDEBUG(610, *YYCURSOR);
+yy690:
+ YYDEBUG(690, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych == 'H') goto yy66;
@@ -9572,67 +12876,67 @@ yy610:
} else {
if(yych <= 'h'){
if(yych <= 'g') goto yy53;
- goto yy1117;
+ goto yy1227;
} else {
if(yych == 'u') goto yy67;
goto yy53;
}
}
-yy611:
- YYDEBUG(611, *YYCURSOR);
+yy691:
+ YYDEBUG(691, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy852;
+ if(yych == '-') goto yy936;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy851;
+ if(yych <= '9') goto yy935;
goto yy57;
-yy612:
- YYDEBUG(612, *YYCURSOR);
+yy692:
+ YYDEBUG(692, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'c'){
- if(yych == 'O') goto yy655;
+ if(yych == 'O') goto yy736;
goto yy53;
} else {
- if(yych <= 'd') goto yy843;
- if(yych == 'o') goto yy655;
+ if(yych <= 'd') goto yy929;
+ if(yych == 'o') goto yy736;
goto yy53;
}
-yy613:
- YYDEBUG(613, *YYCURSOR);
+yy693:
+ YYDEBUG(693, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy843;
+ if(yych == 'd') goto yy929;
goto yy53;
-yy614:
- YYDEBUG(614, *YYCURSOR);
+yy694:
+ YYDEBUG(694, *YYCURSOR);
yych = *++YYCURSOR;
YYDEBUG(-1, yych);
switch(yych){
case '0':
case '1':
- case '2': goto yy783;
- case '3': goto yy785;
+ case '2': goto yy869;
+ case '3': goto yy871;
case '4':
case '5':
case '6':
case '7':
case '8':
- case '9': goto yy786;
- case 'A': case 'a': goto yy790;
- case 'D': case 'd': goto yy794;
- case 'F': case 'f': goto yy788;
- case 'J': case 'j': goto yy787;
- case 'M': case 'm': goto yy789;
- case 'N': case 'n': goto yy793;
- case 'O': case 'o': goto yy792;
- case 'S': case 's': goto yy791;
+ case '9': goto yy872;
+ case 'A': case 'a': goto yy876;
+ case 'D': case 'd': goto yy880;
+ case 'F': case 'f': goto yy874;
+ case 'J': case 'j': goto yy873;
+ case 'M': case 'm': goto yy875;
+ case 'N': case 'n': goto yy879;
+ case 'O': case 'o': goto yy878;
+ case 'S': case 's': goto yy877;
default: goto yy53;
}
-yy615:
- YYDEBUG(615, *YYCURSOR);
+yy695:
+ YYDEBUG(695, *YYCURSOR);
yych = *++YYCURSOR;
YYDEBUG(-1, yych);
switch(yych){
- case '0': goto yy734;
- case '1': goto yy735;
+ case '0': goto yy819;
+ case '1': goto yy820;
case '2':
case '3':
case '4':
@@ -9640,94 +12944,58 @@ yy615:
case '6':
case '7':
case '8':
- case '9': goto yy736;
- case 'A': case 'a': goto yy740;
- case 'D': case 'd': goto yy744;
- case 'F': case 'f': goto yy738;
- case 'J': case 'j': goto yy737;
- case 'M': case 'm': goto yy739;
- case 'N': case 'n': goto yy743;
- case 'O': case 'o': goto yy742;
- case 'S': case 's': goto yy741;
- default: goto yy617;
- }
-yy616:
- YYDEBUG(616, *YYCURSOR);
- ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
- yych = *YYCURSOR;
- goto yy617;
-yy617:
- YYDEBUG(617, *YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',':
- case '-':
- case '.': goto yy616;
- case 'A': case 'a': goto yy699;
- case 'D': case 'd': goto yy701;
- case 'F': case 'f': goto yy697;
- case 'I': goto yy619;
- case 'J': case 'j': goto yy623;
- case 'M': case 'm': goto yy698;
- case 'N': case 'n': goto yy626;
- case 'O': case 'o': goto yy625;
- case 'S': case 's': goto yy700;
- case 'V': goto yy621;
- case 'X': goto yy622;
- default: goto yy53;
+ case '9': goto yy821;
+ case 'A': case 'a': goto yy825;
+ case 'D': case 'd': goto yy829;
+ case 'F': case 'f': goto yy823;
+ case 'J': case 'j': goto yy822;
+ case 'M': case 'm': goto yy824;
+ case 'N': case 'n': goto yy828;
+ case 'O': case 'o': goto yy827;
+ case 'S': case 's': goto yy826;
+ default: goto yy784;
}
-yy618:
- YYDEBUG(618, *YYCURSOR);
+yy696:
+ YYDEBUG(696, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '1'){
- if(yych <= '/') goto yy617;
- if(yych <= '0') goto yy693;
- goto yy694;
+ if(yych <= '/') goto yy784;
+ if(yych <= '0') goto yy774;
+ goto yy775;
} else {
- if(yych <= '5') goto yy695;
- if(yych <= '9') goto yy696;
- goto yy617;
+ if(yych <= '5') goto yy776;
+ if(yych <= '9') goto yy777;
+ goto yy784;
}
-yy619:
- YYDEBUG(619, *YYCURSOR);
+yy697:
+ YYDEBUG(697, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'H'){
- if(yych <= '.'){
- if(yych >= ' ') goto yy657;
- goto yy620;
+ if(yych <= '/'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '/') goto yy620;
- if(yych <= '9') goto yy659;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '.') goto yy738;
+ goto yy698;
}
} else {
- if(yych <= 'V'){
- if(yych <= 'I') goto yy692;
- if(yych >= 'V') goto yy665;
- goto yy620;
+ if(yych <= 'U'){
+ if(yych <= '9') goto yy740;
+ if(yych == 'I') goto yy773;
+ goto yy698;
} else {
- if(yych == 'X') goto yy665;
- goto yy620;
+ if(yych == 'W') goto yy698;
+ if(yych <= 'X') goto yy746;
+ goto yy698;
}
}
-yy620:
- YYDEBUG(620, *YYCURSOR);
+yy698:
+ YYDEBUG(698, *YYCURSOR);
-#line 1138 "ext/date/lib/parse_date.re"
+#line 1164 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("datenoyearrev");
TIMELIB_INIT;
@@ -9738,117 +13006,157 @@ yy620:
TIMELIB_DEINIT;
return TIMELIB_DATE_TEXT;
}
-#line 8483 "ext/date/lib/parse_date.c"
-yy621:
- YYDEBUG(621, *YYCURSOR);
+#line 11598 "ext/date/lib/parse_date.c"
+yy699:
+ YYDEBUG(699, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '9') goto yy659;
- if(yych == 'I') goto yy690;
- goto yy620;
+ if(yych <= '9'){
+ if(yych <= '.') goto yy738;
+ if(yych <= '/') goto yy698;
+ goto yy740;
+ } else {
+ if(yych == 'I') goto yy771;
+ goto yy698;
+ }
}
-yy622:
- YYDEBUG(622, *YYCURSOR);
+yy700:
+ YYDEBUG(700, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '9') goto yy659;
- if(yych == 'I') goto yy689;
- goto yy620;
+ if(yych <= '9'){
+ if(yych <= '.') goto yy738;
+ if(yych <= '/') goto yy698;
+ goto yy740;
+ } else {
+ if(yych == 'I') goto yy770;
+ goto yy698;
+ }
}
-yy623:
- YYDEBUG(623, *YYCURSOR);
+yy701:
+ YYDEBUG(701, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'A') goto yy682;
+ if(yych == 'A') goto yy763;
if(yych <= 'T') goto yy53;
- goto yy681;
+ goto yy762;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
- goto yy682;
+ goto yy763;
} else {
- if(yych == 'u') goto yy681;
+ if(yych == 'u') goto yy762;
goto yy53;
}
}
-yy624:
- YYDEBUG(624, *YYCURSOR);
+yy702:
+ YYDEBUG(702, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= 'L'){
- if(yych == '.') goto yy629;
+ if(yych == '.') goto yy707;
goto yy53;
} else {
- if(yych <= 'M') goto yy630;
- if(yych == 'P') goto yy675;
+ if(yych <= 'M') goto yy708;
+ if(yych == 'P') goto yy756;
goto yy53;
}
} else {
if(yych <= 'o'){
- if(yych <= 'U') goto yy674;
- if(yych == 'm') goto yy630;
+ if(yych <= 'U') goto yy755;
+ if(yych == 'm') goto yy708;
goto yy53;
} else {
- if(yych <= 'p') goto yy675;
- if(yych == 'u') goto yy674;
+ if(yych <= 'p') goto yy756;
+ if(yych == 'u') goto yy755;
goto yy53;
}
}
-yy625:
- YYDEBUG(625, *YYCURSOR);
+yy703:
+ YYDEBUG(703, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy669;
- if(yych == 'c') goto yy669;
+ if(yych == 'C') goto yy750;
+ if(yych == 'c') goto yy750;
goto yy53;
-yy626:
- YYDEBUG(626, *YYCURSOR);
+yy704:
+ YYDEBUG(704, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy655;
- if(yych == 'o') goto yy655;
+ if(yych == 'O') goto yy736;
+ if(yych == 'o') goto yy736;
goto yy53;
-yy627:
- YYDEBUG(627, *YYCURSOR);
+yy705:
+ YYDEBUG(705, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy633;
- if(yych <= '9') goto yy635;
+ if(yych <= '5') goto yy712;
+ if(yych <= '9') goto yy714;
goto yy53;
-yy628:
- YYDEBUG(628, *YYCURSOR);
+yy706:
+ YYDEBUG(706, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'L'){
if(yych != '.') goto yy53;
- goto yy629;
+ goto yy707;
} else {
- if(yych <= 'M') goto yy630;
- if(yych == 'm') goto yy630;
+ if(yych <= 'M') goto yy708;
+ if(yych == 'm') goto yy708;
goto yy53;
}
-yy629:
- YYDEBUG(629, *YYCURSOR);
+yy707:
+ YYDEBUG(707, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy630;
+ if(yych == 'M') goto yy708;
if(yych != 'm') goto yy53;
- goto yy630;
-yy630:
- YYDEBUG(630, *YYCURSOR);
+ goto yy708;
+yy708:
+ YYDEBUG(708, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 0x1F){
+ if(yych <= 0x00) goto yy710;
+ if(yych == 0x09) goto yy710;
+ goto yy53;
+ } else {
+ if(yych <= ' ') goto yy710;
+ if(yych != '.') goto yy53;
+ goto yy709;
+ }
+yy709:
+ YYDEBUG(709, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 0x09){
+ if(yych <= 0x00) goto yy710;
+ if(yych <= 0x08) goto yy53;
+ goto yy710;
+ } else {
+ if(yych != ' ') goto yy53;
+ goto yy710;
+ }
+yy710:
+ YYDEBUG(710, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) == '.') goto yy632;
- goto yy631;
-yy631:
- YYDEBUG(631, *YYCURSOR);
+ goto yy711;
+yy711:
+ YYDEBUG(711, *YYCURSOR);
-#line 928 "ext/date/lib/parse_date.re"
+#line 949 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12");
TIMELIB_INIT;
@@ -9864,27 +13172,23 @@ yy631:
TIMELIB_DEINIT;
return TIMELIB_TIME12;
}
-#line 8587 "ext/date/lib/parse_date.c"
-yy632:
- YYDEBUG(632, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy631;
-yy633:
- YYDEBUG(633, *YYCURSOR);
+#line 11738 "ext/date/lib/parse_date.c"
+yy712:
+ YYDEBUG(712, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy636;
- goto yy634;
+ if(yych == '.') goto yy715;
+ goto yy713;
} else {
- if(yych <= '9') goto yy649;
- if(yych <= ':') goto yy636;
- goto yy634;
+ if(yych <= '9') goto yy729;
+ if(yych <= ':') goto yy715;
+ goto yy713;
}
-yy634:
- YYDEBUG(634, *YYCURSOR);
+yy713:
+ YYDEBUG(713, *YYCURSOR);
-#line 945 "ext/date/lib/parse_date.re"
+#line 966 "ext/date/lib/parse_date.re"
{
int tz_not_found;
DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long");
@@ -9902,255 +13206,316 @@ yy634:
if (*ptr != '\0') {
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
}
TIMELIB_DEINIT;
return TIMELIB_TIME24_WITH_ZONE;
}
-#line 8624 "ext/date/lib/parse_date.c"
-yy635:
- YYDEBUG(635, *YYCURSOR);
+#line 11775 "ext/date/lib/parse_date.c"
+yy714:
+ YYDEBUG(714, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy636;
- if(yych != ':') goto yy634;
- goto yy636;
-yy636:
- YYDEBUG(636, *YYCURSOR);
+ if(yych == '.') goto yy715;
+ if(yych != ':') goto yy713;
+ goto yy715;
+yy715:
+ YYDEBUG(715, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy637;
- if(yych <= '6') goto yy638;
- if(yych <= '9') goto yy639;
+ if(yych <= '5') goto yy716;
+ if(yych <= '6') goto yy717;
+ if(yych <= '9') goto yy718;
goto yy53;
-yy637:
- YYDEBUG(637, *YYCURSOR);
+yy716:
+ YYDEBUG(716, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy643;
- goto yy634;
-yy638:
- YYDEBUG(638, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy722;
+ goto yy713;
+yy717:
+ YYDEBUG(717, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych == '0') goto yy643;
- goto yy634;
-yy639:
- YYDEBUG(639, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych == '0') goto yy722;
+ goto yy713;
+yy718:
+ YYDEBUG(718, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych != '.') goto yy634;
- goto yy640;
-yy640:
- YYDEBUG(640, *YYCURSOR);
+ if(yych != '.') goto yy713;
+ goto yy719;
+yy719:
+ YYDEBUG(719, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy641;
-yy641:
- YYDEBUG(641, *YYCURSOR);
+ goto yy720;
+yy720:
+ YYDEBUG(720, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy642;
-yy642:
- YYDEBUG(642, *YYCURSOR);
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy641;
- goto yy634;
-yy643:
- YYDEBUG(643, *YYCURSOR);
+ goto yy721;
+yy721:
+ YYDEBUG(721, *YYCURSOR);
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy720;
+ goto yy713;
+yy722:
+ YYDEBUG(722, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'A'){
- if(yych <= '-'){
- if(yych != ' ') goto yy634;
- goto yy644;
+ if(yych <= '@'){
+ if(yych <= 0x1F){
+ if(yych != 0x09) goto yy713;
+ goto yy723;
} else {
- if(yych <= '.') goto yy640;
- if(yych <= '@') goto yy634;
- goto yy646;
+ if(yych <= ' ') goto yy723;
+ if(yych == '.') goto yy719;
+ goto yy713;
}
} else {
if(yych <= '`'){
- if(yych == 'P') goto yy646;
- goto yy634;
+ if(yych <= 'A') goto yy725;
+ if(yych == 'P') goto yy725;
+ goto yy713;
} else {
- if(yych <= 'a') goto yy646;
- if(yych == 'p') goto yy646;
- goto yy634;
+ if(yych <= 'a') goto yy725;
+ if(yych == 'p') goto yy725;
+ goto yy713;
}
}
-yy644:
- YYDEBUG(644, *YYCURSOR);
+yy723:
+ YYDEBUG(723, *YYCURSOR);
++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+ if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
yych = *YYCURSOR;
- goto yy645;
-yy645:
- YYDEBUG(645, *YYCURSOR);
- if(yych <= 'O'){
- if(yych <= ' '){
- if(yych <= 0x1F) goto yy53;
- goto yy644;
+ goto yy724;
+yy724:
+ YYDEBUG(724, *YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy723;
+ goto yy53;
} else {
- if(yych != 'A') goto yy53;
- goto yy646;
+ if(yych <= ' ') goto yy723;
+ if(yych <= '@') goto yy53;
+ goto yy725;
}
} else {
- if(yych <= 'a'){
- if(yych <= 'P') goto yy646;
- if(yych <= '`') goto yy53;
- goto yy646;
+ if(yych <= '`'){
+ if(yych != 'P') goto yy53;
+ goto yy725;
} else {
+ if(yych <= 'a') goto yy725;
if(yych != 'p') goto yy53;
- goto yy646;
+ goto yy725;
}
}
-yy646:
- YYDEBUG(646, *YYCURSOR);
+yy725:
+ YYDEBUG(725, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'L'){
if(yych != '.') goto yy53;
- goto yy647;
+ goto yy726;
} else {
- if(yych <= 'M') goto yy648;
- if(yych == 'm') goto yy648;
+ if(yych <= 'M') goto yy727;
+ if(yych == 'm') goto yy727;
goto yy53;
}
-yy647:
- YYDEBUG(647, *YYCURSOR);
+yy726:
+ YYDEBUG(726, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy648;
+ if(yych == 'M') goto yy727;
if(yych != 'm') goto yy53;
- goto yy648;
-yy648:
- YYDEBUG(648, *YYCURSOR);
+ goto yy727;
+yy727:
+ YYDEBUG(727, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '.') goto yy632;
- goto yy631;
-yy649:
- YYDEBUG(649, *YYCURSOR);
+ if(yych <= 0x1F){
+ if(yych <= 0x00) goto yy710;
+ if(yych == 0x09) goto yy710;
+ goto yy53;
+ } else {
+ if(yych <= ' ') goto yy710;
+ if(yych != '.') goto yy53;
+ goto yy728;
+ }
+yy728:
+ YYDEBUG(728, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 0x09){
+ if(yych <= 0x00) goto yy710;
+ if(yych <= 0x08) goto yy53;
+ goto yy710;
+ } else {
+ if(yych == ' ') goto yy710;
+ goto yy53;
+ }
+yy729:
+ YYDEBUG(729, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= '-'){
- if(yych != ' ') goto yy634;
- goto yy650;
+ if(yych <= ':'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy730;
+ if(yych <= 0x1F) goto yy713;
+ goto yy730;
} else {
- if(yych <= '.') goto yy636;
- if(yych == ':') goto yy636;
- goto yy634;
+ if(yych == '.') goto yy715;
+ if(yych <= '9') goto yy713;
+ goto yy715;
}
} else {
- if(yych <= '`'){
- if(yych <= 'A') goto yy652;
- if(yych == 'P') goto yy652;
- goto yy634;
+ if(yych <= 'P'){
+ if(yych == 'A') goto yy732;
+ if(yych <= 'O') goto yy713;
+ goto yy732;
} else {
- if(yych <= 'a') goto yy652;
- if(yych == 'p') goto yy652;
- goto yy634;
+ if(yych <= 'a'){
+ if(yych <= '`') goto yy713;
+ goto yy732;
+ } else {
+ if(yych == 'p') goto yy732;
+ goto yy713;
+ }
}
}
-yy650:
- YYDEBUG(650, *YYCURSOR);
+yy730:
+ YYDEBUG(730, *YYCURSOR);
++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+ if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
yych = *YYCURSOR;
- goto yy651;
-yy651:
- YYDEBUG(651, *YYCURSOR);
- if(yych <= 'O'){
- if(yych <= ' '){
- if(yych <= 0x1F) goto yy53;
- goto yy650;
+ goto yy731;
+yy731:
+ YYDEBUG(731, *YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy730;
+ goto yy53;
} else {
- if(yych != 'A') goto yy53;
- goto yy652;
+ if(yych <= ' ') goto yy730;
+ if(yych <= '@') goto yy53;
+ goto yy732;
}
} else {
- if(yych <= 'a'){
- if(yych <= 'P') goto yy652;
- if(yych <= '`') goto yy53;
- goto yy652;
+ if(yych <= '`'){
+ if(yych != 'P') goto yy53;
+ goto yy732;
} else {
+ if(yych <= 'a') goto yy732;
if(yych != 'p') goto yy53;
- goto yy652;
+ goto yy732;
}
}
-yy652:
- YYDEBUG(652, *YYCURSOR);
+yy732:
+ YYDEBUG(732, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'L'){
if(yych != '.') goto yy53;
- goto yy653;
+ goto yy733;
} else {
- if(yych <= 'M') goto yy654;
- if(yych == 'm') goto yy654;
+ if(yych <= 'M') goto yy734;
+ if(yych == 'm') goto yy734;
goto yy53;
}
-yy653:
- YYDEBUG(653, *YYCURSOR);
+yy733:
+ YYDEBUG(733, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy654;
+ if(yych == 'M') goto yy734;
if(yych != 'm') goto yy53;
- goto yy654;
-yy654:
- YYDEBUG(654, *YYCURSOR);
+ goto yy734;
+yy734:
+ YYDEBUG(734, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '.') goto yy632;
- goto yy631;
-yy655:
- YYDEBUG(655, *YYCURSOR);
+ if(yych <= 0x1F){
+ if(yych <= 0x00) goto yy710;
+ if(yych == 0x09) goto yy710;
+ goto yy53;
+ } else {
+ if(yych <= ' ') goto yy710;
+ if(yych != '.') goto yy53;
+ goto yy735;
+ }
+yy735:
+ YYDEBUG(735, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'V') goto yy656;
+ if(yych <= 0x09){
+ if(yych <= 0x00) goto yy710;
+ if(yych <= 0x08) goto yy53;
+ goto yy710;
+ } else {
+ if(yych == ' ') goto yy710;
+ goto yy53;
+ }
+yy736:
+ YYDEBUG(736, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'V') goto yy737;
if(yych != 'v') goto yy53;
- goto yy656;
-yy656:
- YYDEBUG(656, *YYCURSOR);
+ goto yy737;
+yy737:
+ YYDEBUG(737, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych != 0x09) goto yy698;
+ goto yy738;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'E'){
- if(yych <= 'D') goto yy620;
- goto yy661;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'e') goto yy661;
- goto yy620;
+ if(yych <= 'E') goto yy742;
+ if(yych == 'e') goto yy742;
+ goto yy698;
}
}
-yy657:
- YYDEBUG(657, *YYCURSOR);
+yy738:
+ YYDEBUG(738, *YYCURSOR);
++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
yych = *YYCURSOR;
- goto yy658;
-yy658:
- YYDEBUG(658, *YYCURSOR);
- if(yych <= 0x1F) goto yy53;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy53;
- if(yych >= ':') goto yy53;
- goto yy659;
-yy659:
- YYDEBUG(659, *YYCURSOR);
+ goto yy739;
+yy739:
+ YYDEBUG(739, *YYCURSOR);
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy738;
+ if(yych <= 0x1F) goto yy53;
+ goto yy738;
+ } else {
+ if(yych <= '.'){
+ if(yych <= ',') goto yy53;
+ goto yy738;
+ } else {
+ if(yych <= '/') goto yy53;
+ if(yych >= ':') goto yy53;
+ goto yy740;
+ }
+ }
+yy740:
+ YYDEBUG(740, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) <= '/') goto yy660;
- if(yych <= '9') goto yy666;
- goto yy660;
-yy660:
- YYDEBUG(660, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '/') goto yy741;
+ if(yych <= '9') goto yy747;
+ goto yy741;
+yy741:
+ YYDEBUG(741, *YYCURSOR);
-#line 1072 "ext/date/lib/parse_date.re"
+#line 1098 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("datefull");
TIMELIB_INIT;
@@ -10163,642 +13528,795 @@ yy660:
TIMELIB_DEINIT;
return TIMELIB_DATE_FULL;
}
-#line 8828 "ext/date/lib/parse_date.c"
-yy661:
- YYDEBUG(661, *YYCURSOR);
+#line 12034 "ext/date/lib/parse_date.c"
+yy742:
+ YYDEBUG(742, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy662;
+ if(yych == 'M') goto yy743;
if(yych != 'm') goto yy53;
- goto yy662;
-yy662:
- YYDEBUG(662, *YYCURSOR);
+ goto yy743;
+yy743:
+ YYDEBUG(743, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy663;
+ if(yych == 'B') goto yy744;
if(yych != 'b') goto yy53;
- goto yy663;
-yy663:
- YYDEBUG(663, *YYCURSOR);
+ goto yy744;
+yy744:
+ YYDEBUG(744, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy664;
+ if(yych == 'E') goto yy745;
if(yych != 'e') goto yy53;
- goto yy664;
-yy664:
- YYDEBUG(664, *YYCURSOR);
+ goto yy745;
+yy745:
+ YYDEBUG(745, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy665;
+ if(yych == 'R') goto yy746;
if(yych != 'r') goto yy53;
- goto yy665;
-yy665:
- YYDEBUG(665, *YYCURSOR);
+ goto yy746;
+yy746:
+ YYDEBUG(746, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- if(yych <= '9') goto yy659;
- goto yy620;
-yy666:
- YYDEBUG(666, *YYCURSOR);
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy738;
+ if(yych <= 0x1F) goto yy698;
+ goto yy738;
+ } else {
+ if(yych <= '.'){
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ } else {
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
+ }
+ }
+yy747:
+ YYDEBUG(747, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy660;
- if(yych >= ':') goto yy660;
- goto yy667;
-yy667:
- YYDEBUG(667, *YYCURSOR);
+ if(yych <= '/') goto yy741;
+ if(yych >= ':') goto yy741;
+ goto yy748;
+yy748:
+ YYDEBUG(748, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy660;
- if(yych >= ':') goto yy660;
- goto yy668;
-yy668:
- YYDEBUG(668, *YYCURSOR);
+ if(yych <= '/') goto yy741;
+ if(yych >= ':') goto yy741;
+ goto yy749;
+yy749:
+ YYDEBUG(749, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy660;
-yy669:
- YYDEBUG(669, *YYCURSOR);
+ goto yy741;
+yy750:
+ YYDEBUG(750, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy670;
+ if(yych == 'T') goto yy751;
if(yych != 't') goto yy53;
- goto yy670;
-yy670:
- YYDEBUG(670, *YYCURSOR);
+ goto yy751;
+yy751:
+ YYDEBUG(751, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'O'){
- if(yych <= 'N') goto yy620;
- goto yy671;
+ if(yych <= 'N'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'o') goto yy620;
- goto yy671;
+ if(yych <= 'O') goto yy752;
+ if(yych != 'o') goto yy698;
+ goto yy752;
}
}
-yy671:
- YYDEBUG(671, *YYCURSOR);
+yy752:
+ YYDEBUG(752, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy672;
+ if(yych == 'B') goto yy753;
if(yych != 'b') goto yy53;
- goto yy672;
-yy672:
- YYDEBUG(672, *YYCURSOR);
+ goto yy753;
+yy753:
+ YYDEBUG(753, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy673;
+ if(yych == 'E') goto yy754;
if(yych != 'e') goto yy53;
- goto yy673;
-yy673:
- YYDEBUG(673, *YYCURSOR);
+ goto yy754;
+yy754:
+ YYDEBUG(754, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy665;
- if(yych == 'r') goto yy665;
+ if(yych == 'R') goto yy746;
+ if(yych == 'r') goto yy746;
goto yy53;
-yy674:
- YYDEBUG(674, *YYCURSOR);
+yy755:
+ YYDEBUG(755, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy678;
- if(yych == 'g') goto yy678;
+ if(yych == 'G') goto yy759;
+ if(yych == 'g') goto yy759;
goto yy53;
-yy675:
- YYDEBUG(675, *YYCURSOR);
+yy756:
+ YYDEBUG(756, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy676;
+ if(yych == 'R') goto yy757;
if(yych != 'r') goto yy53;
- goto yy676;
-yy676:
- YYDEBUG(676, *YYCURSOR);
+ goto yy757;
+yy757:
+ YYDEBUG(757, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'I'){
- if(yych <= 'H') goto yy620;
- goto yy677;
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'i') goto yy620;
- goto yy677;
+ if(yych <= 'I') goto yy758;
+ if(yych != 'i') goto yy698;
+ goto yy758;
}
}
-yy677:
- YYDEBUG(677, *YYCURSOR);
+yy758:
+ YYDEBUG(758, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'L') goto yy665;
- if(yych == 'l') goto yy665;
+ if(yych == 'L') goto yy746;
+ if(yych == 'l') goto yy746;
goto yy53;
-yy678:
- YYDEBUG(678, *YYCURSOR);
+yy759:
+ YYDEBUG(759, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'U'){
- if(yych <= 'T') goto yy620;
- goto yy679;
+ if(yych <= 'T'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'u') goto yy620;
- goto yy679;
+ if(yych <= 'U') goto yy760;
+ if(yych != 'u') goto yy698;
+ goto yy760;
}
}
-yy679:
- YYDEBUG(679, *YYCURSOR);
+yy760:
+ YYDEBUG(760, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy680;
+ if(yych == 'S') goto yy761;
if(yych != 's') goto yy53;
- goto yy680;
-yy680:
- YYDEBUG(680, *YYCURSOR);
+ goto yy761;
+yy761:
+ YYDEBUG(761, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy665;
- if(yych == 't') goto yy665;
+ if(yych == 'T') goto yy746;
+ if(yych == 't') goto yy746;
goto yy53;
-yy681:
- YYDEBUG(681, *YYCURSOR);
+yy762:
+ YYDEBUG(762, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
- if(yych == 'L') goto yy688;
+ if(yych == 'L') goto yy769;
if(yych <= 'M') goto yy53;
- goto yy687;
+ goto yy768;
} else {
if(yych <= 'l'){
if(yych <= 'k') goto yy53;
- goto yy688;
+ goto yy769;
} else {
- if(yych == 'n') goto yy687;
+ if(yych == 'n') goto yy768;
goto yy53;
}
}
-yy682:
- YYDEBUG(682, *YYCURSOR);
+yy763:
+ YYDEBUG(763, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy683;
+ if(yych == 'N') goto yy764;
if(yych != 'n') goto yy53;
- goto yy683;
-yy683:
- YYDEBUG(683, *YYCURSOR);
+ goto yy764;
+yy764:
+ YYDEBUG(764, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'U'){
- if(yych <= 'T') goto yy620;
- goto yy684;
+ if(yych <= 'T'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'u') goto yy620;
- goto yy684;
+ if(yych <= 'U') goto yy765;
+ if(yych != 'u') goto yy698;
+ goto yy765;
}
}
-yy684:
- YYDEBUG(684, *YYCURSOR);
+yy765:
+ YYDEBUG(765, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy685;
+ if(yych == 'A') goto yy766;
if(yych != 'a') goto yy53;
- goto yy685;
-yy685:
- YYDEBUG(685, *YYCURSOR);
+ goto yy766;
+yy766:
+ YYDEBUG(766, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy686;
+ if(yych == 'R') goto yy767;
if(yych != 'r') goto yy53;
- goto yy686;
-yy686:
- YYDEBUG(686, *YYCURSOR);
+ goto yy767;
+yy767:
+ YYDEBUG(767, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy665;
- if(yych == 'y') goto yy665;
+ if(yych == 'Y') goto yy746;
+ if(yych == 'y') goto yy746;
goto yy53;
-yy687:
- YYDEBUG(687, *YYCURSOR);
+yy768:
+ YYDEBUG(768, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'E'){
- if(yych <= 'D') goto yy620;
- goto yy665;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'e') goto yy665;
- goto yy620;
+ if(yych <= 'E') goto yy746;
+ if(yych == 'e') goto yy746;
+ goto yy698;
}
}
-yy688:
- YYDEBUG(688, *YYCURSOR);
+yy769:
+ YYDEBUG(769, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'Y'){
- if(yych <= 'X') goto yy620;
- goto yy665;
+ if(yych <= 'X'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'y') goto yy665;
- goto yy620;
+ if(yych <= 'Y') goto yy746;
+ if(yych == 'y') goto yy746;
+ goto yy698;
}
}
-yy689:
- YYDEBUG(689, *YYCURSOR);
+yy770:
+ YYDEBUG(770, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '9') goto yy659;
- if(yych == 'I') goto yy665;
- goto yy620;
+ if(yych <= '9'){
+ if(yych <= '.') goto yy738;
+ if(yych <= '/') goto yy698;
+ goto yy740;
+ } else {
+ if(yych == 'I') goto yy746;
+ goto yy698;
+ }
}
-yy690:
- YYDEBUG(690, *YYCURSOR);
+yy771:
+ YYDEBUG(771, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '9') goto yy659;
- if(yych != 'I') goto yy620;
- goto yy691;
+ if(yych <= '9'){
+ if(yych <= '.') goto yy738;
+ if(yych <= '/') goto yy698;
+ goto yy740;
+ } else {
+ if(yych != 'I') goto yy698;
+ goto yy772;
+ }
}
-yy691:
- YYDEBUG(691, *YYCURSOR);
+yy772:
+ YYDEBUG(772, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '9') goto yy659;
- if(yych == 'I') goto yy665;
- goto yy620;
+ if(yych <= '9'){
+ if(yych <= '.') goto yy738;
+ if(yych <= '/') goto yy698;
+ goto yy740;
+ } else {
+ if(yych == 'I') goto yy746;
+ goto yy698;
+ }
}
-yy692:
- YYDEBUG(692, *YYCURSOR);
+yy773:
+ YYDEBUG(773, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '9') goto yy659;
- if(yych == 'I') goto yy665;
- goto yy620;
+ if(yych <= '9'){
+ if(yych <= '.') goto yy738;
+ if(yych <= '/') goto yy698;
+ goto yy740;
+ } else {
+ if(yych == 'I') goto yy746;
+ goto yy698;
+ }
}
-yy693:
- YYDEBUG(693, *YYCURSOR);
+yy774:
+ YYDEBUG(774, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych == '.') goto yy724;
- goto yy634;
+ if(yych <= '.'){
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ goto yy808;
} else {
- if(yych <= '9') goto yy733;
- if(yych <= ':') goto yy636;
- goto yy634;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy818;
+ if(yych <= ':') goto yy715;
+ goto yy713;
}
-yy694:
- YYDEBUG(694, *YYCURSOR);
+yy775:
+ YYDEBUG(775, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy724;
- goto yy634;
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ if(yych <= '.') goto yy808;
+ goto yy713;
} else {
- if(yych <= '2') goto yy733;
- if(yych <= '9') goto yy649;
- if(yych <= ':') goto yy636;
- goto yy634;
+ if(yych <= '2') goto yy818;
+ if(yych <= '9') goto yy729;
+ if(yych <= ':') goto yy715;
+ goto yy713;
}
-yy695:
- YYDEBUG(695, *YYCURSOR);
+yy776:
+ YYDEBUG(776, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych == '.') goto yy724;
- goto yy634;
+ if(yych <= '.'){
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ goto yy808;
} else {
- if(yych <= '9') goto yy649;
- if(yych <= ':') goto yy636;
- goto yy634;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy729;
+ if(yych <= ':') goto yy715;
+ goto yy713;
}
-yy696:
- YYDEBUG(696, *YYCURSOR);
+yy777:
+ YYDEBUG(777, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy724;
- if(yych == ':') goto yy636;
- goto yy634;
-yy697:
- YYDEBUG(697, *YYCURSOR);
+ if(yych <= '.'){
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ goto yy808;
+ } else {
+ if(yych == ':') goto yy715;
+ goto yy713;
+ }
+yy778:
+ YYDEBUG(778, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy718;
- if(yych == 'e') goto yy718;
+ if(yych == 'E') goto yy801;
+ if(yych == 'e') goto yy801;
goto yy53;
-yy698:
- YYDEBUG(698, *YYCURSOR);
+yy779:
+ YYDEBUG(779, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy715;
- if(yych == 'a') goto yy715;
+ if(yych == 'A') goto yy798;
+ if(yych == 'a') goto yy798;
goto yy53;
-yy699:
- YYDEBUG(699, *YYCURSOR);
+yy780:
+ YYDEBUG(780, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'P') goto yy675;
+ if(yych == 'P') goto yy756;
if(yych <= 'T') goto yy53;
- goto yy674;
+ goto yy755;
} else {
if(yych <= 'p'){
if(yych <= 'o') goto yy53;
- goto yy675;
+ goto yy756;
} else {
- if(yych == 'u') goto yy674;
+ if(yych == 'u') goto yy755;
goto yy53;
}
}
-yy700:
- YYDEBUG(700, *YYCURSOR);
+yy781:
+ YYDEBUG(781, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy708;
- if(yych == 'e') goto yy708;
+ if(yych == 'E') goto yy791;
+ if(yych == 'e') goto yy791;
goto yy53;
-yy701:
- YYDEBUG(701, *YYCURSOR);
+yy782:
+ YYDEBUG(782, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy702;
- if(yych != 'e') goto yy53;
- goto yy702;
-yy702:
- YYDEBUG(702, *YYCURSOR);
+ if(yych == 'E') goto yy785;
+ if(yych == 'e') goto yy785;
+ goto yy53;
+yy783:
+ YYDEBUG(783, *YYCURSOR);
+ ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
+ yych = *YYCURSOR;
+ goto yy784;
+yy784:
+ YYDEBUG(784, *YYCURSOR);
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case 0x09: case ' ': case '-':
+ case '.': goto yy783;
+ case 'A': case 'a': goto yy780;
+ case 'D': case 'd': goto yy782;
+ case 'F': case 'f': goto yy778;
+ case 'I': goto yy697;
+ case 'J': case 'j': goto yy701;
+ case 'M': case 'm': goto yy779;
+ case 'N': case 'n': goto yy704;
+ case 'O': case 'o': goto yy703;
+ case 'S': case 's': goto yy781;
+ case 'V': goto yy699;
+ case 'X': goto yy700;
+ default: goto yy53;
+ }
+yy785:
+ YYDEBUG(785, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy703;
+ if(yych == 'C') goto yy786;
if(yych != 'c') goto yy53;
- goto yy703;
-yy703:
- YYDEBUG(703, *YYCURSOR);
+ goto yy786;
+yy786:
+ YYDEBUG(786, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'E'){
- if(yych <= 'D') goto yy620;
- goto yy704;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'e') goto yy620;
- goto yy704;
+ if(yych <= 'E') goto yy787;
+ if(yych != 'e') goto yy698;
+ goto yy787;
}
}
-yy704:
- YYDEBUG(704, *YYCURSOR);
+yy787:
+ YYDEBUG(787, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy705;
+ if(yych == 'M') goto yy788;
if(yych != 'm') goto yy53;
- goto yy705;
-yy705:
- YYDEBUG(705, *YYCURSOR);
+ goto yy788;
+yy788:
+ YYDEBUG(788, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy706;
+ if(yych == 'B') goto yy789;
if(yych != 'b') goto yy53;
- goto yy706;
-yy706:
- YYDEBUG(706, *YYCURSOR);
+ goto yy789;
+yy789:
+ YYDEBUG(789, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy707;
+ if(yych == 'E') goto yy790;
if(yych != 'e') goto yy53;
- goto yy707;
-yy707:
- YYDEBUG(707, *YYCURSOR);
+ goto yy790;
+yy790:
+ YYDEBUG(790, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy665;
- if(yych == 'r') goto yy665;
+ if(yych == 'R') goto yy746;
+ if(yych == 'r') goto yy746;
goto yy53;
-yy708:
- YYDEBUG(708, *YYCURSOR);
+yy791:
+ YYDEBUG(791, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'P') goto yy709;
+ if(yych == 'P') goto yy792;
if(yych != 'p') goto yy53;
- goto yy709;
-yy709:
- YYDEBUG(709, *YYCURSOR);
+ goto yy792;
+yy792:
+ YYDEBUG(792, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'T'){
- if(yych <= 'S') goto yy620;
- goto yy710;
+ if(yych <= 'S'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 't') goto yy620;
- goto yy710;
+ if(yych <= 'T') goto yy793;
+ if(yych != 't') goto yy698;
+ goto yy793;
}
}
-yy710:
- YYDEBUG(710, *YYCURSOR);
+yy793:
+ YYDEBUG(793, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'E'){
- if(yych <= 'D') goto yy620;
- goto yy711;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'e') goto yy620;
- goto yy711;
+ if(yych <= 'E') goto yy794;
+ if(yych != 'e') goto yy698;
+ goto yy794;
}
}
-yy711:
- YYDEBUG(711, *YYCURSOR);
+yy794:
+ YYDEBUG(794, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy712;
+ if(yych == 'M') goto yy795;
if(yych != 'm') goto yy53;
- goto yy712;
-yy712:
- YYDEBUG(712, *YYCURSOR);
+ goto yy795;
+yy795:
+ YYDEBUG(795, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy713;
+ if(yych == 'B') goto yy796;
if(yych != 'b') goto yy53;
- goto yy713;
-yy713:
- YYDEBUG(713, *YYCURSOR);
+ goto yy796;
+yy796:
+ YYDEBUG(796, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy714;
+ if(yych == 'E') goto yy797;
if(yych != 'e') goto yy53;
- goto yy714;
-yy714:
- YYDEBUG(714, *YYCURSOR);
+ goto yy797;
+yy797:
+ YYDEBUG(797, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy665;
- if(yych == 'r') goto yy665;
+ if(yych == 'R') goto yy746;
+ if(yych == 'r') goto yy746;
goto yy53;
-yy715:
- YYDEBUG(715, *YYCURSOR);
+yy798:
+ YYDEBUG(798, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
- if(yych == 'R') goto yy716;
+ if(yych == 'R') goto yy799;
if(yych <= 'X') goto yy53;
- goto yy665;
+ goto yy746;
} else {
if(yych <= 'r'){
if(yych <= 'q') goto yy53;
- goto yy716;
+ goto yy799;
} else {
- if(yych == 'y') goto yy665;
+ if(yych == 'y') goto yy746;
goto yy53;
}
}
-yy716:
- YYDEBUG(716, *YYCURSOR);
+yy799:
+ YYDEBUG(799, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'C'){
- if(yych <= 'B') goto yy620;
- goto yy717;
+ if(yych <= 'B'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'c') goto yy620;
- goto yy717;
+ if(yych <= 'C') goto yy800;
+ if(yych != 'c') goto yy698;
+ goto yy800;
}
}
-yy717:
- YYDEBUG(717, *YYCURSOR);
+yy800:
+ YYDEBUG(800, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy665;
- if(yych == 'h') goto yy665;
+ if(yych == 'H') goto yy746;
+ if(yych == 'h') goto yy746;
goto yy53;
-yy718:
- YYDEBUG(718, *YYCURSOR);
+yy801:
+ YYDEBUG(801, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy719;
+ if(yych == 'B') goto yy802;
if(yych != 'b') goto yy53;
- goto yy719;
-yy719:
- YYDEBUG(719, *YYCURSOR);
+ goto yy802;
+yy802:
+ YYDEBUG(802, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- goto yy659;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
+ } else {
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ goto yy738;
+ }
} else {
- if(yych <= 'R'){
- if(yych <= 'Q') goto yy620;
- goto yy720;
+ if(yych <= 'Q'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 'r') goto yy620;
- goto yy720;
+ if(yych <= 'R') goto yy803;
+ if(yych != 'r') goto yy698;
+ goto yy803;
}
}
-yy720:
- YYDEBUG(720, *YYCURSOR);
+yy803:
+ YYDEBUG(803, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'U') goto yy721;
+ if(yych == 'U') goto yy804;
if(yych != 'u') goto yy53;
- goto yy721;
-yy721:
- YYDEBUG(721, *YYCURSOR);
+ goto yy804;
+yy804:
+ YYDEBUG(804, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy722;
+ if(yych == 'A') goto yy805;
if(yych != 'a') goto yy53;
- goto yy722;
-yy722:
- YYDEBUG(722, *YYCURSOR);
+ goto yy805;
+yy805:
+ YYDEBUG(805, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy723;
+ if(yych == 'R') goto yy806;
if(yych != 'r') goto yy53;
- goto yy723;
-yy723:
- YYDEBUG(723, *YYCURSOR);
+ goto yy806;
+yy806:
+ YYDEBUG(806, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy665;
- if(yych == 'y') goto yy665;
+ if(yych == 'Y') goto yy746;
+ if(yych == 'y') goto yy746;
goto yy53;
-yy724:
- YYDEBUG(724, *YYCURSOR);
+yy807:
+ YYDEBUG(807, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy725;
- if(yych <= '6') goto yy726;
- if(yych <= '9') goto yy727;
+ if(yych <= '9') goto yy817;
goto yy53;
-yy725:
- YYDEBUG(725, *YYCURSOR);
+yy808:
+ YYDEBUG(808, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '5') goto yy809;
+ if(yych <= '6') goto yy810;
+ if(yych <= '9') goto yy811;
+ goto yy53;
+yy809:
+ YYDEBUG(809, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy732;
- goto yy634;
-yy726:
- YYDEBUG(726, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy816;
+ goto yy713;
+yy810:
+ YYDEBUG(810, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy640;
- goto yy634;
+ if(yych == '.') goto yy719;
+ goto yy713;
} else {
- if(yych <= '0') goto yy732;
- if(yych <= '9') goto yy728;
- goto yy634;
+ if(yych <= '0') goto yy816;
+ if(yych <= '9') goto yy812;
+ goto yy713;
}
-yy727:
- YYDEBUG(727, *YYCURSOR);
+yy811:
+ YYDEBUG(811, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych >= ':') goto yy634;
- goto yy728;
-yy728:
- YYDEBUG(728, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ if(yych >= ':') goto yy713;
+ goto yy812;
+yy812:
+ YYDEBUG(812, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) <= '/') goto yy729;
- if(yych <= '9') goto yy730;
- goto yy729;
-yy729:
- YYDEBUG(729, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '/') goto yy813;
+ if(yych <= '9') goto yy814;
+ goto yy813;
+yy813:
+ YYDEBUG(813, *YYCURSOR);
-#line 1086 "ext/date/lib/parse_date.re"
+#line 1112 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("pointed date");
TIMELIB_INIT;
@@ -10810,588 +14328,652 @@ yy729:
TIMELIB_DEINIT;
return TIMELIB_DATE_FULL_POINTED;
}
-#line 9337 "ext/date/lib/parse_date.c"
-yy730:
- YYDEBUG(730, *YYCURSOR);
+#line 12689 "ext/date/lib/parse_date.c"
+yy814:
+ YYDEBUG(814, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy729;
- if(yych >= ':') goto yy729;
- goto yy731;
-yy731:
- YYDEBUG(731, *YYCURSOR);
+ if(yych <= '/') goto yy813;
+ if(yych >= ':') goto yy813;
+ goto yy815;
+yy815:
+ YYDEBUG(815, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy729;
-yy732:
- YYDEBUG(732, *YYCURSOR);
+ goto yy813;
+yy816:
+ YYDEBUG(816, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= '-'){
- if(yych == ' ') goto yy644;
- goto yy634;
+ if(yych <= '9'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy723;
+ if(yych <= 0x1F) goto yy713;
+ goto yy723;
} else {
- if(yych <= '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy730;
- goto yy634;
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ goto yy814;
}
} else {
- if(yych <= '`'){
- if(yych <= 'A') goto yy646;
- if(yych == 'P') goto yy646;
- goto yy634;
+ if(yych <= 'P'){
+ if(yych == 'A') goto yy725;
+ if(yych <= 'O') goto yy713;
+ goto yy725;
} else {
- if(yych <= 'a') goto yy646;
- if(yych == 'p') goto yy646;
- goto yy634;
+ if(yych <= 'a'){
+ if(yych <= '`') goto yy713;
+ goto yy725;
+ } else {
+ if(yych == 'p') goto yy725;
+ goto yy713;
+ }
}
}
-yy733:
- YYDEBUG(733, *YYCURSOR);
+yy817:
+ YYDEBUG(817, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy813;
+ if(yych <= '9') goto yy812;
+ goto yy813;
+yy818:
+ YYDEBUG(818, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= '-'){
- if(yych == ' ') goto yy650;
- goto yy634;
+ if(yych <= ':'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy730;
+ if(yych <= 0x1F) goto yy713;
+ goto yy730;
} else {
- if(yych <= '.') goto yy724;
- if(yych == ':') goto yy636;
- goto yy634;
+ if(yych <= '-'){
+ if(yych <= ',') goto yy713;
+ goto yy807;
+ } else {
+ if(yych <= '.') goto yy808;
+ if(yych <= '9') goto yy713;
+ goto yy715;
+ }
}
} else {
- if(yych <= '`'){
- if(yych <= 'A') goto yy652;
- if(yych == 'P') goto yy652;
- goto yy634;
+ if(yych <= 'P'){
+ if(yych == 'A') goto yy732;
+ if(yych <= 'O') goto yy713;
+ goto yy732;
} else {
- if(yych <= 'a') goto yy652;
- if(yych == 'p') goto yy652;
- goto yy634;
+ if(yych <= 'a'){
+ if(yych <= '`') goto yy713;
+ goto yy732;
+ } else {
+ if(yych == 'p') goto yy732;
+ goto yy713;
+ }
}
}
-yy734:
- YYDEBUG(734, *YYCURSOR);
+yy819:
+ YYDEBUG(819, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy773;
- if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy736;
- goto yy53;
-yy735:
- YYDEBUG(735, *YYCURSOR);
+ if(yych <= '.'){
+ if(yych <= ',') goto yy53;
+ if(yych <= '-') goto yy858;
+ goto yy807;
+ } else {
+ if(yych <= '/') goto yy53;
+ if(yych <= '9') goto yy821;
+ goto yy53;
+ }
+yy820:
+ YYDEBUG(820, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy773;
- if(yych <= '/') goto yy53;
- if(yych >= '3') goto yy53;
- goto yy736;
-yy736:
- YYDEBUG(736, *YYCURSOR);
+ if(yych <= '.'){
+ if(yych <= ',') goto yy53;
+ if(yych <= '-') goto yy858;
+ goto yy807;
+ } else {
+ if(yych <= '/') goto yy53;
+ if(yych >= '3') goto yy53;
+ goto yy821;
+ }
+yy821:
+ YYDEBUG(821, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy773;
+ if(yych <= ',') goto yy53;
+ if(yych <= '-') goto yy858;
+ if(yych <= '.') goto yy807;
goto yy53;
-yy737:
- YYDEBUG(737, *YYCURSOR);
+yy822:
+ YYDEBUG(822, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'A') goto yy769;
+ if(yych == 'A') goto yy854;
if(yych <= 'T') goto yy53;
- goto yy768;
+ goto yy853;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
- goto yy769;
+ goto yy854;
} else {
- if(yych == 'u') goto yy768;
+ if(yych == 'u') goto yy853;
goto yy53;
}
}
-yy738:
- YYDEBUG(738, *YYCURSOR);
+yy823:
+ YYDEBUG(823, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy766;
- if(yych == 'e') goto yy766;
+ if(yych == 'E') goto yy851;
+ if(yych == 'e') goto yy851;
goto yy53;
-yy739:
- YYDEBUG(739, *YYCURSOR);
+yy824:
+ YYDEBUG(824, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy763;
- if(yych == 'a') goto yy763;
+ if(yych == 'A') goto yy848;
+ if(yych == 'a') goto yy848;
goto yy53;
-yy740:
- YYDEBUG(740, *YYCURSOR);
+yy825:
+ YYDEBUG(825, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'P') goto yy760;
+ if(yych == 'P') goto yy845;
if(yych <= 'T') goto yy53;
- goto yy759;
+ goto yy844;
} else {
if(yych <= 'p'){
if(yych <= 'o') goto yy53;
- goto yy760;
+ goto yy845;
} else {
- if(yych == 'u') goto yy759;
+ if(yych == 'u') goto yy844;
goto yy53;
}
}
-yy741:
- YYDEBUG(741, *YYCURSOR);
+yy826:
+ YYDEBUG(826, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy756;
- if(yych == 'e') goto yy756;
+ if(yych == 'E') goto yy841;
+ if(yych == 'e') goto yy841;
goto yy53;
-yy742:
- YYDEBUG(742, *YYCURSOR);
+yy827:
+ YYDEBUG(827, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy754;
- if(yych == 'c') goto yy754;
+ if(yych == 'C') goto yy839;
+ if(yych == 'c') goto yy839;
goto yy53;
-yy743:
- YYDEBUG(743, *YYCURSOR);
+yy828:
+ YYDEBUG(828, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy752;
- if(yych == 'o') goto yy752;
+ if(yych == 'O') goto yy837;
+ if(yych == 'o') goto yy837;
goto yy53;
-yy744:
- YYDEBUG(744, *YYCURSOR);
+yy829:
+ YYDEBUG(829, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy745;
+ if(yych == 'E') goto yy830;
if(yych != 'e') goto yy53;
- goto yy745;
-yy745:
- YYDEBUG(745, *YYCURSOR);
+ goto yy830;
+yy830:
+ YYDEBUG(830, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy746;
+ if(yych == 'C') goto yy831;
if(yych != 'c') goto yy53;
- goto yy746;
-yy746:
- YYDEBUG(746, *YYCURSOR);
+ goto yy831;
+yy831:
+ YYDEBUG(831, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych >= '.') goto yy738;
+ goto yy832;
}
} else {
- if(yych <= 'E'){
- if(yych <= '9') goto yy659;
- if(yych <= 'D') goto yy620;
- goto yy704;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'e') goto yy704;
- goto yy620;
+ if(yych <= 'E') goto yy787;
+ if(yych == 'e') goto yy787;
+ goto yy698;
}
}
-yy747:
- YYDEBUG(747, *YYCURSOR);
+yy832:
+ YYDEBUG(832, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy658;
- if(yych <= '0') goto yy748;
- if(yych <= '2') goto yy749;
- if(yych <= '3') goto yy750;
- goto yy658;
-yy748:
- YYDEBUG(748, *YYCURSOR);
+ if(yych <= '/') goto yy739;
+ if(yych <= '0') goto yy833;
+ if(yych <= '2') goto yy834;
+ if(yych <= '3') goto yy835;
+ goto yy739;
+yy833:
+ YYDEBUG(833, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy660;
- if(yych <= '0') goto yy666;
- if(yych <= '9') goto yy751;
- goto yy660;
-yy749:
- YYDEBUG(749, *YYCURSOR);
+ if(yych <= '/') goto yy741;
+ if(yych <= '0') goto yy747;
+ if(yych <= '9') goto yy836;
+ goto yy741;
+yy834:
+ YYDEBUG(834, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy660;
- if(yych <= '9') goto yy751;
- goto yy660;
-yy750:
- YYDEBUG(750, *YYCURSOR);
+ if(yych <= '/') goto yy741;
+ if(yych <= '9') goto yy836;
+ goto yy741;
+yy835:
+ YYDEBUG(835, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy660;
- if(yych <= '1') goto yy751;
- if(yych <= '9') goto yy666;
- goto yy660;
-yy751:
- YYDEBUG(751, *YYCURSOR);
+ if(yych <= '/') goto yy741;
+ if(yych <= '1') goto yy836;
+ if(yych <= '9') goto yy747;
+ goto yy741;
+yy836:
+ YYDEBUG(836, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy660;
- if(yych <= '9') goto yy667;
- goto yy660;
-yy752:
- YYDEBUG(752, *YYCURSOR);
+ if(yych <= '/') goto yy741;
+ if(yych <= '9') goto yy748;
+ goto yy741;
+yy837:
+ YYDEBUG(837, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'V') goto yy753;
+ if(yych == 'V') goto yy838;
if(yych != 'v') goto yy53;
- goto yy753;
-yy753:
- YYDEBUG(753, *YYCURSOR);
+ goto yy838;
+yy838:
+ YYDEBUG(838, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'E'){
- if(yych <= '9') goto yy659;
- if(yych <= 'D') goto yy620;
- goto yy661;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'e') goto yy661;
- goto yy620;
+ if(yych <= 'E') goto yy742;
+ if(yych == 'e') goto yy742;
+ goto yy698;
}
}
-yy754:
- YYDEBUG(754, *YYCURSOR);
+yy839:
+ YYDEBUG(839, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy755;
+ if(yych == 'T') goto yy840;
if(yych != 't') goto yy53;
- goto yy755;
-yy755:
- YYDEBUG(755, *YYCURSOR);
+ goto yy840;
+yy840:
+ YYDEBUG(840, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'O'){
- if(yych <= '9') goto yy659;
- if(yych <= 'N') goto yy620;
- goto yy671;
+ if(yych <= 'N'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'o') goto yy671;
- goto yy620;
+ if(yych <= 'O') goto yy752;
+ if(yych == 'o') goto yy752;
+ goto yy698;
}
}
-yy756:
- YYDEBUG(756, *YYCURSOR);
+yy841:
+ YYDEBUG(841, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'P') goto yy757;
+ if(yych == 'P') goto yy842;
if(yych != 'p') goto yy53;
- goto yy757;
-yy757:
- YYDEBUG(757, *YYCURSOR);
+ goto yy842;
+yy842:
+ YYDEBUG(842, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'T'){
- if(yych <= '9') goto yy659;
- if(yych <= 'S') goto yy620;
- goto yy758;
+ if(yych <= 'S'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych != 't') goto yy620;
- goto yy758;
+ if(yych <= 'T') goto yy843;
+ if(yych != 't') goto yy698;
+ goto yy843;
}
}
-yy758:
- YYDEBUG(758, *YYCURSOR);
+yy843:
+ YYDEBUG(843, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'E'){
- if(yych <= '9') goto yy659;
- if(yych <= 'D') goto yy620;
- goto yy711;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'e') goto yy711;
- goto yy620;
+ if(yych <= 'E') goto yy794;
+ if(yych == 'e') goto yy794;
+ goto yy698;
}
}
-yy759:
- YYDEBUG(759, *YYCURSOR);
+yy844:
+ YYDEBUG(844, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy762;
- if(yych == 'g') goto yy762;
+ if(yych == 'G') goto yy847;
+ if(yych == 'g') goto yy847;
goto yy53;
-yy760:
- YYDEBUG(760, *YYCURSOR);
+yy845:
+ YYDEBUG(845, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy761;
+ if(yych == 'R') goto yy846;
if(yych != 'r') goto yy53;
- goto yy761;
-yy761:
- YYDEBUG(761, *YYCURSOR);
+ goto yy846;
+yy846:
+ YYDEBUG(846, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'I'){
- if(yych <= '9') goto yy659;
- if(yych <= 'H') goto yy620;
- goto yy677;
+ if(yych <= 'H'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'i') goto yy677;
- goto yy620;
+ if(yych <= 'I') goto yy758;
+ if(yych == 'i') goto yy758;
+ goto yy698;
}
}
-yy762:
- YYDEBUG(762, *YYCURSOR);
+yy847:
+ YYDEBUG(847, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'U'){
- if(yych <= '9') goto yy659;
- if(yych <= 'T') goto yy620;
- goto yy679;
+ if(yych <= 'T'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'u') goto yy679;
- goto yy620;
+ if(yych <= 'U') goto yy760;
+ if(yych == 'u') goto yy760;
+ goto yy698;
}
}
-yy763:
- YYDEBUG(763, *YYCURSOR);
+yy848:
+ YYDEBUG(848, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
- if(yych == 'R') goto yy764;
+ if(yych == 'R') goto yy849;
if(yych <= 'X') goto yy53;
- goto yy765;
+ goto yy850;
} else {
if(yych <= 'r'){
if(yych <= 'q') goto yy53;
- goto yy764;
+ goto yy849;
} else {
- if(yych == 'y') goto yy765;
+ if(yych == 'y') goto yy850;
goto yy53;
}
}
-yy764:
- YYDEBUG(764, *YYCURSOR);
+yy849:
+ YYDEBUG(849, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'C'){
- if(yych <= '9') goto yy659;
- if(yych <= 'B') goto yy620;
- goto yy717;
+ if(yych <= 'B'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'c') goto yy717;
- goto yy620;
+ if(yych <= 'C') goto yy800;
+ if(yych == 'c') goto yy800;
+ goto yy698;
}
}
-yy765:
- YYDEBUG(765, *YYCURSOR);
+yy850:
+ YYDEBUG(850, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '-'){
- if(yych <= 0x1F) goto yy620;
- if(yych <= ',') goto yy657;
- goto yy747;
+ if(yych <= ','){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy698;
+ goto yy738;
+ } else {
+ if(yych == ' ') goto yy738;
+ goto yy698;
+ }
} else {
- if(yych <= '.') goto yy657;
- if(yych <= '/') goto yy620;
- if(yych <= '9') goto yy659;
- goto yy620;
+ if(yych <= '.'){
+ if(yych <= '-') goto yy832;
+ goto yy738;
+ } else {
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
+ }
}
-yy766:
- YYDEBUG(766, *YYCURSOR);
+yy851:
+ YYDEBUG(851, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy767;
+ if(yych == 'B') goto yy852;
if(yych != 'b') goto yy53;
- goto yy767;
-yy767:
- YYDEBUG(767, *YYCURSOR);
+ goto yy852;
+yy852:
+ YYDEBUG(852, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'R'){
- if(yych <= '9') goto yy659;
- if(yych <= 'Q') goto yy620;
- goto yy720;
+ if(yych <= 'Q'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'r') goto yy720;
- goto yy620;
+ if(yych <= 'R') goto yy803;
+ if(yych == 'r') goto yy803;
+ goto yy698;
}
}
-yy768:
- YYDEBUG(768, *YYCURSOR);
+yy853:
+ YYDEBUG(853, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
- if(yych == 'L') goto yy772;
+ if(yych == 'L') goto yy857;
if(yych <= 'M') goto yy53;
- goto yy771;
+ goto yy856;
} else {
if(yych <= 'l'){
if(yych <= 'k') goto yy53;
- goto yy772;
+ goto yy857;
} else {
- if(yych == 'n') goto yy771;
+ if(yych == 'n') goto yy856;
goto yy53;
}
}
-yy769:
- YYDEBUG(769, *YYCURSOR);
+yy854:
+ YYDEBUG(854, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy770;
+ if(yych == 'N') goto yy855;
if(yych != 'n') goto yy53;
- goto yy770;
-yy770:
- YYDEBUG(770, *YYCURSOR);
+ goto yy855;
+yy855:
+ YYDEBUG(855, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'U'){
- if(yych <= '9') goto yy659;
- if(yych <= 'T') goto yy620;
- goto yy684;
+ if(yych <= 'T'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'u') goto yy684;
- goto yy620;
+ if(yych <= 'U') goto yy765;
+ if(yych == 'u') goto yy765;
+ goto yy698;
}
}
-yy771:
- YYDEBUG(771, *YYCURSOR);
+yy856:
+ YYDEBUG(856, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'E'){
- if(yych <= '9') goto yy659;
- if(yych <= 'D') goto yy620;
- goto yy665;
+ if(yych <= 'D'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'e') goto yy665;
- goto yy620;
+ if(yych <= 'E') goto yy746;
+ if(yych == 'e') goto yy746;
+ goto yy698;
}
}
-yy772:
- YYDEBUG(772, *YYCURSOR);
+yy857:
+ YYDEBUG(857, *YYCURSOR);
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy620;
- goto yy657;
+ if(yych <= '.'){
+ if(yych <= 0x1F){
+ if(yych == 0x09) goto yy738;
+ goto yy698;
} else {
- if(yych <= '-') goto yy747;
- if(yych <= '.') goto yy657;
- goto yy620;
+ if(yych <= ' ') goto yy738;
+ if(yych <= ',') goto yy698;
+ if(yych <= '-') goto yy832;
+ goto yy738;
}
} else {
- if(yych <= 'Y'){
- if(yych <= '9') goto yy659;
- if(yych <= 'X') goto yy620;
- goto yy665;
+ if(yych <= 'X'){
+ if(yych <= '/') goto yy698;
+ if(yych <= '9') goto yy740;
+ goto yy698;
} else {
- if(yych == 'y') goto yy665;
- goto yy620;
+ if(yych <= 'Y') goto yy746;
+ if(yych == 'y') goto yy746;
+ goto yy698;
}
}
-yy773:
- YYDEBUG(773, *YYCURSOR);
+yy858:
+ YYDEBUG(858, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '2') goto yy774;
- if(yych <= '3') goto yy776;
- if(yych <= '9') goto yy777;
+ if(yych <= '2') goto yy859;
+ if(yych <= '3') goto yy861;
+ if(yych <= '9') goto yy862;
goto yy53;
-yy774:
- YYDEBUG(774, *YYCURSOR);
+yy859:
+ YYDEBUG(859, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych <= '/') goto yy775;
- if(yych <= '9') goto yy777;
- if(yych >= 'n') goto yy779;
- goto yy775;
+ if(yych <= '/') goto yy860;
+ if(yych <= '9') goto yy868;
+ if(yych >= 'n') goto yy864;
+ goto yy860;
} else {
if(yych <= 'r'){
- if(yych >= 'r') goto yy780;
- goto yy775;
+ if(yych >= 'r') goto yy865;
+ goto yy860;
} else {
- if(yych <= 's') goto yy778;
- if(yych <= 't') goto yy781;
- goto yy775;
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
}
}
-yy775:
- YYDEBUG(775, *YYCURSOR);
+yy860:
+ YYDEBUG(860, *YYCURSOR);
-#line 1059 "ext/date/lib/parse_date.re"
+#line 1085 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("gnudateshort");
TIMELIB_INIT;
@@ -11403,90 +14985,119 @@ yy775:
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
-#line 9838 "ext/date/lib/parse_date.c"
-yy776:
- YYDEBUG(776, *YYCURSOR);
+#line 13252 "ext/date/lib/parse_date.c"
+yy861:
+ YYDEBUG(861, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych <= '/') goto yy775;
- if(yych <= '1') goto yy777;
- if(yych <= 'm') goto yy775;
- goto yy779;
+ if(yych <= '1'){
+ if(yych <= '/') goto yy860;
+ goto yy868;
+ } else {
+ if(yych <= '9') goto yy812;
+ if(yych <= 'm') goto yy860;
+ goto yy864;
+ }
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy775;
- goto yy780;
+ if(yych <= 'q') goto yy860;
+ goto yy865;
} else {
- if(yych <= 's') goto yy778;
- if(yych <= 't') goto yy781;
- goto yy775;
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
}
}
-yy777:
- YYDEBUG(777, *YYCURSOR);
+yy862:
+ YYDEBUG(862, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'q'){
- if(yych == 'n') goto yy779;
- goto yy775;
+ if(yych <= 'n'){
+ if(yych <= '/') goto yy860;
+ if(yych <= '9') goto yy812;
+ if(yych <= 'm') goto yy860;
+ goto yy864;
} else {
- if(yych <= 'r') goto yy780;
- if(yych <= 's') goto yy778;
- if(yych <= 't') goto yy781;
- goto yy775;
+ if(yych <= 'r'){
+ if(yych <= 'q') goto yy860;
+ goto yy865;
+ } else {
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
+ }
}
-yy778:
- YYDEBUG(778, *YYCURSOR);
+yy863:
+ YYDEBUG(863, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 't') goto yy782;
+ if(yych == 't') goto yy867;
goto yy53;
-yy779:
- YYDEBUG(779, *YYCURSOR);
+yy864:
+ YYDEBUG(864, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy782;
+ if(yych == 'd') goto yy867;
goto yy53;
-yy780:
- YYDEBUG(780, *YYCURSOR);
+yy865:
+ YYDEBUG(865, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy782;
+ if(yych == 'd') goto yy867;
goto yy53;
-yy781:
- YYDEBUG(781, *YYCURSOR);
+yy866:
+ YYDEBUG(866, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != 'h') goto yy53;
- goto yy782;
-yy782:
- YYDEBUG(782, *YYCURSOR);
+ goto yy867;
+yy867:
+ YYDEBUG(867, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy775;
-yy783:
- YYDEBUG(783, *YYCURSOR);
+ goto yy860;
+yy868:
+ YYDEBUG(868, *YYCURSOR);
+ yyaccept = 12;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'n'){
+ if(yych <= '/') goto yy860;
+ if(yych <= '9') goto yy814;
+ if(yych <= 'm') goto yy860;
+ goto yy864;
+ } else {
+ if(yych <= 'r'){
+ if(yych <= 'q') goto yy860;
+ goto yy865;
+ } else {
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
+ }
+ }
+yy869:
+ YYDEBUG(869, *YYCURSOR);
yyaccept = 13;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
if(yych <= '/'){
- if(yych >= '/') goto yy837;
- goto yy784;
+ if(yych >= '/') goto yy923;
+ goto yy870;
} else {
- if(yych <= '9') goto yy786;
- if(yych >= 'n') goto yy834;
- goto yy784;
+ if(yych <= '9') goto yy872;
+ if(yych >= 'n') goto yy920;
+ goto yy870;
}
} else {
if(yych <= 'r'){
- if(yych >= 'r') goto yy835;
- goto yy784;
+ if(yych >= 'r') goto yy921;
+ goto yy870;
} else {
- if(yych <= 's') goto yy833;
- if(yych <= 't') goto yy836;
- goto yy784;
+ if(yych <= 's') goto yy919;
+ if(yych <= 't') goto yy922;
+ goto yy870;
}
}
-yy784:
- YYDEBUG(784, *YYCURSOR);
+yy870:
+ YYDEBUG(870, *YYCURSOR);
-#line 1032 "ext/date/lib/parse_date.re"
+#line 1058 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("americanshort | american");
TIMELIB_INIT;
@@ -11500,255 +15111,261 @@ yy784:
TIMELIB_DEINIT;
return TIMELIB_AMERICAN;
}
-#line 9917 "ext/date/lib/parse_date.c"
-yy785:
- YYDEBUG(785, *YYCURSOR);
+#line 13358 "ext/date/lib/parse_date.c"
+yy871:
+ YYDEBUG(871, *YYCURSOR);
yyaccept = 13;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
if(yych <= '/'){
- if(yych <= '.') goto yy784;
- goto yy837;
+ if(yych <= '.') goto yy870;
+ goto yy923;
} else {
- if(yych <= '1') goto yy786;
- if(yych <= 'm') goto yy784;
- goto yy834;
+ if(yych <= '1') goto yy872;
+ if(yych <= 'm') goto yy870;
+ goto yy920;
}
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy784;
- goto yy835;
+ if(yych <= 'q') goto yy870;
+ goto yy921;
} else {
- if(yych <= 's') goto yy833;
- if(yych <= 't') goto yy836;
- goto yy784;
+ if(yych <= 's') goto yy919;
+ if(yych <= 't') goto yy922;
+ goto yy870;
}
}
-yy786:
- YYDEBUG(786, *YYCURSOR);
+yy872:
+ YYDEBUG(872, *YYCURSOR);
yyaccept = 13;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych == '/') goto yy837;
- if(yych <= 'm') goto yy784;
- goto yy834;
+ if(yych == '/') goto yy923;
+ if(yych <= 'm') goto yy870;
+ goto yy920;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy784;
- goto yy835;
+ if(yych <= 'q') goto yy870;
+ goto yy921;
} else {
- if(yych <= 's') goto yy833;
- if(yych <= 't') goto yy836;
- goto yy784;
+ if(yych <= 's') goto yy919;
+ if(yych <= 't') goto yy922;
+ goto yy870;
}
}
-yy787:
- YYDEBUG(787, *YYCURSOR);
+yy873:
+ YYDEBUG(873, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'A') goto yy832;
+ if(yych == 'A') goto yy918;
if(yych <= 'T') goto yy53;
- goto yy831;
+ goto yy917;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
- goto yy832;
+ goto yy918;
} else {
- if(yych == 'u') goto yy831;
+ if(yych == 'u') goto yy917;
goto yy53;
}
}
-yy788:
- YYDEBUG(788, *YYCURSOR);
+yy874:
+ YYDEBUG(874, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy830;
- if(yych == 'e') goto yy830;
+ if(yych == 'E') goto yy916;
+ if(yych == 'e') goto yy916;
goto yy53;
-yy789:
- YYDEBUG(789, *YYCURSOR);
+yy875:
+ YYDEBUG(875, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy829;
- if(yych == 'a') goto yy829;
+ if(yych == 'A') goto yy915;
+ if(yych == 'a') goto yy915;
goto yy53;
-yy790:
- YYDEBUG(790, *YYCURSOR);
+yy876:
+ YYDEBUG(876, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'P') goto yy828;
+ if(yych == 'P') goto yy914;
if(yych <= 'T') goto yy53;
- goto yy827;
+ goto yy913;
} else {
if(yych <= 'p'){
if(yych <= 'o') goto yy53;
- goto yy828;
+ goto yy914;
} else {
- if(yych == 'u') goto yy827;
+ if(yych == 'u') goto yy913;
goto yy53;
}
}
-yy791:
- YYDEBUG(791, *YYCURSOR);
+yy877:
+ YYDEBUG(877, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy825;
- if(yych == 'e') goto yy825;
+ if(yych == 'E') goto yy911;
+ if(yych == 'e') goto yy911;
goto yy53;
-yy792:
- YYDEBUG(792, *YYCURSOR);
+yy878:
+ YYDEBUG(878, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy824;
- if(yych == 'c') goto yy824;
+ if(yych == 'C') goto yy910;
+ if(yych == 'c') goto yy910;
goto yy53;
-yy793:
- YYDEBUG(793, *YYCURSOR);
+yy879:
+ YYDEBUG(879, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy823;
- if(yych == 'o') goto yy823;
+ if(yych == 'O') goto yy909;
+ if(yych == 'o') goto yy909;
goto yy53;
-yy794:
- YYDEBUG(794, *YYCURSOR);
+yy880:
+ YYDEBUG(880, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy795;
+ if(yych == 'E') goto yy881;
if(yych != 'e') goto yy53;
- goto yy795;
-yy795:
- YYDEBUG(795, *YYCURSOR);
+ goto yy881;
+yy881:
+ YYDEBUG(881, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy796;
+ if(yych == 'C') goto yy882;
if(yych != 'c') goto yy53;
- goto yy796;
-yy796:
- YYDEBUG(796, *YYCURSOR);
+ goto yy882;
+yy882:
+ YYDEBUG(882, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '/') goto yy53;
- goto yy797;
-yy797:
- YYDEBUG(797, *YYCURSOR);
+ goto yy883;
+yy883:
+ YYDEBUG(883, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy798;
-yy798:
- YYDEBUG(798, *YYCURSOR);
+ goto yy884;
+yy884:
+ YYDEBUG(884, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy799;
-yy799:
- YYDEBUG(799, *YYCURSOR);
+ goto yy885;
+yy885:
+ YYDEBUG(885, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy800;
-yy800:
- YYDEBUG(800, *YYCURSOR);
+ goto yy886;
+yy886:
+ YYDEBUG(886, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy801;
-yy801:
- YYDEBUG(801, *YYCURSOR);
+ goto yy887;
+yy887:
+ YYDEBUG(887, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy802;
-yy802:
- YYDEBUG(802, *YYCURSOR);
+ goto yy888;
+yy888:
+ YYDEBUG(888, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy803;
- if(yych <= '2') goto yy804;
+ if(yych <= '1') goto yy889;
+ if(yych <= '2') goto yy890;
goto yy53;
-yy803:
- YYDEBUG(803, *YYCURSOR);
+yy889:
+ YYDEBUG(889, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy805;
+ if(yych <= '9') goto yy891;
goto yy53;
-yy804:
- YYDEBUG(804, *YYCURSOR);
+yy890:
+ YYDEBUG(890, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= '4') goto yy53;
- goto yy805;
-yy805:
- YYDEBUG(805, *YYCURSOR);
+ goto yy891;
+yy891:
+ YYDEBUG(891, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy806;
-yy806:
- YYDEBUG(806, *YYCURSOR);
+ goto yy892;
+yy892:
+ YYDEBUG(892, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= '6') goto yy53;
- goto yy807;
-yy807:
- YYDEBUG(807, *YYCURSOR);
+ goto yy893;
+yy893:
+ YYDEBUG(893, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy808;
-yy808:
- YYDEBUG(808, *YYCURSOR);
+ goto yy894;
+yy894:
+ YYDEBUG(894, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy809;
-yy809:
- YYDEBUG(809, *YYCURSOR);
+ goto yy895;
+yy895:
+ YYDEBUG(895, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy810;
- if(yych <= '6') goto yy811;
+ if(yych <= '5') goto yy896;
+ if(yych <= '6') goto yy897;
goto yy53;
-yy810:
- YYDEBUG(810, *YYCURSOR);
+yy896:
+ YYDEBUG(896, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy812;
+ if(yych <= '9') goto yy898;
goto yy53;
-yy811:
- YYDEBUG(811, *YYCURSOR);
+yy897:
+ YYDEBUG(897, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '0') goto yy53;
- goto yy812;
-yy812:
- YYDEBUG(812, *YYCURSOR);
+ goto yy898;
+yy898:
+ YYDEBUG(898, *YYCURSOR);
yych = *++YYCURSOR;
+ if(yych == 0x09) goto yy899;
if(yych != ' ') goto yy53;
- goto yy813;
-yy813:
- YYDEBUG(813, *YYCURSOR);
+ goto yy899;
+yy899:
+ YYDEBUG(899, *YYCURSOR);
++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
yych = *YYCURSOR;
- goto yy814;
-yy814:
- YYDEBUG(814, *YYCURSOR);
- if(yych <= '*'){
- if(yych == ' ') goto yy813;
- goto yy53;
+ goto yy900;
+yy900:
+ YYDEBUG(900, *YYCURSOR);
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy899;
+ if(yych <= 0x1F) goto yy53;
+ goto yy899;
} else {
- if(yych == ',') goto yy53;
- if(yych >= '.') goto yy53;
- goto yy815;
+ if(yych <= '+'){
+ if(yych <= '*') goto yy53;
+ goto yy901;
+ } else {
+ if(yych != '-') goto yy53;
+ goto yy901;
+ }
}
-yy815:
- YYDEBUG(815, *YYCURSOR);
+yy901:
+ YYDEBUG(901, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy816;
- if(yych <= '2') goto yy818;
- if(yych <= '9') goto yy819;
+ if(yych <= '1') goto yy902;
+ if(yych <= '2') goto yy904;
+ if(yych <= '9') goto yy905;
goto yy53;
-yy816:
- YYDEBUG(816, *YYCURSOR);
+yy902:
+ YYDEBUG(902, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) <= '/') goto yy817;
- if(yych <= '9') goto yy819;
- if(yych <= ':') goto yy820;
- goto yy817;
-yy817:
- YYDEBUG(817, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '/') goto yy903;
+ if(yych <= '9') goto yy905;
+ if(yych <= ':') goto yy906;
+ goto yy903;
+yy903:
+ YYDEBUG(903, *YYCURSOR);
-#line 1263 "ext/date/lib/parse_date.re"
+#line 1291 "ext/date/lib/parse_date.re"
{
int tz_not_found;
DEBUG_OUTPUT("clf");
@@ -11762,262 +15379,259 @@ yy817:
s->time->i = timelib_get_nr((char **) &ptr, 2);
s->time->s = timelib_get_nr((char **) &ptr, 2);
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
TIMELIB_DEINIT;
return TIMELIB_CLF;
}
-#line 10117 "ext/date/lib/parse_date.c"
-yy818:
- YYDEBUG(818, *YYCURSOR);
+#line 13566 "ext/date/lib/parse_date.c"
+yy904:
+ YYDEBUG(904, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '5'){
- if(yych <= '/') goto yy817;
- if(yych >= '4') goto yy821;
- goto yy819;
+ if(yych <= '/') goto yy903;
+ if(yych >= '4') goto yy907;
+ goto yy905;
} else {
- if(yych <= '9') goto yy822;
- if(yych <= ':') goto yy820;
- goto yy817;
+ if(yych <= '9') goto yy908;
+ if(yych <= ':') goto yy906;
+ goto yy903;
}
-yy819:
- YYDEBUG(819, *YYCURSOR);
+yy905:
+ YYDEBUG(905, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy817;
- if(yych <= '5') goto yy821;
- if(yych <= '9') goto yy822;
- if(yych >= ';') goto yy817;
- goto yy820;
-yy820:
- YYDEBUG(820, *YYCURSOR);
+ if(yych <= '/') goto yy903;
+ if(yych <= '5') goto yy907;
+ if(yych <= '9') goto yy908;
+ if(yych >= ';') goto yy903;
+ goto yy906;
+yy906:
+ YYDEBUG(906, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy817;
- if(yych <= '5') goto yy821;
- if(yych <= '9') goto yy822;
- goto yy817;
-yy821:
- YYDEBUG(821, *YYCURSOR);
+ if(yych <= '/') goto yy903;
+ if(yych <= '5') goto yy907;
+ if(yych <= '9') goto yy908;
+ goto yy903;
+yy907:
+ YYDEBUG(907, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy817;
- if(yych >= ':') goto yy817;
- goto yy822;
-yy822:
- YYDEBUG(822, *YYCURSOR);
+ if(yych <= '/') goto yy903;
+ if(yych >= ':') goto yy903;
+ goto yy908;
+yy908:
+ YYDEBUG(908, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy817;
-yy823:
- YYDEBUG(823, *YYCURSOR);
+ goto yy903;
+yy909:
+ YYDEBUG(909, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'V') goto yy796;
- if(yych == 'v') goto yy796;
+ if(yych == 'V') goto yy882;
+ if(yych == 'v') goto yy882;
goto yy53;
-yy824:
- YYDEBUG(824, *YYCURSOR);
+yy910:
+ YYDEBUG(910, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy796;
- if(yych == 't') goto yy796;
+ if(yych == 'T') goto yy882;
+ if(yych == 't') goto yy882;
goto yy53;
-yy825:
- YYDEBUG(825, *YYCURSOR);
+yy911:
+ YYDEBUG(911, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'P') goto yy826;
+ if(yych == 'P') goto yy912;
if(yych != 'p') goto yy53;
- goto yy826;
-yy826:
- YYDEBUG(826, *YYCURSOR);
+ goto yy912;
+yy912:
+ YYDEBUG(912, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'S'){
- if(yych == '/') goto yy797;
+ if(yych == '/') goto yy883;
goto yy53;
} else {
- if(yych <= 'T') goto yy796;
- if(yych == 't') goto yy796;
+ if(yych <= 'T') goto yy882;
+ if(yych == 't') goto yy882;
goto yy53;
}
-yy827:
- YYDEBUG(827, *YYCURSOR);
+yy913:
+ YYDEBUG(913, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy796;
- if(yych == 'g') goto yy796;
+ if(yych == 'G') goto yy882;
+ if(yych == 'g') goto yy882;
goto yy53;
-yy828:
- YYDEBUG(828, *YYCURSOR);
+yy914:
+ YYDEBUG(914, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy796;
- if(yych == 'r') goto yy796;
+ if(yych == 'R') goto yy882;
+ if(yych == 'r') goto yy882;
goto yy53;
-yy829:
- YYDEBUG(829, *YYCURSOR);
+yy915:
+ YYDEBUG(915, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
- if(yych == 'R') goto yy796;
+ if(yych == 'R') goto yy882;
if(yych <= 'X') goto yy53;
- goto yy796;
+ goto yy882;
} else {
if(yych <= 'r'){
if(yych <= 'q') goto yy53;
- goto yy796;
+ goto yy882;
} else {
- if(yych == 'y') goto yy796;
+ if(yych == 'y') goto yy882;
goto yy53;
}
}
-yy830:
- YYDEBUG(830, *YYCURSOR);
+yy916:
+ YYDEBUG(916, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy796;
- if(yych == 'b') goto yy796;
+ if(yych == 'B') goto yy882;
+ if(yych == 'b') goto yy882;
goto yy53;
-yy831:
- YYDEBUG(831, *YYCURSOR);
+yy917:
+ YYDEBUG(917, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
- if(yych == 'L') goto yy796;
+ if(yych == 'L') goto yy882;
if(yych <= 'M') goto yy53;
- goto yy796;
+ goto yy882;
} else {
if(yych <= 'l'){
if(yych <= 'k') goto yy53;
- goto yy796;
+ goto yy882;
} else {
- if(yych == 'n') goto yy796;
+ if(yych == 'n') goto yy882;
goto yy53;
}
}
-yy832:
- YYDEBUG(832, *YYCURSOR);
+yy918:
+ YYDEBUG(918, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy796;
- if(yych == 'n') goto yy796;
+ if(yych == 'N') goto yy882;
+ if(yych == 'n') goto yy882;
goto yy53;
-yy833:
- YYDEBUG(833, *YYCURSOR);
+yy919:
+ YYDEBUG(919, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 't') goto yy842;
+ if(yych == 't') goto yy928;
goto yy53;
-yy834:
- YYDEBUG(834, *YYCURSOR);
+yy920:
+ YYDEBUG(920, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy842;
+ if(yych == 'd') goto yy928;
goto yy53;
-yy835:
- YYDEBUG(835, *YYCURSOR);
+yy921:
+ YYDEBUG(921, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy842;
+ if(yych == 'd') goto yy928;
goto yy53;
-yy836:
- YYDEBUG(836, *YYCURSOR);
+yy922:
+ YYDEBUG(922, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'h') goto yy842;
+ if(yych == 'h') goto yy928;
goto yy53;
-yy837:
- YYDEBUG(837, *YYCURSOR);
+yy923:
+ YYDEBUG(923, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy838;
-yy838:
- YYDEBUG(838, *YYCURSOR);
+ goto yy924;
+yy924:
+ YYDEBUG(924, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy784;
- if(yych >= ':') goto yy784;
- goto yy839;
-yy839:
- YYDEBUG(839, *YYCURSOR);
+ if(yych <= '/') goto yy870;
+ if(yych >= ':') goto yy870;
+ goto yy925;
+yy925:
+ YYDEBUG(925, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy784;
- if(yych >= ':') goto yy784;
- goto yy840;
-yy840:
- YYDEBUG(840, *YYCURSOR);
+ if(yych <= '/') goto yy870;
+ if(yych >= ':') goto yy870;
+ goto yy926;
+yy926:
+ YYDEBUG(926, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy784;
- if(yych >= ':') goto yy784;
- goto yy841;
-yy841:
- YYDEBUG(841, *YYCURSOR);
+ if(yych <= '/') goto yy870;
+ if(yych >= ':') goto yy870;
+ goto yy927;
+yy927:
+ YYDEBUG(927, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy784;
-yy842:
- YYDEBUG(842, *YYCURSOR);
+ goto yy870;
+yy928:
+ YYDEBUG(928, *YYCURSOR);
yyaccept = 13;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '/') goto yy837;
- goto yy784;
-yy843:
- YYDEBUG(843, *YYCURSOR);
+ if(yych == '/') goto yy923;
+ goto yy870;
+yy929:
+ YYDEBUG(929, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '-') goto yy617;
- if(yych <= '.') goto yy845;
- if(yych >= '0') goto yy617;
- goto yy844;
-yy844:
- YYDEBUG(844, *YYCURSOR);
+ if(yych <= ','){
+ if(yych == 0x09) goto yy931;
+ goto yy784;
+ } else {
+ if(yych <= '.') goto yy931;
+ if(yych >= '0') goto yy784;
+ goto yy930;
+ }
+yy930:
+ YYDEBUG(930, *YYCURSOR);
yych = *++YYCURSOR;
YYDEBUG(-1, yych);
switch(yych){
- case 'A': case 'a': goto yy790;
- case 'D': case 'd': goto yy794;
- case 'F': case 'f': goto yy788;
- case 'J': case 'j': goto yy787;
- case 'M': case 'm': goto yy789;
- case 'N': case 'n': goto yy793;
- case 'O': case 'o': goto yy792;
- case 'S': case 's': goto yy791;
+ case 'A': case 'a': goto yy876;
+ case 'D': case 'd': goto yy880;
+ case 'F': case 'f': goto yy874;
+ case 'J': case 'j': goto yy873;
+ case 'M': case 'm': goto yy875;
+ case 'N': case 'n': goto yy879;
+ case 'O': case 'o': goto yy878;
+ case 'S': case 's': goto yy877;
default: goto yy53;
}
-yy845:
- YYDEBUG(845, *YYCURSOR);
+yy931:
+ YYDEBUG(931, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy617;
- if(yych <= '0') goto yy846;
- if(yych <= '1') goto yy847;
- if(yych <= '9') goto yy848;
- goto yy617;
-yy846:
- YYDEBUG(846, *YYCURSOR);
+ if(yych <= '/') goto yy784;
+ if(yych <= '0') goto yy932;
+ if(yych <= '1') goto yy933;
+ if(yych <= '9') goto yy934;
+ goto yy784;
+yy932:
+ YYDEBUG(932, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '.') goto yy849;
+ if(yych <= ',') goto yy53;
+ if(yych <= '.') goto yy807;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy848;
+ if(yych <= '9') goto yy934;
goto yy53;
-yy847:
- YYDEBUG(847, *YYCURSOR);
+yy933:
+ YYDEBUG(933, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '.') goto yy849;
+ if(yych <= ',') goto yy53;
+ if(yych <= '.') goto yy807;
if(yych <= '/') goto yy53;
if(yych >= '3') goto yy53;
- goto yy848;
-yy848:
- YYDEBUG(848, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych != '.') goto yy53;
- goto yy849;
-yy849:
- YYDEBUG(849, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '/') goto yy53;
- if(yych >= ':') goto yy53;
- goto yy850;
-yy850:
- YYDEBUG(850, *YYCURSOR);
+ goto yy934;
+yy934:
+ YYDEBUG(934, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy729;
- if(yych <= '9') goto yy728;
- goto yy729;
-yy851:
- YYDEBUG(851, *YYCURSOR);
+ if(yych <= ',') goto yy53;
+ if(yych <= '.') goto yy807;
+ goto yy53;
+yy935:
+ YYDEBUG(935, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy852;
+ if(yych == '-') goto yy936;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy879;
+ if(yych <= '9') goto yy970;
goto yy57;
-yy852:
- YYDEBUG(852, *YYCURSOR);
+yy936:
+ YYDEBUG(936, *YYCURSOR);
yych = *++YYCURSOR;
YYDEBUG(-1, yych);
switch(yych){
- case '0': goto yy734;
- case '1': goto yy735;
+ case '0': goto yy945;
+ case '1': goto yy946;
case '2':
case '3':
case '4':
@@ -12025,130 +15639,208 @@ yy852:
case '6':
case '7':
case '8':
- case '9': goto yy736;
- case 'A': case 'a': goto yy856;
- case 'D': case 'd': goto yy860;
- case 'F': case 'f': goto yy854;
- case 'J': case 'j': goto yy853;
- case 'M': case 'm': goto yy855;
- case 'N': case 'n': goto yy859;
- case 'O': case 'o': goto yy858;
- case 'S': case 's': goto yy857;
+ case '9': goto yy947;
+ case 'A': case 'a': goto yy940;
+ case 'D': case 'd': goto yy944;
+ case 'F': case 'f': goto yy938;
+ case 'J': case 'j': goto yy937;
+ case 'M': case 'm': goto yy939;
+ case 'N': case 'n': goto yy943;
+ case 'O': case 'o': goto yy942;
+ case 'S': case 's': goto yy941;
default: goto yy53;
}
-yy853:
- YYDEBUG(853, *YYCURSOR);
+yy937:
+ YYDEBUG(937, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'A') goto yy878;
+ if(yych == 'A') goto yy969;
if(yych <= 'T') goto yy53;
- goto yy877;
+ goto yy968;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
- goto yy878;
+ goto yy969;
} else {
- if(yych == 'u') goto yy877;
+ if(yych == 'u') goto yy968;
goto yy53;
}
}
-yy854:
- YYDEBUG(854, *YYCURSOR);
+yy938:
+ YYDEBUG(938, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy876;
- if(yych == 'e') goto yy876;
+ if(yych == 'E') goto yy967;
+ if(yych == 'e') goto yy967;
goto yy53;
-yy855:
- YYDEBUG(855, *YYCURSOR);
+yy939:
+ YYDEBUG(939, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy875;
- if(yych == 'a') goto yy875;
+ if(yych == 'A') goto yy966;
+ if(yych == 'a') goto yy966;
goto yy53;
-yy856:
- YYDEBUG(856, *YYCURSOR);
+yy940:
+ YYDEBUG(940, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'P') goto yy874;
+ if(yych == 'P') goto yy965;
if(yych <= 'T') goto yy53;
- goto yy873;
+ goto yy964;
} else {
if(yych <= 'p'){
if(yych <= 'o') goto yy53;
- goto yy874;
+ goto yy965;
} else {
- if(yych == 'u') goto yy873;
+ if(yych == 'u') goto yy964;
goto yy53;
}
}
-yy857:
- YYDEBUG(857, *YYCURSOR);
+yy941:
+ YYDEBUG(941, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy871;
- if(yych == 'e') goto yy871;
+ if(yych == 'E') goto yy962;
+ if(yych == 'e') goto yy962;
goto yy53;
-yy858:
- YYDEBUG(858, *YYCURSOR);
+yy942:
+ YYDEBUG(942, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy870;
- if(yych == 'c') goto yy870;
+ if(yych == 'C') goto yy961;
+ if(yych == 'c') goto yy961;
goto yy53;
-yy859:
- YYDEBUG(859, *YYCURSOR);
+yy943:
+ YYDEBUG(943, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy869;
- if(yych == 'o') goto yy869;
+ if(yych == 'O') goto yy960;
+ if(yych == 'o') goto yy960;
goto yy53;
-yy860:
- YYDEBUG(860, *YYCURSOR);
+yy944:
+ YYDEBUG(944, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy861;
- if(yych != 'e') goto yy53;
- goto yy861;
-yy861:
- YYDEBUG(861, *YYCURSOR);
+ if(yych == 'E') goto yy952;
+ if(yych == 'e') goto yy952;
+ goto yy53;
+yy945:
+ YYDEBUG(945, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == '-') goto yy948;
+ if(yych <= '/') goto yy53;
+ if(yych <= '9') goto yy947;
+ goto yy53;
+yy946:
+ YYDEBUG(946, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == '-') goto yy948;
+ if(yych <= '/') goto yy53;
+ if(yych >= '3') goto yy53;
+ goto yy947;
+yy947:
+ YYDEBUG(947, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != '-') goto yy53;
+ goto yy948;
+yy948:
+ YYDEBUG(948, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '2') goto yy949;
+ if(yych <= '3') goto yy950;
+ if(yych <= '9') goto yy951;
+ goto yy53;
+yy949:
+ YYDEBUG(949, *YYCURSOR);
+ yyaccept = 12;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'n'){
+ if(yych <= '/') goto yy860;
+ if(yych <= '9') goto yy951;
+ if(yych <= 'm') goto yy860;
+ goto yy864;
+ } else {
+ if(yych <= 'r'){
+ if(yych <= 'q') goto yy860;
+ goto yy865;
+ } else {
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
+ }
+ }
+yy950:
+ YYDEBUG(950, *YYCURSOR);
+ yyaccept = 12;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'n'){
+ if(yych <= '/') goto yy860;
+ if(yych <= '1') goto yy951;
+ if(yych <= 'm') goto yy860;
+ goto yy864;
+ } else {
+ if(yych <= 'r'){
+ if(yych <= 'q') goto yy860;
+ goto yy865;
+ } else {
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
+ }
+ }
+yy951:
+ YYDEBUG(951, *YYCURSOR);
+ yyaccept = 12;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'q'){
+ if(yych == 'n') goto yy864;
+ goto yy860;
+ } else {
+ if(yych <= 'r') goto yy865;
+ if(yych <= 's') goto yy863;
+ if(yych <= 't') goto yy866;
+ goto yy860;
+ }
+yy952:
+ YYDEBUG(952, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy862;
+ if(yych == 'C') goto yy953;
if(yych != 'c') goto yy53;
- goto yy862;
-yy862:
- YYDEBUG(862, *YYCURSOR);
+ goto yy953;
+yy953:
+ YYDEBUG(953, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '-') goto yy53;
- goto yy863;
-yy863:
- YYDEBUG(863, *YYCURSOR);
+ goto yy954;
+yy954:
+ YYDEBUG(954, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '0') goto yy864;
- if(yych <= '2') goto yy865;
- if(yych <= '3') goto yy866;
+ if(yych <= '0') goto yy955;
+ if(yych <= '2') goto yy956;
+ if(yych <= '3') goto yy957;
goto yy53;
-yy864:
- YYDEBUG(864, *YYCURSOR);
+yy955:
+ YYDEBUG(955, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '0') goto yy53;
- if(yych <= '9') goto yy867;
+ if(yych <= '9') goto yy958;
goto yy53;
-yy865:
- YYDEBUG(865, *YYCURSOR);
+yy956:
+ YYDEBUG(956, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy867;
+ if(yych <= '9') goto yy958;
goto yy53;
-yy866:
- YYDEBUG(866, *YYCURSOR);
+yy957:
+ YYDEBUG(957, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= '2') goto yy53;
- goto yy867;
-yy867:
- YYDEBUG(867, *YYCURSOR);
+ goto yy958;
+yy958:
+ YYDEBUG(958, *YYCURSOR);
++YYCURSOR;
- goto yy868;
-yy868:
- YYDEBUG(868, *YYCURSOR);
+ goto yy959;
+yy959:
+ YYDEBUG(959, *YYCURSOR);
-#line 1250 "ext/date/lib/parse_date.re"
+#line 1278 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("pgtextreverse");
TIMELIB_INIT;
@@ -12160,111 +15852,99 @@ yy868:
TIMELIB_DEINIT;
return TIMELIB_PG_TEXT;
}
-#line 10407 "ext/date/lib/parse_date.c"
-yy869:
- YYDEBUG(869, *YYCURSOR);
+#line 13919 "ext/date/lib/parse_date.c"
+yy960:
+ YYDEBUG(960, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'V') goto yy862;
- if(yych == 'v') goto yy862;
+ if(yych == 'V') goto yy953;
+ if(yych == 'v') goto yy953;
goto yy53;
-yy870:
- YYDEBUG(870, *YYCURSOR);
+yy961:
+ YYDEBUG(961, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy862;
- if(yych == 't') goto yy862;
+ if(yych == 'T') goto yy953;
+ if(yych == 't') goto yy953;
goto yy53;
-yy871:
- YYDEBUG(871, *YYCURSOR);
+yy962:
+ YYDEBUG(962, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'P') goto yy872;
+ if(yych == 'P') goto yy963;
if(yych != 'p') goto yy53;
- goto yy872;
-yy872:
- YYDEBUG(872, *YYCURSOR);
+ goto yy963;
+yy963:
+ YYDEBUG(963, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'S'){
- if(yych == '-') goto yy863;
+ if(yych == '-') goto yy954;
goto yy53;
} else {
- if(yych <= 'T') goto yy862;
- if(yych == 't') goto yy862;
+ if(yych <= 'T') goto yy953;
+ if(yych == 't') goto yy953;
goto yy53;
}
-yy873:
- YYDEBUG(873, *YYCURSOR);
+yy964:
+ YYDEBUG(964, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy862;
- if(yych == 'g') goto yy862;
+ if(yych == 'G') goto yy953;
+ if(yych == 'g') goto yy953;
goto yy53;
-yy874:
- YYDEBUG(874, *YYCURSOR);
+yy965:
+ YYDEBUG(965, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy862;
- if(yych == 'r') goto yy862;
+ if(yych == 'R') goto yy953;
+ if(yych == 'r') goto yy953;
goto yy53;
-yy875:
- YYDEBUG(875, *YYCURSOR);
+yy966:
+ YYDEBUG(966, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
- if(yych == 'R') goto yy862;
+ if(yych == 'R') goto yy953;
if(yych <= 'X') goto yy53;
- goto yy862;
+ goto yy953;
} else {
if(yych <= 'r'){
if(yych <= 'q') goto yy53;
- goto yy862;
+ goto yy953;
} else {
- if(yych == 'y') goto yy862;
+ if(yych == 'y') goto yy953;
goto yy53;
}
}
-yy876:
- YYDEBUG(876, *YYCURSOR);
+yy967:
+ YYDEBUG(967, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy862;
- if(yych == 'b') goto yy862;
+ if(yych == 'B') goto yy953;
+ if(yych == 'b') goto yy953;
goto yy53;
-yy877:
- YYDEBUG(877, *YYCURSOR);
+yy968:
+ YYDEBUG(968, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
- if(yych == 'L') goto yy862;
+ if(yych == 'L') goto yy953;
if(yych <= 'M') goto yy53;
- goto yy862;
+ goto yy953;
} else {
if(yych <= 'l'){
if(yych <= 'k') goto yy53;
- goto yy862;
+ goto yy953;
} else {
- if(yych == 'n') goto yy862;
+ if(yych == 'n') goto yy953;
goto yy53;
}
}
-yy878:
- YYDEBUG(878, *YYCURSOR);
+yy969:
+ YYDEBUG(969, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy862;
- if(yych == 'n') goto yy862;
+ if(yych == 'N') goto yy953;
+ if(yych == 'n') goto yy953;
goto yy53;
-yy879:
- YYDEBUG(879, *YYCURSOR);
+yy970:
+ YYDEBUG(970, *YYCURSOR);
yyaccept = 14;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -12273,27 +15953,28 @@ yy879:
case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm':
case 'n':
case 'o': case 's':
- case 't': case 'w': case 'y': goto yy884;
- case '-': goto yy881;
- case '.': goto yy887;
- case '/': goto yy882;
- case '0': goto yy900;
- case '1': goto yy901;
- case '2': goto yy902;
- case '3': goto yy903;
+ case 't': case 'w': case 'y': goto yy975;
+ case '-': goto yy972;
+ case '.': goto yy976;
+ case '/': goto yy973;
+ case '0': goto yy989;
+ case '1': goto yy990;
+ case '2': goto yy992;
+ case '3': goto yy993;
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': goto yy51;
- case 'W': goto yy904;
- default: goto yy880;
+ case ':': goto yy991;
+ case 'W': goto yy994;
+ default: goto yy971;
}
-yy880:
- YYDEBUG(880, *YYCURSOR);
+yy971:
+ YYDEBUG(971, *YYCURSOR);
-#line 1282 "ext/date/lib/parse_date.re"
+#line 1312 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("year4");
TIMELIB_INIT;
@@ -12301,14 +15982,14 @@ yy880:
TIMELIB_DEINIT;
return TIMELIB_CLF;
}
-#line 10523 "ext/date/lib/parse_date.c"
-yy881:
- YYDEBUG(881, *YYCURSOR);
+#line 14024 "ext/date/lib/parse_date.c"
+yy972:
+ YYDEBUG(972, *YYCURSOR);
yych = *++YYCURSOR;
YYDEBUG(-1, yych);
switch(yych){
- case '0': goto yy1046;
- case '1': goto yy1047;
+ case '0': goto yy1156;
+ case '1': goto yy1157;
case '2':
case '3':
case '4':
@@ -12316,128 +15997,78 @@ yy881:
case '6':
case '7':
case '8':
- case '9': goto yy1048;
- case 'A': case 'a': goto yy1041;
- case 'D': case 'd': goto yy1045;
- case 'F': case 'f': goto yy1039;
- case 'J': case 'j': goto yy1038;
- case 'M': case 'm': goto yy1040;
- case 'N': case 'n': goto yy1044;
- case 'O': case 'o': goto yy1043;
- case 'S': case 's': goto yy1042;
- default: goto yy886;
+ case '9': goto yy1158;
+ case 'A': case 'a': goto yy1151;
+ case 'D': case 'd': goto yy1155;
+ case 'F': case 'f': goto yy1149;
+ case 'J': case 'j': goto yy1148;
+ case 'M': case 'm': goto yy1150;
+ case 'N': case 'n': goto yy1154;
+ case 'O': case 'o': goto yy1153;
+ case 'S': case 's': goto yy1152;
+ default: goto yy1121;
}
-yy882:
- YYDEBUG(882, *YYCURSOR);
+yy973:
+ YYDEBUG(973, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '0') goto yy1019;
- if(yych <= '1') goto yy1020;
- if(yych <= '9') goto yy1021;
+ if(yych <= '0') goto yy1129;
+ if(yych <= '1') goto yy1130;
+ if(yych <= '9') goto yy1131;
goto yy53;
-yy883:
- YYDEBUG(883, *YYCURSOR);
+yy974:
+ YYDEBUG(974, *YYCURSOR);
++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
yych = *YYCURSOR;
- goto yy884;
-yy884:
- YYDEBUG(884, *YYCURSOR);
+ goto yy975;
+yy975:
+ YYDEBUG(975, *YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ': goto yy883;
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',':
+ case 0x09: case ' ': goto yy974;
case '-':
- case '.': goto yy885;
- case 'A': case 'a': goto yy895;
- case 'D': case 'd': goto yy899;
- case 'F': case 'f': goto yy893;
+ case '.': goto yy1120;
+ case 'A': case 'a': goto yy984;
+ case 'D': case 'd': goto yy988;
+ case 'F': case 'f': goto yy982;
case 'H': case 'h': goto yy60;
- case 'I': goto yy888;
- case 'J': case 'j': goto yy892;
- case 'M': case 'm': goto yy894;
- case 'N': case 'n': goto yy898;
- case 'O': case 'o': goto yy897;
- case 'S': case 's': goto yy896;
+ case 'I': goto yy977;
+ case 'J': case 'j': goto yy981;
+ case 'M': case 'm': goto yy983;
+ case 'N': case 'n': goto yy987;
+ case 'O': case 'o': goto yy986;
+ case 'S': case 's': goto yy985;
case 'T': case 't': goto yy65;
- case 'V': goto yy890;
+ case 'V': goto yy979;
case 'W': case 'w': goto yy62;
- case 'X': goto yy891;
+ case 'X': goto yy980;
case 'Y': case 'y': goto yy64;
default: goto yy53;
}
-yy885:
- YYDEBUG(885, *YYCURSOR);
- ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
- yych = *YYCURSOR;
- goto yy886;
-yy886:
- YYDEBUG(886, *YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',':
- case '-':
- case '.': goto yy885;
- case 'A': case 'a': goto yy895;
- case 'D': case 'd': goto yy1011;
- case 'F': case 'f': goto yy1008;
- case 'I': goto yy888;
- case 'J': case 'j': goto yy892;
- case 'M': case 'm': goto yy1009;
- case 'N': case 'n': goto yy898;
- case 'O': case 'o': goto yy897;
- case 'S': case 's': goto yy1010;
- case 'V': goto yy890;
- case 'X': goto yy891;
- default: goto yy53;
- }
-yy887:
- YYDEBUG(887, *YYCURSOR);
+yy976:
+ YYDEBUG(976, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy886;
- if(yych <= '0') goto yy1005;
- if(yych <= '2') goto yy1006;
- if(yych <= '3') goto yy1007;
- goto yy886;
-yy888:
- YYDEBUG(888, *YYCURSOR);
+ if(yych <= '/') goto yy1121;
+ if(yych <= '0') goto yy1113;
+ if(yych <= '2') goto yy1114;
+ if(yych <= '3') goto yy1115;
+ goto yy1121;
+yy977:
+ YYDEBUG(977, *YYCURSOR);
++YYCURSOR;
if((yych = *YYCURSOR) <= 'U'){
- if(yych == 'I') goto yy1004;
- goto yy889;
+ if(yych == 'I') goto yy1112;
+ goto yy978;
} else {
- if(yych == 'W') goto yy889;
- if(yych <= 'X') goto yy958;
- goto yy889;
+ if(yych == 'W') goto yy978;
+ if(yych <= 'X') goto yy1066;
+ goto yy978;
}
-yy889:
- YYDEBUG(889, *YYCURSOR);
+yy978:
+ YYDEBUG(978, *YYCURSOR);
-#line 1112 "ext/date/lib/parse_date.re"
+#line 1138 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("datenodayrev");
TIMELIB_INIT;
@@ -12449,39 +16080,39 @@ yy889:
TIMELIB_DEINIT;
return TIMELIB_DATE_NO_DAY;
}
-#line 10650 "ext/date/lib/parse_date.c"
-yy890:
- YYDEBUG(890, *YYCURSOR);
+#line 14106 "ext/date/lib/parse_date.c"
+yy979:
+ YYDEBUG(979, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy1002;
- goto yy889;
-yy891:
- YYDEBUG(891, *YYCURSOR);
+ if(yych == 'I') goto yy1110;
+ goto yy978;
+yy980:
+ YYDEBUG(980, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy1001;
- goto yy889;
-yy892:
- YYDEBUG(892, *YYCURSOR);
+ if(yych == 'I') goto yy1109;
+ goto yy978;
+yy981:
+ YYDEBUG(981, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'A') goto yy994;
+ if(yych == 'A') goto yy1102;
if(yych <= 'T') goto yy53;
- goto yy993;
+ goto yy1101;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
- goto yy994;
+ goto yy1102;
} else {
- if(yych == 'u') goto yy993;
+ if(yych == 'u') goto yy1101;
goto yy53;
}
}
-yy893:
- YYDEBUG(893, *YYCURSOR);
+yy982:
+ YYDEBUG(982, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
if(yych <= 'N'){
- if(yych == 'E') goto yy987;
+ if(yych == 'E') goto yy1095;
goto yy53;
} else {
if(yych <= 'O') goto yy83;
@@ -12490,7 +16121,7 @@ yy893:
}
} else {
if(yych <= 'n'){
- if(yych == 'e') goto yy987;
+ if(yych == 'e') goto yy1095;
goto yy53;
} else {
if(yych <= 'o') goto yy83;
@@ -12498,12 +16129,12 @@ yy893:
goto yy53;
}
}
-yy894:
- YYDEBUG(894, *YYCURSOR);
+yy983:
+ YYDEBUG(983, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'O'){
if(yych <= 'H'){
- if(yych == 'A') goto yy984;
+ if(yych == 'A') goto yy1092;
goto yy53;
} else {
if(yych <= 'I') goto yy110;
@@ -12512,7 +16143,7 @@ yy894:
}
} else {
if(yych <= 'h'){
- if(yych == 'a') goto yy984;
+ if(yych == 'a') goto yy1092;
goto yy53;
} else {
if(yych <= 'i') goto yy110;
@@ -12520,31 +16151,31 @@ yy894:
goto yy53;
}
}
-yy895:
- YYDEBUG(895, *YYCURSOR);
+yy984:
+ YYDEBUG(984, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'P') goto yy978;
+ if(yych == 'P') goto yy1086;
if(yych <= 'T') goto yy53;
- goto yy977;
+ goto yy1085;
} else {
if(yych <= 'p'){
if(yych <= 'o') goto yy53;
- goto yy978;
+ goto yy1086;
} else {
- if(yych == 'u') goto yy977;
+ if(yych == 'u') goto yy1085;
goto yy53;
}
}
-yy896:
- YYDEBUG(896, *YYCURSOR);
+yy985:
+ YYDEBUG(985, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= 'D'){
if(yych == 'A') goto yy119;
goto yy53;
} else {
- if(yych <= 'E') goto yy970;
+ if(yych <= 'E') goto yy1078;
if(yych <= 'T') goto yy53;
goto yy118;
}
@@ -12553,75 +16184,82 @@ yy896:
if(yych == 'a') goto yy119;
goto yy53;
} else {
- if(yych <= 'e') goto yy970;
+ if(yych <= 'e') goto yy1078;
if(yych == 'u') goto yy118;
goto yy53;
}
}
-yy897:
- YYDEBUG(897, *YYCURSOR);
+yy986:
+ YYDEBUG(986, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy965;
- if(yych == 'c') goto yy965;
+ if(yych == 'C') goto yy1073;
+ if(yych == 'c') goto yy1073;
goto yy53;
-yy898:
- YYDEBUG(898, *YYCURSOR);
+yy987:
+ YYDEBUG(987, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy959;
- if(yych == 'o') goto yy959;
+ if(yych == 'O') goto yy1067;
+ if(yych == 'o') goto yy1067;
goto yy53;
-yy899:
- YYDEBUG(899, *YYCURSOR);
+yy988:
+ YYDEBUG(988, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych == 'A') goto yy106;
if(yych <= 'D') goto yy53;
- goto yy952;
+ goto yy1060;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
goto yy106;
} else {
- if(yych == 'e') goto yy952;
+ if(yych == 'e') goto yy1060;
goto yy53;
}
}
-yy900:
- YYDEBUG(900, *YYCURSOR);
+yy989:
+ YYDEBUG(989, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '0') goto yy950;
- if(yych <= '9') goto yy951;
+ if(yych <= '0') goto yy1058;
+ if(yych <= '9') goto yy1059;
goto yy57;
-yy901:
- YYDEBUG(901, *YYCURSOR);
+yy990:
+ YYDEBUG(990, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '2') goto yy917;
- if(yych <= '9') goto yy916;
+ if(yych <= '2') goto yy1027;
+ if(yych <= '9') goto yy1006;
goto yy57;
-yy902:
- YYDEBUG(902, *YYCURSOR);
+yy991:
+ YYDEBUG(991, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '0') goto yy1007;
+ if(yych <= '1') goto yy1008;
+ goto yy53;
+yy992:
+ YYDEBUG(992, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy916;
+ if(yych <= '9') goto yy1006;
goto yy57;
-yy903:
- YYDEBUG(903, *YYCURSOR);
+yy993:
+ YYDEBUG(993, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '5') goto yy912;
- if(yych <= '6') goto yy913;
+ if(yych <= '5') goto yy1002;
+ if(yych <= '6') goto yy1003;
if(yych <= '9') goto yy51;
goto yy57;
-yy904:
- YYDEBUG(904, *YYCURSOR);
+yy994:
+ YYDEBUG(994, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '5'){
if(yych <= '/') goto yy53;
- if(yych <= '0') goto yy905;
- if(yych <= '4') goto yy906;
- goto yy907;
+ if(yych <= '0') goto yy995;
+ if(yych <= '4') goto yy996;
+ goto yy997;
} else {
if(yych <= 'E'){
if(yych <= 'D') goto yy53;
@@ -12631,34 +16269,34 @@ yy904:
goto yy53;
}
}
-yy905:
- YYDEBUG(905, *YYCURSOR);
+yy995:
+ YYDEBUG(995, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '0') goto yy53;
- if(yych <= '9') goto yy908;
+ if(yych <= '9') goto yy998;
goto yy53;
-yy906:
- YYDEBUG(906, *YYCURSOR);
+yy996:
+ YYDEBUG(996, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy908;
+ if(yych <= '9') goto yy998;
goto yy53;
-yy907:
- YYDEBUG(907, *YYCURSOR);
+yy997:
+ YYDEBUG(997, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= '4') goto yy53;
- goto yy908;
-yy908:
- YYDEBUG(908, *YYCURSOR);
+ goto yy998;
+yy998:
+ YYDEBUG(998, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) <= '/') goto yy909;
- if(yych <= '7') goto yy910;
- goto yy909;
-yy909:
- YYDEBUG(909, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '/') goto yy999;
+ if(yych <= '7') goto yy1000;
+ goto yy999;
+yy999:
+ YYDEBUG(999, *YYCURSOR);
-#line 1218 "ext/date/lib/parse_date.re"
+#line 1246 "ext/date/lib/parse_date.re"
{
timelib_sll w, d;
DEBUG_OUTPUT("isoweek");
@@ -12676,15 +16314,15 @@ yy909:
TIMELIB_DEINIT;
return TIMELIB_ISO_WEEK;
}
-#line 10837 "ext/date/lib/parse_date.c"
-yy910:
- YYDEBUG(910, *YYCURSOR);
+#line 14298 "ext/date/lib/parse_date.c"
+yy1000:
+ YYDEBUG(1000, *YYCURSOR);
++YYCURSOR;
- goto yy911;
-yy911:
- YYDEBUG(911, *YYCURSOR);
+ goto yy1001;
+yy1001:
+ YYDEBUG(1001, *YYCURSOR);
-#line 1199 "ext/date/lib/parse_date.re"
+#line 1227 "ext/date/lib/parse_date.re"
{
timelib_sll w, d;
DEBUG_OUTPUT("isoweekday");
@@ -12702,76 +16340,81 @@ yy911:
TIMELIB_DEINIT;
return TIMELIB_ISO_WEEK;
}
-#line 10859 "ext/date/lib/parse_date.c"
-yy912:
- YYDEBUG(912, *YYCURSOR);
+#line 14320 "ext/date/lib/parse_date.c"
+yy1002:
+ YYDEBUG(1002, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy914;
+ if(yych <= '9') goto yy1004;
goto yy57;
-yy913:
- YYDEBUG(913, *YYCURSOR);
+yy1003:
+ YYDEBUG(1003, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '6') goto yy914;
+ if(yych <= '6') goto yy1004;
if(yych <= '9') goto yy51;
goto yy57;
-yy914:
- YYDEBUG(914, *YYCURSOR);
+yy1004:
+ YYDEBUG(1004, *YYCURSOR);
yyaccept = 15;
yych = *(YYMARKER = ++YYCURSOR);
if(yybm[0+yych] & 8) {
goto yy51;
}
- if(yych <= 'X'){
- if(yych <= 'G'){
- if(yych <= 'C'){
- if(yych == ' ') goto yy57;
- goto yy915;
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych >= ' ') goto yy57;
+ goto yy1005;
} else {
- if(yych == 'E') goto yy915;
- if(yych <= 'F') goto yy57;
- goto yy915;
+ if(yych == 'D') goto yy57;
+ if(yych >= 'F') goto yy57;
+ goto yy1005;
}
} else {
- if(yych <= 'R'){
- if(yych <= 'H') goto yy57;
- if(yych == 'M') goto yy57;
- goto yy915;
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy57;
+ if(yych >= 'M') goto yy57;
+ goto yy1005;
} else {
+ if(yych <= 'R') goto yy1005;
if(yych <= 'T') goto yy57;
- if(yych == 'W') goto yy57;
- goto yy915;
+ if(yych >= 'W') goto yy57;
+ goto yy1005;
}
}
} else {
- if(yych <= 'l'){
- if(yych <= 'e'){
- if(yych <= 'Y') goto yy57;
- if(yych == 'd') goto yy57;
- goto yy915;
+ if(yych <= 'h'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy57;
+ if(yych >= 'd') goto yy57;
+ goto yy1005;
} else {
- if(yych == 'g') goto yy915;
- if(yych <= 'h') goto yy57;
- goto yy915;
+ if(yych == 'f') goto yy57;
+ if(yych >= 'h') goto yy57;
+ goto yy1005;
}
} else {
- if(yych <= 'v'){
- if(yych <= 'm') goto yy57;
- if(yych <= 'r') goto yy915;
- if(yych <= 't') goto yy57;
- goto yy915;
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych >= 's') goto yy57;
+ goto yy1005;
} else {
- if(yych == 'x') goto yy915;
- if(yych <= 'y') goto yy57;
- goto yy915;
+ if(yych <= 'w'){
+ if(yych >= 'w') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1005;
+ }
}
}
}
-yy915:
- YYDEBUG(915, *YYCURSOR);
+yy1005:
+ YYDEBUG(1005, *YYCURSOR);
-#line 1186 "ext/date/lib/parse_date.re"
+#line 1214 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("pgydotd");
TIMELIB_INIT;
@@ -12783,113 +16426,432 @@ yy915:
TIMELIB_DEINIT;
return TIMELIB_PG_YEARDAY;
}
-#line 10932 "ext/date/lib/parse_date.c"
-yy916:
- YYDEBUG(916, *YYCURSOR);
+#line 14398 "ext/date/lib/parse_date.c"
+yy1006:
+ YYDEBUG(1006, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy914;
+ if(yych <= '9') goto yy1004;
goto yy57;
-yy917:
- YYDEBUG(917, *YYCURSOR);
+yy1007:
+ YYDEBUG(1007, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '0') goto yy53;
+ if(yych <= '9') goto yy1009;
+ goto yy53;
+yy1008:
+ YYDEBUG(1008, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych >= '3') goto yy53;
+ goto yy1009;
+yy1009:
+ YYDEBUG(1009, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != ':') goto yy53;
+ goto yy1010;
+yy1010:
+ YYDEBUG(1010, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '0') goto yy1011;
+ if(yych <= '2') goto yy1012;
+ if(yych <= '3') goto yy1013;
+ goto yy53;
+yy1011:
+ YYDEBUG(1011, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '0') goto yy53;
+ if(yych <= '9') goto yy1014;
+ goto yy53;
+yy1012:
+ YYDEBUG(1012, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '9') goto yy1014;
+ goto yy53;
+yy1013:
+ YYDEBUG(1013, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych >= '2') goto yy53;
+ goto yy1014;
+yy1014:
+ YYDEBUG(1014, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != ' ') goto yy53;
+ goto yy1015;
+yy1015:
+ YYDEBUG(1015, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '1') goto yy1016;
+ if(yych <= '2') goto yy1017;
+ goto yy53;
+yy1016:
+ YYDEBUG(1016, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '9') goto yy1018;
+ goto yy53;
+yy1017:
+ YYDEBUG(1017, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych >= '4') goto yy53;
+ goto yy1018;
+yy1018:
+ YYDEBUG(1018, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != ':') goto yy53;
+ goto yy1019;
+yy1019:
+ YYDEBUG(1019, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych >= '6') goto yy53;
+ goto yy1020;
+yy1020:
+ YYDEBUG(1020, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych >= ':') goto yy53;
+ goto yy1021;
+yy1021:
+ YYDEBUG(1021, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != ':') goto yy53;
+ goto yy1022;
+yy1022:
+ YYDEBUG(1022, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '5') goto yy1023;
+ if(yych <= '6') goto yy1024;
+ goto yy53;
+yy1023:
+ YYDEBUG(1023, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '9') goto yy1025;
+ goto yy53;
+yy1024:
+ YYDEBUG(1024, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != '0') goto yy53;
+ goto yy1025;
+yy1025:
+ YYDEBUG(1025, *YYCURSOR);
+ ++YYCURSOR;
+ goto yy1026;
+yy1026:
+ YYDEBUG(1026, *YYCURSOR);
+
+#line 1188 "ext/date/lib/parse_date.re"
+{
+ int tz_not_found;
+ DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif");
+ TIMELIB_INIT;
+ TIMELIB_HAVE_TIME();
+ TIMELIB_HAVE_DATE();
+ s->time->y = timelib_get_nr((char **) &ptr, 4);
+ s->time->m = timelib_get_nr((char **) &ptr, 2);
+ s->time->d = timelib_get_nr((char **) &ptr, 2);
+ s->time->h = timelib_get_nr((char **) &ptr, 2);
+ s->time->i = timelib_get_nr((char **) &ptr, 2);
+ s->time->s = timelib_get_nr((char **) &ptr, 2);
+ if (*ptr == '.') {
+ s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
+ if (*ptr) { /* timezone is optional */
+ s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
+ }
+ }
+ TIMELIB_DEINIT;
+ return TIMELIB_XMLRPC_SOAP;
+ }
+#line 14502 "ext/date/lib/parse_date.c"
+yy1027:
+ YYDEBUG(1027, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '2'){
if(yych <= '/') goto yy57;
- if(yych >= '1') goto yy919;
- goto yy918;
+ if(yych >= '1') goto yy1029;
+ goto yy1028;
} else {
- if(yych <= '3') goto yy920;
- if(yych <= '9') goto yy914;
+ if(yych <= '3') goto yy1030;
+ if(yych <= '9') goto yy1004;
goto yy57;
}
-yy918:
- YYDEBUG(918, *YYCURSOR);
+yy1028:
+ YYDEBUG(1028, *YYCURSOR);
yyaccept = 15;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0': goto yy51;
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy921;
- default: goto yy915;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= '0'){
+ if(yych <= '/') goto yy1005;
+ goto yy51;
+ } else {
+ if(yych <= '9') goto yy1031;
+ if(yych <= 'C') goto yy1005;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1005;
+ if(yych <= 'T') goto yy57;
+ goto yy1005;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1005;
+ if(yych <= 'Y') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych == 'g') goto yy1005;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1005;
+ }
+ }
+ }
}
-yy919:
- YYDEBUG(919, *YYCURSOR);
+yy1029:
+ YYDEBUG(1029, *YYCURSOR);
yyaccept = 15;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy921;
- default: goto yy915;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= '/') goto yy1005;
+ if(yych <= '9') goto yy1031;
+ if(yych <= 'C') goto yy1005;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1005;
+ if(yych <= 'T') goto yy57;
+ goto yy1005;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1005;
+ if(yych <= 'Y') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych == 'g') goto yy1005;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1005;
+ }
+ }
+ }
}
-yy920:
- YYDEBUG(920, *YYCURSOR);
+yy1030:
+ YYDEBUG(1030, *YYCURSOR);
yyaccept = 15;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1': goto yy921;
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy51;
- default: goto yy915;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= '1'){
+ if(yych <= '/') goto yy1005;
+ goto yy1031;
+ } else {
+ if(yych <= '9') goto yy51;
+ if(yych <= 'C') goto yy1005;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1005;
+ if(yych <= 'T') goto yy57;
+ goto yy1005;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1005;
+ if(yych <= 'Y') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1005;
+ } else {
+ if(yych == 'g') goto yy1005;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1005;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1005;
+ }
+ }
+ }
}
-yy921:
- YYDEBUG(921, *YYCURSOR);
+yy1031:
+ YYDEBUG(1031, *YYCURSOR);
yyaccept = 16;
yych = *(YYMARKER = ++YYCURSOR);
if(yybm[0+yych] & 8) {
goto yy51;
}
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': goto yy56;
- case 'D': case 'd': goto yy61;
- case 'F': case 'f': goto yy63;
- case 'H': case 'h': goto yy60;
- case 'M': case 'm': goto yy59;
- case 'S': case 's': goto yy58;
- case 'T': goto yy923;
- case 'W': case 'w': goto yy62;
- case 'Y': case 'y': goto yy64;
- case 't': goto yy924;
- default: goto yy922;
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy56;
+ if(yych >= ' ') goto yy56;
+ goto yy1032;
+ } else {
+ if(yych == 'D') goto yy61;
+ if(yych >= 'F') goto yy63;
+ goto yy1032;
+ }
+ } else {
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy60;
+ if(yych >= 'M') goto yy59;
+ goto yy1032;
+ } else {
+ if(yych <= 'S'){
+ if(yych >= 'S') goto yy58;
+ goto yy1032;
+ } else {
+ if(yych <= 'T') goto yy1033;
+ if(yych >= 'W') goto yy62;
+ goto yy1032;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy64;
+ if(yych >= 'd') goto yy61;
+ goto yy1032;
+ } else {
+ if(yych <= 'f'){
+ if(yych >= 'f') goto yy63;
+ goto yy1032;
+ } else {
+ if(yych == 'h') goto yy60;
+ goto yy1032;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'm') goto yy59;
+ if(yych <= 'r') goto yy1032;
+ if(yych <= 's') goto yy58;
+ goto yy1034;
+ } else {
+ if(yych <= 'w'){
+ if(yych >= 'w') goto yy62;
+ goto yy1032;
+ } else {
+ if(yych == 'y') goto yy64;
+ goto yy1032;
+ }
+ }
+ }
}
-yy922:
- YYDEBUG(922, *YYCURSOR);
+yy1032:
+ YYDEBUG(1032, *YYCURSOR);
-#line 1150 "ext/date/lib/parse_date.re"
+#line 1176 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("datenocolon");
TIMELIB_INIT;
@@ -12900,17 +16862,17 @@ yy922:
TIMELIB_DEINIT;
return TIMELIB_DATE_NOCOLON;
}
-#line 11031 "ext/date/lib/parse_date.c"
-yy923:
- YYDEBUG(923, *YYCURSOR);
+#line 14780 "ext/date/lib/parse_date.c"
+yy1033:
+ YYDEBUG(1033, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'H'){
if(yych <= '2'){
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy940;
- goto yy941;
+ if(yych <= '1') goto yy1048;
+ goto yy1049;
} else {
- if(yych <= '9') goto yy942;
+ if(yych <= '9') goto yy1050;
if(yych <= 'G') goto yy53;
goto yy66;
}
@@ -12924,16 +16886,16 @@ yy923:
goto yy53;
}
}
-yy924:
- YYDEBUG(924, *YYCURSOR);
+yy1034:
+ YYDEBUG(1034, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'H'){
if(yych <= '2'){
if(yych <= '/') goto yy53;
- if(yych >= '2') goto yy926;
- goto yy925;
+ if(yych >= '2') goto yy1036;
+ goto yy1035;
} else {
- if(yych <= '9') goto yy927;
+ if(yych <= '9') goto yy1037;
if(yych <= 'G') goto yy53;
goto yy66;
}
@@ -12947,697 +16909,691 @@ yy924:
goto yy53;
}
}
-yy925:
- YYDEBUG(925, *YYCURSOR);
+yy1035:
+ YYDEBUG(1035, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy934;
- if(yych <= '9') goto yy927;
+ if(yych <= '5') goto yy1042;
+ if(yych <= '9') goto yy1037;
goto yy53;
-yy926:
- YYDEBUG(926, *YYCURSOR);
+yy1036:
+ YYDEBUG(1036, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '3') goto yy934;
- if(yych <= '5') goto yy928;
+ if(yych <= '3') goto yy1042;
+ if(yych <= '5') goto yy1038;
goto yy53;
-yy927:
- YYDEBUG(927, *YYCURSOR);
+yy1037:
+ YYDEBUG(1037, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= '6') goto yy53;
- goto yy928;
-yy928:
- YYDEBUG(928, *YYCURSOR);
+ goto yy1038;
+yy1038:
+ YYDEBUG(1038, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy929;
-yy929:
- YYDEBUG(929, *YYCURSOR);
+ goto yy1039;
+yy1039:
+ YYDEBUG(1039, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy930;
- if(yych <= '6') goto yy931;
+ if(yych <= '5') goto yy1040;
+ if(yych <= '6') goto yy1041;
goto yy53;
-yy930:
- YYDEBUG(930, *YYCURSOR);
+yy1040:
+ YYDEBUG(1040, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy932;
+ if(yych <= '9') goto yy1025;
goto yy53;
-yy931:
- YYDEBUG(931, *YYCURSOR);
+yy1041:
+ YYDEBUG(1041, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych != '0') goto yy53;
- goto yy932;
-yy932:
- YYDEBUG(932, *YYCURSOR);
- ++YYCURSOR;
- goto yy933;
-yy933:
- YYDEBUG(933, *YYCURSOR);
-
-#line 1162 "ext/date/lib/parse_date.re"
-{
- int tz_not_found;
- DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx");
- TIMELIB_INIT;
- TIMELIB_HAVE_TIME();
- TIMELIB_HAVE_DATE();
- s->time->y = timelib_get_nr((char **) &ptr, 4);
- s->time->m = timelib_get_nr((char **) &ptr, 2);
- s->time->d = timelib_get_nr((char **) &ptr, 2);
- s->time->h = timelib_get_nr((char **) &ptr, 2);
- s->time->i = timelib_get_nr((char **) &ptr, 2);
- s->time->s = timelib_get_nr((char **) &ptr, 2);
- if (*ptr == '.') {
- s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
- if (*ptr) { /* timezone is optional */
- s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
- }
- }
- TIMELIB_DEINIT;
- return TIMELIB_XMLRPC_SOAP;
- }
-#line 11130 "ext/date/lib/parse_date.c"
-yy934:
- YYDEBUG(934, *YYCURSOR);
+ if(yych == '0') goto yy1025;
+ goto yy53;
+yy1042:
+ YYDEBUG(1042, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy935;
- if(yych <= '9') goto yy929;
+ if(yych <= '5') goto yy1043;
+ if(yych <= '9') goto yy1039;
goto yy53;
-yy935:
- YYDEBUG(935, *YYCURSOR);
+yy1043:
+ YYDEBUG(1043, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy936;
- if(yych <= '6') goto yy937;
- if(yych <= '9') goto yy929;
+ if(yych <= '5') goto yy1044;
+ if(yych <= '6') goto yy1045;
+ if(yych <= '9') goto yy1039;
goto yy53;
-yy936:
- YYDEBUG(936, *YYCURSOR);
+yy1044:
+ YYDEBUG(1044, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy938;
- if(yych <= '6') goto yy939;
- if(yych <= '9') goto yy932;
+ if(yych <= '5') goto yy1046;
+ if(yych <= '6') goto yy1047;
+ if(yych <= '9') goto yy1025;
goto yy53;
-yy937:
- YYDEBUG(937, *YYCURSOR);
+yy1045:
+ YYDEBUG(1045, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '0') goto yy938;
- if(yych <= '5') goto yy930;
- if(yych <= '6') goto yy931;
+ if(yych <= '0') goto yy1046;
+ if(yych <= '5') goto yy1040;
+ if(yych <= '6') goto yy1041;
goto yy53;
-yy938:
- YYDEBUG(938, *YYCURSOR);
+yy1046:
+ YYDEBUG(1046, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '9') goto yy932;
- goto yy933;
-yy939:
- YYDEBUG(939, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '9') goto yy1025;
+ goto yy1026;
+yy1047:
+ YYDEBUG(1047, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '0') goto yy932;
- goto yy933;
-yy940:
- YYDEBUG(940, *YYCURSOR);
+ if(yych == '0') goto yy1025;
+ goto yy1026;
+yy1048:
+ YYDEBUG(1048, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy949;
- if(yych <= '9') goto yy942;
- if(yych <= ':') goto yy943;
+ if(yych <= '5') goto yy1057;
+ if(yych <= '9') goto yy1050;
+ if(yych <= ':') goto yy1051;
goto yy53;
-yy941:
- YYDEBUG(941, *YYCURSOR);
+yy1049:
+ YYDEBUG(1049, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '5'){
if(yych <= '/') goto yy53;
- if(yych <= '3') goto yy949;
- goto yy928;
+ if(yych <= '3') goto yy1057;
+ goto yy1038;
} else {
- if(yych == ':') goto yy943;
+ if(yych == ':') goto yy1051;
goto yy53;
}
-yy942:
- YYDEBUG(942, *YYCURSOR);
+yy1050:
+ YYDEBUG(1050, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy928;
+ if(yych <= '5') goto yy1038;
if(yych != ':') goto yy53;
- goto yy943;
-yy943:
- YYDEBUG(943, *YYCURSOR);
+ goto yy1051;
+yy1051:
+ YYDEBUG(1051, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= '6') goto yy53;
- goto yy944;
-yy944:
- YYDEBUG(944, *YYCURSOR);
+ goto yy1052;
+yy1052:
+ YYDEBUG(1052, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy945;
-yy945:
- YYDEBUG(945, *YYCURSOR);
+ goto yy1053;
+yy1053:
+ YYDEBUG(1053, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy946;
-yy946:
- YYDEBUG(946, *YYCURSOR);
+ goto yy1054;
+yy1054:
+ YYDEBUG(1054, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy947;
- if(yych <= '6') goto yy948;
+ if(yych <= '5') goto yy1055;
+ if(yych <= '6') goto yy1056;
goto yy53;
-yy947:
- YYDEBUG(947, *YYCURSOR);
+yy1055:
+ YYDEBUG(1055, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy932;
+ if(yych <= '9') goto yy1025;
goto yy53;
-yy948:
- YYDEBUG(948, *YYCURSOR);
+yy1056:
+ YYDEBUG(1056, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '0') goto yy932;
+ if(yych == '0') goto yy1025;
goto yy53;
-yy949:
- YYDEBUG(949, *YYCURSOR);
+yy1057:
+ YYDEBUG(1057, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy935;
- if(yych <= '9') goto yy929;
- if(yych <= ':') goto yy943;
+ if(yych <= '5') goto yy1043;
+ if(yych <= '9') goto yy1039;
+ if(yych <= ':') goto yy1051;
goto yy53;
-yy950:
- YYDEBUG(950, *YYCURSOR);
+yy1058:
+ YYDEBUG(1058, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
if(yych <= '0') goto yy51;
- if(yych <= '9') goto yy914;
+ if(yych <= '9') goto yy1004;
goto yy57;
-yy951:
- YYDEBUG(951, *YYCURSOR);
+yy1059:
+ YYDEBUG(1059, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '2'){
if(yych <= '/') goto yy57;
- if(yych <= '0') goto yy918;
- goto yy919;
+ if(yych <= '0') goto yy1028;
+ goto yy1029;
} else {
- if(yych <= '3') goto yy920;
- if(yych <= '9') goto yy914;
+ if(yych <= '3') goto yy1030;
+ if(yych <= '9') goto yy1004;
goto yy57;
}
-yy952:
- YYDEBUG(952, *YYCURSOR);
+yy1060:
+ YYDEBUG(1060, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy953;
+ if(yych == 'C') goto yy1061;
if(yych != 'c') goto yy53;
- goto yy953;
-yy953:
- YYDEBUG(953, *YYCURSOR);
+ goto yy1061;
+yy1061:
+ YYDEBUG(1061, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'E') goto yy954;
- if(yych != 'e') goto yy889;
- goto yy954;
-yy954:
- YYDEBUG(954, *YYCURSOR);
+ if(yych == 'E') goto yy1062;
+ if(yych != 'e') goto yy978;
+ goto yy1062;
+yy1062:
+ YYDEBUG(1062, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy955;
+ if(yych == 'M') goto yy1063;
if(yych != 'm') goto yy53;
- goto yy955;
-yy955:
- YYDEBUG(955, *YYCURSOR);
+ goto yy1063;
+yy1063:
+ YYDEBUG(1063, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy956;
+ if(yych == 'B') goto yy1064;
if(yych != 'b') goto yy53;
- goto yy956;
-yy956:
- YYDEBUG(956, *YYCURSOR);
+ goto yy1064;
+yy1064:
+ YYDEBUG(1064, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy957;
+ if(yych == 'E') goto yy1065;
if(yych != 'e') goto yy53;
- goto yy957;
-yy957:
- YYDEBUG(957, *YYCURSOR);
+ goto yy1065;
+yy1065:
+ YYDEBUG(1065, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy958;
+ if(yych == 'R') goto yy1066;
if(yych != 'r') goto yy53;
- goto yy958;
-yy958:
- YYDEBUG(958, *YYCURSOR);
+ goto yy1066;
+yy1066:
+ YYDEBUG(1066, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy889;
-yy959:
- YYDEBUG(959, *YYCURSOR);
+ goto yy978;
+yy1067:
+ YYDEBUG(1067, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'V') goto yy960;
+ if(yych == 'V') goto yy1068;
if(yych != 'v') goto yy53;
- goto yy960;
-yy960:
- YYDEBUG(960, *YYCURSOR);
+ goto yy1068;
+yy1068:
+ YYDEBUG(1068, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'E') goto yy961;
- if(yych != 'e') goto yy889;
- goto yy961;
-yy961:
- YYDEBUG(961, *YYCURSOR);
+ if(yych == 'E') goto yy1069;
+ if(yych != 'e') goto yy978;
+ goto yy1069;
+yy1069:
+ YYDEBUG(1069, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy962;
+ if(yych == 'M') goto yy1070;
if(yych != 'm') goto yy53;
- goto yy962;
-yy962:
- YYDEBUG(962, *YYCURSOR);
+ goto yy1070;
+yy1070:
+ YYDEBUG(1070, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy963;
+ if(yych == 'B') goto yy1071;
if(yych != 'b') goto yy53;
- goto yy963;
-yy963:
- YYDEBUG(963, *YYCURSOR);
+ goto yy1071;
+yy1071:
+ YYDEBUG(1071, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy964;
+ if(yych == 'E') goto yy1072;
if(yych != 'e') goto yy53;
- goto yy964;
-yy964:
- YYDEBUG(964, *YYCURSOR);
+ goto yy1072;
+yy1072:
+ YYDEBUG(1072, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy958;
- if(yych == 'r') goto yy958;
+ if(yych == 'R') goto yy1066;
+ if(yych == 'r') goto yy1066;
goto yy53;
-yy965:
- YYDEBUG(965, *YYCURSOR);
+yy1073:
+ YYDEBUG(1073, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy966;
+ if(yych == 'T') goto yy1074;
if(yych != 't') goto yy53;
- goto yy966;
-yy966:
- YYDEBUG(966, *YYCURSOR);
+ goto yy1074;
+yy1074:
+ YYDEBUG(1074, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'O') goto yy967;
- if(yych != 'o') goto yy889;
- goto yy967;
-yy967:
- YYDEBUG(967, *YYCURSOR);
+ if(yych == 'O') goto yy1075;
+ if(yych != 'o') goto yy978;
+ goto yy1075;
+yy1075:
+ YYDEBUG(1075, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy968;
+ if(yych == 'B') goto yy1076;
if(yych != 'b') goto yy53;
- goto yy968;
-yy968:
- YYDEBUG(968, *YYCURSOR);
+ goto yy1076;
+yy1076:
+ YYDEBUG(1076, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy969;
+ if(yych == 'E') goto yy1077;
if(yych != 'e') goto yy53;
- goto yy969;
-yy969:
- YYDEBUG(969, *YYCURSOR);
+ goto yy1077;
+yy1077:
+ YYDEBUG(1077, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy958;
- if(yych == 'r') goto yy958;
+ if(yych == 'R') goto yy1066;
+ if(yych == 'r') goto yy1066;
goto yy53;
-yy970:
- YYDEBUG(970, *YYCURSOR);
+yy1078:
+ YYDEBUG(1078, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'P'){
if(yych == 'C') goto yy121;
if(yych <= 'O') goto yy53;
- goto yy971;
+ goto yy1079;
} else {
if(yych <= 'c'){
if(yych <= 'b') goto yy53;
goto yy121;
} else {
if(yych != 'p') goto yy53;
- goto yy971;
+ goto yy1079;
}
}
-yy971:
- YYDEBUG(971, *YYCURSOR);
+yy1079:
+ YYDEBUG(1079, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy972;
- if(yych != 't') goto yy889;
- goto yy972;
-yy972:
- YYDEBUG(972, *YYCURSOR);
+ if(yych == 'T') goto yy1080;
+ if(yych != 't') goto yy978;
+ goto yy1080;
+yy1080:
+ YYDEBUG(1080, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'E') goto yy973;
- if(yych != 'e') goto yy889;
- goto yy973;
-yy973:
- YYDEBUG(973, *YYCURSOR);
+ if(yych == 'E') goto yy1081;
+ if(yych != 'e') goto yy978;
+ goto yy1081;
+yy1081:
+ YYDEBUG(1081, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'M') goto yy974;
+ if(yych == 'M') goto yy1082;
if(yych != 'm') goto yy53;
- goto yy974;
-yy974:
- YYDEBUG(974, *YYCURSOR);
+ goto yy1082;
+yy1082:
+ YYDEBUG(1082, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy975;
+ if(yych == 'B') goto yy1083;
if(yych != 'b') goto yy53;
- goto yy975;
-yy975:
- YYDEBUG(975, *YYCURSOR);
+ goto yy1083;
+yy1083:
+ YYDEBUG(1083, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy976;
+ if(yych == 'E') goto yy1084;
if(yych != 'e') goto yy53;
- goto yy976;
-yy976:
- YYDEBUG(976, *YYCURSOR);
+ goto yy1084;
+yy1084:
+ YYDEBUG(1084, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy958;
- if(yych == 'r') goto yy958;
+ if(yych == 'R') goto yy1066;
+ if(yych == 'r') goto yy1066;
goto yy53;
-yy977:
- YYDEBUG(977, *YYCURSOR);
+yy1085:
+ YYDEBUG(1085, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy981;
- if(yych == 'g') goto yy981;
+ if(yych == 'G') goto yy1089;
+ if(yych == 'g') goto yy1089;
goto yy53;
-yy978:
- YYDEBUG(978, *YYCURSOR);
+yy1086:
+ YYDEBUG(1086, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy979;
+ if(yych == 'R') goto yy1087;
if(yych != 'r') goto yy53;
- goto yy979;
-yy979:
- YYDEBUG(979, *YYCURSOR);
+ goto yy1087;
+yy1087:
+ YYDEBUG(1087, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'I') goto yy980;
- if(yych != 'i') goto yy889;
- goto yy980;
-yy980:
- YYDEBUG(980, *YYCURSOR);
+ if(yych == 'I') goto yy1088;
+ if(yych != 'i') goto yy978;
+ goto yy1088;
+yy1088:
+ YYDEBUG(1088, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'L') goto yy958;
- if(yych == 'l') goto yy958;
+ if(yych == 'L') goto yy1066;
+ if(yych == 'l') goto yy1066;
goto yy53;
-yy981:
- YYDEBUG(981, *YYCURSOR);
+yy1089:
+ YYDEBUG(1089, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'U') goto yy982;
- if(yych != 'u') goto yy889;
- goto yy982;
-yy982:
- YYDEBUG(982, *YYCURSOR);
+ if(yych == 'U') goto yy1090;
+ if(yych != 'u') goto yy978;
+ goto yy1090;
+yy1090:
+ YYDEBUG(1090, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'S') goto yy983;
+ if(yych == 'S') goto yy1091;
if(yych != 's') goto yy53;
- goto yy983;
-yy983:
- YYDEBUG(983, *YYCURSOR);
+ goto yy1091;
+yy1091:
+ YYDEBUG(1091, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy958;
- if(yych == 't') goto yy958;
+ if(yych == 'T') goto yy1066;
+ if(yych == 't') goto yy1066;
goto yy53;
-yy984:
- YYDEBUG(984, *YYCURSOR);
+yy1092:
+ YYDEBUG(1092, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
- if(yych == 'R') goto yy985;
+ if(yych == 'R') goto yy1093;
if(yych <= 'X') goto yy53;
- goto yy958;
+ goto yy1066;
} else {
if(yych <= 'r'){
if(yych <= 'q') goto yy53;
- goto yy985;
+ goto yy1093;
} else {
- if(yych == 'y') goto yy958;
+ if(yych == 'y') goto yy1066;
goto yy53;
}
}
-yy985:
- YYDEBUG(985, *YYCURSOR);
+yy1093:
+ YYDEBUG(1093, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'C') goto yy986;
- if(yych != 'c') goto yy889;
- goto yy986;
-yy986:
- YYDEBUG(986, *YYCURSOR);
+ if(yych == 'C') goto yy1094;
+ if(yych != 'c') goto yy978;
+ goto yy1094;
+yy1094:
+ YYDEBUG(1094, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy958;
- if(yych == 'h') goto yy958;
+ if(yych == 'H') goto yy1066;
+ if(yych == 'h') goto yy1066;
goto yy53;
-yy987:
- YYDEBUG(987, *YYCURSOR);
+yy1095:
+ YYDEBUG(1095, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy988;
+ if(yych == 'B') goto yy1096;
if(yych != 'b') goto yy53;
- goto yy988;
-yy988:
- YYDEBUG(988, *YYCURSOR);
+ goto yy1096;
+yy1096:
+ YYDEBUG(1096, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'R') goto yy989;
- if(yych != 'r') goto yy889;
- goto yy989;
-yy989:
- YYDEBUG(989, *YYCURSOR);
+ if(yych == 'R') goto yy1097;
+ if(yych != 'r') goto yy978;
+ goto yy1097;
+yy1097:
+ YYDEBUG(1097, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'U') goto yy990;
+ if(yych == 'U') goto yy1098;
if(yych != 'u') goto yy53;
- goto yy990;
-yy990:
- YYDEBUG(990, *YYCURSOR);
+ goto yy1098;
+yy1098:
+ YYDEBUG(1098, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy991;
+ if(yych == 'A') goto yy1099;
if(yych != 'a') goto yy53;
- goto yy991;
-yy991:
- YYDEBUG(991, *YYCURSOR);
+ goto yy1099;
+yy1099:
+ YYDEBUG(1099, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy992;
+ if(yych == 'R') goto yy1100;
if(yych != 'r') goto yy53;
- goto yy992;
-yy992:
- YYDEBUG(992, *YYCURSOR);
+ goto yy1100;
+yy1100:
+ YYDEBUG(1100, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy958;
- if(yych == 'y') goto yy958;
+ if(yych == 'Y') goto yy1066;
+ if(yych == 'y') goto yy1066;
goto yy53;
-yy993:
- YYDEBUG(993, *YYCURSOR);
+yy1101:
+ YYDEBUG(1101, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
- if(yych == 'L') goto yy1000;
+ if(yych == 'L') goto yy1108;
if(yych <= 'M') goto yy53;
- goto yy999;
+ goto yy1107;
} else {
if(yych <= 'l'){
if(yych <= 'k') goto yy53;
- goto yy1000;
+ goto yy1108;
} else {
- if(yych == 'n') goto yy999;
+ if(yych == 'n') goto yy1107;
goto yy53;
}
}
-yy994:
- YYDEBUG(994, *YYCURSOR);
+yy1102:
+ YYDEBUG(1102, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy995;
+ if(yych == 'N') goto yy1103;
if(yych != 'n') goto yy53;
- goto yy995;
-yy995:
- YYDEBUG(995, *YYCURSOR);
+ goto yy1103;
+yy1103:
+ YYDEBUG(1103, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'U') goto yy996;
- if(yych != 'u') goto yy889;
- goto yy996;
-yy996:
- YYDEBUG(996, *YYCURSOR);
+ if(yych == 'U') goto yy1104;
+ if(yych != 'u') goto yy978;
+ goto yy1104;
+yy1104:
+ YYDEBUG(1104, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy997;
+ if(yych == 'A') goto yy1105;
if(yych != 'a') goto yy53;
- goto yy997;
-yy997:
- YYDEBUG(997, *YYCURSOR);
+ goto yy1105;
+yy1105:
+ YYDEBUG(1105, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy998;
+ if(yych == 'R') goto yy1106;
if(yych != 'r') goto yy53;
- goto yy998;
-yy998:
- YYDEBUG(998, *YYCURSOR);
+ goto yy1106;
+yy1106:
+ YYDEBUG(1106, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy958;
- if(yych == 'y') goto yy958;
+ if(yych == 'Y') goto yy1066;
+ if(yych == 'y') goto yy1066;
goto yy53;
-yy999:
- YYDEBUG(999, *YYCURSOR);
+yy1107:
+ YYDEBUG(1107, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy958;
- if(yych == 'e') goto yy958;
- goto yy889;
-yy1000:
- YYDEBUG(1000, *YYCURSOR);
+ if(yych == 'E') goto yy1066;
+ if(yych == 'e') goto yy1066;
+ goto yy978;
+yy1108:
+ YYDEBUG(1108, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy958;
- if(yych == 'y') goto yy958;
- goto yy889;
-yy1001:
- YYDEBUG(1001, *YYCURSOR);
+ if(yych == 'Y') goto yy1066;
+ if(yych == 'y') goto yy1066;
+ goto yy978;
+yy1109:
+ YYDEBUG(1109, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy958;
- goto yy889;
-yy1002:
- YYDEBUG(1002, *YYCURSOR);
+ if(yych == 'I') goto yy1066;
+ goto yy978;
+yy1110:
+ YYDEBUG(1110, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych != 'I') goto yy889;
- goto yy1003;
-yy1003:
- YYDEBUG(1003, *YYCURSOR);
+ if(yych != 'I') goto yy978;
+ goto yy1111;
+yy1111:
+ YYDEBUG(1111, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy958;
- goto yy889;
-yy1004:
- YYDEBUG(1004, *YYCURSOR);
+ if(yych == 'I') goto yy1066;
+ goto yy978;
+yy1112:
+ YYDEBUG(1112, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'I') goto yy958;
- goto yy889;
-yy1005:
- YYDEBUG(1005, *YYCURSOR);
+ if(yych == 'I') goto yy1066;
+ goto yy978;
+yy1113:
+ YYDEBUG(1113, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '0') goto yy1018;
- if(yych <= '9') goto yy1017;
+ if(yych <= '0') goto yy1128;
+ if(yych <= '9') goto yy1127;
goto yy53;
-yy1006:
- YYDEBUG(1006, *YYCURSOR);
+yy1114:
+ YYDEBUG(1114, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1016;
+ if(yych <= '9') goto yy1126;
goto yy53;
-yy1007:
- YYDEBUG(1007, *YYCURSOR);
+yy1115:
+ YYDEBUG(1115, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1014;
- if(yych <= '6') goto yy1013;
+ if(yych <= '5') goto yy1124;
+ if(yych <= '6') goto yy1123;
goto yy53;
-yy1008:
- YYDEBUG(1008, *YYCURSOR);
+yy1116:
+ YYDEBUG(1116, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy987;
- if(yych == 'e') goto yy987;
+ if(yych == 'E') goto yy1095;
+ if(yych == 'e') goto yy1095;
goto yy53;
-yy1009:
- YYDEBUG(1009, *YYCURSOR);
+yy1117:
+ YYDEBUG(1117, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy984;
- if(yych == 'a') goto yy984;
+ if(yych == 'A') goto yy1092;
+ if(yych == 'a') goto yy1092;
goto yy53;
-yy1010:
- YYDEBUG(1010, *YYCURSOR);
+yy1118:
+ YYDEBUG(1118, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy1012;
- if(yych == 'e') goto yy1012;
+ if(yych == 'E') goto yy1122;
+ if(yych == 'e') goto yy1122;
goto yy53;
-yy1011:
- YYDEBUG(1011, *YYCURSOR);
+yy1119:
+ YYDEBUG(1119, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy952;
- if(yych == 'e') goto yy952;
+ if(yych == 'E') goto yy1060;
+ if(yych == 'e') goto yy1060;
goto yy53;
-yy1012:
- YYDEBUG(1012, *YYCURSOR);
+yy1120:
+ YYDEBUG(1120, *YYCURSOR);
+ ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
+ yych = *YYCURSOR;
+ goto yy1121;
+yy1121:
+ YYDEBUG(1121, *YYCURSOR);
+ YYDEBUG(-1, yych);
+ switch(yych){
+ case 0x09: case ' ': case '-':
+ case '.': goto yy1120;
+ case 'A': case 'a': goto yy984;
+ case 'D': case 'd': goto yy1119;
+ case 'F': case 'f': goto yy1116;
+ case 'I': goto yy977;
+ case 'J': case 'j': goto yy981;
+ case 'M': case 'm': goto yy1117;
+ case 'N': case 'n': goto yy987;
+ case 'O': case 'o': goto yy986;
+ case 'S': case 's': goto yy1118;
+ case 'V': goto yy979;
+ case 'X': goto yy980;
+ default: goto yy53;
+ }
+yy1122:
+ YYDEBUG(1122, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'P') goto yy971;
- if(yych == 'p') goto yy971;
+ if(yych == 'P') goto yy1079;
+ if(yych == 'p') goto yy1079;
goto yy53;
-yy1013:
- YYDEBUG(1013, *YYCURSOR);
+yy1123:
+ YYDEBUG(1123, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '6') goto yy1015;
+ if(yych <= '6') goto yy1125;
goto yy53;
-yy1014:
- YYDEBUG(1014, *YYCURSOR);
+yy1124:
+ YYDEBUG(1124, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy1015;
-yy1015:
- YYDEBUG(1015, *YYCURSOR);
+ goto yy1125;
+yy1125:
+ YYDEBUG(1125, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy915;
-yy1016:
- YYDEBUG(1016, *YYCURSOR);
+ goto yy1005;
+yy1126:
+ YYDEBUG(1126, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1015;
+ if(yych <= '9') goto yy1125;
goto yy53;
-yy1017:
- YYDEBUG(1017, *YYCURSOR);
+yy1127:
+ YYDEBUG(1127, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1015;
+ if(yych <= '9') goto yy1125;
goto yy53;
-yy1018:
- YYDEBUG(1018, *YYCURSOR);
+yy1128:
+ YYDEBUG(1128, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '0') goto yy53;
- if(yych <= '9') goto yy1015;
+ if(yych <= '9') goto yy1125;
goto yy53;
-yy1019:
- YYDEBUG(1019, *YYCURSOR);
+yy1129:
+ YYDEBUG(1129, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '.') goto yy53;
- if(yych <= '/') goto yy1022;
- if(yych <= '0') goto yy1021;
- if(yych <= '9') goto yy1032;
+ if(yych <= '/') goto yy1132;
+ if(yych <= '0') goto yy1131;
+ if(yych <= '9') goto yy1142;
goto yy53;
-yy1020:
- YYDEBUG(1020, *YYCURSOR);
+yy1130:
+ YYDEBUG(1130, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '.') goto yy53;
- if(yych <= '/') goto yy1022;
- if(yych <= '2') goto yy1032;
+ if(yych <= '/') goto yy1132;
+ if(yych <= '2') goto yy1142;
goto yy53;
-yy1021:
- YYDEBUG(1021, *YYCURSOR);
+yy1131:
+ YYDEBUG(1131, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '/') goto yy53;
- goto yy1022;
-yy1022:
- YYDEBUG(1022, *YYCURSOR);
+ goto yy1132;
+yy1132:
+ YYDEBUG(1132, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '2') goto yy1023;
- if(yych <= '3') goto yy1025;
- if(yych <= '9') goto yy1026;
+ if(yych <= '2') goto yy1133;
+ if(yych <= '3') goto yy1135;
+ if(yych <= '9') goto yy1136;
goto yy53;
-yy1023:
- YYDEBUG(1023, *YYCURSOR);
+yy1133:
+ YYDEBUG(1133, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych <= '/') goto yy1024;
- if(yych <= '9') goto yy1026;
- if(yych >= 'n') goto yy1028;
- goto yy1024;
+ if(yych <= '/') goto yy1134;
+ if(yych <= '9') goto yy1136;
+ if(yych >= 'n') goto yy1138;
+ goto yy1134;
} else {
if(yych <= 'r'){
- if(yych >= 'r') goto yy1029;
- goto yy1024;
+ if(yych >= 'r') goto yy1139;
+ goto yy1134;
} else {
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
}
-yy1024:
- YYDEBUG(1024, *YYCURSOR);
+yy1134:
+ YYDEBUG(1134, *YYCURSOR);
-#line 1047 "ext/date/lib/parse_date.re"
+#line 1073 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("iso8601date | iso8601dateslash | dateslash");
TIMELIB_INIT;
@@ -13648,1056 +17604,1049 @@ yy1024:
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
-#line 11575 "ext/date/lib/parse_date.c"
-yy1025:
- YYDEBUG(1025, *YYCURSOR);
+#line 15317 "ext/date/lib/parse_date.c"
+yy1135:
+ YYDEBUG(1135, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych <= '/') goto yy1024;
- if(yych <= '1') goto yy1026;
- if(yych <= 'm') goto yy1024;
- goto yy1028;
+ if(yych <= '/') goto yy1134;
+ if(yych <= '1') goto yy1136;
+ if(yych <= 'm') goto yy1134;
+ goto yy1138;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy1024;
- goto yy1029;
+ if(yych <= 'q') goto yy1134;
+ goto yy1139;
} else {
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
}
-yy1026:
- YYDEBUG(1026, *YYCURSOR);
+yy1136:
+ YYDEBUG(1136, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'q'){
- if(yych == 'n') goto yy1028;
- goto yy1024;
+ if(yych == 'n') goto yy1138;
+ goto yy1134;
} else {
- if(yych <= 'r') goto yy1029;
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 'r') goto yy1139;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
-yy1027:
- YYDEBUG(1027, *YYCURSOR);
+yy1137:
+ YYDEBUG(1137, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 't') goto yy1031;
+ if(yych == 't') goto yy1141;
goto yy53;
-yy1028:
- YYDEBUG(1028, *YYCURSOR);
+yy1138:
+ YYDEBUG(1138, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy1031;
+ if(yych == 'd') goto yy1141;
goto yy53;
-yy1029:
- YYDEBUG(1029, *YYCURSOR);
+yy1139:
+ YYDEBUG(1139, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy1031;
+ if(yych == 'd') goto yy1141;
goto yy53;
-yy1030:
- YYDEBUG(1030, *YYCURSOR);
+yy1140:
+ YYDEBUG(1140, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != 'h') goto yy53;
- goto yy1031;
-yy1031:
- YYDEBUG(1031, *YYCURSOR);
+ goto yy1141;
+yy1141:
+ YYDEBUG(1141, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy1024;
-yy1032:
- YYDEBUG(1032, *YYCURSOR);
+ goto yy1134;
+yy1142:
+ YYDEBUG(1142, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '/') goto yy53;
- goto yy1033;
-yy1033:
- YYDEBUG(1033, *YYCURSOR);
+ goto yy1143;
+yy1143:
+ YYDEBUG(1143, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '2'){
if(yych <= '/') goto yy53;
- if(yych >= '1') goto yy1035;
- goto yy1034;
+ if(yych >= '1') goto yy1145;
+ goto yy1144;
} else {
- if(yych <= '3') goto yy1036;
- if(yych <= '9') goto yy1026;
+ if(yych <= '3') goto yy1146;
+ if(yych <= '9') goto yy1136;
goto yy53;
}
-yy1034:
- YYDEBUG(1034, *YYCURSOR);
+yy1144:
+ YYDEBUG(1144, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
if(yych <= '0'){
- if(yych <= '/') goto yy1024;
- goto yy1026;
+ if(yych <= '/') goto yy1134;
+ goto yy1136;
} else {
- if(yych <= '9') goto yy1037;
- if(yych <= 'm') goto yy1024;
- goto yy1028;
+ if(yych <= '9') goto yy1147;
+ if(yych <= 'm') goto yy1134;
+ goto yy1138;
}
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy1024;
- goto yy1029;
+ if(yych <= 'q') goto yy1134;
+ goto yy1139;
} else {
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
}
-yy1035:
- YYDEBUG(1035, *YYCURSOR);
+yy1145:
+ YYDEBUG(1145, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych <= '/') goto yy1024;
- if(yych <= '9') goto yy1037;
- if(yych <= 'm') goto yy1024;
- goto yy1028;
+ if(yych <= '/') goto yy1134;
+ if(yych <= '9') goto yy1147;
+ if(yych <= 'm') goto yy1134;
+ goto yy1138;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy1024;
- goto yy1029;
+ if(yych <= 'q') goto yy1134;
+ goto yy1139;
} else {
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
}
-yy1036:
- YYDEBUG(1036, *YYCURSOR);
+yy1146:
+ YYDEBUG(1146, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych <= '/') goto yy1024;
- if(yych <= '1') goto yy1037;
- if(yych <= 'm') goto yy1024;
- goto yy1028;
+ if(yych <= '/') goto yy1134;
+ if(yych <= '1') goto yy1147;
+ if(yych <= 'm') goto yy1134;
+ goto yy1138;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy1024;
- goto yy1029;
+ if(yych <= 'q') goto yy1134;
+ goto yy1139;
} else {
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
}
-yy1037:
- YYDEBUG(1037, *YYCURSOR);
+yy1147:
+ YYDEBUG(1147, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych == '/') goto yy1031;
- if(yych <= 'm') goto yy1024;
- goto yy1028;
+ if(yych == '/') goto yy1141;
+ if(yych <= 'm') goto yy1134;
+ goto yy1138;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy1024;
- goto yy1029;
+ if(yych <= 'q') goto yy1134;
+ goto yy1139;
} else {
- if(yych <= 's') goto yy1027;
- if(yych <= 't') goto yy1030;
- goto yy1024;
+ if(yych <= 's') goto yy1137;
+ if(yych <= 't') goto yy1140;
+ goto yy1134;
}
}
-yy1038:
- YYDEBUG(1038, *YYCURSOR);
+yy1148:
+ YYDEBUG(1148, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'A') goto yy1113;
+ if(yych == 'A') goto yy1223;
if(yych <= 'T') goto yy53;
- goto yy1112;
+ goto yy1222;
} else {
if(yych <= 'a'){
if(yych <= '`') goto yy53;
- goto yy1113;
+ goto yy1223;
} else {
- if(yych == 'u') goto yy1112;
+ if(yych == 'u') goto yy1222;
goto yy53;
}
}
-yy1039:
- YYDEBUG(1039, *YYCURSOR);
+yy1149:
+ YYDEBUG(1149, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy1110;
- if(yych == 'e') goto yy1110;
+ if(yych == 'E') goto yy1220;
+ if(yych == 'e') goto yy1220;
goto yy53;
-yy1040:
- YYDEBUG(1040, *YYCURSOR);
+yy1150:
+ YYDEBUG(1150, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy1107;
- if(yych == 'a') goto yy1107;
+ if(yych == 'A') goto yy1217;
+ if(yych == 'a') goto yy1217;
goto yy53;
-yy1041:
- YYDEBUG(1041, *YYCURSOR);
+yy1151:
+ YYDEBUG(1151, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
- if(yych == 'P') goto yy1104;
+ if(yych == 'P') goto yy1214;
if(yych <= 'T') goto yy53;
- goto yy1103;
+ goto yy1213;
} else {
if(yych <= 'p'){
if(yych <= 'o') goto yy53;
- goto yy1104;
+ goto yy1214;
} else {
- if(yych == 'u') goto yy1103;
+ if(yych == 'u') goto yy1213;
goto yy53;
}
}
-yy1042:
- YYDEBUG(1042, *YYCURSOR);
+yy1152:
+ YYDEBUG(1152, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy1100;
- if(yych == 'e') goto yy1100;
+ if(yych == 'E') goto yy1210;
+ if(yych == 'e') goto yy1210;
goto yy53;
-yy1043:
- YYDEBUG(1043, *YYCURSOR);
+yy1153:
+ YYDEBUG(1153, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy1098;
- if(yych == 'c') goto yy1098;
+ if(yych == 'C') goto yy1208;
+ if(yych == 'c') goto yy1208;
goto yy53;
-yy1044:
- YYDEBUG(1044, *YYCURSOR);
+yy1154:
+ YYDEBUG(1154, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'O') goto yy1096;
- if(yych == 'o') goto yy1096;
+ if(yych == 'O') goto yy1206;
+ if(yych == 'o') goto yy1206;
goto yy53;
-yy1045:
- YYDEBUG(1045, *YYCURSOR);
+yy1155:
+ YYDEBUG(1155, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'E') goto yy1094;
- if(yych == 'e') goto yy1094;
+ if(yych == 'E') goto yy1204;
+ if(yych == 'e') goto yy1204;
goto yy53;
-yy1046:
- YYDEBUG(1046, *YYCURSOR);
+yy1156:
+ YYDEBUG(1156, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/'){
- if(yych == '-') goto yy1049;
+ if(yych == '-') goto yy1159;
goto yy53;
} else {
- if(yych <= '0') goto yy1048;
- if(yych <= '9') goto yy1068;
+ if(yych <= '0') goto yy1158;
+ if(yych <= '9') goto yy1178;
goto yy53;
}
-yy1047:
- YYDEBUG(1047, *YYCURSOR);
+yy1157:
+ YYDEBUG(1157, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy1049;
+ if(yych == '-') goto yy1159;
if(yych <= '/') goto yy53;
- if(yych <= '2') goto yy1068;
+ if(yych <= '2') goto yy1178;
goto yy53;
-yy1048:
- YYDEBUG(1048, *YYCURSOR);
+yy1158:
+ YYDEBUG(1158, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '-') goto yy53;
- goto yy1049;
-yy1049:
- YYDEBUG(1049, *YYCURSOR);
+ goto yy1159;
+yy1159:
+ YYDEBUG(1159, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '2') goto yy1050;
- if(yych <= '3') goto yy1051;
- if(yych <= '9') goto yy1052;
+ if(yych <= '2') goto yy1160;
+ if(yych <= '3') goto yy1161;
+ if(yych <= '9') goto yy1162;
goto yy53;
-yy1050:
- YYDEBUG(1050, *YYCURSOR);
+yy1160:
+ YYDEBUG(1160, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '9'){
- if(yych <= '/') goto yy775;
- goto yy1052;
+ if(yych <= '/') goto yy860;
+ goto yy1162;
} else {
- if(yych == 'T') goto yy1057;
- goto yy775;
+ if(yych == 'T') goto yy1167;
+ goto yy860;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy1054;
- if(yych <= 'q') goto yy775;
- goto yy1055;
+ if(yych <= 'n') goto yy1164;
+ if(yych <= 'q') goto yy860;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy775;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy860;
}
}
-yy1051:
- YYDEBUG(1051, *YYCURSOR);
+yy1161:
+ YYDEBUG(1161, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy775;
- goto yy1052;
+ if(yych <= '/') goto yy860;
+ goto yy1162;
} else {
- if(yych == 'T') goto yy1057;
- goto yy775;
+ if(yych == 'T') goto yy1167;
+ goto yy860;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy1054;
- if(yych <= 'q') goto yy775;
- goto yy1055;
+ if(yych <= 'n') goto yy1164;
+ if(yych <= 'q') goto yy860;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy775;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy860;
}
}
-yy1052:
- YYDEBUG(1052, *YYCURSOR);
+yy1162:
+ YYDEBUG(1162, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych == 'T') goto yy1057;
- if(yych <= 'm') goto yy775;
- goto yy1054;
+ if(yych == 'T') goto yy1167;
+ if(yych <= 'm') goto yy860;
+ goto yy1164;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy775;
- goto yy1055;
+ if(yych <= 'q') goto yy860;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy775;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy860;
}
}
-yy1053:
- YYDEBUG(1053, *YYCURSOR);
+yy1163:
+ YYDEBUG(1163, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 't') goto yy1067;
+ if(yych == 't') goto yy1177;
goto yy53;
-yy1054:
- YYDEBUG(1054, *YYCURSOR);
+yy1164:
+ YYDEBUG(1164, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy1067;
+ if(yych == 'd') goto yy1177;
goto yy53;
-yy1055:
- YYDEBUG(1055, *YYCURSOR);
+yy1165:
+ YYDEBUG(1165, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'd') goto yy1067;
+ if(yych == 'd') goto yy1177;
goto yy53;
-yy1056:
- YYDEBUG(1056, *YYCURSOR);
+yy1166:
+ YYDEBUG(1166, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'h') goto yy1067;
+ if(yych == 'h') goto yy1177;
goto yy53;
-yy1057:
- YYDEBUG(1057, *YYCURSOR);
+yy1167:
+ YYDEBUG(1167, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy1058;
- if(yych <= '2') goto yy1059;
- if(yych <= '9') goto yy1060;
+ if(yych <= '1') goto yy1168;
+ if(yych <= '2') goto yy1169;
+ if(yych <= '9') goto yy1170;
goto yy53;
-yy1058:
- YYDEBUG(1058, *YYCURSOR);
+yy1168:
+ YYDEBUG(1168, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1060;
- if(yych <= ':') goto yy1061;
+ if(yych <= '9') goto yy1170;
+ if(yych <= ':') goto yy1171;
goto yy53;
-yy1059:
- YYDEBUG(1059, *YYCURSOR);
+yy1169:
+ YYDEBUG(1169, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '3') goto yy1060;
- if(yych == ':') goto yy1061;
+ if(yych <= '3') goto yy1170;
+ if(yych == ':') goto yy1171;
goto yy53;
-yy1060:
- YYDEBUG(1060, *YYCURSOR);
+yy1170:
+ YYDEBUG(1170, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy1061;
-yy1061:
- YYDEBUG(1061, *YYCURSOR);
+ goto yy1171;
+yy1171:
+ YYDEBUG(1171, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1062;
- if(yych <= '9') goto yy1063;
+ if(yych <= '5') goto yy1172;
+ if(yych <= '9') goto yy1173;
goto yy53;
-yy1062:
- YYDEBUG(1062, *YYCURSOR);
+yy1172:
+ YYDEBUG(1172, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1063;
- if(yych <= ':') goto yy1064;
+ if(yych <= '9') goto yy1173;
+ if(yych <= ':') goto yy1174;
goto yy53;
-yy1063:
- YYDEBUG(1063, *YYCURSOR);
+yy1173:
+ YYDEBUG(1173, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy1064;
-yy1064:
- YYDEBUG(1064, *YYCURSOR);
+ goto yy1174;
+yy1174:
+ YYDEBUG(1174, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1065;
- if(yych <= '6') goto yy1066;
- if(yych <= '9') goto yy932;
+ if(yych <= '5') goto yy1175;
+ if(yych <= '6') goto yy1176;
+ if(yych <= '9') goto yy1025;
goto yy53;
-yy1065:
- YYDEBUG(1065, *YYCURSOR);
+yy1175:
+ YYDEBUG(1175, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '9') goto yy932;
- goto yy933;
-yy1066:
- YYDEBUG(1066, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '9') goto yy1025;
+ goto yy1026;
+yy1176:
+ YYDEBUG(1176, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '0') goto yy932;
- goto yy933;
-yy1067:
- YYDEBUG(1067, *YYCURSOR);
+ if(yych == '0') goto yy1025;
+ goto yy1026;
+yy1177:
+ YYDEBUG(1177, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 'T') goto yy1057;
- goto yy775;
-yy1068:
- YYDEBUG(1068, *YYCURSOR);
+ if(yych == 'T') goto yy1167;
+ goto yy860;
+yy1178:
+ YYDEBUG(1178, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != '-') goto yy53;
- goto yy1069;
-yy1069:
- YYDEBUG(1069, *YYCURSOR);
+ goto yy1179;
+yy1179:
+ YYDEBUG(1179, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '2'){
if(yych <= '/') goto yy53;
- if(yych >= '1') goto yy1071;
- goto yy1070;
+ if(yych >= '1') goto yy1181;
+ goto yy1180;
} else {
- if(yych <= '3') goto yy1072;
- if(yych <= '9') goto yy1052;
+ if(yych <= '3') goto yy1182;
+ if(yych <= '9') goto yy1162;
goto yy53;
}
-yy1070:
- YYDEBUG(1070, *YYCURSOR);
+yy1180:
+ YYDEBUG(1180, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '9'){
- if(yych <= '/') goto yy775;
- if(yych <= '0') goto yy1052;
- goto yy1073;
+ if(yych <= '/') goto yy860;
+ if(yych <= '0') goto yy1162;
+ goto yy1183;
} else {
- if(yych == 'T') goto yy1057;
- goto yy775;
+ if(yych == 'T') goto yy1167;
+ goto yy860;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy1054;
- if(yych <= 'q') goto yy775;
- goto yy1055;
+ if(yych <= 'n') goto yy1164;
+ if(yych <= 'q') goto yy860;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy775;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy860;
}
}
-yy1071:
- YYDEBUG(1071, *YYCURSOR);
+yy1181:
+ YYDEBUG(1181, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '9'){
- if(yych <= '/') goto yy775;
- goto yy1073;
+ if(yych <= '/') goto yy860;
+ goto yy1183;
} else {
- if(yych == 'T') goto yy1057;
- goto yy775;
+ if(yych == 'T') goto yy1167;
+ goto yy860;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy1054;
- if(yych <= 'q') goto yy775;
- goto yy1055;
+ if(yych <= 'n') goto yy1164;
+ if(yych <= 'q') goto yy860;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy775;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy860;
}
}
-yy1072:
- YYDEBUG(1072, *YYCURSOR);
+yy1182:
+ YYDEBUG(1182, *YYCURSOR);
yyaccept = 12;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'm'){
if(yych <= '1'){
- if(yych <= '/') goto yy775;
- goto yy1073;
+ if(yych <= '/') goto yy860;
+ goto yy1183;
} else {
- if(yych == 'T') goto yy1057;
- goto yy775;
+ if(yych == 'T') goto yy1167;
+ goto yy860;
}
} else {
if(yych <= 'r'){
- if(yych <= 'n') goto yy1054;
- if(yych <= 'q') goto yy775;
- goto yy1055;
+ if(yych <= 'n') goto yy1164;
+ if(yych <= 'q') goto yy860;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy775;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy860;
}
}
-yy1073:
- YYDEBUG(1073, *YYCURSOR);
+yy1183:
+ YYDEBUG(1183, *YYCURSOR);
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'n'){
- if(yych == 'T') goto yy1074;
- if(yych <= 'm') goto yy1024;
- goto yy1054;
+ if(yych == 'T') goto yy1184;
+ if(yych <= 'm') goto yy1134;
+ goto yy1164;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy1024;
- goto yy1055;
+ if(yych <= 'q') goto yy1134;
+ goto yy1165;
} else {
- if(yych <= 's') goto yy1053;
- if(yych <= 't') goto yy1056;
- goto yy1024;
+ if(yych <= 's') goto yy1163;
+ if(yych <= 't') goto yy1166;
+ goto yy1134;
}
}
-yy1074:
- YYDEBUG(1074, *YYCURSOR);
+yy1184:
+ YYDEBUG(1184, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy1075;
- if(yych <= '2') goto yy1076;
- if(yych <= '9') goto yy1060;
+ if(yych <= '1') goto yy1185;
+ if(yych <= '2') goto yy1186;
+ if(yych <= '9') goto yy1170;
goto yy53;
-yy1075:
- YYDEBUG(1075, *YYCURSOR);
+yy1185:
+ YYDEBUG(1185, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1077;
- if(yych <= ':') goto yy1061;
+ if(yych <= '9') goto yy1187;
+ if(yych <= ':') goto yy1171;
goto yy53;
-yy1076:
- YYDEBUG(1076, *YYCURSOR);
+yy1186:
+ YYDEBUG(1186, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '3') goto yy1077;
- if(yych == ':') goto yy1061;
+ if(yych <= '3') goto yy1187;
+ if(yych == ':') goto yy1171;
goto yy53;
-yy1077:
- YYDEBUG(1077, *YYCURSOR);
+yy1187:
+ YYDEBUG(1187, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy1078;
-yy1078:
- YYDEBUG(1078, *YYCURSOR);
+ goto yy1188;
+yy1188:
+ YYDEBUG(1188, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1079;
- if(yych <= '9') goto yy1063;
+ if(yych <= '5') goto yy1189;
+ if(yych <= '9') goto yy1173;
goto yy53;
-yy1079:
- YYDEBUG(1079, *YYCURSOR);
+yy1189:
+ YYDEBUG(1189, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '9') goto yy1080;
- if(yych <= ':') goto yy1064;
+ if(yych <= '9') goto yy1190;
+ if(yych <= ':') goto yy1174;
goto yy53;
-yy1080:
- YYDEBUG(1080, *YYCURSOR);
+yy1190:
+ YYDEBUG(1190, *YYCURSOR);
yych = *++YYCURSOR;
if(yych != ':') goto yy53;
- goto yy1081;
-yy1081:
- YYDEBUG(1081, *YYCURSOR);
+ goto yy1191;
+yy1191:
+ YYDEBUG(1191, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1082;
- if(yych <= '6') goto yy1083;
- if(yych <= '9') goto yy932;
+ if(yych <= '5') goto yy1192;
+ if(yych <= '6') goto yy1193;
+ if(yych <= '9') goto yy1025;
goto yy53;
-yy1082:
- YYDEBUG(1082, *YYCURSOR);
+yy1192:
+ YYDEBUG(1192, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '9') goto yy1084;
- goto yy933;
-yy1083:
- YYDEBUG(1083, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '9') goto yy1194;
+ goto yy1026;
+yy1193:
+ YYDEBUG(1193, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych != '0') goto yy933;
- goto yy1084;
-yy1084:
- YYDEBUG(1084, *YYCURSOR);
+ if(yych != '0') goto yy1026;
+ goto yy1194;
+yy1194:
+ YYDEBUG(1194, *YYCURSOR);
yyaccept = 19;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych != '.') goto yy933;
- goto yy1085;
-yy1085:
- YYDEBUG(1085, *YYCURSOR);
+ if(yych != '.') goto yy1026;
+ goto yy1195;
+yy1195:
+ YYDEBUG(1195, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy1086;
-yy1086:
- YYDEBUG(1086, *YYCURSOR);
+ goto yy1196;
+yy1196:
+ YYDEBUG(1196, *YYCURSOR);
yyaccept = 19;
YYMARKER = ++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
yych = *YYCURSOR;
- goto yy1087;
-yy1087:
- YYDEBUG(1087, *YYCURSOR);
+ goto yy1197;
+yy1197:
+ YYDEBUG(1197, *YYCURSOR);
if(yych <= ','){
- if(yych != '+') goto yy933;
- goto yy1088;
+ if(yych != '+') goto yy1026;
+ goto yy1198;
} else {
- if(yych <= '-') goto yy1088;
- if(yych <= '/') goto yy933;
- if(yych <= '9') goto yy1086;
- goto yy933;
+ if(yych <= '-') goto yy1198;
+ if(yych <= '/') goto yy1026;
+ if(yych <= '9') goto yy1196;
+ goto yy1026;
}
-yy1088:
- YYDEBUG(1088, *YYCURSOR);
+yy1198:
+ YYDEBUG(1198, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '1') goto yy1089;
- if(yych <= '2') goto yy1090;
- if(yych <= '9') goto yy1091;
+ if(yych <= '1') goto yy1199;
+ if(yych <= '2') goto yy1200;
+ if(yych <= '9') goto yy1201;
goto yy53;
-yy1089:
- YYDEBUG(1089, *YYCURSOR);
+yy1199:
+ YYDEBUG(1199, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '9') goto yy1091;
- if(yych <= ':') goto yy1092;
- goto yy933;
-yy1090:
- YYDEBUG(1090, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '9') goto yy1201;
+ if(yych <= ':') goto yy1202;
+ goto yy1026;
+yy1200:
+ YYDEBUG(1200, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '5'){
- if(yych <= '/') goto yy933;
- if(yych >= '4') goto yy1093;
- goto yy1091;
+ if(yych <= '/') goto yy1026;
+ if(yych >= '4') goto yy1203;
+ goto yy1201;
} else {
- if(yych <= '9') goto yy932;
- if(yych <= ':') goto yy1092;
- goto yy933;
+ if(yych <= '9') goto yy1025;
+ if(yych <= ':') goto yy1202;
+ goto yy1026;
}
-yy1091:
- YYDEBUG(1091, *YYCURSOR);
+yy1201:
+ YYDEBUG(1201, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '5') goto yy1093;
- if(yych <= '9') goto yy932;
- if(yych >= ';') goto yy933;
- goto yy1092;
-yy1092:
- YYDEBUG(1092, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '5') goto yy1203;
+ if(yych <= '9') goto yy1025;
+ if(yych >= ';') goto yy1026;
+ goto yy1202;
+yy1202:
+ YYDEBUG(1202, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '5') goto yy1093;
- if(yych <= '9') goto yy932;
- goto yy933;
-yy1093:
- YYDEBUG(1093, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '5') goto yy1203;
+ if(yych <= '9') goto yy1025;
+ goto yy1026;
+yy1203:
+ YYDEBUG(1203, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '/') goto yy933;
- if(yych <= '9') goto yy932;
- goto yy933;
-yy1094:
- YYDEBUG(1094, *YYCURSOR);
+ if(yych <= '/') goto yy1026;
+ if(yych <= '9') goto yy1025;
+ goto yy1026;
+yy1204:
+ YYDEBUG(1204, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'C') goto yy1095;
+ if(yych == 'C') goto yy1205;
if(yych != 'c') goto yy53;
- goto yy1095;
-yy1095:
- YYDEBUG(1095, *YYCURSOR);
+ goto yy1205;
+yy1205:
+ YYDEBUG(1205, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'E') goto yy954;
- if(yych == 'e') goto yy954;
- goto yy889;
+ if(yych <= 'E') goto yy1062;
+ if(yych == 'e') goto yy1062;
+ goto yy978;
}
-yy1096:
- YYDEBUG(1096, *YYCURSOR);
+yy1206:
+ YYDEBUG(1206, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'V') goto yy1097;
+ if(yych == 'V') goto yy1207;
if(yych != 'v') goto yy53;
- goto yy1097;
-yy1097:
- YYDEBUG(1097, *YYCURSOR);
+ goto yy1207;
+yy1207:
+ YYDEBUG(1207, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'E') goto yy961;
- if(yych == 'e') goto yy961;
- goto yy889;
+ if(yych <= 'E') goto yy1069;
+ if(yych == 'e') goto yy1069;
+ goto yy978;
}
-yy1098:
- YYDEBUG(1098, *YYCURSOR);
+yy1208:
+ YYDEBUG(1208, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy1099;
+ if(yych == 'T') goto yy1209;
if(yych != 't') goto yy53;
- goto yy1099;
-yy1099:
- YYDEBUG(1099, *YYCURSOR);
+ goto yy1209;
+yy1209:
+ YYDEBUG(1209, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'O') goto yy967;
- if(yych == 'o') goto yy967;
- goto yy889;
+ if(yych <= 'O') goto yy1075;
+ if(yych == 'o') goto yy1075;
+ goto yy978;
}
-yy1100:
- YYDEBUG(1100, *YYCURSOR);
+yy1210:
+ YYDEBUG(1210, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'P') goto yy1101;
+ if(yych == 'P') goto yy1211;
if(yych != 'p') goto yy53;
- goto yy1101;
-yy1101:
- YYDEBUG(1101, *YYCURSOR);
+ goto yy1211;
+yy1211:
+ YYDEBUG(1211, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'T') goto yy1102;
- if(yych != 't') goto yy889;
- goto yy1102;
+ if(yych <= 'T') goto yy1212;
+ if(yych != 't') goto yy978;
+ goto yy1212;
}
-yy1102:
- YYDEBUG(1102, *YYCURSOR);
+yy1212:
+ YYDEBUG(1212, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'E') goto yy973;
- if(yych == 'e') goto yy973;
- goto yy889;
+ if(yych <= 'E') goto yy1081;
+ if(yych == 'e') goto yy1081;
+ goto yy978;
}
-yy1103:
- YYDEBUG(1103, *YYCURSOR);
+yy1213:
+ YYDEBUG(1213, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'G') goto yy1106;
- if(yych == 'g') goto yy1106;
+ if(yych == 'G') goto yy1216;
+ if(yych == 'g') goto yy1216;
goto yy53;
-yy1104:
- YYDEBUG(1104, *YYCURSOR);
+yy1214:
+ YYDEBUG(1214, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy1105;
+ if(yych == 'R') goto yy1215;
if(yych != 'r') goto yy53;
- goto yy1105;
-yy1105:
- YYDEBUG(1105, *YYCURSOR);
+ goto yy1215;
+yy1215:
+ YYDEBUG(1215, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'I') goto yy980;
- if(yych == 'i') goto yy980;
- goto yy889;
+ if(yych <= 'I') goto yy1088;
+ if(yych == 'i') goto yy1088;
+ goto yy978;
}
-yy1106:
- YYDEBUG(1106, *YYCURSOR);
+yy1216:
+ YYDEBUG(1216, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'U') goto yy982;
- if(yych == 'u') goto yy982;
- goto yy889;
+ if(yych <= 'U') goto yy1090;
+ if(yych == 'u') goto yy1090;
+ goto yy978;
}
-yy1107:
- YYDEBUG(1107, *YYCURSOR);
+yy1217:
+ YYDEBUG(1217, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
- if(yych == 'R') goto yy1108;
+ if(yych == 'R') goto yy1218;
if(yych <= 'X') goto yy53;
- goto yy1109;
+ goto yy1219;
} else {
if(yych <= 'r'){
if(yych <= 'q') goto yy53;
- goto yy1108;
+ goto yy1218;
} else {
- if(yych == 'y') goto yy1109;
+ if(yych == 'y') goto yy1219;
goto yy53;
}
}
-yy1108:
- YYDEBUG(1108, *YYCURSOR);
+yy1218:
+ YYDEBUG(1218, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'B'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'C') goto yy986;
- if(yych == 'c') goto yy986;
- goto yy889;
+ if(yych <= 'C') goto yy1094;
+ if(yych == 'c') goto yy1094;
+ goto yy978;
}
-yy1109:
- YYDEBUG(1109, *YYCURSOR);
+yy1219:
+ YYDEBUG(1219, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '-') goto yy863;
- goto yy889;
-yy1110:
- YYDEBUG(1110, *YYCURSOR);
+ if(yych == '-') goto yy954;
+ goto yy978;
+yy1220:
+ YYDEBUG(1220, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy1111;
+ if(yych == 'B') goto yy1221;
if(yych != 'b') goto yy53;
- goto yy1111;
-yy1111:
- YYDEBUG(1111, *YYCURSOR);
+ goto yy1221;
+yy1221:
+ YYDEBUG(1221, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'Q'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'R') goto yy989;
- if(yych == 'r') goto yy989;
- goto yy889;
+ if(yych <= 'R') goto yy1097;
+ if(yych == 'r') goto yy1097;
+ goto yy978;
}
-yy1112:
- YYDEBUG(1112, *YYCURSOR);
+yy1222:
+ YYDEBUG(1222, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
- if(yych == 'L') goto yy1116;
+ if(yych == 'L') goto yy1226;
if(yych <= 'M') goto yy53;
- goto yy1115;
+ goto yy1225;
} else {
if(yych <= 'l'){
if(yych <= 'k') goto yy53;
- goto yy1116;
+ goto yy1226;
} else {
- if(yych == 'n') goto yy1115;
+ if(yych == 'n') goto yy1225;
goto yy53;
}
}
-yy1113:
- YYDEBUG(1113, *YYCURSOR);
+yy1223:
+ YYDEBUG(1223, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'N') goto yy1114;
+ if(yych == 'N') goto yy1224;
if(yych != 'n') goto yy53;
- goto yy1114;
-yy1114:
- YYDEBUG(1114, *YYCURSOR);
+ goto yy1224;
+yy1224:
+ YYDEBUG(1224, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'U') goto yy996;
- if(yych == 'u') goto yy996;
- goto yy889;
+ if(yych <= 'U') goto yy1104;
+ if(yych == 'u') goto yy1104;
+ goto yy978;
}
-yy1115:
- YYDEBUG(1115, *YYCURSOR);
+yy1225:
+ YYDEBUG(1225, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'E') goto yy958;
- if(yych == 'e') goto yy958;
- goto yy889;
+ if(yych <= 'E') goto yy1066;
+ if(yych == 'e') goto yy1066;
+ goto yy978;
}
-yy1116:
- YYDEBUG(1116, *YYCURSOR);
+yy1226:
+ YYDEBUG(1226, *YYCURSOR);
yyaccept = 17;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'X'){
- if(yych == '-') goto yy863;
- goto yy889;
+ if(yych == '-') goto yy954;
+ goto yy978;
} else {
- if(yych <= 'Y') goto yy958;
- if(yych == 'y') goto yy958;
- goto yy889;
+ if(yych <= 'Y') goto yy1066;
+ if(yych == 'y') goto yy1066;
+ goto yy978;
}
-yy1117:
- YYDEBUG(1117, *YYCURSOR);
+yy1227:
+ YYDEBUG(1227, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'T'){
- if(yych <= '-') goto yy617;
- if(yych <= '.') goto yy845;
- if(yych <= '/') goto yy844;
- goto yy617;
+ if(yych <= '/'){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy784;
+ goto yy931;
+ } else {
+ if(yych <= ',') goto yy784;
+ if(yych <= '.') goto yy931;
+ goto yy930;
+ }
} else {
- if(yych <= 'U') goto yy74;
- if(yych == 'u') goto yy74;
- goto yy617;
+ if(yych <= 'U'){
+ if(yych <= 'T') goto yy784;
+ goto yy74;
+ } else {
+ if(yych == 'u') goto yy74;
+ goto yy784;
+ }
}
-yy1118:
- YYDEBUG(1118, *YYCURSOR);
+yy1228:
+ YYDEBUG(1228, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'P'){
if(yych == 'C') goto yy121;
if(yych <= 'O') goto yy53;
- goto yy709;
+ goto yy792;
} else {
if(yych <= 'c'){
if(yych <= 'b') goto yy53;
goto yy121;
} else {
- if(yych == 'p') goto yy709;
+ if(yych == 'p') goto yy792;
goto yy53;
}
}
-yy1119:
- YYDEBUG(1119, *YYCURSOR);
+yy1229:
+ YYDEBUG(1229, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'm'){
- if(yych <= '.'){
- if(yych <= ',') goto yy1121;
- if(yych <= '-') goto yy615;
- goto yy845;
+ if(yych <= '9'){
+ if(yych <= ','){
+ if(yych != 0x09) goto yy1232;
+ goto yy1230;
} else {
- if(yych <= '/') goto yy844;
- if(yych <= '9') goto yy851;
- goto yy1121;
+ if(yych <= '-') goto yy695;
+ if(yych <= '.') goto yy931;
+ if(yych <= '/') goto yy930;
+ goto yy935;
}
} else {
- if(yych <= 'r'){
- if(yych <= 'n') goto yy612;
- if(yych <= 'q') goto yy1121;
- goto yy613;
+ if(yych <= 'q'){
+ if(yych == 'n') goto yy692;
+ goto yy1232;
} else {
- if(yych <= 's') goto yy606;
- if(yych <= 't') goto yy610;
- goto yy1121;
+ if(yych <= 'r') goto yy693;
+ if(yych <= 's') goto yy686;
+ if(yych <= 't') goto yy690;
+ goto yy1232;
}
}
-yy1120:
- YYDEBUG(1120, *YYCURSOR);
+yy1230:
+ YYDEBUG(1230, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy1232;
+ if(yych <= '0') goto yy932;
+ if(yych <= '1') goto yy933;
+ if(yych <= '9') goto yy934;
+ goto yy1232;
+yy1231:
+ YYDEBUG(1231, *YYCURSOR);
++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
yych = *YYCURSOR;
- goto yy1121;
-yy1121:
- YYDEBUG(1121, *YYCURSOR);
+ goto yy1232;
+yy1232:
+ YYDEBUG(1232, *YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ': goto yy1120;
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',':
+ case 0x09: case ' ': goto yy1231;
case '-':
- case '.': goto yy616;
- case 'A': case 'a': goto yy699;
- case 'D': case 'd': goto yy608;
- case 'F': case 'f': goto yy609;
+ case '.': goto yy783;
+ case 'A': case 'a': goto yy780;
+ case 'D': case 'd': goto yy688;
+ case 'F': case 'f': goto yy689;
case 'H': case 'h': goto yy60;
- case 'I': goto yy619;
- case 'J': case 'j': goto yy623;
- case 'M': case 'm': goto yy607;
- case 'N': case 'n': goto yy626;
- case 'O': case 'o': goto yy625;
- case 'S': case 's': goto yy605;
+ case 'I': goto yy697;
+ case 'J': case 'j': goto yy701;
+ case 'M': case 'm': goto yy687;
+ case 'N': case 'n': goto yy704;
+ case 'O': case 'o': goto yy703;
+ case 'S': case 's': goto yy685;
case 'T': case 't': goto yy65;
- case 'V': goto yy621;
+ case 'V': goto yy699;
case 'W': case 'w': goto yy62;
- case 'X': goto yy622;
+ case 'X': goto yy700;
case 'Y': case 'y': goto yy64;
default: goto yy53;
}
-yy1122:
- YYDEBUG(1122, *YYCURSOR);
+yy1233:
+ YYDEBUG(1233, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= ':'){
- if(yych <= '.'){
- if(yych <= ',') goto yy1121;
- if(yych <= '-') goto yy615;
- goto yy1123;
+ if(yych <= '9'){
+ if(yych <= '-'){
+ if(yych == 0x09) goto yy1230;
+ if(yych <= ',') goto yy1232;
+ goto yy695;
} else {
- if(yych <= '/') goto yy844;
- if(yych <= '5') goto yy1125;
- if(yych <= '9') goto yy851;
- goto yy1124;
+ if(yych <= '.') goto yy1234;
+ if(yych <= '/') goto yy930;
+ if(yych <= '5') goto yy1236;
+ goto yy935;
}
} else {
if(yych <= 'q'){
- if(yych == 'n') goto yy612;
- goto yy1121;
+ if(yych <= ':') goto yy1235;
+ if(yych == 'n') goto yy692;
+ goto yy1232;
} else {
- if(yych <= 'r') goto yy613;
- if(yych <= 's') goto yy606;
- if(yych <= 't') goto yy610;
- goto yy1121;
+ if(yych <= 'r') goto yy693;
+ if(yych <= 's') goto yy686;
+ if(yych <= 't') goto yy690;
+ goto yy1232;
}
}
-yy1123:
- YYDEBUG(1123, *YYCURSOR);
+yy1234:
+ YYDEBUG(1234, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '1'){
- if(yych <= '/') goto yy617;
- if(yych <= '0') goto yy1147;
- goto yy1148;
+ if(yych <= '/') goto yy784;
+ if(yych <= '0') goto yy1258;
+ goto yy1259;
} else {
- if(yych <= '5') goto yy1149;
- if(yych <= '9') goto yy1150;
- goto yy617;
+ if(yych <= '5') goto yy1260;
+ if(yych <= '9') goto yy1261;
+ goto yy784;
}
-yy1124:
- YYDEBUG(1124, *YYCURSOR);
+yy1235:
+ YYDEBUG(1235, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1142;
- if(yych <= '9') goto yy1143;
+ if(yych <= '5') goto yy1253;
+ if(yych <= '9') goto yy1254;
goto yy53;
-yy1125:
- YYDEBUG(1125, *YYCURSOR);
+yy1236:
+ YYDEBUG(1236, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == '-') goto yy852;
+ if(yych == '-') goto yy936;
if(yych <= '/') goto yy57;
if(yych >= ':') goto yy57;
- goto yy1126;
-yy1126:
- YYDEBUG(1126, *YYCURSOR);
+ goto yy1237;
+yy1237:
+ YYDEBUG(1237, *YYCURSOR);
yyaccept = 20;
yych = *(YYMARKER = ++YYCURSOR);
YYDEBUG(-1, yych);
switch(yych){
- case ' ':
- case '!':
- case '"':
- case '#':
- case '$':
- case '%':
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',': case 'A': case 'D': case 'F': case 'H':
+ case 0x09: case ' ': case 'A': case 'D': case 'F': case 'H':
case 'I':
case 'J': case 'M':
case 'N':
@@ -14706,27 +18655,28 @@ yy1126:
case 'Y': case 'a': case 'd': case 'f': case 'h': case 'j': case 'm':
case 'n':
case 'o': case 's':
- case 't': case 'w': case 'y': goto yy884;
- case '-': goto yy881;
- case '.': goto yy887;
- case '/': goto yy882;
- case '0': goto yy1128;
- case '1': goto yy1129;
- case '2': goto yy1130;
- case '3': goto yy1131;
+ case 't': case 'w': case 'y': goto yy975;
+ case '-': goto yy972;
+ case '.': goto yy976;
+ case '/': goto yy973;
+ case '0': goto yy1239;
+ case '1': goto yy1240;
+ case '2': goto yy1241;
+ case '3': goto yy1242;
case '4':
- case '5': goto yy1132;
- case '6': goto yy1133;
+ case '5': goto yy1243;
+ case '6': goto yy1244;
case '7':
case '8':
case '9': goto yy51;
- case 'W': goto yy904;
- default: goto yy1127;
+ case ':': goto yy991;
+ case 'W': goto yy994;
+ default: goto yy1238;
}
-yy1127:
- YYDEBUG(1127, *YYCURSOR);
+yy1238:
+ YYDEBUG(1238, *YYCURSOR);
-#line 969 "ext/date/lib/parse_date.re"
+#line 992 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("gnunocolon");
TIMELIB_INIT;
@@ -14741,110 +18691,116 @@ yy1127:
break;
default:
TIMELIB_DEINIT;
+ add_error(s, "Double time specification");
return TIMELIB_ERROR;
}
s->time->have_time++;
TIMELIB_DEINIT;
return TIMELIB_GNU_NOCOLON;
}
-#line 12466 "ext/date/lib/parse_date.c"
-yy1128:
- YYDEBUG(1128, *YYCURSOR);
+#line 16201 "ext/date/lib/parse_date.c"
+yy1239:
+ YYDEBUG(1239, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '0') goto yy1140;
- if(yych <= '9') goto yy1141;
+ if(yych <= '0') goto yy1251;
+ if(yych <= '9') goto yy1252;
goto yy57;
-yy1129:
- YYDEBUG(1129, *YYCURSOR);
+yy1240:
+ YYDEBUG(1240, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '2') goto yy1139;
- if(yych <= '9') goto yy1138;
+ if(yych <= '2') goto yy1250;
+ if(yych <= '9') goto yy1249;
goto yy57;
-yy1130:
- YYDEBUG(1130, *YYCURSOR);
+yy1241:
+ YYDEBUG(1241, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy1138;
+ if(yych <= '9') goto yy1249;
goto yy57;
-yy1131:
- YYDEBUG(1131, *YYCURSOR);
+yy1242:
+ YYDEBUG(1242, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '5') goto yy1136;
- if(yych <= '6') goto yy1137;
- if(yych <= '9') goto yy1134;
+ if(yych <= '5') goto yy1247;
+ if(yych <= '6') goto yy1248;
+ if(yych <= '9') goto yy1245;
goto yy57;
-yy1132:
- YYDEBUG(1132, *YYCURSOR);
+yy1243:
+ YYDEBUG(1243, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '9') goto yy1134;
+ if(yych <= '9') goto yy1245;
goto yy57;
-yy1133:
- YYDEBUG(1133, *YYCURSOR);
+yy1244:
+ YYDEBUG(1244, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy57;
- if(yych <= '0') goto yy1134;
+ if(yych <= '0') goto yy1245;
if(yych <= '9') goto yy51;
goto yy57;
-yy1134:
- YYDEBUG(1134, *YYCURSOR);
+yy1245:
+ YYDEBUG(1245, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
if(yybm[0+yych] & 8) {
goto yy51;
}
- if(yych <= 'X'){
- if(yych <= 'G'){
- if(yych <= 'C'){
- if(yych == ' ') goto yy57;
- goto yy1135;
+ if(yych <= 'W'){
+ if(yych <= 'F'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych >= ' ') goto yy57;
+ goto yy1246;
} else {
- if(yych == 'E') goto yy1135;
- if(yych <= 'F') goto yy57;
- goto yy1135;
+ if(yych == 'D') goto yy57;
+ if(yych >= 'F') goto yy57;
+ goto yy1246;
}
} else {
- if(yych <= 'R'){
- if(yych <= 'H') goto yy57;
- if(yych == 'M') goto yy57;
- goto yy1135;
+ if(yych <= 'M'){
+ if(yych == 'H') goto yy57;
+ if(yych >= 'M') goto yy57;
+ goto yy1246;
} else {
+ if(yych <= 'R') goto yy1246;
if(yych <= 'T') goto yy57;
- if(yych == 'W') goto yy57;
- goto yy1135;
+ if(yych >= 'W') goto yy57;
+ goto yy1246;
}
}
} else {
- if(yych <= 'l'){
- if(yych <= 'e'){
- if(yych <= 'Y') goto yy57;
- if(yych == 'd') goto yy57;
- goto yy1135;
+ if(yych <= 'h'){
+ if(yych <= 'd'){
+ if(yych == 'Y') goto yy57;
+ if(yych >= 'd') goto yy57;
+ goto yy1246;
} else {
- if(yych == 'g') goto yy1135;
- if(yych <= 'h') goto yy57;
- goto yy1135;
+ if(yych == 'f') goto yy57;
+ if(yych >= 'h') goto yy57;
+ goto yy1246;
}
} else {
- if(yych <= 'v'){
- if(yych <= 'm') goto yy57;
- if(yych <= 'r') goto yy1135;
- if(yych <= 't') goto yy57;
- goto yy1135;
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych >= 's') goto yy57;
+ goto yy1246;
} else {
- if(yych == 'x') goto yy1135;
- if(yych <= 'y') goto yy57;
- goto yy1135;
+ if(yych <= 'w'){
+ if(yych >= 'w') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
}
}
}
-yy1135:
- YYDEBUG(1135, *YYCURSOR);
+yy1246:
+ YYDEBUG(1246, *YYCURSOR);
-#line 1014 "ext/date/lib/parse_date.re"
+#line 1038 "ext/date/lib/parse_date.re"
{
int tz_not_found;
DEBUG_OUTPUT("iso8601nocolon");
@@ -14856,331 +18812,632 @@ yy1135:
if (*ptr != '\0') {
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
}
TIMELIB_DEINIT;
return TIMELIB_ISO_NOCOLON;
}
-#line 12564 "ext/date/lib/parse_date.c"
-yy1136:
- YYDEBUG(1136, *YYCURSOR);
+#line 16306 "ext/date/lib/parse_date.c"
+yy1247:
+ YYDEBUG(1247, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy914;
- default: goto yy1135;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= '/') goto yy1246;
+ if(yych <= '9') goto yy1004;
+ if(yych <= 'C') goto yy1246;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1246;
+ if(yych <= 'T') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1246;
+ if(yych <= 'Y') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych == 'g') goto yy1246;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
}
-yy1137:
- YYDEBUG(1137, *YYCURSOR);
+yy1248:
+ YYDEBUG(1248, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6': goto yy914;
- case '7':
- case '8':
- case '9': goto yy51;
- default: goto yy1135;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= '6'){
+ if(yych <= '/') goto yy1246;
+ goto yy1004;
+ } else {
+ if(yych <= '9') goto yy51;
+ if(yych <= 'C') goto yy1246;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1246;
+ if(yych <= 'T') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1246;
+ if(yych <= 'Y') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych == 'g') goto yy1246;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
}
-yy1138:
- YYDEBUG(1138, *YYCURSOR);
+yy1249:
+ YYDEBUG(1249, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy914;
- default: goto yy1135;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= '/') goto yy1246;
+ if(yych <= '9') goto yy1004;
+ if(yych <= 'C') goto yy1246;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1246;
+ if(yych <= 'T') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1246;
+ if(yych <= 'Y') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych == 'g') goto yy1246;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
}
-yy1139:
- YYDEBUG(1139, *YYCURSOR);
+yy1250:
+ YYDEBUG(1250, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0': goto yy918;
- case '1':
- case '2': goto yy919;
- case '3': goto yy920;
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy914;
- default: goto yy1135;
+ if(yych <= 'T'){
+ if(yych <= '9'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= '0'){
+ if(yych <= '/') goto yy1246;
+ goto yy1028;
+ } else {
+ if(yych <= '2') goto yy1029;
+ if(yych <= '3') goto yy1030;
+ goto yy1004;
+ }
+ }
+ } else {
+ if(yych <= 'G'){
+ if(yych <= 'D'){
+ if(yych <= 'C') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'F') goto yy57;
+ goto yy1246;
+ }
+ } else {
+ if(yych <= 'L'){
+ if(yych <= 'H') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'M') goto yy57;
+ if(yych <= 'R') goto yy1246;
+ goto yy57;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= 'Y'){
+ if(yych == 'W') goto yy57;
+ if(yych <= 'X') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'c') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'f') goto yy57;
+ goto yy1246;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'l'){
+ if(yych <= 'h') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'm') goto yy57;
+ if(yych <= 'r') goto yy1246;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
}
-yy1140:
- YYDEBUG(1140, *YYCURSOR);
+yy1251:
+ YYDEBUG(1251, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0': goto yy51;
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy914;
- default: goto yy1135;
+ if(yych <= 'V'){
+ if(yych <= 'D'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= '0'){
+ if(yych <= '/') goto yy1246;
+ goto yy51;
+ } else {
+ if(yych <= '9') goto yy1004;
+ if(yych <= 'C') goto yy1246;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 'H'){
+ if(yych == 'F') goto yy57;
+ if(yych <= 'G') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'M'){
+ if(yych <= 'L') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'R') goto yy1246;
+ if(yych <= 'T') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'c'){
+ if(yych == 'X') goto yy1246;
+ if(yych <= 'Y') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'd') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych == 'g') goto yy1246;
+ goto yy57;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych == 'm') goto yy57;
+ if(yych <= 'r') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
}
-yy1141:
- YYDEBUG(1141, *YYCURSOR);
+yy1252:
+ YYDEBUG(1252, *YYCURSOR);
yyaccept = 21;
yych = *(YYMARKER = ++YYCURSOR);
- YYDEBUG(-1, yych);
- switch(yych){
- case ' ': case 'D': case 'F': case 'H': case 'M': case 'S':
- case 'T': case 'W': case 'Y': case 'd': case 'f': case 'h': case 'm': case 's':
- case 't': case 'w': case 'y': goto yy57;
- case '0': goto yy918;
- case '1':
- case '2': goto yy919;
- case '3': goto yy920;
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy914;
- default: goto yy1135;
+ if(yych <= 'T'){
+ if(yych <= '9'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy57;
+ if(yych <= 0x1F) goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= '0'){
+ if(yych <= '/') goto yy1246;
+ goto yy1028;
+ } else {
+ if(yych <= '2') goto yy1029;
+ if(yych <= '3') goto yy1030;
+ goto yy1004;
+ }
+ }
+ } else {
+ if(yych <= 'G'){
+ if(yych <= 'D'){
+ if(yych <= 'C') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'F') goto yy57;
+ goto yy1246;
+ }
+ } else {
+ if(yych <= 'L'){
+ if(yych <= 'H') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'M') goto yy57;
+ if(yych <= 'R') goto yy1246;
+ goto yy57;
+ }
+ }
+ }
+ } else {
+ if(yych <= 'g'){
+ if(yych <= 'Y'){
+ if(yych == 'W') goto yy57;
+ if(yych <= 'X') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'c') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'f') goto yy57;
+ goto yy1246;
+ }
+ }
+ } else {
+ if(yych <= 't'){
+ if(yych <= 'l'){
+ if(yych <= 'h') goto yy57;
+ goto yy1246;
+ } else {
+ if(yych <= 'm') goto yy57;
+ if(yych <= 'r') goto yy1246;
+ goto yy57;
+ }
+ } else {
+ if(yych <= 'w'){
+ if(yych <= 'v') goto yy1246;
+ goto yy57;
+ } else {
+ if(yych == 'y') goto yy57;
+ goto yy1246;
+ }
+ }
+ }
}
-yy1142:
- YYDEBUG(1142, *YYCURSOR);
+yy1253:
+ YYDEBUG(1253, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy1144;
- goto yy634;
+ if(yych == '.') goto yy1255;
+ goto yy713;
} else {
- if(yych <= '9') goto yy1143;
- if(yych <= ':') goto yy1144;
- goto yy634;
+ if(yych <= '9') goto yy1254;
+ if(yych <= ':') goto yy1255;
+ goto yy713;
}
-yy1143:
- YYDEBUG(1143, *YYCURSOR);
+yy1254:
+ YYDEBUG(1254, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy1144;
- if(yych != ':') goto yy634;
- goto yy1144;
-yy1144:
- YYDEBUG(1144, *YYCURSOR);
+ if(yych == '.') goto yy1255;
+ if(yych != ':') goto yy713;
+ goto yy1255;
+yy1255:
+ YYDEBUG(1255, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1145;
- if(yych <= '6') goto yy1146;
- if(yych <= '9') goto yy639;
+ if(yych <= '5') goto yy1256;
+ if(yych <= '6') goto yy1257;
+ if(yych <= '9') goto yy718;
goto yy53;
-yy1145:
- YYDEBUG(1145, *YYCURSOR);
+yy1256:
+ YYDEBUG(1256, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy639;
- goto yy634;
-yy1146:
- YYDEBUG(1146, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy718;
+ goto yy713;
+yy1257:
+ YYDEBUG(1257, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych == '0') goto yy639;
- goto yy634;
-yy1147:
- YYDEBUG(1147, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych == '0') goto yy718;
+ goto yy713;
+yy1258:
+ YYDEBUG(1258, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych == '.') goto yy1151;
- goto yy634;
+ if(yych <= '.'){
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ goto yy1262;
} else {
- if(yych <= '9') goto yy1150;
- if(yych <= ':') goto yy1144;
- goto yy634;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy1261;
+ if(yych <= ':') goto yy1255;
+ goto yy713;
}
-yy1148:
- YYDEBUG(1148, *YYCURSOR);
+yy1259:
+ YYDEBUG(1259, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy1151;
- goto yy634;
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ if(yych <= '.') goto yy1262;
+ goto yy713;
} else {
- if(yych <= '2') goto yy1150;
- if(yych <= '9') goto yy1143;
- if(yych <= ':') goto yy1144;
- goto yy634;
+ if(yych <= '2') goto yy1261;
+ if(yych <= '9') goto yy1254;
+ if(yych <= ':') goto yy1255;
+ goto yy713;
}
-yy1149:
- YYDEBUG(1149, *YYCURSOR);
+yy1260:
+ YYDEBUG(1260, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych == '.') goto yy1151;
- goto yy634;
+ if(yych <= '.'){
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ goto yy1262;
} else {
- if(yych <= '9') goto yy1143;
- if(yych <= ':') goto yy1144;
- goto yy634;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy1254;
+ if(yych <= ':') goto yy1255;
+ goto yy713;
}
-yy1150:
- YYDEBUG(1150, *YYCURSOR);
+yy1261:
+ YYDEBUG(1261, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy1151;
- if(yych == ':') goto yy1144;
- goto yy634;
-yy1151:
- YYDEBUG(1151, *YYCURSOR);
+ if(yych <= '.'){
+ if(yych <= ',') goto yy713;
+ if(yych <= '-') goto yy807;
+ goto yy1262;
+ } else {
+ if(yych == ':') goto yy1255;
+ goto yy713;
+ }
+yy1262:
+ YYDEBUG(1262, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '5') goto yy1152;
- if(yych <= '6') goto yy1153;
- if(yych <= '9') goto yy727;
+ if(yych <= '5') goto yy1263;
+ if(yych <= '6') goto yy1264;
+ if(yych <= '9') goto yy811;
goto yy53;
-yy1152:
- YYDEBUG(1152, *YYCURSOR);
+yy1263:
+ YYDEBUG(1263, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy1154;
- goto yy634;
-yy1153:
- YYDEBUG(1153, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy1265;
+ goto yy713;
+yy1264:
+ YYDEBUG(1264, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '/'){
- if(yych == '.') goto yy640;
- goto yy634;
+ if(yych == '.') goto yy719;
+ goto yy713;
} else {
- if(yych <= '0') goto yy1154;
- if(yych <= '9') goto yy728;
- goto yy634;
+ if(yych <= '0') goto yy1265;
+ if(yych <= '9') goto yy812;
+ goto yy713;
}
-yy1154:
- YYDEBUG(1154, *YYCURSOR);
+yy1265:
+ YYDEBUG(1265, *YYCURSOR);
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == '.') goto yy640;
- if(yych <= '/') goto yy634;
- if(yych <= '9') goto yy730;
- goto yy634;
-yy1155:
- YYDEBUG(1155, *YYCURSOR);
+ if(yych == '.') goto yy719;
+ if(yych <= '/') goto yy713;
+ if(yych <= '9') goto yy814;
+ goto yy713;
+yy1266:
+ YYDEBUG(1266, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= ':'){
- if(yych <= '.'){
- if(yych <= ',') goto yy604;
- if(yych <= '-') goto yy615;
- goto yy618;
+ if(yych <= '9'){
+ if(yych <= '-'){
+ if(yych == 0x09) goto yy682;
+ if(yych <= ',') goto yy684;
+ goto yy695;
} else {
- if(yych <= '/') goto yy614;
- if(yych <= '5') goto yy1125;
- if(yych <= '9') goto yy851;
- goto yy627;
+ if(yych <= '.') goto yy696;
+ if(yych <= '/') goto yy694;
+ if(yych <= '5') goto yy1236;
+ goto yy935;
}
} else {
if(yych <= 'q'){
- if(yych == 'n') goto yy612;
- goto yy604;
+ if(yych <= ':') goto yy705;
+ if(yych == 'n') goto yy692;
+ goto yy684;
} else {
- if(yych <= 'r') goto yy613;
- if(yych <= 's') goto yy606;
- if(yych <= 't') goto yy610;
- goto yy604;
+ if(yych <= 'r') goto yy693;
+ if(yych <= 's') goto yy686;
+ if(yych <= 't') goto yy690;
+ goto yy684;
}
}
-yy1156:
- YYDEBUG(1156, *YYCURSOR);
+yy1267:
+ YYDEBUG(1267, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= ':'){
- if(yych <= '.'){
- if(yych <= ',') goto yy1121;
- if(yych <= '-') goto yy615;
- goto yy1123;
+ if(yych <= '9'){
+ if(yych <= '-'){
+ if(yych == 0x09) goto yy1230;
+ if(yych <= ',') goto yy1232;
+ goto yy695;
} else {
- if(yych <= '/') goto yy614;
- if(yych <= '5') goto yy1125;
- if(yych <= '9') goto yy851;
- goto yy1124;
+ if(yych <= '.') goto yy1234;
+ if(yych <= '/') goto yy694;
+ if(yych <= '5') goto yy1236;
+ goto yy935;
}
} else {
if(yych <= 'q'){
- if(yych == 'n') goto yy612;
- goto yy1121;
+ if(yych <= ':') goto yy1235;
+ if(yych == 'n') goto yy692;
+ goto yy1232;
} else {
- if(yych <= 'r') goto yy613;
- if(yych <= 's') goto yy606;
- if(yych <= 't') goto yy610;
- goto yy1121;
+ if(yych <= 'r') goto yy693;
+ if(yych <= 's') goto yy686;
+ if(yych <= 't') goto yy690;
+ goto yy1232;
}
}
-yy1157:
- YYDEBUG(1157, *YYCURSOR);
+yy1268:
+ YYDEBUG(1268, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= '0') goto yy53;
+ if(yych <= '/') goto yy53;
if(yych >= ':') goto yy53;
- goto yy1158;
-yy1158:
- YYDEBUG(1158, *YYCURSOR);
+ goto yy1269;
+yy1269:
+ YYDEBUG(1269, *YYCURSOR);
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy1159;
-yy1159:
- YYDEBUG(1159, *YYCURSOR);
- if(yych <= '/') goto yy1160;
- if(yych <= '9') goto yy1158;
- goto yy1160;
-yy1160:
- YYDEBUG(1160, *YYCURSOR);
+ goto yy1270;
+yy1270:
+ YYDEBUG(1270, *YYCURSOR);
+ if(yych <= '/') goto yy1271;
+ if(yych <= '9') goto yy1269;
+ goto yy1271;
+yy1271:
+ YYDEBUG(1271, *YYCURSOR);
-#line 904 "ext/date/lib/parse_date.re"
+#line 925 "ext/date/lib/parse_date.re"
{
timelib_ull i;
@@ -15203,9 +19460,9 @@ yy1160:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 12850 "ext/date/lib/parse_date.c"
-yy1161:
- YYDEBUG(1161, *YYCURSOR);
+#line 16897 "ext/date/lib/parse_date.c"
+yy1272:
+ YYDEBUG(1272, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -15214,7 +19471,7 @@ yy1161:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy1192;
+ goto yy1312;
}
} else {
if(yych <= 'm'){
@@ -15222,61 +19479,61 @@ yy1161:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'n') goto yy1192;
+ if(yych <= 'n') goto yy1312;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1162:
- YYDEBUG(1162, *YYCURSOR);
+yy1273:
+ YYDEBUG(1273, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'U'){
if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'I') goto yy1186;
+ if(yych == 'I') goto yy1306;
if(yych <= 'T') goto yy134;
- goto yy1185;
+ goto yy1305;
}
} else {
if(yych <= 'i'){
if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'h') goto yy134;
- goto yy1186;
+ goto yy1306;
} else {
- if(yych == 'u') goto yy1185;
+ if(yych == 'u') goto yy1305;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1163:
- YYDEBUG(1163, *YYCURSOR);
+yy1274:
+ YYDEBUG(1274, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'M'){
if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'D') goto yy1174;
+ if(yych == 'D') goto yy1294;
if(yych <= 'L') goto yy134;
- goto yy1175;
+ goto yy1295;
}
} else {
if(yych <= 'd'){
if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'c') goto yy134;
- goto yy1174;
+ goto yy1294;
} else {
- if(yych == 'm') goto yy1175;
+ if(yych == 'm') goto yy1295;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1164:
- YYDEBUG(1164, *YYCURSOR);
+yy1275:
+ YYDEBUG(1275, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych <= ')'){
@@ -15285,7 +19542,7 @@ yy1164:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy1170;
+ goto yy1290;
}
} else {
if(yych <= 'd'){
@@ -15293,13 +19550,13 @@ yy1164:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'e') goto yy1170;
+ if(yych <= 'e') goto yy1290;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1165:
- YYDEBUG(1165, *YYCURSOR);
+yy1276:
+ YYDEBUG(1276, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'E'){
if(yych <= ')'){
@@ -15308,7 +19565,7 @@ yy1165:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy1166;
+ goto yy1286;
}
} else {
if(yych <= 'd'){
@@ -15316,13 +19573,81 @@ yy1165:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'e') goto yy1166;
+ if(yych <= 'e') goto yy1286;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1166:
- YYDEBUG(1166, *YYCURSOR);
+yy1277:
+ YYDEBUG(1277, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/'){
+ if(yych == '.') goto yy1235;
+ goto yy53;
+ } else {
+ if(yych <= '9') goto yy1280;
+ if(yych <= ':') goto yy1235;
+ goto yy53;
+ }
+yy1278:
+ YYDEBUG(1278, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/'){
+ if(yych == '.') goto yy1235;
+ goto yy53;
+ } else {
+ if(yych <= '3') goto yy1280;
+ if(yych == ':') goto yy1235;
+ goto yy53;
+ }
+yy1279:
+ YYDEBUG(1279, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == '.') goto yy1235;
+ if(yych == ':') goto yy1235;
+ goto yy53;
+yy1280:
+ YYDEBUG(1280, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/'){
+ if(yych == '.') goto yy1235;
+ goto yy53;
+ } else {
+ if(yych <= '5') goto yy1281;
+ if(yych == ':') goto yy1235;
+ goto yy53;
+ }
+yy1281:
+ YYDEBUG(1281, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych >= ':') goto yy53;
+ goto yy1282;
+yy1282:
+ YYDEBUG(1282, *YYCURSOR);
+ yyaccept = 20;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/') goto yy1238;
+ if(yych <= '5') goto yy1283;
+ if(yych <= '6') goto yy1284;
+ goto yy1238;
+yy1283:
+ YYDEBUG(1283, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= '/') goto yy53;
+ if(yych <= '9') goto yy1285;
+ goto yy53;
+yy1284:
+ YYDEBUG(1284, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych != '0') goto yy53;
+ goto yy1285;
+yy1285:
+ YYDEBUG(1285, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy1246;
+yy1286:
+ YYDEBUG(1286, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'L'){
if(yych <= ')'){
@@ -15331,7 +19656,7 @@ yy1166:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'K') goto yy135;
- goto yy1167;
+ goto yy1287;
}
} else {
if(yych <= 'k'){
@@ -15339,101 +19664,162 @@ yy1166:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'l') goto yy1167;
+ if(yych <= 'l') goto yy1287;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1167:
- YYDEBUG(1167, *YYCURSOR);
- yyaccept = 1;
+yy1287:
+ YYDEBUG(1287, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'F'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'E') goto yy136;
+ goto yy1288;
+ }
+ } else {
+ if(yych <= 'e'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'f') goto yy1288;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy1288:
+ YYDEBUG(1288, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'T'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy137;
+ goto yy1289;
+ }
+ } else {
+ if(yych <= 's'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 't') goto yy1289;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1289:
+ YYDEBUG(1289, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'E'){
+ if(yych <= 'G'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'F') goto yy1168;
- if(yych != 'f') goto yy3;
- goto yy1168;
+ if(yych <= 'H') goto yy163;
+ if(yych == 'h') goto yy163;
+ goto yy3;
}
-yy1168:
- YYDEBUG(1168, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy1169;
- if(yych != 't') goto yy53;
- goto yy1169;
-yy1169:
- YYDEBUG(1169, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy53;
-yy1170:
- YYDEBUG(1170, *YYCURSOR);
+yy1290:
+ YYDEBUG(1290, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'S'){
if(yych <= ')'){
- if(yych <= '(') goto yy341;
+ if(yych <= '(') goto yy405;
goto yy132;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'R') goto yy135;
- goto yy1171;
+ goto yy1291;
}
} else {
if(yych <= 'r'){
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy341;
+ if(yych <= '`') goto yy405;
goto yy135;
} else {
- if(yych <= 's') goto yy1171;
+ if(yych <= 's') goto yy1291;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy1171:
- YYDEBUG(1171, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'C'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy1291:
+ YYDEBUG(1291, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'D'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy136;
+ goto yy1292;
+ }
} else {
- if(yych <= 'D') goto yy1172;
- if(yych != 'd') goto yy3;
- goto yy1172;
+ if(yych <= 'c'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'd') goto yy1292;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1172:
- YYDEBUG(1172, *YYCURSOR);
+yy1292:
+ YYDEBUG(1292, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy1173;
- if(yych != 'a') goto yy53;
- goto yy1173;
-yy1173:
- YYDEBUG(1173, *YYCURSOR);
+ if(yych <= 'A'){
+ if(yych == ')') goto yy132;
+ if(yych <= '@') goto yy3;
+ goto yy1293;
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy1293;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1293:
+ YYDEBUG(1293, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy347;
- goto yy53;
-yy1174:
- YYDEBUG(1174, *YYCURSOR);
+ if(yych <= 'X'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= 'Y') goto yy411;
+ if(yych == 'y') goto yy411;
+ goto yy3;
+ }
+yy1294:
+ YYDEBUG(1294, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'A'){
if(yych == ')') goto yy132;
if(yych <= '@') goto yy3;
- goto yy1182;
+ goto yy1302;
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
goto yy3;
} else {
- if(yych <= 'a') goto yy1182;
+ if(yych <= 'a') goto yy1302;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1175:
- YYDEBUG(1175, *YYCURSOR);
+yy1295:
+ YYDEBUG(1295, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'O'){
if(yych <= ')'){
@@ -15442,7 +19828,7 @@ yy1175:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'N') goto yy135;
- goto yy1176;
+ goto yy1296;
}
} else {
if(yych <= 'n'){
@@ -15450,49 +19836,83 @@ yy1175:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'o') goto yy1176;
+ if(yych <= 'o') goto yy1296;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1176:
- YYDEBUG(1176, *YYCURSOR);
- yyaccept = 1;
+yy1296:
+ YYDEBUG(1296, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'R'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy136;
+ goto yy1297;
+ }
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'r') goto yy1297;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy1297:
+ YYDEBUG(1297, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'R'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy137;
+ goto yy1298;
+ }
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'r') goto yy1298;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1298:
+ YYDEBUG(1298, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'Q'){
+ if(yych <= 'N'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'R') goto yy1177;
- if(yych != 'r') goto yy3;
- goto yy1177;
+ if(yych <= 'O') goto yy1299;
+ if(yych != 'o') goto yy3;
+ goto yy1299;
}
-yy1177:
- YYDEBUG(1177, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy1178;
- if(yych != 'r') goto yy53;
- goto yy1178;
-yy1178:
- YYDEBUG(1178, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'O') goto yy1179;
- if(yych != 'o') goto yy53;
- goto yy1179;
-yy1179:
- YYDEBUG(1179, *YYCURSOR);
+yy1299:
+ YYDEBUG(1299, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'W') goto yy1180;
+ if(yych == 'W') goto yy1300;
if(yych != 'w') goto yy53;
- goto yy1180;
-yy1180:
- YYDEBUG(1180, *YYCURSOR);
+ goto yy1300;
+yy1300:
+ YYDEBUG(1300, *YYCURSOR);
++YYCURSOR;
- goto yy1181;
-yy1181:
- YYDEBUG(1181, *YYCURSOR);
+ goto yy1301;
+yy1301:
+ YYDEBUG(1301, *YYCURSOR);
-#line 892 "ext/date/lib/parse_date.re"
+#line 913 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("tomorrow");
TIMELIB_INIT;
@@ -15503,26 +19923,46 @@ yy1181:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 13108 "ext/date/lib/parse_date.c"
-yy1182:
- YYDEBUG(1182, *YYCURSOR);
+#line 17300 "ext/date/lib/parse_date.c"
+yy1302:
+ YYDEBUG(1302, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych <= 'X'){
- if(yych == ')') goto yy132;
- goto yy3;
+ if(yych <= 'Y'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy136;
+ goto yy1303;
+ }
} else {
- if(yych <= 'Y') goto yy1183;
- if(yych != 'y') goto yy3;
- goto yy1183;
+ if(yych <= 'x'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'y') goto yy1303;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1183:
- YYDEBUG(1183, *YYCURSOR);
+yy1303:
+ YYDEBUG(1303, *YYCURSOR);
++YYCURSOR;
- goto yy1184;
-yy1184:
- YYDEBUG(1184, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy1304;
+ } else {
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy1304;
+ if(yych <= 'z') goto yy137;
+ goto yy1304;
+ }
+yy1304:
+ YYDEBUG(1304, *YYCURSOR);
-#line 882 "ext/date/lib/parse_date.re"
+#line 903 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("midnight | today");
TIMELIB_INIT;
@@ -15531,32 +19971,32 @@ yy1184:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 13130 "ext/date/lib/parse_date.c"
-yy1185:
- YYDEBUG(1185, *YYCURSOR);
+#line 17342 "ext/date/lib/parse_date.c"
+yy1305:
+ YYDEBUG(1305, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'R'){
if(yych <= ')'){
- if(yych <= '(') goto yy341;
+ if(yych <= '(') goto yy405;
goto yy132;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'Q') goto yy135;
- goto yy1188;
+ goto yy1308;
}
} else {
if(yych <= 'q'){
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy341;
+ if(yych <= '`') goto yy405;
goto yy135;
} else {
- if(yych <= 'r') goto yy1188;
+ if(yych <= 'r') goto yy1308;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy1186:
- YYDEBUG(1186, *YYCURSOR);
+yy1306:
+ YYDEBUG(1306, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'S'){
if(yych <= '@'){
@@ -15564,8 +20004,8 @@ yy1186:
goto yy3;
} else {
if(yych <= 'Q') goto yy135;
- if(yych >= 'S') goto yy317;
- goto yy1187;
+ if(yych >= 'S') goto yy321;
+ goto yy1307;
}
} else {
if(yych <= 'q'){
@@ -15573,56 +20013,101 @@ yy1186:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'r') goto yy1187;
- if(yych <= 's') goto yy317;
+ if(yych <= 'r') goto yy1307;
+ if(yych <= 's') goto yy321;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1187:
- YYDEBUG(1187, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'C'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy1307:
+ YYDEBUG(1307, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'D'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy136;
+ goto yy376;
+ }
} else {
- if(yych <= 'D') goto yy159;
- if(yych == 'd') goto yy159;
- goto yy3;
+ if(yych <= 'c'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'd') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1188:
- YYDEBUG(1188, *YYCURSOR);
- yyaccept = 1;
+yy1308:
+ YYDEBUG(1308, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'S'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'R') goto yy136;
+ goto yy1309;
+ }
+ } else {
+ if(yych <= 'r'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 's') goto yy1309;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy1309:
+ YYDEBUG(1309, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'D'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy137;
+ goto yy1310;
+ }
+ } else {
+ if(yych <= 'c'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'd') goto yy1310;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1310:
+ YYDEBUG(1310, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'R'){
+ if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'S') goto yy1189;
- if(yych != 's') goto yy3;
- goto yy1189;
+ if(yych <= 'A') goto yy1311;
+ if(yych != 'a') goto yy3;
+ goto yy1311;
}
-yy1189:
- YYDEBUG(1189, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy1190;
- if(yych != 'd') goto yy53;
- goto yy1190;
-yy1190:
- YYDEBUG(1190, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy1191;
- if(yych != 'a') goto yy53;
- goto yy1191;
-yy1191:
- YYDEBUG(1191, *YYCURSOR);
+yy1311:
+ YYDEBUG(1311, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy347;
+ if(yych == 'Y') goto yy411;
+ if(yych == 'y') goto yy411;
goto yy53;
-yy1192:
- YYDEBUG(1192, *YYCURSOR);
+yy1312:
+ YYDEBUG(1312, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -15631,7 +20116,7 @@ yy1192:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy1193;
+ goto yy1313;
}
} else {
if(yych <= 's'){
@@ -15639,65 +20124,76 @@ yy1192:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy1193;
+ if(yych <= 't') goto yy1313;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1193:
- YYDEBUG(1193, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'G'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy1313:
+ YYDEBUG(1313, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'H'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
+ }
} else {
- if(yych <= 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy3;
+ if(yych <= 'g'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'h') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1194:
- YYDEBUG(1194, *YYCURSOR);
- yyaccept = 1;
+yy1314:
+ YYDEBUG(1314, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy1192;
+ goto yy1312;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy1223;
- if(yych <= 'z') goto yy137;
+ if(yych == 'n') goto yy1343;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1195:
- YYDEBUG(1195, *YYCURSOR);
- yyaccept = 1;
+yy1315:
+ YYDEBUG(1315, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'U'){
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= 'H'){
if(yych <= '@') goto yy3;
goto yy134;
} else {
- if(yych <= 'I') goto yy1186;
+ if(yych <= 'I') goto yy1306;
if(yych <= 'T') goto yy134;
- goto yy1185;
+ goto yy1305;
}
}
} else {
@@ -15706,38 +20202,38 @@ yy1195:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy137;
+ goto yy139;
}
} else {
if(yych <= 't'){
- if(yych <= 'i') goto yy1217;
- goto yy137;
+ if(yych <= 'i') goto yy1337;
+ goto yy139;
} else {
- if(yych <= 'u') goto yy1216;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'u') goto yy1336;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy1196:
- YYDEBUG(1196, *YYCURSOR);
- yyaccept = 1;
+yy1316:
+ YYDEBUG(1316, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'M'){
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= 'C'){
if(yych <= '@') goto yy3;
goto yy134;
} else {
- if(yych <= 'D') goto yy1174;
+ if(yych <= 'D') goto yy1294;
if(yych <= 'L') goto yy134;
- goto yy1175;
+ goto yy1295;
}
}
} else {
@@ -15746,541 +20242,693 @@ yy1196:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy137;
+ goto yy139;
}
} else {
if(yych <= 'l'){
- if(yych <= 'd') goto yy1207;
- goto yy137;
+ if(yych <= 'd') goto yy1327;
+ goto yy139;
} else {
- if(yych <= 'm') goto yy1208;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'm') goto yy1328;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy1197:
- YYDEBUG(1197, *YYCURSOR);
- yyaccept = 1;
+yy1317:
+ YYDEBUG(1317, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy1170;
+ goto yy1290;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy1203;
- if(yych <= 'z') goto yy137;
+ if(yych == 'e') goto yy1323;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1198:
- YYDEBUG(1198, *YYCURSOR);
- yyaccept = 1;
+yy1318:
+ YYDEBUG(1318, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'D') goto yy134;
- goto yy1166;
+ goto yy1286;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy1199;
- if(yych <= 'z') goto yy137;
+ if(yych == 'e') goto yy1319;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1199:
- YYDEBUG(1199, *YYCURSOR);
- yyaccept = 1;
+yy1319:
+ YYDEBUG(1319, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'L'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'K') goto yy135;
- goto yy1167;
+ goto yy1287;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'l') goto yy1200;
- if(yych <= 'z') goto yy142;
+ if(yych == 'l') goto yy1320;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1200:
- YYDEBUG(1200, *YYCURSOR);
- yyaccept = 1;
+yy1320:
+ YYDEBUG(1320, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'F'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'E') goto yy3;
- goto yy1168;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'E') goto yy136;
+ goto yy1288;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'f') goto yy1201;
- if(yych <= 'z') goto yy143;
+ if(yych == 'f') goto yy1321;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1201:
- YYDEBUG(1201, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy1169;
- if(yych != 't') goto yy144;
- goto yy1202;
-yy1202:
- YYDEBUG(1202, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych <= '^'){
- if(yych <= '/'){
- if(yych <= '.') goto yy53;
- goto yy138;
+yy1321:
+ YYDEBUG(1321, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'T'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
} else {
- if(yych == 'H') goto yy159;
- goto yy53;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'S') goto yy137;
+ goto yy1289;
}
} else {
- if(yych <= 'g'){
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy53;
- goto yy143;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= 'h') goto yy241;
- if(yych <= 'z') goto yy143;
- goto yy53;
+ if(yych == 't') goto yy1322;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
}
}
-yy1203:
- YYDEBUG(1203, *YYCURSOR);
+yy1322:
+ YYDEBUG(1322, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'H'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'G') goto yy3;
+ goto yy163;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'h') goto yy245;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1323:
+ YYDEBUG(1323, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'R') goto yy135;
- goto yy1171;
+ goto yy1291;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 's') goto yy1204;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 's') goto yy1324;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy1204:
- YYDEBUG(1204, *YYCURSOR);
- yyaccept = 1;
+yy1324:
+ YYDEBUG(1324, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'C') goto yy3;
- goto yy1172;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy136;
+ goto yy1292;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'd') goto yy1205;
- if(yych <= 'z') goto yy143;
+ if(yych == 'd') goto yy1325;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1205:
- YYDEBUG(1205, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy1173;
- if(yych != 'a') goto yy144;
- goto yy1206;
-yy1206:
- YYDEBUG(1206, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy355;
- goto yy144;
-yy1207:
- YYDEBUG(1207, *YYCURSOR);
- yyaccept = 1;
+yy1325:
+ YYDEBUG(1325, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy1293;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy1326;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy1326:
+ YYDEBUG(1326, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'X') goto yy3;
+ goto yy411;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'y') goto yy419;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1327:
+ YYDEBUG(1327, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'A'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
- goto yy1182;
+ goto yy1302;
}
} else {
if(yych <= '_'){
if(yych <= 'Z') goto yy135;
if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '`') goto yy3;
- if(yych <= 'a') goto yy1214;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'a') goto yy1334;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1208:
- YYDEBUG(1208, *YYCURSOR);
- yyaccept = 1;
+yy1328:
+ YYDEBUG(1328, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'O'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'N') goto yy135;
- goto yy1176;
+ goto yy1296;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'o') goto yy1209;
- if(yych <= 'z') goto yy142;
+ if(yych == 'o') goto yy1329;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1209:
- YYDEBUG(1209, *YYCURSOR);
- yyaccept = 1;
+yy1329:
+ YYDEBUG(1329, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'R'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'Q') goto yy3;
- goto yy1177;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy136;
+ goto yy1297;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'r') goto yy1210;
- if(yych <= 'z') goto yy143;
+ if(yych == 'r') goto yy1330;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1210:
- YYDEBUG(1210, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy1178;
- if(yych != 'r') goto yy144;
- goto yy1211;
-yy1211:
- YYDEBUG(1211, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'O') goto yy1179;
- if(yych != 'o') goto yy144;
- goto yy1212;
-yy1212:
- YYDEBUG(1212, *YYCURSOR);
+yy1330:
+ YYDEBUG(1330, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy137;
+ goto yy1298;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'r') goto yy1331;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy1331:
+ YYDEBUG(1331, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'O'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'N') goto yy3;
+ goto yy1299;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'o') goto yy1332;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1332:
+ YYDEBUG(1332, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'W') goto yy1180;
- if(yych != 'w') goto yy144;
- goto yy1213;
-yy1213:
- YYDEBUG(1213, *YYCURSOR);
+ if(yych == 'W') goto yy1300;
+ if(yych != 'w') goto yy148;
+ goto yy1333;
+yy1333:
+ YYDEBUG(1333, *YYCURSOR);
yyaccept = 22;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy138;
- goto yy1181;
+ if(yych == '/') goto yy140;
+ goto yy1301;
} else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy1181;
- if(yych <= 'z') goto yy143;
- goto yy1181;
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy1301;
+ if(yych <= 'z') goto yy147;
+ goto yy1301;
}
-yy1214:
- YYDEBUG(1214, *YYCURSOR);
- yyaccept = 1;
+yy1334:
+ YYDEBUG(1334, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'Y'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'X') goto yy3;
- goto yy1183;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy136;
+ goto yy1303;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'y') goto yy1215;
- if(yych <= 'z') goto yy143;
+ if(yych == 'y') goto yy1335;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1215:
- YYDEBUG(1215, *YYCURSOR);
+yy1335:
+ YYDEBUG(1335, *YYCURSOR);
yyaccept = 23;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '^'){
- if(yych == '/') goto yy138;
- goto yy1184;
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy1304;
+ goto yy132;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy1304;
+ }
} else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy1184;
- if(yych <= 'z') goto yy143;
- goto yy1184;
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '^') goto yy1304;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy1304;
+ if(yych <= 'z') goto yy146;
+ goto yy1304;
+ }
}
-yy1216:
- YYDEBUG(1216, *YYCURSOR);
+yy1336:
+ YYDEBUG(1336, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'R'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'Q') goto yy135;
- goto yy1188;
+ goto yy1308;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 'r') goto yy1219;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 'r') goto yy1339;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy1217:
- YYDEBUG(1217, *YYCURSOR);
- yyaccept = 1;
+yy1337:
+ YYDEBUG(1337, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= '@') goto yy3;
if(yych <= 'Q') goto yy135;
- if(yych <= 'R') goto yy1187;
- goto yy317;
+ if(yych <= 'R') goto yy1307;
+ goto yy321;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
if(yych <= 'r'){
- if(yych <= 'q') goto yy142;
- goto yy1218;
+ if(yych <= 'q') goto yy144;
+ goto yy1338;
} else {
- if(yych <= 's') goto yy320;
- if(yych <= 'z') goto yy142;
+ if(yych <= 's') goto yy345;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy1218:
- YYDEBUG(1218, *YYCURSOR);
- yyaccept = 1;
+yy1338:
+ YYDEBUG(1338, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'C') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'd') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 'd') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1219:
- YYDEBUG(1219, *YYCURSOR);
- yyaccept = 1;
+yy1339:
+ YYDEBUG(1339, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'R') goto yy3;
- goto yy1189;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'R') goto yy136;
+ goto yy1309;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 's') goto yy1220;
- if(yych <= 'z') goto yy143;
+ if(yych == 's') goto yy1340;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1220:
- YYDEBUG(1220, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy1190;
- if(yych != 'd') goto yy144;
- goto yy1221;
-yy1221:
- YYDEBUG(1221, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy1191;
- if(yych != 'a') goto yy144;
- goto yy1222;
-yy1222:
- YYDEBUG(1222, *YYCURSOR);
+yy1340:
+ YYDEBUG(1340, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'C') goto yy137;
+ goto yy1310;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'd') goto yy1341;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy1341:
+ YYDEBUG(1341, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'A'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ goto yy1311;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy1342;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1342:
+ YYDEBUG(1342, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy355;
- goto yy144;
-yy1223:
- YYDEBUG(1223, *YYCURSOR);
- yyaccept = 1;
+ if(yych == 'Y') goto yy411;
+ if(yych == 'y') goto yy419;
+ goto yy148;
+yy1343:
+ YYDEBUG(1343, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy1193;
+ goto yy1313;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy1224;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy1344;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1224:
- YYDEBUG(1224, *YYCURSOR);
- yyaccept = 1;
+yy1344:
+ YYDEBUG(1344, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'G') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'h') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 'h') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1225:
- YYDEBUG(1225, *YYCURSOR);
+yy1345:
+ YYDEBUG(1345, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'Y'){
if(yych <= '@'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych == 'R') goto yy1236;
+ if(yych == 'R') goto yy1357;
if(yych <= 'X') goto yy134;
- goto yy1237;
+ goto yy1358;
}
} else {
if(yych <= 'r'){
if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'q') goto yy134;
- goto yy1236;
+ goto yy1357;
} else {
- if(yych == 'y') goto yy1237;
+ if(yych == 'y') goto yy1358;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1226:
- YYDEBUG(1226, *YYCURSOR);
+yy1346:
+ YYDEBUG(1346, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'D'){
if(yych <= ')'){
@@ -16289,7 +20937,7 @@ yy1226:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'C') goto yy134;
- goto yy1231;
+ goto yy1351;
}
} else {
if(yych <= 'c'){
@@ -16297,13 +20945,13 @@ yy1226:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'd') goto yy1231;
+ if(yych <= 'd') goto yy1351;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1227:
- YYDEBUG(1227, *YYCURSOR);
+yy1347:
+ YYDEBUG(1347, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -16312,7 +20960,7 @@ yy1227:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy1228;
+ goto yy1348;
}
} else {
if(yych <= 'm'){
@@ -16320,54 +20968,76 @@ yy1227:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'n') goto yy1228;
+ if(yych <= 'n') goto yy1348;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1228:
- YYDEBUG(1228, *YYCURSOR);
+yy1348:
+ YYDEBUG(1348, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'D'){
if(yych <= ')'){
- if(yych <= '(') goto yy341;
+ if(yych <= '(') goto yy405;
goto yy132;
} else {
- if(yych <= '@') goto yy341;
+ if(yych <= '@') goto yy405;
if(yych <= 'C') goto yy135;
- goto yy1229;
+ goto yy1349;
}
} else {
if(yych <= 'c'){
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy341;
+ if(yych <= '`') goto yy405;
goto yy135;
} else {
- if(yych <= 'd') goto yy1229;
+ if(yych <= 'd') goto yy1349;
if(yych <= 'z') goto yy135;
- goto yy341;
+ goto yy405;
}
}
-yy1229:
- YYDEBUG(1229, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
+yy1349:
+ YYDEBUG(1349, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'A'){
if(yych == ')') goto yy132;
- goto yy3;
+ if(yych <= '@') goto yy3;
+ goto yy1350;
} else {
- if(yych <= 'A') goto yy1230;
- if(yych != 'a') goto yy3;
- goto yy1230;
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy136;
+ goto yy3;
+ } else {
+ if(yych <= 'a') goto yy1350;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1230:
- YYDEBUG(1230, *YYCURSOR);
+yy1350:
+ YYDEBUG(1350, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy347;
- goto yy53;
-yy1231:
- YYDEBUG(1231, *YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy137;
+ goto yy546;
+ }
+ } else {
+ if(yych <= 'x'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'y') goto yy546;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1351:
+ YYDEBUG(1351, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -16376,7 +21046,7 @@ yy1231:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy135;
- goto yy1232;
+ goto yy1352;
}
} else {
if(yych <= 'm'){
@@ -16384,88 +21054,140 @@ yy1231:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'n') goto yy1232;
+ if(yych <= 'n') goto yy1352;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1232:
- YYDEBUG(1232, *YYCURSOR);
- yyaccept = 1;
+yy1352:
+ YYDEBUG(1352, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'I'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'H') goto yy136;
+ goto yy1353;
+ }
+ } else {
+ if(yych <= 'h'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'i') goto yy1353;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy1353:
+ YYDEBUG(1353, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'G'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'F') goto yy137;
+ goto yy1354;
+ }
+ } else {
+ if(yych <= 'f'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'g') goto yy1354;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1354:
+ YYDEBUG(1354, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'H'){
+ if(yych <= 'G'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'I') goto yy1233;
- if(yych != 'i') goto yy3;
- goto yy1233;
+ if(yych <= 'H') goto yy1355;
+ if(yych != 'h') goto yy3;
+ goto yy1355;
}
-yy1233:
- YYDEBUG(1233, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'G') goto yy1234;
- if(yych != 'g') goto yy53;
- goto yy1234;
-yy1234:
- YYDEBUG(1234, *YYCURSOR);
+yy1355:
+ YYDEBUG(1355, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'H') goto yy1235;
- if(yych != 'h') goto yy53;
- goto yy1235;
-yy1235:
- YYDEBUG(1235, *YYCURSOR);
+ if(yych == 'T') goto yy1356;
+ if(yych != 't') goto yy53;
+ goto yy1356;
+yy1356:
+ YYDEBUG(1356, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'T') goto yy1183;
- if(yych == 't') goto yy1183;
- goto yy53;
-yy1236:
- YYDEBUG(1236, *YYCURSOR);
- yyaccept = 1;
+ goto yy1304;
+yy1357:
+ YYDEBUG(1357, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych == 'C') goto yy1238;
- goto yy135;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych == 'C') goto yy1359;
+ goto yy135;
+ }
} else {
if(yych <= 'b'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'c') goto yy1238;
+ if(yych <= 'c') goto yy1359;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy1237:
- YYDEBUG(1237, *YYCURSOR);
- yyaccept = 1;
+yy1358:
+ YYDEBUG(1358, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '.'){
- if(yych <= ')'){
+ if(yych <= '-'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '-') goto yy361;
- goto yy359;
+ if(yych == ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
}
} else {
if(yych <= '@'){
- if(yych <= '/') goto yy3;
- if(yych <= '9') goto yy359;
+ if(yych == '/') goto yy3;
+ if(yych <= '9') goto yy423;
goto yy3;
} else {
if(yych <= 'Z') goto yy135;
@@ -16474,35 +21196,46 @@ yy1237:
goto yy3;
}
}
-yy1238:
- YYDEBUG(1238, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'G'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy1359:
+ YYDEBUG(1359, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'H'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy604;
+ }
} else {
- if(yych <= 'H') goto yy358;
- if(yych == 'h') goto yy358;
- goto yy3;
+ if(yych <= 'g'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'h') goto yy604;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1239:
- YYDEBUG(1239, *YYCURSOR);
- yyaccept = 1;
+yy1360:
+ YYDEBUG(1360, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'Y'){
if(yych <= '/'){
if(yych == ')') goto yy132;
if(yych <= '.') goto yy3;
- goto yy138;
+ goto yy140;
} else {
if(yych <= 'Q'){
if(yych <= '@') goto yy3;
goto yy134;
} else {
- if(yych <= 'R') goto yy1236;
+ if(yych <= 'R') goto yy1357;
if(yych <= 'X') goto yy134;
- goto yy1237;
+ goto yy1358;
}
}
} else {
@@ -16511,283 +21244,371 @@ yy1239:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy137;
+ goto yy139;
}
} else {
if(yych <= 'x'){
- if(yych <= 'r') goto yy1250;
- goto yy137;
+ if(yych <= 'r') goto yy1372;
+ goto yy139;
} else {
- if(yych <= 'y') goto yy1251;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'y') goto yy1373;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy1240:
- YYDEBUG(1240, *YYCURSOR);
- yyaccept = 1;
+yy1361:
+ YYDEBUG(1361, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'C') goto yy134;
- goto yy1231;
+ goto yy1351;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'd') goto yy1245;
- if(yych <= 'z') goto yy137;
+ if(yych == 'd') goto yy1366;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1241:
- YYDEBUG(1241, *YYCURSOR);
- yyaccept = 1;
+yy1362:
+ YYDEBUG(1362, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy1228;
+ goto yy1348;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy1242;
- if(yych <= 'z') goto yy137;
+ if(yych == 'n') goto yy1363;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1242:
- YYDEBUG(1242, *YYCURSOR);
+yy1363:
+ YYDEBUG(1363, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'D'){
if(yych <= '.'){
if(yych == ')') goto yy132;
- goto yy341;
+ goto yy405;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '@') goto yy341;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy405;
if(yych <= 'C') goto yy135;
- goto yy1229;
+ goto yy1349;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
- goto yy341;
+ if(yych == '_') goto yy140;
+ goto yy405;
} else {
- if(yych == 'd') goto yy1243;
- if(yych <= 'z') goto yy142;
- goto yy341;
+ if(yych == 'd') goto yy1364;
+ if(yych <= 'z') goto yy144;
+ goto yy405;
}
}
-yy1243:
- YYDEBUG(1243, *YYCURSOR);
- yyaccept = 1;
+yy1364:
+ YYDEBUG(1364, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'A'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
- goto yy1230;
+ goto yy1350;
+ }
+ } else {
+ if(yych <= '_'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'a') goto yy1365;
+ if(yych <= 'z') goto yy145;
+ goto yy3;
+ }
+ }
+yy1365:
+ YYDEBUG(1365, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'Y'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'X') goto yy137;
+ goto yy546;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych <= 'a') goto yy1244;
- if(yych <= 'z') goto yy143;
+ if(yych == 'y') goto yy575;
+ if(yych <= 'z') goto yy146;
goto yy3;
}
}
-yy1244:
- YYDEBUG(1244, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'Y') goto yy347;
- if(yych == 'y') goto yy355;
- goto yy144;
-yy1245:
- YYDEBUG(1245, *YYCURSOR);
- yyaccept = 1;
+yy1366:
+ YYDEBUG(1366, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy135;
- goto yy1232;
+ goto yy1352;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy1246;
- if(yych <= 'z') goto yy142;
+ if(yych == 'n') goto yy1367;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1246:
- YYDEBUG(1246, *YYCURSOR);
- yyaccept = 1;
+yy1367:
+ YYDEBUG(1367, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'I'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'H') goto yy3;
- goto yy1233;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'H') goto yy136;
+ goto yy1353;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'i') goto yy1247;
- if(yych <= 'z') goto yy143;
+ if(yych == 'i') goto yy1368;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1247:
- YYDEBUG(1247, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'G') goto yy1234;
- if(yych != 'g') goto yy144;
- goto yy1248;
-yy1248:
- YYDEBUG(1248, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'H') goto yy1235;
- if(yych != 'h') goto yy144;
- goto yy1249;
-yy1249:
- YYDEBUG(1249, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'T') goto yy1183;
- if(yych == 't') goto yy1215;
- goto yy144;
-yy1250:
- YYDEBUG(1250, *YYCURSOR);
- yyaccept = 1;
+yy1368:
+ YYDEBUG(1368, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= 'G'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'F') goto yy137;
+ goto yy1354;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
} else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych == 'g') goto yy1369;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy1369:
+ YYDEBUG(1369, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'H'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'G') goto yy3;
+ goto yy1355;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'h') goto yy1370;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1370:
+ YYDEBUG(1370, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych == 'T') goto yy1356;
+ if(yych != 't') goto yy148;
+ goto yy1371;
+yy1371:
+ YYDEBUG(1371, *YYCURSOR);
+ yyaccept = 23;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '^'){
+ if(yych == '/') goto yy140;
+ goto yy1304;
+ } else {
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy1304;
+ if(yych <= 'z') goto yy147;
+ goto yy1304;
+ }
+yy1372:
+ YYDEBUG(1372, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'C'){
- if(yych <= 'B') goto yy135;
- goto yy1238;
+ if(yych <= '^'){
+ if(yych <= 'B'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'C') goto yy1359;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'b'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'c') goto yy1252;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'c') goto yy1374;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy1251:
- YYDEBUG(1251, *YYCURSOR);
- yyaccept = 1;
+yy1373:
+ YYDEBUG(1373, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych <= ')'){
+ if(yych <= '.'){
+ if(yych <= ' '){
+ if(yych == 0x09) goto yy423;
if(yych <= 0x1F) goto yy3;
- if(yych <= '(') goto yy359;
- goto yy360;
+ goto yy423;
} else {
- if(yych == '-') goto yy361;
- if(yych <= '.') goto yy359;
- goto yy138;
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= ',') goto yy3;
+ if(yych <= '-') goto yy424;
+ goto yy423;
+ }
}
} else {
- if(yych <= '^'){
- if(yych <= '9') goto yy359;
+ if(yych <= 'Z'){
+ if(yych <= '/') goto yy140;
+ if(yych <= '9') goto yy423;
if(yych <= '@') goto yy3;
- if(yych <= 'Z') goto yy135;
- goto yy3;
+ goto yy135;
} else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy3;
- if(yych <= 'z') goto yy142;
- goto yy3;
+ if(yych <= '_'){
+ if(yych <= '^') goto yy3;
+ goto yy140;
+ } else {
+ if(yych <= '`') goto yy3;
+ if(yych <= 'z') goto yy144;
+ goto yy3;
+ }
}
}
-yy1252:
- YYDEBUG(1252, *YYCURSOR);
- yyaccept = 1;
+yy1374:
+ YYDEBUG(1374, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'G') goto yy3;
- goto yy358;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy604;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'h') goto yy457;
- if(yych <= 'z') goto yy143;
+ if(yych == 'h') goto yy615;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1253:
- YYDEBUG(1253, *YYCURSOR);
+yy1375:
+ YYDEBUG(1375, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'W'){
if(yych <= 'N'){
@@ -16795,30 +21616,30 @@ yy1253:
if(yych <= '@') goto yy3;
goto yy134;
} else {
- if(yych <= 'O') goto yy1261;
+ if(yych <= 'O') goto yy1383;
if(yych <= 'U') goto yy134;
- if(yych <= 'V') goto yy1262;
- goto yy1259;
+ if(yych <= 'V') goto yy1384;
+ goto yy1381;
}
} else {
if(yych <= 'o'){
if(yych <= 'Z') goto yy134;
if(yych <= '`') goto yy3;
if(yych <= 'n') goto yy134;
- goto yy1261;
+ goto yy1383;
} else {
if(yych <= 'v'){
if(yych <= 'u') goto yy134;
- goto yy1262;
+ goto yy1384;
} else {
- if(yych <= 'w') goto yy1259;
+ if(yych <= 'w') goto yy1381;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
}
-yy1254:
- YYDEBUG(1254, *YYCURSOR);
+yy1376:
+ YYDEBUG(1376, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'X'){
if(yych <= ')'){
@@ -16827,7 +21648,7 @@ yy1254:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'W') goto yy134;
- goto yy1258;
+ goto yy1380;
}
} else {
if(yych <= 'w'){
@@ -16835,13 +21656,13 @@ yy1254:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'x') goto yy1258;
+ if(yych <= 'x') goto yy1380;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1255:
- YYDEBUG(1255, *YYCURSOR);
+yy1377:
+ YYDEBUG(1377, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -16850,7 +21671,7 @@ yy1255:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy1256;
+ goto yy1378;
}
} else {
if(yych <= 'm'){
@@ -16858,13 +21679,13 @@ yy1255:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 'n') goto yy1256;
+ if(yych <= 'n') goto yy1378;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1256:
- YYDEBUG(1256, *YYCURSOR);
+yy1378:
+ YYDEBUG(1378, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -16873,7 +21694,7 @@ yy1256:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy1257;
+ goto yy1379;
}
} else {
if(yych <= 's'){
@@ -16881,25 +21702,36 @@ yy1256:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy1257;
+ if(yych <= 't') goto yy1379;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1257:
- YYDEBUG(1257, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'G'){
- if(yych == ')') goto yy132;
- goto yy3;
+yy1379:
+ YYDEBUG(1379, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'H'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
+ }
} else {
- if(yych <= 'H') goto yy159;
- if(yych == 'h') goto yy159;
- goto yy3;
+ if(yych <= 'g'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'h') goto yy376;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
}
-yy1258:
- YYDEBUG(1258, *YYCURSOR);
+yy1380:
+ YYDEBUG(1380, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -16908,7 +21740,7 @@ yy1258:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy317;
+ goto yy321;
}
} else {
if(yych <= 's'){
@@ -16916,27 +21748,27 @@ yy1258:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy317;
+ if(yych <= 't') goto yy321;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1259:
- YYDEBUG(1259, *YYCURSOR);
+yy1381:
+ YYDEBUG(1381, *YYCURSOR);
++YYCURSOR;
if((yych = *YYCURSOR) <= '@'){
if(yych == ')') goto yy132;
- goto yy1260;
+ goto yy1382;
} else {
if(yych <= 'Z') goto yy135;
- if(yych <= '`') goto yy1260;
+ if(yych <= '`') goto yy1382;
if(yych <= 'z') goto yy135;
- goto yy1260;
+ goto yy1382;
}
-yy1260:
- YYDEBUG(1260, *YYCURSOR);
+yy1382:
+ YYDEBUG(1382, *YYCURSOR);
-#line 861 "ext/date/lib/parse_date.re"
+#line 882 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("now");
TIMELIB_INIT;
@@ -16944,9 +21776,9 @@ yy1260:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 14391 "ext/date/lib/parse_date.c"
-yy1261:
- YYDEBUG(1261, *YYCURSOR);
+#line 18991 "ext/date/lib/parse_date.c"
+yy1383:
+ YYDEBUG(1383, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'N'){
if(yych <= ')'){
@@ -16955,7 +21787,7 @@ yy1261:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy135;
- goto yy1267;
+ goto yy1389;
}
} else {
if(yych <= 'm'){
@@ -16963,80 +21795,134 @@ yy1261:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'n') goto yy1267;
+ if(yych <= 'n') goto yy1389;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1262:
- YYDEBUG(1262, *YYCURSOR);
- yyaccept = 1;
+yy1384:
+ YYDEBUG(1384, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '9'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
+ if(yych <= '/'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
+ } else {
+ if(yych == ' ') goto yy423;
+ goto yy3;
+ }
} else {
- if(yych <= '-') goto yy361;
- if(yych == '/') goto yy3;
- goto yy359;
+ if(yych <= ','){
+ if(yych <= ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '-') goto yy424;
+ if(yych <= '.') goto yy423;
+ goto yy3;
+ }
}
} else {
if(yych <= 'Z'){
- if(yych <= '@') goto yy3;
- if(yych != 'E') goto yy135;
- goto yy1263;
+ if(yych <= '@'){
+ if(yych <= '9') goto yy423;
+ goto yy3;
+ } else {
+ if(yych != 'E') goto yy135;
+ goto yy1385;
+ }
} else {
if(yych <= 'd'){
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 'e') goto yy1263;
+ if(yych <= 'e') goto yy1385;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
}
-yy1263:
- YYDEBUG(1263, *YYCURSOR);
- yyaccept = 1;
+yy1385:
+ YYDEBUG(1385, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'M'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'L') goto yy136;
+ goto yy1386;
+ }
+ } else {
+ if(yych <= 'l'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'm') goto yy1386;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy1386:
+ YYDEBUG(1386, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'B'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'A') goto yy137;
+ goto yy1387;
+ }
+ } else {
+ if(yych <= 'a'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'b') goto yy1387;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1387:
+ YYDEBUG(1387, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'L'){
+ if(yych <= 'D'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'M') goto yy1264;
- if(yych != 'm') goto yy3;
- goto yy1264;
+ if(yych <= 'E') goto yy1388;
+ if(yych != 'e') goto yy3;
+ goto yy1388;
}
-yy1264:
- YYDEBUG(1264, *YYCURSOR);
+yy1388:
+ YYDEBUG(1388, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'B') goto yy1265;
- if(yych != 'b') goto yy53;
- goto yy1265;
-yy1265:
- YYDEBUG(1265, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy1266;
- if(yych != 'e') goto yy53;
- goto yy1266;
-yy1266:
- YYDEBUG(1266, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy358;
- if(yych == 'r') goto yy358;
+ if(yych == 'R') goto yy422;
+ if(yych == 'r') goto yy422;
goto yy53;
-yy1267:
- YYDEBUG(1267, *YYCURSOR);
+yy1389:
+ YYDEBUG(1389, *YYCURSOR);
++YYCURSOR;
- if((yych = *YYCURSOR) == ')') goto yy132;
- goto yy1268;
-yy1268:
- YYDEBUG(1268, *YYCURSOR);
+ if((yych = *YYCURSOR) <= '@'){
+ if(yych == ')') goto yy132;
+ goto yy1390;
+ } else {
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy1390;
+ if(yych <= 'z') goto yy136;
+ goto yy1390;
+ }
+yy1390:
+ YYDEBUG(1390, *YYCURSOR);
-#line 870 "ext/date/lib/parse_date.re"
+#line 891 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("noon");
TIMELIB_INIT;
@@ -17047,10 +21933,10 @@ yy1268:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 14478 "ext/date/lib/parse_date.c"
-yy1269:
- YYDEBUG(1269, *YYCURSOR);
- yyaccept = 1;
+#line 19132 "ext/date/lib/parse_date.c"
+yy1391:
+ YYDEBUG(1391, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'W'){
if(yych <= '@'){
@@ -17058,17 +21944,17 @@ yy1269:
if(yych <= '(') goto yy3;
goto yy132;
} else {
- if(yych == '/') goto yy138;
+ if(yych == '/') goto yy140;
goto yy3;
}
} else {
if(yych <= 'O'){
if(yych <= 'N') goto yy134;
- goto yy1261;
+ goto yy1383;
} else {
if(yych <= 'U') goto yy134;
- if(yych <= 'V') goto yy1262;
- goto yy1259;
+ if(yych <= 'V') goto yy1384;
+ goto yy1381;
}
}
} else {
@@ -17077,310 +21963,360 @@ yy1269:
if(yych <= 'Z') goto yy134;
goto yy3;
} else {
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy137;
+ goto yy139;
}
} else {
if(yych <= 'v'){
- if(yych <= 'o') goto yy1276;
- if(yych <= 'u') goto yy137;
- goto yy1277;
+ if(yych <= 'o') goto yy1398;
+ if(yych <= 'u') goto yy139;
+ goto yy1399;
} else {
- if(yych <= 'w') goto yy1275;
- if(yych <= 'z') goto yy137;
+ if(yych <= 'w') goto yy1397;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
}
-yy1270:
- YYDEBUG(1270, *YYCURSOR);
- yyaccept = 1;
+yy1392:
+ YYDEBUG(1392, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'X'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'W') goto yy134;
- goto yy1258;
+ goto yy1380;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'x') goto yy1274;
- if(yych <= 'z') goto yy137;
+ if(yych == 'x') goto yy1396;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1271:
- YYDEBUG(1271, *YYCURSOR);
- yyaccept = 1;
+yy1393:
+ YYDEBUG(1393, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy134;
- goto yy1256;
+ goto yy1378;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy1272;
- if(yych <= 'z') goto yy137;
+ if(yych == 'n') goto yy1394;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1272:
- YYDEBUG(1272, *YYCURSOR);
- yyaccept = 1;
+yy1394:
+ YYDEBUG(1394, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy1257;
+ goto yy1379;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy1273;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy1395;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1273:
- YYDEBUG(1273, *YYCURSOR);
- yyaccept = 1;
+yy1395:
+ YYDEBUG(1395, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'H'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'G') goto yy3;
- goto yy159;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'G') goto yy136;
+ goto yy376;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'h') goto yy241;
- if(yych <= 'z') goto yy143;
+ if(yych == 'h') goto yy394;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1274:
- YYDEBUG(1274, *YYCURSOR);
- yyaccept = 1;
+yy1396:
+ YYDEBUG(1396, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy317;
+ goto yy321;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy320;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy345;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1275:
- YYDEBUG(1275, *YYCURSOR);
+yy1397:
+ YYDEBUG(1397, *YYCURSOR);
yyaccept = 24;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '@'){
if(yych <= ')'){
- if(yych <= '(') goto yy1260;
+ if(yych <= '(') goto yy1382;
goto yy132;
} else {
- if(yych == '/') goto yy138;
- goto yy1260;
+ if(yych == '/') goto yy140;
+ goto yy1382;
}
} else {
if(yych <= '_'){
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy1260;
- goto yy138;
+ if(yych <= '^') goto yy1382;
+ goto yy140;
} else {
- if(yych <= '`') goto yy1260;
- if(yych <= 'z') goto yy142;
- goto yy1260;
+ if(yych <= '`') goto yy1382;
+ if(yych <= 'z') goto yy144;
+ goto yy1382;
}
}
-yy1276:
- YYDEBUG(1276, *YYCURSOR);
- yyaccept = 1;
+yy1398:
+ YYDEBUG(1398, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'N'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'M') goto yy135;
- goto yy1267;
+ goto yy1389;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'n') goto yy1282;
- if(yych <= 'z') goto yy142;
+ if(yych == 'n') goto yy1404;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1277:
- YYDEBUG(1277, *YYCURSOR);
- yyaccept = 1;
+yy1399:
+ YYDEBUG(1399, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '@'){
- if(yych <= ','){
- if(yych <= 0x1F) goto yy3;
- if(yych == ')') goto yy360;
- goto yy359;
- } else {
- if(yych <= '.'){
- if(yych <= '-') goto yy361;
- goto yy359;
+ if(yych <= '9'){
+ if(yych <= '('){
+ if(yych <= 0x09){
+ if(yych <= 0x08) goto yy3;
+ goto yy423;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= '9') goto yy359;
+ if(yych == ' ') goto yy423;
goto yy3;
}
+ } else {
+ if(yych <= '-'){
+ if(yych <= ')') goto yy132;
+ if(yych <= ',') goto yy3;
+ goto yy424;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy423;
+ }
}
} else {
- if(yych <= '_'){
- if(yych <= 'E'){
- if(yych <= 'D') goto yy135;
- goto yy1263;
+ if(yych <= '^'){
+ if(yych <= 'D'){
+ if(yych <= '@') goto yy3;
+ goto yy135;
} else {
+ if(yych <= 'E') goto yy1385;
if(yych <= 'Z') goto yy135;
- if(yych <= '^') goto yy3;
- goto yy138;
+ goto yy3;
}
} else {
if(yych <= 'd'){
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy3;
- goto yy142;
+ goto yy144;
} else {
- if(yych <= 'e') goto yy1278;
- if(yych <= 'z') goto yy142;
+ if(yych <= 'e') goto yy1400;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
}
-yy1278:
- YYDEBUG(1278, *YYCURSOR);
- yyaccept = 1;
+yy1400:
+ YYDEBUG(1400, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'M'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'L') goto yy3;
- goto yy1264;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'L') goto yy136;
+ goto yy1386;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'm') goto yy1279;
- if(yych <= 'z') goto yy143;
+ if(yych == 'm') goto yy1401;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1279:
- YYDEBUG(1279, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'B') goto yy1265;
- if(yych != 'b') goto yy144;
- goto yy1280;
-yy1280:
- YYDEBUG(1280, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'E') goto yy1266;
- if(yych != 'e') goto yy144;
- goto yy1281;
-yy1281:
- YYDEBUG(1281, *YYCURSOR);
+yy1401:
+ YYDEBUG(1401, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'B'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'A') goto yy137;
+ goto yy1387;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'b') goto yy1402;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy1402:
+ YYDEBUG(1402, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'E'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'D') goto yy3;
+ goto yy1388;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'e') goto yy1403;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1403:
+ YYDEBUG(1403, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '^'){
if(yych <= '/'){
if(yych <= '.') goto yy53;
- goto yy138;
+ goto yy140;
} else {
- if(yych == 'R') goto yy358;
+ if(yych == 'R') goto yy422;
goto yy53;
}
} else {
if(yych <= 'q'){
- if(yych <= '_') goto yy138;
+ if(yych <= '_') goto yy140;
if(yych <= '`') goto yy53;
- goto yy143;
+ goto yy147;
} else {
- if(yych <= 'r') goto yy457;
- if(yych <= 'z') goto yy143;
+ if(yych <= 'r') goto yy528;
+ if(yych <= 'z') goto yy147;
goto yy53;
}
}
-yy1282:
- YYDEBUG(1282, *YYCURSOR);
+yy1404:
+ YYDEBUG(1404, *YYCURSOR);
yyaccept = 25;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/'){
- if(yych == ')') goto yy132;
- if(yych <= '.') goto yy1268;
- goto yy138;
+ if(yych <= '@'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy1390;
+ goto yy132;
+ } else {
+ if(yych == '/') goto yy140;
+ goto yy1390;
+ }
} else {
if(yych <= '_'){
- if(yych <= '^') goto yy1268;
- goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '^') goto yy1390;
+ goto yy140;
} else {
- if(yych <= '`') goto yy1268;
- if(yych <= 'z') goto yy143;
- goto yy1268;
+ if(yych <= '`') goto yy1390;
+ if(yych <= 'z') goto yy145;
+ goto yy1390;
}
}
-yy1283:
- YYDEBUG(1283, *YYCURSOR);
+yy1405:
+ YYDEBUG(1405, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'S'){
if(yych <= ')'){
@@ -17389,7 +22325,7 @@ yy1283:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'R') goto yy134;
- goto yy1284;
+ goto yy1406;
}
} else {
if(yych <= 'r'){
@@ -17397,13 +22333,13 @@ yy1283:
if(yych <= '`') goto yy3;
goto yy134;
} else {
- if(yych <= 's') goto yy1284;
+ if(yych <= 's') goto yy1406;
if(yych <= 'z') goto yy134;
goto yy3;
}
}
-yy1284:
- YYDEBUG(1284, *YYCURSOR);
+yy1406:
+ YYDEBUG(1406, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= 'T'){
if(yych <= ')'){
@@ -17412,7 +22348,7 @@ yy1284:
} else {
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy1285;
+ goto yy1407;
}
} else {
if(yych <= 's'){
@@ -17420,55 +22356,89 @@ yy1284:
if(yych <= '`') goto yy3;
goto yy135;
} else {
- if(yych <= 't') goto yy1285;
+ if(yych <= 't') goto yy1407;
if(yych <= 'z') goto yy135;
goto yy3;
}
}
-yy1285:
- YYDEBUG(1285, *YYCURSOR);
- yyaccept = 1;
+yy1407:
+ YYDEBUG(1407, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'E'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy136;
+ goto yy1408;
+ }
+ } else {
+ if(yych <= 'd'){
+ if(yych <= 'Z') goto yy136;
+ if(yych <= '`') goto yy3;
+ goto yy136;
+ } else {
+ if(yych <= 'e') goto yy1408;
+ if(yych <= 'z') goto yy136;
+ goto yy3;
+ }
+ }
+yy1408:
+ YYDEBUG(1408, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if(yych <= 'R'){
+ if(yych <= ')'){
+ if(yych <= '(') goto yy3;
+ goto yy132;
+ } else {
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy137;
+ goto yy1409;
+ }
+ } else {
+ if(yych <= 'q'){
+ if(yych <= 'Z') goto yy137;
+ if(yych <= '`') goto yy3;
+ goto yy137;
+ } else {
+ if(yych <= 'r') goto yy1409;
+ if(yych <= 'z') goto yy137;
+ goto yy3;
+ }
+ }
+yy1409:
+ YYDEBUG(1409, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= 'D'){
+ if(yych <= 'C'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= 'E') goto yy1286;
- if(yych != 'e') goto yy3;
- goto yy1286;
+ if(yych <= 'D') goto yy1410;
+ if(yych != 'd') goto yy3;
+ goto yy1410;
}
-yy1286:
- YYDEBUG(1286, *YYCURSOR);
+yy1410:
+ YYDEBUG(1410, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'R') goto yy1287;
- if(yych != 'r') goto yy53;
- goto yy1287;
-yy1287:
- YYDEBUG(1287, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy1288;
- if(yych != 'd') goto yy53;
- goto yy1288;
-yy1288:
- YYDEBUG(1288, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'A') goto yy1289;
+ if(yych == 'A') goto yy1411;
if(yych != 'a') goto yy53;
- goto yy1289;
-yy1289:
- YYDEBUG(1289, *YYCURSOR);
+ goto yy1411;
+yy1411:
+ YYDEBUG(1411, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy1290;
+ if(yych == 'Y') goto yy1412;
if(yych != 'y') goto yy53;
- goto yy1290;
-yy1290:
- YYDEBUG(1290, *YYCURSOR);
+ goto yy1412;
+yy1412:
+ YYDEBUG(1412, *YYCURSOR);
++YYCURSOR;
- goto yy1291;
-yy1291:
- YYDEBUG(1291, *YYCURSOR);
+ goto yy1413;
+yy1413:
+ YYDEBUG(1413, *YYCURSOR);
-#line 849 "ext/date/lib/parse_date.re"
+#line 870 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("yesterday");
TIMELIB_INIT;
@@ -17479,132 +22449,177 @@ yy1291:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 14864 "ext/date/lib/parse_date.c"
-yy1292:
- YYDEBUG(1292, *YYCURSOR);
- yyaccept = 1;
+#line 19602 "ext/date/lib/parse_date.c"
+yy1414:
+ YYDEBUG(1414, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'S'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'R') goto yy134;
- goto yy1284;
+ goto yy1406;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy134;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 's') goto yy1293;
- if(yych <= 'z') goto yy137;
+ if(yych == 's') goto yy1415;
+ if(yych <= 'z') goto yy139;
goto yy3;
}
}
-yy1293:
- YYDEBUG(1293, *YYCURSOR);
- yyaccept = 1;
+yy1415:
+ YYDEBUG(1415, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'T'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
+ if(yych <= '/') goto yy140;
if(yych <= '@') goto yy3;
if(yych <= 'S') goto yy135;
- goto yy1285;
+ goto yy1407;
}
} else {
if(yych <= '`'){
if(yych <= 'Z') goto yy135;
- if(yych == '_') goto yy138;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 't') goto yy1294;
- if(yych <= 'z') goto yy142;
+ if(yych == 't') goto yy1416;
+ if(yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1294:
- YYDEBUG(1294, *YYCURSOR);
- yyaccept = 1;
+yy1416:
+ YYDEBUG(1416, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= 'E'){
if(yych <= '.'){
if(yych == ')') goto yy132;
goto yy3;
} else {
- if(yych <= '/') goto yy138;
- if(yych <= 'D') goto yy3;
- goto yy1286;
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'D') goto yy136;
+ goto yy1408;
}
} else {
if(yych <= '`'){
- if(yych == '_') goto yy138;
+ if(yych <= 'Z') goto yy136;
+ if(yych == '_') goto yy140;
goto yy3;
} else {
- if(yych == 'e') goto yy1295;
- if(yych <= 'z') goto yy143;
+ if(yych == 'e') goto yy1417;
+ if(yych <= 'z') goto yy145;
goto yy3;
}
}
-yy1295:
- YYDEBUG(1295, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'R') goto yy1287;
- if(yych != 'r') goto yy144;
- goto yy1296;
-yy1296:
- YYDEBUG(1296, *YYCURSOR);
- yych = *++YYCURSOR;
- if(yych == 'D') goto yy1288;
- if(yych != 'd') goto yy144;
- goto yy1297;
-yy1297:
- YYDEBUG(1297, *YYCURSOR);
+yy1417:
+ YYDEBUG(1417, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'R'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= '@') goto yy3;
+ if(yych <= 'Q') goto yy137;
+ goto yy1409;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych <= 'Z') goto yy137;
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'r') goto yy1418;
+ if(yych <= 'z') goto yy146;
+ goto yy3;
+ }
+ }
+yy1418:
+ YYDEBUG(1418, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= 'D'){
+ if(yych <= '.'){
+ if(yych == ')') goto yy132;
+ goto yy3;
+ } else {
+ if(yych <= '/') goto yy140;
+ if(yych <= 'C') goto yy3;
+ goto yy1410;
+ }
+ } else {
+ if(yych <= '`'){
+ if(yych == '_') goto yy140;
+ goto yy3;
+ } else {
+ if(yych == 'd') goto yy1419;
+ if(yych <= 'z') goto yy147;
+ goto yy3;
+ }
+ }
+yy1419:
+ YYDEBUG(1419, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'A') goto yy1289;
- if(yych != 'a') goto yy144;
- goto yy1298;
-yy1298:
- YYDEBUG(1298, *YYCURSOR);
+ if(yych == 'A') goto yy1411;
+ if(yych != 'a') goto yy148;
+ goto yy1420;
+yy1420:
+ YYDEBUG(1420, *YYCURSOR);
yych = *++YYCURSOR;
- if(yych == 'Y') goto yy1290;
- if(yych != 'y') goto yy144;
- goto yy1299;
-yy1299:
- YYDEBUG(1299, *YYCURSOR);
+ if(yych == 'Y') goto yy1412;
+ if(yych != 'y') goto yy148;
+ goto yy1421;
+yy1421:
+ YYDEBUG(1421, *YYCURSOR);
yyaccept = 26;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '^'){
- if(yych == '/') goto yy138;
- goto yy1291;
+ if(yych == '/') goto yy140;
+ goto yy1413;
} else {
- if(yych <= '_') goto yy138;
- if(yych <= '`') goto yy1291;
- if(yych <= 'z') goto yy143;
- goto yy1291;
+ if(yych <= '_') goto yy140;
+ if(yych <= '`') goto yy1413;
+ if(yych <= 'z') goto yy147;
+ goto yy1413;
}
}
}
-#line 1410 "ext/date/lib/parse_date.re"
+#line 1444 "ext/date/lib/parse_date.re"
}
-#define YYMAXFILL 26
+#define YYMAXFILL 29
-timelib_time* timelib_strtotime(char *s, int len, int *errors, timelib_tzdb *tzdb)
+timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container **errors, timelib_tzdb *tzdb)
{
Scanner in;
int t;
char *e = s + len - 1;
+ memset(&in, 0, sizeof(in));
+ in.errors = malloc(sizeof(struct timelib_error_container));
+ in.errors->warning_count = 0;
+ in.errors->warning_messages = NULL;
+ in.errors->error_count = 0;
+ in.errors->error_messages = NULL;
+
while (isspace(*s) && s < e) {
s++;
}
@@ -17612,15 +22627,19 @@ timelib_time* timelib_strtotime(char *s, int len, int *errors, timelib_tzdb *tzd
e--;
}
if (e - s < 1) {
- *errors = 1;
in.time = timelib_time_ctor();
+ add_error(&in, "Empty string");
+ if (errors) {
+ *errors = in.errors;
+ } else {
+ timelib_error_container_dtor(in.errors);
+ }
in.time->y = in.time->d = in.time->m = in.time->h = in.time->i = in.time->s = in.time->f = in.time->z = in.time->dst = -1;
in.time->is_localtime = in.time->zone_type = 0;
return in.time;
}
e++;
- memset(&in, 0, sizeof(in));
in.str = malloc((e - s) + YYMAXFILL);
memset(in.str, 0, (e - s) + YYMAXFILL);
memcpy(in.str, s, (e - s));
@@ -17636,7 +22655,6 @@ timelib_time* timelib_strtotime(char *s, int len, int *errors, timelib_tzdb *tzd
in.time->f = -1;
in.time->z = -1;
in.time->dst = -1;
- in.errors = 0;
in.tzdb = tzdb;
in.time->is_localtime = 0;
in.time->zone_type = 0;
@@ -17649,7 +22667,11 @@ timelib_time* timelib_strtotime(char *s, int len, int *errors, timelib_tzdb *tzd
} while(t != EOI);
free(in.str);
- *errors = in.errors;
+ if (errors) {
+ *errors = in.errors;
+ } else {
+ timelib_error_container_dtor(in.errors);
+ }
return in.time;
}
diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re
index fd058a5eb..32501efef 100644
--- a/ext/date/lib/parse_date.re
+++ b/ext/date/lib/parse_date.re
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: parse_date.re,v 1.26.2.21 2006/01/04 21:31:34 derick Exp $ */
+/* $Id: parse_date.re,v 1.26.2.27 2006/04/11 18:03:52 derick Exp $ */
#include "timelib.h"
@@ -97,13 +97,13 @@ typedef unsigned char uchar;
#define timelib_string_free free
-#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; } }
+#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; } }
#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; }
-#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
+#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
#define TIMELIB_UNHAVE_DATE() { s->time->have_date = 0; s->time->d = 0; s->time->m = 0; s->time->y = 0; }
#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; s->time->relative.weekday_behavior = 0; }
#define TIMELIB_HAVE_WEEKDAY_RELATIVE() { s->time->have_weekday_relative = 1; }
-#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { return TIMELIB_ERROR; } else { s->time.have_zone = 1; } }
+#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { add_warning(s, "Double timezone specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_zone = 1; } }
#define TIMELIB_INIT s->cur = cursor; str = timelib_string(s); ptr = str
#define TIMELIB_DEINIT timelib_string_free(str)
@@ -140,7 +140,7 @@ typedef struct Scanner {
int fd;
uchar *lim, *str, *ptr, *cur, *tok, *pos;
unsigned int line, len;
- int errors;
+ struct timelib_error_container *errors;
struct timelib_time *time;
timelib_tzdb *tzdb;
@@ -285,7 +285,7 @@ static timelib_lookup_table const timelib_month_lookup[] = {
static char* timelib_ltrim(char *s)
{
char *ptr = s;
- while (ptr[0] == ' ') {
+ while (ptr[0] == ' ' || ptr[0] == '\t') {
ptr++;
}
return ptr;
@@ -325,6 +325,24 @@ uchar *fill(Scanner *s, uchar *cursor){
}
#endif
+static void add_warning(Scanner *s, char *error)
+{
+ s->errors->warning_count++;
+ s->errors->warning_messages = realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
+ s->errors->warning_messages[s->errors->warning_count - 1].position = s->tok ? s->tok - s->str : 0;
+ s->errors->warning_messages[s->errors->warning_count - 1].character = s->tok ? *s->tok : 0;
+ s->errors->warning_messages[s->errors->warning_count - 1].message = strdup(error);
+}
+
+static void add_error(Scanner *s, char *error)
+{
+ s->errors->error_count++;
+ s->errors->error_messages = realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
+ s->errors->error_messages[s->errors->error_count - 1].position = s->tok ? s->tok - s->str : 0;
+ s->errors->error_messages[s->errors->error_count - 1].character = s->tok ? *s->tok : 0;
+ s->errors->error_messages[s->errors->error_count - 1].message = strdup(error);
+}
+
static timelib_sll timelib_meridian(char **ptr, timelib_sll h)
{
timelib_sll retval = 0;
@@ -495,7 +513,7 @@ static timelib_sll timelib_lookup_relative_text(char **ptr, int *behavior)
static timelib_sll timelib_get_relative_text(char **ptr, int *behavior)
{
- while (**ptr == ' ' || **ptr == '-' || **ptr == '/') {
+ while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '/') {
++*ptr;
}
return timelib_lookup_relative_text(ptr, behavior);
@@ -527,7 +545,7 @@ static long timelib_lookup_month(char **ptr)
static long timelib_get_month(char **ptr)
{
- while (**ptr == ' ' || **ptr == '-' || **ptr == '.' || **ptr == '/') {
+ while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '.' || **ptr == '/') {
++*ptr;
}
return timelib_lookup_month(ptr);
@@ -535,7 +553,7 @@ static long timelib_get_month(char **ptr)
static void timelib_eat_spaces(char **ptr)
{
- while (**ptr == ' ') {
+ while (**ptr == ' ' || **ptr == '\t') {
++*ptr;
}
}
@@ -546,7 +564,7 @@ static const timelib_relunit* timelib_lookup_relunit(char **ptr)
char *begin = *ptr, *end;
const timelib_relunit *tp, *value = NULL;
- while (**ptr != '\0' && **ptr != ' ') {
+ while (**ptr != '\0' && **ptr != ' ' && **ptr != '\t') {
++*ptr;
}
end = *ptr;
@@ -590,7 +608,7 @@ static void timelib_set_relative(char **ptr, timelib_sll amount, int behavior, S
static timelib_tz_lookup_table* zone_search(const char *word, long gmtoffset, int isdst)
{
int first_found = 0;
- timelib_tz_lookup_table *tp, *first_found_elem;
+ timelib_tz_lookup_table *tp, *first_found_elem = NULL;
timelib_tz_lookup_table *fmp;
if (strcasecmp("utc", word) == 0 || strcasecmp("gmt", word) == 0) {
@@ -659,7 +677,7 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_
*tz_not_found = 0;
- while (**ptr == ' ' || **ptr == '(') {
+ while (**ptr == ' ' || **ptr == '\t' || **ptr == '(') {
++*ptr;
}
if (**ptr == '+') {
@@ -684,9 +702,11 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_
char *tz_abbr;
t->is_localtime = 1;
- t->zone_type = TIMELIB_ZONETYPE_ABBR;
offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &found);
+ if (found) {
+ t->zone_type = TIMELIB_ZONETYPE_ABBR;
+ }
#if 0
/* If we found a TimeZone identifier, use it */
if (tz_name) {
@@ -702,7 +722,7 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_
found++;
}
}
- if (t->zone_type != TIMELIB_ZONETYPE_ID) {
+ if (found && t->zone_type != TIMELIB_ZONETYPE_ID) {
timelib_time_tz_abbr_update(t, tz_abbr);
}
free(tz_abbr);
@@ -736,7 +756,7 @@ std:
/*!re2c
any = [\000-\377];
-space = [ ]+;
+space = [ \t]+;
frac = "."[0-9]+;
ago = 'ago';
@@ -748,8 +768,8 @@ minute = [0-5]?[0-9];
minutelz = [0-5][0-9];
second = minute | "60";
secondlz = minutelz | "60";
-meridian = [AaPp] "."? [Mm] "."?;
-tz = "("? [A-Za-z]{1,4} ")"? | [A-Z][a-z]+([_/][A-Z][a-z]+)+;
+meridian = ([AaPp] "."? [Mm] "."?) [\000\t ];
+tz = "("? [A-Za-z]{1,6} ")"? | [A-Z][a-z]+([_/][A-Z][a-z]+)+;
tzcorrection = [+-] hour24 ":"? minute?;
daysuf = "st" | "nd" | "rd" | "th";
@@ -780,17 +800,17 @@ timetiny12 = hour12 space? meridian;
timeshort12 = hour12[:.]minutelz space? meridian;
timelong12 = hour12[:.]minute[:.]secondlz space? meridian;
-timeshort24 = hour24[:.]minute;
-timelong24 = hour24[:.]minute[:.]second;
-iso8601long = hour24 [:.] minute [:.] second frac;
+timeshort24 = 't'? hour24[:.]minute;
+timelong24 = 't'? hour24[:.]minute[:.]second;
+iso8601long = 't'? hour24 [:.] minute [:.] second frac;
/* iso8601shorttz = hour24 [:] minutelz space? (tzcorrection | tz); */
-iso8601normtz = hour24 [:.] minute [:.] secondlz space? (tzcorrection | tz);
+iso8601normtz = 't'? hour24 [:.] minute [:.] secondlz space? (tzcorrection | tz);
/* iso8601longtz = hour24 [:] minute [:] secondlz frac space? (tzcorrection | tz); */
-gnunocolon = hour24lz minutelz;
+gnunocolon = 't'? hour24lz minutelz;
/* gnunocolontz = hour24lz minutelz space? (tzcorrection | tz); */
-iso8601nocolon = hour24lz minutelz secondlz;
+iso8601nocolon = 't'? hour24lz minutelz secondlz;
/* iso8601nocolontz = hour24lz minutelz secondlz space? (tzcorrection | tz); */
/* Date formats */
@@ -800,13 +820,13 @@ iso8601dateslash = year4 "/" monthlz "/" daylz "/"?;
dateslash = year4 "/" month "/" day;
gnudateshort = year "-" month "-" day;
iso8601date = year4 "-" monthlz "-" daylz;
-pointeddate = day "." month "." year;
-datefull = day ([ -.])* monthtext ([ -.])* year;
-datenoday = monthtext ([ -.])* year4;
-datenodayrev = year4 ([ -.])* monthtext;
-datetextual = monthtext ([ -.])* day [,.stndrh ]* year;
-datenoyear = monthtext ([ -.])* day [,.stndrh ]*;
-datenoyearrev = day ([ -.])* monthtext;
+pointeddate = day [.\t-] month [.-] year;
+datefull = day ([ \t.-])* monthtext ([ \t.-])* year;
+datenoday = monthtext ([ .\t-])* year4;
+datenodayrev = year4 ([ .\t-])* monthtext;
+datetextual = monthtext ([ .\t-])* day [,.stndrh\t ]* year;
+datenoyear = monthtext ([ .\t-])* day [,.stndrh\t ]*;
+datenoyearrev = day ([ .\t-])* monthtext;
datenocolon = year4 monthlz daylz;
/* Special formats */
@@ -819,12 +839,13 @@ pgtextshort = monthabbr "-" daylz "-" year;
pgtextreverse = year "-" monthabbr "-" daylz;
isoweekday = year4 "W" weekofyear [0-7];
isoweek = year4 "W" weekofyear;
+exif = year4 ":" monthlz ":" daylz " " hour24lz ":" minutelz ":" secondlz;
/* Common Log Format: 10/Oct/2000:13:55:36 -0700 */
clf = day "/" monthabbr "/" year4 ":" hour24lz ":" minutelz ":" secondlz space tzcorrection;
/* Timestamp format: @1126396800 */
-timestamp = "@" "-"? [1-9] [0-9]*;
+timestamp = "@" "-"? [0-9]+;
/* To fix some ambiguities */
dateshortwithtimeshort = datenoyear timeshort24;
@@ -837,7 +858,7 @@ dateshortwithtimelongtz = datenoyear iso8601normtz;
reltextnumber = 'first'|'next'|'second'|'third'|'fourth'|'fifth'|'sixth'|'seventh'|'eight'|'ninth'|'tenth'|'eleventh'|'twelfth'|'last'|'previous'|'this';
reltextunit = (('sec'|'second'|'min'|'minute'|'hour'|'day'|'week'|'fortnight'|'forthnight'|'month'|'year') 's'?) | daytext;
-relnumber = ([+-]?[ ]*[0-9]+);
+relnumber = ([+-]?[ \t]*[0-9]+);
relative = relnumber space? reltextunit;
relativetext = reltextnumber space? reltextunit;
@@ -959,7 +980,9 @@ relativetext = reltextnumber space? reltextunit;
if (*ptr != '\0') {
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
}
TIMELIB_DEINIT;
return TIMELIB_TIME24_WITH_ZONE;
@@ -980,6 +1003,7 @@ relativetext = reltextnumber space? reltextunit;
break;
default:
TIMELIB_DEINIT;
+ add_error(s, "Double time specification");
return TIMELIB_ERROR;
}
s->time->have_time++;
@@ -1022,7 +1046,9 @@ relativetext = reltextnumber space? reltextunit;
if (*ptr != '\0') {
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
}
TIMELIB_DEINIT;
return TIMELIB_ISO_NOCOLON;
@@ -1158,10 +1184,10 @@ relativetext = reltextnumber space? reltextunit;
return TIMELIB_DATE_NOCOLON;
}
- xmlrpc | xmlrpcnocolon | soap | wddx
+ xmlrpc | xmlrpcnocolon | soap | wddx | exif
{
int tz_not_found;
- DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx");
+ DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif");
TIMELIB_INIT;
TIMELIB_HAVE_TIME();
TIMELIB_HAVE_DATE();
@@ -1175,7 +1201,9 @@ relativetext = reltextnumber space? reltextunit;
s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
if (*ptr) { /* timezone is optional */
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
}
}
TIMELIB_DEINIT;
@@ -1273,7 +1301,9 @@ relativetext = reltextnumber space? reltextunit;
s->time->i = timelib_get_nr((char **) &ptr, 2);
s->time->s = timelib_get_nr((char **) &ptr, 2);
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
TIMELIB_DEINIT;
return TIMELIB_CLF;
}
@@ -1321,7 +1351,7 @@ relativetext = reltextnumber space? reltextunit;
relativetext
{
timelib_sll i;
- int behavior;
+ int behavior = 0;
DEBUG_OUTPUT("relativetext");
TIMELIB_INIT;
TIMELIB_HAVE_RELATIVE();
@@ -1340,8 +1370,11 @@ relativetext = reltextnumber space? reltextunit;
int tz_not_found;
DEBUG_OUTPUT("tzcorrection | tz");
TIMELIB_INIT;
+ TIMELIB_HAVE_TZ();
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
TIMELIB_DEINIT;
return TIMELIB_TIMEZONE;
}
@@ -1368,7 +1401,9 @@ relativetext = reltextnumber space? reltextunit;
if (*ptr != '\0') {
s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb);
- s->errors += tz_not_found;
+ if (tz_not_found) {
+ add_error(s, "The timezone could not be found in the database");
+ }
}
TIMELIB_DEINIT;
return TIMELIB_SHORTDATE_WITH_TIME;
@@ -1390,7 +1425,7 @@ relativetext = reltextnumber space? reltextunit;
return TIMELIB_RELATIVE;
}
- [ .,]
+ [ .,\t]
{
goto std;
}
@@ -1403,8 +1438,7 @@ relativetext = reltextnumber space? reltextunit;
any
{
-/* printf("unexpected character: #%d, %c ", *s->tok, *s->tok); */
- s->errors++;
+ add_error(s, "Unexpected character");
goto std;
}
*/
@@ -1412,12 +1446,19 @@ relativetext = reltextnumber space? reltextunit;
/*!max:re2c */
-timelib_time* timelib_strtotime(char *s, int len, int *errors, timelib_tzdb *tzdb)
+timelib_time* timelib_strtotime(char *s, int len, struct timelib_error_container **errors, timelib_tzdb *tzdb)
{
Scanner in;
int t;
char *e = s + len - 1;
+ memset(&in, 0, sizeof(in));
+ in.errors = malloc(sizeof(struct timelib_error_container));
+ in.errors->warning_count = 0;
+ in.errors->warning_messages = NULL;
+ in.errors->error_count = 0;
+ in.errors->error_messages = NULL;
+
while (isspace(*s) && s < e) {
s++;
}
@@ -1425,15 +1466,19 @@ timelib_time* timelib_strtotime(char *s, int len, int *errors, timelib_tzdb *tzd
e--;
}
if (e - s < 1) {
- *errors = 1;
in.time = timelib_time_ctor();
+ add_error(&in, "Empty string");
+ if (errors) {
+ *errors = in.errors;
+ } else {
+ timelib_error_container_dtor(in.errors);
+ }
in.time->y = in.time->d = in.time->m = in.time->h = in.time->i = in.time->s = in.time->f = in.time->z = in.time->dst = -1;
in.time->is_localtime = in.time->zone_type = 0;
return in.time;
}
e++;
- memset(&in, 0, sizeof(in));
in.str = malloc((e - s) + YYMAXFILL);
memset(in.str, 0, (e - s) + YYMAXFILL);
memcpy(in.str, s, (e - s));
@@ -1449,7 +1494,6 @@ timelib_time* timelib_strtotime(char *s, int len, int *errors, timelib_tzdb *tzd
in.time->f = -1;
in.time->z = -1;
in.time->dst = -1;
- in.errors = 0;
in.tzdb = tzdb;
in.time->is_localtime = 0;
in.time->zone_type = 0;
@@ -1462,7 +1506,11 @@ timelib_time* timelib_strtotime(char *s, int len, int *errors, timelib_tzdb *tzd
} while(t != EOI);
free(in.str);
- *errors = in.errors;
+ if (errors) {
+ *errors = in.errors;
+ } else {
+ timelib_error_container_dtor(in.errors);
+ }
return in.time;
}
diff --git a/ext/date/lib/parse_tz.c b/ext/date/lib/parse_tz.c
index 3a23e30ef..ccd30c892 100644
--- a/ext/date/lib/parse_tz.c
+++ b/ext/date/lib/parse_tz.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: parse_tz.c,v 1.20.2.5 2006/01/04 21:31:34 derick Exp $ */
+/* $Id: parse_tz.c,v 1.20.2.6 2006/03/18 23:43:48 tony2001 Exp $ */
#include "timelib.h"
@@ -368,6 +368,7 @@ timelib_time_offset *timelib_get_time_zone_info(timelib_sll ts, timelib_tzinfo *
timelib_sll timelib_get_current_offset(timelib_time *t)
{
timelib_time_offset *gmt_offset;
+ timelib_sll retval;
switch (t->zone_type) {
case TIMELIB_ZONETYPE_ABBR:
@@ -376,7 +377,9 @@ timelib_sll timelib_get_current_offset(timelib_time *t)
case TIMELIB_ZONETYPE_ID:
gmt_offset = timelib_get_time_zone_info(t->sse, t->tz_info);
- return gmt_offset->offset;
+ retval = gmt_offset->offset;
+ timelib_time_offset_dtor(gmt_offset);
+ return retval;
default:
return 0;
diff --git a/ext/date/lib/timelib.c b/ext/date/lib/timelib.c
index dabc809ec..f08bbe2ec 100644
--- a/ext/date/lib/timelib.c
+++ b/ext/date/lib/timelib.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: timelib.c,v 1.7.2.3 2006/01/01 12:50:05 sniper Exp $ */
+/* $Id: timelib.c,v 1.7.2.4 2006/04/11 18:03:52 derick Exp $ */
#include "timelib.h"
#include <ctype.h>
@@ -122,6 +122,21 @@ char *timelib_get_tz_abbr_ptr(timelib_time *t)
return t->tz_abbr;
}
+void timelib_error_container_dtor(timelib_error_container *errors)
+{
+ int i;
+
+ for (i = 0; i < errors->warning_count; i++) {
+ free(errors->warning_messages[i].message);
+ }
+ free(errors->warning_messages);
+ for (i = 0; i < errors->error_count; i++) {
+ free(errors->error_messages[i].message);
+ }
+ free(errors->error_messages);
+ free(errors);
+}
+
signed long timelib_date_to_int(timelib_time *d, int *error)
{
timelib_sll ts;
diff --git a/ext/date/lib/timelib.h b/ext/date/lib/timelib.h
index 722420717..c6a99afca 100644
--- a/ext/date/lib/timelib.h
+++ b/ext/date/lib/timelib.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: timelib.h,v 1.10.2.10 2006/01/04 21:31:34 derick Exp $ */
+/* $Id: timelib.h,v 1.10.2.11 2006/04/11 18:03:52 derick Exp $ */
#ifndef __TIMELIB_H__
#define __TIMELIB_H__
@@ -51,7 +51,7 @@ timelib_sll timelib_days_in_month(timelib_sll y, timelib_sll m);
void timelib_isoweek_from_date(timelib_sll y, timelib_sll m, timelib_sll d, timelib_sll *iw, timelib_sll *iy);
/* From parse_date.re */
-timelib_time *timelib_strtotime(char *s, int len, int *errors, timelib_tzdb *tzdb);
+timelib_time *timelib_strtotime(char *s, int len, timelib_error_container **errors, timelib_tzdb *tzdb);
void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options);
char *timelib_timezone_id_from_abbr(const char *abbr, long gmtoffset, int isdst);
timelib_tz_lookup_table *timelib_timezone_abbreviations_list(void);
@@ -90,6 +90,8 @@ void timelib_time_dtor(timelib_time* t);
timelib_time_offset* timelib_time_offset_ctor();
void timelib_time_offset_dtor(timelib_time_offset* t);
+void timelib_error_container_dtor(timelib_error_container *errors);
+
signed long timelib_date_to_int(timelib_time *d, int *error);
void timelib_dump_date(timelib_time *d, int options);
diff --git a/ext/date/lib/timelib_structs.h b/ext/date/lib/timelib_structs.h
index 90df015a9..eb1460319 100644
--- a/ext/date/lib/timelib_structs.h
+++ b/ext/date/lib/timelib_structs.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: timelib_structs.h,v 1.13.2.5 2006/01/01 12:50:05 sniper Exp $ */
+/* $Id: timelib_structs.h,v 1.13.2.6 2006/04/11 18:03:52 derick Exp $ */
#ifndef __TIMELIB_STRUCTS_H__
#define __TIMELIB_STRUCTS_H__
@@ -147,6 +147,19 @@ typedef struct timelib_time {
* 2 TimeZone abbreviation */
} timelib_time;
+typedef struct timelib_error_message {
+ int position;
+ char character;
+ char *message;
+} timelib_error_message;
+
+typedef struct timelib_error_container {
+ int warning_count;
+ struct timelib_error_message *warning_messages;
+ int error_count;
+ struct timelib_error_message *error_messages;
+} timelib_error_container;
+
typedef struct _timelib_tz_lookup_table {
char *name;
int type;
@@ -170,9 +183,10 @@ typedef struct _timelib_tzdb {
#define TIMELIB_ZONETYPE_ABBR 2
#define TIMELIB_ZONETYPE_ID 3
-#define SECS_PER_DAY 86400
-#define DAYS_PER_YEAR 365
-#define DAYS_PER_LYEAR 366
+#define SECS_PER_ERA 12622780800L
+#define SECS_PER_DAY 86400
+#define DAYS_PER_YEAR 365
+#define DAYS_PER_LYEAR 366
#define timelib_is_leap(y) ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h
index e85fbe70f..1831b341c 100644
--- a/ext/date/lib/timezonedb.h
+++ b/ext/date/lib/timezonedb.h
@@ -1,4 +1,4 @@
-timelib_tzdb_index_entry timezonedb_idx_builtin[535] = {
+timelib_tzdb_index_entry timezonedb_idx_builtin[538] = {
{ "Africa/Abidjan" , 0x000000 },
{ "Africa/Accra" , 0x000049 },
{ "Africa/Addis_Ababa" , 0x0000E5 },
@@ -118,425 +118,428 @@ timelib_tzdb_index_entry timezonedb_idx_builtin[535] = {
{ "America/Hermosillo" , 0x008DB8 },
{ "America/Indiana/Indianapolis" , 0x008E6B },
{ "America/Indiana/Knox" , 0x0090C9 },
- { "America/Indiana/Marengo" , 0x00943A },
- { "America/Indiana/Vevay" , 0x00990A },
- { "America/Indianapolis" , 0x0096AC },
- { "America/Inuvik" , 0x009B0E },
- { "America/Iqaluit" , 0x009E05 },
- { "America/Jamaica" , 0x00A0F7 },
- { "America/Jujuy" , 0x00A1B0 },
- { "America/Juneau" , 0x00A344 },
- { "America/Kentucky/Louisville" , 0x00A698 },
- { "America/Kentucky/Monticello" , 0x00AA81 },
- { "America/Knox_IN" , 0x00ADD4 },
- { "America/La_Paz" , 0x00B145 },
- { "America/Lima" , 0x00B1A0 },
- { "America/Los_Angeles" , 0x00B23C },
- { "America/Louisville" , 0x00B635 },
- { "America/Maceio" , 0x00BA1E },
- { "America/Managua" , 0x00BB3C },
- { "America/Manaus" , 0x00BBD9 },
- { "America/Martinique" , 0x00BCC5 },
- { "America/Mazatlan" , 0x00BD25 },
- { "America/Mendoza" , 0x00BF5E },
- { "America/Menominee" , 0x00C0FC },
- { "America/Merida" , 0x00C42A },
- { "America/Mexico_City" , 0x00C639 },
- { "America/Miquelon" , 0x00C88B },
- { "America/Monterrey" , 0x00CAF1 },
- { "America/Montevideo" , 0x00CCF4 },
- { "America/Montreal" , 0x00CEBA },
- { "America/Montserrat" , 0x00D39E },
- { "America/Nassau" , 0x00D3E7 },
- { "America/New_York" , 0x00D720 },
- { "America/Nipigon" , 0x00DC13 },
- { "America/Nome" , 0x00DF0D },
- { "America/Noronha" , 0x00E266 },
- { "America/North_Dakota/Center" , 0x00E37A },
- { "America/Panama" , 0x00E6D7 },
- { "America/Pangnirtung" , 0x00E720 },
- { "America/Paramaribo" , 0x00EA2A },
- { "America/Phoenix" , 0x00EAB0 },
- { "America/Port-au-Prince" , 0x00EB32 },
- { "America/Port_of_Spain" , 0x00ED1A },
- { "America/Porto_Acre" , 0x00EC38 },
- { "America/Porto_Velho" , 0x00ED63 },
- { "America/Puerto_Rico" , 0x00EE45 },
- { "America/Rainy_River" , 0x00EE93 },
- { "America/Rankin_Inlet" , 0x00F18D },
- { "America/Recife" , 0x00F473 },
- { "America/Regina" , 0x00F587 },
- { "America/Rio_Branco" , 0x00F704 },
- { "America/Rosario" , 0x00F7E6 },
- { "America/Santiago" , 0x00F96C },
- { "America/Santo_Domingo" , 0x00FCE6 },
- { "America/Sao_Paulo" , 0x00FDA0 },
- { "America/Scoresbysund" , 0x010071 },
- { "America/Shiprock" , 0x010334 },
- { "America/St_Johns" , 0x0106A1 },
- { "America/St_Kitts" , 0x010BC0 },
- { "America/St_Lucia" , 0x010C09 },
- { "America/St_Thomas" , 0x010C52 },
- { "America/St_Vincent" , 0x010C9B },
- { "America/Swift_Current" , 0x010CE4 },
- { "America/Tegucigalpa" , 0x010DCB },
- { "America/Thule" , 0x010E34 },
- { "America/Thunder_Bay" , 0x01105F },
- { "America/Tijuana" , 0x011379 },
- { "America/Toronto" , 0x0116C5 },
- { "America/Tortola" , 0x011BA9 },
- { "America/Vancouver" , 0x011BF2 },
- { "America/Virgin" , 0x011FFF },
- { "America/Whitehorse" , 0x012048 },
- { "America/Winnipeg" , 0x01233F },
- { "America/Yakutat" , 0x012748 },
- { "America/Yellowknife" , 0x012A84 },
- { "Antarctica/Casey" , 0x012D5E },
- { "Antarctica/Davis" , 0x012DA7 },
- { "Antarctica/DumontDUrville" , 0x012DFB },
- { "Antarctica/Mawson" , 0x012E5B },
- { "Antarctica/McMurdo" , 0x012EA5 },
- { "Antarctica/Palmer" , 0x01317F },
- { "Antarctica/Rothera" , 0x013488 },
- { "Antarctica/South_Pole" , 0x0134D2 },
- { "Antarctica/Syowa" , 0x0137AC },
- { "Antarctica/Vostok" , 0x0137F6 },
- { "Arctic/Longyearbyen" , 0x013840 },
- { "Asia/Aden" , 0x013B66 },
- { "Asia/Almaty" , 0x013BAF },
- { "Asia/Amman" , 0x013D14 },
- { "Asia/Anadyr" , 0x013FC8 },
- { "Asia/Aqtau" , 0x014294 },
- { "Asia/Aqtobe" , 0x014456 },
- { "Asia/Ashgabat" , 0x0145F3 },
- { "Asia/Ashkhabad" , 0x014704 },
- { "Asia/Baghdad" , 0x014815 },
- { "Asia/Bahrain" , 0x014AAA },
- { "Asia/Baku" , 0x014B04 },
- { "Asia/Bangkok" , 0x014DE5 },
- { "Asia/Beirut" , 0x014E2E },
- { "Asia/Bishkek" , 0x01512F },
- { "Asia/Brunei" , 0x0152CF },
- { "Asia/Calcutta" , 0x015325 },
- { "Asia/Choibalsan" , 0x015392 },
- { "Asia/Chongqing" , 0x015626 },
- { "Asia/Chungking" , 0x0156C9 },
- { "Asia/Colombo" , 0x01576C },
- { "Asia/Dacca" , 0x0157F7 },
- { "Asia/Damascus" , 0x01587A },
- { "Asia/Dhaka" , 0x015BBE },
- { "Asia/Dili" , 0x015C41 },
- { "Asia/Dubai" , 0x015CBE },
- { "Asia/Dushanbe" , 0x015D07 },
- { "Asia/Gaza" , 0x015DFE },
- { "Asia/Harbin" , 0x01613B },
- { "Asia/Hong_Kong" , 0x0161F5 },
- { "Asia/Hovd" , 0x01639F },
- { "Asia/Irkutsk" , 0x016626 },
- { "Asia/Istanbul" , 0x0168EA },
- { "Asia/Jakarta" , 0x016CCB },
- { "Asia/Jayapura" , 0x016D5B },
- { "Asia/Jerusalem" , 0x016DBA },
- { "Asia/Kabul" , 0x0170DD },
- { "Asia/Kamchatka" , 0x017122 },
- { "Asia/Karachi" , 0x0173E6 },
- { "Asia/Kashgar" , 0x01747B },
- { "Asia/Katmandu" , 0x01752B },
- { "Asia/Krasnoyarsk" , 0x017585 },
- { "Asia/Kuala_Lumpur" , 0x017849 },
- { "Asia/Kuching" , 0x0178E7 },
- { "Asia/Kuwait" , 0x0179BA },
- { "Asia/Macao" , 0x017A03 },
- { "Asia/Macau" , 0x017B32 },
- { "Asia/Magadan" , 0x017C61 },
- { "Asia/Makassar" , 0x017F25 },
- { "Asia/Manila" , 0x017F95 },
- { "Asia/Muscat" , 0x01800E },
- { "Asia/Nicosia" , 0x018057 },
- { "Asia/Novosibirsk" , 0x018333 },
- { "Asia/Omsk" , 0x018604 },
- { "Asia/Oral" , 0x0188C8 },
- { "Asia/Phnom_Penh" , 0x018A7D },
- { "Asia/Pontianak" , 0x018AE9 },
- { "Asia/Pyongyang" , 0x018B89 },
- { "Asia/Qatar" , 0x018BEA },
- { "Asia/Qyzylorda" , 0x018C44 },
- { "Asia/Rangoon" , 0x018DEE },
- { "Asia/Riyadh" , 0x018E5A },
- { "Asia/Saigon" , 0x018EA3 },
- { "Asia/Sakhalin" , 0x018F0F },
- { "Asia/Samarkand" , 0x0191E8 },
- { "Asia/Seoul" , 0x01932B },
- { "Asia/Shanghai" , 0x0193C3 },
- { "Asia/Singapore" , 0x019468 },
- { "Asia/Taipei" , 0x019513 },
- { "Asia/Tashkent" , 0x01961F },
- { "Asia/Tbilisi" , 0x019747 },
- { "Asia/Tehran" , 0x0198F5 },
- { "Asia/Tel_Aviv" , 0x019B6B },
- { "Asia/Thimbu" , 0x019E8E },
- { "Asia/Thimphu" , 0x019EE8 },
- { "Asia/Tokyo" , 0x019F42 },
- { "Asia/Ujung_Pandang" , 0x019FBF },
- { "Asia/Ulaanbaatar" , 0x01A02F },
- { "Asia/Ulan_Bator" , 0x01A2B6 },
- { "Asia/Urumqi" , 0x01A53D },
- { "Asia/Vientiane" , 0x01A5E0 },
- { "Asia/Vladivostok" , 0x01A64C },
- { "Asia/Yakutsk" , 0x01A917 },
- { "Asia/Yekaterinburg" , 0x01ABDB },
- { "Asia/Yerevan" , 0x01AECA },
- { "Atlantic/Azores" , 0x01B1C2 },
- { "Atlantic/Bermuda" , 0x01B6B3 },
- { "Atlantic/Canary" , 0x01B988 },
- { "Atlantic/Cape_Verde" , 0x01BC44 },
- { "Atlantic/Faeroe" , 0x01BCB1 },
- { "Atlantic/Jan_Mayen" , 0x01BF49 },
- { "Atlantic/Madeira" , 0x01C26F },
- { "Atlantic/Reykjavik" , 0x01C75D },
- { "Atlantic/South_Georgia" , 0x01C90A },
- { "Atlantic/St_Helena" , 0x01CC0A },
- { "Atlantic/Stanley" , 0x01C942 },
- { "Australia/ACT" , 0x01CC53 },
- { "Australia/Adelaide" , 0x01CF64 },
- { "Australia/Brisbane" , 0x01D275 },
- { "Australia/Broken_Hill" , 0x01D315 },
- { "Australia/Canberra" , 0x01D62B },
- { "Australia/Currie" , 0x01D93C },
- { "Australia/Darwin" , 0x01DC4D },
- { "Australia/Hobart" , 0x01DCB5 },
- { "Australia/LHI" , 0x01DFEE },
- { "Australia/Lindeman" , 0x01E27D },
- { "Australia/Lord_Howe" , 0x01E336 },
- { "Australia/Melbourne" , 0x01E5C5 },
- { "Australia/North" , 0x01E8D6 },
- { "Australia/NSW" , 0x01E93E },
- { "Australia/Perth" , 0x01EC4F },
- { "Australia/Queensland" , 0x01ECDB },
- { "Australia/South" , 0x01ED7B },
- { "Australia/Sydney" , 0x01F08C },
- { "Australia/Tasmania" , 0x01F39D },
- { "Australia/Victoria" , 0x01F6D6 },
- { "Australia/West" , 0x01F9E7 },
- { "Australia/Yancowinna" , 0x01FA73 },
- { "Brazil/Acre" , 0x01FD89 },
- { "Brazil/DeNoronha" , 0x01FE6B },
- { "Brazil/East" , 0x01FF7F },
- { "Brazil/West" , 0x020250 },
- { "Canada/Atlantic" , 0x02033C },
- { "Canada/Central" , 0x020818 },
- { "Canada/East-Saskatchewan" , 0x021105 },
- { "Canada/Eastern" , 0x020C21 },
- { "Canada/Mountain" , 0x021282 },
- { "Canada/Newfoundland" , 0x0215EC },
- { "Canada/Pacific" , 0x021B0B },
- { "Canada/Saskatchewan" , 0x021F18 },
- { "Canada/Yukon" , 0x022095 },
- { "CET" , 0x02238C },
- { "Chile/Continental" , 0x02267F },
- { "Chile/EasterIsland" , 0x0229F9 },
- { "CST6CDT" , 0x022D41 },
- { "Cuba" , 0x023086 },
- { "EET" , 0x0233ED },
- { "Egypt" , 0x023694 },
- { "Eire" , 0x023A4F },
- { "EST" , 0x023F54 },
- { "EST5EDT" , 0x023F8C },
- { "Etc/GMT" , 0x0242D1 },
- { "Etc/GMT+0" , 0x024379 },
- { "Etc/GMT+1" , 0x0243EB },
- { "Etc/GMT+10" , 0x024460 },
- { "Etc/GMT+11" , 0x0244D6 },
- { "Etc/GMT+12" , 0x02454C },
- { "Etc/GMT+2" , 0x024637 },
- { "Etc/GMT+3" , 0x0246AB },
- { "Etc/GMT+4" , 0x02471F },
- { "Etc/GMT+5" , 0x024793 },
- { "Etc/GMT+6" , 0x024807 },
- { "Etc/GMT+7" , 0x02487B },
- { "Etc/GMT+8" , 0x0248EF },
- { "Etc/GMT+9" , 0x024963 },
- { "Etc/GMT-0" , 0x024341 },
- { "Etc/GMT-1" , 0x0243B1 },
- { "Etc/GMT-10" , 0x024425 },
- { "Etc/GMT-11" , 0x02449B },
- { "Etc/GMT-12" , 0x024511 },
- { "Etc/GMT-13" , 0x024587 },
- { "Etc/GMT-14" , 0x0245C2 },
- { "Etc/GMT-2" , 0x0245FD },
- { "Etc/GMT-3" , 0x024671 },
- { "Etc/GMT-4" , 0x0246E5 },
- { "Etc/GMT-5" , 0x024759 },
- { "Etc/GMT-6" , 0x0247CD },
- { "Etc/GMT-7" , 0x024841 },
- { "Etc/GMT-8" , 0x0248B5 },
- { "Etc/GMT-9" , 0x024929 },
- { "Etc/GMT0" , 0x024309 },
- { "Etc/Greenwich" , 0x02499D },
- { "Etc/UCT" , 0x0249D5 },
- { "Etc/Universal" , 0x024A0D },
- { "Etc/UTC" , 0x024A45 },
- { "Etc/Zulu" , 0x024A7D },
- { "Europe/Amsterdam" , 0x024AB5 },
- { "Europe/Andorra" , 0x024EE7 },
- { "Europe/Athens" , 0x025157 },
- { "Europe/Belfast" , 0x02548E },
- { "Europe/Belgrade" , 0x0259B9 },
- { "Europe/Berlin" , 0x025C71 },
- { "Europe/Bratislava" , 0x025FB6 },
- { "Europe/Brussels" , 0x0262DC },
- { "Europe/Bucharest" , 0x026707 },
- { "Europe/Budapest" , 0x026A25 },
- { "Europe/Chisinau" , 0x026D87 },
- { "Europe/Copenhagen" , 0x027109 },
- { "Europe/Dublin" , 0x027407 },
- { "Europe/Gibraltar" , 0x02790C },
- { "Europe/Helsinki" , 0x027D57 },
- { "Europe/Istanbul" , 0x028001 },
- { "Europe/Kaliningrad" , 0x0283E2 },
- { "Europe/Kiev" , 0x028722 },
- { "Europe/Lisbon" , 0x028A1F },
- { "Europe/Ljubljana" , 0x028F0F },
- { "Europe/London" , 0x0291C7 },
- { "Europe/Luxembourg" , 0x0296F2 },
- { "Europe/Madrid" , 0x029B3C },
- { "Europe/Malta" , 0x029EEE },
- { "Europe/Mariehamn" , 0x02A29B },
- { "Europe/Minsk" , 0x02A545 },
- { "Europe/Monaco" , 0x02A844 },
- { "Europe/Moscow" , 0x02AC73 },
- { "Europe/Nicosia" , 0x02AFA2 },
- { "Europe/Oslo" , 0x02B27E },
- { "Europe/Paris" , 0x02B5A4 },
- { "Europe/Prague" , 0x02B9DE },
- { "Europe/Riga" , 0x02BD04 },
- { "Europe/Rome" , 0x02C03D },
- { "Europe/Samara" , 0x02C3F4 },
- { "Europe/San_Marino" , 0x02C6F3 },
- { "Europe/Sarajevo" , 0x02CAAA },
- { "Europe/Simferopol" , 0x02CD62 },
- { "Europe/Skopje" , 0x02D073 },
- { "Europe/Sofia" , 0x02D32B },
- { "Europe/Stockholm" , 0x02D61A },
- { "Europe/Tallinn" , 0x02D8BD },
- { "Europe/Tirane" , 0x02DBEB },
- { "Europe/Tiraspol" , 0x02DEE5 },
- { "Europe/Uzhgorod" , 0x02E267 },
- { "Europe/Vaduz" , 0x02E56A },
- { "Europe/Vatican" , 0x02E7F1 },
- { "Europe/Vienna" , 0x02EBA8 },
- { "Europe/Vilnius" , 0x02EEC9 },
- { "Europe/Warsaw" , 0x02F1FC },
- { "Europe/Zagreb" , 0x02F5CC },
- { "Europe/Zaporozhye" , 0x02F884 },
- { "Europe/Zurich" , 0x02FB8B },
- { "Factory" , 0x02FE38 },
- { "GB" , 0x02FE9D },
- { "GB-Eire" , 0x0303C8 },
- { "GMT" , 0x0308F3 },
- { "GMT+0" , 0x03099B },
- { "GMT-0" , 0x030963 },
- { "GMT0" , 0x03092B },
- { "Greenwich" , 0x0309D3 },
- { "Hongkong" , 0x030A0B },
- { "HST" , 0x030BB5 },
- { "Iceland" , 0x030BED },
- { "Indian/Antananarivo" , 0x030D9A },
- { "Indian/Chagos" , 0x030E02 },
- { "Indian/Christmas" , 0x030E58 },
- { "Indian/Cocos" , 0x030E90 },
- { "Indian/Comoro" , 0x030EC8 },
- { "Indian/Kerguelen" , 0x030F11 },
- { "Indian/Mahe" , 0x030F5A },
- { "Indian/Maldives" , 0x030FA3 },
- { "Indian/Mauritius" , 0x030FEC },
- { "Indian/Mayotte" , 0x031035 },
- { "Indian/Reunion" , 0x03107E },
- { "Iran" , 0x0310C7 },
- { "Israel" , 0x03133D },
- { "Jamaica" , 0x031660 },
- { "Japan" , 0x031719 },
- { "Kwajalein" , 0x031796 },
- { "Libya" , 0x0317ED },
- { "MET" , 0x0318DB },
- { "Mexico/BajaNorte" , 0x031BCE },
- { "Mexico/BajaSur" , 0x031F1A },
- { "Mexico/General" , 0x032153 },
- { "MST" , 0x0323A5 },
- { "MST7MDT" , 0x0323DD },
- { "Navajo" , 0x032722 },
- { "NZ" , 0x032A8F },
- { "NZ-CHAT" , 0x032E01 },
- { "Pacific/Apia" , 0x0330DD },
- { "Pacific/Auckland" , 0x033138 },
- { "Pacific/Chatham" , 0x0334AA },
- { "Pacific/Easter" , 0x033786 },
- { "Pacific/Efate" , 0x033ACE },
- { "Pacific/Enderbury" , 0x033B88 },
- { "Pacific/Fakaofo" , 0x033BDB },
- { "Pacific/Fiji" , 0x033C13 },
- { "Pacific/Funafuti" , 0x033C7D },
- { "Pacific/Galapagos" , 0x033CB5 },
- { "Pacific/Gambier" , 0x033D10 },
- { "Pacific/Guadalcanal" , 0x033D5A },
- { "Pacific/Guam" , 0x033DA3 },
- { "Pacific/Honolulu" , 0x033DED },
- { "Pacific/Johnston" , 0x033E6F },
- { "Pacific/Kiritimati" , 0x033EA7 },
- { "Pacific/Kosrae" , 0x033EFA },
- { "Pacific/Kwajalein" , 0x033F45 },
- { "Pacific/Majuro" , 0x033F9C },
- { "Pacific/Marquesas" , 0x033FE1 },
- { "Pacific/Midway" , 0x03402B },
- { "Pacific/Nauru" , 0x03409B },
- { "Pacific/Niue" , 0x034107 },
- { "Pacific/Norfolk" , 0x034159 },
- { "Pacific/Noumea" , 0x0341A2 },
- { "Pacific/Pago_Pago" , 0x034226 },
- { "Pacific/Palau" , 0x0342A3 },
- { "Pacific/Pitcairn" , 0x0342DB },
- { "Pacific/Ponape" , 0x034324 },
- { "Pacific/Port_Moresby" , 0x03435D },
- { "Pacific/Rarotonga" , 0x034395 },
- { "Pacific/Saipan" , 0x034465 },
- { "Pacific/Samoa" , 0x0344BC },
- { "Pacific/Tahiti" , 0x034539 },
- { "Pacific/Tarawa" , 0x034583 },
- { "Pacific/Tongatapu" , 0x0345BC },
- { "Pacific/Truk" , 0x03463C },
- { "Pacific/Wake" , 0x034675 },
- { "Pacific/Wallis" , 0x0346AE },
- { "Pacific/Yap" , 0x0346E6 },
- { "Poland" , 0x03471F },
- { "Portugal" , 0x034AEF },
- { "PRC" , 0x034FDF },
- { "PST8PDT" , 0x035084 },
- { "ROC" , 0x0353C9 },
- { "ROK" , 0x0354D5 },
- { "Singapore" , 0x03556D },
- { "Turkey" , 0x035618 },
- { "UCT" , 0x0359F9 },
- { "Universal" , 0x035A31 },
- { "US/Alaska" , 0x035A69 },
- { "US/Aleutian" , 0x035DC1 },
- { "US/Arizona" , 0x03611B },
- { "US/Central" , 0x03619D },
- { "US/East-Indiana" , 0x036B8F },
- { "US/Eastern" , 0x03669C },
- { "US/Hawaii" , 0x036DED },
- { "US/Indiana-Starke" , 0x036E6F },
- { "US/Michigan" , 0x0371E0 },
- { "US/Mountain" , 0x03750B },
- { "US/Pacific" , 0x037878 },
- { "US/Pacific-New" , 0x037C71 },
- { "US/Samoa" , 0x03806A },
- { "UTC" , 0x0380E7 },
- { "W-SU" , 0x0383C6 },
- { "WET" , 0x03811F },
- { "Zulu" , 0x0386F5 },
+ { "America/Indiana/Marengo" , 0x00942E },
+ { "America/Indiana/Petersburg" , 0x0096A0 },
+ { "America/Indiana/Vevay" , 0x009BA5 },
+ { "America/Indiana/Vincennes" , 0x009DA9 },
+ { "America/Indianapolis" , 0x009947 },
+ { "America/Inuvik" , 0x00A011 },
+ { "America/Iqaluit" , 0x00A308 },
+ { "America/Jamaica" , 0x00A5FA },
+ { "America/Jujuy" , 0x00A6B3 },
+ { "America/Juneau" , 0x00A847 },
+ { "America/Kentucky/Louisville" , 0x00AB9B },
+ { "America/Kentucky/Monticello" , 0x00AF84 },
+ { "America/Knox_IN" , 0x00B2D7 },
+ { "America/La_Paz" , 0x00B63C },
+ { "America/Lima" , 0x00B697 },
+ { "America/Los_Angeles" , 0x00B733 },
+ { "America/Louisville" , 0x00BB2C },
+ { "America/Maceio" , 0x00BF15 },
+ { "America/Managua" , 0x00C033 },
+ { "America/Manaus" , 0x00C0D0 },
+ { "America/Martinique" , 0x00C1BC },
+ { "America/Mazatlan" , 0x00C21C },
+ { "America/Mendoza" , 0x00C455 },
+ { "America/Menominee" , 0x00C5F3 },
+ { "America/Merida" , 0x00C921 },
+ { "America/Mexico_City" , 0x00CB30 },
+ { "America/Miquelon" , 0x00CD82 },
+ { "America/Moncton" , 0x00CFE8 },
+ { "America/Monterrey" , 0x00D456 },
+ { "America/Montevideo" , 0x00D659 },
+ { "America/Montreal" , 0x00D81F },
+ { "America/Montserrat" , 0x00DD03 },
+ { "America/Nassau" , 0x00DD4C },
+ { "America/New_York" , 0x00E085 },
+ { "America/Nipigon" , 0x00E578 },
+ { "America/Nome" , 0x00E872 },
+ { "America/Noronha" , 0x00EBCB },
+ { "America/North_Dakota/Center" , 0x00ECDF },
+ { "America/Panama" , 0x00F03C },
+ { "America/Pangnirtung" , 0x00F085 },
+ { "America/Paramaribo" , 0x00F38F },
+ { "America/Phoenix" , 0x00F415 },
+ { "America/Port-au-Prince" , 0x00F497 },
+ { "America/Port_of_Spain" , 0x00F67F },
+ { "America/Porto_Acre" , 0x00F59D },
+ { "America/Porto_Velho" , 0x00F6C8 },
+ { "America/Puerto_Rico" , 0x00F7AA },
+ { "America/Rainy_River" , 0x00F7F8 },
+ { "America/Rankin_Inlet" , 0x00FAF2 },
+ { "America/Recife" , 0x00FDD8 },
+ { "America/Regina" , 0x00FEEC },
+ { "America/Rio_Branco" , 0x010069 },
+ { "America/Rosario" , 0x01014B },
+ { "America/Santiago" , 0x0102D1 },
+ { "America/Santo_Domingo" , 0x01064B },
+ { "America/Sao_Paulo" , 0x010705 },
+ { "America/Scoresbysund" , 0x0109D6 },
+ { "America/Shiprock" , 0x010C99 },
+ { "America/St_Johns" , 0x011006 },
+ { "America/St_Kitts" , 0x011525 },
+ { "America/St_Lucia" , 0x01156E },
+ { "America/St_Thomas" , 0x0115B7 },
+ { "America/St_Vincent" , 0x011600 },
+ { "America/Swift_Current" , 0x011649 },
+ { "America/Tegucigalpa" , 0x011730 },
+ { "America/Thule" , 0x011799 },
+ { "America/Thunder_Bay" , 0x0119C4 },
+ { "America/Tijuana" , 0x011CDE },
+ { "America/Toronto" , 0x01202A },
+ { "America/Tortola" , 0x01250E },
+ { "America/Vancouver" , 0x012557 },
+ { "America/Virgin" , 0x012964 },
+ { "America/Whitehorse" , 0x0129AD },
+ { "America/Winnipeg" , 0x012CA4 },
+ { "America/Yakutat" , 0x0130AD },
+ { "America/Yellowknife" , 0x0133E9 },
+ { "Antarctica/Casey" , 0x0136C3 },
+ { "Antarctica/Davis" , 0x01370C },
+ { "Antarctica/DumontDUrville" , 0x013760 },
+ { "Antarctica/Mawson" , 0x0137C0 },
+ { "Antarctica/McMurdo" , 0x01380A },
+ { "Antarctica/Palmer" , 0x013AE4 },
+ { "Antarctica/Rothera" , 0x013DED },
+ { "Antarctica/South_Pole" , 0x013E37 },
+ { "Antarctica/Syowa" , 0x014111 },
+ { "Antarctica/Vostok" , 0x01415B },
+ { "Arctic/Longyearbyen" , 0x0141A5 },
+ { "Asia/Aden" , 0x0144CB },
+ { "Asia/Almaty" , 0x014514 },
+ { "Asia/Amman" , 0x014679 },
+ { "Asia/Anadyr" , 0x01492D },
+ { "Asia/Aqtau" , 0x014BF9 },
+ { "Asia/Aqtobe" , 0x014DBB },
+ { "Asia/Ashgabat" , 0x014F58 },
+ { "Asia/Ashkhabad" , 0x015069 },
+ { "Asia/Baghdad" , 0x01517A },
+ { "Asia/Bahrain" , 0x01540F },
+ { "Asia/Baku" , 0x015469 },
+ { "Asia/Bangkok" , 0x01574A },
+ { "Asia/Beirut" , 0x015793 },
+ { "Asia/Bishkek" , 0x015A94 },
+ { "Asia/Brunei" , 0x015C34 },
+ { "Asia/Calcutta" , 0x015C8A },
+ { "Asia/Choibalsan" , 0x015CF7 },
+ { "Asia/Chongqing" , 0x015F8B },
+ { "Asia/Chungking" , 0x01602E },
+ { "Asia/Colombo" , 0x0160D1 },
+ { "Asia/Dacca" , 0x01615C },
+ { "Asia/Damascus" , 0x0161DF },
+ { "Asia/Dhaka" , 0x016523 },
+ { "Asia/Dili" , 0x0165A6 },
+ { "Asia/Dubai" , 0x016623 },
+ { "Asia/Dushanbe" , 0x01666C },
+ { "Asia/Gaza" , 0x016763 },
+ { "Asia/Harbin" , 0x016AA0 },
+ { "Asia/Hong_Kong" , 0x016B5A },
+ { "Asia/Hovd" , 0x016D04 },
+ { "Asia/Irkutsk" , 0x016F8B },
+ { "Asia/Istanbul" , 0x01724F },
+ { "Asia/Jakarta" , 0x017630 },
+ { "Asia/Jayapura" , 0x0176C0 },
+ { "Asia/Jerusalem" , 0x01771F },
+ { "Asia/Kabul" , 0x017A42 },
+ { "Asia/Kamchatka" , 0x017A87 },
+ { "Asia/Karachi" , 0x017D4B },
+ { "Asia/Kashgar" , 0x017DE0 },
+ { "Asia/Katmandu" , 0x017E90 },
+ { "Asia/Krasnoyarsk" , 0x017EEA },
+ { "Asia/Kuala_Lumpur" , 0x0181AE },
+ { "Asia/Kuching" , 0x01824C },
+ { "Asia/Kuwait" , 0x01831F },
+ { "Asia/Macao" , 0x018368 },
+ { "Asia/Macau" , 0x018497 },
+ { "Asia/Magadan" , 0x0185C6 },
+ { "Asia/Makassar" , 0x01888A },
+ { "Asia/Manila" , 0x0188FA },
+ { "Asia/Muscat" , 0x018973 },
+ { "Asia/Nicosia" , 0x0189BC },
+ { "Asia/Novosibirsk" , 0x018C98 },
+ { "Asia/Omsk" , 0x018F69 },
+ { "Asia/Oral" , 0x01922D },
+ { "Asia/Phnom_Penh" , 0x0193E2 },
+ { "Asia/Pontianak" , 0x01944E },
+ { "Asia/Pyongyang" , 0x0194EE },
+ { "Asia/Qatar" , 0x01954F },
+ { "Asia/Qyzylorda" , 0x0195A9 },
+ { "Asia/Rangoon" , 0x019753 },
+ { "Asia/Riyadh" , 0x0197BF },
+ { "Asia/Saigon" , 0x019808 },
+ { "Asia/Sakhalin" , 0x019874 },
+ { "Asia/Samarkand" , 0x019B4D },
+ { "Asia/Seoul" , 0x019C90 },
+ { "Asia/Shanghai" , 0x019D28 },
+ { "Asia/Singapore" , 0x019DCD },
+ { "Asia/Taipei" , 0x019E78 },
+ { "Asia/Tashkent" , 0x019F84 },
+ { "Asia/Tbilisi" , 0x01A0AC },
+ { "Asia/Tehran" , 0x01A25A },
+ { "Asia/Tel_Aviv" , 0x01A4D0 },
+ { "Asia/Thimbu" , 0x01A7F3 },
+ { "Asia/Thimphu" , 0x01A84D },
+ { "Asia/Tokyo" , 0x01A8A7 },
+ { "Asia/Ujung_Pandang" , 0x01A924 },
+ { "Asia/Ulaanbaatar" , 0x01A994 },
+ { "Asia/Ulan_Bator" , 0x01AC1B },
+ { "Asia/Urumqi" , 0x01AEA2 },
+ { "Asia/Vientiane" , 0x01AF45 },
+ { "Asia/Vladivostok" , 0x01AFB1 },
+ { "Asia/Yakutsk" , 0x01B27C },
+ { "Asia/Yekaterinburg" , 0x01B540 },
+ { "Asia/Yerevan" , 0x01B82F },
+ { "Atlantic/Azores" , 0x01BB27 },
+ { "Atlantic/Bermuda" , 0x01C018 },
+ { "Atlantic/Canary" , 0x01C2ED },
+ { "Atlantic/Cape_Verde" , 0x01C5A9 },
+ { "Atlantic/Faeroe" , 0x01C616 },
+ { "Atlantic/Jan_Mayen" , 0x01C8AE },
+ { "Atlantic/Madeira" , 0x01CBD4 },
+ { "Atlantic/Reykjavik" , 0x01D0C2 },
+ { "Atlantic/South_Georgia" , 0x01D26F },
+ { "Atlantic/St_Helena" , 0x01D56F },
+ { "Atlantic/Stanley" , 0x01D2A7 },
+ { "Australia/ACT" , 0x01D5B8 },
+ { "Australia/Adelaide" , 0x01D8C9 },
+ { "Australia/Brisbane" , 0x01DBDA },
+ { "Australia/Broken_Hill" , 0x01DC7A },
+ { "Australia/Canberra" , 0x01DF90 },
+ { "Australia/Currie" , 0x01E2A1 },
+ { "Australia/Darwin" , 0x01E5B2 },
+ { "Australia/Hobart" , 0x01E61A },
+ { "Australia/LHI" , 0x01E953 },
+ { "Australia/Lindeman" , 0x01EBE2 },
+ { "Australia/Lord_Howe" , 0x01EC9B },
+ { "Australia/Melbourne" , 0x01EF2A },
+ { "Australia/North" , 0x01F23B },
+ { "Australia/NSW" , 0x01F2A3 },
+ { "Australia/Perth" , 0x01F5B4 },
+ { "Australia/Queensland" , 0x01F640 },
+ { "Australia/South" , 0x01F6E0 },
+ { "Australia/Sydney" , 0x01F9F1 },
+ { "Australia/Tasmania" , 0x01FD02 },
+ { "Australia/Victoria" , 0x02003B },
+ { "Australia/West" , 0x02034C },
+ { "Australia/Yancowinna" , 0x0203D8 },
+ { "Brazil/Acre" , 0x0206EE },
+ { "Brazil/DeNoronha" , 0x0207D0 },
+ { "Brazil/East" , 0x0208E4 },
+ { "Brazil/West" , 0x020BB5 },
+ { "Canada/Atlantic" , 0x020CA1 },
+ { "Canada/Central" , 0x02117D },
+ { "Canada/East-Saskatchewan" , 0x021A6A },
+ { "Canada/Eastern" , 0x021586 },
+ { "Canada/Mountain" , 0x021BE7 },
+ { "Canada/Newfoundland" , 0x021F51 },
+ { "Canada/Pacific" , 0x022470 },
+ { "Canada/Saskatchewan" , 0x02287D },
+ { "Canada/Yukon" , 0x0229FA },
+ { "CET" , 0x022CF1 },
+ { "Chile/Continental" , 0x022FE4 },
+ { "Chile/EasterIsland" , 0x02335E },
+ { "CST6CDT" , 0x0236A6 },
+ { "Cuba" , 0x0239EB },
+ { "EET" , 0x023D52 },
+ { "Egypt" , 0x023FF9 },
+ { "Eire" , 0x0243B4 },
+ { "EST" , 0x0248B9 },
+ { "EST5EDT" , 0x0248F1 },
+ { "Etc/GMT" , 0x024C36 },
+ { "Etc/GMT+0" , 0x024CDE },
+ { "Etc/GMT+1" , 0x024D50 },
+ { "Etc/GMT+10" , 0x024DC5 },
+ { "Etc/GMT+11" , 0x024E3B },
+ { "Etc/GMT+12" , 0x024EB1 },
+ { "Etc/GMT+2" , 0x024F9C },
+ { "Etc/GMT+3" , 0x025010 },
+ { "Etc/GMT+4" , 0x025084 },
+ { "Etc/GMT+5" , 0x0250F8 },
+ { "Etc/GMT+6" , 0x02516C },
+ { "Etc/GMT+7" , 0x0251E0 },
+ { "Etc/GMT+8" , 0x025254 },
+ { "Etc/GMT+9" , 0x0252C8 },
+ { "Etc/GMT-0" , 0x024CA6 },
+ { "Etc/GMT-1" , 0x024D16 },
+ { "Etc/GMT-10" , 0x024D8A },
+ { "Etc/GMT-11" , 0x024E00 },
+ { "Etc/GMT-12" , 0x024E76 },
+ { "Etc/GMT-13" , 0x024EEC },
+ { "Etc/GMT-14" , 0x024F27 },
+ { "Etc/GMT-2" , 0x024F62 },
+ { "Etc/GMT-3" , 0x024FD6 },
+ { "Etc/GMT-4" , 0x02504A },
+ { "Etc/GMT-5" , 0x0250BE },
+ { "Etc/GMT-6" , 0x025132 },
+ { "Etc/GMT-7" , 0x0251A6 },
+ { "Etc/GMT-8" , 0x02521A },
+ { "Etc/GMT-9" , 0x02528E },
+ { "Etc/GMT0" , 0x024C6E },
+ { "Etc/Greenwich" , 0x025302 },
+ { "Etc/UCT" , 0x02533A },
+ { "Etc/Universal" , 0x025372 },
+ { "Etc/UTC" , 0x0253AA },
+ { "Etc/Zulu" , 0x0253E2 },
+ { "Europe/Amsterdam" , 0x02541A },
+ { "Europe/Andorra" , 0x02584C },
+ { "Europe/Athens" , 0x025ABC },
+ { "Europe/Belfast" , 0x025DF3 },
+ { "Europe/Belgrade" , 0x02631E },
+ { "Europe/Berlin" , 0x0265D6 },
+ { "Europe/Bratislava" , 0x02691B },
+ { "Europe/Brussels" , 0x026C41 },
+ { "Europe/Bucharest" , 0x02706C },
+ { "Europe/Budapest" , 0x02738A },
+ { "Europe/Chisinau" , 0x0276EC },
+ { "Europe/Copenhagen" , 0x027A6E },
+ { "Europe/Dublin" , 0x027D6C },
+ { "Europe/Gibraltar" , 0x028271 },
+ { "Europe/Helsinki" , 0x0286BC },
+ { "Europe/Istanbul" , 0x028966 },
+ { "Europe/Kaliningrad" , 0x028D47 },
+ { "Europe/Kiev" , 0x029087 },
+ { "Europe/Lisbon" , 0x029384 },
+ { "Europe/Ljubljana" , 0x029874 },
+ { "Europe/London" , 0x029B2C },
+ { "Europe/Luxembourg" , 0x02A057 },
+ { "Europe/Madrid" , 0x02A4A1 },
+ { "Europe/Malta" , 0x02A853 },
+ { "Europe/Mariehamn" , 0x02AC00 },
+ { "Europe/Minsk" , 0x02AEAA },
+ { "Europe/Monaco" , 0x02B1A9 },
+ { "Europe/Moscow" , 0x02B5D8 },
+ { "Europe/Nicosia" , 0x02B907 },
+ { "Europe/Oslo" , 0x02BBE3 },
+ { "Europe/Paris" , 0x02BF09 },
+ { "Europe/Prague" , 0x02C343 },
+ { "Europe/Riga" , 0x02C669 },
+ { "Europe/Rome" , 0x02C9A2 },
+ { "Europe/Samara" , 0x02CD59 },
+ { "Europe/San_Marino" , 0x02D058 },
+ { "Europe/Sarajevo" , 0x02D40F },
+ { "Europe/Simferopol" , 0x02D6C7 },
+ { "Europe/Skopje" , 0x02D9D8 },
+ { "Europe/Sofia" , 0x02DC90 },
+ { "Europe/Stockholm" , 0x02DF7F },
+ { "Europe/Tallinn" , 0x02E222 },
+ { "Europe/Tirane" , 0x02E550 },
+ { "Europe/Tiraspol" , 0x02E84A },
+ { "Europe/Uzhgorod" , 0x02EBCC },
+ { "Europe/Vaduz" , 0x02EECF },
+ { "Europe/Vatican" , 0x02F156 },
+ { "Europe/Vienna" , 0x02F50D },
+ { "Europe/Vilnius" , 0x02F82E },
+ { "Europe/Warsaw" , 0x02FB61 },
+ { "Europe/Zagreb" , 0x02FF31 },
+ { "Europe/Zaporozhye" , 0x0301E9 },
+ { "Europe/Zurich" , 0x0304F0 },
+ { "Factory" , 0x03079D },
+ { "GB" , 0x030802 },
+ { "GB-Eire" , 0x030D2D },
+ { "GMT" , 0x031258 },
+ { "GMT+0" , 0x031300 },
+ { "GMT-0" , 0x0312C8 },
+ { "GMT0" , 0x031290 },
+ { "Greenwich" , 0x031338 },
+ { "Hongkong" , 0x031370 },
+ { "HST" , 0x03151A },
+ { "Iceland" , 0x031552 },
+ { "Indian/Antananarivo" , 0x0316FF },
+ { "Indian/Chagos" , 0x031767 },
+ { "Indian/Christmas" , 0x0317BD },
+ { "Indian/Cocos" , 0x0317F5 },
+ { "Indian/Comoro" , 0x03182D },
+ { "Indian/Kerguelen" , 0x031876 },
+ { "Indian/Mahe" , 0x0318BF },
+ { "Indian/Maldives" , 0x031908 },
+ { "Indian/Mauritius" , 0x031951 },
+ { "Indian/Mayotte" , 0x03199A },
+ { "Indian/Reunion" , 0x0319E3 },
+ { "Iran" , 0x031A2C },
+ { "Israel" , 0x031CA2 },
+ { "Jamaica" , 0x031FC5 },
+ { "Japan" , 0x03207E },
+ { "Kwajalein" , 0x0320FB },
+ { "Libya" , 0x032152 },
+ { "MET" , 0x032240 },
+ { "Mexico/BajaNorte" , 0x032533 },
+ { "Mexico/BajaSur" , 0x03287F },
+ { "Mexico/General" , 0x032AB8 },
+ { "MST" , 0x032D0A },
+ { "MST7MDT" , 0x032D42 },
+ { "Navajo" , 0x033087 },
+ { "NZ" , 0x0333F4 },
+ { "NZ-CHAT" , 0x033766 },
+ { "Pacific/Apia" , 0x033A42 },
+ { "Pacific/Auckland" , 0x033A9D },
+ { "Pacific/Chatham" , 0x033E0F },
+ { "Pacific/Easter" , 0x0340EB },
+ { "Pacific/Efate" , 0x034433 },
+ { "Pacific/Enderbury" , 0x0344ED },
+ { "Pacific/Fakaofo" , 0x034540 },
+ { "Pacific/Fiji" , 0x034578 },
+ { "Pacific/Funafuti" , 0x0345E2 },
+ { "Pacific/Galapagos" , 0x03461A },
+ { "Pacific/Gambier" , 0x034675 },
+ { "Pacific/Guadalcanal" , 0x0346BF },
+ { "Pacific/Guam" , 0x034708 },
+ { "Pacific/Honolulu" , 0x034752 },
+ { "Pacific/Johnston" , 0x0347D4 },
+ { "Pacific/Kiritimati" , 0x03480C },
+ { "Pacific/Kosrae" , 0x03485F },
+ { "Pacific/Kwajalein" , 0x0348AA },
+ { "Pacific/Majuro" , 0x034901 },
+ { "Pacific/Marquesas" , 0x034946 },
+ { "Pacific/Midway" , 0x034990 },
+ { "Pacific/Nauru" , 0x034A00 },
+ { "Pacific/Niue" , 0x034A6C },
+ { "Pacific/Norfolk" , 0x034ABE },
+ { "Pacific/Noumea" , 0x034B07 },
+ { "Pacific/Pago_Pago" , 0x034B8B },
+ { "Pacific/Palau" , 0x034C08 },
+ { "Pacific/Pitcairn" , 0x034C40 },
+ { "Pacific/Ponape" , 0x034C89 },
+ { "Pacific/Port_Moresby" , 0x034CC2 },
+ { "Pacific/Rarotonga" , 0x034CFA },
+ { "Pacific/Saipan" , 0x034DCA },
+ { "Pacific/Samoa" , 0x034E21 },
+ { "Pacific/Tahiti" , 0x034E9E },
+ { "Pacific/Tarawa" , 0x034EE8 },
+ { "Pacific/Tongatapu" , 0x034F21 },
+ { "Pacific/Truk" , 0x034FA1 },
+ { "Pacific/Wake" , 0x034FDA },
+ { "Pacific/Wallis" , 0x035013 },
+ { "Pacific/Yap" , 0x03504B },
+ { "Poland" , 0x035084 },
+ { "Portugal" , 0x035454 },
+ { "PRC" , 0x035944 },
+ { "PST8PDT" , 0x0359E9 },
+ { "ROC" , 0x035D2E },
+ { "ROK" , 0x035E3A },
+ { "Singapore" , 0x035ED2 },
+ { "Turkey" , 0x035F7D },
+ { "UCT" , 0x03635E },
+ { "Universal" , 0x036396 },
+ { "US/Alaska" , 0x0363CE },
+ { "US/Aleutian" , 0x036726 },
+ { "US/Arizona" , 0x036A80 },
+ { "US/Central" , 0x036B02 },
+ { "US/East-Indiana" , 0x0374F4 },
+ { "US/Eastern" , 0x037001 },
+ { "US/Hawaii" , 0x037752 },
+ { "US/Indiana-Starke" , 0x0377D4 },
+ { "US/Michigan" , 0x037B39 },
+ { "US/Mountain" , 0x037E64 },
+ { "US/Pacific" , 0x0381D1 },
+ { "US/Pacific-New" , 0x0385CA },
+ { "US/Samoa" , 0x0389C3 },
+ { "UTC" , 0x038A40 },
+ { "W-SU" , 0x038D1F },
+ { "WET" , 0x038A78 },
+ { "Zulu" , 0x03904E },
};
/* This is a generated file, do not modify */
-unsigned char timelib_timezone_db_data_builtin[231213] = {
+unsigned char timelib_timezone_db_data_builtin[233606] = {
/* Africa/Abidjan */
@@ -3151,8 +3154,8 @@ unsigned char timelib_timezone_db_data_builtin[231213] = {
/* America/Indiana/Knox */
0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x9E, 0xA6, 0x2C, 0x80,
0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80,
0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x09, 0xF0, 0xD5, 0x55, 0xD5, 0x00, 0xD6, 0x20, 0xCD, 0xF0,
0xD7, 0x35, 0xB7, 0x00, 0xD8, 0x00, 0xAF, 0xF0, 0xD9, 0x15, 0x99, 0x00, 0xD9, 0xE0, 0x91, 0xF0,
@@ -3175,37 +3178,36 @@ unsigned char timelib_timezone_db_data_builtin[231213] = {
0x1E, 0xB1, 0xDC, 0x80, 0x1F, 0xA1, 0xBF, 0x70, 0x20, 0x76, 0x0F, 0x00, 0x21, 0x81, 0xA1, 0x70,
0x22, 0x55, 0xF1, 0x00, 0x23, 0x6A, 0xBD, 0xF0, 0x24, 0x35, 0xD3, 0x00, 0x25, 0x4A, 0x9F, 0xF0,
0x26, 0x15, 0xB5, 0x00, 0x27, 0x2A, 0x81, 0xF0, 0x27, 0xFE, 0xD1, 0x80, 0x29, 0x0A, 0x63, 0xF0,
-0x44, 0x2F, 0x76, 0x70, 0x45, 0x44, 0x43, 0x60, 0x45, 0xF3, 0xA8, 0xF0, 0x47, 0x2D, 0x5F, 0xE0,
-0x47, 0xD3, 0x8A, 0xF0, 0x49, 0x0D, 0x41, 0xE0, 0x49, 0xB3, 0x6C, 0xF0, 0x4A, 0xED, 0x23, 0xE0,
-0x4B, 0x9C, 0x89, 0x70, 0x4C, 0xD6, 0x40, 0x60, 0x4D, 0x7C, 0x6B, 0x70, 0x4E, 0xB6, 0x22, 0x60,
-0x4F, 0x5C, 0x4D, 0x70, 0x50, 0x96, 0x04, 0x60, 0x51, 0x3C, 0x2F, 0x70, 0x52, 0x75, 0xE6, 0x60,
-0x53, 0x1C, 0x11, 0x70, 0x54, 0x55, 0xC8, 0x60, 0x54, 0xFB, 0xF3, 0x70, 0x56, 0x35, 0xAA, 0x60,
-0x56, 0xE5, 0x0F, 0xF0, 0x58, 0x1E, 0xC6, 0xE0, 0x58, 0xC4, 0xF1, 0xF0, 0x59, 0xFE, 0xA8, 0xE0,
-0x5A, 0xA4, 0xD3, 0xF0, 0x5B, 0xDE, 0x8A, 0xE0, 0x5C, 0x84, 0xB5, 0xF0, 0x5D, 0xBE, 0x6C, 0xE0,
-0x5E, 0x64, 0x97, 0xF0, 0x5F, 0x9E, 0x4E, 0xE0, 0x60, 0x4D, 0xB4, 0x70, 0x61, 0x87, 0x6B, 0x60,
-0x62, 0x2D, 0x96, 0x70, 0x63, 0x67, 0x4D, 0x60, 0x64, 0x0D, 0x78, 0x70, 0x65, 0x47, 0x2F, 0x60,
-0x65, 0xED, 0x5A, 0x70, 0x67, 0x27, 0x11, 0x60, 0x67, 0xCD, 0x3C, 0x70, 0x69, 0x06, 0xF3, 0x60,
-0x69, 0xAD, 0x1E, 0x70, 0x6A, 0xE6, 0xD5, 0x60, 0x6B, 0x96, 0x3A, 0xF0, 0x6C, 0xCF, 0xF1, 0xE0,
-0x6D, 0x76, 0x1C, 0xF0, 0x6E, 0xAF, 0xD3, 0xE0, 0x6F, 0x55, 0xFE, 0xF0, 0x70, 0x8F, 0xB5, 0xE0,
-0x71, 0x35, 0xE0, 0xF0, 0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0, 0x74, 0x4F, 0x79, 0xE0,
-0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70, 0x78, 0x18, 0x78, 0x60,
-0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70, 0x7B, 0xD8, 0x3C, 0x60,
-0x7C, 0x7E, 0x67, 0x70, 0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60,
+0x44, 0x2F, 0x76, 0x70, 0x45, 0x44, 0x51, 0x70, 0x45, 0xF3, 0xB7, 0x00, 0x47, 0x2D, 0x6D, 0xF0,
+0x47, 0xD3, 0x99, 0x00, 0x49, 0x0D, 0x4F, 0xF0, 0x49, 0xB3, 0x7B, 0x00, 0x4A, 0xED, 0x31, 0xF0,
+0x4B, 0x9C, 0x97, 0x80, 0x4C, 0xD6, 0x4E, 0x70, 0x4D, 0x7C, 0x79, 0x80, 0x4E, 0xB6, 0x30, 0x70,
+0x4F, 0x5C, 0x5B, 0x80, 0x50, 0x96, 0x12, 0x70, 0x51, 0x3C, 0x3D, 0x80, 0x52, 0x75, 0xF4, 0x70,
+0x53, 0x1C, 0x1F, 0x80, 0x54, 0x55, 0xD6, 0x70, 0x54, 0xFC, 0x01, 0x80, 0x56, 0x35, 0xB8, 0x70,
+0x56, 0xE5, 0x1E, 0x00, 0x58, 0x1E, 0xD4, 0xF0, 0x58, 0xC5, 0x00, 0x00, 0x59, 0xFE, 0xB6, 0xF0,
+0x5A, 0xA4, 0xE2, 0x00, 0x5B, 0xDE, 0x98, 0xF0, 0x5C, 0x84, 0xC4, 0x00, 0x5D, 0xBE, 0x7A, 0xF0,
+0x5E, 0x64, 0xA6, 0x00, 0x5F, 0x9E, 0x5C, 0xF0, 0x60, 0x4D, 0xC2, 0x80, 0x61, 0x87, 0x79, 0x70,
+0x62, 0x2D, 0xA4, 0x80, 0x63, 0x67, 0x5B, 0x70, 0x64, 0x0D, 0x86, 0x80, 0x65, 0x47, 0x3D, 0x70,
+0x65, 0xED, 0x68, 0x80, 0x67, 0x27, 0x1F, 0x70, 0x67, 0xCD, 0x4A, 0x80, 0x69, 0x07, 0x01, 0x70,
+0x69, 0xAD, 0x2C, 0x80, 0x6A, 0xE6, 0xE3, 0x70, 0x6B, 0x96, 0x49, 0x00, 0x6C, 0xCF, 0xFF, 0xF0,
+0x6D, 0x76, 0x2B, 0x00, 0x6E, 0xAF, 0xE1, 0xF0, 0x6F, 0x56, 0x0D, 0x00, 0x70, 0x8F, 0xC3, 0xF0,
+0x71, 0x35, 0xEF, 0x00, 0x72, 0x6F, 0xA5, 0xF0, 0x73, 0x15, 0xD1, 0x00, 0x74, 0x4F, 0x87, 0xF0,
+0x74, 0xFE, 0xED, 0x80, 0x76, 0x38, 0xA4, 0x70, 0x76, 0xDE, 0xCF, 0x80, 0x78, 0x18, 0x86, 0x70,
+0x78, 0xBE, 0xB1, 0x80, 0x79, 0xF8, 0x68, 0x70, 0x7A, 0x9E, 0x93, 0x80, 0x7B, 0xD8, 0x4A, 0x70,
+0x7C, 0x7E, 0x75, 0x80, 0x7D, 0xB8, 0x2C, 0x70, 0x7E, 0x5E, 0x57, 0x80, 0x7F, 0x98, 0x0E, 0x70,
0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
-0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF,
0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01,
-0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54,
-0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54,
-0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
-0x00,
+0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43,
+0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x00,
/* America/Indiana/Marengo */
0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -3249,6 +3251,51 @@ unsigned char timelib_timezone_db_data_builtin[231213] = {
0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00,
+/* America/Indiana/Petersburg */
+0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x9E, 0xA6, 0x2C, 0x80,
+0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80,
+0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x09, 0xF0, 0xE4, 0x67, 0x3D, 0xE0, 0xE5, 0x29, 0x18, 0x70,
+0xE6, 0x47, 0x3C, 0x00, 0xE7, 0x12, 0x34, 0xF0, 0xE8, 0x27, 0x1E, 0x00, 0xE8, 0xF2, 0x16, 0xF0,
+0xEA, 0x07, 0x00, 0x00, 0xEA, 0xD1, 0xF8, 0xF0, 0xEB, 0xE6, 0xE2, 0x00, 0xEC, 0xB1, 0xDA, 0xF0,
+0xED, 0xC6, 0xC4, 0x00, 0xEE, 0x91, 0xBC, 0xF0, 0xEF, 0xAF, 0xE0, 0x80, 0xF0, 0x9F, 0xC3, 0x70,
+0xF1, 0x8F, 0xC2, 0x80, 0xF2, 0x7F, 0xA5, 0x70, 0xF3, 0x6F, 0xA4, 0x80, 0xF4, 0x5F, 0x87, 0x70,
+0xF5, 0x4F, 0x86, 0x80, 0xF6, 0x3F, 0x69, 0x70, 0xF7, 0x2F, 0x68, 0x80, 0xFA, 0x08, 0x67, 0xF0,
+0xFA, 0xF8, 0x67, 0x00, 0xFB, 0xE8, 0x49, 0xF0, 0xFC, 0xD8, 0x49, 0x00, 0xFD, 0xC8, 0x2B, 0xF0,
+0xFE, 0xB8, 0x2B, 0x00, 0xFF, 0xA8, 0x0D, 0xF0, 0x00, 0x98, 0x0D, 0x00, 0x01, 0x87, 0xEF, 0xF0,
+0x02, 0x77, 0xEF, 0x00, 0x03, 0x71, 0x0C, 0x70, 0x04, 0x61, 0x0B, 0x80, 0x05, 0x50, 0xEE, 0x70,
+0x06, 0x40, 0xED, 0x80, 0x07, 0x30, 0xD0, 0x70, 0x07, 0x8D, 0x27, 0x80, 0x09, 0x10, 0xB2, 0x70,
+0x09, 0xAD, 0xA3, 0x00, 0x0A, 0xF0, 0x94, 0x70, 0x0B, 0xE0, 0x93, 0x80, 0x0C, 0xD9, 0xB0, 0xF0,
+0x0D, 0xC0, 0x75, 0x80, 0x0E, 0xB9, 0x92, 0xF0, 0x44, 0x2F, 0x76, 0x70, 0x45, 0x44, 0x51, 0x70,
+0x45, 0xF3, 0xB7, 0x00, 0x47, 0x2D, 0x6D, 0xF0, 0x47, 0xD3, 0x99, 0x00, 0x49, 0x0D, 0x4F, 0xF0,
+0x49, 0xB3, 0x7B, 0x00, 0x4A, 0xED, 0x31, 0xF0, 0x4B, 0x9C, 0x97, 0x80, 0x4C, 0xD6, 0x4E, 0x70,
+0x4D, 0x7C, 0x79, 0x80, 0x4E, 0xB6, 0x30, 0x70, 0x4F, 0x5C, 0x5B, 0x80, 0x50, 0x96, 0x12, 0x70,
+0x51, 0x3C, 0x3D, 0x80, 0x52, 0x75, 0xF4, 0x70, 0x53, 0x1C, 0x1F, 0x80, 0x54, 0x55, 0xD6, 0x70,
+0x54, 0xFC, 0x01, 0x80, 0x56, 0x35, 0xB8, 0x70, 0x56, 0xE5, 0x1E, 0x00, 0x58, 0x1E, 0xD4, 0xF0,
+0x58, 0xC5, 0x00, 0x00, 0x59, 0xFE, 0xB6, 0xF0, 0x5A, 0xA4, 0xE2, 0x00, 0x5B, 0xDE, 0x98, 0xF0,
+0x5C, 0x84, 0xC4, 0x00, 0x5D, 0xBE, 0x7A, 0xF0, 0x5E, 0x64, 0xA6, 0x00, 0x5F, 0x9E, 0x5C, 0xF0,
+0x60, 0x4D, 0xC2, 0x80, 0x61, 0x87, 0x79, 0x70, 0x62, 0x2D, 0xA4, 0x80, 0x63, 0x67, 0x5B, 0x70,
+0x64, 0x0D, 0x86, 0x80, 0x65, 0x47, 0x3D, 0x70, 0x65, 0xED, 0x68, 0x80, 0x67, 0x27, 0x1F, 0x70,
+0x67, 0xCD, 0x4A, 0x80, 0x69, 0x07, 0x01, 0x70, 0x69, 0xAD, 0x2C, 0x80, 0x6A, 0xE6, 0xE3, 0x70,
+0x6B, 0x96, 0x49, 0x00, 0x6C, 0xCF, 0xFF, 0xF0, 0x6D, 0x76, 0x2B, 0x00, 0x6E, 0xAF, 0xE1, 0xF0,
+0x6F, 0x56, 0x0D, 0x00, 0x70, 0x8F, 0xC3, 0xF0, 0x71, 0x35, 0xEF, 0x00, 0x72, 0x6F, 0xA5, 0xF0,
+0x73, 0x15, 0xD1, 0x00, 0x74, 0x4F, 0x87, 0xF0, 0x74, 0xFE, 0xED, 0x80, 0x76, 0x38, 0xA4, 0x70,
+0x76, 0xDE, 0xCF, 0x80, 0x78, 0x18, 0x86, 0x70, 0x78, 0xBE, 0xB1, 0x80, 0x79, 0xF8, 0x68, 0x70,
+0x7A, 0x9E, 0x93, 0x80, 0x7B, 0xD8, 0x4A, 0x70, 0x7C, 0x7E, 0x75, 0x80, 0x7D, 0xB8, 0x2C, 0x70,
+0x7E, 0x5E, 0x57, 0x80, 0x7F, 0x98, 0x0E, 0x70, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x04, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xB9, 0xB0, 0x01,
+0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9,
+0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54,
+0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00,
+0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+
/* America/Indianapolis */
0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
@@ -3324,6 +3371,47 @@ unsigned char timelib_timezone_db_data_builtin[231213] = {
0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00,
+/* America/Indiana/Vincennes */
+0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80,
+0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80,
+0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x09, 0xF0, 0xD3, 0x75, 0xF3, 0x00, 0xD4, 0x40, 0xEB, 0xF0,
+0xE0, 0x9E, 0x5B, 0x80, 0xE1, 0x69, 0x54, 0x70, 0xE2, 0x7E, 0x3D, 0x80, 0xE3, 0x49, 0x36, 0x70,
+0xE4, 0x67, 0x3D, 0xE0, 0xE5, 0x29, 0x18, 0x70, 0xE6, 0x47, 0x3C, 0x00, 0xE7, 0x12, 0x34, 0xF0,
+0xE8, 0x27, 0x1E, 0x00, 0xE8, 0xF2, 0x16, 0xF0, 0xEA, 0x07, 0x00, 0x00, 0xEA, 0xD1, 0xF8, 0xF0,
+0xEB, 0xE6, 0xE2, 0x00, 0xEC, 0xB1, 0xDA, 0xF0, 0xED, 0xC6, 0xC4, 0x00, 0xEE, 0xBF, 0xE1, 0x70,
+0xEF, 0xAF, 0xE0, 0x80, 0xF0, 0x71, 0x9E, 0xF0, 0xF1, 0x8F, 0xC2, 0x80, 0xF2, 0x7F, 0xA5, 0x70,
+0xF3, 0x6F, 0xA4, 0x80, 0xF4, 0x5F, 0x87, 0x70, 0xF5, 0x4F, 0x86, 0x80, 0xFE, 0xB8, 0x1C, 0xF0,
+0xFF, 0xA7, 0xFF, 0xE0, 0x00, 0x97, 0xFE, 0xF0, 0x01, 0x87, 0xE1, 0xE0, 0x44, 0x2F, 0x76, 0x70,
+0x45, 0x44, 0x51, 0x70, 0x45, 0xF3, 0xB7, 0x00, 0x47, 0x2D, 0x6D, 0xF0, 0x47, 0xD3, 0x99, 0x00,
+0x49, 0x0D, 0x4F, 0xF0, 0x49, 0xB3, 0x7B, 0x00, 0x4A, 0xED, 0x31, 0xF0, 0x4B, 0x9C, 0x97, 0x80,
+0x4C, 0xD6, 0x4E, 0x70, 0x4D, 0x7C, 0x79, 0x80, 0x4E, 0xB6, 0x30, 0x70, 0x4F, 0x5C, 0x5B, 0x80,
+0x50, 0x96, 0x12, 0x70, 0x51, 0x3C, 0x3D, 0x80, 0x52, 0x75, 0xF4, 0x70, 0x53, 0x1C, 0x1F, 0x80,
+0x54, 0x55, 0xD6, 0x70, 0x54, 0xFC, 0x01, 0x80, 0x56, 0x35, 0xB8, 0x70, 0x56, 0xE5, 0x1E, 0x00,
+0x58, 0x1E, 0xD4, 0xF0, 0x58, 0xC5, 0x00, 0x00, 0x59, 0xFE, 0xB6, 0xF0, 0x5A, 0xA4, 0xE2, 0x00,
+0x5B, 0xDE, 0x98, 0xF0, 0x5C, 0x84, 0xC4, 0x00, 0x5D, 0xBE, 0x7A, 0xF0, 0x5E, 0x64, 0xA6, 0x00,
+0x5F, 0x9E, 0x5C, 0xF0, 0x60, 0x4D, 0xC2, 0x80, 0x61, 0x87, 0x79, 0x70, 0x62, 0x2D, 0xA4, 0x80,
+0x63, 0x67, 0x5B, 0x70, 0x64, 0x0D, 0x86, 0x80, 0x65, 0x47, 0x3D, 0x70, 0x65, 0xED, 0x68, 0x80,
+0x67, 0x27, 0x1F, 0x70, 0x67, 0xCD, 0x4A, 0x80, 0x69, 0x07, 0x01, 0x70, 0x69, 0xAD, 0x2C, 0x80,
+0x6A, 0xE6, 0xE3, 0x70, 0x6B, 0x96, 0x49, 0x00, 0x6C, 0xCF, 0xFF, 0xF0, 0x6D, 0x76, 0x2B, 0x00,
+0x6E, 0xAF, 0xE1, 0xF0, 0x6F, 0x56, 0x0D, 0x00, 0x70, 0x8F, 0xC3, 0xF0, 0x71, 0x35, 0xEF, 0x00,
+0x72, 0x6F, 0xA5, 0xF0, 0x73, 0x15, 0xD1, 0x00, 0x74, 0x4F, 0x87, 0xF0, 0x74, 0xFE, 0xED, 0x80,
+0x76, 0x38, 0xA4, 0x70, 0x76, 0xDE, 0xCF, 0x80, 0x78, 0x18, 0x86, 0x70, 0x78, 0xBE, 0xB1, 0x80,
+0x79, 0xF8, 0x68, 0x70, 0x7A, 0x9E, 0x93, 0x80, 0x7B, 0xD8, 0x4A, 0x70, 0x7C, 0x7E, 0x75, 0x80,
+0x7D, 0xB8, 0x2C, 0x70, 0x7E, 0x5E, 0x57, 0x80, 0x7F, 0x98, 0x0E, 0x70, 0x00, 0x01, 0x00, 0x01,
+0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0x05, 0x04, 0x05, 0x04,
+0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
+0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
+0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
+0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
+0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0,
+0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF,
+0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00,
+0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+
/* America/Inuvik */
0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
@@ -3645,8 +3733,8 @@ unsigned char timelib_timezone_db_data_builtin[231213] = {
/* America/Knox_IN */
0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x9E, 0xA6, 0x2C, 0x80,
0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80,
0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x09, 0xF0, 0xD5, 0x55, 0xD5, 0x00, 0xD6, 0x20, 0xCD, 0xF0,
0xD7, 0x35, 0xB7, 0x00, 0xD8, 0x00, 0xAF, 0xF0, 0xD9, 0x15, 0x99, 0x00, 0xD9, 0xE0, 0x91, 0xF0,
@@ -3669,37 +3757,36 @@ unsigned char timelib_timezone_db_data_builtin[231213] = {
0x1E, 0xB1, 0xDC, 0x80, 0x1F, 0xA1, 0xBF, 0x70, 0x20, 0x76, 0x0F, 0x00, 0x21, 0x81, 0xA1, 0x70,
0x22, 0x55, 0xF1, 0x00, 0x23, 0x6A, 0xBD, 0xF0, 0x24, 0x35, 0xD3, 0x00, 0x25, 0x4A, 0x9F, 0xF0,
0x26, 0x15, 0xB5, 0x00, 0x27, 0x2A, 0x81, 0xF0, 0x27, 0xFE, 0xD1, 0x80, 0x29, 0x0A, 0x63, 0xF0,
-0x44, 0x2F, 0x76, 0x70, 0x45, 0x44, 0x43, 0x60, 0x45, 0xF3, 0xA8, 0xF0, 0x47, 0x2D, 0x5F, 0xE0,
-0x47, 0xD3, 0x8A, 0xF0, 0x49, 0x0D, 0x41, 0xE0, 0x49, 0xB3, 0x6C, 0xF0, 0x4A, 0xED, 0x23, 0xE0,
-0x4B, 0x9C, 0x89, 0x70, 0x4C, 0xD6, 0x40, 0x60, 0x4D, 0x7C, 0x6B, 0x70, 0x4E, 0xB6, 0x22, 0x60,
-0x4F, 0x5C, 0x4D, 0x70, 0x50, 0x96, 0x04, 0x60, 0x51, 0x3C, 0x2F, 0x70, 0x52, 0x75, 0xE6, 0x60,
-0x53, 0x1C, 0x11, 0x70, 0x54, 0x55, 0xC8, 0x60, 0x54, 0xFB, 0xF3, 0x70, 0x56, 0x35, 0xAA, 0x60,
-0x56, 0xE5, 0x0F, 0xF0, 0x58, 0x1E, 0xC6, 0xE0, 0x58, 0xC4, 0xF1, 0xF0, 0x59, 0xFE, 0xA8, 0xE0,
-0x5A, 0xA4, 0xD3, 0xF0, 0x5B, 0xDE, 0x8A, 0xE0, 0x5C, 0x84, 0xB5, 0xF0, 0x5D, 0xBE, 0x6C, 0xE0,
-0x5E, 0x64, 0x97, 0xF0, 0x5F, 0x9E, 0x4E, 0xE0, 0x60, 0x4D, 0xB4, 0x70, 0x61, 0x87, 0x6B, 0x60,
-0x62, 0x2D, 0x96, 0x70, 0x63, 0x67, 0x4D, 0x60, 0x64, 0x0D, 0x78, 0x70, 0x65, 0x47, 0x2F, 0x60,
-0x65, 0xED, 0x5A, 0x70, 0x67, 0x27, 0x11, 0x60, 0x67, 0xCD, 0x3C, 0x70, 0x69, 0x06, 0xF3, 0x60,
-0x69, 0xAD, 0x1E, 0x70, 0x6A, 0xE6, 0xD5, 0x60, 0x6B, 0x96, 0x3A, 0xF0, 0x6C, 0xCF, 0xF1, 0xE0,
-0x6D, 0x76, 0x1C, 0xF0, 0x6E, 0xAF, 0xD3, 0xE0, 0x6F, 0x55, 0xFE, 0xF0, 0x70, 0x8F, 0xB5, 0xE0,
-0x71, 0x35, 0xE0, 0xF0, 0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0, 0x74, 0x4F, 0x79, 0xE0,
-0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70, 0x78, 0x18, 0x78, 0x60,
-0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70, 0x7B, 0xD8, 0x3C, 0x60,
-0x7C, 0x7E, 0x67, 0x70, 0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60,
+0x44, 0x2F, 0x76, 0x70, 0x45, 0x44, 0x51, 0x70, 0x45, 0xF3, 0xB7, 0x00, 0x47, 0x2D, 0x6D, 0xF0,
+0x47, 0xD3, 0x99, 0x00, 0x49, 0x0D, 0x4F, 0xF0, 0x49, 0xB3, 0x7B, 0x00, 0x4A, 0xED, 0x31, 0xF0,
+0x4B, 0x9C, 0x97, 0x80, 0x4C, 0xD6, 0x4E, 0x70, 0x4D, 0x7C, 0x79, 0x80, 0x4E, 0xB6, 0x30, 0x70,
+0x4F, 0x5C, 0x5B, 0x80, 0x50, 0x96, 0x12, 0x70, 0x51, 0x3C, 0x3D, 0x80, 0x52, 0x75, 0xF4, 0x70,
+0x53, 0x1C, 0x1F, 0x80, 0x54, 0x55, 0xD6, 0x70, 0x54, 0xFC, 0x01, 0x80, 0x56, 0x35, 0xB8, 0x70,
+0x56, 0xE5, 0x1E, 0x00, 0x58, 0x1E, 0xD4, 0xF0, 0x58, 0xC5, 0x00, 0x00, 0x59, 0xFE, 0xB6, 0xF0,
+0x5A, 0xA4, 0xE2, 0x00, 0x5B, 0xDE, 0x98, 0xF0, 0x5C, 0x84, 0xC4, 0x00, 0x5D, 0xBE, 0x7A, 0xF0,
+0x5E, 0x64, 0xA6, 0x00, 0x5F, 0x9E, 0x5C, 0xF0, 0x60, 0x4D, 0xC2, 0x80, 0x61, 0x87, 0x79, 0x70,
+0x62, 0x2D, 0xA4, 0x80, 0x63, 0x67, 0x5B, 0x70, 0x64, 0x0D, 0x86, 0x80, 0x65, 0x47, 0x3D, 0x70,
+0x65, 0xED, 0x68, 0x80, 0x67, 0x27, 0x1F, 0x70, 0x67, 0xCD, 0x4A, 0x80, 0x69, 0x07, 0x01, 0x70,
+0x69, 0xAD, 0x2C, 0x80, 0x6A, 0xE6, 0xE3, 0x70, 0x6B, 0x96, 0x49, 0x00, 0x6C, 0xCF, 0xFF, 0xF0,
+0x6D, 0x76, 0x2B, 0x00, 0x6E, 0xAF, 0xE1, 0xF0, 0x6F, 0x56, 0x0D, 0x00, 0x70, 0x8F, 0xC3, 0xF0,
+0x71, 0x35, 0xEF, 0x00, 0x72, 0x6F, 0xA5, 0xF0, 0x73, 0x15, 0xD1, 0x00, 0x74, 0x4F, 0x87, 0xF0,
+0x74, 0xFE, 0xED, 0x80, 0x76, 0x38, 0xA4, 0x70, 0x76, 0xDE, 0xCF, 0x80, 0x78, 0x18, 0x86, 0x70,
+0x78, 0xBE, 0xB1, 0x80, 0x79, 0xF8, 0x68, 0x70, 0x7A, 0x9E, 0x93, 0x80, 0x7B, 0xD8, 0x4A, 0x70,
+0x7C, 0x7E, 0x75, 0x80, 0x7D, 0xB8, 0x2C, 0x70, 0x7E, 0x5E, 0x57, 0x80, 0x7F, 0x98, 0x0E, 0x70,
0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
-0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF,
0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01,
-0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54,
-0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54,
-0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
-0x00,
+0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43,
+0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x00,
/* America/La_Paz */
0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -4145,6 +4232,79 @@ unsigned char timelib_timezone_db_data_builtin[231213] = {
0x41, 0x53, 0x54, 0x00, 0x50, 0x4D, 0x53, 0x54, 0x00, 0x50, 0x4D, 0x44, 0x54, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+/* America/Moncton */
+0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x80, 0xF1, 0xB6, 0x50,
+0x9E, 0xB8, 0x85, 0x60, 0x9F, 0xC0, 0x23, 0x50, 0xBB, 0x3C, 0x38, 0xD0, 0xBB, 0xB4, 0x23, 0x40,
+0xBD, 0x1C, 0x1A, 0xD0, 0xBD, 0x94, 0x05, 0x40, 0xBE, 0xFB, 0xFC, 0xD0, 0xBF, 0x73, 0xE7, 0x40,
+0xC0, 0xDB, 0xDE, 0xD0, 0xC1, 0x53, 0xC9, 0x40, 0xC2, 0xBB, 0xC0, 0xD0, 0xC3, 0x33, 0xAB, 0x40,
+0xC4, 0x9B, 0xA2, 0xD0, 0xC5, 0x13, 0x8D, 0x40, 0xC6, 0x70, 0xF8, 0xD0, 0xC7, 0x0D, 0xCD, 0x40,
+0xC8, 0x48, 0xF1, 0xD0, 0xC8, 0xED, 0xAF, 0x40, 0xCA, 0x16, 0x5E, 0xD0, 0xCA, 0xD6, 0xCB, 0xC0,
+0xCB, 0x88, 0xE2, 0x60, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0xD3, 0x75, 0xD6, 0xE0,
+0xD4, 0x40, 0xCF, 0xD0, 0xD5, 0x55, 0xB8, 0xE0, 0xD6, 0x20, 0xB1, 0xD0, 0xD7, 0x35, 0x9A, 0xE0,
+0xD8, 0x00, 0x93, 0xD0, 0xD9, 0x15, 0x7C, 0xE0, 0xD9, 0xE0, 0x75, 0xD0, 0xDA, 0xFE, 0x99, 0x60,
+0xDB, 0xC0, 0x57, 0xD0, 0xDC, 0xDE, 0x7B, 0x60, 0xDD, 0xA9, 0x74, 0x50, 0xDE, 0xBE, 0x5D, 0x60,
+0xDF, 0x89, 0x56, 0x50, 0xE0, 0x9E, 0x3F, 0x60, 0xE1, 0x69, 0x38, 0x50, 0xE2, 0x7E, 0x21, 0x60,
+0xE3, 0x49, 0x1A, 0x50, 0xE4, 0x5E, 0x03, 0x60, 0xE5, 0x28, 0xFC, 0x50, 0xE6, 0x47, 0x1F, 0xE0,
+0xE7, 0x12, 0x18, 0xD0, 0xE8, 0x27, 0x01, 0xE0, 0xE9, 0x16, 0xE4, 0xD0, 0xEA, 0x06, 0xE3, 0xE0,
+0xEA, 0xF6, 0xC6, 0xD0, 0xEB, 0xE6, 0xC5, 0xE0, 0xEC, 0xD6, 0xA8, 0xD0, 0xED, 0xC6, 0xA7, 0xE0,
+0xEE, 0xBF, 0xC5, 0x50, 0xEF, 0xAF, 0xC4, 0x60, 0xF0, 0x9F, 0xA7, 0x50, 0xF1, 0x8F, 0xA6, 0x60,
+0xF2, 0x7F, 0x89, 0x50, 0xF3, 0x6F, 0x88, 0x60, 0xF4, 0x5F, 0x6B, 0x50, 0xF5, 0x4F, 0x6A, 0x60,
+0xF6, 0x3F, 0x4D, 0x50, 0xF7, 0x2F, 0x4C, 0x60, 0xF8, 0x28, 0x69, 0xD0, 0xF9, 0x0F, 0x2E, 0x60,
+0xFA, 0x08, 0x4B, 0xD0, 0xFA, 0xF8, 0x4A, 0xE0, 0xFB, 0xE8, 0x2D, 0xD0, 0xFC, 0xD8, 0x2C, 0xE0,
+0xFD, 0xC8, 0x0F, 0xD0, 0xFE, 0xB8, 0x0E, 0xE0, 0xFF, 0xA7, 0xF1, 0xD0, 0x00, 0x97, 0xF0, 0xE0,
+0x01, 0x87, 0xD3, 0xD0, 0x02, 0x77, 0xD2, 0xE0, 0x03, 0x70, 0xF0, 0x50, 0x04, 0x60, 0xEF, 0x60,
+0x05, 0x50, 0xD2, 0x50, 0x08, 0x20, 0xB3, 0x60, 0x09, 0x10, 0x96, 0x50, 0x0A, 0x00, 0x95, 0x60,
+0x0A, 0xF0, 0x78, 0x50, 0x0B, 0xE0, 0x77, 0x60, 0x0C, 0xD9, 0x94, 0xD0, 0x0D, 0xC0, 0x59, 0x60,
+0x0E, 0xB9, 0x76, 0xD0, 0x0F, 0xA9, 0x75, 0xE0, 0x10, 0x99, 0x58, 0xD0, 0x11, 0x89, 0x57, 0xE0,
+0x12, 0x79, 0x3A, 0xD0, 0x13, 0x69, 0x39, 0xE0, 0x14, 0x59, 0x1C, 0xD0, 0x15, 0x49, 0x1B, 0xE0,
+0x16, 0x38, 0xFE, 0xD0, 0x17, 0x28, 0xFD, 0xE0, 0x18, 0x22, 0x1B, 0x50, 0x19, 0x08, 0xDF, 0xE0,
+0x1A, 0x01, 0xFD, 0x50, 0x1A, 0xF1, 0xFC, 0x60, 0x1B, 0xE1, 0xDF, 0x50, 0x1C, 0xD1, 0xDE, 0x60,
+0x1D, 0xC1, 0xC1, 0x50, 0x1E, 0xB1, 0xC0, 0x60, 0x1F, 0xA1, 0xA3, 0x50, 0x20, 0x75, 0xF2, 0xE0,
+0x21, 0x81, 0x85, 0x50, 0x22, 0x55, 0xD4, 0xE0, 0x23, 0x6A, 0xA1, 0xD0, 0x24, 0x35, 0xB6, 0xE0,
+0x25, 0x4A, 0x83, 0xD0, 0x26, 0x15, 0x98, 0xE0, 0x27, 0x2A, 0x65, 0xD0, 0x27, 0xFE, 0xB5, 0x60,
+0x29, 0x0A, 0x47, 0xD0, 0x29, 0xDE, 0x97, 0x60, 0x2A, 0xEA, 0x29, 0xD0, 0x2B, 0xBE, 0x5D, 0x7C,
+0x2C, 0xD3, 0x2A, 0x6C, 0x2D, 0x9E, 0x3F, 0x7C, 0x2E, 0xB3, 0x0C, 0x6C, 0x2F, 0x7E, 0x21, 0x7C,
+0x30, 0x92, 0xEE, 0x6C, 0x31, 0x67, 0x3D, 0xFC, 0x32, 0x72, 0xD0, 0x6C, 0x33, 0x47, 0x1F, 0xFC,
+0x34, 0x52, 0xB2, 0x6C, 0x35, 0x27, 0x01, 0xFC, 0x36, 0x32, 0x94, 0x6C, 0x37, 0x06, 0xE3, 0xFC,
+0x38, 0x1B, 0xB0, 0xEC, 0x38, 0xE6, 0xC5, 0xFC, 0x39, 0xFB, 0x92, 0xEC, 0x3A, 0xC6, 0xA7, 0xFC,
+0x3B, 0xDB, 0x74, 0xEC, 0x3C, 0xAF, 0xC4, 0x7C, 0x3D, 0xBB, 0x56, 0xEC, 0x3E, 0x8F, 0xA6, 0x7C,
+0x3F, 0x9B, 0x38, 0xEC, 0x40, 0x6F, 0x88, 0x7C, 0x41, 0x84, 0x55, 0x6C, 0x42, 0x4F, 0x6A, 0x7C,
+0x43, 0x64, 0x37, 0x6C, 0x44, 0x2F, 0x4C, 0x7C, 0x45, 0x44, 0x19, 0x6C, 0x45, 0xF3, 0x7E, 0xFC,
+0x47, 0x2D, 0x35, 0xEC, 0x47, 0xD3, 0x60, 0xFC, 0x49, 0x0D, 0x17, 0xEC, 0x49, 0xB3, 0x42, 0xFC,
+0x4A, 0xEC, 0xF9, 0xEC, 0x4B, 0x9C, 0x5F, 0x7C, 0x4C, 0xD6, 0x16, 0x6C, 0x4D, 0x7C, 0x41, 0x7C,
+0x4E, 0xB5, 0xF8, 0x6C, 0x4F, 0x5C, 0x23, 0x7C, 0x50, 0x95, 0xDA, 0x6C, 0x51, 0x3C, 0x05, 0x7C,
+0x52, 0x75, 0xBC, 0x6C, 0x53, 0x1B, 0xE7, 0x7C, 0x54, 0x55, 0x9E, 0x6C, 0x54, 0xFB, 0xC9, 0x7C,
+0x56, 0x35, 0x80, 0x6C, 0x56, 0xE4, 0xE5, 0xFC, 0x58, 0x1E, 0x9C, 0xEC, 0x58, 0xC4, 0xC7, 0xFC,
+0x59, 0xFE, 0x7E, 0xEC, 0x5A, 0xA4, 0xA9, 0xFC, 0x5B, 0xDE, 0x60, 0xEC, 0x5C, 0x84, 0x8B, 0xFC,
+0x5D, 0xBE, 0x42, 0xEC, 0x5E, 0x64, 0x6D, 0xFC, 0x5F, 0x9E, 0x24, 0xEC, 0x60, 0x4D, 0x8A, 0x7C,
+0x61, 0x87, 0x41, 0x6C, 0x62, 0x2D, 0x6C, 0x7C, 0x63, 0x67, 0x23, 0x6C, 0x64, 0x0D, 0x4E, 0x7C,
+0x65, 0x47, 0x05, 0x6C, 0x65, 0xED, 0x30, 0x7C, 0x67, 0x26, 0xE7, 0x6C, 0x67, 0xCD, 0x12, 0x7C,
+0x69, 0x06, 0xC9, 0x6C, 0x69, 0xAC, 0xF4, 0x7C, 0x6A, 0xE6, 0xAB, 0x6C, 0x6B, 0x96, 0x10, 0xFC,
+0x6C, 0xCF, 0xC7, 0xEC, 0x6D, 0x75, 0xF2, 0xFC, 0x6E, 0xAF, 0xA9, 0xEC, 0x6F, 0x55, 0xD4, 0xFC,
+0x70, 0x8F, 0x8B, 0xEC, 0x71, 0x35, 0xB6, 0xFC, 0x72, 0x6F, 0x6D, 0xEC, 0x73, 0x15, 0x98, 0xFC,
+0x74, 0x4F, 0x4F, 0xEC, 0x74, 0xFE, 0xB5, 0x7C, 0x76, 0x38, 0x6C, 0x6C, 0x76, 0xDE, 0x97, 0x7C,
+0x78, 0x18, 0x4E, 0x6C, 0x78, 0xBE, 0x79, 0x7C, 0x79, 0xF8, 0x30, 0x6C, 0x7A, 0x9E, 0x5B, 0x7C,
+0x7B, 0xD8, 0x12, 0x6C, 0x7C, 0x7E, 0x3D, 0x7C, 0x7D, 0xB7, 0xF4, 0x6C, 0x7E, 0x5E, 0x1F, 0x7C,
+0x7F, 0x97, 0xD6, 0x6C, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02,
+0x01, 0x02, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF,
+0xC7, 0xC0, 0x00, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10,
+0x45, 0x53, 0x54, 0x00, 0x41, 0x44, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00,
+0x41, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+
/* America/Monterrey */
0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
@@ -6737,23 +6897,23 @@ unsigned char timelib_timezone_db_data_builtin[231213] = {
0x36, 0x8B, 0xF3, 0xE0, 0x37, 0x16, 0x61, 0x60, 0x38, 0x06, 0x44, 0x50, 0x38, 0xFF, 0x7D, 0xE0,
0x39, 0xEF, 0x60, 0xD0, 0x3A, 0xDF, 0x5F, 0xE0, 0x3B, 0xCF, 0x42, 0xD0, 0x3C, 0xBF, 0x41, 0xE0,
0x3D, 0xAF, 0x24, 0xD0, 0x3E, 0x9F, 0x23, 0xE0, 0x3F, 0x8F, 0x06, 0xD0, 0x40, 0x7F, 0x05, 0xE0,
-0x41, 0x5C, 0x81, 0xE0, 0x42, 0x5E, 0xE7, 0xE0, 0x43, 0x41, 0xA9, 0xE0, 0x44, 0x48, 0x04, 0x60,
-0x45, 0x22, 0xDD, 0x60, 0x46, 0x27, 0xE6, 0x60, 0x47, 0x04, 0x10, 0xE0, 0x48, 0x07, 0xC8, 0x60,
-0x48, 0xE6, 0x95, 0xE0, 0x49, 0xE7, 0xAA, 0x60, 0x4A, 0xC7, 0xC9, 0x60, 0x4B, 0xC7, 0x8C, 0x60,
-0x4C, 0xA8, 0xFC, 0xE0, 0x4D, 0xA7, 0x6E, 0x60, 0x4E, 0x8A, 0x30, 0x60, 0x4F, 0x90, 0x8A, 0xE0,
-0x50, 0x6C, 0xB5, 0x60, 0x51, 0x70, 0x6C, 0xE0, 0x52, 0x4D, 0xE8, 0xE0, 0x53, 0x50, 0x4E, 0xE0,
-0x54, 0x2F, 0x1C, 0x60, 0x55, 0x30, 0x30, 0xE0, 0x56, 0x10, 0x4F, 0xE0, 0x57, 0x10, 0x12, 0xE0,
-0x57, 0xF2, 0xD4, 0xE0, 0x58, 0xF9, 0x2F, 0x60, 0x59, 0xD4, 0x08, 0x60, 0x5A, 0xD9, 0x11, 0x60,
-0x5B, 0xB5, 0x3B, 0xE0, 0x5C, 0xB8, 0xF3, 0x60, 0x5D, 0x96, 0x6F, 0x60, 0x5E, 0x98, 0xD5, 0x60,
-0x5F, 0x78, 0xF4, 0x60, 0x60, 0x78, 0xB7, 0x60, 0x61, 0x5A, 0x27, 0xE0, 0x62, 0x58, 0x99, 0x60,
-0x63, 0x3B, 0x5B, 0x60, 0x64, 0x41, 0xB5, 0xE0, 0x65, 0x1C, 0x8E, 0xE0, 0x66, 0x21, 0x97, 0xE0,
-0x66, 0xFF, 0x13, 0xE0, 0x68, 0x01, 0x79, 0xE0, 0x68, 0xE0, 0x47, 0x60, 0x69, 0xE1, 0x5B, 0xE0,
-0x6A, 0xC1, 0x7A, 0xE0, 0x6B, 0xC1, 0x3D, 0xE0, 0x6C, 0xA2, 0xAE, 0x60, 0x6D, 0xAA, 0x5A, 0x60,
-0x6E, 0x85, 0x33, 0x60, 0x6F, 0x8A, 0x3C, 0x60, 0x70, 0x66, 0x66, 0xE0, 0x71, 0x6A, 0x1E, 0x60,
-0x72, 0x47, 0x9A, 0x60, 0x73, 0x4A, 0x00, 0x60, 0x74, 0x28, 0xCD, 0xE0, 0x75, 0x29, 0xE2, 0x60,
-0x76, 0x0B, 0x52, 0xE0, 0x77, 0x09, 0xC4, 0x60, 0x77, 0xEC, 0x86, 0x60, 0x78, 0xF2, 0xE0, 0xE0,
-0x79, 0xCD, 0xB9, 0xE0, 0x7A, 0xD2, 0xC2, 0xE0, 0x7B, 0xAE, 0xED, 0x60, 0x7C, 0xB2, 0xA4, 0xE0,
-0x7D, 0x91, 0x72, 0x60, 0x7E, 0x92, 0x86, 0xE0, 0x7F, 0x72, 0xA5, 0xE0, 0x00, 0x01, 0x00, 0x01,
+0x41, 0x5C, 0x81, 0xE0, 0x42, 0x5E, 0xE7, 0xE0, 0x43, 0x41, 0xB7, 0xF0, 0x44, 0x48, 0x04, 0x60,
+0x45, 0x22, 0xEB, 0x70, 0x46, 0x27, 0xE6, 0x60, 0x47, 0x04, 0x1E, 0xF0, 0x48, 0x07, 0xC8, 0x60,
+0x48, 0xE6, 0xA3, 0xF0, 0x49, 0xE7, 0xAA, 0x60, 0x4A, 0xC7, 0xD7, 0x70, 0x4B, 0xC7, 0x8C, 0x60,
+0x4C, 0xA9, 0x0A, 0xF0, 0x4D, 0xA7, 0x6E, 0x60, 0x4E, 0x8A, 0x3E, 0x70, 0x4F, 0x90, 0x8A, 0xE0,
+0x50, 0x6C, 0xC3, 0x70, 0x51, 0x70, 0x6C, 0xE0, 0x52, 0x4D, 0xF6, 0xF0, 0x53, 0x50, 0x4E, 0xE0,
+0x54, 0x2F, 0x2A, 0x70, 0x55, 0x30, 0x30, 0xE0, 0x56, 0x10, 0x5D, 0xF0, 0x57, 0x10, 0x12, 0xE0,
+0x57, 0xF2, 0xE2, 0xF0, 0x58, 0xF9, 0x2F, 0x60, 0x59, 0xD4, 0x16, 0x70, 0x5A, 0xD9, 0x11, 0x60,
+0x5B, 0xB5, 0x49, 0xF0, 0x5C, 0xB8, 0xF3, 0x60, 0x5D, 0x96, 0x7D, 0x70, 0x5E, 0x98, 0xD5, 0x60,
+0x5F, 0x79, 0x02, 0x70, 0x60, 0x78, 0xB7, 0x60, 0x61, 0x5A, 0x35, 0xF0, 0x62, 0x58, 0x99, 0x60,
+0x63, 0x3B, 0x69, 0x70, 0x64, 0x41, 0xB5, 0xE0, 0x65, 0x1C, 0x9C, 0xF0, 0x66, 0x21, 0x97, 0xE0,
+0x66, 0xFF, 0x21, 0xF0, 0x68, 0x01, 0x79, 0xE0, 0x68, 0xE0, 0x55, 0x70, 0x69, 0xE1, 0x5B, 0xE0,
+0x6A, 0xC1, 0x88, 0xF0, 0x6B, 0xC1, 0x3D, 0xE0, 0x6C, 0xA2, 0xBC, 0x70, 0x6D, 0xAA, 0x5A, 0x60,
+0x6E, 0x85, 0x41, 0x70, 0x6F, 0x8A, 0x3C, 0x60, 0x70, 0x66, 0x74, 0xF0, 0x71, 0x6A, 0x1E, 0x60,
+0x72, 0x47, 0xA8, 0x70, 0x73, 0x4A, 0x00, 0x60, 0x74, 0x28, 0xDB, 0xF0, 0x75, 0x29, 0xE2, 0x60,
+0x76, 0x0B, 0x60, 0xF0, 0x77, 0x09, 0xC4, 0x60, 0x77, 0xEC, 0x94, 0x70, 0x78, 0xF2, 0xE0, 0xE0,
+0x79, 0xCD, 0xC7, 0xF0, 0x7A, 0xD2, 0xC2, 0xE0, 0x7B, 0xAE, 0xFB, 0x70, 0x7C, 0xB2, 0xA4, 0xE0,
+0x7D, 0x91, 0x80, 0x70, 0x7E, 0x92, 0x86, 0xE0, 0x7F, 0x72, 0xB3, 0xF0, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04,
0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04,
@@ -15915,8 +16075,8 @@ unsigned char timelib_timezone_db_data_builtin[231213] = {
/* US/Indiana-Starke */
0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x9E, 0xA6, 0x2C, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x9E, 0xA6, 0x2C, 0x80,
0x9F, 0xBA, 0xF9, 0x70, 0xA0, 0x86, 0x0E, 0x80, 0xA1, 0x9A, 0xDB, 0x70, 0xCB, 0x88, 0xFE, 0x80,
0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x09, 0xF0, 0xD5, 0x55, 0xD5, 0x00, 0xD6, 0x20, 0xCD, 0xF0,
0xD7, 0x35, 0xB7, 0x00, 0xD8, 0x00, 0xAF, 0xF0, 0xD9, 0x15, 0x99, 0x00, 0xD9, 0xE0, 0x91, 0xF0,
@@ -15939,37 +16099,36 @@ unsigned char timelib_timezone_db_data_builtin[231213] = {
0x1E, 0xB1, 0xDC, 0x80, 0x1F, 0xA1, 0xBF, 0x70, 0x20, 0x76, 0x0F, 0x00, 0x21, 0x81, 0xA1, 0x70,
0x22, 0x55, 0xF1, 0x00, 0x23, 0x6A, 0xBD, 0xF0, 0x24, 0x35, 0xD3, 0x00, 0x25, 0x4A, 0x9F, 0xF0,
0x26, 0x15, 0xB5, 0x00, 0x27, 0x2A, 0x81, 0xF0, 0x27, 0xFE, 0xD1, 0x80, 0x29, 0x0A, 0x63, 0xF0,
-0x44, 0x2F, 0x76, 0x70, 0x45, 0x44, 0x43, 0x60, 0x45, 0xF3, 0xA8, 0xF0, 0x47, 0x2D, 0x5F, 0xE0,
-0x47, 0xD3, 0x8A, 0xF0, 0x49, 0x0D, 0x41, 0xE0, 0x49, 0xB3, 0x6C, 0xF0, 0x4A, 0xED, 0x23, 0xE0,
-0x4B, 0x9C, 0x89, 0x70, 0x4C, 0xD6, 0x40, 0x60, 0x4D, 0x7C, 0x6B, 0x70, 0x4E, 0xB6, 0x22, 0x60,
-0x4F, 0x5C, 0x4D, 0x70, 0x50, 0x96, 0x04, 0x60, 0x51, 0x3C, 0x2F, 0x70, 0x52, 0x75, 0xE6, 0x60,
-0x53, 0x1C, 0x11, 0x70, 0x54, 0x55, 0xC8, 0x60, 0x54, 0xFB, 0xF3, 0x70, 0x56, 0x35, 0xAA, 0x60,
-0x56, 0xE5, 0x0F, 0xF0, 0x58, 0x1E, 0xC6, 0xE0, 0x58, 0xC4, 0xF1, 0xF0, 0x59, 0xFE, 0xA8, 0xE0,
-0x5A, 0xA4, 0xD3, 0xF0, 0x5B, 0xDE, 0x8A, 0xE0, 0x5C, 0x84, 0xB5, 0xF0, 0x5D, 0xBE, 0x6C, 0xE0,
-0x5E, 0x64, 0x97, 0xF0, 0x5F, 0x9E, 0x4E, 0xE0, 0x60, 0x4D, 0xB4, 0x70, 0x61, 0x87, 0x6B, 0x60,
-0x62, 0x2D, 0x96, 0x70, 0x63, 0x67, 0x4D, 0x60, 0x64, 0x0D, 0x78, 0x70, 0x65, 0x47, 0x2F, 0x60,
-0x65, 0xED, 0x5A, 0x70, 0x67, 0x27, 0x11, 0x60, 0x67, 0xCD, 0x3C, 0x70, 0x69, 0x06, 0xF3, 0x60,
-0x69, 0xAD, 0x1E, 0x70, 0x6A, 0xE6, 0xD5, 0x60, 0x6B, 0x96, 0x3A, 0xF0, 0x6C, 0xCF, 0xF1, 0xE0,
-0x6D, 0x76, 0x1C, 0xF0, 0x6E, 0xAF, 0xD3, 0xE0, 0x6F, 0x55, 0xFE, 0xF0, 0x70, 0x8F, 0xB5, 0xE0,
-0x71, 0x35, 0xE0, 0xF0, 0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0, 0x74, 0x4F, 0x79, 0xE0,
-0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70, 0x78, 0x18, 0x78, 0x60,
-0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70, 0x7B, 0xD8, 0x3C, 0x60,
-0x7C, 0x7E, 0x67, 0x70, 0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60,
+0x44, 0x2F, 0x76, 0x70, 0x45, 0x44, 0x51, 0x70, 0x45, 0xF3, 0xB7, 0x00, 0x47, 0x2D, 0x6D, 0xF0,
+0x47, 0xD3, 0x99, 0x00, 0x49, 0x0D, 0x4F, 0xF0, 0x49, 0xB3, 0x7B, 0x00, 0x4A, 0xED, 0x31, 0xF0,
+0x4B, 0x9C, 0x97, 0x80, 0x4C, 0xD6, 0x4E, 0x70, 0x4D, 0x7C, 0x79, 0x80, 0x4E, 0xB6, 0x30, 0x70,
+0x4F, 0x5C, 0x5B, 0x80, 0x50, 0x96, 0x12, 0x70, 0x51, 0x3C, 0x3D, 0x80, 0x52, 0x75, 0xF4, 0x70,
+0x53, 0x1C, 0x1F, 0x80, 0x54, 0x55, 0xD6, 0x70, 0x54, 0xFC, 0x01, 0x80, 0x56, 0x35, 0xB8, 0x70,
+0x56, 0xE5, 0x1E, 0x00, 0x58, 0x1E, 0xD4, 0xF0, 0x58, 0xC5, 0x00, 0x00, 0x59, 0xFE, 0xB6, 0xF0,
+0x5A, 0xA4, 0xE2, 0x00, 0x5B, 0xDE, 0x98, 0xF0, 0x5C, 0x84, 0xC4, 0x00, 0x5D, 0xBE, 0x7A, 0xF0,
+0x5E, 0x64, 0xA6, 0x00, 0x5F, 0x9E, 0x5C, 0xF0, 0x60, 0x4D, 0xC2, 0x80, 0x61, 0x87, 0x79, 0x70,
+0x62, 0x2D, 0xA4, 0x80, 0x63, 0x67, 0x5B, 0x70, 0x64, 0x0D, 0x86, 0x80, 0x65, 0x47, 0x3D, 0x70,
+0x65, 0xED, 0x68, 0x80, 0x67, 0x27, 0x1F, 0x70, 0x67, 0xCD, 0x4A, 0x80, 0x69, 0x07, 0x01, 0x70,
+0x69, 0xAD, 0x2C, 0x80, 0x6A, 0xE6, 0xE3, 0x70, 0x6B, 0x96, 0x49, 0x00, 0x6C, 0xCF, 0xFF, 0xF0,
+0x6D, 0x76, 0x2B, 0x00, 0x6E, 0xAF, 0xE1, 0xF0, 0x6F, 0x56, 0x0D, 0x00, 0x70, 0x8F, 0xC3, 0xF0,
+0x71, 0x35, 0xEF, 0x00, 0x72, 0x6F, 0xA5, 0xF0, 0x73, 0x15, 0xD1, 0x00, 0x74, 0x4F, 0x87, 0xF0,
+0x74, 0xFE, 0xED, 0x80, 0x76, 0x38, 0xA4, 0x70, 0x76, 0xDE, 0xCF, 0x80, 0x78, 0x18, 0x86, 0x70,
+0x78, 0xBE, 0xB1, 0x80, 0x79, 0xF8, 0x68, 0x70, 0x7A, 0x9E, 0x93, 0x80, 0x7B, 0xD8, 0x4A, 0x70,
+0x7C, 0x7E, 0x75, 0x80, 0x7D, 0xB8, 0x2C, 0x70, 0x7E, 0x5E, 0x57, 0x80, 0x7F, 0x98, 0x0E, 0x70,
0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
-0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x00, 0xFF,
0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01,
-0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x14, 0x43, 0x44, 0x54,
-0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54,
-0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
-0x00,
+0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x10, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43,
+0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x00,
/* US/Michigan */
0x54, 0x5A, 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -16333,4 +16492,4 @@ unsigned char timelib_timezone_db_data_builtin[231213] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, };
-timelib_tzdb timezonedb_builtin = { "2005.18", 535, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
+timelib_tzdb timezonedb_builtin = { "2006.1", 538, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
diff --git a/ext/date/lib/timezonemap.h b/ext/date/lib/timezonemap.h
index 8916c7993..36b3a876e 100644
--- a/ext/date/lib/timezonemap.h
+++ b/ext/date/lib/timezonemap.h
@@ -13,6 +13,7 @@
{ "adt", 1, -10800, "America/Glace_Bay" },
{ "adt", 1, -10800, "America/Goose_Bay" },
{ "adt", 1, -10800, "America/Martinique" },
+ { "adt", 1, -10800, "America/Moncton" },
{ "adt", 1, -10800, "America/Pangnirtung" },
{ "adt", 1, -10800, "America/Thule" },
{ "adt", 1, -10800, "Atlantic/Bermuda" },
@@ -70,6 +71,7 @@
{ "ant", 0, -16200, "America/Aruba" },
{ "apt", 1, -10800, "America/Halifax" },
{ "apt", 1, -10800, "America/Glace_Bay" },
+ { "apt", 1, -10800, "America/Moncton" },
{ "apt", 1, -10800, "America/Pangnirtung" },
{ "apt", 1, -10800, "Canada/Atlantic" },
{ "aqtst", 1, 18000, "Asia/Aqtau" },
@@ -172,6 +174,7 @@
{ "ast", 0, -14400, "America/Halifax" },
{ "ast", 0, -14400, "America/Martinique" },
{ "ast", 0, -14400, "America/Miquelon" },
+ { "ast", 0, -14400, "America/Moncton" },
{ "ast", 0, -14400, "America/Montserrat" },
{ "ast", 0, -14400, "America/Pangnirtung" },
{ "ast", 0, -14400, "America/Port_of_Spain" },
@@ -193,6 +196,7 @@
{ "ast", 0, 10800, "Asia/Qatar" },
{ "awt", 1, -10800, "America/Halifax" },
{ "awt", 1, -10800, "America/Glace_Bay" },
+ { "awt", 1, -10800, "America/Moncton" },
{ "awt", 1, -10800, "America/Pangnirtung" },
{ "awt", 1, -10800, "America/Puerto_Rico" },
{ "awt", 1, -10800, "Canada/Atlantic" },
@@ -309,7 +313,9 @@
{ "cdt", 1, -18000, "America/Indiana/Indianapolis" },
{ "cdt", 1, -18000, "America/Indiana/Knox" },
{ "cdt", 1, -18000, "America/Indiana/Marengo" },
+ { "cdt", 1, -18000, "America/Indiana/Petersburg" },
{ "cdt", 1, -18000, "America/Indiana/Vevay" },
+ { "cdt", 1, -18000, "America/Indiana/Vincennes" },
{ "cdt", 1, -18000, "America/Indianapolis" },
{ "cdt", 1, -18000, "America/Iqaluit" },
{ "cdt", 1, -18000, "America/Kentucky/Louisville" },
@@ -490,7 +496,9 @@
{ "cpt", 1, -18000, "America/Indiana/Indianapolis" },
{ "cpt", 1, -18000, "America/Indiana/Knox" },
{ "cpt", 1, -18000, "America/Indiana/Marengo" },
+ { "cpt", 1, -18000, "America/Indiana/Petersburg" },
{ "cpt", 1, -18000, "America/Indiana/Vevay" },
+ { "cpt", 1, -18000, "America/Indiana/Vincennes" },
{ "cpt", 1, -18000, "America/Indianapolis" },
{ "cpt", 1, -18000, "America/Kentucky/Louisville" },
{ "cpt", 1, -18000, "America/Kentucky/Monticello" },
@@ -521,7 +529,9 @@
{ "cst", 0, -21600, "America/Indiana/Indianapolis" },
{ "cst", 0, -21600, "America/Indiana/Knox" },
{ "cst", 0, -21600, "America/Indiana/Marengo" },
+ { "cst", 0, -21600, "America/Indiana/Petersburg" },
{ "cst", 0, -21600, "America/Indiana/Vevay" },
+ { "cst", 0, -21600, "America/Indiana/Vincennes" },
{ "cst", 0, -21600, "America/Indianapolis" },
{ "cst", 0, -21600, "America/Iqaluit" },
{ "cst", 0, -21600, "America/Kentucky/Louisville" },
@@ -584,7 +594,9 @@
{ "cwt", 1, -18000, "America/Indiana/Indianapolis" },
{ "cwt", 1, -18000, "America/Indiana/Knox" },
{ "cwt", 1, -18000, "America/Indiana/Marengo" },
+ { "cwt", 1, -18000, "America/Indiana/Petersburg" },
{ "cwt", 1, -18000, "America/Indiana/Vevay" },
+ { "cwt", 1, -18000, "America/Indiana/Vincennes" },
{ "cwt", 1, -18000, "America/Indianapolis" },
{ "cwt", 1, -18000, "America/Kentucky/Louisville" },
{ "cwt", 1, -18000, "America/Kentucky/Monticello" },
@@ -641,15 +653,14 @@
{ "edt", 1, -14400, "America/Fort_Wayne" },
{ "edt", 1, -14400, "America/Grand_Turk" },
{ "edt", 1, -14400, "America/Indiana/Indianapolis" },
- { "edt", 1, -14400, "America/Indiana/Knox" },
{ "edt", 1, -14400, "America/Indiana/Marengo" },
{ "edt", 1, -14400, "America/Indiana/Vevay" },
+ { "edt", 1, -14400, "America/Indiana/Vincennes" },
{ "edt", 1, -14400, "America/Indianapolis" },
{ "edt", 1, -14400, "America/Iqaluit" },
{ "edt", 1, -14400, "America/Jamaica" },
{ "edt", 1, -14400, "America/Kentucky/Louisville" },
{ "edt", 1, -14400, "America/Kentucky/Monticello" },
- { "edt", 1, -14400, "America/Knox_IN" },
{ "edt", 1, -14400, "America/Louisville" },
{ "edt", 1, -14400, "America/Montreal" },
{ "edt", 1, -14400, "America/Nassau" },
@@ -665,7 +676,6 @@
{ "edt", 1, -14400, "Jamaica" },
{ "edt", 1, -14400, "US/East-Indiana" },
{ "edt", 1, -14400, "US/Eastern" },
- { "edt", 1, -14400, "US/Indiana-Starke" },
{ "edt", 1, -14400, "US/Michigan" },
{ "eest", 1, 10800, "Europe/Helsinki" },
{ "eest", 1, 10800, "Africa/Cairo" },
@@ -764,7 +774,9 @@
{ "est", 0, -18000, "America/Indiana/Indianapolis" },
{ "est", 0, -18000, "America/Indiana/Knox" },
{ "est", 0, -18000, "America/Indiana/Marengo" },
+ { "est", 0, -18000, "America/Indiana/Petersburg" },
{ "est", 0, -18000, "America/Indiana/Vevay" },
+ { "est", 0, -18000, "America/Indiana/Vincennes" },
{ "est", 0, -18000, "America/Indianapolis" },
{ "est", 0, -18000, "America/Iqaluit" },
{ "est", 0, -18000, "America/Jamaica" },
@@ -883,7 +895,6 @@
{ "gmt", 0, 0, "Europe/London" },
{ "gmt", 0, 0, "GB" },
{ "gmt", 0, 0, "GB-Eire" },
- { "gmt", 0, 0, "GMT" },
{ "gmt", 0, 0, "Iceland" },
{ "gst", 0, 14400, "Asia/Dubai" },
{ "gst", 0, 14400, "Asia/Bahrain" },
diff --git a/ext/date/lib/tm2unixtime.c b/ext/date/lib/tm2unixtime.c
index 2d97a4061..522578077 100644
--- a/ext/date/lib/tm2unixtime.c
+++ b/ext/date/lib/tm2unixtime.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: tm2unixtime.c,v 1.13.2.2 2006/01/01 12:50:05 sniper Exp $ */
+/* $Id: tm2unixtime.c,v 1.13.2.3 2006/04/11 18:03:52 derick Exp $ */
#include "timelib.h"
@@ -135,6 +135,13 @@ static timelib_sll do_years(timelib_sll year)
{
timelib_sll i;
timelib_sll res = 0;
+ timelib_sll eras;
+
+ eras = (year - 1970) / 400;
+ if (eras != 0) {
+ year = year - (eras * 400);
+ res += (SECS_PER_ERA * eras);
+ }
if (year >= 1970) {
for (i = year - 1; i >= 1970; i--) {
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index a07a4effa..280fd27d7 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_date.c,v 1.43.2.37 2006/01/04 21:31:29 derick Exp $ */
+/* $Id: php_date.c,v 1.43.2.45 2006/04/11 18:03:46 derick Exp $ */
#include "php.h"
#include "php_streams.h"
@@ -51,6 +51,7 @@ zend_function_entry date_functions[] = {
#ifdef EXPERIMENTAL_DATE_SUPPORT
/* Advanced Interface */
PHP_FE(date_create, NULL)
+ PHP_FE(date_parse, NULL)
PHP_FE(date_format, NULL)
PHP_FE(date_modify, NULL)
PHP_FE(date_timezone_get, NULL)
@@ -63,6 +64,7 @@ zend_function_entry date_functions[] = {
PHP_FE(timezone_open, NULL)
PHP_FE(timezone_name_get, NULL)
+ PHP_FE(timezone_name_from_abbr, NULL)
PHP_FE(timezone_offset_get, NULL)
PHP_FE(timezone_transistions_get, NULL)
PHP_FE(timezone_identifiers_list, NULL)
@@ -76,7 +78,7 @@ zend_function_entry date_functions[] = {
/* Astronomical functions */
PHP_FE(date_sunrise, NULL)
PHP_FE(date_sunset, NULL)
-/* PHP_FE(date_sun_info, NULL) */
+ PHP_FE(date_sun_info, NULL)
{NULL, NULL, NULL}
};
@@ -235,6 +237,7 @@ PHP_RSHUTDOWN_FUNCTION(date)
#define DATE_TIMEZONEDB php_date_global_timezone_db ? php_date_global_timezone_db : timelib_builtin_db()
+#define DATE_FORMAT_RFC3339 "Y-m-d\\TH:i:sP"
#define DATE_FORMAT_ISO8601 "Y-m-d\\TH:i:sO"
#define DATE_FORMAT_RFC1036 "l, d-M-y H:i:s T"
#define DATE_FORMAT_RFC1123 "D, d M Y H:i:s T"
@@ -260,7 +263,7 @@ PHP_MINIT_FUNCTION(date)
#ifdef EXPERIMENTAL_DATE_SUPPORT
date_register_classes(TSRMLS_C);
#endif
- REGISTER_STRING_CONSTANT("DATE_ATOM", DATE_FORMAT_ISO8601, CONST_CS | CONST_PERSISTENT);
+ REGISTER_STRING_CONSTANT("DATE_ATOM", DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT);
REGISTER_STRING_CONSTANT("DATE_COOKIE", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT);
REGISTER_STRING_CONSTANT("DATE_ISO8601", DATE_FORMAT_ISO8601, CONST_CS | CONST_PERSISTENT);
REGISTER_STRING_CONSTANT("DATE_RFC822", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT);
@@ -268,8 +271,9 @@ PHP_MINIT_FUNCTION(date)
REGISTER_STRING_CONSTANT("DATE_RFC1036", DATE_FORMAT_RFC1036, CONST_CS | CONST_PERSISTENT);
REGISTER_STRING_CONSTANT("DATE_RFC1123", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT);
REGISTER_STRING_CONSTANT("DATE_RFC2822", DATE_FORMAT_RFC2822, CONST_CS | CONST_PERSISTENT);
+ REGISTER_STRING_CONSTANT("DATE_RFC3339", DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT);
REGISTER_STRING_CONSTANT("DATE_RSS", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT);
- REGISTER_STRING_CONSTANT("DATE_W3C", DATE_FORMAT_ISO8601, CONST_CS | CONST_PERSISTENT);
+ REGISTER_STRING_CONSTANT("DATE_W3C", DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SUNFUNCS_RET_TIMESTAMP", SUNFUNCS_RET_TIMESTAMP, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SUNFUNCS_RET_STRING", SUNFUNCS_RET_STRING, CONST_CS | CONST_PERSISTENT);
@@ -459,6 +463,7 @@ static char *date_format(char *format, int format_len, timelib_time *t, int loca
char buffer[33];
timelib_time_offset *offset;
timelib_sll isoweek, isoyear;
+ int rfc_colon = 0;
if (!format_len) {
return estrdup("");
@@ -537,9 +542,11 @@ static char *date_format(char *format, int format_len, timelib_time *t, int loca
/* timezone */
case 'I': snprintf(buffer, 32, "%d", localtime ? offset->is_dst : 0); break;
- case 'O': snprintf(buffer, 32, "%c%02d%02d",
+ case 'P': rfc_colon = 1; /* break intentionally missing */
+ case 'O': snprintf(buffer, 32, "%c%02d%s%02d",
localtime ? ((offset->offset < 0) ? '-' : '+') : '+',
localtime ? abs(offset->offset / 3600) : 0,
+ rfc_colon ? ":" : "",
localtime ? abs((offset->offset % 3600) / 60) : 0
);
break;
@@ -786,17 +793,17 @@ PHPAPI void php_date_set_tzdb(timelib_tzdb *tzdb)
/* }}} */
/* {{{ php_parse_date: Backwards compability function */
-signed long php_parse_date(char *string, signed long *now)
+PHPAPI signed long php_parse_date(char *string, signed long *now)
{
timelib_time *parsed_time;
- int error1, error2;
+ int error2;
signed long retval;
- parsed_time = timelib_strtotime(string, strlen(string), &error1, DATE_TIMEZONEDB);
+ parsed_time = timelib_strtotime(string, strlen(string), NULL, DATE_TIMEZONEDB);
timelib_update_ts(parsed_time, NULL);
retval = timelib_date_to_int(parsed_time, &error2);
timelib_time_dtor(parsed_time);
- if (error1 || error2) {
+ if (error2) {
return -1;
}
return retval;
@@ -804,12 +811,13 @@ signed long php_parse_date(char *string, signed long *now)
/* }}} */
-/* {{{ proto int strtotime(string time, int now)
+/* {{{ proto int strtotime(string time [, int now ])
Convert string representation of date and time to a timestamp */
PHP_FUNCTION(strtotime)
{
char *times, *initial_ts;
int time_len, error1, error2;
+ struct timelib_error_container *error;
long preset_ts, ts;
timelib_time *t, *now;
@@ -822,8 +830,8 @@ PHP_FUNCTION(strtotime)
now = timelib_time_ctor();
initial_ts = emalloc(25);
- snprintf(initial_ts, 24, "@%lu", preset_ts);
- t = timelib_strtotime(initial_ts, strlen(initial_ts), &error1, DATE_TIMEZONEDB); /* we ignore the error here, as this should never fail */
+ snprintf(initial_ts, 24, "@%ld", preset_ts);
+ t = timelib_strtotime(initial_ts, strlen(initial_ts), NULL, DATE_TIMEZONEDB); /* we ignore the error here, as this should never fail */
timelib_update_ts(t, tzi);
now->tz_info = tzi;
now->zone_type = TIMELIB_ZONETYPE_ID;
@@ -840,7 +848,9 @@ PHP_FUNCTION(strtotime)
RETURN_FALSE;
}
- t = timelib_strtotime(times, time_len, &error1, DATE_TIMEZONEDB);
+ t = timelib_strtotime(times, time_len, &error, DATE_TIMEZONEDB);
+ error1 = error->error_count;
+ timelib_error_container_dtor(error);
timelib_fill_holes(t, now, 0);
timelib_update_ts(t, tzi);
ts = timelib_date_to_int(t, &error2);
@@ -1198,7 +1208,7 @@ static void date_register_classes(TSRMLS_D)
#define REGISTER_DATE_CLASS_CONST_STRING(const_name, value) \
zend_declare_class_constant_stringl(date_ce_date, const_name, sizeof(const_name)-1, value, sizeof(value)-1 TSRMLS_CC);
- REGISTER_DATE_CLASS_CONST_STRING("ATOM", DATE_FORMAT_ISO8601);
+ REGISTER_DATE_CLASS_CONST_STRING("ATOM", DATE_FORMAT_RFC3339);
REGISTER_DATE_CLASS_CONST_STRING("COOKIE", DATE_FORMAT_RFC1123);
REGISTER_DATE_CLASS_CONST_STRING("ISO8601", DATE_FORMAT_ISO8601);
REGISTER_DATE_CLASS_CONST_STRING("RFC822", DATE_FORMAT_RFC1123);
@@ -1206,6 +1216,7 @@ static void date_register_classes(TSRMLS_D)
REGISTER_DATE_CLASS_CONST_STRING("RFC1036", DATE_FORMAT_RFC1036);
REGISTER_DATE_CLASS_CONST_STRING("RFC1123", DATE_FORMAT_RFC1123);
REGISTER_DATE_CLASS_CONST_STRING("RFC2822", DATE_FORMAT_RFC2822);
+ REGISTER_DATE_CLASS_CONST_STRING("RFC3339", DATE_FORMAT_RFC3339);
REGISTER_DATE_CLASS_CONST_STRING("RSS", DATE_FORMAT_RFC1123);
REGISTER_DATE_CLASS_CONST_STRING("W3C", DATE_FORMAT_ISO8601);
@@ -1225,10 +1236,8 @@ static zend_object_value date_object_new_date(zend_class_entry *class_type TSRML
intern = emalloc(sizeof(php_date_obj));
memset(intern, 0, sizeof(php_date_obj));
- intern->std.ce = class_type;
- ALLOC_HASHTABLE(intern->std.properties);
- zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ zend_object_std_init(&intern->std, class_type TSRMLS_CC);
zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t) date_object_free_storage_date, NULL TSRMLS_CC);
@@ -1245,10 +1254,8 @@ static zend_object_value date_object_new_timezone(zend_class_entry *class_type T
intern = emalloc(sizeof(php_timezone_obj));
memset(intern, 0, sizeof(php_timezone_obj));
- intern->std.ce = class_type;
- ALLOC_HASHTABLE(intern->std.properties);
- zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ zend_object_std_init(&intern->std, class_type TSRMLS_CC);
zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t) date_object_free_storage_timezone, NULL TSRMLS_CC);
@@ -1268,12 +1275,7 @@ static void date_object_free_storage_date(void *object TSRMLS_DC)
timelib_time_dtor(intern->time);
}
- if (intern->std.properties) {
- zend_hash_destroy(intern->std.properties);
- efree(intern->std.properties);
- intern->std.properties = NULL;
- }
-
+ zend_object_std_dtor(&intern->std TSRMLS_CC);
efree(object);
}
@@ -1281,12 +1283,7 @@ static void date_object_free_storage_timezone(void *object TSRMLS_DC)
{
php_timezone_obj *intern = (php_timezone_obj *)object;
- if (intern->std.properties) {
- zend_hash_destroy(intern->std.properties);
- efree(intern->std.properties);
- intern->std.properties = NULL;
- }
-
+ zend_object_std_dtor(&intern->std TSRMLS_CC);
efree(object);
}
@@ -1308,7 +1305,6 @@ PHP_FUNCTION(date_create)
{
php_date_obj *dateobj;
zval *timezone_object = NULL;
- int error;
timelib_time *now;
timelib_tzinfo *tzi;
char *time_str;
@@ -1320,7 +1316,7 @@ PHP_FUNCTION(date_create)
date_instanciate(date_ce_date, return_value TSRMLS_CC);
dateobj = (php_date_obj *) zend_object_store_get_object(return_value TSRMLS_CC);
- dateobj->time = timelib_strtotime(time_str_len ? time_str : "now", time_str_len ? time_str_len : sizeof("now") -1, &error, DATE_TIMEZONEDB);
+ dateobj->time = timelib_strtotime(time_str_len ? time_str : "now", time_str_len ? time_str_len : sizeof("now") -1, NULL, DATE_TIMEZONEDB);
if (timezone_object) {
php_timezone_obj *tzobj;
@@ -1352,6 +1348,101 @@ PHP_FUNCTION(date_create)
timelib_time_dtor(now);
}
+PHP_FUNCTION(date_parse)
+{
+ char *date;
+ int date_len, i;
+ struct timelib_error_container *error;
+ timelib_time *parsed_time;
+ zval *element;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &date, &date_len) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ parsed_time = timelib_strtotime(date, date_len, &error, DATE_TIMEZONEDB);
+ array_init(return_value);
+#define PHP_DATE_PARSE_DATE_SET_TIME_ELEMENT(name, elem) \
+ if (parsed_time->elem == -1) { \
+ add_assoc_bool(return_value, #name, 0); \
+ } else { \
+ add_assoc_long(return_value, #name, parsed_time->elem); \
+ }
+ PHP_DATE_PARSE_DATE_SET_TIME_ELEMENT(year, y);
+ PHP_DATE_PARSE_DATE_SET_TIME_ELEMENT(month, m);
+ PHP_DATE_PARSE_DATE_SET_TIME_ELEMENT(day, d);
+ PHP_DATE_PARSE_DATE_SET_TIME_ELEMENT(hour, h);
+ PHP_DATE_PARSE_DATE_SET_TIME_ELEMENT(minute, i);
+ PHP_DATE_PARSE_DATE_SET_TIME_ELEMENT(second, s);
+
+ if (parsed_time->f == -1) {
+ add_assoc_bool(return_value, "fraction", 0);
+ } else {
+ add_assoc_double(return_value, "fraction", parsed_time->f);
+ }
+
+ add_assoc_long(return_value, "warning_count", error->warning_count);
+ MAKE_STD_ZVAL(element);
+ array_init(element);
+ for (i = 0; i < error->warning_count; i++) {
+ add_index_string(element, error->warning_messages[i].position, error->warning_messages[i].message, 1);
+ }
+ add_assoc_zval(return_value, "warnings", element);
+
+ add_assoc_long(return_value, "error_count", error->error_count);
+ MAKE_STD_ZVAL(element);
+ array_init(element);
+ for (i = 0; i < error->error_count; i++) {
+ add_index_string(element, error->error_messages[i].position, error->error_messages[i].message, 1);
+ }
+ add_assoc_zval(return_value, "errors", element);
+ timelib_error_container_dtor(error);
+
+ add_assoc_bool(return_value, "is_localtime", parsed_time->is_localtime);
+
+ if (parsed_time->is_localtime) {
+ PHP_DATE_PARSE_DATE_SET_TIME_ELEMENT(zone_type, zone_type);
+ switch (parsed_time->zone_type) {
+ case TIMELIB_ZONETYPE_OFFSET:
+ PHP_DATE_PARSE_DATE_SET_TIME_ELEMENT(zone, z);
+ add_assoc_bool(return_value, "is_dst", parsed_time->dst);
+ break;
+ case TIMELIB_ZONETYPE_ID:
+ if (parsed_time->tz_abbr) {
+ add_assoc_string(return_value, "tz_abbr", parsed_time->tz_abbr, 1);
+ }
+ if (parsed_time->tz_info) {
+ add_assoc_string(return_value, "tz_id", parsed_time->tz_info->name, 1);
+ }
+ break;
+ case TIMELIB_ZONETYPE_ABBR:
+ PHP_DATE_PARSE_DATE_SET_TIME_ELEMENT(zone, z);
+ add_assoc_bool(return_value, "is_dst", parsed_time->dst);
+ add_assoc_string(return_value, "tz_abbr", parsed_time->tz_abbr, 1);
+ break;
+ }
+ }
+ if (parsed_time->have_relative || parsed_time->have_weekday_relative) {
+ MAKE_STD_ZVAL(element);
+ array_init(element);
+ }
+ if (parsed_time->have_relative) {
+ add_assoc_long(element, "year", parsed_time->relative.y);
+ add_assoc_long(element, "month", parsed_time->relative.m);
+ add_assoc_long(element, "day", parsed_time->relative.d);
+ add_assoc_long(element, "hour", parsed_time->relative.h);
+ add_assoc_long(element, "minute", parsed_time->relative.i);
+ add_assoc_long(element, "second", parsed_time->relative.s);
+ }
+ if (parsed_time->have_weekday_relative) {
+ add_assoc_long(element, "weekday", parsed_time->relative.weekday);
+ }
+ if (parsed_time->have_relative || parsed_time->have_weekday_relative) {
+ add_assoc_zval(return_value, "relative", element);
+ }
+ timelib_time_dtor(parsed_time);
+}
+
PHP_FUNCTION(date_format)
{
zval *object;
@@ -1372,7 +1463,6 @@ PHP_FUNCTION(date_modify)
php_date_obj *dateobj;
char *modify;
int modify_len;
- int error;
timelib_time *tmp_time;
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &object, date_ce_date, &modify, &modify_len) == FAILURE) {
@@ -1380,7 +1470,7 @@ PHP_FUNCTION(date_modify)
}
dateobj = (php_date_obj *) zend_object_store_get_object(object TSRMLS_CC);
- tmp_time = timelib_strtotime(modify, modify_len, &error, DATE_TIMEZONEDB);
+ tmp_time = timelib_strtotime(modify, modify_len, NULL, DATE_TIMEZONEDB);
dateobj->time->relative.y = tmp_time->relative.y;
dateobj->time->relative.m = tmp_time->relative.m;
dateobj->time->relative.d = tmp_time->relative.d;
@@ -1553,6 +1643,26 @@ PHP_FUNCTION(timezone_name_get)
RETURN_STRING(tzobj->tz->name, 1);
}
+PHP_FUNCTION(timezone_name_from_abbr)
+{
+ char *abbr;
+ char *tzname;
+ int abbr_len;
+ long gmtoffset = -1;
+ long isdst = -1;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &abbr, &abbr_len, &gmtoffset, &isdst) == FAILURE) {
+ RETURN_FALSE;
+ }
+ tzname = timelib_timezone_id_from_abbr(abbr, gmtoffset, isdst);
+
+ if (tzname) {
+ RETURN_STRING(tzname, 1);
+ } else {
+ RETURN_FALSE;
+ }
+}
+
PHP_FUNCTION(timezone_offset_get)
{
zval *object, *dateobject;
@@ -1741,7 +1851,8 @@ static void php_do_date_sunrise_sunset(INTERNAL_FUNCTION_PARAMETERS, int calc_su
timelib_unixtime2local(t, time);
rs = timelib_astro_rise_set_altitude(t, longitude, latitude, altitude, altitude > -1 ? 1 : 0, &h_rise, &h_set, &rise, &set, &transit);
-
+ timelib_time_dtor(t);
+
if (rs != 0) {
RETURN_FALSE;
}
@@ -1884,6 +1995,8 @@ PHP_FUNCTION(date_sun_info)
t2->sse = set;
add_assoc_long(return_value, "astronomical_twilight_end", timelib_date_to_int(t2, &dummy));
}
+ timelib_time_dtor(t);
+ timelib_time_dtor(t2);
}
/* }}} */
/*
diff --git a/ext/date/php_date.h b/ext/date/php_date.h
index 8f57f1f49..57ac98211 100644
--- a/ext/date/php_date.h
+++ b/ext/date/php_date.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_date.h,v 1.17.2.9 2006/01/04 21:31:29 derick Exp $ */
+/* $Id: php_date.h,v 1.17.2.11 2006/04/11 18:03:46 derick Exp $ */
#ifndef PHP_DATE_H
#define PHP_DATE_H
@@ -49,6 +49,7 @@ PHP_FUNCTION(getdate);
#ifdef EXPERIMENTAL_DATE_SUPPORT
/* Advanced Interface */
PHP_FUNCTION(date_create);
+PHP_FUNCTION(date_parse);
PHP_FUNCTION(date_format);
PHP_FUNCTION(date_modify);
PHP_FUNCTION(date_timezone_get);
@@ -61,6 +62,7 @@ PHP_FUNCTION(date_isodate_set);
PHP_FUNCTION(timezone_open);
PHP_FUNCTION(timezone_name_get);
+PHP_FUNCTION(timezone_name_from_abbr);
PHP_FUNCTION(timezone_offset_get);
PHP_FUNCTION(timezone_transistions_get);
PHP_FUNCTION(timezone_identifiers_list);
@@ -95,7 +97,7 @@ ZEND_END_MODULE_GLOBALS(date)
#endif
/* Backwards compability wrapper */
-signed long php_parse_date(char *string, signed long *now);
+PHPAPI signed long php_parse_date(char *string, signed long *now);
PHPAPI void php_mktime(INTERNAL_FUNCTION_PARAMETERS, int gmt);
PHPAPI int php_idate(char format, time_t ts, int localtime);
#if HAVE_STRFTIME
diff --git a/ext/date/tests/bug26317.phpt b/ext/date/tests/bug26317.phpt
index c889666dc..aef29035e 100644
--- a/ext/date/tests/bug26317.phpt
+++ b/ext/date/tests/bug26317.phpt
@@ -1,6 +1,6 @@
--TEST--
Bug #26317 (military timezone offset signedness)
---SKIP--
+--SKIPIF--
if (!@putenv("TZ=GMT0") || getenv("TZ") != 'GMT0') {
die("skip unable to change TZ enviroment variable\n");
}
diff --git a/ext/date/tests/bug26320.phpt b/ext/date/tests/bug26320.phpt
index b57712009..5b237cadb 100644
--- a/ext/date/tests/bug26320.phpt
+++ b/ext/date/tests/bug26320.phpt
@@ -1,6 +1,6 @@
--TEST--
Bug #26320 (strtotime handling of XML Schema/ISO 8601 format)
---SKIP--
+--SKIPIF--
if (!@putenv("TZ=GMT0") || getenv("TZ") != 'GMT0') {
die("skip unable to change TZ enviroment variable\n");
}
@@ -12,4 +12,4 @@ if (!@putenv("TZ=GMT0") || getenv("TZ") != 'GMT0') {
?>
--EXPECT--
2003-11-19 12:30:42
-2003-11-19 12:30:42 \ No newline at end of file
+2003-11-19 12:30:42
diff --git a/ext/date/tests/bug36224.phpt b/ext/date/tests/bug36224.phpt
new file mode 100644
index 000000000..1690f4e7b
--- /dev/null
+++ b/ext/date/tests/bug36224.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Bug #36224 (date(DATE_ATOM) gives wrong resulsts)
+--FILE--
+<?php
+date_default_timezone_set("Europe/Oslo");
+
+echo date(DATE_ATOM, strtotime('2006-01-31T19:23:56Z')) . "\n";
+echo date(DATE_ATOM, strtotime('2006-01-31T19:23:56')) . "\n";
+
+?>
+--EXPECT--
+2006-01-31T20:23:56+01:00
+2006-01-31T19:23:56+01:00
diff --git a/ext/date/tests/bug36510.phpt b/ext/date/tests/bug36510.phpt
new file mode 100644
index 000000000..ea8bb028b
--- /dev/null
+++ b/ext/date/tests/bug36510.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Bug #36510 (strtotime() fails to parse date strings with tabs)
+--FILE--
+<?php
+date_default_timezone_set("UTC");
+
+$t = 1140973388;
+
+var_dump(strtotime("-2 hours", $t));
+var_dump(strtotime("-2\thours", $t));
+?>
+--EXPECT--
+int(1140966188)
+int(1140966188)
diff --git a/ext/date/tests/bug36599.phpt b/ext/date/tests/bug36599.phpt
new file mode 100644
index 000000000..b34a7c288
--- /dev/null
+++ b/ext/date/tests/bug36599.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Bug #36599 (DATE_W3C format constant incorrect).
+--FILE--
+<?php
+date_default_timezone_set("UTC");
+
+echo date( DATE_ATOM, strtotime( "2006-03-03 08:47:55" ) ), "\n";
+echo date( DATE_W3C, strtotime( "2006-03-03 08:47:55" ) ), "\n";
+?>
+--EXPECT--
+2006-03-03T08:47:55+00:00
+2006-03-03T08:47:55+00:00
diff --git a/ext/date/tests/bug36988.phpt b/ext/date/tests/bug36988.phpt
new file mode 100644
index 000000000..d35e58939
--- /dev/null
+++ b/ext/date/tests/bug36988.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Bug #36988 (mktime freezes on long numbers)
+--INI--
+date.timezone=GMT
+--FILE--
+<?php
+$start = microtime(true);
+$a = mktime(1, 1, 1, 1, 1, 11111111111);
+echo (microtime(true) - $start) < 1 ? "smaller than one second" : "more than a second";
+?>
+--EXPECT--
+smaller than one second
diff --git a/ext/date/tests/bug37017.phpt b/ext/date/tests/bug37017.phpt
new file mode 100644
index 000000000..61dc8ba38
--- /dev/null
+++ b/ext/date/tests/bug37017.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Bug #37017 (strtotime fails before 13:00:00 with some time zones identifiers).
+--INI--
+date.timezone=GMT
+--FILE--
+<?php
+echo strtotime("2006-05-12 13:00:01 America/New_York"), "\n";
+echo strtotime("2006-05-12 13:00:00 America/New_York"), "\n";
+echo strtotime("2006-05-12 12:59:59 America/New_York"), "\n";
+echo strtotime("2006-05-12 12:59:59 GMT"), "\n";
+?>
+--EXPECT--
+1147453201
+1147453200
+1147453199
+1147438799
diff --git a/ext/dba/dba_db4.c b/ext/dba/dba_db4.c
index 79c1e80b6..25e66ab0f 100644
--- a/ext/dba/dba_db4.c
+++ b/ext/dba/dba_db4.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba_db4.c,v 1.15.2.2 2006/01/01 12:50:05 sniper Exp $ */
+/* $Id: dba_db4.c,v 1.15.2.3 2006/02/18 17:11:06 helly Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -139,9 +139,15 @@ DBA_FETCH_FUNC(db4)
DB4_GKEY;
memset(&gval, 0, sizeof(gval));
+ if (info->flags & DBA_PERSISTENT) {
+ gval.flags |= DB_DBT_MALLOC;
+ }
if (!dba->dbp->get(dba->dbp, NULL, &gkey, &gval, 0)) {
if (newlen) *newlen = gval.size;
new = estrndup(gval.data, gval.size);
+ if (info->flags & DBA_PERSISTENT) {
+ free(gval.data);
+ }
}
return new;
}
@@ -210,11 +216,23 @@ DBA_NEXTKEY_FUNC(db4)
memset(&gkey, 0, sizeof(gkey));
memset(&gval, 0, sizeof(gval));
+ if (info->flags & DBA_PERSISTENT) {
+ gkey.flags |= DB_DBT_MALLOC;
+ gval.flags |= DB_DBT_MALLOC;
+ }
if (dba->cursor->c_get(dba->cursor, &gkey, &gval, DB_NEXT) == 0) {
if (gkey.data) {
nkey = estrndup(gkey.data, gkey.size);
if (newlen) *newlen = gkey.size;
}
+ if (info->flags & DBA_PERSISTENT) {
+ if (gkey.data) {
+ free(gkey.data);
+ }
+ if (gval.data) {
+ free(gval.data);
+ }
+ }
}
return nkey;
diff --git a/ext/dba/tests/bug36436.phpt b/ext/dba/tests/bug36436.phpt
new file mode 100755
index 000000000..e85cf8528
--- /dev/null
+++ b/ext/dba/tests/bug36436.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Bug #36436 DBA problem with Berkeley DB4
+--SKIPIF--
+<?php
+ $handler = 'db4';
+ require_once('skipif.inc');
+?>
+--FILE--
+<?php
+
+$handler = 'db4';
+require_once('test.inc');
+
+$db = dba_popen($db_filename, 'c', 'db4');
+
+dba_insert('X', 'XYZ', $db);
+dba_insert('Y', '123', $db);
+
+var_dump($db, dba_fetch('X', $db));
+
+var_dump(dba_firstkey($db));
+var_dump(dba_nextkey($db));
+
+dba_close($db);
+unlink($db_filename);
+
+?>
+===DONE===
+--EXPECTF--
+resource(%d) of type (dba persistent)
+string(3) "XYZ"
+string(1) "X"
+string(1) "Y"
+===DONE===
diff --git a/ext/dbase/dbf_head.c b/ext/dbase/dbf_head.c
index 9ec1f40d6..f45a99cfd 100644
--- a/ext/dbase/dbf_head.c
+++ b/ext/dbase/dbf_head.c
@@ -24,7 +24,7 @@ dbhead_t *get_dbf_head(int fd)
dbfield_t *dbf, *cur_f, *tdbf;
int ret, nfields, offset, gf_retval;
- if ((dbh = (dbhead_t *)malloc(sizeof(dbhead_t))) == NULL)
+ if ((dbh = (dbhead_t *)calloc(1, sizeof(dbhead_t))) == NULL)
return NULL;
if (lseek(fd, 0, 0) < 0)
return NULL;
@@ -44,7 +44,7 @@ dbhead_t *get_dbf_head(int fd)
/* malloc enough memory for the maximum number of fields:
32 * 1024 = 32K dBase5 (for Win) seems to allow that many */
- tdbf = (dbfield_t *)malloc(sizeof(dbfield_t)*1024);
+ tdbf = (dbfield_t *)calloc(1, sizeof(dbfield_t)*1024);
offset = 1;
nfields = 0;
@@ -157,7 +157,8 @@ int get_dbf_field(dbhead_t *dbh, dbfield_t *dbf)
}
if ((dbf->db_format = get_dbf_f_fmt(dbf)) == NULL) {
- return 1;
+ /* something went wrong, most likely this fieldtype is not supported */
+ return -1;
}
return 0;
@@ -235,6 +236,8 @@ char *get_dbf_f_fmt(dbfield_t *dbf)
case 'M':
strcpy(format, "%s");
break;
+ default:
+ return NULL;
}
return (char *)strdup(format);
}
@@ -256,7 +259,7 @@ dbhead_t *dbf_open(char *dp, int o_flags TSRMLS_DC)
}
}
- if ((dbh = get_dbf_head(fd)) == 0) {
+ if ((dbh = get_dbf_head(fd)) == NULL) {
fprintf(stderr, "Unable to get header\n");
return NULL;
}
diff --git a/ext/dom/attr.c b/ext/dom/attr.c
index 75121b0a6..7d1642e62 100644
--- a/ext/dom/attr.c
+++ b/ext/dom/attr.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: attr.c,v 1.18.2.1 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: attr.c,v 1.18.2.2 2006/05/03 08:43:04 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -77,7 +77,7 @@ PHP_METHOD(domattr, __construct)
}
if (intern != NULL) {
- oldnode = (xmlNodePtr)intern->ptr;
+ oldnode = dom_object_get_node(intern);
if (oldnode != NULL) {
php_libxml_node_free_resource(oldnode TSRMLS_CC);
}
diff --git a/ext/dom/dom_iterators.c b/ext/dom/dom_iterators.c
index ef01536c7..862da4dc7 100644
--- a/ext/dom/dom_iterators.c
+++ b/ext/dom/dom_iterators.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dom_iterators.c,v 1.9.2.2 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: dom_iterators.c,v 1.9.2.3 2006/03/03 20:15:10 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -200,7 +200,8 @@ static void php_dom_iterator_move_forward(zend_object_iterator *iter TSRMLS_DC)
curobj = iterator->curobj;
intern = (dom_object *)zend_object_store_get_object(curobj TSRMLS_CC);
if (intern != NULL && intern->ptr != NULL) {
- if (objmap->ht == NULL) {
+ if (objmap->nodetype != XML_ENTITY_NODE &&
+ objmap->nodetype != XML_NOTATION_NODE) {
if (objmap->nodetype == DOM_NODESET) {
nodeht = HASH_OF(objmap->baseobjptr);
zend_hash_move_forward(nodeht);
@@ -210,12 +211,14 @@ static void php_dom_iterator_move_forward(zend_object_iterator *iter TSRMLS_DC)
}
} else {
curnode = (xmlNodePtr)((php_libxml_node_ptr *)intern->ptr)->node;
- if (objmap->nodetype == XML_ATTRIBUTE_NODE || objmap->nodetype == XML_ELEMENT_NODE) {
+ if (objmap->nodetype == XML_ATTRIBUTE_NODE ||
+ objmap->nodetype == XML_ELEMENT_NODE) {
curnode = curnode->next;
} else {
/* Nav the tree evey time as this is LIVE */
basenode = dom_object_get_node(objmap->baseobj);
- if (basenode && (basenode->type == XML_DOCUMENT_NODE || basenode->type == XML_HTML_DOCUMENT_NODE)) {
+ if (basenode && (basenode->type == XML_DOCUMENT_NODE ||
+ basenode->type == XML_HTML_DOCUMENT_NODE)) {
basenode = xmlDocGetRootElement((xmlDoc *) basenode);
} else {
basenode = basenode->children;
@@ -225,9 +228,9 @@ static void php_dom_iterator_move_forward(zend_object_iterator *iter TSRMLS_DC)
}
} else {
if (objmap->nodetype == XML_ENTITY_NODE) {
- curnode = php_dom_libxml_hash_iter(objmap->ht, iter->index);
+ curnode = php_dom_libxml_hash_iter(objmap->ht, iter->index - 1);
} else {
- curnode = php_dom_libxml_notation_iter(objmap->ht, iter->index);
+ curnode = php_dom_libxml_notation_iter(objmap->ht, iter->index - 1);
}
}
}
@@ -269,7 +272,8 @@ zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object TS
intern = (dom_object *)zend_object_store_get_object(object TSRMLS_CC);
objmap = (dom_nnodemap_object *)intern->ptr;
if (objmap != NULL) {
- if (objmap->ht == NULL) {
+ if (objmap->nodetype != XML_ENTITY_NODE &&
+ objmap->nodetype != XML_NOTATION_NODE) {
if (objmap->nodetype == DOM_NODESET) {
nodeht = HASH_OF(objmap->baseobjptr);
zend_hash_internal_pointer_reset(nodeht);
@@ -295,7 +299,11 @@ zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object TS
}
}
} else {
- curnode = php_dom_libxml_hash_iter(objmap->ht, 0);
+ if (objmap->nodetype == XML_ENTITY_NODE) {
+ curnode = php_dom_libxml_hash_iter(objmap->ht, 0);
+ } else {
+ curnode = php_dom_libxml_notation_iter(objmap->ht, 0);
+ }
}
}
diff --git a/ext/dom/domimplementation.c b/ext/dom/domimplementation.c
index 02c9d1e40..66adb568a 100644
--- a/ext/dom/domimplementation.c
+++ b/ext/dom/domimplementation.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: domimplementation.c,v 1.15.2.1 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: domimplementation.c,v 1.15.2.2 2006/02/24 10:19:54 mike Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -92,7 +92,7 @@ PHP_METHOD(domimplementation, createDocumentType)
pch2 = systemid;
uri = xmlParseURI(name);
- if (uri->opaque != NULL) {
+ if (uri != NULL && uri->opaque != NULL) {
localname = xmlStrdup(uri->opaque);
if (xmlStrchr(localname, (xmlChar) ':') != NULL) {
php_dom_throw_error(NAMESPACE_ERR, 1 TSRMLS_CC);
@@ -108,7 +108,9 @@ PHP_METHOD(domimplementation, createDocumentType)
php_dom_throw_error(INVALID_CHARACTER_ERR, TSRMLS_CC);
*/
- xmlFreeURI(uri);
+ if (uri) {
+ xmlFreeURI(uri);
+ }
doctype = xmlCreateIntSubset(NULL, localname, pch1, pch2);
xmlFree(localname);
diff --git a/ext/dom/element.c b/ext/dom/element.c
index d021d5aba..2be0e8f31 100644
--- a/ext/dom/element.c
+++ b/ext/dom/element.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: element.c,v 1.36.2.3 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: element.c,v 1.36.2.4 2006/05/03 08:43:04 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -128,7 +128,7 @@ PHP_METHOD(domelement, __construct)
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
if (intern != NULL) {
- oldnode = (xmlNodePtr)intern->ptr;
+ oldnode = dom_object_get_node(intern);
if (oldnode != NULL) {
php_libxml_node_free_resource(oldnode TSRMLS_CC);
}
diff --git a/ext/dom/namednodemap.c b/ext/dom/namednodemap.c
index 92573fafa..478a4c40b 100644
--- a/ext/dom/namednodemap.c
+++ b/ext/dom/namednodemap.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: namednodemap.c,v 1.15.2.1 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: namednodemap.c,v 1.15.2.2 2006/03/03 20:15:10 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -61,8 +61,11 @@ int dom_namednodemap_length_read(dom_object *obj, zval **retval TSRMLS_DC)
objmap = (dom_nnodemap_object *)obj->ptr;
if (objmap != NULL) {
- if (objmap->ht) {
- count = xmlHashSize(objmap->ht);
+ if ((objmap->nodetype == XML_NOTATION_NODE) ||
+ objmap->nodetype == XML_ENTITY_NODE) {
+ if (objmap->ht) {
+ count = xmlHashSize(objmap->ht);
+ }
} else {
nodep = dom_object_get_node(objmap->baseobj);
if (nodep) {
@@ -113,12 +116,17 @@ PHP_FUNCTION(dom_namednodemap_get_named_item)
objmap = (dom_nnodemap_object *)intern->ptr;
if (objmap != NULL) {
- if (objmap->ht) {
- if (objmap->nodetype == XML_ENTITY_NODE) {
- itemnode = (xmlNodePtr)xmlHashLookup(objmap->ht, named);
- } else {
- notep = (xmlNotation *)xmlHashLookup(objmap->ht, named);
- itemnode = create_notation(notep->name, notep->PublicID, notep->SystemID);
+ if ((objmap->nodetype == XML_NOTATION_NODE) ||
+ objmap->nodetype == XML_ENTITY_NODE) {
+ if (objmap->ht) {
+ if (objmap->nodetype == XML_ENTITY_NODE) {
+ itemnode = (xmlNodePtr)xmlHashLookup(objmap->ht, named);
+ } else {
+ notep = (xmlNotation *)xmlHashLookup(objmap->ht, named);
+ if (notep) {
+ itemnode = create_notation(notep->name, notep->PublicID, notep->SystemID);
+ }
+ }
}
} else {
nodep = dom_object_get_node(objmap->baseobj);
@@ -185,11 +193,14 @@ PHP_FUNCTION(dom_namednodemap_item)
objmap = (dom_nnodemap_object *)intern->ptr;
if (objmap != NULL) {
- if (objmap->ht) {
- if (objmap->nodetype == XML_ENTITY_NODE) {
- itemnode = php_dom_libxml_hash_iter(objmap->ht, index);
- } else {
- itemnode = php_dom_libxml_notation_iter(objmap->ht, index);
+ if ((objmap->nodetype == XML_NOTATION_NODE) ||
+ objmap->nodetype == XML_ENTITY_NODE) {
+ if (objmap->ht) {
+ if (objmap->nodetype == XML_ENTITY_NODE) {
+ itemnode = php_dom_libxml_hash_iter(objmap->ht, index);
+ } else {
+ itemnode = php_dom_libxml_notation_iter(objmap->ht, index);
+ }
}
} else {
nodep = dom_object_get_node(objmap->baseobj);
@@ -241,12 +252,17 @@ PHP_FUNCTION(dom_namednodemap_get_named_item_ns)
objmap = (dom_nnodemap_object *)intern->ptr;
if (objmap != NULL) {
- if (objmap->ht) {
- if (objmap->nodetype == XML_ENTITY_NODE) {
- itemnode = (xmlNodePtr)xmlHashLookup(objmap->ht, named);
- } else {
- notep = (xmlNotation *)xmlHashLookup(objmap->ht, named);
- itemnode = create_notation(notep->name, notep->PublicID, notep->SystemID);
+ if ((objmap->nodetype == XML_NOTATION_NODE) ||
+ objmap->nodetype == XML_ENTITY_NODE) {
+ if (objmap->ht) {
+ if (objmap->nodetype == XML_ENTITY_NODE) {
+ itemnode = (xmlNodePtr)xmlHashLookup(objmap->ht, named);
+ } else {
+ notep = (xmlNotation *)xmlHashLookup(objmap->ht, named);
+ if (notep) {
+ itemnode = create_notation(notep->name, notep->PublicID, notep->SystemID);
+ }
+ }
}
} else {
nodep = dom_object_get_node(objmap->baseobj);
diff --git a/ext/dom/node.c b/ext/dom/node.c
index 1e22aac92..0f4401e8e 100644
--- a/ext/dom/node.c
+++ b/ext/dom/node.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: node.c,v 1.37.2.2 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: node.c,v 1.37.2.3 2006/01/25 17:34:05 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -840,10 +840,10 @@ int dom_node_text_content_read(dom_object *obj, zval **retval TSRMLS_DC)
if(str != NULL) {
ZVAL_STRING(*retval, str, 1);
+ xmlFree(str);
} else {
ZVAL_EMPTY_STRING(*retval);
}
- xmlFree(str);
return SUCCESS;
}
diff --git a/ext/dom/notation.c b/ext/dom/notation.c
index 1bcc4387d..a546eefd3 100644
--- a/ext/dom/notation.c
+++ b/ext/dom/notation.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: notation.c,v 1.9.2.1 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: notation.c,v 1.9.2.2 2006/03/03 20:15:10 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -48,9 +48,9 @@ Since:
*/
int dom_notation_public_id_read(dom_object *obj, zval **retval TSRMLS_DC)
{
- xmlNotationPtr nodep;
+ xmlEntityPtr nodep;
- nodep = (xmlNotationPtr) dom_object_get_node(obj);
+ nodep = (xmlEntityPtr) dom_object_get_node(obj);
if (nodep == NULL) {
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
@@ -58,8 +58,8 @@ int dom_notation_public_id_read(dom_object *obj, zval **retval TSRMLS_DC)
}
ALLOC_ZVAL(*retval);
- if (nodep->PublicID) {
- ZVAL_STRING(*retval, (char *) (nodep->PublicID), 1);
+ if (nodep->ExternalID) {
+ ZVAL_STRING(*retval, (char *) (nodep->ExternalID), 1);
} else {
ZVAL_EMPTY_STRING(*retval);
}
@@ -78,9 +78,9 @@ Since:
*/
int dom_notation_system_id_read(dom_object *obj, zval **retval TSRMLS_DC)
{
- xmlNotationPtr nodep;
+ xmlEntityPtr nodep;
- nodep = (xmlNotationPtr) dom_object_get_node(obj);
+ nodep = (xmlEntityPtr) dom_object_get_node(obj);
if (nodep == NULL) {
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
@@ -89,7 +89,7 @@ int dom_notation_system_id_read(dom_object *obj, zval **retval TSRMLS_DC)
ALLOC_ZVAL(*retval);
if (nodep->SystemID) {
- ZVAL_STRING(*retval, (char *) (nodep->PublicID), 1);
+ ZVAL_STRING(*retval, (char *) (nodep->SystemID), 1);
} else {
ZVAL_EMPTY_STRING(*retval);
}
diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c
index 30f693342..1060018eb 100644
--- a/ext/dom/php_dom.c
+++ b/ext/dom/php_dom.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_dom.c,v 1.73.2.8 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: php_dom.c,v 1.73.2.12 2006/05/03 08:43:04 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -289,6 +289,8 @@ zval *dom_read_property(zval *object, zval *member, int type TSRMLS_DC)
if (obj->prop_handler != NULL) {
ret = zend_hash_find(obj->prop_handler, Z_STRVAL_P(member), Z_STRLEN_P(member)+1, (void **) &hnd);
+ } else if (instanceof_function(obj->std.ce, dom_node_class_entry TSRMLS_CC)) {
+ php_error(E_WARNING, "Couldn't fetch %s. Node no longer exists", obj->std.ce->name);
}
if (ret == SUCCESS) {
ret = hnd->read_func(obj, &retval TSRMLS_CC);
@@ -903,8 +905,7 @@ void dom_xpath_objects_free_storage(void *object TSRMLS_DC)
{
dom_object *intern = (dom_object *)object;
- zend_hash_destroy(intern->std.properties);
- FREE_HASHTABLE(intern->std.properties);
+ zend_object_std_dtor(&intern->std TSRMLS_CC);
if (intern->ptr != NULL) {
xmlXPathFreeContext((xmlXPathContextPtr) intern->ptr);
@@ -923,8 +924,7 @@ void dom_objects_free_storage(void *object TSRMLS_DC)
dom_object *intern = (dom_object *)object;
int retcount;
- zend_hash_destroy(intern->std.properties);
- FREE_HASHTABLE(intern->std.properties);
+ zend_object_std_dtor(&intern->std TSRMLS_CC);
if (intern->ptr != NULL && ((php_libxml_node_ptr *)intern->ptr)->node != NULL) {
if (((xmlNodePtr) ((php_libxml_node_ptr *)intern->ptr)->node)->type != XML_DOCUMENT_NODE && ((xmlNodePtr) ((php_libxml_node_ptr *)intern->ptr)->node)->type != XML_HTML_DOCUMENT_NODE) {
@@ -970,8 +970,6 @@ static dom_object* dom_objects_set_class(zend_class_entry *class_type, zend_bool
dom_object *intern;
intern = emalloc(sizeof(dom_object));
- intern->std.ce = class_type;
- intern->std.guards = NULL;
intern->ptr = NULL;
intern->prop_handler = NULL;
intern->document = NULL;
@@ -983,8 +981,7 @@ static dom_object* dom_objects_set_class(zend_class_entry *class_type, zend_bool
zend_hash_find(&classes, base_class->name, base_class->name_length + 1, (void **) &intern->prop_handler);
- ALLOC_HASHTABLE(intern->std.properties);
- zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ zend_object_std_init(&intern->std, class_type TSRMLS_CC);
if (hash_copy) {
zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
}
@@ -1089,8 +1086,7 @@ void dom_nnodemap_objects_free_storage(void *object TSRMLS_DC)
php_libxml_decrement_doc_ref((php_libxml_node_object *)intern TSRMLS_CC);
- zend_hash_destroy(intern->std.properties);
- FREE_HASHTABLE(intern->std.properties);
+ zend_object_std_dtor(&intern->std TSRMLS_CC);
efree(object);
}
diff --git a/ext/dom/tests/bug36756.phpt b/ext/dom/tests/bug36756.phpt
new file mode 100644
index 000000000..e24f9f080
--- /dev/null
+++ b/ext/dom/tests/bug36756.phpt
@@ -0,0 +1,35 @@
+--TEST--
+Bug #36756: (DOMDocument::removeChild corrupts node)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+
+/* Node is preserved from removeChild */
+$dom = new DOMDocument();
+$dom->loadXML('<root><child/></root>');
+$xpath = new DOMXpath($dom);
+$node = $xpath->query('/root')->item(0);
+echo $node->nodeName . "\n";
+$dom->removeChild($GLOBALS['dom']->firstChild);
+echo "nodeType: " . $node->nodeType . "\n";
+
+/* Node gets destroyed during removeChild */
+$dom->loadXML('<root><child/></root>');
+$xpath = new DOMXpath($dom);
+$node = $xpath->query('//child')->item(0);
+echo $node->nodeName . "\n";
+$GLOBALS['dom']->removeChild($GLOBALS['dom']->firstChild);
+
+echo "nodeType: " . $node->nodeType . "\n";
+
+?>
+--EXPECTF--
+root
+nodeType: 1
+child
+
+Warning: Couldn't fetch DOMElement. Node no longer exists in %sbug36756.php on line %d
+
+Notice: Undefined property: DOMElement::$nodeType in %sbug36756.php on line %d
+nodeType:
diff --git a/ext/dom/tests/bug37277.phpt b/ext/dom/tests/bug37277.phpt
new file mode 100644
index 000000000..4a0168417
--- /dev/null
+++ b/ext/dom/tests/bug37277.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug # 37277 (cloning Dom Documents or Nodes does not work)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$dom1 = new DomDocument('1.0', 'UTF-8');
+
+$xml = '<foo />';
+$dom1->loadXml($xml);
+
+$node = clone $dom1->documentElement;
+
+$dom2 = new DomDocument('1.0', 'UTF-8');
+$dom2->appendChild($dom2->importNode($node->cloneNode(true), TRUE));
+
+print $dom2->saveXML();
+
+
+?>
+--EXPECT--
+
+<?xml version="1.0" encoding="UTF-8"?>
+<foo/>
+
diff --git a/ext/dom/tests/dom007.phpt b/ext/dom/tests/dom007.phpt
new file mode 100644
index 000000000..649d63033
--- /dev/null
+++ b/ext/dom/tests/dom007.phpt
@@ -0,0 +1,99 @@
+--TEST--
+Test 7: DTD tests
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--FILE--
+<?php
+$xml = <<< EOXML
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE courses [
+<!ELEMENT courses (course+)>
+<!ELEMENT course (title, description, temp*)>
+<!ATTLIST course cid ID #REQUIRED>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT description (#PCDATA)>
+<!ELEMENT temp (#PCDATA)>
+<!ATTLIST temp vid ID #REQUIRED>
+<!ENTITY test 'http://www.hpl.hp.com/semweb/2003/query_tester#'>
+<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
+<!NOTATION GIF PUBLIC "-" "image/gif">
+<!ENTITY myimage PUBLIC "-" "mypicture.gif" NDATA GIF>
+]>
+<courses>
+ <course cid="c1">
+ <title>Basic Languages</title>
+ <description>Introduction to Languages</description>
+ </course>
+ <course cid="c6">
+ <title>French I</title>
+ <description>Introduction to French</description>
+ <temp vid="c7">
+ </temp>
+ </course>
+</courses>
+EOXML;
+
+$dom = new DOMDocument();
+$dom->loadXML($xml);
+
+$dtd = $dom->doctype;
+
+/* Notation Tests */
+$nots = $dtd->notations;
+
+$length = $nots->length;
+echo "Length: ".$length."\n";
+
+foreach ($nots AS $key=>$node) {
+ echo "Key $key: ".$node->nodeName." (".$node->systemId.") (".$node->publicId.")\n";
+}
+print "\n";
+for($x=0; $x < $length; $x++) {
+ echo "Index $x: ".$nots->item($x)->nodeName." (".$nots->item($x)->systemId.") (".$nots->item($x)->publicId.")\n";
+}
+
+echo "\n";
+$node = $nots->getNamedItem('xxx');
+var_dump($node);
+
+echo "\n";
+/* Entity Decl Tests */
+$ents = $dtd->entities;
+$length = $ents->length;
+echo "Length: ".$length."\n";
+foreach ($ents AS $key=>$node) {
+ echo "Key: $key Name: ".$node->nodeName."\n";
+}
+echo "\n";
+for($x=0; $x < $length; $x++) {
+ echo "Index $x: ".$ents->item($x)->nodeName."\n";
+}
+
+echo "\n";
+$node = $ents->item(3);
+var_dump($node);
+$node = $ents->getNamedItem('xxx');
+var_dump($node);
+
+
+--EXPECT--
+Length: 1
+Key GIF: GIF (image/gif) (-)
+
+Index 0: GIF (image/gif) (-)
+
+NULL
+
+Length: 3
+Key: test Name: test
+Key: rdf Name: rdf
+Key: myimage Name: myimage
+
+Index 0: test
+Index 1: rdf
+Index 2: myimage
+
+NULL
+NULL
diff --git a/ext/exif/exif.c b/ext/exif/exif.c
index 945931fe8..324195fa7 100644
--- a/ext/exif/exif.c
+++ b/ext/exif/exif.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: exif.c,v 1.173.2.4 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: exif.c,v 1.173.2.5 2006/04/10 18:23:24 helly Exp $ */
/* ToDos
*
@@ -115,7 +115,7 @@ zend_function_entry exif_functions[] = {
};
/* }}} */
-#define EXIF_VERSION "1.4 $Id: exif.c,v 1.173.2.4 2006/01/01 12:50:06 sniper Exp $"
+#define EXIF_VERSION "1.4 $Id: exif.c,v 1.173.2.5 2006/04/10 18:23:24 helly Exp $"
/* {{{ PHP_MINFO_FUNCTION
*/
@@ -1560,7 +1560,7 @@ static void exif_iif_add_value(image_info_type *image_info, int section_index, c
image_info_data *info_data;
image_info_data *list;
- if (length >= LONG_MAX) {
+ if (length < 0) {
return;
}
diff --git a/ext/fbsql/php_fbsql.c b/ext/fbsql/php_fbsql.c
index b79d28f43..13fcc5277 100644
--- a/ext/fbsql/php_fbsql.c
+++ b/ext/fbsql/php_fbsql.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_fbsql.c,v 1.114.2.3 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: php_fbsql.c,v 1.114.2.4 2006/08/14 18:40:20 fmk Exp $ */
/* TODO:
*
@@ -58,6 +58,10 @@
#define HAVE_FBSQL 1
+#ifndef min
+# define min(a,b) ((a)<(b)?(a):(b))
+#endif
+
#if HAVE_FBSQL
#include "php_fbsql.h"
#include <signal.h>
@@ -379,6 +383,7 @@ PHP_INI_BEGIN()
STD_PHP_INI_BOOLEAN ("fbsql.allow_persistent", "1", PHP_INI_SYSTEM, OnUpdateBool, allowPersistent, zend_fbsql_globals, fbsql_globals)
STD_PHP_INI_BOOLEAN ("fbsql.generate_warnings", "0", PHP_INI_SYSTEM, OnUpdateBool, generateWarnings, zend_fbsql_globals, fbsql_globals)
STD_PHP_INI_BOOLEAN ("fbsql.autocommit", "1", PHP_INI_SYSTEM, OnUpdateBool, autoCommit, zend_fbsql_globals, fbsql_globals)
+ STD_PHP_INI_BOOLEAN ("fbsql.show_timestamp_decimals", "0", PHP_INI_SYSTEM, OnUpdateBool, showTimestampDecimals, zend_fbsql_globals, fbsql_globals)
STD_PHP_INI_ENTRY_EX ("fbsql.max_persistent", "-1", PHP_INI_SYSTEM, OnUpdateLong, maxPersistent, zend_fbsql_globals, fbsql_globals, display_link_numbers)
STD_PHP_INI_ENTRY_EX ("fbsql.max_links", "128", PHP_INI_SYSTEM, OnUpdateLong, maxLinks, zend_fbsql_globals, fbsql_globals, display_link_numbers)
STD_PHP_INI_ENTRY_EX ("fbsql.max_connections", "128", PHP_INI_SYSTEM, OnUpdateLong, maxConnections, zend_fbsql_globals, fbsql_globals, display_link_numbers)
@@ -540,7 +545,26 @@ static void php_fbsql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
if (persistent) {
if (zend_hash_find(&EG(persistent_list), name, strlen(name) + 1, (void **)&lep) == SUCCESS)
{
+ FBCMetaData *md;
phpLink = (PHPFBLink*)lep->ptr;
+ // Check if connection still there.
+ md = fbcdcRollback(phpLink->connection);
+ if ( !mdOk(phpLink, md, "Rollback;") ) {
+ if (FB_SQL_G(generateWarnings)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "FrontBase link is not connected, ty to reconnect.");
+ }
+ // Make sure select_db will reconnect.
+ fbcmdRelease(md);
+ fbcdcClose(phpLink->connection);
+ fbcdcRelease(phpLink->connection);
+ free(phpLink->connection);
+ phpLink->connection = NULL;
+ if (phpLink->databaseName) free(phpLink->databaseName);
+ phpLink->databaseName = NULL;
+ }
+ else {
+ fbcmdRelease(md);
+ }
}
else {
zend_rsrc_list_entry le;
@@ -2509,8 +2533,6 @@ void phpfbColumnAsString(PHPFBResult* result, int column, void* data , int* leng
case FB_Float:
case FB_Real:
case FB_Double:
- case FB_Numeric:
- case FB_Decimal:
{
double v = *((double*)data);
char b[128];
@@ -2519,6 +2541,18 @@ void phpfbColumnAsString(PHPFBResult* result, int column, void* data , int* leng
}
break;
+ case FB_Numeric:
+ case FB_Decimal:
+ {
+ unsigned precision = fbcdmdPrecision(dtmd);
+ unsigned scale = fbcdmdScale(dtmd);
+ double v = *((double*)data);
+ char b[128];
+ snprintf(b, sizeof(b), "%.*f", scale, v);
+ phpfbestrdup(b, length, value);
+ }
+ break;
+
case FB_Character:
case FB_VCharacter:
{
@@ -2589,7 +2623,6 @@ void phpfbColumnAsString(PHPFBResult* result, int column, void* data , int* leng
case FB_Date:
case FB_Time:
case FB_TimeTZ:
- case FB_Timestamp:
case FB_TimestampTZ:
{
char* v = (char*)data;
@@ -2597,6 +2630,27 @@ void phpfbColumnAsString(PHPFBResult* result, int column, void* data , int* leng
}
break;
+ case FB_Timestamp:
+ {
+ char* v = (char*)data;
+ if (FB_SQL_G(showTimestampDecimals)) {
+ phpfbestrdup(v, length, value);
+ }
+ // Copy only YYYY-MM-DD HH:MM:SS
+ else {
+ int stringLength = strlen(v);
+ stringLength = min(stringLength, 19);
+ if (value) {
+ char* r = emalloc(stringLength+1);
+ memcpy(r, v, stringLength);
+ r[stringLength] = 0;
+ *value = r;
+ }
+ *length = stringLength;
+ }
+ }
+ break;
+
case FB_YearMonth:
{
char b[128];
diff --git a/ext/fbsql/php_fbsql.h b/ext/fbsql/php_fbsql.h
index c41da0a3e..7414647f2 100644
--- a/ext/fbsql/php_fbsql.h
+++ b/ext/fbsql/php_fbsql.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_fbsql.h,v 1.31.2.1 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: php_fbsql.h,v 1.31.2.2 2006/08/14 18:40:20 fmk Exp $ */
#define HAVE_FBSQL 1
@@ -108,23 +108,23 @@ static void php_fbsql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type,
static void php_fbsql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent);
ZEND_BEGIN_MODULE_GLOBALS(fbsql)
- zend_bool allowPersistent;
- zend_bool generateWarnings;
- zend_bool autoCommit;
- long maxPersistent;
- long maxLinks;
- long maxConnections;
- long maxResults;
- long batchSize;
- char *hostName;
- char *databaseName;
- char *databasePassword;
- char *userName;
- char *userPassword;
- long persistentCount;
- long linkCount;
- long linkIndex;
-
+ zend_bool allowPersistent;
+ zend_bool generateWarnings;
+ zend_bool autoCommit;
+ zend_bool showTimestampDecimals;
+ long maxPersistent;
+ long maxLinks;
+ long maxConnections;
+ long maxResults;
+ long batchSize;
+ char *hostName;
+ char *databaseName;
+ char *databasePassword;
+ char *userName;
+ char *userPassword;
+ long persistentCount;
+ long linkCount;
+ long linkIndex;
ZEND_END_MODULE_GLOBALS(fbsql)
#ifdef ZTS
diff --git a/ext/ftp/ftp.c b/ext/ftp/ftp.c
index 9291bd1fc..08db6a2ff 100644
--- a/ext/ftp/ftp.c
+++ b/ext/ftp/ftp.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ftp.c,v 1.112.2.3 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: ftp.c,v 1.112.2.4 2006/04/03 09:14:33 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -810,7 +810,7 @@ ftp_get(ftpbuf_t *ftp, php_stream *outstream, const char *path, ftptype_t type,
if (resumepos > 0) {
if (resumepos > 2147483647) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files greater then 2147483647 bytes.");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files greater than 2147483647 bytes.");
goto bail;
}
sprintf(arg, "%u", resumepos);
@@ -907,7 +907,7 @@ ftp_put(ftpbuf_t *ftp, const char *path, php_stream *instream, ftptype_t type, i
if (startpos > 0) {
if (startpos > 2147483647) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files with a size greater then 2147483647 bytes.");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files with a size greater than 2147483647 bytes.");
goto bail;
}
sprintf(arg, "%u", startpos);
@@ -1706,7 +1706,7 @@ ftp_nb_get(ftpbuf_t *ftp, php_stream *outstream, const char *path, ftptype_t typ
* since php is 32 bit by design, we bail out with warning
*/
if (resumepos > 2147483647) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files greater then 2147483648 bytes.");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files greater than 2147483648 bytes.");
goto bail;
}
sprintf(arg, "%u", resumepos);
@@ -1824,7 +1824,7 @@ ftp_nb_put(ftpbuf_t *ftp, const char *path, php_stream *instream, ftptype_t type
}
if (startpos > 0) {
if (startpos > 2147483647) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files with a size greater then 2147483647 bytes.");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files with a size greater than 2147483647 bytes.");
goto bail;
}
sprintf(arg, "%u", startpos);
diff --git a/ext/gd/gd.c b/ext/gd/gd.c
index a37346cd2..398832392 100644
--- a/ext/gd/gd.c
+++ b/ext/gd/gd.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: gd.c,v 1.312.2.12 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: gd.c,v 1.312.2.20 2006/03/10 18:07:27 pajoye Exp $ */
/* gd 1.2 is copyright 1994, 1995, Quest Protein Database Center,
Cold Spring Harbor Labs. */
@@ -29,7 +29,13 @@
#include "config.h"
#endif
+#ifdef HAVE_GD_PNG
+/* needs to be first */
+#include <png.h>
+#endif
+
#include "php.h"
+#include "php_ini.h"
#include "ext/standard/head.h"
#include <math.h>
#include "SAPI.h"
@@ -352,6 +358,12 @@ zend_module_entry gd_module_entry = {
ZEND_GET_MODULE(gd)
#endif
+/* {{{ PHP_INI_BEGIN */
+PHP_INI_BEGIN()
+ PHP_INI_ENTRY("gd.jpeg_ignore_warning", "0", PHP_INI_ALL, NULL)
+PHP_INI_END()
+/* }}} */
+
/* {{{ php_free_gd_image
*/
static void php_free_gd_image(zend_rsrc_list_entry *rsrc TSRMLS_DC)
@@ -400,6 +412,8 @@ PHP_MINIT_FUNCTION(gd)
le_ps_enc = zend_register_list_destructors_ex(php_free_ps_enc, NULL, "gd PS encoding", module_number);
#endif
+ REGISTER_INI_ENTRIES();
+
REGISTER_LONG_CONSTANT("IMG_GIF", 1, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("IMG_JPG", 2, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("IMG_JPEG", 2, CONST_CS | CONST_PERSISTENT);
@@ -451,6 +465,22 @@ PHP_MINIT_FUNCTION(gd)
#else
REGISTER_LONG_CONSTANT("GD_BUNDLED", 0, CONST_CS | CONST_PERSISTENT);
#endif
+
+#ifdef HAVE_GD_PNG
+
+/*
+ * cannot include #include "png.h"
+ * /usr/include/pngconf.h:310:2: error: #error png.h already includes setjmp.h with some additional fixup.
+ * as error, use the values for now...
+ */
+ REGISTER_LONG_CONSTANT("PNG_NO_FILTER", 0x00, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("PNG_FILTER_NONE", 0x08, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("PNG_FILTER_SUB", 0x10, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("PNG_FILTER_UP", 0x20, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("PNG_FILTER_AVG", 0x40, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("PNG_FILTER_PAETH", 0x80, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("PNG_ALL_FILTERS", 0x08 | 0x10 | 0x20 | 0x40 | 0x80, CONST_CS | CONST_PERSISTENT);
+#endif
return SUCCESS;
}
/* }}} */
@@ -1064,6 +1094,7 @@ PHP_FUNCTION(imagesavealpha)
RETURN_TRUE;
}
+/* }}} */
#endif
#if HAVE_GD_BUNDLED
@@ -1095,6 +1126,7 @@ PHP_FUNCTION(imagecolorallocatealpha)
zval *IM;
long red, green, blue, alpha;
gdImagePtr im;
+ int ct = (-1);
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zllll", &IM, &red, &green, &blue, &alpha) == FAILURE) {
RETURN_FALSE;
@@ -1102,7 +1134,12 @@ PHP_FUNCTION(imagecolorallocatealpha)
ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
- RETURN_LONG(gdImageColorAllocateAlpha(im, red, green, blue, alpha));
+ ct = gdImageColorAllocateAlpha(im, red, green, blue, alpha);
+ if (ct < 0) {
+ RETURN_FALSE;
+ }
+
+ RETURN_LONG((long)ct);
}
/* }}} */
@@ -1513,6 +1550,8 @@ static void _php_image_create_from(INTERNAL_FUNCTION_PARAMETERS, int image_type,
php_stream *stream;
FILE * fp = NULL;
int argc=ZEND_NUM_ARGS();
+ long ignore_warning;
+
if ((image_type == PHP_GDIMG_TYPE_GD2PART && argc != 5) ||
(image_type != PHP_GDIMG_TYPE_GD2PART && argc != 1) ||
@@ -1593,6 +1632,18 @@ static void _php_image_create_from(INTERNAL_FUNCTION_PARAMETERS, int image_type,
im = gdImageCreateFromXpm(fn);
break;
#endif
+
+#ifdef HAVE_GD_JPG
+ case PHP_GDIMG_TYPE_JPG:
+ ignore_warning = INI_INT("gd.jpeg_ignore_warning");
+#ifdef HAVE_GD_BUNDLED
+ im = gdImageCreateFromJpeg(fp, ignore_warning);
+#else
+ im = gdImageCreateFromJpeg(fp);
+#endif
+ break;
+#endif
+
default:
im = (*func_p)(fp);
break;
@@ -1960,6 +2011,7 @@ PHP_FUNCTION(imagecolorallocate)
{
zval **IM, **red, **green, **blue;
gdImagePtr im;
+ int ct = (-1);
if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &IM, &red, &green, &blue) == FAILURE) {
ZEND_WRONG_PARAM_COUNT();
@@ -1970,8 +2022,11 @@ PHP_FUNCTION(imagecolorallocate)
convert_to_long_ex(red);
convert_to_long_ex(green);
convert_to_long_ex(blue);
-
- RETURN_LONG(gdImageColorAllocate(im, Z_LVAL_PP(red), Z_LVAL_PP(green), Z_LVAL_PP(blue)));
+ ct = gdImageColorAllocate(im, Z_LVAL_PP(red), Z_LVAL_PP(green), Z_LVAL_PP(blue));
+ if (ct < 0) {
+ RETURN_FALSE;
+ }
+ RETURN_LONG(ct);
}
/* }}} */
@@ -3191,6 +3246,8 @@ static void php_imagettftext_common(INTERNAL_FUNCTION_PARAMETERS, int mode, int
fontname = (unsigned char *) fontname;
#endif
+ PHP_GD_CHECK_OPEN_BASEDIR(fontname, "Invalid font filename");
+
#ifdef USE_GD_IMGSTRTTF
# if HAVE_GD_STRINGFTEX
if (extended) {
@@ -3808,7 +3865,8 @@ static void _php_image_convert(INTERNAL_FUNCTION_PARAMETERS, int image_type )
int int_threshold;
int x, y;
float x_ratio, y_ratio;
-
+ long ignore_warning;
+
if (argc != 5 || zend_get_parameters_ex(argc, &f_org, &f_dest, &height, &width, &threshold) == FAILURE) {
ZEND_WRONG_PARAM_COUNT();
}
@@ -3864,7 +3922,12 @@ static void _php_image_convert(INTERNAL_FUNCTION_PARAMETERS, int image_type )
#ifdef HAVE_GD_JPG
case PHP_GDIMG_TYPE_JPG:
+ ignore_warning = INI_INT("gd.jpeg_ignore_warning");
+#ifdef HAVE_GD_BUNDLED
+ im_org = gdImageCreateFromJpeg(org, ignore_warning);
+#else
im_org = gdImageCreateFromJpeg(org);
+#endif
if (im_org == NULL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to open '%s' Not a valid JPEG file", fn_dest);
RETURN_FALSE;
diff --git a/ext/gd/gd_ctx.c b/ext/gd/gd_ctx.c
index 28a401a65..8b7434282 100644
--- a/ext/gd/gd_ctx.c
+++ b/ext/gd/gd_ctx.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: gd_ctx.c,v 1.22.2.4 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: gd_ctx.c,v 1.22.2.5 2006/01/27 13:36:29 pajoye Exp $ */
#include "php_gd.h"
@@ -49,12 +49,13 @@ static void _php_image_output_ctxfree(struct gdIOCtx *ctx)
/* {{{ _php_image_output_ctx */
static void _php_image_output_ctx(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, void (*func_p)())
{
- zval **imgind, **file, **quality;
+ zval **imgind, **file, **quality, **basefilter;
gdImagePtr im;
char *fn = NULL;
FILE *fp = NULL;
int argc = ZEND_NUM_ARGS();
int q = -1, i;
+ int f = -1;
gdIOCtx *ctx;
/* The third (quality) parameter for Wbmp stands for the threshold when called from image2wbmp().
@@ -65,7 +66,8 @@ static void _php_image_output_ctx(INTERNAL_FUNCTION_PARAMETERS, int image_type,
if (argc < 2 && image_type == PHP_GDIMG_TYPE_XBM) {
WRONG_PARAM_COUNT;
}
- if (argc < 1 || argc > 3 || zend_get_parameters_ex(argc, &imgind, &file, &quality) == FAILURE)
+
+ if (argc < 1 || argc > 4 || zend_get_parameters_ex(argc, &imgind, &file, &quality, &basefilter) == FAILURE)
{
WRONG_PARAM_COUNT;
}
@@ -75,9 +77,13 @@ static void _php_image_output_ctx(INTERNAL_FUNCTION_PARAMETERS, int image_type,
if (argc > 1) {
convert_to_string_ex(file);
fn = Z_STRVAL_PP(file);
- if (argc == 3) {
+ if (argc >= 3) {
convert_to_long_ex(quality);
q = Z_LVAL_PP(quality);/* or colorindex for foreground of BW images (defaults to black) */
+ if (argc == 4) {
+ convert_to_long_ex(basefilter);
+ f = Z_LVAL_PP(basefilter);
+ }
}
}
@@ -115,9 +121,11 @@ static void _php_image_output_ctx(INTERNAL_FUNCTION_PARAMETERS, int image_type,
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid threshold value '%d'. It must be between 0 and 255", q);
}
case PHP_GDIMG_TYPE_JPG:
- case PHP_GDIMG_TYPE_PNG:
(*func_p)(im, ctx, q);
break;
+ case PHP_GDIMG_TYPE_PNG:
+ (*func_p)(im, ctx, q, f);
+ break;
case PHP_GDIMG_TYPE_XBM:
case PHP_GDIMG_TYPE_WBM:
if (argc < 3) {
diff --git a/ext/gd/libgd/gd.c b/ext/gd/libgd/gd.c
index 6a2e8fbcd..bb12cefc0 100644
--- a/ext/gd/libgd/gd.c
+++ b/ext/gd/libgd/gd.c
@@ -2161,7 +2161,7 @@ void gdImageCopy (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX,
for (x = 0; (x < w); x++) {
int c = gdImageGetPixel (src, srcX + x, srcY + y);
if (c != src->transparent) {
- gdImageSetPixel (dst, dstX + x, dstY + y, gdTrueColor(src->red[c], src->green[c], src->blue[c]));
+ gdImageSetPixel(dst, dstX + x, dstY + y, gdTrueColorAlpha(src->red[c], src->green[c], src->blue[c], src->alpha[c]));
}
}
}
diff --git a/ext/gd/libgd/gd.h b/ext/gd/libgd/gd.h
index 19b69c1c5..751a1e74e 100644
--- a/ext/gd/libgd/gd.h
+++ b/ext/gd/libgd/gd.h
@@ -237,8 +237,8 @@ gdImagePtr gdImageCreateFromPng(FILE *fd);
gdImagePtr gdImageCreateFromPngCtx(gdIOCtxPtr in);
gdImagePtr gdImageCreateFromWBMP(FILE *inFile);
gdImagePtr gdImageCreateFromWBMPCtx(gdIOCtx *infile);
-gdImagePtr gdImageCreateFromJpeg(FILE *infile);
-gdImagePtr gdImageCreateFromJpegCtx(gdIOCtx *infile);
+gdImagePtr gdImageCreateFromJpeg(FILE *infile, int ignore_warning);
+gdImagePtr gdImageCreateFromJpegCtx(gdIOCtx *infile, int ignore_warning);
/* A custom data source. */
/* The source function must return -1 on error, otherwise the number
@@ -444,8 +444,8 @@ void gdImageGifCtx(gdImagePtr im, gdIOCtx *out);
* compression (smallest files) but takes a long time to compress, and
* -1 selects the default compiled into the zlib library.
*/
-void gdImagePngEx(gdImagePtr im, FILE * out, int level);
-void gdImagePngCtxEx(gdImagePtr im, gdIOCtx * out, int level);
+void gdImagePngEx(gdImagePtr im, FILE * out, int level, int basefilter);
+void gdImagePngCtxEx(gdImagePtr im, gdIOCtx * out, int level, int basefilter);
void gdImageWBMP(gdImagePtr image, int fg, FILE *out);
void gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out);
@@ -489,7 +489,7 @@ void* gdImagePngPtr(gdImagePtr im, int *size);
/* Best to free this memory with gdFree(), not free() */
void* gdImageGdPtr(gdImagePtr im, int *size);
-void *gdImagePngPtrEx(gdImagePtr im, int *size, int level);
+void *gdImagePngPtrEx(gdImagePtr im, int *size, int level, int basefilter);
/* Best to free this memory with gdFree(), not free() */
void* gdImageGd2Ptr(gdImagePtr im, int cs, int fmt, int *size);
diff --git a/ext/gd/libgd/gd_gd2.c b/ext/gd/libgd/gd_gd2.c
index 1e739179e..3f24e4a47 100644
--- a/ext/gd/libgd/gd_gd2.c
+++ b/ext/gd/libgd/gd_gd2.c
@@ -430,6 +430,10 @@ gdImagePtr gdImageCreateFromGd2PartCtx (gdIOCtx * in, int srcx, int srcy, int w,
gdImagePtr im;
+ if (w<1 || h <1) {
+ return 0;
+ }
+
/* The next few lines are basically copied from gd2CreateFromFile
* we change the file size, so don't want to use the code directly.
* but we do need to know the file size.
diff --git a/ext/gd/libgd/gd_gif_in.c b/ext/gd/libgd/gd_gif_in.c
index 1733a646f..ffe4168c8 100644
--- a/ext/gd/libgd/gd_gif_in.c
+++ b/ext/gd/libgd/gd_gif_in.c
@@ -44,7 +44,7 @@ static int set_verbose(void)
#define LOCALCOLORMAP 0x80
#define BitSet(byte, bit) (((byte) & (bit)) == (bit))
-#define ReadOK(file,buffer,len) (gdGetBuf(buffer, len, file) != 0)
+#define ReadOK(file,buffer,len) (gdGetBuf(buffer, len, file) > 0)
#define LM_to_uint(a,b) (((b)<<8)|(a))
@@ -147,6 +147,9 @@ gdImageCreateFromGifCtx(gdIOCtxPtr fd)
Background = buf[5];
AspectRatio = buf[6];
+ imw = LM_to_uint(buf[0],buf[1]);
+ imh = LM_to_uint(buf[2],buf[3]);
+
if (BitSet(buf[4], LOCALCOLORMAP)) { /* Global Colormap */
if (ReadColorMap(fd, BitPixel, ColorMap)) {
return 0;
@@ -182,14 +185,13 @@ gdImageCreateFromGifCtx(gdIOCtxPtr fd)
bitPixel = 1<<((buf[8]&0x07)+1);
- imw = LM_to_uint(buf[4],buf[5]);
- imh = LM_to_uint(buf[6],buf[7]);
- if (!(im = gdImageCreate(imw, imh))) {
- return 0;
- }
+ if (!(im = gdImageCreate(imw, imh))) {
+ return 0;
+ }
+
im->interlace = BitSet(buf[8], INTERLACE);
if (! useGlobalColormap) {
- if (ReadColorMap(fd, bitPixel, localColorMap)) {
+ if (ReadColorMap(fd, bitPixel, localColorMap)) {
return 0;
}
ReadImage(im, fd, imw, imh, localColorMap,
@@ -212,6 +214,10 @@ terminated:
if (!im) {
return 0;
}
+ if (!im->colorsTotal) {
+ gdImageDestroy(im);
+ return 0;
+ }
/* Check for open colors at the end, so
we can reduce colorsTotal and ultimately
BitsPerPixel */
@@ -502,6 +508,18 @@ ReadImage(gdImagePtr im, gdIOCtx *fd, int len, int height, unsigned char (*cmap)
int v;
int xpos = 0, ypos = 0, pass = 0;
int i;
+
+ /*
+ ** Initialize the Compression routines
+ */
+ if (! ReadOK(fd,&c,1)) {
+ return;
+ }
+
+ if (c > MAX_LWZ_BITS) {
+ return;
+ }
+
/* Stash the color map into the image */
for (i=0; (i<gdMaxColors); i++) {
im->red[i] = cmap[CM_RED][i];
@@ -511,12 +529,7 @@ ReadImage(gdImagePtr im, gdIOCtx *fd, int len, int height, unsigned char (*cmap)
}
/* Many (perhaps most) of these colors will remain marked open. */
im->colorsTotal = gdMaxColors;
- /*
- ** Initialize the Compression routines
- */
- if (! ReadOK(fd,&c,1)) {
- return;
- }
+
if (LWZReadByte(fd, TRUE, c) < 0) {
return;
}
diff --git a/ext/gd/libgd/gd_gif_out.c b/ext/gd/libgd/gd_gif_out.c
index 49da75f96..f6b4ff7e6 100644
--- a/ext/gd/libgd/gd_gif_out.c
+++ b/ext/gd/libgd/gd_gif_out.c
@@ -133,7 +133,7 @@ void gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out)
BitsPerPixel = colorstobpp(tim->colorsTotal);
/* All set, let's do it. */
GIFEncode(
- out, tim->sx, tim->sy, interlace, 0, transparent, BitsPerPixel,
+ out, tim->sx, tim->sy, tim->interlace, 0, tim->transparent, BitsPerPixel,
tim->red, tim->green, tim->blue, tim);
if (pim) {
/* Destroy palette based temporary image. */
@@ -265,9 +265,11 @@ GIFEncode(gdIOCtxPtr fp, int GWidth, int GHeight, int GInterlace, int Background
int InitCodeSize;
int i;
GifCtx ctx;
+
+ memset(&ctx, 0, sizeof(ctx));
ctx.Interlace = GInterlace;
ctx.in_count = 1;
- memset(&ctx, 0, sizeof(ctx));
+
ColorMapSize = 1 << BitsPerPixel;
RWidth = ctx.Width = GWidth;
diff --git a/ext/gd/libgd/gd_jpeg.c b/ext/gd/libgd/gd_jpeg.c
index a276fe853..9573c1cf6 100644
--- a/ext/gd/libgd/gd_jpeg.c
+++ b/ext/gd/libgd/gd_jpeg.c
@@ -43,8 +43,44 @@ static const char *const GD_JPEG_VERSION = "1.0";
typedef struct _jmpbuf_wrapper
{
jmp_buf jmpbuf;
+ int ignore_warning;
} jmpbuf_wrapper;
+static long php_jpeg_emit_message(j_common_ptr jpeg_info, int level)
+{
+ char message[JMSG_LENGTH_MAX];
+ jmpbuf_wrapper *jmpbufw;
+ int ignore_warning = 0;
+
+ jmpbufw = (jmpbuf_wrapper *) jpeg_info->client_data;
+
+ if (jmpbufw != 0) {
+ ignore_warning = jmpbufw->ignore_warning;
+ }
+
+ (jpeg_info->err->format_message)(jpeg_info,message);
+
+ /* It is a warning message */
+ if (level < 0) {
+ /* display only the 1st warning, as would do a default libjpeg
+ * unless strace_level >= 3
+ */
+ if ((jpeg_info->err->num_warnings == 0) || (jpeg_info->err->trace_level >= 3)) {
+ php_gd_error_ex(ignore_warning ? E_NOTICE : E_WARNING, "gd-jpeg, libjpeg: recoverable error: %s\n", message);
+ }
+
+ jpeg_info->err->num_warnings++;
+ } else {
+ /* strace msg, Show it if trace_level >= level. */
+ if (jpeg_info->err->trace_level >= level) {
+ php_gd_error_ex(E_NOTICE, "gd-jpeg, libjpeg: strace message: %s\n", message);
+ }
+ }
+ return 1;
+}
+
+
+
/* Called by the IJG JPEG library upon encountering a fatal error */
static void fatal_jpeg_error (j_common_ptr cinfo)
{
@@ -207,21 +243,21 @@ void gdImageJpegCtx (gdImagePtr im, gdIOCtx * outfile, int quality)
gdFree (row);
}
-gdImagePtr gdImageCreateFromJpeg (FILE * inFile)
+gdImagePtr gdImageCreateFromJpeg (FILE * inFile, int ignore_warning)
{
gdImagePtr im;
gdIOCtx *in = gdNewFileCtx(inFile);
- im = gdImageCreateFromJpegCtx(in);
+ im = gdImageCreateFromJpegCtx(in, ignore_warning);
in->gd_free (in);
return im;
}
-gdImagePtr gdImageCreateFromJpegPtr (int size, void *data)
+gdImagePtr gdImageCreateFromJpegPtr (int size, void *data, int ignore_warning)
{
gdImagePtr im;
gdIOCtx *in = gdNewDynamicCtxEx(size, data, 0);
- im = gdImageCreateFromJpegCtx(in);
+ im = gdImageCreateFromJpegCtx(in, ignore_warning);
in->gd_free(in);
return im;
@@ -231,11 +267,12 @@ void jpeg_gdIOCtx_src (j_decompress_ptr cinfo, gdIOCtx * infile);
static int CMYKToRGB(int c, int m, int y, int k, int inverted);
+
/*
* Create a gd-format image from the JPEG-format INFILE. Returns the
* image, or NULL upon error.
*/
-gdImagePtr gdImageCreateFromJpegCtx (gdIOCtx * infile)
+gdImagePtr gdImageCreateFromJpegCtx (gdIOCtx * infile, int ignore_warning)
{
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
@@ -253,8 +290,13 @@ gdImagePtr gdImageCreateFromJpegCtx (gdIOCtx * infile)
memset (&cinfo, 0, sizeof (cinfo));
memset (&jerr, 0, sizeof (jerr));
+ jmpbufw.ignore_warning = ignore_warning;
+
cinfo.err = jpeg_std_error (&jerr);
cinfo.client_data = &jmpbufw;
+
+ cinfo.err->emit_message = (void (*)(j_common_ptr,int)) php_jpeg_emit_message;
+
if (setjmp (jmpbufw.jmpbuf) != 0) {
/* we're here courtesy of longjmp */
if (row) {
@@ -386,12 +428,12 @@ gdImagePtr gdImageCreateFromJpegCtx (gdIOCtx * infile)
if (jpeg_finish_decompress (&cinfo) != TRUE) {
php_gd_error("gd-jpeg: warning: jpeg_finish_decompress reports suspended data source");
}
-
- /* Thanks to Truxton Fulton */
- if (cinfo.err->num_warnings > 0) {
- goto error;
+ if (!ignore_warning) {
+ if (cinfo.err->num_warnings > 0) {
+ goto error;
+ }
}
-
+
jpeg_destroy_decompress (&cinfo);
gdFree (row);
diff --git a/ext/gd/libgd/gd_png.c b/ext/gd/libgd/gd_png.c
index f57f7c4b2..fcc9a008a 100644
--- a/ext/gd/libgd/gd_png.c
+++ b/ext/gd/libgd/gd_png.c
@@ -384,17 +384,17 @@ gdImagePtr gdImageCreateFromPngCtx (gdIOCtx * infile)
return im;
}
-void gdImagePngEx (gdImagePtr im, FILE * outFile, int level)
+void gdImagePngEx (gdImagePtr im, FILE * outFile, int level, int basefilter)
{
gdIOCtx *out = gdNewFileCtx(outFile);
- gdImagePngCtxEx(im, out, level);
+ gdImagePngCtxEx(im, out, level, basefilter);
out->gd_free(out);
}
void gdImagePng (gdImagePtr im, FILE * outFile)
{
gdIOCtx *out = gdNewFileCtx(outFile);
- gdImagePngCtxEx(im, out, -1);
+ gdImagePngCtxEx(im, out, -1, -1);
out->gd_free(out);
}
@@ -402,18 +402,18 @@ void * gdImagePngPtr (gdImagePtr im, int *size)
{
void *rv;
gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
- gdImagePngCtxEx(im, out, -1);
+ gdImagePngCtxEx(im, out, -1, -1);
rv = gdDPExtractData(out, size);
out->gd_free(out);
return rv;
}
-void * gdImagePngPtrEx (gdImagePtr im, int *size, int level)
+void * gdImagePngPtrEx (gdImagePtr im, int *size, int level, int basefilter)
{
void *rv;
gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
- gdImagePngCtxEx(im, out, level);
+ gdImagePngCtxEx(im, out, level, basefilter);
rv = gdDPExtractData(out, size);
out->gd_free(out);
return rv;
@@ -421,14 +421,14 @@ void * gdImagePngPtrEx (gdImagePtr im, int *size, int level)
void gdImagePngCtx (gdImagePtr im, gdIOCtx * outfile)
{
- gdImagePngCtxEx(im, outfile, -1);
+ gdImagePngCtxEx(im, outfile, -1, -1);
}
/* This routine is based in part on code from Dale Lutz (Safe Software Inc.)
* and in part on demo code from Chapter 15 of "PNG: The Definitive Guide"
* (http://www.cdrom.com/pub/png/pngbook.html).
*/
-void gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
+void gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level, int basefilter)
{
int i, j, bit_depth = 0, interlace_type;
int width = im->sx;
@@ -484,7 +484,10 @@ void gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
/* 2.0.12: this is finally a parameter */
png_set_compression_level(png_ptr, level);
-
+ if (basefilter >= 0) {
+ png_set_filter(png_ptr, PNG_FILTER_TYPE_BASE, basefilter);
+ }
+
/* can set this to a smaller value without compromising compression if all
* image data is 16K or less; will save some decoder memory [min == 8]
*/
diff --git a/ext/gd/tests/bug36697.phpt b/ext/gd/tests/bug36697.phpt
new file mode 100644
index 000000000..b257f63e2
--- /dev/null
+++ b/ext/gd/tests/bug36697.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Bug #36697 (TrueColor transparency with GIF palette output).
+--SKIPIF--
+<?php
+ if (!extension_loaded('gd')) {
+ die("skip gd extension not available\n");
+ }
+ if (!GD_BUNDLED) {
+ die('skip external GD libraries may fail');
+ }
+?>
+--FILE--
+<?php
+$dest = dirname(__FILE__) . "/36697.gif";
+
+$im = imagecreatetruecolor(192, 36);
+$trans_color = imagecolorallocate($im, 255, 0, 0);
+$color = imagecolorallocate($im, 255, 255, 255);
+imagecolortransparent($im, $trans_color);
+imagefilledrectangle($im, 0,0, 192,36, $trans_color);
+$c = imagecolorat($im, 191,35);
+imagegif($im, $dest);
+imagedestroy($im);
+$im = imagecreatefromgif($dest);
+$c = imagecolorat($im, 191, 35);
+$colors = imagecolorsforindex($im, $c);
+echo $colors['red'] . ' ' . $colors['green'] . ' ' . $colors['blue'];
+@unlink($dest);
+?>
+--EXPECT--
+255 0 0
diff --git a/ext/gd/tests/bug37346.gif b/ext/gd/tests/bug37346.gif
new file mode 100644
index 000000000..76ce1e398
--- /dev/null
+++ b/ext/gd/tests/bug37346.gif
@@ -0,0 +1,4 @@
+GIF89a
+<
+
+¿´°É, ÎÒ¶¼Ëµ¹ýÂ˲»ÑÏÁË \ No newline at end of file
diff --git a/ext/gd/tests/bug37346.phpt b/ext/gd/tests/bug37346.phpt
new file mode 100644
index 000000000..859518e1f
--- /dev/null
+++ b/ext/gd/tests/bug37346.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Bug #37346 (gdimagecreatefromgif, bad colormap)
+--SKIPIF--
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
+ if (!GD_BUNDLED) die('skip external GD libraries always fail');
+?>
+--FILE--
+<?php
+$im = imagecreatefromgif(dirname(__FILE__) . '/bug37346.gif');
+?>
+--EXPECTF--
+Warning: imagecreatefromgif(): '%sbug37346.gif' is not a valid GIF file in %sbug37346.php on line %d
diff --git a/ext/gd/tests/bug37360.gif b/ext/gd/tests/bug37360.gif
new file mode 100644
index 000000000..3f9e6c5e4
--- /dev/null
+++ b/ext/gd/tests/bug37360.gif
Binary files differ
diff --git a/ext/gd/tests/bug37360.phpt b/ext/gd/tests/bug37360.phpt
new file mode 100644
index 000000000..dce22e7c6
--- /dev/null
+++ b/ext/gd/tests/bug37360.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Bug #37360 (gdimagecreatefromgif, bad image sizes)
+--SKIPIF--
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
+ if (!GD_BUNDLED) die('skip external GD libraries always fail');
+?>
+--FILE--
+<?php
+$im = imagecreatefromgif(dirname(__FILE__) . '/bug37360.gif');
+var_dump($im);
+?>
+--EXPECTF--
+resource(%d) of type (gd)
diff --git a/ext/gettext/config.w32 b/ext/gettext/config.w32
index bfb586a36..1f79f722b 100644
--- a/ext/gettext/config.w32
+++ b/ext/gettext/config.w32
@@ -1,11 +1,11 @@
-// $Id: config.w32,v 1.2 2004/02/17 11:15:19 wez Exp $
+// $Id: config.w32,v 1.2.4.1 2006/04/09 23:14:47 edink Exp $
// vim:ft=javascript
ARG_WITH("gettext", "gettext support", "no");
if (PHP_GETTEXT != "no") {
if (CHECK_LIB("libintl.lib", "gettext", PHP_GETTEXT) && CHECK_HEADER_ADD_INCLUDE("libintl.h", "CFLAGS_GETTEXT")) {
- EXTENSION("gettext", "gettext.c", PHP_GETTEXT_SHARED, "-DHAVE_BIND_TEXTDOMAIN_CODESET=1 -DHAVE_DNGETTEXT=1 -DHAVE_NGETTEXT=1 -DHAVE_LIBINTL=1");
+ EXTENSION("gettext", "gettext.c", PHP_GETTEXT_SHARED, "-DHAVE_BIND_TEXTDOMAIN_CODESET=1 -DHAVE_DNGETTEXT=1 -DHAVE_NGETTEXT=1 -DHAVE_LIBINTL=1 -DHAVE_DCNGETTEXT=1");
} else {
WARNING("gettext not enabled; libraries and headers not found");
}
diff --git a/ext/hash/config.m4 b/ext/hash/config.m4
index 01ac28b61..3aaa5426b 100644
--- a/ext/hash/config.m4
+++ b/ext/hash/config.m4
@@ -1,4 +1,4 @@
-dnl $Id: config.m4,v 1.10.2.3 2005/12/02 02:18:54 iliaa Exp $
+dnl $Id: config.m4,v 1.10.2.4 2006/02/19 23:39:53 mike Exp $
dnl config.m4 for extension hash
PHP_ARG_ENABLE(hash, whether to enable hash support,
@@ -7,6 +7,8 @@ PHP_ARG_ENABLE(hash, whether to enable hash support,
if test "$PHP_HASH" != "no"; then
AC_DEFINE(HAVE_HASH_EXT,1,[Have HASH Extension])
+ PHP_C_BIGENDIAN
+
AC_CHECK_SIZEOF(short, 2)
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(long, 4)
diff --git a/ext/hash/config.w32 b/ext/hash/config.w32
index 20fd5cef3..8b3d16800 100644
--- a/ext/hash/config.w32
+++ b/ext/hash/config.w32
@@ -1,7 +1,7 @@
-// $Id: config.w32,v 1.8.2.2 2005/12/02 01:59:44 iliaa Exp $
+// $Id: config.w32,v 1.8.2.3 2006/03/03 14:34:34 edink Exp $
// vim:ft=javascript
-ARG_ENABLE("hash", "enable hash support", "no");
+ARG_ENABLE("hash", "enable hash support", "yes");
if (PHP_HASH != "no") {
AC_DEFINE('HAVE_HASH_EXT', 1);
diff --git a/ext/hash/hash_adler32.c b/ext/hash/hash_adler32.c
index 1067dbfb3..5be7e53f3 100644
--- a/ext/hash/hash_adler32.c
+++ b/ext/hash/hash_adler32.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash_adler32.c,v 1.3.2.3 2006/01/01 12:50:07 sniper Exp $ */
+/* $Id: hash_adler32.c,v 1.3.2.4 2006/04/25 08:34:25 mike Exp $ */
#include "php_hash.h"
#include "php_hash_adler32.h"
@@ -29,8 +29,10 @@ PHP_HASH_API void PHP_ADLER32Init(PHP_ADLER32_CTX *context)
PHP_HASH_API void PHP_ADLER32Update(PHP_ADLER32_CTX *context, const unsigned char *input, size_t len)
{
- php_hash_uint32 i, s[2] = { context->state & 0xffff, (context->state >> 16) & 0xffff };
+ php_hash_uint32 i, s[2];
+ s[0] = context->state & 0xffff;
+ s[1] = (context->state >> 16) & 0xffff;
for (i = 0; i < len; ++i) {
s[0] = (s[0] + input[i]) % 65521;
s[1] = (s[1] + s[0]) % 65521;
diff --git a/ext/hash/hash_tiger.c b/ext/hash/hash_tiger.c
index 2a30bed13..5c0b8d87e 100644
--- a/ext/hash/hash_tiger.c
+++ b/ext/hash/hash_tiger.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: hash_tiger.c,v 1.4.2.3 2006/01/01 12:50:07 sniper Exp $ */
+/* $Id: hash_tiger.c,v 1.4.2.4 2006/02/19 23:39:53 mike Exp $ */
#include "php_hash.h"
#include "php_hash_tiger.h"
@@ -88,6 +88,24 @@
} \
feedforward
+#define split_ex(str) \
+ x0=str[0]; x1=str[1]; x2=str[2]; x3=str[3]; \
+ x4=str[4]; x5=str[5]; x6=str[6]; x7=str[7];
+#ifdef WORDS_BIGENDIAN
+# define split(str) \
+ { \
+ int i; \
+ php_hash_uint64 tmp[8]; \
+ \
+ for (i = 0; i < 64; ++i) { \
+ ((unsigned char *) tmp)[i^7] = ((unsigned char *) str)[i]; \
+ } \
+ split_ex(tmp); \
+ }
+#else
+# define split split_ex
+#endif
+
#define tiger_compress(passes, str, state) \
{ \
register php_hash_uint64 a, b, c, tmpa, x0, x1, x2, x3, x4, x5, x6, x7; \
@@ -98,8 +116,7 @@
b = state[1]; \
c = state[2]; \
\
- x0=str[0]; x1=str[1]; x2=str[2]; x3=str[3]; \
- x4=str[4]; x5=str[5]; x6=str[6]; x7=str[7]; \
+ split(str); \
\
compress(passes); \
\
@@ -118,7 +135,7 @@ static inline void TigerFinalize(PHP_TIGER_CTX *context)
memset(&context->buffer[context->length], 0, 8-context->length%8);
context->length += 8-context->length%8;
}
-
+
if (context->length > 56) {
memset(&context->buffer[context->length], 0, 64 - context->length);
tiger_compress(context->passes, ((php_hash_uint64 *) context->buffer), context->state);
@@ -126,8 +143,19 @@ static inline void TigerFinalize(PHP_TIGER_CTX *context)
} else {
memset(&context->buffer[context->length], 0, 56 - context->length);
}
-
+
+#ifndef WORDS_BIGENDIAN
memcpy(&context->buffer[56], &context->passed, sizeof(php_hash_uint64));
+#else
+ context->buffer[56] = (unsigned char) (context->passed & 0xff);
+ context->buffer[57] = (unsigned char) ((context->passed >> 8) & 0xff);
+ context->buffer[58] = (unsigned char) ((context->passed >> 16) & 0xff);
+ context->buffer[59] = (unsigned char) ((context->passed >> 24) & 0xff);
+ context->buffer[60] = (unsigned char) ((context->passed >> 32) & 0xff);
+ context->buffer[61] = (unsigned char) ((context->passed >> 40) & 0xff);
+ context->buffer[62] = (unsigned char) ((context->passed >> 48) & 0xff);
+ context->buffer[63] = (unsigned char) ((context->passed >> 56) & 0xff);
+#endif
tiger_compress(context->passes, ((php_hash_uint64 *) context->buffer), context->state);
}
@@ -165,11 +193,12 @@ PHP_HASH_API void PHP_TIGERUpdate(PHP_TIGER_CTX *context, const unsigned char *i
}
for (; i + 64 <= len; i += 64) {
- tiger_compress(context->passes, ((const php_hash_uint64 *) (input + i)), context->state);
+ memcpy(context->buffer, &input[i], 64);
+ tiger_compress(context->passes, ((const php_hash_uint64 *) context->buffer), context->state);
context->passed += 512;
}
-
- memcpy(context->buffer, input + i, r);
+ memset(&context->buffer[r], 0, 64-r);
+ memcpy(context->buffer, &input[i], r);
context->length = r;
}
}
diff --git a/ext/hash/php_hash.h b/ext/hash/php_hash.h
index d22ec8c45..9ce1f24de 100644
--- a/ext/hash/php_hash.h
+++ b/ext/hash/php_hash.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash.h,v 1.13.2.6 2006/01/01 12:50:07 sniper Exp $ */
+/* $Id: php_hash.h,v 1.13.2.7 2006/01/16 23:04:23 tony2001 Exp $ */
#ifndef PHP_HASH_H
#define PHP_HASH_H
@@ -122,7 +122,7 @@ PHP_HASH_API void php_hash_register_algo(const char *algo, php_hash_ops *ops);
static inline void php_hash_bin2hex(char *out, const unsigned char *in, int in_len)
{
- static const char hexits[16] = "0123456789abcdef";
+ static const char hexits[17] = "0123456789abcdef";
int i;
for(i = 0; i < in_len; i++) {
diff --git a/ext/hash/php_hash_types.h b/ext/hash/php_hash_types.h
index 382ad7d5d..af1852aef 100644
--- a/ext/hash/php_hash_types.h
+++ b/ext/hash/php_hash_types.h
@@ -16,13 +16,17 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_hash_types.h,v 1.2.2.3 2006/01/01 12:50:07 sniper Exp $ */
+/* $Id: php_hash_types.h,v 1.2.2.4 2006/02/19 23:39:53 mike Exp $ */
#ifndef PHP_HASH_TYPES_H
#define PHP_HASH_TYPES_H
#ifdef HAVE_CONFIG_H
#include "config.h"
+#else
+#ifndef PHP_WIN32
+#include "php_config.h"
+#endif
#endif
#ifndef PHP_WIN32
diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c
index b6494d45f..b646399a2 100644
--- a/ext/iconv/iconv.c
+++ b/ext/iconv/iconv.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: iconv.c,v 1.124.2.5 2006/01/01 12:50:08 sniper Exp $ */
+/* $Id: iconv.c,v 1.124.2.8 2006/04/27 00:50:54 moriyoshi Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -583,7 +583,7 @@ static php_iconv_err_t _php_iconv_substr(smart_str *pretval,
size_t out_left;
unsigned int cnt;
- unsigned int total_len;
+ int total_len;
err = _php_iconv_strlen(&total_len, str, nbytes, enc);
if (err != PHP_ICONV_ERR_SUCCESS) {
@@ -822,18 +822,16 @@ static php_iconv_err_t _php_iconv_strpos(unsigned int *pretval,
j += GENERIC_SUPERSET_NBYTES;
}
- if (!_php_iconv_memequal(buf, &ndl_buf[i], sizeof(buf))) {
- i = 0;
- }
-
- if (i == 0) {
- match_ofs = (unsigned int)-1;
- } else {
+ if (_php_iconv_memequal(buf, &ndl_buf[i], sizeof(buf))) {
match_ofs += (lim - i) / GENERIC_SUPERSET_NBYTES;
i += GENERIC_SUPERSET_NBYTES;
+ ndl_buf_p = &ndl_buf[i];
+ ndl_buf_left = ndl_buf_len - i;
+ } else {
+ match_ofs = (unsigned int)-1;
+ ndl_buf_p = ndl_buf;
+ ndl_buf_left = ndl_buf_len;
}
- ndl_buf_p = &ndl_buf[i];
- ndl_buf_left = ndl_buf_len - i;
}
}
} else {
@@ -867,18 +865,16 @@ static php_iconv_err_t _php_iconv_strpos(unsigned int *pretval,
j += GENERIC_SUPERSET_NBYTES;
}
- if (!_php_iconv_memequal(buf, &ndl_buf[i], sizeof(buf))) {
- i = 0;
- }
-
- if (i == 0) {
- match_ofs = (unsigned int)-1;
- } else {
+ if (_php_iconv_memequal(buf, &ndl_buf[i], sizeof(buf))) {
match_ofs += (lim - i) / GENERIC_SUPERSET_NBYTES;
i += GENERIC_SUPERSET_NBYTES;
+ ndl_buf_p = &ndl_buf[i];
+ ndl_buf_left = ndl_buf_len - i;
+ } else {
+ match_ofs = (unsigned int)-1;
+ ndl_buf_p = ndl_buf;
+ ndl_buf_left = ndl_buf_len;
}
- ndl_buf_p = &ndl_buf[i];
- ndl_buf_left = ndl_buf_len - i;
}
}
}
@@ -1395,11 +1391,13 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
case 3: /* expecting a encoding scheme specifier */
switch (*p1) {
+ case 'b':
case 'B':
enc_scheme = PHP_ICONV_ENC_SCHEME_BASE64;
scan_stat = 4;
break;
+ case 'q':
case 'Q':
enc_scheme = PHP_ICONV_ENC_SCHEME_QPRINT;
scan_stat = 4;
diff --git a/ext/iconv/php_iconv.h b/ext/iconv/php_iconv.h
index b6149471d..2736b35de 100644
--- a/ext/iconv/php_iconv.h
+++ b/ext/iconv/php_iconv.h
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Revision: 1.28.2.1 $ */
+/* $Revision: 1.28.2.2 $ */
#ifndef PHP_ICONV_H
#define PHP_ICONV_H
@@ -93,7 +93,7 @@ typedef enum _php_iconv_err_t {
} php_iconv_err_t;
/* }}} */
-PHP_ICONV_API php_iconv_err_t php_iconv_string(const char * in_p, size_t in_len, char **out, size_t *out_len, const char *in_charset, const char *out_charset);
+PHP_ICONV_API php_iconv_err_t php_iconv_string(const char * in_p, size_t in_len, char **out, size_t *out_len, const char *out_charset, const char *in_charset);
#else
diff --git a/ext/iconv/tests/bug37176.phpt b/ext/iconv/tests/bug37176.phpt
new file mode 100644
index 000000000..3923dbd49
--- /dev/null
+++ b/ext/iconv/tests/bug37176.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Bug #37176 (iconv_strpos() fails to find a string)
+--FILE--
+<?php
+var_dump(iconv_strpos('11--','1-',0,'UTF-8'));
+var_dump(iconv_strpos('-11--','1-',0,'UTF-8'));
+?>
+--EXPECT--
+int(1)
+int(2)
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c
index 8c9841add..9b07924f6 100644
--- a/ext/imap/php_imap.c
+++ b/ext/imap/php_imap.c
@@ -26,7 +26,7 @@
| PHP 4.0 updates: Zeev Suraski <zeev@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_imap.c,v 1.208.2.4 2006/01/05 00:47:16 iliaa Exp $ */
+/* $Id: php_imap.c,v 1.208.2.9 2006/08/11 15:07:13 iliaa Exp $ */
#define IMAP41
@@ -36,6 +36,7 @@
#include "php.h"
#include "php_ini.h"
+#include "php_streams.h"
#include "ext/standard/php_string.h"
#include "ext/standard/info.h"
#include "ext/standard/file.h"
@@ -67,6 +68,9 @@ static void _php_imap_add_body(zval *arg, BODY *body TSRMLS_DC);
static void _php_imap_parse_address(ADDRESS *addresslist, char **fulladdress, zval *paddress TSRMLS_DC);
static int _php_imap_address_size(ADDRESS *addresslist);
+/* the gets we use */
+static char *php_mail_gets(readfn_t f, void *stream, unsigned long size, GETS_DATA *md);
+
/* These function declarations are missing from the IMAP header files... */
void rfc822_date(char *date);
char *cpystr(const char *str);
@@ -93,6 +97,7 @@ zend_function_entry imap_functions[] = {
PHP_FE(imap_body, NULL)
PHP_FE(imap_bodystruct, NULL)
PHP_FE(imap_fetchbody, NULL)
+ PHP_FE(imap_savebody, NULL)
PHP_FE(imap_fetchheader, NULL)
PHP_FE(imap_fetchstructure, NULL)
PHP_FE(imap_expunge, NULL)
@@ -418,6 +423,7 @@ static void php_imap_init_globals(zend_imap_globals *imap_globals)
imap_globals->quota_return = NIL;
imap_globals->imap_acl_list = NIL;
#endif
+ imap_globals->gets_stream = NIL;
}
/* }}} */
@@ -460,6 +466,9 @@ PHP_MINIT_FUNCTION(imap)
/* lets allow NIL */
REGISTER_LONG_CONSTANT("NIL", NIL, CONST_PERSISTENT | CONST_CS);
+ /* plug in our gets */
+ mail_parameters(NIL, SET_GETS, (void *) php_mail_gets);
+
/* set default timeout values */
mail_parameters(NIL, SET_OPENTIMEOUT, (void *) FG(default_socket_timeout));
mail_parameters(NIL, SET_READTIMEOUT, (void *) FG(default_socket_timeout));
@@ -650,6 +659,7 @@ PHP_RINIT_FUNCTION(imap)
{
IMAPG(imap_errorstack) = NIL;
IMAPG(imap_alertstack) = NIL;
+ IMAPG(gets_stream) = NIL;
return SUCCESS;
}
/* }}} */
@@ -751,6 +761,13 @@ static void php_imap_do_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
efree(IMAPG(imap_password));
}
+ /* local filename, need to perform open_basedir and safe_mode checks */
+ if (Z_STRVAL_PP(mailbox)[0] != '{' &&
+ (php_check_open_basedir(Z_STRVAL_PP(mailbox) TSRMLS_CC) ||
+ (PG(safe_mode) && !php_checkuid(Z_STRVAL_PP(mailbox), NULL, CHECKUID_CHECK_FILE_AND_DIR)))) {
+ RETURN_FALSE;
+ }
+
IMAPG(imap_user) = estrndup(Z_STRVAL_PP(user), Z_STRLEN_PP(user));
IMAPG(imap_password) = estrndup(Z_STRVAL_PP(passwd), Z_STRLEN_PP(passwd));
@@ -807,6 +824,14 @@ PHP_FUNCTION(imap_reopen)
}
imap_le_struct->flags = cl_flags;
}
+
+ /* local filename, need to perform open_basedir and safe_mode checks */
+ if (Z_STRVAL_PP(mailbox)[0] != '{' &&
+ (php_check_open_basedir(Z_STRVAL_PP(mailbox) TSRMLS_CC) ||
+ (PG(safe_mode) && !php_checkuid(Z_STRVAL_PP(mailbox), NULL, CHECKUID_CHECK_FILE_AND_DIR)))) {
+ RETURN_FALSE;
+ }
+
imap_stream = mail_open(imap_le_struct->imap_stream, Z_STRVAL_PP(mailbox), flags);
if (imap_stream == NIL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't re-open stream");
@@ -1845,6 +1870,57 @@ PHP_FUNCTION(imap_fetchbody)
/* }}} */
+/* {{{ proto bool imap_savebody(resource stream_id, string|resource file, int msg_no[, string section = ""[, int options = 0]])
+ Save a specific body section to a file */
+PHP_FUNCTION(imap_savebody)
+{
+ zval *stream, *out;
+ pils *imap_ptr = NULL;
+ php_stream *writer = NULL;
+ char *section = "";
+ int section_len = 0, close_stream = 1;
+ long msgno, flags = 0;
+
+ if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rzl|sl", &stream, &out, &msgno, &section, &section_len, &flags)) {
+ RETURN_FALSE;
+ }
+
+ ZEND_FETCH_RESOURCE(imap_ptr, pils *, &stream, -1, "imap", le_imap);
+
+ if (!imap_ptr) {
+ RETURN_FALSE;
+ }
+
+ switch (Z_TYPE_P(out))
+ {
+ case IS_LONG:
+ case IS_RESOURCE:
+ close_stream = 0;
+ php_stream_from_zval(writer, &out);
+ break;
+
+ default:
+ convert_to_string_ex(&out);
+ writer = php_stream_open_wrapper(Z_STRVAL_P(out), "wb", REPORT_ERRORS|ENFORCE_SAFE_MODE, NULL);
+ break;
+ }
+
+ if (!writer) {
+ RETURN_FALSE;
+ }
+
+ IMAPG(gets_stream) = writer;
+ mail_fetchbody_full(imap_ptr->imap_stream, msgno, section, NULL, flags);
+ IMAPG(gets_stream) = NULL;
+
+ if (close_stream) {
+ php_stream_close(writer);
+ }
+
+ RETURN_TRUE;
+}
+/* }}} */
+
/* {{{ proto string imap_base64(string text)
Decode BASE64 encoded text */
PHP_FUNCTION(imap_base64)
@@ -4147,6 +4223,52 @@ PHP_FUNCTION(imap_timeout)
}
/* }}} */
+#define GETS_FETCH_SIZE 8196LU
+/* {{{ php_mail_gets */
+static char *php_mail_gets(readfn_t f, void *stream, unsigned long size, GETS_DATA *md)
+{
+ TSRMLS_FETCH();
+
+ /* write to the gets stream if it is set,
+ otherwise forward to c-clients gets */
+ if (IMAPG(gets_stream)) {
+ char buf[GETS_FETCH_SIZE];
+
+ while (size) {
+ unsigned long read;
+
+ if (size > GETS_FETCH_SIZE) {
+ read = GETS_FETCH_SIZE;
+ size -=GETS_FETCH_SIZE;
+ } else {
+ read = size;
+ size = 0;
+ }
+
+ if (!f(stream, read, buf)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to read from socket");
+ break;
+ } else if (read != php_stream_write(IMAPG(gets_stream), buf, read)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to write to stream");
+ break;
+ }
+ }
+ return NULL;
+ } else {
+ char *buf = malloc(size + 1);
+
+ if (f(stream, size, buf)) {
+ buf[size] = '\0';
+ } else {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to read from socket");
+ free(buf);
+ buf = NULL;
+ }
+ return buf;
+ }
+}
+/* }}} */
+
/* {{{ Interfaces to C-client
*/
void mm_searched(MAILSTREAM *stream, unsigned long number)
diff --git a/ext/imap/php_imap.h b/ext/imap/php_imap.h
index f29ba4af4..1bfeaa715 100644
--- a/ext/imap/php_imap.h
+++ b/ext/imap/php_imap.h
@@ -27,7 +27,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_imap.h,v 1.32.2.1 2006/01/01 12:50:08 sniper Exp $ */
+/* $Id: php_imap.h,v 1.32.2.2 2006/01/27 19:46:11 mike Exp $ */
#ifndef PHP_IMAP_H
#define PHP_IMAP_H
@@ -114,6 +114,7 @@ PHP_FUNCTION(imap_rfc822_parse_headers);
PHP_FUNCTION(imap_body);
PHP_FUNCTION(imap_fetchstructure);
PHP_FUNCTION(imap_fetchbody);
+PHP_FUNCTION(imap_savebody);
PHP_FUNCTION(imap_expunge);
PHP_FUNCTION(imap_delete);
PHP_FUNCTION(imap_undelete);
@@ -205,6 +206,8 @@ ZEND_BEGIN_MODULE_GLOBALS(imap)
zval **quota_return;
zval *imap_acl_list;
#endif
+ /* php_stream for php_mail_gets() */
+ php_stream *gets_stream;
ZEND_END_MODULE_GLOBALS(imap)
#ifdef ZTS
diff --git a/ext/informix/config.m4 b/ext/informix/config.m4
index c76eaff10..5597b72a6 100644
--- a/ext/informix/config.m4
+++ b/ext/informix/config.m4
@@ -1,5 +1,5 @@
dnl
-dnl $Id: config.m4,v 1.34 2005/07/29 19:41:00 sniper Exp $
+dnl $Id: config.m4,v 1.34.2.1 2006/05/04 19:00:10 tony2001 Exp $
dnl
PHP_ARG_WITH(informix,for Informix support,
@@ -60,7 +60,7 @@ if test "$PHP_INFORMIX" != "no"; then
AC_DEFINE_UNQUOTED(IFX_VERSION, $IFX_VERSION, [ ])
- if test $IFX_VERSION -ge "900"; then
+ if test $IFX_VERSION -ge 900; then
AC_DEFINE(HAVE_IFX_IUS,1,[ ])
IFX_ESQL_FLAGS="$IFX_ESQL_FLAGS -EDHAVE_IFX_IUS"
else
diff --git a/ext/informix/ifx.ec b/ext/informix/ifx.ec
index b949ca933..eaade11bc 100644
--- a/ext/informix/ifx.ec
+++ b/ext/informix/ifx.ec
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ifx.ec,v 1.109.2.3 2006/01/01 12:50:08 sniper Exp $ */
+/* $Id: ifx.ec,v 1.109.2.7 2006/05/04 22:48:16 tony2001 Exp $ */
/* -------------------------------------------------------------------
* if you want a function reference : "grep '^\*\*' ifx.ec" will give
@@ -96,14 +96,14 @@ static long php_intifx_create_char(char* param, long len, HashTable *list TSRMLS
static long php_intifx_free_char(long id, HashTable *list TSRMLS_DC);
static long php_intifx_update_char(long bid, char* param, long len, HashTable *list TSRMLS_DC);
static long php_intifx_get_char(long bid, HashTable *list, char** content TSRMLS_DC);
-#if HAVE_IFX_IUS
+$ifdef HAVE_IFX_IUS;
static long php_intifxus_create_slob(long create_mode, HashTable *list TSRMLS_DC);
static long php_intifxus_free_slob(long bid, HashTable *list TSRMLS_DC);
static long php_intifxus_close_slob(long bid, HashTable *list TSRMLS_DC);
static long php_intifxus_open_slob(long bid, long create_mode, HashTable *list TSRMLS_DC);
static long php_intifxus_new_slob(HashTable *list TSRMLS_DC);
static ifx_lo_t *php_intifxus_get_slobloc(long bid, HashTable *list TSRMLS_DC);
-#endif
+$endif;
/* 7.10 on (at least) AIX is missing this */
#ifndef CLIENT_SQLI_VER
@@ -534,12 +534,12 @@ EXEC SQL END DECLARE SECTION;
zend_rsrc_list_entry new_le;
if (IFXG(max_links) != -1 && IFXG(num_links) >= IFXG(max_links)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Too many open links (%d)", IFXG(num_links));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Too many open links (%ld)", IFXG(num_links));
efree(hashed_details);
RETURN_FALSE;
}
if (IFXG(max_persistent) != -1 && IFXG(num_persistent) >= IFXG(max_persistent)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Too many open persistent links (%d)", IFXG(num_persistent));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Too many open persistent links (%ld)", IFXG(num_persistent));
efree(hashed_details);
RETURN_FALSE;
}
@@ -643,7 +643,7 @@ EXEC SQL END DECLARE SECTION;
}
}
if (IFXG(max_links) != -1 && IFXG(num_links) >= IFXG(max_links)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Too many open links (%d)", IFXG(num_links));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Too many open links (%ld)", IFXG(num_links));
efree(hashed_details);
RETURN_FALSE;
}
@@ -972,7 +972,7 @@ EXEC SQL END DECLARE SECTION;
EXEC SQL DEALLOCATE DESCRIPTOR :i_descrpid;
EXEC SQL free :statemid;
efree(Ifx_Result);
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not an Informix blob-result index", (int)((*tmp)->value.lval));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not an Informix blob-result index", (int)((*tmp)->value.lval));
RETURN_FALSE;
}
if (locator->loc_loctype == LOCFNAME) {
@@ -1398,7 +1398,7 @@ EXEC SQL END DECLARE SECTION;
EXEC SQL DEALLOCATE DESCRIPTOR :i_descrpid;
EXEC SQL free :statemid;
efree(Ifx_Result);
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix blob-result index", (int)((*tmp)->value.lval));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a Informix blob-result index", (*tmp)->value.lval);
RETURN_FALSE;
}
if (locator->loc_loctype == LOCFNAME) {
@@ -1564,7 +1564,7 @@ EXEC SQL END DECLARE SECTION;
PHP_IFX_CHECK_CONNECTION(ifx);
if (Ifx_Result->iscursory < 0) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resultindex %d is not a prepared query", Z_LVAL_PP(result));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resultindex %ld is not a prepared query", Z_LVAL_PP(result));
RETURN_FALSE;
}
@@ -2624,6 +2624,7 @@ EXEC SQL END DECLARE SECTION;
IFXG(sv_sqlcode) = SQLCODE;
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Get descriptor (field # %d) fails (%s)", i, ifx_err);
efree(ifx_err);
+ zval_dtor(return_value);
RETURN_FALSE;
}
@@ -2789,6 +2790,7 @@ EXEC SQL END DECLARE SECTION;
IFXG(sv_sqlcode) = SQLCODE;
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Get descriptor (field # %d) fails (%s)", i, ifx_err);
efree(ifx_err);
+ zval_dtor(return_value);
RETURN_FALSE;
}
@@ -3049,7 +3051,7 @@ static long php_intifx_getType(long id, HashTable *list TSRMLS_DC)
Ifx_res = (IFX_IDRES *) zend_list_find(id, &type);
if (type != le_idresult) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix id-result index", id);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a Informix id-result index", id);
return -1;
}
return Ifx_res->type;
@@ -3331,7 +3333,7 @@ static long php_intifx_copy_blob(long bid, HashTable *list TSRMLS_DC)
Ifx_blob_orig = (IFX_IDRES *) zend_list_find(bid, &type);
if (type != le_idresult || !(Ifx_blob_orig->type == TYPE_BLBYTE || Ifx_blob_orig->type == TYPE_BLTEXT)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix blob-result index", bid);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a Informix blob-result index", bid);
return -1;
}
@@ -3425,12 +3427,12 @@ static long php_intifx_free_blob(long bid, HashTable *list TSRMLS_DC)
Ifx_blob = (IFX_IDRES *) zend_list_find(bid, &type);
if (type != le_idresult && !(Ifx_blob->type == TYPE_BLTEXT || Ifx_blob->type == TYPE_BLBYTE)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix blob-result index", bid);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a Informix blob-result index", bid);
return -1;
}
if (!(Ifx_blob->type == TYPE_BLTEXT || Ifx_blob->type == TYPE_BLBYTE)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix BYTE or TEXT type", bid);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a Informix BYTE or TEXT type", bid);
return -1;
}
@@ -3488,7 +3490,7 @@ static long php_intifx_get_blob(long bid, HashTable *list, char** content TSRMLS
Ifx_blob = (IFX_IDRES *) zend_list_find(bid, &type);
if (type != le_idresult && !(Ifx_blob->type == TYPE_BLTEXT || Ifx_blob->type == TYPE_BLBYTE)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix blob-result index", bid);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a Informix blob-result index", bid);
return -1;
}
@@ -3517,7 +3519,7 @@ static loc_t *php_intifx_get_blobloc(long bid, HashTable *list TSRMLS_DC)
Ifx_blob = (IFX_IDRES *) zend_list_find(bid, &type);
if (type != le_idresult && !(Ifx_blob->type == TYPE_BLTEXT || Ifx_blob->type == TYPE_BLBYTE)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix blob-result index", bid);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a Informix blob-result index", bid);
return NULL;
}
return &(Ifx_blob->BLOB.blob_data);
@@ -3572,7 +3574,7 @@ static long php_intifx_update_blob(long bid, char* param, long len, HashTable *l
Ifx_blob = (IFX_IDRES *) zend_list_find(bid, &type);
if (type != le_idresult && !(Ifx_blob->type == TYPE_BLTEXT || Ifx_blob->type == TYPE_BLBYTE)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix blob-result index", bid);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a Informix blob-result index", bid);
return -1;
}
@@ -3948,6 +3950,7 @@ static long php_intifx_create_char(char* param, long len, HashTable *list TSRMLS
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create char-resource");
return -1;
}
+ memset(Ifx_char, 0, sizeof(IFX_IDRES));
Ifx_char->type = TYPE_CHAR;
@@ -4018,7 +4021,7 @@ static long php_intifx_get_char(long bid, HashTable *list, char** content TSRMLS
Ifx_char = (IFX_IDRES *) zend_list_find(bid, &type);
if (type != le_idresult && !(Ifx_char->type == TYPE_CHAR)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix char-result index", bid);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a Informix char-result index", bid);
return -1;
}
@@ -4071,7 +4074,7 @@ static long php_intifx_free_char(long bid, HashTable *list TSRMLS_DC)
Ifx_char = (IFX_IDRES *) zend_list_find(bid, &type);
if (type != le_idresult && !(Ifx_char->type == TYPE_CHAR)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix char-result index", bid);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a Informix char-result index", bid);
return -1;
}
@@ -4131,7 +4134,7 @@ static long php_intifx_update_char(long bid, char* param, long len, HashTable *l
Ifx_char = (IFX_IDRES *) zend_list_find(bid, &type);
if (type != le_idresult && !(Ifx_char->type == TYPE_CHAR)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix char-result index", bid);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a Informix char-result index", bid);
return -1;
}
@@ -4232,6 +4235,7 @@ static long php_intifxus_create_slob(long create_mode, HashTable *list TSRMLS_DC
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create slob-resource");
return -1;
}
+ memset(Ifx_slob, 0, sizeof(IFX_IDRES));
errcode = ifx_lo_def_create_spec(&(Ifx_slob->SLOB.createspec));
if (errcode < 0) {
@@ -4474,6 +4478,7 @@ static long php_intifxus_new_slob(HashTable *list TSRMLS_DC)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create slob-resource");
return -1;
}
+ memset(Ifx_slob, 0, sizeof(IFX_IDRES));
Ifx_slob->type = TYPE_SLOB;
Ifx_slob->SLOB.lofd = -1;
diff --git a/ext/mbstring/config.m4 b/ext/mbstring/config.m4
index 98df11f48..b62d8710c 100644
--- a/ext/mbstring/config.m4
+++ b/ext/mbstring/config.m4
@@ -1,5 +1,5 @@
dnl
-dnl $Id: config.m4,v 1.58.2.3 2005/12/23 15:18:52 hirokawa Exp $
+dnl $Id: config.m4,v 1.58.2.4 2006/04/17 22:13:56 sniper Exp $
dnl
AC_DEFUN([PHP_MBSTRING_ADD_SOURCES], [
@@ -293,7 +293,7 @@ if test "$PHP_MBSTRING" != "no"; then
dnl libmbfl is required
PHP_MBSTRING_SETUP_LIBMBFL
PHP_MBSTRING_EXTENSION
- PHP_INSTALL_HEADERS([ext/mbstring], [libmbfl libmbfl/mbfl])
+ PHP_INSTALL_HEADERS([ext/mbstring], [libmbfl/ libmbfl/mbfl])
fi
# vim600: sts=2 sw=2 et
diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter.c b/ext/mbstring/libmbfl/mbfl/mbfilter.c
index ec3409d8e..a8e3b68d3 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfilter.c
+++ b/ext/mbstring/libmbfl/mbfl/mbfilter.c
@@ -331,6 +331,24 @@ mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *str
return mbfl_memory_device_result(&convd->device, result);
}
+int mbfl_buffer_illegalchars(mbfl_buffer_converter *convd)
+{
+ int num_illegalchars = 0;
+
+ if (convd == NULL) {
+ return 0;
+ }
+
+ if (convd->filter1 != NULL) {
+ num_illegalchars += convd->filter1->num_illegalchar;
+ }
+
+ if (convd->filter2 != NULL) {
+ num_illegalchars += convd->filter2->num_illegalchar;
+ }
+
+ return (num_illegalchars);
+}
/*
* encoding detector
diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter.h b/ext/mbstring/libmbfl/mbfl/mbfilter.h
index 702079ac4..f958e936a 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfilter.h
+++ b/ext/mbstring/libmbfl/mbfl/mbfilter.h
@@ -129,6 +129,7 @@ MBFLAPI extern int mbfl_buffer_converter_flush(mbfl_buffer_converter *convd);
MBFLAPI extern mbfl_string * mbfl_buffer_converter_getbuffer(mbfl_buffer_converter *convd, mbfl_string *result);
MBFLAPI extern mbfl_string * mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result);
MBFLAPI extern mbfl_string * mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *string, mbfl_string *result);
+MBFLAPI extern int mbfl_buffer_illegalchars(mbfl_buffer_converter *convd);
/*
* encoding detector
diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_convert.c b/ext/mbstring/libmbfl/mbfl/mbfl_convert.c
index 981bba6af..78a995cd2 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfl_convert.c
+++ b/ext/mbstring/libmbfl/mbfl/mbfl_convert.c
@@ -250,6 +250,7 @@ mbfl_convert_filter_new(
filter->data = data;
filter->illegal_mode = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR;
filter->illegal_substchar = 0x3f; /* '?' */
+ filter->num_illegalchar = 0;
/* setup the function table */
mbfl_convert_filter_reset_vtbl(filter);
@@ -317,6 +318,7 @@ mbfl_convert_filter_copy(
dist->to = src->to;
dist->illegal_mode = src->illegal_mode;
dist->illegal_substchar = src->illegal_substchar;
+ dist->num_illegalchar = src->num_illegalchar;
}
int mbfl_convert_filter_devcat(mbfl_convert_filter *filter, mbfl_memory_device *src)
@@ -432,7 +434,7 @@ mbfl_filt_conv_illegal_output(int c, mbfl_convert_filter *filter)
break;
}
filter->illegal_mode = mode_backup;
-
+ filter->num_illegalchar++;
return ret;
}
diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_convert.h b/ext/mbstring/libmbfl/mbfl/mbfl_convert.h
index afec8f062..bf8b3bd63 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfl_convert.h
+++ b/ext/mbstring/libmbfl/mbfl/mbfl_convert.h
@@ -51,6 +51,7 @@ struct _mbfl_convert_filter {
const mbfl_encoding *to;
int illegal_mode;
int illegal_substchar;
+ int num_illegalchar;
void *opaque;
};
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 8adce024f..dbf2bf413 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mbstring.c,v 1.224.2.12 2006/01/01 12:50:08 sniper Exp $ */
+/* $Id: mbstring.c,v 1.224.2.23 2006/05/11 14:47:34 masugata Exp $ */
/*
* PHP 4 Multibyte String module "mbstring"
@@ -164,7 +164,7 @@ static
ZEND_BEGIN_ARG_INFO(third_and_rest_force_ref, 1)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(0)
- ZEND_END_ARG_INFO();
+ ZEND_END_ARG_INFO()
/* {{{ mb_overload_def mb_ovld[] */
static const struct mb_overload_def mb_ovld[] = {
@@ -220,6 +220,7 @@ zend_function_entry mbstring_functions[] = {
PHP_FE(mb_decode_numericentity, NULL)
PHP_FE(mb_send_mail, NULL)
PHP_FE(mb_get_info, NULL)
+ PHP_FE(mb_check_encoding, NULL)
#if HAVE_MBREGEX
PHP_MBREGEX_FUNCTION_ENTRIES
#endif
@@ -687,14 +688,26 @@ static PHP_INI_MH(OnUpdate_mbstring_script_encoding)
/* {{{ static PHP_INI_MH(OnUpdate_mbstring_substitute_character) */
static PHP_INI_MH(OnUpdate_mbstring_substitute_character)
{
+ int c;
+ char *endptr = NULL;
+
if (new_value != NULL) {
if (strcasecmp("none", new_value) == 0) {
MBSTRG(filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE;
+ MBSTRG(current_filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE;
} else if (strcasecmp("long", new_value) == 0) {
MBSTRG(filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG;
+ MBSTRG(current_filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG;
} else {
MBSTRG(filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR;
- MBSTRG(filter_illegal_substchar) = zend_atoi(new_value, new_value_length);
+ MBSTRG(current_filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR;
+ if (new_value_length >0) {
+ c = strtol(new_value, &endptr, 0);
+ if (*endptr == '\0') {
+ MBSTRG(filter_illegal_substchar) = c;
+ MBSTRG(current_filter_illegal_substchar) = c;
+ }
+ }
}
}
@@ -777,6 +790,7 @@ static void _php_mb_globals_ctor(zend_mbstring_globals *pglobals TSRMLS_DC)
MBSTRG(filter_illegal_substchar) = 0x3f; /* '?' */
MBSTRG(current_filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR;
MBSTRG(current_filter_illegal_substchar) = 0x3f; /* '?' */
+ MBSTRG(illegalchars) = 0;
MBSTRG(func_overload) = 0;
MBSTRG(encoding_translation) = 0;
MBSTRG(strict_detection) = 0;
@@ -919,6 +933,7 @@ PHP_RINIT_FUNCTION(mbstring)
MBSTRG(current_http_output_encoding) = MBSTRG(http_output_encoding);
MBSTRG(current_filter_illegal_mode) = MBSTRG(filter_illegal_mode);
MBSTRG(current_filter_illegal_substchar) = MBSTRG(filter_illegal_substchar);
+ MBSTRG(illegalchars) = 0;
n = 0;
if (MBSTRG(detect_order_list)) {
@@ -987,6 +1002,7 @@ PHP_RSHUTDOWN_FUNCTION(mbstring)
MBSTRG(current_detect_order_list_size) = 0;
}
if (MBSTRG(outconv) != NULL) {
+ MBSTRG(illegalchars) += mbfl_buffer_illegalchars(MBSTRG(outconv));
mbfl_buffer_converter_delete(MBSTRG(outconv));
MBSTRG(outconv) = NULL;
}
@@ -1443,6 +1459,7 @@ PHP_FUNCTION(mb_output_handler)
if ((arg_status & PHP_OUTPUT_HANDLER_START) != 0) {
/* delete the converter just in case. */
if (MBSTRG(outconv)) {
+ MBSTRG(illegalchars) += mbfl_buffer_illegalchars(MBSTRG(outconv));
mbfl_buffer_converter_delete(MBSTRG(outconv));
MBSTRG(outconv) = NULL;
}
@@ -1507,6 +1524,7 @@ PHP_FUNCTION(mb_output_handler)
/* delete the converter if it is the last feed. */
if (last_feed) {
+ MBSTRG(illegalchars) += mbfl_buffer_illegalchars(MBSTRG(outconv));
mbfl_buffer_converter_delete(MBSTRG(outconv));
MBSTRG(outconv) = NULL;
}
@@ -2071,6 +2089,7 @@ MBSTRING_API char * php_mb_convert_encoding(char *input, size_t length, char *_t
output = (char *)ret->val;
}
+ MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd);
mbfl_buffer_converter_delete(convd);
return output;
}
@@ -2717,6 +2736,7 @@ detect_end:
}
efree(stack);
+ MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd);
mbfl_buffer_converter_delete(convd);
}
@@ -3048,7 +3068,7 @@ PHP_FUNCTION(mb_send_mail)
char *extra_cmd=NULL;
int extra_cmd_len;
int i;
- char *to_r;
+ char *to_r = NULL;
char *force_extra_parameters = INI_STR("mail.force_extra_parameters");
struct {
int cnt_type:1;
@@ -3068,7 +3088,12 @@ PHP_FUNCTION(mb_send_mail)
HashTable ht_headers;
smart_str *s;
extern void mbfl_memory_device_unput(mbfl_memory_device *device);
-
+
+ if (PG(safe_mode) && (ZEND_NUM_ARGS() == 5)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE.");
+ RETURN_FALSE;
+ }
+
/* initialize */
mbfl_memory_device_init(&device, 0, 0);
mbfl_string_init(&orig_str);
@@ -3321,13 +3346,20 @@ PHP_FUNCTION(mb_send_mail)
/* }}} */
-/* {{{ proto string mb_get_info([string type])
+/* {{{ proto mixed mb_get_info([string type])
Returns the current settings of mbstring */
PHP_FUNCTION(mb_get_info)
{
char *typ = NULL;
- int typ_len;
+ int typ_len, n;
char *name;
+ const struct mb_overload_def *over_func;
+ zval *row1, *row2;
+ const mbfl_language *lang = mbfl_no2language(MBSTRG(current_language));
+ enum mbfl_no_encoding *entry;
+#ifdef ZEND_MULTIBYTE
+ zval *row3;
+#endif /* ZEND_MULTIBYTE */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &typ, &typ_len) == FAILURE) {
RETURN_FALSE;
@@ -3344,9 +3376,82 @@ PHP_FUNCTION(mb_get_info)
if ((name = (char *)mbfl_no_encoding2name(MBSTRG(current_http_output_encoding))) != NULL) {
add_assoc_string(return_value, "http_output", name, 1);
}
- if ((name = (char *)mbfl_no_encoding2name(MBSTRG(func_overload))) != NULL) {
- add_assoc_string(return_value, "func_overload", name, 1);
+ if (MBSTRG(func_overload)){
+ over_func = &(mb_ovld[0]);
+ MAKE_STD_ZVAL(row1);
+ array_init(row1);
+ while (over_func->type > 0) {
+ if ((MBSTRG(func_overload) & over_func->type) == over_func->type ) {
+ add_assoc_string(row1, over_func->orig_func, over_func->ovld_func, 1);
+ }
+ over_func++;
+ }
+ add_assoc_zval(return_value, "func_overload", row1);
+ } else {
+ add_assoc_string(return_value, "func_overload", "no overload", 1);
+ }
+ if (lang != NULL) {
+ if ((name = (char *)mbfl_no_encoding2name(lang->mail_charset)) != NULL) {
+ add_assoc_string(return_value, "mail_charset", name, 1);
+ }
+ if ((name = (char *)mbfl_no_encoding2name(lang->mail_header_encoding)) != NULL) {
+ add_assoc_string(return_value, "mail_header_encoding", name, 1);
+ }
+ if ((name = (char *)mbfl_no_encoding2name(lang->mail_body_encoding)) != NULL) {
+ add_assoc_string(return_value, "mail_body_encoding", name, 1);
+ }
+ }
+ add_assoc_long(return_value, "illegal_chars", MBSTRG(illegalchars));
+ if (MBSTRG(encoding_translation)) {
+ add_assoc_string(return_value, "encoding_translation", "On", 1);
+ } else {
+ add_assoc_string(return_value, "encoding_translation", "Off", 1);
+ }
+ if ((name = (char *)mbfl_no_language2name(MBSTRG(current_language))) != NULL) {
+ add_assoc_string(return_value, "language", name, 1);
+ }
+ n = MBSTRG(current_detect_order_list_size);
+ entry = MBSTRG(current_detect_order_list);
+ if(n > 0) {
+ MAKE_STD_ZVAL(row2);
+ array_init(row2);
+ while (n > 0) {
+ if ((name = (char *)mbfl_no_encoding2name(*entry)) != NULL) {
+ add_next_index_string(row2, name, 1);
+ }
+ entry++;
+ n--;
+ }
+ add_assoc_zval(return_value, "detect_order", row2);
+ }
+ if (MBSTRG(current_filter_illegal_mode) == MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE) {
+ add_assoc_string(return_value, "substitute_character", "none", 1);
+ } else if (MBSTRG(current_filter_illegal_mode) == MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG) {
+ add_assoc_string(return_value, "substitute_character", "long", 1);
+ } else {
+ add_assoc_long(return_value, "substitute_character", MBSTRG(current_filter_illegal_substchar));
+ }
+ if (MBSTRG(strict_detection)) {
+ add_assoc_string(return_value, "strict_detection", "On", 1);
+ } else {
+ add_assoc_string(return_value, "strict_detection", "Off", 1);
+ }
+#ifdef ZEND_MULTIBYTE
+ entry = MBSTRG(script_encoding_list);
+ n = MBSTRG(script_encoding_list_size);
+ if(n > 0) {
+ MAKE_STD_ZVAL(row3);
+ array_init(row3);
+ while (n > 0) {
+ if ((name = (char *)mbfl_no_encoding2name(*entry)) != NULL) {
+ add_next_index_string(row3, name, 1);
+ }
+ entry++;
+ n--;
+ }
+ add_assoc_zval(return_value, "script_encoding", row3);
}
+#endif /* ZEND_MULTIBYTE */
} else if (!strcasecmp("internal_encoding", typ)) {
if ((name = (char *)mbfl_no_encoding2name(MBSTRG(current_internal_encoding))) != NULL) {
RETVAL_STRING(name, 1);
@@ -3360,9 +3465,147 @@ PHP_FUNCTION(mb_get_info)
RETVAL_STRING(name, 1);
}
} else if (!strcasecmp("func_overload", typ)) {
- if ((name = (char *)mbfl_no_encoding2name(MBSTRG(func_overload))) != NULL) {
+ if (MBSTRG(func_overload)){
+ over_func = &(mb_ovld[0]);
+ array_init(return_value);
+ while (over_func->type > 0) {
+ if ((MBSTRG(func_overload) & over_func->type) == over_func->type ) {
+ add_assoc_string(return_value, over_func->orig_func, over_func->ovld_func, 1);
+ }
+ over_func++;
+ }
+ } else {
+ RETVAL_STRING("no overload", 1);
+ }
+ } else if (!strcasecmp("mail_charset", typ)) {
+ if (lang != NULL && (name = (char *)mbfl_no_encoding2name(lang->mail_charset)) != NULL) {
RETVAL_STRING(name, 1);
}
+ } else if (!strcasecmp("mail_header_encoding", typ)) {
+ if (lang != NULL && (name = (char *)mbfl_no_encoding2name(lang->mail_header_encoding)) != NULL) {
+ RETVAL_STRING(name, 1);
+ }
+ } else if (!strcasecmp("mail_body_encoding", typ)) {
+ if (lang != NULL && (name = (char *)mbfl_no_encoding2name(lang->mail_body_encoding)) != NULL) {
+ RETVAL_STRING(name, 1);
+ }
+ } else if (!strcasecmp("illegal_chars", typ)) {
+ RETVAL_LONG(MBSTRG(illegalchars));
+ } else if (!strcasecmp("encoding_translation", typ)) {
+ if (MBSTRG(encoding_translation)) {
+ RETVAL_STRING("On", 1);
+ } else {
+ RETVAL_STRING("Off", 1);
+ }
+ } else if (!strcasecmp("language", typ)) {
+ if ((name = (char *)mbfl_no_language2name(MBSTRG(current_language))) != NULL) {
+ RETVAL_STRING(name, 1);
+ }
+ } else if (!strcasecmp("detect_order", typ)) {
+ n = MBSTRG(current_detect_order_list_size);
+ entry = MBSTRG(current_detect_order_list);
+ if(n > 0) {
+ array_init(return_value);
+ while (n > 0) {
+ name = (char *)mbfl_no_encoding2name(*entry);
+ if (name) {
+ add_next_index_string(return_value, name, 1);
+ }
+ entry++;
+ n--;
+ }
+ }
+ } else if (!strcasecmp("substitute_character", typ)) {
+ if (MBSTRG(current_filter_illegal_mode) == MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE) {
+ RETVAL_STRING("none", 1);
+ } else if (MBSTRG(current_filter_illegal_mode) == MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG) {
+ RETVAL_STRING("long", 1);
+ } else {
+ RETVAL_LONG(MBSTRG(current_filter_illegal_substchar));
+ }
+ } else if (!strcasecmp("strict_detection", typ)) {
+ if (MBSTRG(strict_detection)) {
+ RETVAL_STRING("On", 1);
+ } else {
+ RETVAL_STRING("Off", 1);
+ }
+ } else {
+#ifdef ZEND_MULTIBYTE
+ if (!strcasecmp("script_encoding", typ)) {
+ entry = MBSTRG(script_encoding_list);
+ n = MBSTRG(script_encoding_list_size);
+ if(n > 0) {
+ array_init(return_value);
+ while (n > 0) {
+ name = (char *)mbfl_no_encoding2name(*entry);
+ if (name) {
+ add_next_index_string(return_value, name, 1);
+ }
+ entry++;
+ n--;
+ }
+ }
+ return;
+ }
+#endif /* ZEND_MULTIBYTE */
+ RETURN_FALSE;
+ }
+}
+/* }}} */
+
+/* {{{ proto bool mb_check_encoding([string var[, string encoding]])
+ Check if the string is valid for the specified encoding */
+PHP_FUNCTION(mb_check_encoding)
+{
+ char *var = NULL;
+ int var_len;
+ char *enc = NULL;
+ int enc_len;
+ mbfl_buffer_converter *convd;
+ enum mbfl_no_encoding no_encoding = MBSTRG(current_internal_encoding);
+ mbfl_string string, result, *ret = NULL;
+ long illegalchars = 0;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|ss", &var, &var_len, &enc, &enc_len) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ if (var == NULL) {
+ RETURN_BOOL(MBSTRG(illegalchars) == 0);
+ }
+
+ if (enc != NULL) {
+ no_encoding = mbfl_name2no_encoding(enc);
+ if (no_encoding == mbfl_no_encoding_invalid || no_encoding == mbfl_no_encoding_pass) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid encoding \"%s\"", enc);
+ RETURN_FALSE;
+ }
+ }
+
+ convd = mbfl_buffer_converter_new(no_encoding, no_encoding, 0);
+ if (convd == NULL) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to create converter");
+ RETURN_FALSE;
+ }
+ mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode));
+ mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar));
+
+ /* initialize string */
+ mbfl_string_init(&string);
+ mbfl_string_init(&result);
+ string.no_encoding = no_encoding;
+ string.no_language = MBSTRG(current_language);
+
+ string.val = (unsigned char *)var;
+ string.len = var_len;
+ ret = mbfl_buffer_converter_feed_result(convd, &string, &result);
+ illegalchars = mbfl_buffer_illegalchars(convd);
+ mbfl_buffer_converter_delete(convd);
+
+ if (ret != NULL) {
+ MBSTRG(illegalchars) += illegalchars;
+ efree(ret->val);
+ RETURN_BOOL(illegalchars == 0);
} else {
RETURN_FALSE;
}
@@ -3529,6 +3772,7 @@ MBSTRING_API int php_mb_gpc_encoding_converter(char **str, int *len, int num, co
str[i] = ret->val;
len[i] = ret->len;
}
+ MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd);
mbfl_buffer_converter_delete(convd);
}
@@ -3745,6 +3989,7 @@ int php_mb_encoding_converter(char **to, int *to_length, const char *from,
*to = ret->val;
*to_length = ret->len;
}
+ MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd);
mbfl_buffer_converter_delete(convd);
return ret ? 0 : -1;
diff --git a/ext/mbstring/mbstring.h b/ext/mbstring/mbstring.h
index 2abcfe47f..131f4105c 100644
--- a/ext/mbstring/mbstring.h
+++ b/ext/mbstring/mbstring.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mbstring.h,v 1.66.2.2 2006/01/01 12:50:08 sniper Exp $ */
+/* $Id: mbstring.h,v 1.66.2.4 2006/03/21 07:56:28 hirokawa Exp $ */
/*
* PHP 4 Multibyte String module "mbstring" (currently only for Japanese)
@@ -120,6 +120,7 @@ PHP_FUNCTION(mb_encode_numericentity);
PHP_FUNCTION(mb_decode_numericentity);
PHP_FUNCTION(mb_send_mail);
PHP_FUNCTION(mb_get_info);
+PHP_FUNCTION(mb_check_encoding);
MBSTRING_API int php_mb_encoding_translation(TSRMLS_D);
@@ -181,6 +182,7 @@ ZEND_BEGIN_MODULE_GLOBALS(mbstring)
long func_overload;
zend_bool encoding_translation;
long strict_detection;
+ long illegalchars;
mbfl_buffer_converter *outconv;
#if HAVE_MBREGEX && defined(PHP_MBREGEX_GLOBALS)
PHP_MBREGEX_GLOBALS
diff --git a/ext/mhash/mhash.c b/ext/mhash/mhash.c
index 0d51c3899..042a4433b 100644
--- a/ext/mhash/mhash.c
+++ b/ext/mhash/mhash.c
@@ -16,7 +16,7 @@
| Nikos Mavroyanopoulos <nmav@hellug.gr> (HMAC, KEYGEN) |
+----------------------------------------------------------------------+
*/
-/* $Id: mhash.c,v 1.48.2.2 2006/01/01 12:50:09 sniper Exp $ */
+/* $Id: mhash.c,v 1.48.2.3 2006/04/03 09:14:33 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -205,7 +205,7 @@ PHP_FUNCTION(mhash_keygen_s2k)
WRONG_PARAM_COUNT;
}
if (bytes <= 0){
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "the byte parameter must be greater then 0");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "the byte parameter must be greater than 0");
RETURN_FALSE;
}
diff --git a/ext/ming/ming.c b/ext/ming/ming.c
index 6d9d053a8..12ef5d066 100644
--- a/ext/ming/ming.c
+++ b/ext/ming/ming.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ming.c,v 1.79.2.3 2006/01/01 12:50:09 sniper Exp $ */
+/* $Id: ming.c,v 1.79.2.4 2006/03/06 10:06:15 helly Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -296,8 +296,8 @@ static SWFInput getInput(zval **zfile TSRMLS_DC)
/* {{{ SWFAction
*/
-/* {{{ proto object swfaction::__construct(string)
- Returns a new SWFAction object, compiling the given script */
+/* {{{ proto void swfaction::__construct(string)
+ Creates a new SWFAction object, compiling the given script */
PHP_METHOD(swfaction, __construct)
{
SWFAction action;
@@ -345,8 +345,8 @@ static zend_function_entry swfaction_functions[] = {
/* {{{ SWFBitmap
*/
-/* {{{ proto class swfbitmap::__construct(mixed file [, mixed maskfile])
- Returns a new SWFBitmap object from jpg (with optional mask) or dbl file */
+/* {{{ proto void swfbitmap::__construct(mixed file [, mixed maskfile])
+ Creates a new SWFBitmap object from jpg (with optional mask) or dbl file */
PHP_METHOD(swfbitmap, __construct)
{
zval **zfile, **zmask = NULL;
@@ -440,8 +440,8 @@ static zend_function_entry swfbitmap_functions[] = {
/* {{{ SWFButton
*/
-/* {{{ proto object swfbutton::__construct()
- Returns a new SWFButton object */
+/* {{{ proto void swfbutton::__construct()
+ Creates a new SWFButton object */
PHP_METHOD(swfbutton, __construct)
{
SWFButton button = newSWFButton();
@@ -1204,8 +1204,8 @@ static zend_function_entry swfdisplayitem_functions[] = {
/* {{{ SWFFill
*/
-/* {{{ proto class swffill::__construct()
- Returns a new SWFFill object */
+/* {{{ proto void swffill::__construct()
+ Creates a new SWFFill object */
PHP_METHOD(swffill, __construct)
{
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Instantiating SWFFill won't do any good- use SWFShape::addFill() instead");
@@ -1404,8 +1404,8 @@ static SWFFont getFont(zval *id TSRMLS_DC)
}
/* }}} */
-/* {{{ proto object swffont::__construct(string filename)
- Returns a new SWFFont object from given file */
+/* {{{ proto void swffont::__construct(string filename)
+ Creates a new SWFFont object from given file */
PHP_METHOD(swffont, __construct)
{
zval **zfile;
@@ -1594,8 +1594,8 @@ static zend_function_entry swffont_functions[] = {
/* {{{ SWFGradient
*/
-/* {{{ proto class swfgradient::__construct()
- Returns a new SWFGradient object */
+/* {{{ proto void swfgradient::__construct()
+ Creates a new SWFGradient object */
PHP_METHOD(swfgradient, __construct)
{
SWFGradient gradient = newSWFGradient();
@@ -1669,8 +1669,8 @@ static zend_function_entry swfgradient_functions[] = {
/* {{{ SWFMorph
*/
-/* {{{ proto object swfmorph::__construct()
- Returns a new SWFMorph object */
+/* {{{ proto void swfmorph::__construct()
+ Creates a new SWFMorph object */
PHP_METHOD(swfmorph, __construct)
{
SWFMorph morph = newSWFMorphShape();
@@ -1752,8 +1752,8 @@ SWFSound getSound(zval *id TSRMLS_DC)
}
/* }}} */
-/* {{{ proto class swfsound::__construct(string filename, int flags)
- Returns a new SWFSound object from given file */
+/* {{{ proto void swfsound::__construct(string filename, int flags)
+ Creates a new SWFSound object from given file */
PHP_METHOD(swfsound, __construct)
{
zval **zfile, **zflags;
@@ -2088,7 +2088,7 @@ static zend_function_entry swfprebuiltclip_functions[] = {
/* {{{ SWFMovie
*/
-/* {{{ proto object swfmovie::__construct(int version)
+/* {{{ proto void swfmovie::__construct(int version)
Creates swfmovie object according to the passed version */
PHP_METHOD(swfmovie, __construct)
{
@@ -2695,8 +2695,8 @@ static zend_function_entry swfmovie_functions[] = {
/* {{{ SWFShape
*/
-/* {{{ proto object swfshape::__construct()
- Returns a new SWFShape object */
+/* {{{ proto void swfshape::__construct()
+ Creates a new SWFShape object */
PHP_METHOD(swfshape, __construct)
{
SWFShape shape = newSWFShape();
@@ -3216,8 +3216,8 @@ static zend_function_entry swfshape_functions[] = {
/* {{{ SWFSprite
*/
-/* {{{ proto class swfsprite::__construct()
- Returns a new SWFSprite object */
+/* {{{ proto void swfsprite::__construct()
+ Creates a new SWFSprite object */
PHP_METHOD(swfsprite, __construct)
{
SWFMovieClip sprite = newSWFMovieClip();
@@ -3401,8 +3401,8 @@ static zend_function_entry swfsprite_functions[] = {
/* {{{ SWFText
*/
-/* {{{ proto class swftext::__construct()
- Returns new SWFText object */
+/* {{{ proto void swftext::__construct()
+ Creates new SWFText object */
PHP_METHOD(swftext, __construct)
{
SWFText text = newSWFText2();
@@ -3687,8 +3687,8 @@ static zend_function_entry swftext_functions[] = {
/* {{{ SWFTextField
*/
-/* {{{ proto object swftextfield::__construct([int flags])
- Returns a new SWFTextField object */
+/* {{{ proto void swftextfield::__construct([int flags])
+ Creates a new SWFTextField object */
PHP_METHOD(swftextfield, __construct)
{
zval **flags;
diff --git a/ext/msession/CREDITS b/ext/msession/CREDITS
deleted file mode 100644
index 4703783a7..000000000
--- a/ext/msession/CREDITS
+++ /dev/null
@@ -1,3 +0,0 @@
-msession
-Mark L. Woodward
-mailto:mlwmohawk@mohawksoft.com
diff --git a/ext/msession/README b/ext/msession/README
deleted file mode 100644
index a4ed70fae..000000000
--- a/ext/msession/README
+++ /dev/null
@@ -1,33 +0,0 @@
-This is msession, it is an interface to a stand-alone session
-management system. The msession daemon can be found at
-Mohawk Software's web site.
-
-http://www.mohawksoft.com
-
-Requirements:
-Mohawk Software's Phoenix library.
-Mohawk Software's msession daemon.
-
-Building:
-In the config.m4 file you will need to specify the include
-and library directories for Phoenix. The setting in config.m4
-is probably wrong.
-
-You will need phoenix installed and built to compile this
-module.
-
-To use msession-test.php, msession must be the default session
-handler in PHP. The easiest way to do that is in the php.ini
-file as:
-
-[Session]
-session.save_handler = msession
-session.save_path = localhost
-
-The session.save.path is the host name of the server running
-msessiond.
-
-12/22/2001
-Changed msession_getdata(...) to msession_get_data(...)
-Changed msession_setdata(...) to msession_set_data(...)
-(docs to follow)
diff --git a/ext/msession/config.m4 b/ext/msession/config.m4
deleted file mode 100644
index 05ca09c7b..000000000
--- a/ext/msession/config.m4
+++ /dev/null
@@ -1,36 +0,0 @@
-dnl
-dnl $Id: config.m4,v 1.9 2003/02/12 18:34:20 mlwmohawk Exp $
-dnl
-
-PHP_ARG_WITH(msession, for msession support,
-[ --with-msession[=DIR] Include msession support])
-
-if test "$PHP_MSESSION" != "no"; then
- if test -r $PHP_MSESSION/lib/libphoenix.a; then
- PHOENIX_DIR=$PHP_MSESSION
- else
- AC_MSG_CHECKING(for msession in default path)
- for i in /usr/local/phoenix /usr/local /usr; do
- if test -r $i/lib/libphoenix.a; then
- PHOENIX_DIR=$i
- AC_MSG_RESULT(found in $i)
- fi
- done
- fi
-
- if test -z "$PHOENIX_DIR"; then
- AC_MSG_RESULT(not found)
- AC_MSG_ERROR(Please reinstall the Phoenix / msession distribution)
- fi
-
-
- AC_DEFINE(HAVE_MSESSION, 1, [ ])
- PHP_ADD_LIBRARY_WITH_PATH(phoenix, "$PHOENIX_DIR/lib", PHOENIX_LIB)
- PHOENIX_INCLUDE="-I$PHOENIX_DIR"
- PHP_SUBST(PHOENIX_LIB)
-
- PHP_REQUIRE_CXX
- PHP_NEW_EXTENSION(msession, msession.c, $ext_shared)
- PHP_ADD_LIBRARY(stdc++)
-fi
-
diff --git a/ext/msession/msession-test.php b/ext/msession/msession-test.php
deleted file mode 100644
index e591fcca7..000000000
--- a/ext/msession/msession-test.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?
-# msession-test.php
-# This is a test page for msession functions.
-# most msession functions are used in this page with
-# the exception of msession_get_data, and msession_set_data
-# which are used implicitly with the PHP session
-# extension.
-#
-#
-#
-
-# Start the session system, this will connect to msession
-# as configured in PHP.INI.
-#
-# Start sessions, this will set a cookie.
-session_start();
-
-# Now, optional, use msession_uniq() to create a guarenteed
-# uniq session name.
-#
-if(!$HTTP_COOKIE_VARS["PHPSESSID"])
-{
- # Use uniq to create the session. This is guarenteed to be
- # uniq in the server.
- $sid = msession_uniq(32);
- setcookie ("PHPSESSID", $sid);
- session_id($sid);
- $HTTP_COOKIE_VARS["PHPSESSID"] = $sid;
- # New session, set some variables
- if(0) // One at a time
- {
- echo "Set Variable: " . msession_set($sid, 'time',time()) ."<p>\n";
- echo "Set Variable: " . msession_set($sid, 'name1','test1') ."<p>\n";
- echo "Set Variable: " . msession_set($sid, 'name2','test2') ."<p>\n";
- echo "Set Variable: " . msession_set($sid, 'name3','test3') ."<p>\n";
- echo "Set Variable: " . msession_set($sid, 'name4','test4') ."<p>\n";
- echo "Set Variable: " . msession_set($sid, 'name5','test5') ."<p>\n";
- echo "Set Variable: " . msession_set($sid, 'name6','test6') ."<p>\n";
- echo "Set Variable: " . msession_set($sid, 'name7','test7') ."<p>\n";
- }
- else // All at once in an array
- {
- $setarray = array();
- $setarray['time']=time();
- $setarray['name1'] = 'test1';
- $setarray['name2'] = 'test2';
- $setarray['name3'] = 'test3';
- $setarray['name4'] = 'test4';
- $setarray['name5'] = 'test5';
- $setarray['name6'] = 'test6';
- $setarray['name7'] = 'test7';
- msession_set_array($sid, $setarray);
- }
-}
-else
-{
- $sid = $HTTP_COOKIE_VARS["PHPSESSID"];
-}
-
-#This makes a link between the variable $count and the
-# session variable "count"
-session_register("count");
-
-$count ++;
-
-# Output some information.
-echo "sid: " . $sid . "<br>\n";
-echo "Session Count: " . $count . "<br>\n";
-
-# Use msession_randstr() to produce a random string.
-# A valid string of n characters of jibberish is returned.
-echo "Random String: " . msession_randstr(32) . "<br>\n";
-
-# This is a thread safe increment, unlike PHP's session, many web servers
-# can be updating this variable and collisions are managed.
-# (for this to work, older versions of msessiond must be started with "-g globals"
-# newer versions create it by default)
-echo "Global Count: " . msession_inc(globals, "counter") . "<br>\n";
-
-# This gets a count of active sessions.
-echo "Total active sessions: " . msession_count() . "<br>\n";
-
-# This gets all the variables for a user in an associative array.
-$varray = msession_get_array($sid);
-
-if(!$varray)
- echo "Get variable array: Failed<br>\n";
-
-# Display all the user's variables
-$arraykeys = array_keys($varray);
-for($i=0; $arraykeys[$i]; $i++)
- echo "Key: " . $arraykeys[ $i ] ." = " .$varray[$arraykeys[$i]] ."<br>\n";
-
-
-# Find a list of all sessions with same name/value pair
-$array = msession_find('name1', 'test1');
-
-#display the sessions
-for($i=0; $array[$i]; $i++)
- echo "Similar Sessions: " . $i . " " . $array[$i] . "<br>\n";
-
-# Find all the sessions which have the variable "time" set.
-$vararray = msession_listvar('time');
-
-$arraykeys = array_keys($vararray);
-
-for($i=0; $arraykeys[$i]; $i++)
- echo "Key: " . $arraykeys[ $i ] ." = " .$vararray[$arraykeys[$i]] ."<br>\n";
-
-# msession can support a personality plugin, this is an escape call directly
-# into the plugin's REQ_ESCAPE function.
-echo "Call the plugin: " . msession_plugin($sid, 3, "test"). "<br>\n";
-
-# msession also supprts function-only plugins. this is a call into the demo
-# plugin (funct.so) which returns the uptime of the msessiond process.
-echo "Call the function: " . msession_call('fntest', "1","2", "3", "4") ."<br>\n";
-
-#List ALL sessions on the system
-$sarray = msession_list();
-
-for($i=0; $sarray[$i]; $i++)
- echo "Sessions: " . $i . " " . $sarray[$i] . "<br>\n";
-
-?>
-
diff --git a/ext/msession/msession.c b/ext/msession/msession.c
deleted file mode 100644
index 9f218300e..000000000
--- a/ext/msession/msession.c
+++ /dev/null
@@ -1,1375 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | msession 1.0 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2006 The PHP Group |
- +----------------------------------------------------------------------+
- | This source file is subject to version 3.01 of the PHP license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available through the world-wide-web at the following url: |
- | http://www.php.net/license/3_01.txt |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Authors: Mark Woodward <markw@mohawksoft.com> |
- | Portions copyright the PHP group. |
- +----------------------------------------------------------------------+
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "php.h"
-#include "php_ini.h"
-#include "php_msession.h"
-#include "reqclient.h"
-#include "ext/standard/info.h"
-#include "ext/session/php_session.h"
-
-
-/* Macros and such */
-#ifndef TRUE
-#define TRUE 1
-#endif
-#ifndef FALSE
-#define FALSE 0
-#endif
-#ifndef SID_LEN
-#define SID_LEN 32
-#endif
-
-
-/* Uncomment to get debugging messages */
-/* #define ERR_DEBUG */
-
-#ifdef ERR_DEBUG
-#define ELOG( str ) php_log_err( str )
-#else
-#define ELOG( str )
-#endif
-
-/* Test if system is OK fror use. */
-/* Macros may be ugly, but I can globaly add debuging when needed. */
-#define IFCONNECT_BEGIN if(s_reqb && s_conn) {
-#define IFCONNECT_ENDVAL(V) } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Msession not initialized"); return V; }
-#define IFCONNECT_END } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Msession not initialized"); RETURN_FALSE; }
-
-#ifndef HAVE_PHP_SESSION
-#error HAVE_PHP_SESSION not defined
-#endif
-
-/* Test if session module contains custom sesson ID patch */
-#ifdef PHP_SESSION_API
-#if (PHP_SESSION_API >= 20020330)
-#define HAVE_PHP_SESSION_CREATESID
-#endif
-#endif
-
-/* This sets the PHP API version used in the file. */
-/* If this module does not compile on the version of PHP you are using, look for */
-/* this value in Zend/zend_modules.h, and set appropriately */
-#if (ZEND_MODULE_API_NO <= 20001222)
-#define PHP_4_0
-#define TSRMLS_CC
-#define TSRMLS_DC
-#define TSRMLS_FETCH()
-/* Comment out this line if you wish to have msession without php sessions */
-#define HAVE_PHP_SESSION
-#warning Backward compatible msession extension requires PHP sessions. If PHP compiles and links, you can ignore this warning.
-#elif (ZEND_MODULE_API_NO >= 20010901)
-#define PHP_4_1
-#else
-#warning ZEND_MODULE_API_NO not defined
-#define PHP_4_1
-#endif
-
-/*
- * Please do not remove backward compatibility from this module.
- * this same source must also work with the 4.0.6 version of PHP.
- *
- * Module Variable naming hints:
- * All global scope variables begin with "g_" for global.
- * All static file scoped variables begin with "s_" for static.
- * Zero terminated strings generally start with "sz" for "string followed by zero."
- * integers that hold string or data lengths generally start with "cb" for "count of bytes."
- * Also, please to not reformat braces ;-)
- * -MLW
- */
-#if HAVE_MSESSION
-#ifdef HAVE_PHP_SESSION
-#ifdef HAVE_PHP_SESSION_CREATESID
-/* If the PHP Session module is compiled or available, include support */
-PS_FUNCS_SID(msession);
-ps_module ps_mod_msession = {
- PS_MOD_SID(msession)
-};
-#else
-PS_FUNCS(msession);
-ps_module ps_mod_msession = {
- PS_MOD(msession)
-};
-#endif
-#endif
-
-/* Per-process variables need by msession */
-static char s_szdefhost[]="localhost";
-static char * s_szhost=s_szdefhost;
-static int s_port=8086;
-static void * s_conn=NULL;
-static REQB * s_reqb=NULL;
-
-zend_function_entry msession_functions[] = {
- PHP_FE(msession_connect,NULL)
- PHP_FE(msession_disconnect,NULL)
- PHP_FE(msession_lock,NULL)
- PHP_FE(msession_unlock,NULL)
- PHP_FE(msession_count,NULL)
- PHP_FE(msession_create,NULL)
- PHP_FE(msession_destroy,NULL)
- PHP_FE(msession_set,NULL)
- PHP_FE(msession_get,NULL)
- PHP_FE(msession_find,NULL)
- PHP_FE(msession_get_array,NULL)
- PHP_FE(msession_set_array,NULL)
- PHP_FE(msession_timeout,NULL)
- PHP_FE(msession_inc,NULL)
- PHP_FE(msession_set_data,NULL)
- PHP_FE(msession_get_data,NULL)
- PHP_FE(msession_listvar,NULL)
- PHP_FE(msession_list,NULL)
- PHP_FE(msession_uniq,NULL)
- PHP_FE(msession_randstr,NULL)
- PHP_FE(msession_plugin,NULL)
- PHP_FE(msession_call,NULL)
- PHP_FE(msession_ctl,NULL)
- PHP_FE(msession_exec,NULL)
- PHP_FE(msession_ping,NULL)
- {NULL, NULL, NULL}
-};
-
-zend_module_entry msession_module_entry = {
-#ifdef PHP_4_1
- STANDARD_MODULE_HEADER,
-#endif
- "msession",
- msession_functions,
- PHP_MINIT(msession),
- NULL,
- NULL,
- NULL,
- PHP_MINFO(msession),
-#ifdef PHP_4_1
- NO_VERSION_YET,
-#endif
- STANDARD_MODULE_PROPERTIES
-};
-
-#ifdef COMPILE_DL_MSESSION
-ZEND_GET_MODULE(msession)
-#endif
-
-PHP_MINIT_FUNCTION(msession)
-{
- s_conn = NULL;
- s_szhost = s_szdefhost;
-
-#ifdef HAVE_PHP_SESSION
- php_session_register_module(&ps_mod_msession);
-#endif
- return SUCCESS;
-}
-
-PHP_MINFO_FUNCTION(msession)
-{
- php_info_print_table_start();
- php_info_print_table_header(2, "msession support", "enabled");
- php_info_print_table_end();
-}
-#define RPT_CONN_ERR
-#ifdef ERR_DEBUG
-#undef RPT_CONN_ERR
-#define RPT_CONN_ERR if(s_reqb->req.stat == REQ_ERR && (result == REQE_BADCONN || result == REQE_NOSEND)) \
- ELOG("Socket reports closed"); \
- else if(s_reqb->req.stat == REQ_ERR)\
- ELOG("MSession call failed");\
-#else
-#endif
-
-#define CONN_ERR(reqb)\
- (reqb->req.stat == REQ_ERR) && (reqb->req.param == REQE_BADCONN || reqb->req.param == REQE_NOSEND)
-
-int PHPExecRequest(int req, char *session, char *d1, char *d2,int param)
-{
- int result;
- FormatRequest(&s_reqb, req, session, d1, d2, param);
- result = DoRequest(s_conn, &s_reqb);
-
- /* Server closed the connection! */
- if(CONN_ERR(s_reqb))
- {
- ELOG("Connection was closed by server");
- if(ReopenReqConn(s_conn))
- {
- FormatRequest(&s_reqb, req, session, d1, d2, param);
- result = DoRequest(s_conn, &s_reqb);
- }
- }
- RPT_CONN_ERR
- return result;
-}
-int PHPExecRequestMulti(int req, char *session, int n, char **pairs, int param)
-{
- int result;
- FormatRequestMulti(&s_reqb, req, session, n, pairs, param);
- result = DoRequest(s_conn, &s_reqb);
-
- /* Server closed the connection! */
- if(CONN_ERR(s_reqb))
- {
- ELOG("Connection was closed by server");
- if(ReopenReqConn(s_conn))
- {
- FormatRequestMulti(&s_reqb, req, session, n, pairs, param);
- result = DoRequest(s_conn, &s_reqb);
- }
- }
- RPT_CONN_ERR
- return result;
-}
-int PHPExecRequestStrings(int req, char *session, int n, char **strings)
-{
- int result;
- FormatRequestStrings(&s_reqb, req, session, n, strings);
- result = DoRequest(s_conn, &s_reqb);
- /* Server closed the connection! */
- if(CONN_ERR(s_reqb))
- {
- ELOG("Connection was closed by server");
- if(ReopenReqConn(s_conn))
- {
- FormatRequestStrings(&s_reqb, req, session, n, strings);
- result = DoRequest(s_conn, &s_reqb);
- }
- }
- RPT_CONN_ERR
- return result;
-}
-
-
-int PHPMsessionConnect(const char *szhost, int nport)
-{
- int fNewHost=FALSE;
-
- if(!s_reqb)
- s_reqb = AllocateRequestBuffer(2048);
-
- if(!s_reqb) /* no buffer, it won't work! */
- return 0;
-
- if(strcmp(s_szhost, szhost))
- {
- if(s_szhost != s_szdefhost)
- free(s_szhost);
- s_szhost = strdup(szhost);
- fNewHost = TRUE;
- }
- if(nport && nport != s_port)
- {
- fNewHost = TRUE;
- s_port = nport;
- }
-
- ELOG("PHPMsessionConnect:new");
- if(s_conn && fNewHost)
- {
- ELOG("Closing old connection, opening new");
- CloseReqConn(s_conn);
- s_conn = NULL;
- }
- if(!s_conn)
- s_conn = OpenReqConn(s_szhost, s_port);
-#ifdef ERR_DEBUG
- else
- {
- ELOG("Reusing old connection");
- }
-#endif
-
-
-#ifdef ERR_DEBUG
-{
- char buffer[256];
- sprintf(buffer,"Connect: %s [%d] = %d (%X)\n",
- s_szhost, s_port, (s_conn != NULL), (unsigned)s_conn);
- php_log_err(buffer);
-}
-#endif
- return (s_conn) ? 1 : 0;
-}
-
-void PHPMsessionDisconnect()
-{
-}
-
-char *PHPMsessionGetData(char *session TSRMLS_DC)
-{
- char *ret = NULL;
- ELOG("PHPMsessionGetData");
-
- IFCONNECT_BEGIN
-
- PHPExecRequest(REQ_DATAGET, (char *)session,"","",0);
-
- if(s_reqb->req.stat==REQ_OK)
- ret = safe_estrdup(s_reqb->req.datum);
- IFCONNECT_ENDVAL(0)
-
- return ret;
-}
-int PHPMsessionSetData(char *session, char *data TSRMLS_DC)
-{
- ELOG("PHPMsessionSetData");
- IFCONNECT_BEGIN
- int ret=0;
-
- PHPExecRequest(REQ_DATASET, session,"",data,0);
- ret = (s_reqb->req.stat==REQ_OK);
- if(s_reqb->req.stat!=REQ_OK)
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
-
- return ret;
-
- IFCONNECT_ENDVAL(0)
-}
-int PHPMsessionDestroy(char *session TSRMLS_DC)
-{
- ELOG("PHPMsessionDestroy");
- IFCONNECT_BEGIN
-
- int ret=0;
- PHPExecRequest( REQ_DROP, session, "","",0);
- ret = (s_reqb->req.stat==REQ_OK);
- if(s_reqb->req.stat!=REQ_OK)
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- return ret;
-
- IFCONNECT_ENDVAL(0)
-}
-
-/* {{{ proto bool msession_connect(string host, string port)
- Connect to msession sever */
-PHP_FUNCTION(msession_connect)
-{
- char *szhost;
- int nport;
-
- zval **zhost;
- zval **zport;
-
- if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &zhost, &zport) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
-
- convert_to_string_ex(zhost);
- convert_to_string_ex(zport);
-
- szhost = Z_STRVAL_PP(zhost);
- nport = atoi(Z_STRVAL_PP(zport));
-
- if(PHPMsessionConnect(szhost,nport))
- {
- RETURN_TRUE;
- }
- else
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "MSession connect failed");
- RETURN_FALSE;
- }
-}
-/* }}} */
-
-/* {{{ proto void msession_disconnect(void)
- Disconnect from msession server */
-PHP_FUNCTION(msession_disconnect)
-{
- PHPMsessionDisconnect();
- RETURN_NULL();
-}
-/* }}} */
-
-/* {{{ proto int msession_count(void)
- Get session count */
-PHP_FUNCTION(msession_count)
-{
- IFCONNECT_BEGIN
-
- int count;
- PHPExecRequest( REQ_COUNT, "", "","",0);
-
- count = (s_reqb->req.stat == REQ_OK) ? s_reqb->req.param : 0;
-
- RETURN_LONG(count);
-
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto bool msession_create(string session)
- Create a session */
-PHP_FUNCTION(msession_create)
-{
- IFCONNECT_BEGIN
-/* int stat; */
- char *szsession;
- zval **session;
-
- if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &session) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(session);
- szsession = Z_STRVAL_PP(session);
- PHPExecRequest( REQ_CREATE, szsession, "","",0);
- if(s_reqb->req.stat==REQ_OK)
- {
- RETURN_TRUE;
- }
- else
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_FALSE;
- }
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto bool msession_destroy(string name)
- Destroy a session */
-PHP_FUNCTION(msession_destroy)
-{
- char *szsession;
- zval **session;
- if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &session) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(session);
- szsession = Z_STRVAL_PP(session);
- PHPMsessionDestroy(szsession TSRMLS_CC);
-
- RETURN_TRUE;
-}
-/* }}} */
-
-/* {{{ proto int msession_lock(string name)
- Lock a session */
-PHP_FUNCTION(msession_lock)
-{
- IFCONNECT_BEGIN
- char *szsession;
- zval **session;
-
- if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &session) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(session);
- szsession = Z_STRVAL_PP(session);
- PHPExecRequest( REQ_SLOCK, szsession, "","",0);
-
- if(s_reqb->req.stat==REQ_OK)
- {
- RETURN_LONG(s_reqb->req.param);
- }
- else
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_FALSE;
- }
-
- IFCONNECT_END
-
-}
-/* }}} */
-/* {{{ proto int msession_ctl(string name)
- Lock a session */
-PHP_FUNCTION(msession_ctl)
-{
- static char *parray[] =
- { "EXIST",
- "TTL",
- "AGE",
- "TLA",
- "CTIME",
- "TOUCH",
- "NOW",
- NULL
- };
- IFCONNECT_BEGIN
- char *szsession;
- zval **session;
- zval **which;
- int fn = REQ_STAT_EXIST;
-
-
- int n = ZEND_NUM_ARGS();
-
- if(n != 1 && n != 2)
- {
- WRONG_PARAM_COUNT;
- }
-
- if(zend_get_parameters_ex(n,&session,&which) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
-
- convert_to_string_ex(session);
- szsession = Z_STRVAL_PP(session);
-
- if(n > 1)
- {
- char *szwhich;
- int i;
- convert_to_string_ex(which);
- szwhich = Z_STRVAL_PP(which);
- for(i=0; parray[i]; i++)
- {
- if(strcasecmp(parray[i], szwhich) == 0)
- {
- ELOG(szwhich);
-
- fn = i;
- break;
- }
- }
- }
-
- PHPExecRequest( REQ_CTL, szsession, "","",fn);
-
- if(s_reqb->req.stat==REQ_OK)
- {
-#ifdef ERR_DEBUG
- char buffer[128];
- sprintf(buffer, "ret:%s", s_reqb->req.datum);
- ELOG(buffer);
-#endif
- s_reqb->req.param = atoi(s_reqb->req.datum);
- RETURN_LONG(s_reqb->req.param);
- }
- else
- {
- ELOG("msession_ctl failed");
- RETURN_FALSE;
- }
- IFCONNECT_END
-}
-
-/* {{{ proto int msession_unlock(string session, int key)
- Unlock a session */
-PHP_FUNCTION(msession_unlock)
-{
- IFCONNECT_BEGIN
- char *szsession;
- long lkey;
- zval **session;
- zval **key;
-
- if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &session, &key) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(session);
- szsession = Z_STRVAL_PP(session);
- convert_to_long_ex(key);
- lkey = Z_LVAL_PP(key);
- PHPExecRequest( REQ_SUNLOCK, szsession, "","",lkey);
-
- if(s_reqb->req.stat==REQ_OK)
- {
- RETURN_LONG(s_reqb->req.param);
- }
- else
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_FALSE;
- }
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto bool msession_set(string session, string name, string value)
- Set value in session */
-PHP_FUNCTION(msession_set)
-{
- IFCONNECT_BEGIN
-
- char *szsession;
- char *szname;
- char *szvalue;
- zval **session;
- zval **name;
- zval **value;
-
- if(ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3,&session,&name,&value) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(session);
- convert_to_string_ex(name);
- convert_to_string_ex(value);
-
- szsession = Z_STRVAL_PP(session);
- szname = Z_STRVAL_PP(name);
- szvalue = Z_STRVAL_PP(value);
-
- PHPExecRequest( REQ_SETVAL, szsession, szname, szvalue, 0);
-
- if(s_reqb->req.stat==REQ_OK)
- {
- RETURN_TRUE;
- }
- else
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_FALSE;
- }
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto string msession_get(string session, string name, string default_value)
- Get value from session */
-PHP_FUNCTION(msession_get)
-{
- IFCONNECT_BEGIN
- char *szsession;
- char *szname;
- char *szvalue;
- zval **session;
- zval **name;
- zval **value;
-
- if(ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3,&session,&name,&value) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(session);
- convert_to_string_ex(name);
- convert_to_string_ex(value);
- szsession = Z_STRVAL_PP(session);
- szname = Z_STRVAL_PP(name);
- szvalue = Z_STRVAL_PP(value);
-
- PHPExecRequest( REQ_GETVAL, szsession, szname, szvalue,0);
-
- if(s_reqb->req.stat==REQ_OK)
- {
- szvalue = safe_estrdup(s_reqb->req.datum);
- RETURN_STRING(szvalue, 0)
- }
- else
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_NULL();
- }
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto string msession_uniq(int num_chars)
- Get uniq id */
-PHP_FUNCTION(msession_uniq)
-{
- IFCONNECT_BEGIN
-
- long val;
- zval **param;
-
- if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1,&param) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_long_ex(param);
- val = Z_LVAL_PP(param);
-
- PHPExecRequest( REQ_UNIQ,"", "", "",val);
-
- if(s_reqb->req.stat==REQ_OK)
- {
- char *szval = safe_estrdup(s_reqb->req.datum);
- RETURN_STRING(szval, 0)
- }
- else
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_NULL();
- }
- IFCONNECT_END
-
-}
-/* }}} */
-
-/* {{{ proto string msession_randstr(int num_chars)
- Get random string */
-PHP_FUNCTION(msession_randstr)
-{
- IFCONNECT_BEGIN
- long val;
- zval **param;
-
- if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1,&param) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_long_ex(param);
- val = Z_LVAL_PP(param);
-
- PHPExecRequest( REQ_RANDSTR,"", "", "",val);
-
- if(s_reqb->req.stat==REQ_OK)
- {
- char *szval = safe_estrdup(s_reqb->req.datum);
- RETURN_STRING(szval, 0)
- }
- else
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_NULL();
- }
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto array msession_find(string name, string value)
- Find all sessions with name and value */
-PHP_FUNCTION(msession_find)
-{
- IFCONNECT_BEGIN
-
- char *szname;
- char *szvalue;
- zval **name;
- zval **value;
-
- if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &name, &value) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(name);
- convert_to_string_ex(value);
- szname = Z_STRVAL_PP(name);
- szvalue = Z_STRVAL_PP(value);
-
- PHPExecRequest( REQ_FIND, "", szname, szvalue,0);
-
- if(s_reqb->req.stat==REQ_OK && s_reqb->req.param)
- {
- int i;
- char *str = s_reqb->req.datum;
- array_init(return_value);
-
- for(i=0; i < s_reqb->req.param; i++)
- {
- int cbstr = strlen(str);
- char *data = safe_estrdup(str);
- add_index_string(return_value, i, data, 0);
- str += (cbstr+1);
- }
- }
- else if(s_reqb->req.stat != REQ_OK)
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_NULL();
- }
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto array msession_list(void)
- List all sessions */
-PHP_FUNCTION(msession_list)
-{
- IFCONNECT_BEGIN
- PHPExecRequest( REQ_LIST, "", "", "",0);
-
- if(s_reqb->req.stat==REQ_OK && s_reqb->req.param)
- {
- int i;
- char *str = s_reqb->req.datum;
- array_init(return_value);
-
- for(i=0; i < s_reqb->req.param; i++)
- {
- int cbstr = strlen(str);
- char *data = safe_estrdup(str);
- add_index_string(return_value, i, data, 0);
- str += (cbstr+1);
- }
- }
- else if(s_reqb->req.stat != REQ_OK)
- {
- /* May this should be an error? */
- if(s_reqb->req.param != REQE_NOSESSION)
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_NULL();
- }
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto array msession_get_array(string session)
- Get array of msession variables */
-PHP_FUNCTION(msession_get_array)
-{
- IFCONNECT_BEGIN
- char *szsession;
- zval **session;
- if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &session) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(session);
- szsession = Z_STRVAL_PP(session);
- PHPExecRequest( REQ_GETALL, szsession, "", "",0);
-
- array_init(return_value);
-
- if(s_reqb->req.stat == REQ_OK)
- {
- int i;
- char *str = s_reqb->req.datum;
- int num = s_reqb->req.param*2;
-
- for(i=0; i < num; i+=2)
- {
- int cbvalue;
- int cbname;
- char *szvalue;
- char *szname;
-
- cbname = strlen(str);
- szname = safe_estrndup(str,cbname);
- str += (cbname+1);
-
- cbvalue = strlen(str);
- szvalue = safe_estrndup(str,cbvalue);
- str += (cbvalue+1);
- add_assoc_string(return_value, szname, szvalue, 0);
- }
- }
- else
- {
- if(s_reqb->req.param != REQE_NOSESSION)
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_NULL();
- }
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto bool msession_set_array(string session, array tuples)
- Set msession variables from an array*/
-PHP_FUNCTION(msession_set_array)
-{
- IFCONNECT_BEGIN
- zval **session;
- zval **tuples;
- HashPosition pos;
- zval **entry;
- char *key;
-#ifdef PHP_4_1
- uint keylen;
-#endif
-#ifdef PHP_4_0
- ulong keylen;
-#endif
- ulong numndx;
- int ndx=0;
- char **pairs;
- HashTable *htTuples;
- int i;
-
- int countpair;
-
- if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &session, &tuples) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- htTuples = Z_ARRVAL_PP(tuples);
-
- countpair = zend_hash_num_elements(htTuples);
-
- pairs = (char **)safe_emalloc(sizeof(char *), countpair * 2, 0);
-
- ELOG("have pairs");
-
- /* Initializes pos */
- zend_hash_internal_pointer_reset_ex(htTuples, &pos);
-
- ELOG("reset pointer");
-
- for(i=0; i < countpair; i++)
- {
- if(zend_hash_get_current_data_ex(htTuples, (void **)&entry, &pos) != SUCCESS)
- break;
-
- if(entry)
- {
- char *szentry;
- convert_to_string_ex(entry);
- szentry = Z_STRVAL_PP(entry);
-
- if(zend_hash_get_current_key_ex(htTuples,&key,&keylen,&numndx,0,&pos)== HASH_KEY_IS_STRING)
- {
-#ifdef ERR_DEBUG
-{
- char buffer [256];
- sprintf(buffer, "%s=%s\n", key, szentry);
- ELOG(buffer);
-}
-#endif
- pairs[ndx++] = key;
- pairs[ndx++] = szentry;
- }
- }
- zend_hash_move_forward_ex(htTuples, &pos);
- }
-
- PHPExecRequestMulti(REQ_SETVAL, Z_STRVAL_PP(session), countpair, pairs,0);
-
- if(s_reqb->req.stat != REQ_OK)
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- efree((void *)pairs);
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto array msession_listvar(string name)
- return associative array of value:session for all sessions with a variable named 'name' */
-PHP_FUNCTION(msession_listvar)
-{
- IFCONNECT_BEGIN
- zval **name;
- if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &name) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(name);
- PHPExecRequest( REQ_LISTVAR, "", Z_STRVAL_PP(name), "",0);
-
- array_init(return_value);
-
- if(s_reqb->req.stat == REQ_OK)
- {
- int i;
- char *str = s_reqb->req.datum;
- int num = s_reqb->req.param*2;
-
- for(i=0; i < num; i+=2)
- {
- int cbvalue;
- int cbname;
- char *szvalue;
- char *szname;
-
- cbname= strlen(str);
- szname= safe_estrndup(str,cbname);
- str += (cbname+1);
-
- cbvalue = strlen(str);
- szvalue = safe_estrndup(str,cbvalue);
- str += (cbvalue+1);
- add_assoc_string(return_value, szname, szvalue, 0);
- }
- }
- else
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_NULL();
- }
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto int msession_timeout(string session [, int param ])
- Set/get session timeout */
-PHP_FUNCTION(msession_timeout)
-{
- IFCONNECT_BEGIN
- zval **session;
- int ac = ZEND_NUM_ARGS();
- int zstat = FAILURE;
- int timeout = 0;
- if(ac == 1)
- {
- zstat = zend_get_parameters_ex(1, &session);
- }
- else if(ac == 2)
- {
- zval **param;
- zstat = zend_get_parameters_ex(2, &session, &param);
- convert_to_long_ex(param);
- timeout = Z_LVAL_PP(param);
- }
- if(zstat == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(session);
- PHPExecRequest( REQ_TIMEOUT, Z_STRVAL_PP(session), "","",timeout);
-
- if(s_reqb->req.stat == REQ_OK)
- {
- RETURN_LONG( s_reqb->req.param);
- }
- else
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_NULL();
- }
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto string msession_inc(string session, string name)
- Increment value in session */
-PHP_FUNCTION(msession_inc)
-{
- IFCONNECT_BEGIN
- char *val;
- zval **session;
- zval **name;
-
- if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &session, &name) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(session);
- convert_to_string_ex(name);
-
- PHPExecRequest( REQ_INC, Z_STRVAL_PP(session), Z_STRVAL_PP(name),0,0);
-
- if(s_reqb->req.stat==REQ_OK)
- {
- val = safe_estrdup(s_reqb->req.datum);
- RETURN_STRING(val, 0)
- }
- else
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_FALSE;
- }
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto string msession_get_data(string session)
- Get data session unstructured data. (PHP sessions use this) */
-PHP_FUNCTION(msession_get_data)
-{
- IFCONNECT_BEGIN
- char *val;
- zval **session;
-
- if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &session) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(session);
-
- val = PHPMsessionGetData(Z_STRVAL_PP(session) TSRMLS_CC);
-
- if(val)
- {
- RETURN_STRING(val, 0)
- }
- else
- {
- RETURN_NULL();
- }
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto bool msession_set_data(string session, string value)
- Set data session unstructured data. (PHP sessions use this) */
-PHP_FUNCTION(msession_set_data)
-{
- IFCONNECT_BEGIN
- zval **session;
- zval **value;
-
- if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &session, &value) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(session);
- convert_to_string_ex(value);
-
- if(PHPMsessionSetData(Z_STRVAL_PP(session), Z_STRVAL_PP(value) TSRMLS_CC))
- {
- RETURN_TRUE;
- }
- else
- {
- RETURN_FALSE;
- }
- IFCONNECT_END
-}
-/* }}} */
-
-/* {{{ proto string msession_plugin(string session, string val [, string param ])
- Call the personality plugin escape function */
-PHP_FUNCTION(msession_plugin)
-{
- IFCONNECT_BEGIN
- int ret;
- char *retval;
- zval **session;
- zval **val;
- zval **param=NULL;
-
- if(ZEND_NUM_ARGS() == 3)
- {
- ret = zend_get_parameters_ex(3, &session, &val, &param);
- convert_to_string_ex(param);
- }
- else if(ZEND_NUM_ARGS() == 2)
- {
- ret = zend_get_parameters_ex(2, &session, &val);
- }
- else
- {
- WRONG_PARAM_COUNT;
- }
- if(ret == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(session);
- convert_to_string_ex(val);
-
- ret = atoi(Z_STRVAL_PP(val));
-
- PHPExecRequest( REQ_PLUGIN, Z_STRVAL_PP(session), Z_STRVAL_PP(val), param ? Z_STRVAL_PP(param) : "",ret);
-
- if(s_reqb->req.stat==REQ_OK && s_reqb->req.len)
- {
- retval = safe_estrdup(s_reqb->req.datum);
- RETURN_STRING(retval, 0)
- }
- else if(s_reqb->req.stat != REQ_OK)
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_FALSE;
-
- }
- IFCONNECT_END
-}
-/* }}} */
-#define MAX_EXT_VAL 5
-/* {{{ proto string msession_call(string fn_name, [, string param1 ], ... [,string param4])
- Call the plugin function named fn_name */
-PHP_FUNCTION(msession_call)
-{
- IFCONNECT_BEGIN
- int n;
- int i;
- int ret;
- char *retval;
- zval **val[MAX_EXT_VAL];
- char *strings[MAX_EXT_VAL+1];
-/* zval **param=NULL; */
-
- n = ZEND_NUM_ARGS();
-
- if((n < 1) || (n > MAX_EXT_VAL))
- {
- WRONG_PARAM_COUNT;
- }
-
- ret = zend_get_parameters_ex(ZEND_NUM_ARGS(), &val[0],&val[1],&val[2],&val[3],&val[4]);
-
- if(ret == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- for(i=0; i < n; i++)
- {
- convert_to_string_ex(val[i]);
- strings[i] = Z_STRVAL_PP(val[i]);
- }
-
- PHPExecRequestStrings(REQ_CALL, NULL , n, strings);
-
- if(s_reqb->req.stat==REQ_OK && s_reqb->req.len)
- {
- retval = safe_estrdup(s_reqb->req.datum);
- RETURN_STRING(retval, 0)
- }
- else if(s_reqb->req.stat != REQ_OK)
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_FALSE;
- }
- IFCONNECT_END
-}
-/* }}} */
-/* {{{ proto string msession_exec(string cmdline)
- executes a program on msession system */
-PHP_FUNCTION(msession_exec)
-{
- IFCONNECT_BEGIN
- char *val;
- zval **cmdline;
-
- if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &cmdline) == FAILURE)
- {
- WRONG_PARAM_COUNT;
- }
- convert_to_string_ex(cmdline);
-
- PHPExecRequest( REQ_EXEC, Z_STRVAL_PP(cmdline), "","",0);
-
- if(s_reqb->req.stat == REQ_OK)
- {
- val = safe_estrdup(s_reqb->req.datum);
- RETURN_STRING(val, 0)
- }
- else
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_NULL();
- }
- IFCONNECT_END
-}
-/* }}} */
-/* {{{ proto bool msession_ping(void)
- returns non-zero if msession is alive*/
-PHP_FUNCTION(msession_ping)
-{
- IFCONNECT_BEGIN
-
- PHPExecRequest(REQ_PING,"","","", 0);
-
- if(s_reqb->req.stat==REQ_OK)
- {
- RETURN_TRUE;
- }
- else
- {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- RETURN_FALSE;
- }
- IFCONNECT_END
-}
-/* }}} */
-
-#ifdef HAVE_PHP_SESSION
-
-PS_OPEN_FUNC(msession)
-{
- int port;
- int len = strlen(save_path)+1;
- char * path = emalloc(len);
- char * szport;
-
- strcpy(path, save_path);
-
- szport = strchr(path, ':');
-
- if(szport)
- {
- *szport++=0;
- port = atoi(szport);
- }
- else
- {
- port = s_port;
- }
-
- ELOG( "ps_open_msession");
- PS_SET_MOD_DATA((void *)1); /* session.c needs a non-zero here! */
- if (PHPMsessionConnect(path, port)) {
- efree(path);
- return SUCCESS;
- } else {
- efree(path);
- return FAILURE;
- }
-}
-
-PS_CLOSE_FUNC(msession)
-{
- ELOG( "ps_close_msession");
- PHPMsessionDisconnect();
- return SUCCESS;
-}
-
-PS_READ_FUNC(msession)
-{
- ELOG( "ps_read_msession");
- *val = PHPMsessionGetData((char *)key TSRMLS_CC);
- if(*val)
- {
- *vallen = strlen(*val);
- }
- else
- {
- *val = emalloc(1);
- **val=0;
- *vallen = 0;
- }
- return SUCCESS;
-}
-
-PS_WRITE_FUNC(msession)
-{
- ELOG( "ps_write_msession");
- return (PHPMsessionSetData((char *)key, (char *)val TSRMLS_CC)) ? SUCCESS : FAILURE;
-}
-
-PS_DESTROY_FUNC(msession)
-{
- ELOG( "ps_destroy_msession");
- return (PHPMsessionDestroy((char *)key TSRMLS_CC)) ? SUCCESS : FAILURE;
-}
-
-PS_GC_FUNC(msession)
-{
- ELOG( "ps_gc_msession");
- return SUCCESS;
-}
-
-#ifdef HAVE_PHP_SESSION_CREATESID
-PS_CREATE_SID_FUNC(msession)
-{
- if(s_reqb && s_conn)
- {
- ELOG("Should create a new session");
- PHPExecRequest( REQ_UNIQ,"", "", "",SID_LEN);
-
- if(s_reqb->req.stat==REQ_OK)
- {
- ELOG("Reports UNIQ success");
- if(newlen)
- *newlen = SID_LEN;
- return safe_estrdup(s_reqb->req.datum);
- }
- else
- {
- ELOG("Reports that UNIQ failed");
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ReqbErr(s_reqb));
- }
- }
- ELOG("Yikes, could not get sid from msession 2003");
- return php_session_create_id(mod_data, newlen TSRMLS_CC);
-}
-#endif /* HAVE_PHP_SESSION_CREATESID */
-#endif /* HAVE_PHP_SESSION */
-#endif /* HAVE_MSESSION */
-
diff --git a/ext/msession/msession.php b/ext/msession/msession.php
deleted file mode 100644
index 4eb9d9b6c..000000000
--- a/ext/msession/msession.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?
-$module = 'msession';
-$function = 'confirm_' . $module . '_compiled';
-if (extension_loaded($module)) {
- $str = $function($module);
-} else {
- $str = "Module $module is not compiled into PHP";
-}
-echo "$str\n";
-?>
diff --git a/ext/msession/php_msession.h b/ext/msession/php_msession.h
deleted file mode 100644
index b41df742f..000000000
--- a/ext/msession/php_msession.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | msession 1.0 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2006 The PHP Group |
- +----------------------------------------------------------------------+
- | This source file is subject to version 3.01 of the PHP license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available through the world-wide-web at the following url: |
- | http://www.php.net/license/3_01.txt |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Authors: Mark Woodward <markw@mohawksoft.com> |
- | Portions copyright the PHP group. |
- +----------------------------------------------------------------------+
- */
-
-#ifndef PHP_MSESSION_H
-#define PHP_MSESSION_H
-
-/* You should tweak config.m4 so this symbol (or some else suitable)
- gets defined.
-*/
-#if HAVE_MSESSION
-
-extern zend_module_entry msession_module_entry;
-#define phpext_msession_ptr &msession_module_entry
-
-#ifdef PHP_WIN32
-#define PHP_MSESSION_API __declspec(dllexport)
-#else
-#define PHP_MSESSION_API
-#endif
-
-PHP_MINIT_FUNCTION(msession);
-PHP_MINFO_FUNCTION(msession);
-
-PHP_FUNCTION(msession_connect);
-PHP_FUNCTION(msession_disconnect);
-PHP_FUNCTION(msession_lock);
-PHP_FUNCTION(msession_unlock);
-PHP_FUNCTION(msession_ctl);
-PHP_FUNCTION(msession_count);
-PHP_FUNCTION(msession_create);
-PHP_FUNCTION(msession_destroy);
-PHP_FUNCTION(msession_exec);
-PHP_FUNCTION(msession_set);
-PHP_FUNCTION(msession_get);
-PHP_FUNCTION(msession_find);
-PHP_FUNCTION(msession_get_array);
-PHP_FUNCTION(msession_set_array);
-PHP_FUNCTION(msession_timeout);
-PHP_FUNCTION(msession_inc);
-PHP_FUNCTION(msession_set_data);
-PHP_FUNCTION(msession_get_data);
-PHP_FUNCTION(msession_listvar);
-PHP_FUNCTION(msession_list);
-PHP_FUNCTION(msession_uniq);
-PHP_FUNCTION(msession_randstr);
-PHP_FUNCTION(msession_plugin);
-PHP_FUNCTION(msession_call);
-PHP_FUNCTION(msession_ping);
-
-/*
- Declare any global variables you may need between the BEGIN
- and END macros here:
-
-ZEND_BEGIN_MODULE_GLOBALS(msession)
- int global_variable;
- void *conn;
- char *host;
-ZEND_END_MODULE_GLOBALS(msession)
-
-*/
-/* In every function that needs to use variables in php_msession_globals,
- do call MSESSIONLS_FETCH(); after declaring other variables used by
- that function, and always refer to them as MSESSIONG(variable).
- You are encouraged to rename these macros something shorter, see
- examples in any other php module directory.
-*/
-
-#ifdef ZTS
-#define MSESSIONG(v) (msession_globals->v)
-#define MSESSIONLS_FETCH() php_msession_globals *msession_globals = ts_resource(msession_globals_id)
-#else
-#define MSESSIONG(v) (msession_globals.v)
-#define MSESSIONLS_FETCH()
-#endif
-
-#else
-
-#define phpext_msession_ptr NULL
-
-#endif
-
-#endif /* PHP_MSESSION_H */
-
-
-/*
- * Local variables:
- * tab-width: 4
- * c-basic-offset: 4
- * End:
- */
diff --git a/ext/msession/reqclient.h b/ext/msession/reqclient.h
deleted file mode 100644
index c8ff1c979..000000000
--- a/ext/msession/reqclient.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | msession 1.0 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2006 The PHP Group |
- +----------------------------------------------------------------------+
- | This source file is subject to version 3.01 of the PHP license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available through the world-wide-web at the following url: |
- | http://www.php.net/license/3_01.txt |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Authors: Mark Woodward <markw@mohawksoft.com> |
- | Portions copyright the PHP group. |
- +----------------------------------------------------------------------+
- */
-
-/*
---------------------------------------------------------------------------
- These are definitions are pulled from Phoenix.
- It would probably be easier to maintain one file,
- but some phoenix header files conflict with other
- project header files common to PHP. Besides, this
- allows this header to be PHP license and Phoenix to
- be LGPL with no conflicts.
-
- MAKE NO CHANGES TO THIS FILE IT. MUST REMAIN CONSTANT
- WITH PHOENIX OR IT WILL NOT WORK.
---------------------------------------------------------------------------
-*/
-/* Required to use the new version of Phoenix 1.2 */
-
-#ifndef REQCLIENT_VER
-#define REQCLIENT_VER 030113
-#endif
-
-enum REQ_TYPES
-{
- REQ_ERR,
- REQ_OK,
- REQ_CTL,
- REQ_SETVAL,
- REQ_GETVAL,
- REQ_CREATE,
- REQ_DROP,
- REQ_GETALL,
- REQ_FIND,
- REQ_COUNT,
- REQ_FLUSH,
- REQ_SLOCK,
- REQ_SUNLOCK,
- REQ_TIMEOUT,
- REQ_INC,
- REQ_DATAGET,
- REQ_DATASET,
- REQ_LIST,
- REQ_LISTVAR,
- REQ_UNIQ,
- REQ_RANDSTR,
- REQ_PLUGIN,
- REQ_CALL,
- REQ_SERIALIZE,
- REQ_RESTORE,
- REQ_EXEC,
- REQ_LAST,
- REQ_INTERNAL_BEGIN=1023,
- REQ_INTERNALLAST,
-};
-enum REQ_ERRORS
-{
- REQE_NOERROR=0,
- REQE_NOSESSION,
- REQE_DUPSESSION,
- REQE_NOWLOCK,
- REQE_NOVALUE,
- REQE_LOCKED,
- REQE_NOSEND,
- REQE_NOCONNECT,
- REQE_BADCONN,
- REQE_BADHDR,
- REQE_BADVER,
- REQE_BADLEN,
- REQE_BUFFER,
- REQE_DENIED,
- REQE_NOFN,
- REQE_UNKNOWN
-};
-
-
-#define REQ_POPEN 1024
-#define REQ_PCLOSE 1025
-#define REQ_PING 1026
-
-typedef struct _requestPacket
-{
- int version;
- int stat;
- int len;
- int session;
- int name;
- int value;
- int param;
- char datum[0];
-}REQ;
-
-typedef struct _requestBuf
-{
- unsigned int type; /* Type of packet, dynamic/static */
- unsigned int size; /* size of memory block */
-#if (REQCLIENT_VER >= 030113)
- unsigned int fmt; /* format, binary/ascii */
- unsigned int reserved; /* Just in case */
-#else
-#warning You are using an old Phoenix definition, this will have problems with a newer version
-#endif
- REQ req;
-}REQB;
-
-#define MAX_REQ 16384
-
-#define REQB_STATIC 1
-#define REQB_DYNAMIC 2
-
-#define REQ_STAT_EXIST 0
-#define REQ_STAT_TTL 1
-#define REQ_STAT_AGE 2
-#define REQ_STAT_TLA 3
-#define REQ_STAT_CTIM 4
-#define REQ_STAT_TOUCH 5
-#define REQ_STAT_NOW 6
-
-
-#define STATIC_REQB( len ) \
- char buffer [ len ]; \
- REQB *preq = StaticRequestBuffer(buffer, len);
-
-#if defined (__cplusplus)
-extern "C" {
-#endif
-
-#define SIZEREQB(REQB,SIZE) (((REQB)->size >= (unsigned int) SIZE) ? REQB : SizeRequestBuffer(REQB,SIZE))
-REQB *AllocateRequestBuffer(unsigned size);
-void FreeRequestBuffer(REQB *req);
-REQB *SizeRequestBuffer(REQB *req, unsigned int size);
-REQB *StaticRequestBuffer(char *buffer, unsigned int cb);
-
-int FormatRequest(REQB **buffer, int stat, const char *session, const char *name, const char *value, int param);
-int FormatRequestMulti(REQB **buffer, int stat, char *session, int n, char **pairs, int param);
-int FormatRequestStrings(REQB **ppreq, int stat, char *session, int n, char **strings);
-int DoSingleRequest(char *hostname, int port, REQB **preq);
-void *OpenReqConn(char *hostname, int port);
-void CloseReqConn(void *conn);
-void DeleteReqConn(void *conn);
-unsigned char ReopenReqConn(void *conn);
-int DoRequest(void *conn, REQB **preq);
-char *ReqbErr(REQB *reqb);
-
-#define ASSERT_STAT(PREQ) if(PREQ->stat != REQ_OK) \
- {fprintf(stderr, "Error in Request %s %d %s\n", \
- __FILE__,__LINE__, ReqErr(PREQ->param)); exit(-1); }
-
-#if defined (__cplusplus)
- /* C API but with class definitions */
- int ReadRequestTimeout(REQB **ppreq, MSock *sock, int timeout);
- int ReadRequest(REQB **preq, MSock *sock);
- int WriteRequest(REQB *preq, MSock *sock);
-}
-#endif
-
diff --git a/ext/mssql/php_mssql.c b/ext/mssql/php_mssql.c
index 12c8a84bc..f900b5f81 100644
--- a/ext/mssql/php_mssql.c
+++ b/ext/mssql/php_mssql.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_mssql.c,v 1.152.2.12 2006/01/01 12:50:09 sniper Exp $ */
+/* $Id: php_mssql.c,v 1.152.2.13 2006/04/04 18:49:12 fmk Exp $ */
#ifdef COMPILE_DL_MSSQL
#define HAVE_MSSQL 1
@@ -229,6 +229,7 @@ static void _free_mssql_result(zend_rsrc_list_entry *rsrc TSRMLS_DC)
mssql_result *result = (mssql_result *)rsrc->ptr;
_free_result(result, 1);
+ dbcancel(result->mssql_ptr->link);
efree(result);
}
@@ -1233,6 +1234,7 @@ PHP_FUNCTION(mssql_query)
}
if (dbsqlexec(mssql_ptr->link)==FAIL || (retvalue = dbresults(mssql_ptr->link))==FAIL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Query failed");
+ dbcancel(mssql_ptr->link);
RETURN_FALSE;
}
@@ -1247,6 +1249,7 @@ PHP_FUNCTION(mssql_query)
retvalue=dbnextrow(mssql_ptr->link);
if (retvalue==FAIL) {
+ dbcancel(mssql_ptr->link);
RETURN_FALSE;
}
@@ -2172,6 +2175,7 @@ PHP_FUNCTION(mssql_execute)
if (dbrpcexec(mssql_ptr->link)==FAIL || dbsqlok(mssql_ptr->link)==FAIL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "stored procedure execution failed");
+ dbcancel(mssql_ptr->link);
RETURN_FALSE;
}
@@ -2179,6 +2183,7 @@ PHP_FUNCTION(mssql_execute)
if (retval_results==FAIL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "could not retrieve results");
+ dbcancel(mssql_ptr->link);
RETURN_FALSE;
}
diff --git a/ext/mysql/tests/001.phpt b/ext/mysql/tests/001.phpt
index 8a7c9d22c..4f79ae3ef 100755
--- a/ext/mysql/tests/001.phpt
+++ b/ext/mysql/tests/001.phpt
@@ -8,11 +8,6 @@ mysql connect
include 'connect.inc';
$test = '';
-/*** test mysql_connect 127.0.0.1 ***/
-$db = mysql_connect('127.0.0.1', $user, $passwd);
-$test .= ($db) ? '1' : '0';
-mysql_close($db);
-
/*** test mysql_connect localhost ***/
$db = mysql_connect($host, $user, $passwd);
$test .= ($db) ? '1' : '0';
@@ -27,4 +22,4 @@ var_dump($test);
?>
--EXPECT--
-string(3) "111"
+string(2) "11"
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index b968639ec..562b0d61e 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -15,7 +15,7 @@
| Author: Georg Richter <georg@php.net> |
+----------------------------------------------------------------------+
- $Id: mysqli.c,v 1.72.2.7 2006/01/01 12:50:09 sniper Exp $
+ $Id: mysqli.c,v 1.72.2.16 2006/04/02 09:40:19 georg Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -123,8 +123,9 @@ void php_clear_mysql(MY_MYSQL *mysql) {
static void mysqli_objects_free_storage(zend_object *object TSRMLS_DC)
{
mysqli_object *intern = (mysqli_object *)object;
-
- zend_objects_free_object_storage(&(intern->zo) TSRMLS_CC);
+
+ zend_object_std_dtor(&intern->zo TSRMLS_CC);
+ efree(intern);
}
/* }}} */
@@ -211,22 +212,11 @@ zval *mysqli_read_property(zval *object, zval *member, int type TSRMLS_DC)
}
if (ret == SUCCESS) {
-
- /* check if mysqli object is still valid */
- if (!strcmp(obj->zo.ce->name, "mysqli")) {
- if (!obj->ptr ||
- !((MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql)->thread_id) {
- retval = EG(uninitialized_zval_ptr);
- return(retval);
- }
- } else
- /* check if stmt object is still valid */
- if (!strcmp(obj->zo.ce->name, "mysqli_stmt")) {
- if (!obj->ptr ||
- !((MYSQL_STMT *)((MY_STMT *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->stmt)->mysql) {
- retval = EG(uninitialized_zval_ptr);
- return(retval);
- }
+ if (strcmp(obj->zo.ce->name, "mysqli_driver") &&
+ (!obj->ptr || ((MYSQLI_RESOURCE *)(obj->ptr))->status < MYSQLI_STATUS_INITIALIZED)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", obj->zo.ce->name );
+ retval = EG(uninitialized_zval_ptr);
+ return(retval);
}
ret = hnd->read_func(obj, &retval TSRMLS_CC);
@@ -343,10 +333,7 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry *class_
intern = emalloc(sizeof(mysqli_object));
memset(intern, 0, sizeof(mysqli_object));
- intern->zo.ce = class_type;
- intern->zo.guards = NULL;
intern->ptr = NULL;
- intern->valid = 0;
intern->prop_handler = NULL;
mysqli_base_class = class_type;
@@ -357,8 +344,7 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry *class_
zend_hash_find(&classes, mysqli_base_class->name, mysqli_base_class->name_length + 1,
(void **) &intern->prop_handler);
- ALLOC_HASHTABLE(intern->zo.properties);
- zend_hash_init(intern->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ zend_object_std_init(&intern->zo, class_type TSRMLS_CC);
zend_hash_copy(intern->zo.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref,
(void *) &tmp, sizeof(zval *));
@@ -567,6 +553,13 @@ PHP_MINIT_FUNCTION(mysqli)
REGISTER_LONG_CONSTANT("MYSQLI_TYPE_INTERVAL", FIELD_TYPE_INTERVAL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("MYSQLI_TYPE_GEOMETRY", FIELD_TYPE_GEOMETRY, CONST_CS | CONST_PERSISTENT);
+#if MYSQL_VERSION_ID > 50002
+ REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NEWDECIMAL", FIELD_TYPE_NEWDECIMAL, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MYSQLI_TYPE_BIT", FIELD_TYPE_BIT, CONST_CS | CONST_PERSISTENT);
+#endif
+
+
+
/* replication */
REGISTER_LONG_CONSTANT("MYSQLI_RPL_MASTER", MYSQL_RPL_MASTER, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("MYSQLI_RPL_SLAVE", MYSQL_RPL_SLAVE, CONST_CS | CONST_PERSISTENT);
@@ -581,6 +574,7 @@ PHP_MINIT_FUNCTION(mysqli)
/* reporting */
REGISTER_LONG_CONSTANT("MYSQLI_REPORT_INDEX", MYSQLI_REPORT_INDEX, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ERROR", MYSQLI_REPORT_ERROR, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MYSQLI_REPORT_STRICT", MYSQLI_REPORT_STRICT, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ALL", MYSQLI_REPORT_ALL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("MYSQLI_REPORT_OFF", 0, CONST_CS | CONST_PERSISTENT);
@@ -632,7 +626,8 @@ PHP_MINFO_FUNCTION(mysqli)
{
php_info_print_table_start();
php_info_print_table_header(2, "MysqlI Support", "enabled");
- php_info_print_table_row(2, "Client API version", mysql_get_client_info());
+ php_info_print_table_row(2, "Client API library version", mysql_get_client_info());
+ php_info_print_table_row(2, "Client API header version", MYSQL_SERVER_VERSION);
php_info_print_table_row(2, "MYSQLI_SOCKET", MYSQL_UNIX_ADDR);
@@ -645,7 +640,7 @@ PHP_MINFO_FUNCTION(mysqli)
/* {{{ mixed mysqli_stmt_construct()
constructor for statement object.
Parameters:
- object -> mysqli_init
+ object -> mysqli_stmt_init
object, query -> mysqli_prepare
*/
ZEND_FUNCTION(mysqli_stmt_construct)
@@ -663,7 +658,7 @@ ZEND_FUNCTION(mysqli_stmt_construct)
if (zend_parse_parameters(1 TSRMLS_CC, "O", &mysql_link, mysqli_link_class_entry)==FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
stmt = (MY_STMT *)ecalloc(1,sizeof(MY_STMT));
@@ -673,7 +668,7 @@ ZEND_FUNCTION(mysqli_stmt_construct)
if (zend_parse_parameters(2 TSRMLS_CC, "Os", &mysql_link, mysqli_link_class_entry, &statement, &stmt_len)==FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
stmt = (MY_STMT *)ecalloc(1,sizeof(MY_STMT));
@@ -693,9 +688,9 @@ ZEND_FUNCTION(mysqli_stmt_construct)
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
mysqli_resource->ptr = (void *)stmt;
-
+ mysqli_resource->status = (ZEND_NUM_ARGS() == 1) ? MYSQLI_STATUS_INITIALIZED : MYSQLI_STATUS_VALID;
+
((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->ptr = mysqli_resource;
- ((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->valid = 1;
}
/* }}} */
@@ -727,7 +722,7 @@ ZEND_FUNCTION(mysqli_result_construct)
WRONG_PARAM_COUNT;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
result = (resmode == MYSQLI_STORE_RESULT) ? mysql_store_result(mysql->mysql) :
mysql_use_result(mysql->mysql);
@@ -738,9 +733,9 @@ ZEND_FUNCTION(mysqli_result_construct)
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
mysqli_resource->ptr = (void *)result;
+ mysqli_resource->status = MYSQLI_STATUS_VALID;
((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->ptr = mysqli_resource;
- ((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->valid = 1;
}
/* }}} */
@@ -789,7 +784,7 @@ void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flags
}
}
}
- MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result");
+ MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
if ((fetchtype & MYSQLI_BOTH) == 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "The result type should be either MYSQLI_NUM, MYSQLI_ASSOC or MYSQLI_BOTH");
@@ -981,6 +976,7 @@ int php_local_infile_init(void **ptr, const char *filename, void *userdata)
mysql->li_stream = php_stream_open_wrapper_ex((char *)filename, "r", 0, NULL, context);
if (mysql->li_stream == NULL) {
+ sprintf((char *)data->error_msg, "Can't find file '%-.64s'.", filename);
return 1;
}
diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c
index 4c5811560..4886b3f78 100644
--- a/ext/mysqli/mysqli_api.c
+++ b/ext/mysqli/mysqli_api.c
@@ -15,7 +15,7 @@
| Author: Georg Richter <georg@php.net> |
+----------------------------------------------------------------------+
- $Id: mysqli_api.c,v 1.118.2.16 2006/01/01 16:55:01 andrey Exp $
+ $Id: mysqli_api.c,v 1.118.2.22 2006/04/05 12:17:08 georg Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -41,7 +41,7 @@ PHP_FUNCTION(mysqli_affected_rows)
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
rc = mysql_affected_rows(mysql->mysql);
if (rc == (my_ulonglong) -1) {
@@ -62,7 +62,7 @@ PHP_FUNCTION(mysqli_autocommit)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ob", &mysql_link, mysqli_link_class_entry, &automode) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql_autocommit(mysql->mysql, automode)) {
RETURN_FALSE;
@@ -103,7 +103,7 @@ PHP_FUNCTION(mysqli_stmt_bind_param)
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
if (getThis()) {
start = 1;
@@ -229,7 +229,7 @@ PHP_FUNCTION(mysqli_stmt_bind_result)
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
if (argc < (getThis() ? 1 : 2)) {
WRONG_PARAM_COUNT;
@@ -295,7 +295,7 @@ PHP_FUNCTION(mysqli_stmt_bind_result)
convert_to_long_ex(args[i]);
stmt->result.buf[ofs].type = IS_LONG;
stmt->result.buf[ofs].buflen = 0;
- stmt->result.buf[ofs].val = (char *)emalloc(sizeof(long));
+ stmt->result.buf[ofs].val = (char *)emalloc(sizeof(int));
bind[ofs].buffer_type = MYSQL_TYPE_LONG;
bind[ofs].buffer = stmt->result.buf[ofs].val;
bind[ofs].is_null = &stmt->result.is_null[ofs];
@@ -326,7 +326,12 @@ PHP_FUNCTION(mysqli_stmt_bind_result)
case MYSQL_TYPE_NEWDECIMAL:
#endif
{
- ulong tmp;
+#if MYSQL_VERSION_ID > 50099
+ /* Changed to my_bool in MySQL 5.1. See MySQL Bug #16144 */
+ my_bool tmp;
+#else
+ ulong tmp = 0;
+#endif
stmt->result.buf[ofs].type = IS_STRING;
/*
If the user has called $stmt->store_result() then we have asked
@@ -404,7 +409,7 @@ PHP_FUNCTION(mysqli_change_user)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Osss", &mysql_link, mysqli_link_class_entry, &user, &user_len, &password, &password_len, &dbname, &dbname_len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
rc = mysql_change_user(mysql->mysql, user, password, dbname);
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
@@ -428,7 +433,7 @@ PHP_FUNCTION(mysqli_character_set_name)
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_STRING((char *) mysql_character_set_name(mysql->mysql), 1);
}
@@ -445,7 +450,7 @@ PHP_FUNCTION(mysqli_close)
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_INITIALIZED);
mysql_close(mysql->mysql);
php_clear_mysql(mysql);
@@ -465,7 +470,7 @@ PHP_FUNCTION(mysqli_commit)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql_commit(mysql->mysql)) {
RETURN_FALSE;
}
@@ -485,7 +490,7 @@ PHP_FUNCTION(mysqli_data_seek)
return;
}
- MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result");
+ MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
if (result->handle && result->handle->status == MYSQL_STATUS_USE_RESULT) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Function cannot be used with MYSQL_USE_RESULT");
@@ -528,7 +533,7 @@ PHP_FUNCTION(mysqli_dump_debug_info)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
rc = mysql_dump_debug_info(mysql->mysql);
@@ -549,7 +554,7 @@ PHP_FUNCTION(mysqli_errno)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_LONG(mysql_errno(mysql->mysql));
}
/* }}} */
@@ -564,7 +569,7 @@ PHP_FUNCTION(mysqli_error)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_STRING((char *)mysql_error(mysql->mysql),1);
}
/* }}} */
@@ -580,7 +585,7 @@ PHP_FUNCTION(mysqli_stmt_execute)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
for (i = 0; i < stmt->param.var_cnt; i++) {
if (stmt->param.vars[i]) {
@@ -627,14 +632,13 @@ PHP_FUNCTION(mysqli_stmt_fetch)
unsigned int i;
ulong ret;
unsigned int uval;
- double dval;
my_ulonglong llval;
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
/* reset buffers */
@@ -658,7 +662,7 @@ PHP_FUNCTION(mysqli_stmt_fetch)
if (!stmt->result.is_null[i]) {
switch (stmt->result.buf[i].type) {
case IS_LONG:
- if ((sizeof(long) ==4) && (stmt->stmt->fields[i].type == MYSQL_TYPE_LONG)
+ if ((stmt->stmt->fields[i].type == MYSQL_TYPE_LONG)
&& (stmt->stmt->fields[i].flags & UNSIGNED_FLAG))
{
/* unsigned int (11) */
@@ -679,11 +683,14 @@ PHP_FUNCTION(mysqli_stmt_fetch)
break;
}
}
- ZVAL_LONG(stmt->result.vars[i], *(int *)stmt->result.buf[i].val);
+ if (stmt->stmt->fields[i].flags & UNSIGNED_FLAG) {
+ ZVAL_LONG(stmt->result.vars[i], *(unsigned int *)stmt->result.buf[i].val);
+ } else {
+ ZVAL_LONG(stmt->result.vars[i], *(int *)stmt->result.buf[i].val);
+ };
break;
case IS_DOUBLE:
- memcpy(&dval, stmt->result.buf[i].val, sizeof(dval));
- ZVAL_DOUBLE(stmt->result.vars[i], dval);
+ ZVAL_DOUBLE(stmt->result.vars[i], *(double *)stmt->result.buf[i].val);
break;
case IS_STRING:
if (stmt->stmt->bind[i].buffer_type == MYSQL_TYPE_LONGLONG) {
@@ -698,10 +705,10 @@ PHP_FUNCTION(mysqli_stmt_fetch)
#endif
char tmp[22];
/* even though lval is declared as unsigned, the value
- * may be negative. Therefor we cannot use %llu and must
- * use %lld.
+ * may be negative. Therefor we cannot use MYSQLI_LLU_SPEC and must
+ * use MYSQLI_LL_SPEC.
*/
- sprintf((char *)&tmp, (stmt->stmt->fields[i].flags & UNSIGNED_FLAG)? "%llu":"%lld", llval);
+ sprintf((char *)&tmp, (stmt->stmt->fields[i].flags & UNSIGNED_FLAG)? MYSQLI_LLU_SPEC : MYSQLI_LL_SPEC, llval);
ZVAL_STRING(stmt->result.vars[i], tmp, 1);
} else {
ZVAL_LONG(stmt->result.vars[i], llval);
@@ -754,7 +761,7 @@ PHP_FUNCTION(mysqli_fetch_field)
return;
}
- MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result");
+ MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
if (!(field = mysql_fetch_field(result))) {
RETURN_FALSE;
@@ -791,7 +798,7 @@ PHP_FUNCTION(mysqli_fetch_fields)
return;
}
- MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result");
+ MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
array_init(return_value);
@@ -832,7 +839,7 @@ PHP_FUNCTION(mysqli_fetch_field_direct)
return;
}
- MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result");
+ MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
if (offset < 0 || offset >= mysql_num_fields(result)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Field offset is invalid for resultset");
@@ -872,7 +879,7 @@ PHP_FUNCTION(mysqli_fetch_lengths)
return;
}
- MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result");
+ MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
if (!(ret = mysql_fetch_lengths(result))) {
RETURN_FALSE;
@@ -905,7 +912,7 @@ PHP_FUNCTION(mysqli_field_count)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_LONG(mysql_field_count(mysql->mysql));
}
@@ -923,7 +930,7 @@ PHP_FUNCTION(mysqli_field_seek)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_result, mysqli_result_class_entry, &fieldnr) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result");
+ MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
if (fieldnr < 0 || fieldnr >= mysql_num_fields(result)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Function cannot be used with MYSQL_USE_RESULT");
@@ -945,7 +952,7 @@ PHP_FUNCTION(mysqli_field_tell)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result");
+ MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
RETURN_LONG(mysql_field_tell(result));
}
@@ -961,7 +968,7 @@ PHP_FUNCTION(mysqli_free_result)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result");
+ MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
mysql_free_result(result);
MYSQLI_CLEAR_RESOURCE(&mysql_result);
@@ -996,7 +1003,7 @@ PHP_FUNCTION(mysqli_get_host_info)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_STRING((mysql->mysql->host_info) ? mysql->mysql->host_info : "", 1);
}
@@ -1012,7 +1019,7 @@ PHP_FUNCTION(mysqli_get_proto_info)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_LONG(mysql_get_proto_info(mysql->mysql));
}
@@ -1028,7 +1035,7 @@ PHP_FUNCTION(mysqli_get_server_info)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_STRING((char *)mysql_get_server_info(mysql->mysql), 1);
}
@@ -1045,7 +1052,7 @@ PHP_FUNCTION(mysqli_get_server_version)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_LONG(mysql_get_server_version(mysql->mysql));
}
@@ -1061,7 +1068,7 @@ PHP_FUNCTION(mysqli_info)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_STRING((mysql->mysql->info) ? mysql->mysql->info : "", 1);
}
@@ -1081,12 +1088,12 @@ PHP_FUNCTION(mysqli_init)
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
mysqli_resource->ptr = (void *)mysql;
+ mysqli_resource->status = MYSQLI_STATUS_INITIALIZED;
if (!getThis() || !instanceof_function(Z_OBJCE_P(getThis()), mysqli_link_class_entry TSRMLS_CC)) {
MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_link_class_entry);
} else {
((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->ptr = mysqli_resource;
- ((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->valid = 1;
}
}
/* }}} */
@@ -1102,7 +1109,7 @@ PHP_FUNCTION(mysqli_insert_id)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
rc = mysql_insert_id(mysql->mysql);
MYSQLI_RETURN_LONG_LONG(rc)
}
@@ -1119,7 +1126,7 @@ PHP_FUNCTION(mysqli_kill)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_link, mysqli_link_class_entry, &processid) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql_kill(mysql->mysql, processid)) {
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
@@ -1140,7 +1147,7 @@ PHP_FUNCTION(mysqli_set_local_infile_default)
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql->li_read) {
efree(Z_STRVAL_P(mysql->li_read));
@@ -1164,7 +1171,7 @@ PHP_FUNCTION(mysqli_set_local_infile_handler)
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
/* check callback function */
if (!zend_is_callable(callback_func, 0, &callback_name)) {
@@ -1190,7 +1197,7 @@ PHP_FUNCTION(mysqli_more_results)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (!mysql_more_results(mysql->mysql)) {
RETURN_FALSE;
@@ -1208,7 +1215,7 @@ PHP_FUNCTION(mysqli_next_result) {
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql_next_result(mysql->mysql)) {
RETURN_FALSE;
@@ -1227,7 +1234,7 @@ PHP_FUNCTION(mysqli_num_fields)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result");
+ MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
RETURN_LONG(mysql_num_fields(result));
}
@@ -1243,7 +1250,7 @@ PHP_FUNCTION(mysqli_num_rows)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result");
+ MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
if (result->handle && result->handle->status == MYSQL_STATUS_USE_RESULT) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Function cannot be used with MYSQL_USE_RESULT");
@@ -1268,7 +1275,7 @@ PHP_FUNCTION(mysqli_options)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Olz", &mysql_link, mysqli_link_class_entry, &mysql_option, &mysql_value) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_INITIALIZED);
switch (Z_TYPE_PP(&mysql_value)) {
case IS_STRING:
@@ -1301,7 +1308,7 @@ PHP_FUNCTION(mysqli_ping)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
rc = mysql_ping(mysql->mysql);
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
if (rc) {
@@ -1325,7 +1332,7 @@ PHP_FUNCTION(mysqli_prepare)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os",&mysql_link, mysqli_link_class_entry, &query, &query_len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql->mysql->status == MYSQL_STATUS_GET_RESULT) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "All data must be fetched before a new statement prepare takes place");
RETURN_FALSE;
@@ -1360,10 +1367,14 @@ PHP_FUNCTION(mysqli_prepare)
RETURN_FALSE;
}
+
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
mysqli_resource->ptr = (void *)stmt;
stmt->query = (query_len) ? (char *)emalloc(query_len + 1) : NULL;
strcpy(stmt->query, query);
+
+ /* change status */
+ mysqli_resource->status = MYSQLI_STATUS_VALID;
MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_stmt_class_entry);
}
/* }}} */
@@ -1377,7 +1388,6 @@ PHP_FUNCTION(mysqli_real_connect)
unsigned int hostname_len = 0, username_len = 0, passwd_len = 0, dbname_len = 0, socket_len = 0;
unsigned long port=0, flags=0;
zval *mysql_link;
- zval *object = getThis();
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|sssslsl", &mysql_link, mysqli_link_class_entry,
&hostname, &hostname_len, &username, &username_len, &passwd, &passwd_len, &dbname, &dbname_len, &port, &socket, &socket_len,
@@ -1403,7 +1413,7 @@ PHP_FUNCTION(mysqli_real_connect)
}
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_INITIALIZED);
/* remove some insecure options */
flags ^= CLIENT_MULTI_STATEMENTS; /* don't allow multi_queries via connect parameter */
@@ -1416,23 +1426,24 @@ PHP_FUNCTION(mysqli_real_connect)
}
if (mysql_real_connect(mysql->mysql,hostname,username,passwd,dbname,port,socket,flags) == NULL) {
-
php_mysqli_set_error(mysql_errno(mysql->mysql), (char *) mysql_error(mysql->mysql) TSRMLS_CC);
php_mysqli_throw_sql_exception( mysql->mysql->net.sqlstate, mysql->mysql->net.last_errno TSRMLS_CC,
"%s", mysql->mysql->net.last_error);
+ /* change status */
+ MYSQLI_SET_STATUS(&mysql_link, MYSQLI_STATUS_INITIALIZED);
RETURN_FALSE;
}
+
php_mysqli_set_error(mysql_errno(mysql->mysql), (char *)mysql_error(mysql->mysql) TSRMLS_CC);
mysql->mysql->reconnect = MyG(reconnect);
/* set our own local_infile handler */
php_set_local_infile_handler_default(mysql);
-
- if (object) {
- ((mysqli_object *) zend_object_store_get_object(object TSRMLS_CC))->valid = 1;
- }
+
+ /* change status */
+ MYSQLI_SET_STATUS(&mysql_link, MYSQLI_STATUS_VALID);
RETURN_TRUE;
}
@@ -1450,7 +1461,7 @@ PHP_FUNCTION(mysqli_real_query)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &query, &query_len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
MYSQLI_DISABLE_MQ; /* disable multi statements/queries */
@@ -1480,7 +1491,7 @@ PHP_FUNCTION(mysqli_real_escape_string) {
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &escapestr, &escapestr_len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
newstr = safe_emalloc(2, escapestr_len, 1);
newstr_len = mysql_real_escape_string(mysql->mysql, newstr, escapestr, escapestr_len);
@@ -1500,7 +1511,7 @@ PHP_FUNCTION(mysqli_rollback)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql_rollback(mysql->mysql)) {
RETURN_FALSE;
@@ -1523,7 +1534,7 @@ PHP_FUNCTION(mysqli_stmt_send_long_data)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ols", &mysql_stmt, mysqli_stmt_class_entry, &param_nr, &data, &data_len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
if (param_nr < 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid parameter number");
@@ -1548,7 +1559,7 @@ PHP_FUNCTION(mysqli_stmt_affected_rows)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
rc = mysql_stmt_affected_rows(stmt->stmt);
if (rc == (my_ulonglong) -1) {
@@ -1568,13 +1579,13 @@ PHP_FUNCTION(mysqli_stmt_close)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
+
mysql_stmt_close(stmt->stmt);
stmt->stmt = NULL;
php_clear_stmt_bind(stmt);
MYSQLI_CLEAR_RESOURCE(&mysql_stmt);
RETURN_TRUE;
-
}
/* }}} */
@@ -1594,7 +1605,7 @@ PHP_FUNCTION(mysqli_stmt_data_seek)
RETURN_FALSE;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
mysql_stmt_data_seek(stmt->stmt, offset);
return;
@@ -1611,7 +1622,7 @@ PHP_FUNCTION(mysqli_stmt_field_count)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
RETURN_LONG(mysql_stmt_field_count(stmt->stmt));
}
@@ -1628,7 +1639,7 @@ PHP_FUNCTION(mysqli_stmt_free_result)
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
mysql_stmt_free_result(stmt->stmt);
@@ -1647,7 +1658,7 @@ PHP_FUNCTION(mysqli_stmt_insert_id)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
rc = mysql_stmt_insert_id(stmt->stmt);
MYSQLI_RETURN_LONG_LONG(rc)
}
@@ -1663,7 +1674,7 @@ PHP_FUNCTION(mysqli_stmt_param_count)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
RETURN_LONG(mysql_stmt_param_count(stmt->stmt));
}
@@ -1680,7 +1691,7 @@ PHP_FUNCTION(mysqli_stmt_reset)
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
if (mysql_stmt_reset(stmt->stmt)) {
RETURN_FALSE;
@@ -1701,7 +1712,7 @@ PHP_FUNCTION(mysqli_stmt_num_rows)
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
rc = mysql_stmt_num_rows(stmt->stmt);
MYSQLI_RETURN_LONG_LONG(rc)
@@ -1721,7 +1732,7 @@ PHP_FUNCTION(mysqli_select_db)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &dbname, &dbname_len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (!mysql_select_db(mysql->mysql, dbname)) {
RETURN_TRUE;
@@ -1742,7 +1753,7 @@ PHP_FUNCTION(mysqli_sqlstate)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_STRING((char *)mysql_sqlstate(mysql->mysql),1);
}
/* }}} */
@@ -1759,7 +1770,7 @@ PHP_FUNCTION(mysqli_ssl_set)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Osssss", &mysql_link, mysqli_link_class_entry, &ssl_parm[0], &ssl_parm_len[0], &ssl_parm[1], &ssl_parm_len[1], &ssl_parm[2], &ssl_parm_len[2], &ssl_parm[3], &ssl_parm_len[3], &ssl_parm[4], &ssl_parm_len[4]) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
for (i=0; i < 5; i++) {
if (!ssl_parm_len[i]) {
@@ -1784,7 +1795,7 @@ PHP_FUNCTION(mysqli_stat)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if ((stat = (char *)mysql_stat(mysql->mysql))) {
RETURN_STRING(stat, 1);
@@ -1807,7 +1818,7 @@ PHP_FUNCTION(mysqli_stmt_attr_set)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oll", &mysql_stmt, mysqli_stmt_class_entry, &attr, &mode) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
if ((rc = mysql_stmt_attr_set(stmt->stmt, attr, (void *)&mode))) {
RETURN_FALSE;
@@ -1822,14 +1833,14 @@ PHP_FUNCTION(mysqli_stmt_attr_get)
{
MY_STMT *stmt;
zval *mysql_stmt;
- ulong value;
+ ulong value = 0;
ulong attr;
int rc;
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_stmt, mysqli_stmt_class_entry, &attr) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
if ((rc = mysql_stmt_attr_get(stmt->stmt, attr, &value))) {
RETURN_FALSE;
@@ -1848,7 +1859,7 @@ PHP_FUNCTION(mysqli_stmt_errno)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_INITIALIZED);
RETURN_LONG(mysql_stmt_errno(stmt->stmt));
}
@@ -1864,7 +1875,7 @@ PHP_FUNCTION(mysqli_stmt_error)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_INITIALIZED);
RETURN_STRING((char *)mysql_stmt_error(stmt->stmt),1);
}
@@ -1883,7 +1894,7 @@ PHP_FUNCTION(mysqli_stmt_init)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O",&mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
stmt = (MY_STMT *)ecalloc(1,sizeof(MY_STMT));
@@ -1893,6 +1904,7 @@ PHP_FUNCTION(mysqli_stmt_init)
}
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
+ mysqli_resource->status = MYSQLI_STATUS_INITIALIZED;
mysqli_resource->ptr = (void *)stmt;
MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_stmt_class_entry);
}
@@ -1911,12 +1923,14 @@ PHP_FUNCTION(mysqli_stmt_prepare)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_stmt, mysqli_stmt_class_entry, &query, &query_len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_INITIALIZED);
if (mysql_stmt_prepare(stmt->stmt, query, query_len)) {
MYSQLI_REPORT_STMT_ERROR(stmt->stmt);
RETURN_FALSE;
}
+ /* change status */
+ MYSQLI_SET_STATUS(&mysql_stmt, MYSQLI_STATUS_VALID);
RETURN_TRUE;
}
/* }}} */
@@ -1933,7 +1947,7 @@ PHP_FUNCTION(mysqli_stmt_result_metadata)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
if (!(result = mysql_stmt_result_metadata(stmt->stmt))){
MYSQLI_REPORT_STMT_ERROR(stmt->stmt);
@@ -1942,6 +1956,7 @@ PHP_FUNCTION(mysqli_stmt_result_metadata)
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
mysqli_resource->ptr = (void *)result;
+ mysqli_resource->status = MYSQLI_STATUS_VALID;
MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_result_class_entry);
}
/* }}} */
@@ -1957,7 +1972,7 @@ PHP_FUNCTION(mysqli_stmt_store_result)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
/*
If the user wants to store the data and we have BLOBs/TEXTs we try to allocate
@@ -1992,7 +2007,7 @@ PHP_FUNCTION(mysqli_stmt_sqlstate)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt", MYSQLI_STATUS_VALID);
RETURN_STRING((char *)mysql_stmt_sqlstate(stmt->stmt),1);
}
@@ -2010,7 +2025,7 @@ PHP_FUNCTION(mysqli_store_result)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (!(result = mysql_store_result(mysql->mysql))) {
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
@@ -2019,8 +2034,10 @@ PHP_FUNCTION(mysqli_store_result)
if (MyG(report_mode) & MYSQLI_REPORT_INDEX) {
php_mysqli_report_index("from previous query", mysql->mysql->server_status TSRMLS_CC);
}
+
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
mysqli_resource->ptr = (void *)result;
+ mysqli_resource->status = MYSQLI_STATUS_VALID;
MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_result_class_entry);
}
/* }}} */
@@ -2035,7 +2052,7 @@ PHP_FUNCTION(mysqli_thread_id)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_LONG(mysql_thread_id(mysql->mysql));
}
@@ -2062,7 +2079,7 @@ PHP_FUNCTION(mysqli_use_result)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (!(result = mysql_use_result(mysql->mysql))) {
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
@@ -2072,9 +2089,9 @@ PHP_FUNCTION(mysqli_use_result)
if (MyG(report_mode) & MYSQLI_REPORT_INDEX) {
php_mysqli_report_index("from previous query", mysql->mysql->server_status TSRMLS_CC);
}
-
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
mysqli_resource->ptr = (void *)result;
+ mysqli_resource->status = MYSQLI_STATUS_VALID;
MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_result_class_entry);
}
/* }}} */
@@ -2089,7 +2106,7 @@ PHP_FUNCTION(mysqli_warning_count)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_LONG(mysql_warning_count(mysql->mysql));
}
diff --git a/ext/mysqli/mysqli_driver.c b/ext/mysqli/mysqli_driver.c
index 8e473eab0..d1c776ad1 100644
--- a/ext/mysqli/mysqli_driver.c
+++ b/ext/mysqli/mysqli_driver.c
@@ -130,7 +130,6 @@ MAP_PROPERTY_MYG_LONG_READ(driver_report_read, report_mode);
ZEND_FUNCTION(mysqli_driver_construct)
{
-
}
mysqli_property_entry mysqli_driver_property_entries[] = {
diff --git a/ext/mysqli/mysqli_nonapi.c b/ext/mysqli/mysqli_nonapi.c
index 2c408a99a..1866beb49 100644
--- a/ext/mysqli/mysqli_nonapi.c
+++ b/ext/mysqli/mysqli_nonapi.c
@@ -15,7 +15,7 @@
| Author: Georg Richter <georg@php.net> |
+----------------------------------------------------------------------+
- $Id: mysqli_nonapi.c,v 1.54.2.5 2006/01/01 12:50:09 sniper Exp $
+ $Id: mysqli_nonapi.c,v 1.54.2.7 2006/03/24 09:32:24 georg Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -75,10 +75,11 @@ PHP_FUNCTION(mysqli_connect)
}
#ifdef HAVE_EMBEDDED_MYSQLI
- if (hostname_len && hostname) {
+ if (strcmp(hostname, ":embedded")) {
unsigned int external=1;
mysql_options(mysql->mysql, MYSQL_OPT_USE_REMOTE_CONNECTION, (char *)&external);
} else {
+ hostname[0] = '\0';
mysql_options(mysql->mysql, MYSQL_OPT_USE_EMBEDDED_CONNECTION, 0);
}
#endif
@@ -111,12 +112,12 @@ PHP_FUNCTION(mysqli_connect)
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
mysqli_resource->ptr = (void *)mysql;
+ mysqli_resource->status = MYSQLI_STATUS_VALID;
if (!object || !instanceof_function(Z_OBJCE_P(object), mysqli_link_class_entry TSRMLS_CC)) {
MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_link_class_entry);
} else {
((mysqli_object *) zend_object_store_get_object(object TSRMLS_CC))->ptr = mysqli_resource;
- ((mysqli_object *) zend_object_store_get_object(object TSRMLS_CC))->valid = 1;
}
}
/* }}} */
@@ -177,7 +178,7 @@ PHP_FUNCTION(mysqli_multi_query)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &query, &query_len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
MYSQLI_ENABLE_MQ;
if (mysql_real_query(mysql->mysql, query, query_len)) {
@@ -228,7 +229,7 @@ PHP_FUNCTION(mysqli_query)
RETURN_FALSE;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
MYSQLI_DISABLE_MQ;
@@ -259,6 +260,7 @@ PHP_FUNCTION(mysqli_query)
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
mysqli_resource->ptr = (void *)result;
+ mysqli_resource->status = MYSQLI_STATUS_VALID;
MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_result_class_entry);
}
/* }}} */
@@ -274,7 +276,7 @@ PHP_FUNCTION(mysqli_get_warnings)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql_warning_count(mysql->mysql)) {
w = php_get_warnings(mysql->mysql);
@@ -298,7 +300,7 @@ PHP_FUNCTION(mysqli_stmt_get_warnings)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &stmt_link, mysqli_stmt_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT*, &stmt_link, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT*, &stmt_link, "mysqli_stmt", 1);
if (mysql_warning_count(stmt->stmt->mysql)) {
w = php_get_warnings(stmt->stmt->mysql);
@@ -324,7 +326,7 @@ PHP_FUNCTION(mysqli_set_charset)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &cs_name, &len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql_set_character_set(mysql->mysql, cs_name)) {
RETURN_FALSE;
@@ -346,7 +348,7 @@ PHP_FUNCTION(mysqli_get_charset)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
object_init(return_value);
diff --git a/ext/mysqli/mysqli_prop.c b/ext/mysqli/mysqli_prop.c
index 664fe51d2..2ed0076cb 100644
--- a/ext/mysqli/mysqli_prop.c
+++ b/ext/mysqli/mysqli_prop.c
@@ -15,7 +15,7 @@
| Author: Georg Richter <georg@php.net> |
+----------------------------------------------------------------------+
- $Id: mysqli_prop.c,v 1.23.2.1 2006/01/01 12:50:09 sniper Exp $
+ $Id: mysqli_prop.c,v 1.23.2.5 2006/04/05 12:17:08 georg Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -29,30 +29,49 @@
#include "ext/standard/info.h"
#include "php_mysqli.h"
-#define CHECK_OBJECT() \
- if (!obj->valid) { \
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Property access is not allowed yet. Call the default constructor of the object first"); \
+#define CHECK_STATUS(value) \
+ if (((MYSQLI_RESOURCE *)obj->ptr)->status < value ) { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Property access is not allowed yet"); \
ZVAL_NULL(*retval); \
return SUCCESS; \
} \
-#define MYSQLI_GET_MYSQL() \
+#define MYSQLI_GET_MYSQL(statusval) \
MYSQL *p; \
ALLOC_ZVAL(*retval);\
-CHECK_OBJECT();\
-p = (MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql;
+if (!obj->ptr || !(MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr) { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", obj->zo.ce->name);\
+ ZVAL_NULL(*retval);\
+ return SUCCESS; \
+} else { \
+ CHECK_STATUS(statusval);\
+ p = (MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql;\
+}
-#define MYSQLI_GET_RESULT() \
+#define MYSQLI_GET_RESULT(statusval) \
MYSQL_RES *p; \
ALLOC_ZVAL(*retval);\
-CHECK_OBJECT();\
-p = (MYSQL_RES *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr
+if (!obj->ptr) { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", obj->zo.ce->name);\
+ ZVAL_NULL(*retval);\
+ return SUCCESS; \
+} else { \
+ CHECK_STATUS(statusval);\
+ p = (MYSQL_RES *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr; \
+}
+
-#define MYSQLI_GET_STMT() \
+#define MYSQLI_GET_STMT(statusval) \
MYSQL_STMT *p; \
ALLOC_ZVAL(*retval);\
-CHECK_OBJECT();\
-p = (MYSQL_STMT *)((MY_STMT *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->stmt
+if (!obj->ptr) { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", obj->zo.ce->name);\
+ ZVAL_NULL(*retval);\
+ return SUCCESS; \
+} else { \
+ CHECK_STATUS(statusval);\
+ p = (MYSQL_STMT *)((MY_STMT *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->stmt;\
+}
#define MYSQLI_MAP_PROPERTY_FUNC_LONG( __func, __int_func, __get_type, __ret_type)\
static int __func(mysqli_object *obj, zval **retval TSRMLS_DC) \
@@ -67,7 +86,7 @@ static int __func(mysqli_object *obj, zval **retval TSRMLS_DC) \
ZVAL_LONG(*retval, l);\
} else { \
char ret[40]; \
- sprintf(ret, "%llu", (my_ulonglong)l); \
+ sprintf(ret, MYSQLI_LLU_SPEC, (my_ulonglong)l); \
ZVAL_STRING(*retval, ret, 1); \
} \
}\
@@ -105,6 +124,7 @@ static int link_client_version_read(mysqli_object *obj, zval **retval TSRMLS_DC)
static int link_client_info_read(mysqli_object *obj, zval **retval TSRMLS_DC)
{
ALLOC_ZVAL(*retval);
+ CHECK_STATUS(MYSQLI_STATUS_INITIALIZED);
ZVAL_STRING(*retval, MYSQL_SERVER_VERSION, 1);
return SUCCESS;
}
@@ -114,6 +134,7 @@ static int link_client_info_read(mysqli_object *obj, zval **retval TSRMLS_DC)
static int link_connect_errno_read(mysqli_object *obj, zval **retval TSRMLS_DC)
{
ALLOC_ZVAL(*retval);
+ CHECK_STATUS(MYSQLI_STATUS_INITIALIZED);
ZVAL_LONG(*retval, (long)MyG(error_no));
return SUCCESS;
}
@@ -123,6 +144,7 @@ static int link_connect_errno_read(mysqli_object *obj, zval **retval TSRMLS_DC)
static int link_connect_error_read(mysqli_object *obj, zval **retval TSRMLS_DC)
{
ALLOC_ZVAL(*retval);
+ CHECK_STATUS(MYSQLI_STATUS_INITIALIZED);
ZVAL_STRING(*retval, MyG(error_msg), 1);
return SUCCESS;
}
@@ -135,41 +157,46 @@ static int link_affected_rows_read(mysqli_object *obj, zval **retval TSRMLS_DC)
my_ulonglong rc;
ALLOC_ZVAL(*retval);
- CHECK_OBJECT();
mysql = (MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
- rc = mysql_affected_rows(mysql->mysql);
-
- if (rc == (my_ulonglong)-1) {
- ZVAL_LONG(*retval, -1);
- return SUCCESS;
- }
-
- if (rc < LONG_MAX) {
- ZVAL_LONG(*retval, rc);
+
+ if (!mysql) {
+ ZVAL_NULL(*retval);
} else {
- char ret[40];
- sprintf(ret, "%llu", (my_ulonglong) rc);
- ZVAL_STRING(*retval, ret, 1);
+ CHECK_STATUS(MYSQLI_STATUS_VALID);
+
+ rc = mysql_affected_rows(mysql->mysql);
+
+ if (rc == (my_ulonglong)-1) {
+ ZVAL_LONG(*retval, -1);
+ return SUCCESS;
+ }
+
+ if (rc < LONG_MAX) {
+ ZVAL_LONG(*retval, rc);
+ } else {
+ char ret[40];
+ sprintf(ret, MYSQLI_LLU_SPEC, (my_ulonglong) rc);
+ ZVAL_STRING(*retval, ret, 1);
+ }
}
-
return SUCCESS;
}
/* }}} */
/* link properties */
-MYSQLI_MAP_PROPERTY_FUNC_LONG(link_errno_read, mysql_errno, MYSQLI_GET_MYSQL(), ulong);
-MYSQLI_MAP_PROPERTY_FUNC_STRING(link_error_read, mysql_error, MYSQLI_GET_MYSQL());
-MYSQLI_MAP_PROPERTY_FUNC_LONG(link_field_count_read, mysql_field_count, MYSQLI_GET_MYSQL(), ulong);
-MYSQLI_MAP_PROPERTY_FUNC_STRING(link_host_info_read, mysql_get_host_info, MYSQLI_GET_MYSQL());
-MYSQLI_MAP_PROPERTY_FUNC_STRING(link_info_read, mysql_info, MYSQLI_GET_MYSQL());
-MYSQLI_MAP_PROPERTY_FUNC_LONG(link_insert_id_read, mysql_insert_id, MYSQLI_GET_MYSQL(), my_ulonglong);
-MYSQLI_MAP_PROPERTY_FUNC_LONG(link_protocol_version_read, mysql_get_proto_info, MYSQLI_GET_MYSQL(), ulong);
-MYSQLI_MAP_PROPERTY_FUNC_STRING(link_server_info_read, mysql_get_server_info, MYSQLI_GET_MYSQL());
-MYSQLI_MAP_PROPERTY_FUNC_LONG(link_server_version_read, mysql_get_server_version, MYSQLI_GET_MYSQL(), ulong);
-MYSQLI_MAP_PROPERTY_FUNC_STRING(link_sqlstate_read, mysql_sqlstate, MYSQLI_GET_MYSQL());
-MYSQLI_MAP_PROPERTY_FUNC_LONG(link_thread_id_read, mysql_thread_id, MYSQLI_GET_MYSQL(), ulong);
-MYSQLI_MAP_PROPERTY_FUNC_LONG(link_warning_count_read, mysql_warning_count, MYSQLI_GET_MYSQL(), ulong);
+MYSQLI_MAP_PROPERTY_FUNC_LONG(link_errno_read, mysql_errno, MYSQLI_GET_MYSQL(MYSQLI_STATUS_INITIALIZED), ulong);
+MYSQLI_MAP_PROPERTY_FUNC_STRING(link_error_read, mysql_error, MYSQLI_GET_MYSQL(MYSQLI_STATUS_INITIALIZED));
+MYSQLI_MAP_PROPERTY_FUNC_LONG(link_field_count_read, mysql_field_count, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), ulong);
+MYSQLI_MAP_PROPERTY_FUNC_STRING(link_host_info_read, mysql_get_host_info, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID));
+MYSQLI_MAP_PROPERTY_FUNC_STRING(link_info_read, mysql_info, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID));
+MYSQLI_MAP_PROPERTY_FUNC_LONG(link_insert_id_read, mysql_insert_id, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), my_ulonglong);
+MYSQLI_MAP_PROPERTY_FUNC_LONG(link_protocol_version_read, mysql_get_proto_info, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), ulong);
+MYSQLI_MAP_PROPERTY_FUNC_STRING(link_server_info_read, mysql_get_server_info, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID));
+MYSQLI_MAP_PROPERTY_FUNC_LONG(link_server_version_read, mysql_get_server_version, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), ulong);
+MYSQLI_MAP_PROPERTY_FUNC_STRING(link_sqlstate_read, mysql_sqlstate, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID));
+MYSQLI_MAP_PROPERTY_FUNC_LONG(link_thread_id_read, mysql_thread_id, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), ulong);
+MYSQLI_MAP_PROPERTY_FUNC_LONG(link_warning_count_read, mysql_warning_count, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), ulong);
/* result properties */
/* {{{ property result_type_read */
@@ -178,7 +205,7 @@ static int result_type_read(mysqli_object *obj, zval **retval TSRMLS_DC)
MYSQL_RES *p;
ALLOC_ZVAL(*retval);
- CHECK_OBJECT();
+ CHECK_STATUS(MYSQLI_STATUS_VALID);
p = (MYSQL_RES *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
if (!p) {
@@ -196,15 +223,15 @@ static int result_lengths_read(mysqli_object *obj, zval **retval TSRMLS_DC)
MYSQL_RES *p;
ALLOC_ZVAL(*retval);
- CHECK_OBJECT();
+ CHECK_STATUS(MYSQLI_STATUS_VALID);
p = (MYSQL_RES *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
if (!p || !p->field_count) {
ZVAL_NULL(*retval);
} else {
ulong i;
zval *l;
-
+
array_init(*retval);
for (i=0; i < p->field_count; i++) {
@@ -218,9 +245,9 @@ static int result_lengths_read(mysqli_object *obj, zval **retval TSRMLS_DC)
/* }}} */
-MYSQLI_MAP_PROPERTY_FUNC_LONG(result_current_field_read, mysql_field_tell, MYSQLI_GET_RESULT(), ulong);
-MYSQLI_MAP_PROPERTY_FUNC_LONG(result_field_count_read, mysql_num_fields, MYSQLI_GET_RESULT(), ulong);
-MYSQLI_MAP_PROPERTY_FUNC_LONG(result_num_rows_read, mysql_num_rows, MYSQLI_GET_RESULT(), my_ulonglong);
+MYSQLI_MAP_PROPERTY_FUNC_LONG(result_current_field_read, mysql_field_tell, MYSQLI_GET_RESULT(MYSQLI_STATUS_VALID), ulong);
+MYSQLI_MAP_PROPERTY_FUNC_LONG(result_field_count_read, mysql_num_fields, MYSQLI_GET_RESULT(MYSQLI_STATUS_VALID), ulong);
+MYSQLI_MAP_PROPERTY_FUNC_LONG(result_num_rows_read, mysql_num_rows, MYSQLI_GET_RESULT(MYSQLI_STATUS_VALID), my_ulonglong);
/* statement properties */
@@ -230,7 +257,7 @@ static int stmt_id_read(mysqli_object *obj, zval **retval TSRMLS_DC)
MY_STMT *p;
ALLOC_ZVAL(*retval);
- CHECK_OBJECT();
+ CHECK_STATUS(MYSQLI_STATUS_VALID);
p = (MY_STMT*)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
@@ -246,39 +273,43 @@ static int stmt_id_read(mysqli_object *obj, zval **retval TSRMLS_DC)
/* {{{ property stmt_affected_rows_read */
static int stmt_affected_rows_read(mysqli_object *obj, zval **retval TSRMLS_DC)
{
- MY_STMT *stmt;
+ MY_STMT *p;
my_ulonglong rc;
ALLOC_ZVAL(*retval);
- CHECK_OBJECT();
+ CHECK_STATUS(MYSQLI_STATUS_VALID);
- stmt = (MY_STMT *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
- rc = mysql_stmt_affected_rows(stmt->stmt);
+ p = (MY_STMT *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
- if (rc == (my_ulonglong)-1) {
- ZVAL_LONG(*retval, -1);
- return SUCCESS;
- }
-
- if (rc < LONG_MAX) {
- ZVAL_LONG(*retval, rc);
+ if (!p) {
+ ZVAL_NULL(*retval);
} else {
- char ret[40];
- sprintf(ret, "%llu", (my_ulonglong) rc);
- ZVAL_STRING(*retval, ret, 1);
+ rc = mysql_stmt_affected_rows(p->stmt);
+
+ if (rc == (my_ulonglong)-1) {
+ ZVAL_LONG(*retval, -1);
+ return SUCCESS;
+ }
+
+ if (rc < LONG_MAX) {
+ ZVAL_LONG(*retval, rc);
+ } else {
+ char ret[40];
+ sprintf(ret, MYSQLI_LLU_SPEC, (my_ulonglong) rc);
+ ZVAL_STRING(*retval, ret, 1);
+ }
}
-
return SUCCESS;
}
/* }}} */
-MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_insert_id_read, mysql_stmt_insert_id, MYSQLI_GET_STMT(), my_ulonglong);
-MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_num_rows_read, mysql_stmt_num_rows, MYSQLI_GET_STMT(), my_ulonglong);
-MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_param_count_read, mysql_stmt_param_count, MYSQLI_GET_STMT(), ulong);
-MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_field_count_read, mysql_stmt_field_count, MYSQLI_GET_STMT(), ulong);
-MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_errno_read, mysql_stmt_errno, MYSQLI_GET_STMT(), ulong);
-MYSQLI_MAP_PROPERTY_FUNC_STRING(stmt_error_read, mysql_stmt_error, MYSQLI_GET_STMT());
-MYSQLI_MAP_PROPERTY_FUNC_STRING(stmt_sqlstate_read, mysql_stmt_sqlstate, MYSQLI_GET_STMT());
+MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_insert_id_read, mysql_stmt_insert_id, MYSQLI_GET_STMT(MYSQLI_STATUS_VALID), my_ulonglong);
+MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_num_rows_read, mysql_stmt_num_rows, MYSQLI_GET_STMT(MYSQLI_STATUS_VALID), my_ulonglong);
+MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_param_count_read, mysql_stmt_param_count, MYSQLI_GET_STMT(MYSQLI_STATUS_VALID), ulong);
+MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_field_count_read, mysql_stmt_field_count, MYSQLI_GET_STMT(MYSQLI_STATUS_VALID), ulong);
+MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_errno_read, mysql_stmt_errno, MYSQLI_GET_STMT(MYSQLI_STATUS_INITIALIZED), ulong);
+MYSQLI_MAP_PROPERTY_FUNC_STRING(stmt_error_read, mysql_stmt_error, MYSQLI_GET_STMT(MYSQLI_STATUS_INITIALIZED));
+MYSQLI_MAP_PROPERTY_FUNC_STRING(stmt_sqlstate_read, mysql_stmt_sqlstate, MYSQLI_GET_STMT(MYSQLI_STATUS_INITIALIZED));
/* }}} */
mysqli_property_entry mysqli_link_property_entries[] = {
diff --git a/ext/mysqli/mysqli_repl.c b/ext/mysqli/mysqli_repl.c
index 1f767d1ee..fc47cea02 100644
--- a/ext/mysqli/mysqli_repl.c
+++ b/ext/mysqli/mysqli_repl.c
@@ -15,7 +15,7 @@
| Author: Georg Richter <georg@php.net> |
+----------------------------------------------------------------------+
- $Id: mysqli_repl.c,v 1.3.2.1 2006/01/01 12:50:09 sniper Exp $
+ $Id: mysqli_repl.c,v 1.3.2.2 2006/03/24 09:32:24 georg Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -39,7 +39,7 @@ PHP_FUNCTION(mysqli_disable_reads_from_master)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
mysql_disable_reads_from_master(mysql);
RETURN_TRUE;
}
@@ -55,7 +55,7 @@ PHP_FUNCTION(mysqli_disable_rpl_parse)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
mysql_disable_rpl_parse(mysql);
RETURN_TRUE;
}
@@ -71,7 +71,7 @@ PHP_FUNCTION(mysqli_enable_reads_from_master)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
mysql_enable_reads_from_master(mysql);
RETURN_TRUE;
@@ -88,7 +88,7 @@ PHP_FUNCTION(mysqli_enable_rpl_parse)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
mysql_enable_rpl_parse(mysql);
RETURN_TRUE;
@@ -106,7 +106,7 @@ PHP_FUNCTION(mysqli_master_query) {
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &query, &query_len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql_master_query(mysql, query, query_len)) {
RETURN_FALSE;
@@ -125,7 +125,7 @@ PHP_FUNCTION(mysqli_rpl_parse_enabled)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_LONG(mysql_rpl_parse_enabled(mysql));
}
@@ -141,7 +141,7 @@ PHP_FUNCTION(mysqli_rpl_probe)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql_rpl_probe(mysql)) {
@@ -163,7 +163,7 @@ PHP_FUNCTION(mysqli_rpl_query_type)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &query, &query_len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
RETURN_LONG(mysql_rpl_query_type(query, query_len));
}
@@ -181,7 +181,7 @@ PHP_FUNCTION(mysqli_send_query)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &query, &query_len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql_send_query(mysql, query, query_len)) {
RETURN_FALSE;
@@ -202,7 +202,7 @@ PHP_FUNCTION(mysqli_slave_query)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &query, &query_len) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID);
if (mysql_slave_query(mysql, query, query_len)) {
RETURN_FALSE;
diff --git a/ext/mysqli/mysqli_warning.c b/ext/mysqli/mysqli_warning.c
index 427822bdc..733eab149 100644
--- a/ext/mysqli/mysqli_warning.c
+++ b/ext/mysqli/mysqli_warning.c
@@ -100,7 +100,7 @@ PHP_METHOD(mysqli_warning, next)
return;
}
- MYSQLI_FETCH_RESOURCE(w, MYSQLI_WARNING *, &mysqli_warning, "mysqli_warning");
+ MYSQLI_FETCH_RESOURCE(w, MYSQLI_WARNING *, &mysqli_warning, "mysqli_warning", MYSQLI_STATUS_VALID);
if (w->next) {
w = w->next;
@@ -182,11 +182,11 @@ PHP_METHOD(mysqli_warning, __construct)
if (obj->zo.ce == mysqli_link_class_entry) {
MY_MYSQL *mysql;
- MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &z, "mysqli_link");
+ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &z, "mysqli_link", MYSQLI_STATUS_VALID);
hdl = mysql->mysql;
} else if (obj->zo.ce == mysqli_stmt_class_entry) {
MY_STMT *stmt;
- MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &z, "mysqli_stmt");
+ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &z, "mysqli_stmt", MYSQLI_STATUS_VALID);
hdl = stmt->stmt->mysql;
} else {
RETURN_FALSE;
@@ -199,13 +199,13 @@ PHP_METHOD(mysqli_warning, __construct)
}
mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
+ mysqli_resource->status = MYSQLI_STATUS_VALID;
mysqli_resource->ptr = mysqli_resource->info = (void *)w;
if (!getThis() || !instanceof_function(Z_OBJCE_P(getThis()), mysqli_warning_class_entry TSRMLS_CC)) {
MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry);
} else {
((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->ptr = mysqli_resource;
- ((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->valid = 1;
}
}
diff --git a/ext/mysqli/php_mysqli.h b/ext/mysqli/php_mysqli.h
index d2a96f2e6..78cbddcc5 100644
--- a/ext/mysqli/php_mysqli.h
+++ b/ext/mysqli/php_mysqli.h
@@ -15,7 +15,7 @@
| Author: Georg Richter <georg@php.net> |
+----------------------------------------------------------------------+
- $Id: php_mysqli.h,v 1.54.2.5 2006/01/01 12:50:09 sniper Exp $
+ $Id: php_mysqli.h,v 1.54.2.7 2006/04/05 12:17:08 georg Exp $
*/
/* A little hack to prevent build break, when mysql is used together with
@@ -36,12 +36,20 @@
#define HAVE_MYSQLI_SET_CHARSET
#endif
+
#include <errmsg.h>
#ifndef PHP_MYSQLI_H
#define PHP_MYSQLI_H
-#define MYSQLI_VERSION_ID 101008
+#define MYSQLI_VERSION_ID 101009
+
+enum mysqli_status {
+ MYSQLI_STATUS_UNKNOWN=0,
+ MYSQLI_STATUS_CLEARED,
+ MYSQLI_STATUS_INITIALIZED,
+ MYSQLI_STATUS_VALID
+};
typedef struct {
ulong buflen;
@@ -57,17 +65,17 @@ typedef struct {
} BIND_BUFFER;
typedef struct {
- MYSQL_STMT *stmt;
- BIND_BUFFER param;
- BIND_BUFFER result;
- char *query;
+ MYSQL_STMT *stmt;
+ BIND_BUFFER param;
+ BIND_BUFFER result;
+ char *query;
} MY_STMT;
typedef struct {
- MYSQL *mysql;
- zval *li_read;
- php_stream *li_stream;
- unsigned int multi_query;
+ MYSQL *mysql;
+ zval *li_read;
+ php_stream *li_stream;
+ unsigned int multi_query;
} MY_MYSQL;
typedef struct {
@@ -77,15 +85,15 @@ typedef struct {
} PROFILER;
typedef struct {
- void *ptr; /* resource: (mysql, result, stmt) */
- void *info; /* additional buffer */
+ void *ptr; /* resource: (mysql, result, stmt) */
+ void *info; /* additional buffer */
+ enum mysqli_status status;
} MYSQLI_RESOURCE;
typedef struct _mysqli_object {
- zend_object zo;
- void *ptr;
- char valid;
- HashTable *prop_handler;
+ zend_object zo;
+ void *ptr;
+ HashTable *prop_handler;
} mysqli_object; /* extends zend_object */
typedef struct {
@@ -110,8 +118,12 @@ typedef struct {
#ifdef PHP_WIN32
#define PHP_MYSQLI_API __declspec(dllexport)
+#define MYSQLI_LLU_SPEC "%I64u"
+#define MYSQLI_LL_SPEC "%I64d"
#else
#define PHP_MYSQLI_API
+#define MYSQLI_LLU_SPEC "%llu"
+#define MYSQLI_LL_SPEC "%lld"
#endif
#ifdef ZTS
@@ -181,7 +193,6 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRML
#define MYSQLI_REGISTER_RESOURCE_EX(__ptr, __zval, __ce) \
((mysqli_object *) zend_object_store_get_object(__zval TSRMLS_CC))->ptr = __ptr; \
- ((mysqli_object *) zend_object_store_get_object(__zval TSRMLS_CC))->valid = 1;
#define MYSQLI_RETURN_RESOURCE(__ptr, __ce) \
Z_TYPE_P(return_value) = IS_OBJECT; \
@@ -199,7 +210,7 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRML
MYSQLI_REGISTER_RESOURCE_EX(__ptr, object, __ce)\
}
-#define MYSQLI_FETCH_RESOURCE(__ptr, __type, __id, __name) \
+#define MYSQLI_FETCH_RESOURCE(__ptr, __type, __id, __name, __check) \
{ \
MYSQLI_RESOURCE *my_res; \
mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*(__id) TSRMLS_CC);\
@@ -207,19 +218,19 @@ PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRML
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", intern->zo.ce->name);\
RETURN_NULL();\
}\
- if (!intern->valid) { \
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid resource %s", intern->zo.ce->name); \
- RETURN_NULL(); \
- } \
__ptr = (__type)my_res->ptr; \
- if (!strcmp((char *)__name, "mysqli_stmt")) {\
- if (!((MY_STMT *)__ptr)->stmt->mysql) {\
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Statement isn't valid anymore");\
- RETURN_NULL();\
- }\
+ if (__check && my_res->status < __check) { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid object or resource %s\n", intern->zo.ce->name); \
+ RETURN_NULL();\
}\
}
+#define MYSQLI_SET_STATUS(__id, __value) \
+{ \
+ mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*(__id) TSRMLS_CC);\
+ ((MYSQLI_RESOURCE *)intern->ptr)->status = __value; \
+} \
+
#define MYSQLI_CLEAR_RESOURCE(__id) \
{ \
mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*(__id) TSRMLS_CC);\
diff --git a/ext/mysqli/tests/002.phpt b/ext/mysqli/tests/002.phpt
index fa4e60e18..301af9893 100644
--- a/ext/mysqli/tests/002.phpt
+++ b/ext/mysqli/tests/002.phpt
@@ -8,6 +8,7 @@ mysqli bind_result 1
/*** test mysqli_connect 127.0.0.1 ***/
$link = mysqli_connect($host, $user, $passwd);
+ $link->query("CREATE SCHEMA test");
mysqli_select_db($link, "test");
$rc = mysqli_query($link,"DROP TABLE IF EXISTS test_fetch_null");
diff --git a/ext/mysqli/tests/014.phpt b/ext/mysqli/tests/014.phpt
index a180bea75..d6591fcab 100644
--- a/ext/mysqli/tests/014.phpt
+++ b/ext/mysqli/tests/014.phpt
@@ -2,19 +2,18 @@
mysqli autocommit/commit/rollback
--SKIPIF--
<?php
+ require_once('skipif.inc');
include "connect.inc";
$link = mysqli_connect($host, $user, $passwd);
$result = mysqli_query($link, "SHOW VARIABLES LIKE 'have_innodb'");
$row = mysqli_fetch_row($result);
mysqli_free_result($result);
mysqli_close($link);
-
if ($row[1] == "DISABLED" || $row[1] == "NO") {
printf ("skip innodb support is not installed or enabled.");
+ exit;
}
?>
---SKIPIF--
-<?php require_once('skipif.inc'); ?>
--FILE--
<?php
include "connect.inc";
diff --git a/ext/mysqli/tests/015.phpt b/ext/mysqli/tests/015.phpt
index 26eb4383c..7620f3c43 100644
--- a/ext/mysqli/tests/015.phpt
+++ b/ext/mysqli/tests/015.phpt
@@ -2,6 +2,7 @@
mysqli autocommit/commit/rollback with myisam
--SKIPIF--
<?php
+ require_once('skipif.inc');
include "connect.inc";
$link = mysqli_connect($host, $user, $passwd);
$result = mysqli_query($link, "SHOW VARIABLES LIKE 'have_innodb'");
@@ -13,8 +14,6 @@ mysqli autocommit/commit/rollback with myisam
printf ("skip innodb support not installed.");
}
?>
---SKIPIF--
-<?php require_once('skipif.inc'); ?>
--FILE--
<?php
include "connect.inc";
diff --git a/ext/mysqli/tests/017.phpt b/ext/mysqli/tests/017.phpt
index 54d11ef71..866a118a8 100644
--- a/ext/mysqli/tests/017.phpt
+++ b/ext/mysqli/tests/017.phpt
@@ -12,15 +12,13 @@ mysqli fetch functions
mysqli_select_db($link, "test");
- $stmt = mysqli_prepare($link, "SELECT current_user(), database(), 'foo'");
+ $stmt = mysqli_prepare($link, "SELECT md5('bar'), database(), 'foo'");
mysqli_bind_result($stmt, $c0, $c1, $c2);
mysqli_execute($stmt);
mysqli_fetch($stmt);
mysqli_stmt_close($stmt);
- $c0 = ($c0 == $user . "@" . $host) ? 1 : 0;
-
$test = array($c0, $c1, $c2);
var_dump($test);
@@ -29,7 +27,7 @@ mysqli fetch functions
--EXPECT--
array(3) {
[0]=>
- int(1)
+ string(32) "37b51d194a7513e45b56f6524f2d51f2"
[1]=>
string(4) "test"
[2]=>
diff --git a/ext/mysqli/tests/045.phpt b/ext/mysqli/tests/045.phpt
index 2f9490c28..dd491a697 100644
--- a/ext/mysqli/tests/045.phpt
+++ b/ext/mysqli/tests/045.phpt
@@ -2,6 +2,9 @@
mysqli_bind_result (SHOW)
--SKIPIF--
<?php
+ require_once('skipif.inc');
+ require_once('skipifemb.inc');
+
include "connect.inc";
$link = mysqli_connect($host, $user, $passwd);
@@ -15,9 +18,6 @@ mysqli_bind_result (SHOW)
$stmt->close();
mysqli_close($link);
?>
---SKIPIF--
-<?php require_once('skipif.inc'); ?>
-<?php require_once('skipifemb.inc'); ?>
--FILE--
<?php
include "connect.inc";
diff --git a/ext/mysqli/tests/049.phpt b/ext/mysqli/tests/049.phpt
index 8d16c3d4c..4bb5bfef4 100644
--- a/ext/mysqli/tests/049.phpt
+++ b/ext/mysqli/tests/049.phpt
@@ -11,14 +11,16 @@ mysql_fetch_row (OO-Style)
$mysql = mysqli_connect($host, $user, $passwd);
$mysql->select_db("test");
- $result = $mysql->query("SELECT CURRENT_USER()");
+ $result = $mysql->query("SELECT DATABASE()");
$row = $result->fetch_row();
$result->close();
- $ok = ($row[0] == $user . "@" . $host);
- var_dump($ok);
+ var_dump($row);
$mysql->close();
?>
--EXPECT--
-bool(true)
+array(1) {
+ [0]=>
+ string(4) "test"
+}
diff --git a/ext/mysqli/tests/bug34810.phpt b/ext/mysqli/tests/bug34810.phpt
index 12d6ce2e9..0b8a799a8 100644
--- a/ext/mysqli/tests/bug34810.phpt
+++ b/ext/mysqli/tests/bug34810.phpt
@@ -9,15 +9,16 @@ class DbConnection {
public function connect() {
include "connect.inc";
- $link = mysqli::connect($host, $user, $passwd);
+ $link = mysqli_connect($host, $user, $passwd);
var_dump($link);
- $link = mysqli::init();
+ $link = mysqli_init();
var_dump($link);
$mysql = new mysqli($host, $user, $passwd, "test");
$mysql->query("DROP TABLE IF EXISTS test_warnings");
$mysql->query("CREATE TABLE test_warnings (a int not null)");
+ $mysql->query("SET sql_mode=''");
$mysql->query("INSERT INTO test_warnings VALUES (1),(2),(NULL)");
var_dump(mysqli_warning::__construct($mysql));
}
diff --git a/ext/mysqli/tests/bug36420.phpt b/ext/mysqli/tests/bug36420.phpt
new file mode 100644
index 000000000..d35485e7f
--- /dev/null
+++ b/ext/mysqli/tests/bug36420.phpt
@@ -0,0 +1,25 @@
+--TEST--
+bug #36420 (segfault when access result->num_rows after calling result->close())
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+
+include "connect.inc";
+$mysqli = mysqli_connect($host, $user, $passwd);
+
+$result = $mysqli->query('select 1');
+
+$result->close();
+echo $result->num_rows;
+
+$mysqli->close();
+echo $result->num_rows;
+
+echo "Done\n";
+?>
+--EXPECTF--
+Warning: main(): Couldn't fetch mysqli_result in %s on line %d
+
+Warning: main(): Couldn't fetch mysqli_result in %s on line %d
+Done
diff --git a/ext/mysqli/tests/bug36745.phpt b/ext/mysqli/tests/bug36745.phpt
new file mode 100644
index 000000000..7bbfe8180
--- /dev/null
+++ b/ext/mysqli/tests/bug36745.phpt
@@ -0,0 +1,23 @@
+--TEST--
+bug #36745 : LOAD DATA LOCAL INFILE doesn't return correct error message
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+ include ("connect.inc");
+
+ /*** test mysqli_connect 127.0.0.1 ***/
+ $mysql = mysqli_connect($host, $user, $passwd, "test");
+
+ $mysql->query("DROP TABLE IF EXISTS litest");
+ $mysql->query("CREATE TABLE litest (a VARCHAR(20))");
+
+ $mysql->query("LOAD DATA LOCAL INFILE 'filenotfound' INTO TABLE litest");
+ var_dump($mysql->error);
+
+ $mysql->close();
+ printf("Done");
+?>
+--EXPECT--
+string(31) "Can't find file 'filenotfound'."
+Done
diff --git a/ext/mysqli/tests/bug36802.phpt b/ext/mysqli/tests/bug36802.phpt
new file mode 100644
index 000000000..69ef56bba
--- /dev/null
+++ b/ext/mysqli/tests/bug36802.phpt
@@ -0,0 +1,42 @@
+--TEST--
+bug #36802 : crashes with mysql_init
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+
+ class my_mysqli extends mysqli {
+ function __construct()
+ {
+ }
+ }
+
+ include "connect.inc";
+
+
+ $mysql = mysqli_init();
+
+ /* following operations should not work */
+ $x[0] = @$mysql->set_charset('utf8');
+ $x[1] = @$mysql->query("SELECT 'foo' FROM DUAL");
+
+ /* following operations should work */
+ $x[2] = ($mysql->client_version > 0);
+ $x[3] = $mysql->errno;
+ $mysql->close();
+
+
+
+ var_dump($x);
+?>
+--EXPECT--
+array(4) {
+ [0]=>
+ NULL
+ [1]=>
+ NULL
+ [2]=>
+ bool(true)
+ [3]=>
+ int(0)
+}
diff --git a/ext/mysqli/tests/connect.inc b/ext/mysqli/tests/connect.inc
index 2fcf4ff0f..2b4a67be2 100644
--- a/ext/mysqli/tests/connect.inc
+++ b/ext/mysqli/tests/connect.inc
@@ -10,14 +10,16 @@
$passwd = "";
} else {
$path = dirname(__FILE__);
- $host = $user = $passwd = NULL;
+ $host = ":embedded";
+ $user = $passwd = NULL;
$args = array(
"--datadir=$path",
"--innodb_data_home_dir=$path",
"--innodb_data_file_path=ibdata1:10M:autoextend",
"--log-error=$path/testrun.log"
);
- $driver->embedded_server_start(TRUE, $args, NULL);
+ $x = $driver->embedded_server_start(TRUE, $args, NULL);
+ var_dump($x);
}
?>
diff --git a/ext/oci8/config.m4 b/ext/oci8/config.m4
index 6b87a775b..3d084d7d3 100644
--- a/ext/oci8/config.m4
+++ b/ext/oci8/config.m4
@@ -1,5 +1,5 @@
dnl
-dnl $Id: config.m4,v 1.55.2.1 2005/12/01 13:39:42 tony2001 Exp $
+dnl $Id: config.m4,v 1.55.2.3 2006/04/05 14:06:00 tony2001 Exp $
dnl
if test -z "$SED"; then
@@ -69,7 +69,7 @@ AC_DEFUN([AC_OCI8IC_VERSION],[
AC_DEFUN([AC_OCI8_VERSION],[
AC_MSG_CHECKING([Oracle version])
if test -s "$OCI8_DIR/orainst/unix.rgs"; then
- OCI8_VERSION=`grep '"ocommon"' $OCI8_DIR/orainst/unix.rgs | $PHP_OCI_SED 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4`
+ OCI8_VERSION=`grep '"ocommon"' $OCI8_DIR/orainst/unix.rgs | $PHP_OCI8_SED 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4`
test -z "$OCI8_VERSION" && OCI8_VERSION=7.3
elif test -f $OCI8_DIR/$OCI8_LIB_DIR/libclntsh.$SHLIB_SUFFIX_NAME.10.1; then
OCI8_VERSION=10.1
@@ -232,6 +232,13 @@ if test "$PHP_OCI8" != "no" && test "$PHP_OCI8_INSTANT_CLIENT" = "no"; then
], [], [
-L$OCI8_DIR/$OCI8_LIB_DIR $OCI8_SHARED_LIBADD
])
+
+ PHP_CHECK_LIBRARY(clntsh, OCILobRead2,
+ [
+ AC_DEFINE(HAVE_OCI_LOB_READ2,1,[ ])
+ ], [], [
+ -L$OCI8_DIR/$OCI8_LIB_DIR $OCI8_SHARED_LIBADD
+ ])
;;
@@ -242,6 +249,7 @@ if test "$PHP_OCI8" != "no" && test "$PHP_OCI8_INSTANT_CLIENT" = "no"; then
AC_DEFINE(HAVE_OCI_ENV_NLS_CREATE,1,[ ])
AC_DEFINE(HAVE_OCI_ENV_CREATE,1,[ ])
AC_DEFINE(HAVE_OCI_STMT_PREPARE2,1,[ ])
+ AC_DEFINE(HAVE_OCI_LOB_READ2,1,[ ])
AC_DEFINE(HAVE_OCI8_TEMP_LOB,1,[ ])
AC_DEFINE(PHP_OCI8_HAVE_COLLECTIONS,1,[ ])
;;
@@ -332,7 +340,7 @@ dnl Header directory for manual installation
AC_MSG_ERROR([Oracle Instant Client SDK header files not found])
fi
- OCISYSLIBLIST=`echo "$OCI8INCDIR" | $PHP_OCI_SED -e 's!\(.*\)/include$!\1/demo/sysliblist!'`
+ OCISYSLIBLIST=`echo "$OCI8INCDIR" | $PHP_OCI8_SED -e 's!\(.*\)/include$!\1/demo/sysliblist!'`
if test -f "$OCISYSLIBLIST"; then
PHP_EVAL_LIBLINE(`cat $OCISYSLIBLIST`, OCI8_SYSLIB)
fi
@@ -354,6 +362,7 @@ dnl Header directory for manual installation
AC_DEFINE(HAVE_OCI_ENV_NLS_CREATE,1,[ ])
AC_DEFINE(HAVE_OCI_ENV_CREATE,1,[ ])
AC_DEFINE(HAVE_OCI_STMT_PREPARE2,1,[ ])
+ AC_DEFINE(HAVE_OCI_LOB_READ2,1,[ ])
AC_DEFINE(HAVE_OCI8_TEMP_LOB,1,[ ])
AC_DEFINE(PHP_OCI8_HAVE_COLLECTIONS,1,[ ])
diff --git a/ext/oci8/config.w32 b/ext/oci8/config.w32
index 90e1995e3..a8a1a3da8 100644
--- a/ext/oci8/config.w32
+++ b/ext/oci8/config.w32
@@ -1,4 +1,4 @@
-// $Id: config.w32,v 1.3.4.1 2005/12/01 13:39:42 tony2001 Exp $
+// $Id: config.w32,v 1.3.4.4 2006/05/22 04:18:05 tony2001 Exp $
// vim:ft=javascript
ARG_WITH("oci8", "OCI8 support", "no");
@@ -11,9 +11,14 @@ if (PHP_OCI8 != "no") {
) {
EXTENSION('oci8', 'oci8.c oci8_lob.c oci8_statement.c oci8_collection.c oci8_interface.c');
- AC_DEFINE('HAVE_OCI8_TEMP_LOB', 1);
AC_DEFINE('HAVE_OCI8', 1);
+ AC_DEFINE('HAVE_OCI_INSTANT_CLIENT', 1);
AC_DEFINE('HAVE_OCI8_ATTR_STATEMENT', 1);
+ AC_DEFINE('HAVE_OCI_ENV_NLS_CREATE', 1);
+ AC_DEFINE('HAVE_OCI_ENV_CREATE', 1);
+ AC_DEFINE('HAVE_OCI_STMT_PREPARE2', 1);
+ AC_DEFINE('HAVE_OCI_LOB_READ2', 1);
+ AC_DEFINE('HAVE_OCI8_TEMP_LOB', 1);
AC_DEFINE('PHP_OCI8_HAVE_COLLECTIONS', 1);
} else {
diff --git a/ext/oci8/oci8.c b/ext/oci8/oci8.c
index 3508f143d..78e26cb97 100644
--- a/ext/oci8/oci8.c
+++ b/ext/oci8/oci8.c
@@ -26,7 +26,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci8.c,v 1.269.2.8 2006/01/10 08:34:28 tony2001 Exp $ */
+/* $Id: oci8.c,v 1.269.2.18 2006/05/18 13:21:45 tony2001 Exp $ */
/* TODO
*
* file://localhost/www/docs/oci10/ociaahan.htm#423823 - implement lob_empty() with OCI_ATTR_LOBEMPTY
@@ -89,7 +89,7 @@ static void php_oci_collection_list_dtor (zend_rsrc_list_entry * TSRMLS_DC);
static int php_oci_persistent_helper(zend_rsrc_list_entry *le TSRMLS_DC);
#ifdef ZTS
-static int php_oci_regular_helper(zend_rsrc_list_entry *le TSRMLS_DC);
+static int php_oci_list_helper(zend_rsrc_list_entry *le, void *le_type TSRMLS_DC);
#endif
static int php_oci_connection_ping(php_oci_connection * TSRMLS_DC);
static int php_oci_connection_status(php_oci_connection * TSRMLS_DC);
@@ -541,6 +541,8 @@ PHP_MINIT_FUNCTION(oci)
REGISTER_LONG_CONSTANT("SQLT_FLT",SQLT_FLT, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SQLT_UIN",SQLT_UIN, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SQLT_LNG",SQLT_LNG, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("SQLT_LBI",SQLT_LBI, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("SQLT_BIN",SQLT_BIN, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SQLT_ODT",SQLT_ODT, CONST_CS | CONST_PERSISTENT);
#if defined(HAVE_OCI_INSTANT_CLIENT) || (defined(OCI_MAJOR_VERSION) && OCI_MAJOR_VERSION > 10)
REGISTER_LONG_CONSTANT("SQLT_BDOUBLE",SQLT_BDOUBLE, CONST_CS | CONST_PERSISTENT);
@@ -622,11 +624,17 @@ PHP_MSHUTDOWN_FUNCTION(oci)
PHP_RSHUTDOWN_FUNCTION(oci)
{
+#ifdef ZTS
+ zend_hash_apply_with_argument(&EG(regular_list), (apply_func_arg_t) php_oci_list_helper, (void *)le_descriptor TSRMLS_CC);
+ zend_hash_apply_with_argument(&EG(regular_list), (apply_func_arg_t) php_oci_list_helper, (void *)le_collection TSRMLS_CC);
+ zend_hash_apply_with_argument(&EG(regular_list), (apply_func_arg_t) php_oci_list_helper, (void *)le_statement TSRMLS_CC);
+#endif
+
/* check persistent connections and do the necessary actions if needed */
zend_hash_apply(&EG(persistent_list), (apply_func_t) php_oci_persistent_helper TSRMLS_CC);
#ifdef ZTS
- zend_hash_apply(&EG(regular_list), (apply_func_t) php_oci_regular_helper TSRMLS_CC);
+ zend_hash_apply_with_argument(&EG(regular_list), (apply_func_arg_t) php_oci_list_helper, (void *)le_connection TSRMLS_CC);
php_oci_cleanup_global_handles(TSRMLS_C);
#endif
@@ -639,7 +647,7 @@ PHP_MINFO_FUNCTION(oci)
php_info_print_table_start();
php_info_print_table_row(2, "OCI8 Support", "enabled");
- php_info_print_table_row(2, "Revision", "$Revision: 1.269.2.8 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 1.269.2.18 $");
sprintf(buf, "%ld", OCI_G(num_persistent));
php_info_print_table_row(2, "Active Persistent Connections", buf);
@@ -982,7 +990,7 @@ php_oci_connection *php_oci_do_connect_ex(char *username, int username_len, char
smart_str_appends_ex(&hashed_details, charset, 1);
}
else {
- size_t rsize;
+ size_t rsize = 0;
PHP_OCI_CALL(OCINlsEnvironmentVariableGet, (&charsetid, 2, OCI_NLS_CHARSET_ID, 0, &rsize));
smart_str_append_unsigned_ex(&hashed_details, charsetid, 0);
@@ -1050,7 +1058,9 @@ php_oci_connection *php_oci_do_connect_ex(char *username, int username_len, char
/* okay, the connection is open and the server is still alive */
connection->used_this_request = 1;
smart_str_free_ex(&hashed_details, 0);
- connection->rsrc_id = zend_list_insert(connection, le_pconnection);
+ if (zend_list_addref(connection->rsrc_id) == FAILURE) {
+ connection->rsrc_id = zend_list_insert(connection, le_pconnection);
+ }
return connection;
}
}
@@ -1280,7 +1290,11 @@ open:
case OCI_SYSDBA:
case OCI_SYSOPER:
default:
- OCI_G(errcode) = PHP_OCI_CALL(OCISessionBegin, (connection->svc, OCI_G(err), connection->session, (ub4) OCI_CRED_EXT, (ub4) session_mode));
+ if (username_len == 1 && username[0] == '/' && password_len == 0) {
+ OCI_G(errcode) = PHP_OCI_CALL(OCISessionBegin, (connection->svc, OCI_G(err), connection->session, (ub4) OCI_CRED_EXT, (ub4) session_mode));
+ } else {
+ OCI_G(errcode) = PHP_OCI_CALL(OCISessionBegin, (connection->svc, OCI_G(err), connection->session, (ub4) OCI_CRED_RDBMS, (ub4) session_mode));
+ }
break;
}
@@ -1341,8 +1355,8 @@ open:
* Ping connection. Uses OCIPing() or OCIServerVersion() depending on the Oracle Client version */
static int php_oci_connection_ping(php_oci_connection *connection TSRMLS_DC)
{
-#if OCI_MAJOR_VERSION >= 10 && OCI_MINOR_VERSION >= 2
- /* OCIPing() is usable only in 10.2 */
+ /* OCIPing() crashes Oracle servers older than 10.2 */
+#if 0
OCI_G(errcode) = PHP_OCI_CALL(OCIPing, (connection->svc, OCI_G(err), OCI_DEFAULT));
#else
char version[256];
@@ -1629,6 +1643,16 @@ void php_oci_fetch_row (INTERNAL_FUNCTION_PARAMETERS, int mode, int expected_arg
fetch_mode = mode;
}
+ if (!(fetch_mode & PHP_OCI_NUM) && !(fetch_mode & PHP_OCI_ASSOC)) {
+ /* none of the modes present, use the default one */
+ if (mode & PHP_OCI_ASSOC) {
+ fetch_mode |= PHP_OCI_ASSOC;
+ }
+ if (mode & PHP_OCI_NUM) {
+ fetch_mode |= PHP_OCI_NUM;
+ }
+ }
+
PHP_OCI_ZVAL_TO_STATEMENT(z_statement, statement);
if (php_oci_statement_fetch(statement, nrows TSRMLS_CC)) {
@@ -1704,7 +1728,9 @@ static int php_oci_persistent_helper(zend_rsrc_list_entry *le TSRMLS_DC)
connection->descriptors = NULL;
}
- php_oci_connection_rollback(connection TSRMLS_CC);
+ if (connection->needs_commit) {
+ php_oci_connection_rollback(connection TSRMLS_CC);
+ }
if (OCI_G(persistent_timeout) > 0) {
connection->idle_expiry = timestamp + OCI_G(persistent_timeout);
@@ -1731,15 +1757,14 @@ static int php_oci_persistent_helper(zend_rsrc_list_entry *le TSRMLS_DC)
} /* }}} */
#ifdef ZTS
-/* {{{ php_oci_regular_helper()
- Helper function to close non-persistent connections at the end of request in ZTS mode */
-static int php_oci_regular_helper(zend_rsrc_list_entry *le TSRMLS_DC)
+/* {{{ php_oci_list_helper()
+ Helper function to destroy data on thread shutdown in ZTS mode */
+static int php_oci_list_helper(zend_rsrc_list_entry *le, void *le_type TSRMLS_DC)
{
- php_oci_connection *connection;
-
- if (le->type == le_connection) {
- connection = (php_oci_connection *)le->ptr;
- if (connection) {
+ int type = (int) le_type;
+
+ if (le->type == type) {
+ if (le->ptr != NULL) {
return 1;
}
}
diff --git a/ext/oci8/oci8_interface.c b/ext/oci8/oci8_interface.c
index 49c5190f3..a5f7d00f9 100644
--- a/ext/oci8/oci8_interface.c
+++ b/ext/oci8/oci8_interface.c
@@ -25,7 +25,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci8_interface.c,v 1.8.2.4 2006/01/05 13:42:35 tony2001 Exp $ */
+/* $Id: oci8_interface.c,v 1.8.2.7 2006/03/28 09:12:18 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1102,7 +1102,7 @@ PHP_FUNCTION(oci_field_name)
{
php_oci_out_column *column;
- if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU) ) ) {
+ if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0) ) ) {
RETURN_STRINGL(column->name, column->name_len, 1);
}
RETURN_FALSE;
@@ -1115,7 +1115,7 @@ PHP_FUNCTION(oci_field_size)
{
php_oci_out_column *column;
- if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU) ) ) {
+ if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0) ) ) {
/* Handle data type of LONG */
if (column->data_type == SQLT_LNG){
RETURN_LONG(column->storage_size4);
@@ -1132,7 +1132,7 @@ PHP_FUNCTION(oci_field_scale)
{
php_oci_out_column *column;
- if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU) ) ) {
+ if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0) ) ) {
RETURN_LONG(column->scale);
}
RETURN_FALSE;
@@ -1145,7 +1145,7 @@ PHP_FUNCTION(oci_field_precision)
{
php_oci_out_column *column;
- if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU) ) ) {
+ if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0) ) ) {
RETURN_LONG(column->precision);
}
RETURN_FALSE;
@@ -1158,7 +1158,7 @@ PHP_FUNCTION(oci_field_type)
{
php_oci_out_column *column;
- column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+ column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
if (!column) {
RETURN_FALSE;
@@ -1191,7 +1191,7 @@ PHP_FUNCTION(oci_field_type)
RETVAL_STRING("LONG RAW",1);
break;
case SQLT_CHR:
- RETVAL_STRING("VARCHAR",1);
+ RETVAL_STRING("VARCHAR2",1);
break;
case SQLT_RSET:
RETVAL_STRING("REFCURSOR",1);
@@ -1223,7 +1223,7 @@ PHP_FUNCTION(oci_field_type_raw)
{
php_oci_out_column *column;
- column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+ column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
if (column) {
RETURN_LONG(column->data_type);
}
@@ -1237,7 +1237,7 @@ PHP_FUNCTION(oci_field_is_null)
{
php_oci_out_column *column;
- if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU) ) ) {
+ if ( ( column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0) ) ) {
if (column->indicator == -1) {
RETURN_TRUE;
}
@@ -1439,7 +1439,7 @@ PHP_FUNCTION(oci_fetch_all)
Fetch a result row as an object */
PHP_FUNCTION(oci_fetch_object)
{
- php_oci_fetch_row(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_OCI_ASSOC, 2);
+ php_oci_fetch_row(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_OCI_ASSOC | PHP_OCI_RETURN_NULLS, 2);
if (Z_TYPE_P(return_value) == IS_ARRAY) {
object_and_properties_init(return_value, ZEND_STANDARD_CLASS_DEF_PTR, Z_ARRVAL_P(return_value));
@@ -1451,7 +1451,7 @@ PHP_FUNCTION(oci_fetch_object)
Fetch a result row as an enumerated array */
PHP_FUNCTION(oci_fetch_row)
{
- php_oci_fetch_row(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_OCI_NUM, 1);
+ php_oci_fetch_row(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_OCI_NUM | PHP_OCI_RETURN_NULLS, 1);
}
/* }}} */
@@ -1459,7 +1459,7 @@ PHP_FUNCTION(oci_fetch_row)
Fetch a result row as an associative array */
PHP_FUNCTION(oci_fetch_assoc)
{
- php_oci_fetch_row(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_OCI_ASSOC, 1);
+ php_oci_fetch_row(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_OCI_ASSOC | PHP_OCI_RETURN_NULLS, 1);
}
/* }}} */
@@ -1467,7 +1467,7 @@ PHP_FUNCTION(oci_fetch_assoc)
Fetch a result row as an array */
PHP_FUNCTION(oci_fetch_array)
{
- php_oci_fetch_row(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_OCI_BOTH, 2);
+ php_oci_fetch_row(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_OCI_BOTH | PHP_OCI_RETURN_NULLS, 2);
}
/* }}} */
@@ -1521,7 +1521,7 @@ PHP_FUNCTION(oci_new_connect)
}
/* }}} */
-/* {{{ proto resource oci_connect(string user, string pass [, string db])
+/* {{{ proto resource oci_connect(string user, string pass [, string db [, string charset [, int session_mode ]])
Connect to an Oracle database and log on. Returns a new session. */
PHP_FUNCTION(oci_connect)
{
@@ -1529,7 +1529,7 @@ PHP_FUNCTION(oci_connect)
}
/* }}} */
-/* {{{ proto resource oci_pconnect(string user, string pass [, string db])
+/* {{{ proto resource oci_pconnect(string user, string pass [, string db [, string charset ]])
Connect to an Oracle database using a persistent connection and log on. Returns a new session. */
PHP_FUNCTION(oci_pconnect)
{
@@ -1734,7 +1734,7 @@ PHP_FUNCTION(oci_result)
{
php_oci_out_column *column;
- column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+ column = php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
if(column) {
php_oci_column_to_zval(column, return_value, 0 TSRMLS_CC);
}
diff --git a/ext/oci8/oci8_lob.c b/ext/oci8/oci8_lob.c
index 6729b0511..023fbfaaf 100644
--- a/ext/oci8/oci8_lob.c
+++ b/ext/oci8/oci8_lob.c
@@ -25,7 +25,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci8_lob.c,v 1.7.2.4 2006/01/05 13:42:35 tony2001 Exp $ */
+/* $Id: oci8_lob.c,v 1.7.2.6 2006/04/05 14:06:00 tony2001 Exp $ */
@@ -150,9 +150,11 @@ int php_oci_lob_read (php_oci_descriptor *descriptor, long read_length, long ini
{
php_oci_connection *connection = descriptor->connection;
ub4 length = 0;
- ub4 block_length = PHP_OCI_LOB_BUFFER_SIZE;
- int bytes_read, bytes_total = 0, offset = 0, data_len_chars = 0;
+ int bytes_read, bytes_total = 0, offset = 0;
int requested_len = read_length; /* this is by default */
+#if defined(HAVE_OCI_LOB_READ2)
+ int chars_read = 0, is_clob = 0;
+#endif
*data_len = 0;
*data = NULL;
@@ -178,14 +180,10 @@ int php_oci_lob_read (php_oci_descriptor *descriptor, long read_length, long ini
requested_len = length - initial_offset;
}
- if (requested_len == 0) {
+ if (requested_len <= 0) {
return 0;
}
- if (requested_len < block_length) {
- block_length = requested_len;
- }
-
if (descriptor->type == OCI_DTYPE_FILE) {
connection->errcode = PHP_OCI_CALL(OCILobFileOpen, (connection->svc, connection->err, descriptor->descriptor, OCI_FILE_READONLY));
@@ -195,11 +193,71 @@ int php_oci_lob_read (php_oci_descriptor *descriptor, long read_length, long ini
return 1;
}
}
+#ifdef HAVE_OCI_LOB_READ2
+ else {
+ ub2 charset_id = 0;
+
+ connection->errcode = PHP_OCI_CALL(OCILobCharSetId, (connection->env, connection->err, descriptor->descriptor, &charset_id));
+
+ if (connection->errcode != OCI_SUCCESS) {
+ php_oci_error(connection->err, connection->errcode TSRMLS_CC);
+ PHP_OCI_HANDLE_ERROR(connection, connection->errcode);
+ return 1;
+ }
+
+ if (charset_id > 0) { /* charset_id is always > 0 for [N]CLOBs */
+ is_clob = 1;
+ }
+ }
+#endif
- *data = (char *)emalloc(block_length + 1);
- bytes_read = block_length;
+ *data = (char *)emalloc(requested_len + 1);
+ bytes_read = requested_len;
offset = initial_offset;
+
+ /* TODO
+ * We need to make sure this function works with Unicode LOBs
+ * */
+
+#if defined(HAVE_OCI_LOB_READ2)
+
+ do {
+ chars_read = 0;
+ connection->errcode = PHP_OCI_CALL(OCILobRead2,
+ (
+ connection->svc,
+ connection->err,
+ descriptor->descriptor,
+ (oraub8 *)&bytes_read, /* IN/OUT bytes toread/read */
+ (oraub8 *)&chars_read,
+ (oraub8) offset + 1, /* offset (starts with 1) */
+ (dvoid *) ((char *) *data + *data_len),
+ (oraub8) requested_len, /* size of buffer */
+ 0,
+ NULL,
+ (OCICallbackLobRead2) 0, /* callback... */
+ (ub2) connection->charset, /* The character set ID of the buffer data. */
+ (ub1) SQLCS_IMPLICIT /* The character set form of the buffer data. */
+ )
+ );
+
+ bytes_total += bytes_read;
+ if (is_clob) {
+ offset += chars_read;
+ } else {
+ offset += bytes_read;
+ }
+ *data_len += bytes_read;
+
+ if (connection->errcode != OCI_NEED_DATA) {
+ break;
+ }
+ *data = erealloc(*data, *data_len + PHP_OCI_LOB_BUFFER_SIZE + 1);
+ } while (connection->errcode == OCI_NEED_DATA);
+
+#else
+
do {
connection->errcode = PHP_OCI_CALL(OCILobRead,
(
@@ -209,7 +267,7 @@ int php_oci_lob_read (php_oci_descriptor *descriptor, long read_length, long ini
&bytes_read, /* IN/OUT bytes toread/read */
offset + 1, /* offset (starts with 1) */
(dvoid *) ((char *) *data + *data_len),
- block_length, /* size of buffer */
+ requested_len, /* size of buffer */
(dvoid *)0,
(OCICallbackLobRead) 0, /* callback... */
(ub2) connection->charset, /* The character set ID of the buffer data. */
@@ -218,14 +276,9 @@ int php_oci_lob_read (php_oci_descriptor *descriptor, long read_length, long ini
);
bytes_total += bytes_read;
- /*
- * Oracle doesn't tell use how many CHARS were read,
- * so we have to count them to get the correct offset for CLOBS */
- data_len_chars = OCIMultiByteStrnDisplayLength(connection->env, *data, bytes_total);
- offset = initial_offset + data_len_chars;
+ offset += bytes_read;
*data_len += bytes_read;
- block_length = PHP_OCI_LOB_BUFFER_SIZE;
if (connection->errcode != OCI_NEED_DATA) {
break;
@@ -233,6 +286,8 @@ int php_oci_lob_read (php_oci_descriptor *descriptor, long read_length, long ini
*data = erealloc(*data, *data_len + PHP_OCI_LOB_BUFFER_SIZE + 1);
} while (connection->errcode == OCI_NEED_DATA);
+#endif
+
if (connection->errcode != OCI_SUCCESS) {
php_oci_error(connection->err, connection->errcode TSRMLS_CC);
PHP_OCI_HANDLE_ERROR(connection, connection->errcode);
@@ -241,7 +296,7 @@ int php_oci_lob_read (php_oci_descriptor *descriptor, long read_length, long ini
return 1;
}
- descriptor->lob_current_position += data_len_chars;
+ descriptor->lob_current_position = offset;
if (descriptor->type == OCI_DTYPE_FILE) {
connection->errcode = PHP_OCI_CALL(OCILobFileClose, (connection->svc, connection->err, descriptor->descriptor));
diff --git a/ext/oci8/oci8_statement.c b/ext/oci8/oci8_statement.c
index b0543d736..dcc33bd4e 100644
--- a/ext/oci8/oci8_statement.c
+++ b/ext/oci8/oci8_statement.c
@@ -25,7 +25,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci8_statement.c,v 1.7.2.8 2006/01/01 12:50:10 sniper Exp $ */
+/* $Id: oci8_statement.c,v 1.7.2.14 2006/04/12 19:21:35 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
@@ -70,7 +70,7 @@ php_oci_statement *php_oci_statement_create (php_oci_connection *connection, cha
php_oci_error(connection->err, connection->errcode TSRMLS_CC);
#if HAVE_OCI_STMT_PREPARE2
- PHP_OCI_CALL(OCIStmtRelease, (statement->stmt, statement->err, NULL, 0, OCI_DEFAULT));
+ PHP_OCI_CALL(OCIStmtRelease, (statement->stmt, statement->err, NULL, 0, OCI_STRLS_CACHE_DELETE));
PHP_OCI_CALL(OCIHandleFree,(statement->err, OCI_HTYPE_ERROR));
#else
PHP_OCI_CALL(OCIHandleFree,(statement->stmt, OCI_HTYPE_STMT));
@@ -165,7 +165,6 @@ int php_oci_statement_fetch(php_oci_statement *statement, ub4 nrows TSRMLS_DC)
/* this is exactly what we requested */
return 0;
}
-
return 1;
}
@@ -283,8 +282,9 @@ int php_oci_statement_execute(php_oci_statement *statement, ub4 mode TSRMLS_DC)
switch (mode) {
case OCI_COMMIT_ON_SUCCESS:
+ case OCI_DESCRIBE_ONLY:
case OCI_DEFAULT:
- /* only these two are allowed */
+ /* only these are allowed */
break;
default:
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid execute mode given: %d", mode);
@@ -493,6 +493,9 @@ int php_oci_statement_execute(php_oci_statement *statement, ub4 mode TSRMLS_DC)
case SQLT_BIN:
default:
define_type = SQLT_CHR;
+ if (outcol->data_type == SQLT_BIN) {
+ define_type = SQLT_BIN;
+ }
if ((outcol->data_type == SQLT_DAT) || (outcol->data_type == SQLT_NUM)
#ifdef SQLT_TIMESTAMP
|| (outcol->data_type == SQLT_TIMESTAMP)
@@ -502,6 +505,10 @@ int php_oci_statement_execute(php_oci_statement *statement, ub4 mode TSRMLS_DC)
#endif
) {
outcol->storage_size4 = 512; /* XXX this should fit "most" NLS date-formats and Numbers */
+#if defined(SQLT_IBFLOAT) && defined(SQLT_IBDOUBLE)
+ } else if (outcol->data_type == SQLT_IBFLOAT || outcol->data_type == SQLT_IBDOUBLE) {
+ outcol->storage_size4 = 1024;
+#endif
} else {
outcol->storage_size4++; /* add one for string terminator */
}
@@ -509,7 +516,7 @@ int php_oci_statement_execute(php_oci_statement *statement, ub4 mode TSRMLS_DC)
outcol->storage_size4 *= 3;
dynamic = OCI_DEFAULT;
- buf = outcol->data = (text *) emalloc(outcol->storage_size4);
+ buf = outcol->data = (text *) ecalloc(1, outcol->storage_size4);
break;
}
@@ -579,7 +586,7 @@ void php_oci_statement_free(php_oci_statement *statement TSRMLS_DC)
if (statement->stmt) {
#if HAVE_OCI_STMT_PREPARE2
if (statement->last_query_len) { /* FIXME: magical */
- PHP_OCI_CALL(OCIStmtRelease, (statement->stmt, statement->err, NULL, 0, OCI_DEFAULT));
+ PHP_OCI_CALL(OCIStmtRelease, (statement->stmt, statement->err, NULL, 0, OCI_STRLS_CACHE_DELETE));
}
else {
PHP_OCI_CALL(OCIHandleFree, (statement->stmt, OCI_HTYPE_STMT));
@@ -809,6 +816,9 @@ int php_oci_bind_by_name(php_oci_statement *statement, char *name, int name_len,
mode = OCI_DEFAULT;
break;
+ case SQLT_LBI:
+ case SQLT_BIN:
+ case SQLT_LNG:
case SQLT_CHR:
/* this is the default case when type was not specified */
convert_to_string(var);
@@ -1005,7 +1015,7 @@ sb4 php_oci_bind_out_callback(
/* {{{ php_oci_statement_get_column_helper()
Helper function to get column by name and index */
-php_oci_out_column *php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAMETERS)
+php_oci_out_column *php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAMETERS, int need_data)
{
zval *z_statement, *column_index;
php_oci_statement *statement;
@@ -1020,6 +1030,10 @@ php_oci_out_column *php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAME
if (!statement) {
return NULL;
}
+
+ if (need_data && !statement->has_data) {
+ return NULL;
+ }
if (Z_TYPE_P(column_index) == IS_STRING) {
column = php_oci_statement_get_column(statement, -1, Z_STRVAL_P(column_index), Z_STRLEN_P(column_index) TSRMLS_CC);
diff --git a/ext/oci8/php_oci8_int.h b/ext/oci8/php_oci8_int.h
index 4f70fd920..0e872a335 100644
--- a/ext/oci8/php_oci8_int.h
+++ b/ext/oci8/php_oci8_int.h
@@ -25,7 +25,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_oci8_int.h,v 1.11.2.4 2006/01/05 13:42:35 tony2001 Exp $ */
+/* $Id: php_oci8_int.h,v 1.11.2.6 2006/04/05 14:06:00 tony2001 Exp $ */
#if HAVE_OCI8
# ifndef PHP_OCI8_INT_H
@@ -78,7 +78,7 @@ extern zend_class_entry *oci_coll_class_entry_ptr;
#define PHP_OCI_MAX_NAME_LEN 64
#define PHP_OCI_MAX_DATA_SIZE INT_MAX
#define PHP_OCI_PIECE_SIZE (64*1024)-1
-#define PHP_OCI_LOB_BUFFER_SIZE 1048576l
+#define PHP_OCI_LOB_BUFFER_SIZE 32768
#define PHP_OCI_ASSOC 1<<0
#define PHP_OCI_NUM 1<<1
@@ -358,7 +358,7 @@ int php_oci_bind_post_exec(void *data TSRMLS_DC);
int php_oci_bind_by_name(php_oci_statement *, char *, int, zval*, long, long TSRMLS_DC);
sb4 php_oci_bind_in_callback(dvoid *, OCIBind *, ub4, ub4, dvoid **, ub4 *, ub1 *, dvoid **);
sb4 php_oci_bind_out_callback(dvoid *, OCIBind *, ub4, ub4, dvoid **, ub4 **, ub1 *, dvoid **, ub2 **);
-php_oci_out_column *php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAMETERS);
+php_oci_out_column *php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAMETERS, int need_data);
int php_oci_statement_get_type(php_oci_statement *, ub2 * TSRMLS_DC);
int php_oci_statement_get_numrows(php_oci_statement *, ub4 * TSRMLS_DC);
diff --git a/ext/oci8/tests/bind_empty.phpt b/ext/oci8/tests/bind_empty.phpt
index dc993016a..9c602b32c 100644
--- a/ext/oci8/tests/bind_empty.phpt
+++ b/ext/oci8/tests/bind_empty.phpt
@@ -18,13 +18,13 @@ oci_execute($statement);
$name = null;
$stmt = oci_parse($c, "UPDATE bind_test SET name=:name");
-oci_bind_by_name($stmt, ":name", &$name);
+oci_bind_by_name($stmt, ":name", $name);
$res = oci_execute($stmt);
$name = "";
$stmt = oci_parse($c, "UPDATE bind_test SET name=:name");
-oci_bind_by_name($stmt, ":name", &$name);
+oci_bind_by_name($stmt, ":name", $name);
$res = oci_execute($stmt);
diff --git a/ext/oci8/tests/bind_long.phpt b/ext/oci8/tests/bind_long.phpt
new file mode 100644
index 000000000..58590f145
--- /dev/null
+++ b/ext/oci8/tests/bind_long.phpt
@@ -0,0 +1,38 @@
+--TEST--
+bind LONG field
+--SKIPIF--
+<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
+--FILE--
+<?php
+
+require dirname(__FILE__)."/connect.inc";
+
+$stmt = oci_parse($c, "create table phptestlng( id number(10), fileimage long)");
+oci_execute($stmt);
+
+$stmt = oci_parse ($c, "insert into phptestlng (id, fileimage) values (:id, :fileimage)");
+$i=1;
+$fileimage = file_get_contents( dirname(__FILE__)."/test.gif");
+
+oci_bind_by_name( $stmt, ":id", $i, -1);
+oci_bind_by_name( $stmt, ":fileimage", $fileimage, -1, SQLT_LNG);
+oci_execute($stmt, OCI_DEFAULT);
+oci_commit($c);
+
+$stmt = oci_parse($c, "SELECT fileimage FROM phptestlng");
+oci_execute($stmt);
+
+$row = oci_fetch_row($stmt);
+var_dump(md5($row[0]));
+var_dump(strlen($row[0]));
+
+$stmt = oci_parse($c, "drop table phptestlng");
+oci_execute($stmt);
+
+echo "Done\n";
+
+?>
+--EXPECT--
+string(32) "d04e7036e2f4221abc88fd14e960a45b"
+int(2523)
+Done
diff --git a/ext/oci8/tests/bind_long_raw.phpt b/ext/oci8/tests/bind_long_raw.phpt
new file mode 100644
index 000000000..2a9962eac
--- /dev/null
+++ b/ext/oci8/tests/bind_long_raw.phpt
@@ -0,0 +1,38 @@
+--TEST--
+bind LONG RAW field
+--SKIPIF--
+<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
+--FILE--
+<?php
+
+require dirname(__FILE__)."/connect.inc";
+
+$stmt = oci_parse($c, "create table phptestlngraw( id number(10), fileimage long raw)");
+oci_execute($stmt);
+
+$stmt = oci_parse ($c, "insert into phptestlngraw (id, fileimage) values (:id, :fileimage)");
+$i=1;
+$fileimage = file_get_contents( dirname(__FILE__)."/test.gif");
+
+oci_bind_by_name( $stmt, ":id", $i, -1);
+oci_bind_by_name( $stmt, ":fileimage", $fileimage, -1, SQLT_LBI);
+oci_execute($stmt, OCI_DEFAULT);
+oci_commit($c);
+
+$stmt = oci_parse($c, "SELECT fileimage FROM phptestlngraw");
+oci_execute($stmt);
+
+$row = oci_fetch_row($stmt);
+var_dump(md5($row[0]));
+var_dump(strlen($row[0]));
+
+$stmt = oci_parse($c, "drop table phptestlngraw");
+oci_execute($stmt);
+
+echo "Done\n";
+
+?>
+--EXPECT--
+string(32) "614fcbba1effb7caa27ef0ef25c27fcf"
+int(2523)
+Done
diff --git a/ext/oci8/tests/bind_raw.phpt b/ext/oci8/tests/bind_raw.phpt
new file mode 100644
index 000000000..c9087e552
--- /dev/null
+++ b/ext/oci8/tests/bind_raw.phpt
@@ -0,0 +1,39 @@
+--TEST--
+bind RAW field
+--SKIPIF--
+<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
+--FILE--
+<?php
+
+require dirname(__FILE__)."/connect.inc";
+
+$stmt = oci_parse($c, "create table phptestrawtable( id number(10), fileimage raw(1000))");
+oci_execute($stmt);
+
+$stmt = oci_parse ($c, "insert into phptestrawtable (id, fileimage) values (:id, :fileimage)");
+$i=1;
+$fileimage = file_get_contents( dirname(__FILE__)."/test.gif");
+$fileimage = substr($fileimage, 0, 300);
+
+oci_bind_by_name( $stmt, ":id", $i, -1);
+oci_bind_by_name( $stmt, ":fileimage", $fileimage, -1, SQLT_BIN);
+oci_execute($stmt, OCI_DEFAULT);
+oci_commit($c);
+
+$stmt = oci_parse($c, "SELECT fileimage FROM phptestrawtable");
+oci_execute($stmt);
+
+$row = oci_fetch_row($stmt);
+var_dump(md5($row[0]));
+var_dump(strlen($row[0]));
+
+$stmt = oci_parse($c, "drop table phptestrawtable");
+oci_execute($stmt);
+
+echo "Done\n";
+
+?>
+--EXPECT--
+string(32) "88b274d7a257ac6f70435b83abd4e26e"
+int(300)
+Done
diff --git a/ext/oci8/tests/bug36010.phpt b/ext/oci8/tests/bug36010.phpt
new file mode 100644
index 000000000..ef435496a
--- /dev/null
+++ b/ext/oci8/tests/bug36010.phpt
@@ -0,0 +1,26 @@
+--TEST--
+bug #36010 (Crash when executing SQL statment with lob parameter twice)
+--SKIPIF--
+<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
+--FILE--
+<?php
+
+require dirname(__FILE__).'/connect.inc';
+
+function f($conn)
+{
+ $sql = "begin :p_clob := 'lob string'; end;";
+ $stid = oci_parse($conn, $sql);
+ $clob = oci_new_descriptor($conn, OCI_D_LOB);
+ oci_bind_by_name($stid, ":p_clob", $clob, -1, OCI_B_CLOB);
+ $r = oci_execute($stid, OCI_DEFAULT);
+}
+
+f($c);
+f($c);
+
+echo "Done\n";
+
+?>
+--EXPECT--
+Done
diff --git a/ext/oci8/tests/bug36096.phpt b/ext/oci8/tests/bug36096.phpt
new file mode 100644
index 000000000..44b3a6ddc
--- /dev/null
+++ b/ext/oci8/tests/bug36096.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Bug #36096 (oci_result() returns garbage after oci_fetch() failed)
+--SKIPIF--
+<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
+--FILE--
+<?php
+
+require dirname(__FILE__)."/connect.inc";
+
+$sql = "SELECT 'ABC' FROM DUAL WHERE 1<>1";
+$stmt = oci_parse($c, $sql);
+
+if(oci_execute($stmt, OCI_COMMIT_ON_SUCCESS)){
+ var_dump(oci_fetch($stmt));
+ var_dump(oci_result($stmt, 1));
+ var_dump(oci_field_name($stmt, 1));
+ var_dump(oci_field_type($stmt, 1));
+}
+
+echo "Done\n";
+
+?>
+--EXPECT--
+bool(false)
+bool(false)
+string(5) "'ABC'"
+string(4) "CHAR"
+Done
diff --git a/ext/oci8/tests/cursors.phpt b/ext/oci8/tests/cursors.phpt
index 6c92a2b91..22c89c9c5 100644
--- a/ext/oci8/tests/cursors.phpt
+++ b/ext/oci8/tests/cursors.phpt
@@ -45,15 +45,21 @@ echo "Done\n";
?>
--EXPECTF--
-array(2) {
+array(5) {
["ID"]=>
string(1) "1"
["VALUE"]=>
string(1) "1"
+ ["BLOB"]=>
+ NULL
+ ["CLOB"]=>
+ NULL
+ ["STRING"]=>
+ NULL
}
bool(true)
-Warning: oci_fetch_assoc()%sORA-01002: fetch out of sequence in %scursors.php on line %d
+Warning: oci_fetch_assoc(): ORA-01002: fetch out of sequence in %s on line %d
bool(false)
bool(true)
Done
diff --git a/ext/oci8/tests/debug.phpt b/ext/oci8/tests/debug.phpt
index a3e393240..cc771d531 100644
--- a/ext/oci8/tests/debug.phpt
+++ b/ext/oci8/tests/debug.phpt
@@ -20,12 +20,14 @@ echo "Done\n";
?>
--EXPECTF--
-OCI8 DEBUG: OCINlsEnvironmentVariableGet in php_oci_do_connect_ex() (%s/oci8.c:%d)
+OCI8 DEBUG: OCINlsEnvironmentVariableGet at (%s:%d)
Done
-OCI8 DEBUG: OCISessionEnd in php_oci_connection_close() (%s/oci8.c:%d)
-OCI8 DEBUG: OCIHandleFree in php_oci_connection_close() (%s/oci8.c:%d)
-OCI8 DEBUG: OCIServerDetach in php_oci_connection_close() (%s/oci8.c:%d)
-OCI8 DEBUG: OCIHandleFree in php_oci_connection_close() (%s/oci8.c:%d)
-OCI8 DEBUG: OCIHandleFree in php_oci_connection_close() (%s/oci8.c:%d)
-OCI8 DEBUG: OCIHandleFree in php_oci_connection_close() (%s/oci8.c:%d)
-OCI8 DEBUG: OCIHandleFree in php_oci_connection_close() (%s/oci8.c:%d)
+OCI8 DEBUG: OCISessionEnd at (%s:%d)
+OCI8 DEBUG: OCIHandleFree at (%s:%d)
+OCI8 DEBUG: OCIServerDetach at (%s:%d)
+OCI8 DEBUG: OCIHandleFree at (%s:%d)
+OCI8 DEBUG: OCIHandleFree at (%s:%d)
+OCI8 DEBUG: OCIHandleFree at (%s:%d)
+OCI8 DEBUG: OCIHandleFree at (%s:%d)
+OCI8 DEBUG: OCIHandleFree at (%s:%d)
+OCI8 DEBUG: OCIHandleFree at (%s:%d)
diff --git a/ext/oci8/tests/error1.phpt b/ext/oci8/tests/error1.phpt
index 28408f9c9..8b358b612 100644
--- a/ext/oci8/tests/error1.phpt
+++ b/ext/oci8/tests/error1.phpt
@@ -12,7 +12,16 @@ echo "Done\n";
?>
--EXPECTF--
-Warning: oci_connect(): ORA-12154: TNS:could not resolve the connect identifier specified in %s on line %d
-bool(false)
+Warning: oci_connect(): ORA-12154: TNS:could not resolve service name in %s on line %d
bool(false)
+array(4) {
+ ["code"]=>
+ int(12154)
+ ["message"]=>
+ string(45) "ORA-12154: TNS:could not resolve service name"
+ ["offset"]=>
+ int(0)
+ ["sqltext"]=>
+ string(0) ""
+}
Done
diff --git a/ext/oci8/tests/exec_fetch.phpt b/ext/oci8/tests/exec_fetch.phpt
index 6734f6169..83aae69f7 100644
--- a/ext/oci8/tests/exec_fetch.phpt
+++ b/ext/oci8/tests/exec_fetch.phpt
@@ -16,4 +16,9 @@ var_dump(oci_fetch_array($stmt));
echo "Done\n";
?>
--EXPECTF--
+Warning: oci_execute(): ORA-00942: table or view does not exist in %s on line %d
+bool(false)
+
+Warning: oci_fetch_array(): ORA-24374: define not done before fetch or execute and fetch in %s on line %d
+bool(false)
Done
diff --git a/ext/oci8/tests/fetch_array.phpt b/ext/oci8/tests/fetch_array.phpt
index bfffd4e7d..e2f32483d 100644
--- a/ext/oci8/tests/fetch_array.phpt
+++ b/ext/oci8/tests/fetch_array.phpt
@@ -77,7 +77,7 @@ require dirname(__FILE__).'/drop_table.inc';
echo "Done\n";
?>
--EXPECT--
-array(4) {
+array(10) {
[0]=>
string(1) "1"
["ID"]=>
@@ -86,8 +86,20 @@ array(4) {
string(1) "1"
["VALUE"]=>
string(1) "1"
+ [2]=>
+ NULL
+ ["BLOB"]=>
+ NULL
+ [3]=>
+ NULL
+ ["CLOB"]=>
+ NULL
+ [4]=>
+ NULL
+ ["STRING"]=>
+ NULL
}
-array(4) {
+array(10) {
[0]=>
string(1) "1"
["ID"]=>
@@ -96,8 +108,20 @@ array(4) {
string(1) "1"
["VALUE"]=>
string(1) "1"
+ [2]=>
+ NULL
+ ["BLOB"]=>
+ NULL
+ [3]=>
+ NULL
+ ["CLOB"]=>
+ NULL
+ [4]=>
+ NULL
+ ["STRING"]=>
+ NULL
}
-array(4) {
+array(10) {
[0]=>
string(1) "1"
["ID"]=>
@@ -106,6 +130,18 @@ array(4) {
string(1) "1"
["VALUE"]=>
string(1) "1"
+ [2]=>
+ NULL
+ ["BLOB"]=>
+ NULL
+ [3]=>
+ NULL
+ ["CLOB"]=>
+ NULL
+ [4]=>
+ NULL
+ ["STRING"]=>
+ NULL
}
array(2) {
[0]=>
@@ -173,58 +209,100 @@ array(4) {
["VALUE"]=>
string(1) "1"
}
-array(2) {
+array(4) {
[0]=>
string(1) "1"
+ ["ID"]=>
+ string(1) "1"
[1]=>
string(1) "1"
+ ["VALUE"]=>
+ string(1) "1"
}
-array(2) {
+array(4) {
[0]=>
string(1) "1"
+ ["ID"]=>
+ string(1) "1"
[1]=>
string(1) "1"
+ ["VALUE"]=>
+ string(1) "1"
}
-array(2) {
+array(4) {
[0]=>
string(1) "1"
+ ["ID"]=>
+ string(1) "1"
[1]=>
string(1) "1"
+ ["VALUE"]=>
+ string(1) "1"
}
-array(5) {
+array(10) {
[0]=>
string(1) "1"
+ ["ID"]=>
+ string(1) "1"
[1]=>
string(1) "1"
+ ["VALUE"]=>
+ string(1) "1"
[2]=>
NULL
+ ["BLOB"]=>
+ NULL
[3]=>
NULL
+ ["CLOB"]=>
+ NULL
[4]=>
NULL
+ ["STRING"]=>
+ NULL
}
-array(5) {
+array(10) {
[0]=>
string(1) "1"
+ ["ID"]=>
+ string(1) "1"
[1]=>
string(1) "1"
+ ["VALUE"]=>
+ string(1) "1"
[2]=>
NULL
+ ["BLOB"]=>
+ NULL
[3]=>
NULL
+ ["CLOB"]=>
+ NULL
[4]=>
NULL
+ ["STRING"]=>
+ NULL
}
-array(5) {
+array(10) {
[0]=>
string(1) "1"
+ ["ID"]=>
+ string(1) "1"
[1]=>
string(1) "1"
+ ["VALUE"]=>
+ string(1) "1"
[2]=>
NULL
+ ["BLOB"]=>
+ NULL
[3]=>
NULL
+ ["CLOB"]=>
+ NULL
[4]=>
NULL
+ ["STRING"]=>
+ NULL
}
Done
diff --git a/ext/oci8/tests/fetch_assoc.phpt b/ext/oci8/tests/fetch_assoc.phpt
index 2c9590db5..7dacf2e5b 100644
--- a/ext/oci8/tests/fetch_assoc.phpt
+++ b/ext/oci8/tests/fetch_assoc.phpt
@@ -43,22 +43,40 @@ echo "Done\n";
?>
--EXPECT--
-array(2) {
+array(5) {
["ID"]=>
string(1) "1"
["VALUE"]=>
string(1) "1"
+ ["BLOB"]=>
+ NULL
+ ["CLOB"]=>
+ NULL
+ ["STRING"]=>
+ NULL
}
-array(2) {
+array(5) {
["ID"]=>
string(1) "1"
["VALUE"]=>
string(1) "1"
+ ["BLOB"]=>
+ NULL
+ ["CLOB"]=>
+ NULL
+ ["STRING"]=>
+ NULL
}
-array(2) {
+array(5) {
["ID"]=>
string(1) "1"
["VALUE"]=>
string(1) "1"
+ ["BLOB"]=>
+ NULL
+ ["CLOB"]=>
+ NULL
+ ["STRING"]=>
+ NULL
}
Done
diff --git a/ext/oci8/tests/fetch_object.phpt b/ext/oci8/tests/fetch_object.phpt
index d6b2714b9..57b7fc03d 100644
--- a/ext/oci8/tests/fetch_object.phpt
+++ b/ext/oci8/tests/fetch_object.phpt
@@ -42,23 +42,41 @@ require dirname(__FILE__).'/drop_table.inc';
echo "Done\n";
?>
---EXPECT--
-object(stdClass)#1 (2) {
+--EXPECTF--
+object(stdClass)#%d (5) {
["ID"]=>
string(1) "1"
["VALUE"]=>
string(1) "1"
+ ["BLOB"]=>
+ NULL
+ ["CLOB"]=>
+ NULL
+ ["STRING"]=>
+ NULL
}
-object(stdClass)#2 (2) {
+object(stdClass)#%d (5) {
["ID"]=>
string(1) "1"
["VALUE"]=>
string(1) "1"
+ ["BLOB"]=>
+ NULL
+ ["CLOB"]=>
+ NULL
+ ["STRING"]=>
+ NULL
}
-object(stdClass)#1 (2) {
+object(stdClass)#%d (5) {
["ID"]=>
string(1) "1"
["VALUE"]=>
string(1) "1"
+ ["BLOB"]=>
+ NULL
+ ["CLOB"]=>
+ NULL
+ ["STRING"]=>
+ NULL
}
Done
diff --git a/ext/oci8/tests/fetch_row.phpt b/ext/oci8/tests/fetch_row.phpt
index d8a68cabb..a637ecc6f 100644
--- a/ext/oci8/tests/fetch_row.phpt
+++ b/ext/oci8/tests/fetch_row.phpt
@@ -43,22 +43,40 @@ echo "Done\n";
?>
--EXPECT--
-array(2) {
+array(5) {
[0]=>
string(1) "1"
[1]=>
string(1) "1"
+ [2]=>
+ NULL
+ [3]=>
+ NULL
+ [4]=>
+ NULL
}
-array(2) {
+array(5) {
[0]=>
string(1) "1"
[1]=>
string(1) "1"
+ [2]=>
+ NULL
+ [3]=>
+ NULL
+ [4]=>
+ NULL
}
-array(2) {
+array(5) {
[0]=>
string(1) "1"
[1]=>
string(1) "1"
+ [2]=>
+ NULL
+ [3]=>
+ NULL
+ [4]=>
+ NULL
}
Done
diff --git a/ext/oci8/tests/field_funcs.phpt b/ext/oci8/tests/field_funcs.phpt
index 2f1dbd710..988e5f7a1 100644
--- a/ext/oci8/tests/field_funcs.phpt
+++ b/ext/oci8/tests/field_funcs.phpt
@@ -34,7 +34,7 @@ if (!oci_execute($s)) {
die("oci_execute(select) failed!\n");
}
-$row = oci_fetch_array($s, OCI_RETURN_NULLS + OCI_RETURN_LOBS);
+$row = oci_fetch_array($s, OCI_NUM + OCI_RETURN_NULLS + OCI_RETURN_LOBS);
var_dump($row);
foreach ($row as $num => $field) {
@@ -97,7 +97,7 @@ int(0)
int(4000)
bool(true)
string(6) "STRING"
-string(7) "VARCHAR"
+string(8) "VARCHAR2"
int(1)
int(0)
int(0)
diff --git a/ext/oci8/tests/field_funcs1.phpt b/ext/oci8/tests/field_funcs1.phpt
index 68986e051..b41e743e4 100644
--- a/ext/oci8/tests/field_funcs1.phpt
+++ b/ext/oci8/tests/field_funcs1.phpt
@@ -34,7 +34,7 @@ if (!oci_execute($s)) {
die("oci_execute(select) failed!\n");
}
-$row = oci_fetch_array($s, OCI_RETURN_NULLS + OCI_RETURN_LOBS);
+$row = oci_fetch_array($s, OCI_NUM + OCI_RETURN_NULLS + OCI_RETURN_LOBS);
var_dump($row);
var_dump(oci_field_is_null($s, -1));
diff --git a/ext/oci8/tests/field_funcs_old.phpt b/ext/oci8/tests/field_funcs_old.phpt
index 8627f6a78..34af09429 100644
--- a/ext/oci8/tests/field_funcs_old.phpt
+++ b/ext/oci8/tests/field_funcs_old.phpt
@@ -97,7 +97,7 @@ int(0)
int(4000)
bool(true)
string(6) "STRING"
-string(7) "VARCHAR"
+string(8) "VARCHAR2"
int(1)
int(0)
int(0)
diff --git a/ext/oci8/tests/lob_001.phpt b/ext/oci8/tests/lob_001.phpt
index 029888469..cbcb92e7e 100644
--- a/ext/oci8/tests/lob_001.phpt
+++ b/ext/oci8/tests/lob_001.phpt
Binary files differ
diff --git a/ext/oci8/tests/lob_011.phpt b/ext/oci8/tests/lob_011.phpt
index 2dd78985f..b074e1730 100644
--- a/ext/oci8/tests/lob_011.phpt
+++ b/ext/oci8/tests/lob_011.phpt
@@ -69,8 +69,10 @@ echo "Done\n";
int(32)
bool(true)
string(32) "some string here. string, I said"
-array(1) {
+array(2) {
[0]=>
string(32) "some string here. string, I said"
+ ["BLOB"]=>
+ string(32) "some string here. string, I said"
}
Done
diff --git a/ext/oci8/tests/lob_019.phpt b/ext/oci8/tests/lob_019.phpt
new file mode 100644
index 000000000..fb9a3c818
--- /dev/null
+++ b/ext/oci8/tests/lob_019.phpt
Binary files differ
diff --git a/ext/oci8/tests/lob_020.phpt b/ext/oci8/tests/lob_020.phpt
new file mode 100644
index 000000000..edd0f0249
--- /dev/null
+++ b/ext/oci8/tests/lob_020.phpt
Binary files differ
diff --git a/ext/oci8/tests/select_null.phpt b/ext/oci8/tests/select_null.phpt
index 20307b3e2..87c5b815f 100644
--- a/ext/oci8/tests/select_null.phpt
+++ b/ext/oci8/tests/select_null.phpt
@@ -16,8 +16,10 @@ var_dump(oci_fetch_array($stmt, OCI_RETURN_NULLS));
echo "Done\n";
?>
--EXPECT--
-array(1) {
+array(2) {
[0]=>
NULL
+ ["NULL"]=>
+ NULL
}
Done
diff --git a/ext/oci8/tests/test.gif b/ext/oci8/tests/test.gif
new file mode 100644
index 000000000..f352c7308
--- /dev/null
+++ b/ext/oci8/tests/test.gif
Binary files differ
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index 9d306ea86..2a1ebd538 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: openssl.c,v 1.98.2.4 2006/01/01 12:50:10 sniper Exp $ */
+/* $Id: openssl.c,v 1.98.2.5 2006/04/30 23:43:40 wez Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -156,6 +156,11 @@ static int le_x509;
static int le_csr;
static int ssl_stream_data_index;
+int php_openssl_get_x509_list_id(void)
+{
+ return le_x509;
+}
+
/* {{{ resource destructors */
static void php_pkey_free(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c
index 852b17a7e..4b965fa9d 100644
--- a/ext/openssl/xp_ssl.c
+++ b/ext/openssl/xp_ssl.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: xp_ssl.c,v 1.22.2.2 2006/01/01 12:50:10 sniper Exp $ */
+/* $Id: xp_ssl.c,v 1.22.2.3 2006/04/30 23:43:40 wez Exp $ */
#include "php.h"
#include "ext/standard/file.h"
@@ -33,6 +33,7 @@
int php_openssl_apply_verification_policy(SSL *ssl, X509 *peer, php_stream *stream TSRMLS_DC);
SSL *php_SSL_new_from_context(SSL_CTX *ctx, php_stream *stream TSRMLS_DC);
+int php_openssl_get_x509_list_id(void);
/* This implementation is very closely tied to the that of the native
* sockets implemented in the core.
@@ -414,9 +415,63 @@ static inline int php_openssl_enable_crypto(php_stream *stream,
SSL_shutdown(sslsock->ssl_handle);
} else {
sslsock->ssl_active = 1;
+
+ /* allow the script to capture the peer cert
+ * and/or the certificate chain */
+ if (stream->context) {
+ zval **val, *zcert;
+
+ if (SUCCESS == php_stream_context_get_option(
+ stream->context, "ssl",
+ "capture_peer_cert", &val) &&
+ zval_is_true(*val)) {
+ MAKE_STD_ZVAL(zcert);
+ ZVAL_RESOURCE(zcert, zend_list_insert(peer_cert,
+ php_openssl_get_x509_list_id()));
+ php_stream_context_set_option(stream->context,
+ "ssl", "peer_certificate",
+ zcert);
+ peer_cert = NULL;
+ }
+
+ if (SUCCESS == php_stream_context_get_option(
+ stream->context, "ssl",
+ "capture_peer_cert_chain", &val) &&
+ zval_is_true(*val)) {
+ zval *arr;
+ STACK_OF(X509) *chain;
+
+ MAKE_STD_ZVAL(arr);
+ chain = SSL_get_peer_cert_chain(
+ sslsock->ssl_handle);
+
+ if (chain) {
+ int i;
+ array_init(arr);
+
+ for (i = 0; i < sk_X509_num(chain); i++) {
+ X509 *mycert = X509_dup(
+ sk_X509_value(chain, i));
+ MAKE_STD_ZVAL(zcert);
+ ZVAL_RESOURCE(zcert,
+ zend_list_insert(mycert,
+ php_openssl_get_x509_list_id()));
+ add_next_index_zval(arr, zcert);
+ }
+ } else {
+ ZVAL_NULL(arr);
+ }
+
+ php_stream_context_set_option(stream->context,
+ "ssl", "peer_certificate_chain",
+ arr);
+ }
+ }
}
- X509_free(peer_cert);
+ if (peer_cert) {
+ X509_free(peer_cert);
+ }
} else {
n = errno == EAGAIN ? 0 : -1;
}
diff --git a/ext/pcre/config.w32 b/ext/pcre/config.w32
index f76373f76..9d31eded1 100644
--- a/ext/pcre/config.w32
+++ b/ext/pcre/config.w32
@@ -1,12 +1,12 @@
-// $Id: config.w32,v 1.4.2.3 2005/12/01 20:53:35 mike Exp $
+// $Id: config.w32,v 1.4.2.5 2006/03/06 22:49:16 sebastian Exp $
// vim:ft=javascript
ARG_WITH("pcre-regex", "Perl Compatible Regular Expressions", "yes");
if (PHP_PCRE_REGEX == "yes") {
EXTENSION("pcre", "php_pcre.c", PHP_PCRE_REGEX_SHARED,
- "-DEXPORT= -DNEWLINE=10 -DSUPPORT_UTF8 -DSUPPORT_UCP -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DMATCH_LIMIT=10000000 -Iext/pcre/pcrelib -DNO_RECURSE");
- ADD_SOURCES("ext/pcre/pcrelib", "pcre_chartables.c pcre_compile.c pcre_config.c pcre_dfa_exec.c pcre_exec.c pcre_fullinfo.c pcre_get.c pcre_globals.c pcre_info.c pcre_maketables.c pcre_ord2utf8.c pcre_printint.c pcre_refcount.c pcre_study.c pcre_tables.c pcre_try_flipped.c pcre_ucp_findchar.c pcre_valid_utf8.c pcre_version.c pcre_xclass.c", "pcre");
+ "-DEXPORT= -DNEWLINE=10 -DSUPPORT_UTF8 -DSUPPORT_UCP -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DMATCH_LIMIT=10000000 -DMATCH_LIMIT_RECURSION=10000000 -Iext/pcre/pcrelib");
+ ADD_SOURCES("ext/pcre/pcrelib", "pcre_chartables.c pcre_ucp_searchfuncs.c pcre_compile.c pcre_config.c pcre_dfa_exec.c pcre_exec.c pcre_fullinfo.c pcre_get.c pcre_globals.c pcre_info.c pcre_maketables.c pcre_ord2utf8.c pcre_refcount.c pcre_study.c pcre_tables.c pcre_try_flipped.c pcre_valid_utf8.c pcre_version.c pcre_xclass.c", "pcre");
ADD_DEF_FILE("ext\\pcre\\php_pcre.def");
AC_DEFINE('HAVE_BUNDLED_PCRE', 1, 'Using bundled PCRE library');
diff --git a/ext/pcre/config0.m4 b/ext/pcre/config0.m4
index f36ac20e2..7fb8a079e 100644
--- a/ext/pcre/config0.m4
+++ b/ext/pcre/config0.m4
@@ -1,5 +1,5 @@
dnl
-dnl $Id: config0.m4,v 1.38.2.2 2005/12/07 17:44:43 helly Exp $
+dnl $Id: config0.m4,v 1.38.2.3 2006/03/06 21:45:57 andrei Exp $
dnl
dnl By default we'll compile and link against the bundled PCRE library
@@ -13,7 +13,7 @@ PHP_ARG_WITH(pcre-regex,for PCRE support,
if test "$PHP_PCRE_REGEX" != "no"; then
if test "$PHP_PCRE_REGEX" = "yes"; then
- PHP_NEW_EXTENSION(pcre, pcrelib/pcre_chartables.c pcrelib/pcre_compile.c pcrelib/pcre_config.c pcrelib/pcre_dfa_exec.c pcrelib/pcre_exec.c pcrelib/pcre_fullinfo.c pcrelib/pcre_get.c pcrelib/pcre_globals.c pcrelib/pcre_info.c pcrelib/pcre_maketables.c pcrelib/pcre_ord2utf8.c pcrelib/pcre_printint.c pcrelib/pcre_refcount.c pcrelib/pcre_study.c pcrelib/pcre_tables.c pcrelib/pcre_try_flipped.c pcrelib/pcre_ucp_findchar.c pcrelib/pcre_valid_utf8.c pcrelib/pcre_version.c pcrelib/pcre_xclass.c php_pcre.c, $ext_shared,,-DEXPORT= -DNEWLINE=10 -DSUPPORT_UTF8 -DSUPPORT_UCP -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DMATCH_LIMIT=10000000 -I@ext_srcdir@/pcrelib)
+ PHP_NEW_EXTENSION(pcre, pcrelib/pcre_chartables.c pcrelib/pcre_ucp_searchfuncs.c pcrelib/pcre_compile.c pcrelib/pcre_config.c pcrelib/pcre_dfa_exec.c pcrelib/pcre_exec.c pcrelib/pcre_fullinfo.c pcrelib/pcre_get.c pcrelib/pcre_globals.c pcrelib/pcre_info.c pcrelib/pcre_maketables.c pcrelib/pcre_ord2utf8.c pcrelib/pcre_refcount.c pcrelib/pcre_study.c pcrelib/pcre_tables.c pcrelib/pcre_try_flipped.c pcrelib/pcre_valid_utf8.c pcrelib/pcre_version.c pcrelib/pcre_xclass.c php_pcre.c, $ext_shared,,-DEXPORT= -DNEWLINE=10 -DSUPPORT_UTF8 -DSUPPORT_UCP -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DMATCH_LIMIT=10000000 -DMATCH_LIMIT_RECURSION=10000000 -I@ext_srcdir@/pcrelib)
PHP_ADD_BUILD_DIR($ext_builddir/pcrelib)
PHP_INSTALL_HEADERS([ext/pcre], [php_pcre.h pcrelib/])
AC_DEFINE(HAVE_BUNDLED_PCRE, 1, [ ])
@@ -51,7 +51,7 @@ if test "$PHP_PCRE_REGEX" != "no"; then
AC_DEFINE(HAVE_PCRE, 1, [ ])
PHP_ADD_INCLUDE($PCRE_INCDIR)
- PHP_NEW_EXTENSION(pcre, php_pcre.c, $ext_shared,,-DEXPORT= -DNEWLINE=10 -DSUPPORT_UTF8 -DSUPPORT_UCP -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DMATCH_LIMIT=10000000)
+ PHP_NEW_EXTENSION(pcre, php_pcre.c, $ext_shared,,-DEXPORT= -DNEWLINE=10 -DSUPPORT_UTF8 -DSUPPORT_UCP -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DMATCH_LIMIT=10000000 -DMATCH_LIMIT_RECURSION=10000000)
fi
PHP_SUBST(PCRE_SHARED_LIBADD)
fi
diff --git a/ext/pcre/pcrelib/ChangeLog b/ext/pcre/pcrelib/ChangeLog
index b9d74d393..ce2b35853 100644
--- a/ext/pcre/pcrelib/ChangeLog
+++ b/ext/pcre/pcrelib/ChangeLog
@@ -1,6 +1,290 @@
ChangeLog for PCRE
------------------
+Version 6.6 06-Feb-06
+---------------------
+
+ 1. Change 16(a) for 6.5 broke things, because PCRE_DATA_SCOPE was not defined
+ in pcreposix.h. I have copied the definition from pcre.h.
+
+ 2. Change 25 for 6.5 broke compilation in a build directory out-of-tree
+ because pcre.h is no longer a built file.
+
+ 3. Added Jeff Friedl's additional debugging patches to pcregrep. These are
+ not normally included in the compiled code.
+
+
+Version 6.5 01-Feb-06
+---------------------
+
+ 1. When using the partial match feature with pcre_dfa_exec(), it was not
+ anchoring the second and subsequent partial matches at the new starting
+ point. This could lead to incorrect results. For example, with the pattern
+ /1234/, partially matching against "123" and then "a4" gave a match.
+
+ 2. Changes to pcregrep:
+
+ (a) All non-match returns from pcre_exec() were being treated as failures
+ to match the line. Now, unless the error is PCRE_ERROR_NOMATCH, an
+ error message is output. Some extra information is given for the
+ PCRE_ERROR_MATCHLIMIT and PCRE_ERROR_RECURSIONLIMIT errors, which are
+ probably the only errors that are likely to be caused by users (by
+ specifying a regex that has nested indefinite repeats, for instance).
+ If there are more than 20 of these errors, pcregrep is abandoned.
+
+ (b) A binary zero was treated as data while matching, but terminated the
+ output line if it was written out. This has been fixed: binary zeroes
+ are now no different to any other data bytes.
+
+ (c) Whichever of the LC_ALL or LC_CTYPE environment variables is set is
+ used to set a locale for matching. The --locale=xxxx long option has
+ been added (no short equivalent) to specify a locale explicitly on the
+ pcregrep command, overriding the environment variables.
+
+ (d) When -B was used with -n, some line numbers in the output were one less
+ than they should have been.
+
+ (e) Added the -o (--only-matching) option.
+
+ (f) If -A or -C was used with -c (count only), some lines of context were
+ accidentally printed for the final match.
+
+ (g) Added the -H (--with-filename) option.
+
+ (h) The combination of options -rh failed to suppress file names for files
+ that were found from directory arguments.
+
+ (i) Added the -D (--devices) and -d (--directories) options.
+
+ (j) Added the -F (--fixed-strings) option.
+
+ (k) Allow "-" to be used as a file name for -f as well as for a data file.
+
+ (l) Added the --colo(u)r option.
+
+ (m) Added Jeffrey Friedl's -S testing option, but within #ifdefs so that it
+ is not present by default.
+
+ 3. A nasty bug was discovered in the handling of recursive patterns, that is,
+ items such as (?R) or (?1), when the recursion could match a number of
+ alternatives. If it matched one of the alternatives, but subsequently,
+ outside the recursion, there was a failure, the code tried to back up into
+ the recursion. However, because of the way PCRE is implemented, this is not
+ possible, and the result was an incorrect result from the match.
+
+ In order to prevent this happening, the specification of recursion has
+ been changed so that all such subpatterns are automatically treated as
+ atomic groups. Thus, for example, (?R) is treated as if it were (?>(?R)).
+
+ 4. I had overlooked the fact that, in some locales, there are characters for
+ which isalpha() is true but neither isupper() nor islower() are true. In
+ the fr_FR locale, for instance, the \xAA and \xBA characters (ordmasculine
+ and ordfeminine) are like this. This affected the treatment of \w and \W
+ when they appeared in character classes, but not when they appeared outside
+ a character class. The bit map for "word" characters is now created
+ separately from the results of isalnum() instead of just taking it from the
+ upper, lower, and digit maps. (Plus the underscore character, of course.)
+
+ 5. The above bug also affected the handling of POSIX character classes such as
+ [[:alpha:]] and [[:alnum:]]. These do not have their own bit maps in PCRE's
+ permanent tables. Instead, the bit maps for such a class were previously
+ created as the appropriate unions of the upper, lower, and digit bitmaps.
+ Now they are created by subtraction from the [[:word:]] class, which has
+ its own bitmap.
+
+ 6. The [[:blank:]] character class matches horizontal, but not vertical space.
+ It is created by subtracting the vertical space characters (\x09, \x0a,
+ \x0b, \x0c) from the [[:space:]] bitmap. Previously, however, the
+ subtraction was done in the overall bitmap for a character class, meaning
+ that a class such as [\x0c[:blank:]] was incorrect because \x0c would not
+ be recognized. This bug has been fixed.
+
+ 7. Patches from the folks at Google:
+
+ (a) pcrecpp.cc: "to handle a corner case that may or may not happen in
+ real life, but is still worth protecting against".
+
+ (b) pcrecpp.cc: "corrects a bug when negative radixes are used with
+ regular expressions".
+
+ (c) pcre_scanner.cc: avoid use of std::count() because not all systems
+ have it.
+
+ (d) Split off pcrecpparg.h from pcrecpp.h and had the former built by
+ "configure" and the latter not, in order to fix a problem somebody had
+ with compiling the Arg class on HP-UX.
+
+ (e) Improve the error-handling of the C++ wrapper a little bit.
+
+ (f) New tests for checking recursion limiting.
+
+ 8. The pcre_memmove() function, which is used only if the environment does not
+ have a standard memmove() function (and is therefore rarely compiled),
+ contained two bugs: (a) use of int instead of size_t, and (b) it was not
+ returning a result (though PCRE never actually uses the result).
+
+ 9. In the POSIX regexec() interface, if nmatch is specified as a ridiculously
+ large number - greater than INT_MAX/(3*sizeof(int)) - REG_ESPACE is
+ returned instead of calling malloc() with an overflowing number that would
+ most likely cause subsequent chaos.
+
+10. The debugging option of pcretest was not showing the NO_AUTO_CAPTURE flag.
+
+11. The POSIX flag REG_NOSUB is now supported. When a pattern that was compiled
+ with this option is matched, the nmatch and pmatch options of regexec() are
+ ignored.
+
+12. Added REG_UTF8 to the POSIX interface. This is not defined by POSIX, but is
+ provided in case anyone wants to the the POSIX interface with UTF-8
+ strings.
+
+13. Added CXXLDFLAGS to the Makefile parameters to provide settings only on the
+ C++ linking (needed for some HP-UX environments).
+
+14. Avoid compiler warnings in get_ucpname() when compiled without UCP support
+ (unused parameter) and in the pcre_printint() function (omitted "default"
+ switch label when the default is to do nothing).
+
+15. Added some code to make it possible, when PCRE is compiled as a C++
+ library, to replace subject pointers for pcre_exec() with a smart pointer
+ class, thus making it possible to process discontinuous strings.
+
+16. The two macros PCRE_EXPORT and PCRE_DATA_SCOPE are confusing, and perform
+ much the same function. They were added by different people who were trying
+ to make PCRE easy to compile on non-Unix systems. It has been suggested
+ that PCRE_EXPORT be abolished now that there is more automatic apparatus
+ for compiling on Windows systems. I have therefore replaced it with
+ PCRE_DATA_SCOPE. This is set automatically for Windows; if not set it
+ defaults to "extern" for C or "extern C" for C++, which works fine on
+ Unix-like systems. It is now possible to override the value of PCRE_DATA_
+ SCOPE with something explicit in config.h. In addition:
+
+ (a) pcreposix.h still had just "extern" instead of either of these macros;
+ I have replaced it with PCRE_DATA_SCOPE.
+
+ (b) Functions such as _pcre_xclass(), which are internal to the library,
+ but external in the C sense, all had PCRE_EXPORT in their definitions.
+ This is apparently wrong for the Windows case, so I have removed it.
+ (It makes no difference on Unix-like systems.)
+
+17. Added a new limit, MATCH_LIMIT_RECURSION, which limits the depth of nesting
+ of recursive calls to match(). This is different to MATCH_LIMIT because
+ that limits the total number of calls to match(), not all of which increase
+ the depth of recursion. Limiting the recursion depth limits the amount of
+ stack (or heap if NO_RECURSE is set) that is used. The default can be set
+ when PCRE is compiled, and changed at run time. A patch from Google adds
+ this functionality to the C++ interface.
+
+18. Changes to the handling of Unicode character properties:
+
+ (a) Updated the table to Unicode 4.1.0.
+
+ (b) Recognize characters that are not in the table as "Cn" (undefined).
+
+ (c) I revised the way the table is implemented to a much improved format
+ which includes recognition of ranges. It now supports the ranges that
+ are defined in UnicodeData.txt, and it also amalgamates other
+ characters into ranges. This has reduced the number of entries in the
+ table from around 16,000 to around 3,000, thus reducing its size
+ considerably. I realized I did not need to use a tree structure after
+ all - a binary chop search is just as efficient. Having reduced the
+ number of entries, I extended their size from 6 bytes to 8 bytes to
+ allow for more data.
+
+ (d) Added support for Unicode script names via properties such as \p{Han}.
+
+19. In UTF-8 mode, a backslash followed by a non-Ascii character was not
+ matching that character.
+
+20. When matching a repeated Unicode property with a minimum greater than zero,
+ (for example \pL{2,}), PCRE could look past the end of the subject if it
+ reached it while seeking the minimum number of characters. This could
+ happen only if some of the characters were more than one byte long, because
+ there is a check for at least the minimum number of bytes.
+
+21. Refactored the implementation of \p and \P so as to be more general, to
+ allow for more different types of property in future. This has changed the
+ compiled form incompatibly. Anybody with saved compiled patterns that use
+ \p or \P will have to recompile them.
+
+22. Added "Any" and "L&" to the supported property types.
+
+23. Recognize \x{...} as a code point specifier, even when not in UTF-8 mode,
+ but give a compile time error if the value is greater than 0xff.
+
+24. The man pages for pcrepartial, pcreprecompile, and pcre_compile2 were
+ accidentally not being installed or uninstalled.
+
+25. The pcre.h file was built from pcre.h.in, but the only changes that were
+ made were to insert the current release number. This seemed silly, because
+ it made things harder for people building PCRE on systems that don't run
+ "configure". I have turned pcre.h into a distributed file, no longer built
+ by "configure", with the version identification directly included. There is
+ no longer a pcre.h.in file.
+
+ However, this change necessitated a change to the pcre-config script as
+ well. It is built from pcre-config.in, and one of the substitutions was the
+ release number. I have updated configure.ac so that ./configure now finds
+ the release number by grepping pcre.h.
+
+26. Added the ability to run the tests under valgrind.
+
+
+Version 6.4 05-Sep-05
+---------------------
+
+ 1. Change 6.0/10/(l) to pcregrep introduced a bug that caused separator lines
+ "--" to be printed when multiple files were scanned, even when none of the
+ -A, -B, or -C options were used. This is not compatible with Gnu grep, so I
+ consider it to be a bug, and have restored the previous behaviour.
+
+ 2. A couple of code tidies to get rid of compiler warnings.
+
+ 3. The pcretest program used to cheat by referring to symbols in the library
+ whose names begin with _pcre_. These are internal symbols that are not
+ really supposed to be visible externally, and in some environments it is
+ possible to suppress them. The cheating is now confined to including
+ certain files from the library's source, which is a bit cleaner.
+
+ 4. Renamed pcre.in as pcre.h.in to go with pcrecpp.h.in; it also makes the
+ file's purpose clearer.
+
+ 5. Reorganized pcre_ucp_findchar().
+
+
+Version 6.3 15-Aug-05
+---------------------
+
+ 1. The file libpcre.pc.in did not have general read permission in the tarball.
+
+ 2. There were some problems when building without C++ support:
+
+ (a) If C++ support was not built, "make install" and "make test" still
+ tried to test it.
+
+ (b) There were problems when the value of CXX was explicitly set. Some
+ changes have been made to try to fix these, and ...
+
+ (c) --disable-cpp can now be used to explicitly disable C++ support.
+
+ (d) The use of @CPP_OBJ@ directly caused a blank line preceded by a
+ backslash in a target when C++ was disabled. This confuses some
+ versions of "make", apparently. Using an intermediate variable solves
+ this. (Same for CPP_LOBJ.)
+
+ 3. $(LINK_FOR_BUILD) now includes $(CFLAGS_FOR_BUILD) and $(LINK)
+ (non-Windows) now includes $(CFLAGS) because these flags are sometimes
+ necessary on certain architectures.
+
+ 4. Added a setting of -export-symbols-regex to the link command to remove
+ those symbols that are exported in the C sense, but actually are local
+ within the library, and not documented. Their names all begin with
+ "_pcre_". This is not a perfect job, because (a) we have to except some
+ symbols that pcretest ("illegally") uses, and (b) the facility isn't always
+ available (and never for static libraries). I have made a note to try to
+ find a way round (a) in the future.
+
+
Version 6.2 01-Aug-05
---------------------
diff --git a/ext/pcre/pcrelib/LICENCE b/ext/pcre/pcrelib/LICENCE
index e8eb0d937..2a3d00e0b 100644
--- a/ext/pcre/pcrelib/LICENCE
+++ b/ext/pcre/pcrelib/LICENCE
@@ -22,7 +22,7 @@ Email domain: cam.ac.uk
University of Cambridge Computing Service,
Cambridge, England. Phone: +44 1223 334714.
-Copyright (c) 1997-2005 University of Cambridge
+Copyright (c) 1997-2006 University of Cambridge
All rights reserved.
diff --git a/ext/pcre/pcrelib/NEWS b/ext/pcre/pcrelib/NEWS
index a6113e089..a8b3a7a04 100644
--- a/ext/pcre/pcrelib/NEWS
+++ b/ext/pcre/pcrelib/NEWS
@@ -1,6 +1,28 @@
News about PCRE releases
------------------------
+Release 6.5 01-Feb-06
+---------------------
+
+Important changes in this release:
+
+1. A number of new features have been added to pcregrep.
+
+2. The Unicode property tables have been updated to Unicode 4.1.0, and the
+ supported properties have been extended with script names such as "Arabic",
+ and the derived properties "Any" and "L&". This has necessitated a change to
+ the interal format of compiled patterns. Any saved compiled patterns that
+ use \p or \P must be recompiled.
+
+3. The specification of recursion in patterns has been changed so that all
+ recursive subpatterns are automatically treated as atomic groups. Thus, for
+ example, (?R) is treated as if it were (?>(?R)). This is necessary because
+ otherwise there are situations where recursion does not work.
+
+See the ChangeLog for a complete list of changes, which include a number of bug
+fixes and tidies.
+
+
Release 6.0 07-Jun-05
---------------------
diff --git a/ext/pcre/pcrelib/NON-UNIX-USE b/ext/pcre/pcrelib/NON-UNIX-USE
index b7fe4301a..459bdf2b4 100644
--- a/ext/pcre/pcrelib/NON-UNIX-USE
+++ b/ext/pcre/pcrelib/NON-UNIX-USE
@@ -11,8 +11,9 @@ the Contrib directory on the ftp site that you may find useful. See
If you want to compile PCRE for a non-Unix system (or perhaps, more strictly,
for a system that does not support "configure" and "make" files), note that
-PCRE consists entirely of code written in Standard C, and so should compile
-successfully on any system that has a Standard C compiler and library.
+the basic PCRE library consists entirely of code written in Standard C, and so
+should compile successfully on any system that has a Standard C compiler and
+library. The C++ wrapper functions are a separate issue (see below).
GENERIC INSTRUCTIONS FOR THE C LIBRARY
@@ -34,27 +35,16 @@ your compiler gives to '\n'.
rem Use write, because notepad cannot handle UNIX files. Change values.
write config.h
-(2) Copy or rename the file pcre.in as pcre.h, and change the macro definitions
-for PCRE_MAJOR, PCRE_MINOR, and PCRE_DATE near its start to the values set in
-configure.in.
-
- rem Mark Tetrode's commands
- copy pcre.in pcre.h
- rem Read values from configure.in
- write configure.in
- rem Change values
- write pcre.h
-
-(3) Compile dftables.c as a stand-alone program, and then run it with
-the single argument "chartables.c". This generates a set of standard
+(2) Compile dftables.c as a stand-alone program, and then run it with
+the single argument "pcre_chartables.c". This generates a set of standard
character tables and writes them to that file.
rem Mark Tetrode's commands
rem Compile & run
cl -DSUPPORT_UTF8 -DSUPPORT_UCP dftables.c
- dftables.exe chartables.c
+ dftables.exe pcre_chartables.c
-(4) Compile the following source files:
+(3) Compile the following source files:
pcre_chartables.c
pcre_compile.c
@@ -67,12 +57,11 @@ character tables and writes them to that file.
pcre_info.c
pcre_maketables.c
pcre_ord2utf8.c
- pcre_printint.c
pcre_refcount.c
pcre_study.c
pcre_tables.c
pcre_try_flipped.c
- pcre_ucp_findchar.c
+ pcre_ucp_searchfuncs.c
pcre_valid_utf8.c
pcre_version.c
pcre_xclass.c
@@ -88,7 +77,7 @@ shared libraries, you may have to do this once for each type.
cl -DSUPPORT_UTF8 -DSUPPORT_UCP -DPOSIX_MALLOC_THRESHOLD=10 /c maketables.c get.c study.c pcre.c
lib /OUT:pcre.lib maketables.obj get.obj study.obj pcre.obj
-(5) Similarly, compile pcreposix.c and link it (on its own) as the pcreposix
+(4) Similarly, compile pcreposix.c and link it (on its own) as the pcreposix
library.
rem Mark Tetrode's commands, for a static library
@@ -96,14 +85,14 @@ library.
cl -DSUPPORT_UTF8 -DSUPPORT_UCP -DPOSIX_MALLOC_THRESHOLD=10 /c pcreposix.c
lib /OUT:pcreposix.lib pcreposix.obj
-(6) Compile the test program pcretest.c. This needs the functions in the
+(5) Compile the test program pcretest.c. This needs the functions in the
pcre and pcreposix libraries when linking.
rem Mark Tetrode's commands
rem compile & link
cl /F0x400000 pcretest.c pcre.lib pcreposix.lib
-(7) Run pcretest on the testinput files in the testdata directory, and check
+(6) Run pcretest on the testinput files in the testdata directory, and check
that the output matches the corresponding testoutput files. You must use the
-i option when checking testinput2. Note that the supplied files are in Unix
format, with just LF characters as line terminators. You may need to edit them
@@ -126,6 +115,9 @@ to change this if your system uses a different convention.
Note that there are now three more tests (7, 8, 9) that did not exist when Mark
wrote those comments. The test the new pcre_dfa_exec() function.
+(7) If you want to use the pcregrep command, compile and link pcregrep.c; it
+uses only the basic PCRE library.
+
THE C++ WRAPPER FUNCTIONS
diff --git a/ext/pcre/pcrelib/README b/ext/pcre/pcrelib/README
index f8d63bbd3..ab9ee516f 100644
--- a/ext/pcre/pcrelib/README
+++ b/ext/pcre/pcrelib/README
@@ -68,6 +68,9 @@ others are pointers to URLs containing relevant files.
Building PCRE on a Unix-like system
-----------------------------------
+If you are using HP's ANSI C++ compiler (aCC), please see the special note
+in the section entitled "Using HP's ANSI C++ compiler (aCC)" below.
+
To build PCRE on a Unix-like system, first run the "configure" command from the
PCRE distribution directory, with your current directory set to the directory
where you want the files to be created. This command is a standard GNU
@@ -91,9 +94,18 @@ into /source/pcre/pcre-xxx, but you want to build it in /build/pcre/pcre-xxx:
cd /build/pcre/pcre-xxx
/source/pcre/pcre-xxx/configure
+PCRE is written in C and is normally compiled as a C library. However, it is
+possible to build it as a C++ library, though the provided building apparatus
+does not have any features to support this.
+
There are some optional features that can be included or omitted from the PCRE
library. You can read more about them in the pcrebuild man page.
+. If you want to suppress the building of the C++ wrapper library, you can add
+ --disable-cpp to the "configure" command. Otherwise, when "configure" is run,
+ will try to find a C++ compiler and C++ header files, and if it succeeds, it
+ will try to build the C++ wrapper.
+
. If you want to make use of the support for UTF-8 character strings in PCRE,
you must add --enable-utf8 to the "configure" command. Without it, the code
for handling UTF-8 is not included in the library. (Even when included, it
@@ -106,11 +118,11 @@ library. You can read more about them in the pcrebuild man page.
property table); only the basic two-letter properties such as Lu are
supported.
-. You can build PCRE to recognized CR or NL as the newline character, instead
- of whatever your compiler uses for "\n", by adding --newline-is-cr or
- --newline-is-nl to the "configure" command, respectively. Only do this if you
+. You can build PCRE to recognize either CR or LF as the newline character,
+ instead of whatever your compiler uses for "\n", by adding --newline-is-cr or
+ --newline-is-lf to the "configure" command, respectively. Only do this if you
really understand what you are doing. On traditional Unix-like systems, the
- newline character is NL.
+ newline character is LF.
. When called via the POSIX interface, PCRE uses malloc() to get additional
storage for processing capturing parentheses if there are more than 10 of
@@ -257,6 +269,22 @@ when calling the "configure" command. If they are not specified, they default
to the values of CC and CFLAGS.
+Using HP's ANSI C++ compiler (aCC)
+----------------------------------
+
+Unless C++ support is disabled by specifiying the "--disable-cpp" option of the
+"configure" script, you *must* include the "-AA" option in the CXXFLAGS
+environment variable in order for the C++ components to compile correctly.
+
+Also, note that the aCC compiler on PA-RISC platforms may have a defect whereby
+needed libraries fail to get included when specifying the "-AA" compiler
+option. If you experience unresolved symbols when linking the C++ programs,
+use the workaround of specifying the following environment variable prior to
+running the "configure" script:
+
+ CXXLDFLAGS="-lstd_v2 -lCsup_v2"
+
+
Building on non-Unix systems
----------------------------
@@ -425,7 +453,8 @@ The distribution should contain the following files:
pcre_internal.h header for internal use
config.in template for config.h, which is built by configure
- pcrecpp.h.in "source" for the header file for the C++ wrapper
+ pcrecpp.h the header file for the C++ wrapper
+ pcrecpparg.h.in "source" for another C++ header file
pcrecpp.cc )
pcre_scanner.cc ) source for the C++ wrapper library
@@ -486,4 +515,4 @@ The distribution should contain the following files:
Philip Hazel
Email local part: ph10
Email domain: cam.ac.uk
-June 2005
+January 2006
diff --git a/ext/pcre/pcrelib/dftables.c b/ext/pcre/pcrelib/dftables.c
index 480753887..5ba207aeb 100644
--- a/ext/pcre/pcrelib/dftables.c
+++ b/ext/pcre/pcrelib/dftables.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
diff --git a/ext/pcre/pcrelib/doc/Tech.Notes b/ext/pcre/pcrelib/doc/Tech.Notes
index 322cc2de1..aa5398d0f 100644
--- a/ext/pcre/pcrelib/doc/Tech.Notes
+++ b/ext/pcre/pcrelib/doc/Tech.Notes
@@ -309,7 +309,10 @@ Recursion
Recursion either matches the current regex, or some subexpression. The opcode
OP_RECURSE is followed by an value which is the offset to the starting bracket
-from the start of the whole pattern.
+from the start of the whole pattern. From release 6.5, OP_RECURSE is
+automatically wrapped inside OP_ONCE brackets (because otherwise some patterns
+broke it). OP_RECURSE is also used for "subroutine" calls, even though they
+are not strictly a recursion.
Callout
@@ -336,4 +339,4 @@ at compile time, and so does not cause anything to be put into the compiled
data.
Philip Hazel
-March 2005
+January 2006
diff --git a/ext/pcre/pcrelib/doc/pcre.txt b/ext/pcre/pcrelib/doc/pcre.txt
index 801bde279..fe57de473 100644
--- a/ext/pcre/pcrelib/doc/pcre.txt
+++ b/ext/pcre/pcrelib/doc/pcre.txt
@@ -53,7 +53,9 @@ INTRODUCTION
data tables that are used by more than one of the exported external
functions, but which are not intended for use by external callers.
Their names all begin with "_pcre_", which hopefully will not provoke
- any name clashes.
+ any name clashes. In some environments, it is possible to control which
+ external symbols are exported when a shared library is built, and in
+ these cases the undocumented symbols are not exported.
USER DOCUMENTATION
@@ -135,9 +137,13 @@ UTF-8 AND UNICODE PROPERTY SUPPORT
UTF-8 support), the escape sequences \p{..}, \P{..}, and \X are sup-
ported. The available properties that can be tested are limited to the
general category properties such as Lu for an upper case letter or Nd
- for a decimal number. A full list is given in the pcrepattern documen-
- tation. The PCRE library is increased in size by about 90K when Unicode
- property support is included.
+ for a decimal number, the Unicode script names such as Arabic or Han,
+ and the derived properties Any and L&. A full list is given in the
+ pcrepattern documentation. Only the short names for properties are sup-
+ ported. For example, \p{L} matches a letter. Its Perl synonym, \p{Let-
+ ter}, is not supported. Furthermore, in Perl, many properties may
+ optionally be prefixed by "Is", for compatibility with Perl 5.6. PCRE
+ does not support this.
The following comments apply when PCRE is running in UTF-8 mode:
@@ -153,44 +159,41 @@ UTF-8 AND UNICODE PROPERTY SUPPORT
PCRE_NO_UTF8_CHECK is set, the results are undefined. Your program may
crash.
- 2. In a pattern, the escape sequence \x{...}, where the contents of the
- braces is a string of hexadecimal digits, is interpreted as a UTF-8
- character whose code number is the given hexadecimal number, for exam-
- ple: \x{1234}. If a non-hexadecimal digit appears between the braces,
- the item is not recognized. This escape sequence can be used either as
- a literal, or within a character class.
+ 2. An unbraced hexadecimal escape sequence (such as \xb3) matches a
+ two-byte UTF-8 character if the value is greater than 127.
- 3. The original hexadecimal escape sequence, \xhh, matches a two-byte
- UTF-8 character if the value is greater than 127.
-
- 4. Repeat quantifiers apply to complete UTF-8 characters, not to indi-
+ 3. Repeat quantifiers apply to complete UTF-8 characters, not to indi-
vidual bytes, for example: \x{100}{3}.
- 5. The dot metacharacter matches one UTF-8 character instead of a sin-
+ 4. The dot metacharacter matches one UTF-8 character instead of a sin-
gle byte.
- 6. The escape sequence \C can be used to match a single byte in UTF-8
- mode, but its use can lead to some strange effects. This facility is
+ 5. The escape sequence \C can be used to match a single byte in UTF-8
+ mode, but its use can lead to some strange effects. This facility is
not available in the alternative matching function, pcre_dfa_exec().
- 7. The character escapes \b, \B, \d, \D, \s, \S, \w, and \W correctly
- test characters of any code value, but the characters that PCRE recog-
- nizes as digits, spaces, or word characters remain the same set as
+ 6. The character escapes \b, \B, \d, \D, \s, \S, \w, and \W correctly
+ test characters of any code value, but the characters that PCRE recog-
+ nizes as digits, spaces, or word characters remain the same set as
before, all with values less than 256. This remains true even when PCRE
- includes Unicode property support, because to do otherwise would slow
- down PCRE in many common cases. If you really want to test for a wider
- sense of, say, "digit", you must use Unicode property tests such as
+ includes Unicode property support, because to do otherwise would slow
+ down PCRE in many common cases. If you really want to test for a wider
+ sense of, say, "digit", you must use Unicode property tests such as
\p{Nd}.
- 8. Similarly, characters that match the POSIX named character classes
+ 7. Similarly, characters that match the POSIX named character classes
are all low-valued characters.
- 9. Case-insensitive matching applies only to characters whose values
- are less than 128, unless PCRE is built with Unicode property support.
- Even when Unicode property support is available, PCRE still uses its
- own character tables when checking the case of low-valued characters,
- so as not to degrade performance. The Unicode property information is
- used only for characters with higher values.
+ 8. Case-insensitive matching applies only to characters whose values
+ are less than 128, unless PCRE is built with Unicode property support.
+ Even when Unicode property support is available, PCRE still uses its
+ own character tables when checking the case of low-valued characters,
+ so as not to degrade performance. The Unicode property information is
+ used only for characters with higher values. Even when Unicode property
+ support is available, PCRE supports case-insensitive matching only when
+ there is a one-to-one mapping between a letter's cases. There are a
+ small number of many-to-one mappings in Unicode; these are not sup-
+ ported by PCRE.
AUTHOR
@@ -199,12 +202,12 @@ AUTHOR
University Computing Service,
Cambridge CB2 3QG, England.
- Putting an actual email address here seems to have been a spam magnet,
+ Putting an actual email address here seems to have been a spam magnet,
so I've taken it away. If you want to email me, use my initial and sur-
name, separated by a dot, at the domain ucs.cam.ac.uk.
-Last updated: 07 March 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 24 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -234,6 +237,17 @@ PCRE BUILD-TIME OPTIONS
not described.
+C++ SUPPORT
+
+ By default, the configure script will search for a C++ compiler and C++
+ header files. If it finds them, it automatically builds the C++ wrapper
+ library for PCRE. You can disable this by adding
+
+ --disable-cpp
+
+ to the configure command.
+
+
UTF-8 SUPPORT
To build PCRE with support for UTF-8 character strings, add
@@ -381,7 +395,7 @@ USING EBCDIC CODE
to the configure command.
-Last updated: 28 February 2005
+Last updated: 15 August 2005
Copyright (c) 1997-2005 University of Cambridge.
------------------------------------------------------------------------------
@@ -795,6 +809,12 @@ CHECKING BUILD-TIME OPTIONS
internal matching function calls in a pcre_exec() execution. Further
details are given with pcre_exec() below.
+ PCRE_CONFIG_MATCH_LIMIT_RECURSION
+
+ The output is an integer that gives the default limit for the depth of
+ recursion when calling the internal matching function in a pcre_exec()
+ execution. Further details are given with pcre_exec() below.
+
PCRE_CONFIG_STACKRECURSE
The output is an integer that is set to one if internal recursion when
@@ -848,25 +868,26 @@ COMPILING A PATTERN
If errptr is NULL, pcre_compile() returns NULL immediately. Otherwise,
if compilation of a pattern fails, pcre_compile() returns NULL, and
sets the variable pointed to by errptr to point to a textual error mes-
- sage. The offset from the start of the pattern to the character where
- the error was discovered is placed in the variable pointed to by
- erroffset, which must not be NULL. If it is, an immediate error is
+ sage. This is a static string that is part of the library. You must not
+ try to free it. The offset from the start of the pattern to the charac-
+ ter where the error was discovered is placed in the variable pointed to
+ by erroffset, which must not be NULL. If it is, an immediate error is
given.
- If pcre_compile2() is used instead of pcre_compile(), and the error-
- codeptr argument is not NULL, a non-zero error code number is returned
- via this argument in the event of an error. This is in addition to the
+ If pcre_compile2() is used instead of pcre_compile(), and the error-
+ codeptr argument is not NULL, a non-zero error code number is returned
+ via this argument in the event of an error. This is in addition to the
textual error message. Error codes and messages are listed below.
- If the final argument, tableptr, is NULL, PCRE uses a default set of
- character tables that are built when PCRE is compiled, using the
- default C locale. Otherwise, tableptr must be an address that is the
- result of a call to pcre_maketables(). This value is stored with the
- compiled pattern, and used again by pcre_exec(), unless another table
+ If the final argument, tableptr, is NULL, PCRE uses a default set of
+ character tables that are built when PCRE is compiled, using the
+ default C locale. Otherwise, tableptr must be an address that is the
+ result of a call to pcre_maketables(). This value is stored with the
+ compiled pattern, and used again by pcre_exec(), unless another table
pointer is passed to it. For more discussion, see the section on locale
support below.
- This code fragment shows a typical straightforward call to pcre_com-
+ This code fragment shows a typical straightforward call to pcre_com-
pile():
pcre *re;
@@ -879,145 +900,145 @@ COMPILING A PATTERN
&erroffset, /* for error offset */
NULL); /* use default character tables */
- The following names for option bits are defined in the pcre.h header
+ The following names for option bits are defined in the pcre.h header
file:
PCRE_ANCHORED
If this bit is set, the pattern is forced to be "anchored", that is, it
- is constrained to match only at the first matching point in the string
- that is being searched (the "subject string"). This effect can also be
- achieved by appropriate constructs in the pattern itself, which is the
+ is constrained to match only at the first matching point in the string
+ that is being searched (the "subject string"). This effect can also be
+ achieved by appropriate constructs in the pattern itself, which is the
only way to do it in Perl.
PCRE_AUTO_CALLOUT
If this bit is set, pcre_compile() automatically inserts callout items,
- all with number 255, before each pattern item. For discussion of the
+ all with number 255, before each pattern item. For discussion of the
callout facility, see the pcrecallout documentation.
PCRE_CASELESS
- If this bit is set, letters in the pattern match both upper and lower
- case letters. It is equivalent to Perl's /i option, and it can be
- changed within a pattern by a (?i) option setting. In UTF-8 mode, PCRE
- always understands the concept of case for characters whose values are
- less than 128, so caseless matching is always possible. For characters
- with higher values, the concept of case is supported if PCRE is com-
- piled with Unicode property support, but not otherwise. If you want to
- use caseless matching for characters 128 and above, you must ensure
- that PCRE is compiled with Unicode property support as well as with
+ If this bit is set, letters in the pattern match both upper and lower
+ case letters. It is equivalent to Perl's /i option, and it can be
+ changed within a pattern by a (?i) option setting. In UTF-8 mode, PCRE
+ always understands the concept of case for characters whose values are
+ less than 128, so caseless matching is always possible. For characters
+ with higher values, the concept of case is supported if PCRE is com-
+ piled with Unicode property support, but not otherwise. If you want to
+ use caseless matching for characters 128 and above, you must ensure
+ that PCRE is compiled with Unicode property support as well as with
UTF-8 support.
PCRE_DOLLAR_ENDONLY
- If this bit is set, a dollar metacharacter in the pattern matches only
- at the end of the subject string. Without this option, a dollar also
- matches immediately before the final character if it is a newline (but
- not before any other newlines). The PCRE_DOLLAR_ENDONLY option is
+ If this bit is set, a dollar metacharacter in the pattern matches only
+ at the end of the subject string. Without this option, a dollar also
+ matches immediately before the final character if it is a newline (but
+ not before any other newlines). The PCRE_DOLLAR_ENDONLY option is
ignored if PCRE_MULTILINE is set. There is no equivalent to this option
in Perl, and no way to set it within a pattern.
PCRE_DOTALL
If this bit is set, a dot metacharater in the pattern matches all char-
- acters, including newlines. Without it, newlines are excluded. This
- option is equivalent to Perl's /s option, and it can be changed within
- a pattern by a (?s) option setting. A negative class such as [^a]
- always matches a newline character, independent of the setting of this
+ acters, including newlines. Without it, newlines are excluded. This
+ option is equivalent to Perl's /s option, and it can be changed within
+ a pattern by a (?s) option setting. A negative class such as [^a]
+ always matches a newline character, independent of the setting of this
option.
PCRE_EXTENDED
- If this bit is set, whitespace data characters in the pattern are
+ If this bit is set, whitespace data characters in the pattern are
totally ignored except when escaped or inside a character class. White-
space does not include the VT character (code 11). In addition, charac-
ters between an unescaped # outside a character class and the next new-
- line character, inclusive, are also ignored. This is equivalent to
- Perl's /x option, and it can be changed within a pattern by a (?x)
+ line character, inclusive, are also ignored. This is equivalent to
+ Perl's /x option, and it can be changed within a pattern by a (?x)
option setting.
- This option makes it possible to include comments inside complicated
- patterns. Note, however, that this applies only to data characters.
- Whitespace characters may never appear within special character
- sequences in a pattern, for example within the sequence (?( which
+ This option makes it possible to include comments inside complicated
+ patterns. Note, however, that this applies only to data characters.
+ Whitespace characters may never appear within special character
+ sequences in a pattern, for example within the sequence (?( which
introduces a conditional subpattern.
PCRE_EXTRA
- This option was invented in order to turn on additional functionality
- of PCRE that is incompatible with Perl, but it is currently of very
- little use. When set, any backslash in a pattern that is followed by a
- letter that has no special meaning causes an error, thus reserving
- these combinations for future expansion. By default, as in Perl, a
- backslash followed by a letter with no special meaning is treated as a
- literal. There are at present no other features controlled by this
+ This option was invented in order to turn on additional functionality
+ of PCRE that is incompatible with Perl, but it is currently of very
+ little use. When set, any backslash in a pattern that is followed by a
+ letter that has no special meaning causes an error, thus reserving
+ these combinations for future expansion. By default, as in Perl, a
+ backslash followed by a letter with no special meaning is treated as a
+ literal. There are at present no other features controlled by this
option. It can also be set by a (?X) option setting within a pattern.
PCRE_FIRSTLINE
- If this option is set, an unanchored pattern is required to match
- before or at the first newline character in the subject string, though
+ If this option is set, an unanchored pattern is required to match
+ before or at the first newline character in the subject string, though
the matched text may continue over the newline.
PCRE_MULTILINE
- By default, PCRE treats the subject string as consisting of a single
- line of characters (even if it actually contains newlines). The "start
- of line" metacharacter (^) matches only at the start of the string,
- while the "end of line" metacharacter ($) matches only at the end of
+ By default, PCRE treats the subject string as consisting of a single
+ line of characters (even if it actually contains newlines). The "start
+ of line" metacharacter (^) matches only at the start of the string,
+ while the "end of line" metacharacter ($) matches only at the end of
the string, or before a terminating newline (unless PCRE_DOLLAR_ENDONLY
is set). This is the same as Perl.
- When PCRE_MULTILINE it is set, the "start of line" and "end of line"
- constructs match immediately following or immediately before any new-
- line in the subject string, respectively, as well as at the very start
- and end. This is equivalent to Perl's /m option, and it can be changed
+ When PCRE_MULTILINE it is set, the "start of line" and "end of line"
+ constructs match immediately following or immediately before any new-
+ line in the subject string, respectively, as well as at the very start
+ and end. This is equivalent to Perl's /m option, and it can be changed
within a pattern by a (?m) option setting. If there are no "\n" charac-
- ters in a subject string, or no occurrences of ^ or $ in a pattern,
+ ters in a subject string, or no occurrences of ^ or $ in a pattern,
setting PCRE_MULTILINE has no effect.
PCRE_NO_AUTO_CAPTURE
If this option is set, it disables the use of numbered capturing paren-
- theses in the pattern. Any opening parenthesis that is not followed by
- ? behaves as if it were followed by ?: but named parentheses can still
- be used for capturing (and they acquire numbers in the usual way).
+ theses in the pattern. Any opening parenthesis that is not followed by
+ ? behaves as if it were followed by ?: but named parentheses can still
+ be used for capturing (and they acquire numbers in the usual way).
There is no equivalent of this option in Perl.
PCRE_UNGREEDY
- This option inverts the "greediness" of the quantifiers so that they
- are not greedy by default, but become greedy if followed by "?". It is
- not compatible with Perl. It can also be set by a (?U) option setting
+ This option inverts the "greediness" of the quantifiers so that they
+ are not greedy by default, but become greedy if followed by "?". It is
+ not compatible with Perl. It can also be set by a (?U) option setting
within the pattern.
PCRE_UTF8
- This option causes PCRE to regard both the pattern and the subject as
- strings of UTF-8 characters instead of single-byte character strings.
- However, it is available only when PCRE is built to include UTF-8 sup-
- port. If not, the use of this option provokes an error. Details of how
- this option changes the behaviour of PCRE are given in the section on
+ This option causes PCRE to regard both the pattern and the subject as
+ strings of UTF-8 characters instead of single-byte character strings.
+ However, it is available only when PCRE is built to include UTF-8 sup-
+ port. If not, the use of this option provokes an error. Details of how
+ this option changes the behaviour of PCRE are given in the section on
UTF-8 support in the main pcre page.
PCRE_NO_UTF8_CHECK
When PCRE_UTF8 is set, the validity of the pattern as a UTF-8 string is
- automatically checked. If an invalid UTF-8 sequence of bytes is found,
- pcre_compile() returns an error. If you already know that your pattern
- is valid, and you want to skip this check for performance reasons, you
- can set the PCRE_NO_UTF8_CHECK option. When it is set, the effect of
+ automatically checked. If an invalid UTF-8 sequence of bytes is found,
+ pcre_compile() returns an error. If you already know that your pattern
+ is valid, and you want to skip this check for performance reasons, you
+ can set the PCRE_NO_UTF8_CHECK option. When it is set, the effect of
passing an invalid UTF-8 string as a pattern is undefined. It may cause
- your program to crash. Note that this option can also be passed to
- pcre_exec() and pcre_dfa_exec(), to suppress the UTF-8 validity check-
+ your program to crash. Note that this option can also be passed to
+ pcre_exec() and pcre_dfa_exec(), to suppress the UTF-8 validity check-
ing of subject strings.
COMPILATION ERROR CODES
- The following table lists the error codes than may be returned by
- pcre_compile2(), along with the error messages that may be returned by
+ The following table lists the error codes than may be returned by
+ pcre_compile2(), along with the error messages that may be returned by
both compiling functions.
0 no error
@@ -1075,32 +1096,33 @@ STUDYING A PATTERN
pcre_extra *pcre_study(const pcre *code, int options
const char **errptr);
- If a compiled pattern is going to be used several times, it is worth
+ If a compiled pattern is going to be used several times, it is worth
spending more time analyzing it in order to speed up the time taken for
- matching. The function pcre_study() takes a pointer to a compiled pat-
+ matching. The function pcre_study() takes a pointer to a compiled pat-
tern as its first argument. If studying the pattern produces additional
- information that will help speed up matching, pcre_study() returns a
- pointer to a pcre_extra block, in which the study_data field points to
+ information that will help speed up matching, pcre_study() returns a
+ pointer to a pcre_extra block, in which the study_data field points to
the results of the study.
The returned value from pcre_study() can be passed directly to
- pcre_exec(). However, a pcre_extra block also contains other fields
- that can be set by the caller before the block is passed; these are
+ pcre_exec(). However, a pcre_extra block also contains other fields
+ that can be set by the caller before the block is passed; these are
described below in the section on matching a pattern.
- If studying the pattern does not produce any additional information
+ If studying the pattern does not produce any additional information
pcre_study() returns NULL. In that circumstance, if the calling program
- wants to pass any of the other fields to pcre_exec(), it must set up
+ wants to pass any of the other fields to pcre_exec(), it must set up
its own pcre_extra block.
- The second argument of pcre_study() contains option bits. At present,
+ The second argument of pcre_study() contains option bits. At present,
no options are defined, and this argument should always be zero.
- The third argument for pcre_study() is a pointer for an error message.
- If studying succeeds (even if no data is returned), the variable it
- points to is set to NULL. Otherwise it points to a textual error mes-
- sage. You should therefore test the error pointer for NULL after call-
- ing pcre_study(), to be sure that it has run successfully.
+ The third argument for pcre_study() is a pointer for an error message.
+ If studying succeeds (even if no data is returned), the variable it
+ points to is set to NULL. Otherwise it is set to point to a textual
+ error message. This is a static string that is part of the library. You
+ must not try to free it. You should test the error pointer for NULL
+ after calling pcre_study(), to be sure that it has run successfully.
This is a typical call to pcre_study():
@@ -1122,40 +1144,41 @@ LOCALE SUPPORT
by character value. When running in UTF-8 mode, this applies only to
characters with codes less than 128. Higher-valued codes never match
escapes such as \w or \d, but can be tested with \p if PCRE is built
- with Unicode character property support.
-
- An internal set of tables is created in the default C locale when PCRE
- is built. This is used when the final argument of pcre_compile() is
- NULL, and is sufficient for many applications. An alternative set of
- tables can, however, be supplied. These may be created in a different
- locale from the default. As more and more applications change to using
+ with Unicode character property support. The use of locales with Uni-
+ code is discouraged.
+
+ An internal set of tables is created in the default C locale when PCRE
+ is built. This is used when the final argument of pcre_compile() is
+ NULL, and is sufficient for many applications. An alternative set of
+ tables can, however, be supplied. These may be created in a different
+ locale from the default. As more and more applications change to using
Unicode, the need for this locale support is expected to die away.
- External tables are built by calling the pcre_maketables() function,
- which has no arguments, in the relevant locale. The result can then be
- passed to pcre_compile() or pcre_exec() as often as necessary. For
- example, to build and use tables that are appropriate for the French
- locale (where accented characters with values greater than 128 are
+ External tables are built by calling the pcre_maketables() function,
+ which has no arguments, in the relevant locale. The result can then be
+ passed to pcre_compile() or pcre_exec() as often as necessary. For
+ example, to build and use tables that are appropriate for the French
+ locale (where accented characters with values greater than 128 are
treated as letters), the following code could be used:
setlocale(LC_CTYPE, "fr_FR");
tables = pcre_maketables();
re = pcre_compile(..., tables);
- When pcre_maketables() runs, the tables are built in memory that is
- obtained via pcre_malloc. It is the caller's responsibility to ensure
- that the memory containing the tables remains available for as long as
+ When pcre_maketables() runs, the tables are built in memory that is
+ obtained via pcre_malloc. It is the caller's responsibility to ensure
+ that the memory containing the tables remains available for as long as
it is needed.
The pointer that is passed to pcre_compile() is saved with the compiled
- pattern, and the same tables are used via this pointer by pcre_study()
+ pattern, and the same tables are used via this pointer by pcre_study()
and normally also by pcre_exec(). Thus, by default, for any single pat-
tern, compilation, studying and matching all happen in the same locale,
but different patterns can be compiled in different locales.
- It is possible to pass a table pointer or NULL (indicating the use of
- the internal tables) to pcre_exec(). Although not intended for this
- purpose, this facility could be used to match a pattern in a different
+ It is possible to pass a table pointer or NULL (indicating the use of
+ the internal tables) to pcre_exec(). Although not intended for this
+ purpose, this facility could be used to match a pattern in a different
locale from the one in which it was compiled. Passing table pointers at
run time is discussed below in the section on matching a pattern.
@@ -1165,15 +1188,15 @@ INFORMATION ABOUT A PATTERN
int pcre_fullinfo(const pcre *code, const pcre_extra *extra,
int what, void *where);
- The pcre_fullinfo() function returns information about a compiled pat-
+ The pcre_fullinfo() function returns information about a compiled pat-
tern. It replaces the obsolete pcre_info() function, which is neverthe-
less retained for backwards compability (and is documented below).
- The first argument for pcre_fullinfo() is a pointer to the compiled
- pattern. The second argument is the result of pcre_study(), or NULL if
- the pattern was not studied. The third argument specifies which piece
- of information is required, and the fourth argument is a pointer to a
- variable to receive the data. The yield of the function is zero for
+ The first argument for pcre_fullinfo() is a pointer to the compiled
+ pattern. The second argument is the result of pcre_study(), or NULL if
+ the pattern was not studied. The third argument specifies which piece
+ of information is required, and the fourth argument is a pointer to a
+ variable to receive the data. The yield of the function is zero for
success, or one of the following negative numbers:
PCRE_ERROR_NULL the argument code was NULL
@@ -1181,9 +1204,9 @@ INFORMATION ABOUT A PATTERN
PCRE_ERROR_BADMAGIC the "magic number" was not found
PCRE_ERROR_BADOPTION the value of what was invalid
- The "magic number" is placed at the start of each compiled pattern as
- an simple check against passing an arbitrary memory pointer. Here is a
- typical call of pcre_fullinfo(), to obtain the length of the compiled
+ The "magic number" is placed at the start of each compiled pattern as
+ an simple check against passing an arbitrary memory pointer. Here is a
+ typical call of pcre_fullinfo(), to obtain the length of the compiled
pattern:
int rc;
@@ -1194,64 +1217,64 @@ INFORMATION ABOUT A PATTERN
PCRE_INFO_SIZE, /* what is required */
&length); /* where to put the data */
- The possible values for the third argument are defined in pcre.h, and
+ The possible values for the third argument are defined in pcre.h, and
are as follows:
PCRE_INFO_BACKREFMAX
- Return the number of the highest back reference in the pattern. The
- fourth argument should point to an int variable. Zero is returned if
+ Return the number of the highest back reference in the pattern. The
+ fourth argument should point to an int variable. Zero is returned if
there are no back references.
PCRE_INFO_CAPTURECOUNT
- Return the number of capturing subpatterns in the pattern. The fourth
+ Return the number of capturing subpatterns in the pattern. The fourth
argument should point to an int variable.
PCRE_INFO_DEFAULT_TABLES
- Return a pointer to the internal default character tables within PCRE.
- The fourth argument should point to an unsigned char * variable. This
+ Return a pointer to the internal default character tables within PCRE.
+ The fourth argument should point to an unsigned char * variable. This
information call is provided for internal use by the pcre_study() func-
- tion. External callers can cause PCRE to use its internal tables by
+ tion. External callers can cause PCRE to use its internal tables by
passing a NULL table pointer.
PCRE_INFO_FIRSTBYTE
- Return information about the first byte of any matched string, for a
- non-anchored pattern. (This option used to be called
- PCRE_INFO_FIRSTCHAR; the old name is still recognized for backwards
+ Return information about the first byte of any matched string, for a
+ non-anchored pattern. (This option used to be called
+ PCRE_INFO_FIRSTCHAR; the old name is still recognized for backwards
compatibility.)
- If there is a fixed first byte, for example, from a pattern such as
- (cat|cow|coyote), it is returned in the integer pointed to by where.
+ If there is a fixed first byte, for example, from a pattern such as
+ (cat|cow|coyote), it is returned in the integer pointed to by where.
Otherwise, if either
- (a) the pattern was compiled with the PCRE_MULTILINE option, and every
+ (a) the pattern was compiled with the PCRE_MULTILINE option, and every
branch starts with "^", or
(b) every branch of the pattern starts with ".*" and PCRE_DOTALL is not
set (if it were set, the pattern would be anchored),
- -1 is returned, indicating that the pattern matches only at the start
- of a subject string or after any newline within the string. Otherwise
+ -1 is returned, indicating that the pattern matches only at the start
+ of a subject string or after any newline within the string. Otherwise
-2 is returned. For anchored patterns, -2 is returned.
PCRE_INFO_FIRSTTABLE
- If the pattern was studied, and this resulted in the construction of a
+ If the pattern was studied, and this resulted in the construction of a
256-bit table indicating a fixed set of bytes for the first byte in any
- matching string, a pointer to the table is returned. Otherwise NULL is
- returned. The fourth argument should point to an unsigned char * vari-
+ matching string, a pointer to the table is returned. Otherwise NULL is
+ returned. The fourth argument should point to an unsigned char * vari-
able.
PCRE_INFO_LASTLITERAL
- Return the value of the rightmost literal byte that must exist in any
- matched string, other than at its start, if such a byte has been
+ Return the value of the rightmost literal byte that must exist in any
+ matched string, other than at its start, if such a byte has been
recorded. The fourth argument should point to an int variable. If there
- is no such byte, -1 is returned. For anchored patterns, a last literal
- byte is recorded only if it follows something of variable length. For
+ is no such byte, -1 is returned. For anchored patterns, a last literal
+ byte is recorded only if it follows something of variable length. For
example, for the pattern /^a\d+z\d+/ the returned value is "z", but for
/^a\dz\d/ the returned value is -1.
@@ -1259,32 +1282,32 @@ INFORMATION ABOUT A PATTERN
PCRE_INFO_NAMEENTRYSIZE
PCRE_INFO_NAMETABLE
- PCRE supports the use of named as well as numbered capturing parenthe-
- ses. The names are just an additional way of identifying the parenthe-
+ PCRE supports the use of named as well as numbered capturing parenthe-
+ ses. The names are just an additional way of identifying the parenthe-
ses, which still acquire numbers. A convenience function called
- pcre_get_named_substring() is provided for extracting an individual
- captured substring by name. It is also possible to extract the data
- directly, by first converting the name to a number in order to access
- the correct pointers in the output vector (described with pcre_exec()
- below). To do the conversion, you need to use the name-to-number map,
+ pcre_get_named_substring() is provided for extracting an individual
+ captured substring by name. It is also possible to extract the data
+ directly, by first converting the name to a number in order to access
+ the correct pointers in the output vector (described with pcre_exec()
+ below). To do the conversion, you need to use the name-to-number map,
which is described by these three values.
The map consists of a number of fixed-size entries. PCRE_INFO_NAMECOUNT
gives the number of entries, and PCRE_INFO_NAMEENTRYSIZE gives the size
- of each entry; both of these return an int value. The entry size
- depends on the length of the longest name. PCRE_INFO_NAMETABLE returns
- a pointer to the first entry of the table (a pointer to char). The
+ of each entry; both of these return an int value. The entry size
+ depends on the length of the longest name. PCRE_INFO_NAMETABLE returns
+ a pointer to the first entry of the table (a pointer to char). The
first two bytes of each entry are the number of the capturing parenthe-
- sis, most significant byte first. The rest of the entry is the corre-
- sponding name, zero terminated. The names are in alphabetical order.
- For example, consider the following pattern (assume PCRE_EXTENDED is
+ sis, most significant byte first. The rest of the entry is the corre-
+ sponding name, zero terminated. The names are in alphabetical order.
+ For example, consider the following pattern (assume PCRE_EXTENDED is
set, so white space - including newlines - is ignored):
(?P<date> (?P<year>(\d\d)?\d\d) -
(?P<month>\d\d) - (?P<day>\d\d) )
- There are four named subpatterns, so the table has four entries, and
- each entry in the table is eight bytes long. The table is as follows,
+ There are four named subpatterns, so the table has four entries, and
+ each entry in the table is eight bytes long. The table is as follows,
with non-printing bytes shows in hexadecimal, and undefined bytes shown
as ??:
@@ -1293,18 +1316,18 @@ INFORMATION ABOUT A PATTERN
00 04 m o n t h 00
00 02 y e a r 00 ??
- When writing code to extract data from named subpatterns using the
+ When writing code to extract data from named subpatterns using the
name-to-number map, remember that the length of each entry is likely to
be different for each compiled pattern.
PCRE_INFO_OPTIONS
- Return a copy of the options with which the pattern was compiled. The
- fourth argument should point to an unsigned long int variable. These
+ Return a copy of the options with which the pattern was compiled. The
+ fourth argument should point to an unsigned long int variable. These
option bits are those specified in the call to pcre_compile(), modified
by any top-level option settings within the pattern itself.
- A pattern is automatically anchored by PCRE if all of its top-level
+ A pattern is automatically anchored by PCRE if all of its top-level
alternatives begin with one of the following:
^ unless PCRE_MULTILINE is set
@@ -1318,7 +1341,7 @@ INFORMATION ABOUT A PATTERN
PCRE_INFO_SIZE
- Return the size of the compiled pattern, that is, the value that was
+ Return the size of the compiled pattern, that is, the value that was
passed as the argument to pcre_malloc() when PCRE was getting memory in
which to place the compiled data. The fourth argument should point to a
size_t variable.
@@ -1326,9 +1349,9 @@ INFORMATION ABOUT A PATTERN
PCRE_INFO_STUDYSIZE
Return the size of the data block pointed to by the study_data field in
- a pcre_extra block. That is, it is the value that was passed to
+ a pcre_extra block. That is, it is the value that was passed to
pcre_malloc() when PCRE was getting memory into which to place the data
- created by pcre_study(). The fourth argument should point to a size_t
+ created by pcre_study(). The fourth argument should point to a size_t
variable.
@@ -1336,21 +1359,21 @@ OBSOLETE INFO FUNCTION
int pcre_info(const pcre *code, int *optptr, int *firstcharptr);
- The pcre_info() function is now obsolete because its interface is too
- restrictive to return all the available data about a compiled pattern.
- New programs should use pcre_fullinfo() instead. The yield of
- pcre_info() is the number of capturing subpatterns, or one of the fol-
+ The pcre_info() function is now obsolete because its interface is too
+ restrictive to return all the available data about a compiled pattern.
+ New programs should use pcre_fullinfo() instead. The yield of
+ pcre_info() is the number of capturing subpatterns, or one of the fol-
lowing negative numbers:
PCRE_ERROR_NULL the argument code was NULL
PCRE_ERROR_BADMAGIC the "magic number" was not found
- If the optptr argument is not NULL, a copy of the options with which
- the pattern was compiled is placed in the integer it points to (see
+ If the optptr argument is not NULL, a copy of the options with which
+ the pattern was compiled is placed in the integer it points to (see
PCRE_INFO_OPTIONS above).
- If the pattern is not anchored and the firstcharptr argument is not
- NULL, it is used to pass back information about the first character of
+ If the pattern is not anchored and the firstcharptr argument is not
+ NULL, it is used to pass back information about the first character of
any matched string (see PCRE_INFO_FIRSTBYTE above).
@@ -1358,21 +1381,21 @@ REFERENCE COUNTS
int pcre_refcount(pcre *code, int adjust);
- The pcre_refcount() function is used to maintain a reference count in
+ The pcre_refcount() function is used to maintain a reference count in
the data block that contains a compiled pattern. It is provided for the
- benefit of applications that operate in an object-oriented manner,
+ benefit of applications that operate in an object-oriented manner,
where different parts of the application may be using the same compiled
pattern, but you want to free the block when they are all done.
When a pattern is compiled, the reference count field is initialized to
- zero. It is changed only by calling this function, whose action is to
- add the adjust value (which may be positive or negative) to it. The
+ zero. It is changed only by calling this function, whose action is to
+ add the adjust value (which may be positive or negative) to it. The
yield of the function is the new value. However, the value of the count
- is constrained to lie between 0 and 65535, inclusive. If the new value
+ is constrained to lie between 0 and 65535, inclusive. If the new value
is outside these limits, it is forced to the appropriate limit value.
- Except when it is zero, the reference count is not correctly preserved
- if a pattern is compiled on one host and then transferred to a host
+ Except when it is zero, the reference count is not correctly preserved
+ if a pattern is compiled on one host and then transferred to a host
whose byte-order is different. (This seems a highly unlikely scenario.)
@@ -1382,18 +1405,18 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION
const char *subject, int length, int startoffset,
int options, int *ovector, int ovecsize);
- The function pcre_exec() is called to match a subject string against a
- compiled pattern, which is passed in the code argument. If the pattern
+ The function pcre_exec() is called to match a subject string against a
+ compiled pattern, which is passed in the code argument. If the pattern
has been studied, the result of the study should be passed in the extra
- argument. This function is the main matching facility of the library,
+ argument. This function is the main matching facility of the library,
and it operates in a Perl-like manner. For specialist use there is also
- an alternative matching function, which is described below in the sec-
+ an alternative matching function, which is described below in the sec-
tion about the pcre_dfa_exec() function.
- In most applications, the pattern will have been compiled (and option-
- ally studied) in the same process that calls pcre_exec(). However, it
+ In most applications, the pattern will have been compiled (and option-
+ ally studied) in the same process that calls pcre_exec(). However, it
is possible to save compiled patterns and study data, and then use them
- later in different processes, possibly even on different hosts. For a
+ later in different processes, possibly even on different hosts. For a
discussion about this, see the pcreprecompile documentation.
Here is an example of a simple call to pcre_exec():
@@ -1412,249 +1435,268 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION
Extra data for pcre_exec()
- If the extra argument is not NULL, it must point to a pcre_extra data
- block. The pcre_study() function returns such a block (when it doesn't
- return NULL), but you can also create one for yourself, and pass addi-
- tional information in it. The fields in a pcre_extra block are as fol-
- lows:
+ If the extra argument is not NULL, it must point to a pcre_extra data
+ block. The pcre_study() function returns such a block (when it doesn't
+ return NULL), but you can also create one for yourself, and pass addi-
+ tional information in it. The pcre_extra block contains the following
+ fields (not necessarily in this order):
unsigned long int flags;
void *study_data;
unsigned long int match_limit;
+ unsigned long int match_limit_recursion;
void *callout_data;
const unsigned char *tables;
- The flags field is a bitmap that specifies which of the other fields
+ The flags field is a bitmap that specifies which of the other fields
are set. The flag bits are:
PCRE_EXTRA_STUDY_DATA
PCRE_EXTRA_MATCH_LIMIT
+ PCRE_EXTRA_MATCH_LIMIT_RECURSION
PCRE_EXTRA_CALLOUT_DATA
PCRE_EXTRA_TABLES
- Other flag bits should be set to zero. The study_data field is set in
- the pcre_extra block that is returned by pcre_study(), together with
+ Other flag bits should be set to zero. The study_data field is set in
+ the pcre_extra block that is returned by pcre_study(), together with
the appropriate flag bit. You should not set this yourself, but you may
- add to the block by setting the other fields and their corresponding
+ add to the block by setting the other fields and their corresponding
flag bits.
The match_limit field provides a means of preventing PCRE from using up
- a vast amount of resources when running patterns that are not going to
- match, but which have a very large number of possibilities in their
- search trees. The classic example is the use of nested unlimited
+ a vast amount of resources when running patterns that are not going to
+ match, but which have a very large number of possibilities in their
+ search trees. The classic example is the use of nested unlimited
repeats.
- Internally, PCRE uses a function called match() which it calls repeat-
- edly (sometimes recursively). The limit is imposed on the number of
- times this function is called during a match, which has the effect of
- limiting the amount of recursion and backtracking that can take place.
- For patterns that are not anchored, the count starts from zero for each
- position in the subject string.
-
- The default limit for the library can be set when PCRE is built; the
- default default is 10 million, which handles all but the most extreme
- cases. You can reduce the default by suppling pcre_exec() with a
- pcre_extra block in which match_limit is set to a smaller value, and
- PCRE_EXTRA_MATCH_LIMIT is set in the flags field. If the limit is
+ Internally, PCRE uses a function called match() which it calls repeat-
+ edly (sometimes recursively). The limit set by match_limit is imposed
+ on the number of times this function is called during a match, which
+ has the effect of limiting the amount of backtracking that can take
+ place. For patterns that are not anchored, the count restarts from zero
+ for each position in the subject string.
+
+ The default value for the limit can be set when PCRE is built; the
+ default default is 10 million, which handles all but the most extreme
+ cases. You can override the default by suppling pcre_exec() with a
+ pcre_extra block in which match_limit is set, and
+ PCRE_EXTRA_MATCH_LIMIT is set in the flags field. If the limit is
exceeded, pcre_exec() returns PCRE_ERROR_MATCHLIMIT.
- The pcre_callout field is used in conjunction with the "callout" fea-
+ The match_limit_recursion field is similar to match_limit, but instead
+ of limiting the total number of times that match() is called, it limits
+ the depth of recursion. The recursion depth is a smaller number than
+ the total number of calls, because not all calls to match() are recur-
+ sive. This limit is of use only if it is set smaller than match_limit.
+
+ Limiting the recursion depth limits the amount of stack that can be
+ used, or, when PCRE has been compiled to use memory on the heap instead
+ of the stack, the amount of heap memory that can be used.
+
+ The default value for match_limit_recursion can be set when PCRE is
+ built; the default default is the same value as the default for
+ match_limit. You can override the default by suppling pcre_exec() with
+ a pcre_extra block in which match_limit_recursion is set, and
+ PCRE_EXTRA_MATCH_LIMIT_RECURSION is set in the flags field. If the
+ limit is exceeded, pcre_exec() returns PCRE_ERROR_RECURSIONLIMIT.
+
+ The pcre_callout field is used in conjunction with the "callout" fea-
ture, which is described in the pcrecallout documentation.
- The tables field is used to pass a character tables pointer to
- pcre_exec(); this overrides the value that is stored with the compiled
- pattern. A non-NULL value is stored with the compiled pattern only if
- custom tables were supplied to pcre_compile() via its tableptr argu-
+ The tables field is used to pass a character tables pointer to
+ pcre_exec(); this overrides the value that is stored with the compiled
+ pattern. A non-NULL value is stored with the compiled pattern only if
+ custom tables were supplied to pcre_compile() via its tableptr argu-
ment. If NULL is passed to pcre_exec() using this mechanism, it forces
- PCRE's internal tables to be used. This facility is helpful when re-
- using patterns that have been saved after compiling with an external
- set of tables, because the external tables might be at a different
- address when pcre_exec() is called. See the pcreprecompile documenta-
+ PCRE's internal tables to be used. This facility is helpful when re-
+ using patterns that have been saved after compiling with an external
+ set of tables, because the external tables might be at a different
+ address when pcre_exec() is called. See the pcreprecompile documenta-
tion for a discussion of saving compiled patterns for later use.
Option bits for pcre_exec()
- The unused bits of the options argument for pcre_exec() must be zero.
- The only bits that may be set are PCRE_ANCHORED, PCRE_NOTBOL,
+ The unused bits of the options argument for pcre_exec() must be zero.
+ The only bits that may be set are PCRE_ANCHORED, PCRE_NOTBOL,
PCRE_NOTEOL, PCRE_NOTEMPTY, PCRE_NO_UTF8_CHECK and PCRE_PARTIAL.
PCRE_ANCHORED
- The PCRE_ANCHORED option limits pcre_exec() to matching at the first
- matching position. If a pattern was compiled with PCRE_ANCHORED, or
- turned out to be anchored by virtue of its contents, it cannot be made
+ The PCRE_ANCHORED option limits pcre_exec() to matching at the first
+ matching position. If a pattern was compiled with PCRE_ANCHORED, or
+ turned out to be anchored by virtue of its contents, it cannot be made
unachored at matching time.
PCRE_NOTBOL
This option specifies that first character of the subject string is not
- the beginning of a line, so the circumflex metacharacter should not
- match before it. Setting this without PCRE_MULTILINE (at compile time)
- causes circumflex never to match. This option affects only the behav-
+ the beginning of a line, so the circumflex metacharacter should not
+ match before it. Setting this without PCRE_MULTILINE (at compile time)
+ causes circumflex never to match. This option affects only the behav-
iour of the circumflex metacharacter. It does not affect \A.
PCRE_NOTEOL
This option specifies that the end of the subject string is not the end
- of a line, so the dollar metacharacter should not match it nor (except
- in multiline mode) a newline immediately before it. Setting this with-
+ of a line, so the dollar metacharacter should not match it nor (except
+ in multiline mode) a newline immediately before it. Setting this with-
out PCRE_MULTILINE (at compile time) causes dollar never to match. This
- option affects only the behaviour of the dollar metacharacter. It does
+ option affects only the behaviour of the dollar metacharacter. It does
not affect \Z or \z.
PCRE_NOTEMPTY
An empty string is not considered to be a valid match if this option is
- set. If there are alternatives in the pattern, they are tried. If all
- the alternatives match the empty string, the entire match fails. For
+ set. If there are alternatives in the pattern, they are tried. If all
+ the alternatives match the empty string, the entire match fails. For
example, if the pattern
a?b?
- is applied to a string not beginning with "a" or "b", it matches the
- empty string at the start of the subject. With PCRE_NOTEMPTY set, this
+ is applied to a string not beginning with "a" or "b", it matches the
+ empty string at the start of the subject. With PCRE_NOTEMPTY set, this
match is not valid, so PCRE searches further into the string for occur-
rences of "a" or "b".
Perl has no direct equivalent of PCRE_NOTEMPTY, but it does make a spe-
- cial case of a pattern match of the empty string within its split()
- function, and when using the /g modifier. It is possible to emulate
+ cial case of a pattern match of the empty string within its split()
+ function, and when using the /g modifier. It is possible to emulate
Perl's behaviour after matching a null string by first trying the match
again at the same offset with PCRE_NOTEMPTY and PCRE_ANCHORED, and then
- if that fails by advancing the starting offset (see below) and trying
+ if that fails by advancing the starting offset (see below) and trying
an ordinary match again. There is some code that demonstrates how to do
this in the pcredemo.c sample program.
PCRE_NO_UTF8_CHECK
When PCRE_UTF8 is set at compile time, the validity of the subject as a
- UTF-8 string is automatically checked when pcre_exec() is subsequently
- called. The value of startoffset is also checked to ensure that it
- points to the start of a UTF-8 character. If an invalid UTF-8 sequence
+ UTF-8 string is automatically checked when pcre_exec() is subsequently
+ called. The value of startoffset is also checked to ensure that it
+ points to the start of a UTF-8 character. If an invalid UTF-8 sequence
of bytes is found, pcre_exec() returns the error PCRE_ERROR_BADUTF8. If
- startoffset contains an invalid value, PCRE_ERROR_BADUTF8_OFFSET is
+ startoffset contains an invalid value, PCRE_ERROR_BADUTF8_OFFSET is
returned.
- If you already know that your subject is valid, and you want to skip
- these checks for performance reasons, you can set the
- PCRE_NO_UTF8_CHECK option when calling pcre_exec(). You might want to
- do this for the second and subsequent calls to pcre_exec() if you are
- making repeated calls to find all the matches in a single subject
- string. However, you should be sure that the value of startoffset
- points to the start of a UTF-8 character. When PCRE_NO_UTF8_CHECK is
- set, the effect of passing an invalid UTF-8 string as a subject, or a
- value of startoffset that does not point to the start of a UTF-8 char-
+ If you already know that your subject is valid, and you want to skip
+ these checks for performance reasons, you can set the
+ PCRE_NO_UTF8_CHECK option when calling pcre_exec(). You might want to
+ do this for the second and subsequent calls to pcre_exec() if you are
+ making repeated calls to find all the matches in a single subject
+ string. However, you should be sure that the value of startoffset
+ points to the start of a UTF-8 character. When PCRE_NO_UTF8_CHECK is
+ set, the effect of passing an invalid UTF-8 string as a subject, or a
+ value of startoffset that does not point to the start of a UTF-8 char-
acter, is undefined. Your program may crash.
PCRE_PARTIAL
- This option turns on the partial matching feature. If the subject
- string fails to match the pattern, but at some point during the match-
- ing process the end of the subject was reached (that is, the subject
- partially matches the pattern and the failure to match occurred only
- because there were not enough subject characters), pcre_exec() returns
- PCRE_ERROR_PARTIAL instead of PCRE_ERROR_NOMATCH. When PCRE_PARTIAL is
- used, there are restrictions on what may appear in the pattern. These
+ This option turns on the partial matching feature. If the subject
+ string fails to match the pattern, but at some point during the match-
+ ing process the end of the subject was reached (that is, the subject
+ partially matches the pattern and the failure to match occurred only
+ because there were not enough subject characters), pcre_exec() returns
+ PCRE_ERROR_PARTIAL instead of PCRE_ERROR_NOMATCH. When PCRE_PARTIAL is
+ used, there are restrictions on what may appear in the pattern. These
are discussed in the pcrepartial documentation.
The string to be matched by pcre_exec()
- The subject string is passed to pcre_exec() as a pointer in subject, a
- length in length, and a starting byte offset in startoffset. In UTF-8
- mode, the byte offset must point to the start of a UTF-8 character.
- Unlike the pattern string, the subject may contain binary zero bytes.
- When the starting offset is zero, the search for a match starts at the
+ The subject string is passed to pcre_exec() as a pointer in subject, a
+ length in length, and a starting byte offset in startoffset. In UTF-8
+ mode, the byte offset must point to the start of a UTF-8 character.
+ Unlike the pattern string, the subject may contain binary zero bytes.
+ When the starting offset is zero, the search for a match starts at the
beginning of the subject, and this is by far the most common case.
- A non-zero starting offset is useful when searching for another match
- in the same subject by calling pcre_exec() again after a previous suc-
- cess. Setting startoffset differs from just passing over a shortened
- string and setting PCRE_NOTBOL in the case of a pattern that begins
+ A non-zero starting offset is useful when searching for another match
+ in the same subject by calling pcre_exec() again after a previous suc-
+ cess. Setting startoffset differs from just passing over a shortened
+ string and setting PCRE_NOTBOL in the case of a pattern that begins
with any kind of lookbehind. For example, consider the pattern
\Biss\B
- which finds occurrences of "iss" in the middle of words. (\B matches
- only if the current position in the subject is not a word boundary.)
- When applied to the string "Mississipi" the first call to pcre_exec()
- finds the first occurrence. If pcre_exec() is called again with just
- the remainder of the subject, namely "issipi", it does not match,
+ which finds occurrences of "iss" in the middle of words. (\B matches
+ only if the current position in the subject is not a word boundary.)
+ When applied to the string "Mississipi" the first call to pcre_exec()
+ finds the first occurrence. If pcre_exec() is called again with just
+ the remainder of the subject, namely "issipi", it does not match,
because \B is always false at the start of the subject, which is deemed
- to be a word boundary. However, if pcre_exec() is passed the entire
+ to be a word boundary. However, if pcre_exec() is passed the entire
string again, but with startoffset set to 4, it finds the second occur-
- rence of "iss" because it is able to look behind the starting point to
+ rence of "iss" because it is able to look behind the starting point to
discover that it is preceded by a letter.
- If a non-zero starting offset is passed when the pattern is anchored,
+ If a non-zero starting offset is passed when the pattern is anchored,
one attempt to match at the given offset is made. This can only succeed
- if the pattern does not require the match to be at the start of the
+ if the pattern does not require the match to be at the start of the
subject.
How pcre_exec() returns captured substrings
- In general, a pattern matches a certain portion of the subject, and in
- addition, further substrings from the subject may be picked out by
- parts of the pattern. Following the usage in Jeffrey Friedl's book,
- this is called "capturing" in what follows, and the phrase "capturing
- subpattern" is used for a fragment of a pattern that picks out a sub-
- string. PCRE supports several other kinds of parenthesized subpattern
+ In general, a pattern matches a certain portion of the subject, and in
+ addition, further substrings from the subject may be picked out by
+ parts of the pattern. Following the usage in Jeffrey Friedl's book,
+ this is called "capturing" in what follows, and the phrase "capturing
+ subpattern" is used for a fragment of a pattern that picks out a sub-
+ string. PCRE supports several other kinds of parenthesized subpattern
that do not cause substrings to be captured.
- Captured substrings are returned to the caller via a vector of integer
- offsets whose address is passed in ovector. The number of elements in
- the vector is passed in ovecsize, which must be a non-negative number.
+ Captured substrings are returned to the caller via a vector of integer
+ offsets whose address is passed in ovector. The number of elements in
+ the vector is passed in ovecsize, which must be a non-negative number.
Note: this argument is NOT the size of ovector in bytes.
- The first two-thirds of the vector is used to pass back captured sub-
- strings, each substring using a pair of integers. The remaining third
- of the vector is used as workspace by pcre_exec() while matching cap-
- turing subpatterns, and is not available for passing back information.
- The length passed in ovecsize should always be a multiple of three. If
+ The first two-thirds of the vector is used to pass back captured sub-
+ strings, each substring using a pair of integers. The remaining third
+ of the vector is used as workspace by pcre_exec() while matching cap-
+ turing subpatterns, and is not available for passing back information.
+ The length passed in ovecsize should always be a multiple of three. If
it is not, it is rounded down.
- When a match is successful, information about captured substrings is
- returned in pairs of integers, starting at the beginning of ovector,
- and continuing up to two-thirds of its length at the most. The first
+ When a match is successful, information about captured substrings is
+ returned in pairs of integers, starting at the beginning of ovector,
+ and continuing up to two-thirds of its length at the most. The first
element of a pair is set to the offset of the first character in a sub-
- string, and the second is set to the offset of the first character
- after the end of a substring. The first pair, ovector[0] and ovec-
- tor[1], identify the portion of the subject string matched by the
- entire pattern. The next pair is used for the first capturing subpat-
- tern, and so on. The value returned by pcre_exec() is the number of
- pairs that have been set. If there are no capturing subpatterns, the
- return value from a successful match is 1, indicating that just the
+ string, and the second is set to the offset of the first character
+ after the end of a substring. The first pair, ovector[0] and ovec-
+ tor[1], identify the portion of the subject string matched by the
+ entire pattern. The next pair is used for the first capturing subpat-
+ tern, and so on. The value returned by pcre_exec() is the number of
+ pairs that have been set. If there are no capturing subpatterns, the
+ return value from a successful match is 1, indicating that just the
first pair of offsets has been set.
- Some convenience functions are provided for extracting the captured
- substrings as separate strings. These are described in the following
+ Some convenience functions are provided for extracting the captured
+ substrings as separate strings. These are described in the following
section.
- It is possible for an capturing subpattern number n+1 to match some
- part of the subject when subpattern n has not been used at all. For
+ It is possible for an capturing subpattern number n+1 to match some
+ part of the subject when subpattern n has not been used at all. For
example, if the string "abc" is matched against the pattern (a|(z))(bc)
- subpatterns 1 and 3 are matched, but 2 is not. When this happens, both
+ subpatterns 1 and 3 are matched, but 2 is not. When this happens, both
offset values corresponding to the unused subpattern are set to -1.
If a capturing subpattern is matched repeatedly, it is the last portion
of the string that it matched that is returned.
- If the vector is too small to hold all the captured substring offsets,
+ If the vector is too small to hold all the captured substring offsets,
it is used as far as possible (up to two-thirds of its length), and the
- function returns a value of zero. In particular, if the substring off-
+ function returns a value of zero. In particular, if the substring off-
sets are not of interest, pcre_exec() may be called with ovector passed
- as NULL and ovecsize as zero. However, if the pattern contains back
- references and the ovector is not big enough to remember the related
- substrings, PCRE has to get additional memory for use during matching.
+ as NULL and ovecsize as zero. However, if the pattern contains back
+ references and the ovector is not big enough to remember the related
+ substrings, PCRE has to get additional memory for use during matching.
Thus it is usually advisable to supply an ovector.
- Note that pcre_info() can be used to find out how many capturing sub-
+ Note that pcre_info() can be used to find out how many capturing sub-
patterns there are in a compiled pattern. The smallest size for ovector
- that will allow for n captured substrings, in addition to the offsets
+ that will allow for n captured substrings, in addition to the offsets
of the substring matched by the whole pattern, is (n+1)*3.
Return values from pcre_exec()
- If pcre_exec() fails, it returns a negative number. The following are
+ If pcre_exec() fails, it returns a negative number. The following are
defined in the header file:
PCRE_ERROR_NOMATCH (-1)
@@ -1663,7 +1705,7 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION
PCRE_ERROR_NULL (-2)
- Either code or subject was passed as NULL, or ovector was NULL and
+ Either code or subject was passed as NULL, or ovector was NULL and
ovecsize was not zero.
PCRE_ERROR_BADOPTION (-3)
@@ -1672,74 +1714,80 @@ MATCHING A PATTERN: THE TRADITIONAL FUNCTION
PCRE_ERROR_BADMAGIC (-4)
- PCRE stores a 4-byte "magic number" at the start of the compiled code,
+ PCRE stores a 4-byte "magic number" at the start of the compiled code,
to catch the case when it is passed a junk pointer and to detect when a
pattern that was compiled in an environment of one endianness is run in
- an environment with the other endianness. This is the error that PCRE
+ an environment with the other endianness. This is the error that PCRE
gives when the magic number is not present.
PCRE_ERROR_UNKNOWN_NODE (-5)
While running the pattern match, an unknown item was encountered in the
- compiled pattern. This error could be caused by a bug in PCRE or by
+ compiled pattern. This error could be caused by a bug in PCRE or by
overwriting of the compiled pattern.
PCRE_ERROR_NOMEMORY (-6)
- If a pattern contains back references, but the ovector that is passed
+ If a pattern contains back references, but the ovector that is passed
to pcre_exec() is not big enough to remember the referenced substrings,
- PCRE gets a block of memory at the start of matching to use for this
- purpose. If the call via pcre_malloc() fails, this error is given. The
+ PCRE gets a block of memory at the start of matching to use for this
+ purpose. If the call via pcre_malloc() fails, this error is given. The
memory is automatically freed at the end of matching.
PCRE_ERROR_NOSUBSTRING (-7)
- This error is used by the pcre_copy_substring(), pcre_get_substring(),
+ This error is used by the pcre_copy_substring(), pcre_get_substring(),
and pcre_get_substring_list() functions (see below). It is never
returned by pcre_exec().
PCRE_ERROR_MATCHLIMIT (-8)
- The recursion and backtracking limit, as specified by the match_limit
- field in a pcre_extra structure (or defaulted) was reached. See the
+ The backtracking limit, as specified by the match_limit field in a
+ pcre_extra structure (or defaulted) was reached. See the description
+ above.
+
+ PCRE_ERROR_RECURSIONLIMIT (-21)
+
+ The internal recursion limit, as specified by the match_limit_recursion
+ field in a pcre_extra structure (or defaulted) was reached. See the
description above.
PCRE_ERROR_CALLOUT (-9)
This error is never generated by pcre_exec() itself. It is provided for
- use by callout functions that want to yield a distinctive error code.
+ use by callout functions that want to yield a distinctive error code.
See the pcrecallout documentation for details.
PCRE_ERROR_BADUTF8 (-10)
- A string that contains an invalid UTF-8 byte sequence was passed as a
+ A string that contains an invalid UTF-8 byte sequence was passed as a
subject.
PCRE_ERROR_BADUTF8_OFFSET (-11)
The UTF-8 byte sequence that was passed as a subject was valid, but the
- value of startoffset did not point to the beginning of a UTF-8 charac-
+ value of startoffset did not point to the beginning of a UTF-8 charac-
ter.
PCRE_ERROR_PARTIAL (-12)
- The subject string did not match, but it did match partially. See the
+ The subject string did not match, but it did match partially. See the
pcrepartial documentation for details of partial matching.
PCRE_ERROR_BADPARTIAL (-13)
- The PCRE_PARTIAL option was used with a compiled pattern containing
- items that are not supported for partial matching. See the pcrepartial
+ The PCRE_PARTIAL option was used with a compiled pattern containing
+ items that are not supported for partial matching. See the pcrepartial
documentation for details of partial matching.
PCRE_ERROR_INTERNAL (-14)
- An unexpected internal error has occurred. This error could be caused
+ An unexpected internal error has occurred. This error could be caused
by a bug in PCRE or by overwriting of the compiled pattern.
PCRE_ERROR_BADCOUNT (-15)
- This error is given if the value of the ovecsize argument is negative.
+ This error is given if the value of the ovecsize argument is negative.
EXTRACTING CAPTURED SUBSTRINGS BY NUMBER
@@ -1755,71 +1803,71 @@ EXTRACTING CAPTURED SUBSTRINGS BY NUMBER
int pcre_get_substring_list(const char *subject,
int *ovector, int stringcount, const char ***listptr);
- Captured substrings can be accessed directly by using the offsets
- returned by pcre_exec() in ovector. For convenience, the functions
+ Captured substrings can be accessed directly by using the offsets
+ returned by pcre_exec() in ovector. For convenience, the functions
pcre_copy_substring(), pcre_get_substring(), and pcre_get_sub-
- string_list() are provided for extracting captured substrings as new,
- separate, zero-terminated strings. These functions identify substrings
- by number. The next section describes functions for extracting named
- substrings. A substring that contains a binary zero is correctly
- extracted and has a further zero added on the end, but the result is
+ string_list() are provided for extracting captured substrings as new,
+ separate, zero-terminated strings. These functions identify substrings
+ by number. The next section describes functions for extracting named
+ substrings. A substring that contains a binary zero is correctly
+ extracted and has a further zero added on the end, but the result is
not, of course, a C string.
- The first three arguments are the same for all three of these func-
- tions: subject is the subject string that has just been successfully
+ The first three arguments are the same for all three of these func-
+ tions: subject is the subject string that has just been successfully
matched, ovector is a pointer to the vector of integer offsets that was
passed to pcre_exec(), and stringcount is the number of substrings that
- were captured by the match, including the substring that matched the
+ were captured by the match, including the substring that matched the
entire regular expression. This is the value returned by pcre_exec() if
- it is greater than zero. If pcre_exec() returned zero, indicating that
- it ran out of space in ovector, the value passed as stringcount should
+ it is greater than zero. If pcre_exec() returned zero, indicating that
+ it ran out of space in ovector, the value passed as stringcount should
be the number of elements in the vector divided by three.
- The functions pcre_copy_substring() and pcre_get_substring() extract a
- single substring, whose number is given as stringnumber. A value of
- zero extracts the substring that matched the entire pattern, whereas
- higher values extract the captured substrings. For pcre_copy_sub-
- string(), the string is placed in buffer, whose length is given by
- buffersize, while for pcre_get_substring() a new block of memory is
- obtained via pcre_malloc, and its address is returned via stringptr.
- The yield of the function is the length of the string, not including
+ The functions pcre_copy_substring() and pcre_get_substring() extract a
+ single substring, whose number is given as stringnumber. A value of
+ zero extracts the substring that matched the entire pattern, whereas
+ higher values extract the captured substrings. For pcre_copy_sub-
+ string(), the string is placed in buffer, whose length is given by
+ buffersize, while for pcre_get_substring() a new block of memory is
+ obtained via pcre_malloc, and its address is returned via stringptr.
+ The yield of the function is the length of the string, not including
the terminating zero, or one of
PCRE_ERROR_NOMEMORY (-6)
- The buffer was too small for pcre_copy_substring(), or the attempt to
+ The buffer was too small for pcre_copy_substring(), or the attempt to
get memory failed for pcre_get_substring().
PCRE_ERROR_NOSUBSTRING (-7)
There is no substring whose number is stringnumber.
- The pcre_get_substring_list() function extracts all available sub-
- strings and builds a list of pointers to them. All this is done in a
+ The pcre_get_substring_list() function extracts all available sub-
+ strings and builds a list of pointers to them. All this is done in a
single block of memory that is obtained via pcre_malloc. The address of
- the memory block is returned via listptr, which is also the start of
- the list of string pointers. The end of the list is marked by a NULL
+ the memory block is returned via listptr, which is also the start of
+ the list of string pointers. The end of the list is marked by a NULL
pointer. The yield of the function is zero if all went well, or
PCRE_ERROR_NOMEMORY (-6)
if the attempt to get the memory block failed.
- When any of these functions encounter a substring that is unset, which
- can happen when capturing subpattern number n+1 matches some part of
- the subject, but subpattern n has not been used at all, they return an
+ When any of these functions encounter a substring that is unset, which
+ can happen when capturing subpattern number n+1 matches some part of
+ the subject, but subpattern n has not been used at all, they return an
empty string. This can be distinguished from a genuine zero-length sub-
- string by inspecting the appropriate offset in ovector, which is nega-
+ string by inspecting the appropriate offset in ovector, which is nega-
tive for unset substrings.
- The two convenience functions pcre_free_substring() and pcre_free_sub-
- string_list() can be used to free the memory returned by a previous
+ The two convenience functions pcre_free_substring() and pcre_free_sub-
+ string_list() can be used to free the memory returned by a previous
call of pcre_get_substring() or pcre_get_substring_list(), respec-
- tively. They do nothing more than call the function pointed to by
- pcre_free, which of course could be called directly from a C program.
- However, PCRE is used in some situations where it is linked via a spe-
+ tively. They do nothing more than call the function pointed to by
+ pcre_free, which of course could be called directly from a C program.
+ However, PCRE is used in some situations where it is linked via a spe-
cial interface to another programming language which cannot use
- pcre_free directly; it is for these cases that the functions are pro-
+ pcre_free directly; it is for these cases that the functions are pro-
vided.
@@ -1838,52 +1886,52 @@ EXTRACTING CAPTURED SUBSTRINGS BY NAME
int stringcount, const char *stringname,
const char **stringptr);
- To extract a substring by name, you first have to find associated num-
+ To extract a substring by name, you first have to find associated num-
ber. For example, for this pattern
(a+)b(?P<xxx>\d+)...
the number of the subpattern called "xxx" is 2. You can find the number
from the name by calling pcre_get_stringnumber(). The first argument is
- the compiled pattern, and the second is the name. The yield of the
- function is the subpattern number, or PCRE_ERROR_NOSUBSTRING (-7) if
+ the compiled pattern, and the second is the name. The yield of the
+ function is the subpattern number, or PCRE_ERROR_NOSUBSTRING (-7) if
there is no subpattern of that name.
Given the number, you can extract the substring directly, or use one of
the functions described in the previous section. For convenience, there
are also two functions that do the whole job.
- Most of the arguments of pcre_copy_named_substring() and
- pcre_get_named_substring() are the same as those for the similarly
- named functions that extract by number. As these are described in the
- previous section, they are not re-described here. There are just two
+ Most of the arguments of pcre_copy_named_substring() and
+ pcre_get_named_substring() are the same as those for the similarly
+ named functions that extract by number. As these are described in the
+ previous section, they are not re-described here. There are just two
differences:
- First, instead of a substring number, a substring name is given. Sec-
+ First, instead of a substring number, a substring name is given. Sec-
ond, there is an extra argument, given at the start, which is a pointer
- to the compiled pattern. This is needed in order to gain access to the
+ to the compiled pattern. This is needed in order to gain access to the
name-to-number translation table.
- These functions call pcre_get_stringnumber(), and if it succeeds, they
- then call pcre_copy_substring() or pcre_get_substring(), as appropri-
+ These functions call pcre_get_stringnumber(), and if it succeeds, they
+ then call pcre_copy_substring() or pcre_get_substring(), as appropri-
ate.
FINDING ALL POSSIBLE MATCHES
- The traditional matching function uses a similar algorithm to Perl,
+ The traditional matching function uses a similar algorithm to Perl,
which stops when it finds the first match, starting at a given point in
- the subject. If you want to find all possible matches, or the longest
- possible match, consider using the alternative matching function (see
- below) instead. If you cannot use the alternative function, but still
- need to find all possible matches, you can kludge it up by making use
+ the subject. If you want to find all possible matches, or the longest
+ possible match, consider using the alternative matching function (see
+ below) instead. If you cannot use the alternative function, but still
+ need to find all possible matches, you can kludge it up by making use
of the callout facility, which is described in the pcrecallout documen-
tation.
What you have to do is to insert a callout right at the end of the pat-
- tern. When your callout function is called, extract and save the cur-
- rent matched substring. Then return 1, which forces pcre_exec() to
- backtrack and try other alternatives. Ultimately, when it runs out of
+ tern. When your callout function is called, extract and save the cur-
+ rent matched substring. Then return 1, which forces pcre_exec() to
+ backtrack and try other alternatives. Ultimately, when it runs out of
matches, pcre_exec() will yield PCRE_ERROR_NOMATCH.
@@ -1894,32 +1942,32 @@ MATCHING A PATTERN: THE ALTERNATIVE FUNCTION
int options, int *ovector, int ovecsize,
int *workspace, int wscount);
- The function pcre_dfa_exec() is called to match a subject string
- against a compiled pattern, using a "DFA" matching algorithm. This has
- different characteristics to the normal algorithm, and is not compati-
+ The function pcre_dfa_exec() is called to match a subject string
+ against a compiled pattern, using a "DFA" matching algorithm. This has
+ different characteristics to the normal algorithm, and is not compati-
ble with Perl. Some of the features of PCRE patterns are not supported.
Nevertheless, there are times when this kind of matching can be useful.
- For a discussion of the two matching algorithms, see the pcrematching
+ For a discussion of the two matching algorithms, see the pcrematching
documentation.
- The arguments for the pcre_dfa_exec() function are the same as for
+ The arguments for the pcre_dfa_exec() function are the same as for
pcre_exec(), plus two extras. The ovector argument is used in a differ-
- ent way, and this is described below. The other common arguments are
- used in the same way as for pcre_exec(), so their description is not
+ ent way, and this is described below. The other common arguments are
+ used in the same way as for pcre_exec(), so their description is not
repeated here.
- The two additional arguments provide workspace for the function. The
- workspace vector should contain at least 20 elements. It is used for
+ The two additional arguments provide workspace for the function. The
+ workspace vector should contain at least 20 elements. It is used for
keeping track of multiple paths through the pattern tree. More
- workspace will be needed for patterns and subjects where there are a
+ workspace will be needed for patterns and subjects where there are a
lot of possible matches.
- Here is an example of a simple call to pcre_exec():
+ Here is an example of a simple call to pcre_dfa_exec():
int rc;
int ovector[10];
int wspace[20];
- rc = pcre_exec(
+ rc = pcre_dfa_exec(
re, /* result of pcre_compile() */
NULL, /* we didn't study the pattern */
"some string", /* the subject string */
@@ -1933,47 +1981,47 @@ MATCHING A PATTERN: THE ALTERNATIVE FUNCTION
Option bits for pcre_dfa_exec()
- The unused bits of the options argument for pcre_dfa_exec() must be
- zero. The only bits that may be set are PCRE_ANCHORED, PCRE_NOTBOL,
- PCRE_NOTEOL, PCRE_NOTEMPTY, PCRE_NO_UTF8_CHECK, PCRE_PARTIAL,
- PCRE_DFA_SHORTEST, and PCRE_DFA_RESTART. All but the last three of
- these are the same as for pcre_exec(), so their description is not
+ The unused bits of the options argument for pcre_dfa_exec() must be
+ zero. The only bits that may be set are PCRE_ANCHORED, PCRE_NOTBOL,
+ PCRE_NOTEOL, PCRE_NOTEMPTY, PCRE_NO_UTF8_CHECK, PCRE_PARTIAL,
+ PCRE_DFA_SHORTEST, and PCRE_DFA_RESTART. All but the last three of
+ these are the same as for pcre_exec(), so their description is not
repeated here.
PCRE_PARTIAL
- This has the same general effect as it does for pcre_exec(), but the
- details are slightly different. When PCRE_PARTIAL is set for
- pcre_dfa_exec(), the return code PCRE_ERROR_NOMATCH is converted into
- PCRE_ERROR_PARTIAL if the end of the subject is reached, there have
+ This has the same general effect as it does for pcre_exec(), but the
+ details are slightly different. When PCRE_PARTIAL is set for
+ pcre_dfa_exec(), the return code PCRE_ERROR_NOMATCH is converted into
+ PCRE_ERROR_PARTIAL if the end of the subject is reached, there have
been no complete matches, but there is still at least one matching pos-
- sibility. The portion of the string that provided the partial match is
+ sibility. The portion of the string that provided the partial match is
set as the first matching string.
PCRE_DFA_SHORTEST
- Setting the PCRE_DFA_SHORTEST option causes the matching algorithm to
- stop as soon as it has found one match. Because of the way the DFA
+ Setting the PCRE_DFA_SHORTEST option causes the matching algorithm to
+ stop as soon as it has found one match. Because of the way the DFA
algorithm works, this is necessarily the shortest possible match at the
first possible matching point in the subject string.
PCRE_DFA_RESTART
- When pcre_dfa_exec() is called with the PCRE_PARTIAL option, and
- returns a partial match, it is possible to call it again, with addi-
- tional subject characters, and have it continue with the same match.
- The PCRE_DFA_RESTART option requests this action; when it is set, the
- workspace and wscount options must reference the same vector as before
- because data about the match so far is left in them after a partial
- match. There is more discussion of this facility in the pcrepartial
+ When pcre_dfa_exec() is called with the PCRE_PARTIAL option, and
+ returns a partial match, it is possible to call it again, with addi-
+ tional subject characters, and have it continue with the same match.
+ The PCRE_DFA_RESTART option requests this action; when it is set, the
+ workspace and wscount options must reference the same vector as before
+ because data about the match so far is left in them after a partial
+ match. There is more discussion of this facility in the pcrepartial
documentation.
Successful returns from pcre_dfa_exec()
- When pcre_dfa_exec() succeeds, it may have matched more than one sub-
+ When pcre_dfa_exec() succeeds, it may have matched more than one sub-
string in the subject. Note, however, that all the matches from one run
- of the function start at the same point in the subject. The shorter
- matches are all initial substrings of the longer matches. For example,
+ of the function start at the same point in the subject. The shorter
+ matches are all initial substrings of the longer matches. For example,
if the pattern
<.*>
@@ -1988,59 +2036,59 @@ MATCHING A PATTERN: THE ALTERNATIVE FUNCTION
<something> <something else>
<something> <something else> <something further>
- On success, the yield of the function is a number greater than zero,
- which is the number of matched substrings. The substrings themselves
- are returned in ovector. Each string uses two elements; the first is
- the offset to the start, and the second is the offset to the end. All
+ On success, the yield of the function is a number greater than zero,
+ which is the number of matched substrings. The substrings themselves
+ are returned in ovector. Each string uses two elements; the first is
+ the offset to the start, and the second is the offset to the end. All
the strings have the same start offset. (Space could have been saved by
- giving this only once, but it was decided to retain some compatibility
- with the way pcre_exec() returns data, even though the meaning of the
+ giving this only once, but it was decided to retain some compatibility
+ with the way pcre_exec() returns data, even though the meaning of the
strings is different.)
The strings are returned in reverse order of length; that is, the long-
- est matching string is given first. If there were too many matches to
- fit into ovector, the yield of the function is zero, and the vector is
+ est matching string is given first. If there were too many matches to
+ fit into ovector, the yield of the function is zero, and the vector is
filled with the longest matches.
Error returns from pcre_dfa_exec()
- The pcre_dfa_exec() function returns a negative number when it fails.
- Many of the errors are the same as for pcre_exec(), and these are
- described above. There are in addition the following errors that are
+ The pcre_dfa_exec() function returns a negative number when it fails.
+ Many of the errors are the same as for pcre_exec(), and these are
+ described above. There are in addition the following errors that are
specific to pcre_dfa_exec():
PCRE_ERROR_DFA_UITEM (-16)
- This return is given if pcre_dfa_exec() encounters an item in the pat-
- tern that it does not support, for instance, the use of \C or a back
+ This return is given if pcre_dfa_exec() encounters an item in the pat-
+ tern that it does not support, for instance, the use of \C or a back
reference.
PCRE_ERROR_DFA_UCOND (-17)
- This return is given if pcre_dfa_exec() encounters a condition item in
- a pattern that uses a back reference for the condition. This is not
+ This return is given if pcre_dfa_exec() encounters a condition item in
+ a pattern that uses a back reference for the condition. This is not
supported.
PCRE_ERROR_DFA_UMLIMIT (-18)
- This return is given if pcre_dfa_exec() is called with an extra block
+ This return is given if pcre_dfa_exec() is called with an extra block
that contains a setting of the match_limit field. This is not supported
(it is meaningless).
PCRE_ERROR_DFA_WSSIZE (-19)
- This return is given if pcre_dfa_exec() runs out of space in the
+ This return is given if pcre_dfa_exec() runs out of space in the
workspace vector.
PCRE_ERROR_DFA_RECURSE (-20)
- When a recursive subpattern is processed, the matching function calls
- itself recursively, using private vectors for ovector and workspace.
- This error is given if the output vector is not large enough. This
+ When a recursive subpattern is processed, the matching function calls
+ itself recursively, using private vectors for ovector and workspace.
+ This error is given if the output vector is not large enough. This
should be extremely rare, as a vector of size 1000 is used.
-Last updated: 16 May 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 18 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -2216,35 +2264,37 @@ DIFFERENCES BETWEEN PCRE AND PERL
handle regular expressions. The differences described here are with
respect to Perl 5.8.
- 1. PCRE does not have full UTF-8 support. Details of what it does have
- are given in the section on UTF-8 support in the main pcre page.
+ 1. PCRE has only a subset of Perl's UTF-8 and Unicode support. Details
+ of what it does have are given in the section on UTF-8 support in the
+ main pcre page.
2. PCRE does not allow repeat quantifiers on lookahead assertions. Perl
- permits them, but they do not mean what you might think. For example,
+ permits them, but they do not mean what you might think. For example,
(?!a){3} does not assert that the next three characters are not "a". It
just asserts that the next character is not "a" three times.
- 3. Capturing subpatterns that occur inside negative lookahead asser-
- tions are counted, but their entries in the offsets vector are never
- set. Perl sets its numerical variables from any such patterns that are
+ 3. Capturing subpatterns that occur inside negative lookahead asser-
+ tions are counted, but their entries in the offsets vector are never
+ set. Perl sets its numerical variables from any such patterns that are
matched before the assertion fails to match something (thereby succeed-
- ing), but only if the negative lookahead assertion contains just one
+ ing), but only if the negative lookahead assertion contains just one
branch.
- 4. Though binary zero characters are supported in the subject string,
+ 4. Though binary zero characters are supported in the subject string,
they are not allowed in a pattern string because it is passed as a nor-
mal C string, terminated by zero. The escape sequence \0 can be used in
the pattern to represent a binary zero.
- 5. The following Perl escape sequences are not supported: \l, \u, \L,
+ 5. The following Perl escape sequences are not supported: \l, \u, \L,
\U, and \N. In fact these are implemented by Perl's general string-han-
- dling and are not part of its pattern matching engine. If any of these
+ dling and are not part of its pattern matching engine. If any of these
are encountered by PCRE, an error is generated.
- 6. The Perl escape sequences \p, \P, and \X are supported only if PCRE
- is built with Unicode character property support. The properties that
- can be tested with \p and \P are limited to the general category prop-
- erties such as Lu and Nd.
+ 6. The Perl escape sequences \p, \P, and \X are supported only if PCRE
+ is built with Unicode character property support. The properties that
+ can be tested with \p and \P are limited to the general category prop-
+ erties such as Lu and Nd, script names such as Greek or Han, and the
+ derived properties Any and L&.
7. PCRE does support the \Q...\E escape for quoting substrings. Charac-
ters in between are treated as literals. This is slightly different
@@ -2317,8 +2367,8 @@ DIFFERENCES BETWEEN PCRE AND PERL
(n) The alternative matching function (pcre_dfa_exec()) matches in a
different way and is not Perl-compatible.
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 24 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -2464,7 +2514,7 @@ BACKSLASH
\t tab (hex 09)
\ddd character with octal code ddd, or backreference
\xhh character with hex code hh
- \x{hhh..} character with hex code hhh... (UTF-8 mode only)
+ \x{hhh..} character with hex code hhh..
The precise effect of \cx is as follows: if x is a lower case letter,
it is converted to upper case. Then bit 6 of the character (hex 40) is
@@ -2472,38 +2522,37 @@ BACKSLASH
becomes hex 7B.
After \x, from zero to two hexadecimal digits are read (letters can be
- in upper or lower case). In UTF-8 mode, any number of hexadecimal dig-
- its may appear between \x{ and }, but the value of the character code
- must be less than 2**31 (that is, the maximum hexadecimal value is
- 7FFFFFFF). If characters other than hexadecimal digits appear between
- \x{ and }, or if there is no terminating }, this form of escape is not
- recognized. Instead, the initial \x will be interpreted as a basic
- hexadecimal escape, with no following digits, giving a character whose
- value is zero.
+ in upper or lower case). Any number of hexadecimal digits may appear
+ between \x{ and }, but the value of the character code must be less
+ than 256 in non-UTF-8 mode, and less than 2**31 in UTF-8 mode (that is,
+ the maximum hexadecimal value is 7FFFFFFF). If characters other than
+ hexadecimal digits appear between \x{ and }, or if there is no termi-
+ nating }, this form of escape is not recognized. Instead, the initial
+ \x will be interpreted as a basic hexadecimal escape, with no following
+ digits, giving a character whose value is zero.
Characters whose value is less than 256 can be defined by either of the
- two syntaxes for \x when PCRE is in UTF-8 mode. There is no difference
- in the way they are handled. For example, \xdc is exactly the same as
- \x{dc}.
-
- After \0 up to two further octal digits are read. In both cases, if
- there are fewer than two digits, just those that are present are used.
- Thus the sequence \0\x\07 specifies two binary zeros followed by a BEL
- character (code value 7). Make sure you supply two digits after the
- initial zero if the pattern character that follows is itself an octal
+ two syntaxes for \x. There is no difference in the way they are han-
+ dled. For example, \xdc is exactly the same as \x{dc}.
+
+ After \0 up to two further octal digits are read. In both cases, if
+ there are fewer than two digits, just those that are present are used.
+ Thus the sequence \0\x\07 specifies two binary zeros followed by a BEL
+ character (code value 7). Make sure you supply two digits after the
+ initial zero if the pattern character that follows is itself an octal
digit.
The handling of a backslash followed by a digit other than 0 is compli-
cated. Outside a character class, PCRE reads it and any following dig-
- its as a decimal number. If the number is less than 10, or if there
+ its as a decimal number. If the number is less than 10, or if there
have been at least that many previous capturing left parentheses in the
- expression, the entire sequence is taken as a back reference. A
- description of how this works is given later, following the discussion
+ expression, the entire sequence is taken as a back reference. A
+ description of how this works is given later, following the discussion
of parenthesized subpatterns.
- Inside a character class, or if the decimal number is greater than 9
- and there have not been that many capturing subpatterns, PCRE re-reads
- up to three octal digits following the backslash, and generates a sin-
+ Inside a character class, or if the decimal number is greater than 9
+ and there have not been that many capturing subpatterns, PCRE re-reads
+ up to three octal digits following the backslash, and generates a sin-
gle byte from the least significant 8 bits of the value. Any subsequent
digits stand for themselves. For example:
@@ -2522,19 +2571,19 @@ BACKSLASH
\81 is either a back reference, or a binary zero
followed by the two characters "8" and "1"
- Note that octal values of 100 or greater must not be introduced by a
+ Note that octal values of 100 or greater must not be introduced by a
leading zero, because no more than three octal digits are ever read.
- All the sequences that define a single byte value or a single UTF-8
+ All the sequences that define a single byte value or a single UTF-8
character (in UTF-8 mode) can be used both inside and outside character
- classes. In addition, inside a character class, the sequence \b is
+ classes. In addition, inside a character class, the sequence \b is
interpreted as the backspace character (hex 08), and the sequence \X is
- interpreted as the character "X". Outside a character class, these
+ interpreted as the character "X". Outside a character class, these
sequences have different meanings (see below).
Generic character types
- The third use of backslash is for specifying generic character types.
+ The third use of backslash is for specifying generic character types.
The following are always recognized:
\d any decimal digit
@@ -2545,56 +2594,81 @@ BACKSLASH
\W any "non-word" character
Each pair of escape sequences partitions the complete set of characters
- into two disjoint sets. Any given character matches one, and only one,
+ into two disjoint sets. Any given character matches one, and only one,
of each pair.
These character type sequences can appear both inside and outside char-
- acter classes. They each match one character of the appropriate type.
- If the current matching point is at the end of the subject string, all
+ acter classes. They each match one character of the appropriate type.
+ If the current matching point is at the end of the subject string, all
of them fail, since there is no character to match.
- For compatibility with Perl, \s does not match the VT character (code
- 11). This makes it different from the the POSIX "space" class. The \s
+ For compatibility with Perl, \s does not match the VT character (code
+ 11). This makes it different from the the POSIX "space" class. The \s
characters are HT (9), LF (10), FF (12), CR (13), and space (32).
A "word" character is an underscore or any character less than 256 that
- is a letter or digit. The definition of letters and digits is con-
- trolled by PCRE's low-valued character tables, and may vary if locale-
- specific matching is taking place (see "Locale support" in the pcreapi
- page). For example, in the "fr_FR" (French) locale, some character
- codes greater than 128 are used for accented letters, and these are
+ is a letter or digit. The definition of letters and digits is con-
+ trolled by PCRE's low-valued character tables, and may vary if locale-
+ specific matching is taking place (see "Locale support" in the pcreapi
+ page). For example, in the "fr_FR" (French) locale, some character
+ codes greater than 128 are used for accented letters, and these are
matched by \w.
- In UTF-8 mode, characters with values greater than 128 never match \d,
+ In UTF-8 mode, characters with values greater than 128 never match \d,
\s, or \w, and always match \D, \S, and \W. This is true even when Uni-
- code character property support is available.
+ code character property support is available. The use of locales with
+ Unicode is discouraged.
Unicode character properties
When PCRE is built with Unicode character property support, three addi-
- tional escape sequences to match generic character types are available
+ tional escape sequences to match character properties are available
when UTF-8 mode is selected. They are:
- \p{xx} a character with the xx property
- \P{xx} a character without the xx property
- \X an extended Unicode sequence
+ \p{xx} a character with the xx property
+ \P{xx} a character without the xx property
+ \X an extended Unicode sequence
The property names represented by xx above are limited to the Unicode
- general category properties. Each character has exactly one such prop-
- erty, specified by a two-letter abbreviation. For compatibility with
- Perl, negation can be specified by including a circumflex between the
- opening brace and the property name. For example, \p{^Lu} is the same
- as \P{Lu}.
-
- If only one letter is specified with \p or \P, it includes all the
- properties that start with that letter. In this case, in the absence of
- negation, the curly brackets in the escape sequence are optional; these
- two examples have the same effect:
+ script names, the general category properties, and "Any", which matches
+ any character (including newline). Other properties such as "InMusical-
+ Symbols" are not currently supported by PCRE. Note that \P{Any} does
+ not match any characters, so always causes a match failure.
+
+ Sets of Unicode characters are defined as belonging to certain scripts.
+ A character from one of these sets can be matched using a script name.
+ For example:
+
+ \p{Greek}
+ \P{Han}
+
+ Those that are not part of an identified script are lumped together as
+ "Common". The current list of scripts is:
+
+ Arabic, Armenian, Bengali, Bopomofo, Braille, Buginese, Buhid, Cana-
+ dian_Aboriginal, Cherokee, Common, Coptic, Cypriot, Cyrillic, Deseret,
+ Devanagari, Ethiopic, Georgian, Glagolitic, Gothic, Greek, Gujarati,
+ Gurmukhi, Han, Hangul, Hanunoo, Hebrew, Hiragana, Inherited, Kannada,
+ Katakana, Kharoshthi, Khmer, Lao, Latin, Limbu, Linear_B, Malayalam,
+ Mongolian, Myanmar, New_Tai_Lue, Ogham, Old_Italic, Old_Persian, Oriya,
+ Osmanya, Runic, Shavian, Sinhala, Syloti_Nagri, Syriac, Tagalog, Tag-
+ banwa, Tai_Le, Tamil, Telugu, Thaana, Thai, Tibetan, Tifinagh,
+ Ugaritic, Yi.
+
+ Each character has exactly one general category property, specified by
+ a two-letter abbreviation. For compatibility with Perl, negation can be
+ specified by including a circumflex between the opening brace and the
+ property name. For example, \p{^Lu} is the same as \P{Lu}.
+
+ If only one letter is specified with \p or \P, it includes all the gen-
+ eral category properties that start with that letter. In this case, in
+ the absence of negation, the curly brackets in the escape sequence are
+ optional; these two examples have the same effect:
\p{L}
\pL
- The following property codes are supported:
+ The following general category property codes are supported:
C Other
Cc Control
@@ -2640,8 +2714,17 @@ BACKSLASH
Zp Paragraph separator
Zs Space separator
- Extended properties such as "Greek" or "InMusicalSymbols" are not sup-
- ported by PCRE.
+ The special property L& is also supported: it matches a character that
+ has the Lu, Ll, or Lt property, in other words, a letter that is not
+ classified as a modifier or "other".
+
+ The long synonyms for these properties that Perl supports (such as
+ \p{Letter}) are not supported by PCRE. Nor is is permitted to prefix
+ any of these properties with "Is".
+
+ No character that is in the Unicode table has the Cn (unassigned) prop-
+ erty. Instead, this property is assumed for any code point that is not
+ in the Unicode table.
Specifying caseless matching does not affect these escape sequences.
For example, \p{Lu} always matches only upper case letters.
@@ -3620,15 +3703,19 @@ RECURSIVE PATTERNS
tion.) The special item (?R) is a recursive call of the entire regular
expression.
- For example, this PCRE pattern solves the nested parentheses problem
- (assume the PCRE_EXTENDED option is set so that white space is
- ignored):
+ A recursive subpattern call is always treated as an atomic group. That
+ is, once it has matched some of the subject string, it is never re-
+ entered, even if it contains untried alternatives and there is a subse-
+ quent matching failure.
+
+ This PCRE pattern solves the nested parentheses problem (assume the
+ PCRE_EXTENDED option is set so that white space is ignored):
\( ( (?>[^()]+) | (?R) )* \)
First it matches an opening parenthesis. Then it matches any number of
substrings which can either be a sequence of non-parentheses, or a
- recursive match of the pattern itself (that is a correctly parenthe-
+ recursive match of the pattern itself (that is, a correctly parenthe-
sized substring). Finally there is a closing parenthesis.
If this were part of a larger pattern, you would not want to recurse
@@ -3712,43 +3799,48 @@ SUBPATTERNS AS SUBROUTINES
two strings. Such references must, however, follow the subpattern to
which they refer.
+ Like recursive subpatterns, a "subroutine" call is always treated as an
+ atomic group. That is, once it has matched some of the subject string,
+ it is never re-entered, even if it contains untried alternatives and
+ there is a subsequent matching failure.
+
CALLOUTS
Perl has a feature whereby using the sequence (?{...}) causes arbitrary
- Perl code to be obeyed in the middle of matching a regular expression.
+ Perl code to be obeyed in the middle of matching a regular expression.
This makes it possible, amongst other things, to extract different sub-
strings that match the same pair of parentheses when there is a repeti-
tion.
PCRE provides a similar feature, but of course it cannot obey arbitrary
Perl code. The feature is called "callout". The caller of PCRE provides
- an external function by putting its entry point in the global variable
- pcre_callout. By default, this variable contains NULL, which disables
+ an external function by putting its entry point in the global variable
+ pcre_callout. By default, this variable contains NULL, which disables
all calling out.
- Within a regular expression, (?C) indicates the points at which the
- external function is to be called. If you want to identify different
- callout points, you can put a number less than 256 after the letter C.
- The default value is zero. For example, this pattern has two callout
+ Within a regular expression, (?C) indicates the points at which the
+ external function is to be called. If you want to identify different
+ callout points, you can put a number less than 256 after the letter C.
+ The default value is zero. For example, this pattern has two callout
points:
(?C1)abc(?C2)def
If the PCRE_AUTO_CALLOUT flag is passed to pcre_compile(), callouts are
- automatically installed before each item in the pattern. They are all
+ automatically installed before each item in the pattern. They are all
numbered 255.
During matching, when PCRE reaches a callout point (and pcre_callout is
- set), the external function is called. It is provided with the number
- of the callout, the position in the pattern, and, optionally, one item
- of data originally supplied by the caller of pcre_exec(). The callout
- function may cause matching to proceed, to backtrack, or to fail alto-
+ set), the external function is called. It is provided with the number
+ of the callout, the position in the pattern, and, optionally, one item
+ of data originally supplied by the caller of pcre_exec(). The callout
+ function may cause matching to proceed, to backtrack, or to fail alto-
gether. A complete description of the interface to the callout function
is given in the pcrecallout documentation.
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 24 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -3838,16 +3930,16 @@ EXAMPLE OF PARTIAL MATCHING USING PCRETEST
uses the date example quoted above:
re> /^\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d$/
- data> 25jun04P
+ data> 25jun04\P
0: 25jun04
1: jun
- data> 25dec3P
+ data> 25dec3\P
Partial match
- data> 3juP
+ data> 3ju\P
Partial match
- data> 3jujP
+ data> 3juj\P
No match
- data> jP
+ data> j\P
No match
The first data string is matched completely, so pcretest shows the
@@ -3937,8 +4029,27 @@ MULTI-SEGMENT MATCHING WITH pcre_dfa_exec()
Because of this phenomenon, it does not usually make sense to end a
pattern that is going to be matched in this way with a variable repeat.
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+ 4. Patterns that contain alternatives at the top level which do not all
+ start with the same pattern item may not work as expected. For example,
+ consider this pattern:
+
+ 1234|3789
+
+ If the first part of the subject is "ABC123", a partial match of the
+ first alternative is found at offset 3. There is no partial match for
+ the second alternative, because such a match does not start at the same
+ point in the subject string. Attempting to continue with the string
+ "789" does not yield a match because only those alternatives that match
+ at one point in the subject are remembered. The problem arises because
+ the start of the second alternative matches within the first alterna-
+ tive. There is no problem with anchored patterns or patterns such as:
+
+ 1234|ABCD
+
+ where no string can be a partial match for both alternatives.
+
+Last updated: 16 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -4052,8 +4163,12 @@ COMPATIBILITY WITH DIFFERENT PCRE RELEASES
them for release 5.0. However, from now on, it should be possible to
make changes in a compatible manner.
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+ Notwithstanding the above, if you have any saved patterns in UTF-8 mode
+ that use \p or \P that were compiled with any release up to and includ-
+ ing 6.4, you will have to recompile them for release 6.5 and above.
+
+Last updated: 01 February 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -4178,11 +4293,11 @@ DESCRIPTION
functions call the native ones, it is also necessary to add -lpcre.
I have implemented only those option bits that can be reasonably mapped
- to PCRE native options. In addition, the options REG_EXTENDED and
- REG_NOSUB are defined with the value zero. They have no effect, but
- since programs that are written to the POSIX interface often use them,
- this makes it easier to slot in PCRE as a replacement library. Other
- POSIX options are not even defined.
+ to PCRE native options. In addition, the option REG_EXTENDED is defined
+ with the value zero. This has no effect, but since programs that are
+ written to the POSIX interface often use it, this makes it easier to
+ slot in PCRE as a replacement library. Other POSIX options are not even
+ defined.
When PCRE is called via these functions, it is only the API that is
POSIX-like in style. The syntax and semantics of the regular expres-
@@ -4207,27 +4322,43 @@ COMPILING A PATTERN
form. The pattern is a C string terminated by a binary zero, and is
passed in the argument pattern. The preg argument is a pointer to a
regex_t structure that is used as a base for storing information about
- the compiled expression.
+ the compiled regular expression.
The argument cflags is either zero, or contains one or more of the bits
defined by the following macros:
REG_DOTALL
- The PCRE_DOTALL option is set when the expression is passed for compi-
- lation to the native function. Note that REG_DOTALL is not part of the
- POSIX standard.
+ The PCRE_DOTALL option is set when the regular expression is passed for
+ compilation to the native function. Note that REG_DOTALL is not part of
+ the POSIX standard.
REG_ICASE
- The PCRE_CASELESS option is set when the expression is passed for com-
- pilation to the native function.
+ The PCRE_CASELESS option is set when the regular expression is passed
+ for compilation to the native function.
REG_NEWLINE
- The PCRE_MULTILINE option is set when the expression is passed for com-
- pilation to the native function. Note that this does not mimic the
- defined POSIX behaviour for REG_NEWLINE (see the following section).
+ The PCRE_MULTILINE option is set when the regular expression is passed
+ for compilation to the native function. Note that this does not mimic
+ the defined POSIX behaviour for REG_NEWLINE (see the following sec-
+ tion).
+
+ REG_NOSUB
+
+ The PCRE_NO_AUTO_CAPTURE option is set when the regular expression is
+ passed for compilation to the native function. In addition, when a pat-
+ tern that is compiled with this flag is passed to regexec() for match-
+ ing, the nmatch and pmatch arguments are ignored, and no captured
+ strings are returned.
+
+ REG_UTF8
+
+ The PCRE_UTF8 option is set when the regular expression is passed for
+ compilation to the native function. This causes the pattern itself and
+ all data strings used for matching it to be treated as UTF-8 strings.
+ Note that REG_UTF8 is not part of the POSIX standard.
In the absence of these flags, no options are passed to the native
function. This means the the regex is compiled with PCRE default
@@ -4294,15 +4425,19 @@ MATCHING A PATTERN
The PCRE_NOTEOL option is set when calling the underlying PCRE matching
function.
- The portion of the string that was matched, and also any captured sub-
- strings, are returned via the pmatch argument, which points to an array
- of nmatch structures of type regmatch_t, containing the members rm_so
- and rm_eo. These contain the offset to the first character of each sub-
- string and the offset to the first character after the end of each sub-
- string, respectively. The 0th element of the vector relates to the
- entire portion of string that was matched; subsequent elements relate
- to the capturing subpatterns of the regular expression. Unused entries
- in the array have both structure members set to -1.
+ If the pattern was compiled with the REG_NOSUB flag, no data about any
+ matched strings is returned. The nmatch and pmatch arguments of
+ regexec() are ignored.
+
+ Otherwise,the portion of the string that was matched, and also any cap-
+ tured substrings, are returned via the pmatch argument, which points to
+ an array of nmatch structures of type regmatch_t, containing the mem-
+ bers rm_so and rm_eo. These contain the offset to the first character
+ of each substring and the offset to the first character after the end
+ of each substring, respectively. The 0th element of the vector relates
+ to the entire portion of string that was matched; subsequent elements
+ relate to the capturing subpatterns of the regular expression. Unused
+ entries in the array have both structure members set to -1.
A successful match yields a zero return; various error codes are
defined in the header file, of which REG_NOMATCH is the "expected"
@@ -4333,8 +4468,8 @@ AUTHOR
University Computing Service,
Cambridge CB2 3QG, England.
-Last updated: 28 February 2005
-Copyright (c) 1997-2005 University of Cambridge.
+Last updated: 16 January 2006
+Copyright (c) 1997-2006 University of Cambridge.
------------------------------------------------------------------------------
@@ -4507,13 +4642,17 @@ PASSING MODIFIERS TO THE REGULAR EXPRESSION ENGINE
RE_Options & set_caseless(bool)
- which sets or unsets the modifier. Moreover, PCRE_CONFIG_MATCH_LIMIT
- can be accessed through the set_match_limit() and match_limit() member
+ which sets or unsets the modifier. Moreover, PCRE_EXTRA_MATCH_LIMIT can
+ be accessed through the set_match_limit() and match_limit() member
functions. Setting match_limit to a non-zero value will limit the exe-
cution of pcre to keep it from doing bad things like blowing the stack
or taking an eternity to return a result. A value of 5000 is good
enough to stop stack blowup in a 2MB thread stack. Setting match_limit
- to zero disables match limiting.
+ to zero disables match limiting. Alternatively, you can call
+ match_limit_recursion() which uses PCRE_EXTRA_MATCH_LIMIT_RECURSION to
+ limit how much PCRE recurses. match_limit() limits the number of
+ matches PCRE does; match_limit_recursion() limits the depth of internal
+ recursion, and therefore the amount of stack that is used.
Normally, to pass one or more modifiers to a RE class, you declare a
RE_Options object, set the appropriate options, and pass this object to
diff --git a/ext/pcre/pcrelib/pcre.def b/ext/pcre/pcrelib/pcre.def
index adb53160d..ec2c7b395 100644
--- a/ext/pcre/pcrelib/pcre.def
+++ b/ext/pcre/pcrelib/pcre.def
@@ -4,16 +4,22 @@ pcre_malloc DATA
pcre_free DATA
pcre_compile
+pcre_compile2
+pcre_config
+pcre_copy_named_substring
pcre_copy_substring
pcre_dfa_exec
pcre_exec
-pcre_get_substring
-pcre_get_substring_list
pcre_free_substring
pcre_free_substring_list
-pcre_info
pcre_fullinfo
+pcre_get_named_substring
+pcre_get_stringnumber
+pcre_get_substring
+pcre_get_substring_list
+pcre_info
pcre_maketables
+pcre_refcount
pcre_study
pcre_version
diff --git a/ext/pcre/pcrelib/pcre.h b/ext/pcre/pcrelib/pcre.h
index ff3577402..e16cc7096 100644
--- a/ext/pcre/pcrelib/pcre.h
+++ b/ext/pcre/pcrelib/pcre.h
@@ -2,8 +2,8 @@
* Perl-Compatible Regular Expressions *
*************************************************/
-/* In its original form, this is the .in file that is transformed by
-"configure" into pcre.h.
+/* This is the public header file for the PCRE library, to be #included by
+applications that call the PCRE functions.
Copyright (c) 1997-2005 University of Cambridge
@@ -38,17 +38,29 @@ POSSIBILITY OF SUCH DAMAGE.
#ifndef _PCRE_H
#define _PCRE_H
+
+#include "php_compat.h"
-/* The file pcre.h is build by "configure". Do not edit it; instead
-make changes to pcre.in. */
+/* The current PCRE version information. */
-#include "php_compat.h"
+/* NOTES FOR FUTURE MAINTAINERS: Do not use numbers with leading zeros, because
+they may be treated as octal constants. The PCRE_PRERELEASE feature is for
+identifying release candidates. It might be defined as -RC2, for example. In
+real releases, it should be defined empty. Do not change the alignment of these
+statments. The code in ./configure greps out the version numbers by using "cut"
+to get values from column 29 onwards. These are substituted into pcre-config
+and libpcre.pc. The values are not put into configure.ac and substituted here
+(which would simplify this issue) because that makes life harder for those who
+cannot run ./configure. As it now stands, this file need not be edited in that
+circumstance. */
#define PCRE_MAJOR 6
-#define PCRE_MINOR 2
-#define PCRE_DATE 01-Aug-2005
+#define PCRE_MINOR 6
+#define PCRE_PRERELEASE
+#define PCRE_DATE 06-Feb-2006
-/* Win32 uses DLL by default; it needs special stuff for exported functions. */
+/* Win32 uses DLL by default; it needs special stuff for exported functions
+when building PCRE. */
#ifdef _WIN32
# ifdef PCRE_DEFINITION
@@ -62,7 +74,7 @@ make changes to pcre.in. */
# endif
#endif
-/* For other operating systems, we use the standard "extern". */
+/* Otherwise, we use the standard "extern". */
#ifndef PCRE_DATA_SCOPE
# ifdef __cplusplus
@@ -127,6 +139,7 @@ extern "C" {
#define PCRE_ERROR_DFA_UMLIMIT (-18)
#define PCRE_ERROR_DFA_WSSIZE (-19)
#define PCRE_ERROR_DFA_RECURSE (-20)
+#define PCRE_ERROR_RECURSIONLIMIT (-21)
/* Request types for pcre_fullinfo() */
@@ -144,7 +157,8 @@ extern "C" {
#define PCRE_INFO_STUDYSIZE 10
#define PCRE_INFO_DEFAULT_TABLES 11
-/* Request types for pcre_config() */
+/* Request types for pcre_config(). Do not re-arrange, in order to remain
+compatible. */
#define PCRE_CONFIG_UTF8 0
#define PCRE_CONFIG_NEWLINE 1
@@ -153,19 +167,30 @@ extern "C" {
#define PCRE_CONFIG_MATCH_LIMIT 4
#define PCRE_CONFIG_STACKRECURSE 5
#define PCRE_CONFIG_UNICODE_PROPERTIES 6
+#define PCRE_CONFIG_MATCH_LIMIT_RECURSION 7
-/* Bit flags for the pcre_extra structure */
+/* Bit flags for the pcre_extra structure. Do not re-arrange or redefine
+these bits, just add new ones on the end, in order to remain compatible. */
-#define PCRE_EXTRA_STUDY_DATA 0x0001
-#define PCRE_EXTRA_MATCH_LIMIT 0x0002
-#define PCRE_EXTRA_CALLOUT_DATA 0x0004
-#define PCRE_EXTRA_TABLES 0x0008
+#define PCRE_EXTRA_STUDY_DATA 0x0001
+#define PCRE_EXTRA_MATCH_LIMIT 0x0002
+#define PCRE_EXTRA_CALLOUT_DATA 0x0004
+#define PCRE_EXTRA_TABLES 0x0008
+#define PCRE_EXTRA_MATCH_LIMIT_RECURSION 0x0010
/* Types */
struct real_pcre; /* declaration; the definition is private */
typedef struct real_pcre pcre;
+/* When PCRE is compiled as a C++ library, the subject pointer type can be
+replaced with a custom type. For conventional use, the public interface is a
+const char *. */
+
+#ifndef PCRE_SPTR
+#define PCRE_SPTR const char *
+#endif
+
/* The structure for passing additional data to pcre_exec(). This is defined in
such as way as to be extensible. Always add new fields at the end, in order to
remain compatible. */
@@ -176,6 +201,7 @@ typedef struct pcre_extra {
unsigned long int match_limit; /* Maximum number of calls to match() */
void *callout_data; /* Data passed back in callouts */
const unsigned char *tables; /* Pointer to character tables */
+ unsigned long int match_limit_recursion; /* Max recursive calls to match() */
} pcre_extra;
/* The structure for passing out data via the pcre_callout_function. We use a
@@ -188,7 +214,7 @@ typedef struct pcre_callout_block {
/* ------------------------ Version 0 ------------------------------- */
int callout_number; /* Number compiled into pattern */
int *offset_vector; /* The offset vector */
- const char *subject; /* The subject being matched */
+ PCRE_SPTR subject; /* The subject being matched */
int subject_length; /* The length of the subject */
int start_match; /* Offset to start of this match attempt */
int current_position; /* Where we currently are in the subject */
@@ -234,7 +260,7 @@ PCRE_DATA_SCOPE int pcre_copy_substring(const char *, int *, int, int, char *,
int);
PCRE_DATA_SCOPE int pcre_dfa_exec(const pcre *, const pcre_extra *,
const char *, int, int, int, int *, int , int *, int);
-PCRE_DATA_SCOPE int pcre_exec(const pcre *, const pcre_extra *, const char *,
+PCRE_DATA_SCOPE int pcre_exec(const pcre *, const pcre_extra *, PCRE_SPTR,
int, int, int, int *, int);
PCRE_DATA_SCOPE void pcre_free_substring(const char *);
PCRE_DATA_SCOPE void pcre_free_substring_list(const char **);
diff --git a/ext/pcre/pcrelib/pcre_compile.c b/ext/pcre/pcrelib/pcre_compile.c
index 228995252..0bbc7f5ba 100644
--- a/ext/pcre/pcrelib/pcre_compile.c
+++ b/ext/pcre/pcrelib/pcre_compile.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -45,6 +45,15 @@ supporting internal functions that are not used by other modules. */
#include "pcre_internal.h"
+/* When DEBUG is defined, we need the pcre_printint() function, which is also
+used by pcretest. DEBUG is not defined when building a production library. */
+
+#ifdef DEBUG
+#include "pcre_printint.src"
+#endif
+
+
+
/*************************************************
* Code parameters and static tables *
*************************************************/
@@ -107,7 +116,7 @@ static const short int escapes[] = {
/* Tables of names of POSIX character classes and their lengths. The list is
-terminated by a zero length entry. The first three must be alpha, upper, lower,
+terminated by a zero length entry. The first three must be alpha, lower, upper,
as this is assumed for handling case independence. */
static const char *const posix_names[] = {
@@ -118,25 +127,31 @@ static const char *const posix_names[] = {
static const uschar posix_name_lengths[] = {
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 6, 0 };
-/* Table of class bit maps for each POSIX class; up to three may be combined
-to form the class. The table for [:blank:] is dynamically modified to remove
-the vertical space characters. */
+/* Table of class bit maps for each POSIX class. Each class is formed from a
+base map, with an optional addition or removal of another map. Then, for some
+classes, there is some additional tweaking: for [:blank:] the vertical space
+characters are removed, and for [:alpha:] and [:alnum:] the underscore
+character is removed. The triples in the table consist of the base map offset,
+second map offset or -1 if no second map, and a non-negative value for map
+addition or a negative value for map subtraction (if there are two maps). The
+absolute value of the third field has these meanings: 0 => no tweaking, 1 =>
+remove vertical space characters, 2 => remove underscore. */
static const int posix_class_maps[] = {
- cbit_lower, cbit_upper, -1, /* alpha */
- cbit_lower, -1, -1, /* lower */
- cbit_upper, -1, -1, /* upper */
- cbit_digit, cbit_lower, cbit_upper, /* alnum */
- cbit_print, cbit_cntrl, -1, /* ascii */
- cbit_space, -1, -1, /* blank - a GNU extension */
- cbit_cntrl, -1, -1, /* cntrl */
- cbit_digit, -1, -1, /* digit */
- cbit_graph, -1, -1, /* graph */
- cbit_print, -1, -1, /* print */
- cbit_punct, -1, -1, /* punct */
- cbit_space, -1, -1, /* space */
- cbit_word, -1, -1, /* word - a Perl extension */
- cbit_xdigit,-1, -1 /* xdigit */
+ cbit_word, cbit_digit, -2, /* alpha */
+ cbit_lower, -1, 0, /* lower */
+ cbit_upper, -1, 0, /* upper */
+ cbit_word, -1, 2, /* alnum - word without underscore */
+ cbit_print, cbit_cntrl, 0, /* ascii */
+ cbit_space, -1, 1, /* blank - a GNU extension */
+ cbit_cntrl, -1, 0, /* cntrl */
+ cbit_digit, -1, 0, /* digit */
+ cbit_graph, -1, 0, /* graph */
+ cbit_print, -1, 0, /* print */
+ cbit_punct, -1, 0, /* punct */
+ cbit_space, -1, 0, /* space */
+ cbit_word, -1, 0, /* word - a Perl extension */
+ cbit_xdigit,-1, 0 /* xdigit */
};
@@ -362,12 +377,15 @@ static int
check_escape(const uschar **ptrptr, int *errorcodeptr, int bracount,
int options, BOOL isclass)
{
-const uschar *ptr = *ptrptr;
+BOOL utf8 = (options & PCRE_UTF8) != 0;
+const uschar *ptr = *ptrptr + 1;
int c, i;
+GETCHARINCTEST(c, ptr); /* Get character value, increment pointer */
+ptr--; /* Set pointer back to the last byte */
+
/* If backslash is at the end of the pattern, it's an error. */
-c = *(++ptr);
if (c == 0) *errorcodeptr = ERR1;
/* Non-alphamerics are literals. For digits or letters, do an initial lookup in
@@ -451,40 +469,44 @@ else
c &= 255; /* Take least significant 8 bits */
break;
- /* \x is complicated when UTF-8 is enabled. \x{ddd} is a character number
- which can be greater than 0xff, but only if the ddd are hex digits. */
+ /* \x is complicated. \x{ddd} is a character number which can be greater
+ than 0xff in utf8 mode, but only if the ddd are hex digits. If not, { is
+ treated as a data character. */
case 'x':
-#ifdef SUPPORT_UTF8
- if (ptr[1] == '{' && (options & PCRE_UTF8) != 0)
+ if (ptr[1] == '{')
{
const uschar *pt = ptr + 2;
- register int count = 0;
+ int count = 0;
+
c = 0;
while ((digitab[*pt] & ctype_xdigit) != 0)
{
- int cc = *pt++;
+ register int cc = *pt++;
+ if (c == 0 && cc == '0') continue; /* Leading zeroes */
count++;
+
#if !EBCDIC /* ASCII coding */
if (cc >= 'a') cc -= 32; /* Convert to upper case */
- c = c * 16 + cc - ((cc < 'A')? '0' : ('A' - 10));
+ c = (c << 4) + cc - ((cc < 'A')? '0' : ('A' - 10));
#else /* EBCDIC coding */
if (cc >= 'a' && cc <= 'z') cc += 64; /* Convert to upper case */
- c = c * 16 + cc - ((cc >= '0')? '0' : ('A' - 10));
+ c = (c << 4) + cc - ((cc >= '0')? '0' : ('A' - 10));
#endif
}
+
if (*pt == '}')
{
- if (c < 0 || count > 8) *errorcodeptr = ERR34;
+ if (c < 0 || count > (utf8? 8 : 2)) *errorcodeptr = ERR34;
ptr = pt;
break;
}
+
/* If the sequence of hex digits does not end with '}', then we don't
recognize this construct; fall through to the normal \x handling. */
}
-#endif
- /* Read just a single hex char */
+ /* Read just a single-byte hex-defined char */
c = 0;
while (i++ < 2 && (digitab[ptr[1]] & ctype_xdigit) != 0)
@@ -560,25 +582,26 @@ escape sequence.
Argument:
ptrptr points to the pattern position pointer
negptr points to a boolean that is set TRUE for negation else FALSE
+ dptr points to an int that is set to the detailed property value
errorcodeptr points to the error code variable
-Returns: value from ucp_type_table, or -1 for an invalid type
+Returns: type value from ucp_type_table, or -1 for an invalid type
*/
static int
-get_ucp(const uschar **ptrptr, BOOL *negptr, int *errorcodeptr)
+get_ucp(const uschar **ptrptr, BOOL *negptr, int *dptr, int *errorcodeptr)
{
int c, i, bot, top;
const uschar *ptr = *ptrptr;
-char name[4];
+char name[32];
c = *(++ptr);
if (c == 0) goto ERROR_RETURN;
*negptr = FALSE;
-/* \P or \p can be followed by a one- or two-character name in {}, optionally
-preceded by ^ for negation. */
+/* \P or \p can be followed by a name in {}, optionally preceded by ^ for
+negation. */
if (c == '{')
{
@@ -587,18 +610,14 @@ if (c == '{')
*negptr = TRUE;
ptr++;
}
- for (i = 0; i <= 2; i++)
+ for (i = 0; i < sizeof(name) - 1; i++)
{
c = *(++ptr);
if (c == 0) goto ERROR_RETURN;
if (c == '}') break;
name[i] = c;
}
- if (c !='}') /* Try to distinguish error cases */
- {
- while (*(++ptr) != 0 && *ptr != '}');
- if (*ptr == '}') goto UNKNOWN_RETURN; else goto ERROR_RETURN;
- }
+ if (c !='}') goto ERROR_RETURN;
name[i] = 0;
}
@@ -619,13 +638,16 @@ top = _pcre_utt_size;
while (bot < top)
{
- i = (bot + top)/2;
+ i = (bot + top) >> 1;
c = strcmp(name, _pcre_utt[i].name);
- if (c == 0) return _pcre_utt[i].value;
+ if (c == 0)
+ {
+ *dptr = _pcre_utt[i].value;
+ return _pcre_utt[i].type;
+ }
if (c > 0) bot = i + 1; else top = i;
}
-UNKNOWN_RETURN:
*errorcodeptr = ERR47;
*ptrptr = ptr;
return -1;
@@ -928,7 +950,7 @@ for (;;)
case OP_PROP:
case OP_NOTPROP:
- cc++;
+ cc += 2;
/* Fall through */
case OP_NOT_DIGIT:
@@ -1488,13 +1510,10 @@ Yield: TRUE when range returned; FALSE when no more
static BOOL
get_othercase_range(int *cptr, int d, int *ocptr, int *odptr)
{
-int c, chartype, othercase, next;
+int c, othercase, next;
for (c = *cptr; c <= d; c++)
- {
- if (_pcre_ucp_findchar(c, &chartype, &othercase) == ucp_L && othercase != 0)
- break;
- }
+ { if ((othercase = _pcre_ucp_othercase(c)) >= 0) break; }
if (c > d) return FALSE;
@@ -1503,9 +1522,7 @@ next = othercase + 1;
for (++c; c <= d; c++)
{
- if (_pcre_ucp_findchar(c, &chartype, &othercase) != ucp_L ||
- othercase != next)
- break;
+ if (_pcre_ucp_othercase(c) != next) break;
next++;
}
@@ -1722,11 +1739,11 @@ for (;; ptr++)
*code++ = OP_ANY;
break;
- /* Character classes. If the included characters are all < 255 in value, we
- build a 32-byte bitmap of the permitted characters, except in the special
- case where there is only one such character. For negated classes, we build
- the map as usual, then invert it at the end. However, we use a different
- opcode so that data characters > 255 can be handled correctly.
+ /* Character classes. If the included characters are all < 256, we build a
+ 32-byte bitmap of the permitted characters, except in the special case
+ where there is only one such character. For negated classes, we build the
+ map as usual, then invert it at the end. However, we use a different opcode
+ so that data characters > 255 can be handled correctly.
If the class contains characters outside the 0-255 range, a different
opcode is compiled. It may optionally have a bit map for characters < 256,
@@ -1817,8 +1834,9 @@ for (;; ptr++)
check_posix_syntax(ptr, &tempptr, cd))
{
BOOL local_negate = FALSE;
- int posix_class, i;
+ int posix_class, taboffset, tabopt;
register const uschar *cbits = cd->cbits;
+ uschar pbits[32];
if (ptr[1] != ':')
{
@@ -1847,32 +1865,46 @@ for (;; ptr++)
if ((options & PCRE_CASELESS) != 0 && posix_class <= 2)
posix_class = 0;
- /* Or into the map we are building up to 3 of the static class
- tables, or their negations. The [:blank:] class sets up the same
- chars as the [:space:] class (all white space). We remove the vertical
- white space chars afterwards. */
+ /* We build the bit map for the POSIX class in a chunk of local store
+ because we may be adding and subtracting from it, and we don't want to
+ subtract bits that may be in the main map already. At the end we or the
+ result into the bit map that is being built. */
posix_class *= 3;
- for (i = 0; i < 3; i++)
+
+ /* Copy in the first table (always present) */
+
+ memcpy(pbits, cbits + posix_class_maps[posix_class],
+ 32 * sizeof(uschar));
+
+ /* If there is a second table, add or remove it as required. */
+
+ taboffset = posix_class_maps[posix_class + 1];
+ tabopt = posix_class_maps[posix_class + 2];
+
+ if (taboffset >= 0)
{
- BOOL blankclass = strncmp((char *)ptr, "blank", 5) == 0;
- int taboffset = posix_class_maps[posix_class + i];
- if (taboffset < 0) break;
- if (local_negate)
- {
- if (i == 0)
- for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+taboffset];
- else
- for (c = 0; c < 32; c++) classbits[c] &= ~cbits[c+taboffset];
- if (blankclass) classbits[1] |= 0x3c;
- }
+ if (tabopt >= 0)
+ for (c = 0; c < 32; c++) pbits[c] |= cbits[c + taboffset];
else
- {
- for (c = 0; c < 32; c++) classbits[c] |= cbits[c+taboffset];
- if (blankclass) classbits[1] &= ~0x3c;
- }
+ for (c = 0; c < 32; c++) pbits[c] &= ~cbits[c + taboffset];
}
+ /* Not see if we need to remove any special characters. An option
+ value of 1 removes vertical space and 2 removes underscore. */
+
+ if (tabopt < 0) tabopt = -tabopt;
+ if (tabopt == 1) pbits[1] &= ~0x3c;
+ else if (tabopt == 2) pbits[11] &= 0x7f;
+
+ /* Add the POSIX table or its complement into the main table that is
+ being built and we are done. */
+
+ if (local_negate)
+ for (c = 0; c < 32; c++) classbits[c] |= ~pbits[c];
+ else
+ for (c = 0; c < 32; c++) classbits[c] |= pbits[c];
+
ptr = tempptr + 1;
class_charcount = 10; /* Set > 1; assumes more than 1 per class */
continue; /* End of POSIX syntax handling */
@@ -1939,12 +1971,14 @@ for (;; ptr++)
case ESC_P:
{
BOOL negated;
- int property = get_ucp(&ptr, &negated, errorcodeptr);
- if (property < 0) goto FAILED;
+ int pdata;
+ int ptype = get_ucp(&ptr, &negated, &pdata, errorcodeptr);
+ if (ptype < 0) goto FAILED;
class_utf8 = TRUE;
*class_utf8data++ = ((-c == ESC_p) != negated)?
XCL_PROP : XCL_NOTPROP;
- *class_utf8data++ = property;
+ *class_utf8data++ = ptype;
+ *class_utf8data++ = pdata;
class_charcount -= 2; /* Not a < 256 character */
}
continue;
@@ -2126,10 +2160,8 @@ for (;; ptr++)
#ifdef SUPPORT_UCP
if ((options & PCRE_CASELESS) != 0)
{
- int chartype;
int othercase;
- if (_pcre_ucp_findchar(c, &chartype, &othercase) >= 0 &&
- othercase > 0)
+ if ((othercase = _pcre_ucp_othercase(c)) >= 0)
{
*class_utf8data++ = XCL_SINGLE;
class_utf8data += _pcre_ord2utf8(othercase, class_utf8data);
@@ -2414,13 +2446,17 @@ for (;; ptr++)
else if (*previous < OP_EODN)
{
uschar *oldcode;
- int prop_type;
+ int prop_type, prop_value;
op_type = OP_TYPESTAR - OP_STAR; /* Use type opcodes */
c = *previous;
OUTPUT_SINGLE_REPEAT:
- prop_type = (*previous == OP_PROP || *previous == OP_NOTPROP)?
- previous[1] : -1;
+ if (*previous == OP_PROP || *previous == OP_NOTPROP)
+ {
+ prop_type = previous[1];
+ prop_value = previous[2];
+ }
+ else prop_type = prop_value = -1;
oldcode = code;
code = previous; /* Usually overwrite previous item */
@@ -2481,7 +2517,7 @@ for (;; ptr++)
/* If the maximum is unlimited, insert an OP_STAR. Before doing so,
we have to insert the character for the previous code. For a repeated
- Unicode property match, there is an extra byte that defines the
+ Unicode property match, there are two extra bytes that define the
required property. In UTF-8 mode, long characters have their length in
c, with the 0x80 bit as a flag. */
@@ -2497,7 +2533,11 @@ for (;; ptr++)
#endif
{
*code++ = c;
- if (prop_type >= 0) *code++ = prop_type;
+ if (prop_type >= 0)
+ {
+ *code++ = prop_type;
+ *code++ = prop_value;
+ }
}
*code++ = OP_STAR + repeat_type;
}
@@ -2516,7 +2556,11 @@ for (;; ptr++)
else
#endif
*code++ = c;
- if (prop_type >= 0) *code++ = prop_type;
+ if (prop_type >= 0)
+ {
+ *code++ = prop_type;
+ *code++ = prop_value;
+ }
repeat_max -= repeat_min;
*code++ = OP_UPTO + repeat_type;
PUT2INC(code, 0, repeat_max);
@@ -2535,11 +2579,15 @@ for (;; ptr++)
#endif
*code++ = c;
- /* For a repeated Unicode property match, there is an extra byte that
- defines the required property. */
+ /* For a repeated Unicode property match, there are two extra bytes that
+ define the required property. */
#ifdef SUPPORT_UCP
- if (prop_type >= 0) *code++ = prop_type;
+ if (prop_type >= 0)
+ {
+ *code++ = prop_type;
+ *code++ = prop_value;
+ }
#endif
}
@@ -3007,11 +3055,20 @@ for (;; ptr++)
goto FAILED;
}
- /* Insert the recursion/subroutine item */
+ /* Insert the recursion/subroutine item, automatically wrapped inside
+ "once" brackets. */
+
+ *code = OP_ONCE;
+ PUT(code, 1, 2 + 2*LINK_SIZE);
+ code += 1 + LINK_SIZE;
*code = OP_RECURSE;
PUT(code, 1, called - cd->start_code);
code += 1 + LINK_SIZE;
+
+ *code = OP_KET;
+ PUT(code, 1, 2 + 2*LINK_SIZE);
+ code += 1 + LINK_SIZE;
}
continue;
@@ -3281,10 +3338,12 @@ for (;; ptr++)
else if (-c == ESC_P || -c == ESC_p)
{
BOOL negated;
- int value = get_ucp(&ptr, &negated, errorcodeptr);
+ int pdata;
+ int ptype = get_ucp(&ptr, &negated, &pdata, errorcodeptr);
previous = code;
*code++ = ((-c == ESC_p) != negated)? OP_PROP : OP_NOTPROP;
- *code++ = value;
+ *code++ = ptype;
+ *code++ = pdata;
}
#endif
@@ -3839,7 +3898,7 @@ Returns: pointer to compiled data block, or NULL on error,
with errorptr and erroroffset set
*/
-EXPORT pcre *
+PCRE_DATA_SCOPE pcre *
pcre_compile(const char *pattern, int options, const char **errorptr,
int *erroroffset, const unsigned char *tables)
{
@@ -3847,7 +3906,7 @@ return pcre_compile2(pattern, options, NULL, errorptr, erroroffset, tables);
}
-EXPORT pcre *
+PCRE_DATA_SCOPE pcre *
pcre_compile2(const char *pattern, int options, int *errorcodeptr,
const char **errorptr, int *erroroffset, const unsigned char *tables)
{
@@ -4040,15 +4099,17 @@ while ((c = *(++ptr)) != 0)
#endif
/* \P and \p are for Unicode properties, but only when the support has
- been compiled. Each item needs 2 bytes. */
+ been compiled. Each item needs 3 bytes. */
else if (-c == ESC_P || -c == ESC_p)
{
#ifdef SUPPORT_UCP
BOOL negated;
- length += 2;
- lastitemlength = 2;
- if (get_ucp(&ptr, &negated, &errorcode) < 0) goto PCRE_ERROR_RETURN;
+ BOOL pdata;
+ length += 3;
+ lastitemlength = 3;
+ if (get_ucp(&ptr, &negated, &pdata, &errorcode) < 0)
+ goto PCRE_ERROR_RETURN;
continue;
#else
errorcode = ERR45;
@@ -4214,7 +4275,7 @@ while ((c = *(++ptr)) != 0)
class_utf8 = TRUE;
length += LINK_SIZE + 2;
}
- length += 2;
+ length += 3;
}
#endif
}
@@ -4477,7 +4538,7 @@ while ((c = *(++ptr)) != 0)
errorcode = ERR29;
goto PCRE_ERROR_RETURN;
}
- length += 1 + LINK_SIZE;
+ length += 3 + 3*LINK_SIZE; /* Allows for the automatic "once" */
/* If this item is quantified, it will get wrapped inside brackets so
as to use the code for quantified brackets. We jump down and use the
@@ -4533,6 +4594,7 @@ while ((c = *(++ptr)) != 0)
if (*ptr == '=' || *ptr == '>')
{
+ length += 2 + 2*LINK_SIZE; /* Allow for the automatic "once" */
while ((compile_block.ctypes[*(++ptr)] & ctype_word) != 0);
if (*ptr != ')')
{
@@ -5000,7 +5062,8 @@ if (reqbyte >= 0 &&
re->options |= PCRE_REQCHSET;
}
-/* Print out the compiled data for debugging */
+/* Print out the compiled data if debugging is enabled. This is never the
+case when building a production library. */
#ifdef DEBUG
@@ -5025,7 +5088,8 @@ if (re->options != 0)
if ((re->options & PCRE_FIRSTSET) != 0)
{
int ch = re->first_byte & 255;
- const char *caseless = ((re->first_byte & REQ_CASELESS) == 0)? "" : " (caseless)";
+ const char *caseless = ((re->first_byte & REQ_CASELESS) == 0)?
+ "" : " (caseless)";
if (isprint(ch)) printf("First char = %c%s\n", ch, caseless);
else printf("First char = \\x%02x%s\n", ch, caseless);
}
@@ -5033,12 +5097,13 @@ if ((re->options & PCRE_FIRSTSET) != 0)
if ((re->options & PCRE_REQCHSET) != 0)
{
int ch = re->req_byte & 255;
- const char *caseless = ((re->req_byte & REQ_CASELESS) == 0)? "" : " (caseless)";
+ const char *caseless = ((re->req_byte & REQ_CASELESS) == 0)?
+ "" : " (caseless)";
if (isprint(ch)) printf("Req char = %c%s\n", ch, caseless);
else printf("Req char = \\x%02x%s\n", ch, caseless);
}
-_pcre_printint(re, stdout);
+pcre_printint(re, stdout);
/* This check is done here in the debugging case so that the code that
was compiled can be seen. */
diff --git a/ext/pcre/pcrelib/pcre_config.c b/ext/pcre/pcrelib/pcre_config.c
index 04029a946..29e6c1a35 100644
--- a/ext/pcre/pcrelib/pcre_config.c
+++ b/ext/pcre/pcrelib/pcre_config.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -58,7 +58,7 @@ Arguments:
Returns: 0 if data returned, negative on error
*/
-EXPORT int
+PCRE_DATA_SCOPE int
pcre_config(int what, void *where)
{
switch (what)
@@ -95,6 +95,10 @@ switch (what)
*((unsigned int *)where) = MATCH_LIMIT;
break;
+ case PCRE_CONFIG_MATCH_LIMIT_RECURSION:
+ *((unsigned int *)where) = MATCH_LIMIT_RECURSION;
+ break;
+
case PCRE_CONFIG_STACKRECURSE:
#ifdef NO_RECURSE
*((int *)where) = 0;
diff --git a/ext/pcre/pcrelib/pcre_dfa_exec.c b/ext/pcre/pcrelib/pcre_dfa_exec.c
index cb3ec186c..b5e01dac3 100644
--- a/ext/pcre/pcrelib/pcre_dfa_exec.c
+++ b/ext/pcre/pcrelib/pcre_dfa_exec.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -288,7 +288,9 @@ const uschar *start_subject = md->start_subject;
const uschar *end_subject = md->end_subject;
const uschar *start_code = md->start_code;
+#ifdef SUPPORT_UTF8
BOOL utf8 = (md->poptions & PCRE_UTF8) != 0;
+#endif
rlevel++;
offsetcount &= (-2);
@@ -480,7 +482,7 @@ for (;;)
const uschar *code;
int state_offset = current_state->offset;
int count, codevalue;
- int chartype, othercase;
+ int chartype, script;
#ifdef DEBUG
printf ("%.*sProcessing state %d c=", rlevel*2-2, SP, state_offset);
@@ -757,19 +759,38 @@ for (;;)
case OP_NOTPROP:
if (clen > 0)
{
- int rqdtype, category;
- category = ucp_findchar(c, &chartype, &othercase);
- rqdtype = code[1];
- if (rqdtype >= 128)
- {
- if ((rqdtype - 128 == category) == (codevalue == OP_PROP))
- { ADD_NEW(state_offset + 2, 0); }
- }
- else
+ BOOL OK;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
+ switch(code[1])
{
- if ((rqdtype == chartype) == (codevalue == OP_PROP))
- { ADD_NEW(state_offset + 2, 0); }
+ case PT_ANY:
+ OK = TRUE;
+ break;
+
+ case PT_LAMP:
+ OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+ break;
+
+ case PT_GC:
+ OK = category == code[2];
+ break;
+
+ case PT_PC:
+ OK = chartype == code[2];
+ break;
+
+ case PT_SC:
+ OK = script == code[2];
+ break;
+
+ /* Should never occur, but keep compilers from grumbling. */
+
+ default:
+ OK = codevalue != OP_PROP;
+ break;
}
+
+ if (OK == (codevalue == OP_PROP)) { ADD_NEW(state_offset + 3, 0); }
}
break;
#endif
@@ -862,14 +883,41 @@ for (;;)
case OP_PROP_EXTRA + OP_TYPEPLUS:
case OP_PROP_EXTRA + OP_TYPEMINPLUS:
count = current_state->count; /* Already matched */
- if (count > 0) { ADD_ACTIVE(state_offset + 3, 0); }
+ if (count > 0) { ADD_ACTIVE(state_offset + 4, 0); }
if (clen > 0)
{
- int category = ucp_findchar(c, &chartype, &othercase);
- int rqdtype = code[2];
- if ((d == OP_PROP) ==
- (rqdtype == ((rqdtype >= 128)? (category + 128) : chartype)))
- { count++; ADD_NEW(state_offset, count); }
+ BOOL OK;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
+ switch(code[2])
+ {
+ case PT_ANY:
+ OK = TRUE;
+ break;
+
+ case PT_LAMP:
+ OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+ break;
+
+ case PT_GC:
+ OK = category == code[3];
+ break;
+
+ case PT_PC:
+ OK = chartype == code[3];
+ break;
+
+ case PT_SC:
+ OK = script == code[3];
+ break;
+
+ /* Should never occur, but keep compilers from grumbling. */
+
+ default:
+ OK = codevalue != OP_PROP;
+ break;
+ }
+
+ if (OK == (d == OP_PROP)) { count++; ADD_NEW(state_offset, count); }
}
break;
@@ -878,7 +926,7 @@ for (;;)
case OP_EXTUNI_EXTRA + OP_TYPEMINPLUS:
count = current_state->count; /* Already matched */
if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
- if (clen > 0 && ucp_findchar(c, &chartype, &othercase) != ucp_M)
+ if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
{
const uschar *nptr = ptr + clen;
int ncount = 0;
@@ -887,7 +935,7 @@ for (;;)
int nd;
int ndlen = 1;
GETCHARLEN(nd, nptr, ndlen);
- if (ucp_findchar(nd, &chartype, &othercase) != ucp_M) break;
+ if (_pcre_ucp_findprop(nd, &chartype, &script) != ucp_M) break;
ncount++;
nptr += ndlen;
}
@@ -899,7 +947,7 @@ for (;;)
/*-----------------------------------------------------------------*/
case OP_PROP_EXTRA + OP_TYPEQUERY:
case OP_PROP_EXTRA + OP_TYPEMINQUERY:
- count = 3;
+ count = 4;
goto QS1;
case OP_PROP_EXTRA + OP_TYPESTAR:
@@ -908,14 +956,41 @@ for (;;)
QS1:
- ADD_ACTIVE(state_offset + 3, 0);
+ ADD_ACTIVE(state_offset + 4, 0);
if (clen > 0)
{
- int category = ucp_findchar(c, &chartype, &othercase);
- int rqdtype = code[2];
- if ((d == OP_PROP) ==
- (rqdtype == ((rqdtype >= 128)? (category + 128) : chartype)))
- { ADD_NEW(state_offset + count, 0); }
+ BOOL OK;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
+ switch(code[2])
+ {
+ case PT_ANY:
+ OK = TRUE;
+ break;
+
+ case PT_LAMP:
+ OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+ break;
+
+ case PT_GC:
+ OK = category == code[3];
+ break;
+
+ case PT_PC:
+ OK = chartype == code[3];
+ break;
+
+ case PT_SC:
+ OK = script == code[3];
+ break;
+
+ /* Should never occur, but keep compilers from grumbling. */
+
+ default:
+ OK = codevalue != OP_PROP;
+ break;
+ }
+
+ if (OK == (d == OP_PROP)) { ADD_NEW(state_offset + count, 0); }
}
break;
@@ -932,7 +1007,7 @@ for (;;)
QS2:
ADD_ACTIVE(state_offset + 2, 0);
- if (clen > 0 && ucp_findchar(c, &chartype, &othercase) != ucp_M)
+ if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
{
const uschar *nptr = ptr + clen;
int ncount = 0;
@@ -941,7 +1016,7 @@ for (;;)
int nd;
int ndlen = 1;
GETCHARLEN(nd, nptr, ndlen);
- if (ucp_findchar(nd, &chartype, &othercase) != ucp_M) break;
+ if (_pcre_ucp_findprop(nd, &chartype, &script) != ucp_M) break;
ncount++;
nptr += ndlen;
}
@@ -954,17 +1029,45 @@ for (;;)
case OP_PROP_EXTRA + OP_TYPEUPTO:
case OP_PROP_EXTRA + OP_TYPEMINUPTO:
if (codevalue != OP_PROP_EXTRA + OP_TYPEEXACT)
- { ADD_ACTIVE(state_offset + 5, 0); }
+ { ADD_ACTIVE(state_offset + 6, 0); }
count = current_state->count; /* Number already matched */
if (clen > 0)
{
- int category = ucp_findchar(c, &chartype, &othercase);
- int rqdtype = code[4];
- if ((d == OP_PROP) ==
- (rqdtype == ((rqdtype >= 128)? (category + 128) : chartype)))
+ BOOL OK;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
+ switch(code[4])
+ {
+ case PT_ANY:
+ OK = TRUE;
+ break;
+
+ case PT_LAMP:
+ OK = chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt;
+ break;
+
+ case PT_GC:
+ OK = category == code[5];
+ break;
+
+ case PT_PC:
+ OK = chartype == code[5];
+ break;
+
+ case PT_SC:
+ OK = script == code[5];
+ break;
+
+ /* Should never occur, but keep compilers from grumbling. */
+
+ default:
+ OK = codevalue != OP_PROP;
+ break;
+ }
+
+ if (OK == (d == OP_PROP))
{
if (++count >= GET2(code, 1))
- { ADD_NEW(state_offset + 5, 0); }
+ { ADD_NEW(state_offset + 6, 0); }
else
{ ADD_NEW(state_offset, count); }
}
@@ -978,7 +1081,7 @@ for (;;)
if (codevalue != OP_EXTUNI_EXTRA + OP_TYPEEXACT)
{ ADD_ACTIVE(state_offset + 4, 0); }
count = current_state->count; /* Number already matched */
- if (clen > 0 && ucp_findchar(c, &chartype, &othercase) != ucp_M)
+ if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
{
const uschar *nptr = ptr + clen;
int ncount = 0;
@@ -987,7 +1090,7 @@ for (;;)
int nd;
int ndlen = 1;
GETCHARLEN(nd, nptr, ndlen);
- if (ucp_findchar(nd, &chartype, &othercase) != ucp_M) break;
+ if (_pcre_ucp_findprop(nd, &chartype, &script) != ucp_M) break;
ncount++;
nptr += ndlen;
}
@@ -1018,17 +1121,17 @@ for (;;)
{
if (c == d) { ADD_NEW(state_offset + dlen + 1, 0); } else
{
+ int othercase;
if (c < 128) othercase = fcc[c]; else
/* If we have Unicode property support, we can use it to test the
- other case of the character, if there is one. The result of
- ucp_findchar() is < 0 if the char isn't found, and othercase is
- returned as zero if there isn't another case. */
+ other case of the character. */
#ifdef SUPPORT_UCP
- if (ucp_findchar(c, &chartype, &othercase) < 0)
+ othercase = _pcre_ucp_othercase(c);
+#else
+ othercase = -1;
#endif
- othercase = -1;
if (d == othercase) { ADD_NEW(state_offset + dlen + 1, 0); }
}
@@ -1050,7 +1153,7 @@ for (;;)
to wait for them to pass before continuing. */
case OP_EXTUNI:
- if (clen > 0 && ucp_findchar(c, &chartype, &othercase) != ucp_M)
+ if (clen > 0 && _pcre_ucp_findprop(c, &chartype, &script) != ucp_M)
{
const uschar *nptr = ptr + clen;
int ncount = 0;
@@ -1058,7 +1161,7 @@ for (;;)
{
int nclen = 1;
GETCHARLEN(c, nptr, nclen);
- if (ucp_findchar(c, &chartype, &othercase) != ucp_M) break;
+ if (_pcre_ucp_findprop(c, &chartype, &script) != ucp_M) break;
ncount++;
nptr += nclen;
}
@@ -1093,10 +1196,10 @@ for (;;)
if ((ims & PCRE_CASELESS) != 0)
{
#ifdef SUPPORT_UTF8
- if (utf8 && c >= 128)
+ if (utf8 && d >= 128)
{
#ifdef SUPPORT_UCP
- if (ucp_findchar(d, &chartype, &otherd) < 0) otherd = -1;
+ otherd = _pcre_ucp_othercase(d);
#endif /* SUPPORT_UCP */
}
else
@@ -1120,10 +1223,10 @@ for (;;)
if ((ims && PCRE_CASELESS) != 0)
{
#ifdef SUPPORT_UTF8
- if (utf8 && c >= 128)
+ if (utf8 && d >= 128)
{
#ifdef SUPPORT_UCP
- if (ucp_findchar(c, &chartype, &otherd) < 0) otherd = -1;
+ otherd = _pcre_ucp_othercase(d);
#endif /* SUPPORT_UCP */
}
else
@@ -1147,10 +1250,10 @@ for (;;)
if ((ims && PCRE_CASELESS) != 0)
{
#ifdef SUPPORT_UTF8
- if (utf8 && c >= 128)
+ if (utf8 && d >= 128)
{
#ifdef SUPPORT_UCP
- if (ucp_findchar(c, &chartype, &otherd) < 0) otherd = -1;
+ otherd = _pcre_ucp_othercase(d);
#endif /* SUPPORT_UCP */
}
else
@@ -1178,10 +1281,10 @@ for (;;)
if ((ims & PCRE_CASELESS) != 0)
{
#ifdef SUPPORT_UTF8
- if (utf8 && c >= 128)
+ if (utf8 && d >= 128)
{
#ifdef SUPPORT_UCP
- if (ucp_findchar(d, &chartype, &otherd) < 0) otherd = -1;
+ otherd = _pcre_ucp_othercase(d);
#endif /* SUPPORT_UCP */
}
else
@@ -1519,7 +1622,7 @@ for (;;)
cb.version = 1; /* Version 1 of the callout block */
cb.callout_number = code[1];
cb.offset_vector = offsets;
- cb.subject = (char *)start_subject;
+ cb.subject = (PCRE_SPTR)start_subject;
cb.subject_length = end_subject - start_subject;
cb.start_match = current_subject - start_subject;
cb.current_position = ptr - start_subject;
@@ -1611,7 +1714,7 @@ Returns: > 0 => number of match offset pairs placed in offsets
< -1 => some kind of unexpected problem
*/
-EXPORT int
+PCRE_DATA_SCOPE int
pcre_dfa_exec(const pcre *argument_re, const pcre_extra *extra_data,
const char *subject, int length, int start_offset, int options, int *offsets,
int offsetcount, int *workspace, int wscount)
@@ -1655,6 +1758,8 @@ if (extra_data != NULL)
if ((flags & PCRE_EXTRA_STUDY_DATA) != 0)
study = (const pcre_study_data *)extra_data->study_data;
if ((flags & PCRE_EXTRA_MATCH_LIMIT) != 0) return PCRE_ERROR_DFA_UMLIMIT;
+ if ((flags & PCRE_EXTRA_MATCH_LIMIT_RECURSION) != 0)
+ return PCRE_ERROR_DFA_UMLIMIT;
if ((flags & PCRE_EXTRA_CALLOUT_DATA) != 0)
match_block.callout_data = extra_data->callout_data;
if ((flags & PCRE_EXTRA_TABLES) != 0)
@@ -1680,7 +1785,9 @@ end_subject = (const unsigned char *)subject + length;
req_byte_ptr = current_subject - 1;
utf8 = (re->options & PCRE_UTF8) != 0;
-anchored = (options & PCRE_ANCHORED) != 0 || (re->options & PCRE_ANCHORED) != 0;
+
+anchored = (options & (PCRE_ANCHORED|PCRE_DFA_RESTART)) != 0 ||
+ (re->options & PCRE_ANCHORED) != 0;
/* The remaining fixed data for passing around. */
@@ -1771,9 +1878,9 @@ for (;;)
/* Advance to a unique first char if possible. If firstline is TRUE, the
start of the match is constrained to the first line of a multiline string.
- Implement this by temporarily adjusting end_subject so that we stop scanning
- at a newline. If the match fails at the newline, later code breaks this loop.
- */
+ Implement this by temporarily adjusting end_subject so that we stop
+ scanning at a newline. If the match fails at the newline, later code breaks
+ this loop. */
if (firstline)
{
diff --git a/ext/pcre/pcrelib/pcre_exec.c b/ext/pcre/pcrelib/pcre_exec.c
index 65173e2ba..ecb32977d 100644
--- a/ext/pcre/pcrelib/pcre_exec.c
+++ b/ext/pcre/pcrelib/pcre_exec.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -54,7 +54,7 @@ are on the heap, not on the stack. */
typedef struct eptrblock {
struct eptrblock *epb_prev;
- const uschar *epb_saved_eptr;
+ USPTR epb_saved_eptr;
} eptrblock;
/* Flag bits for the match() function */
@@ -128,10 +128,10 @@ Returns: TRUE if matched
*/
static BOOL
-match_ref(int offset, register const uschar *eptr, int length, match_data *md,
+match_ref(int offset, register USPTR eptr, int length, match_data *md,
unsigned long int ims)
{
-const uschar *p = md->start_subject + md->offset_vector[offset];
+USPTR p = md->start_subject + md->offset_vector[offset];
#ifdef DEBUG
if (eptr >= md->end_subject)
@@ -169,32 +169,50 @@ return TRUE;
****************************************************************************
RECURSION IN THE match() FUNCTION
-The match() function is highly recursive. Some regular expressions can cause
-it to recurse thousands of times. I was writing for Unix, so I just let it
-call itself recursively. This uses the stack for saving everything that has
-to be saved for a recursive call. On Unix, the stack can be large, and this
-works fine.
+The match() function is highly recursive, though not every recursive call
+increases the recursive depth. Nevertheless, some regular expressions can cause
+it to recurse to a great depth. I was writing for Unix, so I just let it call
+itself recursively. This uses the stack for saving everything that has to be
+saved for a recursive call. On Unix, the stack can be large, and this works
+fine.
-It turns out that on non-Unix systems there are problems with programs that
-use a lot of stack. (This despite the fact that every last chip has oodles
-of memory these days, and techniques for extending the stack have been known
-for decades.) So....
+It turns out that on some non-Unix-like systems there are problems with
+programs that use a lot of stack. (This despite the fact that every last chip
+has oodles of memory these days, and techniques for extending the stack have
+been known for decades.) So....
There is a fudge, triggered by defining NO_RECURSE, which avoids recursive
calls by keeping local variables that need to be preserved in blocks of memory
-obtained from malloc instead instead of on the stack. Macros are used to
+obtained from malloc() instead instead of on the stack. Macros are used to
achieve this so that the actual code doesn't look very different to what it
always used to.
****************************************************************************
***************************************************************************/
-/* These versions of the macros use the stack, as normal */
+/* These versions of the macros use the stack, as normal. There are debugging
+versions and production versions. */
#ifndef NO_RECURSE
#define REGISTER register
-#define RMATCH(rx,ra,rb,rc,rd,re,rf,rg) rx = match(ra,rb,rc,rd,re,rf,rg)
+#ifdef DEBUG
+#define RMATCH(rx,ra,rb,rc,rd,re,rf,rg) \
+ { \
+ printf("match() called in line %d\n", __LINE__); \
+ rx = match(ra,rb,rc,rd,re,rf,rg,rdepth+1); \
+ printf("to line %d\n", __LINE__); \
+ }
+#define RRETURN(ra) \
+ { \
+ printf("match() returned %d from line %d ", ra, __LINE__); \
+ return ra; \
+ }
+#else
+#define RMATCH(rx,ra,rb,rc,rd,re,rf,rg) \
+ rx = match(ra,rb,rc,rd,re,rf,rg,rdepth+1)
#define RRETURN(ra) return ra
+#endif
+
#else
@@ -215,6 +233,7 @@ match(), which never changes. */
newframe->Xims = re;\
newframe->Xeptrb = rf;\
newframe->Xflags = rg;\
+ newframe->Xrdepth = frame->Xrdepth + 1;\
newframe->Xprevframe = frame;\
frame = newframe;\
DPRINTF(("restarting from line %d\n", __LINE__));\
@@ -256,6 +275,7 @@ typedef struct heapframe {
long int Xims;
eptrblock *Xeptrb;
int Xflags;
+ int Xrdepth;
/* Function local variables */
@@ -278,11 +298,11 @@ typedef struct heapframe {
#ifdef SUPPORT_UCP
int Xprop_type;
+ int Xprop_value;
int Xprop_fail_result;
int Xprop_category;
int Xprop_chartype;
- int Xprop_othercase;
- int Xprop_test_against;
+ int Xprop_script;
int *Xprop_test_variable;
#endif
@@ -343,17 +363,18 @@ Arguments:
flags can contain
match_condassert - this is an assertion condition
match_isgroup - this is the start of a bracketed group
+ rdepth the recursion depth
Returns: MATCH_MATCH if matched ) these values are >= 0
MATCH_NOMATCH if failed to match )
a negative PCRE_ERROR_xxx value if aborted by an error condition
- (e.g. stopped by recursion limit)
+ (e.g. stopped by repeated call or recursion limit)
*/
static int
-match(REGISTER const uschar *eptr, REGISTER const uschar *ecode,
+match(REGISTER USPTR eptr, REGISTER const uschar *ecode,
int offset_top, match_data *md, unsigned long int ims, eptrblock *eptrb,
- int flags)
+ int flags, int rdepth)
{
/* These variables do not need to be preserved over recursion in this function,
so they can be ordinary variables in all cases. Mark them with "register"
@@ -381,6 +402,7 @@ frame->Xoffset_top = offset_top;
frame->Xims = ims;
frame->Xeptrb = eptrb;
frame->Xflags = flags;
+frame->Xrdepth = rdepth;
/* This is where control jumps back to to effect "recursion" */
@@ -394,6 +416,7 @@ HEAP_RECURSE:
#define ims frame->Xims
#define eptrb frame->Xeptrb
#define flags frame->Xflags
+#define rdepth frame->Xrdepth
/* Ditto for the local variables */
@@ -418,11 +441,11 @@ HEAP_RECURSE:
#ifdef SUPPORT_UCP
#define prop_type frame->Xprop_type
+#define prop_value frame->Xprop_value
#define prop_fail_result frame->Xprop_fail_result
#define prop_category frame->Xprop_category
#define prop_chartype frame->Xprop_chartype
-#define prop_othercase frame->Xprop_othercase
-#define prop_test_against frame->Xprop_test_against
+#define prop_script frame->Xprop_script
#define prop_test_variable frame->Xprop_test_variable
#endif
@@ -452,20 +475,20 @@ i, and fc and c, can be the same variables. */
#define fc c
-#ifdef SUPPORT_UTF8 /* Many of these variables are used ony */
-const uschar *charptr; /* small blocks of the code. My normal */
-#endif /* style of coding would have declared */
-const uschar *callpat; /* them within each of those blocks. */
-const uschar *data; /* However, in order to accommodate the */
-const uschar *next; /* version of this code that uses an */
-const uschar *pp; /* external "stack" implemented on the */
-const uschar *prev; /* heap, it is easier to declare them */
-const uschar *saved_eptr; /* all here, so the declarations can */
- /* be cut out in a block. The only */
-recursion_info new_recursive; /* declarations within blocks below are */
- /* for variables that do not have to */
-BOOL cur_is_word; /* be preserved over a recursive call */
-BOOL condition; /* to RMATCH(). */
+#ifdef SUPPORT_UTF8 /* Many of these variables are used only */
+const uschar *charptr; /* in small blocks of the code. My normal */
+#endif /* style of coding would have declared */
+const uschar *callpat; /* them within each of those blocks. */
+const uschar *data; /* However, in order to accommodate the */
+const uschar *next; /* version of this code that uses an */
+USPTR pp; /* external "stack" implemented on the */
+const uschar *prev; /* heap, it is easier to declare them all */
+USPTR saved_eptr; /* here, so the declarations can be cut */
+ /* out in a block. The only declarations */
+recursion_info new_recursive; /* within blocks below are for variables */
+ /* that do not have to be preserved over */
+BOOL cur_is_word; /* a recursive call to RMATCH(). */
+BOOL condition;
BOOL minimize;
BOOL prev_is_word;
@@ -473,11 +496,11 @@ unsigned long int original_ims;
#ifdef SUPPORT_UCP
int prop_type;
+int prop_value;
int prop_fail_result;
int prop_category;
int prop_chartype;
-int prop_othercase;
-int prop_test_against;
+int prop_script;
int *prop_test_variable;
#endif
@@ -499,19 +522,24 @@ eptrblock newptrb;
variables. */
#ifdef SUPPORT_UCP
+prop_value = 0;
prop_fail_result = 0;
-prop_test_against = 0;
prop_test_variable = NULL;
#endif
-/* OK, now we can get on with the real code of the function. Recursion is
-specified by the macros RMATCH and RRETURN. When NO_RECURSE is *not* defined,
-these just turn into a recursive call to match() and a "return", respectively.
-However, RMATCH isn't like a function call because it's quite a complicated
-macro. It has to be used in one particular way. This shouldn't, however, impact
-performance when true recursion is being used. */
+/* OK, now we can get on with the real code of the function. Recursive calls
+are specified by the macro RMATCH and RRETURN is used to return. When
+NO_RECURSE is *not* defined, these just turn into a recursive call to match()
+and a "return", respectively (possibly with some debugging if DEBUG is
+defined). However, RMATCH isn't like a function call because it's quite a
+complicated macro. It has to be used in one particular way. This shouldn't,
+however, impact performance when true recursion is being used. */
+
+/* First check that we haven't called match() too many times, or that we
+haven't exceeded the recursive call limit. */
if (md->match_call_count++ >= md->match_limit) RRETURN(PCRE_ERROR_MATCHLIMIT);
+if (rdepth >= md->match_limit_recursion) RRETURN(PCRE_ERROR_RECURSIONLIMIT);
original_ims = ims; /* Save for resetting on ')' */
utf8 = md->utf8; /* Local copy of the flag */
@@ -681,7 +709,7 @@ for (;;)
if (md->recursive != NULL && md->recursive->group_num == 0)
{
recursion_info *rec = md->recursive;
- DPRINTF(("Hit the end in a (?0) recursion\n"));
+ DPRINTF(("End of pattern in a (?0) recursion\n"));
md->recursive = rec->prevrec;
memmove(md->offset_vector, rec->offset_save,
rec->saved_max * sizeof(int));
@@ -800,7 +828,7 @@ for (;;)
cb.version = 1; /* Version 1 of the callout block */
cb.callout_number = ecode[1];
cb.offset_vector = md->offset_vector;
- cb.subject = (const char *)md->start_subject;
+ cb.subject = (PCRE_SPTR)md->start_subject;
cb.subject_length = md->end_subject - md->start_subject;
cb.start_match = md->start_match - md->start_subject;
cb.current_position = eptr - md->start_subject;
@@ -882,12 +910,17 @@ for (;;)
eptrb, match_isgroup);
if (rrc == MATCH_MATCH)
{
+ DPRINTF(("Recursion matched\n"));
md->recursive = new_recursive.prevrec;
if (new_recursive.offset_save != stacksave)
(pcre_free)(new_recursive.offset_save);
RRETURN(MATCH_MATCH);
}
- else if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ else if (rrc != MATCH_NOMATCH)
+ {
+ DPRINTF(("Recursion gave error %d\n", rrc));
+ RRETURN(rrc);
+ }
md->recursive = &new_recursive;
memcpy(md->offset_vector, new_recursive.offset_save,
@@ -1352,23 +1385,43 @@ for (;;)
if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
GETCHARINCTEST(c, eptr);
{
- int chartype, rqdtype;
- int othercase;
- int category = ucp_findchar(c, &chartype, &othercase);
+ int chartype, script;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
- rqdtype = *(++ecode);
- ecode++;
-
- if (rqdtype >= 128)
+ switch(ecode[1])
{
- if ((rqdtype - 128 != category) == (op == OP_PROP))
+ case PT_ANY:
+ if (op == OP_NOTPROP) RRETURN(MATCH_NOMATCH);
+ break;
+
+ case PT_LAMP:
+ if ((chartype == ucp_Lu ||
+ chartype == ucp_Ll ||
+ chartype == ucp_Lt) == (op == OP_NOTPROP))
RRETURN(MATCH_NOMATCH);
- }
- else
- {
- if ((rqdtype != chartype) == (op == OP_PROP))
+ break;
+
+ case PT_GC:
+ if ((ecode[2] != category) == (op == OP_PROP))
+ RRETURN(MATCH_NOMATCH);
+ break;
+
+ case PT_PC:
+ if ((ecode[2] != chartype) == (op == OP_PROP))
+ RRETURN(MATCH_NOMATCH);
+ break;
+
+ case PT_SC:
+ if ((ecode[2] != script) == (op == OP_PROP))
RRETURN(MATCH_NOMATCH);
+ break;
+
+ default:
+ RRETURN(PCRE_ERROR_INTERNAL);
+ break;
}
+
+ ecode += 3;
}
break;
@@ -1379,9 +1432,8 @@ for (;;)
if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
GETCHARINCTEST(c, eptr);
{
- int chartype;
- int othercase;
- int category = ucp_findchar(c, &chartype, &othercase);
+ int chartype, script;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
if (category == ucp_M) RRETURN(MATCH_NOMATCH);
while (eptr < md->end_subject)
{
@@ -1390,7 +1442,7 @@ for (;;)
{
GETCHARLEN(c, eptr, len);
}
- category = ucp_findchar(c, &chartype, &othercase);
+ category = _pcre_ucp_findprop(c, &chartype, &script);
if (category != ucp_M) break;
eptr += len;
}
@@ -1683,8 +1735,8 @@ for (;;)
while (eptr >= pp)
{
RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
- eptr--;
if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ eptr--;
}
}
@@ -1841,16 +1893,12 @@ for (;;)
ecode += length;
/* If we have Unicode property support, we can use it to test the other
- case of the character, if there is one. The result of ucp_findchar() is
- < 0 if the char isn't found, and othercase is returned as zero if there
- isn't one. */
+ case of the character, if there is one. */
if (fc != dc)
{
#ifdef SUPPORT_UCP
- int chartype;
- int othercase;
- if (ucp_findchar(fc, &chartype, &othercase) < 0 || dc != othercase)
+ if (dc != _pcre_ucp_othercase(fc))
#endif
RRETURN(MATCH_NOMATCH);
}
@@ -1918,10 +1966,9 @@ for (;;)
#ifdef SUPPORT_UCP
int othercase;
- int chartype;
if ((ims & PCRE_CASELESS) != 0 &&
- ucp_findchar(fc, &chartype, &othercase) >= 0 &&
- othercase > 0)
+ (othercase = _pcre_ucp_othercase(fc)) >= 0 &&
+ othercase >= 0)
oclength = _pcre_ord2utf8(othercase, occhars);
#endif /* SUPPORT_UCP */
@@ -2408,16 +2455,7 @@ for (;;)
{
prop_fail_result = ctype == OP_NOTPROP;
prop_type = *ecode++;
- if (prop_type >= 128)
- {
- prop_test_against = prop_type - 128;
- prop_test_variable = &prop_category;
- }
- else
- {
- prop_test_against = prop_type;
- prop_test_variable = &prop_chartype;
- }
+ prop_value = *ecode++;
}
else prop_type = -1;
#endif
@@ -2434,14 +2472,68 @@ for (;;)
if (min > 0)
{
#ifdef SUPPORT_UCP
- if (prop_type > 0)
+ if (prop_type >= 0)
{
- for (i = 1; i <= min; i++)
+ switch(prop_type)
{
- GETCHARINC(c, eptr);
- prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
- if ((*prop_test_variable == prop_test_against) == prop_fail_result)
- RRETURN(MATCH_NOMATCH);
+ case PT_ANY:
+ if (prop_fail_result) RRETURN(MATCH_NOMATCH);
+ for (i = 1; i <= min; i++)
+ {
+ if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ }
+ break;
+
+ case PT_LAMP:
+ for (i = 1; i <= min; i++)
+ {
+ if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_chartype == ucp_Lu ||
+ prop_chartype == ucp_Ll ||
+ prop_chartype == ucp_Lt) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_GC:
+ for (i = 1; i <= min; i++)
+ {
+ if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_category == prop_value) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_PC:
+ for (i = 1; i <= min; i++)
+ {
+ if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_chartype == prop_value) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_SC:
+ for (i = 1; i <= min; i++)
+ {
+ if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_script == prop_value) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ default:
+ RRETURN(PCRE_ERROR_INTERNAL);
+ break;
}
}
@@ -2453,7 +2545,7 @@ for (;;)
for (i = 1; i <= min; i++)
{
GETCHARINCTEST(c, eptr);
- prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH);
while (eptr < md->end_subject)
{
@@ -2462,7 +2554,7 @@ for (;;)
{
GETCHARLEN(c, eptr, len);
}
- prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category != ucp_M) break;
eptr += len;
}
@@ -2624,17 +2716,78 @@ for (;;)
if (minimize)
{
#ifdef SUPPORT_UCP
- if (prop_type > 0)
+ if (prop_type >= 0)
{
- for (fi = min;; fi++)
+ switch(prop_type)
{
- RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
- if (rrc != MATCH_NOMATCH) RRETURN(rrc);
- if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
- GETCHARINC(c, eptr);
- prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
- if ((*prop_test_variable == prop_test_against) == prop_fail_result)
- RRETURN(MATCH_NOMATCH);
+ case PT_ANY:
+ for (fi = min;; fi++)
+ {
+ RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+ if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ if (prop_fail_result) RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_LAMP:
+ for (fi = min;; fi++)
+ {
+ RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+ if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_chartype == ucp_Lu ||
+ prop_chartype == ucp_Ll ||
+ prop_chartype == ucp_Lt) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_GC:
+ for (fi = min;; fi++)
+ {
+ RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+ if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_category == prop_value) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_PC:
+ for (fi = min;; fi++)
+ {
+ RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+ if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_chartype == prop_value) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ case PT_SC:
+ for (fi = min;; fi++)
+ {
+ RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);
+ if (rrc != MATCH_NOMATCH) RRETURN(rrc);
+ if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
+ GETCHARINC(c, eptr);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_script == prop_value) == prop_fail_result)
+ RRETURN(MATCH_NOMATCH);
+ }
+ break;
+
+ default:
+ RRETURN(PCRE_ERROR_INTERNAL);
+ break;
}
}
@@ -2649,7 +2802,7 @@ for (;;)
if (rrc != MATCH_NOMATCH) RRETURN(rrc);
if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);
GETCHARINCTEST(c, eptr);
- prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH);
while (eptr < md->end_subject)
{
@@ -2658,7 +2811,7 @@ for (;;)
{
GETCHARLEN(c, eptr, len);
}
- prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category != ucp_M) break;
eptr += len;
}
@@ -2783,17 +2936,74 @@ for (;;)
pp = eptr; /* Remember where we started */
#ifdef SUPPORT_UCP
- if (prop_type > 0)
+ if (prop_type >= 0)
{
- for (i = min; i < max; i++)
+ switch(prop_type)
{
- int len = 1;
- if (eptr >= md->end_subject) break;
- GETCHARLEN(c, eptr, len);
- prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
- if ((*prop_test_variable == prop_test_against) == prop_fail_result)
- break;
- eptr+= len;
+ case PT_ANY:
+ for (i = min; i < max; i++)
+ {
+ int len = 1;
+ if (eptr >= md->end_subject) break;
+ GETCHARLEN(c, eptr, len);
+ if (prop_fail_result) break;
+ eptr+= len;
+ }
+ break;
+
+ case PT_LAMP:
+ for (i = min; i < max; i++)
+ {
+ int len = 1;
+ if (eptr >= md->end_subject) break;
+ GETCHARLEN(c, eptr, len);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_chartype == ucp_Lu ||
+ prop_chartype == ucp_Ll ||
+ prop_chartype == ucp_Lt) == prop_fail_result)
+ break;
+ eptr+= len;
+ }
+ break;
+
+ case PT_GC:
+ for (i = min; i < max; i++)
+ {
+ int len = 1;
+ if (eptr >= md->end_subject) break;
+ GETCHARLEN(c, eptr, len);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_category == prop_value) == prop_fail_result)
+ break;
+ eptr+= len;
+ }
+ break;
+
+ case PT_PC:
+ for (i = min; i < max; i++)
+ {
+ int len = 1;
+ if (eptr >= md->end_subject) break;
+ GETCHARLEN(c, eptr, len);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_chartype == prop_value) == prop_fail_result)
+ break;
+ eptr+= len;
+ }
+ break;
+
+ case PT_SC:
+ for (i = min; i < max; i++)
+ {
+ int len = 1;
+ if (eptr >= md->end_subject) break;
+ GETCHARLEN(c, eptr, len);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
+ if ((prop_script == prop_value) == prop_fail_result)
+ break;
+ eptr+= len;
+ }
+ break;
}
/* eptr is now past the end of the maximum run */
@@ -2816,7 +3026,7 @@ for (;;)
{
if (eptr >= md->end_subject) break;
GETCHARINCTEST(c, eptr);
- prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category == ucp_M) break;
while (eptr < md->end_subject)
{
@@ -2825,7 +3035,7 @@ for (;;)
{
GETCHARLEN(c, eptr, len);
}
- prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category != ucp_M) break;
eptr += len;
}
@@ -2846,7 +3056,7 @@ for (;;)
{
GETCHARLEN(c, eptr, len);
}
- prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);
+ prop_category = _pcre_ucp_findprop(c, &prop_chartype, &prop_script);
if (prop_category != ucp_M) break;
eptr--;
}
@@ -3200,9 +3410,9 @@ Returns: > 0 => success; value is the number of elements filled in
< -1 => some kind of unexpected problem
*/
-EXPORT int
+PCRE_DATA_SCOPE int
pcre_exec(const pcre *argument_re, const pcre_extra *extra_data,
- const char *subject, int length, int start_offset, int options, int *offsets,
+ PCRE_SPTR subject, int length, int start_offset, int options, int *offsets,
int offsetcount)
{
int rc, resetcount, ocount;
@@ -3219,9 +3429,9 @@ BOOL req_byte_caseless = FALSE;
match_data match_block;
const uschar *tables;
const uschar *start_bits = NULL;
-const uschar *start_match = (const uschar *)subject + start_offset;
-const uschar *end_subject;
-const uschar *req_byte_ptr = start_match - 1;
+USPTR start_match = (USPTR)subject + start_offset;
+USPTR end_subject;
+USPTR req_byte_ptr = start_match - 1;
pcre_study_data internal_study;
const pcre_study_data *study;
@@ -3242,6 +3452,7 @@ the default values. */
study = NULL;
match_block.match_limit = MATCH_LIMIT;
+match_block.match_limit_recursion = MATCH_LIMIT_RECURSION;
match_block.callout_data = NULL;
/* The table pointer is always in native byte order. */
@@ -3255,6 +3466,8 @@ if (extra_data != NULL)
study = (const pcre_study_data *)extra_data->study_data;
if ((flags & PCRE_EXTRA_MATCH_LIMIT) != 0)
match_block.match_limit = extra_data->match_limit;
+ if ((flags & PCRE_EXTRA_MATCH_LIMIT_RECURSION) != 0)
+ match_block.match_limit_recursion = extra_data->match_limit_recursion;
if ((flags & PCRE_EXTRA_CALLOUT_DATA) != 0)
match_block.callout_data = extra_data->callout_data;
if ((flags & PCRE_EXTRA_TABLES) != 0) tables = extra_data->tables;
@@ -3289,7 +3502,7 @@ firstline = (re->options & PCRE_FIRSTLINE) != 0;
match_block.start_code = (const uschar *)external_re + re->name_table_offset +
re->name_count * re->name_entry_size;
-match_block.start_subject = (const uschar *)subject;
+match_block.start_subject = (USPTR)subject;
match_block.start_offset = start_offset;
match_block.end_subject = match_block.start_subject + length;
end_subject = match_block.end_subject;
@@ -3415,7 +3628,7 @@ the loop runs just once. */
do
{
- const uschar *save_end_subject = end_subject;
+ USPTR save_end_subject = end_subject;
/* Reset the maximum number of extractions we might see. */
@@ -3434,7 +3647,7 @@ do
if (firstline)
{
- const uschar *t = start_match;
+ USPTR t = start_match;
while (t < save_end_subject && *t != '\n') t++;
end_subject = t;
}
@@ -3504,7 +3717,7 @@ do
end_subject - start_match < REQ_BYTE_MAX &&
!match_block.partial)
{
- register const uschar *p = start_match + ((first_byte >= 0)? 1 : 0);
+ register USPTR p = start_match + ((first_byte >= 0)? 1 : 0);
/* We don't need to repeat the search if we haven't yet reached the
place we found it at last time. */
@@ -3550,7 +3763,7 @@ do
match_block.match_call_count = 0;
rc = match(start_match, match_block.start_code, 2, &match_block, ims, NULL,
- match_isgroup);
+ match_isgroup, 0);
/* When the result is no match, if the subject's first character was a
newline and the PCRE_FIRSTLINE option is set, break (which will return
diff --git a/ext/pcre/pcrelib/pcre_fullinfo.c b/ext/pcre/pcrelib/pcre_fullinfo.c
index ac80e65e2..4a8edc6f4 100644
--- a/ext/pcre/pcrelib/pcre_fullinfo.c
+++ b/ext/pcre/pcrelib/pcre_fullinfo.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -61,7 +61,7 @@ Arguments:
Returns: 0 if data returned, negative on error
*/
-EXPORT int
+PCRE_DATA_SCOPE int
pcre_fullinfo(const pcre *argument_re, const pcre_extra *extra_data, int what,
void *where)
{
diff --git a/ext/pcre/pcrelib/pcre_get.c b/ext/pcre/pcrelib/pcre_get.c
index fc4a14ac1..674625a0e 100644
--- a/ext/pcre/pcrelib/pcre_get.c
+++ b/ext/pcre/pcrelib/pcre_get.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
diff --git a/ext/pcre/pcrelib/pcre_globals.c b/ext/pcre/pcrelib/pcre_globals.c
index 1a839802b..f829acfb1 100644
--- a/ext/pcre/pcrelib/pcre_globals.c
+++ b/ext/pcre/pcrelib/pcre_globals.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
diff --git a/ext/pcre/pcrelib/pcre_info.c b/ext/pcre/pcrelib/pcre_info.c
index 228949d0c..b318b93ea 100644
--- a/ext/pcre/pcrelib/pcre_info.c
+++ b/ext/pcre/pcrelib/pcre_info.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -68,7 +68,7 @@ Returns: number of capturing subpatterns
or negative values on error
*/
-EXPORT int
+PCRE_DATA_SCOPE int
pcre_info(const pcre *argument_re, int *optptr, int *first_byte)
{
real_pcre internal_re;
diff --git a/ext/pcre/pcrelib/pcre_internal.h b/ext/pcre/pcrelib/pcre_internal.h
index bffab024c..386ed3ddf 100644
--- a/ext/pcre/pcrelib/pcre_internal.h
+++ b/ext/pcre/pcrelib/pcre_internal.h
@@ -7,7 +7,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -42,12 +42,14 @@ POSSIBILITY OF SUCH DAMAGE.
modules, but which are not relevant to the exported API. This includes some
functions whose names all begin with "_pcre_". */
+#ifndef PCRE_INTERNAL_H
+#define PCRE_INTERNAL_H
/* Define DEBUG to get debugging output on stdout. */
-/****
+#if 0
#define DEBUG
-****/
+#endif
/* Use a macro for debugging printing, 'cause that eliminates the use of #ifdef
inline, and there are *still* stupid compilers about that don't like indented
@@ -116,14 +118,27 @@ Unix, where it is defined in sys/types, so use "uschar" instead. */
typedef unsigned char uschar;
-/* Include the public PCRE header */
-
-#include "pcre.h"
+/* When PCRE is compiled as a C++ library, the subject pointer can be replaced
+with a custom type. This makes it possible, for example, to allow pcre_exec()
+to process subject strings that are discontinuous by using a smart pointer
+class. It must always be possible to inspect all of the subject string in
+pcre_exec() because of the way it backtracks. Two macros are required in the
+normal case, for sign-unspecified and unsigned char pointers. The former is
+used for the external interface and appears in pcre.h, which is why its name
+must begin with PCRE_. */
+
+#ifdef CUSTOM_SUBJECT_PTR
+#define PCRE_SPTR CUSTOM_SUBJECT_PTR
+#define USPTR CUSTOM_SUBJECT_PTR
+#else
+#define PCRE_SPTR const char *
+#define USPTR const unsigned char *
+#endif
-/* Include the (copy of) the public ucp header, changing the external name into
-a private one. This does no harm, even if we aren't compiling UCP support. */
+/* Include the public PCRE header and the definitions of UCP character property
+values. */
-#define ucp_findchar _pcre_ucp_findchar
+#include "pcre.h"
#include "ucp.h"
/* When compiling for use with the Virtual Pascal compiler, these functions
@@ -152,10 +167,11 @@ case in PCRE. */
void *
pcre_memmove(unsigned char *dest, const unsigned char *src, size_t n)
{
-int i;
+size_t i;
dest += n;
src += n;
for (i = 0; i < n; ++i) *(--dest) = *(--src);
+return dest;
}
#define memmove(a, b, c) pcre_memmove(a, b, c)
#endif /* not HAVE_BCOPY */
@@ -449,6 +465,26 @@ ESC_n is defined as yet another macro, which is set in config.h to either \n
#define ESC_tee '\t'
#endif
+/* Codes for different types of Unicode property */
+
+#define PT_ANY 0 /* Any property - matches all chars */
+#define PT_LAMP 1 /* L& - the union of Lu, Ll, Lt */
+#define PT_GC 2 /* General characteristic (e.g. L) */
+#define PT_PC 3 /* Particular characteristic (e.g. Lu) */
+#define PT_SC 4 /* Script (e.g. Han) */
+
+/* Flag bits and data types for the extended class (OP_XCLASS) for classes that
+contain UTF-8 characters with values greater than 255. */
+
+#define XCL_NOT 0x01 /* Flag: this is a negative class */
+#define XCL_MAP 0x02 /* Flag: a 32-byte map is present */
+
+#define XCL_END 0 /* Marks end of individual items */
+#define XCL_SINGLE 1 /* Single item (one multibyte char) follows */
+#define XCL_RANGE 2 /* A range (two multibyte chars) follows */
+#define XCL_PROP 3 /* Unicode property (2-byte property code follows) */
+#define XCL_NOTPROP 4 /* Unicode inverted property (ditto) */
+
/* These are escaped items that aren't just an encoding of a particular data
value such as \n. They must have non-zero values, as check_escape() returns
their negation. Also, they must appear in the same order as in the opcode
@@ -464,19 +500,6 @@ enum { ESC_A = 1, ESC_G, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s, ESC_W,
ESC_w, ESC_dum1, ESC_C, ESC_P, ESC_p, ESC_X, ESC_Z, ESC_z, ESC_E,
ESC_Q, ESC_REF };
-/* Flag bits and data types for the extended class (OP_XCLASS) for classes that
-contain UTF-8 characters with values greater than 255. */
-
-#define XCL_NOT 0x01 /* Flag: this is a negative class */
-#define XCL_MAP 0x02 /* Flag: a 32-byte map is present */
-
-#define XCL_END 0 /* Marks end of individual items */
-#define XCL_SINGLE 1 /* Single item (one multibyte char) follows */
-#define XCL_RANGE 2 /* A range (two multibyte chars) follows */
-#define XCL_PROP 3 /* Unicode property (one property code) follows */
-#define XCL_NOTPROP 4 /* Unicode inverted property (ditto) */
-
-
/* Opcode table: OP_BRA must be last, as all values >= it are used for brackets
that extract substrings. Starting from 1 (i.e. after OP_END), the values up to
OP_EOD must correspond in order to the list of escapes immediately above.
@@ -640,7 +663,7 @@ in UTF-8 mode. The code that uses this table must know about such things. */
1, /* End */ \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* \A, \G, \B, \B, \D, \d, \S, \s, \W, \w */ \
1, 1, /* Any, Anybyte */ \
- 2, 2, 1, /* NOTPROP, PROP, EXTUNI */ \
+ 3, 3, 1, /* NOTPROP, PROP, EXTUNI */ \
1, 1, 2, 1, 1, /* \Z, \z, Opt, ^, $ */ \
2, /* Char - the minimum length */ \
2, /* Charnc - the minimum length */ \
@@ -772,7 +795,7 @@ typedef struct recursion_info {
struct recursion_info *prevrec; /* Previous recursion record (or NULL) */
int group_num; /* Number of group that was called */
const uschar *after_call; /* "Return value": points after the call in the expr */
- const uschar *save_start; /* Old value of md->start_match */
+ USPTR save_start; /* Old value of md->start_match */
int *offset_save; /* Pointer to start of saved offsets */
int saved_max; /* Number of saved offsets */
} recursion_info;
@@ -791,8 +814,9 @@ struct heapframe;
doing traditional NFA matching, so that they are thread-safe. */
typedef struct match_data {
- unsigned long int match_call_count; /* As it says */
- unsigned long int match_limit;/* As it says */
+ unsigned long int match_call_count; /* As it says */
+ unsigned long int match_limit; /* As it says */
+ unsigned long int match_limit_recursion; /* As it says */
int *offset_vector; /* Offset vector */
int offset_end; /* One past the end */
int offset_max; /* The maximum usable for return data */
@@ -807,10 +831,10 @@ typedef struct match_data {
BOOL partial; /* PARTIAL flag */
BOOL hitend; /* Hit the end of the subject at some point */
const uschar *start_code; /* For use when recursing */
- const uschar *start_subject; /* Start of the subject string */
- const uschar *end_subject; /* End of the subject string */
- const uschar *start_match; /* Start of this match attempt */
- const uschar *end_match_ptr; /* Subject position at end match */
+ USPTR start_subject; /* Start of the subject string */
+ USPTR end_subject; /* End of the subject string */
+ USPTR start_match; /* Start of this match attempt */
+ USPTR end_match_ptr; /* Subject position at end match */
int end_offset_top; /* Highwater mark at end of match */
int capture_last; /* Most recent capture number */
int start_offset; /* The start offset value */
@@ -865,12 +889,13 @@ total length. */
#define ctypes_offset (cbits_offset + cbit_length)
#define tables_length (ctypes_offset + 256)
-/* Layout of the UCP type table that translates property names into codes for
-ucp_findchar(). */
+/* Layout of the UCP type table that translates property names into types and
+codes. */
typedef struct {
const char *name;
- int value;
+ pcre_uint16 type;
+ pcre_uint16 value;
} ucp_type_table;
@@ -899,11 +924,13 @@ one of the exported public functions. They have to be "external" in the C
sense, but are not part of the PCRE public API. */
extern int _pcre_ord2utf8(int, uschar *);
-extern void _pcre_printint(pcre *, FILE *);
extern real_pcre * _pcre_try_flipped(const real_pcre *, real_pcre *,
const pcre_study_data *, pcre_study_data *);
-extern int _pcre_ucp_findchar(const int, int *, int *);
+extern int _pcre_ucp_findprop(const int, int *, int *);
+extern int _pcre_ucp_othercase(const int);
extern int _pcre_valid_utf8(const uschar *, int);
extern BOOL _pcre_xclass(int, const uschar *);
+#endif
+
/* End of pcre_internal.h */
diff --git a/ext/pcre/pcrelib/pcre_maketables.c b/ext/pcre/pcrelib/pcre_maketables.c
index c4954b264..abc272f49 100644
--- a/ext/pcre/pcrelib/pcre_maketables.c
+++ b/ext/pcre/pcrelib/pcre_maketables.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -86,29 +86,22 @@ for (i = 0; i < 256; i++) *p++ = tolower(i);
for (i = 0; i < 256; i++) *p++ = islower(i)? toupper(i) : tolower(i);
-/* Then the character class tables. Don't try to be clever and save effort
-on exclusive ones - in some locales things may be different. Note that the
-table for "space" includes everything "isspace" gives, including VT in the
-default locale. This makes it work for the POSIX class [:space:]. */
+/* Then the character class tables. Don't try to be clever and save effort on
+exclusive ones - in some locales things may be different. Note that the table
+for "space" includes everything "isspace" gives, including VT in the default
+locale. This makes it work for the POSIX class [:space:]. Note also that it is
+possible for a character to be alnum or alpha without being lower or upper,
+such as "male and female ordinals" (\xAA and \xBA) in the fr_FR locale (at
+least under Debian Linux's locales as of 12/2005). So we must test for alnum
+specially. */
memset(p, 0, cbit_length);
for (i = 0; i < 256; i++)
{
- if (isdigit(i))
- {
- p[cbit_digit + i/8] |= 1 << (i&7);
- p[cbit_word + i/8] |= 1 << (i&7);
- }
- if (isupper(i))
- {
- p[cbit_upper + i/8] |= 1 << (i&7);
- p[cbit_word + i/8] |= 1 << (i&7);
- }
- if (islower(i))
- {
- p[cbit_lower + i/8] |= 1 << (i&7);
- p[cbit_word + i/8] |= 1 << (i&7);
- }
+ if (isdigit(i)) p[cbit_digit + i/8] |= 1 << (i&7);
+ if (isupper(i)) p[cbit_upper + i/8] |= 1 << (i&7);
+ if (islower(i)) p[cbit_lower + i/8] |= 1 << (i&7);
+ if (isalnum(i)) p[cbit_word + i/8] |= 1 << (i&7);
if (i == '_') p[cbit_word + i/8] |= 1 << (i&7);
if (isspace(i)) p[cbit_space + i/8] |= 1 << (i&7);
if (isxdigit(i))p[cbit_xdigit + i/8] |= 1 << (i&7);
diff --git a/ext/pcre/pcrelib/pcre_ord2utf8.c b/ext/pcre/pcrelib/pcre_ord2utf8.c
index f6a06fc6e..fc4d6de81 100644
--- a/ext/pcre/pcrelib/pcre_ord2utf8.c
+++ b/ext/pcre/pcrelib/pcre_ord2utf8.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -59,7 +59,7 @@ Arguments:
Returns: number of characters placed in the buffer
*/
-EXPORT int
+int
_pcre_ord2utf8(int cvalue, uschar *buffer)
{
register int i, j;
diff --git a/ext/pcre/pcrelib/pcre_printint.c b/ext/pcre/pcrelib/pcre_printint.src
index d18f39925..34f52d114 100644
--- a/ext/pcre/pcrelib/pcre_printint.c
+++ b/ext/pcre/pcrelib/pcre_printint.src
@@ -38,12 +38,15 @@ POSSIBILITY OF SUCH DAMAGE.
*/
-/* This module contains an PCRE private debugging function for printing out the
+/* This module contains a PCRE private debugging function for printing out the
internal form of a compiled regular expression, along with some supporting
-local functions. */
+local functions. This source file is used in two places:
+(1) It is #included by pcre_compile.c when it is compiled in debugging mode
+(DEBUG defined in pcre_internal.h). It is not included in production compiles.
-#include "pcre_internal.h"
+(2) It is always #included by pcretest.c, which can be asked to print out a
+compiled regex for debugging purposes. */
static const char *OP_names[] = { OP_NAME_LIST };
@@ -98,16 +101,18 @@ else
*************************************************/
static const char *
-get_ucpname(int property)
+get_ucpname(int ptype, int pvalue)
{
#ifdef SUPPORT_UCP
int i;
for (i = _pcre_utt_size; i >= 0; i--)
{
- if (property == _pcre_utt[i].value) break;
+ if (ptype == _pcre_utt[i].type && pvalue == _pcre_utt[i].value) break;
}
return (i >= 0)? _pcre_utt[i].name : "??";
#else
+ptype = ptype; /* Avoid compiler warning */
+pvalue = pvalue;
return "??";
#endif
}
@@ -121,8 +126,8 @@ return "??";
/* Make this function work for a regex with integers either byte order.
However, we assume that what we are passed is a compiled regex. */
-EXPORT void
-_pcre_printint(pcre *external_re, FILE *f)
+static void
+pcre_printint(pcre *external_re, FILE *f)
{
real_pcre *re = (real_pcre *)external_re;
uschar *codestart, *code;
@@ -247,8 +252,8 @@ for(;;)
fprintf(f, "%s", OP_names[code[1]]);
if (code[1] == OP_PROP || code[1] == OP_NOTPROP)
{
- fprintf(f, " %s ", get_ucpname(code[2]));
- extra = 1;
+ fprintf(f, " %s ", get_ucpname(code[2], code[3]));
+ extra = 2;
}
}
else extra = print_char(f, code+1, utf8);
@@ -272,8 +277,8 @@ for(;;)
fprintf(f, " %s", OP_names[code[3]]);
if (code[3] == OP_PROP || code[3] == OP_NOTPROP)
{
- fprintf(f, " %s ", get_ucpname(code[4]));
- extra = 1;
+ fprintf(f, " %s ", get_ucpname(code[4], code[5]));
+ extra = 2;
}
fprintf(f, "{");
if (*code != OP_TYPEEXACT) fprintf(f, "0,");
@@ -323,7 +328,7 @@ for(;;)
case OP_PROP:
case OP_NOTPROP:
- fprintf(f, " %s %s", OP_names[*code], get_ucpname(code[1]));
+ fprintf(f, " %s %s", OP_names[*code], get_ucpname(code[1], code[2]));
break;
/* OP_XCLASS can only occur in UTF-8 mode. However, there's no harm in
@@ -386,11 +391,15 @@ for(;;)
{
if (ch == XCL_PROP)
{
- fprintf(f, "\\p{%s}", get_ucpname(*ccode++));
+ int ptype = *ccode++;
+ int pvalue = *ccode++;
+ fprintf(f, "\\p{%s}", get_ucpname(ptype, pvalue));
}
else if (ch == XCL_NOTPROP)
{
- fprintf(f, "\\P{%s}", get_ucpname(*ccode++));
+ int ptype = *ccode++;
+ int pvalue = *ccode++;
+ fprintf(f, "\\P{%s}", get_ucpname(ptype, pvalue));
}
else
{
@@ -432,6 +441,12 @@ for(;;)
if (*ccode == OP_CRMINRANGE) fprintf(f, "?");
extra += _pcre_OP_lengths[*ccode];
break;
+
+ /* Do nothing if it's not a repeat; this code stops picky compilers
+ warning about the lack of a default code path. */
+
+ default:
+ break;
}
}
break;
@@ -448,4 +463,4 @@ for(;;)
}
}
-/* End of pcre_printint.c */
+/* End of pcre_printint.src */
diff --git a/ext/pcre/pcrelib/pcre_refcount.c b/ext/pcre/pcrelib/pcre_refcount.c
index 35a7ee869..e6965812e 100644
--- a/ext/pcre/pcrelib/pcre_refcount.c
+++ b/ext/pcre/pcrelib/pcre_refcount.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -63,7 +63,7 @@ Returns: the (possibly updated) count value (a non-negative number), or
a negative error number
*/
-EXPORT int
+PCRE_DATA_SCOPE int
pcre_refcount(pcre *argument_re, int adjust)
{
real_pcre *re = (real_pcre *)argument_re;
diff --git a/ext/pcre/pcrelib/pcre_scanner.cc b/ext/pcre/pcrelib/pcre_scanner.cc
index 4a66fdf0b..29e0d8400 100644
--- a/ext/pcre/pcrelib/pcre_scanner.cc
+++ b/ext/pcre/pcrelib/pcre_scanner.cc
@@ -30,7 +30,6 @@
// Author: Sanjay Ghemawat
#include <vector>
-#include <algorithm> // for count()
#include <assert.h>
#include "config.h"
#include "pcre_scanner.h"
@@ -90,7 +89,12 @@ void Scanner::EnableSkip() {
int Scanner::LineNumber() const {
// TODO: Make it more efficient by keeping track of the last point
// where we computed line numbers and counting newlines since then.
- return 1 + std::count(data_.data(), input_.data(), '\n');
+ // We could use std:count, but not all systems have it. :-(
+ int count = 1;
+ for (const char* p = data_.data(); p < input_.data(); ++p)
+ if (*p == '\n')
+ ++count;
+ return count;
}
int Scanner::Offset() const {
diff --git a/ext/pcre/pcrelib/pcre_scanner_unittest.cc b/ext/pcre/pcrelib/pcre_scanner_unittest.cc
index e000a078d..756823cbb 100644
--- a/ext/pcre/pcrelib/pcre_scanner_unittest.cc
+++ b/ext/pcre/pcrelib/pcre_scanner_unittest.cc
@@ -68,6 +68,7 @@ static void TestScanner() {
s.Consume(re, &var, &number);
CHECK_EQ(var, "alpha");
CHECK_EQ(number, 1);
+ CHECK_EQ(s.LineNumber(), 3);
s.GetNextComments(&comments);
CHECK_EQ(comments.size(), 1);
CHECK_EQ(comments[0].as_string(), " // this sets alpha\n");
diff --git a/ext/pcre/pcrelib/pcre_study.c b/ext/pcre/pcrelib/pcre_study.c
index 7c10c0491..d3ea04ff7 100644
--- a/ext/pcre/pcrelib/pcre_study.c
+++ b/ext/pcre/pcrelib/pcre_study.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -401,7 +401,7 @@ Returns: pointer to a pcre_extra block, with study_data filled in and the
NULL on error or if no optimization possible
*/
-EXPORT pcre_extra *
+PCRE_DATA_SCOPE pcre_extra *
pcre_study(const pcre *external_re, int options, const char **errorptr)
{
uschar start_bits[32];
diff --git a/ext/pcre/pcrelib/pcre_tables.c b/ext/pcre/pcrelib/pcre_tables.c
index 4f442eae0..480257cab 100644
--- a/ext/pcre/pcrelib/pcre_tables.c
+++ b/ext/pcre/pcrelib/pcre_tables.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -39,14 +39,16 @@ POSSIBILITY OF SUCH DAMAGE.
/* This module contains some fixed tables that are used by more than one of the
-PCRE code modules. */
+PCRE code modules. The tables are also #included by the pcretest program, which
+uses macros to change their names from _pcre_xxx to xxxx, thereby avoiding name
+clashes with the library. */
#include "pcre_internal.h"
/* Table of sizes for the fixed-length opcodes. It's defined in a macro so that
-the definition is next to the definition of the opcodes in internal.h. */
+the definition is next to the definition of the opcodes in pcre_internal.h. */
const uschar _pcre_OP_lengths[] = { OP_LENGTHS };
@@ -80,48 +82,110 @@ const uschar _pcre_utf8_table4[] = {
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 };
-/* This table translates Unicode property names into code values for the
-ucp_findchar() function. It is used by pcretest as well as by the library
-functions. */
+/* This table translates Unicode property names into type and code values. It
+is searched by binary chop, so must be in collating sequence of name. */
const ucp_type_table _pcre_utt[] = {
- { "C", 128 + ucp_C },
- { "Cc", ucp_Cc },
- { "Cf", ucp_Cf },
- { "Cn", ucp_Cn },
- { "Co", ucp_Co },
- { "Cs", ucp_Cs },
- { "L", 128 + ucp_L },
- { "Ll", ucp_Ll },
- { "Lm", ucp_Lm },
- { "Lo", ucp_Lo },
- { "Lt", ucp_Lt },
- { "Lu", ucp_Lu },
- { "M", 128 + ucp_M },
- { "Mc", ucp_Mc },
- { "Me", ucp_Me },
- { "Mn", ucp_Mn },
- { "N", 128 + ucp_N },
- { "Nd", ucp_Nd },
- { "Nl", ucp_Nl },
- { "No", ucp_No },
- { "P", 128 + ucp_P },
- { "Pc", ucp_Pc },
- { "Pd", ucp_Pd },
- { "Pe", ucp_Pe },
- { "Pf", ucp_Pf },
- { "Pi", ucp_Pi },
- { "Po", ucp_Po },
- { "Ps", ucp_Ps },
- { "S", 128 + ucp_S },
- { "Sc", ucp_Sc },
- { "Sk", ucp_Sk },
- { "Sm", ucp_Sm },
- { "So", ucp_So },
- { "Z", 128 + ucp_Z },
- { "Zl", ucp_Zl },
- { "Zp", ucp_Zp },
- { "Zs", ucp_Zs }
+ { "Any", PT_ANY, 0 },
+ { "Arabic", PT_SC, ucp_Arabic },
+ { "Armenian", PT_SC, ucp_Armenian },
+ { "Bengali", PT_SC, ucp_Bengali },
+ { "Bopomofo", PT_SC, ucp_Bopomofo },
+ { "Braille", PT_SC, ucp_Braille },
+ { "Buginese", PT_SC, ucp_Buginese },
+ { "Buhid", PT_SC, ucp_Buhid },
+ { "C", PT_GC, ucp_C },
+ { "Canadian_Aboriginal", PT_SC, ucp_Canadian_Aboriginal },
+ { "Cc", PT_PC, ucp_Cc },
+ { "Cf", PT_PC, ucp_Cf },
+ { "Cherokee", PT_SC, ucp_Cherokee },
+ { "Cn", PT_PC, ucp_Cn },
+ { "Co", PT_PC, ucp_Co },
+ { "Common", PT_SC, ucp_Common },
+ { "Coptic", PT_SC, ucp_Coptic },
+ { "Cs", PT_PC, ucp_Cs },
+ { "Cypriot", PT_SC, ucp_Cypriot },
+ { "Cyrillic", PT_SC, ucp_Cyrillic },
+ { "Deseret", PT_SC, ucp_Deseret },
+ { "Devanagari", PT_SC, ucp_Devanagari },
+ { "Ethiopic", PT_SC, ucp_Ethiopic },
+ { "Georgian", PT_SC, ucp_Georgian },
+ { "Glagolitic", PT_SC, ucp_Glagolitic },
+ { "Gothic", PT_SC, ucp_Gothic },
+ { "Greek", PT_SC, ucp_Greek },
+ { "Gujarati", PT_SC, ucp_Gujarati },
+ { "Gurmukhi", PT_SC, ucp_Gurmukhi },
+ { "Han", PT_SC, ucp_Han },
+ { "Hangul", PT_SC, ucp_Hangul },
+ { "Hanunoo", PT_SC, ucp_Hanunoo },
+ { "Hebrew", PT_SC, ucp_Hebrew },
+ { "Hiragana", PT_SC, ucp_Hiragana },
+ { "Inherited", PT_SC, ucp_Inherited },
+ { "Kannada", PT_SC, ucp_Kannada },
+ { "Katakana", PT_SC, ucp_Katakana },
+ { "Kharoshthi", PT_SC, ucp_Kharoshthi },
+ { "Khmer", PT_SC, ucp_Khmer },
+ { "L", PT_GC, ucp_L },
+ { "L&", PT_LAMP, 0 },
+ { "Lao", PT_SC, ucp_Lao },
+ { "Latin", PT_SC, ucp_Latin },
+ { "Limbu", PT_SC, ucp_Limbu },
+ { "Linear_B", PT_SC, ucp_Linear_B },
+ { "Ll", PT_PC, ucp_Ll },
+ { "Lm", PT_PC, ucp_Lm },
+ { "Lo", PT_PC, ucp_Lo },
+ { "Lt", PT_PC, ucp_Lt },
+ { "Lu", PT_PC, ucp_Lu },
+ { "M", PT_GC, ucp_M },
+ { "Malayalam", PT_SC, ucp_Malayalam },
+ { "Mc", PT_PC, ucp_Mc },
+ { "Me", PT_PC, ucp_Me },
+ { "Mn", PT_PC, ucp_Mn },
+ { "Mongolian", PT_SC, ucp_Mongolian },
+ { "Myanmar", PT_SC, ucp_Myanmar },
+ { "N", PT_GC, ucp_N },
+ { "Nd", PT_PC, ucp_Nd },
+ { "New_Tai_Lue", PT_SC, ucp_New_Tai_Lue },
+ { "Nl", PT_PC, ucp_Nl },
+ { "No", PT_PC, ucp_No },
+ { "Ogham", PT_SC, ucp_Ogham },
+ { "Old_Italic", PT_SC, ucp_Old_Italic },
+ { "Old_Persian", PT_SC, ucp_Old_Persian },
+ { "Oriya", PT_SC, ucp_Oriya },
+ { "Osmanya", PT_SC, ucp_Osmanya },
+ { "P", PT_GC, ucp_P },
+ { "Pc", PT_PC, ucp_Pc },
+ { "Pd", PT_PC, ucp_Pd },
+ { "Pe", PT_PC, ucp_Pe },
+ { "Pf", PT_PC, ucp_Pf },
+ { "Pi", PT_PC, ucp_Pi },
+ { "Po", PT_PC, ucp_Po },
+ { "Ps", PT_PC, ucp_Ps },
+ { "Runic", PT_SC, ucp_Runic },
+ { "S", PT_GC, ucp_S },
+ { "Sc", PT_PC, ucp_Sc },
+ { "Shavian", PT_SC, ucp_Shavian },
+ { "Sinhala", PT_SC, ucp_Sinhala },
+ { "Sk", PT_PC, ucp_Sk },
+ { "Sm", PT_PC, ucp_Sm },
+ { "So", PT_PC, ucp_So },
+ { "Syloti_Nagri", PT_SC, ucp_Syloti_Nagri },
+ { "Syriac", PT_SC, ucp_Syriac },
+ { "Tagalog", PT_SC, ucp_Tagalog },
+ { "Tagbanwa", PT_SC, ucp_Tagbanwa },
+ { "Tai_Le", PT_SC, ucp_Tai_Le },
+ { "Tamil", PT_SC, ucp_Tamil },
+ { "Telugu", PT_SC, ucp_Telugu },
+ { "Thaana", PT_SC, ucp_Thaana },
+ { "Thai", PT_SC, ucp_Thai },
+ { "Tibetan", PT_SC, ucp_Tibetan },
+ { "Tifinagh", PT_SC, ucp_Tifinagh },
+ { "Ugaritic", PT_SC, ucp_Ugaritic },
+ { "Yi", PT_SC, ucp_Yi },
+ { "Z", PT_GC, ucp_Z },
+ { "Zl", PT_PC, ucp_Zl },
+ { "Zp", PT_PC, ucp_Zp },
+ { "Zs", PT_PC, ucp_Zs }
};
const int _pcre_utt_size = sizeof(_pcre_utt)/sizeof(ucp_type_table);
diff --git a/ext/pcre/pcrelib/pcre_try_flipped.c b/ext/pcre/pcrelib/pcre_try_flipped.c
index a07bb23db..7174cb6e1 100644
--- a/ext/pcre/pcrelib/pcre_try_flipped.c
+++ b/ext/pcre/pcrelib/pcre_try_flipped.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -94,7 +94,7 @@ Returns: the new block if is is indeed a byte-flipped regex
NULL if it is not
*/
-EXPORT real_pcre *
+real_pcre *
_pcre_try_flipped(const real_pcre *re, real_pcre *internal_re,
const pcre_study_data *study, pcre_study_data *internal_study)
{
diff --git a/ext/pcre/pcrelib/pcre_ucp_findchar.c b/ext/pcre/pcrelib/pcre_ucp_findchar.c
deleted file mode 100644
index 9f8de0663..000000000
--- a/ext/pcre/pcrelib/pcre_ucp_findchar.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*************************************************
-* Perl-Compatible Regular Expressions *
-*************************************************/
-
-/* PCRE is a library of functions to support regular expressions whose syntax
-and semantics are as close as possible to those of the Perl 5 language.
-
- Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
-
------------------------------------------------------------------------------
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the University of Cambridge nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
------------------------------------------------------------------------------
-*/
-
-
-/* This module compiles code for supporting the use of Unicode character
-properties. We use the (embryonic at the time of writing) UCP library, by
-including some of its files, copies of which have been put in the PCRE
-distribution. There is a macro in pcre_internal.h that changes the name
-ucp_findchar into _pcre_ucp_findchar. */
-
-
-#include "pcre_internal.h"
-
-#include "ucp_findchar.c"
-
-
-/* End of pcre_ucp_findchar.c */
diff --git a/ext/pcre/pcrelib/pcre_ucp_searchfuncs.c b/ext/pcre/pcrelib/pcre_ucp_searchfuncs.c
new file mode 100644
index 000000000..ac964ca90
--- /dev/null
+++ b/ext/pcre/pcrelib/pcre_ucp_searchfuncs.c
@@ -0,0 +1,175 @@
+/*************************************************
+* Perl-Compatible Regular Expressions *
+*************************************************/
+
+/* PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+ Written by Philip Hazel
+ Copyright (c) 1997-2006 University of Cambridge
+
+-----------------------------------------------------------------------------
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of the University of Cambridge nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+-----------------------------------------------------------------------------
+*/
+
+
+/* This module contains code for searching the table of Unicode character
+properties. */
+
+#include "pcre_internal.h"
+
+#include "ucp.h" /* Category definitions */
+#include "ucpinternal.h" /* Internal table details */
+#include "ucptable.c" /* The table itself */
+
+
+/* Table to translate from particular type value to the general value. */
+
+static int ucp_gentype[] = {
+ ucp_C, ucp_C, ucp_C, ucp_C, ucp_C, /* Cc, Cf, Cn, Co, Cs */
+ ucp_L, ucp_L, ucp_L, ucp_L, ucp_L, /* Ll, Lu, Lm, Lo, Lt */
+ ucp_M, ucp_M, ucp_M, /* Mc, Me, Mn */
+ ucp_N, ucp_N, ucp_N, /* Nd, Nl, No */
+ ucp_P, ucp_P, ucp_P, ucp_P, ucp_P, /* Pc, Pd, Pe, Pf, Pi */
+ ucp_P, ucp_P, /* Ps, Po */
+ ucp_S, ucp_S, ucp_S, ucp_S, /* Sc, Sk, Sm, So */
+ ucp_Z, ucp_Z, ucp_Z /* Zl, Zp, Zs */
+};
+
+
+
+/*************************************************
+* Search table and return type *
+*************************************************/
+
+/* Three values are returned: the category is ucp_C, ucp_L, etc. The detailed
+character type is ucp_Lu, ucp_Nd, etc. The script is ucp_Latin, etc.
+
+Arguments:
+ c the character value
+ type_ptr the detailed character type is returned here
+ script_ptr the script is returned here
+
+Returns: the character type category
+*/
+
+int
+_pcre_ucp_findprop(const int c, int *type_ptr, int *script_ptr)
+{
+int bot = 0;
+int top = sizeof(ucp_table)/sizeof(cnode);
+int mid;
+
+/* The table is searched using a binary chop. You might think that using
+intermediate variables to hold some of the common expressions would speed
+things up, but tests with gcc 3.4.4 on Linux showed that, on the contrary, it
+makes things a lot slower. */
+
+for (;;)
+ {
+ if (top <= bot)
+ {
+ *type_ptr = ucp_Cn;
+ *script_ptr = ucp_Common;
+ return ucp_C;
+ }
+ mid = (bot + top) >> 1;
+ if (c == (ucp_table[mid].f0 & f0_charmask)) break;
+ if (c < (ucp_table[mid].f0 & f0_charmask)) top = mid;
+ else
+ {
+ if ((ucp_table[mid].f0 & f0_rangeflag) != 0 &&
+ c <= (ucp_table[mid].f0 & f0_charmask) +
+ (ucp_table[mid].f1 & f1_rangemask)) break;
+ bot = mid + 1;
+ }
+ }
+
+/* Found an entry in the table. Set the script and detailed type values, and
+return the general type. */
+
+*script_ptr = (ucp_table[mid].f0 & f0_scriptmask) >> f0_scriptshift;
+*type_ptr = (ucp_table[mid].f1 & f1_typemask) >> f1_typeshift;
+
+return ucp_gentype[*type_ptr];
+}
+
+
+
+/*************************************************
+* Search table and return other case *
+*************************************************/
+
+/* If the given character is a letter, and there is another case for the
+letter, return the other case. Otherwise, return -1.
+
+Arguments:
+ c the character value
+
+Returns: the other case or -1 if none
+*/
+
+int
+_pcre_ucp_othercase(const int c)
+{
+int bot = 0;
+int top = sizeof(ucp_table)/sizeof(cnode);
+int mid, offset;
+
+/* The table is searched using a binary chop. You might think that using
+intermediate variables to hold some of the common expressions would speed
+things up, but tests with gcc 3.4.4 on Linux showed that, on the contrary, it
+makes things a lot slower. */
+
+for (;;)
+ {
+ if (top <= bot) return -1;
+ mid = (bot + top) >> 1;
+ if (c == (ucp_table[mid].f0 & f0_charmask)) break;
+ if (c < (ucp_table[mid].f0 & f0_charmask)) top = mid;
+ else
+ {
+ if ((ucp_table[mid].f0 & f0_rangeflag) != 0 &&
+ c <= (ucp_table[mid].f0 & f0_charmask) +
+ (ucp_table[mid].f1 & f1_rangemask)) break;
+ bot = mid + 1;
+ }
+ }
+
+/* Found an entry in the table. Return -1 for a range entry. Otherwise return
+the other case if there is one, else -1. */
+
+if ((ucp_table[mid].f0 & f0_rangeflag) != 0) return -1;
+
+offset = ucp_table[mid].f1 & f1_casemask;
+if ((offset & f1_caseneg) != 0) offset |= f1_caseneg;
+return (offset == 0)? -1 : c + offset;
+}
+
+
+/* End of pcre_ucp_searchfuncs.c */
diff --git a/ext/pcre/pcrelib/pcre_valid_utf8.c b/ext/pcre/pcrelib/pcre_valid_utf8.c
index 72f0f5e6e..1c6094a0c 100644
--- a/ext/pcre/pcrelib/pcre_valid_utf8.c
+++ b/ext/pcre/pcrelib/pcre_valid_utf8.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -63,7 +63,7 @@ Returns: < 0 if the string is a valid UTF-8 string
>= 0 otherwise; the value is the offset of the bad byte
*/
-EXPORT int
+int
_pcre_valid_utf8(const uschar *string, int length)
{
register const uschar *p;
diff --git a/ext/pcre/pcrelib/pcre_version.c b/ext/pcre/pcrelib/pcre_version.c
index d296eea80..c2aad4da0 100644
--- a/ext/pcre/pcrelib/pcre_version.c
+++ b/ext/pcre/pcrelib/pcre_version.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -52,10 +52,13 @@ string that identifies the PCRE version that is in use. */
#define STRING(a) # a
#define XSTRING(s) STRING(s)
-EXPORT const char *
+PCRE_DATA_SCOPE const char *
pcre_version(void)
{
-return XSTRING(PCRE_MAJOR) "." XSTRING(PCRE_MINOR) " " XSTRING(PCRE_DATE);
+return XSTRING(PCRE_MAJOR)
+ "." XSTRING(PCRE_MINOR)
+ XSTRING(PCRE_PRERELEASE)
+ " " XSTRING(PCRE_DATE);
}
/* End of pcre_version.c */
diff --git a/ext/pcre/pcrelib/pcre_xclass.c b/ext/pcre/pcrelib/pcre_xclass.c
index 40d2654da..57c514b78 100644
--- a/ext/pcre/pcrelib/pcre_xclass.c
+++ b/ext/pcre/pcrelib/pcre_xclass.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -60,7 +60,7 @@ Arguments:
Returns: TRUE if character matches, else FALSE
*/
-EXPORT BOOL
+BOOL
_pcre_xclass(int c, const uschar *data)
{
int t;
@@ -100,17 +100,40 @@ while ((t = *data++) != XCL_END)
#ifdef SUPPORT_UCP
else /* XCL_PROP & XCL_NOTPROP */
{
- int chartype, othercase;
- int rqdtype = *data++;
- int category = ucp_findchar(c, &chartype, &othercase);
- if (rqdtype >= 128)
- {
- if ((rqdtype - 128 == category) == (t == XCL_PROP)) return !negated;
- }
- else
+ int chartype, script;
+ int category = _pcre_ucp_findprop(c, &chartype, &script);
+
+ switch(*data)
{
- if ((rqdtype == chartype) == (t == XCL_PROP)) return !negated;
+ case PT_ANY:
+ if (t == XCL_PROP) return !negated;
+ break;
+
+ case PT_LAMP:
+ if ((chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt) ==
+ (t == XCL_PROP)) return !negated;
+ break;
+
+ case PT_GC:
+ if ((data[1] == category) == (t == XCL_PROP)) return !negated;
+ break;
+
+ case PT_PC:
+ if ((data[1] == chartype) == (t == XCL_PROP)) return !negated;
+ break;
+
+ case PT_SC:
+ if ((data[1] == script) == (t == XCL_PROP)) return !negated;
+ break;
+
+ /* This should never occur, but compilers may mutter if there is no
+ default. */
+
+ default:
+ return FALSE;
}
+
+ data += 2;
}
#endif /* SUPPORT_UCP */
}
diff --git a/ext/pcre/pcrelib/pcrecpp.cc b/ext/pcre/pcrelib/pcrecpp.cc
index 0ffd221d2..70d59a272 100644
--- a/ext/pcre/pcrelib/pcrecpp.cc
+++ b/ext/pcre/pcrelib/pcrecpp.cc
@@ -397,12 +397,16 @@ int RE::TryMatch(const StringPiece& text,
pcre_extra extra = { 0 };
if (options_.match_limit() > 0) {
- extra.flags = PCRE_EXTRA_MATCH_LIMIT;
+ extra.flags |= PCRE_EXTRA_MATCH_LIMIT;
extra.match_limit = options_.match_limit();
}
+ if (options_.match_limit_recursion() > 0) {
+ extra.flags |= PCRE_EXTRA_MATCH_LIMIT_RECURSION;
+ extra.match_limit_recursion = options_.match_limit_recursion();
+ }
int rc = pcre_exec(re, // The regular expression object
&extra,
- text.data(),
+ (text.data() == NULL) ? "" : text.data(),
text.size(),
startpos,
(anchor == UNANCHORED) ? 0 : PCRE_ANCHORED,
@@ -449,11 +453,16 @@ bool RE::DoMatchImpl(const StringPiece& text,
*consumed = vec[1];
- if (args == NULL) {
+ if (n == 0 || args == NULL) {
// We are not interested in results
return true;
}
+ if (NumberOfCapturingGroups() < n) {
+ // RE has fewer capturing groups than number of arg pointers passed in
+ return false;
+ }
+
// If we got here, we must have matched the whole pattern.
// We do not need (can not do) any more checks on the value of 'matches' here
// -- see the comment for TryMatch.
@@ -517,7 +526,7 @@ bool RE::Rewrite(string *out, const StringPiece &rewrite,
// Return the number of capturing subpatterns, or -1 if the
// regexp wasn't valid on construction.
-int RE::NumberOfCapturingGroups() {
+int RE::NumberOfCapturingGroups() const {
if (re_partial_ == NULL) return -1;
int result;
@@ -613,6 +622,7 @@ bool Arg::parse_ulong_radix(const char* str,
if (n == 0) return false;
char buf[kMaxNumberLength+1];
str = TerminateNumber(buf, str, n);
+ if (str[0] == '-') return false; // strtoul() on a negative number?!
char* end;
errno = 0;
unsigned long r = strtoul(str, &end, radix);
@@ -702,6 +712,7 @@ bool Arg::parse_ulonglong_radix(const char* str,
if (n == 0) return false;
char buf[kMaxNumberLength+1];
str = TerminateNumber(buf, str, n);
+ if (str[0] == '-') return false; // strtoull() on a negative number?!
char* end;
errno = 0;
#if defined HAVE_STRTOQ
diff --git a/ext/pcre/pcrelib/pcrecpp.h b/ext/pcre/pcrelib/pcrecpp.h
index ef9d9b2b5..5916d8643 100644
--- a/ext/pcre/pcrelib/pcrecpp.h
+++ b/ext/pcre/pcrelib/pcrecpp.h
@@ -30,8 +30,8 @@
// Author: Sanjay Ghemawat
// Support for PCRE_XXX modifiers added by Giuseppe Maxia, July 2005
-#ifndef _PCRE_REGEXP_H
-#define _PCRE_REGEXP_H
+#ifndef _PCRECPP_H
+#define _PCRECPP_H
// C++ interface to the pcre regular-expression library. RE supports
// Perl-style regular expressions (with extensions like \d, \w, \s,
@@ -196,13 +196,16 @@
// RE_Options & set_caseless(bool),
// which sets or unsets the modifier.
//
-// Moreover, PCRE_CONFIG_MATCH_LIMIT can be accessed through the
+// Moreover, PCRE_EXTRA_MATCH_LIMIT can be accessed through the
// set_match_limit() and match_limit() member functions.
// Setting match_limit to a non-zero value will limit the executation of
// pcre to keep it from doing bad things like blowing the stack or taking
// an eternity to return a result. A value of 5000 is good enough to stop
// stack blowup in a 2MB thread stack. Setting match_limit to zero will
-// disable match limiting.
+// disable match limiting. Alternately, you can set match_limit_recursion()
+// which uses PCRE_EXTRA_MATCH_LIMIT_RECURSION to limit how much pcre
+// recurses. match_limit() caps the number of matches pcre does;
+// match_limit_recrusion() caps the depth of recursion.
//
// Normally, to pass one or more modifiers to a RE class, you declare
// a RE_Options object, set the appropriate options, and pass this
@@ -322,6 +325,7 @@
#include <string>
+#include <pcrecpparg.h> // defines the Arg class
// These aren't technically needed here, but we include them
// anyway so folks who include pcrecpp.h don't have to include
// all these other header files as well.
@@ -338,18 +342,18 @@ namespace pcrecpp {
(all_options_ & o) == o
// We convert user-passed pointers into special Arg objects
-class Arg;
extern Arg no_arg;
/***** Compiling regular expressions: the RE class *****/
// RE_Options allow you to set options to be passed along to pcre,
// along with other options we put on top of pcre.
-// Only 9 modifiers, plus match_limit are supported now.
+// Only 9 modifiers, plus match_limit and match_limit_recursion,
+// are supported now.
class RE_Options {
public:
// constructor
- RE_Options() : match_limit_(0), all_options_(0) {}
+ RE_Options() : match_limit_(0), match_limit_recursion_(0), all_options_(0) {}
// alternative constructor.
// To facilitate transfer of legacy code from C programs
@@ -359,7 +363,8 @@ class RE_Options {
// But new code is better off doing
// RE(pattern,
// RE_Options().set_caseless(true).set_multiline(true)).PartialMatch(str);
- RE_Options(int option_flags) : match_limit_(0), all_options_ (option_flags) {}
+ RE_Options(int option_flags) : match_limit_(0), match_limit_recursion_(0),
+ all_options_(option_flags) {}
// we're fine with the default destructor, copy constructor, etc.
// accessors and mutators
@@ -369,6 +374,12 @@ class RE_Options {
return *this;
}
+ int match_limit_recursion() const { return match_limit_recursion_; };
+ RE_Options &set_match_limit_recursion(int limit) {
+ match_limit_recursion_ = limit;
+ return *this;
+ }
+
bool caseless() const {
return PCRE_IS_SET(PCRE_CASELESS);
}
@@ -444,6 +455,7 @@ class RE_Options {
private:
int match_limit_;
+ int match_limit_recursion_;
int all_options_;
};
@@ -595,7 +607,7 @@ class RE {
// Return the number of capturing subpatterns, or -1 if the
// regexp wasn't valid on construction.
- int NumberOfCapturingGroups();
+ int NumberOfCapturingGroups() const;
private:
@@ -643,7 +655,6 @@ class RE {
pcre* re_full_; // For full matches
pcre* re_partial_; // For partial matches
const string* error_; // Error indicator (or points to empty string)
- int match_limit_; // limit on execution resources
// Don't allow the default copy or assignment constructors --
// they're expensive and too easy to do by accident.
@@ -651,136 +662,6 @@ class RE {
void operator=(const RE&);
};
-
-/***** Implementation details *****/
-
-// Hex/Octal/Binary?
-
-// Special class for parsing into objects that define a ParseFrom() method
-template <class T>
-class _RE_MatchObject {
- public:
- static inline bool Parse(const char* str, int n, void* dest) {
- T* object = reinterpret_cast<T*>(dest);
- return object->ParseFrom(str, n);
- }
-};
-
-class Arg {
- public:
- // Empty constructor so we can declare arrays of Arg
- Arg();
-
- // Constructor specially designed for NULL arguments
- Arg(void*);
-
- typedef bool (*Parser)(const char* str, int n, void* dest);
-
-// Type-specific parsers
-#define PCRE_MAKE_PARSER(type,name) \
- Arg(type* p) : arg_(p), parser_(name) { } \
- Arg(type* p, Parser parser) : arg_(p), parser_(parser) { }
-
-
- PCRE_MAKE_PARSER(char, parse_char);
- PCRE_MAKE_PARSER(unsigned char, parse_uchar);
- PCRE_MAKE_PARSER(short, parse_short);
- PCRE_MAKE_PARSER(unsigned short, parse_ushort);
- PCRE_MAKE_PARSER(int, parse_int);
- PCRE_MAKE_PARSER(unsigned int, parse_uint);
- PCRE_MAKE_PARSER(long, parse_long);
- PCRE_MAKE_PARSER(unsigned long, parse_ulong);
-#if 1
- PCRE_MAKE_PARSER(long long, parse_longlong);
-#endif
-#if 1
- PCRE_MAKE_PARSER(unsigned long long, parse_ulonglong);
-#endif
- PCRE_MAKE_PARSER(float, parse_float);
- PCRE_MAKE_PARSER(double, parse_double);
- PCRE_MAKE_PARSER(string, parse_string);
- PCRE_MAKE_PARSER(StringPiece, parse_stringpiece);
-
-#undef PCRE_MAKE_PARSER
-
- // Generic constructor
- template <class T> Arg(T*, Parser parser);
- // Generic constructor template
- template <class T> Arg(T* p)
- : arg_(p), parser_(_RE_MatchObject<T>::Parse) {
- }
-
- // Parse the data
- bool Parse(const char* str, int n) const;
-
- private:
- void* arg_;
- Parser parser_;
-
- static bool parse_null (const char* str, int n, void* dest);
- static bool parse_char (const char* str, int n, void* dest);
- static bool parse_uchar (const char* str, int n, void* dest);
- static bool parse_float (const char* str, int n, void* dest);
- static bool parse_double (const char* str, int n, void* dest);
- static bool parse_string (const char* str, int n, void* dest);
- static bool parse_stringpiece (const char* str, int n, void* dest);
-
-#define PCRE_DECLARE_INTEGER_PARSER(name) \
- private: \
- static bool parse_ ## name(const char* str, int n, void* dest); \
- static bool parse_ ## name ## _radix( \
- const char* str, int n, void* dest, int radix); \
- public: \
- static bool parse_ ## name ## _hex(const char* str, int n, void* dest); \
- static bool parse_ ## name ## _octal(const char* str, int n, void* dest); \
- static bool parse_ ## name ## _cradix(const char* str, int n, void* dest)
-
- PCRE_DECLARE_INTEGER_PARSER(short);
- PCRE_DECLARE_INTEGER_PARSER(ushort);
- PCRE_DECLARE_INTEGER_PARSER(int);
- PCRE_DECLARE_INTEGER_PARSER(uint);
- PCRE_DECLARE_INTEGER_PARSER(long);
- PCRE_DECLARE_INTEGER_PARSER(ulong);
- PCRE_DECLARE_INTEGER_PARSER(longlong);
- PCRE_DECLARE_INTEGER_PARSER(ulonglong);
-
-#undef PCRE_DECLARE_INTEGER_PARSER
-};
-
-inline Arg::Arg() : arg_(NULL), parser_(parse_null) { }
-inline Arg::Arg(void* p) : arg_(p), parser_(parse_null) { }
-
-inline bool Arg::Parse(const char* str, int n) const {
- return (*parser_)(str, n, arg_);
-}
-
-// This part of the parser, appropriate only for ints, deals with bases
-#define MAKE_INTEGER_PARSER(type, name) \
- inline Arg Hex(type* ptr) { \
- return Arg(ptr, Arg::parse_ ## name ## _hex); } \
- inline Arg Octal(type* ptr) { \
- return Arg(ptr, Arg::parse_ ## name ## _octal); } \
- inline Arg CRadix(type* ptr) { \
- return Arg(ptr, Arg::parse_ ## name ## _cradix); }
-
-MAKE_INTEGER_PARSER(short, short);
-MAKE_INTEGER_PARSER(unsigned short, ushort);
-MAKE_INTEGER_PARSER(int, int);
-MAKE_INTEGER_PARSER(unsigned int, uint);
-MAKE_INTEGER_PARSER(long, long);
-MAKE_INTEGER_PARSER(unsigned long, ulong);
-#if 1
-MAKE_INTEGER_PARSER(long long, longlong);
-#endif
-#if 1
-MAKE_INTEGER_PARSER(unsigned long long, ulonglong);
-#endif
-
-#undef PCRE_IS_SET
-#undef PCRE_SET_OR_CLEAR
-#undef MAKE_INTEGER_PARSER
-
} // namespace pcrecpp
-
-#endif /* _PCRE_REGEXP_H */
+#endif /* _PCRECPP_H */
diff --git a/ext/pcre/pcrelib/pcrecpp_unittest.cc b/ext/pcre/pcrelib/pcrecpp_unittest.cc
index 6a03744a7..ba808bc4f 100644
--- a/ext/pcre/pcrelib/pcrecpp_unittest.cc
+++ b/ext/pcre/pcrelib/pcrecpp_unittest.cc
@@ -348,21 +348,46 @@ static void TestMatchNumberPeculiarity() {
CHECK_EQ(a, "");
}
-static void TestRecursion(int size, const char *pattern, int match_limit) {
+static void TestRecursion() {
printf("Testing recursion\n");
- // Fill up a string repeating the pattern given
- string domain;
- domain.resize(size);
- int patlen = strlen(pattern);
- for (int i = 0; i < size; ++i) {
- domain[i] = pattern[i % patlen];
- }
- // Just make sure it doesn't crash due to too much recursion.
- RE_Options options;
- options.set_match_limit(match_limit);
- RE re("([a-zA-Z0-9]|-)+(\\.([a-zA-Z0-9]|-)+)*(\\.)?", options);
- re.FullMatch(domain);
+ // Get one string that passes (sometimes), one that never does.
+ string text_good("abcdefghijk");
+ string text_bad("acdefghijkl");
+
+ // According to pcretest, matching text_good against (\w+)*b
+ // requires match_limit of at least 8192, and match_recursion_limit
+ // of at least 37.
+
+ RE_Options options_ml;
+ options_ml.set_match_limit(8192);
+ RE re("(\\w+)*b", options_ml);
+ CHECK(re.PartialMatch(text_good) == true);
+ CHECK(re.PartialMatch(text_bad) == false);
+ CHECK(re.FullMatch(text_good) == false);
+ CHECK(re.FullMatch(text_bad) == false);
+
+ options_ml.set_match_limit(1024);
+ RE re2("(\\w+)*b", options_ml);
+ CHECK(re2.PartialMatch(text_good) == false); // because of match_limit
+ CHECK(re2.PartialMatch(text_bad) == false);
+ CHECK(re2.FullMatch(text_good) == false);
+ CHECK(re2.FullMatch(text_bad) == false);
+
+ RE_Options options_mlr;
+ options_mlr.set_match_limit_recursion(50);
+ RE re3("(\\w+)*b", options_mlr);
+ CHECK(re3.PartialMatch(text_good) == true);
+ CHECK(re3.PartialMatch(text_bad) == false);
+ CHECK(re3.FullMatch(text_good) == false);
+ CHECK(re3.FullMatch(text_bad) == false);
+
+ options_mlr.set_match_limit_recursion(10);
+ RE re4("(\\w+)*b", options_mlr);
+ CHECK(re4.PartialMatch(text_good) == false);
+ CHECK(re4.PartialMatch(text_bad) == false);
+ CHECK(re4.FullMatch(text_good) == false);
+ CHECK(re4.FullMatch(text_bad) == false);
}
//
@@ -1021,14 +1046,8 @@ int main(int argc, char** argv) {
CHECK(!re.error().empty());
}
- // Test that recursion is stopped: there will be some errors reported
- int matchlimit = 5000;
- int bytes = 15 * 1024; // enough to crash if there was no match limit
- TestRecursion(bytes, ".", matchlimit);
- TestRecursion(bytes, "a", matchlimit);
- TestRecursion(bytes, "a.", matchlimit);
- TestRecursion(bytes, "ab.", matchlimit);
- TestRecursion(bytes, "abc.", matchlimit);
+ // Test that recursion is stopped
+ TestRecursion();
// Test Options
if (getenv("VERBOSE_TEST") != NULL)
diff --git a/ext/pcre/pcrelib/pcrecpparg.h b/ext/pcre/pcrelib/pcrecpparg.h
new file mode 100644
index 000000000..323dde58e
--- /dev/null
+++ b/ext/pcre/pcrelib/pcrecpparg.h
@@ -0,0 +1,171 @@
+// Copyright (c) 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: Sanjay Ghemawat
+
+#ifndef _PCRECPPARG_H
+#define _PCRECPPARG_H
+
+#include <stdlib.h> // for NULL
+#include <string>
+
+namespace pcrecpp {
+
+class StringPiece;
+
+// Hex/Octal/Binary?
+
+// Special class for parsing into objects that define a ParseFrom() method
+template <class T>
+class _RE_MatchObject {
+ public:
+ static inline bool Parse(const char* str, int n, void* dest) {
+ T* object = reinterpret_cast<T*>(dest);
+ return object->ParseFrom(str, n);
+ }
+};
+
+class Arg {
+ public:
+ // Empty constructor so we can declare arrays of Arg
+ Arg();
+
+ // Constructor specially designed for NULL arguments
+ Arg(void*);
+
+ typedef bool (*Parser)(const char* str, int n, void* dest);
+
+// Type-specific parsers
+#define PCRE_MAKE_PARSER(type,name) \
+ Arg(type* p) : arg_(p), parser_(name) { } \
+ Arg(type* p, Parser parser) : arg_(p), parser_(parser) { }
+
+
+ PCRE_MAKE_PARSER(char, parse_char);
+ PCRE_MAKE_PARSER(unsigned char, parse_uchar);
+ PCRE_MAKE_PARSER(short, parse_short);
+ PCRE_MAKE_PARSER(unsigned short, parse_ushort);
+ PCRE_MAKE_PARSER(int, parse_int);
+ PCRE_MAKE_PARSER(unsigned int, parse_uint);
+ PCRE_MAKE_PARSER(long, parse_long);
+ PCRE_MAKE_PARSER(unsigned long, parse_ulong);
+#if 1
+ PCRE_MAKE_PARSER(long long, parse_longlong);
+#endif
+#if 1
+ PCRE_MAKE_PARSER(unsigned long long, parse_ulonglong);
+#endif
+ PCRE_MAKE_PARSER(float, parse_float);
+ PCRE_MAKE_PARSER(double, parse_double);
+ PCRE_MAKE_PARSER(std::string, parse_string);
+ PCRE_MAKE_PARSER(StringPiece, parse_stringpiece);
+
+#undef PCRE_MAKE_PARSER
+
+ // Generic constructor
+ template <class T> Arg(T*, Parser parser);
+ // Generic constructor template
+ template <class T> Arg(T* p)
+ : arg_(p), parser_(_RE_MatchObject<T>::Parse) {
+ }
+
+ // Parse the data
+ bool Parse(const char* str, int n) const;
+
+ private:
+ void* arg_;
+ Parser parser_;
+
+ static bool parse_null (const char* str, int n, void* dest);
+ static bool parse_char (const char* str, int n, void* dest);
+ static bool parse_uchar (const char* str, int n, void* dest);
+ static bool parse_float (const char* str, int n, void* dest);
+ static bool parse_double (const char* str, int n, void* dest);
+ static bool parse_string (const char* str, int n, void* dest);
+ static bool parse_stringpiece (const char* str, int n, void* dest);
+
+#define PCRE_DECLARE_INTEGER_PARSER(name) \
+ private: \
+ static bool parse_ ## name(const char* str, int n, void* dest); \
+ static bool parse_ ## name ## _radix( \
+ const char* str, int n, void* dest, int radix); \
+ public: \
+ static bool parse_ ## name ## _hex(const char* str, int n, void* dest); \
+ static bool parse_ ## name ## _octal(const char* str, int n, void* dest); \
+ static bool parse_ ## name ## _cradix(const char* str, int n, void* dest)
+
+ PCRE_DECLARE_INTEGER_PARSER(short);
+ PCRE_DECLARE_INTEGER_PARSER(ushort);
+ PCRE_DECLARE_INTEGER_PARSER(int);
+ PCRE_DECLARE_INTEGER_PARSER(uint);
+ PCRE_DECLARE_INTEGER_PARSER(long);
+ PCRE_DECLARE_INTEGER_PARSER(ulong);
+ PCRE_DECLARE_INTEGER_PARSER(longlong);
+ PCRE_DECLARE_INTEGER_PARSER(ulonglong);
+
+#undef PCRE_DECLARE_INTEGER_PARSER
+};
+
+inline Arg::Arg() : arg_(NULL), parser_(parse_null) { }
+inline Arg::Arg(void* p) : arg_(p), parser_(parse_null) { }
+
+inline bool Arg::Parse(const char* str, int n) const {
+ return (*parser_)(str, n, arg_);
+}
+
+// This part of the parser, appropriate only for ints, deals with bases
+#define MAKE_INTEGER_PARSER(type, name) \
+ inline Arg Hex(type* ptr) { \
+ return Arg(ptr, Arg::parse_ ## name ## _hex); } \
+ inline Arg Octal(type* ptr) { \
+ return Arg(ptr, Arg::parse_ ## name ## _octal); } \
+ inline Arg CRadix(type* ptr) { \
+ return Arg(ptr, Arg::parse_ ## name ## _cradix); }
+
+MAKE_INTEGER_PARSER(short, short);
+MAKE_INTEGER_PARSER(unsigned short, ushort);
+MAKE_INTEGER_PARSER(int, int);
+MAKE_INTEGER_PARSER(unsigned int, uint);
+MAKE_INTEGER_PARSER(long, long);
+MAKE_INTEGER_PARSER(unsigned long, ulong);
+#if 1
+MAKE_INTEGER_PARSER(long long, longlong);
+#endif
+#if 1
+MAKE_INTEGER_PARSER(unsigned long long, ulonglong);
+#endif
+
+#undef PCRE_IS_SET
+#undef PCRE_SET_OR_CLEAR
+#undef MAKE_INTEGER_PARSER
+
+} // namespace pcrecpp
+
+
+#endif /* _PCRECPPARG_H */
diff --git a/ext/pcre/pcrelib/pcregrep.c b/ext/pcre/pcrelib/pcregrep.c
index f6e518055..1533c8366 100644
--- a/ext/pcre/pcrelib/pcregrep.c
+++ b/ext/pcre/pcrelib/pcregrep.c
@@ -6,7 +6,7 @@
its pattern matching. On a Unix or Win32 system it can recurse into
directories.
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -38,6 +38,7 @@ POSSIBILITY OF SUCH DAMAGE.
*/
#include <ctype.h>
+#include <locale.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -55,7 +56,7 @@ POSSIBILITY OF SUCH DAMAGE.
typedef int BOOL;
-#define VERSION "4.0 07-Jun-2005"
+#define VERSION "4.2 09-Jan-2006"
#define MAX_PATTERN_COUNT 100
#if BUFSIZ > 8192
@@ -65,13 +66,50 @@ typedef int BOOL;
#endif
+/* Values for the "filenames" variable, which specifies options for file name
+output. The order is important; it is assumed that a file name is wanted for
+all values greater than FN_DEFAULT. */
+
+enum { FN_NONE, FN_DEFAULT, FN_ONLY, FN_NOMATCH_ONLY, FN_FORCE };
+
+/* Actions for the -d and -D options */
+
+enum { dee_READ, dee_SKIP, dee_RECURSE };
+enum { DEE_READ, DEE_SKIP };
+
+/* Actions for special processing options (flag bits) */
+
+#define PO_WORD_MATCH 0x0001
+#define PO_LINE_MATCH 0x0002
+#define PO_FIXED_STRINGS 0x0004
+
+
/*************************************************
* Global variables *
*************************************************/
+/* Jeffrey Friedl has some debugging requirements that are not part of the
+regular code. */
+
+#ifdef JFRIEDL_DEBUG
+static int S_arg = -1;
+static unsigned int jfriedl_XR = 0; /* repeat regex attempt this many times */
+static unsigned int jfriedl_XT = 0; /* replicate text this many times */
+static const char *jfriedl_prefix = "";
+static const char *jfriedl_postfix = "";
+#endif
+
+static char *colour_string = (char *)"1;31";
+static char *colour_option = NULL;
+static char *dee_option = NULL;
+static char *DEE_option = NULL;
static char *pattern_filename = NULL;
static char *stdin_name = (char *)"(standard input)";
+static char *locale = NULL;
+
+static const unsigned char *pcretables = NULL;
+
static int pattern_count = 0;
static pcre **pattern_list;
static pcre_extra **hints_list;
@@ -85,24 +123,26 @@ static pcre *exclude_compiled = NULL;
static int after_context = 0;
static int before_context = 0;
static int both_context = 0;
+static int dee_action = dee_READ;
+static int DEE_action = DEE_READ;
+static int error_count = 0;
+static int filenames = FN_DEFAULT;
+static int process_options = 0;
static BOOL count_only = FALSE;
-static BOOL filenames = TRUE;
-static BOOL filenames_only = FALSE;
-static BOOL filenames_nomatch_only = FALSE;
+static BOOL do_colour = FALSE;
static BOOL hyphenpending = FALSE;
static BOOL invert = FALSE;
static BOOL multiline = FALSE;
static BOOL number = FALSE;
+static BOOL only_matching = FALSE;
static BOOL quiet = FALSE;
-static BOOL recurse = FALSE;
static BOOL silent = FALSE;
-static BOOL whole_lines = FALSE;
-static BOOL word_match = FALSE;
/* Structure for options and list of them */
-enum { OP_NODATA, OP_STRING, OP_NUMBER };
+enum { OP_NODATA, OP_STRING, OP_OP_STRING, OP_NUMBER, OP_OP_NUMBER,
+ OP_PATLIST };
typedef struct option_item {
int type;
@@ -112,42 +152,76 @@ typedef struct option_item {
const char *help_text;
} option_item;
+/* Options without a single-letter equivalent get a negative value. This can be
+used to identify them. */
+
+#define N_COLOUR (-1)
+#define N_EXCLUDE (-2)
+#define N_HELP (-3)
+#define N_INCLUDE (-4)
+#define N_LABEL (-5)
+#define N_LOCALE (-6)
+#define N_NULL (-7)
+
static option_item optionlist[] = {
- { OP_NODATA, -1, NULL, "", " terminate options" },
- { OP_NODATA, -1, NULL, "help", "display this help and exit" },
- { OP_NUMBER, 'A', &after_context, "after-context=number", "set number of following context lines" },
- { OP_NUMBER, 'B', &before_context, "before-context=number", "set number of prior context lines" },
- { OP_NUMBER, 'C', &both_context, "context=number", "set number of context lines, before & after" },
- { OP_NODATA, 'c', NULL, "count", "print only a count of matching lines per FILE" },
- { OP_STRING, 'f', &pattern_filename, "file=path", "read patterns from file" },
- { OP_NODATA, 'h', NULL, "no-filename", "suppress the prefixing filename on output" },
- { OP_NODATA, 'i', NULL, "ignore-case", "ignore case distinctions" },
- { OP_NODATA, 'l', NULL, "files-with-matches", "print only FILE names containing matches" },
- { OP_NODATA, 'L', NULL, "files-without-match","print only FILE names not containing matches" },
- { OP_STRING, -1, &stdin_name, "label=name", "set name for standard input" },
- { OP_NODATA, 'M', NULL, "multiline", "run in multiline mode" },
- { OP_NODATA, 'n', NULL, "line-number", "print line number with output lines" },
- { OP_NODATA, 'q', NULL, "quiet", "suppress output, just set return code" },
- { OP_NODATA, 'r', NULL, "recursive", "recursively scan sub-directories" },
- { OP_STRING, -1, &exclude_pattern, "exclude=pattern","exclude matching files when recursing" },
- { OP_STRING, -1, &include_pattern, "include=pattern","include matching files when recursing" },
- { OP_NODATA, 's', NULL, "no-messages", "suppress error messages" },
- { OP_NODATA, 'u', NULL, "utf-8", "use UTF-8 mode" },
- { OP_NODATA, 'V', NULL, "version", "print version information and exit" },
- { OP_NODATA, 'v', NULL, "invert-match", "select non-matching lines" },
- { OP_NODATA, 'w', NULL, "word-regex(p)", "force PATTERN to match only as a word" },
- { OP_NODATA, 'x', NULL, "line-regex(p)", "force PATTERN to match only whole lines" },
- { OP_NODATA, 0, NULL, NULL, NULL }
+ { OP_NODATA, N_NULL, NULL, "", " terminate options" },
+ { OP_NODATA, N_HELP, NULL, "help", "display this help and exit" },
+ { OP_NUMBER, 'A', &after_context, "after-context=number", "set number of following context lines" },
+ { OP_NUMBER, 'B', &before_context, "before-context=number", "set number of prior context lines" },
+ { OP_OP_STRING, N_COLOUR, &colour_option, "color=option", "matched text color option" },
+ { OP_NUMBER, 'C', &both_context, "context=number", "set number of context lines, before & after" },
+ { OP_NODATA, 'c', NULL, "count", "print only a count of matching lines per FILE" },
+ { OP_OP_STRING, N_COLOUR, &colour_option, "colour=option", "matched text colour option" },
+ { OP_STRING, 'D', &DEE_option, "devices=action","how to handle devices, FIFOs, and sockets" },
+ { OP_STRING, 'd', &dee_option, "directories=action", "how to handle directories" },
+ { OP_PATLIST, 'e', NULL, "regex(p)", "specify pattern (may be used more than once)" },
+ { OP_NODATA, 'F', NULL, "fixed_strings", "patterns are sets of newline-separated strings" },
+ { OP_STRING, 'f', &pattern_filename, "file=path", "read patterns from file" },
+ { OP_NODATA, 'H', NULL, "with-filename", "force the prefixing filename on output" },
+ { OP_NODATA, 'h', NULL, "no-filename", "suppress the prefixing filename on output" },
+ { OP_NODATA, 'i', NULL, "ignore-case", "ignore case distinctions" },
+ { OP_NODATA, 'l', NULL, "files-with-matches", "print only FILE names containing matches" },
+ { OP_NODATA, 'L', NULL, "files-without-match","print only FILE names not containing matches" },
+ { OP_STRING, N_LABEL, &stdin_name, "label=name", "set name for standard input" },
+ { OP_STRING, N_LOCALE, &locale, "locale=locale", "use the named locale" },
+ { OP_NODATA, 'M', NULL, "multiline", "run in multiline mode" },
+ { OP_NODATA, 'n', NULL, "line-number", "print line number with output lines" },
+ { OP_NODATA, 'o', NULL, "only-matching", "show only the part of the line that matched" },
+ { OP_NODATA, 'q', NULL, "quiet", "suppress output, just set return code" },
+ { OP_NODATA, 'r', NULL, "recursive", "recursively scan sub-directories" },
+ { OP_STRING, N_EXCLUDE,&exclude_pattern, "exclude=pattern","exclude matching files when recursing" },
+ { OP_STRING, N_INCLUDE,&include_pattern, "include=pattern","include matching files when recursing" },
+#ifdef JFRIEDL_DEBUG
+ { OP_OP_NUMBER, 'S', &S_arg, "jeffS", "replace matched (sub)string with X" },
+#endif
+ { OP_NODATA, 's', NULL, "no-messages", "suppress error messages" },
+ { OP_NODATA, 'u', NULL, "utf-8", "use UTF-8 mode" },
+ { OP_NODATA, 'V', NULL, "version", "print version information and exit" },
+ { OP_NODATA, 'v', NULL, "invert-match", "select non-matching lines" },
+ { OP_NODATA, 'w', NULL, "word-regex(p)", "force patterns to match only as words" },
+ { OP_NODATA, 'x', NULL, "line-regex(p)", "force patterns to match only whole lines" },
+ { OP_NODATA, 0, NULL, NULL, NULL }
};
+/* Tables for prefixing and suffixing patterns, according to the -w, -x, and -F
+options. These set the 1, 2, and 4 bits in process_options, respectively. Note
+that the combination of -w and -x has the same effect as -x on its own, so we
+can treat them as the same. */
+
+static const char *prefix[] = {
+ "", "\\b", "^(?:", "^(?:", "\\Q", "\\b\\Q", "^(?:\\Q", "^(?:\\Q" };
+
+static const char *suffix[] = {
+ "", "\\b", ")$", ")$", "\\E", "\\E\\b", "\\E)$", "\\E)$" };
+
+
/*************************************************
-* Functions for directory scanning *
+* OS-specific functions *
*************************************************/
/* These functions are defined so that they can be made system specific,
-although at present the only ones are for Unix, Win32, and for "no directory
-recursion support". */
+although at present the only ones are for Unix, Win32, and for "no support". */
/************* Directory scanning in Unix ***********/
@@ -194,6 +268,27 @@ closedir(dir);
}
+/************* Test for regular file in Unix **********/
+
+static int
+isregfile(char *filename)
+{
+struct stat statbuf;
+if (stat(filename, &statbuf) < 0)
+ return 1; /* In the expectation that opening as a file will fail */
+return (statbuf.st_mode & S_IFMT) == S_IFREG;
+}
+
+
+/************* Test stdout for being a terminal in Unix **********/
+
+static BOOL
+is_stdout_tty(void)
+{
+return isatty(fileno(stdout));
+}
+
+
/************* Directory scanning in Win32 ***********/
/* I (Philip Hazel) have no means of testing this code. It was contributed by
@@ -292,6 +387,28 @@ free(dir);
}
+/************* Test for regular file in Win32 **********/
+
+/* I don't know how to do this, or if it can be done; assume all paths are
+regular if they are not directories. */
+
+int isregfile(char *filename)
+{
+return !isdirectory(filename)
+}
+
+
+/************* Test stdout for being a terminal in Win32 **********/
+
+/* I don't know how to do this; assume never */
+
+static BOOL
+is_stdout_tty(void)
+{
+FALSE;
+}
+
+
/************* Directory scanning when we can't do it ***********/
/* The type is void, and apart from isdirectory(), the functions do nothing. */
@@ -300,11 +417,28 @@ free(dir);
typedef void directory_type;
-int isdirectory(char *filename) { return FALSE; }
+int isdirectory(char *filename) { return 0; }
directory_type * opendirectory(char *filename) {}
char *readdirectory(directory_type *dir) {}
void closedirectory(directory_type *dir) {}
+
+/************* Test for regular when we can't do it **********/
+
+/* Assume all files are regular. */
+
+int isregfile(char *filename) { return 1; }
+
+
+/************* Test stdout for being a terminal when we can't do it **********/
+
+static BOOL
+is_stdout_tty(void)
+{
+return FALSE;
+}
+
+
#endif
@@ -336,7 +470,8 @@ return sys_errlist[n];
*************************************************/
/* This is called if we are about to lose said lines because of buffer filling,
-and at the end of the file.
+and at the end of the file. The data in the line is written using fwrite() so
+that a binary zero does not terminate it.
Arguments:
lastmatchnumber the number of the last matching line, plus one
@@ -359,7 +494,7 @@ if (after_context > 0 && lastmatchnumber > 0)
if (printname != NULL) fprintf(stdout, "%s-", printname);
if (number) fprintf(stdout, "%d-", lastmatchnumber++);
while (*pp != '\n') pp++;
- fprintf(stdout, "%.*s", pp - lastmatchrestart + 1, lastmatchrestart);
+ fwrite(lastmatchrestart, 1, pp - lastmatchrestart + 1, stdout);
lastmatchrestart = pp + 1;
}
hyphenpending = TRUE;
@@ -418,6 +553,7 @@ way, the buffer is shifted left and re-filled. */
while (ptr < endptr)
{
int i;
+ int mrc = 0;
BOOL match = FALSE;
char *t = ptr;
size_t length, linelength;
@@ -433,33 +569,130 @@ while (ptr < endptr)
while (t < endptr && *t++ != '\n') linelength++;
length = multiline? endptr - ptr : linelength;
+
+ /* Extra processing for Jeffrey Friedl's debugging. */
+
+#ifdef JFRIEDL_DEBUG
+ if (jfriedl_XT || jfriedl_XR)
+ {
+ #include <sys/time.h>
+ #include <time.h>
+ struct timeval start_time, end_time;
+ struct timezone dummy;
+
+ if (jfriedl_XT)
+ {
+ unsigned long newlen = length * jfriedl_XT + strlen(jfriedl_prefix) + strlen(jfriedl_postfix);
+ const char *orig = ptr;
+ ptr = malloc(newlen + 1);
+ if (!ptr) {
+ printf("out of memory");
+ exit(2);
+ }
+ endptr = ptr;
+ strcpy(endptr, jfriedl_prefix); endptr += strlen(jfriedl_prefix);
+ for (i = 0; i < jfriedl_XT; i++) {
+ strncpy(endptr, orig, length);
+ endptr += length;
+ }
+ strcpy(endptr, jfriedl_postfix); endptr += strlen(jfriedl_postfix);
+ length = newlen;
+ }
+
+ if (gettimeofday(&start_time, &dummy) != 0)
+ perror("bad gettimeofday");
+
+
+ for (i = 0; i < jfriedl_XR; i++)
+ match = (pcre_exec(pattern_list[0], hints_list[0], ptr, length, 0, 0, offsets, 99) >= 0);
+
+ if (gettimeofday(&end_time, &dummy) != 0)
+ perror("bad gettimeofday");
+
+ double delta = ((end_time.tv_sec + (end_time.tv_usec / 1000000.0))
+ -
+ (start_time.tv_sec + (start_time.tv_usec / 1000000.0)));
+
+ printf("%s TIMER[%.4f]\n", match ? "MATCH" : "FAIL", delta);
+ return 0;
+ }
+#endif
+
+
/* Run through all the patterns until one matches. Note that we don't include
the final newline in the subject string. */
- for (i = 0; !match && i < pattern_count; i++)
+ for (i = 0; i < pattern_count; i++)
{
- match = pcre_exec(pattern_list[i], hints_list[i], ptr, length, 0, 0,
- offsets, 99) >= 0;
+ mrc = pcre_exec(pattern_list[i], hints_list[i], ptr, length, 0, 0,
+ offsets, 99);
+ if (mrc >= 0) { match = TRUE; break; }
+ if (mrc != PCRE_ERROR_NOMATCH)
+ {
+ fprintf(stderr, "pcregrep: pcre_exec() error %d while matching ", mrc);
+ if (pattern_count > 1) fprintf(stderr, "pattern number %d to ", i+1);
+ fprintf(stderr, "this line:\n");
+ fwrite(ptr, 1, linelength, stderr); /* In case binary zero included */
+ fprintf(stderr, "\n");
+ if (error_count == 0 &&
+ (mrc == PCRE_ERROR_MATCHLIMIT || mrc == PCRE_ERROR_RECURSIONLIMIT))
+ {
+ fprintf(stderr, "pcregrep: error %d means that a resource limit "
+ "was exceeded\n", mrc);
+ fprintf(stderr, "pcregrep: check your regex for nested unlimited loops\n");
+ }
+ if (error_count++ > 20)
+ {
+ fprintf(stderr, "pcregrep: too many errors - abandoned\n");
+ exit(2);
+ }
+ match = invert; /* No more matching; don't show the line again */
+ break;
+ }
}
- /* If it's a match or a not-match (as required), print what's wanted. */
+ /* If it's a match or a not-match (as required), do what's wanted. */
if (match != invert)
{
BOOL hyphenprinted = FALSE;
- if (filenames_nomatch_only) return 1;
+ /* We've failed if we want a file that doesn't have any matches. */
+
+ if (filenames == FN_NOMATCH_ONLY) return 1;
+
+ /* Just count if just counting is wanted. */
if (count_only) count++;
- else if (filenames_only)
+ /* If all we want is a file name, there is no need to scan any more lines
+ in the file. */
+
+ else if (filenames == FN_ONLY)
{
fprintf(stdout, "%s\n", printname);
return 0;
}
+ /* Likewise, if all we want is a yes/no answer. */
+
else if (quiet) return 0;
+ /* The --only-matching option prints just the substring that matched, and
+ does not pring any context. */
+
+ else if (only_matching)
+ {
+ if (printname != NULL) fprintf(stdout, "%s:", printname);
+ if (number) fprintf(stdout, "%d:", linenumber);
+ fwrite(ptr + offsets[0], 1, offsets[1] - offsets[0], stdout);
+ fprintf(stdout, "\n");
+ }
+
+ /* This is the default case when none of the above options is set. We print
+ the matching lines(s), possibly preceded and/or followed by other lines of
+ context. */
+
else
{
/* See if there is a requirement to print some "after" lines from a
@@ -478,7 +711,8 @@ while (ptr < endptr)
}
/* It is important to advance lastmatchrestart during this printing so
- that it interacts correctly with any "before" printing below. */
+ that it interacts correctly with any "before" printing below. Print
+ each line's data using fwrite() in case there are binary zeroes. */
while (lastmatchrestart < p)
{
@@ -486,7 +720,7 @@ while (ptr < endptr)
if (printname != NULL) fprintf(stdout, "%s-", printname);
if (number) fprintf(stdout, "%d-", lastmatchnumber++);
while (*pp != '\n') pp++;
- fprintf(stdout, "%.*s", pp - lastmatchrestart + 1, lastmatchrestart);
+ fwrite(lastmatchrestart, 1, pp - lastmatchrestart + 1, stdout);
lastmatchrestart = pp + 1;
}
if (lastmatchrestart != ptr) hyphenpending = TRUE;
@@ -510,8 +744,9 @@ while (ptr < endptr)
char *p = ptr;
while (p > buffer && (lastmatchnumber == 0 || p > lastmatchrestart) &&
- linecount++ < before_context)
+ linecount < before_context)
{
+ linecount++;
p--;
while (p > buffer && p[-1] != '\n') p--;
}
@@ -525,15 +760,17 @@ while (ptr < endptr)
if (printname != NULL) fprintf(stdout, "%s-", printname);
if (number) fprintf(stdout, "%d-", linenumber - linecount--);
while (*pp != '\n') pp++;
- fprintf(stdout, "%.*s", pp - p + 1, p);
+ fwrite(p, 1, pp - p + 1, stdout); /* In case binary zero */
p = pp + 1;
}
}
/* Now print the matching line(s); ensure we set hyphenpending at the end
- of the file. */
+ of the file if any context lines are being output. */
+
+ if (after_context > 0 || before_context > 0)
+ endhyphenpending = TRUE;
- endhyphenpending = TRUE;
if (printname != NULL) fprintf(stdout, "%s:", printname);
if (number) fprintf(stdout, "%d:", linenumber);
@@ -551,9 +788,42 @@ while (ptr < endptr)
linelength = endmatch - ptr;
}
- fprintf(stdout, "%.*s\n", linelength, ptr);
+ /*** NOTE: Use only fwrite() to output the data line, so that binary
+ zeroes are treated as just another data character. */
+
+ /* This extra option, for Jeffrey Friedl's debugging requirements,
+ replaces the matched string, or a specific captured string if it exists,
+ with X. When this happens, colouring is ignored. */
+
+#ifdef JFRIEDL_DEBUG
+ if (S_arg >= 0 && S_arg < mrc)
+ {
+ int first = S_arg * 2;
+ int last = first + 1;
+ fwrite(ptr, 1, offsets[first], stdout);
+ fprintf(stdout, "X");
+ fwrite(ptr + offsets[last], 1, linelength - offsets[last], stdout);
+ }
+ else
+#endif
+
+ /* We have to split the line(s) up if colouring. */
+
+ if (do_colour)
+ {
+ fwrite(ptr, 1, offsets[0], stdout);
+ fprintf(stdout, "%c[%sm", 0x1b, colour_string);
+ fwrite(ptr + offsets[0], 1, offsets[1] - offsets[0], stdout);
+ fprintf(stdout, "%c[00m", 0x1b);
+ fwrite(ptr + offsets[1], 1, linelength - offsets[1], stdout);
+ }
+ else fwrite(ptr, 1, linelength, stdout);
+
+ fprintf(stdout, "\n");
}
+ /* End of doing what has to be done for a match */
+
rc = 0; /* Had some success */
/* Remember where the last match happened for after_context. We remember
@@ -599,13 +869,16 @@ while (ptr < endptr)
/* End of file; print final "after" lines if wanted; do_after_lines sets
hyphenpending if it prints something. */
-do_after_lines(lastmatchnumber, lastmatchrestart, endptr, printname);
-hyphenpending |= endhyphenpending;
+if (!only_matching && !count_only)
+ {
+ do_after_lines(lastmatchnumber, lastmatchrestart, endptr, printname);
+ hyphenpending |= endhyphenpending;
+ }
/* Print the file name if we are looking for those without matches and there
were none. If we found a match, we won't have got this far. */
-if (filenames_nomatch_only)
+if (filenames == FN_NOMATCH_ONLY)
{
fprintf(stdout, "%s\n", printname);
return 0;
@@ -633,9 +906,7 @@ recursing; if it's a file, grep it.
Arguments:
pathname the path to investigate
- dir_recurse TRUE if recursing is wanted (-r)
- show_filenames TRUE if file names are wanted for multiple files, except
- for the only file at top level when not filenames_only
+ dir_recurse TRUE if recursing is wanted (-r or -drecurse)
only_one_at_top TRUE if the path is the only one at toplevel
Returns: 0 if there was at least one match
@@ -646,69 +917,77 @@ However, file opening failures are suppressed if "silent" is set.
*/
static int
-grep_or_recurse(char *pathname, BOOL dir_recurse, BOOL show_filenames,
- BOOL only_one_at_top)
+grep_or_recurse(char *pathname, BOOL dir_recurse, BOOL only_one_at_top)
{
int rc = 1;
int sep;
FILE *in;
-char *printname;
/* If the file name is "-" we scan stdin */
if (strcmp(pathname, "-") == 0)
{
return pcregrep(stdin,
- (filenames_only || filenames_nomatch_only ||
- (show_filenames && !only_one_at_top))?
+ (filenames > FN_DEFAULT || (filenames == FN_DEFAULT && !only_one_at_top))?
stdin_name : NULL);
}
-/* If the file is a directory and we are recursing, scan each file within it,
-subject to any include or exclude patterns that were set. The scanning code is
-localized so it can be made system-specific. */
-if ((sep = isdirectory(pathname)) != 0 && dir_recurse)
- {
- char buffer[1024];
- char *nextfile;
- directory_type *dir = opendirectory(pathname);
+/* If the file is a directory, skip if skipping or if we are recursing, scan
+each file within it, subject to any include or exclude patterns that were set.
+The scanning code is localized so it can be made system-specific. */
- if (dir == NULL)
+if ((sep = isdirectory(pathname)) != 0)
+ {
+ if (dee_action == dee_SKIP) return 1;
+ if (dee_action == dee_RECURSE)
{
- if (!silent)
- fprintf(stderr, "pcregrep: Failed to open directory %s: %s\n", pathname,
- strerror(errno));
- return 2;
- }
+ char buffer[1024];
+ char *nextfile;
+ directory_type *dir = opendirectory(pathname);
- while ((nextfile = readdirectory(dir)) != NULL)
- {
- int frc, blen;
- sprintf(buffer, "%.512s%c%.128s", pathname, sep, nextfile);
- blen = strlen(buffer);
+ if (dir == NULL)
+ {
+ if (!silent)
+ fprintf(stderr, "pcregrep: Failed to open directory %s: %s\n", pathname,
+ strerror(errno));
+ return 2;
+ }
- if (exclude_compiled != NULL &&
- pcre_exec(exclude_compiled, NULL, buffer, blen, 0, 0, NULL, 0) >= 0)
- continue;
+ while ((nextfile = readdirectory(dir)) != NULL)
+ {
+ int frc, blen;
+ sprintf(buffer, "%.512s%c%.128s", pathname, sep, nextfile);
+ blen = strlen(buffer);
- if (include_compiled != NULL &&
- pcre_exec(include_compiled, NULL, buffer, blen, 0, 0, NULL, 0) < 0)
- continue;
+ if (exclude_compiled != NULL &&
+ pcre_exec(exclude_compiled, NULL, buffer, blen, 0, 0, NULL, 0) >= 0)
+ continue;
- frc = grep_or_recurse(buffer, dir_recurse, TRUE, FALSE);
- if (frc > 1) rc = frc;
- else if (frc == 0 && rc == 1) rc = 0;
- }
+ if (include_compiled != NULL &&
+ pcre_exec(include_compiled, NULL, buffer, blen, 0, 0, NULL, 0) < 0)
+ continue;
- closedirectory(dir);
- return rc;
+ frc = grep_or_recurse(buffer, dir_recurse, FALSE);
+ if (frc > 1) rc = frc;
+ else if (frc == 0 && rc == 1) rc = 0;
+ }
+
+ closedirectory(dir);
+ return rc;
+ }
}
-/* If the file is not a directory, or we are not recursing, scan it. If this is
-the first and only argument at top level, we don't show the file name (unless
-we are only showing the file name). Otherwise, control is via the
-show_filenames variable. */
+/* If the file is not a directory and not a regular file, skip it if that's
+been requested. */
+
+else if (!isregfile(pathname) && DEE_action == DEE_SKIP) return 1;
+
+/* Control reaches here if we have a regular file, or if we have a directory
+and recursion or skipping was not requested, or if we have anything else and
+skipping was not requested. The scan proceeds. If this is the first and only
+argument at top level, we don't show the file name, unless we are only showing
+the file name, or the filename was forced (-H). */
in = fopen(pathname, "r");
if (in == NULL)
@@ -719,10 +998,8 @@ if (in == NULL)
return 2;
}
-printname = (filenames_only || filenames_nomatch_only ||
- (show_filenames && !only_one_at_top))? pathname : NULL;
-
-rc = pcregrep(in, printname);
+rc = pcregrep(in, (filenames > FN_DEFAULT ||
+ (filenames == FN_DEFAULT && !only_one_at_top))? pathname : NULL);
fclose(in);
return rc;
@@ -738,7 +1015,13 @@ return rc;
static int
usage(int rc)
{
-fprintf(stderr, "Usage: pcregrep [-LMVcfhilnqrsvwx] [long-options] [pattern] [file1 file2 ...]\n");
+option_item *op;
+fprintf(stderr, "Usage: pcregrep [-");
+for (op = optionlist; op->one_char != 0; op++)
+ {
+ if (op->one_char > 0) fprintf(stderr, "%c", op->one_char);
+ }
+fprintf(stderr, "] [long options] [pattern] [files]\n");
fprintf(stderr, "Type `pcregrep --help' for more information.\n");
return rc;
}
@@ -757,8 +1040,8 @@ option_item *op;
printf("Usage: pcregrep [OPTION]... [PATTERN] [FILE1 FILE2 ...]\n");
printf("Search for PATTERN in each FILE or standard input.\n");
-printf("PATTERN must be present if -f is not used.\n");
-printf("\"-\" can be used as a file name to mean STDIN.\n");
+printf("PATTERN must be present if neither -e nor -f is used.\n");
+printf("\"-\" can be used as a file name to mean STDIN.\n\n");
printf("Example: pcregrep -i 'hello.*world' menu.h main.c\n\n");
printf("Options:\n");
@@ -794,21 +1077,24 @@ handle_option(int letter, int options)
{
switch(letter)
{
- case -1: help(); exit(0);
+ case N_HELP: help(); exit(0);
case 'c': count_only = TRUE; break;
- case 'h': filenames = FALSE; break;
+ case 'F': process_options |= PO_FIXED_STRINGS; break;
+ case 'H': filenames = FN_FORCE; break;
+ case 'h': filenames = FN_NONE; break;
case 'i': options |= PCRE_CASELESS; break;
- case 'l': filenames_only = TRUE; break;
- case 'L': filenames_nomatch_only = TRUE; break;
+ case 'l': filenames = FN_ONLY; break;
+ case 'L': filenames = FN_NOMATCH_ONLY; break;
case 'M': multiline = TRUE; options |= PCRE_MULTILINE|PCRE_FIRSTLINE; break;
case 'n': number = TRUE; break;
+ case 'o': only_matching = TRUE; break;
case 'q': quiet = TRUE; break;
- case 'r': recurse = TRUE; break;
+ case 'r': dee_action = dee_RECURSE; break;
case 's': silent = TRUE; break;
case 'u': options |= PCRE_UTF8; break;
case 'v': invert = TRUE; break;
- case 'w': word_match = TRUE; break;
- case 'x': whole_lines = TRUE; break;
+ case 'w': process_options |= PO_WORD_MATCH; break;
+ case 'x': process_options |= PO_LINE_MATCH; break;
case 'V':
fprintf(stderr, "pcregrep version %s using ", VERSION);
@@ -828,6 +1114,134 @@ return options;
/*************************************************
+* Construct printed ordinal *
+*************************************************/
+
+/* This turns a number into "1st", "3rd", etc. */
+
+static char *
+ordin(int n)
+{
+static char buffer[8];
+char *p = buffer;
+sprintf(p, "%d", n);
+while (*p != 0) p++;
+switch (n%10)
+ {
+ case 1: strcpy(p, "st"); break;
+ case 2: strcpy(p, "nd"); break;
+ case 3: strcpy(p, "rd"); break;
+ default: strcpy(p, "th"); break;
+ }
+return buffer;
+}
+
+
+
+/*************************************************
+* Compile a single pattern *
+*************************************************/
+
+/* When the -F option has been used, this is called for each substring.
+Otherwise it's called for each supplied pattern.
+
+Arguments:
+ pattern the pattern string
+ options the PCRE options
+ filename the file name, or NULL for a command-line pattern
+ count 0 if this is the only command line pattern, or
+ number of the command line pattern, or
+ linenumber for a pattern from a file
+
+Returns: TRUE on success, FALSE after an error
+*/
+
+static BOOL
+compile_single_pattern(char *pattern, int options, char *filename, int count)
+{
+char buffer[MBUFTHIRD + 16];
+const char *error;
+int errptr;
+
+if (pattern_count >= MAX_PATTERN_COUNT)
+ {
+ fprintf(stderr, "pcregrep: Too many %spatterns (max %d)\n",
+ (filename == NULL)? "command-line " : "", MAX_PATTERN_COUNT);
+ return FALSE;
+ }
+
+sprintf(buffer, "%s%.*s%s", prefix[process_options], MBUFTHIRD, pattern,
+ suffix[process_options]);
+pattern_list[pattern_count] =
+ pcre_compile(buffer, options, &error, &errptr, pcretables);
+if (pattern_list[pattern_count++] != NULL) return TRUE;
+
+/* Handle compile errors */
+
+errptr -= (int)strlen(prefix[process_options]);
+if (errptr > (int)strlen(pattern)) errptr = (int)strlen(pattern);
+
+if (filename == NULL)
+ {
+ if (count == 0)
+ fprintf(stderr, "pcregrep: Error in command-line regex "
+ "at offset %d: %s\n", errptr, error);
+ else
+ fprintf(stderr, "pcregrep: Error in %s command-line regex "
+ "at offset %d: %s\n", ordin(count), errptr, error);
+ }
+else
+ {
+ fprintf(stderr, "pcregrep: Error in regex in line %d of %s "
+ "at offset %d: %s\n", count, filename, errptr, error);
+ }
+
+return FALSE;
+}
+
+
+
+/*************************************************
+* Compile one supplied pattern *
+*************************************************/
+
+/* When the -F option has been used, each string may be a list of strings,
+separated by newlines. They will be matched literally.
+
+Arguments:
+ pattern the pattern string
+ options the PCRE options
+ filename the file name, or NULL for a command-line pattern
+ count 0 if this is the only command line pattern, or
+ number of the command line pattern, or
+ linenumber for a pattern from a file
+
+Returns: TRUE on success, FALSE after an error
+*/
+
+static BOOL
+compile_pattern(char *pattern, int options, char *filename, int count)
+{
+if ((process_options & PO_FIXED_STRINGS) != 0)
+ {
+ char buffer[MBUFTHIRD];
+ for(;;)
+ {
+ char *p = strchr(pattern, '\n');
+ if (p == NULL)
+ return compile_single_pattern(pattern, options, filename, count);
+ sprintf(buffer, "%.*s", p - pattern, pattern);
+ pattern = p + 1;
+ if (!compile_single_pattern(buffer, options, filename, count))
+ return FALSE;
+ }
+ }
+else return compile_single_pattern(pattern, options, filename, count);
+}
+
+
+
+/*************************************************
* Main program *
*************************************************/
@@ -838,10 +1252,13 @@ main(int argc, char **argv)
{
int i, j;
int rc = 1;
-int options = 0;
+int pcre_options = 0;
+int cmd_pattern_count = 0;
int errptr;
-const char *error;
BOOL only_one_at_top;
+char *patterns[MAX_PATTERN_COUNT];
+const char *locale_from = "--locale";
+const char *error;
/* Process the options */
@@ -855,11 +1272,11 @@ for (i = 1; i < argc; i++)
if (argv[i][0] != '-') break;
/* If we hit an argument that is just "-", it may be a reference to STDIN,
- but only if we have previously had -f to define the patterns. */
+ but only if we have previously had -e or -f to define the patterns. */
if (argv[i][1] == 0)
{
- if (pattern_filename != NULL) break;
+ if (pattern_filename != NULL || pattern_count > 0) break;
else exit(usage(2));
}
@@ -881,9 +1298,9 @@ for (i = 1; i < argc; i++)
/* Some long options have data that follows after =, for example file=name.
Some options have variations in the long name spelling: specifically, we
allow "regexp" because GNU grep allows it, though I personally go along
- with Jeff Friedl in preferring "regex" without the "p". These options are
- entered in the table as "regex(p)". No option is in both these categories,
- fortunately. */
+ with Jeffrey Friedl and Larry Wall in preferring "regex" without the "p".
+ These options are entered in the table as "regex(p)". No option is in both
+ these categories, fortunately. */
for (op = optionlist; op->one_char != 0; op++)
{
@@ -931,6 +1348,30 @@ for (i = 1; i < argc; i++)
}
}
+
+ /* Jeffrey Friedl's debugging harness uses these additional options which
+ are not in the right form for putting in the option table because they use
+ only one hyphen, yet are more than one character long. By putting them
+ separately here, they will not get displayed as part of the help() output,
+ but I don't think Jeffrey will care about that. */
+
+#ifdef JFRIEDL_DEBUG
+ else if (strcmp(argv[i], "-pre") == 0) {
+ jfriedl_prefix = argv[++i];
+ continue;
+ } else if (strcmp(argv[i], "-post") == 0) {
+ jfriedl_postfix = argv[++i];
+ continue;
+ } else if (strcmp(argv[i], "-XT") == 0) {
+ sscanf(argv[++i], "%d", &jfriedl_XT);
+ continue;
+ } else if (strcmp(argv[i], "-XR") == 0) {
+ sscanf(argv[++i], "%d", &jfriedl_XR);
+ continue;
+ }
+#endif
+
+
/* One-char options; many that have no data may be in a single argument; we
continue till we hit the last one or one that needs data. */
@@ -953,42 +1394,94 @@ for (i = 1; i < argc; i++)
option_data = s+1;
break;
}
- options = handle_option(*s++, options);
+ pcre_options = handle_option(*s++, pcre_options);
}
}
- /* At this point we should have op pointing to a matched option */
+ /* At this point we should have op pointing to a matched option. If the type
+ is NO_DATA, it means that there is no data, and the option might set
+ something in the PCRE options. */
if (op->type == OP_NODATA)
- options = handle_option(op->one_char, options);
- else
{
- if (*option_data == 0)
+ pcre_options = handle_option(op->one_char, pcre_options);
+ continue;
+ }
+
+ /* If the option type is OP_OP_STRING or OP_OP_NUMBER, it's an option that
+ either has a value or defaults to something. It cannot have data in a
+ separate item. At the moment, the only such options are "colo(u)r" and
+ Jeffrey Friedl's special -S debugging option. */
+
+ if (*option_data == 0 &&
+ (op->type == OP_OP_STRING || op->type == OP_OP_NUMBER))
+ {
+ switch (op->one_char)
{
- if (i >= argc - 1 || longopwasequals)
- {
- fprintf(stderr, "pcregrep: Data missing after %s\n", argv[i]);
- exit(usage(2));
- }
- option_data = argv[++i];
+ case N_COLOUR:
+ colour_option = (char *)"auto";
+ break;
+#ifdef JFRIEDL_DEBUG
+ case 'S':
+ S_arg = 0;
+ break;
+#endif
}
+ continue;
+ }
- if (op->type == OP_STRING) *((char **)op->dataptr) = option_data; else
+ /* Otherwise, find the data string for the option. */
+
+ if (*option_data == 0)
+ {
+ if (i >= argc - 1 || longopwasequals)
{
- char *endptr;
- int n = strtoul(option_data, &endptr, 10);
- if (*endptr != 0)
+ fprintf(stderr, "pcregrep: Data missing after %s\n", argv[i]);
+ exit(usage(2));
+ }
+ option_data = argv[++i];
+ }
+
+ /* If the option type is OP_PATLIST, it's the -e option, which can be called
+ multiple times to create a list of patterns. */
+
+ if (op->type == OP_PATLIST)
+ {
+ if (cmd_pattern_count >= MAX_PATTERN_COUNT)
+ {
+ fprintf(stderr, "pcregrep: Too many command-line patterns (max %d)\n",
+ MAX_PATTERN_COUNT);
+ return 2;
+ }
+ patterns[cmd_pattern_count++] = option_data;
+ }
+
+ /* Otherwise, deal with single string or numeric data values. */
+
+ else if (op->type != OP_NUMBER && op->type != OP_OP_NUMBER)
+ {
+ *((char **)op->dataptr) = option_data;
+ }
+ else
+ {
+ char *endptr;
+ int n = strtoul(option_data, &endptr, 10);
+ if (*endptr != 0)
+ {
+ if (longop)
{
- if (longop)
- fprintf(stderr, "pcregrep: Malformed number \"%s\" after --%s\n",
- option_data, op->long_name);
- else
- fprintf(stderr, "pcregrep: Malformed number \"%s\" after -%c\n",
- option_data, op->one_char);
- exit(usage(2));
+ char *equals = strchr(op->long_name, '=');
+ int nlen = (equals == NULL)? (int)strlen(op->long_name) :
+ equals - op->long_name;
+ fprintf(stderr, "pcregrep: Malformed number \"%s\" after --%.*s\n",
+ option_data, nlen, op->long_name);
}
- *((int *)op->dataptr) = n;
+ else
+ fprintf(stderr, "pcregrep: Malformed number \"%s\" after -%c\n",
+ option_data, op->one_char);
+ exit(usage(2));
}
+ *((int *)op->dataptr) = n;
}
}
@@ -1001,102 +1494,163 @@ if (both_context > 0)
if (before_context == 0) before_context = both_context;
}
-pattern_list = (pcre **)malloc(MAX_PATTERN_COUNT * sizeof(pcre *));
-hints_list = (pcre_extra **)malloc(MAX_PATTERN_COUNT * sizeof(pcre_extra *));
+/* If a locale has not been provided as an option, see if the LC_CTYPE or
+LC_ALL environment variable is set, and if so, use it. */
-if (pattern_list == NULL || hints_list == NULL)
+if (locale == NULL)
{
- fprintf(stderr, "pcregrep: malloc failed\n");
- return 2;
+ locale = getenv("LC_ALL");
+ locale_from = "LCC_ALL";
}
-/* Compile the regular expression(s). */
-
-if (pattern_filename != NULL)
+if (locale == NULL)
{
- FILE *f = fopen(pattern_filename, "r");
- char buffer[MBUFTHIRD + 16];
- char *rdstart;
- int adjust = 0;
+ locale = getenv("LC_CTYPE");
+ locale_from = "LC_CTYPE";
+ }
- if (f == NULL)
+/* If a locale has been provided, set it, and generate the tables the PCRE
+needs. Otherwise, pcretables==NULL, which causes the use of default tables. */
+
+if (locale != NULL)
+ {
+ if (setlocale(LC_CTYPE, locale) == NULL)
{
- fprintf(stderr, "pcregrep: Failed to open %s: %s\n", pattern_filename,
- strerror(errno));
+ fprintf(stderr, "pcregrep: Failed to set locale %s (obtained from %s)\n",
+ locale, locale_from);
return 2;
}
+ pcretables = pcre_maketables();
+ }
+
+/* Sort out colouring */
- if (whole_lines)
+if (colour_option != NULL && strcmp(colour_option, "never") != 0)
+ {
+ if (strcmp(colour_option, "always") == 0) do_colour = TRUE;
+ else if (strcmp(colour_option, "auto") == 0) do_colour = is_stdout_tty();
+ else
{
- strcpy(buffer, "^(?:");
- adjust = 4;
+ fprintf(stderr, "pcregrep: Unknown colour setting \"%s\"\n",
+ colour_option);
+ return 2;
}
- else if (word_match)
+ if (do_colour)
{
- strcpy(buffer, "\\b");
- adjust = 2;
+ char *cs = getenv("PCREGREP_COLOUR");
+ if (cs == NULL) cs = getenv("PCREGREP_COLOR");
+ if (cs != NULL) colour_string = cs;
}
+ }
- rdstart = buffer + adjust;
- while (fgets(rdstart, MBUFTHIRD, f) != NULL)
+/* Interpret the text values for -d and -D */
+
+if (dee_option != NULL)
+ {
+ if (strcmp(dee_option, "read") == 0) dee_action = dee_READ;
+ else if (strcmp(dee_option, "recurse") == 0) dee_action = dee_RECURSE;
+ else if (strcmp(dee_option, "skip") == 0) dee_action = dee_SKIP;
+ else
{
- char *s = rdstart + (int)strlen(rdstart);
- if (pattern_count >= MAX_PATTERN_COUNT)
- {
- fprintf(stderr, "pcregrep: Too many patterns in file (max %d)\n",
- MAX_PATTERN_COUNT);
- return 2;
- }
- while (s > rdstart && isspace((unsigned char)(s[-1]))) s--;
- if (s == rdstart) continue;
- if (whole_lines) strcpy(s, ")$");
- else if (word_match)strcpy(s, "\\b");
- else *s = 0;
- pattern_list[pattern_count] = pcre_compile(buffer, options, &error,
- &errptr, NULL);
- if (pattern_list[pattern_count++] == NULL)
- {
- fprintf(stderr, "pcregrep: Error in regex number %d at offset %d: %s\n",
- pattern_count, errptr - adjust, error);
- return 2;
- }
+ fprintf(stderr, "pcregrep: Invalid value \"%s\" for -d\n", dee_option);
+ return 2;
}
- fclose(f);
}
-/* If no file name, a single regex must be given inline. */
+if (DEE_option != NULL)
+ {
+ if (strcmp(DEE_option, "read") == 0) DEE_action = DEE_READ;
+ else if (strcmp(DEE_option, "skip") == 0) DEE_action = DEE_SKIP;
+ else
+ {
+ fprintf(stderr, "pcregrep: Invalid value \"%s\" for -D\n", DEE_option);
+ return 2;
+ }
+ }
-else
+/* Check the values for Jeffrey Friedl's debugging options. */
+
+#ifdef JFRIEDL_DEBUG
+if (S_arg > 9)
{
- char buffer[MBUFTHIRD + 16];
- char *pat;
- int adjust = 0;
+ fprintf(stderr, "pcregrep: bad value for -S option\n");
+ return 2;
+ }
+if (jfriedl_XT != 0 || jfriedl_XR != 0)
+ {
+ if (jfriedl_XT == 0) jfriedl_XT = 1;
+ if (jfriedl_XR == 0) jfriedl_XR = 1;
+ }
+#endif
+
+/* Get memory to store the pattern and hints lists. */
+
+pattern_list = (pcre **)malloc(MAX_PATTERN_COUNT * sizeof(pcre *));
+hints_list = (pcre_extra **)malloc(MAX_PATTERN_COUNT * sizeof(pcre_extra *));
+
+if (pattern_list == NULL || hints_list == NULL)
+ {
+ fprintf(stderr, "pcregrep: malloc failed\n");
+ return 2;
+ }
+/* If no patterns were provided by -e, and there is no file provided by -f,
+the first argument is the one and only pattern, and it must exist. */
+
+if (cmd_pattern_count == 0 && pattern_filename == NULL)
+ {
if (i >= argc) return usage(2);
+ patterns[cmd_pattern_count++] = argv[i++];
+ }
+
+/* Compile the patterns that were provided on the command line, either by
+multiple uses of -e or as a single unkeyed pattern. */
- if (whole_lines)
+for (j = 0; j < cmd_pattern_count; j++)
+ {
+ if (!compile_pattern(patterns[j], pcre_options, NULL,
+ (j == 0 && cmd_pattern_count == 1)? 0 : j + 1))
+ return 2;
+ }
+
+/* Compile the regular expressions that are provided in a file. */
+
+if (pattern_filename != NULL)
+ {
+ int linenumber = 0;
+ FILE *f;
+ char *filename;
+ char buffer[MBUFTHIRD];
+
+ if (strcmp(pattern_filename, "-") == 0)
{
- sprintf(buffer, "^(?:%.*s)$", MBUFTHIRD, argv[i++]);
- pat = buffer;
- adjust = 4;
+ f = stdin;
+ filename = stdin_name;
}
- else if (word_match)
+ else
{
- sprintf(buffer, "\\b%.*s\\b", MBUFTHIRD, argv[i++]);
- pat = buffer;
- adjust = 2;
+ f = fopen(pattern_filename, "r");
+ if (f == NULL)
+ {
+ fprintf(stderr, "pcregrep: Failed to open %s: %s\n", pattern_filename,
+ strerror(errno));
+ return 2;
+ }
+ filename = pattern_filename;
}
- else pat = argv[i++];
-
- pattern_list[0] = pcre_compile(pat, options, &error, &errptr, NULL);
- if (pattern_list[0] == NULL)
+ while (fgets(buffer, MBUFTHIRD, f) != NULL)
{
- fprintf(stderr, "pcregrep: Error in regex at offset %d: %s\n",
- errptr - adjust, error);
- return 2;
+ char *s = buffer + (int)strlen(buffer);
+ while (s > buffer && isspace((unsigned char)(s[-1]))) s--;
+ *s = 0;
+ linenumber++;
+ if (buffer[0] == 0) continue; /* Skip blank lines */
+ if (!compile_pattern(buffer, pcre_options, filename, linenumber))
+ return 2;
}
- pattern_count++;
+
+ if (f != stdin) fclose(f);
}
/* Study the regular expressions, as we will be running them many times */
@@ -1117,7 +1671,8 @@ for (j = 0; j < pattern_count; j++)
if (exclude_pattern != NULL)
{
- exclude_compiled = pcre_compile(exclude_pattern, 0, &error, &errptr, NULL);
+ exclude_compiled = pcre_compile(exclude_pattern, 0, &error, &errptr,
+ pcretables);
if (exclude_compiled == NULL)
{
fprintf(stderr, "pcregrep: Error in 'exclude' regex at offset %d: %s\n",
@@ -1128,7 +1683,8 @@ if (exclude_pattern != NULL)
if (include_pattern != NULL)
{
- include_compiled = pcre_compile(include_pattern, 0, &error, &errptr, NULL);
+ include_compiled = pcre_compile(include_pattern, 0, &error, &errptr,
+ pcretables);
if (include_compiled == NULL)
{
fprintf(stderr, "pcregrep: Error in 'include' regex at offset %d: %s\n",
@@ -1137,21 +1693,22 @@ if (include_pattern != NULL)
}
}
-/* If there are no further arguments, do the business on stdin and exit */
+/* If there are no further arguments, do the business on stdin and exit. */
-if (i >= argc) return pcregrep(stdin,
- (filenames_only || filenames_nomatch_only)? stdin_name : NULL);
+if (i >= argc)
+ return pcregrep(stdin, (filenames > FN_DEFAULT)? stdin_name : NULL);
/* Otherwise, work through the remaining arguments as files or directories.
Pass in the fact that there is only one argument at top level - this suppresses
-the file name if the argument is not a directory and filenames_only is not set.
-*/
+the file name if the argument is not a directory and filenames are not
+otherwise forced. */
-only_one_at_top = (i == argc - 1);
+only_one_at_top = i == argc - 1; /* Catch initial value of i */
for (; i < argc; i++)
{
- int frc = grep_or_recurse(argv[i], recurse, filenames, only_one_at_top);
+ int frc = grep_or_recurse(argv[i], dee_action == dee_RECURSE,
+ only_one_at_top);
if (frc > 1) rc = frc;
else if (frc == 0 && rc == 1) rc = 0;
}
diff --git a/ext/pcre/pcrelib/pcreposix.c b/ext/pcre/pcrelib/pcreposix.c
index 06fd58bcb..cbb1ff800 100644
--- a/ext/pcre/pcrelib/pcreposix.c
+++ b/ext/pcre/pcrelib/pcreposix.c
@@ -6,7 +6,7 @@
and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -131,7 +131,7 @@ static const char *const pstring[] = {
* Translate error code to string *
*************************************************/
-EXPORT size_t
+PCRE_DATA_SCOPE size_t
regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size)
{
const char *message, *addmessage;
@@ -166,7 +166,7 @@ return length + addlength;
* Free store held by a regex *
*************************************************/
-EXPORT void
+PCRE_DATA_SCOPE void
regfree(regex_t *preg)
{
(pcre_free)(preg->re_pcre);
@@ -189,7 +189,7 @@ Returns: 0 on success
various non-zero codes on failure
*/
-EXPORT int
+PCRE_DATA_SCOPE int
regcomp(regex_t *preg, const char *pattern, int cflags)
{
const char *errorptr;
@@ -197,9 +197,11 @@ int erroffset;
int errorcode;
int options = 0;
-if ((cflags & REG_ICASE) != 0) options |= PCRE_CASELESS;
+if ((cflags & REG_ICASE) != 0) options |= PCRE_CASELESS;
if ((cflags & REG_NEWLINE) != 0) options |= PCRE_MULTILINE;
-if ((cflags & REG_DOTALL) != 0) options |= PCRE_DOTALL;
+if ((cflags & REG_DOTALL) != 0) options |= PCRE_DOTALL;
+if ((cflags & REG_NOSUB) != 0) options |= PCRE_NO_AUTO_CAPTURE;
+if ((cflags & REG_UTF8) != 0) options |= PCRE_UTF8;
preg->re_pcre = pcre_compile2(pattern, options, &errorcode, &errorptr,
&erroffset, NULL);
@@ -223,9 +225,13 @@ substring, so we have to get and release working store instead of just using
the POSIX structures as was done in earlier releases when PCRE needed only 2
ints. However, if the number of possible capturing brackets is small, use a
block of store on the stack, to reduce the use of malloc/free. The threshold is
-in a macro that can be changed at configure time. */
+in a macro that can be changed at configure time.
-EXPORT int
+If REG_NOSUB was specified at compile time, the PCRE_NO_AUTO_CAPTURE flag will
+be set. When this is the case, the nmatch and pmatch arguments are ignored, and
+the only result is yes/no/error. */
+
+PCRE_DATA_SCOPE int
regexec(const regex_t *preg, const char *string, size_t nmatch,
regmatch_t pmatch[], int eflags)
{
@@ -234,13 +240,20 @@ int options = 0;
int *ovector = NULL;
int small_ovector[POSIX_MALLOC_THRESHOLD * 3];
BOOL allocated_ovector = FALSE;
+BOOL nosub =
+ (((const pcre *)preg->re_pcre)->options & PCRE_NO_AUTO_CAPTURE) != 0;
if ((eflags & REG_NOTBOL) != 0) options |= PCRE_NOTBOL;
if ((eflags & REG_NOTEOL) != 0) options |= PCRE_NOTEOL;
((regex_t *)preg)->re_erroffset = (size_t)(-1); /* Only has meaning after compile */
-if (nmatch > 0)
+/* When no string data is being returned, ensure that nmatch is zero.
+Otherwise, ensure the vector for holding the return data is large enough. */
+
+if (nosub) nmatch = 0;
+
+else if (nmatch > 0)
{
if (nmatch <= POSIX_MALLOC_THRESHOLD)
{
@@ -248,6 +261,7 @@ if (nmatch > 0)
}
else
{
+ if (nmatch > INT_MAX/(sizeof(int) * 3)) return REG_ESPACE;
ovector = (int *)malloc(sizeof(int) * nmatch * 3);
if (ovector == NULL) return REG_ESPACE;
allocated_ovector = TRUE;
@@ -262,13 +276,16 @@ if (rc == 0) rc = nmatch; /* All captured slots were filled in */
if (rc >= 0)
{
size_t i;
- for (i = 0; i < (size_t)rc; i++)
+ if (!nosub)
{
- pmatch[i].rm_so = ovector[i*2];
- pmatch[i].rm_eo = ovector[i*2+1];
+ for (i = 0; i < (size_t)rc; i++)
+ {
+ pmatch[i].rm_so = ovector[i*2];
+ pmatch[i].rm_eo = ovector[i*2+1];
+ }
+ if (allocated_ovector) free(ovector);
+ for (; i < nmatch; i++) pmatch[i].rm_so = pmatch[i].rm_eo = -1;
}
- if (allocated_ovector) free(ovector);
- for (; i < nmatch; i++) pmatch[i].rm_so = pmatch[i].rm_eo = -1;
return 0;
}
diff --git a/ext/pcre/pcrelib/pcreposix.h b/ext/pcre/pcrelib/pcreposix.h
index 4f1b1abd4..31ee03749 100644
--- a/ext/pcre/pcrelib/pcreposix.h
+++ b/ext/pcre/pcrelib/pcreposix.h
@@ -9,7 +9,7 @@
Compatible Regular Expression library. It defines the things POSIX says should
be there. I hope.
- Copyright (c) 1997-2005 University of Cambridge
+ Copyright (c) 1997-2006 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -50,22 +50,20 @@ POSSIBILITY OF SUCH DAMAGE.
extern "C" {
#endif
-/* Options defined by POSIX. */
+/* Options, mostly defined by POSIX, but with a couple of extras. */
-#define REG_ICASE 0x01
-#define REG_NEWLINE 0x02
-#define REG_NOTBOL 0x04
-#define REG_NOTEOL 0x08
+#define REG_ICASE 0x0001
+#define REG_NEWLINE 0x0002
+#define REG_NOTBOL 0x0004
+#define REG_NOTEOL 0x0008
+#define REG_DOTALL 0x0010 /* NOT defined by POSIX. */
+#define REG_NOSUB 0x0020
+#define REG_UTF8 0x0040 /* NOT defined by POSIX. */
-/* Additional options, not defined by POSIX, but somebody wanted them. */
-
-#define REG_DOTALL 0x10
-
-/* These are not used by PCRE, but by defining them we make it easier
+/* This is not used by PCRE, but by defining it we make it easier
to slot PCRE into existing programs that make POSIX calls. */
#define REG_EXTENDED 0
-#define REG_NOSUB 0
/* Error values. Not all these are relevant or used by the wrapper. */
@@ -107,12 +105,40 @@ typedef struct {
regoff_t rm_eo;
} regmatch_t;
+/* Win32 uses DLL by default; it needs special stuff for exported functions
+when building PCRE. */
+
+#ifndef PCRE_DATA_SCOPE
+#ifdef _WIN32
+# ifdef PCRE_DEFINITION
+# ifdef DLL_EXPORT
+# define PCRE_DATA_SCOPE __declspec(dllexport)
+# endif
+# else
+# ifndef PCRE_STATIC
+# define PCRE_DATA_SCOPE extern __declspec(dllimport)
+# endif
+# endif
+#endif
+#endif
+
+/* Otherwise, we use the standard "extern". */
+
+#ifndef PCRE_DATA_SCOPE
+# ifdef __cplusplus
+# define PCRE_DATA_SCOPE extern "C"
+# else
+# define PCRE_DATA_SCOPE extern
+# endif
+#endif
+
/* The functions */
-extern int regcomp(regex_t *, const char *, int);
-extern int regexec(const regex_t *, const char *, size_t, regmatch_t *, int);
-extern size_t regerror(int, const regex_t *, char *, size_t);
-extern void regfree(regex_t *);
+PCRE_DATA_SCOPE int regcomp(regex_t *, const char *, int);
+PCRE_DATA_SCOPE int regexec(const regex_t *, const char *, size_t,
+ regmatch_t *, int);
+PCRE_DATA_SCOPE size_t regerror(int, const regex_t *, char *, size_t);
+PCRE_DATA_SCOPE void regfree(regex_t *);
#ifdef __cplusplus
} /* extern "C" */
diff --git a/ext/pcre/pcrelib/pcretest.c b/ext/pcre/pcrelib/pcretest.c
index 9b6347086..f5c6cdd2e 100644
--- a/ext/pcre/pcrelib/pcretest.c
+++ b/ext/pcre/pcrelib/pcretest.c
@@ -46,13 +46,34 @@ POSSIBILITY OF SUCH DAMAGE.
#define PCRE_SPY /* For Win32 build, import data, not export */
-/* We need the internal info for displaying the results of pcre_study() and
-other internal data; pcretest also uses some of the fixed tables, and generally
-has "inside information" compared to a program that strictly follows the PCRE
-API. */
+/* We include pcre_internal.h because we need the internal info for displaying
+the results of pcre_study() and we also need to know about the internal
+macros, structures, and other internal data values; pcretest has "inside
+information" compared to a program that strictly follows the PCRE API. */
#include "pcre_internal.h"
+/* We need access to the data tables that PCRE uses. So as not to have to keep
+two copies, we include the source file here, changing the names of the external
+symbols to prevent clashes. */
+
+#define _pcre_utf8_table1 utf8_table1
+#define _pcre_utf8_table1_size utf8_table1_size
+#define _pcre_utf8_table2 utf8_table2
+#define _pcre_utf8_table3 utf8_table3
+#define _pcre_utf8_table4 utf8_table4
+#define _pcre_utt utt
+#define _pcre_utt_size utt_size
+#define _pcre_OP_lengths OP_lengths
+
+#include "pcre_tables.c"
+
+/* We also need the pcre_printint() function for printing out compiled
+patterns. This function is in a separate file so that it can be included in
+pcre_compile.c when that module is compiled with debugging enabled. */
+
+#include "pcre_printint.src"
+
/* It is possible to compile this test program without including support for
testing the POSIX interface, though this is not available via the standard
@@ -68,6 +89,8 @@ to the DFA matcher (NODFA), and without the doublecheck of the old "info"
function (define NOINFOCHECK). */
+/* Other parameters */
+
#ifndef CLOCKS_PER_SEC
#ifdef CLK_TCK
#define CLOCKS_PER_SEC CLK_TCK
@@ -83,6 +106,8 @@ function (define NOINFOCHECK). */
#define DBUFFER_SIZE BUFFER_SIZE
+/* Static variables */
+
static FILE *outfile;
static int log_store = 0;
static int callout_count;
@@ -162,7 +187,7 @@ if (i == 0 || i == 6) return 0; /* invalid UTF-8 */
/* i now has a value in the range 1-5 */
s = 6*i;
-d = (c & _pcre_utf8_table3[i]) << s;
+d = (c & utf8_table3[i]) << s;
for (j = 0; j < i; j++)
{
@@ -174,8 +199,8 @@ for (j = 0; j < i; j++)
/* Check that encoding was the correct unique one */
-for (j = 0; j < _pcre_utf8_table1_size; j++)
- if (d <= _pcre_utf8_table1[j]) break;
+for (j = 0; j < utf8_table1_size; j++)
+ if (d <= utf8_table1[j]) break;
if (j != i) return -(i+1);
/* Valid value */
@@ -189,6 +214,38 @@ return i+1;
/*************************************************
+* Convert character value to UTF-8 *
+*************************************************/
+
+/* This function takes an integer value in the range 0 - 0x7fffffff
+and encodes it as a UTF-8 character in 0 to 6 bytes.
+
+Arguments:
+ cvalue the character value
+ buffer pointer to buffer for result - at least 6 bytes long
+
+Returns: number of characters placed in the buffer
+*/
+
+static int
+ord2utf8(int cvalue, uschar *buffer)
+{
+register int i, j;
+for (i = 0; i < utf8_table1_size; i++)
+ if (cvalue <= utf8_table1[i]) break;
+buffer += i;
+for (j = i; j > 0; j--)
+ {
+ *buffer-- = 0x80 | (cvalue & 0x3f);
+ cvalue >>= 6;
+ }
+*buffer = utf8_table2[i] | cvalue;
+return i + 1;
+}
+
+
+
+/*************************************************
* Print character string *
*************************************************/
@@ -198,7 +255,7 @@ chars without printing. */
static int pchars(unsigned char *p, int length, FILE *f)
{
-int c;
+int c = 0;
int yield = 0;
while (length-- > 0)
@@ -418,6 +475,57 @@ return ((value & 0x000000ff) << 24) |
/*************************************************
+* Check match or recursion limit *
+*************************************************/
+
+static int
+check_match_limit(pcre *re, pcre_extra *extra, uschar *bptr, int len,
+ int start_offset, int options, int *use_offsets, int use_size_offsets,
+ int flag, unsigned long int *limit, int errnumber, const char *msg)
+{
+int count;
+int min = 0;
+int mid = 64;
+int max = -1;
+
+extra->flags |= flag;
+
+for (;;)
+ {
+ *limit = mid;
+
+ count = pcre_exec(re, extra, (char *)bptr, len, start_offset, options,
+ use_offsets, use_size_offsets);
+
+ if (count == errnumber)
+ {
+ /* fprintf(outfile, "Testing %s limit = %d\n", msg, mid); */
+ min = mid;
+ mid = (mid == max - 1)? max : (max > 0)? (min + max)/2 : mid*2;
+ }
+
+ else if (count >= 0 || count == PCRE_ERROR_NOMATCH ||
+ count == PCRE_ERROR_PARTIAL)
+ {
+ if (mid == min + 1)
+ {
+ fprintf(outfile, "Minimum %s limit = %d\n", msg, mid);
+ break;
+ }
+ /* fprintf(outfile, "Testing %s limit = %d\n", msg, mid); */
+ max = mid;
+ mid = (min + mid)/2;
+ }
+ else break; /* Some other error */
+ }
+
+extra->flags &= ~flag;
+return count;
+}
+
+
+
+/*************************************************
* Main Program *
*************************************************/
@@ -434,6 +542,7 @@ int op = 1;
int timeit = 0;
int showinfo = 0;
int showstore = 0;
+int quiet = 0;
int size_offsets = 45;
int size_offsets_max;
int *offsets = NULL;
@@ -474,6 +583,7 @@ while (argc > 1 && argv[op][0] == '-')
if (strcmp(argv[op], "-s") == 0 || strcmp(argv[op], "-m") == 0)
showstore = 1;
else if (strcmp(argv[op], "-t") == 0) timeit = 1;
+ else if (strcmp(argv[op], "-q") == 0) quiet = 1;
else if (strcmp(argv[op], "-i") == 0) showinfo = 1;
else if (strcmp(argv[op], "-d") == 0) showinfo = debug = 1;
#if !defined NODFA
@@ -506,6 +616,8 @@ while (argc > 1 && argv[op][0] == '-')
printf(" POSIX malloc threshold = %d\n", rc);
(void)pcre_config(PCRE_CONFIG_MATCH_LIMIT, &rc);
printf(" Default match limit = %d\n", rc);
+ (void)pcre_config(PCRE_CONFIG_MATCH_LIMIT_RECURSION, &rc);
+ printf(" Default recursion depth limit = %d\n", rc);
(void)pcre_config(PCRE_CONFIG_STACKRECURSE, &rc);
printf(" Match recursion uses %s\n", rc? "stack" : "heap");
exit(0);
@@ -577,9 +689,9 @@ pcre_free = new_free;
pcre_stack_malloc = stack_malloc;
pcre_stack_free = stack_free;
-/* Heading line, then prompt for first regex if stdin */
+/* Heading line unless quiet, then prompt for first regex if stdin */
-fprintf(outfile, "PCRE version %s\n\n", pcre_version());
+if (!quiet) fprintf(outfile, "PCRE version %s\n\n", pcre_version());
/* Main loop */
@@ -839,6 +951,9 @@ while (!done)
if ((options & PCRE_CASELESS) != 0) cflags |= REG_ICASE;
if ((options & PCRE_MULTILINE) != 0) cflags |= REG_NEWLINE;
if ((options & PCRE_DOTALL) != 0) cflags |= REG_DOTALL;
+ if ((options & PCRE_NO_AUTO_CAPTURE) != 0) cflags |= REG_NOSUB;
+ if ((options & PCRE_UTF8) != 0) cflags |= REG_UTF8;
+
rc = regcomp(&preg, (char *)p, cflags);
/* Compilation failed; go back for another re, skipping to blank line
@@ -988,7 +1103,7 @@ while (!done)
if (do_debug)
{
fprintf(outfile, "------------------------------------------------------------------\n");
- _pcre_printint(re, outfile);
+ pcre_printint(re, outfile);
}
new_info(re, NULL, PCRE_INFO_OPTIONS, &get_options);
@@ -1054,7 +1169,7 @@ while (!done)
fprintf(outfile, "Partial matching not supported\n");
if (get_options == 0) fprintf(outfile, "No options\n");
- else fprintf(outfile, "Options:%s%s%s%s%s%s%s%s%s%s%s\n",
+ else fprintf(outfile, "Options:%s%s%s%s%s%s%s%s%s%s%s%s\n",
((get_options & PCRE_ANCHORED) != 0)? " anchored" : "",
((get_options & PCRE_CASELESS) != 0)? " caseless" : "",
((get_options & PCRE_EXTENDED) != 0)? " extended" : "",
@@ -1064,6 +1179,7 @@ while (!done)
((get_options & PCRE_DOLLAR_ENDONLY) != 0)? " dollar_endonly" : "",
((get_options & PCRE_EXTRA) != 0)? " extra" : "",
((get_options & PCRE_UNGREEDY) != 0)? " ungreedy" : "",
+ ((get_options & PCRE_NO_AUTO_CAPTURE) != 0)? " no_auto_capture" : "",
((get_options & PCRE_UTF8) != 0)? " utf8" : "",
((get_options & PCRE_NO_UTF8_CHECK) != 0)? " no_utf8_check" : "");
@@ -1209,8 +1325,8 @@ while (!done)
for (;;)
{
- unsigned char *q;
- unsigned char *bptr = dbuffer;
+ uschar *q;
+ uschar *bptr = dbuffer;
int *use_offsets = offsets;
int use_size_offsets = size_offsets;
int callout_data = 0;
@@ -1290,7 +1406,7 @@ while (!done)
{
unsigned char buff8[8];
int ii, utn;
- utn = _pcre_ord2utf8(c, buff8);
+ utn = ord2utf8(c, buff8);
for (ii = 0; ii < utn - 1; ii++) *q++ = buff8[ii];
c = buff8[ii]; /* Last byte */
p = pt + 1;
@@ -1498,6 +1614,11 @@ while (!done)
(void)regerror(rc, &preg, (char *)buffer, BUFFER_SIZE);
fprintf(outfile, "No match: POSIX code %d: %s\n", rc, buffer);
}
+ else if ((((const pcre *)preg.re_pcre)->options & PCRE_NO_AUTO_CAPTURE)
+ != 0)
+ {
+ fprintf(outfile, "Matched with REG_NOSUB\n");
+ }
else
{
size_t i;
@@ -1558,48 +1679,26 @@ while (!done)
}
/* If find_match_limit is set, we want to do repeated matches with
- varying limits in order to find the minimum value. */
+ varying limits in order to find the minimum value for the match limit and
+ for the recursion limit. */
if (find_match_limit)
{
- int min = 0;
- int mid = 64;
- int max = -1;
-
if (extra == NULL)
{
extra = (pcre_extra *)malloc(sizeof(pcre_extra));
extra->flags = 0;
}
- extra->flags |= PCRE_EXTRA_MATCH_LIMIT;
- for (;;)
- {
- extra->match_limit = mid;
- count = pcre_exec(re, extra, (char *)bptr, len, start_offset,
- options | g_notempty, use_offsets, use_size_offsets);
- if (count == PCRE_ERROR_MATCHLIMIT)
- {
- /* fprintf(outfile, "Testing match limit = %d\n", mid); */
- min = mid;
- mid = (mid == max - 1)? max : (max > 0)? (min + max)/2 : mid*2;
- }
- else if (count >= 0 || count == PCRE_ERROR_NOMATCH ||
- count == PCRE_ERROR_PARTIAL)
- {
- if (mid == min + 1)
- {
- fprintf(outfile, "Minimum match limit = %d\n", mid);
- break;
- }
- /* fprintf(outfile, "Testing match limit = %d\n", mid); */
- max = mid;
- mid = (min + mid)/2;
- }
- else break; /* Some other error */
- }
+ count = check_match_limit(re, extra, bptr, len, start_offset,
+ options|g_notempty, use_offsets, use_size_offsets,
+ PCRE_EXTRA_MATCH_LIMIT, &(extra->match_limit),
+ PCRE_ERROR_MATCHLIMIT, "match()");
- extra->flags &= ~PCRE_EXTRA_MATCH_LIMIT;
+ count = check_match_limit(re, extra, bptr, len, start_offset,
+ options|g_notempty, use_offsets, use_size_offsets,
+ PCRE_EXTRA_MATCH_LIMIT_RECURSION, &(extra->match_limit_recursion),
+ PCRE_ERROR_RECURSIONLIMIT, "match() recursion");
}
/* If callout_data is set, use the interface with additional data */
diff --git a/ext/pcre/pcrelib/testdata/grepinput b/ext/pcre/pcrelib/testdata/grepinput
index 2a89c2e09..0ded82475 100644
--- a/ext/pcre/pcrelib/testdata/grepinput
+++ b/ext/pcre/pcrelib/testdata/grepinput
@@ -583,6 +583,26 @@ jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
-------------------------------------------------------------------------------
-Check up on PATTERN near the end.
+aaaaa0
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+bbbbbb
+cccccccccccccccccccccccccccccccccccccccccc
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+eeeee
+aaaaa2
+ffffffffff
+
+This is a line before the binary zero.
+This line contains a binary zero here >This is a line after the binary zero.
+
+ABOVE the elephant
+ABOVE
+ABOVE theatre
+AB.VE
+AB.VE the turtle
+
+PUT NEW DATA ABOVE THIS LINE.
+=============================
+Check up on PATTERN near the end.
This is the last line of this file.
diff --git a/ext/pcre/pcrelib/testdata/greplist b/ext/pcre/pcrelib/testdata/greplist
index bb2705e39..1434ae96f 100644
--- a/ext/pcre/pcrelib/testdata/greplist
+++ b/ext/pcre/pcrelib/testdata/greplist
@@ -1,4 +1,7 @@
This is a file of patterns for testing the -f option. Don't include any blank
-lines because they will match everything!
+lines because they will match everything! This is no longer true, so have one.
+
pattern
line by itself
+
+End of the list of patterns.
diff --git a/ext/pcre/pcrelib/testdata/grepoutput b/ext/pcre/pcrelib/testdata/grepoutput
index 27ab7e4a5..1dd375b65 100644
--- a/ext/pcre/pcrelib/testdata/grepoutput
+++ b/ext/pcre/pcrelib/testdata/grepoutput
@@ -1,4 +1,3 @@
-pcregrep version 4.0 07-Jun-2005 using PCRE version 6.2 01-Aug-2005
---------------------------- Test 1 ------------------------------
PATTERN at the start of a line.
In the middle of a line, PATTERN appears.
@@ -9,23 +8,21 @@ PATTERN at the start of a line.
7:PATTERN at the start of a line.
8:In the middle of a line, PATTERN appears.
10:This pattern is in lower case.
-586:Check up on PATTERN near the end.
+608:Check up on PATTERN near the end.
---------------------------- Test 4 ------------------------------
4
---------------------------- Test 5 ------------------------------
./testdata/grepinput:7:PATTERN at the start of a line.
./testdata/grepinput:8:In the middle of a line, PATTERN appears.
./testdata/grepinput:10:This pattern is in lower case.
-./testdata/grepinput:586:Check up on PATTERN near the end.
---
+./testdata/grepinput:608:Check up on PATTERN near the end.
./testdata/grepinputx:3:Here is the pattern again.
./testdata/grepinputx:5:Pattern
---------------------------- Test 6 ------------------------------
7:PATTERN at the start of a line.
8:In the middle of a line, PATTERN appears.
10:This pattern is in lower case.
-586:Check up on PATTERN near the end.
---
+608:Check up on PATTERN near the end.
3:Here is the pattern again.
5:Pattern
---------------------------- Test 7 ------------------------------
@@ -87,7 +84,7 @@ That time it was on a line by itself.
---------------------------- Test 14 -----------------------------
./testdata/grepinputx:To pat or not to pat, that is the question.
---------------------------- Test 15 -----------------------------
-pcregrep: Error in regex at offset 4: nothing to repeat
+pcregrep: Error in command-line regex at offset 4: nothing to repeat
---------------------------- Test 16 -----------------------------
pcregrep: Failed to open ./testdata/nonexistfile: No such file or directory
---------------------------- Test 17 -----------------------------
@@ -116,14 +113,14 @@ of lines
36-sixteen
37-seventeen
---------------------------- Test 22 -----------------------------
-20-one
-21-two
-22-three
+21-one
+22-two
+23-three
24:four
--
-30-eleven
-31-twelve
-32-thirteen
+31-eleven
+32-twelve
+33-thirteen
34:fourteen
---------------------------- Test 23 -----------------------------
one
@@ -162,15 +159,15 @@ twenty
This is the last line of this file.
---------------------------- Test 25 -----------------------------
-14-
-15-complete pair
-16-of lines
-17-
-18-And there they were again, to check line numbers.
-19-
-20-one
-21-two
-22-three
+15-
+16-complete pair
+17-of lines
+18-
+19-And there they were again, to check line numbers.
+20-
+21-one
+22-two
+23-three
24:four
25-five
26-six
@@ -232,16 +229,16 @@ twenty
This is the last line of this file.
---------------------------- Test 28 -----------------------------
-13-of lines all by themselves.
-14-
-15-complete pair
-16-of lines
-17-
-18-And there they were again, to check line numbers.
-19-
-20-one
-21-two
-22-three
+14-of lines all by themselves.
+15-
+16-complete pair
+17-of lines
+18-
+19-And there they were again, to check line numbers.
+20-
+21-one
+22-two
+23-three
24:four
25-five
26-six
@@ -284,18 +281,18 @@ twenty
This is the last line of this file.
---------------------------- Test 30 -----------------------------
-./testdata/grepinput-3-features should be added at the end, because some of the tests involve the
-./testdata/grepinput-4-output of line numbers, and we don't want these to change.
-./testdata/grepinput-5-
+./testdata/grepinput-4-features should be added at the end, because some of the tests involve the
+./testdata/grepinput-5-output of line numbers, and we don't want these to change.
+./testdata/grepinput-6-
./testdata/grepinput:7:PATTERN at the start of a line.
./testdata/grepinput:8:In the middle of a line, PATTERN appears.
./testdata/grepinput-9-
./testdata/grepinput:10:This pattern is in lower case.
--
-./testdata/grepinput-582-brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
-./testdata/grepinput-583--------------------------------------------------------------------------------
-./testdata/grepinput-584-
-./testdata/grepinput:586:Check up on PATTERN near the end.
+./testdata/grepinput-605-PUT NEW DATA ABOVE THIS LINE.
+./testdata/grepinput-606-=============================
+./testdata/grepinput-607-
+./testdata/grepinput:608:Check up on PATTERN near the end.
--
./testdata/grepinputx-1-This is a second file of input for the pcregrep tests.
./testdata/grepinputx-2-
@@ -311,9 +308,8 @@ This is the last line of this file.
./testdata/grepinput-12-Here follows a whole lot of stuff that makes the file over 24K long.
./testdata/grepinput-13-
--
-./testdata/grepinput:586:Check up on PATTERN near the end.
-./testdata/grepinput-587-
-./testdata/grepinput-588-This is the last line of this file.
+./testdata/grepinput:608:Check up on PATTERN near the end.
+./testdata/grepinput-609-This is the last line of this file.
--
./testdata/grepinputx:3:Here is the pattern again.
./testdata/grepinputx-4-
@@ -334,3 +330,51 @@ RC=0
---------------------------- Test 36 -----------------------------
./testdata/grepinputx
RC=0
+---------------------------- Test 37 -----------------------------
+aaaaa0
+aaaaa2
+RC=0
+======== STDERR ========
+pcregrep: pcre_exec() error -8 while matching this line:
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+pcregrep: error -8 means that a resource limit was exceeded
+pcregrep: check your regex for nested unlimited loops
+pcregrep: pcre_exec() error -8 while matching this line:
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+---------------------------- Test 38 ------------------------------
+This line contains a binary zero here >---------------------------- Test 39 ------------------------------
+This is a line before the binary zero.
+This line contains a binary zero here >---------------------------- Test 40 ------------------------------
+This line contains a binary zero here >This is a line after the binary zero.
+---------------------------- Test 41 ------------------------------
+before the binary zero
+after the binary zero
+---------------------------- Test 41 ------------------------------
+./testdata/grepinput:595:before the binary zero
+./testdata/grepinput:597:after the binary zero
+---------------------------- Test 42 ------------------------------
+595:before
+596:zero
+597:after
+---------------------------- Test 43 ------------------------------
+595:before
+596:zero
+597:zero
+---------------------------- Test 44 ------------------------------
+10:pattern
+595:binary
+596:binary
+597:binary
+---------------------------- Test 45 ------------------------------
+pcregrep: Error in 2nd command-line regex at offset 9: missing )
+---------------------------- Test 46 ------------------------------
+AB.VE
+---------------------------- Test 47 ------------------------------
+ABOVE the elephant
+AB.VE
+AB.VE the turtle
+---------------------------- Test 48 ------------------------------
+ABOVE the elephant
+AB.VE
+AB.VE the turtle
+PUT NEW DATA ABOVE THIS LINE.
diff --git a/ext/pcre/pcrelib/testdata/testinput2 b/ext/pcre/pcrelib/testdata/testinput2
index befb65a44..60d2db00f 100644
--- a/ext/pcre/pcrelib/testdata/testinput2
+++ b/ext/pcre/pcrelib/testdata/testinput2
@@ -672,12 +672,18 @@
/^[[:^alpha:]]/D
+/[_[:alpha:]]/IS
+
/^[[:ascii:]]/D
/^[[:^ascii:]]/D
/^[[:blank:]]/D
+/^[[:^blank:]]/D
+
+/[\n\x0b\x0c\x0d[:blank:]]/IS
+
/^[[:cntrl:]]/D
/^[[:digit:]]/D
@@ -1450,4 +1456,38 @@
"(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+/[^()]*(?:\((?R)\)[^()]*)*/
+ (this(and)that
+ (this(and)that)
+ (this(and)that)stuff
+
+/[^()]*(?:\((?>(?R))\)[^()]*)*/
+ (this(and)that
+ (this(and)that)
+
+/[^()]*(?:\((?R)\))*[^()]*/
+ (this(and)that
+ (this(and)that)
+
+/(?:\((?R)\))*[^()]*/
+ (this(and)that
+ (this(and)that)
+ ((this))
+
+/(?:\((?R)\))|[^()]*/
+ (this(and)that
+ (this(and)that)
+ (this)
+ ((this))
+
+/a(b)c/PN
+ abc
+
+/a(?P<name>b)c/PN
+ abc
+
+/\x{100}/
+
+/\x{0000ff}/
+
/ End of testinput2 /
diff --git a/ext/pcre/pcrelib/testdata/testinput3 b/ext/pcre/pcrelib/testdata/testinput3
index c2abdbfdb..e6ac826f7 100644
--- a/ext/pcre/pcrelib/testdata/testinput3
+++ b/ext/pcre/pcrelib/testdata/testinput3
@@ -62,4 +62,30 @@
*** Failers
école
+/\W+/Lfr_FR
+ >>>\xaa<<<
+ >>>\xba<<<
+
+/[\W]+/Lfr_FR
+ >>>\xaa<<<
+ >>>\xba<<<
+
+/[^[:alpha:]]+/Lfr_FR
+ >>>\xaa<<<
+ >>>\xba<<<
+
+/\w+/Lfr_FR
+ >>>\xaa<<<
+ >>>\xba<<<
+
+/[\w]+/Lfr_FR
+ >>>\xaa<<<
+ >>>\xba<<<
+
+/[[:alpha:]]+/Lfr_FR
+ >>>\xaa<<<
+ >>>\xba<<<
+
+/[[:alpha:]][[:lower:]][[:upper:]]/DLfr_FR
+
/ End of testinput3 /
diff --git a/ext/pcre/pcrelib/testdata/testinput4 b/ext/pcre/pcrelib/testdata/testinput4
index c16e9d998..6e0099c64 100644
--- a/ext/pcre/pcrelib/testdata/testinput4
+++ b/ext/pcre/pcrelib/testdata/testinput4
@@ -510,4 +510,7 @@
/^\x{85}$/8i
\x{85}
+/^\ሴ/8
+ ሴ
+
/ End of testinput4 /
diff --git a/ext/pcre/pcrelib/testdata/testinput5 b/ext/pcre/pcrelib/testdata/testinput5
index fe6ee3e65..dc45445f6 100644
--- a/ext/pcre/pcrelib/testdata/testinput5
+++ b/ext/pcre/pcrelib/testdata/testinput5
@@ -260,4 +260,9 @@
/\w/8
\x{100}X
+/a\x{1234}b/P8
+ a\x{1234}b
+
+/^\ሴ/8D
+
/ End of testinput5 /
diff --git a/ext/pcre/pcrelib/testdata/testinput6 b/ext/pcre/pcrelib/testdata/testinput6
index 01a39477a..a45920a17 100644
--- a/ext/pcre/pcrelib/testdata/testinput6
+++ b/ext/pcre/pcrelib/testdata/testinput6
@@ -51,6 +51,7 @@
\x{09f}
/^\p{Cn}/8
+ \x{e0000}
** Failers
\x{09f}
@@ -77,9 +78,15 @@
/^\p{Lo}/8
\x{1bb}
+ \x{3400}
+ \x{3401}
+ \x{4d00}
+ \x{4db4}
+ \x{4db5}
** Failers
a
\x{2b0}
+ \x{4db6}
/^\p{Lt}/8
\x{1c5}
@@ -514,4 +521,221 @@
A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
+/^\p{Han}+/8
+ \x{2e81}\x{3007}\x{2f804}\x{31a0}
+ ** Failers
+ \x{2e7f}
+
+/^\P{Katakana}+/8
+ \x{3105}
+ ** Failers
+ \x{30ff}
+
+/^[\p{Arabic}]/8
+ \x{06e9}
+ \x{060b}
+ ** Failers
+ X\x{06e9}
+
+/^[\P{Yi}]/8
+ \x{2f800}
+ ** Failers
+ \x{a014}
+ \x{a4c6}
+
+/^\p{Any}X/8
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ X
+
+/^\P{Any}X/8
+ ** Failers
+ AX
+
+/^\p{Any}?X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ ABXYZ
+
+/^\P{Any}?X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ ABXYZ
+
+/^\p{Any}+X/8
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+ XYZ
+
+/^\P{Any}+X/8
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ XYZ
+
+/^\p{Any}*X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+
+/^\P{Any}*X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+
+/^[\p{Any}]X/8
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ X
+
+/^[\P{Any}]X/8
+ ** Failers
+ AX
+
+/^[\p{Any}]?X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ ABXYZ
+
+/^[\P{Any}]?X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ ABXYZ
+
+/^[\p{Any}]+X/8
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+ XYZ
+
+/^[\P{Any}]+X/8
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ XYZ
+
+/^[\p{Any}]*X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+
+/^[\P{Any}]*X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+
+/^\p{Any}{3,5}?/8
+ abcdefgh
+ \x{1234}\n\r\x{3456}xyz
+
+/^\p{Any}{3,5}/8
+ abcdefgh
+ \x{1234}\n\r\x{3456}xyz
+
+/^\P{Any}{3,5}?/8
+ ** Failers
+ abcdefgh
+ \x{1234}\n\r\x{3456}xyz
+
+/^\p{L&}X/8
+ AXY
+ aXY
+ \x{1c5}XY
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^[\p{L&}]X/8
+ AXY
+ aXY
+ \x{1c5}XY
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^\p{L&}+X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^[\p{L&}]+X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^\p{L&}+?X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^[\p{L&}]+?X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^\P{L&}X/8
+ !XY
+ \x{1bb}XY
+ \x{2b0}XY
+ ** Failers
+ \x{1c5}XY
+ AXY
+
+/^[\P{L&}]X/8
+ !XY
+ \x{1bb}XY
+ \x{2b0}XY
+ ** Failers
+ \x{1c5}XY
+ AXY
+
/ End of testinput6 /
diff --git a/ext/pcre/pcrelib/testdata/testinput7 b/ext/pcre/pcrelib/testdata/testinput7
index 4dd6037d3..0c7418ed3 100644
--- a/ext/pcre/pcrelib/testdata/testinput7
+++ b/ext/pcre/pcrelib/testdata/testinput7
@@ -483,10 +483,10 @@
/(?<=foo)bar/
xyzfo\P
- foob\R\P\>2
+ foob\P\>2
foobar...\R\P\>4
xyzfo\P
- foobar\R\>2
+ foobar\>2
*** Failers
xyzfo\P
obar\R
@@ -4010,4 +4010,12 @@
** Failers
line one\nthis is a line\nbreak in the second line
+/1234/
+ 123\P
+ a4\P\R
+
+/1234/
+ 123\P
+ 4\P\R
+
/ End of testinput7 /
diff --git a/ext/pcre/pcrelib/testdata/testinput9 b/ext/pcre/pcrelib/testdata/testinput9
index f18dd12c4..23d3d3e43 100644
--- a/ext/pcre/pcrelib/testdata/testinput9
+++ b/ext/pcre/pcrelib/testdata/testinput9
@@ -596,4 +596,221 @@
\x{100}
\x{101}
+/^\p{Han}+/8
+ \x{2e81}\x{3007}\x{2f804}\x{31a0}
+ ** Failers
+ \x{2e7f}
+
+/^\P{Katakana}+/8
+ \x{3105}
+ ** Failers
+ \x{30ff}
+
+/^[\p{Arabic}]/8
+ \x{06e9}
+ \x{060b}
+ ** Failers
+ X\x{06e9}
+
+/^[\P{Yi}]/8
+ \x{2f800}
+ ** Failers
+ \x{a014}
+ \x{a4c6}
+
+/^\p{Any}X/8
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ X
+
+/^\P{Any}X/8
+ ** Failers
+ AX
+
+/^\p{Any}?X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ ABXYZ
+
+/^\P{Any}?X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ ABXYZ
+
+/^\p{Any}+X/8
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+ XYZ
+
+/^\P{Any}+X/8
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ XYZ
+
+/^\p{Any}*X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+
+/^\P{Any}*X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+
+/^[\p{Any}]X/8
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ X
+
+/^[\P{Any}]X/8
+ ** Failers
+ AX
+
+/^[\p{Any}]?X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ ** Failers
+ ABXYZ
+
+/^[\P{Any}]?X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ ABXYZ
+
+/^[\p{Any}]+X/8
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+ XYZ
+
+/^[\P{Any}]+X/8
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ XYZ
+
+/^[\p{Any}]*X/8
+ XYZ
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+ ** Failers
+
+/^[\P{Any}]*X/8
+ XYZ
+ ** Failers
+ AXYZ
+ \x{1234}XYZ
+ A\x{1234}XYZ
+
+/^\p{Any}{3,5}?/8
+ abcdefgh
+ \x{1234}\n\r\x{3456}xyz
+
+/^\p{Any}{3,5}/8
+ abcdefgh
+ \x{1234}\n\r\x{3456}xyz
+
+/^\P{Any}{3,5}?/8
+ ** Failers
+ abcdefgh
+ \x{1234}\n\r\x{3456}xyz
+
+/^\p{L&}X/8
+ AXY
+ aXY
+ \x{1c5}XY
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^[\p{L&}]X/8
+ AXY
+ aXY
+ \x{1c5}XY
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^\p{L&}+X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^[\p{L&}]+X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^\p{L&}+?X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^[\p{L&}]+?X/8
+ AXY
+ aXY
+ AbcdeXyz
+ \x{1c5}AbXY
+ abcDEXypqreXlmn
+ ** Failers
+ \x{1bb}XY
+ \x{2b0}XY
+ !XY
+
+/^\P{L&}X/8
+ !XY
+ \x{1bb}XY
+ \x{2b0}XY
+ ** Failers
+ \x{1c5}XY
+ AXY
+
+/^[\P{L&}]X/8
+ !XY
+ \x{1bb}XY
+ \x{2b0}XY
+ ** Failers
+ \x{1c5}XY
+ AXY
+
/ End /
diff --git a/ext/pcre/pcrelib/testdata/testoutput1 b/ext/pcre/pcrelib/testdata/testoutput1
index c82316255..3fdde0aab 100644
--- a/ext/pcre/pcrelib/testdata/testoutput1
+++ b/ext/pcre/pcrelib/testdata/testoutput1
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
/the quick brown fox/
the quick brown fox
0: the quick brown fox
diff --git a/ext/pcre/pcrelib/testdata/testoutput2 b/ext/pcre/pcrelib/testdata/testoutput2
index 8f078b846..55adba0b9 100644
--- a/ext/pcre/pcrelib/testdata/testoutput2
+++ b/ext/pcre/pcrelib/testdata/testoutput2
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
/(a)b|/
Capturing subpattern count = 1
No options
@@ -1945,6 +1943,14 @@ Options: anchored
No first char
No need char
+/[_[:alpha:]]/IS
+Capturing subpattern count = 0
+No options
+No first char
+No need char
+Starting byte set: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
+ _ a b c d e f g h i j k l m n o p q r s t u v w x y z
+
/^[[:ascii:]]/D
------------------------------------------------------------------
0 37 Bra 0
@@ -1984,6 +1990,26 @@ Options: anchored
No first char
No need char
+/^[[:^blank:]]/D
+------------------------------------------------------------------
+ 0 37 Bra 0
+ 3 ^
+ 4 [\x00-\x08\x0a-\x1f!-\xff]
+ 37 37 Ket
+ 40 End
+------------------------------------------------------------------
+Capturing subpattern count = 0
+Options: anchored
+No first char
+No need char
+
+/[\n\x0b\x0c\x0d[:blank:]]/IS
+Capturing subpattern count = 0
+No options
+No first char
+No need char
+Starting byte set: \x09 \x0a \x0b \x0c \x0d \x20
+
/^[[:cntrl:]]/D
------------------------------------------------------------------
0 37 Bra 0
@@ -3995,14 +4021,16 @@ Need char = '<'
/(a(?1)b)/D
------------------------------------------------------------------
- 0 16 Bra 0
- 3 10 Bra 1
+ 0 22 Bra 0
+ 3 16 Bra 1
6 a
- 8 3 Recurse
- 11 b
- 13 10 Ket
- 16 16 Ket
- 19 End
+ 8 6 Once
+ 11 3 Recurse
+ 14 6 Ket
+ 17 b
+ 19 16 Ket
+ 22 22 Ket
+ 25 End
------------------------------------------------------------------
Capturing subpattern count = 1
No options
@@ -4014,7 +4042,7 @@ Need char = 'b'
0 22 Bra 0
3 16 Bra 1
6 a
- 8 6 Bra 0
+ 8 6 Once
11 3 Recurse
14 6 KetRmax
17 b
@@ -4246,7 +4274,7 @@ Need char = 'a'
/(?P<a>a)...(?P=a)bbb(?P>a)d/D
------------------------------------------------------------------
- 0 28 Bra 0
+ 0 34 Bra 0
3 5 Bra 1
6 a
8 5 Ket
@@ -4255,10 +4283,12 @@ Need char = 'a'
13 Any
14 \1
17 bbb
- 23 3 Recurse
- 26 d
- 28 28 Ket
- 31 End
+ 23 6 Once
+ 26 3 Recurse
+ 29 6 Ket
+ 32 d
+ 34 34 Ket
+ 37 End
------------------------------------------------------------------
Capturing subpattern count = 1
Max back reference = 1
@@ -4418,7 +4448,7 @@ No need char
24 End
------------------------------------------------------------------
Capturing subpattern count = 0
-Options:
+Options: no_auto_capture
First char = 'a'
Need char = 'c'
abc
@@ -4439,7 +4469,7 @@ Need char = 'c'
Capturing subpattern count = 1
Named capturing subpatterns:
one 1
-Options:
+Options: no_auto_capture
First char = 'a'
Need char = 'c'
abc
@@ -4461,7 +4491,7 @@ Need char = 'c'
Capturing subpattern count = 1
Named capturing subpatterns:
named 1
-Options:
+Options: no_auto_capture
First char = 'a'
Need char = 'c'
@@ -4472,11 +4502,13 @@ No options
No first char
Need char = 'z'
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M
-Minimum match limit = 8
+Minimum match() limit = 8
+Minimum match() recursion limit = 7
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaz\M
-Minimum match limit = 32768
+Minimum match() limit = 32768
+Minimum match() recursion limit = 43
No match
/(aaa(?C1)bbb|ab)/
@@ -4633,18 +4665,20 @@ Need char = ']'
/(a(b(?2)c))?/D
------------------------------------------------------------------
- 0 25 Bra 0
+ 0 31 Bra 0
3 Brazero
- 4 18 Bra 1
+ 4 24 Bra 1
7 a
- 9 10 Bra 2
+ 9 16 Bra 2
12 b
- 14 9 Recurse
- 17 c
- 19 10 Ket
- 22 18 Ket
- 25 25 Ket
- 28 End
+ 14 6 Once
+ 17 9 Recurse
+ 20 6 Ket
+ 23 c
+ 25 16 Ket
+ 28 24 Ket
+ 31 31 Ket
+ 34 End
------------------------------------------------------------------
Capturing subpattern count = 2
No options
@@ -4653,18 +4687,20 @@ No need char
/(a(b(?2)c))*/D
------------------------------------------------------------------
- 0 25 Bra 0
+ 0 31 Bra 0
3 Brazero
- 4 18 Bra 1
+ 4 24 Bra 1
7 a
- 9 10 Bra 2
+ 9 16 Bra 2
12 b
- 14 9 Recurse
- 17 c
- 19 10 Ket
- 22 18 KetRmax
- 25 25 Ket
- 28 End
+ 14 6 Once
+ 17 9 Recurse
+ 20 6 Ket
+ 23 c
+ 25 16 Ket
+ 28 24 KetRmax
+ 31 31 Ket
+ 34 End
------------------------------------------------------------------
Capturing subpattern count = 2
No options
@@ -4673,29 +4709,33 @@ No need char
/(a(b(?2)c)){0,2}/D
------------------------------------------------------------------
- 0 53 Bra 0
+ 0 65 Bra 0
3 Brazero
- 4 46 Bra 0
- 7 18 Bra 1
+ 4 58 Bra 0
+ 7 24 Bra 1
10 a
- 12 10 Bra 2
+ 12 16 Bra 2
15 b
- 17 12 Recurse
- 20 c
- 22 10 Ket
- 25 18 Ket
- 28 Brazero
- 29 18 Bra 1
- 32 a
- 34 10 Bra 2
- 37 b
- 39 12 Recurse
- 42 c
- 44 10 Ket
- 47 18 Ket
- 50 46 Ket
- 53 53 Ket
- 56 End
+ 17 6 Once
+ 20 12 Recurse
+ 23 6 Ket
+ 26 c
+ 28 16 Ket
+ 31 24 Ket
+ 34 Brazero
+ 35 24 Bra 1
+ 38 a
+ 40 16 Bra 2
+ 43 b
+ 45 6 Once
+ 48 12 Recurse
+ 51 6 Ket
+ 54 c
+ 56 16 Ket
+ 59 24 Ket
+ 62 58 Ket
+ 65 65 Ket
+ 68 End
------------------------------------------------------------------
Capturing subpattern count = 2
No options
@@ -5939,6 +5979,86 @@ Matched, but too many substrings
13: a
14: a
+/[^()]*(?:\((?R)\)[^()]*)*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+ (this(and)that
+ 0:
+ (this(and)that)
+ 0: (this(and)that)
+ (this(and)that)stuff
+ 0: (this(and)that)stuff
+
+/[^()]*(?:\((?>(?R))\)[^()]*)*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+ (this(and)that
+ 0:
+ (this(and)that)
+ 0: (this(and)that)
+
+/[^()]*(?:\((?R)\))*[^()]*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+ (this(and)that
+ 0:
+ (this(and)that)
+ 0: (this(and)that)
+
+/(?:\((?R)\))*[^()]*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+ (this(and)that
+ 0:
+ (this(and)that)
+ 0:
+ ((this))
+ 0: ((this))
+
+/(?:\((?R)\))|[^()]*/
+Capturing subpattern count = 0
+Partial matching not supported
+No options
+No first char
+No need char
+ (this(and)that
+ 0:
+ (this(and)that)
+ 0:
+ (this)
+ 0: (this)
+ ((this))
+ 0: ((this))
+
+/a(b)c/PN
+ abc
+Matched with REG_NOSUB
+
+/a(?P<name>b)c/PN
+ abc
+Matched with REG_NOSUB
+
+/\x{100}/
+Failed: character value in \x{...} sequence is too large at offset 6
+
+/\x{0000ff}/
+Capturing subpattern count = 0
+No options
+First char = 255
+No need char
+
/ End of testinput2 /
Capturing subpattern count = 0
No options
diff --git a/ext/pcre/pcrelib/testdata/testoutput3 b/ext/pcre/pcrelib/testdata/testoutput3
index 16ebc7125..06e2888d9 100644
--- a/ext/pcre/pcrelib/testdata/testoutput3
+++ b/ext/pcre/pcrelib/testdata/testoutput3
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
/^[\w]+/
*** Failers
No match
@@ -95,8 +93,8 @@ No first char
No need char
Starting byte set: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
- µ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â ã ä
- å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ
+ ª µ º À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â
+ ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ
/^[\xc8-\xc9]/iLfr_FR
École
@@ -112,4 +110,54 @@ No match
école
No match
+/\W+/Lfr_FR
+ >>>\xaa<<<
+ 0: >>>
+ >>>\xba<<<
+ 0: >>>
+
+/[\W]+/Lfr_FR
+ >>>\xaa<<<
+ 0: >>>
+ >>>\xba<<<
+ 0: >>>
+
+/[^[:alpha:]]+/Lfr_FR
+ >>>\xaa<<<
+ 0: >>>
+ >>>\xba<<<
+ 0: >>>
+
+/\w+/Lfr_FR
+ >>>\xaa<<<
+ 0: ª
+ >>>\xba<<<
+ 0: º
+
+/[\w]+/Lfr_FR
+ >>>\xaa<<<
+ 0: ª
+ >>>\xba<<<
+ 0: º
+
+/[[:alpha:]]+/Lfr_FR
+ >>>\xaa<<<
+ 0: ª
+ >>>\xba<<<
+ 0: º
+
+/[[:alpha:]][[:lower:]][[:upper:]]/DLfr_FR
+------------------------------------------------------------------
+ 0 102 Bra 0
+ 3 [A-Za-zªµºÀ-ÖØ-öø-ÿ]
+ 36 [a-zµß-öø-ÿ]
+ 69 [A-ZÀ-ÖØ-Þ]
+102 102 Ket
+105 End
+------------------------------------------------------------------
+Capturing subpattern count = 0
+No options
+No first char
+No need char
+
/ End of testinput3 /
diff --git a/ext/pcre/pcrelib/testdata/testoutput4 b/ext/pcre/pcrelib/testdata/testoutput4
index 234fd1ae1..1b98f86a3 100644
--- a/ext/pcre/pcrelib/testdata/testoutput4
+++ b/ext/pcre/pcrelib/testdata/testoutput4
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
/-- Do not use the \x{} construct except with patterns that have the --/
/-- /8 option set, because PCRE doesn't recognize them as UTF-8 unless --/
No match
@@ -900,4 +898,8 @@ No match
\x{85}
0: \x{85}
+/^\ሴ/8
+ ሴ
+ 0: \x{1234}
+
/ End of testinput4 /
diff --git a/ext/pcre/pcrelib/testdata/testoutput5 b/ext/pcre/pcrelib/testdata/testoutput5
index 6e0d41802..533fd84b6 100644
--- a/ext/pcre/pcrelib/testdata/testoutput5
+++ b/ext/pcre/pcrelib/testdata/testoutput5
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
/\x{100}/8DM
Memory allocation (code space): 10
------------------------------------------------------------------
@@ -645,12 +643,14 @@ Need char = 'A'
/\x{100}*\d(?R)/8D
------------------------------------------------------------------
- 0 10 Bra 0
+ 0 16 Bra 0
3 \x{100}*
6 \d
- 7 0 Recurse
- 10 10 Ket
- 13 End
+ 7 6 Once
+ 10 0 Recurse
+ 13 6 Ket
+ 16 16 Ket
+ 19 End
------------------------------------------------------------------
Capturing subpattern count = 0
Partial matching not supported
@@ -660,10 +660,10 @@ No need char
/[^\x{c4}]/D
------------------------------------------------------------------
- 0 36 Bra 0
- 3 [\x01-35-bd-z|~-\xff] (neg)
- 36 36 Ket
- 39 End
+ 0 5 Bra 0
+ 3 [^\xc4]
+ 5 5 Ket
+ 8 End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
@@ -912,14 +912,16 @@ No match
/\x{100}abc(xyz(?1))/8D
------------------------------------------------------------------
- 0 27 Bra 0
+ 0 33 Bra 0
3 \x{100}abc
- 12 12 Bra 1
+ 12 18 Bra 1
15 xyz
- 21 12 Recurse
- 24 12 Ket
- 27 27 Ket
- 30 End
+ 21 6 Once
+ 24 12 Recurse
+ 27 6 Ket
+ 30 18 Ket
+ 33 33 Ket
+ 36 End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf8
@@ -928,15 +930,17 @@ Need char = 'z'
/[^\x{100}]abc(xyz(?1))/8D
------------------------------------------------------------------
- 0 32 Bra 0
+ 0 38 Bra 0
3 [^\x{100}]
11 abc
- 17 12 Bra 1
+ 17 18 Bra 1
20 xyz
- 26 17 Recurse
- 29 12 Ket
- 32 32 Ket
- 35 End
+ 26 6 Once
+ 29 17 Recurse
+ 32 6 Ket
+ 35 18 Ket
+ 38 38 Ket
+ 41 End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf8
@@ -945,15 +949,17 @@ Need char = 'z'
/[ab\x{100}]abc(xyz(?1))/8D
------------------------------------------------------------------
- 0 64 Bra 0
+ 0 70 Bra 0
3 [ab\x{100}]
43 abc
- 49 12 Bra 1
+ 49 18 Bra 1
52 xyz
- 58 49 Recurse
- 61 12 Ket
- 64 64 Ket
- 67 End
+ 58 6 Once
+ 61 49 Recurse
+ 64 6 Ket
+ 67 18 Ket
+ 70 70 Ket
+ 73 End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf8
@@ -962,18 +968,20 @@ Need char = 'z'
/(\x{100}(b(?2)c))?/D8
------------------------------------------------------------------
- 0 26 Bra 0
+ 0 32 Bra 0
3 Brazero
- 4 19 Bra 1
+ 4 25 Bra 1
7 \x{100}
- 10 10 Bra 2
+ 10 16 Bra 2
13 b
- 15 10 Recurse
- 18 c
- 20 10 Ket
- 23 19 Ket
- 26 26 Ket
- 29 End
+ 15 6 Once
+ 18 10 Recurse
+ 21 6 Ket
+ 24 c
+ 26 16 Ket
+ 29 25 Ket
+ 32 32 Ket
+ 35 End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf8
@@ -982,29 +990,33 @@ No need char
/(\x{100}(b(?2)c)){0,2}/D8
------------------------------------------------------------------
- 0 55 Bra 0
+ 0 67 Bra 0
3 Brazero
- 4 48 Bra 0
- 7 19 Bra 1
+ 4 60 Bra 0
+ 7 25 Bra 1
10 \x{100}
- 13 10 Bra 2
+ 13 16 Bra 2
16 b
- 18 13 Recurse
- 21 c
- 23 10 Ket
- 26 19 Ket
- 29 Brazero
- 30 19 Bra 1
- 33 \x{100}
- 36 10 Bra 2
- 39 b
- 41 13 Recurse
- 44 c
- 46 10 Ket
- 49 19 Ket
- 52 48 Ket
- 55 55 Ket
- 58 End
+ 18 6 Once
+ 21 13 Recurse
+ 24 6 Ket
+ 27 c
+ 29 16 Ket
+ 32 25 Ket
+ 35 Brazero
+ 36 25 Bra 1
+ 39 \x{100}
+ 42 16 Bra 2
+ 45 b
+ 47 6 Once
+ 50 13 Recurse
+ 53 6 Ket
+ 56 c
+ 58 16 Ket
+ 61 25 Ket
+ 64 60 Ket
+ 67 67 Ket
+ 70 End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf8
@@ -1013,18 +1025,20 @@ No need char
/(\x{100}(b(?1)c))?/D8
------------------------------------------------------------------
- 0 26 Bra 0
+ 0 32 Bra 0
3 Brazero
- 4 19 Bra 1
+ 4 25 Bra 1
7 \x{100}
- 10 10 Bra 2
+ 10 16 Bra 2
13 b
- 15 4 Recurse
- 18 c
- 20 10 Ket
- 23 19 Ket
- 26 26 Ket
- 29 End
+ 15 6 Once
+ 18 4 Recurse
+ 21 6 Ket
+ 24 c
+ 26 16 Ket
+ 29 25 Ket
+ 32 32 Ket
+ 35 End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf8
@@ -1033,29 +1047,33 @@ No need char
/(\x{100}(b(?1)c)){0,2}/D8
------------------------------------------------------------------
- 0 55 Bra 0
+ 0 67 Bra 0
3 Brazero
- 4 48 Bra 0
- 7 19 Bra 1
+ 4 60 Bra 0
+ 7 25 Bra 1
10 \x{100}
- 13 10 Bra 2
+ 13 16 Bra 2
16 b
- 18 7 Recurse
- 21 c
- 23 10 Ket
- 26 19 Ket
- 29 Brazero
- 30 19 Bra 1
- 33 \x{100}
- 36 10 Bra 2
- 39 b
- 41 7 Recurse
- 44 c
- 46 10 Ket
- 49 19 Ket
- 52 48 Ket
- 55 55 Ket
- 58 End
+ 18 6 Once
+ 21 7 Recurse
+ 24 6 Ket
+ 27 c
+ 29 16 Ket
+ 32 25 Ket
+ 35 Brazero
+ 36 25 Bra 1
+ 39 \x{100}
+ 42 16 Bra 2
+ 45 b
+ 47 6 Once
+ 50 7 Recurse
+ 53 6 Ket
+ 56 c
+ 58 16 Ket
+ 61 25 Ket
+ 64 60 Ket
+ 67 67 Ket
+ 70 End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf8
@@ -1072,4 +1090,21 @@ No need char
\x{100}X
0: X
+/a\x{1234}b/P8
+ a\x{1234}b
+ 0: a\x{1234}b
+
+/^\ሴ/8D
+------------------------------------------------------------------
+ 0 8 Bra 0
+ 3 ^
+ 4 \x{1234}
+ 8 8 Ket
+ 11 End
+------------------------------------------------------------------
+Capturing subpattern count = 0
+Options: anchored utf8
+No first char
+No need char
+
/ End of testinput5 /
diff --git a/ext/pcre/pcrelib/testdata/testoutput6 b/ext/pcre/pcrelib/testdata/testoutput6
index 9f9421e51..87833bd26 100644
--- a/ext/pcre/pcrelib/testdata/testoutput6
+++ b/ext/pcre/pcrelib/testdata/testoutput6
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
/^\pC\pL\pM\pN\pP\pS\pZ</8
\x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
0: \x{7f}\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
@@ -85,6 +83,8 @@ No match
No match
/^\p{Cn}/8
+ \x{e0000}
+ 0: \x{e0000}
** Failers
No match
\x{09f}
@@ -127,12 +127,24 @@ No match
/^\p{Lo}/8
\x{1bb}
0: \x{1bb}
+ \x{3400}
+ 0: \x{3400}
+ \x{3401}
+ 0: \x{3401}
+ \x{4d00}
+ 0: \x{4d00}
+ \x{4db4}
+ 0: \x{4db4}
+ \x{4db5}
+ 0: \x{4db5}
** Failers
No match
a
No match
\x{2b0}
No match
+ \x{4db6}
+No match
/^\p{Lt}/8
\x{1c5}
@@ -538,10 +550,10 @@ No match
/[\p{L}]/D
------------------------------------------------------------------
- 0 10 Bra 0
+ 0 11 Bra 0
3 [\p{L}]
- 10 10 Ket
- 13 End
+ 11 11 Ket
+ 14 End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
@@ -550,10 +562,10 @@ No need char
/[\p{^L}]/D
------------------------------------------------------------------
- 0 10 Bra 0
+ 0 11 Bra 0
3 [\P{L}]
- 10 10 Ket
- 13 End
+ 11 11 Ket
+ 14 End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
@@ -562,10 +574,10 @@ No need char
/[\P{L}]/D
------------------------------------------------------------------
- 0 10 Bra 0
+ 0 11 Bra 0
3 [\P{L}]
- 10 10 Ket
- 13 End
+ 11 11 Ket
+ 14 End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
@@ -574,10 +586,10 @@ No need char
/[\P{^L}]/D
------------------------------------------------------------------
- 0 10 Bra 0
+ 0 11 Bra 0
3 [\p{L}]
- 10 10 Ket
- 13 End
+ 11 11 Ket
+ 14 End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
@@ -586,10 +598,10 @@ No need char
/[abc\p{L}\x{0660}]/8D
------------------------------------------------------------------
- 0 45 Bra 0
+ 0 46 Bra 0
3 [a-c\p{L}\x{660}]
- 45 45 Ket
- 48 End
+ 46 46 Ket
+ 49 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
@@ -597,12 +609,12 @@ No first char
No need char
/[\p{Nd}]/8DM
-Memory allocation (code space): 46
+Memory allocation (code space): 47
------------------------------------------------------------------
- 0 10 Bra 0
+ 0 11 Bra 0
3 [\p{Nd}]
- 10 10 Ket
- 13 End
+ 11 11 Ket
+ 14 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
@@ -612,12 +624,12 @@ No need char
0: 1
/[\p{Nd}+-]+/8DM
-Memory allocation (code space): 47
+Memory allocation (code space): 48
------------------------------------------------------------------
- 0 43 Bra 0
+ 0 44 Bra 0
3 [+\-\p{Nd}]+
- 43 43 Ket
- 46 End
+ 44 44 Ket
+ 47 End
------------------------------------------------------------------
Capturing subpattern count = 0
Partial matching not supported
@@ -1010,4 +1022,376 @@ No match
0: A\x{300}\x{301}B\x{300}C
1: C
+/^\p{Han}+/8
+ \x{2e81}\x{3007}\x{2f804}\x{31a0}
+ 0: \x{2e81}\x{3007}\x{2f804}
+ ** Failers
+No match
+ \x{2e7f}
+No match
+
+/^\P{Katakana}+/8
+ \x{3105}
+ 0: \x{3105}
+ ** Failers
+ 0: ** Failers
+ \x{30ff}
+No match
+
+/^[\p{Arabic}]/8
+ \x{06e9}
+ 0: \x{6e9}
+ \x{060b}
+ 0: \x{60b}
+ ** Failers
+No match
+ X\x{06e9}
+No match
+
+/^[\P{Yi}]/8
+ \x{2f800}
+ 0: \x{2f800}
+ ** Failers
+ 0: *
+ \x{a014}
+No match
+ \x{a4c6}
+No match
+
+/^\p{Any}X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ X
+No match
+
+/^\P{Any}X/8
+ ** Failers
+No match
+ AX
+No match
+
+/^\p{Any}?X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ ABXYZ
+No match
+
+/^\P{Any}?X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ ABXYZ
+No match
+
+/^\p{Any}+X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+ XYZ
+No match
+
+/^\P{Any}+X/8
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+ XYZ
+No match
+
+/^\p{Any}*X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+
+/^\P{Any}*X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+
+/^[\p{Any}]X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ X
+No match
+
+/^[\P{Any}]X/8
+ ** Failers
+No match
+ AX
+No match
+
+/^[\p{Any}]?X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ ABXYZ
+No match
+
+/^[\P{Any}]?X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ ABXYZ
+No match
+
+/^[\p{Any}]+X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+ XYZ
+No match
+
+/^[\P{Any}]+X/8
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+ XYZ
+No match
+
+/^[\p{Any}]*X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+
+/^[\P{Any}]*X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+
+/^\p{Any}{3,5}?/8
+ abcdefgh
+ 0: abc
+ \x{1234}\n\r\x{3456}xyz
+ 0: \x{1234}\x{0a}\x{0d}
+
+/^\p{Any}{3,5}/8
+ abcdefgh
+ 0: abcde
+ \x{1234}\n\r\x{3456}xyz
+ 0: \x{1234}\x{0a}\x{0d}\x{3456}x
+
+/^\P{Any}{3,5}?/8
+ ** Failers
+No match
+ abcdefgh
+No match
+ \x{1234}\n\r\x{3456}xyz
+No match
+
+/^\p{L&}X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ \x{1c5}XY
+ 0: \x{1c5}X
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^[\p{L&}]X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ \x{1c5}XY
+ 0: \x{1c5}X
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^\p{L&}+X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEXypqreX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^[\p{L&}]+X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEXypqreX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^\p{L&}+?X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^[\p{L&}]+?X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^\P{L&}X/8
+ !XY
+ 0: !X
+ \x{1bb}XY
+ 0: \x{1bb}X
+ \x{2b0}XY
+ 0: \x{2b0}X
+ ** Failers
+No match
+ \x{1c5}XY
+No match
+ AXY
+No match
+
+/^[\P{L&}]X/8
+ !XY
+ 0: !X
+ \x{1bb}XY
+ 0: \x{1bb}X
+ \x{2b0}XY
+ 0: \x{2b0}X
+ ** Failers
+No match
+ \x{1c5}XY
+No match
+ AXY
+No match
+
/ End of testinput6 /
diff --git a/ext/pcre/pcrelib/testdata/testoutput7 b/ext/pcre/pcrelib/testdata/testoutput7
index 8e55069dd..b50abeef8 100644
--- a/ext/pcre/pcrelib/testdata/testoutput7
+++ b/ext/pcre/pcrelib/testdata/testoutput7
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
/abc/
abc
0: abc
@@ -675,7 +673,6 @@ No match
/^(a*\w|ab)=(?1)/
ab=ab
0: ab=ab
- 1: ab=a
/^([^()]|\((?1)*\))*$/
abc
@@ -983,13 +980,13 @@ Partial match: abc
/(?<=foo)bar/
xyzfo\P
No match
- foob\R\P\>2
+ foob\P\>2
Partial match: b
foobar...\R\P\>4
0: ar
xyzfo\P
No match
- foobar\R\>2
+ foobar\>2
0: bar
*** Failers
No match
@@ -6513,4 +6510,16 @@ No match
line one\nthis is a line\nbreak in the second line
No match
+/1234/
+ 123\P
+Partial match: 123
+ a4\P\R
+No match
+
+/1234/
+ 123\P
+Partial match: 123
+ 4\P\R
+ 0: 4
+
/ End of testinput7 /
diff --git a/ext/pcre/pcrelib/testdata/testoutput8 b/ext/pcre/pcrelib/testdata/testoutput8
index eb585ad1a..72e7673f5 100644
--- a/ext/pcre/pcrelib/testdata/testoutput8
+++ b/ext/pcre/pcrelib/testdata/testoutput8
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
/-- Do not use the \x{} construct except with patterns that have the --/
/-- /8 option set, because PCRE doesn't recognize them as UTF-8 unless --/
No match
diff --git a/ext/pcre/pcrelib/testdata/testoutput9 b/ext/pcre/pcrelib/testdata/testoutput9
index f7b46611d..000e2b988 100644
--- a/ext/pcre/pcrelib/testdata/testoutput9
+++ b/ext/pcre/pcrelib/testdata/testoutput9
@@ -1,5 +1,3 @@
-PCRE version 6.2 01-Aug-2005
-
/\pL\P{Nd}/8
AB
0: AB
@@ -1231,4 +1229,399 @@ No match
\x{101}
0: \x{101}
+/^\p{Han}+/8
+ \x{2e81}\x{3007}\x{2f804}\x{31a0}
+ 0: \x{2e81}\x{3007}\x{2f804}
+ 1: \x{2e81}\x{3007}
+ 2: \x{2e81}
+ ** Failers
+No match
+ \x{2e7f}
+No match
+
+/^\P{Katakana}+/8
+ \x{3105}
+ 0: \x{3105}
+ ** Failers
+ 0: ** Failers
+ 1: ** Failer
+ 2: ** Faile
+ 3: ** Fail
+ 4: ** Fai
+ 5: ** Fa
+ 6: ** F
+ 7: **
+ 8: **
+ 9: *
+ \x{30ff}
+No match
+
+/^[\p{Arabic}]/8
+ \x{06e9}
+ 0: \x{6e9}
+ \x{060b}
+ 0: \x{60b}
+ ** Failers
+No match
+ X\x{06e9}
+No match
+
+/^[\P{Yi}]/8
+ \x{2f800}
+ 0: \x{2f800}
+ ** Failers
+ 0: *
+ \x{a014}
+No match
+ \x{a4c6}
+No match
+
+/^\p{Any}X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ X
+No match
+
+/^\P{Any}X/8
+ ** Failers
+No match
+ AX
+No match
+
+/^\p{Any}?X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ ABXYZ
+No match
+
+/^\P{Any}?X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ ABXYZ
+No match
+
+/^\p{Any}+X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+ XYZ
+No match
+
+/^\P{Any}+X/8
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+ XYZ
+No match
+
+/^\p{Any}*X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+
+/^\P{Any}*X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+
+/^[\p{Any}]X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ X
+No match
+
+/^[\P{Any}]X/8
+ ** Failers
+No match
+ AX
+No match
+
+/^[\p{Any}]?X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ ** Failers
+No match
+ ABXYZ
+No match
+
+/^[\P{Any}]?X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ ABXYZ
+No match
+
+/^[\p{Any}]+X/8
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+ XYZ
+No match
+
+/^[\P{Any}]+X/8
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+ XYZ
+No match
+
+/^[\p{Any}]*X/8
+ XYZ
+ 0: X
+ AXYZ
+ 0: AX
+ \x{1234}XYZ
+ 0: \x{1234}X
+ A\x{1234}XYZ
+ 0: A\x{1234}X
+ ** Failers
+No match
+
+/^[\P{Any}]*X/8
+ XYZ
+ 0: X
+ ** Failers
+No match
+ AXYZ
+No match
+ \x{1234}XYZ
+No match
+ A\x{1234}XYZ
+No match
+
+/^\p{Any}{3,5}?/8
+ abcdefgh
+ 0: abcde
+ 1: abcd
+ 2: abc
+ \x{1234}\n\r\x{3456}xyz
+ 0: \x{1234}\x{0a}\x{0d}\x{3456}x
+ 1: \x{1234}\x{0a}\x{0d}\x{3456}
+ 2: \x{1234}\x{0a}\x{0d}
+
+/^\p{Any}{3,5}/8
+ abcdefgh
+ 0: abcde
+ 1: abcd
+ 2: abc
+ \x{1234}\n\r\x{3456}xyz
+ 0: \x{1234}\x{0a}\x{0d}\x{3456}x
+ 1: \x{1234}\x{0a}\x{0d}\x{3456}
+ 2: \x{1234}\x{0a}\x{0d}
+
+/^\P{Any}{3,5}?/8
+ ** Failers
+No match
+ abcdefgh
+No match
+ \x{1234}\n\r\x{3456}xyz
+No match
+
+/^\p{L&}X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ \x{1c5}XY
+ 0: \x{1c5}X
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^[\p{L&}]X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ \x{1c5}XY
+ 0: \x{1c5}X
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^\p{L&}+X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEXypqreX
+ 1: abcDEX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^[\p{L&}]+X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEXypqreX
+ 1: abcDEX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^\p{L&}+?X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEXypqreX
+ 1: abcDEX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^[\p{L&}]+?X/8
+ AXY
+ 0: AX
+ aXY
+ 0: aX
+ AbcdeXyz
+ 0: AbcdeX
+ \x{1c5}AbXY
+ 0: \x{1c5}AbX
+ abcDEXypqreXlmn
+ 0: abcDEXypqreX
+ 1: abcDEX
+ ** Failers
+No match
+ \x{1bb}XY
+No match
+ \x{2b0}XY
+No match
+ !XY
+No match
+
+/^\P{L&}X/8
+ !XY
+ 0: !X
+ \x{1bb}XY
+ 0: \x{1bb}X
+ \x{2b0}XY
+ 0: \x{2b0}X
+ ** Failers
+No match
+ \x{1c5}XY
+No match
+ AXY
+No match
+
+/^[\P{L&}]X/8
+ !XY
+ 0: !X
+ \x{1bb}XY
+ 0: \x{1bb}X
+ \x{2b0}XY
+ 0: \x{2b0}X
+ ** Failers
+No match
+ \x{1c5}XY
+No match
+ AXY
+No match
+
/ End /
diff --git a/ext/pcre/pcrelib/ucp.h b/ext/pcre/pcrelib/ucp.h
index 955e104a6..1ca23c9c1 100644
--- a/ext/pcre/pcrelib/ucp.h
+++ b/ext/pcre/pcrelib/ucp.h
@@ -1,12 +1,14 @@
/*************************************************
-* libucp - Unicode Property Table handler *
+* Unicode Property Table handler *
*************************************************/
-
#ifndef _UCP_H
#define _UCP_H
-/* These are the character categories that are returned by ucp_findchar */
+/* This file contains definitions of the property values that are returned by
+the function _pcre_ucp_findprop(). */
+
+/* These are the general character categories. */
enum {
ucp_C, /* Other */
@@ -18,7 +20,7 @@ enum {
ucp_Z /* Separator */
};
-/* These are the detailed character types that are returned by ucp_findchar */
+/* These are the particular character types. */
enum {
ucp_Cc, /* Control */
@@ -53,7 +55,71 @@ enum {
ucp_Zs /* Space separator */
};
-extern int ucp_findchar(const int, int *, int *);
+/* These are the script identifications. */
+
+enum {
+ ucp_Arabic,
+ ucp_Armenian,
+ ucp_Bengali,
+ ucp_Bopomofo,
+ ucp_Braille,
+ ucp_Buginese,
+ ucp_Buhid,
+ ucp_Canadian_Aboriginal,
+ ucp_Cherokee,
+ ucp_Common,
+ ucp_Coptic,
+ ucp_Cypriot,
+ ucp_Cyrillic,
+ ucp_Deseret,
+ ucp_Devanagari,
+ ucp_Ethiopic,
+ ucp_Georgian,
+ ucp_Glagolitic,
+ ucp_Gothic,
+ ucp_Greek,
+ ucp_Gujarati,
+ ucp_Gurmukhi,
+ ucp_Han,
+ ucp_Hangul,
+ ucp_Hanunoo,
+ ucp_Hebrew,
+ ucp_Hiragana,
+ ucp_Inherited,
+ ucp_Kannada,
+ ucp_Katakana,
+ ucp_Kharoshthi,
+ ucp_Khmer,
+ ucp_Lao,
+ ucp_Latin,
+ ucp_Limbu,
+ ucp_Linear_B,
+ ucp_Malayalam,
+ ucp_Mongolian,
+ ucp_Myanmar,
+ ucp_New_Tai_Lue,
+ ucp_Ogham,
+ ucp_Old_Italic,
+ ucp_Old_Persian,
+ ucp_Oriya,
+ ucp_Osmanya,
+ ucp_Runic,
+ ucp_Shavian,
+ ucp_Sinhala,
+ ucp_Syloti_Nagri,
+ ucp_Syriac,
+ ucp_Tagalog,
+ ucp_Tagbanwa,
+ ucp_Tai_Le,
+ ucp_Tamil,
+ ucp_Telugu,
+ ucp_Thaana,
+ ucp_Thai,
+ ucp_Tibetan,
+ ucp_Tifinagh,
+ ucp_Ugaritic,
+ ucp_Yi
+};
#endif
diff --git a/ext/pcre/pcrelib/ucp_findchar.c b/ext/pcre/pcrelib/ucp_findchar.c
deleted file mode 100644
index 1f451172f..000000000
--- a/ext/pcre/pcrelib/ucp_findchar.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/*************************************************
-* libucp - Unicode Property Table handler *
-*************************************************/
-
-/* Copyright (c) University of Cambridge 2004 */
-
-/* This little library provides a fast way of obtaining the basic Unicode
-properties of a character, using a compact binary tree that occupies less than
-100K bytes.
-
------------------------------------------------------------------------------
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the University of Cambridge nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
------------------------------------------------------------------------------
-*/
-
-
-#include "ucp.h" /* Exported interface */
-#include "ucpinternal.h" /* Internal table details */
-#include "ucptable.c" /* The table itself */
-
-
-/* In some environments, external functions have to be preceded by some magic.
-In my world (Unix), they do not. Use a macro to deal with this. */
-
-#ifndef EXPORT
-#define EXPORT
-#endif
-
-
-
-/*************************************************
-* Search table and return data *
-*************************************************/
-
-/* Two values are returned: the category is ucp_C, ucp_L, etc. The detailed
-character type is ucp_Lu, ucp_Nd, etc.
-
-Arguments:
- c the character value
- type_ptr the detailed character type is returned here
- case_ptr for letters, the opposite case is returned here, if there
- is one, else zero
-
-Returns: the character type category or -1 if not found
-*/
-
-EXPORT int
-ucp_findchar(const int c, int *type_ptr, int *case_ptr)
-{
-cnode *node = ucp_table;
-register int cc = c;
-int case_offset;
-
-for (;;)
- {
- register int d = node->f1 | ((node->f0 & f0_chhmask) << 16);
- if (cc == d) break;
- if (cc < d)
- {
- if ((node->f0 & f0_leftexists) == 0) return -1;
- node ++;
- }
- else
- {
- register int roffset = (node->f2 & f2_rightmask) >> f2_rightshift;
- if (roffset == 0) return -1;
- node += 1 << (roffset - 1);
- }
- }
-
-switch ((*type_ptr = ((node->f0 & f0_typemask) >> f0_typeshift)))
- {
- case ucp_Cc:
- case ucp_Cf:
- case ucp_Cn:
- case ucp_Co:
- case ucp_Cs:
- return ucp_C;
- break;
-
- case ucp_Ll:
- case ucp_Lu:
- case_offset = node->f2 & f2_casemask;
- if ((case_offset & 0x0100) != 0) case_offset |= 0xfffff000;
- *case_ptr = (case_offset == 0)? 0 : cc + case_offset;
- return ucp_L;
-
- case ucp_Lm:
- case ucp_Lo:
- case ucp_Lt:
- *case_ptr = 0;
- return ucp_L;
- break;
-
- case ucp_Mc:
- case ucp_Me:
- case ucp_Mn:
- return ucp_M;
- break;
-
- case ucp_Nd:
- case ucp_Nl:
- case ucp_No:
- return ucp_N;
- break;
-
- case ucp_Pc:
- case ucp_Pd:
- case ucp_Pe:
- case ucp_Pf:
- case ucp_Pi:
- case ucp_Ps:
- case ucp_Po:
- return ucp_P;
- break;
-
- case ucp_Sc:
- case ucp_Sk:
- case ucp_Sm:
- case ucp_So:
- return ucp_S;
- break;
-
- case ucp_Zl:
- case ucp_Zp:
- case ucp_Zs:
- return ucp_Z;
- break;
-
- default: /* "Should never happen" */
- return -1;
- break;
- }
-}
-
-/* End of ucp_findchar.c */
diff --git a/ext/pcre/pcrelib/ucpinternal.h b/ext/pcre/pcrelib/ucpinternal.h
index faefb030c..16dfbe9b0 100644
--- a/ext/pcre/pcrelib/ucpinternal.h
+++ b/ext/pcre/pcrelib/ucpinternal.h
@@ -1,91 +1,87 @@
/*************************************************
-* libucp - Unicode Property Table handler *
+* Unicode Property Table handler *
*************************************************/
-/* Internal header file defining the layout of compact nodes in the tree. */
+/* Internal header file defining the layout of the bits in each pair of 32-bit
+words that form a data item in the table. */
typedef struct cnode {
- unsigned short int f0;
- unsigned short int f1;
- unsigned short int f2;
+ pcre_uint32 f0;
+ pcre_uint32 f1;
} cnode;
/* Things for the f0 field */
-#define f0_leftexists 0x8000 /* Left child exists */
-#define f0_typemask 0x3f00 /* Type bits */
-#define f0_typeshift 8 /* Type shift */
-#define f0_chhmask 0x00ff /* Character high bits */
+#define f0_scriptmask 0xff000000 /* Mask for script field */
+#define f0_scriptshift 24 /* Shift for script value */
+#define f0_rangeflag 0x00f00000 /* Flag for a range item */
+#define f0_charmask 0x001fffff /* Mask for code point value */
-/* Things for the f2 field */
+/* Things for the f1 field */
-#define f2_rightmask 0xf000 /* Mask for right offset bits */
-#define f2_rightshift 12 /* Shift for right offset */
-#define f2_casemask 0x0fff /* Mask for case offset */
+#define f1_typemask 0xfc000000 /* Mask for char type field */
+#define f1_typeshift 26 /* Shift for the type field */
+#define f1_rangemask 0x0000ffff /* Mask for a range offset */
+#define f1_casemask 0x0000ffff /* Mask for a case offset */
+#define f1_caseneg 0xffff8000 /* Bits for negation */
-/* The tree consists of a vector of structures of type cnode, with the root
-node as the first element. The three short ints (16-bits) are used as follows:
+/* The data consists of a vector of structures of type cnode. The two unsigned
+32-bit integers are used as follows:
-(f0) (1) The 0x8000 bit of f0 is set if a left child exists. The child's node
- is the next node in the vector.
- (2) The 0x4000 bits of f0 is spare.
- (3) The 0x3f00 bits of f0 contain the character type; this is a number
- defined by the enumeration in ucp.h (e.g. ucp_Lu).
- (4) The bottom 8 bits of f0 contain the most significant byte of the
- character's 24-bit codepoint.
+(f0) (1) The most significant byte holds the script number. The numbers are
+ defined by the enum in ucp.h.
-(f1) (1) The f1 field contains the two least significant bytes of the
- codepoint.
+ (2) The 0x00800000 bit is set if this entry defines a range of characters.
+ It is not set if this entry defines a single character
-(f2) (1) The 0xf000 bits of f2 contain zero if there is no right child of this
- node. Otherwise, they contain one plus the exponent of the power of
- two of the offset to the right node (e.g. a value of 3 means 8). The
- units of the offset are node items.
+ (3) The 0x00600000 bits are spare.
- (2) The 0x0fff bits of f2 contain the signed offset from this character to
- its alternate cased value. They are zero if there is no such
- character.
+ (4) The 0x001fffff bits contain the code point. No Unicode code point will
+ ever be greater than 0x0010ffff, so this should be OK for ever.
+(f1) (1) The 0xfc000000 bits contain the character type number. The numbers are
+ defined by an enum in ucp.h.
------------------------------------------------------------------------------
-||.|.| type (6) | ms char (8) || ls char (16) ||....| case offset (12) ||
------------------------------------------------------------------------------
- | | |
- | |-> spare |
- | exponent of right
- |-> left child exists child offset
+ (2) The 0x03ff0000 bits are spare.
+ (3) The 0x0000ffff bits contain EITHER the unsigned offset to the top of
+ range if this entry defines a range, OR the *signed* offset to the
+ character's "other case" partner if this entry defines a single
+ character. There is no partner if the value is zero.
-The upper/lower casing information is set only for characters that come in
-pairs. There are (at present) four non-one-to-one mappings in the Unicode data.
-These are ignored. They are:
+-------------------------------------------------------------------------------
+| script (8) |.|.|.| codepoint (21) || type (6) |.|.| spare (8) | offset (16) |
+-------------------------------------------------------------------------------
+ | | | | |
+ | | |-> spare | |-> spare
+ | | |
+ | |-> spare |-> spare
+ |
+ |-> range flag
- 1FBE Greek Prosgegrammeni (lower, with upper -> capital iota)
- 2126 Ohm
- 212A Kelvin
- 212B Angstrom
+The upper/lower casing information is set only for characters that come in
+pairs. The non-one-to-one mappings in the Unicode data are ignored.
-Certainly for the last three, having an alternate case would seem to be a
-mistake. I don't know any Greek, so cannot comment on the first one.
+When searching the data, proceed as follows:
+(1) Set up for a binary chop search.
-When searching the tree, proceed as follows:
+(2) If the top is not greater than the bottom, the character is not in the
+ table. Its type must therefore be "Cn" ("Undefined").
-(1) Start at the first node.
+(3) Find the middle vector element.
-(2) Extract the character value from f1 and the bottom 8 bits of f0;
+(4) Extract the code point and compare. If equal, we are done.
-(3) Compare with the character being sought. If equal, we are done.
+(5) If the test character is smaller, set the top to the current point, and
+ goto (2).
-(4) If the test character is smaller, inspect the f0_leftexists flag. If it is
- not set, the character is not in the tree. If it is set, move to the next
- node, and go to (2).
+(6) If the current entry defines a range, compute the last character by adding
+ the offset, and see if the test character is within the range. If it is,
+ we are done.
-(5) If the test character is bigger, extract the f2_rightmask bits from f2, and
- shift them right by f2_rightshift. If the result is zero, the character is
- not in the tree. Otherwise, calculate the number of nodes to skip by
- shifting the value 1 left by this number minus one. Go to (2).
+(7) Otherwise, set the bottom to one element past the current point and goto
+ (2).
*/
-
-/* End of internal.h */
+/* End of ucpinternal.h */
diff --git a/ext/pcre/pcrelib/ucptable.c b/ext/pcre/pcrelib/ucptable.c
index 7fb3a1234..ae665b376 100644
--- a/ext/pcre/pcrelib/ucptable.c
+++ b/ext/pcre/pcrelib/ucptable.c
@@ -1,15105 +1,2968 @@
/* This source module is automatically generated from the Unicode
-property table. See internal.h for a description of the layout. */
+property table. See ucpinternal.h for a description of the layout. */
static cnode ucp_table[] = {
- { 0x9a00, 0x2f1f, 0xe000 },
- { 0x8700, 0x1558, 0xd000 },
- { 0x8700, 0x0a99, 0xc000 },
- { 0x8500, 0x0435, 0xbfe0 },
- { 0x8500, 0x01ff, 0xafff },
- { 0x8500, 0x00ff, 0x9079 },
- { 0x8000, 0x007f, 0x8000 },
- { 0x9500, 0x003f, 0x7000 },
- { 0x8000, 0x001f, 0x6000 },
- { 0x8000, 0x000f, 0x5000 },
- { 0x8000, 0x0007, 0x4000 },
- { 0x8000, 0x0003, 0x3000 },
- { 0x8000, 0x0001, 0x2000 },
- { 0x0000, 0x0000, 0x0000 },
- { 0x0000, 0x0002, 0x0000 },
- { 0x8000, 0x0005, 0x2000 },
- { 0x0000, 0x0004, 0x0000 },
- { 0x0000, 0x0006, 0x0000 },
- { 0x8000, 0x000b, 0x3000 },
- { 0x8000, 0x0009, 0x2000 },
- { 0x0000, 0x0008, 0x0000 },
- { 0x0000, 0x000a, 0x0000 },
- { 0x8000, 0x000d, 0x2000 },
- { 0x0000, 0x000c, 0x0000 },
- { 0x0000, 0x000e, 0x0000 },
- { 0x8000, 0x0017, 0x4000 },
- { 0x8000, 0x0013, 0x3000 },
- { 0x8000, 0x0011, 0x2000 },
- { 0x0000, 0x0010, 0x0000 },
- { 0x0000, 0x0012, 0x0000 },
- { 0x8000, 0x0015, 0x2000 },
- { 0x0000, 0x0014, 0x0000 },
- { 0x0000, 0x0016, 0x0000 },
- { 0x8000, 0x001b, 0x3000 },
- { 0x8000, 0x0019, 0x2000 },
- { 0x0000, 0x0018, 0x0000 },
- { 0x0000, 0x001a, 0x0000 },
- { 0x8000, 0x001d, 0x2000 },
- { 0x0000, 0x001c, 0x0000 },
- { 0x0000, 0x001e, 0x0000 },
- { 0x9500, 0x002f, 0x5000 },
- { 0x9500, 0x0027, 0x4000 },
- { 0x9500, 0x0023, 0x3000 },
- { 0x9500, 0x0021, 0x2000 },
- { 0x1d00, 0x0020, 0x0000 },
- { 0x1500, 0x0022, 0x0000 },
- { 0x9500, 0x0025, 0x2000 },
- { 0x1700, 0x0024, 0x0000 },
- { 0x1500, 0x0026, 0x0000 },
- { 0x9900, 0x002b, 0x3000 },
- { 0x9200, 0x0029, 0x2000 },
- { 0x1600, 0x0028, 0x0000 },
- { 0x1500, 0x002a, 0x0000 },
- { 0x9100, 0x002d, 0x2000 },
- { 0x1500, 0x002c, 0x0000 },
- { 0x1500, 0x002e, 0x0000 },
- { 0x8d00, 0x0037, 0x4000 },
- { 0x8d00, 0x0033, 0x3000 },
- { 0x8d00, 0x0031, 0x2000 },
- { 0x0d00, 0x0030, 0x0000 },
- { 0x0d00, 0x0032, 0x0000 },
- { 0x8d00, 0x0035, 0x2000 },
- { 0x0d00, 0x0034, 0x0000 },
- { 0x0d00, 0x0036, 0x0000 },
- { 0x9500, 0x003b, 0x3000 },
- { 0x8d00, 0x0039, 0x2000 },
- { 0x0d00, 0x0038, 0x0000 },
- { 0x1500, 0x003a, 0x0000 },
- { 0x9900, 0x003d, 0x2000 },
- { 0x1900, 0x003c, 0x0000 },
- { 0x1900, 0x003e, 0x0000 },
- { 0x9000, 0x005f, 0x6000 },
- { 0x8900, 0x004f, 0x5020 },
- { 0x8900, 0x0047, 0x4020 },
- { 0x8900, 0x0043, 0x3020 },
- { 0x8900, 0x0041, 0x2020 },
- { 0x1500, 0x0040, 0x0000 },
- { 0x0900, 0x0042, 0x0020 },
- { 0x8900, 0x0045, 0x2020 },
- { 0x0900, 0x0044, 0x0020 },
- { 0x0900, 0x0046, 0x0020 },
- { 0x8900, 0x004b, 0x3020 },
- { 0x8900, 0x0049, 0x2020 },
- { 0x0900, 0x0048, 0x0020 },
- { 0x0900, 0x004a, 0x0020 },
- { 0x8900, 0x004d, 0x2020 },
- { 0x0900, 0x004c, 0x0020 },
- { 0x0900, 0x004e, 0x0020 },
- { 0x8900, 0x0057, 0x4020 },
- { 0x8900, 0x0053, 0x3020 },
- { 0x8900, 0x0051, 0x2020 },
- { 0x0900, 0x0050, 0x0020 },
- { 0x0900, 0x0052, 0x0020 },
- { 0x8900, 0x0055, 0x2020 },
- { 0x0900, 0x0054, 0x0020 },
- { 0x0900, 0x0056, 0x0020 },
- { 0x9600, 0x005b, 0x3000 },
- { 0x8900, 0x0059, 0x2020 },
- { 0x0900, 0x0058, 0x0020 },
- { 0x0900, 0x005a, 0x0020 },
- { 0x9200, 0x005d, 0x2000 },
- { 0x1500, 0x005c, 0x0000 },
- { 0x1800, 0x005e, 0x0000 },
- { 0x8500, 0x006f, 0x5fe0 },
- { 0x8500, 0x0067, 0x4fe0 },
- { 0x8500, 0x0063, 0x3fe0 },
- { 0x8500, 0x0061, 0x2fe0 },
- { 0x1800, 0x0060, 0x0000 },
- { 0x0500, 0x0062, 0x0fe0 },
- { 0x8500, 0x0065, 0x2fe0 },
- { 0x0500, 0x0064, 0x0fe0 },
- { 0x0500, 0x0066, 0x0fe0 },
- { 0x8500, 0x006b, 0x3fe0 },
- { 0x8500, 0x0069, 0x2fe0 },
- { 0x0500, 0x0068, 0x0fe0 },
- { 0x0500, 0x006a, 0x0fe0 },
- { 0x8500, 0x006d, 0x2fe0 },
- { 0x0500, 0x006c, 0x0fe0 },
- { 0x0500, 0x006e, 0x0fe0 },
- { 0x8500, 0x0077, 0x4fe0 },
- { 0x8500, 0x0073, 0x3fe0 },
- { 0x8500, 0x0071, 0x2fe0 },
- { 0x0500, 0x0070, 0x0fe0 },
- { 0x0500, 0x0072, 0x0fe0 },
- { 0x8500, 0x0075, 0x2fe0 },
- { 0x0500, 0x0074, 0x0fe0 },
- { 0x0500, 0x0076, 0x0fe0 },
- { 0x9600, 0x007b, 0x3000 },
- { 0x8500, 0x0079, 0x2fe0 },
- { 0x0500, 0x0078, 0x0fe0 },
- { 0x0500, 0x007a, 0x0fe0 },
- { 0x9200, 0x007d, 0x2000 },
- { 0x1900, 0x007c, 0x0000 },
- { 0x1900, 0x007e, 0x0000 },
- { 0x9500, 0x00bf, 0x7000 },
- { 0x8000, 0x009f, 0x6000 },
- { 0x8000, 0x008f, 0x5000 },
- { 0x8000, 0x0087, 0x4000 },
- { 0x8000, 0x0083, 0x3000 },
- { 0x8000, 0x0081, 0x2000 },
- { 0x0000, 0x0080, 0x0000 },
- { 0x0000, 0x0082, 0x0000 },
- { 0x8000, 0x0085, 0x2000 },
- { 0x0000, 0x0084, 0x0000 },
- { 0x0000, 0x0086, 0x0000 },
- { 0x8000, 0x008b, 0x3000 },
- { 0x8000, 0x0089, 0x2000 },
- { 0x0000, 0x0088, 0x0000 },
- { 0x0000, 0x008a, 0x0000 },
- { 0x8000, 0x008d, 0x2000 },
- { 0x0000, 0x008c, 0x0000 },
- { 0x0000, 0x008e, 0x0000 },
- { 0x8000, 0x0097, 0x4000 },
- { 0x8000, 0x0093, 0x3000 },
- { 0x8000, 0x0091, 0x2000 },
- { 0x0000, 0x0090, 0x0000 },
- { 0x0000, 0x0092, 0x0000 },
- { 0x8000, 0x0095, 0x2000 },
- { 0x0000, 0x0094, 0x0000 },
- { 0x0000, 0x0096, 0x0000 },
- { 0x8000, 0x009b, 0x3000 },
- { 0x8000, 0x0099, 0x2000 },
- { 0x0000, 0x0098, 0x0000 },
- { 0x0000, 0x009a, 0x0000 },
- { 0x8000, 0x009d, 0x2000 },
- { 0x0000, 0x009c, 0x0000 },
- { 0x0000, 0x009e, 0x0000 },
- { 0x9800, 0x00af, 0x5000 },
- { 0x9a00, 0x00a7, 0x4000 },
- { 0x9700, 0x00a3, 0x3000 },
- { 0x9500, 0x00a1, 0x2000 },
- { 0x1d00, 0x00a0, 0x0000 },
- { 0x1700, 0x00a2, 0x0000 },
- { 0x9700, 0x00a5, 0x2000 },
- { 0x1700, 0x00a4, 0x0000 },
- { 0x1a00, 0x00a6, 0x0000 },
- { 0x9400, 0x00ab, 0x3000 },
- { 0x9a00, 0x00a9, 0x2000 },
- { 0x1800, 0x00a8, 0x0000 },
- { 0x0500, 0x00aa, 0x0000 },
- { 0x8100, 0x00ad, 0x2000 },
- { 0x1900, 0x00ac, 0x0000 },
- { 0x1a00, 0x00ae, 0x0000 },
- { 0x9500, 0x00b7, 0x4000 },
- { 0x8f00, 0x00b3, 0x3000 },
- { 0x9900, 0x00b1, 0x2000 },
- { 0x1a00, 0x00b0, 0x0000 },
- { 0x0f00, 0x00b2, 0x0000 },
- { 0x8500, 0x00b5, 0x22e7 },
- { 0x1800, 0x00b4, 0x0000 },
- { 0x1a00, 0x00b6, 0x0000 },
- { 0x9300, 0x00bb, 0x3000 },
- { 0x8f00, 0x00b9, 0x2000 },
- { 0x1800, 0x00b8, 0x0000 },
- { 0x0500, 0x00ba, 0x0000 },
- { 0x8f00, 0x00bd, 0x2000 },
- { 0x0f00, 0x00bc, 0x0000 },
- { 0x0f00, 0x00be, 0x0000 },
- { 0x8500, 0x00df, 0x6000 },
- { 0x8900, 0x00cf, 0x5020 },
- { 0x8900, 0x00c7, 0x4020 },
- { 0x8900, 0x00c3, 0x3020 },
- { 0x8900, 0x00c1, 0x2020 },
- { 0x0900, 0x00c0, 0x0020 },
- { 0x0900, 0x00c2, 0x0020 },
- { 0x8900, 0x00c5, 0x2020 },
- { 0x0900, 0x00c4, 0x0020 },
- { 0x0900, 0x00c6, 0x0020 },
- { 0x8900, 0x00cb, 0x3020 },
- { 0x8900, 0x00c9, 0x2020 },
- { 0x0900, 0x00c8, 0x0020 },
- { 0x0900, 0x00ca, 0x0020 },
- { 0x8900, 0x00cd, 0x2020 },
- { 0x0900, 0x00cc, 0x0020 },
- { 0x0900, 0x00ce, 0x0020 },
- { 0x9900, 0x00d7, 0x4000 },
- { 0x8900, 0x00d3, 0x3020 },
- { 0x8900, 0x00d1, 0x2020 },
- { 0x0900, 0x00d0, 0x0020 },
- { 0x0900, 0x00d2, 0x0020 },
- { 0x8900, 0x00d5, 0x2020 },
- { 0x0900, 0x00d4, 0x0020 },
- { 0x0900, 0x00d6, 0x0020 },
- { 0x8900, 0x00db, 0x3020 },
- { 0x8900, 0x00d9, 0x2020 },
- { 0x0900, 0x00d8, 0x0020 },
- { 0x0900, 0x00da, 0x0020 },
- { 0x8900, 0x00dd, 0x2020 },
- { 0x0900, 0x00dc, 0x0020 },
- { 0x0900, 0x00de, 0x0020 },
- { 0x8500, 0x00ef, 0x5fe0 },
- { 0x8500, 0x00e7, 0x4fe0 },
- { 0x8500, 0x00e3, 0x3fe0 },
- { 0x8500, 0x00e1, 0x2fe0 },
- { 0x0500, 0x00e0, 0x0fe0 },
- { 0x0500, 0x00e2, 0x0fe0 },
- { 0x8500, 0x00e5, 0x2fe0 },
- { 0x0500, 0x00e4, 0x0fe0 },
- { 0x0500, 0x00e6, 0x0fe0 },
- { 0x8500, 0x00eb, 0x3fe0 },
- { 0x8500, 0x00e9, 0x2fe0 },
- { 0x0500, 0x00e8, 0x0fe0 },
- { 0x0500, 0x00ea, 0x0fe0 },
- { 0x8500, 0x00ed, 0x2fe0 },
- { 0x0500, 0x00ec, 0x0fe0 },
- { 0x0500, 0x00ee, 0x0fe0 },
- { 0x9900, 0x00f7, 0x4000 },
- { 0x8500, 0x00f3, 0x3fe0 },
- { 0x8500, 0x00f1, 0x2fe0 },
- { 0x0500, 0x00f0, 0x0fe0 },
- { 0x0500, 0x00f2, 0x0fe0 },
- { 0x8500, 0x00f5, 0x2fe0 },
- { 0x0500, 0x00f4, 0x0fe0 },
- { 0x0500, 0x00f6, 0x0fe0 },
- { 0x8500, 0x00fb, 0x3fe0 },
- { 0x8500, 0x00f9, 0x2fe0 },
- { 0x0500, 0x00f8, 0x0fe0 },
- { 0x0500, 0x00fa, 0x0fe0 },
- { 0x8500, 0x00fd, 0x2fe0 },
- { 0x0500, 0x00fc, 0x0fe0 },
- { 0x0500, 0x00fe, 0x0fe0 },
- { 0x8500, 0x017f, 0x8ed4 },
- { 0x8900, 0x013f, 0x7001 },
- { 0x8500, 0x011f, 0x6fff },
- { 0x8500, 0x010f, 0x5fff },
- { 0x8500, 0x0107, 0x4fff },
- { 0x8500, 0x0103, 0x3fff },
- { 0x8500, 0x0101, 0x2fff },
- { 0x0900, 0x0100, 0x0001 },
- { 0x0900, 0x0102, 0x0001 },
- { 0x8500, 0x0105, 0x2fff },
- { 0x0900, 0x0104, 0x0001 },
- { 0x0900, 0x0106, 0x0001 },
- { 0x8500, 0x010b, 0x3fff },
- { 0x8500, 0x0109, 0x2fff },
- { 0x0900, 0x0108, 0x0001 },
- { 0x0900, 0x010a, 0x0001 },
- { 0x8500, 0x010d, 0x2fff },
- { 0x0900, 0x010c, 0x0001 },
- { 0x0900, 0x010e, 0x0001 },
- { 0x8500, 0x0117, 0x4fff },
- { 0x8500, 0x0113, 0x3fff },
- { 0x8500, 0x0111, 0x2fff },
- { 0x0900, 0x0110, 0x0001 },
- { 0x0900, 0x0112, 0x0001 },
- { 0x8500, 0x0115, 0x2fff },
- { 0x0900, 0x0114, 0x0001 },
- { 0x0900, 0x0116, 0x0001 },
- { 0x8500, 0x011b, 0x3fff },
- { 0x8500, 0x0119, 0x2fff },
- { 0x0900, 0x0118, 0x0001 },
- { 0x0900, 0x011a, 0x0001 },
- { 0x8500, 0x011d, 0x2fff },
- { 0x0900, 0x011c, 0x0001 },
- { 0x0900, 0x011e, 0x0001 },
- { 0x8500, 0x012f, 0x5fff },
- { 0x8500, 0x0127, 0x4fff },
- { 0x8500, 0x0123, 0x3fff },
- { 0x8500, 0x0121, 0x2fff },
- { 0x0900, 0x0120, 0x0001 },
- { 0x0900, 0x0122, 0x0001 },
- { 0x8500, 0x0125, 0x2fff },
- { 0x0900, 0x0124, 0x0001 },
- { 0x0900, 0x0126, 0x0001 },
- { 0x8500, 0x012b, 0x3fff },
- { 0x8500, 0x0129, 0x2fff },
- { 0x0900, 0x0128, 0x0001 },
- { 0x0900, 0x012a, 0x0001 },
- { 0x8500, 0x012d, 0x2fff },
- { 0x0900, 0x012c, 0x0001 },
- { 0x0900, 0x012e, 0x0001 },
- { 0x8500, 0x0137, 0x4fff },
- { 0x8500, 0x0133, 0x3fff },
- { 0x8500, 0x0131, 0x2f18 },
- { 0x0900, 0x0130, 0x0f39 },
- { 0x0900, 0x0132, 0x0001 },
- { 0x8500, 0x0135, 0x2fff },
- { 0x0900, 0x0134, 0x0001 },
- { 0x0900, 0x0136, 0x0001 },
- { 0x8900, 0x013b, 0x3001 },
- { 0x8900, 0x0139, 0x2001 },
- { 0x0500, 0x0138, 0x0000 },
- { 0x0500, 0x013a, 0x0fff },
- { 0x8900, 0x013d, 0x2001 },
- { 0x0500, 0x013c, 0x0fff },
- { 0x0500, 0x013e, 0x0fff },
- { 0x8500, 0x015f, 0x6fff },
- { 0x8500, 0x014f, 0x5fff },
- { 0x8900, 0x0147, 0x4001 },
- { 0x8900, 0x0143, 0x3001 },
- { 0x8900, 0x0141, 0x2001 },
- { 0x0500, 0x0140, 0x0fff },
- { 0x0500, 0x0142, 0x0fff },
- { 0x8900, 0x0145, 0x2001 },
- { 0x0500, 0x0144, 0x0fff },
- { 0x0500, 0x0146, 0x0fff },
- { 0x8500, 0x014b, 0x3fff },
- { 0x8500, 0x0149, 0x2000 },
- { 0x0500, 0x0148, 0x0fff },
- { 0x0900, 0x014a, 0x0001 },
- { 0x8500, 0x014d, 0x2fff },
- { 0x0900, 0x014c, 0x0001 },
- { 0x0900, 0x014e, 0x0001 },
- { 0x8500, 0x0157, 0x4fff },
- { 0x8500, 0x0153, 0x3fff },
- { 0x8500, 0x0151, 0x2fff },
- { 0x0900, 0x0150, 0x0001 },
- { 0x0900, 0x0152, 0x0001 },
- { 0x8500, 0x0155, 0x2fff },
- { 0x0900, 0x0154, 0x0001 },
- { 0x0900, 0x0156, 0x0001 },
- { 0x8500, 0x015b, 0x3fff },
- { 0x8500, 0x0159, 0x2fff },
- { 0x0900, 0x0158, 0x0001 },
- { 0x0900, 0x015a, 0x0001 },
- { 0x8500, 0x015d, 0x2fff },
- { 0x0900, 0x015c, 0x0001 },
- { 0x0900, 0x015e, 0x0001 },
- { 0x8500, 0x016f, 0x5fff },
- { 0x8500, 0x0167, 0x4fff },
- { 0x8500, 0x0163, 0x3fff },
- { 0x8500, 0x0161, 0x2fff },
- { 0x0900, 0x0160, 0x0001 },
- { 0x0900, 0x0162, 0x0001 },
- { 0x8500, 0x0165, 0x2fff },
- { 0x0900, 0x0164, 0x0001 },
- { 0x0900, 0x0166, 0x0001 },
- { 0x8500, 0x016b, 0x3fff },
- { 0x8500, 0x0169, 0x2fff },
- { 0x0900, 0x0168, 0x0001 },
- { 0x0900, 0x016a, 0x0001 },
- { 0x8500, 0x016d, 0x2fff },
- { 0x0900, 0x016c, 0x0001 },
- { 0x0900, 0x016e, 0x0001 },
- { 0x8500, 0x0177, 0x4fff },
- { 0x8500, 0x0173, 0x3fff },
- { 0x8500, 0x0171, 0x2fff },
- { 0x0900, 0x0170, 0x0001 },
- { 0x0900, 0x0172, 0x0001 },
- { 0x8500, 0x0175, 0x2fff },
- { 0x0900, 0x0174, 0x0001 },
- { 0x0900, 0x0176, 0x0001 },
- { 0x8900, 0x017b, 0x3001 },
- { 0x8900, 0x0179, 0x2001 },
- { 0x0900, 0x0178, 0x0f87 },
- { 0x0500, 0x017a, 0x0fff },
- { 0x8900, 0x017d, 0x2001 },
- { 0x0500, 0x017c, 0x0fff },
- { 0x0500, 0x017e, 0x0fff },
- { 0x8500, 0x01bf, 0x7038 },
- { 0x8900, 0x019f, 0x60d6 },
- { 0x8900, 0x018f, 0x50ca },
- { 0x8900, 0x0187, 0x4001 },
- { 0x8500, 0x0183, 0x3fff },
- { 0x8900, 0x0181, 0x20d2 },
- { 0x0500, 0x0180, 0x0000 },
- { 0x0900, 0x0182, 0x0001 },
- { 0x8500, 0x0185, 0x2fff },
- { 0x0900, 0x0184, 0x0001 },
- { 0x0900, 0x0186, 0x00ce },
- { 0x8900, 0x018b, 0x3001 },
- { 0x8900, 0x0189, 0x20cd },
- { 0x0500, 0x0188, 0x0fff },
- { 0x0900, 0x018a, 0x00cd },
- { 0x8500, 0x018d, 0x2000 },
- { 0x0500, 0x018c, 0x0fff },
- { 0x0900, 0x018e, 0x004f },
- { 0x8900, 0x0197, 0x40d1 },
- { 0x8900, 0x0193, 0x30cd },
- { 0x8900, 0x0191, 0x2001 },
- { 0x0900, 0x0190, 0x00cb },
- { 0x0500, 0x0192, 0x0fff },
- { 0x8500, 0x0195, 0x2061 },
- { 0x0900, 0x0194, 0x00cf },
- { 0x0900, 0x0196, 0x00d3 },
- { 0x8500, 0x019b, 0x3000 },
- { 0x8500, 0x0199, 0x2fff },
- { 0x0900, 0x0198, 0x0001 },
- { 0x0500, 0x019a, 0x0000 },
- { 0x8900, 0x019d, 0x20d5 },
- { 0x0900, 0x019c, 0x00d3 },
- { 0x0500, 0x019e, 0x0082 },
- { 0x8900, 0x01af, 0x5001 },
- { 0x8900, 0x01a7, 0x4001 },
- { 0x8500, 0x01a3, 0x3fff },
- { 0x8500, 0x01a1, 0x2fff },
- { 0x0900, 0x01a0, 0x0001 },
- { 0x0900, 0x01a2, 0x0001 },
- { 0x8500, 0x01a5, 0x2fff },
- { 0x0900, 0x01a4, 0x0001 },
- { 0x0900, 0x01a6, 0x00da },
- { 0x8500, 0x01ab, 0x3000 },
- { 0x8900, 0x01a9, 0x20da },
- { 0x0500, 0x01a8, 0x0fff },
- { 0x0500, 0x01aa, 0x0000 },
- { 0x8500, 0x01ad, 0x2fff },
- { 0x0900, 0x01ac, 0x0001 },
- { 0x0900, 0x01ae, 0x00da },
- { 0x8900, 0x01b7, 0x40db },
- { 0x8900, 0x01b3, 0x3001 },
- { 0x8900, 0x01b1, 0x20d9 },
- { 0x0500, 0x01b0, 0x0fff },
- { 0x0900, 0x01b2, 0x00d9 },
- { 0x8900, 0x01b5, 0x2001 },
- { 0x0500, 0x01b4, 0x0fff },
- { 0x0500, 0x01b6, 0x0fff },
- { 0x8700, 0x01bb, 0x3000 },
- { 0x8500, 0x01b9, 0x2fff },
- { 0x0900, 0x01b8, 0x0001 },
- { 0x0500, 0x01ba, 0x0000 },
- { 0x8500, 0x01bd, 0x2fff },
- { 0x0900, 0x01bc, 0x0001 },
- { 0x0500, 0x01be, 0x0000 },
- { 0x8500, 0x01df, 0x6fff },
- { 0x8900, 0x01cf, 0x5001 },
- { 0x8900, 0x01c7, 0x4002 },
- { 0x8700, 0x01c3, 0x3000 },
- { 0x8700, 0x01c1, 0x2000 },
- { 0x0700, 0x01c0, 0x0000 },
- { 0x0700, 0x01c2, 0x0000 },
- { 0x8800, 0x01c5, 0x2000 },
- { 0x0900, 0x01c4, 0x0002 },
- { 0x0500, 0x01c6, 0x0ffe },
- { 0x8800, 0x01cb, 0x3000 },
- { 0x8500, 0x01c9, 0x2ffe },
- { 0x0800, 0x01c8, 0x0000 },
- { 0x0900, 0x01ca, 0x0002 },
- { 0x8900, 0x01cd, 0x2001 },
- { 0x0500, 0x01cc, 0x0ffe },
- { 0x0500, 0x01ce, 0x0fff },
- { 0x8900, 0x01d7, 0x4001 },
- { 0x8900, 0x01d3, 0x3001 },
- { 0x8900, 0x01d1, 0x2001 },
- { 0x0500, 0x01d0, 0x0fff },
- { 0x0500, 0x01d2, 0x0fff },
- { 0x8900, 0x01d5, 0x2001 },
- { 0x0500, 0x01d4, 0x0fff },
- { 0x0500, 0x01d6, 0x0fff },
- { 0x8900, 0x01db, 0x3001 },
- { 0x8900, 0x01d9, 0x2001 },
- { 0x0500, 0x01d8, 0x0fff },
- { 0x0500, 0x01da, 0x0fff },
- { 0x8500, 0x01dd, 0x2fb1 },
- { 0x0500, 0x01dc, 0x0fff },
- { 0x0900, 0x01de, 0x0001 },
- { 0x8500, 0x01ef, 0x5fff },
- { 0x8500, 0x01e7, 0x4fff },
- { 0x8500, 0x01e3, 0x3fff },
- { 0x8500, 0x01e1, 0x2fff },
- { 0x0900, 0x01e0, 0x0001 },
- { 0x0900, 0x01e2, 0x0001 },
- { 0x8500, 0x01e5, 0x2fff },
- { 0x0900, 0x01e4, 0x0001 },
- { 0x0900, 0x01e6, 0x0001 },
- { 0x8500, 0x01eb, 0x3fff },
- { 0x8500, 0x01e9, 0x2fff },
- { 0x0900, 0x01e8, 0x0001 },
- { 0x0900, 0x01ea, 0x0001 },
- { 0x8500, 0x01ed, 0x2fff },
- { 0x0900, 0x01ec, 0x0001 },
- { 0x0900, 0x01ee, 0x0001 },
- { 0x8900, 0x01f7, 0x4fc8 },
- { 0x8500, 0x01f3, 0x3ffe },
- { 0x8900, 0x01f1, 0x2002 },
- { 0x0500, 0x01f0, 0x0000 },
- { 0x0800, 0x01f2, 0x0000 },
- { 0x8500, 0x01f5, 0x2fff },
- { 0x0900, 0x01f4, 0x0001 },
- { 0x0900, 0x01f6, 0x0f9f },
- { 0x8500, 0x01fb, 0x3fff },
- { 0x8500, 0x01f9, 0x2fff },
- { 0x0900, 0x01f8, 0x0001 },
- { 0x0900, 0x01fa, 0x0001 },
- { 0x8500, 0x01fd, 0x2fff },
- { 0x0900, 0x01fc, 0x0001 },
- { 0x0900, 0x01fe, 0x0001 },
- { 0x8c00, 0x0318, 0x9000 },
- { 0x8500, 0x0298, 0x8000 },
- { 0x8500, 0x0258, 0x7000 },
- { 0x8500, 0x021f, 0x6fff },
- { 0x8500, 0x020f, 0x5fff },
- { 0x8500, 0x0207, 0x4fff },
- { 0x8500, 0x0203, 0x3fff },
- { 0x8500, 0x0201, 0x2fff },
- { 0x0900, 0x0200, 0x0001 },
- { 0x0900, 0x0202, 0x0001 },
- { 0x8500, 0x0205, 0x2fff },
- { 0x0900, 0x0204, 0x0001 },
- { 0x0900, 0x0206, 0x0001 },
- { 0x8500, 0x020b, 0x3fff },
- { 0x8500, 0x0209, 0x2fff },
- { 0x0900, 0x0208, 0x0001 },
- { 0x0900, 0x020a, 0x0001 },
- { 0x8500, 0x020d, 0x2fff },
- { 0x0900, 0x020c, 0x0001 },
- { 0x0900, 0x020e, 0x0001 },
- { 0x8500, 0x0217, 0x4fff },
- { 0x8500, 0x0213, 0x3fff },
- { 0x8500, 0x0211, 0x2fff },
- { 0x0900, 0x0210, 0x0001 },
- { 0x0900, 0x0212, 0x0001 },
- { 0x8500, 0x0215, 0x2fff },
- { 0x0900, 0x0214, 0x0001 },
- { 0x0900, 0x0216, 0x0001 },
- { 0x8500, 0x021b, 0x3fff },
- { 0x8500, 0x0219, 0x2fff },
- { 0x0900, 0x0218, 0x0001 },
- { 0x0900, 0x021a, 0x0001 },
- { 0x8500, 0x021d, 0x2fff },
- { 0x0900, 0x021c, 0x0001 },
- { 0x0900, 0x021e, 0x0001 },
- { 0x8500, 0x022f, 0x5fff },
- { 0x8500, 0x0227, 0x4fff },
- { 0x8500, 0x0223, 0x3fff },
- { 0x8500, 0x0221, 0x2000 },
- { 0x0900, 0x0220, 0x0f7e },
- { 0x0900, 0x0222, 0x0001 },
- { 0x8500, 0x0225, 0x2fff },
- { 0x0900, 0x0224, 0x0001 },
- { 0x0900, 0x0226, 0x0001 },
- { 0x8500, 0x022b, 0x3fff },
- { 0x8500, 0x0229, 0x2fff },
- { 0x0900, 0x0228, 0x0001 },
- { 0x0900, 0x022a, 0x0001 },
- { 0x8500, 0x022d, 0x2fff },
- { 0x0900, 0x022c, 0x0001 },
- { 0x0900, 0x022e, 0x0001 },
- { 0x8500, 0x0250, 0x4000 },
- { 0x8500, 0x0233, 0x3fff },
- { 0x8500, 0x0231, 0x2fff },
- { 0x0900, 0x0230, 0x0001 },
- { 0x0900, 0x0232, 0x0001 },
- { 0x8500, 0x0235, 0x2000 },
- { 0x0500, 0x0234, 0x0000 },
- { 0x0500, 0x0236, 0x0000 },
- { 0x8500, 0x0254, 0x3f32 },
- { 0x8500, 0x0252, 0x2000 },
- { 0x0500, 0x0251, 0x0000 },
- { 0x0500, 0x0253, 0x0f2e },
- { 0x8500, 0x0256, 0x2f33 },
- { 0x0500, 0x0255, 0x0000 },
- { 0x0500, 0x0257, 0x0f33 },
- { 0x8500, 0x0278, 0x6000 },
- { 0x8500, 0x0268, 0x5f2f },
- { 0x8500, 0x0260, 0x4f33 },
- { 0x8500, 0x025c, 0x3000 },
- { 0x8500, 0x025a, 0x2000 },
- { 0x0500, 0x0259, 0x0f36 },
- { 0x0500, 0x025b, 0x0f35 },
- { 0x8500, 0x025e, 0x2000 },
- { 0x0500, 0x025d, 0x0000 },
- { 0x0500, 0x025f, 0x0000 },
- { 0x8500, 0x0264, 0x3000 },
- { 0x8500, 0x0262, 0x2000 },
- { 0x0500, 0x0261, 0x0000 },
- { 0x0500, 0x0263, 0x0f31 },
- { 0x8500, 0x0266, 0x2000 },
- { 0x0500, 0x0265, 0x0000 },
- { 0x0500, 0x0267, 0x0000 },
- { 0x8500, 0x0270, 0x4000 },
- { 0x8500, 0x026c, 0x3000 },
- { 0x8500, 0x026a, 0x2000 },
- { 0x0500, 0x0269, 0x0f2d },
- { 0x0500, 0x026b, 0x0000 },
- { 0x8500, 0x026e, 0x2000 },
- { 0x0500, 0x026d, 0x0000 },
- { 0x0500, 0x026f, 0x0f2d },
- { 0x8500, 0x0274, 0x3000 },
- { 0x8500, 0x0272, 0x2f2b },
- { 0x0500, 0x0271, 0x0000 },
- { 0x0500, 0x0273, 0x0000 },
- { 0x8500, 0x0276, 0x2000 },
- { 0x0500, 0x0275, 0x0f2a },
- { 0x0500, 0x0277, 0x0000 },
- { 0x8500, 0x0288, 0x5f26 },
- { 0x8500, 0x0280, 0x4f26 },
- { 0x8500, 0x027c, 0x3000 },
- { 0x8500, 0x027a, 0x2000 },
- { 0x0500, 0x0279, 0x0000 },
- { 0x0500, 0x027b, 0x0000 },
- { 0x8500, 0x027e, 0x2000 },
- { 0x0500, 0x027d, 0x0000 },
- { 0x0500, 0x027f, 0x0000 },
- { 0x8500, 0x0284, 0x3000 },
- { 0x8500, 0x0282, 0x2000 },
- { 0x0500, 0x0281, 0x0000 },
- { 0x0500, 0x0283, 0x0f26 },
- { 0x8500, 0x0286, 0x2000 },
- { 0x0500, 0x0285, 0x0000 },
- { 0x0500, 0x0287, 0x0000 },
- { 0x8500, 0x0290, 0x4000 },
- { 0x8500, 0x028c, 0x3000 },
- { 0x8500, 0x028a, 0x2f27 },
- { 0x0500, 0x0289, 0x0000 },
- { 0x0500, 0x028b, 0x0f27 },
- { 0x8500, 0x028e, 0x2000 },
- { 0x0500, 0x028d, 0x0000 },
- { 0x0500, 0x028f, 0x0000 },
- { 0x8500, 0x0294, 0x3000 },
- { 0x8500, 0x0292, 0x2f25 },
- { 0x0500, 0x0291, 0x0000 },
- { 0x0500, 0x0293, 0x0000 },
- { 0x8500, 0x0296, 0x2000 },
- { 0x0500, 0x0295, 0x0000 },
- { 0x0500, 0x0297, 0x0000 },
- { 0x9800, 0x02d8, 0x7000 },
- { 0x8600, 0x02b8, 0x6000 },
- { 0x8500, 0x02a8, 0x5000 },
- { 0x8500, 0x02a0, 0x4000 },
- { 0x8500, 0x029c, 0x3000 },
- { 0x8500, 0x029a, 0x2000 },
- { 0x0500, 0x0299, 0x0000 },
- { 0x0500, 0x029b, 0x0000 },
- { 0x8500, 0x029e, 0x2000 },
- { 0x0500, 0x029d, 0x0000 },
- { 0x0500, 0x029f, 0x0000 },
- { 0x8500, 0x02a4, 0x3000 },
- { 0x8500, 0x02a2, 0x2000 },
- { 0x0500, 0x02a1, 0x0000 },
- { 0x0500, 0x02a3, 0x0000 },
- { 0x8500, 0x02a6, 0x2000 },
- { 0x0500, 0x02a5, 0x0000 },
- { 0x0500, 0x02a7, 0x0000 },
- { 0x8600, 0x02b0, 0x4000 },
- { 0x8500, 0x02ac, 0x3000 },
- { 0x8500, 0x02aa, 0x2000 },
- { 0x0500, 0x02a9, 0x0000 },
- { 0x0500, 0x02ab, 0x0000 },
- { 0x8500, 0x02ae, 0x2000 },
- { 0x0500, 0x02ad, 0x0000 },
- { 0x0500, 0x02af, 0x0000 },
- { 0x8600, 0x02b4, 0x3000 },
- { 0x8600, 0x02b2, 0x2000 },
- { 0x0600, 0x02b1, 0x0000 },
- { 0x0600, 0x02b3, 0x0000 },
- { 0x8600, 0x02b6, 0x2000 },
- { 0x0600, 0x02b5, 0x0000 },
- { 0x0600, 0x02b7, 0x0000 },
- { 0x8600, 0x02c8, 0x5000 },
- { 0x8600, 0x02c0, 0x4000 },
- { 0x8600, 0x02bc, 0x3000 },
- { 0x8600, 0x02ba, 0x2000 },
- { 0x0600, 0x02b9, 0x0000 },
- { 0x0600, 0x02bb, 0x0000 },
- { 0x8600, 0x02be, 0x2000 },
- { 0x0600, 0x02bd, 0x0000 },
- { 0x0600, 0x02bf, 0x0000 },
- { 0x9800, 0x02c4, 0x3000 },
- { 0x9800, 0x02c2, 0x2000 },
- { 0x0600, 0x02c1, 0x0000 },
- { 0x1800, 0x02c3, 0x0000 },
- { 0x8600, 0x02c6, 0x2000 },
- { 0x1800, 0x02c5, 0x0000 },
- { 0x0600, 0x02c7, 0x0000 },
- { 0x8600, 0x02d0, 0x4000 },
- { 0x8600, 0x02cc, 0x3000 },
- { 0x8600, 0x02ca, 0x2000 },
- { 0x0600, 0x02c9, 0x0000 },
- { 0x0600, 0x02cb, 0x0000 },
- { 0x8600, 0x02ce, 0x2000 },
- { 0x0600, 0x02cd, 0x0000 },
- { 0x0600, 0x02cf, 0x0000 },
- { 0x9800, 0x02d4, 0x3000 },
- { 0x9800, 0x02d2, 0x2000 },
- { 0x0600, 0x02d1, 0x0000 },
- { 0x1800, 0x02d3, 0x0000 },
- { 0x9800, 0x02d6, 0x2000 },
- { 0x1800, 0x02d5, 0x0000 },
- { 0x1800, 0x02d7, 0x0000 },
- { 0x9800, 0x02f8, 0x6000 },
- { 0x9800, 0x02e8, 0x5000 },
- { 0x8600, 0x02e0, 0x4000 },
- { 0x9800, 0x02dc, 0x3000 },
- { 0x9800, 0x02da, 0x2000 },
- { 0x1800, 0x02d9, 0x0000 },
- { 0x1800, 0x02db, 0x0000 },
- { 0x9800, 0x02de, 0x2000 },
- { 0x1800, 0x02dd, 0x0000 },
- { 0x1800, 0x02df, 0x0000 },
- { 0x8600, 0x02e4, 0x3000 },
- { 0x8600, 0x02e2, 0x2000 },
- { 0x0600, 0x02e1, 0x0000 },
- { 0x0600, 0x02e3, 0x0000 },
- { 0x9800, 0x02e6, 0x2000 },
- { 0x1800, 0x02e5, 0x0000 },
- { 0x1800, 0x02e7, 0x0000 },
- { 0x9800, 0x02f0, 0x4000 },
- { 0x9800, 0x02ec, 0x3000 },
- { 0x9800, 0x02ea, 0x2000 },
- { 0x1800, 0x02e9, 0x0000 },
- { 0x1800, 0x02eb, 0x0000 },
- { 0x8600, 0x02ee, 0x2000 },
- { 0x1800, 0x02ed, 0x0000 },
- { 0x1800, 0x02ef, 0x0000 },
- { 0x9800, 0x02f4, 0x3000 },
- { 0x9800, 0x02f2, 0x2000 },
- { 0x1800, 0x02f1, 0x0000 },
- { 0x1800, 0x02f3, 0x0000 },
- { 0x9800, 0x02f6, 0x2000 },
- { 0x1800, 0x02f5, 0x0000 },
- { 0x1800, 0x02f7, 0x0000 },
- { 0x8c00, 0x0308, 0x5000 },
- { 0x8c00, 0x0300, 0x4000 },
- { 0x9800, 0x02fc, 0x3000 },
- { 0x9800, 0x02fa, 0x2000 },
- { 0x1800, 0x02f9, 0x0000 },
- { 0x1800, 0x02fb, 0x0000 },
- { 0x9800, 0x02fe, 0x2000 },
- { 0x1800, 0x02fd, 0x0000 },
- { 0x1800, 0x02ff, 0x0000 },
- { 0x8c00, 0x0304, 0x3000 },
- { 0x8c00, 0x0302, 0x2000 },
- { 0x0c00, 0x0301, 0x0000 },
- { 0x0c00, 0x0303, 0x0000 },
- { 0x8c00, 0x0306, 0x2000 },
- { 0x0c00, 0x0305, 0x0000 },
- { 0x0c00, 0x0307, 0x0000 },
- { 0x8c00, 0x0310, 0x4000 },
- { 0x8c00, 0x030c, 0x3000 },
- { 0x8c00, 0x030a, 0x2000 },
- { 0x0c00, 0x0309, 0x0000 },
- { 0x0c00, 0x030b, 0x0000 },
- { 0x8c00, 0x030e, 0x2000 },
- { 0x0c00, 0x030d, 0x0000 },
- { 0x0c00, 0x030f, 0x0000 },
- { 0x8c00, 0x0314, 0x3000 },
- { 0x8c00, 0x0312, 0x2000 },
- { 0x0c00, 0x0311, 0x0000 },
- { 0x0c00, 0x0313, 0x0000 },
- { 0x8c00, 0x0316, 0x2000 },
- { 0x0c00, 0x0315, 0x0000 },
- { 0x0c00, 0x0317, 0x0000 },
- { 0x8500, 0x03b0, 0x8000 },
- { 0x8c00, 0x035d, 0x7000 },
- { 0x8c00, 0x0338, 0x6000 },
- { 0x8c00, 0x0328, 0x5000 },
- { 0x8c00, 0x0320, 0x4000 },
- { 0x8c00, 0x031c, 0x3000 },
- { 0x8c00, 0x031a, 0x2000 },
- { 0x0c00, 0x0319, 0x0000 },
- { 0x0c00, 0x031b, 0x0000 },
- { 0x8c00, 0x031e, 0x2000 },
- { 0x0c00, 0x031d, 0x0000 },
- { 0x0c00, 0x031f, 0x0000 },
- { 0x8c00, 0x0324, 0x3000 },
- { 0x8c00, 0x0322, 0x2000 },
- { 0x0c00, 0x0321, 0x0000 },
- { 0x0c00, 0x0323, 0x0000 },
- { 0x8c00, 0x0326, 0x2000 },
- { 0x0c00, 0x0325, 0x0000 },
- { 0x0c00, 0x0327, 0x0000 },
- { 0x8c00, 0x0330, 0x4000 },
- { 0x8c00, 0x032c, 0x3000 },
- { 0x8c00, 0x032a, 0x2000 },
- { 0x0c00, 0x0329, 0x0000 },
- { 0x0c00, 0x032b, 0x0000 },
- { 0x8c00, 0x032e, 0x2000 },
- { 0x0c00, 0x032d, 0x0000 },
- { 0x0c00, 0x032f, 0x0000 },
- { 0x8c00, 0x0334, 0x3000 },
- { 0x8c00, 0x0332, 0x2000 },
- { 0x0c00, 0x0331, 0x0000 },
- { 0x0c00, 0x0333, 0x0000 },
- { 0x8c00, 0x0336, 0x2000 },
- { 0x0c00, 0x0335, 0x0000 },
- { 0x0c00, 0x0337, 0x0000 },
- { 0x8c00, 0x0348, 0x5000 },
- { 0x8c00, 0x0340, 0x4000 },
- { 0x8c00, 0x033c, 0x3000 },
- { 0x8c00, 0x033a, 0x2000 },
- { 0x0c00, 0x0339, 0x0000 },
- { 0x0c00, 0x033b, 0x0000 },
- { 0x8c00, 0x033e, 0x2000 },
- { 0x0c00, 0x033d, 0x0000 },
- { 0x0c00, 0x033f, 0x0000 },
- { 0x8c00, 0x0344, 0x3000 },
- { 0x8c00, 0x0342, 0x2000 },
- { 0x0c00, 0x0341, 0x0000 },
- { 0x0c00, 0x0343, 0x0000 },
- { 0x8c00, 0x0346, 0x2000 },
- { 0x0c00, 0x0345, 0x0000 },
- { 0x0c00, 0x0347, 0x0000 },
- { 0x8c00, 0x0350, 0x4000 },
- { 0x8c00, 0x034c, 0x3000 },
- { 0x8c00, 0x034a, 0x2000 },
- { 0x0c00, 0x0349, 0x0000 },
- { 0x0c00, 0x034b, 0x0000 },
- { 0x8c00, 0x034e, 0x2000 },
- { 0x0c00, 0x034d, 0x0000 },
- { 0x0c00, 0x034f, 0x0000 },
- { 0x8c00, 0x0354, 0x3000 },
- { 0x8c00, 0x0352, 0x2000 },
- { 0x0c00, 0x0351, 0x0000 },
- { 0x0c00, 0x0353, 0x0000 },
- { 0x8c00, 0x0356, 0x2000 },
- { 0x0c00, 0x0355, 0x0000 },
- { 0x0c00, 0x0357, 0x0000 },
- { 0x8900, 0x038f, 0x603f },
- { 0x8c00, 0x036d, 0x5000 },
- { 0x8c00, 0x0365, 0x4000 },
- { 0x8c00, 0x0361, 0x3000 },
- { 0x8c00, 0x035f, 0x2000 },
- { 0x0c00, 0x035e, 0x0000 },
- { 0x0c00, 0x0360, 0x0000 },
- { 0x8c00, 0x0363, 0x2000 },
- { 0x0c00, 0x0362, 0x0000 },
- { 0x0c00, 0x0364, 0x0000 },
- { 0x8c00, 0x0369, 0x3000 },
- { 0x8c00, 0x0367, 0x2000 },
- { 0x0c00, 0x0366, 0x0000 },
- { 0x0c00, 0x0368, 0x0000 },
- { 0x8c00, 0x036b, 0x2000 },
- { 0x0c00, 0x036a, 0x0000 },
- { 0x0c00, 0x036c, 0x0000 },
- { 0x9800, 0x0385, 0x4000 },
- { 0x9800, 0x0375, 0x3000 },
- { 0x8c00, 0x036f, 0x2000 },
- { 0x0c00, 0x036e, 0x0000 },
- { 0x1800, 0x0374, 0x0000 },
- { 0x9500, 0x037e, 0x2000 },
- { 0x0600, 0x037a, 0x0000 },
- { 0x1800, 0x0384, 0x0000 },
- { 0x8900, 0x0389, 0x3025 },
- { 0x9500, 0x0387, 0x2000 },
- { 0x0900, 0x0386, 0x0026 },
- { 0x0900, 0x0388, 0x0025 },
- { 0x8900, 0x038c, 0x2040 },
- { 0x0900, 0x038a, 0x0025 },
- { 0x0900, 0x038e, 0x003f },
- { 0x8900, 0x039f, 0x5020 },
- { 0x8900, 0x0397, 0x4020 },
- { 0x8900, 0x0393, 0x3020 },
- { 0x8900, 0x0391, 0x2020 },
- { 0x0500, 0x0390, 0x0000 },
- { 0x0900, 0x0392, 0x0020 },
- { 0x8900, 0x0395, 0x2020 },
- { 0x0900, 0x0394, 0x0020 },
- { 0x0900, 0x0396, 0x0020 },
- { 0x8900, 0x039b, 0x3020 },
- { 0x8900, 0x0399, 0x2020 },
- { 0x0900, 0x0398, 0x0020 },
- { 0x0900, 0x039a, 0x0020 },
- { 0x8900, 0x039d, 0x2020 },
- { 0x0900, 0x039c, 0x0020 },
- { 0x0900, 0x039e, 0x0020 },
- { 0x8900, 0x03a8, 0x4020 },
- { 0x8900, 0x03a4, 0x3020 },
- { 0x8900, 0x03a1, 0x2020 },
- { 0x0900, 0x03a0, 0x0020 },
- { 0x0900, 0x03a3, 0x0020 },
- { 0x8900, 0x03a6, 0x2020 },
- { 0x0900, 0x03a5, 0x0020 },
- { 0x0900, 0x03a7, 0x0020 },
- { 0x8500, 0x03ac, 0x3fda },
- { 0x8900, 0x03aa, 0x2020 },
- { 0x0900, 0x03a9, 0x0020 },
- { 0x0900, 0x03ab, 0x0020 },
- { 0x8500, 0x03ae, 0x2fdb },
- { 0x0500, 0x03ad, 0x0fdb },
- { 0x0500, 0x03af, 0x0fdb },
- { 0x8500, 0x03f1, 0x7fb0 },
- { 0x8500, 0x03d1, 0x6fc7 },
- { 0x8500, 0x03c0, 0x5fe0 },
- { 0x8500, 0x03b8, 0x4fe0 },
- { 0x8500, 0x03b4, 0x3fe0 },
- { 0x8500, 0x03b2, 0x2fe0 },
- { 0x0500, 0x03b1, 0x0fe0 },
- { 0x0500, 0x03b3, 0x0fe0 },
- { 0x8500, 0x03b6, 0x2fe0 },
- { 0x0500, 0x03b5, 0x0fe0 },
- { 0x0500, 0x03b7, 0x0fe0 },
- { 0x8500, 0x03bc, 0x3fe0 },
- { 0x8500, 0x03ba, 0x2fe0 },
- { 0x0500, 0x03b9, 0x0fe0 },
- { 0x0500, 0x03bb, 0x0fe0 },
- { 0x8500, 0x03be, 0x2fe0 },
- { 0x0500, 0x03bd, 0x0fe0 },
- { 0x0500, 0x03bf, 0x0fe0 },
- { 0x8500, 0x03c8, 0x4fe0 },
- { 0x8500, 0x03c4, 0x3fe0 },
- { 0x8500, 0x03c2, 0x2fe1 },
- { 0x0500, 0x03c1, 0x0fe0 },
- { 0x0500, 0x03c3, 0x0fe0 },
- { 0x8500, 0x03c6, 0x2fe0 },
- { 0x0500, 0x03c5, 0x0fe0 },
- { 0x0500, 0x03c7, 0x0fe0 },
- { 0x8500, 0x03cc, 0x3fc0 },
- { 0x8500, 0x03ca, 0x2fe0 },
- { 0x0500, 0x03c9, 0x0fe0 },
- { 0x0500, 0x03cb, 0x0fe0 },
- { 0x8500, 0x03ce, 0x2fc1 },
- { 0x0500, 0x03cd, 0x0fc1 },
- { 0x0500, 0x03d0, 0x0fc2 },
- { 0x8500, 0x03e1, 0x5fff },
- { 0x8500, 0x03d9, 0x4fff },
- { 0x8500, 0x03d5, 0x3fd1 },
- { 0x8900, 0x03d3, 0x2000 },
- { 0x0900, 0x03d2, 0x0000 },
- { 0x0900, 0x03d4, 0x0000 },
- { 0x8500, 0x03d7, 0x2000 },
- { 0x0500, 0x03d6, 0x0fca },
- { 0x0900, 0x03d8, 0x0001 },
- { 0x8500, 0x03dd, 0x3fff },
- { 0x8500, 0x03db, 0x2fff },
- { 0x0900, 0x03da, 0x0001 },
- { 0x0900, 0x03dc, 0x0001 },
- { 0x8500, 0x03df, 0x2fff },
- { 0x0900, 0x03de, 0x0001 },
- { 0x0900, 0x03e0, 0x0001 },
- { 0x8500, 0x03e9, 0x4fff },
- { 0x8500, 0x03e5, 0x3fff },
- { 0x8500, 0x03e3, 0x2fff },
- { 0x0900, 0x03e2, 0x0001 },
- { 0x0900, 0x03e4, 0x0001 },
- { 0x8500, 0x03e7, 0x2fff },
- { 0x0900, 0x03e6, 0x0001 },
- { 0x0900, 0x03e8, 0x0001 },
- { 0x8500, 0x03ed, 0x3fff },
- { 0x8500, 0x03eb, 0x2fff },
- { 0x0900, 0x03ea, 0x0001 },
- { 0x0900, 0x03ec, 0x0001 },
- { 0x8500, 0x03ef, 0x2fff },
- { 0x0900, 0x03ee, 0x0001 },
- { 0x0500, 0x03f0, 0x0faa },
- { 0x8900, 0x0415, 0x6020 },
- { 0x8900, 0x0405, 0x5050 },
- { 0x8900, 0x03f9, 0x4ff9 },
- { 0x8500, 0x03f5, 0x3fa0 },
- { 0x8500, 0x03f3, 0x2000 },
- { 0x0500, 0x03f2, 0x0007 },
- { 0x0900, 0x03f4, 0x0fc4 },
- { 0x8900, 0x03f7, 0x2001 },
- { 0x1900, 0x03f6, 0x0000 },
- { 0x0500, 0x03f8, 0x0fff },
- { 0x8900, 0x0401, 0x3050 },
- { 0x8500, 0x03fb, 0x2fff },
- { 0x0900, 0x03fa, 0x0001 },
- { 0x0900, 0x0400, 0x0050 },
- { 0x8900, 0x0403, 0x2050 },
- { 0x0900, 0x0402, 0x0050 },
- { 0x0900, 0x0404, 0x0050 },
- { 0x8900, 0x040d, 0x4050 },
- { 0x8900, 0x0409, 0x3050 },
- { 0x8900, 0x0407, 0x2050 },
- { 0x0900, 0x0406, 0x0050 },
- { 0x0900, 0x0408, 0x0050 },
- { 0x8900, 0x040b, 0x2050 },
- { 0x0900, 0x040a, 0x0050 },
- { 0x0900, 0x040c, 0x0050 },
- { 0x8900, 0x0411, 0x3020 },
- { 0x8900, 0x040f, 0x2050 },
- { 0x0900, 0x040e, 0x0050 },
- { 0x0900, 0x0410, 0x0020 },
- { 0x8900, 0x0413, 0x2020 },
- { 0x0900, 0x0412, 0x0020 },
- { 0x0900, 0x0414, 0x0020 },
- { 0x8900, 0x0425, 0x5020 },
- { 0x8900, 0x041d, 0x4020 },
- { 0x8900, 0x0419, 0x3020 },
- { 0x8900, 0x0417, 0x2020 },
- { 0x0900, 0x0416, 0x0020 },
- { 0x0900, 0x0418, 0x0020 },
- { 0x8900, 0x041b, 0x2020 },
- { 0x0900, 0x041a, 0x0020 },
- { 0x0900, 0x041c, 0x0020 },
- { 0x8900, 0x0421, 0x3020 },
- { 0x8900, 0x041f, 0x2020 },
- { 0x0900, 0x041e, 0x0020 },
- { 0x0900, 0x0420, 0x0020 },
- { 0x8900, 0x0423, 0x2020 },
- { 0x0900, 0x0422, 0x0020 },
- { 0x0900, 0x0424, 0x0020 },
- { 0x8900, 0x042d, 0x4020 },
- { 0x8900, 0x0429, 0x3020 },
- { 0x8900, 0x0427, 0x2020 },
- { 0x0900, 0x0426, 0x0020 },
- { 0x0900, 0x0428, 0x0020 },
- { 0x8900, 0x042b, 0x2020 },
- { 0x0900, 0x042a, 0x0020 },
- { 0x0900, 0x042c, 0x0020 },
- { 0x8500, 0x0431, 0x3fe0 },
- { 0x8900, 0x042f, 0x2020 },
- { 0x0900, 0x042e, 0x0020 },
- { 0x0500, 0x0430, 0x0fe0 },
- { 0x8500, 0x0433, 0x2fe0 },
- { 0x0500, 0x0432, 0x0fe0 },
- { 0x0500, 0x0434, 0x0fe0 },
- { 0x8700, 0x06a4, 0xa000 },
- { 0x8500, 0x0563, 0x9fd0 },
- { 0x8900, 0x04b6, 0x8001 },
- { 0x8500, 0x0475, 0x7fff },
- { 0x8500, 0x0455, 0x6fb0 },
- { 0x8500, 0x0445, 0x5fe0 },
- { 0x8500, 0x043d, 0x4fe0 },
- { 0x8500, 0x0439, 0x3fe0 },
- { 0x8500, 0x0437, 0x2fe0 },
- { 0x0500, 0x0436, 0x0fe0 },
- { 0x0500, 0x0438, 0x0fe0 },
- { 0x8500, 0x043b, 0x2fe0 },
- { 0x0500, 0x043a, 0x0fe0 },
- { 0x0500, 0x043c, 0x0fe0 },
- { 0x8500, 0x0441, 0x3fe0 },
- { 0x8500, 0x043f, 0x2fe0 },
- { 0x0500, 0x043e, 0x0fe0 },
- { 0x0500, 0x0440, 0x0fe0 },
- { 0x8500, 0x0443, 0x2fe0 },
- { 0x0500, 0x0442, 0x0fe0 },
- { 0x0500, 0x0444, 0x0fe0 },
- { 0x8500, 0x044d, 0x4fe0 },
- { 0x8500, 0x0449, 0x3fe0 },
- { 0x8500, 0x0447, 0x2fe0 },
- { 0x0500, 0x0446, 0x0fe0 },
- { 0x0500, 0x0448, 0x0fe0 },
- { 0x8500, 0x044b, 0x2fe0 },
- { 0x0500, 0x044a, 0x0fe0 },
- { 0x0500, 0x044c, 0x0fe0 },
- { 0x8500, 0x0451, 0x3fb0 },
- { 0x8500, 0x044f, 0x2fe0 },
- { 0x0500, 0x044e, 0x0fe0 },
- { 0x0500, 0x0450, 0x0fb0 },
- { 0x8500, 0x0453, 0x2fb0 },
- { 0x0500, 0x0452, 0x0fb0 },
- { 0x0500, 0x0454, 0x0fb0 },
- { 0x8500, 0x0465, 0x5fff },
- { 0x8500, 0x045d, 0x4fb0 },
- { 0x8500, 0x0459, 0x3fb0 },
- { 0x8500, 0x0457, 0x2fb0 },
- { 0x0500, 0x0456, 0x0fb0 },
- { 0x0500, 0x0458, 0x0fb0 },
- { 0x8500, 0x045b, 0x2fb0 },
- { 0x0500, 0x045a, 0x0fb0 },
- { 0x0500, 0x045c, 0x0fb0 },
- { 0x8500, 0x0461, 0x3fff },
- { 0x8500, 0x045f, 0x2fb0 },
- { 0x0500, 0x045e, 0x0fb0 },
- { 0x0900, 0x0460, 0x0001 },
- { 0x8500, 0x0463, 0x2fff },
- { 0x0900, 0x0462, 0x0001 },
- { 0x0900, 0x0464, 0x0001 },
- { 0x8500, 0x046d, 0x4fff },
- { 0x8500, 0x0469, 0x3fff },
- { 0x8500, 0x0467, 0x2fff },
- { 0x0900, 0x0466, 0x0001 },
- { 0x0900, 0x0468, 0x0001 },
- { 0x8500, 0x046b, 0x2fff },
- { 0x0900, 0x046a, 0x0001 },
- { 0x0900, 0x046c, 0x0001 },
- { 0x8500, 0x0471, 0x3fff },
- { 0x8500, 0x046f, 0x2fff },
- { 0x0900, 0x046e, 0x0001 },
- { 0x0900, 0x0470, 0x0001 },
- { 0x8500, 0x0473, 0x2fff },
- { 0x0900, 0x0472, 0x0001 },
- { 0x0900, 0x0474, 0x0001 },
- { 0x8900, 0x0496, 0x6001 },
- { 0x8c00, 0x0485, 0x5000 },
- { 0x8500, 0x047d, 0x4fff },
- { 0x8500, 0x0479, 0x3fff },
- { 0x8500, 0x0477, 0x2fff },
- { 0x0900, 0x0476, 0x0001 },
- { 0x0900, 0x0478, 0x0001 },
- { 0x8500, 0x047b, 0x2fff },
- { 0x0900, 0x047a, 0x0001 },
- { 0x0900, 0x047c, 0x0001 },
- { 0x8500, 0x0481, 0x3fff },
- { 0x8500, 0x047f, 0x2fff },
- { 0x0900, 0x047e, 0x0001 },
- { 0x0900, 0x0480, 0x0001 },
- { 0x8c00, 0x0483, 0x2000 },
- { 0x1a00, 0x0482, 0x0000 },
- { 0x0c00, 0x0484, 0x0000 },
- { 0x8900, 0x048e, 0x4001 },
- { 0x8900, 0x048a, 0x3001 },
- { 0x8b00, 0x0488, 0x2000 },
- { 0x0c00, 0x0486, 0x0000 },
- { 0x0b00, 0x0489, 0x0000 },
- { 0x8900, 0x048c, 0x2001 },
- { 0x0500, 0x048b, 0x0fff },
- { 0x0500, 0x048d, 0x0fff },
- { 0x8900, 0x0492, 0x3001 },
- { 0x8900, 0x0490, 0x2001 },
- { 0x0500, 0x048f, 0x0fff },
- { 0x0500, 0x0491, 0x0fff },
- { 0x8900, 0x0494, 0x2001 },
- { 0x0500, 0x0493, 0x0fff },
- { 0x0500, 0x0495, 0x0fff },
- { 0x8900, 0x04a6, 0x5001 },
- { 0x8900, 0x049e, 0x4001 },
- { 0x8900, 0x049a, 0x3001 },
- { 0x8900, 0x0498, 0x2001 },
- { 0x0500, 0x0497, 0x0fff },
- { 0x0500, 0x0499, 0x0fff },
- { 0x8900, 0x049c, 0x2001 },
- { 0x0500, 0x049b, 0x0fff },
- { 0x0500, 0x049d, 0x0fff },
- { 0x8900, 0x04a2, 0x3001 },
- { 0x8900, 0x04a0, 0x2001 },
- { 0x0500, 0x049f, 0x0fff },
- { 0x0500, 0x04a1, 0x0fff },
- { 0x8900, 0x04a4, 0x2001 },
- { 0x0500, 0x04a3, 0x0fff },
- { 0x0500, 0x04a5, 0x0fff },
- { 0x8900, 0x04ae, 0x4001 },
- { 0x8900, 0x04aa, 0x3001 },
- { 0x8900, 0x04a8, 0x2001 },
- { 0x0500, 0x04a7, 0x0fff },
- { 0x0500, 0x04a9, 0x0fff },
- { 0x8900, 0x04ac, 0x2001 },
- { 0x0500, 0x04ab, 0x0fff },
- { 0x0500, 0x04ad, 0x0fff },
- { 0x8900, 0x04b2, 0x3001 },
- { 0x8900, 0x04b0, 0x2001 },
- { 0x0500, 0x04af, 0x0fff },
- { 0x0500, 0x04b1, 0x0fff },
- { 0x8900, 0x04b4, 0x2001 },
- { 0x0500, 0x04b3, 0x0fff },
- { 0x0500, 0x04b5, 0x0fff },
- { 0x8500, 0x04f9, 0x7fff },
- { 0x8500, 0x04d7, 0x6fff },
- { 0x8500, 0x04c6, 0x5fff },
- { 0x8900, 0x04be, 0x4001 },
- { 0x8900, 0x04ba, 0x3001 },
- { 0x8900, 0x04b8, 0x2001 },
- { 0x0500, 0x04b7, 0x0fff },
- { 0x0500, 0x04b9, 0x0fff },
- { 0x8900, 0x04bc, 0x2001 },
- { 0x0500, 0x04bb, 0x0fff },
- { 0x0500, 0x04bd, 0x0fff },
- { 0x8500, 0x04c2, 0x3fff },
- { 0x8900, 0x04c0, 0x2000 },
- { 0x0500, 0x04bf, 0x0fff },
- { 0x0900, 0x04c1, 0x0001 },
- { 0x8500, 0x04c4, 0x2fff },
- { 0x0900, 0x04c3, 0x0001 },
- { 0x0900, 0x04c5, 0x0001 },
- { 0x8500, 0x04ce, 0x4fff },
- { 0x8500, 0x04ca, 0x3fff },
- { 0x8500, 0x04c8, 0x2fff },
- { 0x0900, 0x04c7, 0x0001 },
- { 0x0900, 0x04c9, 0x0001 },
- { 0x8500, 0x04cc, 0x2fff },
- { 0x0900, 0x04cb, 0x0001 },
- { 0x0900, 0x04cd, 0x0001 },
- { 0x8500, 0x04d3, 0x3fff },
- { 0x8500, 0x04d1, 0x2fff },
- { 0x0900, 0x04d0, 0x0001 },
- { 0x0900, 0x04d2, 0x0001 },
- { 0x8500, 0x04d5, 0x2fff },
- { 0x0900, 0x04d4, 0x0001 },
- { 0x0900, 0x04d6, 0x0001 },
- { 0x8500, 0x04e7, 0x5fff },
- { 0x8500, 0x04df, 0x4fff },
- { 0x8500, 0x04db, 0x3fff },
- { 0x8500, 0x04d9, 0x2fff },
- { 0x0900, 0x04d8, 0x0001 },
- { 0x0900, 0x04da, 0x0001 },
- { 0x8500, 0x04dd, 0x2fff },
- { 0x0900, 0x04dc, 0x0001 },
- { 0x0900, 0x04de, 0x0001 },
- { 0x8500, 0x04e3, 0x3fff },
- { 0x8500, 0x04e1, 0x2fff },
- { 0x0900, 0x04e0, 0x0001 },
- { 0x0900, 0x04e2, 0x0001 },
- { 0x8500, 0x04e5, 0x2fff },
- { 0x0900, 0x04e4, 0x0001 },
- { 0x0900, 0x04e6, 0x0001 },
- { 0x8500, 0x04ef, 0x4fff },
- { 0x8500, 0x04eb, 0x3fff },
- { 0x8500, 0x04e9, 0x2fff },
- { 0x0900, 0x04e8, 0x0001 },
- { 0x0900, 0x04ea, 0x0001 },
- { 0x8500, 0x04ed, 0x2fff },
- { 0x0900, 0x04ec, 0x0001 },
- { 0x0900, 0x04ee, 0x0001 },
- { 0x8500, 0x04f3, 0x3fff },
- { 0x8500, 0x04f1, 0x2fff },
- { 0x0900, 0x04f0, 0x0001 },
- { 0x0900, 0x04f2, 0x0001 },
- { 0x8500, 0x04f5, 0x2fff },
- { 0x0900, 0x04f4, 0x0001 },
- { 0x0900, 0x04f8, 0x0001 },
- { 0x8900, 0x0540, 0x6030 },
- { 0x8500, 0x050f, 0x5fff },
- { 0x8500, 0x0507, 0x4fff },
- { 0x8500, 0x0503, 0x3fff },
- { 0x8500, 0x0501, 0x2fff },
- { 0x0900, 0x0500, 0x0001 },
- { 0x0900, 0x0502, 0x0001 },
- { 0x8500, 0x0505, 0x2fff },
- { 0x0900, 0x0504, 0x0001 },
- { 0x0900, 0x0506, 0x0001 },
- { 0x8500, 0x050b, 0x3fff },
- { 0x8500, 0x0509, 0x2fff },
- { 0x0900, 0x0508, 0x0001 },
- { 0x0900, 0x050a, 0x0001 },
- { 0x8500, 0x050d, 0x2fff },
- { 0x0900, 0x050c, 0x0001 },
- { 0x0900, 0x050e, 0x0001 },
- { 0x8900, 0x0538, 0x4030 },
- { 0x8900, 0x0534, 0x3030 },
- { 0x8900, 0x0532, 0x2030 },
- { 0x0900, 0x0531, 0x0030 },
- { 0x0900, 0x0533, 0x0030 },
- { 0x8900, 0x0536, 0x2030 },
- { 0x0900, 0x0535, 0x0030 },
- { 0x0900, 0x0537, 0x0030 },
- { 0x8900, 0x053c, 0x3030 },
- { 0x8900, 0x053a, 0x2030 },
- { 0x0900, 0x0539, 0x0030 },
- { 0x0900, 0x053b, 0x0030 },
- { 0x8900, 0x053e, 0x2030 },
- { 0x0900, 0x053d, 0x0030 },
- { 0x0900, 0x053f, 0x0030 },
- { 0x8900, 0x0550, 0x5030 },
- { 0x8900, 0x0548, 0x4030 },
- { 0x8900, 0x0544, 0x3030 },
- { 0x8900, 0x0542, 0x2030 },
- { 0x0900, 0x0541, 0x0030 },
- { 0x0900, 0x0543, 0x0030 },
- { 0x8900, 0x0546, 0x2030 },
- { 0x0900, 0x0545, 0x0030 },
- { 0x0900, 0x0547, 0x0030 },
- { 0x8900, 0x054c, 0x3030 },
- { 0x8900, 0x054a, 0x2030 },
- { 0x0900, 0x0549, 0x0030 },
- { 0x0900, 0x054b, 0x0030 },
- { 0x8900, 0x054e, 0x2030 },
- { 0x0900, 0x054d, 0x0030 },
- { 0x0900, 0x054f, 0x0030 },
- { 0x9500, 0x055a, 0x4000 },
- { 0x8900, 0x0554, 0x3030 },
- { 0x8900, 0x0552, 0x2030 },
- { 0x0900, 0x0551, 0x0030 },
- { 0x0900, 0x0553, 0x0030 },
- { 0x8900, 0x0556, 0x2030 },
- { 0x0900, 0x0555, 0x0030 },
- { 0x0600, 0x0559, 0x0000 },
- { 0x9500, 0x055e, 0x3000 },
- { 0x9500, 0x055c, 0x2000 },
- { 0x1500, 0x055b, 0x0000 },
- { 0x1500, 0x055d, 0x0000 },
- { 0x8500, 0x0561, 0x2fd0 },
- { 0x1500, 0x055f, 0x0000 },
- { 0x0500, 0x0562, 0x0fd0 },
- { 0x9a00, 0x060f, 0x8000 },
- { 0x8c00, 0x05ab, 0x7000 },
- { 0x8500, 0x0583, 0x6fd0 },
- { 0x8500, 0x0573, 0x5fd0 },
- { 0x8500, 0x056b, 0x4fd0 },
- { 0x8500, 0x0567, 0x3fd0 },
- { 0x8500, 0x0565, 0x2fd0 },
- { 0x0500, 0x0564, 0x0fd0 },
- { 0x0500, 0x0566, 0x0fd0 },
- { 0x8500, 0x0569, 0x2fd0 },
- { 0x0500, 0x0568, 0x0fd0 },
- { 0x0500, 0x056a, 0x0fd0 },
- { 0x8500, 0x056f, 0x3fd0 },
- { 0x8500, 0x056d, 0x2fd0 },
- { 0x0500, 0x056c, 0x0fd0 },
- { 0x0500, 0x056e, 0x0fd0 },
- { 0x8500, 0x0571, 0x2fd0 },
- { 0x0500, 0x0570, 0x0fd0 },
- { 0x0500, 0x0572, 0x0fd0 },
- { 0x8500, 0x057b, 0x4fd0 },
- { 0x8500, 0x0577, 0x3fd0 },
- { 0x8500, 0x0575, 0x2fd0 },
- { 0x0500, 0x0574, 0x0fd0 },
- { 0x0500, 0x0576, 0x0fd0 },
- { 0x8500, 0x0579, 0x2fd0 },
- { 0x0500, 0x0578, 0x0fd0 },
- { 0x0500, 0x057a, 0x0fd0 },
- { 0x8500, 0x057f, 0x3fd0 },
- { 0x8500, 0x057d, 0x2fd0 },
- { 0x0500, 0x057c, 0x0fd0 },
- { 0x0500, 0x057e, 0x0fd0 },
- { 0x8500, 0x0581, 0x2fd0 },
- { 0x0500, 0x0580, 0x0fd0 },
- { 0x0500, 0x0582, 0x0fd0 },
- { 0x8c00, 0x059a, 0x5000 },
- { 0x8c00, 0x0592, 0x4000 },
- { 0x8500, 0x0587, 0x3000 },
- { 0x8500, 0x0585, 0x2fd0 },
- { 0x0500, 0x0584, 0x0fd0 },
- { 0x0500, 0x0586, 0x0fd0 },
- { 0x9100, 0x058a, 0x2000 },
- { 0x1500, 0x0589, 0x0000 },
- { 0x0c00, 0x0591, 0x0000 },
- { 0x8c00, 0x0596, 0x3000 },
- { 0x8c00, 0x0594, 0x2000 },
- { 0x0c00, 0x0593, 0x0000 },
- { 0x0c00, 0x0595, 0x0000 },
- { 0x8c00, 0x0598, 0x2000 },
- { 0x0c00, 0x0597, 0x0000 },
- { 0x0c00, 0x0599, 0x0000 },
- { 0x8c00, 0x05a3, 0x4000 },
- { 0x8c00, 0x059e, 0x3000 },
- { 0x8c00, 0x059c, 0x2000 },
- { 0x0c00, 0x059b, 0x0000 },
- { 0x0c00, 0x059d, 0x0000 },
- { 0x8c00, 0x05a0, 0x2000 },
- { 0x0c00, 0x059f, 0x0000 },
- { 0x0c00, 0x05a1, 0x0000 },
- { 0x8c00, 0x05a7, 0x3000 },
- { 0x8c00, 0x05a5, 0x2000 },
- { 0x0c00, 0x05a4, 0x0000 },
- { 0x0c00, 0x05a6, 0x0000 },
- { 0x8c00, 0x05a9, 0x2000 },
- { 0x0c00, 0x05a8, 0x0000 },
- { 0x0c00, 0x05aa, 0x0000 },
- { 0x8700, 0x05d7, 0x6000 },
- { 0x8c00, 0x05bc, 0x5000 },
- { 0x8c00, 0x05b3, 0x4000 },
- { 0x8c00, 0x05af, 0x3000 },
- { 0x8c00, 0x05ad, 0x2000 },
- { 0x0c00, 0x05ac, 0x0000 },
- { 0x0c00, 0x05ae, 0x0000 },
- { 0x8c00, 0x05b1, 0x2000 },
- { 0x0c00, 0x05b0, 0x0000 },
- { 0x0c00, 0x05b2, 0x0000 },
- { 0x8c00, 0x05b7, 0x3000 },
- { 0x8c00, 0x05b5, 0x2000 },
- { 0x0c00, 0x05b4, 0x0000 },
- { 0x0c00, 0x05b6, 0x0000 },
- { 0x8c00, 0x05b9, 0x2000 },
- { 0x0c00, 0x05b8, 0x0000 },
- { 0x0c00, 0x05bb, 0x0000 },
- { 0x8c00, 0x05c4, 0x4000 },
- { 0x9500, 0x05c0, 0x3000 },
- { 0x9500, 0x05be, 0x2000 },
- { 0x0c00, 0x05bd, 0x0000 },
- { 0x0c00, 0x05bf, 0x0000 },
- { 0x8c00, 0x05c2, 0x2000 },
- { 0x0c00, 0x05c1, 0x0000 },
- { 0x1500, 0x05c3, 0x0000 },
- { 0x8700, 0x05d3, 0x3000 },
- { 0x8700, 0x05d1, 0x2000 },
- { 0x0700, 0x05d0, 0x0000 },
- { 0x0700, 0x05d2, 0x0000 },
- { 0x8700, 0x05d5, 0x2000 },
- { 0x0700, 0x05d4, 0x0000 },
- { 0x0700, 0x05d6, 0x0000 },
- { 0x8700, 0x05e7, 0x5000 },
- { 0x8700, 0x05df, 0x4000 },
- { 0x8700, 0x05db, 0x3000 },
- { 0x8700, 0x05d9, 0x2000 },
- { 0x0700, 0x05d8, 0x0000 },
- { 0x0700, 0x05da, 0x0000 },
- { 0x8700, 0x05dd, 0x2000 },
- { 0x0700, 0x05dc, 0x0000 },
- { 0x0700, 0x05de, 0x0000 },
- { 0x8700, 0x05e3, 0x3000 },
- { 0x8700, 0x05e1, 0x2000 },
- { 0x0700, 0x05e0, 0x0000 },
- { 0x0700, 0x05e2, 0x0000 },
- { 0x8700, 0x05e5, 0x2000 },
- { 0x0700, 0x05e4, 0x0000 },
- { 0x0700, 0x05e6, 0x0000 },
- { 0x9500, 0x05f4, 0x4000 },
- { 0x8700, 0x05f0, 0x3000 },
- { 0x8700, 0x05e9, 0x2000 },
- { 0x0700, 0x05e8, 0x0000 },
- { 0x0700, 0x05ea, 0x0000 },
- { 0x8700, 0x05f2, 0x2000 },
- { 0x0700, 0x05f1, 0x0000 },
- { 0x1500, 0x05f3, 0x0000 },
- { 0x8100, 0x0603, 0x3000 },
- { 0x8100, 0x0601, 0x2000 },
- { 0x0100, 0x0600, 0x0000 },
- { 0x0100, 0x0602, 0x0000 },
- { 0x9500, 0x060d, 0x2000 },
- { 0x1500, 0x060c, 0x0000 },
- { 0x1a00, 0x060e, 0x0000 },
- { 0x8d00, 0x0664, 0x7000 },
- { 0x8700, 0x0638, 0x6000 },
- { 0x8700, 0x0628, 0x5000 },
- { 0x9500, 0x061f, 0x4000 },
- { 0x8c00, 0x0613, 0x3000 },
- { 0x8c00, 0x0611, 0x2000 },
- { 0x0c00, 0x0610, 0x0000 },
- { 0x0c00, 0x0612, 0x0000 },
- { 0x8c00, 0x0615, 0x2000 },
- { 0x0c00, 0x0614, 0x0000 },
- { 0x1500, 0x061b, 0x0000 },
- { 0x8700, 0x0624, 0x3000 },
- { 0x8700, 0x0622, 0x2000 },
- { 0x0700, 0x0621, 0x0000 },
- { 0x0700, 0x0623, 0x0000 },
- { 0x8700, 0x0626, 0x2000 },
- { 0x0700, 0x0625, 0x0000 },
- { 0x0700, 0x0627, 0x0000 },
- { 0x8700, 0x0630, 0x4000 },
- { 0x8700, 0x062c, 0x3000 },
- { 0x8700, 0x062a, 0x2000 },
- { 0x0700, 0x0629, 0x0000 },
- { 0x0700, 0x062b, 0x0000 },
- { 0x8700, 0x062e, 0x2000 },
- { 0x0700, 0x062d, 0x0000 },
- { 0x0700, 0x062f, 0x0000 },
- { 0x8700, 0x0634, 0x3000 },
- { 0x8700, 0x0632, 0x2000 },
- { 0x0700, 0x0631, 0x0000 },
- { 0x0700, 0x0633, 0x0000 },
- { 0x8700, 0x0636, 0x2000 },
- { 0x0700, 0x0635, 0x0000 },
- { 0x0700, 0x0637, 0x0000 },
- { 0x8c00, 0x064d, 0x5000 },
- { 0x8700, 0x0645, 0x4000 },
- { 0x8700, 0x0641, 0x3000 },
- { 0x8700, 0x063a, 0x2000 },
- { 0x0700, 0x0639, 0x0000 },
- { 0x0600, 0x0640, 0x0000 },
- { 0x8700, 0x0643, 0x2000 },
- { 0x0700, 0x0642, 0x0000 },
- { 0x0700, 0x0644, 0x0000 },
- { 0x8700, 0x0649, 0x3000 },
- { 0x8700, 0x0647, 0x2000 },
- { 0x0700, 0x0646, 0x0000 },
- { 0x0700, 0x0648, 0x0000 },
- { 0x8c00, 0x064b, 0x2000 },
- { 0x0700, 0x064a, 0x0000 },
- { 0x0c00, 0x064c, 0x0000 },
- { 0x8c00, 0x0655, 0x4000 },
- { 0x8c00, 0x0651, 0x3000 },
- { 0x8c00, 0x064f, 0x2000 },
- { 0x0c00, 0x064e, 0x0000 },
- { 0x0c00, 0x0650, 0x0000 },
- { 0x8c00, 0x0653, 0x2000 },
- { 0x0c00, 0x0652, 0x0000 },
- { 0x0c00, 0x0654, 0x0000 },
- { 0x8d00, 0x0660, 0x3000 },
- { 0x8c00, 0x0657, 0x2000 },
- { 0x0c00, 0x0656, 0x0000 },
- { 0x0c00, 0x0658, 0x0000 },
- { 0x8d00, 0x0662, 0x2000 },
- { 0x0d00, 0x0661, 0x0000 },
- { 0x0d00, 0x0663, 0x0000 },
- { 0x8700, 0x0684, 0x6000 },
- { 0x8700, 0x0674, 0x5000 },
- { 0x9500, 0x066c, 0x4000 },
- { 0x8d00, 0x0668, 0x3000 },
- { 0x8d00, 0x0666, 0x2000 },
- { 0x0d00, 0x0665, 0x0000 },
- { 0x0d00, 0x0667, 0x0000 },
- { 0x9500, 0x066a, 0x2000 },
- { 0x0d00, 0x0669, 0x0000 },
- { 0x1500, 0x066b, 0x0000 },
- { 0x8c00, 0x0670, 0x3000 },
- { 0x8700, 0x066e, 0x2000 },
- { 0x1500, 0x066d, 0x0000 },
- { 0x0700, 0x066f, 0x0000 },
- { 0x8700, 0x0672, 0x2000 },
- { 0x0700, 0x0671, 0x0000 },
- { 0x0700, 0x0673, 0x0000 },
- { 0x8700, 0x067c, 0x4000 },
- { 0x8700, 0x0678, 0x3000 },
- { 0x8700, 0x0676, 0x2000 },
- { 0x0700, 0x0675, 0x0000 },
- { 0x0700, 0x0677, 0x0000 },
- { 0x8700, 0x067a, 0x2000 },
- { 0x0700, 0x0679, 0x0000 },
- { 0x0700, 0x067b, 0x0000 },
- { 0x8700, 0x0680, 0x3000 },
- { 0x8700, 0x067e, 0x2000 },
- { 0x0700, 0x067d, 0x0000 },
- { 0x0700, 0x067f, 0x0000 },
- { 0x8700, 0x0682, 0x2000 },
- { 0x0700, 0x0681, 0x0000 },
- { 0x0700, 0x0683, 0x0000 },
- { 0x8700, 0x0694, 0x5000 },
- { 0x8700, 0x068c, 0x4000 },
- { 0x8700, 0x0688, 0x3000 },
- { 0x8700, 0x0686, 0x2000 },
- { 0x0700, 0x0685, 0x0000 },
- { 0x0700, 0x0687, 0x0000 },
- { 0x8700, 0x068a, 0x2000 },
- { 0x0700, 0x0689, 0x0000 },
- { 0x0700, 0x068b, 0x0000 },
- { 0x8700, 0x0690, 0x3000 },
- { 0x8700, 0x068e, 0x2000 },
- { 0x0700, 0x068d, 0x0000 },
- { 0x0700, 0x068f, 0x0000 },
- { 0x8700, 0x0692, 0x2000 },
- { 0x0700, 0x0691, 0x0000 },
- { 0x0700, 0x0693, 0x0000 },
- { 0x8700, 0x069c, 0x4000 },
- { 0x8700, 0x0698, 0x3000 },
- { 0x8700, 0x0696, 0x2000 },
- { 0x0700, 0x0695, 0x0000 },
- { 0x0700, 0x0697, 0x0000 },
- { 0x8700, 0x069a, 0x2000 },
- { 0x0700, 0x0699, 0x0000 },
- { 0x0700, 0x069b, 0x0000 },
- { 0x8700, 0x06a0, 0x3000 },
- { 0x8700, 0x069e, 0x2000 },
- { 0x0700, 0x069d, 0x0000 },
- { 0x0700, 0x069f, 0x0000 },
- { 0x8700, 0x06a2, 0x2000 },
- { 0x0700, 0x06a1, 0x0000 },
- { 0x0700, 0x06a3, 0x0000 },
- { 0x8700, 0x0926, 0x9000 },
- { 0x8700, 0x0725, 0x8000 },
- { 0x8c00, 0x06e4, 0x7000 },
- { 0x8700, 0x06c4, 0x6000 },
- { 0x8700, 0x06b4, 0x5000 },
- { 0x8700, 0x06ac, 0x4000 },
- { 0x8700, 0x06a8, 0x3000 },
- { 0x8700, 0x06a6, 0x2000 },
- { 0x0700, 0x06a5, 0x0000 },
- { 0x0700, 0x06a7, 0x0000 },
- { 0x8700, 0x06aa, 0x2000 },
- { 0x0700, 0x06a9, 0x0000 },
- { 0x0700, 0x06ab, 0x0000 },
- { 0x8700, 0x06b0, 0x3000 },
- { 0x8700, 0x06ae, 0x2000 },
- { 0x0700, 0x06ad, 0x0000 },
- { 0x0700, 0x06af, 0x0000 },
- { 0x8700, 0x06b2, 0x2000 },
- { 0x0700, 0x06b1, 0x0000 },
- { 0x0700, 0x06b3, 0x0000 },
- { 0x8700, 0x06bc, 0x4000 },
- { 0x8700, 0x06b8, 0x3000 },
- { 0x8700, 0x06b6, 0x2000 },
- { 0x0700, 0x06b5, 0x0000 },
- { 0x0700, 0x06b7, 0x0000 },
- { 0x8700, 0x06ba, 0x2000 },
- { 0x0700, 0x06b9, 0x0000 },
- { 0x0700, 0x06bb, 0x0000 },
- { 0x8700, 0x06c0, 0x3000 },
- { 0x8700, 0x06be, 0x2000 },
- { 0x0700, 0x06bd, 0x0000 },
- { 0x0700, 0x06bf, 0x0000 },
- { 0x8700, 0x06c2, 0x2000 },
- { 0x0700, 0x06c1, 0x0000 },
- { 0x0700, 0x06c3, 0x0000 },
- { 0x9500, 0x06d4, 0x5000 },
- { 0x8700, 0x06cc, 0x4000 },
- { 0x8700, 0x06c8, 0x3000 },
- { 0x8700, 0x06c6, 0x2000 },
- { 0x0700, 0x06c5, 0x0000 },
- { 0x0700, 0x06c7, 0x0000 },
- { 0x8700, 0x06ca, 0x2000 },
- { 0x0700, 0x06c9, 0x0000 },
- { 0x0700, 0x06cb, 0x0000 },
- { 0x8700, 0x06d0, 0x3000 },
- { 0x8700, 0x06ce, 0x2000 },
- { 0x0700, 0x06cd, 0x0000 },
- { 0x0700, 0x06cf, 0x0000 },
- { 0x8700, 0x06d2, 0x2000 },
- { 0x0700, 0x06d1, 0x0000 },
- { 0x0700, 0x06d3, 0x0000 },
- { 0x8c00, 0x06dc, 0x4000 },
- { 0x8c00, 0x06d8, 0x3000 },
- { 0x8c00, 0x06d6, 0x2000 },
- { 0x0700, 0x06d5, 0x0000 },
- { 0x0c00, 0x06d7, 0x0000 },
- { 0x8c00, 0x06da, 0x2000 },
- { 0x0c00, 0x06d9, 0x0000 },
- { 0x0c00, 0x06db, 0x0000 },
- { 0x8c00, 0x06e0, 0x3000 },
- { 0x8b00, 0x06de, 0x2000 },
- { 0x0100, 0x06dd, 0x0000 },
- { 0x0c00, 0x06df, 0x0000 },
- { 0x8c00, 0x06e2, 0x2000 },
- { 0x0c00, 0x06e1, 0x0000 },
- { 0x0c00, 0x06e3, 0x0000 },
- { 0x9500, 0x0704, 0x6000 },
- { 0x8d00, 0x06f4, 0x5000 },
- { 0x8c00, 0x06ec, 0x4000 },
- { 0x8c00, 0x06e8, 0x3000 },
- { 0x8600, 0x06e6, 0x2000 },
- { 0x0600, 0x06e5, 0x0000 },
- { 0x0c00, 0x06e7, 0x0000 },
- { 0x8c00, 0x06ea, 0x2000 },
- { 0x1a00, 0x06e9, 0x0000 },
- { 0x0c00, 0x06eb, 0x0000 },
- { 0x8d00, 0x06f0, 0x3000 },
- { 0x8700, 0x06ee, 0x2000 },
- { 0x0c00, 0x06ed, 0x0000 },
- { 0x0700, 0x06ef, 0x0000 },
- { 0x8d00, 0x06f2, 0x2000 },
- { 0x0d00, 0x06f1, 0x0000 },
- { 0x0d00, 0x06f3, 0x0000 },
- { 0x8700, 0x06fc, 0x4000 },
- { 0x8d00, 0x06f8, 0x3000 },
- { 0x8d00, 0x06f6, 0x2000 },
- { 0x0d00, 0x06f5, 0x0000 },
- { 0x0d00, 0x06f7, 0x0000 },
- { 0x8700, 0x06fa, 0x2000 },
- { 0x0d00, 0x06f9, 0x0000 },
- { 0x0700, 0x06fb, 0x0000 },
- { 0x9500, 0x0700, 0x3000 },
- { 0x9a00, 0x06fe, 0x2000 },
- { 0x1a00, 0x06fd, 0x0000 },
- { 0x0700, 0x06ff, 0x0000 },
- { 0x9500, 0x0702, 0x2000 },
- { 0x1500, 0x0701, 0x0000 },
- { 0x1500, 0x0703, 0x0000 },
- { 0x8700, 0x0715, 0x5000 },
- { 0x9500, 0x070c, 0x4000 },
- { 0x9500, 0x0708, 0x3000 },
- { 0x9500, 0x0706, 0x2000 },
- { 0x1500, 0x0705, 0x0000 },
- { 0x1500, 0x0707, 0x0000 },
- { 0x9500, 0x070a, 0x2000 },
- { 0x1500, 0x0709, 0x0000 },
- { 0x1500, 0x070b, 0x0000 },
- { 0x8c00, 0x0711, 0x3000 },
- { 0x8100, 0x070f, 0x2000 },
- { 0x1500, 0x070d, 0x0000 },
- { 0x0700, 0x0710, 0x0000 },
- { 0x8700, 0x0713, 0x2000 },
- { 0x0700, 0x0712, 0x0000 },
- { 0x0700, 0x0714, 0x0000 },
- { 0x8700, 0x071d, 0x4000 },
- { 0x8700, 0x0719, 0x3000 },
- { 0x8700, 0x0717, 0x2000 },
- { 0x0700, 0x0716, 0x0000 },
- { 0x0700, 0x0718, 0x0000 },
- { 0x8700, 0x071b, 0x2000 },
- { 0x0700, 0x071a, 0x0000 },
- { 0x0700, 0x071c, 0x0000 },
- { 0x8700, 0x0721, 0x3000 },
- { 0x8700, 0x071f, 0x2000 },
- { 0x0700, 0x071e, 0x0000 },
- { 0x0700, 0x0720, 0x0000 },
- { 0x8700, 0x0723, 0x2000 },
- { 0x0700, 0x0722, 0x0000 },
- { 0x0700, 0x0724, 0x0000 },
- { 0x8700, 0x0797, 0x7000 },
- { 0x8c00, 0x0745, 0x6000 },
- { 0x8c00, 0x0735, 0x5000 },
- { 0x8700, 0x072d, 0x4000 },
- { 0x8700, 0x0729, 0x3000 },
- { 0x8700, 0x0727, 0x2000 },
- { 0x0700, 0x0726, 0x0000 },
- { 0x0700, 0x0728, 0x0000 },
- { 0x8700, 0x072b, 0x2000 },
- { 0x0700, 0x072a, 0x0000 },
- { 0x0700, 0x072c, 0x0000 },
- { 0x8c00, 0x0731, 0x3000 },
- { 0x8700, 0x072f, 0x2000 },
- { 0x0700, 0x072e, 0x0000 },
- { 0x0c00, 0x0730, 0x0000 },
- { 0x8c00, 0x0733, 0x2000 },
- { 0x0c00, 0x0732, 0x0000 },
- { 0x0c00, 0x0734, 0x0000 },
- { 0x8c00, 0x073d, 0x4000 },
- { 0x8c00, 0x0739, 0x3000 },
- { 0x8c00, 0x0737, 0x2000 },
- { 0x0c00, 0x0736, 0x0000 },
- { 0x0c00, 0x0738, 0x0000 },
- { 0x8c00, 0x073b, 0x2000 },
- { 0x0c00, 0x073a, 0x0000 },
- { 0x0c00, 0x073c, 0x0000 },
- { 0x8c00, 0x0741, 0x3000 },
- { 0x8c00, 0x073f, 0x2000 },
- { 0x0c00, 0x073e, 0x0000 },
- { 0x0c00, 0x0740, 0x0000 },
- { 0x8c00, 0x0743, 0x2000 },
- { 0x0c00, 0x0742, 0x0000 },
- { 0x0c00, 0x0744, 0x0000 },
- { 0x8700, 0x0787, 0x5000 },
- { 0x8700, 0x074f, 0x4000 },
- { 0x8c00, 0x0749, 0x3000 },
- { 0x8c00, 0x0747, 0x2000 },
- { 0x0c00, 0x0746, 0x0000 },
- { 0x0c00, 0x0748, 0x0000 },
- { 0x8700, 0x074d, 0x2000 },
- { 0x0c00, 0x074a, 0x0000 },
- { 0x0700, 0x074e, 0x0000 },
- { 0x8700, 0x0783, 0x3000 },
- { 0x8700, 0x0781, 0x2000 },
- { 0x0700, 0x0780, 0x0000 },
- { 0x0700, 0x0782, 0x0000 },
- { 0x8700, 0x0785, 0x2000 },
- { 0x0700, 0x0784, 0x0000 },
- { 0x0700, 0x0786, 0x0000 },
- { 0x8700, 0x078f, 0x4000 },
- { 0x8700, 0x078b, 0x3000 },
- { 0x8700, 0x0789, 0x2000 },
- { 0x0700, 0x0788, 0x0000 },
- { 0x0700, 0x078a, 0x0000 },
- { 0x8700, 0x078d, 0x2000 },
- { 0x0700, 0x078c, 0x0000 },
- { 0x0700, 0x078e, 0x0000 },
- { 0x8700, 0x0793, 0x3000 },
- { 0x8700, 0x0791, 0x2000 },
- { 0x0700, 0x0790, 0x0000 },
- { 0x0700, 0x0792, 0x0000 },
- { 0x8700, 0x0795, 0x2000 },
- { 0x0700, 0x0794, 0x0000 },
- { 0x0700, 0x0796, 0x0000 },
- { 0x8700, 0x0906, 0x6000 },
- { 0x8c00, 0x07a7, 0x5000 },
- { 0x8700, 0x079f, 0x4000 },
- { 0x8700, 0x079b, 0x3000 },
- { 0x8700, 0x0799, 0x2000 },
- { 0x0700, 0x0798, 0x0000 },
- { 0x0700, 0x079a, 0x0000 },
- { 0x8700, 0x079d, 0x2000 },
- { 0x0700, 0x079c, 0x0000 },
- { 0x0700, 0x079e, 0x0000 },
- { 0x8700, 0x07a3, 0x3000 },
- { 0x8700, 0x07a1, 0x2000 },
- { 0x0700, 0x07a0, 0x0000 },
- { 0x0700, 0x07a2, 0x0000 },
- { 0x8700, 0x07a5, 0x2000 },
- { 0x0700, 0x07a4, 0x0000 },
- { 0x0c00, 0x07a6, 0x0000 },
- { 0x8c00, 0x07af, 0x4000 },
- { 0x8c00, 0x07ab, 0x3000 },
- { 0x8c00, 0x07a9, 0x2000 },
- { 0x0c00, 0x07a8, 0x0000 },
- { 0x0c00, 0x07aa, 0x0000 },
- { 0x8c00, 0x07ad, 0x2000 },
- { 0x0c00, 0x07ac, 0x0000 },
- { 0x0c00, 0x07ae, 0x0000 },
- { 0x8c00, 0x0902, 0x3000 },
- { 0x8700, 0x07b1, 0x2000 },
- { 0x0c00, 0x07b0, 0x0000 },
- { 0x0c00, 0x0901, 0x0000 },
- { 0x8700, 0x0904, 0x2000 },
- { 0x0a00, 0x0903, 0x0000 },
- { 0x0700, 0x0905, 0x0000 },
- { 0x8700, 0x0916, 0x5000 },
- { 0x8700, 0x090e, 0x4000 },
- { 0x8700, 0x090a, 0x3000 },
- { 0x8700, 0x0908, 0x2000 },
- { 0x0700, 0x0907, 0x0000 },
- { 0x0700, 0x0909, 0x0000 },
- { 0x8700, 0x090c, 0x2000 },
- { 0x0700, 0x090b, 0x0000 },
- { 0x0700, 0x090d, 0x0000 },
- { 0x8700, 0x0912, 0x3000 },
- { 0x8700, 0x0910, 0x2000 },
- { 0x0700, 0x090f, 0x0000 },
- { 0x0700, 0x0911, 0x0000 },
- { 0x8700, 0x0914, 0x2000 },
- { 0x0700, 0x0913, 0x0000 },
- { 0x0700, 0x0915, 0x0000 },
- { 0x8700, 0x091e, 0x4000 },
- { 0x8700, 0x091a, 0x3000 },
- { 0x8700, 0x0918, 0x2000 },
- { 0x0700, 0x0917, 0x0000 },
- { 0x0700, 0x0919, 0x0000 },
- { 0x8700, 0x091c, 0x2000 },
- { 0x0700, 0x091b, 0x0000 },
- { 0x0700, 0x091d, 0x0000 },
- { 0x8700, 0x0922, 0x3000 },
- { 0x8700, 0x0920, 0x2000 },
- { 0x0700, 0x091f, 0x0000 },
- { 0x0700, 0x0921, 0x0000 },
- { 0x8700, 0x0924, 0x2000 },
- { 0x0700, 0x0923, 0x0000 },
- { 0x0700, 0x0925, 0x0000 },
- { 0x8c00, 0x09cd, 0x8000 },
- { 0x8d00, 0x096d, 0x7000 },
- { 0x8c00, 0x0948, 0x6000 },
- { 0x8700, 0x0936, 0x5000 },
- { 0x8700, 0x092e, 0x4000 },
- { 0x8700, 0x092a, 0x3000 },
- { 0x8700, 0x0928, 0x2000 },
- { 0x0700, 0x0927, 0x0000 },
- { 0x0700, 0x0929, 0x0000 },
- { 0x8700, 0x092c, 0x2000 },
- { 0x0700, 0x092b, 0x0000 },
- { 0x0700, 0x092d, 0x0000 },
- { 0x8700, 0x0932, 0x3000 },
- { 0x8700, 0x0930, 0x2000 },
- { 0x0700, 0x092f, 0x0000 },
- { 0x0700, 0x0931, 0x0000 },
- { 0x8700, 0x0934, 0x2000 },
- { 0x0700, 0x0933, 0x0000 },
- { 0x0700, 0x0935, 0x0000 },
- { 0x8a00, 0x0940, 0x4000 },
- { 0x8c00, 0x093c, 0x3000 },
- { 0x8700, 0x0938, 0x2000 },
- { 0x0700, 0x0937, 0x0000 },
- { 0x0700, 0x0939, 0x0000 },
- { 0x8a00, 0x093e, 0x2000 },
- { 0x0700, 0x093d, 0x0000 },
- { 0x0a00, 0x093f, 0x0000 },
- { 0x8c00, 0x0944, 0x3000 },
- { 0x8c00, 0x0942, 0x2000 },
- { 0x0c00, 0x0941, 0x0000 },
- { 0x0c00, 0x0943, 0x0000 },
- { 0x8c00, 0x0946, 0x2000 },
- { 0x0c00, 0x0945, 0x0000 },
- { 0x0c00, 0x0947, 0x0000 },
- { 0x8700, 0x095d, 0x5000 },
- { 0x8c00, 0x0952, 0x4000 },
- { 0x8a00, 0x094c, 0x3000 },
- { 0x8a00, 0x094a, 0x2000 },
- { 0x0a00, 0x0949, 0x0000 },
- { 0x0a00, 0x094b, 0x0000 },
- { 0x8700, 0x0950, 0x2000 },
- { 0x0c00, 0x094d, 0x0000 },
- { 0x0c00, 0x0951, 0x0000 },
- { 0x8700, 0x0959, 0x3000 },
- { 0x8c00, 0x0954, 0x2000 },
- { 0x0c00, 0x0953, 0x0000 },
- { 0x0700, 0x0958, 0x0000 },
- { 0x8700, 0x095b, 0x2000 },
- { 0x0700, 0x095a, 0x0000 },
- { 0x0700, 0x095c, 0x0000 },
- { 0x9500, 0x0965, 0x4000 },
- { 0x8700, 0x0961, 0x3000 },
- { 0x8700, 0x095f, 0x2000 },
- { 0x0700, 0x095e, 0x0000 },
- { 0x0700, 0x0960, 0x0000 },
- { 0x8c00, 0x0963, 0x2000 },
- { 0x0c00, 0x0962, 0x0000 },
- { 0x1500, 0x0964, 0x0000 },
- { 0x8d00, 0x0969, 0x3000 },
- { 0x8d00, 0x0967, 0x2000 },
- { 0x0d00, 0x0966, 0x0000 },
- { 0x0d00, 0x0968, 0x0000 },
- { 0x8d00, 0x096b, 0x2000 },
- { 0x0d00, 0x096a, 0x0000 },
- { 0x0d00, 0x096c, 0x0000 },
- { 0x8700, 0x09a2, 0x6000 },
- { 0x8700, 0x0990, 0x5000 },
- { 0x8700, 0x0986, 0x4000 },
- { 0x8c00, 0x0981, 0x3000 },
- { 0x8d00, 0x096f, 0x2000 },
- { 0x0d00, 0x096e, 0x0000 },
- { 0x1500, 0x0970, 0x0000 },
- { 0x8a00, 0x0983, 0x2000 },
- { 0x0a00, 0x0982, 0x0000 },
- { 0x0700, 0x0985, 0x0000 },
- { 0x8700, 0x098a, 0x3000 },
- { 0x8700, 0x0988, 0x2000 },
- { 0x0700, 0x0987, 0x0000 },
- { 0x0700, 0x0989, 0x0000 },
- { 0x8700, 0x098c, 0x2000 },
- { 0x0700, 0x098b, 0x0000 },
- { 0x0700, 0x098f, 0x0000 },
- { 0x8700, 0x099a, 0x4000 },
- { 0x8700, 0x0996, 0x3000 },
- { 0x8700, 0x0994, 0x2000 },
- { 0x0700, 0x0993, 0x0000 },
- { 0x0700, 0x0995, 0x0000 },
- { 0x8700, 0x0998, 0x2000 },
- { 0x0700, 0x0997, 0x0000 },
- { 0x0700, 0x0999, 0x0000 },
- { 0x8700, 0x099e, 0x3000 },
- { 0x8700, 0x099c, 0x2000 },
- { 0x0700, 0x099b, 0x0000 },
- { 0x0700, 0x099d, 0x0000 },
- { 0x8700, 0x09a0, 0x2000 },
- { 0x0700, 0x099f, 0x0000 },
- { 0x0700, 0x09a1, 0x0000 },
- { 0x8700, 0x09b7, 0x5000 },
- { 0x8700, 0x09ab, 0x4000 },
- { 0x8700, 0x09a6, 0x3000 },
- { 0x8700, 0x09a4, 0x2000 },
- { 0x0700, 0x09a3, 0x0000 },
- { 0x0700, 0x09a5, 0x0000 },
- { 0x8700, 0x09a8, 0x2000 },
- { 0x0700, 0x09a7, 0x0000 },
- { 0x0700, 0x09aa, 0x0000 },
- { 0x8700, 0x09af, 0x3000 },
- { 0x8700, 0x09ad, 0x2000 },
- { 0x0700, 0x09ac, 0x0000 },
- { 0x0700, 0x09ae, 0x0000 },
- { 0x8700, 0x09b2, 0x2000 },
- { 0x0700, 0x09b0, 0x0000 },
- { 0x0700, 0x09b6, 0x0000 },
- { 0x8c00, 0x09c1, 0x4000 },
- { 0x8700, 0x09bd, 0x3000 },
- { 0x8700, 0x09b9, 0x2000 },
- { 0x0700, 0x09b8, 0x0000 },
- { 0x0c00, 0x09bc, 0x0000 },
- { 0x8a00, 0x09bf, 0x2000 },
- { 0x0a00, 0x09be, 0x0000 },
- { 0x0a00, 0x09c0, 0x0000 },
- { 0x8a00, 0x09c7, 0x3000 },
- { 0x8c00, 0x09c3, 0x2000 },
- { 0x0c00, 0x09c2, 0x0000 },
- { 0x0c00, 0x09c4, 0x0000 },
- { 0x8a00, 0x09cb, 0x2000 },
- { 0x0a00, 0x09c8, 0x0000 },
- { 0x0a00, 0x09cc, 0x0000 },
- { 0x8700, 0x0a2b, 0x7000 },
- { 0x8a00, 0x0a03, 0x6000 },
- { 0x8d00, 0x09ed, 0x5000 },
- { 0x8c00, 0x09e3, 0x4000 },
- { 0x8700, 0x09df, 0x3000 },
- { 0x8700, 0x09dc, 0x2000 },
- { 0x0a00, 0x09d7, 0x0000 },
- { 0x0700, 0x09dd, 0x0000 },
- { 0x8700, 0x09e1, 0x2000 },
- { 0x0700, 0x09e0, 0x0000 },
- { 0x0c00, 0x09e2, 0x0000 },
- { 0x8d00, 0x09e9, 0x3000 },
- { 0x8d00, 0x09e7, 0x2000 },
- { 0x0d00, 0x09e6, 0x0000 },
- { 0x0d00, 0x09e8, 0x0000 },
- { 0x8d00, 0x09eb, 0x2000 },
- { 0x0d00, 0x09ea, 0x0000 },
- { 0x0d00, 0x09ec, 0x0000 },
- { 0x8f00, 0x09f5, 0x4000 },
- { 0x8700, 0x09f1, 0x3000 },
- { 0x8d00, 0x09ef, 0x2000 },
- { 0x0d00, 0x09ee, 0x0000 },
- { 0x0700, 0x09f0, 0x0000 },
- { 0x9700, 0x09f3, 0x2000 },
- { 0x1700, 0x09f2, 0x0000 },
- { 0x0f00, 0x09f4, 0x0000 },
- { 0x8f00, 0x09f9, 0x3000 },
- { 0x8f00, 0x09f7, 0x2000 },
- { 0x0f00, 0x09f6, 0x0000 },
- { 0x0f00, 0x09f8, 0x0000 },
- { 0x8c00, 0x0a01, 0x2000 },
- { 0x1a00, 0x09fa, 0x0000 },
- { 0x0c00, 0x0a02, 0x0000 },
- { 0x8700, 0x0a1a, 0x5000 },
- { 0x8700, 0x0a10, 0x4000 },
- { 0x8700, 0x0a08, 0x3000 },
- { 0x8700, 0x0a06, 0x2000 },
- { 0x0700, 0x0a05, 0x0000 },
- { 0x0700, 0x0a07, 0x0000 },
- { 0x8700, 0x0a0a, 0x2000 },
- { 0x0700, 0x0a09, 0x0000 },
- { 0x0700, 0x0a0f, 0x0000 },
- { 0x8700, 0x0a16, 0x3000 },
- { 0x8700, 0x0a14, 0x2000 },
- { 0x0700, 0x0a13, 0x0000 },
- { 0x0700, 0x0a15, 0x0000 },
- { 0x8700, 0x0a18, 0x2000 },
- { 0x0700, 0x0a17, 0x0000 },
- { 0x0700, 0x0a19, 0x0000 },
- { 0x8700, 0x0a22, 0x4000 },
- { 0x8700, 0x0a1e, 0x3000 },
- { 0x8700, 0x0a1c, 0x2000 },
- { 0x0700, 0x0a1b, 0x0000 },
- { 0x0700, 0x0a1d, 0x0000 },
- { 0x8700, 0x0a20, 0x2000 },
- { 0x0700, 0x0a1f, 0x0000 },
- { 0x0700, 0x0a21, 0x0000 },
- { 0x8700, 0x0a26, 0x3000 },
- { 0x8700, 0x0a24, 0x2000 },
- { 0x0700, 0x0a23, 0x0000 },
- { 0x0700, 0x0a25, 0x0000 },
- { 0x8700, 0x0a28, 0x2000 },
- { 0x0700, 0x0a27, 0x0000 },
- { 0x0700, 0x0a2a, 0x0000 },
- { 0x8d00, 0x0a6a, 0x6000 },
- { 0x8c00, 0x0a41, 0x5000 },
- { 0x8700, 0x0a35, 0x4000 },
- { 0x8700, 0x0a2f, 0x3000 },
- { 0x8700, 0x0a2d, 0x2000 },
- { 0x0700, 0x0a2c, 0x0000 },
- { 0x0700, 0x0a2e, 0x0000 },
- { 0x8700, 0x0a32, 0x2000 },
- { 0x0700, 0x0a30, 0x0000 },
- { 0x0700, 0x0a33, 0x0000 },
- { 0x8c00, 0x0a3c, 0x3000 },
- { 0x8700, 0x0a38, 0x2000 },
- { 0x0700, 0x0a36, 0x0000 },
- { 0x0700, 0x0a39, 0x0000 },
- { 0x8a00, 0x0a3f, 0x2000 },
- { 0x0a00, 0x0a3e, 0x0000 },
- { 0x0a00, 0x0a40, 0x0000 },
- { 0x8700, 0x0a5a, 0x4000 },
- { 0x8c00, 0x0a4b, 0x3000 },
- { 0x8c00, 0x0a47, 0x2000 },
- { 0x0c00, 0x0a42, 0x0000 },
- { 0x0c00, 0x0a48, 0x0000 },
- { 0x8c00, 0x0a4d, 0x2000 },
- { 0x0c00, 0x0a4c, 0x0000 },
- { 0x0700, 0x0a59, 0x0000 },
- { 0x8d00, 0x0a66, 0x3000 },
- { 0x8700, 0x0a5c, 0x2000 },
- { 0x0700, 0x0a5b, 0x0000 },
- { 0x0700, 0x0a5e, 0x0000 },
- { 0x8d00, 0x0a68, 0x2000 },
- { 0x0d00, 0x0a67, 0x0000 },
- { 0x0d00, 0x0a69, 0x0000 },
- { 0x8700, 0x0a87, 0x5000 },
- { 0x8700, 0x0a72, 0x4000 },
- { 0x8d00, 0x0a6e, 0x3000 },
- { 0x8d00, 0x0a6c, 0x2000 },
- { 0x0d00, 0x0a6b, 0x0000 },
- { 0x0d00, 0x0a6d, 0x0000 },
- { 0x8c00, 0x0a70, 0x2000 },
- { 0x0d00, 0x0a6f, 0x0000 },
- { 0x0c00, 0x0a71, 0x0000 },
- { 0x8c00, 0x0a82, 0x3000 },
- { 0x8700, 0x0a74, 0x2000 },
- { 0x0700, 0x0a73, 0x0000 },
- { 0x0c00, 0x0a81, 0x0000 },
- { 0x8700, 0x0a85, 0x2000 },
- { 0x0a00, 0x0a83, 0x0000 },
- { 0x0700, 0x0a86, 0x0000 },
- { 0x8700, 0x0a90, 0x4000 },
- { 0x8700, 0x0a8b, 0x3000 },
- { 0x8700, 0x0a89, 0x2000 },
- { 0x0700, 0x0a88, 0x0000 },
- { 0x0700, 0x0a8a, 0x0000 },
- { 0x8700, 0x0a8d, 0x2000 },
- { 0x0700, 0x0a8c, 0x0000 },
- { 0x0700, 0x0a8f, 0x0000 },
- { 0x8700, 0x0a95, 0x3000 },
- { 0x8700, 0x0a93, 0x2000 },
- { 0x0700, 0x0a91, 0x0000 },
- { 0x0700, 0x0a94, 0x0000 },
- { 0x8700, 0x0a97, 0x2000 },
- { 0x0700, 0x0a96, 0x0000 },
- { 0x0700, 0x0a98, 0x0000 },
- { 0x8700, 0x10ef, 0xb000 },
- { 0x8700, 0x0dc6, 0xa000 },
- { 0x8700, 0x0c31, 0x9000 },
- { 0x8700, 0x0b5f, 0x8000 },
- { 0x8a00, 0x0b03, 0x7000 },
- { 0x8a00, 0x0abe, 0x6000 },
- { 0x8700, 0x0aaa, 0x5000 },
- { 0x8700, 0x0aa1, 0x4000 },
- { 0x8700, 0x0a9d, 0x3000 },
- { 0x8700, 0x0a9b, 0x2000 },
- { 0x0700, 0x0a9a, 0x0000 },
- { 0x0700, 0x0a9c, 0x0000 },
- { 0x8700, 0x0a9f, 0x2000 },
- { 0x0700, 0x0a9e, 0x0000 },
- { 0x0700, 0x0aa0, 0x0000 },
- { 0x8700, 0x0aa5, 0x3000 },
- { 0x8700, 0x0aa3, 0x2000 },
- { 0x0700, 0x0aa2, 0x0000 },
- { 0x0700, 0x0aa4, 0x0000 },
- { 0x8700, 0x0aa7, 0x2000 },
- { 0x0700, 0x0aa6, 0x0000 },
- { 0x0700, 0x0aa8, 0x0000 },
- { 0x8700, 0x0ab3, 0x4000 },
- { 0x8700, 0x0aae, 0x3000 },
- { 0x8700, 0x0aac, 0x2000 },
- { 0x0700, 0x0aab, 0x0000 },
- { 0x0700, 0x0aad, 0x0000 },
- { 0x8700, 0x0ab0, 0x2000 },
- { 0x0700, 0x0aaf, 0x0000 },
- { 0x0700, 0x0ab2, 0x0000 },
- { 0x8700, 0x0ab8, 0x3000 },
- { 0x8700, 0x0ab6, 0x2000 },
- { 0x0700, 0x0ab5, 0x0000 },
- { 0x0700, 0x0ab7, 0x0000 },
- { 0x8c00, 0x0abc, 0x2000 },
- { 0x0700, 0x0ab9, 0x0000 },
- { 0x0700, 0x0abd, 0x0000 },
- { 0x8700, 0x0ae1, 0x5000 },
- { 0x8c00, 0x0ac7, 0x4000 },
- { 0x8c00, 0x0ac2, 0x3000 },
- { 0x8a00, 0x0ac0, 0x2000 },
- { 0x0a00, 0x0abf, 0x0000 },
- { 0x0c00, 0x0ac1, 0x0000 },
- { 0x8c00, 0x0ac4, 0x2000 },
- { 0x0c00, 0x0ac3, 0x0000 },
- { 0x0c00, 0x0ac5, 0x0000 },
- { 0x8a00, 0x0acc, 0x3000 },
- { 0x8a00, 0x0ac9, 0x2000 },
- { 0x0c00, 0x0ac8, 0x0000 },
- { 0x0a00, 0x0acb, 0x0000 },
- { 0x8700, 0x0ad0, 0x2000 },
- { 0x0c00, 0x0acd, 0x0000 },
- { 0x0700, 0x0ae0, 0x0000 },
- { 0x8d00, 0x0aeb, 0x4000 },
- { 0x8d00, 0x0ae7, 0x3000 },
- { 0x8c00, 0x0ae3, 0x2000 },
- { 0x0c00, 0x0ae2, 0x0000 },
- { 0x0d00, 0x0ae6, 0x0000 },
- { 0x8d00, 0x0ae9, 0x2000 },
- { 0x0d00, 0x0ae8, 0x0000 },
- { 0x0d00, 0x0aea, 0x0000 },
- { 0x8d00, 0x0aef, 0x3000 },
- { 0x8d00, 0x0aed, 0x2000 },
- { 0x0d00, 0x0aec, 0x0000 },
- { 0x0d00, 0x0aee, 0x0000 },
- { 0x8c00, 0x0b01, 0x2000 },
- { 0x1700, 0x0af1, 0x0000 },
- { 0x0a00, 0x0b02, 0x0000 },
- { 0x8700, 0x0b28, 0x6000 },
- { 0x8700, 0x0b18, 0x5000 },
- { 0x8700, 0x0b0c, 0x4000 },
- { 0x8700, 0x0b08, 0x3000 },
- { 0x8700, 0x0b06, 0x2000 },
- { 0x0700, 0x0b05, 0x0000 },
- { 0x0700, 0x0b07, 0x0000 },
- { 0x8700, 0x0b0a, 0x2000 },
- { 0x0700, 0x0b09, 0x0000 },
- { 0x0700, 0x0b0b, 0x0000 },
- { 0x8700, 0x0b14, 0x3000 },
- { 0x8700, 0x0b10, 0x2000 },
- { 0x0700, 0x0b0f, 0x0000 },
- { 0x0700, 0x0b13, 0x0000 },
- { 0x8700, 0x0b16, 0x2000 },
- { 0x0700, 0x0b15, 0x0000 },
- { 0x0700, 0x0b17, 0x0000 },
- { 0x8700, 0x0b20, 0x4000 },
- { 0x8700, 0x0b1c, 0x3000 },
- { 0x8700, 0x0b1a, 0x2000 },
- { 0x0700, 0x0b19, 0x0000 },
- { 0x0700, 0x0b1b, 0x0000 },
- { 0x8700, 0x0b1e, 0x2000 },
- { 0x0700, 0x0b1d, 0x0000 },
- { 0x0700, 0x0b1f, 0x0000 },
- { 0x8700, 0x0b24, 0x3000 },
- { 0x8700, 0x0b22, 0x2000 },
- { 0x0700, 0x0b21, 0x0000 },
- { 0x0700, 0x0b23, 0x0000 },
- { 0x8700, 0x0b26, 0x2000 },
- { 0x0700, 0x0b25, 0x0000 },
- { 0x0700, 0x0b27, 0x0000 },
- { 0x8700, 0x0b3d, 0x5000 },
- { 0x8700, 0x0b32, 0x4000 },
- { 0x8700, 0x0b2d, 0x3000 },
- { 0x8700, 0x0b2b, 0x2000 },
- { 0x0700, 0x0b2a, 0x0000 },
- { 0x0700, 0x0b2c, 0x0000 },
- { 0x8700, 0x0b2f, 0x2000 },
- { 0x0700, 0x0b2e, 0x0000 },
- { 0x0700, 0x0b30, 0x0000 },
- { 0x8700, 0x0b37, 0x3000 },
- { 0x8700, 0x0b35, 0x2000 },
- { 0x0700, 0x0b33, 0x0000 },
- { 0x0700, 0x0b36, 0x0000 },
- { 0x8700, 0x0b39, 0x2000 },
- { 0x0700, 0x0b38, 0x0000 },
- { 0x0c00, 0x0b3c, 0x0000 },
- { 0x8a00, 0x0b48, 0x4000 },
- { 0x8c00, 0x0b41, 0x3000 },
- { 0x8c00, 0x0b3f, 0x2000 },
- { 0x0a00, 0x0b3e, 0x0000 },
- { 0x0a00, 0x0b40, 0x0000 },
- { 0x8c00, 0x0b43, 0x2000 },
- { 0x0c00, 0x0b42, 0x0000 },
- { 0x0a00, 0x0b47, 0x0000 },
- { 0x8c00, 0x0b56, 0x3000 },
- { 0x8a00, 0x0b4c, 0x2000 },
- { 0x0a00, 0x0b4b, 0x0000 },
- { 0x0c00, 0x0b4d, 0x0000 },
- { 0x8700, 0x0b5c, 0x2000 },
- { 0x0a00, 0x0b57, 0x0000 },
- { 0x0700, 0x0b5d, 0x0000 },
- { 0x8d00, 0x0be7, 0x7000 },
- { 0x8700, 0x0b9c, 0x6000 },
- { 0x8700, 0x0b83, 0x5000 },
- { 0x8d00, 0x0b6b, 0x4000 },
- { 0x8d00, 0x0b67, 0x3000 },
- { 0x8700, 0x0b61, 0x2000 },
- { 0x0700, 0x0b60, 0x0000 },
- { 0x0d00, 0x0b66, 0x0000 },
- { 0x8d00, 0x0b69, 0x2000 },
- { 0x0d00, 0x0b68, 0x0000 },
- { 0x0d00, 0x0b6a, 0x0000 },
- { 0x8d00, 0x0b6f, 0x3000 },
- { 0x8d00, 0x0b6d, 0x2000 },
- { 0x0d00, 0x0b6c, 0x0000 },
- { 0x0d00, 0x0b6e, 0x0000 },
- { 0x8700, 0x0b71, 0x2000 },
- { 0x1a00, 0x0b70, 0x0000 },
- { 0x0c00, 0x0b82, 0x0000 },
- { 0x8700, 0x0b8f, 0x4000 },
- { 0x8700, 0x0b88, 0x3000 },
- { 0x8700, 0x0b86, 0x2000 },
- { 0x0700, 0x0b85, 0x0000 },
- { 0x0700, 0x0b87, 0x0000 },
- { 0x8700, 0x0b8a, 0x2000 },
- { 0x0700, 0x0b89, 0x0000 },
- { 0x0700, 0x0b8e, 0x0000 },
- { 0x8700, 0x0b94, 0x3000 },
- { 0x8700, 0x0b92, 0x2000 },
- { 0x0700, 0x0b90, 0x0000 },
- { 0x0700, 0x0b93, 0x0000 },
- { 0x8700, 0x0b99, 0x2000 },
- { 0x0700, 0x0b95, 0x0000 },
- { 0x0700, 0x0b9a, 0x0000 },
- { 0x8700, 0x0bb7, 0x5000 },
- { 0x8700, 0x0bae, 0x4000 },
- { 0x8700, 0x0ba4, 0x3000 },
- { 0x8700, 0x0b9f, 0x2000 },
- { 0x0700, 0x0b9e, 0x0000 },
- { 0x0700, 0x0ba3, 0x0000 },
- { 0x8700, 0x0ba9, 0x2000 },
- { 0x0700, 0x0ba8, 0x0000 },
- { 0x0700, 0x0baa, 0x0000 },
- { 0x8700, 0x0bb2, 0x3000 },
- { 0x8700, 0x0bb0, 0x2000 },
- { 0x0700, 0x0baf, 0x0000 },
- { 0x0700, 0x0bb1, 0x0000 },
- { 0x8700, 0x0bb4, 0x2000 },
- { 0x0700, 0x0bb3, 0x0000 },
- { 0x0700, 0x0bb5, 0x0000 },
- { 0x8a00, 0x0bc6, 0x4000 },
- { 0x8a00, 0x0bbf, 0x3000 },
- { 0x8700, 0x0bb9, 0x2000 },
- { 0x0700, 0x0bb8, 0x0000 },
- { 0x0a00, 0x0bbe, 0x0000 },
- { 0x8a00, 0x0bc1, 0x2000 },
- { 0x0c00, 0x0bc0, 0x0000 },
- { 0x0a00, 0x0bc2, 0x0000 },
- { 0x8a00, 0x0bcb, 0x3000 },
- { 0x8a00, 0x0bc8, 0x2000 },
- { 0x0a00, 0x0bc7, 0x0000 },
- { 0x0a00, 0x0bca, 0x0000 },
- { 0x8c00, 0x0bcd, 0x2000 },
- { 0x0a00, 0x0bcc, 0x0000 },
- { 0x0a00, 0x0bd7, 0x0000 },
- { 0x8700, 0x0c0f, 0x6000 },
- { 0x9a00, 0x0bf7, 0x5000 },
- { 0x8d00, 0x0bef, 0x4000 },
- { 0x8d00, 0x0beb, 0x3000 },
- { 0x8d00, 0x0be9, 0x2000 },
- { 0x0d00, 0x0be8, 0x0000 },
- { 0x0d00, 0x0bea, 0x0000 },
- { 0x8d00, 0x0bed, 0x2000 },
- { 0x0d00, 0x0bec, 0x0000 },
- { 0x0d00, 0x0bee, 0x0000 },
- { 0x9a00, 0x0bf3, 0x3000 },
- { 0x8f00, 0x0bf1, 0x2000 },
- { 0x0f00, 0x0bf0, 0x0000 },
- { 0x0f00, 0x0bf2, 0x0000 },
- { 0x9a00, 0x0bf5, 0x2000 },
- { 0x1a00, 0x0bf4, 0x0000 },
- { 0x1a00, 0x0bf6, 0x0000 },
- { 0x8700, 0x0c06, 0x4000 },
- { 0x8a00, 0x0c01, 0x3000 },
- { 0x9700, 0x0bf9, 0x2000 },
- { 0x1a00, 0x0bf8, 0x0000 },
- { 0x1a00, 0x0bfa, 0x0000 },
- { 0x8a00, 0x0c03, 0x2000 },
- { 0x0a00, 0x0c02, 0x0000 },
- { 0x0700, 0x0c05, 0x0000 },
- { 0x8700, 0x0c0a, 0x3000 },
- { 0x8700, 0x0c08, 0x2000 },
- { 0x0700, 0x0c07, 0x0000 },
- { 0x0700, 0x0c09, 0x0000 },
- { 0x8700, 0x0c0c, 0x2000 },
- { 0x0700, 0x0c0b, 0x0000 },
- { 0x0700, 0x0c0e, 0x0000 },
- { 0x8700, 0x0c20, 0x5000 },
- { 0x8700, 0x0c18, 0x4000 },
- { 0x8700, 0x0c14, 0x3000 },
- { 0x8700, 0x0c12, 0x2000 },
- { 0x0700, 0x0c10, 0x0000 },
- { 0x0700, 0x0c13, 0x0000 },
- { 0x8700, 0x0c16, 0x2000 },
- { 0x0700, 0x0c15, 0x0000 },
- { 0x0700, 0x0c17, 0x0000 },
- { 0x8700, 0x0c1c, 0x3000 },
- { 0x8700, 0x0c1a, 0x2000 },
- { 0x0700, 0x0c19, 0x0000 },
- { 0x0700, 0x0c1b, 0x0000 },
- { 0x8700, 0x0c1e, 0x2000 },
- { 0x0700, 0x0c1d, 0x0000 },
- { 0x0700, 0x0c1f, 0x0000 },
- { 0x8700, 0x0c28, 0x4000 },
- { 0x8700, 0x0c24, 0x3000 },
- { 0x8700, 0x0c22, 0x2000 },
- { 0x0700, 0x0c21, 0x0000 },
- { 0x0700, 0x0c23, 0x0000 },
- { 0x8700, 0x0c26, 0x2000 },
- { 0x0700, 0x0c25, 0x0000 },
- { 0x0700, 0x0c27, 0x0000 },
- { 0x8700, 0x0c2d, 0x3000 },
- { 0x8700, 0x0c2b, 0x2000 },
- { 0x0700, 0x0c2a, 0x0000 },
- { 0x0700, 0x0c2c, 0x0000 },
- { 0x8700, 0x0c2f, 0x2000 },
- { 0x0700, 0x0c2e, 0x0000 },
- { 0x0700, 0x0c30, 0x0000 },
- { 0x8700, 0x0d0e, 0x8000 },
- { 0x8700, 0x0ca1, 0x7000 },
- { 0x8d00, 0x0c6c, 0x6000 },
- { 0x8c00, 0x0c47, 0x5000 },
- { 0x8c00, 0x0c3e, 0x4000 },
- { 0x8700, 0x0c36, 0x3000 },
- { 0x8700, 0x0c33, 0x2000 },
- { 0x0700, 0x0c32, 0x0000 },
- { 0x0700, 0x0c35, 0x0000 },
- { 0x8700, 0x0c38, 0x2000 },
- { 0x0700, 0x0c37, 0x0000 },
- { 0x0700, 0x0c39, 0x0000 },
- { 0x8a00, 0x0c42, 0x3000 },
- { 0x8c00, 0x0c40, 0x2000 },
- { 0x0c00, 0x0c3f, 0x0000 },
- { 0x0a00, 0x0c41, 0x0000 },
- { 0x8a00, 0x0c44, 0x2000 },
- { 0x0a00, 0x0c43, 0x0000 },
- { 0x0c00, 0x0c46, 0x0000 },
- { 0x8700, 0x0c60, 0x4000 },
- { 0x8c00, 0x0c4c, 0x3000 },
- { 0x8c00, 0x0c4a, 0x2000 },
- { 0x0c00, 0x0c48, 0x0000 },
- { 0x0c00, 0x0c4b, 0x0000 },
- { 0x8c00, 0x0c55, 0x2000 },
- { 0x0c00, 0x0c4d, 0x0000 },
- { 0x0c00, 0x0c56, 0x0000 },
- { 0x8d00, 0x0c68, 0x3000 },
- { 0x8d00, 0x0c66, 0x2000 },
- { 0x0700, 0x0c61, 0x0000 },
- { 0x0d00, 0x0c67, 0x0000 },
- { 0x8d00, 0x0c6a, 0x2000 },
- { 0x0d00, 0x0c69, 0x0000 },
- { 0x0d00, 0x0c6b, 0x0000 },
- { 0x8700, 0x0c90, 0x5000 },
- { 0x8700, 0x0c87, 0x4000 },
- { 0x8a00, 0x0c82, 0x3000 },
- { 0x8d00, 0x0c6e, 0x2000 },
- { 0x0d00, 0x0c6d, 0x0000 },
- { 0x0d00, 0x0c6f, 0x0000 },
- { 0x8700, 0x0c85, 0x2000 },
- { 0x0a00, 0x0c83, 0x0000 },
- { 0x0700, 0x0c86, 0x0000 },
- { 0x8700, 0x0c8b, 0x3000 },
- { 0x8700, 0x0c89, 0x2000 },
- { 0x0700, 0x0c88, 0x0000 },
- { 0x0700, 0x0c8a, 0x0000 },
- { 0x8700, 0x0c8e, 0x2000 },
- { 0x0700, 0x0c8c, 0x0000 },
- { 0x0700, 0x0c8f, 0x0000 },
- { 0x8700, 0x0c99, 0x4000 },
- { 0x8700, 0x0c95, 0x3000 },
- { 0x8700, 0x0c93, 0x2000 },
- { 0x0700, 0x0c92, 0x0000 },
- { 0x0700, 0x0c94, 0x0000 },
- { 0x8700, 0x0c97, 0x2000 },
- { 0x0700, 0x0c96, 0x0000 },
- { 0x0700, 0x0c98, 0x0000 },
- { 0x8700, 0x0c9d, 0x3000 },
- { 0x8700, 0x0c9b, 0x2000 },
- { 0x0700, 0x0c9a, 0x0000 },
- { 0x0700, 0x0c9c, 0x0000 },
- { 0x8700, 0x0c9f, 0x2000 },
- { 0x0700, 0x0c9e, 0x0000 },
- { 0x0700, 0x0ca0, 0x0000 },
- { 0x8c00, 0x0cc6, 0x6000 },
- { 0x8700, 0x0cb2, 0x5000 },
- { 0x8700, 0x0caa, 0x4000 },
- { 0x8700, 0x0ca5, 0x3000 },
- { 0x8700, 0x0ca3, 0x2000 },
- { 0x0700, 0x0ca2, 0x0000 },
- { 0x0700, 0x0ca4, 0x0000 },
- { 0x8700, 0x0ca7, 0x2000 },
- { 0x0700, 0x0ca6, 0x0000 },
- { 0x0700, 0x0ca8, 0x0000 },
- { 0x8700, 0x0cae, 0x3000 },
- { 0x8700, 0x0cac, 0x2000 },
- { 0x0700, 0x0cab, 0x0000 },
- { 0x0700, 0x0cad, 0x0000 },
- { 0x8700, 0x0cb0, 0x2000 },
- { 0x0700, 0x0caf, 0x0000 },
- { 0x0700, 0x0cb1, 0x0000 },
- { 0x8700, 0x0cbd, 0x4000 },
- { 0x8700, 0x0cb7, 0x3000 },
- { 0x8700, 0x0cb5, 0x2000 },
- { 0x0700, 0x0cb3, 0x0000 },
- { 0x0700, 0x0cb6, 0x0000 },
- { 0x8700, 0x0cb9, 0x2000 },
- { 0x0700, 0x0cb8, 0x0000 },
- { 0x0c00, 0x0cbc, 0x0000 },
- { 0x8a00, 0x0cc1, 0x3000 },
- { 0x8c00, 0x0cbf, 0x2000 },
- { 0x0a00, 0x0cbe, 0x0000 },
- { 0x0a00, 0x0cc0, 0x0000 },
- { 0x8a00, 0x0cc3, 0x2000 },
- { 0x0a00, 0x0cc2, 0x0000 },
- { 0x0a00, 0x0cc4, 0x0000 },
- { 0x8d00, 0x0cea, 0x5000 },
- { 0x8a00, 0x0cd6, 0x4000 },
- { 0x8a00, 0x0ccb, 0x3000 },
- { 0x8a00, 0x0cc8, 0x2000 },
- { 0x0a00, 0x0cc7, 0x0000 },
- { 0x0a00, 0x0cca, 0x0000 },
- { 0x8c00, 0x0ccd, 0x2000 },
- { 0x0c00, 0x0ccc, 0x0000 },
- { 0x0a00, 0x0cd5, 0x0000 },
- { 0x8d00, 0x0ce6, 0x3000 },
- { 0x8700, 0x0ce0, 0x2000 },
- { 0x0700, 0x0cde, 0x0000 },
- { 0x0700, 0x0ce1, 0x0000 },
- { 0x8d00, 0x0ce8, 0x2000 },
- { 0x0d00, 0x0ce7, 0x0000 },
- { 0x0d00, 0x0ce9, 0x0000 },
- { 0x8700, 0x0d05, 0x4000 },
- { 0x8d00, 0x0cee, 0x3000 },
- { 0x8d00, 0x0cec, 0x2000 },
- { 0x0d00, 0x0ceb, 0x0000 },
- { 0x0d00, 0x0ced, 0x0000 },
- { 0x8a00, 0x0d02, 0x2000 },
- { 0x0d00, 0x0cef, 0x0000 },
- { 0x0a00, 0x0d03, 0x0000 },
- { 0x8700, 0x0d09, 0x3000 },
- { 0x8700, 0x0d07, 0x2000 },
- { 0x0700, 0x0d06, 0x0000 },
- { 0x0700, 0x0d08, 0x0000 },
- { 0x8700, 0x0d0b, 0x2000 },
- { 0x0700, 0x0d0a, 0x0000 },
- { 0x0700, 0x0d0c, 0x0000 },
- { 0x8d00, 0x0d6c, 0x7000 },
- { 0x8700, 0x0d30, 0x6000 },
- { 0x8700, 0x0d1f, 0x5000 },
- { 0x8700, 0x0d17, 0x4000 },
- { 0x8700, 0x0d13, 0x3000 },
- { 0x8700, 0x0d10, 0x2000 },
- { 0x0700, 0x0d0f, 0x0000 },
- { 0x0700, 0x0d12, 0x0000 },
- { 0x8700, 0x0d15, 0x2000 },
- { 0x0700, 0x0d14, 0x0000 },
- { 0x0700, 0x0d16, 0x0000 },
- { 0x8700, 0x0d1b, 0x3000 },
- { 0x8700, 0x0d19, 0x2000 },
- { 0x0700, 0x0d18, 0x0000 },
- { 0x0700, 0x0d1a, 0x0000 },
- { 0x8700, 0x0d1d, 0x2000 },
- { 0x0700, 0x0d1c, 0x0000 },
- { 0x0700, 0x0d1e, 0x0000 },
- { 0x8700, 0x0d27, 0x4000 },
- { 0x8700, 0x0d23, 0x3000 },
- { 0x8700, 0x0d21, 0x2000 },
- { 0x0700, 0x0d20, 0x0000 },
- { 0x0700, 0x0d22, 0x0000 },
- { 0x8700, 0x0d25, 0x2000 },
- { 0x0700, 0x0d24, 0x0000 },
- { 0x0700, 0x0d26, 0x0000 },
- { 0x8700, 0x0d2c, 0x3000 },
- { 0x8700, 0x0d2a, 0x2000 },
- { 0x0700, 0x0d28, 0x0000 },
- { 0x0700, 0x0d2b, 0x0000 },
- { 0x8700, 0x0d2e, 0x2000 },
- { 0x0700, 0x0d2d, 0x0000 },
- { 0x0700, 0x0d2f, 0x0000 },
- { 0x8a00, 0x0d46, 0x5000 },
- { 0x8700, 0x0d38, 0x4000 },
- { 0x8700, 0x0d34, 0x3000 },
- { 0x8700, 0x0d32, 0x2000 },
- { 0x0700, 0x0d31, 0x0000 },
- { 0x0700, 0x0d33, 0x0000 },
- { 0x8700, 0x0d36, 0x2000 },
- { 0x0700, 0x0d35, 0x0000 },
- { 0x0700, 0x0d37, 0x0000 },
- { 0x8a00, 0x0d40, 0x3000 },
- { 0x8a00, 0x0d3e, 0x2000 },
- { 0x0700, 0x0d39, 0x0000 },
- { 0x0a00, 0x0d3f, 0x0000 },
- { 0x8c00, 0x0d42, 0x2000 },
- { 0x0c00, 0x0d41, 0x0000 },
- { 0x0c00, 0x0d43, 0x0000 },
- { 0x8700, 0x0d60, 0x4000 },
- { 0x8a00, 0x0d4b, 0x3000 },
- { 0x8a00, 0x0d48, 0x2000 },
- { 0x0a00, 0x0d47, 0x0000 },
- { 0x0a00, 0x0d4a, 0x0000 },
- { 0x8c00, 0x0d4d, 0x2000 },
- { 0x0a00, 0x0d4c, 0x0000 },
- { 0x0a00, 0x0d57, 0x0000 },
- { 0x8d00, 0x0d68, 0x3000 },
- { 0x8d00, 0x0d66, 0x2000 },
- { 0x0700, 0x0d61, 0x0000 },
- { 0x0d00, 0x0d67, 0x0000 },
- { 0x8d00, 0x0d6a, 0x2000 },
- { 0x0d00, 0x0d69, 0x0000 },
- { 0x0d00, 0x0d6b, 0x0000 },
- { 0x8700, 0x0da2, 0x6000 },
- { 0x8700, 0x0d8f, 0x5000 },
- { 0x8700, 0x0d87, 0x4000 },
- { 0x8a00, 0x0d82, 0x3000 },
- { 0x8d00, 0x0d6e, 0x2000 },
- { 0x0d00, 0x0d6d, 0x0000 },
- { 0x0d00, 0x0d6f, 0x0000 },
- { 0x8700, 0x0d85, 0x2000 },
- { 0x0a00, 0x0d83, 0x0000 },
- { 0x0700, 0x0d86, 0x0000 },
- { 0x8700, 0x0d8b, 0x3000 },
- { 0x8700, 0x0d89, 0x2000 },
- { 0x0700, 0x0d88, 0x0000 },
- { 0x0700, 0x0d8a, 0x0000 },
- { 0x8700, 0x0d8d, 0x2000 },
- { 0x0700, 0x0d8c, 0x0000 },
- { 0x0700, 0x0d8e, 0x0000 },
- { 0x8700, 0x0d9a, 0x4000 },
- { 0x8700, 0x0d93, 0x3000 },
- { 0x8700, 0x0d91, 0x2000 },
- { 0x0700, 0x0d90, 0x0000 },
- { 0x0700, 0x0d92, 0x0000 },
- { 0x8700, 0x0d95, 0x2000 },
- { 0x0700, 0x0d94, 0x0000 },
- { 0x0700, 0x0d96, 0x0000 },
- { 0x8700, 0x0d9e, 0x3000 },
- { 0x8700, 0x0d9c, 0x2000 },
- { 0x0700, 0x0d9b, 0x0000 },
- { 0x0700, 0x0d9d, 0x0000 },
- { 0x8700, 0x0da0, 0x2000 },
- { 0x0700, 0x0d9f, 0x0000 },
- { 0x0700, 0x0da1, 0x0000 },
- { 0x8700, 0x0db3, 0x5000 },
- { 0x8700, 0x0daa, 0x4000 },
- { 0x8700, 0x0da6, 0x3000 },
- { 0x8700, 0x0da4, 0x2000 },
- { 0x0700, 0x0da3, 0x0000 },
- { 0x0700, 0x0da5, 0x0000 },
- { 0x8700, 0x0da8, 0x2000 },
- { 0x0700, 0x0da7, 0x0000 },
- { 0x0700, 0x0da9, 0x0000 },
- { 0x8700, 0x0dae, 0x3000 },
- { 0x8700, 0x0dac, 0x2000 },
- { 0x0700, 0x0dab, 0x0000 },
- { 0x0700, 0x0dad, 0x0000 },
- { 0x8700, 0x0db0, 0x2000 },
- { 0x0700, 0x0daf, 0x0000 },
- { 0x0700, 0x0db1, 0x0000 },
- { 0x8700, 0x0dbb, 0x4000 },
- { 0x8700, 0x0db7, 0x3000 },
- { 0x8700, 0x0db5, 0x2000 },
- { 0x0700, 0x0db4, 0x0000 },
- { 0x0700, 0x0db6, 0x0000 },
- { 0x8700, 0x0db9, 0x2000 },
- { 0x0700, 0x0db8, 0x0000 },
- { 0x0700, 0x0dba, 0x0000 },
- { 0x8700, 0x0dc2, 0x3000 },
- { 0x8700, 0x0dc0, 0x2000 },
- { 0x0700, 0x0dbd, 0x0000 },
- { 0x0700, 0x0dc1, 0x0000 },
- { 0x8700, 0x0dc4, 0x2000 },
- { 0x0700, 0x0dc3, 0x0000 },
- { 0x0700, 0x0dc5, 0x0000 },
- { 0x8700, 0x0f55, 0x9000 },
- { 0x8700, 0x0ea5, 0x8000 },
- { 0x8700, 0x0e2d, 0x7000 },
- { 0x8700, 0x0e0d, 0x6000 },
- { 0x8a00, 0x0ddf, 0x5000 },
- { 0x8c00, 0x0dd6, 0x4000 },
- { 0x8a00, 0x0dd1, 0x3000 },
- { 0x8a00, 0x0dcf, 0x2000 },
- { 0x0c00, 0x0dca, 0x0000 },
- { 0x0a00, 0x0dd0, 0x0000 },
- { 0x8c00, 0x0dd3, 0x2000 },
- { 0x0c00, 0x0dd2, 0x0000 },
- { 0x0c00, 0x0dd4, 0x0000 },
- { 0x8a00, 0x0ddb, 0x3000 },
- { 0x8a00, 0x0dd9, 0x2000 },
- { 0x0a00, 0x0dd8, 0x0000 },
- { 0x0a00, 0x0dda, 0x0000 },
- { 0x8a00, 0x0ddd, 0x2000 },
- { 0x0a00, 0x0ddc, 0x0000 },
- { 0x0a00, 0x0dde, 0x0000 },
- { 0x8700, 0x0e05, 0x4000 },
- { 0x8700, 0x0e01, 0x3000 },
- { 0x8a00, 0x0df3, 0x2000 },
- { 0x0a00, 0x0df2, 0x0000 },
- { 0x1500, 0x0df4, 0x0000 },
- { 0x8700, 0x0e03, 0x2000 },
- { 0x0700, 0x0e02, 0x0000 },
- { 0x0700, 0x0e04, 0x0000 },
- { 0x8700, 0x0e09, 0x3000 },
- { 0x8700, 0x0e07, 0x2000 },
- { 0x0700, 0x0e06, 0x0000 },
- { 0x0700, 0x0e08, 0x0000 },
- { 0x8700, 0x0e0b, 0x2000 },
- { 0x0700, 0x0e0a, 0x0000 },
- { 0x0700, 0x0e0c, 0x0000 },
- { 0x8700, 0x0e1d, 0x5000 },
- { 0x8700, 0x0e15, 0x4000 },
- { 0x8700, 0x0e11, 0x3000 },
- { 0x8700, 0x0e0f, 0x2000 },
- { 0x0700, 0x0e0e, 0x0000 },
- { 0x0700, 0x0e10, 0x0000 },
- { 0x8700, 0x0e13, 0x2000 },
- { 0x0700, 0x0e12, 0x0000 },
- { 0x0700, 0x0e14, 0x0000 },
- { 0x8700, 0x0e19, 0x3000 },
- { 0x8700, 0x0e17, 0x2000 },
- { 0x0700, 0x0e16, 0x0000 },
- { 0x0700, 0x0e18, 0x0000 },
- { 0x8700, 0x0e1b, 0x2000 },
- { 0x0700, 0x0e1a, 0x0000 },
- { 0x0700, 0x0e1c, 0x0000 },
- { 0x8700, 0x0e25, 0x4000 },
- { 0x8700, 0x0e21, 0x3000 },
- { 0x8700, 0x0e1f, 0x2000 },
- { 0x0700, 0x0e1e, 0x0000 },
- { 0x0700, 0x0e20, 0x0000 },
- { 0x8700, 0x0e23, 0x2000 },
- { 0x0700, 0x0e22, 0x0000 },
- { 0x0700, 0x0e24, 0x0000 },
- { 0x8700, 0x0e29, 0x3000 },
- { 0x8700, 0x0e27, 0x2000 },
- { 0x0700, 0x0e26, 0x0000 },
- { 0x0700, 0x0e28, 0x0000 },
- { 0x8700, 0x0e2b, 0x2000 },
- { 0x0700, 0x0e2a, 0x0000 },
- { 0x0700, 0x0e2c, 0x0000 },
- { 0x8d00, 0x0e51, 0x6000 },
- { 0x8700, 0x0e41, 0x5000 },
- { 0x8c00, 0x0e35, 0x4000 },
- { 0x8c00, 0x0e31, 0x3000 },
- { 0x8700, 0x0e2f, 0x2000 },
- { 0x0700, 0x0e2e, 0x0000 },
- { 0x0700, 0x0e30, 0x0000 },
- { 0x8700, 0x0e33, 0x2000 },
- { 0x0700, 0x0e32, 0x0000 },
- { 0x0c00, 0x0e34, 0x0000 },
- { 0x8c00, 0x0e39, 0x3000 },
- { 0x8c00, 0x0e37, 0x2000 },
- { 0x0c00, 0x0e36, 0x0000 },
- { 0x0c00, 0x0e38, 0x0000 },
- { 0x9700, 0x0e3f, 0x2000 },
- { 0x0c00, 0x0e3a, 0x0000 },
- { 0x0700, 0x0e40, 0x0000 },
- { 0x8c00, 0x0e49, 0x4000 },
- { 0x8700, 0x0e45, 0x3000 },
- { 0x8700, 0x0e43, 0x2000 },
- { 0x0700, 0x0e42, 0x0000 },
- { 0x0700, 0x0e44, 0x0000 },
- { 0x8c00, 0x0e47, 0x2000 },
- { 0x0600, 0x0e46, 0x0000 },
- { 0x0c00, 0x0e48, 0x0000 },
- { 0x8c00, 0x0e4d, 0x3000 },
- { 0x8c00, 0x0e4b, 0x2000 },
- { 0x0c00, 0x0e4a, 0x0000 },
- { 0x0c00, 0x0e4c, 0x0000 },
- { 0x9500, 0x0e4f, 0x2000 },
- { 0x0c00, 0x0e4e, 0x0000 },
- { 0x0d00, 0x0e50, 0x0000 },
- { 0x8700, 0x0e8a, 0x5000 },
- { 0x8d00, 0x0e59, 0x4000 },
- { 0x8d00, 0x0e55, 0x3000 },
- { 0x8d00, 0x0e53, 0x2000 },
- { 0x0d00, 0x0e52, 0x0000 },
- { 0x0d00, 0x0e54, 0x0000 },
- { 0x8d00, 0x0e57, 0x2000 },
- { 0x0d00, 0x0e56, 0x0000 },
- { 0x0d00, 0x0e58, 0x0000 },
- { 0x8700, 0x0e82, 0x3000 },
- { 0x9500, 0x0e5b, 0x2000 },
- { 0x1500, 0x0e5a, 0x0000 },
- { 0x0700, 0x0e81, 0x0000 },
- { 0x8700, 0x0e87, 0x2000 },
- { 0x0700, 0x0e84, 0x0000 },
- { 0x0700, 0x0e88, 0x0000 },
- { 0x8700, 0x0e9b, 0x4000 },
- { 0x8700, 0x0e96, 0x3000 },
- { 0x8700, 0x0e94, 0x2000 },
- { 0x0700, 0x0e8d, 0x0000 },
- { 0x0700, 0x0e95, 0x0000 },
- { 0x8700, 0x0e99, 0x2000 },
- { 0x0700, 0x0e97, 0x0000 },
- { 0x0700, 0x0e9a, 0x0000 },
- { 0x8700, 0x0e9f, 0x3000 },
- { 0x8700, 0x0e9d, 0x2000 },
- { 0x0700, 0x0e9c, 0x0000 },
- { 0x0700, 0x0e9e, 0x0000 },
- { 0x8700, 0x0ea2, 0x2000 },
- { 0x0700, 0x0ea1, 0x0000 },
- { 0x0700, 0x0ea3, 0x0000 },
- { 0x9a00, 0x0f14, 0x7000 },
- { 0x8d00, 0x0ed0, 0x6000 },
- { 0x8c00, 0x0eb9, 0x5000 },
- { 0x8c00, 0x0eb1, 0x4000 },
- { 0x8700, 0x0ead, 0x3000 },
- { 0x8700, 0x0eaa, 0x2000 },
- { 0x0700, 0x0ea7, 0x0000 },
- { 0x0700, 0x0eab, 0x0000 },
- { 0x8700, 0x0eaf, 0x2000 },
- { 0x0700, 0x0eae, 0x0000 },
- { 0x0700, 0x0eb0, 0x0000 },
- { 0x8c00, 0x0eb5, 0x3000 },
- { 0x8700, 0x0eb3, 0x2000 },
- { 0x0700, 0x0eb2, 0x0000 },
- { 0x0c00, 0x0eb4, 0x0000 },
- { 0x8c00, 0x0eb7, 0x2000 },
- { 0x0c00, 0x0eb6, 0x0000 },
- { 0x0c00, 0x0eb8, 0x0000 },
- { 0x8700, 0x0ec4, 0x4000 },
- { 0x8700, 0x0ec0, 0x3000 },
- { 0x8c00, 0x0ebc, 0x2000 },
- { 0x0c00, 0x0ebb, 0x0000 },
- { 0x0700, 0x0ebd, 0x0000 },
- { 0x8700, 0x0ec2, 0x2000 },
- { 0x0700, 0x0ec1, 0x0000 },
- { 0x0700, 0x0ec3, 0x0000 },
- { 0x8c00, 0x0eca, 0x3000 },
- { 0x8c00, 0x0ec8, 0x2000 },
- { 0x0600, 0x0ec6, 0x0000 },
- { 0x0c00, 0x0ec9, 0x0000 },
- { 0x8c00, 0x0ecc, 0x2000 },
- { 0x0c00, 0x0ecb, 0x0000 },
- { 0x0c00, 0x0ecd, 0x0000 },
- { 0x9500, 0x0f04, 0x5000 },
- { 0x8d00, 0x0ed8, 0x4000 },
- { 0x8d00, 0x0ed4, 0x3000 },
- { 0x8d00, 0x0ed2, 0x2000 },
- { 0x0d00, 0x0ed1, 0x0000 },
- { 0x0d00, 0x0ed3, 0x0000 },
- { 0x8d00, 0x0ed6, 0x2000 },
- { 0x0d00, 0x0ed5, 0x0000 },
- { 0x0d00, 0x0ed7, 0x0000 },
- { 0x8700, 0x0f00, 0x3000 },
- { 0x8700, 0x0edc, 0x2000 },
- { 0x0d00, 0x0ed9, 0x0000 },
- { 0x0700, 0x0edd, 0x0000 },
- { 0x9a00, 0x0f02, 0x2000 },
- { 0x1a00, 0x0f01, 0x0000 },
- { 0x1a00, 0x0f03, 0x0000 },
- { 0x9500, 0x0f0c, 0x4000 },
- { 0x9500, 0x0f08, 0x3000 },
- { 0x9500, 0x0f06, 0x2000 },
- { 0x1500, 0x0f05, 0x0000 },
- { 0x1500, 0x0f07, 0x0000 },
- { 0x9500, 0x0f0a, 0x2000 },
- { 0x1500, 0x0f09, 0x0000 },
- { 0x1500, 0x0f0b, 0x0000 },
- { 0x9500, 0x0f10, 0x3000 },
- { 0x9500, 0x0f0e, 0x2000 },
- { 0x1500, 0x0f0d, 0x0000 },
- { 0x1500, 0x0f0f, 0x0000 },
- { 0x9500, 0x0f12, 0x2000 },
- { 0x1500, 0x0f11, 0x0000 },
- { 0x1a00, 0x0f13, 0x0000 },
- { 0x9a00, 0x0f34, 0x6000 },
- { 0x8d00, 0x0f24, 0x5000 },
- { 0x9a00, 0x0f1c, 0x4000 },
- { 0x8c00, 0x0f18, 0x3000 },
- { 0x9a00, 0x0f16, 0x2000 },
- { 0x1a00, 0x0f15, 0x0000 },
- { 0x1a00, 0x0f17, 0x0000 },
- { 0x9a00, 0x0f1a, 0x2000 },
- { 0x0c00, 0x0f19, 0x0000 },
- { 0x1a00, 0x0f1b, 0x0000 },
- { 0x8d00, 0x0f20, 0x3000 },
- { 0x9a00, 0x0f1e, 0x2000 },
- { 0x1a00, 0x0f1d, 0x0000 },
- { 0x1a00, 0x0f1f, 0x0000 },
- { 0x8d00, 0x0f22, 0x2000 },
- { 0x0d00, 0x0f21, 0x0000 },
- { 0x0d00, 0x0f23, 0x0000 },
- { 0x8f00, 0x0f2c, 0x4000 },
- { 0x8d00, 0x0f28, 0x3000 },
- { 0x8d00, 0x0f26, 0x2000 },
- { 0x0d00, 0x0f25, 0x0000 },
- { 0x0d00, 0x0f27, 0x0000 },
- { 0x8f00, 0x0f2a, 0x2000 },
- { 0x0d00, 0x0f29, 0x0000 },
- { 0x0f00, 0x0f2b, 0x0000 },
- { 0x8f00, 0x0f30, 0x3000 },
- { 0x8f00, 0x0f2e, 0x2000 },
- { 0x0f00, 0x0f2d, 0x0000 },
- { 0x0f00, 0x0f2f, 0x0000 },
- { 0x8f00, 0x0f32, 0x2000 },
- { 0x0f00, 0x0f31, 0x0000 },
- { 0x0f00, 0x0f33, 0x0000 },
- { 0x8700, 0x0f44, 0x5000 },
- { 0x9600, 0x0f3c, 0x4000 },
- { 0x9a00, 0x0f38, 0x3000 },
- { 0x9a00, 0x0f36, 0x2000 },
- { 0x0c00, 0x0f35, 0x0000 },
- { 0x0c00, 0x0f37, 0x0000 },
- { 0x9600, 0x0f3a, 0x2000 },
- { 0x0c00, 0x0f39, 0x0000 },
- { 0x1200, 0x0f3b, 0x0000 },
- { 0x8700, 0x0f40, 0x3000 },
- { 0x8a00, 0x0f3e, 0x2000 },
- { 0x1200, 0x0f3d, 0x0000 },
- { 0x0a00, 0x0f3f, 0x0000 },
- { 0x8700, 0x0f42, 0x2000 },
- { 0x0700, 0x0f41, 0x0000 },
- { 0x0700, 0x0f43, 0x0000 },
- { 0x8700, 0x0f4d, 0x4000 },
- { 0x8700, 0x0f49, 0x3000 },
- { 0x8700, 0x0f46, 0x2000 },
- { 0x0700, 0x0f45, 0x0000 },
- { 0x0700, 0x0f47, 0x0000 },
- { 0x8700, 0x0f4b, 0x2000 },
- { 0x0700, 0x0f4a, 0x0000 },
- { 0x0700, 0x0f4c, 0x0000 },
- { 0x8700, 0x0f51, 0x3000 },
- { 0x8700, 0x0f4f, 0x2000 },
- { 0x0700, 0x0f4e, 0x0000 },
- { 0x0700, 0x0f50, 0x0000 },
- { 0x8700, 0x0f53, 0x2000 },
- { 0x0700, 0x0f52, 0x0000 },
- { 0x0700, 0x0f54, 0x0000 },
- { 0x8700, 0x1013, 0x8000 },
- { 0x8c00, 0x0fa0, 0x7000 },
- { 0x8c00, 0x0f7b, 0x6000 },
- { 0x8700, 0x0f65, 0x5000 },
- { 0x8700, 0x0f5d, 0x4000 },
- { 0x8700, 0x0f59, 0x3000 },
- { 0x8700, 0x0f57, 0x2000 },
- { 0x0700, 0x0f56, 0x0000 },
- { 0x0700, 0x0f58, 0x0000 },
- { 0x8700, 0x0f5b, 0x2000 },
- { 0x0700, 0x0f5a, 0x0000 },
- { 0x0700, 0x0f5c, 0x0000 },
- { 0x8700, 0x0f61, 0x3000 },
- { 0x8700, 0x0f5f, 0x2000 },
- { 0x0700, 0x0f5e, 0x0000 },
- { 0x0700, 0x0f60, 0x0000 },
- { 0x8700, 0x0f63, 0x2000 },
- { 0x0700, 0x0f62, 0x0000 },
- { 0x0700, 0x0f64, 0x0000 },
- { 0x8c00, 0x0f73, 0x4000 },
- { 0x8700, 0x0f69, 0x3000 },
- { 0x8700, 0x0f67, 0x2000 },
- { 0x0700, 0x0f66, 0x0000 },
- { 0x0700, 0x0f68, 0x0000 },
- { 0x8c00, 0x0f71, 0x2000 },
- { 0x0700, 0x0f6a, 0x0000 },
- { 0x0c00, 0x0f72, 0x0000 },
- { 0x8c00, 0x0f77, 0x3000 },
- { 0x8c00, 0x0f75, 0x2000 },
- { 0x0c00, 0x0f74, 0x0000 },
- { 0x0c00, 0x0f76, 0x0000 },
- { 0x8c00, 0x0f79, 0x2000 },
- { 0x0c00, 0x0f78, 0x0000 },
- { 0x0c00, 0x0f7a, 0x0000 },
- { 0x8700, 0x0f8b, 0x5000 },
- { 0x8c00, 0x0f83, 0x4000 },
- { 0x8a00, 0x0f7f, 0x3000 },
- { 0x8c00, 0x0f7d, 0x2000 },
- { 0x0c00, 0x0f7c, 0x0000 },
- { 0x0c00, 0x0f7e, 0x0000 },
- { 0x8c00, 0x0f81, 0x2000 },
- { 0x0c00, 0x0f80, 0x0000 },
- { 0x0c00, 0x0f82, 0x0000 },
- { 0x8c00, 0x0f87, 0x3000 },
- { 0x9500, 0x0f85, 0x2000 },
- { 0x0c00, 0x0f84, 0x0000 },
- { 0x0c00, 0x0f86, 0x0000 },
- { 0x8700, 0x0f89, 0x2000 },
- { 0x0700, 0x0f88, 0x0000 },
- { 0x0700, 0x0f8a, 0x0000 },
- { 0x8c00, 0x0f97, 0x4000 },
- { 0x8c00, 0x0f93, 0x3000 },
- { 0x8c00, 0x0f91, 0x2000 },
- { 0x0c00, 0x0f90, 0x0000 },
- { 0x0c00, 0x0f92, 0x0000 },
- { 0x8c00, 0x0f95, 0x2000 },
- { 0x0c00, 0x0f94, 0x0000 },
- { 0x0c00, 0x0f96, 0x0000 },
- { 0x8c00, 0x0f9c, 0x3000 },
- { 0x8c00, 0x0f9a, 0x2000 },
- { 0x0c00, 0x0f99, 0x0000 },
- { 0x0c00, 0x0f9b, 0x0000 },
- { 0x8c00, 0x0f9e, 0x2000 },
- { 0x0c00, 0x0f9d, 0x0000 },
- { 0x0c00, 0x0f9f, 0x0000 },
- { 0x9a00, 0x0fc1, 0x6000 },
- { 0x8c00, 0x0fb0, 0x5000 },
- { 0x8c00, 0x0fa8, 0x4000 },
- { 0x8c00, 0x0fa4, 0x3000 },
- { 0x8c00, 0x0fa2, 0x2000 },
- { 0x0c00, 0x0fa1, 0x0000 },
- { 0x0c00, 0x0fa3, 0x0000 },
- { 0x8c00, 0x0fa6, 0x2000 },
- { 0x0c00, 0x0fa5, 0x0000 },
- { 0x0c00, 0x0fa7, 0x0000 },
- { 0x8c00, 0x0fac, 0x3000 },
- { 0x8c00, 0x0faa, 0x2000 },
- { 0x0c00, 0x0fa9, 0x0000 },
- { 0x0c00, 0x0fab, 0x0000 },
- { 0x8c00, 0x0fae, 0x2000 },
- { 0x0c00, 0x0fad, 0x0000 },
- { 0x0c00, 0x0faf, 0x0000 },
- { 0x8c00, 0x0fb8, 0x4000 },
- { 0x8c00, 0x0fb4, 0x3000 },
- { 0x8c00, 0x0fb2, 0x2000 },
- { 0x0c00, 0x0fb1, 0x0000 },
- { 0x0c00, 0x0fb3, 0x0000 },
- { 0x8c00, 0x0fb6, 0x2000 },
- { 0x0c00, 0x0fb5, 0x0000 },
- { 0x0c00, 0x0fb7, 0x0000 },
- { 0x8c00, 0x0fbc, 0x3000 },
- { 0x8c00, 0x0fba, 0x2000 },
- { 0x0c00, 0x0fb9, 0x0000 },
- { 0x0c00, 0x0fbb, 0x0000 },
- { 0x9a00, 0x0fbf, 0x2000 },
- { 0x1a00, 0x0fbe, 0x0000 },
- { 0x1a00, 0x0fc0, 0x0000 },
- { 0x8700, 0x1003, 0x5000 },
- { 0x9a00, 0x0fc9, 0x4000 },
- { 0x9a00, 0x0fc5, 0x3000 },
- { 0x9a00, 0x0fc3, 0x2000 },
- { 0x1a00, 0x0fc2, 0x0000 },
- { 0x1a00, 0x0fc4, 0x0000 },
- { 0x9a00, 0x0fc7, 0x2000 },
- { 0x0c00, 0x0fc6, 0x0000 },
- { 0x1a00, 0x0fc8, 0x0000 },
- { 0x9a00, 0x0fcf, 0x3000 },
- { 0x9a00, 0x0fcb, 0x2000 },
- { 0x1a00, 0x0fca, 0x0000 },
- { 0x1a00, 0x0fcc, 0x0000 },
- { 0x8700, 0x1001, 0x2000 },
- { 0x0700, 0x1000, 0x0000 },
- { 0x0700, 0x1002, 0x0000 },
- { 0x8700, 0x100b, 0x4000 },
- { 0x8700, 0x1007, 0x3000 },
- { 0x8700, 0x1005, 0x2000 },
- { 0x0700, 0x1004, 0x0000 },
- { 0x0700, 0x1006, 0x0000 },
- { 0x8700, 0x1009, 0x2000 },
- { 0x0700, 0x1008, 0x0000 },
- { 0x0700, 0x100a, 0x0000 },
- { 0x8700, 0x100f, 0x3000 },
- { 0x8700, 0x100d, 0x2000 },
- { 0x0700, 0x100c, 0x0000 },
- { 0x0700, 0x100e, 0x0000 },
- { 0x8700, 0x1011, 0x2000 },
- { 0x0700, 0x1010, 0x0000 },
- { 0x0700, 0x1012, 0x0000 },
- { 0x8900, 0x10a5, 0x7000 },
- { 0x8c00, 0x1039, 0x6000 },
- { 0x8700, 0x1024, 0x5000 },
- { 0x8700, 0x101b, 0x4000 },
- { 0x8700, 0x1017, 0x3000 },
- { 0x8700, 0x1015, 0x2000 },
- { 0x0700, 0x1014, 0x0000 },
- { 0x0700, 0x1016, 0x0000 },
- { 0x8700, 0x1019, 0x2000 },
- { 0x0700, 0x1018, 0x0000 },
- { 0x0700, 0x101a, 0x0000 },
- { 0x8700, 0x101f, 0x3000 },
- { 0x8700, 0x101d, 0x2000 },
- { 0x0700, 0x101c, 0x0000 },
- { 0x0700, 0x101e, 0x0000 },
- { 0x8700, 0x1021, 0x2000 },
- { 0x0700, 0x1020, 0x0000 },
- { 0x0700, 0x1023, 0x0000 },
- { 0x8c00, 0x102e, 0x4000 },
- { 0x8700, 0x1029, 0x3000 },
- { 0x8700, 0x1026, 0x2000 },
- { 0x0700, 0x1025, 0x0000 },
- { 0x0700, 0x1027, 0x0000 },
- { 0x8a00, 0x102c, 0x2000 },
- { 0x0700, 0x102a, 0x0000 },
- { 0x0c00, 0x102d, 0x0000 },
- { 0x8c00, 0x1032, 0x3000 },
- { 0x8c00, 0x1030, 0x2000 },
- { 0x0c00, 0x102f, 0x0000 },
- { 0x0a00, 0x1031, 0x0000 },
- { 0x8c00, 0x1037, 0x2000 },
- { 0x0c00, 0x1036, 0x0000 },
- { 0x0a00, 0x1038, 0x0000 },
- { 0x9500, 0x104f, 0x5000 },
- { 0x8d00, 0x1047, 0x4000 },
- { 0x8d00, 0x1043, 0x3000 },
- { 0x8d00, 0x1041, 0x2000 },
- { 0x0d00, 0x1040, 0x0000 },
- { 0x0d00, 0x1042, 0x0000 },
- { 0x8d00, 0x1045, 0x2000 },
- { 0x0d00, 0x1044, 0x0000 },
- { 0x0d00, 0x1046, 0x0000 },
- { 0x9500, 0x104b, 0x3000 },
- { 0x8d00, 0x1049, 0x2000 },
- { 0x0d00, 0x1048, 0x0000 },
- { 0x1500, 0x104a, 0x0000 },
- { 0x9500, 0x104d, 0x2000 },
- { 0x1500, 0x104c, 0x0000 },
- { 0x1500, 0x104e, 0x0000 },
- { 0x8a00, 0x1057, 0x4000 },
- { 0x8700, 0x1053, 0x3000 },
- { 0x8700, 0x1051, 0x2000 },
- { 0x0700, 0x1050, 0x0000 },
- { 0x0700, 0x1052, 0x0000 },
- { 0x8700, 0x1055, 0x2000 },
- { 0x0700, 0x1054, 0x0000 },
- { 0x0a00, 0x1056, 0x0000 },
- { 0x8900, 0x10a1, 0x3000 },
- { 0x8c00, 0x1059, 0x2000 },
- { 0x0c00, 0x1058, 0x0000 },
- { 0x0900, 0x10a0, 0x0000 },
- { 0x8900, 0x10a3, 0x2000 },
- { 0x0900, 0x10a2, 0x0000 },
- { 0x0900, 0x10a4, 0x0000 },
- { 0x8900, 0x10c5, 0x6000 },
- { 0x8900, 0x10b5, 0x5000 },
- { 0x8900, 0x10ad, 0x4000 },
- { 0x8900, 0x10a9, 0x3000 },
- { 0x8900, 0x10a7, 0x2000 },
- { 0x0900, 0x10a6, 0x0000 },
- { 0x0900, 0x10a8, 0x0000 },
- { 0x8900, 0x10ab, 0x2000 },
- { 0x0900, 0x10aa, 0x0000 },
- { 0x0900, 0x10ac, 0x0000 },
- { 0x8900, 0x10b1, 0x3000 },
- { 0x8900, 0x10af, 0x2000 },
- { 0x0900, 0x10ae, 0x0000 },
- { 0x0900, 0x10b0, 0x0000 },
- { 0x8900, 0x10b3, 0x2000 },
- { 0x0900, 0x10b2, 0x0000 },
- { 0x0900, 0x10b4, 0x0000 },
- { 0x8900, 0x10bd, 0x4000 },
- { 0x8900, 0x10b9, 0x3000 },
- { 0x8900, 0x10b7, 0x2000 },
- { 0x0900, 0x10b6, 0x0000 },
- { 0x0900, 0x10b8, 0x0000 },
- { 0x8900, 0x10bb, 0x2000 },
- { 0x0900, 0x10ba, 0x0000 },
- { 0x0900, 0x10bc, 0x0000 },
- { 0x8900, 0x10c1, 0x3000 },
- { 0x8900, 0x10bf, 0x2000 },
- { 0x0900, 0x10be, 0x0000 },
- { 0x0900, 0x10c0, 0x0000 },
- { 0x8900, 0x10c3, 0x2000 },
- { 0x0900, 0x10c2, 0x0000 },
- { 0x0900, 0x10c4, 0x0000 },
- { 0x8700, 0x10df, 0x5000 },
- { 0x8700, 0x10d7, 0x4000 },
- { 0x8700, 0x10d3, 0x3000 },
- { 0x8700, 0x10d1, 0x2000 },
- { 0x0700, 0x10d0, 0x0000 },
- { 0x0700, 0x10d2, 0x0000 },
- { 0x8700, 0x10d5, 0x2000 },
- { 0x0700, 0x10d4, 0x0000 },
- { 0x0700, 0x10d6, 0x0000 },
- { 0x8700, 0x10db, 0x3000 },
- { 0x8700, 0x10d9, 0x2000 },
- { 0x0700, 0x10d8, 0x0000 },
- { 0x0700, 0x10da, 0x0000 },
- { 0x8700, 0x10dd, 0x2000 },
- { 0x0700, 0x10dc, 0x0000 },
- { 0x0700, 0x10de, 0x0000 },
- { 0x8700, 0x10e7, 0x4000 },
- { 0x8700, 0x10e3, 0x3000 },
- { 0x8700, 0x10e1, 0x2000 },
- { 0x0700, 0x10e0, 0x0000 },
- { 0x0700, 0x10e2, 0x0000 },
- { 0x8700, 0x10e5, 0x2000 },
- { 0x0700, 0x10e4, 0x0000 },
- { 0x0700, 0x10e6, 0x0000 },
- { 0x8700, 0x10eb, 0x3000 },
- { 0x8700, 0x10e9, 0x2000 },
- { 0x0700, 0x10e8, 0x0000 },
- { 0x0700, 0x10ea, 0x0000 },
- { 0x8700, 0x10ed, 0x2000 },
- { 0x0700, 0x10ec, 0x0000 },
- { 0x0700, 0x10ee, 0x0000 },
- { 0x8700, 0x1322, 0xa000 },
- { 0x8700, 0x1205, 0x9000 },
- { 0x8700, 0x117a, 0x8000 },
- { 0x8700, 0x1135, 0x7000 },
- { 0x8700, 0x1115, 0x6000 },
- { 0x8700, 0x1105, 0x5000 },
- { 0x8700, 0x10f7, 0x4000 },
- { 0x8700, 0x10f3, 0x3000 },
- { 0x8700, 0x10f1, 0x2000 },
- { 0x0700, 0x10f0, 0x0000 },
- { 0x0700, 0x10f2, 0x0000 },
- { 0x8700, 0x10f5, 0x2000 },
- { 0x0700, 0x10f4, 0x0000 },
- { 0x0700, 0x10f6, 0x0000 },
- { 0x8700, 0x1101, 0x3000 },
- { 0x9500, 0x10fb, 0x2000 },
- { 0x0700, 0x10f8, 0x0000 },
- { 0x0700, 0x1100, 0x0000 },
- { 0x8700, 0x1103, 0x2000 },
- { 0x0700, 0x1102, 0x0000 },
- { 0x0700, 0x1104, 0x0000 },
- { 0x8700, 0x110d, 0x4000 },
- { 0x8700, 0x1109, 0x3000 },
- { 0x8700, 0x1107, 0x2000 },
- { 0x0700, 0x1106, 0x0000 },
- { 0x0700, 0x1108, 0x0000 },
- { 0x8700, 0x110b, 0x2000 },
- { 0x0700, 0x110a, 0x0000 },
- { 0x0700, 0x110c, 0x0000 },
- { 0x8700, 0x1111, 0x3000 },
- { 0x8700, 0x110f, 0x2000 },
- { 0x0700, 0x110e, 0x0000 },
- { 0x0700, 0x1110, 0x0000 },
- { 0x8700, 0x1113, 0x2000 },
- { 0x0700, 0x1112, 0x0000 },
- { 0x0700, 0x1114, 0x0000 },
- { 0x8700, 0x1125, 0x5000 },
- { 0x8700, 0x111d, 0x4000 },
- { 0x8700, 0x1119, 0x3000 },
- { 0x8700, 0x1117, 0x2000 },
- { 0x0700, 0x1116, 0x0000 },
- { 0x0700, 0x1118, 0x0000 },
- { 0x8700, 0x111b, 0x2000 },
- { 0x0700, 0x111a, 0x0000 },
- { 0x0700, 0x111c, 0x0000 },
- { 0x8700, 0x1121, 0x3000 },
- { 0x8700, 0x111f, 0x2000 },
- { 0x0700, 0x111e, 0x0000 },
- { 0x0700, 0x1120, 0x0000 },
- { 0x8700, 0x1123, 0x2000 },
- { 0x0700, 0x1122, 0x0000 },
- { 0x0700, 0x1124, 0x0000 },
- { 0x8700, 0x112d, 0x4000 },
- { 0x8700, 0x1129, 0x3000 },
- { 0x8700, 0x1127, 0x2000 },
- { 0x0700, 0x1126, 0x0000 },
- { 0x0700, 0x1128, 0x0000 },
- { 0x8700, 0x112b, 0x2000 },
- { 0x0700, 0x112a, 0x0000 },
- { 0x0700, 0x112c, 0x0000 },
- { 0x8700, 0x1131, 0x3000 },
- { 0x8700, 0x112f, 0x2000 },
- { 0x0700, 0x112e, 0x0000 },
- { 0x0700, 0x1130, 0x0000 },
- { 0x8700, 0x1133, 0x2000 },
- { 0x0700, 0x1132, 0x0000 },
- { 0x0700, 0x1134, 0x0000 },
- { 0x8700, 0x1155, 0x6000 },
- { 0x8700, 0x1145, 0x5000 },
- { 0x8700, 0x113d, 0x4000 },
- { 0x8700, 0x1139, 0x3000 },
- { 0x8700, 0x1137, 0x2000 },
- { 0x0700, 0x1136, 0x0000 },
- { 0x0700, 0x1138, 0x0000 },
- { 0x8700, 0x113b, 0x2000 },
- { 0x0700, 0x113a, 0x0000 },
- { 0x0700, 0x113c, 0x0000 },
- { 0x8700, 0x1141, 0x3000 },
- { 0x8700, 0x113f, 0x2000 },
- { 0x0700, 0x113e, 0x0000 },
- { 0x0700, 0x1140, 0x0000 },
- { 0x8700, 0x1143, 0x2000 },
- { 0x0700, 0x1142, 0x0000 },
- { 0x0700, 0x1144, 0x0000 },
- { 0x8700, 0x114d, 0x4000 },
- { 0x8700, 0x1149, 0x3000 },
- { 0x8700, 0x1147, 0x2000 },
- { 0x0700, 0x1146, 0x0000 },
- { 0x0700, 0x1148, 0x0000 },
- { 0x8700, 0x114b, 0x2000 },
- { 0x0700, 0x114a, 0x0000 },
- { 0x0700, 0x114c, 0x0000 },
- { 0x8700, 0x1151, 0x3000 },
- { 0x8700, 0x114f, 0x2000 },
- { 0x0700, 0x114e, 0x0000 },
- { 0x0700, 0x1150, 0x0000 },
- { 0x8700, 0x1153, 0x2000 },
- { 0x0700, 0x1152, 0x0000 },
- { 0x0700, 0x1154, 0x0000 },
- { 0x8700, 0x116a, 0x5000 },
- { 0x8700, 0x1162, 0x4000 },
- { 0x8700, 0x1159, 0x3000 },
- { 0x8700, 0x1157, 0x2000 },
- { 0x0700, 0x1156, 0x0000 },
- { 0x0700, 0x1158, 0x0000 },
- { 0x8700, 0x1160, 0x2000 },
- { 0x0700, 0x115f, 0x0000 },
- { 0x0700, 0x1161, 0x0000 },
- { 0x8700, 0x1166, 0x3000 },
- { 0x8700, 0x1164, 0x2000 },
- { 0x0700, 0x1163, 0x0000 },
- { 0x0700, 0x1165, 0x0000 },
- { 0x8700, 0x1168, 0x2000 },
- { 0x0700, 0x1167, 0x0000 },
- { 0x0700, 0x1169, 0x0000 },
- { 0x8700, 0x1172, 0x4000 },
- { 0x8700, 0x116e, 0x3000 },
- { 0x8700, 0x116c, 0x2000 },
- { 0x0700, 0x116b, 0x0000 },
- { 0x0700, 0x116d, 0x0000 },
- { 0x8700, 0x1170, 0x2000 },
- { 0x0700, 0x116f, 0x0000 },
- { 0x0700, 0x1171, 0x0000 },
- { 0x8700, 0x1176, 0x3000 },
- { 0x8700, 0x1174, 0x2000 },
- { 0x0700, 0x1173, 0x0000 },
- { 0x0700, 0x1175, 0x0000 },
- { 0x8700, 0x1178, 0x2000 },
- { 0x0700, 0x1177, 0x0000 },
- { 0x0700, 0x1179, 0x0000 },
- { 0x8700, 0x11bf, 0x7000 },
- { 0x8700, 0x119a, 0x6000 },
- { 0x8700, 0x118a, 0x5000 },
- { 0x8700, 0x1182, 0x4000 },
- { 0x8700, 0x117e, 0x3000 },
- { 0x8700, 0x117c, 0x2000 },
- { 0x0700, 0x117b, 0x0000 },
- { 0x0700, 0x117d, 0x0000 },
- { 0x8700, 0x1180, 0x2000 },
- { 0x0700, 0x117f, 0x0000 },
- { 0x0700, 0x1181, 0x0000 },
- { 0x8700, 0x1186, 0x3000 },
- { 0x8700, 0x1184, 0x2000 },
- { 0x0700, 0x1183, 0x0000 },
- { 0x0700, 0x1185, 0x0000 },
- { 0x8700, 0x1188, 0x2000 },
- { 0x0700, 0x1187, 0x0000 },
- { 0x0700, 0x1189, 0x0000 },
- { 0x8700, 0x1192, 0x4000 },
- { 0x8700, 0x118e, 0x3000 },
- { 0x8700, 0x118c, 0x2000 },
- { 0x0700, 0x118b, 0x0000 },
- { 0x0700, 0x118d, 0x0000 },
- { 0x8700, 0x1190, 0x2000 },
- { 0x0700, 0x118f, 0x0000 },
- { 0x0700, 0x1191, 0x0000 },
- { 0x8700, 0x1196, 0x3000 },
- { 0x8700, 0x1194, 0x2000 },
- { 0x0700, 0x1193, 0x0000 },
- { 0x0700, 0x1195, 0x0000 },
- { 0x8700, 0x1198, 0x2000 },
- { 0x0700, 0x1197, 0x0000 },
- { 0x0700, 0x1199, 0x0000 },
- { 0x8700, 0x11af, 0x5000 },
- { 0x8700, 0x11a2, 0x4000 },
- { 0x8700, 0x119e, 0x3000 },
- { 0x8700, 0x119c, 0x2000 },
- { 0x0700, 0x119b, 0x0000 },
- { 0x0700, 0x119d, 0x0000 },
- { 0x8700, 0x11a0, 0x2000 },
- { 0x0700, 0x119f, 0x0000 },
- { 0x0700, 0x11a1, 0x0000 },
- { 0x8700, 0x11ab, 0x3000 },
- { 0x8700, 0x11a9, 0x2000 },
- { 0x0700, 0x11a8, 0x0000 },
- { 0x0700, 0x11aa, 0x0000 },
- { 0x8700, 0x11ad, 0x2000 },
- { 0x0700, 0x11ac, 0x0000 },
- { 0x0700, 0x11ae, 0x0000 },
- { 0x8700, 0x11b7, 0x4000 },
- { 0x8700, 0x11b3, 0x3000 },
- { 0x8700, 0x11b1, 0x2000 },
- { 0x0700, 0x11b0, 0x0000 },
- { 0x0700, 0x11b2, 0x0000 },
- { 0x8700, 0x11b5, 0x2000 },
- { 0x0700, 0x11b4, 0x0000 },
- { 0x0700, 0x11b6, 0x0000 },
- { 0x8700, 0x11bb, 0x3000 },
- { 0x8700, 0x11b9, 0x2000 },
- { 0x0700, 0x11b8, 0x0000 },
- { 0x0700, 0x11ba, 0x0000 },
- { 0x8700, 0x11bd, 0x2000 },
- { 0x0700, 0x11bc, 0x0000 },
- { 0x0700, 0x11be, 0x0000 },
- { 0x8700, 0x11df, 0x6000 },
- { 0x8700, 0x11cf, 0x5000 },
- { 0x8700, 0x11c7, 0x4000 },
- { 0x8700, 0x11c3, 0x3000 },
- { 0x8700, 0x11c1, 0x2000 },
- { 0x0700, 0x11c0, 0x0000 },
- { 0x0700, 0x11c2, 0x0000 },
- { 0x8700, 0x11c5, 0x2000 },
- { 0x0700, 0x11c4, 0x0000 },
- { 0x0700, 0x11c6, 0x0000 },
- { 0x8700, 0x11cb, 0x3000 },
- { 0x8700, 0x11c9, 0x2000 },
- { 0x0700, 0x11c8, 0x0000 },
- { 0x0700, 0x11ca, 0x0000 },
- { 0x8700, 0x11cd, 0x2000 },
- { 0x0700, 0x11cc, 0x0000 },
- { 0x0700, 0x11ce, 0x0000 },
- { 0x8700, 0x11d7, 0x4000 },
- { 0x8700, 0x11d3, 0x3000 },
- { 0x8700, 0x11d1, 0x2000 },
- { 0x0700, 0x11d0, 0x0000 },
- { 0x0700, 0x11d2, 0x0000 },
- { 0x8700, 0x11d5, 0x2000 },
- { 0x0700, 0x11d4, 0x0000 },
- { 0x0700, 0x11d6, 0x0000 },
- { 0x8700, 0x11db, 0x3000 },
- { 0x8700, 0x11d9, 0x2000 },
- { 0x0700, 0x11d8, 0x0000 },
- { 0x0700, 0x11da, 0x0000 },
- { 0x8700, 0x11dd, 0x2000 },
- { 0x0700, 0x11dc, 0x0000 },
- { 0x0700, 0x11de, 0x0000 },
- { 0x8700, 0x11ef, 0x5000 },
- { 0x8700, 0x11e7, 0x4000 },
- { 0x8700, 0x11e3, 0x3000 },
- { 0x8700, 0x11e1, 0x2000 },
- { 0x0700, 0x11e0, 0x0000 },
- { 0x0700, 0x11e2, 0x0000 },
- { 0x8700, 0x11e5, 0x2000 },
- { 0x0700, 0x11e4, 0x0000 },
- { 0x0700, 0x11e6, 0x0000 },
- { 0x8700, 0x11eb, 0x3000 },
- { 0x8700, 0x11e9, 0x2000 },
- { 0x0700, 0x11e8, 0x0000 },
- { 0x0700, 0x11ea, 0x0000 },
- { 0x8700, 0x11ed, 0x2000 },
- { 0x0700, 0x11ec, 0x0000 },
- { 0x0700, 0x11ee, 0x0000 },
- { 0x8700, 0x11f7, 0x4000 },
- { 0x8700, 0x11f3, 0x3000 },
- { 0x8700, 0x11f1, 0x2000 },
- { 0x0700, 0x11f0, 0x0000 },
- { 0x0700, 0x11f2, 0x0000 },
- { 0x8700, 0x11f5, 0x2000 },
- { 0x0700, 0x11f4, 0x0000 },
- { 0x0700, 0x11f6, 0x0000 },
- { 0x8700, 0x1201, 0x3000 },
- { 0x8700, 0x11f9, 0x2000 },
- { 0x0700, 0x11f8, 0x0000 },
- { 0x0700, 0x1200, 0x0000 },
- { 0x8700, 0x1203, 0x2000 },
- { 0x0700, 0x1202, 0x0000 },
- { 0x0700, 0x1204, 0x0000 },
- { 0x8700, 0x1292, 0x8000 },
- { 0x8700, 0x1246, 0x7000 },
- { 0x8700, 0x1226, 0x6000 },
- { 0x8700, 0x1216, 0x5000 },
- { 0x8700, 0x120e, 0x4000 },
- { 0x8700, 0x120a, 0x3000 },
- { 0x8700, 0x1208, 0x2000 },
- { 0x0700, 0x1206, 0x0000 },
- { 0x0700, 0x1209, 0x0000 },
- { 0x8700, 0x120c, 0x2000 },
- { 0x0700, 0x120b, 0x0000 },
- { 0x0700, 0x120d, 0x0000 },
- { 0x8700, 0x1212, 0x3000 },
- { 0x8700, 0x1210, 0x2000 },
- { 0x0700, 0x120f, 0x0000 },
- { 0x0700, 0x1211, 0x0000 },
- { 0x8700, 0x1214, 0x2000 },
- { 0x0700, 0x1213, 0x0000 },
- { 0x0700, 0x1215, 0x0000 },
- { 0x8700, 0x121e, 0x4000 },
- { 0x8700, 0x121a, 0x3000 },
- { 0x8700, 0x1218, 0x2000 },
- { 0x0700, 0x1217, 0x0000 },
- { 0x0700, 0x1219, 0x0000 },
- { 0x8700, 0x121c, 0x2000 },
- { 0x0700, 0x121b, 0x0000 },
- { 0x0700, 0x121d, 0x0000 },
- { 0x8700, 0x1222, 0x3000 },
- { 0x8700, 0x1220, 0x2000 },
- { 0x0700, 0x121f, 0x0000 },
- { 0x0700, 0x1221, 0x0000 },
- { 0x8700, 0x1224, 0x2000 },
- { 0x0700, 0x1223, 0x0000 },
- { 0x0700, 0x1225, 0x0000 },
- { 0x8700, 0x1236, 0x5000 },
- { 0x8700, 0x122e, 0x4000 },
- { 0x8700, 0x122a, 0x3000 },
- { 0x8700, 0x1228, 0x2000 },
- { 0x0700, 0x1227, 0x0000 },
- { 0x0700, 0x1229, 0x0000 },
- { 0x8700, 0x122c, 0x2000 },
- { 0x0700, 0x122b, 0x0000 },
- { 0x0700, 0x122d, 0x0000 },
- { 0x8700, 0x1232, 0x3000 },
- { 0x8700, 0x1230, 0x2000 },
- { 0x0700, 0x122f, 0x0000 },
- { 0x0700, 0x1231, 0x0000 },
- { 0x8700, 0x1234, 0x2000 },
- { 0x0700, 0x1233, 0x0000 },
- { 0x0700, 0x1235, 0x0000 },
- { 0x8700, 0x123e, 0x4000 },
- { 0x8700, 0x123a, 0x3000 },
- { 0x8700, 0x1238, 0x2000 },
- { 0x0700, 0x1237, 0x0000 },
- { 0x0700, 0x1239, 0x0000 },
- { 0x8700, 0x123c, 0x2000 },
- { 0x0700, 0x123b, 0x0000 },
- { 0x0700, 0x123d, 0x0000 },
- { 0x8700, 0x1242, 0x3000 },
- { 0x8700, 0x1240, 0x2000 },
- { 0x0700, 0x123f, 0x0000 },
- { 0x0700, 0x1241, 0x0000 },
- { 0x8700, 0x1244, 0x2000 },
- { 0x0700, 0x1243, 0x0000 },
- { 0x0700, 0x1245, 0x0000 },
- { 0x8700, 0x126e, 0x6000 },
- { 0x8700, 0x125c, 0x5000 },
- { 0x8700, 0x1252, 0x4000 },
- { 0x8700, 0x124c, 0x3000 },
- { 0x8700, 0x124a, 0x2000 },
- { 0x0700, 0x1248, 0x0000 },
- { 0x0700, 0x124b, 0x0000 },
- { 0x8700, 0x1250, 0x2000 },
- { 0x0700, 0x124d, 0x0000 },
- { 0x0700, 0x1251, 0x0000 },
- { 0x8700, 0x1256, 0x3000 },
- { 0x8700, 0x1254, 0x2000 },
- { 0x0700, 0x1253, 0x0000 },
- { 0x0700, 0x1255, 0x0000 },
- { 0x8700, 0x125a, 0x2000 },
- { 0x0700, 0x1258, 0x0000 },
- { 0x0700, 0x125b, 0x0000 },
- { 0x8700, 0x1266, 0x4000 },
- { 0x8700, 0x1262, 0x3000 },
- { 0x8700, 0x1260, 0x2000 },
- { 0x0700, 0x125d, 0x0000 },
- { 0x0700, 0x1261, 0x0000 },
- { 0x8700, 0x1264, 0x2000 },
- { 0x0700, 0x1263, 0x0000 },
- { 0x0700, 0x1265, 0x0000 },
- { 0x8700, 0x126a, 0x3000 },
- { 0x8700, 0x1268, 0x2000 },
- { 0x0700, 0x1267, 0x0000 },
- { 0x0700, 0x1269, 0x0000 },
- { 0x8700, 0x126c, 0x2000 },
- { 0x0700, 0x126b, 0x0000 },
- { 0x0700, 0x126d, 0x0000 },
- { 0x8700, 0x127e, 0x5000 },
- { 0x8700, 0x1276, 0x4000 },
- { 0x8700, 0x1272, 0x3000 },
- { 0x8700, 0x1270, 0x2000 },
- { 0x0700, 0x126f, 0x0000 },
- { 0x0700, 0x1271, 0x0000 },
- { 0x8700, 0x1274, 0x2000 },
- { 0x0700, 0x1273, 0x0000 },
- { 0x0700, 0x1275, 0x0000 },
- { 0x8700, 0x127a, 0x3000 },
- { 0x8700, 0x1278, 0x2000 },
- { 0x0700, 0x1277, 0x0000 },
- { 0x0700, 0x1279, 0x0000 },
- { 0x8700, 0x127c, 0x2000 },
- { 0x0700, 0x127b, 0x0000 },
- { 0x0700, 0x127d, 0x0000 },
- { 0x8700, 0x1286, 0x4000 },
- { 0x8700, 0x1282, 0x3000 },
- { 0x8700, 0x1280, 0x2000 },
- { 0x0700, 0x127f, 0x0000 },
- { 0x0700, 0x1281, 0x0000 },
- { 0x8700, 0x1284, 0x2000 },
- { 0x0700, 0x1283, 0x0000 },
- { 0x0700, 0x1285, 0x0000 },
- { 0x8700, 0x128c, 0x3000 },
- { 0x8700, 0x128a, 0x2000 },
- { 0x0700, 0x1288, 0x0000 },
- { 0x0700, 0x128b, 0x0000 },
- { 0x8700, 0x1290, 0x2000 },
- { 0x0700, 0x128d, 0x0000 },
- { 0x0700, 0x1291, 0x0000 },
- { 0x8700, 0x12dc, 0x7000 },
- { 0x8700, 0x12b4, 0x6000 },
- { 0x8700, 0x12a2, 0x5000 },
- { 0x8700, 0x129a, 0x4000 },
- { 0x8700, 0x1296, 0x3000 },
- { 0x8700, 0x1294, 0x2000 },
- { 0x0700, 0x1293, 0x0000 },
- { 0x0700, 0x1295, 0x0000 },
- { 0x8700, 0x1298, 0x2000 },
- { 0x0700, 0x1297, 0x0000 },
- { 0x0700, 0x1299, 0x0000 },
- { 0x8700, 0x129e, 0x3000 },
- { 0x8700, 0x129c, 0x2000 },
- { 0x0700, 0x129b, 0x0000 },
- { 0x0700, 0x129d, 0x0000 },
- { 0x8700, 0x12a0, 0x2000 },
- { 0x0700, 0x129f, 0x0000 },
- { 0x0700, 0x12a1, 0x0000 },
- { 0x8700, 0x12aa, 0x4000 },
- { 0x8700, 0x12a6, 0x3000 },
- { 0x8700, 0x12a4, 0x2000 },
- { 0x0700, 0x12a3, 0x0000 },
- { 0x0700, 0x12a5, 0x0000 },
- { 0x8700, 0x12a8, 0x2000 },
- { 0x0700, 0x12a7, 0x0000 },
- { 0x0700, 0x12a9, 0x0000 },
- { 0x8700, 0x12ae, 0x3000 },
- { 0x8700, 0x12ac, 0x2000 },
- { 0x0700, 0x12ab, 0x0000 },
- { 0x0700, 0x12ad, 0x0000 },
- { 0x8700, 0x12b2, 0x2000 },
- { 0x0700, 0x12b0, 0x0000 },
- { 0x0700, 0x12b3, 0x0000 },
- { 0x8700, 0x12ca, 0x5000 },
- { 0x8700, 0x12be, 0x4000 },
- { 0x8700, 0x12ba, 0x3000 },
- { 0x8700, 0x12b8, 0x2000 },
- { 0x0700, 0x12b5, 0x0000 },
- { 0x0700, 0x12b9, 0x0000 },
- { 0x8700, 0x12bc, 0x2000 },
- { 0x0700, 0x12bb, 0x0000 },
- { 0x0700, 0x12bd, 0x0000 },
- { 0x8700, 0x12c4, 0x3000 },
- { 0x8700, 0x12c2, 0x2000 },
- { 0x0700, 0x12c0, 0x0000 },
- { 0x0700, 0x12c3, 0x0000 },
- { 0x8700, 0x12c8, 0x2000 },
- { 0x0700, 0x12c5, 0x0000 },
- { 0x0700, 0x12c9, 0x0000 },
- { 0x8700, 0x12d3, 0x4000 },
- { 0x8700, 0x12ce, 0x3000 },
- { 0x8700, 0x12cc, 0x2000 },
- { 0x0700, 0x12cb, 0x0000 },
- { 0x0700, 0x12cd, 0x0000 },
- { 0x8700, 0x12d1, 0x2000 },
- { 0x0700, 0x12d0, 0x0000 },
- { 0x0700, 0x12d2, 0x0000 },
- { 0x8700, 0x12d8, 0x3000 },
- { 0x8700, 0x12d5, 0x2000 },
- { 0x0700, 0x12d4, 0x0000 },
- { 0x0700, 0x12d6, 0x0000 },
- { 0x8700, 0x12da, 0x2000 },
- { 0x0700, 0x12d9, 0x0000 },
- { 0x0700, 0x12db, 0x0000 },
- { 0x8700, 0x12fd, 0x6000 },
- { 0x8700, 0x12ec, 0x5000 },
- { 0x8700, 0x12e4, 0x4000 },
- { 0x8700, 0x12e0, 0x3000 },
- { 0x8700, 0x12de, 0x2000 },
- { 0x0700, 0x12dd, 0x0000 },
- { 0x0700, 0x12df, 0x0000 },
- { 0x8700, 0x12e2, 0x2000 },
- { 0x0700, 0x12e1, 0x0000 },
- { 0x0700, 0x12e3, 0x0000 },
- { 0x8700, 0x12e8, 0x3000 },
- { 0x8700, 0x12e6, 0x2000 },
- { 0x0700, 0x12e5, 0x0000 },
- { 0x0700, 0x12e7, 0x0000 },
- { 0x8700, 0x12ea, 0x2000 },
- { 0x0700, 0x12e9, 0x0000 },
- { 0x0700, 0x12eb, 0x0000 },
- { 0x8700, 0x12f5, 0x4000 },
- { 0x8700, 0x12f1, 0x3000 },
- { 0x8700, 0x12ee, 0x2000 },
- { 0x0700, 0x12ed, 0x0000 },
- { 0x0700, 0x12f0, 0x0000 },
- { 0x8700, 0x12f3, 0x2000 },
- { 0x0700, 0x12f2, 0x0000 },
- { 0x0700, 0x12f4, 0x0000 },
- { 0x8700, 0x12f9, 0x3000 },
- { 0x8700, 0x12f7, 0x2000 },
- { 0x0700, 0x12f6, 0x0000 },
- { 0x0700, 0x12f8, 0x0000 },
- { 0x8700, 0x12fb, 0x2000 },
- { 0x0700, 0x12fa, 0x0000 },
- { 0x0700, 0x12fc, 0x0000 },
- { 0x8700, 0x130d, 0x5000 },
- { 0x8700, 0x1305, 0x4000 },
- { 0x8700, 0x1301, 0x3000 },
- { 0x8700, 0x12ff, 0x2000 },
- { 0x0700, 0x12fe, 0x0000 },
- { 0x0700, 0x1300, 0x0000 },
- { 0x8700, 0x1303, 0x2000 },
- { 0x0700, 0x1302, 0x0000 },
- { 0x0700, 0x1304, 0x0000 },
- { 0x8700, 0x1309, 0x3000 },
- { 0x8700, 0x1307, 0x2000 },
- { 0x0700, 0x1306, 0x0000 },
- { 0x0700, 0x1308, 0x0000 },
- { 0x8700, 0x130b, 0x2000 },
- { 0x0700, 0x130a, 0x0000 },
- { 0x0700, 0x130c, 0x0000 },
- { 0x8700, 0x1319, 0x4000 },
- { 0x8700, 0x1313, 0x3000 },
- { 0x8700, 0x1310, 0x2000 },
- { 0x0700, 0x130e, 0x0000 },
- { 0x0700, 0x1312, 0x0000 },
- { 0x8700, 0x1315, 0x2000 },
- { 0x0700, 0x1314, 0x0000 },
- { 0x0700, 0x1318, 0x0000 },
- { 0x8700, 0x131d, 0x3000 },
- { 0x8700, 0x131b, 0x2000 },
- { 0x0700, 0x131a, 0x0000 },
- { 0x0700, 0x131c, 0x0000 },
- { 0x8700, 0x1320, 0x2000 },
- { 0x0700, 0x131e, 0x0000 },
- { 0x0700, 0x1321, 0x0000 },
- { 0x8700, 0x1458, 0x9000 },
- { 0x8700, 0x13cc, 0x8000 },
- { 0x8d00, 0x1369, 0x7000 },
- { 0x8700, 0x1342, 0x6000 },
- { 0x8700, 0x1332, 0x5000 },
- { 0x8700, 0x132a, 0x4000 },
- { 0x8700, 0x1326, 0x3000 },
- { 0x8700, 0x1324, 0x2000 },
- { 0x0700, 0x1323, 0x0000 },
- { 0x0700, 0x1325, 0x0000 },
- { 0x8700, 0x1328, 0x2000 },
- { 0x0700, 0x1327, 0x0000 },
- { 0x0700, 0x1329, 0x0000 },
- { 0x8700, 0x132e, 0x3000 },
- { 0x8700, 0x132c, 0x2000 },
- { 0x0700, 0x132b, 0x0000 },
- { 0x0700, 0x132d, 0x0000 },
- { 0x8700, 0x1330, 0x2000 },
- { 0x0700, 0x132f, 0x0000 },
- { 0x0700, 0x1331, 0x0000 },
- { 0x8700, 0x133a, 0x4000 },
- { 0x8700, 0x1336, 0x3000 },
- { 0x8700, 0x1334, 0x2000 },
- { 0x0700, 0x1333, 0x0000 },
- { 0x0700, 0x1335, 0x0000 },
- { 0x8700, 0x1338, 0x2000 },
- { 0x0700, 0x1337, 0x0000 },
- { 0x0700, 0x1339, 0x0000 },
- { 0x8700, 0x133e, 0x3000 },
- { 0x8700, 0x133c, 0x2000 },
- { 0x0700, 0x133b, 0x0000 },
- { 0x0700, 0x133d, 0x0000 },
- { 0x8700, 0x1340, 0x2000 },
- { 0x0700, 0x133f, 0x0000 },
- { 0x0700, 0x1341, 0x0000 },
- { 0x8700, 0x1353, 0x5000 },
- { 0x8700, 0x134b, 0x4000 },
- { 0x8700, 0x1346, 0x3000 },
- { 0x8700, 0x1344, 0x2000 },
- { 0x0700, 0x1343, 0x0000 },
- { 0x0700, 0x1345, 0x0000 },
- { 0x8700, 0x1349, 0x2000 },
- { 0x0700, 0x1348, 0x0000 },
- { 0x0700, 0x134a, 0x0000 },
- { 0x8700, 0x134f, 0x3000 },
- { 0x8700, 0x134d, 0x2000 },
- { 0x0700, 0x134c, 0x0000 },
- { 0x0700, 0x134e, 0x0000 },
- { 0x8700, 0x1351, 0x2000 },
- { 0x0700, 0x1350, 0x0000 },
- { 0x0700, 0x1352, 0x0000 },
- { 0x9500, 0x1361, 0x4000 },
- { 0x8700, 0x1357, 0x3000 },
- { 0x8700, 0x1355, 0x2000 },
- { 0x0700, 0x1354, 0x0000 },
- { 0x0700, 0x1356, 0x0000 },
- { 0x8700, 0x1359, 0x2000 },
- { 0x0700, 0x1358, 0x0000 },
- { 0x0700, 0x135a, 0x0000 },
- { 0x9500, 0x1365, 0x3000 },
- { 0x9500, 0x1363, 0x2000 },
- { 0x1500, 0x1362, 0x0000 },
- { 0x1500, 0x1364, 0x0000 },
- { 0x9500, 0x1367, 0x2000 },
- { 0x1500, 0x1366, 0x0000 },
- { 0x1500, 0x1368, 0x0000 },
- { 0x8700, 0x13ac, 0x6000 },
- { 0x8f00, 0x1379, 0x5000 },
- { 0x8d00, 0x1371, 0x4000 },
- { 0x8d00, 0x136d, 0x3000 },
- { 0x8d00, 0x136b, 0x2000 },
- { 0x0d00, 0x136a, 0x0000 },
- { 0x0d00, 0x136c, 0x0000 },
- { 0x8d00, 0x136f, 0x2000 },
- { 0x0d00, 0x136e, 0x0000 },
- { 0x0d00, 0x1370, 0x0000 },
- { 0x8f00, 0x1375, 0x3000 },
- { 0x8f00, 0x1373, 0x2000 },
- { 0x0f00, 0x1372, 0x0000 },
- { 0x0f00, 0x1374, 0x0000 },
- { 0x8f00, 0x1377, 0x2000 },
- { 0x0f00, 0x1376, 0x0000 },
- { 0x0f00, 0x1378, 0x0000 },
- { 0x8700, 0x13a4, 0x4000 },
- { 0x8700, 0x13a0, 0x3000 },
- { 0x8f00, 0x137b, 0x2000 },
- { 0x0f00, 0x137a, 0x0000 },
- { 0x0f00, 0x137c, 0x0000 },
- { 0x8700, 0x13a2, 0x2000 },
- { 0x0700, 0x13a1, 0x0000 },
- { 0x0700, 0x13a3, 0x0000 },
- { 0x8700, 0x13a8, 0x3000 },
- { 0x8700, 0x13a6, 0x2000 },
- { 0x0700, 0x13a5, 0x0000 },
- { 0x0700, 0x13a7, 0x0000 },
- { 0x8700, 0x13aa, 0x2000 },
- { 0x0700, 0x13a9, 0x0000 },
- { 0x0700, 0x13ab, 0x0000 },
- { 0x8700, 0x13bc, 0x5000 },
- { 0x8700, 0x13b4, 0x4000 },
- { 0x8700, 0x13b0, 0x3000 },
- { 0x8700, 0x13ae, 0x2000 },
- { 0x0700, 0x13ad, 0x0000 },
- { 0x0700, 0x13af, 0x0000 },
- { 0x8700, 0x13b2, 0x2000 },
- { 0x0700, 0x13b1, 0x0000 },
- { 0x0700, 0x13b3, 0x0000 },
- { 0x8700, 0x13b8, 0x3000 },
- { 0x8700, 0x13b6, 0x2000 },
- { 0x0700, 0x13b5, 0x0000 },
- { 0x0700, 0x13b7, 0x0000 },
- { 0x8700, 0x13ba, 0x2000 },
- { 0x0700, 0x13b9, 0x0000 },
- { 0x0700, 0x13bb, 0x0000 },
- { 0x8700, 0x13c4, 0x4000 },
- { 0x8700, 0x13c0, 0x3000 },
- { 0x8700, 0x13be, 0x2000 },
- { 0x0700, 0x13bd, 0x0000 },
- { 0x0700, 0x13bf, 0x0000 },
- { 0x8700, 0x13c2, 0x2000 },
- { 0x0700, 0x13c1, 0x0000 },
- { 0x0700, 0x13c3, 0x0000 },
- { 0x8700, 0x13c8, 0x3000 },
- { 0x8700, 0x13c6, 0x2000 },
- { 0x0700, 0x13c5, 0x0000 },
- { 0x0700, 0x13c7, 0x0000 },
- { 0x8700, 0x13ca, 0x2000 },
- { 0x0700, 0x13c9, 0x0000 },
- { 0x0700, 0x13cb, 0x0000 },
- { 0x8700, 0x1418, 0x7000 },
- { 0x8700, 0x13ec, 0x6000 },
- { 0x8700, 0x13dc, 0x5000 },
- { 0x8700, 0x13d4, 0x4000 },
- { 0x8700, 0x13d0, 0x3000 },
- { 0x8700, 0x13ce, 0x2000 },
- { 0x0700, 0x13cd, 0x0000 },
- { 0x0700, 0x13cf, 0x0000 },
- { 0x8700, 0x13d2, 0x2000 },
- { 0x0700, 0x13d1, 0x0000 },
- { 0x0700, 0x13d3, 0x0000 },
- { 0x8700, 0x13d8, 0x3000 },
- { 0x8700, 0x13d6, 0x2000 },
- { 0x0700, 0x13d5, 0x0000 },
- { 0x0700, 0x13d7, 0x0000 },
- { 0x8700, 0x13da, 0x2000 },
- { 0x0700, 0x13d9, 0x0000 },
- { 0x0700, 0x13db, 0x0000 },
- { 0x8700, 0x13e4, 0x4000 },
- { 0x8700, 0x13e0, 0x3000 },
- { 0x8700, 0x13de, 0x2000 },
- { 0x0700, 0x13dd, 0x0000 },
- { 0x0700, 0x13df, 0x0000 },
- { 0x8700, 0x13e2, 0x2000 },
- { 0x0700, 0x13e1, 0x0000 },
- { 0x0700, 0x13e3, 0x0000 },
- { 0x8700, 0x13e8, 0x3000 },
- { 0x8700, 0x13e6, 0x2000 },
- { 0x0700, 0x13e5, 0x0000 },
- { 0x0700, 0x13e7, 0x0000 },
- { 0x8700, 0x13ea, 0x2000 },
- { 0x0700, 0x13e9, 0x0000 },
- { 0x0700, 0x13eb, 0x0000 },
- { 0x8700, 0x1408, 0x5000 },
- { 0x8700, 0x13f4, 0x4000 },
- { 0x8700, 0x13f0, 0x3000 },
- { 0x8700, 0x13ee, 0x2000 },
- { 0x0700, 0x13ed, 0x0000 },
- { 0x0700, 0x13ef, 0x0000 },
- { 0x8700, 0x13f2, 0x2000 },
- { 0x0700, 0x13f1, 0x0000 },
- { 0x0700, 0x13f3, 0x0000 },
- { 0x8700, 0x1404, 0x3000 },
- { 0x8700, 0x1402, 0x2000 },
- { 0x0700, 0x1401, 0x0000 },
- { 0x0700, 0x1403, 0x0000 },
- { 0x8700, 0x1406, 0x2000 },
- { 0x0700, 0x1405, 0x0000 },
- { 0x0700, 0x1407, 0x0000 },
- { 0x8700, 0x1410, 0x4000 },
- { 0x8700, 0x140c, 0x3000 },
- { 0x8700, 0x140a, 0x2000 },
- { 0x0700, 0x1409, 0x0000 },
- { 0x0700, 0x140b, 0x0000 },
- { 0x8700, 0x140e, 0x2000 },
- { 0x0700, 0x140d, 0x0000 },
- { 0x0700, 0x140f, 0x0000 },
- { 0x8700, 0x1414, 0x3000 },
- { 0x8700, 0x1412, 0x2000 },
- { 0x0700, 0x1411, 0x0000 },
- { 0x0700, 0x1413, 0x0000 },
- { 0x8700, 0x1416, 0x2000 },
- { 0x0700, 0x1415, 0x0000 },
- { 0x0700, 0x1417, 0x0000 },
- { 0x8700, 0x1438, 0x6000 },
- { 0x8700, 0x1428, 0x5000 },
- { 0x8700, 0x1420, 0x4000 },
- { 0x8700, 0x141c, 0x3000 },
- { 0x8700, 0x141a, 0x2000 },
- { 0x0700, 0x1419, 0x0000 },
- { 0x0700, 0x141b, 0x0000 },
- { 0x8700, 0x141e, 0x2000 },
- { 0x0700, 0x141d, 0x0000 },
- { 0x0700, 0x141f, 0x0000 },
- { 0x8700, 0x1424, 0x3000 },
- { 0x8700, 0x1422, 0x2000 },
- { 0x0700, 0x1421, 0x0000 },
- { 0x0700, 0x1423, 0x0000 },
- { 0x8700, 0x1426, 0x2000 },
- { 0x0700, 0x1425, 0x0000 },
- { 0x0700, 0x1427, 0x0000 },
- { 0x8700, 0x1430, 0x4000 },
- { 0x8700, 0x142c, 0x3000 },
- { 0x8700, 0x142a, 0x2000 },
- { 0x0700, 0x1429, 0x0000 },
- { 0x0700, 0x142b, 0x0000 },
- { 0x8700, 0x142e, 0x2000 },
- { 0x0700, 0x142d, 0x0000 },
- { 0x0700, 0x142f, 0x0000 },
- { 0x8700, 0x1434, 0x3000 },
- { 0x8700, 0x1432, 0x2000 },
- { 0x0700, 0x1431, 0x0000 },
- { 0x0700, 0x1433, 0x0000 },
- { 0x8700, 0x1436, 0x2000 },
- { 0x0700, 0x1435, 0x0000 },
- { 0x0700, 0x1437, 0x0000 },
- { 0x8700, 0x1448, 0x5000 },
- { 0x8700, 0x1440, 0x4000 },
- { 0x8700, 0x143c, 0x3000 },
- { 0x8700, 0x143a, 0x2000 },
- { 0x0700, 0x1439, 0x0000 },
- { 0x0700, 0x143b, 0x0000 },
- { 0x8700, 0x143e, 0x2000 },
- { 0x0700, 0x143d, 0x0000 },
- { 0x0700, 0x143f, 0x0000 },
- { 0x8700, 0x1444, 0x3000 },
- { 0x8700, 0x1442, 0x2000 },
- { 0x0700, 0x1441, 0x0000 },
- { 0x0700, 0x1443, 0x0000 },
- { 0x8700, 0x1446, 0x2000 },
- { 0x0700, 0x1445, 0x0000 },
- { 0x0700, 0x1447, 0x0000 },
- { 0x8700, 0x1450, 0x4000 },
- { 0x8700, 0x144c, 0x3000 },
- { 0x8700, 0x144a, 0x2000 },
- { 0x0700, 0x1449, 0x0000 },
- { 0x0700, 0x144b, 0x0000 },
- { 0x8700, 0x144e, 0x2000 },
- { 0x0700, 0x144d, 0x0000 },
- { 0x0700, 0x144f, 0x0000 },
- { 0x8700, 0x1454, 0x3000 },
- { 0x8700, 0x1452, 0x2000 },
- { 0x0700, 0x1451, 0x0000 },
- { 0x0700, 0x1453, 0x0000 },
- { 0x8700, 0x1456, 0x2000 },
- { 0x0700, 0x1455, 0x0000 },
- { 0x0700, 0x1457, 0x0000 },
- { 0x8700, 0x14d8, 0x8000 },
- { 0x8700, 0x1498, 0x7000 },
- { 0x8700, 0x1478, 0x6000 },
- { 0x8700, 0x1468, 0x5000 },
- { 0x8700, 0x1460, 0x4000 },
- { 0x8700, 0x145c, 0x3000 },
- { 0x8700, 0x145a, 0x2000 },
- { 0x0700, 0x1459, 0x0000 },
- { 0x0700, 0x145b, 0x0000 },
- { 0x8700, 0x145e, 0x2000 },
- { 0x0700, 0x145d, 0x0000 },
- { 0x0700, 0x145f, 0x0000 },
- { 0x8700, 0x1464, 0x3000 },
- { 0x8700, 0x1462, 0x2000 },
- { 0x0700, 0x1461, 0x0000 },
- { 0x0700, 0x1463, 0x0000 },
- { 0x8700, 0x1466, 0x2000 },
- { 0x0700, 0x1465, 0x0000 },
- { 0x0700, 0x1467, 0x0000 },
- { 0x8700, 0x1470, 0x4000 },
- { 0x8700, 0x146c, 0x3000 },
- { 0x8700, 0x146a, 0x2000 },
- { 0x0700, 0x1469, 0x0000 },
- { 0x0700, 0x146b, 0x0000 },
- { 0x8700, 0x146e, 0x2000 },
- { 0x0700, 0x146d, 0x0000 },
- { 0x0700, 0x146f, 0x0000 },
- { 0x8700, 0x1474, 0x3000 },
- { 0x8700, 0x1472, 0x2000 },
- { 0x0700, 0x1471, 0x0000 },
- { 0x0700, 0x1473, 0x0000 },
- { 0x8700, 0x1476, 0x2000 },
- { 0x0700, 0x1475, 0x0000 },
- { 0x0700, 0x1477, 0x0000 },
- { 0x8700, 0x1488, 0x5000 },
- { 0x8700, 0x1480, 0x4000 },
- { 0x8700, 0x147c, 0x3000 },
- { 0x8700, 0x147a, 0x2000 },
- { 0x0700, 0x1479, 0x0000 },
- { 0x0700, 0x147b, 0x0000 },
- { 0x8700, 0x147e, 0x2000 },
- { 0x0700, 0x147d, 0x0000 },
- { 0x0700, 0x147f, 0x0000 },
- { 0x8700, 0x1484, 0x3000 },
- { 0x8700, 0x1482, 0x2000 },
- { 0x0700, 0x1481, 0x0000 },
- { 0x0700, 0x1483, 0x0000 },
- { 0x8700, 0x1486, 0x2000 },
- { 0x0700, 0x1485, 0x0000 },
- { 0x0700, 0x1487, 0x0000 },
- { 0x8700, 0x1490, 0x4000 },
- { 0x8700, 0x148c, 0x3000 },
- { 0x8700, 0x148a, 0x2000 },
- { 0x0700, 0x1489, 0x0000 },
- { 0x0700, 0x148b, 0x0000 },
- { 0x8700, 0x148e, 0x2000 },
- { 0x0700, 0x148d, 0x0000 },
- { 0x0700, 0x148f, 0x0000 },
- { 0x8700, 0x1494, 0x3000 },
- { 0x8700, 0x1492, 0x2000 },
- { 0x0700, 0x1491, 0x0000 },
- { 0x0700, 0x1493, 0x0000 },
- { 0x8700, 0x1496, 0x2000 },
- { 0x0700, 0x1495, 0x0000 },
- { 0x0700, 0x1497, 0x0000 },
- { 0x8700, 0x14b8, 0x6000 },
- { 0x8700, 0x14a8, 0x5000 },
- { 0x8700, 0x14a0, 0x4000 },
- { 0x8700, 0x149c, 0x3000 },
- { 0x8700, 0x149a, 0x2000 },
- { 0x0700, 0x1499, 0x0000 },
- { 0x0700, 0x149b, 0x0000 },
- { 0x8700, 0x149e, 0x2000 },
- { 0x0700, 0x149d, 0x0000 },
- { 0x0700, 0x149f, 0x0000 },
- { 0x8700, 0x14a4, 0x3000 },
- { 0x8700, 0x14a2, 0x2000 },
- { 0x0700, 0x14a1, 0x0000 },
- { 0x0700, 0x14a3, 0x0000 },
- { 0x8700, 0x14a6, 0x2000 },
- { 0x0700, 0x14a5, 0x0000 },
- { 0x0700, 0x14a7, 0x0000 },
- { 0x8700, 0x14b0, 0x4000 },
- { 0x8700, 0x14ac, 0x3000 },
- { 0x8700, 0x14aa, 0x2000 },
- { 0x0700, 0x14a9, 0x0000 },
- { 0x0700, 0x14ab, 0x0000 },
- { 0x8700, 0x14ae, 0x2000 },
- { 0x0700, 0x14ad, 0x0000 },
- { 0x0700, 0x14af, 0x0000 },
- { 0x8700, 0x14b4, 0x3000 },
- { 0x8700, 0x14b2, 0x2000 },
- { 0x0700, 0x14b1, 0x0000 },
- { 0x0700, 0x14b3, 0x0000 },
- { 0x8700, 0x14b6, 0x2000 },
- { 0x0700, 0x14b5, 0x0000 },
- { 0x0700, 0x14b7, 0x0000 },
- { 0x8700, 0x14c8, 0x5000 },
- { 0x8700, 0x14c0, 0x4000 },
- { 0x8700, 0x14bc, 0x3000 },
- { 0x8700, 0x14ba, 0x2000 },
- { 0x0700, 0x14b9, 0x0000 },
- { 0x0700, 0x14bb, 0x0000 },
- { 0x8700, 0x14be, 0x2000 },
- { 0x0700, 0x14bd, 0x0000 },
- { 0x0700, 0x14bf, 0x0000 },
- { 0x8700, 0x14c4, 0x3000 },
- { 0x8700, 0x14c2, 0x2000 },
- { 0x0700, 0x14c1, 0x0000 },
- { 0x0700, 0x14c3, 0x0000 },
- { 0x8700, 0x14c6, 0x2000 },
- { 0x0700, 0x14c5, 0x0000 },
- { 0x0700, 0x14c7, 0x0000 },
- { 0x8700, 0x14d0, 0x4000 },
- { 0x8700, 0x14cc, 0x3000 },
- { 0x8700, 0x14ca, 0x2000 },
- { 0x0700, 0x14c9, 0x0000 },
- { 0x0700, 0x14cb, 0x0000 },
- { 0x8700, 0x14ce, 0x2000 },
- { 0x0700, 0x14cd, 0x0000 },
- { 0x0700, 0x14cf, 0x0000 },
- { 0x8700, 0x14d4, 0x3000 },
- { 0x8700, 0x14d2, 0x2000 },
- { 0x0700, 0x14d1, 0x0000 },
- { 0x0700, 0x14d3, 0x0000 },
- { 0x8700, 0x14d6, 0x2000 },
- { 0x0700, 0x14d5, 0x0000 },
- { 0x0700, 0x14d7, 0x0000 },
- { 0x8700, 0x1518, 0x7000 },
- { 0x8700, 0x14f8, 0x6000 },
- { 0x8700, 0x14e8, 0x5000 },
- { 0x8700, 0x14e0, 0x4000 },
- { 0x8700, 0x14dc, 0x3000 },
- { 0x8700, 0x14da, 0x2000 },
- { 0x0700, 0x14d9, 0x0000 },
- { 0x0700, 0x14db, 0x0000 },
- { 0x8700, 0x14de, 0x2000 },
- { 0x0700, 0x14dd, 0x0000 },
- { 0x0700, 0x14df, 0x0000 },
- { 0x8700, 0x14e4, 0x3000 },
- { 0x8700, 0x14e2, 0x2000 },
- { 0x0700, 0x14e1, 0x0000 },
- { 0x0700, 0x14e3, 0x0000 },
- { 0x8700, 0x14e6, 0x2000 },
- { 0x0700, 0x14e5, 0x0000 },
- { 0x0700, 0x14e7, 0x0000 },
- { 0x8700, 0x14f0, 0x4000 },
- { 0x8700, 0x14ec, 0x3000 },
- { 0x8700, 0x14ea, 0x2000 },
- { 0x0700, 0x14e9, 0x0000 },
- { 0x0700, 0x14eb, 0x0000 },
- { 0x8700, 0x14ee, 0x2000 },
- { 0x0700, 0x14ed, 0x0000 },
- { 0x0700, 0x14ef, 0x0000 },
- { 0x8700, 0x14f4, 0x3000 },
- { 0x8700, 0x14f2, 0x2000 },
- { 0x0700, 0x14f1, 0x0000 },
- { 0x0700, 0x14f3, 0x0000 },
- { 0x8700, 0x14f6, 0x2000 },
- { 0x0700, 0x14f5, 0x0000 },
- { 0x0700, 0x14f7, 0x0000 },
- { 0x8700, 0x1508, 0x5000 },
- { 0x8700, 0x1500, 0x4000 },
- { 0x8700, 0x14fc, 0x3000 },
- { 0x8700, 0x14fa, 0x2000 },
- { 0x0700, 0x14f9, 0x0000 },
- { 0x0700, 0x14fb, 0x0000 },
- { 0x8700, 0x14fe, 0x2000 },
- { 0x0700, 0x14fd, 0x0000 },
- { 0x0700, 0x14ff, 0x0000 },
- { 0x8700, 0x1504, 0x3000 },
- { 0x8700, 0x1502, 0x2000 },
- { 0x0700, 0x1501, 0x0000 },
- { 0x0700, 0x1503, 0x0000 },
- { 0x8700, 0x1506, 0x2000 },
- { 0x0700, 0x1505, 0x0000 },
- { 0x0700, 0x1507, 0x0000 },
- { 0x8700, 0x1510, 0x4000 },
- { 0x8700, 0x150c, 0x3000 },
- { 0x8700, 0x150a, 0x2000 },
- { 0x0700, 0x1509, 0x0000 },
- { 0x0700, 0x150b, 0x0000 },
- { 0x8700, 0x150e, 0x2000 },
- { 0x0700, 0x150d, 0x0000 },
- { 0x0700, 0x150f, 0x0000 },
- { 0x8700, 0x1514, 0x3000 },
- { 0x8700, 0x1512, 0x2000 },
- { 0x0700, 0x1511, 0x0000 },
- { 0x0700, 0x1513, 0x0000 },
- { 0x8700, 0x1516, 0x2000 },
- { 0x0700, 0x1515, 0x0000 },
- { 0x0700, 0x1517, 0x0000 },
- { 0x8700, 0x1538, 0x6000 },
- { 0x8700, 0x1528, 0x5000 },
- { 0x8700, 0x1520, 0x4000 },
- { 0x8700, 0x151c, 0x3000 },
- { 0x8700, 0x151a, 0x2000 },
- { 0x0700, 0x1519, 0x0000 },
- { 0x0700, 0x151b, 0x0000 },
- { 0x8700, 0x151e, 0x2000 },
- { 0x0700, 0x151d, 0x0000 },
- { 0x0700, 0x151f, 0x0000 },
- { 0x8700, 0x1524, 0x3000 },
- { 0x8700, 0x1522, 0x2000 },
- { 0x0700, 0x1521, 0x0000 },
- { 0x0700, 0x1523, 0x0000 },
- { 0x8700, 0x1526, 0x2000 },
- { 0x0700, 0x1525, 0x0000 },
- { 0x0700, 0x1527, 0x0000 },
- { 0x8700, 0x1530, 0x4000 },
- { 0x8700, 0x152c, 0x3000 },
- { 0x8700, 0x152a, 0x2000 },
- { 0x0700, 0x1529, 0x0000 },
- { 0x0700, 0x152b, 0x0000 },
- { 0x8700, 0x152e, 0x2000 },
- { 0x0700, 0x152d, 0x0000 },
- { 0x0700, 0x152f, 0x0000 },
- { 0x8700, 0x1534, 0x3000 },
- { 0x8700, 0x1532, 0x2000 },
- { 0x0700, 0x1531, 0x0000 },
- { 0x0700, 0x1533, 0x0000 },
- { 0x8700, 0x1536, 0x2000 },
- { 0x0700, 0x1535, 0x0000 },
- { 0x0700, 0x1537, 0x0000 },
- { 0x8700, 0x1548, 0x5000 },
- { 0x8700, 0x1540, 0x4000 },
- { 0x8700, 0x153c, 0x3000 },
- { 0x8700, 0x153a, 0x2000 },
- { 0x0700, 0x1539, 0x0000 },
- { 0x0700, 0x153b, 0x0000 },
- { 0x8700, 0x153e, 0x2000 },
- { 0x0700, 0x153d, 0x0000 },
- { 0x0700, 0x153f, 0x0000 },
- { 0x8700, 0x1544, 0x3000 },
- { 0x8700, 0x1542, 0x2000 },
- { 0x0700, 0x1541, 0x0000 },
- { 0x0700, 0x1543, 0x0000 },
- { 0x8700, 0x1546, 0x2000 },
- { 0x0700, 0x1545, 0x0000 },
- { 0x0700, 0x1547, 0x0000 },
- { 0x8700, 0x1550, 0x4000 },
- { 0x8700, 0x154c, 0x3000 },
- { 0x8700, 0x154a, 0x2000 },
- { 0x0700, 0x1549, 0x0000 },
- { 0x0700, 0x154b, 0x0000 },
- { 0x8700, 0x154e, 0x2000 },
- { 0x0700, 0x154d, 0x0000 },
- { 0x0700, 0x154f, 0x0000 },
- { 0x8700, 0x1554, 0x3000 },
- { 0x8700, 0x1552, 0x2000 },
- { 0x0700, 0x1551, 0x0000 },
- { 0x0700, 0x1553, 0x0000 },
- { 0x8700, 0x1556, 0x2000 },
- { 0x0700, 0x1555, 0x0000 },
- { 0x0700, 0x1557, 0x0000 },
- { 0x9900, 0x22ae, 0xc000 },
- { 0x8900, 0x1e24, 0xb001 },
- { 0x8700, 0x17a2, 0xa000 },
- { 0x8700, 0x1658, 0x9000 },
- { 0x8700, 0x15d8, 0x8000 },
- { 0x8700, 0x1598, 0x7000 },
- { 0x8700, 0x1578, 0x6000 },
- { 0x8700, 0x1568, 0x5000 },
- { 0x8700, 0x1560, 0x4000 },
- { 0x8700, 0x155c, 0x3000 },
- { 0x8700, 0x155a, 0x2000 },
- { 0x0700, 0x1559, 0x0000 },
- { 0x0700, 0x155b, 0x0000 },
- { 0x8700, 0x155e, 0x2000 },
- { 0x0700, 0x155d, 0x0000 },
- { 0x0700, 0x155f, 0x0000 },
- { 0x8700, 0x1564, 0x3000 },
- { 0x8700, 0x1562, 0x2000 },
- { 0x0700, 0x1561, 0x0000 },
- { 0x0700, 0x1563, 0x0000 },
- { 0x8700, 0x1566, 0x2000 },
- { 0x0700, 0x1565, 0x0000 },
- { 0x0700, 0x1567, 0x0000 },
- { 0x8700, 0x1570, 0x4000 },
- { 0x8700, 0x156c, 0x3000 },
- { 0x8700, 0x156a, 0x2000 },
- { 0x0700, 0x1569, 0x0000 },
- { 0x0700, 0x156b, 0x0000 },
- { 0x8700, 0x156e, 0x2000 },
- { 0x0700, 0x156d, 0x0000 },
- { 0x0700, 0x156f, 0x0000 },
- { 0x8700, 0x1574, 0x3000 },
- { 0x8700, 0x1572, 0x2000 },
- { 0x0700, 0x1571, 0x0000 },
- { 0x0700, 0x1573, 0x0000 },
- { 0x8700, 0x1576, 0x2000 },
- { 0x0700, 0x1575, 0x0000 },
- { 0x0700, 0x1577, 0x0000 },
- { 0x8700, 0x1588, 0x5000 },
- { 0x8700, 0x1580, 0x4000 },
- { 0x8700, 0x157c, 0x3000 },
- { 0x8700, 0x157a, 0x2000 },
- { 0x0700, 0x1579, 0x0000 },
- { 0x0700, 0x157b, 0x0000 },
- { 0x8700, 0x157e, 0x2000 },
- { 0x0700, 0x157d, 0x0000 },
- { 0x0700, 0x157f, 0x0000 },
- { 0x8700, 0x1584, 0x3000 },
- { 0x8700, 0x1582, 0x2000 },
- { 0x0700, 0x1581, 0x0000 },
- { 0x0700, 0x1583, 0x0000 },
- { 0x8700, 0x1586, 0x2000 },
- { 0x0700, 0x1585, 0x0000 },
- { 0x0700, 0x1587, 0x0000 },
- { 0x8700, 0x1590, 0x4000 },
- { 0x8700, 0x158c, 0x3000 },
- { 0x8700, 0x158a, 0x2000 },
- { 0x0700, 0x1589, 0x0000 },
- { 0x0700, 0x158b, 0x0000 },
- { 0x8700, 0x158e, 0x2000 },
- { 0x0700, 0x158d, 0x0000 },
- { 0x0700, 0x158f, 0x0000 },
- { 0x8700, 0x1594, 0x3000 },
- { 0x8700, 0x1592, 0x2000 },
- { 0x0700, 0x1591, 0x0000 },
- { 0x0700, 0x1593, 0x0000 },
- { 0x8700, 0x1596, 0x2000 },
- { 0x0700, 0x1595, 0x0000 },
- { 0x0700, 0x1597, 0x0000 },
- { 0x8700, 0x15b8, 0x6000 },
- { 0x8700, 0x15a8, 0x5000 },
- { 0x8700, 0x15a0, 0x4000 },
- { 0x8700, 0x159c, 0x3000 },
- { 0x8700, 0x159a, 0x2000 },
- { 0x0700, 0x1599, 0x0000 },
- { 0x0700, 0x159b, 0x0000 },
- { 0x8700, 0x159e, 0x2000 },
- { 0x0700, 0x159d, 0x0000 },
- { 0x0700, 0x159f, 0x0000 },
- { 0x8700, 0x15a4, 0x3000 },
- { 0x8700, 0x15a2, 0x2000 },
- { 0x0700, 0x15a1, 0x0000 },
- { 0x0700, 0x15a3, 0x0000 },
- { 0x8700, 0x15a6, 0x2000 },
- { 0x0700, 0x15a5, 0x0000 },
- { 0x0700, 0x15a7, 0x0000 },
- { 0x8700, 0x15b0, 0x4000 },
- { 0x8700, 0x15ac, 0x3000 },
- { 0x8700, 0x15aa, 0x2000 },
- { 0x0700, 0x15a9, 0x0000 },
- { 0x0700, 0x15ab, 0x0000 },
- { 0x8700, 0x15ae, 0x2000 },
- { 0x0700, 0x15ad, 0x0000 },
- { 0x0700, 0x15af, 0x0000 },
- { 0x8700, 0x15b4, 0x3000 },
- { 0x8700, 0x15b2, 0x2000 },
- { 0x0700, 0x15b1, 0x0000 },
- { 0x0700, 0x15b3, 0x0000 },
- { 0x8700, 0x15b6, 0x2000 },
- { 0x0700, 0x15b5, 0x0000 },
- { 0x0700, 0x15b7, 0x0000 },
- { 0x8700, 0x15c8, 0x5000 },
- { 0x8700, 0x15c0, 0x4000 },
- { 0x8700, 0x15bc, 0x3000 },
- { 0x8700, 0x15ba, 0x2000 },
- { 0x0700, 0x15b9, 0x0000 },
- { 0x0700, 0x15bb, 0x0000 },
- { 0x8700, 0x15be, 0x2000 },
- { 0x0700, 0x15bd, 0x0000 },
- { 0x0700, 0x15bf, 0x0000 },
- { 0x8700, 0x15c4, 0x3000 },
- { 0x8700, 0x15c2, 0x2000 },
- { 0x0700, 0x15c1, 0x0000 },
- { 0x0700, 0x15c3, 0x0000 },
- { 0x8700, 0x15c6, 0x2000 },
- { 0x0700, 0x15c5, 0x0000 },
- { 0x0700, 0x15c7, 0x0000 },
- { 0x8700, 0x15d0, 0x4000 },
- { 0x8700, 0x15cc, 0x3000 },
- { 0x8700, 0x15ca, 0x2000 },
- { 0x0700, 0x15c9, 0x0000 },
- { 0x0700, 0x15cb, 0x0000 },
- { 0x8700, 0x15ce, 0x2000 },
- { 0x0700, 0x15cd, 0x0000 },
- { 0x0700, 0x15cf, 0x0000 },
- { 0x8700, 0x15d4, 0x3000 },
- { 0x8700, 0x15d2, 0x2000 },
- { 0x0700, 0x15d1, 0x0000 },
- { 0x0700, 0x15d3, 0x0000 },
- { 0x8700, 0x15d6, 0x2000 },
- { 0x0700, 0x15d5, 0x0000 },
- { 0x0700, 0x15d7, 0x0000 },
- { 0x8700, 0x1618, 0x7000 },
- { 0x8700, 0x15f8, 0x6000 },
- { 0x8700, 0x15e8, 0x5000 },
- { 0x8700, 0x15e0, 0x4000 },
- { 0x8700, 0x15dc, 0x3000 },
- { 0x8700, 0x15da, 0x2000 },
- { 0x0700, 0x15d9, 0x0000 },
- { 0x0700, 0x15db, 0x0000 },
- { 0x8700, 0x15de, 0x2000 },
- { 0x0700, 0x15dd, 0x0000 },
- { 0x0700, 0x15df, 0x0000 },
- { 0x8700, 0x15e4, 0x3000 },
- { 0x8700, 0x15e2, 0x2000 },
- { 0x0700, 0x15e1, 0x0000 },
- { 0x0700, 0x15e3, 0x0000 },
- { 0x8700, 0x15e6, 0x2000 },
- { 0x0700, 0x15e5, 0x0000 },
- { 0x0700, 0x15e7, 0x0000 },
- { 0x8700, 0x15f0, 0x4000 },
- { 0x8700, 0x15ec, 0x3000 },
- { 0x8700, 0x15ea, 0x2000 },
- { 0x0700, 0x15e9, 0x0000 },
- { 0x0700, 0x15eb, 0x0000 },
- { 0x8700, 0x15ee, 0x2000 },
- { 0x0700, 0x15ed, 0x0000 },
- { 0x0700, 0x15ef, 0x0000 },
- { 0x8700, 0x15f4, 0x3000 },
- { 0x8700, 0x15f2, 0x2000 },
- { 0x0700, 0x15f1, 0x0000 },
- { 0x0700, 0x15f3, 0x0000 },
- { 0x8700, 0x15f6, 0x2000 },
- { 0x0700, 0x15f5, 0x0000 },
- { 0x0700, 0x15f7, 0x0000 },
- { 0x8700, 0x1608, 0x5000 },
- { 0x8700, 0x1600, 0x4000 },
- { 0x8700, 0x15fc, 0x3000 },
- { 0x8700, 0x15fa, 0x2000 },
- { 0x0700, 0x15f9, 0x0000 },
- { 0x0700, 0x15fb, 0x0000 },
- { 0x8700, 0x15fe, 0x2000 },
- { 0x0700, 0x15fd, 0x0000 },
- { 0x0700, 0x15ff, 0x0000 },
- { 0x8700, 0x1604, 0x3000 },
- { 0x8700, 0x1602, 0x2000 },
- { 0x0700, 0x1601, 0x0000 },
- { 0x0700, 0x1603, 0x0000 },
- { 0x8700, 0x1606, 0x2000 },
- { 0x0700, 0x1605, 0x0000 },
- { 0x0700, 0x1607, 0x0000 },
- { 0x8700, 0x1610, 0x4000 },
- { 0x8700, 0x160c, 0x3000 },
- { 0x8700, 0x160a, 0x2000 },
- { 0x0700, 0x1609, 0x0000 },
- { 0x0700, 0x160b, 0x0000 },
- { 0x8700, 0x160e, 0x2000 },
- { 0x0700, 0x160d, 0x0000 },
- { 0x0700, 0x160f, 0x0000 },
- { 0x8700, 0x1614, 0x3000 },
- { 0x8700, 0x1612, 0x2000 },
- { 0x0700, 0x1611, 0x0000 },
- { 0x0700, 0x1613, 0x0000 },
- { 0x8700, 0x1616, 0x2000 },
- { 0x0700, 0x1615, 0x0000 },
- { 0x0700, 0x1617, 0x0000 },
- { 0x8700, 0x1638, 0x6000 },
- { 0x8700, 0x1628, 0x5000 },
- { 0x8700, 0x1620, 0x4000 },
- { 0x8700, 0x161c, 0x3000 },
- { 0x8700, 0x161a, 0x2000 },
- { 0x0700, 0x1619, 0x0000 },
- { 0x0700, 0x161b, 0x0000 },
- { 0x8700, 0x161e, 0x2000 },
- { 0x0700, 0x161d, 0x0000 },
- { 0x0700, 0x161f, 0x0000 },
- { 0x8700, 0x1624, 0x3000 },
- { 0x8700, 0x1622, 0x2000 },
- { 0x0700, 0x1621, 0x0000 },
- { 0x0700, 0x1623, 0x0000 },
- { 0x8700, 0x1626, 0x2000 },
- { 0x0700, 0x1625, 0x0000 },
- { 0x0700, 0x1627, 0x0000 },
- { 0x8700, 0x1630, 0x4000 },
- { 0x8700, 0x162c, 0x3000 },
- { 0x8700, 0x162a, 0x2000 },
- { 0x0700, 0x1629, 0x0000 },
- { 0x0700, 0x162b, 0x0000 },
- { 0x8700, 0x162e, 0x2000 },
- { 0x0700, 0x162d, 0x0000 },
- { 0x0700, 0x162f, 0x0000 },
- { 0x8700, 0x1634, 0x3000 },
- { 0x8700, 0x1632, 0x2000 },
- { 0x0700, 0x1631, 0x0000 },
- { 0x0700, 0x1633, 0x0000 },
- { 0x8700, 0x1636, 0x2000 },
- { 0x0700, 0x1635, 0x0000 },
- { 0x0700, 0x1637, 0x0000 },
- { 0x8700, 0x1648, 0x5000 },
- { 0x8700, 0x1640, 0x4000 },
- { 0x8700, 0x163c, 0x3000 },
- { 0x8700, 0x163a, 0x2000 },
- { 0x0700, 0x1639, 0x0000 },
- { 0x0700, 0x163b, 0x0000 },
- { 0x8700, 0x163e, 0x2000 },
- { 0x0700, 0x163d, 0x0000 },
- { 0x0700, 0x163f, 0x0000 },
- { 0x8700, 0x1644, 0x3000 },
- { 0x8700, 0x1642, 0x2000 },
- { 0x0700, 0x1641, 0x0000 },
- { 0x0700, 0x1643, 0x0000 },
- { 0x8700, 0x1646, 0x2000 },
- { 0x0700, 0x1645, 0x0000 },
- { 0x0700, 0x1647, 0x0000 },
- { 0x8700, 0x1650, 0x4000 },
- { 0x8700, 0x164c, 0x3000 },
- { 0x8700, 0x164a, 0x2000 },
- { 0x0700, 0x1649, 0x0000 },
- { 0x0700, 0x164b, 0x0000 },
- { 0x8700, 0x164e, 0x2000 },
- { 0x0700, 0x164d, 0x0000 },
- { 0x0700, 0x164f, 0x0000 },
- { 0x8700, 0x1654, 0x3000 },
- { 0x8700, 0x1652, 0x2000 },
- { 0x0700, 0x1651, 0x0000 },
- { 0x0700, 0x1653, 0x0000 },
- { 0x8700, 0x1656, 0x2000 },
- { 0x0700, 0x1655, 0x0000 },
- { 0x0700, 0x1657, 0x0000 },
- { 0x8700, 0x16e4, 0x8000 },
- { 0x8700, 0x16a4, 0x7000 },
- { 0x8700, 0x1681, 0x6000 },
- { 0x8700, 0x1668, 0x5000 },
- { 0x8700, 0x1660, 0x4000 },
- { 0x8700, 0x165c, 0x3000 },
- { 0x8700, 0x165a, 0x2000 },
- { 0x0700, 0x1659, 0x0000 },
- { 0x0700, 0x165b, 0x0000 },
- { 0x8700, 0x165e, 0x2000 },
- { 0x0700, 0x165d, 0x0000 },
- { 0x0700, 0x165f, 0x0000 },
- { 0x8700, 0x1664, 0x3000 },
- { 0x8700, 0x1662, 0x2000 },
- { 0x0700, 0x1661, 0x0000 },
- { 0x0700, 0x1663, 0x0000 },
- { 0x8700, 0x1666, 0x2000 },
- { 0x0700, 0x1665, 0x0000 },
- { 0x0700, 0x1667, 0x0000 },
- { 0x8700, 0x1670, 0x4000 },
- { 0x8700, 0x166c, 0x3000 },
- { 0x8700, 0x166a, 0x2000 },
- { 0x0700, 0x1669, 0x0000 },
- { 0x0700, 0x166b, 0x0000 },
- { 0x9500, 0x166e, 0x2000 },
- { 0x1500, 0x166d, 0x0000 },
- { 0x0700, 0x166f, 0x0000 },
- { 0x8700, 0x1674, 0x3000 },
- { 0x8700, 0x1672, 0x2000 },
- { 0x0700, 0x1671, 0x0000 },
- { 0x0700, 0x1673, 0x0000 },
- { 0x8700, 0x1676, 0x2000 },
- { 0x0700, 0x1675, 0x0000 },
- { 0x1d00, 0x1680, 0x0000 },
- { 0x8700, 0x1691, 0x5000 },
- { 0x8700, 0x1689, 0x4000 },
- { 0x8700, 0x1685, 0x3000 },
- { 0x8700, 0x1683, 0x2000 },
- { 0x0700, 0x1682, 0x0000 },
- { 0x0700, 0x1684, 0x0000 },
- { 0x8700, 0x1687, 0x2000 },
- { 0x0700, 0x1686, 0x0000 },
- { 0x0700, 0x1688, 0x0000 },
- { 0x8700, 0x168d, 0x3000 },
- { 0x8700, 0x168b, 0x2000 },
- { 0x0700, 0x168a, 0x0000 },
- { 0x0700, 0x168c, 0x0000 },
- { 0x8700, 0x168f, 0x2000 },
- { 0x0700, 0x168e, 0x0000 },
- { 0x0700, 0x1690, 0x0000 },
- { 0x8700, 0x1699, 0x4000 },
- { 0x8700, 0x1695, 0x3000 },
- { 0x8700, 0x1693, 0x2000 },
- { 0x0700, 0x1692, 0x0000 },
- { 0x0700, 0x1694, 0x0000 },
- { 0x8700, 0x1697, 0x2000 },
- { 0x0700, 0x1696, 0x0000 },
- { 0x0700, 0x1698, 0x0000 },
- { 0x8700, 0x16a0, 0x3000 },
- { 0x9600, 0x169b, 0x2000 },
- { 0x0700, 0x169a, 0x0000 },
- { 0x1200, 0x169c, 0x0000 },
- { 0x8700, 0x16a2, 0x2000 },
- { 0x0700, 0x16a1, 0x0000 },
- { 0x0700, 0x16a3, 0x0000 },
- { 0x8700, 0x16c4, 0x6000 },
- { 0x8700, 0x16b4, 0x5000 },
- { 0x8700, 0x16ac, 0x4000 },
- { 0x8700, 0x16a8, 0x3000 },
- { 0x8700, 0x16a6, 0x2000 },
- { 0x0700, 0x16a5, 0x0000 },
- { 0x0700, 0x16a7, 0x0000 },
- { 0x8700, 0x16aa, 0x2000 },
- { 0x0700, 0x16a9, 0x0000 },
- { 0x0700, 0x16ab, 0x0000 },
- { 0x8700, 0x16b0, 0x3000 },
- { 0x8700, 0x16ae, 0x2000 },
- { 0x0700, 0x16ad, 0x0000 },
- { 0x0700, 0x16af, 0x0000 },
- { 0x8700, 0x16b2, 0x2000 },
- { 0x0700, 0x16b1, 0x0000 },
- { 0x0700, 0x16b3, 0x0000 },
- { 0x8700, 0x16bc, 0x4000 },
- { 0x8700, 0x16b8, 0x3000 },
- { 0x8700, 0x16b6, 0x2000 },
- { 0x0700, 0x16b5, 0x0000 },
- { 0x0700, 0x16b7, 0x0000 },
- { 0x8700, 0x16ba, 0x2000 },
- { 0x0700, 0x16b9, 0x0000 },
- { 0x0700, 0x16bb, 0x0000 },
- { 0x8700, 0x16c0, 0x3000 },
- { 0x8700, 0x16be, 0x2000 },
- { 0x0700, 0x16bd, 0x0000 },
- { 0x0700, 0x16bf, 0x0000 },
- { 0x8700, 0x16c2, 0x2000 },
- { 0x0700, 0x16c1, 0x0000 },
- { 0x0700, 0x16c3, 0x0000 },
- { 0x8700, 0x16d4, 0x5000 },
- { 0x8700, 0x16cc, 0x4000 },
- { 0x8700, 0x16c8, 0x3000 },
- { 0x8700, 0x16c6, 0x2000 },
- { 0x0700, 0x16c5, 0x0000 },
- { 0x0700, 0x16c7, 0x0000 },
- { 0x8700, 0x16ca, 0x2000 },
- { 0x0700, 0x16c9, 0x0000 },
- { 0x0700, 0x16cb, 0x0000 },
- { 0x8700, 0x16d0, 0x3000 },
- { 0x8700, 0x16ce, 0x2000 },
- { 0x0700, 0x16cd, 0x0000 },
- { 0x0700, 0x16cf, 0x0000 },
- { 0x8700, 0x16d2, 0x2000 },
- { 0x0700, 0x16d1, 0x0000 },
- { 0x0700, 0x16d3, 0x0000 },
- { 0x8700, 0x16dc, 0x4000 },
- { 0x8700, 0x16d8, 0x3000 },
- { 0x8700, 0x16d6, 0x2000 },
- { 0x0700, 0x16d5, 0x0000 },
- { 0x0700, 0x16d7, 0x0000 },
- { 0x8700, 0x16da, 0x2000 },
- { 0x0700, 0x16d9, 0x0000 },
- { 0x0700, 0x16db, 0x0000 },
- { 0x8700, 0x16e0, 0x3000 },
- { 0x8700, 0x16de, 0x2000 },
- { 0x0700, 0x16dd, 0x0000 },
- { 0x0700, 0x16df, 0x0000 },
- { 0x8700, 0x16e2, 0x2000 },
- { 0x0700, 0x16e1, 0x0000 },
- { 0x0700, 0x16e3, 0x0000 },
- { 0x8700, 0x1748, 0x7000 },
- { 0x8c00, 0x1714, 0x6000 },
- { 0x8700, 0x1703, 0x5000 },
- { 0x9500, 0x16ec, 0x4000 },
- { 0x8700, 0x16e8, 0x3000 },
- { 0x8700, 0x16e6, 0x2000 },
- { 0x0700, 0x16e5, 0x0000 },
- { 0x0700, 0x16e7, 0x0000 },
- { 0x8700, 0x16ea, 0x2000 },
- { 0x0700, 0x16e9, 0x0000 },
- { 0x1500, 0x16eb, 0x0000 },
- { 0x8e00, 0x16f0, 0x3000 },
- { 0x8e00, 0x16ee, 0x2000 },
- { 0x1500, 0x16ed, 0x0000 },
- { 0x0e00, 0x16ef, 0x0000 },
- { 0x8700, 0x1701, 0x2000 },
- { 0x0700, 0x1700, 0x0000 },
- { 0x0700, 0x1702, 0x0000 },
- { 0x8700, 0x170b, 0x4000 },
- { 0x8700, 0x1707, 0x3000 },
- { 0x8700, 0x1705, 0x2000 },
- { 0x0700, 0x1704, 0x0000 },
- { 0x0700, 0x1706, 0x0000 },
- { 0x8700, 0x1709, 0x2000 },
- { 0x0700, 0x1708, 0x0000 },
- { 0x0700, 0x170a, 0x0000 },
- { 0x8700, 0x1710, 0x3000 },
- { 0x8700, 0x170e, 0x2000 },
- { 0x0700, 0x170c, 0x0000 },
- { 0x0700, 0x170f, 0x0000 },
- { 0x8c00, 0x1712, 0x2000 },
- { 0x0700, 0x1711, 0x0000 },
- { 0x0c00, 0x1713, 0x0000 },
- { 0x8700, 0x172f, 0x5000 },
- { 0x8700, 0x1727, 0x4000 },
- { 0x8700, 0x1723, 0x3000 },
- { 0x8700, 0x1721, 0x2000 },
- { 0x0700, 0x1720, 0x0000 },
- { 0x0700, 0x1722, 0x0000 },
- { 0x8700, 0x1725, 0x2000 },
- { 0x0700, 0x1724, 0x0000 },
- { 0x0700, 0x1726, 0x0000 },
- { 0x8700, 0x172b, 0x3000 },
- { 0x8700, 0x1729, 0x2000 },
- { 0x0700, 0x1728, 0x0000 },
- { 0x0700, 0x172a, 0x0000 },
- { 0x8700, 0x172d, 0x2000 },
- { 0x0700, 0x172c, 0x0000 },
- { 0x0700, 0x172e, 0x0000 },
- { 0x8700, 0x1740, 0x4000 },
- { 0x8c00, 0x1733, 0x3000 },
- { 0x8700, 0x1731, 0x2000 },
- { 0x0700, 0x1730, 0x0000 },
- { 0x0c00, 0x1732, 0x0000 },
- { 0x9500, 0x1735, 0x2000 },
- { 0x0c00, 0x1734, 0x0000 },
- { 0x1500, 0x1736, 0x0000 },
- { 0x8700, 0x1744, 0x3000 },
- { 0x8700, 0x1742, 0x2000 },
- { 0x0700, 0x1741, 0x0000 },
- { 0x0700, 0x1743, 0x0000 },
- { 0x8700, 0x1746, 0x2000 },
- { 0x0700, 0x1745, 0x0000 },
- { 0x0700, 0x1747, 0x0000 },
- { 0x8700, 0x1782, 0x6000 },
- { 0x8700, 0x1764, 0x5000 },
- { 0x8700, 0x1750, 0x4000 },
- { 0x8700, 0x174c, 0x3000 },
- { 0x8700, 0x174a, 0x2000 },
- { 0x0700, 0x1749, 0x0000 },
- { 0x0700, 0x174b, 0x0000 },
- { 0x8700, 0x174e, 0x2000 },
- { 0x0700, 0x174d, 0x0000 },
- { 0x0700, 0x174f, 0x0000 },
- { 0x8700, 0x1760, 0x3000 },
- { 0x8c00, 0x1752, 0x2000 },
- { 0x0700, 0x1751, 0x0000 },
- { 0x0c00, 0x1753, 0x0000 },
- { 0x8700, 0x1762, 0x2000 },
- { 0x0700, 0x1761, 0x0000 },
- { 0x0700, 0x1763, 0x0000 },
- { 0x8700, 0x176c, 0x4000 },
- { 0x8700, 0x1768, 0x3000 },
- { 0x8700, 0x1766, 0x2000 },
- { 0x0700, 0x1765, 0x0000 },
- { 0x0700, 0x1767, 0x0000 },
- { 0x8700, 0x176a, 0x2000 },
- { 0x0700, 0x1769, 0x0000 },
- { 0x0700, 0x176b, 0x0000 },
- { 0x8c00, 0x1772, 0x3000 },
- { 0x8700, 0x176f, 0x2000 },
- { 0x0700, 0x176e, 0x0000 },
- { 0x0700, 0x1770, 0x0000 },
- { 0x8700, 0x1780, 0x2000 },
- { 0x0c00, 0x1773, 0x0000 },
- { 0x0700, 0x1781, 0x0000 },
- { 0x8700, 0x1792, 0x5000 },
- { 0x8700, 0x178a, 0x4000 },
- { 0x8700, 0x1786, 0x3000 },
- { 0x8700, 0x1784, 0x2000 },
- { 0x0700, 0x1783, 0x0000 },
- { 0x0700, 0x1785, 0x0000 },
- { 0x8700, 0x1788, 0x2000 },
- { 0x0700, 0x1787, 0x0000 },
- { 0x0700, 0x1789, 0x0000 },
- { 0x8700, 0x178e, 0x3000 },
- { 0x8700, 0x178c, 0x2000 },
- { 0x0700, 0x178b, 0x0000 },
- { 0x0700, 0x178d, 0x0000 },
- { 0x8700, 0x1790, 0x2000 },
- { 0x0700, 0x178f, 0x0000 },
- { 0x0700, 0x1791, 0x0000 },
- { 0x8700, 0x179a, 0x4000 },
- { 0x8700, 0x1796, 0x3000 },
- { 0x8700, 0x1794, 0x2000 },
- { 0x0700, 0x1793, 0x0000 },
- { 0x0700, 0x1795, 0x0000 },
- { 0x8700, 0x1798, 0x2000 },
- { 0x0700, 0x1797, 0x0000 },
- { 0x0700, 0x1799, 0x0000 },
- { 0x8700, 0x179e, 0x3000 },
- { 0x8700, 0x179c, 0x2000 },
- { 0x0700, 0x179b, 0x0000 },
- { 0x0700, 0x179d, 0x0000 },
- { 0x8700, 0x17a0, 0x2000 },
- { 0x0700, 0x179f, 0x0000 },
- { 0x0700, 0x17a1, 0x0000 },
- { 0x8700, 0x1915, 0x9000 },
- { 0x8700, 0x1837, 0x8000 },
- { 0x8d00, 0x17e4, 0x7000 },
- { 0x8a00, 0x17c2, 0x6000 },
- { 0x8700, 0x17b2, 0x5000 },
- { 0x8700, 0x17aa, 0x4000 },
- { 0x8700, 0x17a6, 0x3000 },
- { 0x8700, 0x17a4, 0x2000 },
- { 0x0700, 0x17a3, 0x0000 },
- { 0x0700, 0x17a5, 0x0000 },
- { 0x8700, 0x17a8, 0x2000 },
- { 0x0700, 0x17a7, 0x0000 },
- { 0x0700, 0x17a9, 0x0000 },
- { 0x8700, 0x17ae, 0x3000 },
- { 0x8700, 0x17ac, 0x2000 },
- { 0x0700, 0x17ab, 0x0000 },
- { 0x0700, 0x17ad, 0x0000 },
- { 0x8700, 0x17b0, 0x2000 },
- { 0x0700, 0x17af, 0x0000 },
- { 0x0700, 0x17b1, 0x0000 },
- { 0x8c00, 0x17ba, 0x4000 },
- { 0x8a00, 0x17b6, 0x3000 },
- { 0x8100, 0x17b4, 0x2000 },
- { 0x0700, 0x17b3, 0x0000 },
- { 0x0100, 0x17b5, 0x0000 },
- { 0x8c00, 0x17b8, 0x2000 },
- { 0x0c00, 0x17b7, 0x0000 },
- { 0x0c00, 0x17b9, 0x0000 },
- { 0x8a00, 0x17be, 0x3000 },
- { 0x8c00, 0x17bc, 0x2000 },
- { 0x0c00, 0x17bb, 0x0000 },
- { 0x0c00, 0x17bd, 0x0000 },
- { 0x8a00, 0x17c0, 0x2000 },
- { 0x0a00, 0x17bf, 0x0000 },
- { 0x0a00, 0x17c1, 0x0000 },
- { 0x8c00, 0x17d2, 0x5000 },
- { 0x8c00, 0x17ca, 0x4000 },
- { 0x8c00, 0x17c6, 0x3000 },
- { 0x8a00, 0x17c4, 0x2000 },
- { 0x0a00, 0x17c3, 0x0000 },
- { 0x0a00, 0x17c5, 0x0000 },
- { 0x8a00, 0x17c8, 0x2000 },
- { 0x0a00, 0x17c7, 0x0000 },
- { 0x0c00, 0x17c9, 0x0000 },
- { 0x8c00, 0x17ce, 0x3000 },
- { 0x8c00, 0x17cc, 0x2000 },
- { 0x0c00, 0x17cb, 0x0000 },
- { 0x0c00, 0x17cd, 0x0000 },
- { 0x8c00, 0x17d0, 0x2000 },
- { 0x0c00, 0x17cf, 0x0000 },
- { 0x0c00, 0x17d1, 0x0000 },
- { 0x9500, 0x17da, 0x4000 },
- { 0x9500, 0x17d6, 0x3000 },
- { 0x9500, 0x17d4, 0x2000 },
- { 0x0c00, 0x17d3, 0x0000 },
- { 0x1500, 0x17d5, 0x0000 },
- { 0x9500, 0x17d8, 0x2000 },
- { 0x0600, 0x17d7, 0x0000 },
- { 0x1500, 0x17d9, 0x0000 },
- { 0x8d00, 0x17e0, 0x3000 },
- { 0x8700, 0x17dc, 0x2000 },
- { 0x1700, 0x17db, 0x0000 },
- { 0x0c00, 0x17dd, 0x0000 },
- { 0x8d00, 0x17e2, 0x2000 },
- { 0x0d00, 0x17e1, 0x0000 },
- { 0x0d00, 0x17e3, 0x0000 },
- { 0x8d00, 0x1811, 0x6000 },
- { 0x9500, 0x1800, 0x5000 },
- { 0x8f00, 0x17f2, 0x4000 },
- { 0x8d00, 0x17e8, 0x3000 },
- { 0x8d00, 0x17e6, 0x2000 },
- { 0x0d00, 0x17e5, 0x0000 },
- { 0x0d00, 0x17e7, 0x0000 },
- { 0x8f00, 0x17f0, 0x2000 },
- { 0x0d00, 0x17e9, 0x0000 },
- { 0x0f00, 0x17f1, 0x0000 },
- { 0x8f00, 0x17f6, 0x3000 },
- { 0x8f00, 0x17f4, 0x2000 },
- { 0x0f00, 0x17f3, 0x0000 },
- { 0x0f00, 0x17f5, 0x0000 },
- { 0x8f00, 0x17f8, 0x2000 },
- { 0x0f00, 0x17f7, 0x0000 },
- { 0x0f00, 0x17f9, 0x0000 },
- { 0x9500, 0x1808, 0x4000 },
- { 0x9500, 0x1804, 0x3000 },
- { 0x9500, 0x1802, 0x2000 },
- { 0x1500, 0x1801, 0x0000 },
- { 0x1500, 0x1803, 0x0000 },
- { 0x9100, 0x1806, 0x2000 },
- { 0x1500, 0x1805, 0x0000 },
- { 0x1500, 0x1807, 0x0000 },
- { 0x8c00, 0x180c, 0x3000 },
- { 0x9500, 0x180a, 0x2000 },
- { 0x1500, 0x1809, 0x0000 },
- { 0x0c00, 0x180b, 0x0000 },
- { 0x9d00, 0x180e, 0x2000 },
- { 0x0c00, 0x180d, 0x0000 },
- { 0x0d00, 0x1810, 0x0000 },
- { 0x8700, 0x1827, 0x5000 },
- { 0x8d00, 0x1819, 0x4000 },
- { 0x8d00, 0x1815, 0x3000 },
- { 0x8d00, 0x1813, 0x2000 },
- { 0x0d00, 0x1812, 0x0000 },
- { 0x0d00, 0x1814, 0x0000 },
- { 0x8d00, 0x1817, 0x2000 },
- { 0x0d00, 0x1816, 0x0000 },
- { 0x0d00, 0x1818, 0x0000 },
- { 0x8700, 0x1823, 0x3000 },
- { 0x8700, 0x1821, 0x2000 },
- { 0x0700, 0x1820, 0x0000 },
- { 0x0700, 0x1822, 0x0000 },
- { 0x8700, 0x1825, 0x2000 },
- { 0x0700, 0x1824, 0x0000 },
- { 0x0700, 0x1826, 0x0000 },
- { 0x8700, 0x182f, 0x4000 },
- { 0x8700, 0x182b, 0x3000 },
- { 0x8700, 0x1829, 0x2000 },
- { 0x0700, 0x1828, 0x0000 },
- { 0x0700, 0x182a, 0x0000 },
- { 0x8700, 0x182d, 0x2000 },
- { 0x0700, 0x182c, 0x0000 },
- { 0x0700, 0x182e, 0x0000 },
- { 0x8700, 0x1833, 0x3000 },
- { 0x8700, 0x1831, 0x2000 },
- { 0x0700, 0x1830, 0x0000 },
- { 0x0700, 0x1832, 0x0000 },
- { 0x8700, 0x1835, 0x2000 },
- { 0x0700, 0x1834, 0x0000 },
- { 0x0700, 0x1836, 0x0000 },
- { 0x8700, 0x1877, 0x7000 },
- { 0x8700, 0x1857, 0x6000 },
- { 0x8700, 0x1847, 0x5000 },
- { 0x8700, 0x183f, 0x4000 },
- { 0x8700, 0x183b, 0x3000 },
- { 0x8700, 0x1839, 0x2000 },
- { 0x0700, 0x1838, 0x0000 },
- { 0x0700, 0x183a, 0x0000 },
- { 0x8700, 0x183d, 0x2000 },
- { 0x0700, 0x183c, 0x0000 },
- { 0x0700, 0x183e, 0x0000 },
- { 0x8600, 0x1843, 0x3000 },
- { 0x8700, 0x1841, 0x2000 },
- { 0x0700, 0x1840, 0x0000 },
- { 0x0700, 0x1842, 0x0000 },
- { 0x8700, 0x1845, 0x2000 },
- { 0x0700, 0x1844, 0x0000 },
- { 0x0700, 0x1846, 0x0000 },
- { 0x8700, 0x184f, 0x4000 },
- { 0x8700, 0x184b, 0x3000 },
- { 0x8700, 0x1849, 0x2000 },
- { 0x0700, 0x1848, 0x0000 },
- { 0x0700, 0x184a, 0x0000 },
- { 0x8700, 0x184d, 0x2000 },
- { 0x0700, 0x184c, 0x0000 },
- { 0x0700, 0x184e, 0x0000 },
- { 0x8700, 0x1853, 0x3000 },
- { 0x8700, 0x1851, 0x2000 },
- { 0x0700, 0x1850, 0x0000 },
- { 0x0700, 0x1852, 0x0000 },
- { 0x8700, 0x1855, 0x2000 },
- { 0x0700, 0x1854, 0x0000 },
- { 0x0700, 0x1856, 0x0000 },
- { 0x8700, 0x1867, 0x5000 },
- { 0x8700, 0x185f, 0x4000 },
- { 0x8700, 0x185b, 0x3000 },
- { 0x8700, 0x1859, 0x2000 },
- { 0x0700, 0x1858, 0x0000 },
- { 0x0700, 0x185a, 0x0000 },
- { 0x8700, 0x185d, 0x2000 },
- { 0x0700, 0x185c, 0x0000 },
- { 0x0700, 0x185e, 0x0000 },
- { 0x8700, 0x1863, 0x3000 },
- { 0x8700, 0x1861, 0x2000 },
- { 0x0700, 0x1860, 0x0000 },
- { 0x0700, 0x1862, 0x0000 },
- { 0x8700, 0x1865, 0x2000 },
- { 0x0700, 0x1864, 0x0000 },
- { 0x0700, 0x1866, 0x0000 },
- { 0x8700, 0x186f, 0x4000 },
- { 0x8700, 0x186b, 0x3000 },
- { 0x8700, 0x1869, 0x2000 },
- { 0x0700, 0x1868, 0x0000 },
- { 0x0700, 0x186a, 0x0000 },
- { 0x8700, 0x186d, 0x2000 },
- { 0x0700, 0x186c, 0x0000 },
- { 0x0700, 0x186e, 0x0000 },
- { 0x8700, 0x1873, 0x3000 },
- { 0x8700, 0x1871, 0x2000 },
- { 0x0700, 0x1870, 0x0000 },
- { 0x0700, 0x1872, 0x0000 },
- { 0x8700, 0x1875, 0x2000 },
- { 0x0700, 0x1874, 0x0000 },
- { 0x0700, 0x1876, 0x0000 },
- { 0x8700, 0x189f, 0x6000 },
- { 0x8700, 0x188f, 0x5000 },
- { 0x8700, 0x1887, 0x4000 },
- { 0x8700, 0x1883, 0x3000 },
- { 0x8700, 0x1881, 0x2000 },
- { 0x0700, 0x1880, 0x0000 },
- { 0x0700, 0x1882, 0x0000 },
- { 0x8700, 0x1885, 0x2000 },
- { 0x0700, 0x1884, 0x0000 },
- { 0x0700, 0x1886, 0x0000 },
- { 0x8700, 0x188b, 0x3000 },
- { 0x8700, 0x1889, 0x2000 },
- { 0x0700, 0x1888, 0x0000 },
- { 0x0700, 0x188a, 0x0000 },
- { 0x8700, 0x188d, 0x2000 },
- { 0x0700, 0x188c, 0x0000 },
- { 0x0700, 0x188e, 0x0000 },
- { 0x8700, 0x1897, 0x4000 },
- { 0x8700, 0x1893, 0x3000 },
- { 0x8700, 0x1891, 0x2000 },
- { 0x0700, 0x1890, 0x0000 },
- { 0x0700, 0x1892, 0x0000 },
- { 0x8700, 0x1895, 0x2000 },
- { 0x0700, 0x1894, 0x0000 },
- { 0x0700, 0x1896, 0x0000 },
- { 0x8700, 0x189b, 0x3000 },
- { 0x8700, 0x1899, 0x2000 },
- { 0x0700, 0x1898, 0x0000 },
- { 0x0700, 0x189a, 0x0000 },
- { 0x8700, 0x189d, 0x2000 },
- { 0x0700, 0x189c, 0x0000 },
- { 0x0700, 0x189e, 0x0000 },
- { 0x8700, 0x1905, 0x5000 },
- { 0x8700, 0x18a7, 0x4000 },
- { 0x8700, 0x18a3, 0x3000 },
- { 0x8700, 0x18a1, 0x2000 },
- { 0x0700, 0x18a0, 0x0000 },
- { 0x0700, 0x18a2, 0x0000 },
- { 0x8700, 0x18a5, 0x2000 },
- { 0x0700, 0x18a4, 0x0000 },
- { 0x0700, 0x18a6, 0x0000 },
- { 0x8700, 0x1901, 0x3000 },
- { 0x8c00, 0x18a9, 0x2000 },
- { 0x0700, 0x18a8, 0x0000 },
- { 0x0700, 0x1900, 0x0000 },
- { 0x8700, 0x1903, 0x2000 },
- { 0x0700, 0x1902, 0x0000 },
- { 0x0700, 0x1904, 0x0000 },
- { 0x8700, 0x190d, 0x4000 },
- { 0x8700, 0x1909, 0x3000 },
- { 0x8700, 0x1907, 0x2000 },
- { 0x0700, 0x1906, 0x0000 },
- { 0x0700, 0x1908, 0x0000 },
- { 0x8700, 0x190b, 0x2000 },
- { 0x0700, 0x190a, 0x0000 },
- { 0x0700, 0x190c, 0x0000 },
- { 0x8700, 0x1911, 0x3000 },
- { 0x8700, 0x190f, 0x2000 },
- { 0x0700, 0x190e, 0x0000 },
- { 0x0700, 0x1910, 0x0000 },
- { 0x8700, 0x1913, 0x2000 },
- { 0x0700, 0x1912, 0x0000 },
- { 0x0700, 0x1914, 0x0000 },
- { 0x8500, 0x1d10, 0x8000 },
- { 0x8700, 0x1963, 0x7000 },
- { 0x9a00, 0x1940, 0x6000 },
- { 0x8c00, 0x1928, 0x5000 },
- { 0x8c00, 0x1920, 0x4000 },
- { 0x8700, 0x1919, 0x3000 },
- { 0x8700, 0x1917, 0x2000 },
- { 0x0700, 0x1916, 0x0000 },
- { 0x0700, 0x1918, 0x0000 },
- { 0x8700, 0x191b, 0x2000 },
- { 0x0700, 0x191a, 0x0000 },
- { 0x0700, 0x191c, 0x0000 },
- { 0x8a00, 0x1924, 0x3000 },
- { 0x8c00, 0x1922, 0x2000 },
- { 0x0c00, 0x1921, 0x0000 },
- { 0x0a00, 0x1923, 0x0000 },
- { 0x8a00, 0x1926, 0x2000 },
- { 0x0a00, 0x1925, 0x0000 },
- { 0x0c00, 0x1927, 0x0000 },
- { 0x8a00, 0x1934, 0x4000 },
- { 0x8a00, 0x1930, 0x3000 },
- { 0x8a00, 0x192a, 0x2000 },
- { 0x0a00, 0x1929, 0x0000 },
- { 0x0a00, 0x192b, 0x0000 },
- { 0x8c00, 0x1932, 0x2000 },
- { 0x0a00, 0x1931, 0x0000 },
- { 0x0a00, 0x1933, 0x0000 },
- { 0x8a00, 0x1938, 0x3000 },
- { 0x8a00, 0x1936, 0x2000 },
- { 0x0a00, 0x1935, 0x0000 },
- { 0x0a00, 0x1937, 0x0000 },
- { 0x8c00, 0x193a, 0x2000 },
- { 0x0c00, 0x1939, 0x0000 },
- { 0x0c00, 0x193b, 0x0000 },
- { 0x8700, 0x1953, 0x5000 },
- { 0x8d00, 0x194b, 0x4000 },
- { 0x8d00, 0x1947, 0x3000 },
- { 0x9500, 0x1945, 0x2000 },
- { 0x1500, 0x1944, 0x0000 },
- { 0x0d00, 0x1946, 0x0000 },
- { 0x8d00, 0x1949, 0x2000 },
- { 0x0d00, 0x1948, 0x0000 },
- { 0x0d00, 0x194a, 0x0000 },
- { 0x8d00, 0x194f, 0x3000 },
- { 0x8d00, 0x194d, 0x2000 },
- { 0x0d00, 0x194c, 0x0000 },
- { 0x0d00, 0x194e, 0x0000 },
- { 0x8700, 0x1951, 0x2000 },
- { 0x0700, 0x1950, 0x0000 },
- { 0x0700, 0x1952, 0x0000 },
- { 0x8700, 0x195b, 0x4000 },
- { 0x8700, 0x1957, 0x3000 },
- { 0x8700, 0x1955, 0x2000 },
- { 0x0700, 0x1954, 0x0000 },
- { 0x0700, 0x1956, 0x0000 },
- { 0x8700, 0x1959, 0x2000 },
- { 0x0700, 0x1958, 0x0000 },
- { 0x0700, 0x195a, 0x0000 },
- { 0x8700, 0x195f, 0x3000 },
- { 0x8700, 0x195d, 0x2000 },
- { 0x0700, 0x195c, 0x0000 },
- { 0x0700, 0x195e, 0x0000 },
- { 0x8700, 0x1961, 0x2000 },
- { 0x0700, 0x1960, 0x0000 },
- { 0x0700, 0x1962, 0x0000 },
- { 0x9a00, 0x19f0, 0x6000 },
- { 0x9a00, 0x19e0, 0x5000 },
- { 0x8700, 0x196b, 0x4000 },
- { 0x8700, 0x1967, 0x3000 },
- { 0x8700, 0x1965, 0x2000 },
- { 0x0700, 0x1964, 0x0000 },
- { 0x0700, 0x1966, 0x0000 },
- { 0x8700, 0x1969, 0x2000 },
- { 0x0700, 0x1968, 0x0000 },
- { 0x0700, 0x196a, 0x0000 },
- { 0x8700, 0x1971, 0x3000 },
- { 0x8700, 0x196d, 0x2000 },
- { 0x0700, 0x196c, 0x0000 },
- { 0x0700, 0x1970, 0x0000 },
- { 0x8700, 0x1973, 0x2000 },
- { 0x0700, 0x1972, 0x0000 },
- { 0x0700, 0x1974, 0x0000 },
- { 0x9a00, 0x19e8, 0x4000 },
- { 0x9a00, 0x19e4, 0x3000 },
- { 0x9a00, 0x19e2, 0x2000 },
- { 0x1a00, 0x19e1, 0x0000 },
- { 0x1a00, 0x19e3, 0x0000 },
- { 0x9a00, 0x19e6, 0x2000 },
- { 0x1a00, 0x19e5, 0x0000 },
- { 0x1a00, 0x19e7, 0x0000 },
- { 0x9a00, 0x19ec, 0x3000 },
- { 0x9a00, 0x19ea, 0x2000 },
- { 0x1a00, 0x19e9, 0x0000 },
- { 0x1a00, 0x19eb, 0x0000 },
- { 0x9a00, 0x19ee, 0x2000 },
- { 0x1a00, 0x19ed, 0x0000 },
- { 0x1a00, 0x19ef, 0x0000 },
- { 0x8500, 0x1d00, 0x5000 },
- { 0x9a00, 0x19f8, 0x4000 },
- { 0x9a00, 0x19f4, 0x3000 },
- { 0x9a00, 0x19f2, 0x2000 },
- { 0x1a00, 0x19f1, 0x0000 },
- { 0x1a00, 0x19f3, 0x0000 },
- { 0x9a00, 0x19f6, 0x2000 },
- { 0x1a00, 0x19f5, 0x0000 },
- { 0x1a00, 0x19f7, 0x0000 },
- { 0x9a00, 0x19fc, 0x3000 },
- { 0x9a00, 0x19fa, 0x2000 },
- { 0x1a00, 0x19f9, 0x0000 },
- { 0x1a00, 0x19fb, 0x0000 },
- { 0x9a00, 0x19fe, 0x2000 },
- { 0x1a00, 0x19fd, 0x0000 },
- { 0x1a00, 0x19ff, 0x0000 },
- { 0x8500, 0x1d08, 0x4000 },
- { 0x8500, 0x1d04, 0x3000 },
- { 0x8500, 0x1d02, 0x2000 },
- { 0x0500, 0x1d01, 0x0000 },
- { 0x0500, 0x1d03, 0x0000 },
- { 0x8500, 0x1d06, 0x2000 },
- { 0x0500, 0x1d05, 0x0000 },
- { 0x0500, 0x1d07, 0x0000 },
- { 0x8500, 0x1d0c, 0x3000 },
- { 0x8500, 0x1d0a, 0x2000 },
- { 0x0500, 0x1d09, 0x0000 },
- { 0x0500, 0x1d0b, 0x0000 },
- { 0x8500, 0x1d0e, 0x2000 },
- { 0x0500, 0x1d0d, 0x0000 },
- { 0x0500, 0x1d0f, 0x0000 },
- { 0x8600, 0x1d50, 0x7000 },
- { 0x8600, 0x1d30, 0x6000 },
- { 0x8500, 0x1d20, 0x5000 },
- { 0x8500, 0x1d18, 0x4000 },
- { 0x8500, 0x1d14, 0x3000 },
- { 0x8500, 0x1d12, 0x2000 },
- { 0x0500, 0x1d11, 0x0000 },
- { 0x0500, 0x1d13, 0x0000 },
- { 0x8500, 0x1d16, 0x2000 },
- { 0x0500, 0x1d15, 0x0000 },
- { 0x0500, 0x1d17, 0x0000 },
- { 0x8500, 0x1d1c, 0x3000 },
- { 0x8500, 0x1d1a, 0x2000 },
- { 0x0500, 0x1d19, 0x0000 },
- { 0x0500, 0x1d1b, 0x0000 },
- { 0x8500, 0x1d1e, 0x2000 },
- { 0x0500, 0x1d1d, 0x0000 },
- { 0x0500, 0x1d1f, 0x0000 },
- { 0x8500, 0x1d28, 0x4000 },
- { 0x8500, 0x1d24, 0x3000 },
- { 0x8500, 0x1d22, 0x2000 },
- { 0x0500, 0x1d21, 0x0000 },
- { 0x0500, 0x1d23, 0x0000 },
- { 0x8500, 0x1d26, 0x2000 },
- { 0x0500, 0x1d25, 0x0000 },
- { 0x0500, 0x1d27, 0x0000 },
- { 0x8600, 0x1d2c, 0x3000 },
- { 0x8500, 0x1d2a, 0x2000 },
- { 0x0500, 0x1d29, 0x0000 },
- { 0x0500, 0x1d2b, 0x0000 },
- { 0x8600, 0x1d2e, 0x2000 },
- { 0x0600, 0x1d2d, 0x0000 },
- { 0x0600, 0x1d2f, 0x0000 },
- { 0x8600, 0x1d40, 0x5000 },
- { 0x8600, 0x1d38, 0x4000 },
- { 0x8600, 0x1d34, 0x3000 },
- { 0x8600, 0x1d32, 0x2000 },
- { 0x0600, 0x1d31, 0x0000 },
- { 0x0600, 0x1d33, 0x0000 },
- { 0x8600, 0x1d36, 0x2000 },
- { 0x0600, 0x1d35, 0x0000 },
- { 0x0600, 0x1d37, 0x0000 },
- { 0x8600, 0x1d3c, 0x3000 },
- { 0x8600, 0x1d3a, 0x2000 },
- { 0x0600, 0x1d39, 0x0000 },
- { 0x0600, 0x1d3b, 0x0000 },
- { 0x8600, 0x1d3e, 0x2000 },
- { 0x0600, 0x1d3d, 0x0000 },
- { 0x0600, 0x1d3f, 0x0000 },
- { 0x8600, 0x1d48, 0x4000 },
- { 0x8600, 0x1d44, 0x3000 },
- { 0x8600, 0x1d42, 0x2000 },
- { 0x0600, 0x1d41, 0x0000 },
- { 0x0600, 0x1d43, 0x0000 },
- { 0x8600, 0x1d46, 0x2000 },
- { 0x0600, 0x1d45, 0x0000 },
- { 0x0600, 0x1d47, 0x0000 },
- { 0x8600, 0x1d4c, 0x3000 },
- { 0x8600, 0x1d4a, 0x2000 },
- { 0x0600, 0x1d49, 0x0000 },
- { 0x0600, 0x1d4b, 0x0000 },
- { 0x8600, 0x1d4e, 0x2000 },
- { 0x0600, 0x1d4d, 0x0000 },
- { 0x0600, 0x1d4f, 0x0000 },
- { 0x8900, 0x1e04, 0x6001 },
- { 0x8600, 0x1d60, 0x5000 },
- { 0x8600, 0x1d58, 0x4000 },
- { 0x8600, 0x1d54, 0x3000 },
- { 0x8600, 0x1d52, 0x2000 },
- { 0x0600, 0x1d51, 0x0000 },
- { 0x0600, 0x1d53, 0x0000 },
- { 0x8600, 0x1d56, 0x2000 },
- { 0x0600, 0x1d55, 0x0000 },
- { 0x0600, 0x1d57, 0x0000 },
- { 0x8600, 0x1d5c, 0x3000 },
- { 0x8600, 0x1d5a, 0x2000 },
- { 0x0600, 0x1d59, 0x0000 },
- { 0x0600, 0x1d5b, 0x0000 },
- { 0x8600, 0x1d5e, 0x2000 },
- { 0x0600, 0x1d5d, 0x0000 },
- { 0x0600, 0x1d5f, 0x0000 },
- { 0x8500, 0x1d68, 0x4000 },
- { 0x8500, 0x1d64, 0x3000 },
- { 0x8500, 0x1d62, 0x2000 },
- { 0x0600, 0x1d61, 0x0000 },
- { 0x0500, 0x1d63, 0x0000 },
- { 0x8500, 0x1d66, 0x2000 },
- { 0x0500, 0x1d65, 0x0000 },
- { 0x0500, 0x1d67, 0x0000 },
- { 0x8900, 0x1e00, 0x3001 },
- { 0x8500, 0x1d6a, 0x2000 },
- { 0x0500, 0x1d69, 0x0000 },
- { 0x0500, 0x1d6b, 0x0000 },
- { 0x8900, 0x1e02, 0x2001 },
- { 0x0500, 0x1e01, 0x0fff },
- { 0x0500, 0x1e03, 0x0fff },
- { 0x8900, 0x1e14, 0x5001 },
- { 0x8900, 0x1e0c, 0x4001 },
- { 0x8900, 0x1e08, 0x3001 },
- { 0x8900, 0x1e06, 0x2001 },
- { 0x0500, 0x1e05, 0x0fff },
- { 0x0500, 0x1e07, 0x0fff },
- { 0x8900, 0x1e0a, 0x2001 },
- { 0x0500, 0x1e09, 0x0fff },
- { 0x0500, 0x1e0b, 0x0fff },
- { 0x8900, 0x1e10, 0x3001 },
- { 0x8900, 0x1e0e, 0x2001 },
- { 0x0500, 0x1e0d, 0x0fff },
- { 0x0500, 0x1e0f, 0x0fff },
- { 0x8900, 0x1e12, 0x2001 },
- { 0x0500, 0x1e11, 0x0fff },
- { 0x0500, 0x1e13, 0x0fff },
- { 0x8900, 0x1e1c, 0x4001 },
- { 0x8900, 0x1e18, 0x3001 },
- { 0x8900, 0x1e16, 0x2001 },
- { 0x0500, 0x1e15, 0x0fff },
- { 0x0500, 0x1e17, 0x0fff },
- { 0x8900, 0x1e1a, 0x2001 },
- { 0x0500, 0x1e19, 0x0fff },
- { 0x0500, 0x1e1b, 0x0fff },
- { 0x8900, 0x1e20, 0x3001 },
- { 0x8900, 0x1e1e, 0x2001 },
- { 0x0500, 0x1e1d, 0x0fff },
- { 0x0500, 0x1e1f, 0x0fff },
- { 0x8900, 0x1e22, 0x2001 },
- { 0x0500, 0x1e21, 0x0fff },
- { 0x0500, 0x1e23, 0x0fff },
- { 0x9600, 0x2045, 0xa000 },
- { 0x8500, 0x1f32, 0x9008 },
- { 0x8900, 0x1ea8, 0x8001 },
- { 0x8900, 0x1e64, 0x7001 },
- { 0x8900, 0x1e44, 0x6001 },
- { 0x8900, 0x1e34, 0x5001 },
- { 0x8900, 0x1e2c, 0x4001 },
- { 0x8900, 0x1e28, 0x3001 },
- { 0x8900, 0x1e26, 0x2001 },
- { 0x0500, 0x1e25, 0x0fff },
- { 0x0500, 0x1e27, 0x0fff },
- { 0x8900, 0x1e2a, 0x2001 },
- { 0x0500, 0x1e29, 0x0fff },
- { 0x0500, 0x1e2b, 0x0fff },
- { 0x8900, 0x1e30, 0x3001 },
- { 0x8900, 0x1e2e, 0x2001 },
- { 0x0500, 0x1e2d, 0x0fff },
- { 0x0500, 0x1e2f, 0x0fff },
- { 0x8900, 0x1e32, 0x2001 },
- { 0x0500, 0x1e31, 0x0fff },
- { 0x0500, 0x1e33, 0x0fff },
- { 0x8900, 0x1e3c, 0x4001 },
- { 0x8900, 0x1e38, 0x3001 },
- { 0x8900, 0x1e36, 0x2001 },
- { 0x0500, 0x1e35, 0x0fff },
- { 0x0500, 0x1e37, 0x0fff },
- { 0x8900, 0x1e3a, 0x2001 },
- { 0x0500, 0x1e39, 0x0fff },
- { 0x0500, 0x1e3b, 0x0fff },
- { 0x8900, 0x1e40, 0x3001 },
- { 0x8900, 0x1e3e, 0x2001 },
- { 0x0500, 0x1e3d, 0x0fff },
- { 0x0500, 0x1e3f, 0x0fff },
- { 0x8900, 0x1e42, 0x2001 },
- { 0x0500, 0x1e41, 0x0fff },
- { 0x0500, 0x1e43, 0x0fff },
- { 0x8900, 0x1e54, 0x5001 },
- { 0x8900, 0x1e4c, 0x4001 },
- { 0x8900, 0x1e48, 0x3001 },
- { 0x8900, 0x1e46, 0x2001 },
- { 0x0500, 0x1e45, 0x0fff },
- { 0x0500, 0x1e47, 0x0fff },
- { 0x8900, 0x1e4a, 0x2001 },
- { 0x0500, 0x1e49, 0x0fff },
- { 0x0500, 0x1e4b, 0x0fff },
- { 0x8900, 0x1e50, 0x3001 },
- { 0x8900, 0x1e4e, 0x2001 },
- { 0x0500, 0x1e4d, 0x0fff },
- { 0x0500, 0x1e4f, 0x0fff },
- { 0x8900, 0x1e52, 0x2001 },
- { 0x0500, 0x1e51, 0x0fff },
- { 0x0500, 0x1e53, 0x0fff },
- { 0x8900, 0x1e5c, 0x4001 },
- { 0x8900, 0x1e58, 0x3001 },
- { 0x8900, 0x1e56, 0x2001 },
- { 0x0500, 0x1e55, 0x0fff },
- { 0x0500, 0x1e57, 0x0fff },
- { 0x8900, 0x1e5a, 0x2001 },
- { 0x0500, 0x1e59, 0x0fff },
- { 0x0500, 0x1e5b, 0x0fff },
- { 0x8900, 0x1e60, 0x3001 },
- { 0x8900, 0x1e5e, 0x2001 },
- { 0x0500, 0x1e5d, 0x0fff },
- { 0x0500, 0x1e5f, 0x0fff },
- { 0x8900, 0x1e62, 0x2001 },
- { 0x0500, 0x1e61, 0x0fff },
- { 0x0500, 0x1e63, 0x0fff },
- { 0x8900, 0x1e84, 0x6001 },
- { 0x8900, 0x1e74, 0x5001 },
- { 0x8900, 0x1e6c, 0x4001 },
- { 0x8900, 0x1e68, 0x3001 },
- { 0x8900, 0x1e66, 0x2001 },
- { 0x0500, 0x1e65, 0x0fff },
- { 0x0500, 0x1e67, 0x0fff },
- { 0x8900, 0x1e6a, 0x2001 },
- { 0x0500, 0x1e69, 0x0fff },
- { 0x0500, 0x1e6b, 0x0fff },
- { 0x8900, 0x1e70, 0x3001 },
- { 0x8900, 0x1e6e, 0x2001 },
- { 0x0500, 0x1e6d, 0x0fff },
- { 0x0500, 0x1e6f, 0x0fff },
- { 0x8900, 0x1e72, 0x2001 },
- { 0x0500, 0x1e71, 0x0fff },
- { 0x0500, 0x1e73, 0x0fff },
- { 0x8900, 0x1e7c, 0x4001 },
- { 0x8900, 0x1e78, 0x3001 },
- { 0x8900, 0x1e76, 0x2001 },
- { 0x0500, 0x1e75, 0x0fff },
- { 0x0500, 0x1e77, 0x0fff },
- { 0x8900, 0x1e7a, 0x2001 },
- { 0x0500, 0x1e79, 0x0fff },
- { 0x0500, 0x1e7b, 0x0fff },
- { 0x8900, 0x1e80, 0x3001 },
- { 0x8900, 0x1e7e, 0x2001 },
- { 0x0500, 0x1e7d, 0x0fff },
- { 0x0500, 0x1e7f, 0x0fff },
- { 0x8900, 0x1e82, 0x2001 },
- { 0x0500, 0x1e81, 0x0fff },
- { 0x0500, 0x1e83, 0x0fff },
- { 0x8900, 0x1e94, 0x5001 },
- { 0x8900, 0x1e8c, 0x4001 },
- { 0x8900, 0x1e88, 0x3001 },
- { 0x8900, 0x1e86, 0x2001 },
- { 0x0500, 0x1e85, 0x0fff },
- { 0x0500, 0x1e87, 0x0fff },
- { 0x8900, 0x1e8a, 0x2001 },
- { 0x0500, 0x1e89, 0x0fff },
- { 0x0500, 0x1e8b, 0x0fff },
- { 0x8900, 0x1e90, 0x3001 },
- { 0x8900, 0x1e8e, 0x2001 },
- { 0x0500, 0x1e8d, 0x0fff },
- { 0x0500, 0x1e8f, 0x0fff },
- { 0x8900, 0x1e92, 0x2001 },
- { 0x0500, 0x1e91, 0x0fff },
- { 0x0500, 0x1e93, 0x0fff },
- { 0x8900, 0x1ea0, 0x4001 },
- { 0x8500, 0x1e98, 0x3000 },
- { 0x8500, 0x1e96, 0x2000 },
- { 0x0500, 0x1e95, 0x0fff },
- { 0x0500, 0x1e97, 0x0000 },
- { 0x8500, 0x1e9a, 0x2000 },
- { 0x0500, 0x1e99, 0x0000 },
- { 0x0500, 0x1e9b, 0x0fc5 },
- { 0x8900, 0x1ea4, 0x3001 },
- { 0x8900, 0x1ea2, 0x2001 },
- { 0x0500, 0x1ea1, 0x0fff },
- { 0x0500, 0x1ea3, 0x0fff },
- { 0x8900, 0x1ea6, 0x2001 },
- { 0x0500, 0x1ea5, 0x0fff },
- { 0x0500, 0x1ea7, 0x0fff },
- { 0x8900, 0x1ee8, 0x7001 },
- { 0x8900, 0x1ec8, 0x6001 },
- { 0x8900, 0x1eb8, 0x5001 },
- { 0x8900, 0x1eb0, 0x4001 },
- { 0x8900, 0x1eac, 0x3001 },
- { 0x8900, 0x1eaa, 0x2001 },
- { 0x0500, 0x1ea9, 0x0fff },
- { 0x0500, 0x1eab, 0x0fff },
- { 0x8900, 0x1eae, 0x2001 },
- { 0x0500, 0x1ead, 0x0fff },
- { 0x0500, 0x1eaf, 0x0fff },
- { 0x8900, 0x1eb4, 0x3001 },
- { 0x8900, 0x1eb2, 0x2001 },
- { 0x0500, 0x1eb1, 0x0fff },
- { 0x0500, 0x1eb3, 0x0fff },
- { 0x8900, 0x1eb6, 0x2001 },
- { 0x0500, 0x1eb5, 0x0fff },
- { 0x0500, 0x1eb7, 0x0fff },
- { 0x8900, 0x1ec0, 0x4001 },
- { 0x8900, 0x1ebc, 0x3001 },
- { 0x8900, 0x1eba, 0x2001 },
- { 0x0500, 0x1eb9, 0x0fff },
- { 0x0500, 0x1ebb, 0x0fff },
- { 0x8900, 0x1ebe, 0x2001 },
- { 0x0500, 0x1ebd, 0x0fff },
- { 0x0500, 0x1ebf, 0x0fff },
- { 0x8900, 0x1ec4, 0x3001 },
- { 0x8900, 0x1ec2, 0x2001 },
- { 0x0500, 0x1ec1, 0x0fff },
- { 0x0500, 0x1ec3, 0x0fff },
- { 0x8900, 0x1ec6, 0x2001 },
- { 0x0500, 0x1ec5, 0x0fff },
- { 0x0500, 0x1ec7, 0x0fff },
- { 0x8900, 0x1ed8, 0x5001 },
- { 0x8900, 0x1ed0, 0x4001 },
- { 0x8900, 0x1ecc, 0x3001 },
- { 0x8900, 0x1eca, 0x2001 },
- { 0x0500, 0x1ec9, 0x0fff },
- { 0x0500, 0x1ecb, 0x0fff },
- { 0x8900, 0x1ece, 0x2001 },
- { 0x0500, 0x1ecd, 0x0fff },
- { 0x0500, 0x1ecf, 0x0fff },
- { 0x8900, 0x1ed4, 0x3001 },
- { 0x8900, 0x1ed2, 0x2001 },
- { 0x0500, 0x1ed1, 0x0fff },
- { 0x0500, 0x1ed3, 0x0fff },
- { 0x8900, 0x1ed6, 0x2001 },
- { 0x0500, 0x1ed5, 0x0fff },
- { 0x0500, 0x1ed7, 0x0fff },
- { 0x8900, 0x1ee0, 0x4001 },
- { 0x8900, 0x1edc, 0x3001 },
- { 0x8900, 0x1eda, 0x2001 },
- { 0x0500, 0x1ed9, 0x0fff },
- { 0x0500, 0x1edb, 0x0fff },
- { 0x8900, 0x1ede, 0x2001 },
- { 0x0500, 0x1edd, 0x0fff },
- { 0x0500, 0x1edf, 0x0fff },
- { 0x8900, 0x1ee4, 0x3001 },
- { 0x8900, 0x1ee2, 0x2001 },
- { 0x0500, 0x1ee1, 0x0fff },
- { 0x0500, 0x1ee3, 0x0fff },
- { 0x8900, 0x1ee6, 0x2001 },
- { 0x0500, 0x1ee5, 0x0fff },
- { 0x0500, 0x1ee7, 0x0fff },
- { 0x8900, 0x1f0e, 0x6ff8 },
- { 0x8900, 0x1ef8, 0x5001 },
- { 0x8900, 0x1ef0, 0x4001 },
- { 0x8900, 0x1eec, 0x3001 },
- { 0x8900, 0x1eea, 0x2001 },
- { 0x0500, 0x1ee9, 0x0fff },
- { 0x0500, 0x1eeb, 0x0fff },
- { 0x8900, 0x1eee, 0x2001 },
- { 0x0500, 0x1eed, 0x0fff },
- { 0x0500, 0x1eef, 0x0fff },
- { 0x8900, 0x1ef4, 0x3001 },
- { 0x8900, 0x1ef2, 0x2001 },
- { 0x0500, 0x1ef1, 0x0fff },
- { 0x0500, 0x1ef3, 0x0fff },
- { 0x8900, 0x1ef6, 0x2001 },
- { 0x0500, 0x1ef5, 0x0fff },
- { 0x0500, 0x1ef7, 0x0fff },
- { 0x8500, 0x1f06, 0x4008 },
- { 0x8500, 0x1f02, 0x3008 },
- { 0x8500, 0x1f00, 0x2008 },
- { 0x0500, 0x1ef9, 0x0fff },
- { 0x0500, 0x1f01, 0x0008 },
- { 0x8500, 0x1f04, 0x2008 },
- { 0x0500, 0x1f03, 0x0008 },
- { 0x0500, 0x1f05, 0x0008 },
- { 0x8900, 0x1f0a, 0x3ff8 },
- { 0x8900, 0x1f08, 0x2ff8 },
- { 0x0500, 0x1f07, 0x0008 },
- { 0x0900, 0x1f09, 0x0ff8 },
- { 0x8900, 0x1f0c, 0x2ff8 },
- { 0x0900, 0x1f0b, 0x0ff8 },
- { 0x0900, 0x1f0d, 0x0ff8 },
- { 0x8500, 0x1f22, 0x5008 },
- { 0x8900, 0x1f18, 0x4ff8 },
- { 0x8500, 0x1f12, 0x3008 },
- { 0x8500, 0x1f10, 0x2008 },
- { 0x0900, 0x1f0f, 0x0ff8 },
- { 0x0500, 0x1f11, 0x0008 },
- { 0x8500, 0x1f14, 0x2008 },
- { 0x0500, 0x1f13, 0x0008 },
- { 0x0500, 0x1f15, 0x0008 },
- { 0x8900, 0x1f1c, 0x3ff8 },
- { 0x8900, 0x1f1a, 0x2ff8 },
- { 0x0900, 0x1f19, 0x0ff8 },
- { 0x0900, 0x1f1b, 0x0ff8 },
- { 0x8500, 0x1f20, 0x2008 },
- { 0x0900, 0x1f1d, 0x0ff8 },
- { 0x0500, 0x1f21, 0x0008 },
- { 0x8900, 0x1f2a, 0x4ff8 },
- { 0x8500, 0x1f26, 0x3008 },
- { 0x8500, 0x1f24, 0x2008 },
- { 0x0500, 0x1f23, 0x0008 },
- { 0x0500, 0x1f25, 0x0008 },
- { 0x8900, 0x1f28, 0x2ff8 },
- { 0x0500, 0x1f27, 0x0008 },
- { 0x0900, 0x1f29, 0x0ff8 },
- { 0x8900, 0x1f2e, 0x3ff8 },
- { 0x8900, 0x1f2c, 0x2ff8 },
- { 0x0900, 0x1f2b, 0x0ff8 },
- { 0x0900, 0x1f2d, 0x0ff8 },
- { 0x8500, 0x1f30, 0x2008 },
- { 0x0900, 0x1f2f, 0x0ff8 },
- { 0x0500, 0x1f31, 0x0008 },
- { 0x9800, 0x1fbd, 0x8000 },
- { 0x8500, 0x1f7a, 0x7070 },
- { 0x8500, 0x1f56, 0x6000 },
- { 0x8500, 0x1f42, 0x5008 },
- { 0x8900, 0x1f3a, 0x4ff8 },
- { 0x8500, 0x1f36, 0x3008 },
- { 0x8500, 0x1f34, 0x2008 },
- { 0x0500, 0x1f33, 0x0008 },
- { 0x0500, 0x1f35, 0x0008 },
- { 0x8900, 0x1f38, 0x2ff8 },
- { 0x0500, 0x1f37, 0x0008 },
- { 0x0900, 0x1f39, 0x0ff8 },
- { 0x8900, 0x1f3e, 0x3ff8 },
- { 0x8900, 0x1f3c, 0x2ff8 },
- { 0x0900, 0x1f3b, 0x0ff8 },
- { 0x0900, 0x1f3d, 0x0ff8 },
- { 0x8500, 0x1f40, 0x2008 },
- { 0x0900, 0x1f3f, 0x0ff8 },
- { 0x0500, 0x1f41, 0x0008 },
- { 0x8900, 0x1f4c, 0x4ff8 },
- { 0x8900, 0x1f48, 0x3ff8 },
- { 0x8500, 0x1f44, 0x2008 },
- { 0x0500, 0x1f43, 0x0008 },
- { 0x0500, 0x1f45, 0x0008 },
- { 0x8900, 0x1f4a, 0x2ff8 },
- { 0x0900, 0x1f49, 0x0ff8 },
- { 0x0900, 0x1f4b, 0x0ff8 },
- { 0x8500, 0x1f52, 0x3000 },
- { 0x8500, 0x1f50, 0x2000 },
- { 0x0900, 0x1f4d, 0x0ff8 },
- { 0x0500, 0x1f51, 0x0008 },
- { 0x8500, 0x1f54, 0x2000 },
- { 0x0500, 0x1f53, 0x0008 },
- { 0x0500, 0x1f55, 0x0008 },
- { 0x8900, 0x1f6a, 0x5ff8 },
- { 0x8500, 0x1f62, 0x4008 },
- { 0x8900, 0x1f5d, 0x3ff8 },
- { 0x8900, 0x1f59, 0x2ff8 },
- { 0x0500, 0x1f57, 0x0008 },
- { 0x0900, 0x1f5b, 0x0ff8 },
- { 0x8500, 0x1f60, 0x2008 },
- { 0x0900, 0x1f5f, 0x0ff8 },
- { 0x0500, 0x1f61, 0x0008 },
- { 0x8500, 0x1f66, 0x3008 },
- { 0x8500, 0x1f64, 0x2008 },
- { 0x0500, 0x1f63, 0x0008 },
- { 0x0500, 0x1f65, 0x0008 },
- { 0x8900, 0x1f68, 0x2ff8 },
- { 0x0500, 0x1f67, 0x0008 },
- { 0x0900, 0x1f69, 0x0ff8 },
- { 0x8500, 0x1f72, 0x4056 },
- { 0x8900, 0x1f6e, 0x3ff8 },
- { 0x8900, 0x1f6c, 0x2ff8 },
- { 0x0900, 0x1f6b, 0x0ff8 },
- { 0x0900, 0x1f6d, 0x0ff8 },
- { 0x8500, 0x1f70, 0x204a },
- { 0x0900, 0x1f6f, 0x0ff8 },
- { 0x0500, 0x1f71, 0x004a },
- { 0x8500, 0x1f76, 0x3064 },
- { 0x8500, 0x1f74, 0x2056 },
- { 0x0500, 0x1f73, 0x0056 },
- { 0x0500, 0x1f75, 0x0056 },
- { 0x8500, 0x1f78, 0x2080 },
- { 0x0500, 0x1f77, 0x0064 },
- { 0x0500, 0x1f79, 0x0080 },
- { 0x8800, 0x1f9c, 0x6000 },
- { 0x8800, 0x1f8c, 0x5000 },
- { 0x8500, 0x1f84, 0x4008 },
- { 0x8500, 0x1f80, 0x3008 },
- { 0x8500, 0x1f7c, 0x207e },
- { 0x0500, 0x1f7b, 0x0070 },
- { 0x0500, 0x1f7d, 0x007e },
- { 0x8500, 0x1f82, 0x2008 },
- { 0x0500, 0x1f81, 0x0008 },
- { 0x0500, 0x1f83, 0x0008 },
- { 0x8800, 0x1f88, 0x3000 },
- { 0x8500, 0x1f86, 0x2008 },
- { 0x0500, 0x1f85, 0x0008 },
- { 0x0500, 0x1f87, 0x0008 },
- { 0x8800, 0x1f8a, 0x2000 },
- { 0x0800, 0x1f89, 0x0000 },
- { 0x0800, 0x1f8b, 0x0000 },
- { 0x8500, 0x1f94, 0x4008 },
- { 0x8500, 0x1f90, 0x3008 },
- { 0x8800, 0x1f8e, 0x2000 },
- { 0x0800, 0x1f8d, 0x0000 },
- { 0x0800, 0x1f8f, 0x0000 },
- { 0x8500, 0x1f92, 0x2008 },
- { 0x0500, 0x1f91, 0x0008 },
- { 0x0500, 0x1f93, 0x0008 },
- { 0x8800, 0x1f98, 0x3000 },
- { 0x8500, 0x1f96, 0x2008 },
- { 0x0500, 0x1f95, 0x0008 },
- { 0x0500, 0x1f97, 0x0008 },
- { 0x8800, 0x1f9a, 0x2000 },
- { 0x0800, 0x1f99, 0x0000 },
- { 0x0800, 0x1f9b, 0x0000 },
- { 0x8800, 0x1fac, 0x5000 },
- { 0x8500, 0x1fa4, 0x4008 },
- { 0x8500, 0x1fa0, 0x3008 },
- { 0x8800, 0x1f9e, 0x2000 },
- { 0x0800, 0x1f9d, 0x0000 },
- { 0x0800, 0x1f9f, 0x0000 },
- { 0x8500, 0x1fa2, 0x2008 },
- { 0x0500, 0x1fa1, 0x0008 },
- { 0x0500, 0x1fa3, 0x0008 },
- { 0x8800, 0x1fa8, 0x3000 },
- { 0x8500, 0x1fa6, 0x2008 },
- { 0x0500, 0x1fa5, 0x0008 },
- { 0x0500, 0x1fa7, 0x0008 },
- { 0x8800, 0x1faa, 0x2000 },
- { 0x0800, 0x1fa9, 0x0000 },
- { 0x0800, 0x1fab, 0x0000 },
- { 0x8500, 0x1fb4, 0x4000 },
- { 0x8500, 0x1fb0, 0x3008 },
- { 0x8800, 0x1fae, 0x2000 },
- { 0x0800, 0x1fad, 0x0000 },
- { 0x0800, 0x1faf, 0x0000 },
- { 0x8500, 0x1fb2, 0x2000 },
- { 0x0500, 0x1fb1, 0x0008 },
- { 0x0500, 0x1fb3, 0x0009 },
- { 0x8900, 0x1fb9, 0x3ff8 },
- { 0x8500, 0x1fb7, 0x2000 },
- { 0x0500, 0x1fb6, 0x0000 },
- { 0x0900, 0x1fb8, 0x0ff8 },
- { 0x8900, 0x1fbb, 0x2fb6 },
- { 0x0900, 0x1fba, 0x0fb6 },
- { 0x0800, 0x1fbc, 0x0000 },
- { 0x9d00, 0x2005, 0x7000 },
- { 0x8500, 0x1fe1, 0x6008 },
- { 0x9800, 0x1fce, 0x5000 },
- { 0x8500, 0x1fc6, 0x4000 },
- { 0x9800, 0x1fc1, 0x3000 },
- { 0x9800, 0x1fbf, 0x2000 },
- { 0x0500, 0x1fbe, 0x0000 },
- { 0x1800, 0x1fc0, 0x0000 },
- { 0x8500, 0x1fc3, 0x2009 },
- { 0x0500, 0x1fc2, 0x0000 },
- { 0x0500, 0x1fc4, 0x0000 },
- { 0x8900, 0x1fca, 0x3faa },
- { 0x8900, 0x1fc8, 0x2faa },
- { 0x0500, 0x1fc7, 0x0000 },
- { 0x0900, 0x1fc9, 0x0faa },
- { 0x8800, 0x1fcc, 0x2000 },
- { 0x0900, 0x1fcb, 0x0faa },
- { 0x1800, 0x1fcd, 0x0000 },
- { 0x8900, 0x1fd8, 0x4ff8 },
- { 0x8500, 0x1fd2, 0x3000 },
- { 0x8500, 0x1fd0, 0x2008 },
- { 0x1800, 0x1fcf, 0x0000 },
- { 0x0500, 0x1fd1, 0x0008 },
- { 0x8500, 0x1fd6, 0x2000 },
- { 0x0500, 0x1fd3, 0x0000 },
- { 0x0500, 0x1fd7, 0x0000 },
- { 0x9800, 0x1fdd, 0x3000 },
- { 0x8900, 0x1fda, 0x2f9c },
- { 0x0900, 0x1fd9, 0x0ff8 },
- { 0x0900, 0x1fdb, 0x0f9c },
- { 0x9800, 0x1fdf, 0x2000 },
- { 0x1800, 0x1fde, 0x0000 },
- { 0x0500, 0x1fe0, 0x0008 },
- { 0x8500, 0x1ff3, 0x5009 },
- { 0x8900, 0x1fe9, 0x4ff8 },
- { 0x8500, 0x1fe5, 0x3007 },
- { 0x8500, 0x1fe3, 0x2000 },
- { 0x0500, 0x1fe2, 0x0000 },
- { 0x0500, 0x1fe4, 0x0000 },
- { 0x8500, 0x1fe7, 0x2000 },
- { 0x0500, 0x1fe6, 0x0000 },
- { 0x0900, 0x1fe8, 0x0ff8 },
- { 0x9800, 0x1fed, 0x3000 },
- { 0x8900, 0x1feb, 0x2f90 },
- { 0x0900, 0x1fea, 0x0f90 },
- { 0x0900, 0x1fec, 0x0ff9 },
- { 0x9800, 0x1fef, 0x2000 },
- { 0x1800, 0x1fee, 0x0000 },
- { 0x0500, 0x1ff2, 0x0000 },
- { 0x8800, 0x1ffc, 0x4000 },
- { 0x8900, 0x1ff8, 0x3f80 },
- { 0x8500, 0x1ff6, 0x2000 },
- { 0x0500, 0x1ff4, 0x0000 },
- { 0x0500, 0x1ff7, 0x0000 },
- { 0x8900, 0x1ffa, 0x2f82 },
- { 0x0900, 0x1ff9, 0x0f80 },
- { 0x0900, 0x1ffb, 0x0f82 },
- { 0x9d00, 0x2001, 0x3000 },
- { 0x9800, 0x1ffe, 0x2000 },
- { 0x1800, 0x1ffd, 0x0000 },
- { 0x1d00, 0x2000, 0x0000 },
- { 0x9d00, 0x2003, 0x2000 },
- { 0x1d00, 0x2002, 0x0000 },
- { 0x1d00, 0x2004, 0x0000 },
- { 0x9500, 0x2025, 0x6000 },
- { 0x9100, 0x2015, 0x5000 },
- { 0x8100, 0x200d, 0x4000 },
- { 0x9d00, 0x2009, 0x3000 },
- { 0x9d00, 0x2007, 0x2000 },
- { 0x1d00, 0x2006, 0x0000 },
- { 0x1d00, 0x2008, 0x0000 },
- { 0x9d00, 0x200b, 0x2000 },
- { 0x1d00, 0x200a, 0x0000 },
- { 0x0100, 0x200c, 0x0000 },
- { 0x9100, 0x2011, 0x3000 },
- { 0x8100, 0x200f, 0x2000 },
- { 0x0100, 0x200e, 0x0000 },
- { 0x1100, 0x2010, 0x0000 },
- { 0x9100, 0x2013, 0x2000 },
- { 0x1100, 0x2012, 0x0000 },
- { 0x1100, 0x2014, 0x0000 },
- { 0x9300, 0x201d, 0x4000 },
- { 0x9300, 0x2019, 0x3000 },
- { 0x9500, 0x2017, 0x2000 },
- { 0x1500, 0x2016, 0x0000 },
- { 0x1400, 0x2018, 0x0000 },
- { 0x9400, 0x201b, 0x2000 },
- { 0x1600, 0x201a, 0x0000 },
- { 0x1400, 0x201c, 0x0000 },
- { 0x9500, 0x2021, 0x3000 },
- { 0x9400, 0x201f, 0x2000 },
- { 0x1600, 0x201e, 0x0000 },
- { 0x1500, 0x2020, 0x0000 },
- { 0x9500, 0x2023, 0x2000 },
- { 0x1500, 0x2022, 0x0000 },
- { 0x1500, 0x2024, 0x0000 },
- { 0x9500, 0x2035, 0x5000 },
- { 0x8100, 0x202d, 0x4000 },
- { 0x9c00, 0x2029, 0x3000 },
- { 0x9500, 0x2027, 0x2000 },
- { 0x1500, 0x2026, 0x0000 },
- { 0x1b00, 0x2028, 0x0000 },
- { 0x8100, 0x202b, 0x2000 },
- { 0x0100, 0x202a, 0x0000 },
- { 0x0100, 0x202c, 0x0000 },
- { 0x9500, 0x2031, 0x3000 },
- { 0x9d00, 0x202f, 0x2000 },
- { 0x0100, 0x202e, 0x0000 },
- { 0x1500, 0x2030, 0x0000 },
- { 0x9500, 0x2033, 0x2000 },
- { 0x1500, 0x2032, 0x0000 },
- { 0x1500, 0x2034, 0x0000 },
- { 0x9500, 0x203d, 0x4000 },
- { 0x9400, 0x2039, 0x3000 },
- { 0x9500, 0x2037, 0x2000 },
- { 0x1500, 0x2036, 0x0000 },
- { 0x1500, 0x2038, 0x0000 },
- { 0x9500, 0x203b, 0x2000 },
- { 0x1300, 0x203a, 0x0000 },
- { 0x1500, 0x203c, 0x0000 },
- { 0x9500, 0x2041, 0x3000 },
- { 0x9000, 0x203f, 0x2000 },
- { 0x1500, 0x203e, 0x0000 },
- { 0x1000, 0x2040, 0x0000 },
- { 0x9500, 0x2043, 0x2000 },
- { 0x1500, 0x2042, 0x0000 },
- { 0x1900, 0x2044, 0x0000 },
- { 0x9900, 0x21ae, 0x9000 },
- { 0x8900, 0x211a, 0x8000 },
- { 0x9700, 0x20a7, 0x7000 },
- { 0x8f00, 0x2076, 0x6000 },
- { 0x9500, 0x2057, 0x5000 },
- { 0x9500, 0x204d, 0x4000 },
- { 0x9500, 0x2049, 0x3000 },
- { 0x9500, 0x2047, 0x2000 },
- { 0x1200, 0x2046, 0x0000 },
- { 0x1500, 0x2048, 0x0000 },
- { 0x9500, 0x204b, 0x2000 },
- { 0x1500, 0x204a, 0x0000 },
- { 0x1500, 0x204c, 0x0000 },
- { 0x9500, 0x2051, 0x3000 },
- { 0x9500, 0x204f, 0x2000 },
- { 0x1500, 0x204e, 0x0000 },
- { 0x1500, 0x2050, 0x0000 },
- { 0x9500, 0x2053, 0x2000 },
- { 0x1900, 0x2052, 0x0000 },
- { 0x1000, 0x2054, 0x0000 },
- { 0x8100, 0x206c, 0x4000 },
- { 0x8100, 0x2062, 0x3000 },
- { 0x8100, 0x2060, 0x2000 },
- { 0x1d00, 0x205f, 0x0000 },
- { 0x0100, 0x2061, 0x0000 },
- { 0x8100, 0x206a, 0x2000 },
- { 0x0100, 0x2063, 0x0000 },
- { 0x0100, 0x206b, 0x0000 },
- { 0x8f00, 0x2070, 0x3000 },
- { 0x8100, 0x206e, 0x2000 },
- { 0x0100, 0x206d, 0x0000 },
- { 0x0100, 0x206f, 0x0000 },
- { 0x8f00, 0x2074, 0x2000 },
- { 0x0500, 0x2071, 0x0000 },
- { 0x0f00, 0x2075, 0x0000 },
- { 0x8f00, 0x2086, 0x5000 },
- { 0x9200, 0x207e, 0x4000 },
- { 0x9900, 0x207a, 0x3000 },
- { 0x8f00, 0x2078, 0x2000 },
- { 0x0f00, 0x2077, 0x0000 },
- { 0x0f00, 0x2079, 0x0000 },
- { 0x9900, 0x207c, 0x2000 },
- { 0x1900, 0x207b, 0x0000 },
- { 0x1600, 0x207d, 0x0000 },
- { 0x8f00, 0x2082, 0x3000 },
- { 0x8f00, 0x2080, 0x2000 },
- { 0x0500, 0x207f, 0x0000 },
- { 0x0f00, 0x2081, 0x0000 },
- { 0x8f00, 0x2084, 0x2000 },
- { 0x0f00, 0x2083, 0x0000 },
- { 0x0f00, 0x2085, 0x0000 },
- { 0x9200, 0x208e, 0x4000 },
- { 0x9900, 0x208a, 0x3000 },
- { 0x8f00, 0x2088, 0x2000 },
- { 0x0f00, 0x2087, 0x0000 },
- { 0x0f00, 0x2089, 0x0000 },
- { 0x9900, 0x208c, 0x2000 },
- { 0x1900, 0x208b, 0x0000 },
- { 0x1600, 0x208d, 0x0000 },
- { 0x9700, 0x20a3, 0x3000 },
- { 0x9700, 0x20a1, 0x2000 },
- { 0x1700, 0x20a0, 0x0000 },
- { 0x1700, 0x20a2, 0x0000 },
- { 0x9700, 0x20a5, 0x2000 },
- { 0x1700, 0x20a4, 0x0000 },
- { 0x1700, 0x20a6, 0x0000 },
- { 0x8c00, 0x20e5, 0x6000 },
- { 0x8c00, 0x20d5, 0x5000 },
- { 0x9700, 0x20af, 0x4000 },
- { 0x9700, 0x20ab, 0x3000 },
- { 0x9700, 0x20a9, 0x2000 },
- { 0x1700, 0x20a8, 0x0000 },
- { 0x1700, 0x20aa, 0x0000 },
- { 0x9700, 0x20ad, 0x2000 },
- { 0x1700, 0x20ac, 0x0000 },
- { 0x1700, 0x20ae, 0x0000 },
- { 0x8c00, 0x20d1, 0x3000 },
- { 0x9700, 0x20b1, 0x2000 },
- { 0x1700, 0x20b0, 0x0000 },
- { 0x0c00, 0x20d0, 0x0000 },
- { 0x8c00, 0x20d3, 0x2000 },
- { 0x0c00, 0x20d2, 0x0000 },
- { 0x0c00, 0x20d4, 0x0000 },
- { 0x8b00, 0x20dd, 0x4000 },
- { 0x8c00, 0x20d9, 0x3000 },
- { 0x8c00, 0x20d7, 0x2000 },
- { 0x0c00, 0x20d6, 0x0000 },
- { 0x0c00, 0x20d8, 0x0000 },
- { 0x8c00, 0x20db, 0x2000 },
- { 0x0c00, 0x20da, 0x0000 },
- { 0x0c00, 0x20dc, 0x0000 },
- { 0x8c00, 0x20e1, 0x3000 },
- { 0x8b00, 0x20df, 0x2000 },
- { 0x0b00, 0x20de, 0x0000 },
- { 0x0b00, 0x20e0, 0x0000 },
- { 0x8b00, 0x20e3, 0x2000 },
- { 0x0b00, 0x20e2, 0x0000 },
- { 0x0b00, 0x20e4, 0x0000 },
- { 0x8500, 0x210a, 0x5000 },
- { 0x8900, 0x2102, 0x4000 },
- { 0x8c00, 0x20e9, 0x3000 },
- { 0x8c00, 0x20e7, 0x2000 },
- { 0x0c00, 0x20e6, 0x0000 },
- { 0x0c00, 0x20e8, 0x0000 },
- { 0x9a00, 0x2100, 0x2000 },
- { 0x0c00, 0x20ea, 0x0000 },
- { 0x1a00, 0x2101, 0x0000 },
- { 0x9a00, 0x2106, 0x3000 },
- { 0x9a00, 0x2104, 0x2000 },
- { 0x1a00, 0x2103, 0x0000 },
- { 0x1a00, 0x2105, 0x0000 },
- { 0x9a00, 0x2108, 0x2000 },
- { 0x0900, 0x2107, 0x0000 },
- { 0x1a00, 0x2109, 0x0000 },
- { 0x8900, 0x2112, 0x4000 },
- { 0x8500, 0x210e, 0x3000 },
- { 0x8900, 0x210c, 0x2000 },
- { 0x0900, 0x210b, 0x0000 },
- { 0x0900, 0x210d, 0x0000 },
- { 0x8900, 0x2110, 0x2000 },
- { 0x0500, 0x210f, 0x0000 },
- { 0x0900, 0x2111, 0x0000 },
- { 0x9a00, 0x2116, 0x3000 },
- { 0x9a00, 0x2114, 0x2000 },
- { 0x0500, 0x2113, 0x0000 },
- { 0x0900, 0x2115, 0x0000 },
- { 0x9a00, 0x2118, 0x2000 },
- { 0x1a00, 0x2117, 0x0000 },
- { 0x0900, 0x2119, 0x0000 },
- { 0x8e00, 0x2162, 0x7000 },
- { 0x9a00, 0x213a, 0x6000 },
- { 0x8900, 0x212a, 0x5000 },
- { 0x9a00, 0x2122, 0x4000 },
- { 0x9a00, 0x211e, 0x3000 },
- { 0x8900, 0x211c, 0x2000 },
- { 0x0900, 0x211b, 0x0000 },
- { 0x0900, 0x211d, 0x0000 },
- { 0x9a00, 0x2120, 0x2000 },
- { 0x1a00, 0x211f, 0x0000 },
- { 0x1a00, 0x2121, 0x0000 },
- { 0x8900, 0x2126, 0x3000 },
- { 0x8900, 0x2124, 0x2000 },
- { 0x1a00, 0x2123, 0x0000 },
- { 0x1a00, 0x2125, 0x0000 },
- { 0x8900, 0x2128, 0x2000 },
- { 0x1a00, 0x2127, 0x0000 },
- { 0x1a00, 0x2129, 0x0000 },
- { 0x9a00, 0x2132, 0x4000 },
- { 0x9a00, 0x212e, 0x3000 },
- { 0x8900, 0x212c, 0x2000 },
- { 0x0900, 0x212b, 0x0000 },
- { 0x0900, 0x212d, 0x0000 },
- { 0x8900, 0x2130, 0x2000 },
- { 0x0500, 0x212f, 0x0000 },
- { 0x0900, 0x2131, 0x0000 },
- { 0x8700, 0x2136, 0x3000 },
- { 0x8500, 0x2134, 0x2000 },
- { 0x0900, 0x2133, 0x0000 },
- { 0x0700, 0x2135, 0x0000 },
- { 0x8700, 0x2138, 0x2000 },
- { 0x0700, 0x2137, 0x0000 },
- { 0x0500, 0x2139, 0x0000 },
- { 0x9900, 0x214b, 0x5000 },
- { 0x9900, 0x2143, 0x4000 },
- { 0x8900, 0x213f, 0x3000 },
- { 0x8500, 0x213d, 0x2000 },
- { 0x1a00, 0x213b, 0x0000 },
- { 0x0900, 0x213e, 0x0000 },
- { 0x9900, 0x2141, 0x2000 },
- { 0x1900, 0x2140, 0x0000 },
- { 0x1900, 0x2142, 0x0000 },
- { 0x8500, 0x2147, 0x3000 },
- { 0x8900, 0x2145, 0x2000 },
- { 0x1900, 0x2144, 0x0000 },
- { 0x0500, 0x2146, 0x0000 },
- { 0x8500, 0x2149, 0x2000 },
- { 0x0500, 0x2148, 0x0000 },
- { 0x1a00, 0x214a, 0x0000 },
- { 0x8f00, 0x215a, 0x4000 },
- { 0x8f00, 0x2156, 0x3000 },
- { 0x8f00, 0x2154, 0x2000 },
- { 0x0f00, 0x2153, 0x0000 },
- { 0x0f00, 0x2155, 0x0000 },
- { 0x8f00, 0x2158, 0x2000 },
- { 0x0f00, 0x2157, 0x0000 },
- { 0x0f00, 0x2159, 0x0000 },
- { 0x8f00, 0x215e, 0x3000 },
- { 0x8f00, 0x215c, 0x2000 },
- { 0x0f00, 0x215b, 0x0000 },
- { 0x0f00, 0x215d, 0x0000 },
- { 0x8e00, 0x2160, 0x2000 },
- { 0x0f00, 0x215f, 0x0000 },
- { 0x0e00, 0x2161, 0x0000 },
- { 0x8e00, 0x2182, 0x6000 },
- { 0x8e00, 0x2172, 0x5000 },
- { 0x8e00, 0x216a, 0x4000 },
- { 0x8e00, 0x2166, 0x3000 },
- { 0x8e00, 0x2164, 0x2000 },
- { 0x0e00, 0x2163, 0x0000 },
- { 0x0e00, 0x2165, 0x0000 },
- { 0x8e00, 0x2168, 0x2000 },
- { 0x0e00, 0x2167, 0x0000 },
- { 0x0e00, 0x2169, 0x0000 },
- { 0x8e00, 0x216e, 0x3000 },
- { 0x8e00, 0x216c, 0x2000 },
- { 0x0e00, 0x216b, 0x0000 },
- { 0x0e00, 0x216d, 0x0000 },
- { 0x8e00, 0x2170, 0x2000 },
- { 0x0e00, 0x216f, 0x0000 },
- { 0x0e00, 0x2171, 0x0000 },
- { 0x8e00, 0x217a, 0x4000 },
- { 0x8e00, 0x2176, 0x3000 },
- { 0x8e00, 0x2174, 0x2000 },
- { 0x0e00, 0x2173, 0x0000 },
- { 0x0e00, 0x2175, 0x0000 },
- { 0x8e00, 0x2178, 0x2000 },
- { 0x0e00, 0x2177, 0x0000 },
- { 0x0e00, 0x2179, 0x0000 },
- { 0x8e00, 0x217e, 0x3000 },
- { 0x8e00, 0x217c, 0x2000 },
- { 0x0e00, 0x217b, 0x0000 },
- { 0x0e00, 0x217d, 0x0000 },
- { 0x8e00, 0x2180, 0x2000 },
- { 0x0e00, 0x217f, 0x0000 },
- { 0x0e00, 0x2181, 0x0000 },
- { 0x9a00, 0x219e, 0x5000 },
- { 0x9a00, 0x2196, 0x4000 },
- { 0x9900, 0x2192, 0x3000 },
- { 0x9900, 0x2190, 0x2000 },
- { 0x0e00, 0x2183, 0x0000 },
- { 0x1900, 0x2191, 0x0000 },
- { 0x9900, 0x2194, 0x2000 },
- { 0x1900, 0x2193, 0x0000 },
- { 0x1a00, 0x2195, 0x0000 },
- { 0x9900, 0x219a, 0x3000 },
- { 0x9a00, 0x2198, 0x2000 },
- { 0x1a00, 0x2197, 0x0000 },
- { 0x1a00, 0x2199, 0x0000 },
- { 0x9a00, 0x219c, 0x2000 },
- { 0x1900, 0x219b, 0x0000 },
- { 0x1a00, 0x219d, 0x0000 },
- { 0x9900, 0x21a6, 0x4000 },
- { 0x9a00, 0x21a2, 0x3000 },
- { 0x9900, 0x21a0, 0x2000 },
- { 0x1a00, 0x219f, 0x0000 },
- { 0x1a00, 0x21a1, 0x0000 },
- { 0x9a00, 0x21a4, 0x2000 },
- { 0x1900, 0x21a3, 0x0000 },
- { 0x1a00, 0x21a5, 0x0000 },
- { 0x9a00, 0x21aa, 0x3000 },
- { 0x9a00, 0x21a8, 0x2000 },
- { 0x1a00, 0x21a7, 0x0000 },
- { 0x1a00, 0x21a9, 0x0000 },
- { 0x9a00, 0x21ac, 0x2000 },
- { 0x1a00, 0x21ab, 0x0000 },
- { 0x1a00, 0x21ad, 0x0000 },
- { 0x9900, 0x222e, 0x8000 },
- { 0x9a00, 0x21ee, 0x7000 },
- { 0x9900, 0x21ce, 0x6000 },
- { 0x9a00, 0x21be, 0x5000 },
- { 0x9a00, 0x21b6, 0x4000 },
- { 0x9a00, 0x21b2, 0x3000 },
- { 0x9a00, 0x21b0, 0x2000 },
- { 0x1a00, 0x21af, 0x0000 },
- { 0x1a00, 0x21b1, 0x0000 },
- { 0x9a00, 0x21b4, 0x2000 },
- { 0x1a00, 0x21b3, 0x0000 },
- { 0x1a00, 0x21b5, 0x0000 },
- { 0x9a00, 0x21ba, 0x3000 },
- { 0x9a00, 0x21b8, 0x2000 },
- { 0x1a00, 0x21b7, 0x0000 },
- { 0x1a00, 0x21b9, 0x0000 },
- { 0x9a00, 0x21bc, 0x2000 },
- { 0x1a00, 0x21bb, 0x0000 },
- { 0x1a00, 0x21bd, 0x0000 },
- { 0x9a00, 0x21c6, 0x4000 },
- { 0x9a00, 0x21c2, 0x3000 },
- { 0x9a00, 0x21c0, 0x2000 },
- { 0x1a00, 0x21bf, 0x0000 },
- { 0x1a00, 0x21c1, 0x0000 },
- { 0x9a00, 0x21c4, 0x2000 },
- { 0x1a00, 0x21c3, 0x0000 },
- { 0x1a00, 0x21c5, 0x0000 },
- { 0x9a00, 0x21ca, 0x3000 },
- { 0x9a00, 0x21c8, 0x2000 },
- { 0x1a00, 0x21c7, 0x0000 },
- { 0x1a00, 0x21c9, 0x0000 },
- { 0x9a00, 0x21cc, 0x2000 },
- { 0x1a00, 0x21cb, 0x0000 },
- { 0x1a00, 0x21cd, 0x0000 },
- { 0x9a00, 0x21de, 0x5000 },
- { 0x9a00, 0x21d6, 0x4000 },
- { 0x9900, 0x21d2, 0x3000 },
- { 0x9a00, 0x21d0, 0x2000 },
- { 0x1900, 0x21cf, 0x0000 },
- { 0x1a00, 0x21d1, 0x0000 },
- { 0x9900, 0x21d4, 0x2000 },
- { 0x1a00, 0x21d3, 0x0000 },
- { 0x1a00, 0x21d5, 0x0000 },
- { 0x9a00, 0x21da, 0x3000 },
- { 0x9a00, 0x21d8, 0x2000 },
- { 0x1a00, 0x21d7, 0x0000 },
- { 0x1a00, 0x21d9, 0x0000 },
- { 0x9a00, 0x21dc, 0x2000 },
- { 0x1a00, 0x21db, 0x0000 },
- { 0x1a00, 0x21dd, 0x0000 },
- { 0x9a00, 0x21e6, 0x4000 },
- { 0x9a00, 0x21e2, 0x3000 },
- { 0x9a00, 0x21e0, 0x2000 },
- { 0x1a00, 0x21df, 0x0000 },
- { 0x1a00, 0x21e1, 0x0000 },
- { 0x9a00, 0x21e4, 0x2000 },
- { 0x1a00, 0x21e3, 0x0000 },
- { 0x1a00, 0x21e5, 0x0000 },
- { 0x9a00, 0x21ea, 0x3000 },
- { 0x9a00, 0x21e8, 0x2000 },
- { 0x1a00, 0x21e7, 0x0000 },
- { 0x1a00, 0x21e9, 0x0000 },
- { 0x9a00, 0x21ec, 0x2000 },
- { 0x1a00, 0x21eb, 0x0000 },
- { 0x1a00, 0x21ed, 0x0000 },
- { 0x9900, 0x220e, 0x6000 },
- { 0x9900, 0x21fe, 0x5000 },
- { 0x9900, 0x21f6, 0x4000 },
- { 0x9a00, 0x21f2, 0x3000 },
- { 0x9a00, 0x21f0, 0x2000 },
- { 0x1a00, 0x21ef, 0x0000 },
- { 0x1a00, 0x21f1, 0x0000 },
- { 0x9900, 0x21f4, 0x2000 },
- { 0x1a00, 0x21f3, 0x0000 },
- { 0x1900, 0x21f5, 0x0000 },
- { 0x9900, 0x21fa, 0x3000 },
- { 0x9900, 0x21f8, 0x2000 },
- { 0x1900, 0x21f7, 0x0000 },
- { 0x1900, 0x21f9, 0x0000 },
- { 0x9900, 0x21fc, 0x2000 },
- { 0x1900, 0x21fb, 0x0000 },
- { 0x1900, 0x21fd, 0x0000 },
- { 0x9900, 0x2206, 0x4000 },
- { 0x9900, 0x2202, 0x3000 },
- { 0x9900, 0x2200, 0x2000 },
- { 0x1900, 0x21ff, 0x0000 },
- { 0x1900, 0x2201, 0x0000 },
- { 0x9900, 0x2204, 0x2000 },
- { 0x1900, 0x2203, 0x0000 },
- { 0x1900, 0x2205, 0x0000 },
- { 0x9900, 0x220a, 0x3000 },
- { 0x9900, 0x2208, 0x2000 },
- { 0x1900, 0x2207, 0x0000 },
- { 0x1900, 0x2209, 0x0000 },
- { 0x9900, 0x220c, 0x2000 },
- { 0x1900, 0x220b, 0x0000 },
- { 0x1900, 0x220d, 0x0000 },
- { 0x9900, 0x221e, 0x5000 },
- { 0x9900, 0x2216, 0x4000 },
- { 0x9900, 0x2212, 0x3000 },
- { 0x9900, 0x2210, 0x2000 },
- { 0x1900, 0x220f, 0x0000 },
- { 0x1900, 0x2211, 0x0000 },
- { 0x9900, 0x2214, 0x2000 },
- { 0x1900, 0x2213, 0x0000 },
- { 0x1900, 0x2215, 0x0000 },
- { 0x9900, 0x221a, 0x3000 },
- { 0x9900, 0x2218, 0x2000 },
- { 0x1900, 0x2217, 0x0000 },
- { 0x1900, 0x2219, 0x0000 },
- { 0x9900, 0x221c, 0x2000 },
- { 0x1900, 0x221b, 0x0000 },
- { 0x1900, 0x221d, 0x0000 },
- { 0x9900, 0x2226, 0x4000 },
- { 0x9900, 0x2222, 0x3000 },
- { 0x9900, 0x2220, 0x2000 },
- { 0x1900, 0x221f, 0x0000 },
- { 0x1900, 0x2221, 0x0000 },
- { 0x9900, 0x2224, 0x2000 },
- { 0x1900, 0x2223, 0x0000 },
- { 0x1900, 0x2225, 0x0000 },
- { 0x9900, 0x222a, 0x3000 },
- { 0x9900, 0x2228, 0x2000 },
- { 0x1900, 0x2227, 0x0000 },
- { 0x1900, 0x2229, 0x0000 },
- { 0x9900, 0x222c, 0x2000 },
- { 0x1900, 0x222b, 0x0000 },
- { 0x1900, 0x222d, 0x0000 },
- { 0x9900, 0x226e, 0x7000 },
- { 0x9900, 0x224e, 0x6000 },
- { 0x9900, 0x223e, 0x5000 },
- { 0x9900, 0x2236, 0x4000 },
- { 0x9900, 0x2232, 0x3000 },
- { 0x9900, 0x2230, 0x2000 },
- { 0x1900, 0x222f, 0x0000 },
- { 0x1900, 0x2231, 0x0000 },
- { 0x9900, 0x2234, 0x2000 },
- { 0x1900, 0x2233, 0x0000 },
- { 0x1900, 0x2235, 0x0000 },
- { 0x9900, 0x223a, 0x3000 },
- { 0x9900, 0x2238, 0x2000 },
- { 0x1900, 0x2237, 0x0000 },
- { 0x1900, 0x2239, 0x0000 },
- { 0x9900, 0x223c, 0x2000 },
- { 0x1900, 0x223b, 0x0000 },
- { 0x1900, 0x223d, 0x0000 },
- { 0x9900, 0x2246, 0x4000 },
- { 0x9900, 0x2242, 0x3000 },
- { 0x9900, 0x2240, 0x2000 },
- { 0x1900, 0x223f, 0x0000 },
- { 0x1900, 0x2241, 0x0000 },
- { 0x9900, 0x2244, 0x2000 },
- { 0x1900, 0x2243, 0x0000 },
- { 0x1900, 0x2245, 0x0000 },
- { 0x9900, 0x224a, 0x3000 },
- { 0x9900, 0x2248, 0x2000 },
- { 0x1900, 0x2247, 0x0000 },
- { 0x1900, 0x2249, 0x0000 },
- { 0x9900, 0x224c, 0x2000 },
- { 0x1900, 0x224b, 0x0000 },
- { 0x1900, 0x224d, 0x0000 },
- { 0x9900, 0x225e, 0x5000 },
- { 0x9900, 0x2256, 0x4000 },
- { 0x9900, 0x2252, 0x3000 },
- { 0x9900, 0x2250, 0x2000 },
- { 0x1900, 0x224f, 0x0000 },
- { 0x1900, 0x2251, 0x0000 },
- { 0x9900, 0x2254, 0x2000 },
- { 0x1900, 0x2253, 0x0000 },
- { 0x1900, 0x2255, 0x0000 },
- { 0x9900, 0x225a, 0x3000 },
- { 0x9900, 0x2258, 0x2000 },
- { 0x1900, 0x2257, 0x0000 },
- { 0x1900, 0x2259, 0x0000 },
- { 0x9900, 0x225c, 0x2000 },
- { 0x1900, 0x225b, 0x0000 },
- { 0x1900, 0x225d, 0x0000 },
- { 0x9900, 0x2266, 0x4000 },
- { 0x9900, 0x2262, 0x3000 },
- { 0x9900, 0x2260, 0x2000 },
- { 0x1900, 0x225f, 0x0000 },
- { 0x1900, 0x2261, 0x0000 },
- { 0x9900, 0x2264, 0x2000 },
- { 0x1900, 0x2263, 0x0000 },
- { 0x1900, 0x2265, 0x0000 },
- { 0x9900, 0x226a, 0x3000 },
- { 0x9900, 0x2268, 0x2000 },
- { 0x1900, 0x2267, 0x0000 },
- { 0x1900, 0x2269, 0x0000 },
- { 0x9900, 0x226c, 0x2000 },
- { 0x1900, 0x226b, 0x0000 },
- { 0x1900, 0x226d, 0x0000 },
- { 0x9900, 0x228e, 0x6000 },
- { 0x9900, 0x227e, 0x5000 },
- { 0x9900, 0x2276, 0x4000 },
- { 0x9900, 0x2272, 0x3000 },
- { 0x9900, 0x2270, 0x2000 },
- { 0x1900, 0x226f, 0x0000 },
- { 0x1900, 0x2271, 0x0000 },
- { 0x9900, 0x2274, 0x2000 },
- { 0x1900, 0x2273, 0x0000 },
- { 0x1900, 0x2275, 0x0000 },
- { 0x9900, 0x227a, 0x3000 },
- { 0x9900, 0x2278, 0x2000 },
- { 0x1900, 0x2277, 0x0000 },
- { 0x1900, 0x2279, 0x0000 },
- { 0x9900, 0x227c, 0x2000 },
- { 0x1900, 0x227b, 0x0000 },
- { 0x1900, 0x227d, 0x0000 },
- { 0x9900, 0x2286, 0x4000 },
- { 0x9900, 0x2282, 0x3000 },
- { 0x9900, 0x2280, 0x2000 },
- { 0x1900, 0x227f, 0x0000 },
- { 0x1900, 0x2281, 0x0000 },
- { 0x9900, 0x2284, 0x2000 },
- { 0x1900, 0x2283, 0x0000 },
- { 0x1900, 0x2285, 0x0000 },
- { 0x9900, 0x228a, 0x3000 },
- { 0x9900, 0x2288, 0x2000 },
- { 0x1900, 0x2287, 0x0000 },
- { 0x1900, 0x2289, 0x0000 },
- { 0x9900, 0x228c, 0x2000 },
- { 0x1900, 0x228b, 0x0000 },
- { 0x1900, 0x228d, 0x0000 },
- { 0x9900, 0x229e, 0x5000 },
- { 0x9900, 0x2296, 0x4000 },
- { 0x9900, 0x2292, 0x3000 },
- { 0x9900, 0x2290, 0x2000 },
- { 0x1900, 0x228f, 0x0000 },
- { 0x1900, 0x2291, 0x0000 },
- { 0x9900, 0x2294, 0x2000 },
- { 0x1900, 0x2293, 0x0000 },
- { 0x1900, 0x2295, 0x0000 },
- { 0x9900, 0x229a, 0x3000 },
- { 0x9900, 0x2298, 0x2000 },
- { 0x1900, 0x2297, 0x0000 },
- { 0x1900, 0x2299, 0x0000 },
- { 0x9900, 0x229c, 0x2000 },
- { 0x1900, 0x229b, 0x0000 },
- { 0x1900, 0x229d, 0x0000 },
- { 0x9900, 0x22a6, 0x4000 },
- { 0x9900, 0x22a2, 0x3000 },
- { 0x9900, 0x22a0, 0x2000 },
- { 0x1900, 0x229f, 0x0000 },
- { 0x1900, 0x22a1, 0x0000 },
- { 0x9900, 0x22a4, 0x2000 },
- { 0x1900, 0x22a3, 0x0000 },
- { 0x1900, 0x22a5, 0x0000 },
- { 0x9900, 0x22aa, 0x3000 },
- { 0x9900, 0x22a8, 0x2000 },
- { 0x1900, 0x22a7, 0x0000 },
- { 0x1900, 0x22a9, 0x0000 },
- { 0x9900, 0x22ac, 0x2000 },
- { 0x1900, 0x22ab, 0x0000 },
- { 0x1900, 0x22ad, 0x0000 },
- { 0x8f00, 0x2787, 0xb000 },
- { 0x9a00, 0x250b, 0xa000 },
- { 0x9900, 0x23ae, 0x9000 },
- { 0x9a00, 0x232e, 0x8000 },
- { 0x9900, 0x22ee, 0x7000 },
- { 0x9900, 0x22ce, 0x6000 },
- { 0x9900, 0x22be, 0x5000 },
- { 0x9900, 0x22b6, 0x4000 },
- { 0x9900, 0x22b2, 0x3000 },
- { 0x9900, 0x22b0, 0x2000 },
- { 0x1900, 0x22af, 0x0000 },
- { 0x1900, 0x22b1, 0x0000 },
- { 0x9900, 0x22b4, 0x2000 },
- { 0x1900, 0x22b3, 0x0000 },
- { 0x1900, 0x22b5, 0x0000 },
- { 0x9900, 0x22ba, 0x3000 },
- { 0x9900, 0x22b8, 0x2000 },
- { 0x1900, 0x22b7, 0x0000 },
- { 0x1900, 0x22b9, 0x0000 },
- { 0x9900, 0x22bc, 0x2000 },
- { 0x1900, 0x22bb, 0x0000 },
- { 0x1900, 0x22bd, 0x0000 },
- { 0x9900, 0x22c6, 0x4000 },
- { 0x9900, 0x22c2, 0x3000 },
- { 0x9900, 0x22c0, 0x2000 },
- { 0x1900, 0x22bf, 0x0000 },
- { 0x1900, 0x22c1, 0x0000 },
- { 0x9900, 0x22c4, 0x2000 },
- { 0x1900, 0x22c3, 0x0000 },
- { 0x1900, 0x22c5, 0x0000 },
- { 0x9900, 0x22ca, 0x3000 },
- { 0x9900, 0x22c8, 0x2000 },
- { 0x1900, 0x22c7, 0x0000 },
- { 0x1900, 0x22c9, 0x0000 },
- { 0x9900, 0x22cc, 0x2000 },
- { 0x1900, 0x22cb, 0x0000 },
- { 0x1900, 0x22cd, 0x0000 },
- { 0x9900, 0x22de, 0x5000 },
- { 0x9900, 0x22d6, 0x4000 },
- { 0x9900, 0x22d2, 0x3000 },
- { 0x9900, 0x22d0, 0x2000 },
- { 0x1900, 0x22cf, 0x0000 },
- { 0x1900, 0x22d1, 0x0000 },
- { 0x9900, 0x22d4, 0x2000 },
- { 0x1900, 0x22d3, 0x0000 },
- { 0x1900, 0x22d5, 0x0000 },
- { 0x9900, 0x22da, 0x3000 },
- { 0x9900, 0x22d8, 0x2000 },
- { 0x1900, 0x22d7, 0x0000 },
- { 0x1900, 0x22d9, 0x0000 },
- { 0x9900, 0x22dc, 0x2000 },
- { 0x1900, 0x22db, 0x0000 },
- { 0x1900, 0x22dd, 0x0000 },
- { 0x9900, 0x22e6, 0x4000 },
- { 0x9900, 0x22e2, 0x3000 },
- { 0x9900, 0x22e0, 0x2000 },
- { 0x1900, 0x22df, 0x0000 },
- { 0x1900, 0x22e1, 0x0000 },
- { 0x9900, 0x22e4, 0x2000 },
- { 0x1900, 0x22e3, 0x0000 },
- { 0x1900, 0x22e5, 0x0000 },
- { 0x9900, 0x22ea, 0x3000 },
- { 0x9900, 0x22e8, 0x2000 },
- { 0x1900, 0x22e7, 0x0000 },
- { 0x1900, 0x22e9, 0x0000 },
- { 0x9900, 0x22ec, 0x2000 },
- { 0x1900, 0x22eb, 0x0000 },
- { 0x1900, 0x22ed, 0x0000 },
- { 0x9a00, 0x230e, 0x6000 },
- { 0x9900, 0x22fe, 0x5000 },
- { 0x9900, 0x22f6, 0x4000 },
- { 0x9900, 0x22f2, 0x3000 },
- { 0x9900, 0x22f0, 0x2000 },
- { 0x1900, 0x22ef, 0x0000 },
- { 0x1900, 0x22f1, 0x0000 },
- { 0x9900, 0x22f4, 0x2000 },
- { 0x1900, 0x22f3, 0x0000 },
- { 0x1900, 0x22f5, 0x0000 },
- { 0x9900, 0x22fa, 0x3000 },
- { 0x9900, 0x22f8, 0x2000 },
- { 0x1900, 0x22f7, 0x0000 },
- { 0x1900, 0x22f9, 0x0000 },
- { 0x9900, 0x22fc, 0x2000 },
- { 0x1900, 0x22fb, 0x0000 },
- { 0x1900, 0x22fd, 0x0000 },
- { 0x9a00, 0x2306, 0x4000 },
- { 0x9a00, 0x2302, 0x3000 },
- { 0x9a00, 0x2300, 0x2000 },
- { 0x1900, 0x22ff, 0x0000 },
- { 0x1a00, 0x2301, 0x0000 },
- { 0x9a00, 0x2304, 0x2000 },
- { 0x1a00, 0x2303, 0x0000 },
- { 0x1a00, 0x2305, 0x0000 },
- { 0x9900, 0x230a, 0x3000 },
- { 0x9900, 0x2308, 0x2000 },
- { 0x1a00, 0x2307, 0x0000 },
- { 0x1900, 0x2309, 0x0000 },
- { 0x9a00, 0x230c, 0x2000 },
- { 0x1900, 0x230b, 0x0000 },
- { 0x1a00, 0x230d, 0x0000 },
- { 0x9a00, 0x231e, 0x5000 },
- { 0x9a00, 0x2316, 0x4000 },
- { 0x9a00, 0x2312, 0x3000 },
- { 0x9a00, 0x2310, 0x2000 },
- { 0x1a00, 0x230f, 0x0000 },
- { 0x1a00, 0x2311, 0x0000 },
- { 0x9a00, 0x2314, 0x2000 },
- { 0x1a00, 0x2313, 0x0000 },
- { 0x1a00, 0x2315, 0x0000 },
- { 0x9a00, 0x231a, 0x3000 },
- { 0x9a00, 0x2318, 0x2000 },
- { 0x1a00, 0x2317, 0x0000 },
- { 0x1a00, 0x2319, 0x0000 },
- { 0x9a00, 0x231c, 0x2000 },
- { 0x1a00, 0x231b, 0x0000 },
- { 0x1a00, 0x231d, 0x0000 },
- { 0x9a00, 0x2326, 0x4000 },
- { 0x9a00, 0x2322, 0x3000 },
- { 0x9900, 0x2320, 0x2000 },
- { 0x1a00, 0x231f, 0x0000 },
- { 0x1900, 0x2321, 0x0000 },
- { 0x9a00, 0x2324, 0x2000 },
- { 0x1a00, 0x2323, 0x0000 },
- { 0x1a00, 0x2325, 0x0000 },
- { 0x9200, 0x232a, 0x3000 },
- { 0x9a00, 0x2328, 0x2000 },
- { 0x1a00, 0x2327, 0x0000 },
- { 0x1600, 0x2329, 0x0000 },
- { 0x9a00, 0x232c, 0x2000 },
- { 0x1a00, 0x232b, 0x0000 },
- { 0x1a00, 0x232d, 0x0000 },
- { 0x9a00, 0x236e, 0x7000 },
- { 0x9a00, 0x234e, 0x6000 },
- { 0x9a00, 0x233e, 0x5000 },
- { 0x9a00, 0x2336, 0x4000 },
- { 0x9a00, 0x2332, 0x3000 },
- { 0x9a00, 0x2330, 0x2000 },
- { 0x1a00, 0x232f, 0x0000 },
- { 0x1a00, 0x2331, 0x0000 },
- { 0x9a00, 0x2334, 0x2000 },
- { 0x1a00, 0x2333, 0x0000 },
- { 0x1a00, 0x2335, 0x0000 },
- { 0x9a00, 0x233a, 0x3000 },
- { 0x9a00, 0x2338, 0x2000 },
- { 0x1a00, 0x2337, 0x0000 },
- { 0x1a00, 0x2339, 0x0000 },
- { 0x9a00, 0x233c, 0x2000 },
- { 0x1a00, 0x233b, 0x0000 },
- { 0x1a00, 0x233d, 0x0000 },
- { 0x9a00, 0x2346, 0x4000 },
- { 0x9a00, 0x2342, 0x3000 },
- { 0x9a00, 0x2340, 0x2000 },
- { 0x1a00, 0x233f, 0x0000 },
- { 0x1a00, 0x2341, 0x0000 },
- { 0x9a00, 0x2344, 0x2000 },
- { 0x1a00, 0x2343, 0x0000 },
- { 0x1a00, 0x2345, 0x0000 },
- { 0x9a00, 0x234a, 0x3000 },
- { 0x9a00, 0x2348, 0x2000 },
- { 0x1a00, 0x2347, 0x0000 },
- { 0x1a00, 0x2349, 0x0000 },
- { 0x9a00, 0x234c, 0x2000 },
- { 0x1a00, 0x234b, 0x0000 },
- { 0x1a00, 0x234d, 0x0000 },
- { 0x9a00, 0x235e, 0x5000 },
- { 0x9a00, 0x2356, 0x4000 },
- { 0x9a00, 0x2352, 0x3000 },
- { 0x9a00, 0x2350, 0x2000 },
- { 0x1a00, 0x234f, 0x0000 },
- { 0x1a00, 0x2351, 0x0000 },
- { 0x9a00, 0x2354, 0x2000 },
- { 0x1a00, 0x2353, 0x0000 },
- { 0x1a00, 0x2355, 0x0000 },
- { 0x9a00, 0x235a, 0x3000 },
- { 0x9a00, 0x2358, 0x2000 },
- { 0x1a00, 0x2357, 0x0000 },
- { 0x1a00, 0x2359, 0x0000 },
- { 0x9a00, 0x235c, 0x2000 },
- { 0x1a00, 0x235b, 0x0000 },
- { 0x1a00, 0x235d, 0x0000 },
- { 0x9a00, 0x2366, 0x4000 },
- { 0x9a00, 0x2362, 0x3000 },
- { 0x9a00, 0x2360, 0x2000 },
- { 0x1a00, 0x235f, 0x0000 },
- { 0x1a00, 0x2361, 0x0000 },
- { 0x9a00, 0x2364, 0x2000 },
- { 0x1a00, 0x2363, 0x0000 },
- { 0x1a00, 0x2365, 0x0000 },
- { 0x9a00, 0x236a, 0x3000 },
- { 0x9a00, 0x2368, 0x2000 },
- { 0x1a00, 0x2367, 0x0000 },
- { 0x1a00, 0x2369, 0x0000 },
- { 0x9a00, 0x236c, 0x2000 },
- { 0x1a00, 0x236b, 0x0000 },
- { 0x1a00, 0x236d, 0x0000 },
- { 0x9a00, 0x238e, 0x6000 },
- { 0x9a00, 0x237e, 0x5000 },
- { 0x9a00, 0x2376, 0x4000 },
- { 0x9a00, 0x2372, 0x3000 },
- { 0x9a00, 0x2370, 0x2000 },
- { 0x1a00, 0x236f, 0x0000 },
- { 0x1a00, 0x2371, 0x0000 },
- { 0x9a00, 0x2374, 0x2000 },
- { 0x1a00, 0x2373, 0x0000 },
- { 0x1a00, 0x2375, 0x0000 },
- { 0x9a00, 0x237a, 0x3000 },
- { 0x9a00, 0x2378, 0x2000 },
- { 0x1a00, 0x2377, 0x0000 },
- { 0x1a00, 0x2379, 0x0000 },
- { 0x9900, 0x237c, 0x2000 },
- { 0x1a00, 0x237b, 0x0000 },
- { 0x1a00, 0x237d, 0x0000 },
- { 0x9a00, 0x2386, 0x4000 },
- { 0x9a00, 0x2382, 0x3000 },
- { 0x9a00, 0x2380, 0x2000 },
- { 0x1a00, 0x237f, 0x0000 },
- { 0x1a00, 0x2381, 0x0000 },
- { 0x9a00, 0x2384, 0x2000 },
- { 0x1a00, 0x2383, 0x0000 },
- { 0x1a00, 0x2385, 0x0000 },
- { 0x9a00, 0x238a, 0x3000 },
- { 0x9a00, 0x2388, 0x2000 },
- { 0x1a00, 0x2387, 0x0000 },
- { 0x1a00, 0x2389, 0x0000 },
- { 0x9a00, 0x238c, 0x2000 },
- { 0x1a00, 0x238b, 0x0000 },
- { 0x1a00, 0x238d, 0x0000 },
- { 0x9900, 0x239e, 0x5000 },
- { 0x9a00, 0x2396, 0x4000 },
- { 0x9a00, 0x2392, 0x3000 },
- { 0x9a00, 0x2390, 0x2000 },
- { 0x1a00, 0x238f, 0x0000 },
- { 0x1a00, 0x2391, 0x0000 },
- { 0x9a00, 0x2394, 0x2000 },
- { 0x1a00, 0x2393, 0x0000 },
- { 0x1a00, 0x2395, 0x0000 },
- { 0x9a00, 0x239a, 0x3000 },
- { 0x9a00, 0x2398, 0x2000 },
- { 0x1a00, 0x2397, 0x0000 },
- { 0x1a00, 0x2399, 0x0000 },
- { 0x9900, 0x239c, 0x2000 },
- { 0x1900, 0x239b, 0x0000 },
- { 0x1900, 0x239d, 0x0000 },
- { 0x9900, 0x23a6, 0x4000 },
- { 0x9900, 0x23a2, 0x3000 },
- { 0x9900, 0x23a0, 0x2000 },
- { 0x1900, 0x239f, 0x0000 },
- { 0x1900, 0x23a1, 0x0000 },
- { 0x9900, 0x23a4, 0x2000 },
- { 0x1900, 0x23a3, 0x0000 },
- { 0x1900, 0x23a5, 0x0000 },
- { 0x9900, 0x23aa, 0x3000 },
- { 0x9900, 0x23a8, 0x2000 },
- { 0x1900, 0x23a7, 0x0000 },
- { 0x1900, 0x23a9, 0x0000 },
- { 0x9900, 0x23ac, 0x2000 },
- { 0x1900, 0x23ab, 0x0000 },
- { 0x1900, 0x23ad, 0x0000 },
- { 0x8f00, 0x248b, 0x8000 },
- { 0x9a00, 0x241d, 0x7000 },
- { 0x9a00, 0x23ce, 0x6000 },
- { 0x9a00, 0x23be, 0x5000 },
- { 0x9500, 0x23b6, 0x4000 },
- { 0x9900, 0x23b2, 0x3000 },
- { 0x9900, 0x23b0, 0x2000 },
- { 0x1900, 0x23af, 0x0000 },
- { 0x1900, 0x23b1, 0x0000 },
- { 0x9600, 0x23b4, 0x2000 },
- { 0x1900, 0x23b3, 0x0000 },
- { 0x1200, 0x23b5, 0x0000 },
- { 0x9a00, 0x23ba, 0x3000 },
- { 0x9a00, 0x23b8, 0x2000 },
- { 0x1a00, 0x23b7, 0x0000 },
- { 0x1a00, 0x23b9, 0x0000 },
- { 0x9a00, 0x23bc, 0x2000 },
- { 0x1a00, 0x23bb, 0x0000 },
- { 0x1a00, 0x23bd, 0x0000 },
- { 0x9a00, 0x23c6, 0x4000 },
- { 0x9a00, 0x23c2, 0x3000 },
- { 0x9a00, 0x23c0, 0x2000 },
- { 0x1a00, 0x23bf, 0x0000 },
- { 0x1a00, 0x23c1, 0x0000 },
- { 0x9a00, 0x23c4, 0x2000 },
- { 0x1a00, 0x23c3, 0x0000 },
- { 0x1a00, 0x23c5, 0x0000 },
- { 0x9a00, 0x23ca, 0x3000 },
- { 0x9a00, 0x23c8, 0x2000 },
- { 0x1a00, 0x23c7, 0x0000 },
- { 0x1a00, 0x23c9, 0x0000 },
- { 0x9a00, 0x23cc, 0x2000 },
- { 0x1a00, 0x23cb, 0x0000 },
- { 0x1a00, 0x23cd, 0x0000 },
- { 0x9a00, 0x240d, 0x5000 },
- { 0x9a00, 0x2405, 0x4000 },
- { 0x9a00, 0x2401, 0x3000 },
- { 0x9a00, 0x23d0, 0x2000 },
- { 0x1a00, 0x23cf, 0x0000 },
- { 0x1a00, 0x2400, 0x0000 },
- { 0x9a00, 0x2403, 0x2000 },
- { 0x1a00, 0x2402, 0x0000 },
- { 0x1a00, 0x2404, 0x0000 },
- { 0x9a00, 0x2409, 0x3000 },
- { 0x9a00, 0x2407, 0x2000 },
- { 0x1a00, 0x2406, 0x0000 },
- { 0x1a00, 0x2408, 0x0000 },
- { 0x9a00, 0x240b, 0x2000 },
- { 0x1a00, 0x240a, 0x0000 },
- { 0x1a00, 0x240c, 0x0000 },
- { 0x9a00, 0x2415, 0x4000 },
- { 0x9a00, 0x2411, 0x3000 },
- { 0x9a00, 0x240f, 0x2000 },
- { 0x1a00, 0x240e, 0x0000 },
- { 0x1a00, 0x2410, 0x0000 },
- { 0x9a00, 0x2413, 0x2000 },
- { 0x1a00, 0x2412, 0x0000 },
- { 0x1a00, 0x2414, 0x0000 },
- { 0x9a00, 0x2419, 0x3000 },
- { 0x9a00, 0x2417, 0x2000 },
- { 0x1a00, 0x2416, 0x0000 },
- { 0x1a00, 0x2418, 0x0000 },
- { 0x9a00, 0x241b, 0x2000 },
- { 0x1a00, 0x241a, 0x0000 },
- { 0x1a00, 0x241c, 0x0000 },
- { 0x8f00, 0x246b, 0x6000 },
- { 0x9a00, 0x2446, 0x5000 },
- { 0x9a00, 0x2425, 0x4000 },
- { 0x9a00, 0x2421, 0x3000 },
- { 0x9a00, 0x241f, 0x2000 },
- { 0x1a00, 0x241e, 0x0000 },
- { 0x1a00, 0x2420, 0x0000 },
- { 0x9a00, 0x2423, 0x2000 },
- { 0x1a00, 0x2422, 0x0000 },
- { 0x1a00, 0x2424, 0x0000 },
- { 0x9a00, 0x2442, 0x3000 },
- { 0x9a00, 0x2440, 0x2000 },
- { 0x1a00, 0x2426, 0x0000 },
- { 0x1a00, 0x2441, 0x0000 },
- { 0x9a00, 0x2444, 0x2000 },
- { 0x1a00, 0x2443, 0x0000 },
- { 0x1a00, 0x2445, 0x0000 },
- { 0x8f00, 0x2463, 0x4000 },
- { 0x9a00, 0x244a, 0x3000 },
- { 0x9a00, 0x2448, 0x2000 },
- { 0x1a00, 0x2447, 0x0000 },
- { 0x1a00, 0x2449, 0x0000 },
- { 0x8f00, 0x2461, 0x2000 },
- { 0x0f00, 0x2460, 0x0000 },
- { 0x0f00, 0x2462, 0x0000 },
- { 0x8f00, 0x2467, 0x3000 },
- { 0x8f00, 0x2465, 0x2000 },
- { 0x0f00, 0x2464, 0x0000 },
- { 0x0f00, 0x2466, 0x0000 },
- { 0x8f00, 0x2469, 0x2000 },
- { 0x0f00, 0x2468, 0x0000 },
- { 0x0f00, 0x246a, 0x0000 },
- { 0x8f00, 0x247b, 0x5000 },
- { 0x8f00, 0x2473, 0x4000 },
- { 0x8f00, 0x246f, 0x3000 },
- { 0x8f00, 0x246d, 0x2000 },
- { 0x0f00, 0x246c, 0x0000 },
- { 0x0f00, 0x246e, 0x0000 },
- { 0x8f00, 0x2471, 0x2000 },
- { 0x0f00, 0x2470, 0x0000 },
- { 0x0f00, 0x2472, 0x0000 },
- { 0x8f00, 0x2477, 0x3000 },
- { 0x8f00, 0x2475, 0x2000 },
- { 0x0f00, 0x2474, 0x0000 },
- { 0x0f00, 0x2476, 0x0000 },
- { 0x8f00, 0x2479, 0x2000 },
- { 0x0f00, 0x2478, 0x0000 },
- { 0x0f00, 0x247a, 0x0000 },
- { 0x8f00, 0x2483, 0x4000 },
- { 0x8f00, 0x247f, 0x3000 },
- { 0x8f00, 0x247d, 0x2000 },
- { 0x0f00, 0x247c, 0x0000 },
- { 0x0f00, 0x247e, 0x0000 },
- { 0x8f00, 0x2481, 0x2000 },
- { 0x0f00, 0x2480, 0x0000 },
- { 0x0f00, 0x2482, 0x0000 },
- { 0x8f00, 0x2487, 0x3000 },
- { 0x8f00, 0x2485, 0x2000 },
- { 0x0f00, 0x2484, 0x0000 },
- { 0x0f00, 0x2486, 0x0000 },
- { 0x8f00, 0x2489, 0x2000 },
- { 0x0f00, 0x2488, 0x0000 },
- { 0x0f00, 0x248a, 0x0000 },
- { 0x9a00, 0x24cb, 0x7000 },
- { 0x9a00, 0x24ab, 0x6000 },
- { 0x8f00, 0x249b, 0x5000 },
- { 0x8f00, 0x2493, 0x4000 },
- { 0x8f00, 0x248f, 0x3000 },
- { 0x8f00, 0x248d, 0x2000 },
- { 0x0f00, 0x248c, 0x0000 },
- { 0x0f00, 0x248e, 0x0000 },
- { 0x8f00, 0x2491, 0x2000 },
- { 0x0f00, 0x2490, 0x0000 },
- { 0x0f00, 0x2492, 0x0000 },
- { 0x8f00, 0x2497, 0x3000 },
- { 0x8f00, 0x2495, 0x2000 },
- { 0x0f00, 0x2494, 0x0000 },
- { 0x0f00, 0x2496, 0x0000 },
- { 0x8f00, 0x2499, 0x2000 },
- { 0x0f00, 0x2498, 0x0000 },
- { 0x0f00, 0x249a, 0x0000 },
- { 0x9a00, 0x24a3, 0x4000 },
- { 0x9a00, 0x249f, 0x3000 },
- { 0x9a00, 0x249d, 0x2000 },
- { 0x1a00, 0x249c, 0x0000 },
- { 0x1a00, 0x249e, 0x0000 },
- { 0x9a00, 0x24a1, 0x2000 },
- { 0x1a00, 0x24a0, 0x0000 },
- { 0x1a00, 0x24a2, 0x0000 },
- { 0x9a00, 0x24a7, 0x3000 },
- { 0x9a00, 0x24a5, 0x2000 },
- { 0x1a00, 0x24a4, 0x0000 },
- { 0x1a00, 0x24a6, 0x0000 },
- { 0x9a00, 0x24a9, 0x2000 },
- { 0x1a00, 0x24a8, 0x0000 },
- { 0x1a00, 0x24aa, 0x0000 },
- { 0x9a00, 0x24bb, 0x5000 },
- { 0x9a00, 0x24b3, 0x4000 },
- { 0x9a00, 0x24af, 0x3000 },
- { 0x9a00, 0x24ad, 0x2000 },
- { 0x1a00, 0x24ac, 0x0000 },
- { 0x1a00, 0x24ae, 0x0000 },
- { 0x9a00, 0x24b1, 0x2000 },
- { 0x1a00, 0x24b0, 0x0000 },
- { 0x1a00, 0x24b2, 0x0000 },
- { 0x9a00, 0x24b7, 0x3000 },
- { 0x9a00, 0x24b5, 0x2000 },
- { 0x1a00, 0x24b4, 0x0000 },
- { 0x1a00, 0x24b6, 0x0000 },
- { 0x9a00, 0x24b9, 0x2000 },
- { 0x1a00, 0x24b8, 0x0000 },
- { 0x1a00, 0x24ba, 0x0000 },
- { 0x9a00, 0x24c3, 0x4000 },
- { 0x9a00, 0x24bf, 0x3000 },
- { 0x9a00, 0x24bd, 0x2000 },
- { 0x1a00, 0x24bc, 0x0000 },
- { 0x1a00, 0x24be, 0x0000 },
- { 0x9a00, 0x24c1, 0x2000 },
- { 0x1a00, 0x24c0, 0x0000 },
- { 0x1a00, 0x24c2, 0x0000 },
- { 0x9a00, 0x24c7, 0x3000 },
- { 0x9a00, 0x24c5, 0x2000 },
- { 0x1a00, 0x24c4, 0x0000 },
- { 0x1a00, 0x24c6, 0x0000 },
- { 0x9a00, 0x24c9, 0x2000 },
- { 0x1a00, 0x24c8, 0x0000 },
- { 0x1a00, 0x24ca, 0x0000 },
- { 0x8f00, 0x24eb, 0x6000 },
- { 0x9a00, 0x24db, 0x5000 },
- { 0x9a00, 0x24d3, 0x4000 },
- { 0x9a00, 0x24cf, 0x3000 },
- { 0x9a00, 0x24cd, 0x2000 },
- { 0x1a00, 0x24cc, 0x0000 },
- { 0x1a00, 0x24ce, 0x0000 },
- { 0x9a00, 0x24d1, 0x2000 },
- { 0x1a00, 0x24d0, 0x0000 },
- { 0x1a00, 0x24d2, 0x0000 },
- { 0x9a00, 0x24d7, 0x3000 },
- { 0x9a00, 0x24d5, 0x2000 },
- { 0x1a00, 0x24d4, 0x0000 },
- { 0x1a00, 0x24d6, 0x0000 },
- { 0x9a00, 0x24d9, 0x2000 },
- { 0x1a00, 0x24d8, 0x0000 },
- { 0x1a00, 0x24da, 0x0000 },
- { 0x9a00, 0x24e3, 0x4000 },
- { 0x9a00, 0x24df, 0x3000 },
- { 0x9a00, 0x24dd, 0x2000 },
- { 0x1a00, 0x24dc, 0x0000 },
- { 0x1a00, 0x24de, 0x0000 },
- { 0x9a00, 0x24e1, 0x2000 },
- { 0x1a00, 0x24e0, 0x0000 },
- { 0x1a00, 0x24e2, 0x0000 },
- { 0x9a00, 0x24e7, 0x3000 },
- { 0x9a00, 0x24e5, 0x2000 },
- { 0x1a00, 0x24e4, 0x0000 },
- { 0x1a00, 0x24e6, 0x0000 },
- { 0x9a00, 0x24e9, 0x2000 },
- { 0x1a00, 0x24e8, 0x0000 },
- { 0x0f00, 0x24ea, 0x0000 },
- { 0x8f00, 0x24fb, 0x5000 },
- { 0x8f00, 0x24f3, 0x4000 },
- { 0x8f00, 0x24ef, 0x3000 },
- { 0x8f00, 0x24ed, 0x2000 },
- { 0x0f00, 0x24ec, 0x0000 },
- { 0x0f00, 0x24ee, 0x0000 },
- { 0x8f00, 0x24f1, 0x2000 },
- { 0x0f00, 0x24f0, 0x0000 },
- { 0x0f00, 0x24f2, 0x0000 },
- { 0x8f00, 0x24f7, 0x3000 },
- { 0x8f00, 0x24f5, 0x2000 },
- { 0x0f00, 0x24f4, 0x0000 },
- { 0x0f00, 0x24f6, 0x0000 },
- { 0x8f00, 0x24f9, 0x2000 },
- { 0x0f00, 0x24f8, 0x0000 },
- { 0x0f00, 0x24fa, 0x0000 },
- { 0x9a00, 0x2503, 0x4000 },
- { 0x8f00, 0x24ff, 0x3000 },
- { 0x8f00, 0x24fd, 0x2000 },
- { 0x0f00, 0x24fc, 0x0000 },
- { 0x0f00, 0x24fe, 0x0000 },
- { 0x9a00, 0x2501, 0x2000 },
- { 0x1a00, 0x2500, 0x0000 },
- { 0x1a00, 0x2502, 0x0000 },
- { 0x9a00, 0x2507, 0x3000 },
- { 0x9a00, 0x2505, 0x2000 },
- { 0x1a00, 0x2504, 0x0000 },
- { 0x1a00, 0x2506, 0x0000 },
- { 0x9a00, 0x2509, 0x2000 },
- { 0x1a00, 0x2508, 0x0000 },
- { 0x1a00, 0x250a, 0x0000 },
- { 0x9a00, 0x260b, 0x9000 },
- { 0x9a00, 0x258b, 0x8000 },
- { 0x9a00, 0x254b, 0x7000 },
- { 0x9a00, 0x252b, 0x6000 },
- { 0x9a00, 0x251b, 0x5000 },
- { 0x9a00, 0x2513, 0x4000 },
- { 0x9a00, 0x250f, 0x3000 },
- { 0x9a00, 0x250d, 0x2000 },
- { 0x1a00, 0x250c, 0x0000 },
- { 0x1a00, 0x250e, 0x0000 },
- { 0x9a00, 0x2511, 0x2000 },
- { 0x1a00, 0x2510, 0x0000 },
- { 0x1a00, 0x2512, 0x0000 },
- { 0x9a00, 0x2517, 0x3000 },
- { 0x9a00, 0x2515, 0x2000 },
- { 0x1a00, 0x2514, 0x0000 },
- { 0x1a00, 0x2516, 0x0000 },
- { 0x9a00, 0x2519, 0x2000 },
- { 0x1a00, 0x2518, 0x0000 },
- { 0x1a00, 0x251a, 0x0000 },
- { 0x9a00, 0x2523, 0x4000 },
- { 0x9a00, 0x251f, 0x3000 },
- { 0x9a00, 0x251d, 0x2000 },
- { 0x1a00, 0x251c, 0x0000 },
- { 0x1a00, 0x251e, 0x0000 },
- { 0x9a00, 0x2521, 0x2000 },
- { 0x1a00, 0x2520, 0x0000 },
- { 0x1a00, 0x2522, 0x0000 },
- { 0x9a00, 0x2527, 0x3000 },
- { 0x9a00, 0x2525, 0x2000 },
- { 0x1a00, 0x2524, 0x0000 },
- { 0x1a00, 0x2526, 0x0000 },
- { 0x9a00, 0x2529, 0x2000 },
- { 0x1a00, 0x2528, 0x0000 },
- { 0x1a00, 0x252a, 0x0000 },
- { 0x9a00, 0x253b, 0x5000 },
- { 0x9a00, 0x2533, 0x4000 },
- { 0x9a00, 0x252f, 0x3000 },
- { 0x9a00, 0x252d, 0x2000 },
- { 0x1a00, 0x252c, 0x0000 },
- { 0x1a00, 0x252e, 0x0000 },
- { 0x9a00, 0x2531, 0x2000 },
- { 0x1a00, 0x2530, 0x0000 },
- { 0x1a00, 0x2532, 0x0000 },
- { 0x9a00, 0x2537, 0x3000 },
- { 0x9a00, 0x2535, 0x2000 },
- { 0x1a00, 0x2534, 0x0000 },
- { 0x1a00, 0x2536, 0x0000 },
- { 0x9a00, 0x2539, 0x2000 },
- { 0x1a00, 0x2538, 0x0000 },
- { 0x1a00, 0x253a, 0x0000 },
- { 0x9a00, 0x2543, 0x4000 },
- { 0x9a00, 0x253f, 0x3000 },
- { 0x9a00, 0x253d, 0x2000 },
- { 0x1a00, 0x253c, 0x0000 },
- { 0x1a00, 0x253e, 0x0000 },
- { 0x9a00, 0x2541, 0x2000 },
- { 0x1a00, 0x2540, 0x0000 },
- { 0x1a00, 0x2542, 0x0000 },
- { 0x9a00, 0x2547, 0x3000 },
- { 0x9a00, 0x2545, 0x2000 },
- { 0x1a00, 0x2544, 0x0000 },
- { 0x1a00, 0x2546, 0x0000 },
- { 0x9a00, 0x2549, 0x2000 },
- { 0x1a00, 0x2548, 0x0000 },
- { 0x1a00, 0x254a, 0x0000 },
- { 0x9a00, 0x256b, 0x6000 },
- { 0x9a00, 0x255b, 0x5000 },
- { 0x9a00, 0x2553, 0x4000 },
- { 0x9a00, 0x254f, 0x3000 },
- { 0x9a00, 0x254d, 0x2000 },
- { 0x1a00, 0x254c, 0x0000 },
- { 0x1a00, 0x254e, 0x0000 },
- { 0x9a00, 0x2551, 0x2000 },
- { 0x1a00, 0x2550, 0x0000 },
- { 0x1a00, 0x2552, 0x0000 },
- { 0x9a00, 0x2557, 0x3000 },
- { 0x9a00, 0x2555, 0x2000 },
- { 0x1a00, 0x2554, 0x0000 },
- { 0x1a00, 0x2556, 0x0000 },
- { 0x9a00, 0x2559, 0x2000 },
- { 0x1a00, 0x2558, 0x0000 },
- { 0x1a00, 0x255a, 0x0000 },
- { 0x9a00, 0x2563, 0x4000 },
- { 0x9a00, 0x255f, 0x3000 },
- { 0x9a00, 0x255d, 0x2000 },
- { 0x1a00, 0x255c, 0x0000 },
- { 0x1a00, 0x255e, 0x0000 },
- { 0x9a00, 0x2561, 0x2000 },
- { 0x1a00, 0x2560, 0x0000 },
- { 0x1a00, 0x2562, 0x0000 },
- { 0x9a00, 0x2567, 0x3000 },
- { 0x9a00, 0x2565, 0x2000 },
- { 0x1a00, 0x2564, 0x0000 },
- { 0x1a00, 0x2566, 0x0000 },
- { 0x9a00, 0x2569, 0x2000 },
- { 0x1a00, 0x2568, 0x0000 },
- { 0x1a00, 0x256a, 0x0000 },
- { 0x9a00, 0x257b, 0x5000 },
- { 0x9a00, 0x2573, 0x4000 },
- { 0x9a00, 0x256f, 0x3000 },
- { 0x9a00, 0x256d, 0x2000 },
- { 0x1a00, 0x256c, 0x0000 },
- { 0x1a00, 0x256e, 0x0000 },
- { 0x9a00, 0x2571, 0x2000 },
- { 0x1a00, 0x2570, 0x0000 },
- { 0x1a00, 0x2572, 0x0000 },
- { 0x9a00, 0x2577, 0x3000 },
- { 0x9a00, 0x2575, 0x2000 },
- { 0x1a00, 0x2574, 0x0000 },
- { 0x1a00, 0x2576, 0x0000 },
- { 0x9a00, 0x2579, 0x2000 },
- { 0x1a00, 0x2578, 0x0000 },
- { 0x1a00, 0x257a, 0x0000 },
- { 0x9a00, 0x2583, 0x4000 },
- { 0x9a00, 0x257f, 0x3000 },
- { 0x9a00, 0x257d, 0x2000 },
- { 0x1a00, 0x257c, 0x0000 },
- { 0x1a00, 0x257e, 0x0000 },
- { 0x9a00, 0x2581, 0x2000 },
- { 0x1a00, 0x2580, 0x0000 },
- { 0x1a00, 0x2582, 0x0000 },
- { 0x9a00, 0x2587, 0x3000 },
- { 0x9a00, 0x2585, 0x2000 },
- { 0x1a00, 0x2584, 0x0000 },
- { 0x1a00, 0x2586, 0x0000 },
- { 0x9a00, 0x2589, 0x2000 },
- { 0x1a00, 0x2588, 0x0000 },
- { 0x1a00, 0x258a, 0x0000 },
- { 0x9a00, 0x25cb, 0x7000 },
- { 0x9a00, 0x25ab, 0x6000 },
- { 0x9a00, 0x259b, 0x5000 },
- { 0x9a00, 0x2593, 0x4000 },
- { 0x9a00, 0x258f, 0x3000 },
- { 0x9a00, 0x258d, 0x2000 },
- { 0x1a00, 0x258c, 0x0000 },
- { 0x1a00, 0x258e, 0x0000 },
- { 0x9a00, 0x2591, 0x2000 },
- { 0x1a00, 0x2590, 0x0000 },
- { 0x1a00, 0x2592, 0x0000 },
- { 0x9a00, 0x2597, 0x3000 },
- { 0x9a00, 0x2595, 0x2000 },
- { 0x1a00, 0x2594, 0x0000 },
- { 0x1a00, 0x2596, 0x0000 },
- { 0x9a00, 0x2599, 0x2000 },
- { 0x1a00, 0x2598, 0x0000 },
- { 0x1a00, 0x259a, 0x0000 },
- { 0x9a00, 0x25a3, 0x4000 },
- { 0x9a00, 0x259f, 0x3000 },
- { 0x9a00, 0x259d, 0x2000 },
- { 0x1a00, 0x259c, 0x0000 },
- { 0x1a00, 0x259e, 0x0000 },
- { 0x9a00, 0x25a1, 0x2000 },
- { 0x1a00, 0x25a0, 0x0000 },
- { 0x1a00, 0x25a2, 0x0000 },
- { 0x9a00, 0x25a7, 0x3000 },
- { 0x9a00, 0x25a5, 0x2000 },
- { 0x1a00, 0x25a4, 0x0000 },
- { 0x1a00, 0x25a6, 0x0000 },
- { 0x9a00, 0x25a9, 0x2000 },
- { 0x1a00, 0x25a8, 0x0000 },
- { 0x1a00, 0x25aa, 0x0000 },
- { 0x9a00, 0x25bb, 0x5000 },
- { 0x9a00, 0x25b3, 0x4000 },
- { 0x9a00, 0x25af, 0x3000 },
- { 0x9a00, 0x25ad, 0x2000 },
- { 0x1a00, 0x25ac, 0x0000 },
- { 0x1a00, 0x25ae, 0x0000 },
- { 0x9a00, 0x25b1, 0x2000 },
- { 0x1a00, 0x25b0, 0x0000 },
- { 0x1a00, 0x25b2, 0x0000 },
- { 0x9900, 0x25b7, 0x3000 },
- { 0x9a00, 0x25b5, 0x2000 },
- { 0x1a00, 0x25b4, 0x0000 },
- { 0x1a00, 0x25b6, 0x0000 },
- { 0x9a00, 0x25b9, 0x2000 },
- { 0x1a00, 0x25b8, 0x0000 },
- { 0x1a00, 0x25ba, 0x0000 },
- { 0x9a00, 0x25c3, 0x4000 },
- { 0x9a00, 0x25bf, 0x3000 },
- { 0x9a00, 0x25bd, 0x2000 },
- { 0x1a00, 0x25bc, 0x0000 },
- { 0x1a00, 0x25be, 0x0000 },
- { 0x9900, 0x25c1, 0x2000 },
- { 0x1a00, 0x25c0, 0x0000 },
- { 0x1a00, 0x25c2, 0x0000 },
- { 0x9a00, 0x25c7, 0x3000 },
- { 0x9a00, 0x25c5, 0x2000 },
- { 0x1a00, 0x25c4, 0x0000 },
- { 0x1a00, 0x25c6, 0x0000 },
- { 0x9a00, 0x25c9, 0x2000 },
- { 0x1a00, 0x25c8, 0x0000 },
- { 0x1a00, 0x25ca, 0x0000 },
- { 0x9a00, 0x25eb, 0x6000 },
- { 0x9a00, 0x25db, 0x5000 },
- { 0x9a00, 0x25d3, 0x4000 },
- { 0x9a00, 0x25cf, 0x3000 },
- { 0x9a00, 0x25cd, 0x2000 },
- { 0x1a00, 0x25cc, 0x0000 },
- { 0x1a00, 0x25ce, 0x0000 },
- { 0x9a00, 0x25d1, 0x2000 },
- { 0x1a00, 0x25d0, 0x0000 },
- { 0x1a00, 0x25d2, 0x0000 },
- { 0x9a00, 0x25d7, 0x3000 },
- { 0x9a00, 0x25d5, 0x2000 },
- { 0x1a00, 0x25d4, 0x0000 },
- { 0x1a00, 0x25d6, 0x0000 },
- { 0x9a00, 0x25d9, 0x2000 },
- { 0x1a00, 0x25d8, 0x0000 },
- { 0x1a00, 0x25da, 0x0000 },
- { 0x9a00, 0x25e3, 0x4000 },
- { 0x9a00, 0x25df, 0x3000 },
- { 0x9a00, 0x25dd, 0x2000 },
- { 0x1a00, 0x25dc, 0x0000 },
- { 0x1a00, 0x25de, 0x0000 },
- { 0x9a00, 0x25e1, 0x2000 },
- { 0x1a00, 0x25e0, 0x0000 },
- { 0x1a00, 0x25e2, 0x0000 },
- { 0x9a00, 0x25e7, 0x3000 },
- { 0x9a00, 0x25e5, 0x2000 },
- { 0x1a00, 0x25e4, 0x0000 },
- { 0x1a00, 0x25e6, 0x0000 },
- { 0x9a00, 0x25e9, 0x2000 },
- { 0x1a00, 0x25e8, 0x0000 },
- { 0x1a00, 0x25ea, 0x0000 },
- { 0x9900, 0x25fb, 0x5000 },
- { 0x9a00, 0x25f3, 0x4000 },
- { 0x9a00, 0x25ef, 0x3000 },
- { 0x9a00, 0x25ed, 0x2000 },
- { 0x1a00, 0x25ec, 0x0000 },
- { 0x1a00, 0x25ee, 0x0000 },
- { 0x9a00, 0x25f1, 0x2000 },
- { 0x1a00, 0x25f0, 0x0000 },
- { 0x1a00, 0x25f2, 0x0000 },
- { 0x9a00, 0x25f7, 0x3000 },
- { 0x9a00, 0x25f5, 0x2000 },
- { 0x1a00, 0x25f4, 0x0000 },
- { 0x1a00, 0x25f6, 0x0000 },
- { 0x9900, 0x25f9, 0x2000 },
- { 0x1900, 0x25f8, 0x0000 },
- { 0x1900, 0x25fa, 0x0000 },
- { 0x9a00, 0x2603, 0x4000 },
- { 0x9900, 0x25ff, 0x3000 },
- { 0x9900, 0x25fd, 0x2000 },
- { 0x1900, 0x25fc, 0x0000 },
- { 0x1900, 0x25fe, 0x0000 },
- { 0x9a00, 0x2601, 0x2000 },
- { 0x1a00, 0x2600, 0x0000 },
- { 0x1a00, 0x2602, 0x0000 },
- { 0x9a00, 0x2607, 0x3000 },
- { 0x9a00, 0x2605, 0x2000 },
- { 0x1a00, 0x2604, 0x0000 },
- { 0x1a00, 0x2606, 0x0000 },
- { 0x9a00, 0x2609, 0x2000 },
- { 0x1a00, 0x2608, 0x0000 },
- { 0x1a00, 0x260a, 0x0000 },
- { 0x9a00, 0x268e, 0x8000 },
- { 0x9a00, 0x264c, 0x7000 },
- { 0x9a00, 0x262c, 0x6000 },
- { 0x9a00, 0x261c, 0x5000 },
- { 0x9a00, 0x2613, 0x4000 },
- { 0x9a00, 0x260f, 0x3000 },
- { 0x9a00, 0x260d, 0x2000 },
- { 0x1a00, 0x260c, 0x0000 },
- { 0x1a00, 0x260e, 0x0000 },
- { 0x9a00, 0x2611, 0x2000 },
- { 0x1a00, 0x2610, 0x0000 },
- { 0x1a00, 0x2612, 0x0000 },
- { 0x9a00, 0x2617, 0x3000 },
- { 0x9a00, 0x2615, 0x2000 },
- { 0x1a00, 0x2614, 0x0000 },
- { 0x1a00, 0x2616, 0x0000 },
- { 0x9a00, 0x261a, 0x2000 },
- { 0x1a00, 0x2619, 0x0000 },
- { 0x1a00, 0x261b, 0x0000 },
- { 0x9a00, 0x2624, 0x4000 },
- { 0x9a00, 0x2620, 0x3000 },
- { 0x9a00, 0x261e, 0x2000 },
- { 0x1a00, 0x261d, 0x0000 },
- { 0x1a00, 0x261f, 0x0000 },
- { 0x9a00, 0x2622, 0x2000 },
- { 0x1a00, 0x2621, 0x0000 },
- { 0x1a00, 0x2623, 0x0000 },
- { 0x9a00, 0x2628, 0x3000 },
- { 0x9a00, 0x2626, 0x2000 },
- { 0x1a00, 0x2625, 0x0000 },
- { 0x1a00, 0x2627, 0x0000 },
- { 0x9a00, 0x262a, 0x2000 },
- { 0x1a00, 0x2629, 0x0000 },
- { 0x1a00, 0x262b, 0x0000 },
- { 0x9a00, 0x263c, 0x5000 },
- { 0x9a00, 0x2634, 0x4000 },
- { 0x9a00, 0x2630, 0x3000 },
- { 0x9a00, 0x262e, 0x2000 },
- { 0x1a00, 0x262d, 0x0000 },
- { 0x1a00, 0x262f, 0x0000 },
- { 0x9a00, 0x2632, 0x2000 },
- { 0x1a00, 0x2631, 0x0000 },
- { 0x1a00, 0x2633, 0x0000 },
- { 0x9a00, 0x2638, 0x3000 },
- { 0x9a00, 0x2636, 0x2000 },
- { 0x1a00, 0x2635, 0x0000 },
- { 0x1a00, 0x2637, 0x0000 },
- { 0x9a00, 0x263a, 0x2000 },
- { 0x1a00, 0x2639, 0x0000 },
- { 0x1a00, 0x263b, 0x0000 },
- { 0x9a00, 0x2644, 0x4000 },
- { 0x9a00, 0x2640, 0x3000 },
- { 0x9a00, 0x263e, 0x2000 },
- { 0x1a00, 0x263d, 0x0000 },
- { 0x1a00, 0x263f, 0x0000 },
- { 0x9a00, 0x2642, 0x2000 },
- { 0x1a00, 0x2641, 0x0000 },
- { 0x1a00, 0x2643, 0x0000 },
- { 0x9a00, 0x2648, 0x3000 },
- { 0x9a00, 0x2646, 0x2000 },
- { 0x1a00, 0x2645, 0x0000 },
- { 0x1a00, 0x2647, 0x0000 },
- { 0x9a00, 0x264a, 0x2000 },
- { 0x1a00, 0x2649, 0x0000 },
- { 0x1a00, 0x264b, 0x0000 },
- { 0x9a00, 0x266c, 0x6000 },
- { 0x9a00, 0x265c, 0x5000 },
- { 0x9a00, 0x2654, 0x4000 },
- { 0x9a00, 0x2650, 0x3000 },
- { 0x9a00, 0x264e, 0x2000 },
- { 0x1a00, 0x264d, 0x0000 },
- { 0x1a00, 0x264f, 0x0000 },
- { 0x9a00, 0x2652, 0x2000 },
- { 0x1a00, 0x2651, 0x0000 },
- { 0x1a00, 0x2653, 0x0000 },
- { 0x9a00, 0x2658, 0x3000 },
- { 0x9a00, 0x2656, 0x2000 },
- { 0x1a00, 0x2655, 0x0000 },
- { 0x1a00, 0x2657, 0x0000 },
- { 0x9a00, 0x265a, 0x2000 },
- { 0x1a00, 0x2659, 0x0000 },
- { 0x1a00, 0x265b, 0x0000 },
- { 0x9a00, 0x2664, 0x4000 },
- { 0x9a00, 0x2660, 0x3000 },
- { 0x9a00, 0x265e, 0x2000 },
- { 0x1a00, 0x265d, 0x0000 },
- { 0x1a00, 0x265f, 0x0000 },
- { 0x9a00, 0x2662, 0x2000 },
- { 0x1a00, 0x2661, 0x0000 },
- { 0x1a00, 0x2663, 0x0000 },
- { 0x9a00, 0x2668, 0x3000 },
- { 0x9a00, 0x2666, 0x2000 },
- { 0x1a00, 0x2665, 0x0000 },
- { 0x1a00, 0x2667, 0x0000 },
- { 0x9a00, 0x266a, 0x2000 },
- { 0x1a00, 0x2669, 0x0000 },
- { 0x1a00, 0x266b, 0x0000 },
- { 0x9a00, 0x267c, 0x5000 },
- { 0x9a00, 0x2674, 0x4000 },
- { 0x9a00, 0x2670, 0x3000 },
- { 0x9a00, 0x266e, 0x2000 },
- { 0x1a00, 0x266d, 0x0000 },
- { 0x1900, 0x266f, 0x0000 },
- { 0x9a00, 0x2672, 0x2000 },
- { 0x1a00, 0x2671, 0x0000 },
- { 0x1a00, 0x2673, 0x0000 },
- { 0x9a00, 0x2678, 0x3000 },
- { 0x9a00, 0x2676, 0x2000 },
- { 0x1a00, 0x2675, 0x0000 },
- { 0x1a00, 0x2677, 0x0000 },
- { 0x9a00, 0x267a, 0x2000 },
- { 0x1a00, 0x2679, 0x0000 },
- { 0x1a00, 0x267b, 0x0000 },
- { 0x9a00, 0x2686, 0x4000 },
- { 0x9a00, 0x2682, 0x3000 },
- { 0x9a00, 0x2680, 0x2000 },
- { 0x1a00, 0x267d, 0x0000 },
- { 0x1a00, 0x2681, 0x0000 },
- { 0x9a00, 0x2684, 0x2000 },
- { 0x1a00, 0x2683, 0x0000 },
- { 0x1a00, 0x2685, 0x0000 },
- { 0x9a00, 0x268a, 0x3000 },
- { 0x9a00, 0x2688, 0x2000 },
- { 0x1a00, 0x2687, 0x0000 },
- { 0x1a00, 0x2689, 0x0000 },
- { 0x9a00, 0x268c, 0x2000 },
- { 0x1a00, 0x268b, 0x0000 },
- { 0x1a00, 0x268d, 0x0000 },
- { 0x9a00, 0x273f, 0x7000 },
- { 0x9a00, 0x271e, 0x6000 },
- { 0x9a00, 0x270e, 0x5000 },
- { 0x9a00, 0x2703, 0x4000 },
- { 0x9a00, 0x26a0, 0x3000 },
- { 0x9a00, 0x2690, 0x2000 },
- { 0x1a00, 0x268f, 0x0000 },
- { 0x1a00, 0x2691, 0x0000 },
- { 0x9a00, 0x2701, 0x2000 },
- { 0x1a00, 0x26a1, 0x0000 },
- { 0x1a00, 0x2702, 0x0000 },
- { 0x9a00, 0x2708, 0x3000 },
- { 0x9a00, 0x2706, 0x2000 },
- { 0x1a00, 0x2704, 0x0000 },
- { 0x1a00, 0x2707, 0x0000 },
- { 0x9a00, 0x270c, 0x2000 },
- { 0x1a00, 0x2709, 0x0000 },
- { 0x1a00, 0x270d, 0x0000 },
- { 0x9a00, 0x2716, 0x4000 },
- { 0x9a00, 0x2712, 0x3000 },
- { 0x9a00, 0x2710, 0x2000 },
- { 0x1a00, 0x270f, 0x0000 },
- { 0x1a00, 0x2711, 0x0000 },
- { 0x9a00, 0x2714, 0x2000 },
- { 0x1a00, 0x2713, 0x0000 },
- { 0x1a00, 0x2715, 0x0000 },
- { 0x9a00, 0x271a, 0x3000 },
- { 0x9a00, 0x2718, 0x2000 },
- { 0x1a00, 0x2717, 0x0000 },
- { 0x1a00, 0x2719, 0x0000 },
- { 0x9a00, 0x271c, 0x2000 },
- { 0x1a00, 0x271b, 0x0000 },
- { 0x1a00, 0x271d, 0x0000 },
- { 0x9a00, 0x272f, 0x5000 },
- { 0x9a00, 0x2726, 0x4000 },
- { 0x9a00, 0x2722, 0x3000 },
- { 0x9a00, 0x2720, 0x2000 },
- { 0x1a00, 0x271f, 0x0000 },
- { 0x1a00, 0x2721, 0x0000 },
- { 0x9a00, 0x2724, 0x2000 },
- { 0x1a00, 0x2723, 0x0000 },
- { 0x1a00, 0x2725, 0x0000 },
- { 0x9a00, 0x272b, 0x3000 },
- { 0x9a00, 0x2729, 0x2000 },
- { 0x1a00, 0x2727, 0x0000 },
- { 0x1a00, 0x272a, 0x0000 },
- { 0x9a00, 0x272d, 0x2000 },
- { 0x1a00, 0x272c, 0x0000 },
- { 0x1a00, 0x272e, 0x0000 },
- { 0x9a00, 0x2737, 0x4000 },
- { 0x9a00, 0x2733, 0x3000 },
- { 0x9a00, 0x2731, 0x2000 },
- { 0x1a00, 0x2730, 0x0000 },
- { 0x1a00, 0x2732, 0x0000 },
- { 0x9a00, 0x2735, 0x2000 },
- { 0x1a00, 0x2734, 0x0000 },
- { 0x1a00, 0x2736, 0x0000 },
- { 0x9a00, 0x273b, 0x3000 },
- { 0x9a00, 0x2739, 0x2000 },
- { 0x1a00, 0x2738, 0x0000 },
- { 0x1a00, 0x273a, 0x0000 },
- { 0x9a00, 0x273d, 0x2000 },
- { 0x1a00, 0x273c, 0x0000 },
- { 0x1a00, 0x273e, 0x0000 },
- { 0x9a00, 0x2767, 0x6000 },
- { 0x9a00, 0x2751, 0x5000 },
- { 0x9a00, 0x2747, 0x4000 },
- { 0x9a00, 0x2743, 0x3000 },
- { 0x9a00, 0x2741, 0x2000 },
- { 0x1a00, 0x2740, 0x0000 },
- { 0x1a00, 0x2742, 0x0000 },
- { 0x9a00, 0x2745, 0x2000 },
- { 0x1a00, 0x2744, 0x0000 },
- { 0x1a00, 0x2746, 0x0000 },
- { 0x9a00, 0x274b, 0x3000 },
- { 0x9a00, 0x2749, 0x2000 },
- { 0x1a00, 0x2748, 0x0000 },
- { 0x1a00, 0x274a, 0x0000 },
- { 0x9a00, 0x274f, 0x2000 },
- { 0x1a00, 0x274d, 0x0000 },
- { 0x1a00, 0x2750, 0x0000 },
- { 0x9a00, 0x275d, 0x4000 },
- { 0x9a00, 0x2759, 0x3000 },
- { 0x9a00, 0x2756, 0x2000 },
- { 0x1a00, 0x2752, 0x0000 },
- { 0x1a00, 0x2758, 0x0000 },
- { 0x9a00, 0x275b, 0x2000 },
- { 0x1a00, 0x275a, 0x0000 },
- { 0x1a00, 0x275c, 0x0000 },
- { 0x9a00, 0x2763, 0x3000 },
- { 0x9a00, 0x2761, 0x2000 },
- { 0x1a00, 0x275e, 0x0000 },
- { 0x1a00, 0x2762, 0x0000 },
- { 0x9a00, 0x2765, 0x2000 },
- { 0x1a00, 0x2764, 0x0000 },
- { 0x1a00, 0x2766, 0x0000 },
- { 0x8f00, 0x2777, 0x5000 },
- { 0x9200, 0x276f, 0x4000 },
- { 0x9200, 0x276b, 0x3000 },
- { 0x9200, 0x2769, 0x2000 },
- { 0x1600, 0x2768, 0x0000 },
- { 0x1600, 0x276a, 0x0000 },
- { 0x9200, 0x276d, 0x2000 },
- { 0x1600, 0x276c, 0x0000 },
- { 0x1600, 0x276e, 0x0000 },
- { 0x9200, 0x2773, 0x3000 },
- { 0x9200, 0x2771, 0x2000 },
- { 0x1600, 0x2770, 0x0000 },
- { 0x1600, 0x2772, 0x0000 },
- { 0x9200, 0x2775, 0x2000 },
- { 0x1600, 0x2774, 0x0000 },
- { 0x0f00, 0x2776, 0x0000 },
- { 0x8f00, 0x277f, 0x4000 },
- { 0x8f00, 0x277b, 0x3000 },
- { 0x8f00, 0x2779, 0x2000 },
- { 0x0f00, 0x2778, 0x0000 },
- { 0x0f00, 0x277a, 0x0000 },
- { 0x8f00, 0x277d, 0x2000 },
- { 0x0f00, 0x277c, 0x0000 },
- { 0x0f00, 0x277e, 0x0000 },
- { 0x8f00, 0x2783, 0x3000 },
- { 0x8f00, 0x2781, 0x2000 },
- { 0x0f00, 0x2780, 0x0000 },
- { 0x0f00, 0x2782, 0x0000 },
- { 0x8f00, 0x2785, 0x2000 },
- { 0x0f00, 0x2784, 0x0000 },
- { 0x0f00, 0x2786, 0x0000 },
- { 0x9900, 0x29a0, 0xa000 },
- { 0x9a00, 0x28a0, 0x9000 },
- { 0x9a00, 0x2820, 0x8000 },
- { 0x9900, 0x27dc, 0x7000 },
- { 0x9a00, 0x27aa, 0x6000 },
- { 0x9a00, 0x279a, 0x5000 },
- { 0x8f00, 0x278f, 0x4000 },
- { 0x8f00, 0x278b, 0x3000 },
- { 0x8f00, 0x2789, 0x2000 },
- { 0x0f00, 0x2788, 0x0000 },
- { 0x0f00, 0x278a, 0x0000 },
- { 0x8f00, 0x278d, 0x2000 },
- { 0x0f00, 0x278c, 0x0000 },
- { 0x0f00, 0x278e, 0x0000 },
- { 0x8f00, 0x2793, 0x3000 },
- { 0x8f00, 0x2791, 0x2000 },
- { 0x0f00, 0x2790, 0x0000 },
- { 0x0f00, 0x2792, 0x0000 },
- { 0x9a00, 0x2798, 0x2000 },
- { 0x1a00, 0x2794, 0x0000 },
- { 0x1a00, 0x2799, 0x0000 },
- { 0x9a00, 0x27a2, 0x4000 },
- { 0x9a00, 0x279e, 0x3000 },
- { 0x9a00, 0x279c, 0x2000 },
- { 0x1a00, 0x279b, 0x0000 },
- { 0x1a00, 0x279d, 0x0000 },
- { 0x9a00, 0x27a0, 0x2000 },
- { 0x1a00, 0x279f, 0x0000 },
- { 0x1a00, 0x27a1, 0x0000 },
- { 0x9a00, 0x27a6, 0x3000 },
- { 0x9a00, 0x27a4, 0x2000 },
- { 0x1a00, 0x27a3, 0x0000 },
- { 0x1a00, 0x27a5, 0x0000 },
- { 0x9a00, 0x27a8, 0x2000 },
- { 0x1a00, 0x27a7, 0x0000 },
- { 0x1a00, 0x27a9, 0x0000 },
- { 0x9a00, 0x27bb, 0x5000 },
- { 0x9a00, 0x27b3, 0x4000 },
- { 0x9a00, 0x27ae, 0x3000 },
- { 0x9a00, 0x27ac, 0x2000 },
- { 0x1a00, 0x27ab, 0x0000 },
- { 0x1a00, 0x27ad, 0x0000 },
- { 0x9a00, 0x27b1, 0x2000 },
- { 0x1a00, 0x27af, 0x0000 },
- { 0x1a00, 0x27b2, 0x0000 },
- { 0x9a00, 0x27b7, 0x3000 },
- { 0x9a00, 0x27b5, 0x2000 },
- { 0x1a00, 0x27b4, 0x0000 },
- { 0x1a00, 0x27b6, 0x0000 },
- { 0x9a00, 0x27b9, 0x2000 },
- { 0x1a00, 0x27b8, 0x0000 },
- { 0x1a00, 0x27ba, 0x0000 },
- { 0x9900, 0x27d4, 0x4000 },
- { 0x9900, 0x27d0, 0x3000 },
- { 0x9a00, 0x27bd, 0x2000 },
- { 0x1a00, 0x27bc, 0x0000 },
- { 0x1a00, 0x27be, 0x0000 },
- { 0x9900, 0x27d2, 0x2000 },
- { 0x1900, 0x27d1, 0x0000 },
- { 0x1900, 0x27d3, 0x0000 },
- { 0x9900, 0x27d8, 0x3000 },
- { 0x9900, 0x27d6, 0x2000 },
- { 0x1900, 0x27d5, 0x0000 },
- { 0x1900, 0x27d7, 0x0000 },
- { 0x9900, 0x27da, 0x2000 },
- { 0x1900, 0x27d9, 0x0000 },
- { 0x1900, 0x27db, 0x0000 },
- { 0x9a00, 0x2800, 0x6000 },
- { 0x9900, 0x27f0, 0x5000 },
- { 0x9900, 0x27e4, 0x4000 },
- { 0x9900, 0x27e0, 0x3000 },
- { 0x9900, 0x27de, 0x2000 },
- { 0x1900, 0x27dd, 0x0000 },
- { 0x1900, 0x27df, 0x0000 },
- { 0x9900, 0x27e2, 0x2000 },
- { 0x1900, 0x27e1, 0x0000 },
- { 0x1900, 0x27e3, 0x0000 },
- { 0x9600, 0x27e8, 0x3000 },
- { 0x9600, 0x27e6, 0x2000 },
- { 0x1900, 0x27e5, 0x0000 },
- { 0x1200, 0x27e7, 0x0000 },
- { 0x9600, 0x27ea, 0x2000 },
- { 0x1200, 0x27e9, 0x0000 },
- { 0x1200, 0x27eb, 0x0000 },
- { 0x9900, 0x27f8, 0x4000 },
- { 0x9900, 0x27f4, 0x3000 },
- { 0x9900, 0x27f2, 0x2000 },
- { 0x1900, 0x27f1, 0x0000 },
- { 0x1900, 0x27f3, 0x0000 },
- { 0x9900, 0x27f6, 0x2000 },
- { 0x1900, 0x27f5, 0x0000 },
- { 0x1900, 0x27f7, 0x0000 },
- { 0x9900, 0x27fc, 0x3000 },
- { 0x9900, 0x27fa, 0x2000 },
- { 0x1900, 0x27f9, 0x0000 },
- { 0x1900, 0x27fb, 0x0000 },
- { 0x9900, 0x27fe, 0x2000 },
- { 0x1900, 0x27fd, 0x0000 },
- { 0x1900, 0x27ff, 0x0000 },
- { 0x9a00, 0x2810, 0x5000 },
- { 0x9a00, 0x2808, 0x4000 },
- { 0x9a00, 0x2804, 0x3000 },
- { 0x9a00, 0x2802, 0x2000 },
- { 0x1a00, 0x2801, 0x0000 },
- { 0x1a00, 0x2803, 0x0000 },
- { 0x9a00, 0x2806, 0x2000 },
- { 0x1a00, 0x2805, 0x0000 },
- { 0x1a00, 0x2807, 0x0000 },
- { 0x9a00, 0x280c, 0x3000 },
- { 0x9a00, 0x280a, 0x2000 },
- { 0x1a00, 0x2809, 0x0000 },
- { 0x1a00, 0x280b, 0x0000 },
- { 0x9a00, 0x280e, 0x2000 },
- { 0x1a00, 0x280d, 0x0000 },
- { 0x1a00, 0x280f, 0x0000 },
- { 0x9a00, 0x2818, 0x4000 },
- { 0x9a00, 0x2814, 0x3000 },
- { 0x9a00, 0x2812, 0x2000 },
- { 0x1a00, 0x2811, 0x0000 },
- { 0x1a00, 0x2813, 0x0000 },
- { 0x9a00, 0x2816, 0x2000 },
- { 0x1a00, 0x2815, 0x0000 },
- { 0x1a00, 0x2817, 0x0000 },
- { 0x9a00, 0x281c, 0x3000 },
- { 0x9a00, 0x281a, 0x2000 },
- { 0x1a00, 0x2819, 0x0000 },
- { 0x1a00, 0x281b, 0x0000 },
- { 0x9a00, 0x281e, 0x2000 },
- { 0x1a00, 0x281d, 0x0000 },
- { 0x1a00, 0x281f, 0x0000 },
- { 0x9a00, 0x2860, 0x7000 },
- { 0x9a00, 0x2840, 0x6000 },
- { 0x9a00, 0x2830, 0x5000 },
- { 0x9a00, 0x2828, 0x4000 },
- { 0x9a00, 0x2824, 0x3000 },
- { 0x9a00, 0x2822, 0x2000 },
- { 0x1a00, 0x2821, 0x0000 },
- { 0x1a00, 0x2823, 0x0000 },
- { 0x9a00, 0x2826, 0x2000 },
- { 0x1a00, 0x2825, 0x0000 },
- { 0x1a00, 0x2827, 0x0000 },
- { 0x9a00, 0x282c, 0x3000 },
- { 0x9a00, 0x282a, 0x2000 },
- { 0x1a00, 0x2829, 0x0000 },
- { 0x1a00, 0x282b, 0x0000 },
- { 0x9a00, 0x282e, 0x2000 },
- { 0x1a00, 0x282d, 0x0000 },
- { 0x1a00, 0x282f, 0x0000 },
- { 0x9a00, 0x2838, 0x4000 },
- { 0x9a00, 0x2834, 0x3000 },
- { 0x9a00, 0x2832, 0x2000 },
- { 0x1a00, 0x2831, 0x0000 },
- { 0x1a00, 0x2833, 0x0000 },
- { 0x9a00, 0x2836, 0x2000 },
- { 0x1a00, 0x2835, 0x0000 },
- { 0x1a00, 0x2837, 0x0000 },
- { 0x9a00, 0x283c, 0x3000 },
- { 0x9a00, 0x283a, 0x2000 },
- { 0x1a00, 0x2839, 0x0000 },
- { 0x1a00, 0x283b, 0x0000 },
- { 0x9a00, 0x283e, 0x2000 },
- { 0x1a00, 0x283d, 0x0000 },
- { 0x1a00, 0x283f, 0x0000 },
- { 0x9a00, 0x2850, 0x5000 },
- { 0x9a00, 0x2848, 0x4000 },
- { 0x9a00, 0x2844, 0x3000 },
- { 0x9a00, 0x2842, 0x2000 },
- { 0x1a00, 0x2841, 0x0000 },
- { 0x1a00, 0x2843, 0x0000 },
- { 0x9a00, 0x2846, 0x2000 },
- { 0x1a00, 0x2845, 0x0000 },
- { 0x1a00, 0x2847, 0x0000 },
- { 0x9a00, 0x284c, 0x3000 },
- { 0x9a00, 0x284a, 0x2000 },
- { 0x1a00, 0x2849, 0x0000 },
- { 0x1a00, 0x284b, 0x0000 },
- { 0x9a00, 0x284e, 0x2000 },
- { 0x1a00, 0x284d, 0x0000 },
- { 0x1a00, 0x284f, 0x0000 },
- { 0x9a00, 0x2858, 0x4000 },
- { 0x9a00, 0x2854, 0x3000 },
- { 0x9a00, 0x2852, 0x2000 },
- { 0x1a00, 0x2851, 0x0000 },
- { 0x1a00, 0x2853, 0x0000 },
- { 0x9a00, 0x2856, 0x2000 },
- { 0x1a00, 0x2855, 0x0000 },
- { 0x1a00, 0x2857, 0x0000 },
- { 0x9a00, 0x285c, 0x3000 },
- { 0x9a00, 0x285a, 0x2000 },
- { 0x1a00, 0x2859, 0x0000 },
- { 0x1a00, 0x285b, 0x0000 },
- { 0x9a00, 0x285e, 0x2000 },
- { 0x1a00, 0x285d, 0x0000 },
- { 0x1a00, 0x285f, 0x0000 },
- { 0x9a00, 0x2880, 0x6000 },
- { 0x9a00, 0x2870, 0x5000 },
- { 0x9a00, 0x2868, 0x4000 },
- { 0x9a00, 0x2864, 0x3000 },
- { 0x9a00, 0x2862, 0x2000 },
- { 0x1a00, 0x2861, 0x0000 },
- { 0x1a00, 0x2863, 0x0000 },
- { 0x9a00, 0x2866, 0x2000 },
- { 0x1a00, 0x2865, 0x0000 },
- { 0x1a00, 0x2867, 0x0000 },
- { 0x9a00, 0x286c, 0x3000 },
- { 0x9a00, 0x286a, 0x2000 },
- { 0x1a00, 0x2869, 0x0000 },
- { 0x1a00, 0x286b, 0x0000 },
- { 0x9a00, 0x286e, 0x2000 },
- { 0x1a00, 0x286d, 0x0000 },
- { 0x1a00, 0x286f, 0x0000 },
- { 0x9a00, 0x2878, 0x4000 },
- { 0x9a00, 0x2874, 0x3000 },
- { 0x9a00, 0x2872, 0x2000 },
- { 0x1a00, 0x2871, 0x0000 },
- { 0x1a00, 0x2873, 0x0000 },
- { 0x9a00, 0x2876, 0x2000 },
- { 0x1a00, 0x2875, 0x0000 },
- { 0x1a00, 0x2877, 0x0000 },
- { 0x9a00, 0x287c, 0x3000 },
- { 0x9a00, 0x287a, 0x2000 },
- { 0x1a00, 0x2879, 0x0000 },
- { 0x1a00, 0x287b, 0x0000 },
- { 0x9a00, 0x287e, 0x2000 },
- { 0x1a00, 0x287d, 0x0000 },
- { 0x1a00, 0x287f, 0x0000 },
- { 0x9a00, 0x2890, 0x5000 },
- { 0x9a00, 0x2888, 0x4000 },
- { 0x9a00, 0x2884, 0x3000 },
- { 0x9a00, 0x2882, 0x2000 },
- { 0x1a00, 0x2881, 0x0000 },
- { 0x1a00, 0x2883, 0x0000 },
- { 0x9a00, 0x2886, 0x2000 },
- { 0x1a00, 0x2885, 0x0000 },
- { 0x1a00, 0x2887, 0x0000 },
- { 0x9a00, 0x288c, 0x3000 },
- { 0x9a00, 0x288a, 0x2000 },
- { 0x1a00, 0x2889, 0x0000 },
- { 0x1a00, 0x288b, 0x0000 },
- { 0x9a00, 0x288e, 0x2000 },
- { 0x1a00, 0x288d, 0x0000 },
- { 0x1a00, 0x288f, 0x0000 },
- { 0x9a00, 0x2898, 0x4000 },
- { 0x9a00, 0x2894, 0x3000 },
- { 0x9a00, 0x2892, 0x2000 },
- { 0x1a00, 0x2891, 0x0000 },
- { 0x1a00, 0x2893, 0x0000 },
- { 0x9a00, 0x2896, 0x2000 },
- { 0x1a00, 0x2895, 0x0000 },
- { 0x1a00, 0x2897, 0x0000 },
- { 0x9a00, 0x289c, 0x3000 },
- { 0x9a00, 0x289a, 0x2000 },
- { 0x1a00, 0x2899, 0x0000 },
- { 0x1a00, 0x289b, 0x0000 },
- { 0x9a00, 0x289e, 0x2000 },
- { 0x1a00, 0x289d, 0x0000 },
- { 0x1a00, 0x289f, 0x0000 },
- { 0x9900, 0x2920, 0x8000 },
- { 0x9a00, 0x28e0, 0x7000 },
- { 0x9a00, 0x28c0, 0x6000 },
- { 0x9a00, 0x28b0, 0x5000 },
- { 0x9a00, 0x28a8, 0x4000 },
- { 0x9a00, 0x28a4, 0x3000 },
- { 0x9a00, 0x28a2, 0x2000 },
- { 0x1a00, 0x28a1, 0x0000 },
- { 0x1a00, 0x28a3, 0x0000 },
- { 0x9a00, 0x28a6, 0x2000 },
- { 0x1a00, 0x28a5, 0x0000 },
- { 0x1a00, 0x28a7, 0x0000 },
- { 0x9a00, 0x28ac, 0x3000 },
- { 0x9a00, 0x28aa, 0x2000 },
- { 0x1a00, 0x28a9, 0x0000 },
- { 0x1a00, 0x28ab, 0x0000 },
- { 0x9a00, 0x28ae, 0x2000 },
- { 0x1a00, 0x28ad, 0x0000 },
- { 0x1a00, 0x28af, 0x0000 },
- { 0x9a00, 0x28b8, 0x4000 },
- { 0x9a00, 0x28b4, 0x3000 },
- { 0x9a00, 0x28b2, 0x2000 },
- { 0x1a00, 0x28b1, 0x0000 },
- { 0x1a00, 0x28b3, 0x0000 },
- { 0x9a00, 0x28b6, 0x2000 },
- { 0x1a00, 0x28b5, 0x0000 },
- { 0x1a00, 0x28b7, 0x0000 },
- { 0x9a00, 0x28bc, 0x3000 },
- { 0x9a00, 0x28ba, 0x2000 },
- { 0x1a00, 0x28b9, 0x0000 },
- { 0x1a00, 0x28bb, 0x0000 },
- { 0x9a00, 0x28be, 0x2000 },
- { 0x1a00, 0x28bd, 0x0000 },
- { 0x1a00, 0x28bf, 0x0000 },
- { 0x9a00, 0x28d0, 0x5000 },
- { 0x9a00, 0x28c8, 0x4000 },
- { 0x9a00, 0x28c4, 0x3000 },
- { 0x9a00, 0x28c2, 0x2000 },
- { 0x1a00, 0x28c1, 0x0000 },
- { 0x1a00, 0x28c3, 0x0000 },
- { 0x9a00, 0x28c6, 0x2000 },
- { 0x1a00, 0x28c5, 0x0000 },
- { 0x1a00, 0x28c7, 0x0000 },
- { 0x9a00, 0x28cc, 0x3000 },
- { 0x9a00, 0x28ca, 0x2000 },
- { 0x1a00, 0x28c9, 0x0000 },
- { 0x1a00, 0x28cb, 0x0000 },
- { 0x9a00, 0x28ce, 0x2000 },
- { 0x1a00, 0x28cd, 0x0000 },
- { 0x1a00, 0x28cf, 0x0000 },
- { 0x9a00, 0x28d8, 0x4000 },
- { 0x9a00, 0x28d4, 0x3000 },
- { 0x9a00, 0x28d2, 0x2000 },
- { 0x1a00, 0x28d1, 0x0000 },
- { 0x1a00, 0x28d3, 0x0000 },
- { 0x9a00, 0x28d6, 0x2000 },
- { 0x1a00, 0x28d5, 0x0000 },
- { 0x1a00, 0x28d7, 0x0000 },
- { 0x9a00, 0x28dc, 0x3000 },
- { 0x9a00, 0x28da, 0x2000 },
- { 0x1a00, 0x28d9, 0x0000 },
- { 0x1a00, 0x28db, 0x0000 },
- { 0x9a00, 0x28de, 0x2000 },
- { 0x1a00, 0x28dd, 0x0000 },
- { 0x1a00, 0x28df, 0x0000 },
- { 0x9900, 0x2900, 0x6000 },
- { 0x9a00, 0x28f0, 0x5000 },
- { 0x9a00, 0x28e8, 0x4000 },
- { 0x9a00, 0x28e4, 0x3000 },
- { 0x9a00, 0x28e2, 0x2000 },
- { 0x1a00, 0x28e1, 0x0000 },
- { 0x1a00, 0x28e3, 0x0000 },
- { 0x9a00, 0x28e6, 0x2000 },
- { 0x1a00, 0x28e5, 0x0000 },
- { 0x1a00, 0x28e7, 0x0000 },
- { 0x9a00, 0x28ec, 0x3000 },
- { 0x9a00, 0x28ea, 0x2000 },
- { 0x1a00, 0x28e9, 0x0000 },
- { 0x1a00, 0x28eb, 0x0000 },
- { 0x9a00, 0x28ee, 0x2000 },
- { 0x1a00, 0x28ed, 0x0000 },
- { 0x1a00, 0x28ef, 0x0000 },
- { 0x9a00, 0x28f8, 0x4000 },
- { 0x9a00, 0x28f4, 0x3000 },
- { 0x9a00, 0x28f2, 0x2000 },
- { 0x1a00, 0x28f1, 0x0000 },
- { 0x1a00, 0x28f3, 0x0000 },
- { 0x9a00, 0x28f6, 0x2000 },
- { 0x1a00, 0x28f5, 0x0000 },
- { 0x1a00, 0x28f7, 0x0000 },
- { 0x9a00, 0x28fc, 0x3000 },
- { 0x9a00, 0x28fa, 0x2000 },
- { 0x1a00, 0x28f9, 0x0000 },
- { 0x1a00, 0x28fb, 0x0000 },
- { 0x9a00, 0x28fe, 0x2000 },
- { 0x1a00, 0x28fd, 0x0000 },
- { 0x1a00, 0x28ff, 0x0000 },
- { 0x9900, 0x2910, 0x5000 },
- { 0x9900, 0x2908, 0x4000 },
- { 0x9900, 0x2904, 0x3000 },
- { 0x9900, 0x2902, 0x2000 },
- { 0x1900, 0x2901, 0x0000 },
- { 0x1900, 0x2903, 0x0000 },
- { 0x9900, 0x2906, 0x2000 },
- { 0x1900, 0x2905, 0x0000 },
- { 0x1900, 0x2907, 0x0000 },
- { 0x9900, 0x290c, 0x3000 },
- { 0x9900, 0x290a, 0x2000 },
- { 0x1900, 0x2909, 0x0000 },
- { 0x1900, 0x290b, 0x0000 },
- { 0x9900, 0x290e, 0x2000 },
- { 0x1900, 0x290d, 0x0000 },
- { 0x1900, 0x290f, 0x0000 },
- { 0x9900, 0x2918, 0x4000 },
- { 0x9900, 0x2914, 0x3000 },
- { 0x9900, 0x2912, 0x2000 },
- { 0x1900, 0x2911, 0x0000 },
- { 0x1900, 0x2913, 0x0000 },
- { 0x9900, 0x2916, 0x2000 },
- { 0x1900, 0x2915, 0x0000 },
- { 0x1900, 0x2917, 0x0000 },
- { 0x9900, 0x291c, 0x3000 },
- { 0x9900, 0x291a, 0x2000 },
- { 0x1900, 0x2919, 0x0000 },
- { 0x1900, 0x291b, 0x0000 },
- { 0x9900, 0x291e, 0x2000 },
- { 0x1900, 0x291d, 0x0000 },
- { 0x1900, 0x291f, 0x0000 },
- { 0x9900, 0x2960, 0x7000 },
- { 0x9900, 0x2940, 0x6000 },
- { 0x9900, 0x2930, 0x5000 },
- { 0x9900, 0x2928, 0x4000 },
- { 0x9900, 0x2924, 0x3000 },
- { 0x9900, 0x2922, 0x2000 },
- { 0x1900, 0x2921, 0x0000 },
- { 0x1900, 0x2923, 0x0000 },
- { 0x9900, 0x2926, 0x2000 },
- { 0x1900, 0x2925, 0x0000 },
- { 0x1900, 0x2927, 0x0000 },
- { 0x9900, 0x292c, 0x3000 },
- { 0x9900, 0x292a, 0x2000 },
- { 0x1900, 0x2929, 0x0000 },
- { 0x1900, 0x292b, 0x0000 },
- { 0x9900, 0x292e, 0x2000 },
- { 0x1900, 0x292d, 0x0000 },
- { 0x1900, 0x292f, 0x0000 },
- { 0x9900, 0x2938, 0x4000 },
- { 0x9900, 0x2934, 0x3000 },
- { 0x9900, 0x2932, 0x2000 },
- { 0x1900, 0x2931, 0x0000 },
- { 0x1900, 0x2933, 0x0000 },
- { 0x9900, 0x2936, 0x2000 },
- { 0x1900, 0x2935, 0x0000 },
- { 0x1900, 0x2937, 0x0000 },
- { 0x9900, 0x293c, 0x3000 },
- { 0x9900, 0x293a, 0x2000 },
- { 0x1900, 0x2939, 0x0000 },
- { 0x1900, 0x293b, 0x0000 },
- { 0x9900, 0x293e, 0x2000 },
- { 0x1900, 0x293d, 0x0000 },
- { 0x1900, 0x293f, 0x0000 },
- { 0x9900, 0x2950, 0x5000 },
- { 0x9900, 0x2948, 0x4000 },
- { 0x9900, 0x2944, 0x3000 },
- { 0x9900, 0x2942, 0x2000 },
- { 0x1900, 0x2941, 0x0000 },
- { 0x1900, 0x2943, 0x0000 },
- { 0x9900, 0x2946, 0x2000 },
- { 0x1900, 0x2945, 0x0000 },
- { 0x1900, 0x2947, 0x0000 },
- { 0x9900, 0x294c, 0x3000 },
- { 0x9900, 0x294a, 0x2000 },
- { 0x1900, 0x2949, 0x0000 },
- { 0x1900, 0x294b, 0x0000 },
- { 0x9900, 0x294e, 0x2000 },
- { 0x1900, 0x294d, 0x0000 },
- { 0x1900, 0x294f, 0x0000 },
- { 0x9900, 0x2958, 0x4000 },
- { 0x9900, 0x2954, 0x3000 },
- { 0x9900, 0x2952, 0x2000 },
- { 0x1900, 0x2951, 0x0000 },
- { 0x1900, 0x2953, 0x0000 },
- { 0x9900, 0x2956, 0x2000 },
- { 0x1900, 0x2955, 0x0000 },
- { 0x1900, 0x2957, 0x0000 },
- { 0x9900, 0x295c, 0x3000 },
- { 0x9900, 0x295a, 0x2000 },
- { 0x1900, 0x2959, 0x0000 },
- { 0x1900, 0x295b, 0x0000 },
- { 0x9900, 0x295e, 0x2000 },
- { 0x1900, 0x295d, 0x0000 },
- { 0x1900, 0x295f, 0x0000 },
- { 0x9900, 0x2980, 0x6000 },
- { 0x9900, 0x2970, 0x5000 },
- { 0x9900, 0x2968, 0x4000 },
- { 0x9900, 0x2964, 0x3000 },
- { 0x9900, 0x2962, 0x2000 },
- { 0x1900, 0x2961, 0x0000 },
- { 0x1900, 0x2963, 0x0000 },
- { 0x9900, 0x2966, 0x2000 },
- { 0x1900, 0x2965, 0x0000 },
- { 0x1900, 0x2967, 0x0000 },
- { 0x9900, 0x296c, 0x3000 },
- { 0x9900, 0x296a, 0x2000 },
- { 0x1900, 0x2969, 0x0000 },
- { 0x1900, 0x296b, 0x0000 },
- { 0x9900, 0x296e, 0x2000 },
- { 0x1900, 0x296d, 0x0000 },
- { 0x1900, 0x296f, 0x0000 },
- { 0x9900, 0x2978, 0x4000 },
- { 0x9900, 0x2974, 0x3000 },
- { 0x9900, 0x2972, 0x2000 },
- { 0x1900, 0x2971, 0x0000 },
- { 0x1900, 0x2973, 0x0000 },
- { 0x9900, 0x2976, 0x2000 },
- { 0x1900, 0x2975, 0x0000 },
- { 0x1900, 0x2977, 0x0000 },
- { 0x9900, 0x297c, 0x3000 },
- { 0x9900, 0x297a, 0x2000 },
- { 0x1900, 0x2979, 0x0000 },
- { 0x1900, 0x297b, 0x0000 },
- { 0x9900, 0x297e, 0x2000 },
- { 0x1900, 0x297d, 0x0000 },
- { 0x1900, 0x297f, 0x0000 },
- { 0x9200, 0x2990, 0x5000 },
- { 0x9200, 0x2988, 0x4000 },
- { 0x9200, 0x2984, 0x3000 },
- { 0x9900, 0x2982, 0x2000 },
- { 0x1900, 0x2981, 0x0000 },
- { 0x1600, 0x2983, 0x0000 },
- { 0x9200, 0x2986, 0x2000 },
- { 0x1600, 0x2985, 0x0000 },
- { 0x1600, 0x2987, 0x0000 },
- { 0x9200, 0x298c, 0x3000 },
- { 0x9200, 0x298a, 0x2000 },
- { 0x1600, 0x2989, 0x0000 },
- { 0x1600, 0x298b, 0x0000 },
- { 0x9200, 0x298e, 0x2000 },
- { 0x1600, 0x298d, 0x0000 },
- { 0x1600, 0x298f, 0x0000 },
- { 0x9200, 0x2998, 0x4000 },
- { 0x9200, 0x2994, 0x3000 },
- { 0x9200, 0x2992, 0x2000 },
- { 0x1600, 0x2991, 0x0000 },
- { 0x1600, 0x2993, 0x0000 },
- { 0x9200, 0x2996, 0x2000 },
- { 0x1600, 0x2995, 0x0000 },
- { 0x1600, 0x2997, 0x0000 },
- { 0x9900, 0x299c, 0x3000 },
- { 0x9900, 0x299a, 0x2000 },
- { 0x1900, 0x2999, 0x0000 },
- { 0x1900, 0x299b, 0x0000 },
- { 0x9900, 0x299e, 0x2000 },
- { 0x1900, 0x299d, 0x0000 },
- { 0x1900, 0x299f, 0x0000 },
- { 0x9900, 0x2aa0, 0x9000 },
- { 0x9900, 0x2a20, 0x8000 },
- { 0x9900, 0x29e0, 0x7000 },
- { 0x9900, 0x29c0, 0x6000 },
- { 0x9900, 0x29b0, 0x5000 },
- { 0x9900, 0x29a8, 0x4000 },
- { 0x9900, 0x29a4, 0x3000 },
- { 0x9900, 0x29a2, 0x2000 },
- { 0x1900, 0x29a1, 0x0000 },
- { 0x1900, 0x29a3, 0x0000 },
- { 0x9900, 0x29a6, 0x2000 },
- { 0x1900, 0x29a5, 0x0000 },
- { 0x1900, 0x29a7, 0x0000 },
- { 0x9900, 0x29ac, 0x3000 },
- { 0x9900, 0x29aa, 0x2000 },
- { 0x1900, 0x29a9, 0x0000 },
- { 0x1900, 0x29ab, 0x0000 },
- { 0x9900, 0x29ae, 0x2000 },
- { 0x1900, 0x29ad, 0x0000 },
- { 0x1900, 0x29af, 0x0000 },
- { 0x9900, 0x29b8, 0x4000 },
- { 0x9900, 0x29b4, 0x3000 },
- { 0x9900, 0x29b2, 0x2000 },
- { 0x1900, 0x29b1, 0x0000 },
- { 0x1900, 0x29b3, 0x0000 },
- { 0x9900, 0x29b6, 0x2000 },
- { 0x1900, 0x29b5, 0x0000 },
- { 0x1900, 0x29b7, 0x0000 },
- { 0x9900, 0x29bc, 0x3000 },
- { 0x9900, 0x29ba, 0x2000 },
- { 0x1900, 0x29b9, 0x0000 },
- { 0x1900, 0x29bb, 0x0000 },
- { 0x9900, 0x29be, 0x2000 },
- { 0x1900, 0x29bd, 0x0000 },
- { 0x1900, 0x29bf, 0x0000 },
- { 0x9900, 0x29d0, 0x5000 },
- { 0x9900, 0x29c8, 0x4000 },
- { 0x9900, 0x29c4, 0x3000 },
- { 0x9900, 0x29c2, 0x2000 },
- { 0x1900, 0x29c1, 0x0000 },
- { 0x1900, 0x29c3, 0x0000 },
- { 0x9900, 0x29c6, 0x2000 },
- { 0x1900, 0x29c5, 0x0000 },
- { 0x1900, 0x29c7, 0x0000 },
- { 0x9900, 0x29cc, 0x3000 },
- { 0x9900, 0x29ca, 0x2000 },
- { 0x1900, 0x29c9, 0x0000 },
- { 0x1900, 0x29cb, 0x0000 },
- { 0x9900, 0x29ce, 0x2000 },
- { 0x1900, 0x29cd, 0x0000 },
- { 0x1900, 0x29cf, 0x0000 },
- { 0x9600, 0x29d8, 0x4000 },
- { 0x9900, 0x29d4, 0x3000 },
- { 0x9900, 0x29d2, 0x2000 },
- { 0x1900, 0x29d1, 0x0000 },
- { 0x1900, 0x29d3, 0x0000 },
- { 0x9900, 0x29d6, 0x2000 },
- { 0x1900, 0x29d5, 0x0000 },
- { 0x1900, 0x29d7, 0x0000 },
- { 0x9900, 0x29dc, 0x3000 },
- { 0x9600, 0x29da, 0x2000 },
- { 0x1200, 0x29d9, 0x0000 },
- { 0x1200, 0x29db, 0x0000 },
- { 0x9900, 0x29de, 0x2000 },
- { 0x1900, 0x29dd, 0x0000 },
- { 0x1900, 0x29df, 0x0000 },
- { 0x9900, 0x2a00, 0x6000 },
- { 0x9900, 0x29f0, 0x5000 },
- { 0x9900, 0x29e8, 0x4000 },
- { 0x9900, 0x29e4, 0x3000 },
- { 0x9900, 0x29e2, 0x2000 },
- { 0x1900, 0x29e1, 0x0000 },
- { 0x1900, 0x29e3, 0x0000 },
- { 0x9900, 0x29e6, 0x2000 },
- { 0x1900, 0x29e5, 0x0000 },
- { 0x1900, 0x29e7, 0x0000 },
- { 0x9900, 0x29ec, 0x3000 },
- { 0x9900, 0x29ea, 0x2000 },
- { 0x1900, 0x29e9, 0x0000 },
- { 0x1900, 0x29eb, 0x0000 },
- { 0x9900, 0x29ee, 0x2000 },
- { 0x1900, 0x29ed, 0x0000 },
- { 0x1900, 0x29ef, 0x0000 },
- { 0x9900, 0x29f8, 0x4000 },
- { 0x9900, 0x29f4, 0x3000 },
- { 0x9900, 0x29f2, 0x2000 },
- { 0x1900, 0x29f1, 0x0000 },
- { 0x1900, 0x29f3, 0x0000 },
- { 0x9900, 0x29f6, 0x2000 },
- { 0x1900, 0x29f5, 0x0000 },
- { 0x1900, 0x29f7, 0x0000 },
- { 0x9600, 0x29fc, 0x3000 },
- { 0x9900, 0x29fa, 0x2000 },
- { 0x1900, 0x29f9, 0x0000 },
- { 0x1900, 0x29fb, 0x0000 },
- { 0x9900, 0x29fe, 0x2000 },
- { 0x1200, 0x29fd, 0x0000 },
- { 0x1900, 0x29ff, 0x0000 },
- { 0x9900, 0x2a10, 0x5000 },
- { 0x9900, 0x2a08, 0x4000 },
- { 0x9900, 0x2a04, 0x3000 },
- { 0x9900, 0x2a02, 0x2000 },
- { 0x1900, 0x2a01, 0x0000 },
- { 0x1900, 0x2a03, 0x0000 },
- { 0x9900, 0x2a06, 0x2000 },
- { 0x1900, 0x2a05, 0x0000 },
- { 0x1900, 0x2a07, 0x0000 },
- { 0x9900, 0x2a0c, 0x3000 },
- { 0x9900, 0x2a0a, 0x2000 },
- { 0x1900, 0x2a09, 0x0000 },
- { 0x1900, 0x2a0b, 0x0000 },
- { 0x9900, 0x2a0e, 0x2000 },
- { 0x1900, 0x2a0d, 0x0000 },
- { 0x1900, 0x2a0f, 0x0000 },
- { 0x9900, 0x2a18, 0x4000 },
- { 0x9900, 0x2a14, 0x3000 },
- { 0x9900, 0x2a12, 0x2000 },
- { 0x1900, 0x2a11, 0x0000 },
- { 0x1900, 0x2a13, 0x0000 },
- { 0x9900, 0x2a16, 0x2000 },
- { 0x1900, 0x2a15, 0x0000 },
- { 0x1900, 0x2a17, 0x0000 },
- { 0x9900, 0x2a1c, 0x3000 },
- { 0x9900, 0x2a1a, 0x2000 },
- { 0x1900, 0x2a19, 0x0000 },
- { 0x1900, 0x2a1b, 0x0000 },
- { 0x9900, 0x2a1e, 0x2000 },
- { 0x1900, 0x2a1d, 0x0000 },
- { 0x1900, 0x2a1f, 0x0000 },
- { 0x9900, 0x2a60, 0x7000 },
- { 0x9900, 0x2a40, 0x6000 },
- { 0x9900, 0x2a30, 0x5000 },
- { 0x9900, 0x2a28, 0x4000 },
- { 0x9900, 0x2a24, 0x3000 },
- { 0x9900, 0x2a22, 0x2000 },
- { 0x1900, 0x2a21, 0x0000 },
- { 0x1900, 0x2a23, 0x0000 },
- { 0x9900, 0x2a26, 0x2000 },
- { 0x1900, 0x2a25, 0x0000 },
- { 0x1900, 0x2a27, 0x0000 },
- { 0x9900, 0x2a2c, 0x3000 },
- { 0x9900, 0x2a2a, 0x2000 },
- { 0x1900, 0x2a29, 0x0000 },
- { 0x1900, 0x2a2b, 0x0000 },
- { 0x9900, 0x2a2e, 0x2000 },
- { 0x1900, 0x2a2d, 0x0000 },
- { 0x1900, 0x2a2f, 0x0000 },
- { 0x9900, 0x2a38, 0x4000 },
- { 0x9900, 0x2a34, 0x3000 },
- { 0x9900, 0x2a32, 0x2000 },
- { 0x1900, 0x2a31, 0x0000 },
- { 0x1900, 0x2a33, 0x0000 },
- { 0x9900, 0x2a36, 0x2000 },
- { 0x1900, 0x2a35, 0x0000 },
- { 0x1900, 0x2a37, 0x0000 },
- { 0x9900, 0x2a3c, 0x3000 },
- { 0x9900, 0x2a3a, 0x2000 },
- { 0x1900, 0x2a39, 0x0000 },
- { 0x1900, 0x2a3b, 0x0000 },
- { 0x9900, 0x2a3e, 0x2000 },
- { 0x1900, 0x2a3d, 0x0000 },
- { 0x1900, 0x2a3f, 0x0000 },
- { 0x9900, 0x2a50, 0x5000 },
- { 0x9900, 0x2a48, 0x4000 },
- { 0x9900, 0x2a44, 0x3000 },
- { 0x9900, 0x2a42, 0x2000 },
- { 0x1900, 0x2a41, 0x0000 },
- { 0x1900, 0x2a43, 0x0000 },
- { 0x9900, 0x2a46, 0x2000 },
- { 0x1900, 0x2a45, 0x0000 },
- { 0x1900, 0x2a47, 0x0000 },
- { 0x9900, 0x2a4c, 0x3000 },
- { 0x9900, 0x2a4a, 0x2000 },
- { 0x1900, 0x2a49, 0x0000 },
- { 0x1900, 0x2a4b, 0x0000 },
- { 0x9900, 0x2a4e, 0x2000 },
- { 0x1900, 0x2a4d, 0x0000 },
- { 0x1900, 0x2a4f, 0x0000 },
- { 0x9900, 0x2a58, 0x4000 },
- { 0x9900, 0x2a54, 0x3000 },
- { 0x9900, 0x2a52, 0x2000 },
- { 0x1900, 0x2a51, 0x0000 },
- { 0x1900, 0x2a53, 0x0000 },
- { 0x9900, 0x2a56, 0x2000 },
- { 0x1900, 0x2a55, 0x0000 },
- { 0x1900, 0x2a57, 0x0000 },
- { 0x9900, 0x2a5c, 0x3000 },
- { 0x9900, 0x2a5a, 0x2000 },
- { 0x1900, 0x2a59, 0x0000 },
- { 0x1900, 0x2a5b, 0x0000 },
- { 0x9900, 0x2a5e, 0x2000 },
- { 0x1900, 0x2a5d, 0x0000 },
- { 0x1900, 0x2a5f, 0x0000 },
- { 0x9900, 0x2a80, 0x6000 },
- { 0x9900, 0x2a70, 0x5000 },
- { 0x9900, 0x2a68, 0x4000 },
- { 0x9900, 0x2a64, 0x3000 },
- { 0x9900, 0x2a62, 0x2000 },
- { 0x1900, 0x2a61, 0x0000 },
- { 0x1900, 0x2a63, 0x0000 },
- { 0x9900, 0x2a66, 0x2000 },
- { 0x1900, 0x2a65, 0x0000 },
- { 0x1900, 0x2a67, 0x0000 },
- { 0x9900, 0x2a6c, 0x3000 },
- { 0x9900, 0x2a6a, 0x2000 },
- { 0x1900, 0x2a69, 0x0000 },
- { 0x1900, 0x2a6b, 0x0000 },
- { 0x9900, 0x2a6e, 0x2000 },
- { 0x1900, 0x2a6d, 0x0000 },
- { 0x1900, 0x2a6f, 0x0000 },
- { 0x9900, 0x2a78, 0x4000 },
- { 0x9900, 0x2a74, 0x3000 },
- { 0x9900, 0x2a72, 0x2000 },
- { 0x1900, 0x2a71, 0x0000 },
- { 0x1900, 0x2a73, 0x0000 },
- { 0x9900, 0x2a76, 0x2000 },
- { 0x1900, 0x2a75, 0x0000 },
- { 0x1900, 0x2a77, 0x0000 },
- { 0x9900, 0x2a7c, 0x3000 },
- { 0x9900, 0x2a7a, 0x2000 },
- { 0x1900, 0x2a79, 0x0000 },
- { 0x1900, 0x2a7b, 0x0000 },
- { 0x9900, 0x2a7e, 0x2000 },
- { 0x1900, 0x2a7d, 0x0000 },
- { 0x1900, 0x2a7f, 0x0000 },
- { 0x9900, 0x2a90, 0x5000 },
- { 0x9900, 0x2a88, 0x4000 },
- { 0x9900, 0x2a84, 0x3000 },
- { 0x9900, 0x2a82, 0x2000 },
- { 0x1900, 0x2a81, 0x0000 },
- { 0x1900, 0x2a83, 0x0000 },
- { 0x9900, 0x2a86, 0x2000 },
- { 0x1900, 0x2a85, 0x0000 },
- { 0x1900, 0x2a87, 0x0000 },
- { 0x9900, 0x2a8c, 0x3000 },
- { 0x9900, 0x2a8a, 0x2000 },
- { 0x1900, 0x2a89, 0x0000 },
- { 0x1900, 0x2a8b, 0x0000 },
- { 0x9900, 0x2a8e, 0x2000 },
- { 0x1900, 0x2a8d, 0x0000 },
- { 0x1900, 0x2a8f, 0x0000 },
- { 0x9900, 0x2a98, 0x4000 },
- { 0x9900, 0x2a94, 0x3000 },
- { 0x9900, 0x2a92, 0x2000 },
- { 0x1900, 0x2a91, 0x0000 },
- { 0x1900, 0x2a93, 0x0000 },
- { 0x9900, 0x2a96, 0x2000 },
- { 0x1900, 0x2a95, 0x0000 },
- { 0x1900, 0x2a97, 0x0000 },
- { 0x9900, 0x2a9c, 0x3000 },
- { 0x9900, 0x2a9a, 0x2000 },
- { 0x1900, 0x2a99, 0x0000 },
- { 0x1900, 0x2a9b, 0x0000 },
- { 0x9900, 0x2a9e, 0x2000 },
- { 0x1900, 0x2a9d, 0x0000 },
- { 0x1900, 0x2a9f, 0x0000 },
- { 0x9a00, 0x2e92, 0x8000 },
- { 0x9900, 0x2ae0, 0x7000 },
- { 0x9900, 0x2ac0, 0x6000 },
- { 0x9900, 0x2ab0, 0x5000 },
- { 0x9900, 0x2aa8, 0x4000 },
- { 0x9900, 0x2aa4, 0x3000 },
- { 0x9900, 0x2aa2, 0x2000 },
- { 0x1900, 0x2aa1, 0x0000 },
- { 0x1900, 0x2aa3, 0x0000 },
- { 0x9900, 0x2aa6, 0x2000 },
- { 0x1900, 0x2aa5, 0x0000 },
- { 0x1900, 0x2aa7, 0x0000 },
- { 0x9900, 0x2aac, 0x3000 },
- { 0x9900, 0x2aaa, 0x2000 },
- { 0x1900, 0x2aa9, 0x0000 },
- { 0x1900, 0x2aab, 0x0000 },
- { 0x9900, 0x2aae, 0x2000 },
- { 0x1900, 0x2aad, 0x0000 },
- { 0x1900, 0x2aaf, 0x0000 },
- { 0x9900, 0x2ab8, 0x4000 },
- { 0x9900, 0x2ab4, 0x3000 },
- { 0x9900, 0x2ab2, 0x2000 },
- { 0x1900, 0x2ab1, 0x0000 },
- { 0x1900, 0x2ab3, 0x0000 },
- { 0x9900, 0x2ab6, 0x2000 },
- { 0x1900, 0x2ab5, 0x0000 },
- { 0x1900, 0x2ab7, 0x0000 },
- { 0x9900, 0x2abc, 0x3000 },
- { 0x9900, 0x2aba, 0x2000 },
- { 0x1900, 0x2ab9, 0x0000 },
- { 0x1900, 0x2abb, 0x0000 },
- { 0x9900, 0x2abe, 0x2000 },
- { 0x1900, 0x2abd, 0x0000 },
- { 0x1900, 0x2abf, 0x0000 },
- { 0x9900, 0x2ad0, 0x5000 },
- { 0x9900, 0x2ac8, 0x4000 },
- { 0x9900, 0x2ac4, 0x3000 },
- { 0x9900, 0x2ac2, 0x2000 },
- { 0x1900, 0x2ac1, 0x0000 },
- { 0x1900, 0x2ac3, 0x0000 },
- { 0x9900, 0x2ac6, 0x2000 },
- { 0x1900, 0x2ac5, 0x0000 },
- { 0x1900, 0x2ac7, 0x0000 },
- { 0x9900, 0x2acc, 0x3000 },
- { 0x9900, 0x2aca, 0x2000 },
- { 0x1900, 0x2ac9, 0x0000 },
- { 0x1900, 0x2acb, 0x0000 },
- { 0x9900, 0x2ace, 0x2000 },
- { 0x1900, 0x2acd, 0x0000 },
- { 0x1900, 0x2acf, 0x0000 },
- { 0x9900, 0x2ad8, 0x4000 },
- { 0x9900, 0x2ad4, 0x3000 },
- { 0x9900, 0x2ad2, 0x2000 },
- { 0x1900, 0x2ad1, 0x0000 },
- { 0x1900, 0x2ad3, 0x0000 },
- { 0x9900, 0x2ad6, 0x2000 },
- { 0x1900, 0x2ad5, 0x0000 },
- { 0x1900, 0x2ad7, 0x0000 },
- { 0x9900, 0x2adc, 0x3000 },
- { 0x9900, 0x2ada, 0x2000 },
- { 0x1900, 0x2ad9, 0x0000 },
- { 0x1900, 0x2adb, 0x0000 },
- { 0x9900, 0x2ade, 0x2000 },
- { 0x1900, 0x2add, 0x0000 },
- { 0x1900, 0x2adf, 0x0000 },
- { 0x9a00, 0x2b00, 0x6000 },
- { 0x9900, 0x2af0, 0x5000 },
- { 0x9900, 0x2ae8, 0x4000 },
- { 0x9900, 0x2ae4, 0x3000 },
- { 0x9900, 0x2ae2, 0x2000 },
- { 0x1900, 0x2ae1, 0x0000 },
- { 0x1900, 0x2ae3, 0x0000 },
- { 0x9900, 0x2ae6, 0x2000 },
- { 0x1900, 0x2ae5, 0x0000 },
- { 0x1900, 0x2ae7, 0x0000 },
- { 0x9900, 0x2aec, 0x3000 },
- { 0x9900, 0x2aea, 0x2000 },
- { 0x1900, 0x2ae9, 0x0000 },
- { 0x1900, 0x2aeb, 0x0000 },
- { 0x9900, 0x2aee, 0x2000 },
- { 0x1900, 0x2aed, 0x0000 },
- { 0x1900, 0x2aef, 0x0000 },
- { 0x9900, 0x2af8, 0x4000 },
- { 0x9900, 0x2af4, 0x3000 },
- { 0x9900, 0x2af2, 0x2000 },
- { 0x1900, 0x2af1, 0x0000 },
- { 0x1900, 0x2af3, 0x0000 },
- { 0x9900, 0x2af6, 0x2000 },
- { 0x1900, 0x2af5, 0x0000 },
- { 0x1900, 0x2af7, 0x0000 },
- { 0x9900, 0x2afc, 0x3000 },
- { 0x9900, 0x2afa, 0x2000 },
- { 0x1900, 0x2af9, 0x0000 },
- { 0x1900, 0x2afb, 0x0000 },
- { 0x9900, 0x2afe, 0x2000 },
- { 0x1900, 0x2afd, 0x0000 },
- { 0x1900, 0x2aff, 0x0000 },
- { 0x9a00, 0x2e82, 0x5000 },
- { 0x9a00, 0x2b08, 0x4000 },
- { 0x9a00, 0x2b04, 0x3000 },
- { 0x9a00, 0x2b02, 0x2000 },
- { 0x1a00, 0x2b01, 0x0000 },
- { 0x1a00, 0x2b03, 0x0000 },
- { 0x9a00, 0x2b06, 0x2000 },
- { 0x1a00, 0x2b05, 0x0000 },
- { 0x1a00, 0x2b07, 0x0000 },
- { 0x9a00, 0x2b0c, 0x3000 },
- { 0x9a00, 0x2b0a, 0x2000 },
- { 0x1a00, 0x2b09, 0x0000 },
- { 0x1a00, 0x2b0b, 0x0000 },
- { 0x9a00, 0x2e80, 0x2000 },
- { 0x1a00, 0x2b0d, 0x0000 },
- { 0x1a00, 0x2e81, 0x0000 },
- { 0x9a00, 0x2e8a, 0x4000 },
- { 0x9a00, 0x2e86, 0x3000 },
- { 0x9a00, 0x2e84, 0x2000 },
- { 0x1a00, 0x2e83, 0x0000 },
- { 0x1a00, 0x2e85, 0x0000 },
- { 0x9a00, 0x2e88, 0x2000 },
- { 0x1a00, 0x2e87, 0x0000 },
- { 0x1a00, 0x2e89, 0x0000 },
- { 0x9a00, 0x2e8e, 0x3000 },
- { 0x9a00, 0x2e8c, 0x2000 },
- { 0x1a00, 0x2e8b, 0x0000 },
- { 0x1a00, 0x2e8d, 0x0000 },
- { 0x9a00, 0x2e90, 0x2000 },
- { 0x1a00, 0x2e8f, 0x0000 },
- { 0x1a00, 0x2e91, 0x0000 },
- { 0x9a00, 0x2ed3, 0x7000 },
- { 0x9a00, 0x2eb3, 0x6000 },
- { 0x9a00, 0x2ea3, 0x5000 },
- { 0x9a00, 0x2e9b, 0x4000 },
- { 0x9a00, 0x2e96, 0x3000 },
- { 0x9a00, 0x2e94, 0x2000 },
- { 0x1a00, 0x2e93, 0x0000 },
- { 0x1a00, 0x2e95, 0x0000 },
- { 0x9a00, 0x2e98, 0x2000 },
- { 0x1a00, 0x2e97, 0x0000 },
- { 0x1a00, 0x2e99, 0x0000 },
- { 0x9a00, 0x2e9f, 0x3000 },
- { 0x9a00, 0x2e9d, 0x2000 },
- { 0x1a00, 0x2e9c, 0x0000 },
- { 0x1a00, 0x2e9e, 0x0000 },
- { 0x9a00, 0x2ea1, 0x2000 },
- { 0x1a00, 0x2ea0, 0x0000 },
- { 0x1a00, 0x2ea2, 0x0000 },
- { 0x9a00, 0x2eab, 0x4000 },
- { 0x9a00, 0x2ea7, 0x3000 },
- { 0x9a00, 0x2ea5, 0x2000 },
- { 0x1a00, 0x2ea4, 0x0000 },
- { 0x1a00, 0x2ea6, 0x0000 },
- { 0x9a00, 0x2ea9, 0x2000 },
- { 0x1a00, 0x2ea8, 0x0000 },
- { 0x1a00, 0x2eaa, 0x0000 },
- { 0x9a00, 0x2eaf, 0x3000 },
- { 0x9a00, 0x2ead, 0x2000 },
- { 0x1a00, 0x2eac, 0x0000 },
- { 0x1a00, 0x2eae, 0x0000 },
- { 0x9a00, 0x2eb1, 0x2000 },
- { 0x1a00, 0x2eb0, 0x0000 },
- { 0x1a00, 0x2eb2, 0x0000 },
- { 0x9a00, 0x2ec3, 0x5000 },
- { 0x9a00, 0x2ebb, 0x4000 },
- { 0x9a00, 0x2eb7, 0x3000 },
- { 0x9a00, 0x2eb5, 0x2000 },
- { 0x1a00, 0x2eb4, 0x0000 },
- { 0x1a00, 0x2eb6, 0x0000 },
- { 0x9a00, 0x2eb9, 0x2000 },
- { 0x1a00, 0x2eb8, 0x0000 },
- { 0x1a00, 0x2eba, 0x0000 },
- { 0x9a00, 0x2ebf, 0x3000 },
- { 0x9a00, 0x2ebd, 0x2000 },
- { 0x1a00, 0x2ebc, 0x0000 },
- { 0x1a00, 0x2ebe, 0x0000 },
- { 0x9a00, 0x2ec1, 0x2000 },
- { 0x1a00, 0x2ec0, 0x0000 },
- { 0x1a00, 0x2ec2, 0x0000 },
- { 0x9a00, 0x2ecb, 0x4000 },
- { 0x9a00, 0x2ec7, 0x3000 },
- { 0x9a00, 0x2ec5, 0x2000 },
- { 0x1a00, 0x2ec4, 0x0000 },
- { 0x1a00, 0x2ec6, 0x0000 },
- { 0x9a00, 0x2ec9, 0x2000 },
- { 0x1a00, 0x2ec8, 0x0000 },
- { 0x1a00, 0x2eca, 0x0000 },
- { 0x9a00, 0x2ecf, 0x3000 },
- { 0x9a00, 0x2ecd, 0x2000 },
- { 0x1a00, 0x2ecc, 0x0000 },
- { 0x1a00, 0x2ece, 0x0000 },
- { 0x9a00, 0x2ed1, 0x2000 },
- { 0x1a00, 0x2ed0, 0x0000 },
- { 0x1a00, 0x2ed2, 0x0000 },
- { 0x9a00, 0x2ef3, 0x6000 },
- { 0x9a00, 0x2ee3, 0x5000 },
- { 0x9a00, 0x2edb, 0x4000 },
- { 0x9a00, 0x2ed7, 0x3000 },
- { 0x9a00, 0x2ed5, 0x2000 },
- { 0x1a00, 0x2ed4, 0x0000 },
- { 0x1a00, 0x2ed6, 0x0000 },
- { 0x9a00, 0x2ed9, 0x2000 },
- { 0x1a00, 0x2ed8, 0x0000 },
- { 0x1a00, 0x2eda, 0x0000 },
- { 0x9a00, 0x2edf, 0x3000 },
- { 0x9a00, 0x2edd, 0x2000 },
- { 0x1a00, 0x2edc, 0x0000 },
- { 0x1a00, 0x2ede, 0x0000 },
- { 0x9a00, 0x2ee1, 0x2000 },
- { 0x1a00, 0x2ee0, 0x0000 },
- { 0x1a00, 0x2ee2, 0x0000 },
- { 0x9a00, 0x2eeb, 0x4000 },
- { 0x9a00, 0x2ee7, 0x3000 },
- { 0x9a00, 0x2ee5, 0x2000 },
- { 0x1a00, 0x2ee4, 0x0000 },
- { 0x1a00, 0x2ee6, 0x0000 },
- { 0x9a00, 0x2ee9, 0x2000 },
- { 0x1a00, 0x2ee8, 0x0000 },
- { 0x1a00, 0x2eea, 0x0000 },
- { 0x9a00, 0x2eef, 0x3000 },
- { 0x9a00, 0x2eed, 0x2000 },
- { 0x1a00, 0x2eec, 0x0000 },
- { 0x1a00, 0x2eee, 0x0000 },
- { 0x9a00, 0x2ef1, 0x2000 },
- { 0x1a00, 0x2ef0, 0x0000 },
- { 0x1a00, 0x2ef2, 0x0000 },
- { 0x9a00, 0x2f0f, 0x5000 },
- { 0x9a00, 0x2f07, 0x4000 },
- { 0x9a00, 0x2f03, 0x3000 },
- { 0x9a00, 0x2f01, 0x2000 },
- { 0x1a00, 0x2f00, 0x0000 },
- { 0x1a00, 0x2f02, 0x0000 },
- { 0x9a00, 0x2f05, 0x2000 },
- { 0x1a00, 0x2f04, 0x0000 },
- { 0x1a00, 0x2f06, 0x0000 },
- { 0x9a00, 0x2f0b, 0x3000 },
- { 0x9a00, 0x2f09, 0x2000 },
- { 0x1a00, 0x2f08, 0x0000 },
- { 0x1a00, 0x2f0a, 0x0000 },
- { 0x9a00, 0x2f0d, 0x2000 },
- { 0x1a00, 0x2f0c, 0x0000 },
- { 0x1a00, 0x2f0e, 0x0000 },
- { 0x9a00, 0x2f17, 0x4000 },
- { 0x9a00, 0x2f13, 0x3000 },
- { 0x9a00, 0x2f11, 0x2000 },
- { 0x1a00, 0x2f10, 0x0000 },
- { 0x1a00, 0x2f12, 0x0000 },
- { 0x9a00, 0x2f15, 0x2000 },
- { 0x1a00, 0x2f14, 0x0000 },
- { 0x1a00, 0x2f16, 0x0000 },
- { 0x9a00, 0x2f1b, 0x3000 },
- { 0x9a00, 0x2f19, 0x2000 },
- { 0x1a00, 0x2f18, 0x0000 },
- { 0x1a00, 0x2f1a, 0x0000 },
- { 0x9a00, 0x2f1d, 0x2000 },
- { 0x1a00, 0x2f1c, 0x0000 },
- { 0x1a00, 0x2f1e, 0x0000 },
- { 0x8701, 0x00f0, 0xd000 },
- { 0x8700, 0xa34d, 0xc000 },
- { 0x9a00, 0x3391, 0xb000 },
- { 0x8700, 0x3149, 0xa000 },
- { 0x9500, 0x303d, 0x9000 },
- { 0x9a00, 0x2f9f, 0x8000 },
- { 0x9a00, 0x2f5f, 0x7000 },
- { 0x9a00, 0x2f3f, 0x6000 },
- { 0x9a00, 0x2f2f, 0x5000 },
- { 0x9a00, 0x2f27, 0x4000 },
- { 0x9a00, 0x2f23, 0x3000 },
- { 0x9a00, 0x2f21, 0x2000 },
- { 0x1a00, 0x2f20, 0x0000 },
- { 0x1a00, 0x2f22, 0x0000 },
- { 0x9a00, 0x2f25, 0x2000 },
- { 0x1a00, 0x2f24, 0x0000 },
- { 0x1a00, 0x2f26, 0x0000 },
- { 0x9a00, 0x2f2b, 0x3000 },
- { 0x9a00, 0x2f29, 0x2000 },
- { 0x1a00, 0x2f28, 0x0000 },
- { 0x1a00, 0x2f2a, 0x0000 },
- { 0x9a00, 0x2f2d, 0x2000 },
- { 0x1a00, 0x2f2c, 0x0000 },
- { 0x1a00, 0x2f2e, 0x0000 },
- { 0x9a00, 0x2f37, 0x4000 },
- { 0x9a00, 0x2f33, 0x3000 },
- { 0x9a00, 0x2f31, 0x2000 },
- { 0x1a00, 0x2f30, 0x0000 },
- { 0x1a00, 0x2f32, 0x0000 },
- { 0x9a00, 0x2f35, 0x2000 },
- { 0x1a00, 0x2f34, 0x0000 },
- { 0x1a00, 0x2f36, 0x0000 },
- { 0x9a00, 0x2f3b, 0x3000 },
- { 0x9a00, 0x2f39, 0x2000 },
- { 0x1a00, 0x2f38, 0x0000 },
- { 0x1a00, 0x2f3a, 0x0000 },
- { 0x9a00, 0x2f3d, 0x2000 },
- { 0x1a00, 0x2f3c, 0x0000 },
- { 0x1a00, 0x2f3e, 0x0000 },
- { 0x9a00, 0x2f4f, 0x5000 },
- { 0x9a00, 0x2f47, 0x4000 },
- { 0x9a00, 0x2f43, 0x3000 },
- { 0x9a00, 0x2f41, 0x2000 },
- { 0x1a00, 0x2f40, 0x0000 },
- { 0x1a00, 0x2f42, 0x0000 },
- { 0x9a00, 0x2f45, 0x2000 },
- { 0x1a00, 0x2f44, 0x0000 },
- { 0x1a00, 0x2f46, 0x0000 },
- { 0x9a00, 0x2f4b, 0x3000 },
- { 0x9a00, 0x2f49, 0x2000 },
- { 0x1a00, 0x2f48, 0x0000 },
- { 0x1a00, 0x2f4a, 0x0000 },
- { 0x9a00, 0x2f4d, 0x2000 },
- { 0x1a00, 0x2f4c, 0x0000 },
- { 0x1a00, 0x2f4e, 0x0000 },
- { 0x9a00, 0x2f57, 0x4000 },
- { 0x9a00, 0x2f53, 0x3000 },
- { 0x9a00, 0x2f51, 0x2000 },
- { 0x1a00, 0x2f50, 0x0000 },
- { 0x1a00, 0x2f52, 0x0000 },
- { 0x9a00, 0x2f55, 0x2000 },
- { 0x1a00, 0x2f54, 0x0000 },
- { 0x1a00, 0x2f56, 0x0000 },
- { 0x9a00, 0x2f5b, 0x3000 },
- { 0x9a00, 0x2f59, 0x2000 },
- { 0x1a00, 0x2f58, 0x0000 },
- { 0x1a00, 0x2f5a, 0x0000 },
- { 0x9a00, 0x2f5d, 0x2000 },
- { 0x1a00, 0x2f5c, 0x0000 },
- { 0x1a00, 0x2f5e, 0x0000 },
- { 0x9a00, 0x2f7f, 0x6000 },
- { 0x9a00, 0x2f6f, 0x5000 },
- { 0x9a00, 0x2f67, 0x4000 },
- { 0x9a00, 0x2f63, 0x3000 },
- { 0x9a00, 0x2f61, 0x2000 },
- { 0x1a00, 0x2f60, 0x0000 },
- { 0x1a00, 0x2f62, 0x0000 },
- { 0x9a00, 0x2f65, 0x2000 },
- { 0x1a00, 0x2f64, 0x0000 },
- { 0x1a00, 0x2f66, 0x0000 },
- { 0x9a00, 0x2f6b, 0x3000 },
- { 0x9a00, 0x2f69, 0x2000 },
- { 0x1a00, 0x2f68, 0x0000 },
- { 0x1a00, 0x2f6a, 0x0000 },
- { 0x9a00, 0x2f6d, 0x2000 },
- { 0x1a00, 0x2f6c, 0x0000 },
- { 0x1a00, 0x2f6e, 0x0000 },
- { 0x9a00, 0x2f77, 0x4000 },
- { 0x9a00, 0x2f73, 0x3000 },
- { 0x9a00, 0x2f71, 0x2000 },
- { 0x1a00, 0x2f70, 0x0000 },
- { 0x1a00, 0x2f72, 0x0000 },
- { 0x9a00, 0x2f75, 0x2000 },
- { 0x1a00, 0x2f74, 0x0000 },
- { 0x1a00, 0x2f76, 0x0000 },
- { 0x9a00, 0x2f7b, 0x3000 },
- { 0x9a00, 0x2f79, 0x2000 },
- { 0x1a00, 0x2f78, 0x0000 },
- { 0x1a00, 0x2f7a, 0x0000 },
- { 0x9a00, 0x2f7d, 0x2000 },
- { 0x1a00, 0x2f7c, 0x0000 },
- { 0x1a00, 0x2f7e, 0x0000 },
- { 0x9a00, 0x2f8f, 0x5000 },
- { 0x9a00, 0x2f87, 0x4000 },
- { 0x9a00, 0x2f83, 0x3000 },
- { 0x9a00, 0x2f81, 0x2000 },
- { 0x1a00, 0x2f80, 0x0000 },
- { 0x1a00, 0x2f82, 0x0000 },
- { 0x9a00, 0x2f85, 0x2000 },
- { 0x1a00, 0x2f84, 0x0000 },
- { 0x1a00, 0x2f86, 0x0000 },
- { 0x9a00, 0x2f8b, 0x3000 },
- { 0x9a00, 0x2f89, 0x2000 },
- { 0x1a00, 0x2f88, 0x0000 },
- { 0x1a00, 0x2f8a, 0x0000 },
- { 0x9a00, 0x2f8d, 0x2000 },
- { 0x1a00, 0x2f8c, 0x0000 },
- { 0x1a00, 0x2f8e, 0x0000 },
- { 0x9a00, 0x2f97, 0x4000 },
- { 0x9a00, 0x2f93, 0x3000 },
- { 0x9a00, 0x2f91, 0x2000 },
- { 0x1a00, 0x2f90, 0x0000 },
- { 0x1a00, 0x2f92, 0x0000 },
- { 0x9a00, 0x2f95, 0x2000 },
- { 0x1a00, 0x2f94, 0x0000 },
- { 0x1a00, 0x2f96, 0x0000 },
- { 0x9a00, 0x2f9b, 0x3000 },
- { 0x9a00, 0x2f99, 0x2000 },
- { 0x1a00, 0x2f98, 0x0000 },
- { 0x1a00, 0x2f9a, 0x0000 },
- { 0x9a00, 0x2f9d, 0x2000 },
- { 0x1a00, 0x2f9c, 0x0000 },
- { 0x1a00, 0x2f9e, 0x0000 },
- { 0x9a00, 0x2ff9, 0x7000 },
- { 0x9a00, 0x2fbf, 0x6000 },
- { 0x9a00, 0x2faf, 0x5000 },
- { 0x9a00, 0x2fa7, 0x4000 },
- { 0x9a00, 0x2fa3, 0x3000 },
- { 0x9a00, 0x2fa1, 0x2000 },
- { 0x1a00, 0x2fa0, 0x0000 },
- { 0x1a00, 0x2fa2, 0x0000 },
- { 0x9a00, 0x2fa5, 0x2000 },
- { 0x1a00, 0x2fa4, 0x0000 },
- { 0x1a00, 0x2fa6, 0x0000 },
- { 0x9a00, 0x2fab, 0x3000 },
- { 0x9a00, 0x2fa9, 0x2000 },
- { 0x1a00, 0x2fa8, 0x0000 },
- { 0x1a00, 0x2faa, 0x0000 },
- { 0x9a00, 0x2fad, 0x2000 },
- { 0x1a00, 0x2fac, 0x0000 },
- { 0x1a00, 0x2fae, 0x0000 },
- { 0x9a00, 0x2fb7, 0x4000 },
- { 0x9a00, 0x2fb3, 0x3000 },
- { 0x9a00, 0x2fb1, 0x2000 },
- { 0x1a00, 0x2fb0, 0x0000 },
- { 0x1a00, 0x2fb2, 0x0000 },
- { 0x9a00, 0x2fb5, 0x2000 },
- { 0x1a00, 0x2fb4, 0x0000 },
- { 0x1a00, 0x2fb6, 0x0000 },
- { 0x9a00, 0x2fbb, 0x3000 },
- { 0x9a00, 0x2fb9, 0x2000 },
- { 0x1a00, 0x2fb8, 0x0000 },
- { 0x1a00, 0x2fba, 0x0000 },
- { 0x9a00, 0x2fbd, 0x2000 },
- { 0x1a00, 0x2fbc, 0x0000 },
- { 0x1a00, 0x2fbe, 0x0000 },
- { 0x9a00, 0x2fcf, 0x5000 },
- { 0x9a00, 0x2fc7, 0x4000 },
- { 0x9a00, 0x2fc3, 0x3000 },
- { 0x9a00, 0x2fc1, 0x2000 },
- { 0x1a00, 0x2fc0, 0x0000 },
- { 0x1a00, 0x2fc2, 0x0000 },
- { 0x9a00, 0x2fc5, 0x2000 },
- { 0x1a00, 0x2fc4, 0x0000 },
- { 0x1a00, 0x2fc6, 0x0000 },
- { 0x9a00, 0x2fcb, 0x3000 },
- { 0x9a00, 0x2fc9, 0x2000 },
- { 0x1a00, 0x2fc8, 0x0000 },
- { 0x1a00, 0x2fca, 0x0000 },
- { 0x9a00, 0x2fcd, 0x2000 },
- { 0x1a00, 0x2fcc, 0x0000 },
- { 0x1a00, 0x2fce, 0x0000 },
- { 0x9a00, 0x2ff1, 0x4000 },
- { 0x9a00, 0x2fd3, 0x3000 },
- { 0x9a00, 0x2fd1, 0x2000 },
- { 0x1a00, 0x2fd0, 0x0000 },
- { 0x1a00, 0x2fd2, 0x0000 },
- { 0x9a00, 0x2fd5, 0x2000 },
- { 0x1a00, 0x2fd4, 0x0000 },
- { 0x1a00, 0x2ff0, 0x0000 },
- { 0x9a00, 0x2ff5, 0x3000 },
- { 0x9a00, 0x2ff3, 0x2000 },
- { 0x1a00, 0x2ff2, 0x0000 },
- { 0x1a00, 0x2ff4, 0x0000 },
- { 0x9a00, 0x2ff7, 0x2000 },
- { 0x1a00, 0x2ff6, 0x0000 },
- { 0x1a00, 0x2ff8, 0x0000 },
- { 0x9600, 0x301d, 0x6000 },
- { 0x9200, 0x300d, 0x5000 },
- { 0x8600, 0x3005, 0x4000 },
- { 0x9500, 0x3001, 0x3000 },
- { 0x9a00, 0x2ffb, 0x2000 },
- { 0x1a00, 0x2ffa, 0x0000 },
- { 0x1d00, 0x3000, 0x0000 },
- { 0x9500, 0x3003, 0x2000 },
- { 0x1500, 0x3002, 0x0000 },
- { 0x1a00, 0x3004, 0x0000 },
- { 0x9200, 0x3009, 0x3000 },
- { 0x8e00, 0x3007, 0x2000 },
- { 0x0700, 0x3006, 0x0000 },
- { 0x1600, 0x3008, 0x0000 },
- { 0x9200, 0x300b, 0x2000 },
- { 0x1600, 0x300a, 0x0000 },
- { 0x1600, 0x300c, 0x0000 },
- { 0x9200, 0x3015, 0x4000 },
- { 0x9200, 0x3011, 0x3000 },
- { 0x9200, 0x300f, 0x2000 },
- { 0x1600, 0x300e, 0x0000 },
- { 0x1600, 0x3010, 0x0000 },
- { 0x9a00, 0x3013, 0x2000 },
- { 0x1a00, 0x3012, 0x0000 },
- { 0x1600, 0x3014, 0x0000 },
- { 0x9200, 0x3019, 0x3000 },
- { 0x9200, 0x3017, 0x2000 },
- { 0x1600, 0x3016, 0x0000 },
- { 0x1600, 0x3018, 0x0000 },
- { 0x9200, 0x301b, 0x2000 },
- { 0x1600, 0x301a, 0x0000 },
- { 0x1100, 0x301c, 0x0000 },
- { 0x8c00, 0x302d, 0x5000 },
- { 0x8e00, 0x3025, 0x4000 },
- { 0x8e00, 0x3021, 0x3000 },
- { 0x9200, 0x301f, 0x2000 },
- { 0x1200, 0x301e, 0x0000 },
- { 0x1a00, 0x3020, 0x0000 },
- { 0x8e00, 0x3023, 0x2000 },
- { 0x0e00, 0x3022, 0x0000 },
- { 0x0e00, 0x3024, 0x0000 },
- { 0x8e00, 0x3029, 0x3000 },
- { 0x8e00, 0x3027, 0x2000 },
- { 0x0e00, 0x3026, 0x0000 },
- { 0x0e00, 0x3028, 0x0000 },
- { 0x8c00, 0x302b, 0x2000 },
- { 0x0c00, 0x302a, 0x0000 },
- { 0x0c00, 0x302c, 0x0000 },
- { 0x8600, 0x3035, 0x4000 },
- { 0x8600, 0x3031, 0x3000 },
- { 0x8c00, 0x302f, 0x2000 },
- { 0x0c00, 0x302e, 0x0000 },
- { 0x1100, 0x3030, 0x0000 },
- { 0x8600, 0x3033, 0x2000 },
- { 0x0600, 0x3032, 0x0000 },
- { 0x0600, 0x3034, 0x0000 },
- { 0x8e00, 0x3039, 0x3000 },
- { 0x9a00, 0x3037, 0x2000 },
- { 0x1a00, 0x3036, 0x0000 },
- { 0x0e00, 0x3038, 0x0000 },
- { 0x8600, 0x303b, 0x2000 },
- { 0x0e00, 0x303a, 0x0000 },
- { 0x0700, 0x303c, 0x0000 },
- { 0x8700, 0x30c0, 0x8000 },
- { 0x8700, 0x307e, 0x7000 },
- { 0x8700, 0x305e, 0x6000 },
- { 0x8700, 0x304e, 0x5000 },
- { 0x8700, 0x3046, 0x4000 },
- { 0x8700, 0x3042, 0x3000 },
- { 0x9a00, 0x303f, 0x2000 },
- { 0x1a00, 0x303e, 0x0000 },
- { 0x0700, 0x3041, 0x0000 },
- { 0x8700, 0x3044, 0x2000 },
- { 0x0700, 0x3043, 0x0000 },
- { 0x0700, 0x3045, 0x0000 },
- { 0x8700, 0x304a, 0x3000 },
- { 0x8700, 0x3048, 0x2000 },
- { 0x0700, 0x3047, 0x0000 },
- { 0x0700, 0x3049, 0x0000 },
- { 0x8700, 0x304c, 0x2000 },
- { 0x0700, 0x304b, 0x0000 },
- { 0x0700, 0x304d, 0x0000 },
- { 0x8700, 0x3056, 0x4000 },
- { 0x8700, 0x3052, 0x3000 },
- { 0x8700, 0x3050, 0x2000 },
- { 0x0700, 0x304f, 0x0000 },
- { 0x0700, 0x3051, 0x0000 },
- { 0x8700, 0x3054, 0x2000 },
- { 0x0700, 0x3053, 0x0000 },
- { 0x0700, 0x3055, 0x0000 },
- { 0x8700, 0x305a, 0x3000 },
- { 0x8700, 0x3058, 0x2000 },
- { 0x0700, 0x3057, 0x0000 },
- { 0x0700, 0x3059, 0x0000 },
- { 0x8700, 0x305c, 0x2000 },
- { 0x0700, 0x305b, 0x0000 },
- { 0x0700, 0x305d, 0x0000 },
- { 0x8700, 0x306e, 0x5000 },
- { 0x8700, 0x3066, 0x4000 },
- { 0x8700, 0x3062, 0x3000 },
- { 0x8700, 0x3060, 0x2000 },
- { 0x0700, 0x305f, 0x0000 },
- { 0x0700, 0x3061, 0x0000 },
- { 0x8700, 0x3064, 0x2000 },
- { 0x0700, 0x3063, 0x0000 },
- { 0x0700, 0x3065, 0x0000 },
- { 0x8700, 0x306a, 0x3000 },
- { 0x8700, 0x3068, 0x2000 },
- { 0x0700, 0x3067, 0x0000 },
- { 0x0700, 0x3069, 0x0000 },
- { 0x8700, 0x306c, 0x2000 },
- { 0x0700, 0x306b, 0x0000 },
- { 0x0700, 0x306d, 0x0000 },
- { 0x8700, 0x3076, 0x4000 },
- { 0x8700, 0x3072, 0x3000 },
- { 0x8700, 0x3070, 0x2000 },
- { 0x0700, 0x306f, 0x0000 },
- { 0x0700, 0x3071, 0x0000 },
- { 0x8700, 0x3074, 0x2000 },
- { 0x0700, 0x3073, 0x0000 },
- { 0x0700, 0x3075, 0x0000 },
- { 0x8700, 0x307a, 0x3000 },
- { 0x8700, 0x3078, 0x2000 },
- { 0x0700, 0x3077, 0x0000 },
- { 0x0700, 0x3079, 0x0000 },
- { 0x8700, 0x307c, 0x2000 },
- { 0x0700, 0x307b, 0x0000 },
- { 0x0700, 0x307d, 0x0000 },
- { 0x9100, 0x30a0, 0x6000 },
- { 0x8700, 0x308e, 0x5000 },
- { 0x8700, 0x3086, 0x4000 },
- { 0x8700, 0x3082, 0x3000 },
- { 0x8700, 0x3080, 0x2000 },
- { 0x0700, 0x307f, 0x0000 },
- { 0x0700, 0x3081, 0x0000 },
- { 0x8700, 0x3084, 0x2000 },
- { 0x0700, 0x3083, 0x0000 },
- { 0x0700, 0x3085, 0x0000 },
- { 0x8700, 0x308a, 0x3000 },
- { 0x8700, 0x3088, 0x2000 },
- { 0x0700, 0x3087, 0x0000 },
- { 0x0700, 0x3089, 0x0000 },
- { 0x8700, 0x308c, 0x2000 },
- { 0x0700, 0x308b, 0x0000 },
- { 0x0700, 0x308d, 0x0000 },
- { 0x8700, 0x3096, 0x4000 },
- { 0x8700, 0x3092, 0x3000 },
- { 0x8700, 0x3090, 0x2000 },
- { 0x0700, 0x308f, 0x0000 },
- { 0x0700, 0x3091, 0x0000 },
- { 0x8700, 0x3094, 0x2000 },
- { 0x0700, 0x3093, 0x0000 },
- { 0x0700, 0x3095, 0x0000 },
- { 0x9800, 0x309c, 0x3000 },
- { 0x8c00, 0x309a, 0x2000 },
- { 0x0c00, 0x3099, 0x0000 },
- { 0x1800, 0x309b, 0x0000 },
- { 0x8600, 0x309e, 0x2000 },
- { 0x0600, 0x309d, 0x0000 },
- { 0x0700, 0x309f, 0x0000 },
- { 0x8700, 0x30b0, 0x5000 },
- { 0x8700, 0x30a8, 0x4000 },
- { 0x8700, 0x30a4, 0x3000 },
- { 0x8700, 0x30a2, 0x2000 },
- { 0x0700, 0x30a1, 0x0000 },
- { 0x0700, 0x30a3, 0x0000 },
- { 0x8700, 0x30a6, 0x2000 },
- { 0x0700, 0x30a5, 0x0000 },
- { 0x0700, 0x30a7, 0x0000 },
- { 0x8700, 0x30ac, 0x3000 },
- { 0x8700, 0x30aa, 0x2000 },
- { 0x0700, 0x30a9, 0x0000 },
- { 0x0700, 0x30ab, 0x0000 },
- { 0x8700, 0x30ae, 0x2000 },
- { 0x0700, 0x30ad, 0x0000 },
- { 0x0700, 0x30af, 0x0000 },
- { 0x8700, 0x30b8, 0x4000 },
- { 0x8700, 0x30b4, 0x3000 },
- { 0x8700, 0x30b2, 0x2000 },
- { 0x0700, 0x30b1, 0x0000 },
- { 0x0700, 0x30b3, 0x0000 },
- { 0x8700, 0x30b6, 0x2000 },
- { 0x0700, 0x30b5, 0x0000 },
- { 0x0700, 0x30b7, 0x0000 },
- { 0x8700, 0x30bc, 0x3000 },
- { 0x8700, 0x30ba, 0x2000 },
- { 0x0700, 0x30b9, 0x0000 },
- { 0x0700, 0x30bb, 0x0000 },
- { 0x8700, 0x30be, 0x2000 },
- { 0x0700, 0x30bd, 0x0000 },
- { 0x0700, 0x30bf, 0x0000 },
- { 0x8700, 0x3105, 0x7000 },
- { 0x8700, 0x30e0, 0x6000 },
- { 0x8700, 0x30d0, 0x5000 },
- { 0x8700, 0x30c8, 0x4000 },
- { 0x8700, 0x30c4, 0x3000 },
- { 0x8700, 0x30c2, 0x2000 },
- { 0x0700, 0x30c1, 0x0000 },
- { 0x0700, 0x30c3, 0x0000 },
- { 0x8700, 0x30c6, 0x2000 },
- { 0x0700, 0x30c5, 0x0000 },
- { 0x0700, 0x30c7, 0x0000 },
- { 0x8700, 0x30cc, 0x3000 },
- { 0x8700, 0x30ca, 0x2000 },
- { 0x0700, 0x30c9, 0x0000 },
- { 0x0700, 0x30cb, 0x0000 },
- { 0x8700, 0x30ce, 0x2000 },
- { 0x0700, 0x30cd, 0x0000 },
- { 0x0700, 0x30cf, 0x0000 },
- { 0x8700, 0x30d8, 0x4000 },
- { 0x8700, 0x30d4, 0x3000 },
- { 0x8700, 0x30d2, 0x2000 },
- { 0x0700, 0x30d1, 0x0000 },
- { 0x0700, 0x30d3, 0x0000 },
- { 0x8700, 0x30d6, 0x2000 },
- { 0x0700, 0x30d5, 0x0000 },
- { 0x0700, 0x30d7, 0x0000 },
- { 0x8700, 0x30dc, 0x3000 },
- { 0x8700, 0x30da, 0x2000 },
- { 0x0700, 0x30d9, 0x0000 },
- { 0x0700, 0x30db, 0x0000 },
- { 0x8700, 0x30de, 0x2000 },
- { 0x0700, 0x30dd, 0x0000 },
- { 0x0700, 0x30df, 0x0000 },
- { 0x8700, 0x30f0, 0x5000 },
- { 0x8700, 0x30e8, 0x4000 },
- { 0x8700, 0x30e4, 0x3000 },
- { 0x8700, 0x30e2, 0x2000 },
- { 0x0700, 0x30e1, 0x0000 },
- { 0x0700, 0x30e3, 0x0000 },
- { 0x8700, 0x30e6, 0x2000 },
- { 0x0700, 0x30e5, 0x0000 },
- { 0x0700, 0x30e7, 0x0000 },
- { 0x8700, 0x30ec, 0x3000 },
- { 0x8700, 0x30ea, 0x2000 },
- { 0x0700, 0x30e9, 0x0000 },
- { 0x0700, 0x30eb, 0x0000 },
- { 0x8700, 0x30ee, 0x2000 },
- { 0x0700, 0x30ed, 0x0000 },
- { 0x0700, 0x30ef, 0x0000 },
- { 0x8700, 0x30f8, 0x4000 },
- { 0x8700, 0x30f4, 0x3000 },
- { 0x8700, 0x30f2, 0x2000 },
- { 0x0700, 0x30f1, 0x0000 },
- { 0x0700, 0x30f3, 0x0000 },
- { 0x8700, 0x30f6, 0x2000 },
- { 0x0700, 0x30f5, 0x0000 },
- { 0x0700, 0x30f7, 0x0000 },
- { 0x8600, 0x30fc, 0x3000 },
- { 0x8700, 0x30fa, 0x2000 },
- { 0x0700, 0x30f9, 0x0000 },
- { 0x1000, 0x30fb, 0x0000 },
- { 0x8600, 0x30fe, 0x2000 },
- { 0x0600, 0x30fd, 0x0000 },
- { 0x0700, 0x30ff, 0x0000 },
- { 0x8700, 0x3125, 0x6000 },
- { 0x8700, 0x3115, 0x5000 },
- { 0x8700, 0x310d, 0x4000 },
- { 0x8700, 0x3109, 0x3000 },
- { 0x8700, 0x3107, 0x2000 },
- { 0x0700, 0x3106, 0x0000 },
- { 0x0700, 0x3108, 0x0000 },
- { 0x8700, 0x310b, 0x2000 },
- { 0x0700, 0x310a, 0x0000 },
- { 0x0700, 0x310c, 0x0000 },
- { 0x8700, 0x3111, 0x3000 },
- { 0x8700, 0x310f, 0x2000 },
- { 0x0700, 0x310e, 0x0000 },
- { 0x0700, 0x3110, 0x0000 },
- { 0x8700, 0x3113, 0x2000 },
- { 0x0700, 0x3112, 0x0000 },
- { 0x0700, 0x3114, 0x0000 },
- { 0x8700, 0x311d, 0x4000 },
- { 0x8700, 0x3119, 0x3000 },
- { 0x8700, 0x3117, 0x2000 },
- { 0x0700, 0x3116, 0x0000 },
- { 0x0700, 0x3118, 0x0000 },
- { 0x8700, 0x311b, 0x2000 },
- { 0x0700, 0x311a, 0x0000 },
- { 0x0700, 0x311c, 0x0000 },
- { 0x8700, 0x3121, 0x3000 },
- { 0x8700, 0x311f, 0x2000 },
- { 0x0700, 0x311e, 0x0000 },
- { 0x0700, 0x3120, 0x0000 },
- { 0x8700, 0x3123, 0x2000 },
- { 0x0700, 0x3122, 0x0000 },
- { 0x0700, 0x3124, 0x0000 },
- { 0x8700, 0x3139, 0x5000 },
- { 0x8700, 0x3131, 0x4000 },
- { 0x8700, 0x3129, 0x3000 },
- { 0x8700, 0x3127, 0x2000 },
- { 0x0700, 0x3126, 0x0000 },
- { 0x0700, 0x3128, 0x0000 },
- { 0x8700, 0x312b, 0x2000 },
- { 0x0700, 0x312a, 0x0000 },
- { 0x0700, 0x312c, 0x0000 },
- { 0x8700, 0x3135, 0x3000 },
- { 0x8700, 0x3133, 0x2000 },
- { 0x0700, 0x3132, 0x0000 },
- { 0x0700, 0x3134, 0x0000 },
- { 0x8700, 0x3137, 0x2000 },
- { 0x0700, 0x3136, 0x0000 },
- { 0x0700, 0x3138, 0x0000 },
- { 0x8700, 0x3141, 0x4000 },
- { 0x8700, 0x313d, 0x3000 },
- { 0x8700, 0x313b, 0x2000 },
- { 0x0700, 0x313a, 0x0000 },
- { 0x0700, 0x313c, 0x0000 },
- { 0x8700, 0x313f, 0x2000 },
- { 0x0700, 0x313e, 0x0000 },
- { 0x0700, 0x3140, 0x0000 },
- { 0x8700, 0x3145, 0x3000 },
- { 0x8700, 0x3143, 0x2000 },
- { 0x0700, 0x3142, 0x0000 },
- { 0x0700, 0x3144, 0x0000 },
- { 0x8700, 0x3147, 0x2000 },
- { 0x0700, 0x3146, 0x0000 },
- { 0x0700, 0x3148, 0x0000 },
- { 0x9a00, 0x3290, 0x9000 },
- { 0x9a00, 0x3202, 0x8000 },
- { 0x8700, 0x3189, 0x7000 },
- { 0x8700, 0x3169, 0x6000 },
- { 0x8700, 0x3159, 0x5000 },
- { 0x8700, 0x3151, 0x4000 },
- { 0x8700, 0x314d, 0x3000 },
- { 0x8700, 0x314b, 0x2000 },
- { 0x0700, 0x314a, 0x0000 },
- { 0x0700, 0x314c, 0x0000 },
- { 0x8700, 0x314f, 0x2000 },
- { 0x0700, 0x314e, 0x0000 },
- { 0x0700, 0x3150, 0x0000 },
- { 0x8700, 0x3155, 0x3000 },
- { 0x8700, 0x3153, 0x2000 },
- { 0x0700, 0x3152, 0x0000 },
- { 0x0700, 0x3154, 0x0000 },
- { 0x8700, 0x3157, 0x2000 },
- { 0x0700, 0x3156, 0x0000 },
- { 0x0700, 0x3158, 0x0000 },
- { 0x8700, 0x3161, 0x4000 },
- { 0x8700, 0x315d, 0x3000 },
- { 0x8700, 0x315b, 0x2000 },
- { 0x0700, 0x315a, 0x0000 },
- { 0x0700, 0x315c, 0x0000 },
- { 0x8700, 0x315f, 0x2000 },
- { 0x0700, 0x315e, 0x0000 },
- { 0x0700, 0x3160, 0x0000 },
- { 0x8700, 0x3165, 0x3000 },
- { 0x8700, 0x3163, 0x2000 },
- { 0x0700, 0x3162, 0x0000 },
- { 0x0700, 0x3164, 0x0000 },
- { 0x8700, 0x3167, 0x2000 },
- { 0x0700, 0x3166, 0x0000 },
- { 0x0700, 0x3168, 0x0000 },
- { 0x8700, 0x3179, 0x5000 },
- { 0x8700, 0x3171, 0x4000 },
- { 0x8700, 0x316d, 0x3000 },
- { 0x8700, 0x316b, 0x2000 },
- { 0x0700, 0x316a, 0x0000 },
- { 0x0700, 0x316c, 0x0000 },
- { 0x8700, 0x316f, 0x2000 },
- { 0x0700, 0x316e, 0x0000 },
- { 0x0700, 0x3170, 0x0000 },
- { 0x8700, 0x3175, 0x3000 },
- { 0x8700, 0x3173, 0x2000 },
- { 0x0700, 0x3172, 0x0000 },
- { 0x0700, 0x3174, 0x0000 },
- { 0x8700, 0x3177, 0x2000 },
- { 0x0700, 0x3176, 0x0000 },
- { 0x0700, 0x3178, 0x0000 },
- { 0x8700, 0x3181, 0x4000 },
- { 0x8700, 0x317d, 0x3000 },
- { 0x8700, 0x317b, 0x2000 },
- { 0x0700, 0x317a, 0x0000 },
- { 0x0700, 0x317c, 0x0000 },
- { 0x8700, 0x317f, 0x2000 },
- { 0x0700, 0x317e, 0x0000 },
- { 0x0700, 0x3180, 0x0000 },
- { 0x8700, 0x3185, 0x3000 },
- { 0x8700, 0x3183, 0x2000 },
- { 0x0700, 0x3182, 0x0000 },
- { 0x0700, 0x3184, 0x0000 },
- { 0x8700, 0x3187, 0x2000 },
- { 0x0700, 0x3186, 0x0000 },
- { 0x0700, 0x3188, 0x0000 },
- { 0x8700, 0x31aa, 0x6000 },
- { 0x9a00, 0x319a, 0x5000 },
- { 0x8f00, 0x3192, 0x4000 },
- { 0x8700, 0x318d, 0x3000 },
- { 0x8700, 0x318b, 0x2000 },
- { 0x0700, 0x318a, 0x0000 },
- { 0x0700, 0x318c, 0x0000 },
- { 0x9a00, 0x3190, 0x2000 },
- { 0x0700, 0x318e, 0x0000 },
- { 0x1a00, 0x3191, 0x0000 },
- { 0x9a00, 0x3196, 0x3000 },
- { 0x8f00, 0x3194, 0x2000 },
- { 0x0f00, 0x3193, 0x0000 },
- { 0x0f00, 0x3195, 0x0000 },
- { 0x9a00, 0x3198, 0x2000 },
- { 0x1a00, 0x3197, 0x0000 },
- { 0x1a00, 0x3199, 0x0000 },
- { 0x8700, 0x31a2, 0x4000 },
- { 0x9a00, 0x319e, 0x3000 },
- { 0x9a00, 0x319c, 0x2000 },
- { 0x1a00, 0x319b, 0x0000 },
- { 0x1a00, 0x319d, 0x0000 },
- { 0x8700, 0x31a0, 0x2000 },
- { 0x1a00, 0x319f, 0x0000 },
- { 0x0700, 0x31a1, 0x0000 },
- { 0x8700, 0x31a6, 0x3000 },
- { 0x8700, 0x31a4, 0x2000 },
- { 0x0700, 0x31a3, 0x0000 },
- { 0x0700, 0x31a5, 0x0000 },
- { 0x8700, 0x31a8, 0x2000 },
- { 0x0700, 0x31a7, 0x0000 },
- { 0x0700, 0x31a9, 0x0000 },
- { 0x8700, 0x31f2, 0x5000 },
- { 0x8700, 0x31b2, 0x4000 },
- { 0x8700, 0x31ae, 0x3000 },
- { 0x8700, 0x31ac, 0x2000 },
- { 0x0700, 0x31ab, 0x0000 },
- { 0x0700, 0x31ad, 0x0000 },
- { 0x8700, 0x31b0, 0x2000 },
- { 0x0700, 0x31af, 0x0000 },
- { 0x0700, 0x31b1, 0x0000 },
- { 0x8700, 0x31b6, 0x3000 },
- { 0x8700, 0x31b4, 0x2000 },
- { 0x0700, 0x31b3, 0x0000 },
- { 0x0700, 0x31b5, 0x0000 },
- { 0x8700, 0x31f0, 0x2000 },
- { 0x0700, 0x31b7, 0x0000 },
- { 0x0700, 0x31f1, 0x0000 },
- { 0x8700, 0x31fa, 0x4000 },
- { 0x8700, 0x31f6, 0x3000 },
- { 0x8700, 0x31f4, 0x2000 },
- { 0x0700, 0x31f3, 0x0000 },
- { 0x0700, 0x31f5, 0x0000 },
- { 0x8700, 0x31f8, 0x2000 },
- { 0x0700, 0x31f7, 0x0000 },
- { 0x0700, 0x31f9, 0x0000 },
- { 0x8700, 0x31fe, 0x3000 },
- { 0x8700, 0x31fc, 0x2000 },
- { 0x0700, 0x31fb, 0x0000 },
- { 0x0700, 0x31fd, 0x0000 },
- { 0x9a00, 0x3200, 0x2000 },
- { 0x0700, 0x31ff, 0x0000 },
- { 0x1a00, 0x3201, 0x0000 },
- { 0x9a00, 0x3243, 0x7000 },
- { 0x8f00, 0x3223, 0x6000 },
- { 0x9a00, 0x3212, 0x5000 },
- { 0x9a00, 0x320a, 0x4000 },
- { 0x9a00, 0x3206, 0x3000 },
- { 0x9a00, 0x3204, 0x2000 },
- { 0x1a00, 0x3203, 0x0000 },
- { 0x1a00, 0x3205, 0x0000 },
- { 0x9a00, 0x3208, 0x2000 },
- { 0x1a00, 0x3207, 0x0000 },
- { 0x1a00, 0x3209, 0x0000 },
- { 0x9a00, 0x320e, 0x3000 },
- { 0x9a00, 0x320c, 0x2000 },
- { 0x1a00, 0x320b, 0x0000 },
- { 0x1a00, 0x320d, 0x0000 },
- { 0x9a00, 0x3210, 0x2000 },
- { 0x1a00, 0x320f, 0x0000 },
- { 0x1a00, 0x3211, 0x0000 },
- { 0x9a00, 0x321a, 0x4000 },
- { 0x9a00, 0x3216, 0x3000 },
- { 0x9a00, 0x3214, 0x2000 },
- { 0x1a00, 0x3213, 0x0000 },
- { 0x1a00, 0x3215, 0x0000 },
- { 0x9a00, 0x3218, 0x2000 },
- { 0x1a00, 0x3217, 0x0000 },
- { 0x1a00, 0x3219, 0x0000 },
- { 0x9a00, 0x321e, 0x3000 },
- { 0x9a00, 0x321c, 0x2000 },
- { 0x1a00, 0x321b, 0x0000 },
- { 0x1a00, 0x321d, 0x0000 },
- { 0x8f00, 0x3221, 0x2000 },
- { 0x0f00, 0x3220, 0x0000 },
- { 0x0f00, 0x3222, 0x0000 },
- { 0x9a00, 0x3233, 0x5000 },
- { 0x9a00, 0x322b, 0x4000 },
- { 0x8f00, 0x3227, 0x3000 },
- { 0x8f00, 0x3225, 0x2000 },
- { 0x0f00, 0x3224, 0x0000 },
- { 0x0f00, 0x3226, 0x0000 },
- { 0x8f00, 0x3229, 0x2000 },
- { 0x0f00, 0x3228, 0x0000 },
- { 0x1a00, 0x322a, 0x0000 },
- { 0x9a00, 0x322f, 0x3000 },
- { 0x9a00, 0x322d, 0x2000 },
- { 0x1a00, 0x322c, 0x0000 },
- { 0x1a00, 0x322e, 0x0000 },
- { 0x9a00, 0x3231, 0x2000 },
- { 0x1a00, 0x3230, 0x0000 },
- { 0x1a00, 0x3232, 0x0000 },
- { 0x9a00, 0x323b, 0x4000 },
- { 0x9a00, 0x3237, 0x3000 },
- { 0x9a00, 0x3235, 0x2000 },
- { 0x1a00, 0x3234, 0x0000 },
- { 0x1a00, 0x3236, 0x0000 },
- { 0x9a00, 0x3239, 0x2000 },
- { 0x1a00, 0x3238, 0x0000 },
- { 0x1a00, 0x323a, 0x0000 },
- { 0x9a00, 0x323f, 0x3000 },
- { 0x9a00, 0x323d, 0x2000 },
- { 0x1a00, 0x323c, 0x0000 },
- { 0x1a00, 0x323e, 0x0000 },
- { 0x9a00, 0x3241, 0x2000 },
- { 0x1a00, 0x3240, 0x0000 },
- { 0x1a00, 0x3242, 0x0000 },
- { 0x9a00, 0x326f, 0x6000 },
- { 0x8f00, 0x325f, 0x5000 },
- { 0x8f00, 0x3257, 0x4000 },
- { 0x8f00, 0x3253, 0x3000 },
- { 0x8f00, 0x3251, 0x2000 },
- { 0x1a00, 0x3250, 0x0000 },
- { 0x0f00, 0x3252, 0x0000 },
- { 0x8f00, 0x3255, 0x2000 },
- { 0x0f00, 0x3254, 0x0000 },
- { 0x0f00, 0x3256, 0x0000 },
- { 0x8f00, 0x325b, 0x3000 },
- { 0x8f00, 0x3259, 0x2000 },
- { 0x0f00, 0x3258, 0x0000 },
- { 0x0f00, 0x325a, 0x0000 },
- { 0x8f00, 0x325d, 0x2000 },
- { 0x0f00, 0x325c, 0x0000 },
- { 0x0f00, 0x325e, 0x0000 },
- { 0x9a00, 0x3267, 0x4000 },
- { 0x9a00, 0x3263, 0x3000 },
- { 0x9a00, 0x3261, 0x2000 },
- { 0x1a00, 0x3260, 0x0000 },
- { 0x1a00, 0x3262, 0x0000 },
- { 0x9a00, 0x3265, 0x2000 },
- { 0x1a00, 0x3264, 0x0000 },
- { 0x1a00, 0x3266, 0x0000 },
- { 0x9a00, 0x326b, 0x3000 },
- { 0x9a00, 0x3269, 0x2000 },
- { 0x1a00, 0x3268, 0x0000 },
- { 0x1a00, 0x326a, 0x0000 },
- { 0x9a00, 0x326d, 0x2000 },
- { 0x1a00, 0x326c, 0x0000 },
- { 0x1a00, 0x326e, 0x0000 },
- { 0x8f00, 0x3280, 0x5000 },
- { 0x9a00, 0x3277, 0x4000 },
- { 0x9a00, 0x3273, 0x3000 },
- { 0x9a00, 0x3271, 0x2000 },
- { 0x1a00, 0x3270, 0x0000 },
- { 0x1a00, 0x3272, 0x0000 },
- { 0x9a00, 0x3275, 0x2000 },
- { 0x1a00, 0x3274, 0x0000 },
- { 0x1a00, 0x3276, 0x0000 },
- { 0x9a00, 0x327b, 0x3000 },
- { 0x9a00, 0x3279, 0x2000 },
- { 0x1a00, 0x3278, 0x0000 },
- { 0x1a00, 0x327a, 0x0000 },
- { 0x9a00, 0x327d, 0x2000 },
- { 0x1a00, 0x327c, 0x0000 },
- { 0x1a00, 0x327f, 0x0000 },
- { 0x8f00, 0x3288, 0x4000 },
- { 0x8f00, 0x3284, 0x3000 },
- { 0x8f00, 0x3282, 0x2000 },
- { 0x0f00, 0x3281, 0x0000 },
- { 0x0f00, 0x3283, 0x0000 },
- { 0x8f00, 0x3286, 0x2000 },
- { 0x0f00, 0x3285, 0x0000 },
- { 0x0f00, 0x3287, 0x0000 },
- { 0x9a00, 0x328c, 0x3000 },
- { 0x9a00, 0x328a, 0x2000 },
- { 0x0f00, 0x3289, 0x0000 },
- { 0x1a00, 0x328b, 0x0000 },
- { 0x9a00, 0x328e, 0x2000 },
- { 0x1a00, 0x328d, 0x0000 },
- { 0x1a00, 0x328f, 0x0000 },
- { 0x9a00, 0x3311, 0x8000 },
- { 0x9a00, 0x32d0, 0x7000 },
- { 0x9a00, 0x32b0, 0x6000 },
- { 0x9a00, 0x32a0, 0x5000 },
- { 0x9a00, 0x3298, 0x4000 },
- { 0x9a00, 0x3294, 0x3000 },
- { 0x9a00, 0x3292, 0x2000 },
- { 0x1a00, 0x3291, 0x0000 },
- { 0x1a00, 0x3293, 0x0000 },
- { 0x9a00, 0x3296, 0x2000 },
- { 0x1a00, 0x3295, 0x0000 },
- { 0x1a00, 0x3297, 0x0000 },
- { 0x9a00, 0x329c, 0x3000 },
- { 0x9a00, 0x329a, 0x2000 },
- { 0x1a00, 0x3299, 0x0000 },
- { 0x1a00, 0x329b, 0x0000 },
- { 0x9a00, 0x329e, 0x2000 },
- { 0x1a00, 0x329d, 0x0000 },
- { 0x1a00, 0x329f, 0x0000 },
- { 0x9a00, 0x32a8, 0x4000 },
- { 0x9a00, 0x32a4, 0x3000 },
- { 0x9a00, 0x32a2, 0x2000 },
- { 0x1a00, 0x32a1, 0x0000 },
- { 0x1a00, 0x32a3, 0x0000 },
- { 0x9a00, 0x32a6, 0x2000 },
- { 0x1a00, 0x32a5, 0x0000 },
- { 0x1a00, 0x32a7, 0x0000 },
- { 0x9a00, 0x32ac, 0x3000 },
- { 0x9a00, 0x32aa, 0x2000 },
- { 0x1a00, 0x32a9, 0x0000 },
- { 0x1a00, 0x32ab, 0x0000 },
- { 0x9a00, 0x32ae, 0x2000 },
- { 0x1a00, 0x32ad, 0x0000 },
- { 0x1a00, 0x32af, 0x0000 },
- { 0x9a00, 0x32c0, 0x5000 },
- { 0x8f00, 0x32b8, 0x4000 },
- { 0x8f00, 0x32b4, 0x3000 },
- { 0x8f00, 0x32b2, 0x2000 },
- { 0x0f00, 0x32b1, 0x0000 },
- { 0x0f00, 0x32b3, 0x0000 },
- { 0x8f00, 0x32b6, 0x2000 },
- { 0x0f00, 0x32b5, 0x0000 },
- { 0x0f00, 0x32b7, 0x0000 },
- { 0x8f00, 0x32bc, 0x3000 },
- { 0x8f00, 0x32ba, 0x2000 },
- { 0x0f00, 0x32b9, 0x0000 },
- { 0x0f00, 0x32bb, 0x0000 },
- { 0x8f00, 0x32be, 0x2000 },
- { 0x0f00, 0x32bd, 0x0000 },
- { 0x0f00, 0x32bf, 0x0000 },
- { 0x9a00, 0x32c8, 0x4000 },
- { 0x9a00, 0x32c4, 0x3000 },
- { 0x9a00, 0x32c2, 0x2000 },
- { 0x1a00, 0x32c1, 0x0000 },
- { 0x1a00, 0x32c3, 0x0000 },
- { 0x9a00, 0x32c6, 0x2000 },
- { 0x1a00, 0x32c5, 0x0000 },
- { 0x1a00, 0x32c7, 0x0000 },
- { 0x9a00, 0x32cc, 0x3000 },
- { 0x9a00, 0x32ca, 0x2000 },
- { 0x1a00, 0x32c9, 0x0000 },
- { 0x1a00, 0x32cb, 0x0000 },
- { 0x9a00, 0x32ce, 0x2000 },
- { 0x1a00, 0x32cd, 0x0000 },
- { 0x1a00, 0x32cf, 0x0000 },
- { 0x9a00, 0x32f0, 0x6000 },
- { 0x9a00, 0x32e0, 0x5000 },
- { 0x9a00, 0x32d8, 0x4000 },
- { 0x9a00, 0x32d4, 0x3000 },
- { 0x9a00, 0x32d2, 0x2000 },
- { 0x1a00, 0x32d1, 0x0000 },
- { 0x1a00, 0x32d3, 0x0000 },
- { 0x9a00, 0x32d6, 0x2000 },
- { 0x1a00, 0x32d5, 0x0000 },
- { 0x1a00, 0x32d7, 0x0000 },
- { 0x9a00, 0x32dc, 0x3000 },
- { 0x9a00, 0x32da, 0x2000 },
- { 0x1a00, 0x32d9, 0x0000 },
- { 0x1a00, 0x32db, 0x0000 },
- { 0x9a00, 0x32de, 0x2000 },
- { 0x1a00, 0x32dd, 0x0000 },
- { 0x1a00, 0x32df, 0x0000 },
- { 0x9a00, 0x32e8, 0x4000 },
- { 0x9a00, 0x32e4, 0x3000 },
- { 0x9a00, 0x32e2, 0x2000 },
- { 0x1a00, 0x32e1, 0x0000 },
- { 0x1a00, 0x32e3, 0x0000 },
- { 0x9a00, 0x32e6, 0x2000 },
- { 0x1a00, 0x32e5, 0x0000 },
- { 0x1a00, 0x32e7, 0x0000 },
- { 0x9a00, 0x32ec, 0x3000 },
- { 0x9a00, 0x32ea, 0x2000 },
- { 0x1a00, 0x32e9, 0x0000 },
- { 0x1a00, 0x32eb, 0x0000 },
- { 0x9a00, 0x32ee, 0x2000 },
- { 0x1a00, 0x32ed, 0x0000 },
- { 0x1a00, 0x32ef, 0x0000 },
- { 0x9a00, 0x3301, 0x5000 },
- { 0x9a00, 0x32f8, 0x4000 },
- { 0x9a00, 0x32f4, 0x3000 },
- { 0x9a00, 0x32f2, 0x2000 },
- { 0x1a00, 0x32f1, 0x0000 },
- { 0x1a00, 0x32f3, 0x0000 },
- { 0x9a00, 0x32f6, 0x2000 },
- { 0x1a00, 0x32f5, 0x0000 },
- { 0x1a00, 0x32f7, 0x0000 },
- { 0x9a00, 0x32fc, 0x3000 },
- { 0x9a00, 0x32fa, 0x2000 },
- { 0x1a00, 0x32f9, 0x0000 },
- { 0x1a00, 0x32fb, 0x0000 },
- { 0x9a00, 0x32fe, 0x2000 },
- { 0x1a00, 0x32fd, 0x0000 },
- { 0x1a00, 0x3300, 0x0000 },
- { 0x9a00, 0x3309, 0x4000 },
- { 0x9a00, 0x3305, 0x3000 },
- { 0x9a00, 0x3303, 0x2000 },
- { 0x1a00, 0x3302, 0x0000 },
- { 0x1a00, 0x3304, 0x0000 },
- { 0x9a00, 0x3307, 0x2000 },
- { 0x1a00, 0x3306, 0x0000 },
- { 0x1a00, 0x3308, 0x0000 },
- { 0x9a00, 0x330d, 0x3000 },
- { 0x9a00, 0x330b, 0x2000 },
- { 0x1a00, 0x330a, 0x0000 },
- { 0x1a00, 0x330c, 0x0000 },
- { 0x9a00, 0x330f, 0x2000 },
- { 0x1a00, 0x330e, 0x0000 },
- { 0x1a00, 0x3310, 0x0000 },
- { 0x9a00, 0x3351, 0x7000 },
- { 0x9a00, 0x3331, 0x6000 },
- { 0x9a00, 0x3321, 0x5000 },
- { 0x9a00, 0x3319, 0x4000 },
- { 0x9a00, 0x3315, 0x3000 },
- { 0x9a00, 0x3313, 0x2000 },
- { 0x1a00, 0x3312, 0x0000 },
- { 0x1a00, 0x3314, 0x0000 },
- { 0x9a00, 0x3317, 0x2000 },
- { 0x1a00, 0x3316, 0x0000 },
- { 0x1a00, 0x3318, 0x0000 },
- { 0x9a00, 0x331d, 0x3000 },
- { 0x9a00, 0x331b, 0x2000 },
- { 0x1a00, 0x331a, 0x0000 },
- { 0x1a00, 0x331c, 0x0000 },
- { 0x9a00, 0x331f, 0x2000 },
- { 0x1a00, 0x331e, 0x0000 },
- { 0x1a00, 0x3320, 0x0000 },
- { 0x9a00, 0x3329, 0x4000 },
- { 0x9a00, 0x3325, 0x3000 },
- { 0x9a00, 0x3323, 0x2000 },
- { 0x1a00, 0x3322, 0x0000 },
- { 0x1a00, 0x3324, 0x0000 },
- { 0x9a00, 0x3327, 0x2000 },
- { 0x1a00, 0x3326, 0x0000 },
- { 0x1a00, 0x3328, 0x0000 },
- { 0x9a00, 0x332d, 0x3000 },
- { 0x9a00, 0x332b, 0x2000 },
- { 0x1a00, 0x332a, 0x0000 },
- { 0x1a00, 0x332c, 0x0000 },
- { 0x9a00, 0x332f, 0x2000 },
- { 0x1a00, 0x332e, 0x0000 },
- { 0x1a00, 0x3330, 0x0000 },
- { 0x9a00, 0x3341, 0x5000 },
- { 0x9a00, 0x3339, 0x4000 },
- { 0x9a00, 0x3335, 0x3000 },
- { 0x9a00, 0x3333, 0x2000 },
- { 0x1a00, 0x3332, 0x0000 },
- { 0x1a00, 0x3334, 0x0000 },
- { 0x9a00, 0x3337, 0x2000 },
- { 0x1a00, 0x3336, 0x0000 },
- { 0x1a00, 0x3338, 0x0000 },
- { 0x9a00, 0x333d, 0x3000 },
- { 0x9a00, 0x333b, 0x2000 },
- { 0x1a00, 0x333a, 0x0000 },
- { 0x1a00, 0x333c, 0x0000 },
- { 0x9a00, 0x333f, 0x2000 },
- { 0x1a00, 0x333e, 0x0000 },
- { 0x1a00, 0x3340, 0x0000 },
- { 0x9a00, 0x3349, 0x4000 },
- { 0x9a00, 0x3345, 0x3000 },
- { 0x9a00, 0x3343, 0x2000 },
- { 0x1a00, 0x3342, 0x0000 },
- { 0x1a00, 0x3344, 0x0000 },
- { 0x9a00, 0x3347, 0x2000 },
- { 0x1a00, 0x3346, 0x0000 },
- { 0x1a00, 0x3348, 0x0000 },
- { 0x9a00, 0x334d, 0x3000 },
- { 0x9a00, 0x334b, 0x2000 },
- { 0x1a00, 0x334a, 0x0000 },
- { 0x1a00, 0x334c, 0x0000 },
- { 0x9a00, 0x334f, 0x2000 },
- { 0x1a00, 0x334e, 0x0000 },
- { 0x1a00, 0x3350, 0x0000 },
- { 0x9a00, 0x3371, 0x6000 },
- { 0x9a00, 0x3361, 0x5000 },
- { 0x9a00, 0x3359, 0x4000 },
- { 0x9a00, 0x3355, 0x3000 },
- { 0x9a00, 0x3353, 0x2000 },
- { 0x1a00, 0x3352, 0x0000 },
- { 0x1a00, 0x3354, 0x0000 },
- { 0x9a00, 0x3357, 0x2000 },
- { 0x1a00, 0x3356, 0x0000 },
- { 0x1a00, 0x3358, 0x0000 },
- { 0x9a00, 0x335d, 0x3000 },
- { 0x9a00, 0x335b, 0x2000 },
- { 0x1a00, 0x335a, 0x0000 },
- { 0x1a00, 0x335c, 0x0000 },
- { 0x9a00, 0x335f, 0x2000 },
- { 0x1a00, 0x335e, 0x0000 },
- { 0x1a00, 0x3360, 0x0000 },
- { 0x9a00, 0x3369, 0x4000 },
- { 0x9a00, 0x3365, 0x3000 },
- { 0x9a00, 0x3363, 0x2000 },
- { 0x1a00, 0x3362, 0x0000 },
- { 0x1a00, 0x3364, 0x0000 },
- { 0x9a00, 0x3367, 0x2000 },
- { 0x1a00, 0x3366, 0x0000 },
- { 0x1a00, 0x3368, 0x0000 },
- { 0x9a00, 0x336d, 0x3000 },
- { 0x9a00, 0x336b, 0x2000 },
- { 0x1a00, 0x336a, 0x0000 },
- { 0x1a00, 0x336c, 0x0000 },
- { 0x9a00, 0x336f, 0x2000 },
- { 0x1a00, 0x336e, 0x0000 },
- { 0x1a00, 0x3370, 0x0000 },
- { 0x9a00, 0x3381, 0x5000 },
- { 0x9a00, 0x3379, 0x4000 },
- { 0x9a00, 0x3375, 0x3000 },
- { 0x9a00, 0x3373, 0x2000 },
- { 0x1a00, 0x3372, 0x0000 },
- { 0x1a00, 0x3374, 0x0000 },
- { 0x9a00, 0x3377, 0x2000 },
- { 0x1a00, 0x3376, 0x0000 },
- { 0x1a00, 0x3378, 0x0000 },
- { 0x9a00, 0x337d, 0x3000 },
- { 0x9a00, 0x337b, 0x2000 },
- { 0x1a00, 0x337a, 0x0000 },
- { 0x1a00, 0x337c, 0x0000 },
- { 0x9a00, 0x337f, 0x2000 },
- { 0x1a00, 0x337e, 0x0000 },
- { 0x1a00, 0x3380, 0x0000 },
- { 0x9a00, 0x3389, 0x4000 },
- { 0x9a00, 0x3385, 0x3000 },
- { 0x9a00, 0x3383, 0x2000 },
- { 0x1a00, 0x3382, 0x0000 },
- { 0x1a00, 0x3384, 0x0000 },
- { 0x9a00, 0x3387, 0x2000 },
- { 0x1a00, 0x3386, 0x0000 },
- { 0x1a00, 0x3388, 0x0000 },
- { 0x9a00, 0x338d, 0x3000 },
- { 0x9a00, 0x338b, 0x2000 },
- { 0x1a00, 0x338a, 0x0000 },
- { 0x1a00, 0x338c, 0x0000 },
- { 0x9a00, 0x338f, 0x2000 },
- { 0x1a00, 0x338e, 0x0000 },
- { 0x1a00, 0x3390, 0x0000 },
- { 0x8700, 0xa14d, 0xa000 },
- { 0x8700, 0xa04d, 0x9000 },
- { 0x9a00, 0x4dcf, 0x8000 },
- { 0x9a00, 0x33d1, 0x7000 },
- { 0x9a00, 0x33b1, 0x6000 },
- { 0x9a00, 0x33a1, 0x5000 },
- { 0x9a00, 0x3399, 0x4000 },
- { 0x9a00, 0x3395, 0x3000 },
- { 0x9a00, 0x3393, 0x2000 },
- { 0x1a00, 0x3392, 0x0000 },
- { 0x1a00, 0x3394, 0x0000 },
- { 0x9a00, 0x3397, 0x2000 },
- { 0x1a00, 0x3396, 0x0000 },
- { 0x1a00, 0x3398, 0x0000 },
- { 0x9a00, 0x339d, 0x3000 },
- { 0x9a00, 0x339b, 0x2000 },
- { 0x1a00, 0x339a, 0x0000 },
- { 0x1a00, 0x339c, 0x0000 },
- { 0x9a00, 0x339f, 0x2000 },
- { 0x1a00, 0x339e, 0x0000 },
- { 0x1a00, 0x33a0, 0x0000 },
- { 0x9a00, 0x33a9, 0x4000 },
- { 0x9a00, 0x33a5, 0x3000 },
- { 0x9a00, 0x33a3, 0x2000 },
- { 0x1a00, 0x33a2, 0x0000 },
- { 0x1a00, 0x33a4, 0x0000 },
- { 0x9a00, 0x33a7, 0x2000 },
- { 0x1a00, 0x33a6, 0x0000 },
- { 0x1a00, 0x33a8, 0x0000 },
- { 0x9a00, 0x33ad, 0x3000 },
- { 0x9a00, 0x33ab, 0x2000 },
- { 0x1a00, 0x33aa, 0x0000 },
- { 0x1a00, 0x33ac, 0x0000 },
- { 0x9a00, 0x33af, 0x2000 },
- { 0x1a00, 0x33ae, 0x0000 },
- { 0x1a00, 0x33b0, 0x0000 },
- { 0x9a00, 0x33c1, 0x5000 },
- { 0x9a00, 0x33b9, 0x4000 },
- { 0x9a00, 0x33b5, 0x3000 },
- { 0x9a00, 0x33b3, 0x2000 },
- { 0x1a00, 0x33b2, 0x0000 },
- { 0x1a00, 0x33b4, 0x0000 },
- { 0x9a00, 0x33b7, 0x2000 },
- { 0x1a00, 0x33b6, 0x0000 },
- { 0x1a00, 0x33b8, 0x0000 },
- { 0x9a00, 0x33bd, 0x3000 },
- { 0x9a00, 0x33bb, 0x2000 },
- { 0x1a00, 0x33ba, 0x0000 },
- { 0x1a00, 0x33bc, 0x0000 },
- { 0x9a00, 0x33bf, 0x2000 },
- { 0x1a00, 0x33be, 0x0000 },
- { 0x1a00, 0x33c0, 0x0000 },
- { 0x9a00, 0x33c9, 0x4000 },
- { 0x9a00, 0x33c5, 0x3000 },
- { 0x9a00, 0x33c3, 0x2000 },
- { 0x1a00, 0x33c2, 0x0000 },
- { 0x1a00, 0x33c4, 0x0000 },
- { 0x9a00, 0x33c7, 0x2000 },
- { 0x1a00, 0x33c6, 0x0000 },
- { 0x1a00, 0x33c8, 0x0000 },
- { 0x9a00, 0x33cd, 0x3000 },
- { 0x9a00, 0x33cb, 0x2000 },
- { 0x1a00, 0x33ca, 0x0000 },
- { 0x1a00, 0x33cc, 0x0000 },
- { 0x9a00, 0x33cf, 0x2000 },
- { 0x1a00, 0x33ce, 0x0000 },
- { 0x1a00, 0x33d0, 0x0000 },
- { 0x9a00, 0x33f1, 0x6000 },
- { 0x9a00, 0x33e1, 0x5000 },
- { 0x9a00, 0x33d9, 0x4000 },
- { 0x9a00, 0x33d5, 0x3000 },
- { 0x9a00, 0x33d3, 0x2000 },
- { 0x1a00, 0x33d2, 0x0000 },
- { 0x1a00, 0x33d4, 0x0000 },
- { 0x9a00, 0x33d7, 0x2000 },
- { 0x1a00, 0x33d6, 0x0000 },
- { 0x1a00, 0x33d8, 0x0000 },
- { 0x9a00, 0x33dd, 0x3000 },
- { 0x9a00, 0x33db, 0x2000 },
- { 0x1a00, 0x33da, 0x0000 },
- { 0x1a00, 0x33dc, 0x0000 },
- { 0x9a00, 0x33df, 0x2000 },
- { 0x1a00, 0x33de, 0x0000 },
- { 0x1a00, 0x33e0, 0x0000 },
- { 0x9a00, 0x33e9, 0x4000 },
- { 0x9a00, 0x33e5, 0x3000 },
- { 0x9a00, 0x33e3, 0x2000 },
- { 0x1a00, 0x33e2, 0x0000 },
- { 0x1a00, 0x33e4, 0x0000 },
- { 0x9a00, 0x33e7, 0x2000 },
- { 0x1a00, 0x33e6, 0x0000 },
- { 0x1a00, 0x33e8, 0x0000 },
- { 0x9a00, 0x33ed, 0x3000 },
- { 0x9a00, 0x33eb, 0x2000 },
- { 0x1a00, 0x33ea, 0x0000 },
- { 0x1a00, 0x33ec, 0x0000 },
- { 0x9a00, 0x33ef, 0x2000 },
- { 0x1a00, 0x33ee, 0x0000 },
- { 0x1a00, 0x33f0, 0x0000 },
- { 0x8700, 0x4db5, 0x5000 },
- { 0x9a00, 0x33f9, 0x4000 },
- { 0x9a00, 0x33f5, 0x3000 },
- { 0x9a00, 0x33f3, 0x2000 },
- { 0x1a00, 0x33f2, 0x0000 },
- { 0x1a00, 0x33f4, 0x0000 },
- { 0x9a00, 0x33f7, 0x2000 },
- { 0x1a00, 0x33f6, 0x0000 },
- { 0x1a00, 0x33f8, 0x0000 },
- { 0x9a00, 0x33fd, 0x3000 },
- { 0x9a00, 0x33fb, 0x2000 },
- { 0x1a00, 0x33fa, 0x0000 },
- { 0x1a00, 0x33fc, 0x0000 },
- { 0x9a00, 0x33ff, 0x2000 },
- { 0x1a00, 0x33fe, 0x0000 },
- { 0x0700, 0x3400, 0x0000 },
- { 0x9a00, 0x4dc7, 0x4000 },
- { 0x9a00, 0x4dc3, 0x3000 },
- { 0x9a00, 0x4dc1, 0x2000 },
- { 0x1a00, 0x4dc0, 0x0000 },
- { 0x1a00, 0x4dc2, 0x0000 },
- { 0x9a00, 0x4dc5, 0x2000 },
- { 0x1a00, 0x4dc4, 0x0000 },
- { 0x1a00, 0x4dc6, 0x0000 },
- { 0x9a00, 0x4dcb, 0x3000 },
- { 0x9a00, 0x4dc9, 0x2000 },
- { 0x1a00, 0x4dc8, 0x0000 },
- { 0x1a00, 0x4dca, 0x0000 },
- { 0x9a00, 0x4dcd, 0x2000 },
- { 0x1a00, 0x4dcc, 0x0000 },
- { 0x1a00, 0x4dce, 0x0000 },
- { 0x8700, 0xa00d, 0x7000 },
- { 0x9a00, 0x4def, 0x6000 },
- { 0x9a00, 0x4ddf, 0x5000 },
- { 0x9a00, 0x4dd7, 0x4000 },
- { 0x9a00, 0x4dd3, 0x3000 },
- { 0x9a00, 0x4dd1, 0x2000 },
- { 0x1a00, 0x4dd0, 0x0000 },
- { 0x1a00, 0x4dd2, 0x0000 },
- { 0x9a00, 0x4dd5, 0x2000 },
- { 0x1a00, 0x4dd4, 0x0000 },
- { 0x1a00, 0x4dd6, 0x0000 },
- { 0x9a00, 0x4ddb, 0x3000 },
- { 0x9a00, 0x4dd9, 0x2000 },
- { 0x1a00, 0x4dd8, 0x0000 },
- { 0x1a00, 0x4dda, 0x0000 },
- { 0x9a00, 0x4ddd, 0x2000 },
- { 0x1a00, 0x4ddc, 0x0000 },
- { 0x1a00, 0x4dde, 0x0000 },
- { 0x9a00, 0x4de7, 0x4000 },
- { 0x9a00, 0x4de3, 0x3000 },
- { 0x9a00, 0x4de1, 0x2000 },
- { 0x1a00, 0x4de0, 0x0000 },
- { 0x1a00, 0x4de2, 0x0000 },
- { 0x9a00, 0x4de5, 0x2000 },
- { 0x1a00, 0x4de4, 0x0000 },
- { 0x1a00, 0x4de6, 0x0000 },
- { 0x9a00, 0x4deb, 0x3000 },
- { 0x9a00, 0x4de9, 0x2000 },
- { 0x1a00, 0x4de8, 0x0000 },
- { 0x1a00, 0x4dea, 0x0000 },
- { 0x9a00, 0x4ded, 0x2000 },
- { 0x1a00, 0x4dec, 0x0000 },
- { 0x1a00, 0x4dee, 0x0000 },
- { 0x9a00, 0x4dff, 0x5000 },
- { 0x9a00, 0x4df7, 0x4000 },
- { 0x9a00, 0x4df3, 0x3000 },
- { 0x9a00, 0x4df1, 0x2000 },
- { 0x1a00, 0x4df0, 0x0000 },
- { 0x1a00, 0x4df2, 0x0000 },
- { 0x9a00, 0x4df5, 0x2000 },
- { 0x1a00, 0x4df4, 0x0000 },
- { 0x1a00, 0x4df6, 0x0000 },
- { 0x9a00, 0x4dfb, 0x3000 },
- { 0x9a00, 0x4df9, 0x2000 },
- { 0x1a00, 0x4df8, 0x0000 },
- { 0x1a00, 0x4dfa, 0x0000 },
- { 0x9a00, 0x4dfd, 0x2000 },
- { 0x1a00, 0x4dfc, 0x0000 },
- { 0x1a00, 0x4dfe, 0x0000 },
- { 0x8700, 0xa005, 0x4000 },
- { 0x8700, 0xa001, 0x3000 },
- { 0x8700, 0x9fa5, 0x2000 },
- { 0x0700, 0x4e00, 0x0000 },
- { 0x0700, 0xa000, 0x0000 },
- { 0x8700, 0xa003, 0x2000 },
- { 0x0700, 0xa002, 0x0000 },
- { 0x0700, 0xa004, 0x0000 },
- { 0x8700, 0xa009, 0x3000 },
- { 0x8700, 0xa007, 0x2000 },
- { 0x0700, 0xa006, 0x0000 },
- { 0x0700, 0xa008, 0x0000 },
- { 0x8700, 0xa00b, 0x2000 },
- { 0x0700, 0xa00a, 0x0000 },
- { 0x0700, 0xa00c, 0x0000 },
- { 0x8700, 0xa02d, 0x6000 },
- { 0x8700, 0xa01d, 0x5000 },
- { 0x8700, 0xa015, 0x4000 },
- { 0x8700, 0xa011, 0x3000 },
- { 0x8700, 0xa00f, 0x2000 },
- { 0x0700, 0xa00e, 0x0000 },
- { 0x0700, 0xa010, 0x0000 },
- { 0x8700, 0xa013, 0x2000 },
- { 0x0700, 0xa012, 0x0000 },
- { 0x0700, 0xa014, 0x0000 },
- { 0x8700, 0xa019, 0x3000 },
- { 0x8700, 0xa017, 0x2000 },
- { 0x0700, 0xa016, 0x0000 },
- { 0x0700, 0xa018, 0x0000 },
- { 0x8700, 0xa01b, 0x2000 },
- { 0x0700, 0xa01a, 0x0000 },
- { 0x0700, 0xa01c, 0x0000 },
- { 0x8700, 0xa025, 0x4000 },
- { 0x8700, 0xa021, 0x3000 },
- { 0x8700, 0xa01f, 0x2000 },
- { 0x0700, 0xa01e, 0x0000 },
- { 0x0700, 0xa020, 0x0000 },
- { 0x8700, 0xa023, 0x2000 },
- { 0x0700, 0xa022, 0x0000 },
- { 0x0700, 0xa024, 0x0000 },
- { 0x8700, 0xa029, 0x3000 },
- { 0x8700, 0xa027, 0x2000 },
- { 0x0700, 0xa026, 0x0000 },
- { 0x0700, 0xa028, 0x0000 },
- { 0x8700, 0xa02b, 0x2000 },
- { 0x0700, 0xa02a, 0x0000 },
- { 0x0700, 0xa02c, 0x0000 },
- { 0x8700, 0xa03d, 0x5000 },
- { 0x8700, 0xa035, 0x4000 },
- { 0x8700, 0xa031, 0x3000 },
- { 0x8700, 0xa02f, 0x2000 },
- { 0x0700, 0xa02e, 0x0000 },
- { 0x0700, 0xa030, 0x0000 },
- { 0x8700, 0xa033, 0x2000 },
- { 0x0700, 0xa032, 0x0000 },
- { 0x0700, 0xa034, 0x0000 },
- { 0x8700, 0xa039, 0x3000 },
- { 0x8700, 0xa037, 0x2000 },
- { 0x0700, 0xa036, 0x0000 },
- { 0x0700, 0xa038, 0x0000 },
- { 0x8700, 0xa03b, 0x2000 },
- { 0x0700, 0xa03a, 0x0000 },
- { 0x0700, 0xa03c, 0x0000 },
- { 0x8700, 0xa045, 0x4000 },
- { 0x8700, 0xa041, 0x3000 },
- { 0x8700, 0xa03f, 0x2000 },
- { 0x0700, 0xa03e, 0x0000 },
- { 0x0700, 0xa040, 0x0000 },
- { 0x8700, 0xa043, 0x2000 },
- { 0x0700, 0xa042, 0x0000 },
- { 0x0700, 0xa044, 0x0000 },
- { 0x8700, 0xa049, 0x3000 },
- { 0x8700, 0xa047, 0x2000 },
- { 0x0700, 0xa046, 0x0000 },
- { 0x0700, 0xa048, 0x0000 },
- { 0x8700, 0xa04b, 0x2000 },
- { 0x0700, 0xa04a, 0x0000 },
- { 0x0700, 0xa04c, 0x0000 },
- { 0x8700, 0xa0cd, 0x8000 },
- { 0x8700, 0xa08d, 0x7000 },
- { 0x8700, 0xa06d, 0x6000 },
- { 0x8700, 0xa05d, 0x5000 },
- { 0x8700, 0xa055, 0x4000 },
- { 0x8700, 0xa051, 0x3000 },
- { 0x8700, 0xa04f, 0x2000 },
- { 0x0700, 0xa04e, 0x0000 },
- { 0x0700, 0xa050, 0x0000 },
- { 0x8700, 0xa053, 0x2000 },
- { 0x0700, 0xa052, 0x0000 },
- { 0x0700, 0xa054, 0x0000 },
- { 0x8700, 0xa059, 0x3000 },
- { 0x8700, 0xa057, 0x2000 },
- { 0x0700, 0xa056, 0x0000 },
- { 0x0700, 0xa058, 0x0000 },
- { 0x8700, 0xa05b, 0x2000 },
- { 0x0700, 0xa05a, 0x0000 },
- { 0x0700, 0xa05c, 0x0000 },
- { 0x8700, 0xa065, 0x4000 },
- { 0x8700, 0xa061, 0x3000 },
- { 0x8700, 0xa05f, 0x2000 },
- { 0x0700, 0xa05e, 0x0000 },
- { 0x0700, 0xa060, 0x0000 },
- { 0x8700, 0xa063, 0x2000 },
- { 0x0700, 0xa062, 0x0000 },
- { 0x0700, 0xa064, 0x0000 },
- { 0x8700, 0xa069, 0x3000 },
- { 0x8700, 0xa067, 0x2000 },
- { 0x0700, 0xa066, 0x0000 },
- { 0x0700, 0xa068, 0x0000 },
- { 0x8700, 0xa06b, 0x2000 },
- { 0x0700, 0xa06a, 0x0000 },
- { 0x0700, 0xa06c, 0x0000 },
- { 0x8700, 0xa07d, 0x5000 },
- { 0x8700, 0xa075, 0x4000 },
- { 0x8700, 0xa071, 0x3000 },
- { 0x8700, 0xa06f, 0x2000 },
- { 0x0700, 0xa06e, 0x0000 },
- { 0x0700, 0xa070, 0x0000 },
- { 0x8700, 0xa073, 0x2000 },
- { 0x0700, 0xa072, 0x0000 },
- { 0x0700, 0xa074, 0x0000 },
- { 0x8700, 0xa079, 0x3000 },
- { 0x8700, 0xa077, 0x2000 },
- { 0x0700, 0xa076, 0x0000 },
- { 0x0700, 0xa078, 0x0000 },
- { 0x8700, 0xa07b, 0x2000 },
- { 0x0700, 0xa07a, 0x0000 },
- { 0x0700, 0xa07c, 0x0000 },
- { 0x8700, 0xa085, 0x4000 },
- { 0x8700, 0xa081, 0x3000 },
- { 0x8700, 0xa07f, 0x2000 },
- { 0x0700, 0xa07e, 0x0000 },
- { 0x0700, 0xa080, 0x0000 },
- { 0x8700, 0xa083, 0x2000 },
- { 0x0700, 0xa082, 0x0000 },
- { 0x0700, 0xa084, 0x0000 },
- { 0x8700, 0xa089, 0x3000 },
- { 0x8700, 0xa087, 0x2000 },
- { 0x0700, 0xa086, 0x0000 },
- { 0x0700, 0xa088, 0x0000 },
- { 0x8700, 0xa08b, 0x2000 },
- { 0x0700, 0xa08a, 0x0000 },
- { 0x0700, 0xa08c, 0x0000 },
- { 0x8700, 0xa0ad, 0x6000 },
- { 0x8700, 0xa09d, 0x5000 },
- { 0x8700, 0xa095, 0x4000 },
- { 0x8700, 0xa091, 0x3000 },
- { 0x8700, 0xa08f, 0x2000 },
- { 0x0700, 0xa08e, 0x0000 },
- { 0x0700, 0xa090, 0x0000 },
- { 0x8700, 0xa093, 0x2000 },
- { 0x0700, 0xa092, 0x0000 },
- { 0x0700, 0xa094, 0x0000 },
- { 0x8700, 0xa099, 0x3000 },
- { 0x8700, 0xa097, 0x2000 },
- { 0x0700, 0xa096, 0x0000 },
- { 0x0700, 0xa098, 0x0000 },
- { 0x8700, 0xa09b, 0x2000 },
- { 0x0700, 0xa09a, 0x0000 },
- { 0x0700, 0xa09c, 0x0000 },
- { 0x8700, 0xa0a5, 0x4000 },
- { 0x8700, 0xa0a1, 0x3000 },
- { 0x8700, 0xa09f, 0x2000 },
- { 0x0700, 0xa09e, 0x0000 },
- { 0x0700, 0xa0a0, 0x0000 },
- { 0x8700, 0xa0a3, 0x2000 },
- { 0x0700, 0xa0a2, 0x0000 },
- { 0x0700, 0xa0a4, 0x0000 },
- { 0x8700, 0xa0a9, 0x3000 },
- { 0x8700, 0xa0a7, 0x2000 },
- { 0x0700, 0xa0a6, 0x0000 },
- { 0x0700, 0xa0a8, 0x0000 },
- { 0x8700, 0xa0ab, 0x2000 },
- { 0x0700, 0xa0aa, 0x0000 },
- { 0x0700, 0xa0ac, 0x0000 },
- { 0x8700, 0xa0bd, 0x5000 },
- { 0x8700, 0xa0b5, 0x4000 },
- { 0x8700, 0xa0b1, 0x3000 },
- { 0x8700, 0xa0af, 0x2000 },
- { 0x0700, 0xa0ae, 0x0000 },
- { 0x0700, 0xa0b0, 0x0000 },
- { 0x8700, 0xa0b3, 0x2000 },
- { 0x0700, 0xa0b2, 0x0000 },
- { 0x0700, 0xa0b4, 0x0000 },
- { 0x8700, 0xa0b9, 0x3000 },
- { 0x8700, 0xa0b7, 0x2000 },
- { 0x0700, 0xa0b6, 0x0000 },
- { 0x0700, 0xa0b8, 0x0000 },
- { 0x8700, 0xa0bb, 0x2000 },
- { 0x0700, 0xa0ba, 0x0000 },
- { 0x0700, 0xa0bc, 0x0000 },
- { 0x8700, 0xa0c5, 0x4000 },
- { 0x8700, 0xa0c1, 0x3000 },
- { 0x8700, 0xa0bf, 0x2000 },
- { 0x0700, 0xa0be, 0x0000 },
- { 0x0700, 0xa0c0, 0x0000 },
- { 0x8700, 0xa0c3, 0x2000 },
- { 0x0700, 0xa0c2, 0x0000 },
- { 0x0700, 0xa0c4, 0x0000 },
- { 0x8700, 0xa0c9, 0x3000 },
- { 0x8700, 0xa0c7, 0x2000 },
- { 0x0700, 0xa0c6, 0x0000 },
- { 0x0700, 0xa0c8, 0x0000 },
- { 0x8700, 0xa0cb, 0x2000 },
- { 0x0700, 0xa0ca, 0x0000 },
- { 0x0700, 0xa0cc, 0x0000 },
- { 0x8700, 0xa10d, 0x7000 },
- { 0x8700, 0xa0ed, 0x6000 },
- { 0x8700, 0xa0dd, 0x5000 },
- { 0x8700, 0xa0d5, 0x4000 },
- { 0x8700, 0xa0d1, 0x3000 },
- { 0x8700, 0xa0cf, 0x2000 },
- { 0x0700, 0xa0ce, 0x0000 },
- { 0x0700, 0xa0d0, 0x0000 },
- { 0x8700, 0xa0d3, 0x2000 },
- { 0x0700, 0xa0d2, 0x0000 },
- { 0x0700, 0xa0d4, 0x0000 },
- { 0x8700, 0xa0d9, 0x3000 },
- { 0x8700, 0xa0d7, 0x2000 },
- { 0x0700, 0xa0d6, 0x0000 },
- { 0x0700, 0xa0d8, 0x0000 },
- { 0x8700, 0xa0db, 0x2000 },
- { 0x0700, 0xa0da, 0x0000 },
- { 0x0700, 0xa0dc, 0x0000 },
- { 0x8700, 0xa0e5, 0x4000 },
- { 0x8700, 0xa0e1, 0x3000 },
- { 0x8700, 0xa0df, 0x2000 },
- { 0x0700, 0xa0de, 0x0000 },
- { 0x0700, 0xa0e0, 0x0000 },
- { 0x8700, 0xa0e3, 0x2000 },
- { 0x0700, 0xa0e2, 0x0000 },
- { 0x0700, 0xa0e4, 0x0000 },
- { 0x8700, 0xa0e9, 0x3000 },
- { 0x8700, 0xa0e7, 0x2000 },
- { 0x0700, 0xa0e6, 0x0000 },
- { 0x0700, 0xa0e8, 0x0000 },
- { 0x8700, 0xa0eb, 0x2000 },
- { 0x0700, 0xa0ea, 0x0000 },
- { 0x0700, 0xa0ec, 0x0000 },
- { 0x8700, 0xa0fd, 0x5000 },
- { 0x8700, 0xa0f5, 0x4000 },
- { 0x8700, 0xa0f1, 0x3000 },
- { 0x8700, 0xa0ef, 0x2000 },
- { 0x0700, 0xa0ee, 0x0000 },
- { 0x0700, 0xa0f0, 0x0000 },
- { 0x8700, 0xa0f3, 0x2000 },
- { 0x0700, 0xa0f2, 0x0000 },
- { 0x0700, 0xa0f4, 0x0000 },
- { 0x8700, 0xa0f9, 0x3000 },
- { 0x8700, 0xa0f7, 0x2000 },
- { 0x0700, 0xa0f6, 0x0000 },
- { 0x0700, 0xa0f8, 0x0000 },
- { 0x8700, 0xa0fb, 0x2000 },
- { 0x0700, 0xa0fa, 0x0000 },
- { 0x0700, 0xa0fc, 0x0000 },
- { 0x8700, 0xa105, 0x4000 },
- { 0x8700, 0xa101, 0x3000 },
- { 0x8700, 0xa0ff, 0x2000 },
- { 0x0700, 0xa0fe, 0x0000 },
- { 0x0700, 0xa100, 0x0000 },
- { 0x8700, 0xa103, 0x2000 },
- { 0x0700, 0xa102, 0x0000 },
- { 0x0700, 0xa104, 0x0000 },
- { 0x8700, 0xa109, 0x3000 },
- { 0x8700, 0xa107, 0x2000 },
- { 0x0700, 0xa106, 0x0000 },
- { 0x0700, 0xa108, 0x0000 },
- { 0x8700, 0xa10b, 0x2000 },
- { 0x0700, 0xa10a, 0x0000 },
- { 0x0700, 0xa10c, 0x0000 },
- { 0x8700, 0xa12d, 0x6000 },
- { 0x8700, 0xa11d, 0x5000 },
- { 0x8700, 0xa115, 0x4000 },
- { 0x8700, 0xa111, 0x3000 },
- { 0x8700, 0xa10f, 0x2000 },
- { 0x0700, 0xa10e, 0x0000 },
- { 0x0700, 0xa110, 0x0000 },
- { 0x8700, 0xa113, 0x2000 },
- { 0x0700, 0xa112, 0x0000 },
- { 0x0700, 0xa114, 0x0000 },
- { 0x8700, 0xa119, 0x3000 },
- { 0x8700, 0xa117, 0x2000 },
- { 0x0700, 0xa116, 0x0000 },
- { 0x0700, 0xa118, 0x0000 },
- { 0x8700, 0xa11b, 0x2000 },
- { 0x0700, 0xa11a, 0x0000 },
- { 0x0700, 0xa11c, 0x0000 },
- { 0x8700, 0xa125, 0x4000 },
- { 0x8700, 0xa121, 0x3000 },
- { 0x8700, 0xa11f, 0x2000 },
- { 0x0700, 0xa11e, 0x0000 },
- { 0x0700, 0xa120, 0x0000 },
- { 0x8700, 0xa123, 0x2000 },
- { 0x0700, 0xa122, 0x0000 },
- { 0x0700, 0xa124, 0x0000 },
- { 0x8700, 0xa129, 0x3000 },
- { 0x8700, 0xa127, 0x2000 },
- { 0x0700, 0xa126, 0x0000 },
- { 0x0700, 0xa128, 0x0000 },
- { 0x8700, 0xa12b, 0x2000 },
- { 0x0700, 0xa12a, 0x0000 },
- { 0x0700, 0xa12c, 0x0000 },
- { 0x8700, 0xa13d, 0x5000 },
- { 0x8700, 0xa135, 0x4000 },
- { 0x8700, 0xa131, 0x3000 },
- { 0x8700, 0xa12f, 0x2000 },
- { 0x0700, 0xa12e, 0x0000 },
- { 0x0700, 0xa130, 0x0000 },
- { 0x8700, 0xa133, 0x2000 },
- { 0x0700, 0xa132, 0x0000 },
- { 0x0700, 0xa134, 0x0000 },
- { 0x8700, 0xa139, 0x3000 },
- { 0x8700, 0xa137, 0x2000 },
- { 0x0700, 0xa136, 0x0000 },
- { 0x0700, 0xa138, 0x0000 },
- { 0x8700, 0xa13b, 0x2000 },
- { 0x0700, 0xa13a, 0x0000 },
- { 0x0700, 0xa13c, 0x0000 },
- { 0x8700, 0xa145, 0x4000 },
- { 0x8700, 0xa141, 0x3000 },
- { 0x8700, 0xa13f, 0x2000 },
- { 0x0700, 0xa13e, 0x0000 },
- { 0x0700, 0xa140, 0x0000 },
- { 0x8700, 0xa143, 0x2000 },
- { 0x0700, 0xa142, 0x0000 },
- { 0x0700, 0xa144, 0x0000 },
- { 0x8700, 0xa149, 0x3000 },
- { 0x8700, 0xa147, 0x2000 },
- { 0x0700, 0xa146, 0x0000 },
- { 0x0700, 0xa148, 0x0000 },
- { 0x8700, 0xa14b, 0x2000 },
- { 0x0700, 0xa14a, 0x0000 },
- { 0x0700, 0xa14c, 0x0000 },
- { 0x8700, 0xa24d, 0x9000 },
- { 0x8700, 0xa1cd, 0x8000 },
- { 0x8700, 0xa18d, 0x7000 },
- { 0x8700, 0xa16d, 0x6000 },
- { 0x8700, 0xa15d, 0x5000 },
- { 0x8700, 0xa155, 0x4000 },
- { 0x8700, 0xa151, 0x3000 },
- { 0x8700, 0xa14f, 0x2000 },
- { 0x0700, 0xa14e, 0x0000 },
- { 0x0700, 0xa150, 0x0000 },
- { 0x8700, 0xa153, 0x2000 },
- { 0x0700, 0xa152, 0x0000 },
- { 0x0700, 0xa154, 0x0000 },
- { 0x8700, 0xa159, 0x3000 },
- { 0x8700, 0xa157, 0x2000 },
- { 0x0700, 0xa156, 0x0000 },
- { 0x0700, 0xa158, 0x0000 },
- { 0x8700, 0xa15b, 0x2000 },
- { 0x0700, 0xa15a, 0x0000 },
- { 0x0700, 0xa15c, 0x0000 },
- { 0x8700, 0xa165, 0x4000 },
- { 0x8700, 0xa161, 0x3000 },
- { 0x8700, 0xa15f, 0x2000 },
- { 0x0700, 0xa15e, 0x0000 },
- { 0x0700, 0xa160, 0x0000 },
- { 0x8700, 0xa163, 0x2000 },
- { 0x0700, 0xa162, 0x0000 },
- { 0x0700, 0xa164, 0x0000 },
- { 0x8700, 0xa169, 0x3000 },
- { 0x8700, 0xa167, 0x2000 },
- { 0x0700, 0xa166, 0x0000 },
- { 0x0700, 0xa168, 0x0000 },
- { 0x8700, 0xa16b, 0x2000 },
- { 0x0700, 0xa16a, 0x0000 },
- { 0x0700, 0xa16c, 0x0000 },
- { 0x8700, 0xa17d, 0x5000 },
- { 0x8700, 0xa175, 0x4000 },
- { 0x8700, 0xa171, 0x3000 },
- { 0x8700, 0xa16f, 0x2000 },
- { 0x0700, 0xa16e, 0x0000 },
- { 0x0700, 0xa170, 0x0000 },
- { 0x8700, 0xa173, 0x2000 },
- { 0x0700, 0xa172, 0x0000 },
- { 0x0700, 0xa174, 0x0000 },
- { 0x8700, 0xa179, 0x3000 },
- { 0x8700, 0xa177, 0x2000 },
- { 0x0700, 0xa176, 0x0000 },
- { 0x0700, 0xa178, 0x0000 },
- { 0x8700, 0xa17b, 0x2000 },
- { 0x0700, 0xa17a, 0x0000 },
- { 0x0700, 0xa17c, 0x0000 },
- { 0x8700, 0xa185, 0x4000 },
- { 0x8700, 0xa181, 0x3000 },
- { 0x8700, 0xa17f, 0x2000 },
- { 0x0700, 0xa17e, 0x0000 },
- { 0x0700, 0xa180, 0x0000 },
- { 0x8700, 0xa183, 0x2000 },
- { 0x0700, 0xa182, 0x0000 },
- { 0x0700, 0xa184, 0x0000 },
- { 0x8700, 0xa189, 0x3000 },
- { 0x8700, 0xa187, 0x2000 },
- { 0x0700, 0xa186, 0x0000 },
- { 0x0700, 0xa188, 0x0000 },
- { 0x8700, 0xa18b, 0x2000 },
- { 0x0700, 0xa18a, 0x0000 },
- { 0x0700, 0xa18c, 0x0000 },
- { 0x8700, 0xa1ad, 0x6000 },
- { 0x8700, 0xa19d, 0x5000 },
- { 0x8700, 0xa195, 0x4000 },
- { 0x8700, 0xa191, 0x3000 },
- { 0x8700, 0xa18f, 0x2000 },
- { 0x0700, 0xa18e, 0x0000 },
- { 0x0700, 0xa190, 0x0000 },
- { 0x8700, 0xa193, 0x2000 },
- { 0x0700, 0xa192, 0x0000 },
- { 0x0700, 0xa194, 0x0000 },
- { 0x8700, 0xa199, 0x3000 },
- { 0x8700, 0xa197, 0x2000 },
- { 0x0700, 0xa196, 0x0000 },
- { 0x0700, 0xa198, 0x0000 },
- { 0x8700, 0xa19b, 0x2000 },
- { 0x0700, 0xa19a, 0x0000 },
- { 0x0700, 0xa19c, 0x0000 },
- { 0x8700, 0xa1a5, 0x4000 },
- { 0x8700, 0xa1a1, 0x3000 },
- { 0x8700, 0xa19f, 0x2000 },
- { 0x0700, 0xa19e, 0x0000 },
- { 0x0700, 0xa1a0, 0x0000 },
- { 0x8700, 0xa1a3, 0x2000 },
- { 0x0700, 0xa1a2, 0x0000 },
- { 0x0700, 0xa1a4, 0x0000 },
- { 0x8700, 0xa1a9, 0x3000 },
- { 0x8700, 0xa1a7, 0x2000 },
- { 0x0700, 0xa1a6, 0x0000 },
- { 0x0700, 0xa1a8, 0x0000 },
- { 0x8700, 0xa1ab, 0x2000 },
- { 0x0700, 0xa1aa, 0x0000 },
- { 0x0700, 0xa1ac, 0x0000 },
- { 0x8700, 0xa1bd, 0x5000 },
- { 0x8700, 0xa1b5, 0x4000 },
- { 0x8700, 0xa1b1, 0x3000 },
- { 0x8700, 0xa1af, 0x2000 },
- { 0x0700, 0xa1ae, 0x0000 },
- { 0x0700, 0xa1b0, 0x0000 },
- { 0x8700, 0xa1b3, 0x2000 },
- { 0x0700, 0xa1b2, 0x0000 },
- { 0x0700, 0xa1b4, 0x0000 },
- { 0x8700, 0xa1b9, 0x3000 },
- { 0x8700, 0xa1b7, 0x2000 },
- { 0x0700, 0xa1b6, 0x0000 },
- { 0x0700, 0xa1b8, 0x0000 },
- { 0x8700, 0xa1bb, 0x2000 },
- { 0x0700, 0xa1ba, 0x0000 },
- { 0x0700, 0xa1bc, 0x0000 },
- { 0x8700, 0xa1c5, 0x4000 },
- { 0x8700, 0xa1c1, 0x3000 },
- { 0x8700, 0xa1bf, 0x2000 },
- { 0x0700, 0xa1be, 0x0000 },
- { 0x0700, 0xa1c0, 0x0000 },
- { 0x8700, 0xa1c3, 0x2000 },
- { 0x0700, 0xa1c2, 0x0000 },
- { 0x0700, 0xa1c4, 0x0000 },
- { 0x8700, 0xa1c9, 0x3000 },
- { 0x8700, 0xa1c7, 0x2000 },
- { 0x0700, 0xa1c6, 0x0000 },
- { 0x0700, 0xa1c8, 0x0000 },
- { 0x8700, 0xa1cb, 0x2000 },
- { 0x0700, 0xa1ca, 0x0000 },
- { 0x0700, 0xa1cc, 0x0000 },
- { 0x8700, 0xa20d, 0x7000 },
- { 0x8700, 0xa1ed, 0x6000 },
- { 0x8700, 0xa1dd, 0x5000 },
- { 0x8700, 0xa1d5, 0x4000 },
- { 0x8700, 0xa1d1, 0x3000 },
- { 0x8700, 0xa1cf, 0x2000 },
- { 0x0700, 0xa1ce, 0x0000 },
- { 0x0700, 0xa1d0, 0x0000 },
- { 0x8700, 0xa1d3, 0x2000 },
- { 0x0700, 0xa1d2, 0x0000 },
- { 0x0700, 0xa1d4, 0x0000 },
- { 0x8700, 0xa1d9, 0x3000 },
- { 0x8700, 0xa1d7, 0x2000 },
- { 0x0700, 0xa1d6, 0x0000 },
- { 0x0700, 0xa1d8, 0x0000 },
- { 0x8700, 0xa1db, 0x2000 },
- { 0x0700, 0xa1da, 0x0000 },
- { 0x0700, 0xa1dc, 0x0000 },
- { 0x8700, 0xa1e5, 0x4000 },
- { 0x8700, 0xa1e1, 0x3000 },
- { 0x8700, 0xa1df, 0x2000 },
- { 0x0700, 0xa1de, 0x0000 },
- { 0x0700, 0xa1e0, 0x0000 },
- { 0x8700, 0xa1e3, 0x2000 },
- { 0x0700, 0xa1e2, 0x0000 },
- { 0x0700, 0xa1e4, 0x0000 },
- { 0x8700, 0xa1e9, 0x3000 },
- { 0x8700, 0xa1e7, 0x2000 },
- { 0x0700, 0xa1e6, 0x0000 },
- { 0x0700, 0xa1e8, 0x0000 },
- { 0x8700, 0xa1eb, 0x2000 },
- { 0x0700, 0xa1ea, 0x0000 },
- { 0x0700, 0xa1ec, 0x0000 },
- { 0x8700, 0xa1fd, 0x5000 },
- { 0x8700, 0xa1f5, 0x4000 },
- { 0x8700, 0xa1f1, 0x3000 },
- { 0x8700, 0xa1ef, 0x2000 },
- { 0x0700, 0xa1ee, 0x0000 },
- { 0x0700, 0xa1f0, 0x0000 },
- { 0x8700, 0xa1f3, 0x2000 },
- { 0x0700, 0xa1f2, 0x0000 },
- { 0x0700, 0xa1f4, 0x0000 },
- { 0x8700, 0xa1f9, 0x3000 },
- { 0x8700, 0xa1f7, 0x2000 },
- { 0x0700, 0xa1f6, 0x0000 },
- { 0x0700, 0xa1f8, 0x0000 },
- { 0x8700, 0xa1fb, 0x2000 },
- { 0x0700, 0xa1fa, 0x0000 },
- { 0x0700, 0xa1fc, 0x0000 },
- { 0x8700, 0xa205, 0x4000 },
- { 0x8700, 0xa201, 0x3000 },
- { 0x8700, 0xa1ff, 0x2000 },
- { 0x0700, 0xa1fe, 0x0000 },
- { 0x0700, 0xa200, 0x0000 },
- { 0x8700, 0xa203, 0x2000 },
- { 0x0700, 0xa202, 0x0000 },
- { 0x0700, 0xa204, 0x0000 },
- { 0x8700, 0xa209, 0x3000 },
- { 0x8700, 0xa207, 0x2000 },
- { 0x0700, 0xa206, 0x0000 },
- { 0x0700, 0xa208, 0x0000 },
- { 0x8700, 0xa20b, 0x2000 },
- { 0x0700, 0xa20a, 0x0000 },
- { 0x0700, 0xa20c, 0x0000 },
- { 0x8700, 0xa22d, 0x6000 },
- { 0x8700, 0xa21d, 0x5000 },
- { 0x8700, 0xa215, 0x4000 },
- { 0x8700, 0xa211, 0x3000 },
- { 0x8700, 0xa20f, 0x2000 },
- { 0x0700, 0xa20e, 0x0000 },
- { 0x0700, 0xa210, 0x0000 },
- { 0x8700, 0xa213, 0x2000 },
- { 0x0700, 0xa212, 0x0000 },
- { 0x0700, 0xa214, 0x0000 },
- { 0x8700, 0xa219, 0x3000 },
- { 0x8700, 0xa217, 0x2000 },
- { 0x0700, 0xa216, 0x0000 },
- { 0x0700, 0xa218, 0x0000 },
- { 0x8700, 0xa21b, 0x2000 },
- { 0x0700, 0xa21a, 0x0000 },
- { 0x0700, 0xa21c, 0x0000 },
- { 0x8700, 0xa225, 0x4000 },
- { 0x8700, 0xa221, 0x3000 },
- { 0x8700, 0xa21f, 0x2000 },
- { 0x0700, 0xa21e, 0x0000 },
- { 0x0700, 0xa220, 0x0000 },
- { 0x8700, 0xa223, 0x2000 },
- { 0x0700, 0xa222, 0x0000 },
- { 0x0700, 0xa224, 0x0000 },
- { 0x8700, 0xa229, 0x3000 },
- { 0x8700, 0xa227, 0x2000 },
- { 0x0700, 0xa226, 0x0000 },
- { 0x0700, 0xa228, 0x0000 },
- { 0x8700, 0xa22b, 0x2000 },
- { 0x0700, 0xa22a, 0x0000 },
- { 0x0700, 0xa22c, 0x0000 },
- { 0x8700, 0xa23d, 0x5000 },
- { 0x8700, 0xa235, 0x4000 },
- { 0x8700, 0xa231, 0x3000 },
- { 0x8700, 0xa22f, 0x2000 },
- { 0x0700, 0xa22e, 0x0000 },
- { 0x0700, 0xa230, 0x0000 },
- { 0x8700, 0xa233, 0x2000 },
- { 0x0700, 0xa232, 0x0000 },
- { 0x0700, 0xa234, 0x0000 },
- { 0x8700, 0xa239, 0x3000 },
- { 0x8700, 0xa237, 0x2000 },
- { 0x0700, 0xa236, 0x0000 },
- { 0x0700, 0xa238, 0x0000 },
- { 0x8700, 0xa23b, 0x2000 },
- { 0x0700, 0xa23a, 0x0000 },
- { 0x0700, 0xa23c, 0x0000 },
- { 0x8700, 0xa245, 0x4000 },
- { 0x8700, 0xa241, 0x3000 },
- { 0x8700, 0xa23f, 0x2000 },
- { 0x0700, 0xa23e, 0x0000 },
- { 0x0700, 0xa240, 0x0000 },
- { 0x8700, 0xa243, 0x2000 },
- { 0x0700, 0xa242, 0x0000 },
- { 0x0700, 0xa244, 0x0000 },
- { 0x8700, 0xa249, 0x3000 },
- { 0x8700, 0xa247, 0x2000 },
- { 0x0700, 0xa246, 0x0000 },
- { 0x0700, 0xa248, 0x0000 },
- { 0x8700, 0xa24b, 0x2000 },
- { 0x0700, 0xa24a, 0x0000 },
- { 0x0700, 0xa24c, 0x0000 },
- { 0x8700, 0xa2cd, 0x8000 },
- { 0x8700, 0xa28d, 0x7000 },
- { 0x8700, 0xa26d, 0x6000 },
- { 0x8700, 0xa25d, 0x5000 },
- { 0x8700, 0xa255, 0x4000 },
- { 0x8700, 0xa251, 0x3000 },
- { 0x8700, 0xa24f, 0x2000 },
- { 0x0700, 0xa24e, 0x0000 },
- { 0x0700, 0xa250, 0x0000 },
- { 0x8700, 0xa253, 0x2000 },
- { 0x0700, 0xa252, 0x0000 },
- { 0x0700, 0xa254, 0x0000 },
- { 0x8700, 0xa259, 0x3000 },
- { 0x8700, 0xa257, 0x2000 },
- { 0x0700, 0xa256, 0x0000 },
- { 0x0700, 0xa258, 0x0000 },
- { 0x8700, 0xa25b, 0x2000 },
- { 0x0700, 0xa25a, 0x0000 },
- { 0x0700, 0xa25c, 0x0000 },
- { 0x8700, 0xa265, 0x4000 },
- { 0x8700, 0xa261, 0x3000 },
- { 0x8700, 0xa25f, 0x2000 },
- { 0x0700, 0xa25e, 0x0000 },
- { 0x0700, 0xa260, 0x0000 },
- { 0x8700, 0xa263, 0x2000 },
- { 0x0700, 0xa262, 0x0000 },
- { 0x0700, 0xa264, 0x0000 },
- { 0x8700, 0xa269, 0x3000 },
- { 0x8700, 0xa267, 0x2000 },
- { 0x0700, 0xa266, 0x0000 },
- { 0x0700, 0xa268, 0x0000 },
- { 0x8700, 0xa26b, 0x2000 },
- { 0x0700, 0xa26a, 0x0000 },
- { 0x0700, 0xa26c, 0x0000 },
- { 0x8700, 0xa27d, 0x5000 },
- { 0x8700, 0xa275, 0x4000 },
- { 0x8700, 0xa271, 0x3000 },
- { 0x8700, 0xa26f, 0x2000 },
- { 0x0700, 0xa26e, 0x0000 },
- { 0x0700, 0xa270, 0x0000 },
- { 0x8700, 0xa273, 0x2000 },
- { 0x0700, 0xa272, 0x0000 },
- { 0x0700, 0xa274, 0x0000 },
- { 0x8700, 0xa279, 0x3000 },
- { 0x8700, 0xa277, 0x2000 },
- { 0x0700, 0xa276, 0x0000 },
- { 0x0700, 0xa278, 0x0000 },
- { 0x8700, 0xa27b, 0x2000 },
- { 0x0700, 0xa27a, 0x0000 },
- { 0x0700, 0xa27c, 0x0000 },
- { 0x8700, 0xa285, 0x4000 },
- { 0x8700, 0xa281, 0x3000 },
- { 0x8700, 0xa27f, 0x2000 },
- { 0x0700, 0xa27e, 0x0000 },
- { 0x0700, 0xa280, 0x0000 },
- { 0x8700, 0xa283, 0x2000 },
- { 0x0700, 0xa282, 0x0000 },
- { 0x0700, 0xa284, 0x0000 },
- { 0x8700, 0xa289, 0x3000 },
- { 0x8700, 0xa287, 0x2000 },
- { 0x0700, 0xa286, 0x0000 },
- { 0x0700, 0xa288, 0x0000 },
- { 0x8700, 0xa28b, 0x2000 },
- { 0x0700, 0xa28a, 0x0000 },
- { 0x0700, 0xa28c, 0x0000 },
- { 0x8700, 0xa2ad, 0x6000 },
- { 0x8700, 0xa29d, 0x5000 },
- { 0x8700, 0xa295, 0x4000 },
- { 0x8700, 0xa291, 0x3000 },
- { 0x8700, 0xa28f, 0x2000 },
- { 0x0700, 0xa28e, 0x0000 },
- { 0x0700, 0xa290, 0x0000 },
- { 0x8700, 0xa293, 0x2000 },
- { 0x0700, 0xa292, 0x0000 },
- { 0x0700, 0xa294, 0x0000 },
- { 0x8700, 0xa299, 0x3000 },
- { 0x8700, 0xa297, 0x2000 },
- { 0x0700, 0xa296, 0x0000 },
- { 0x0700, 0xa298, 0x0000 },
- { 0x8700, 0xa29b, 0x2000 },
- { 0x0700, 0xa29a, 0x0000 },
- { 0x0700, 0xa29c, 0x0000 },
- { 0x8700, 0xa2a5, 0x4000 },
- { 0x8700, 0xa2a1, 0x3000 },
- { 0x8700, 0xa29f, 0x2000 },
- { 0x0700, 0xa29e, 0x0000 },
- { 0x0700, 0xa2a0, 0x0000 },
- { 0x8700, 0xa2a3, 0x2000 },
- { 0x0700, 0xa2a2, 0x0000 },
- { 0x0700, 0xa2a4, 0x0000 },
- { 0x8700, 0xa2a9, 0x3000 },
- { 0x8700, 0xa2a7, 0x2000 },
- { 0x0700, 0xa2a6, 0x0000 },
- { 0x0700, 0xa2a8, 0x0000 },
- { 0x8700, 0xa2ab, 0x2000 },
- { 0x0700, 0xa2aa, 0x0000 },
- { 0x0700, 0xa2ac, 0x0000 },
- { 0x8700, 0xa2bd, 0x5000 },
- { 0x8700, 0xa2b5, 0x4000 },
- { 0x8700, 0xa2b1, 0x3000 },
- { 0x8700, 0xa2af, 0x2000 },
- { 0x0700, 0xa2ae, 0x0000 },
- { 0x0700, 0xa2b0, 0x0000 },
- { 0x8700, 0xa2b3, 0x2000 },
- { 0x0700, 0xa2b2, 0x0000 },
- { 0x0700, 0xa2b4, 0x0000 },
- { 0x8700, 0xa2b9, 0x3000 },
- { 0x8700, 0xa2b7, 0x2000 },
- { 0x0700, 0xa2b6, 0x0000 },
- { 0x0700, 0xa2b8, 0x0000 },
- { 0x8700, 0xa2bb, 0x2000 },
- { 0x0700, 0xa2ba, 0x0000 },
- { 0x0700, 0xa2bc, 0x0000 },
- { 0x8700, 0xa2c5, 0x4000 },
- { 0x8700, 0xa2c1, 0x3000 },
- { 0x8700, 0xa2bf, 0x2000 },
- { 0x0700, 0xa2be, 0x0000 },
- { 0x0700, 0xa2c0, 0x0000 },
- { 0x8700, 0xa2c3, 0x2000 },
- { 0x0700, 0xa2c2, 0x0000 },
- { 0x0700, 0xa2c4, 0x0000 },
- { 0x8700, 0xa2c9, 0x3000 },
- { 0x8700, 0xa2c7, 0x2000 },
- { 0x0700, 0xa2c6, 0x0000 },
- { 0x0700, 0xa2c8, 0x0000 },
- { 0x8700, 0xa2cb, 0x2000 },
- { 0x0700, 0xa2ca, 0x0000 },
- { 0x0700, 0xa2cc, 0x0000 },
- { 0x8700, 0xa30d, 0x7000 },
- { 0x8700, 0xa2ed, 0x6000 },
- { 0x8700, 0xa2dd, 0x5000 },
- { 0x8700, 0xa2d5, 0x4000 },
- { 0x8700, 0xa2d1, 0x3000 },
- { 0x8700, 0xa2cf, 0x2000 },
- { 0x0700, 0xa2ce, 0x0000 },
- { 0x0700, 0xa2d0, 0x0000 },
- { 0x8700, 0xa2d3, 0x2000 },
- { 0x0700, 0xa2d2, 0x0000 },
- { 0x0700, 0xa2d4, 0x0000 },
- { 0x8700, 0xa2d9, 0x3000 },
- { 0x8700, 0xa2d7, 0x2000 },
- { 0x0700, 0xa2d6, 0x0000 },
- { 0x0700, 0xa2d8, 0x0000 },
- { 0x8700, 0xa2db, 0x2000 },
- { 0x0700, 0xa2da, 0x0000 },
- { 0x0700, 0xa2dc, 0x0000 },
- { 0x8700, 0xa2e5, 0x4000 },
- { 0x8700, 0xa2e1, 0x3000 },
- { 0x8700, 0xa2df, 0x2000 },
- { 0x0700, 0xa2de, 0x0000 },
- { 0x0700, 0xa2e0, 0x0000 },
- { 0x8700, 0xa2e3, 0x2000 },
- { 0x0700, 0xa2e2, 0x0000 },
- { 0x0700, 0xa2e4, 0x0000 },
- { 0x8700, 0xa2e9, 0x3000 },
- { 0x8700, 0xa2e7, 0x2000 },
- { 0x0700, 0xa2e6, 0x0000 },
- { 0x0700, 0xa2e8, 0x0000 },
- { 0x8700, 0xa2eb, 0x2000 },
- { 0x0700, 0xa2ea, 0x0000 },
- { 0x0700, 0xa2ec, 0x0000 },
- { 0x8700, 0xa2fd, 0x5000 },
- { 0x8700, 0xa2f5, 0x4000 },
- { 0x8700, 0xa2f1, 0x3000 },
- { 0x8700, 0xa2ef, 0x2000 },
- { 0x0700, 0xa2ee, 0x0000 },
- { 0x0700, 0xa2f0, 0x0000 },
- { 0x8700, 0xa2f3, 0x2000 },
- { 0x0700, 0xa2f2, 0x0000 },
- { 0x0700, 0xa2f4, 0x0000 },
- { 0x8700, 0xa2f9, 0x3000 },
- { 0x8700, 0xa2f7, 0x2000 },
- { 0x0700, 0xa2f6, 0x0000 },
- { 0x0700, 0xa2f8, 0x0000 },
- { 0x8700, 0xa2fb, 0x2000 },
- { 0x0700, 0xa2fa, 0x0000 },
- { 0x0700, 0xa2fc, 0x0000 },
- { 0x8700, 0xa305, 0x4000 },
- { 0x8700, 0xa301, 0x3000 },
- { 0x8700, 0xa2ff, 0x2000 },
- { 0x0700, 0xa2fe, 0x0000 },
- { 0x0700, 0xa300, 0x0000 },
- { 0x8700, 0xa303, 0x2000 },
- { 0x0700, 0xa302, 0x0000 },
- { 0x0700, 0xa304, 0x0000 },
- { 0x8700, 0xa309, 0x3000 },
- { 0x8700, 0xa307, 0x2000 },
- { 0x0700, 0xa306, 0x0000 },
- { 0x0700, 0xa308, 0x0000 },
- { 0x8700, 0xa30b, 0x2000 },
- { 0x0700, 0xa30a, 0x0000 },
- { 0x0700, 0xa30c, 0x0000 },
- { 0x8700, 0xa32d, 0x6000 },
- { 0x8700, 0xa31d, 0x5000 },
- { 0x8700, 0xa315, 0x4000 },
- { 0x8700, 0xa311, 0x3000 },
- { 0x8700, 0xa30f, 0x2000 },
- { 0x0700, 0xa30e, 0x0000 },
- { 0x0700, 0xa310, 0x0000 },
- { 0x8700, 0xa313, 0x2000 },
- { 0x0700, 0xa312, 0x0000 },
- { 0x0700, 0xa314, 0x0000 },
- { 0x8700, 0xa319, 0x3000 },
- { 0x8700, 0xa317, 0x2000 },
- { 0x0700, 0xa316, 0x0000 },
- { 0x0700, 0xa318, 0x0000 },
- { 0x8700, 0xa31b, 0x2000 },
- { 0x0700, 0xa31a, 0x0000 },
- { 0x0700, 0xa31c, 0x0000 },
- { 0x8700, 0xa325, 0x4000 },
- { 0x8700, 0xa321, 0x3000 },
- { 0x8700, 0xa31f, 0x2000 },
- { 0x0700, 0xa31e, 0x0000 },
- { 0x0700, 0xa320, 0x0000 },
- { 0x8700, 0xa323, 0x2000 },
- { 0x0700, 0xa322, 0x0000 },
- { 0x0700, 0xa324, 0x0000 },
- { 0x8700, 0xa329, 0x3000 },
- { 0x8700, 0xa327, 0x2000 },
- { 0x0700, 0xa326, 0x0000 },
- { 0x0700, 0xa328, 0x0000 },
- { 0x8700, 0xa32b, 0x2000 },
- { 0x0700, 0xa32a, 0x0000 },
- { 0x0700, 0xa32c, 0x0000 },
- { 0x8700, 0xa33d, 0x5000 },
- { 0x8700, 0xa335, 0x4000 },
- { 0x8700, 0xa331, 0x3000 },
- { 0x8700, 0xa32f, 0x2000 },
- { 0x0700, 0xa32e, 0x0000 },
- { 0x0700, 0xa330, 0x0000 },
- { 0x8700, 0xa333, 0x2000 },
- { 0x0700, 0xa332, 0x0000 },
- { 0x0700, 0xa334, 0x0000 },
- { 0x8700, 0xa339, 0x3000 },
- { 0x8700, 0xa337, 0x2000 },
- { 0x0700, 0xa336, 0x0000 },
- { 0x0700, 0xa338, 0x0000 },
- { 0x8700, 0xa33b, 0x2000 },
- { 0x0700, 0xa33a, 0x0000 },
- { 0x0700, 0xa33c, 0x0000 },
- { 0x8700, 0xa345, 0x4000 },
- { 0x8700, 0xa341, 0x3000 },
- { 0x8700, 0xa33f, 0x2000 },
- { 0x0700, 0xa33e, 0x0000 },
- { 0x0700, 0xa340, 0x0000 },
- { 0x8700, 0xa343, 0x2000 },
- { 0x0700, 0xa342, 0x0000 },
- { 0x0700, 0xa344, 0x0000 },
- { 0x8700, 0xa349, 0x3000 },
- { 0x8700, 0xa347, 0x2000 },
- { 0x0700, 0xa346, 0x0000 },
- { 0x0700, 0xa348, 0x0000 },
- { 0x8700, 0xa34b, 0x2000 },
- { 0x0700, 0xa34a, 0x0000 },
- { 0x0700, 0xa34c, 0x0000 },
- { 0x8700, 0xfc4d, 0xb000 },
- { 0x8700, 0xf97f, 0xa000 },
- { 0x8700, 0xa44d, 0x9000 },
- { 0x8700, 0xa3cd, 0x8000 },
- { 0x8700, 0xa38d, 0x7000 },
- { 0x8700, 0xa36d, 0x6000 },
- { 0x8700, 0xa35d, 0x5000 },
- { 0x8700, 0xa355, 0x4000 },
- { 0x8700, 0xa351, 0x3000 },
- { 0x8700, 0xa34f, 0x2000 },
- { 0x0700, 0xa34e, 0x0000 },
- { 0x0700, 0xa350, 0x0000 },
- { 0x8700, 0xa353, 0x2000 },
- { 0x0700, 0xa352, 0x0000 },
- { 0x0700, 0xa354, 0x0000 },
- { 0x8700, 0xa359, 0x3000 },
- { 0x8700, 0xa357, 0x2000 },
- { 0x0700, 0xa356, 0x0000 },
- { 0x0700, 0xa358, 0x0000 },
- { 0x8700, 0xa35b, 0x2000 },
- { 0x0700, 0xa35a, 0x0000 },
- { 0x0700, 0xa35c, 0x0000 },
- { 0x8700, 0xa365, 0x4000 },
- { 0x8700, 0xa361, 0x3000 },
- { 0x8700, 0xa35f, 0x2000 },
- { 0x0700, 0xa35e, 0x0000 },
- { 0x0700, 0xa360, 0x0000 },
- { 0x8700, 0xa363, 0x2000 },
- { 0x0700, 0xa362, 0x0000 },
- { 0x0700, 0xa364, 0x0000 },
- { 0x8700, 0xa369, 0x3000 },
- { 0x8700, 0xa367, 0x2000 },
- { 0x0700, 0xa366, 0x0000 },
- { 0x0700, 0xa368, 0x0000 },
- { 0x8700, 0xa36b, 0x2000 },
- { 0x0700, 0xa36a, 0x0000 },
- { 0x0700, 0xa36c, 0x0000 },
- { 0x8700, 0xa37d, 0x5000 },
- { 0x8700, 0xa375, 0x4000 },
- { 0x8700, 0xa371, 0x3000 },
- { 0x8700, 0xa36f, 0x2000 },
- { 0x0700, 0xa36e, 0x0000 },
- { 0x0700, 0xa370, 0x0000 },
- { 0x8700, 0xa373, 0x2000 },
- { 0x0700, 0xa372, 0x0000 },
- { 0x0700, 0xa374, 0x0000 },
- { 0x8700, 0xa379, 0x3000 },
- { 0x8700, 0xa377, 0x2000 },
- { 0x0700, 0xa376, 0x0000 },
- { 0x0700, 0xa378, 0x0000 },
- { 0x8700, 0xa37b, 0x2000 },
- { 0x0700, 0xa37a, 0x0000 },
- { 0x0700, 0xa37c, 0x0000 },
- { 0x8700, 0xa385, 0x4000 },
- { 0x8700, 0xa381, 0x3000 },
- { 0x8700, 0xa37f, 0x2000 },
- { 0x0700, 0xa37e, 0x0000 },
- { 0x0700, 0xa380, 0x0000 },
- { 0x8700, 0xa383, 0x2000 },
- { 0x0700, 0xa382, 0x0000 },
- { 0x0700, 0xa384, 0x0000 },
- { 0x8700, 0xa389, 0x3000 },
- { 0x8700, 0xa387, 0x2000 },
- { 0x0700, 0xa386, 0x0000 },
- { 0x0700, 0xa388, 0x0000 },
- { 0x8700, 0xa38b, 0x2000 },
- { 0x0700, 0xa38a, 0x0000 },
- { 0x0700, 0xa38c, 0x0000 },
- { 0x8700, 0xa3ad, 0x6000 },
- { 0x8700, 0xa39d, 0x5000 },
- { 0x8700, 0xa395, 0x4000 },
- { 0x8700, 0xa391, 0x3000 },
- { 0x8700, 0xa38f, 0x2000 },
- { 0x0700, 0xa38e, 0x0000 },
- { 0x0700, 0xa390, 0x0000 },
- { 0x8700, 0xa393, 0x2000 },
- { 0x0700, 0xa392, 0x0000 },
- { 0x0700, 0xa394, 0x0000 },
- { 0x8700, 0xa399, 0x3000 },
- { 0x8700, 0xa397, 0x2000 },
- { 0x0700, 0xa396, 0x0000 },
- { 0x0700, 0xa398, 0x0000 },
- { 0x8700, 0xa39b, 0x2000 },
- { 0x0700, 0xa39a, 0x0000 },
- { 0x0700, 0xa39c, 0x0000 },
- { 0x8700, 0xa3a5, 0x4000 },
- { 0x8700, 0xa3a1, 0x3000 },
- { 0x8700, 0xa39f, 0x2000 },
- { 0x0700, 0xa39e, 0x0000 },
- { 0x0700, 0xa3a0, 0x0000 },
- { 0x8700, 0xa3a3, 0x2000 },
- { 0x0700, 0xa3a2, 0x0000 },
- { 0x0700, 0xa3a4, 0x0000 },
- { 0x8700, 0xa3a9, 0x3000 },
- { 0x8700, 0xa3a7, 0x2000 },
- { 0x0700, 0xa3a6, 0x0000 },
- { 0x0700, 0xa3a8, 0x0000 },
- { 0x8700, 0xa3ab, 0x2000 },
- { 0x0700, 0xa3aa, 0x0000 },
- { 0x0700, 0xa3ac, 0x0000 },
- { 0x8700, 0xa3bd, 0x5000 },
- { 0x8700, 0xa3b5, 0x4000 },
- { 0x8700, 0xa3b1, 0x3000 },
- { 0x8700, 0xa3af, 0x2000 },
- { 0x0700, 0xa3ae, 0x0000 },
- { 0x0700, 0xa3b0, 0x0000 },
- { 0x8700, 0xa3b3, 0x2000 },
- { 0x0700, 0xa3b2, 0x0000 },
- { 0x0700, 0xa3b4, 0x0000 },
- { 0x8700, 0xa3b9, 0x3000 },
- { 0x8700, 0xa3b7, 0x2000 },
- { 0x0700, 0xa3b6, 0x0000 },
- { 0x0700, 0xa3b8, 0x0000 },
- { 0x8700, 0xa3bb, 0x2000 },
- { 0x0700, 0xa3ba, 0x0000 },
- { 0x0700, 0xa3bc, 0x0000 },
- { 0x8700, 0xa3c5, 0x4000 },
- { 0x8700, 0xa3c1, 0x3000 },
- { 0x8700, 0xa3bf, 0x2000 },
- { 0x0700, 0xa3be, 0x0000 },
- { 0x0700, 0xa3c0, 0x0000 },
- { 0x8700, 0xa3c3, 0x2000 },
- { 0x0700, 0xa3c2, 0x0000 },
- { 0x0700, 0xa3c4, 0x0000 },
- { 0x8700, 0xa3c9, 0x3000 },
- { 0x8700, 0xa3c7, 0x2000 },
- { 0x0700, 0xa3c6, 0x0000 },
- { 0x0700, 0xa3c8, 0x0000 },
- { 0x8700, 0xa3cb, 0x2000 },
- { 0x0700, 0xa3ca, 0x0000 },
- { 0x0700, 0xa3cc, 0x0000 },
- { 0x8700, 0xa40d, 0x7000 },
- { 0x8700, 0xa3ed, 0x6000 },
- { 0x8700, 0xa3dd, 0x5000 },
- { 0x8700, 0xa3d5, 0x4000 },
- { 0x8700, 0xa3d1, 0x3000 },
- { 0x8700, 0xa3cf, 0x2000 },
- { 0x0700, 0xa3ce, 0x0000 },
- { 0x0700, 0xa3d0, 0x0000 },
- { 0x8700, 0xa3d3, 0x2000 },
- { 0x0700, 0xa3d2, 0x0000 },
- { 0x0700, 0xa3d4, 0x0000 },
- { 0x8700, 0xa3d9, 0x3000 },
- { 0x8700, 0xa3d7, 0x2000 },
- { 0x0700, 0xa3d6, 0x0000 },
- { 0x0700, 0xa3d8, 0x0000 },
- { 0x8700, 0xa3db, 0x2000 },
- { 0x0700, 0xa3da, 0x0000 },
- { 0x0700, 0xa3dc, 0x0000 },
- { 0x8700, 0xa3e5, 0x4000 },
- { 0x8700, 0xa3e1, 0x3000 },
- { 0x8700, 0xa3df, 0x2000 },
- { 0x0700, 0xa3de, 0x0000 },
- { 0x0700, 0xa3e0, 0x0000 },
- { 0x8700, 0xa3e3, 0x2000 },
- { 0x0700, 0xa3e2, 0x0000 },
- { 0x0700, 0xa3e4, 0x0000 },
- { 0x8700, 0xa3e9, 0x3000 },
- { 0x8700, 0xa3e7, 0x2000 },
- { 0x0700, 0xa3e6, 0x0000 },
- { 0x0700, 0xa3e8, 0x0000 },
- { 0x8700, 0xa3eb, 0x2000 },
- { 0x0700, 0xa3ea, 0x0000 },
- { 0x0700, 0xa3ec, 0x0000 },
- { 0x8700, 0xa3fd, 0x5000 },
- { 0x8700, 0xa3f5, 0x4000 },
- { 0x8700, 0xa3f1, 0x3000 },
- { 0x8700, 0xa3ef, 0x2000 },
- { 0x0700, 0xa3ee, 0x0000 },
- { 0x0700, 0xa3f0, 0x0000 },
- { 0x8700, 0xa3f3, 0x2000 },
- { 0x0700, 0xa3f2, 0x0000 },
- { 0x0700, 0xa3f4, 0x0000 },
- { 0x8700, 0xa3f9, 0x3000 },
- { 0x8700, 0xa3f7, 0x2000 },
- { 0x0700, 0xa3f6, 0x0000 },
- { 0x0700, 0xa3f8, 0x0000 },
- { 0x8700, 0xa3fb, 0x2000 },
- { 0x0700, 0xa3fa, 0x0000 },
- { 0x0700, 0xa3fc, 0x0000 },
- { 0x8700, 0xa405, 0x4000 },
- { 0x8700, 0xa401, 0x3000 },
- { 0x8700, 0xa3ff, 0x2000 },
- { 0x0700, 0xa3fe, 0x0000 },
- { 0x0700, 0xa400, 0x0000 },
- { 0x8700, 0xa403, 0x2000 },
- { 0x0700, 0xa402, 0x0000 },
- { 0x0700, 0xa404, 0x0000 },
- { 0x8700, 0xa409, 0x3000 },
- { 0x8700, 0xa407, 0x2000 },
- { 0x0700, 0xa406, 0x0000 },
- { 0x0700, 0xa408, 0x0000 },
- { 0x8700, 0xa40b, 0x2000 },
- { 0x0700, 0xa40a, 0x0000 },
- { 0x0700, 0xa40c, 0x0000 },
- { 0x8700, 0xa42d, 0x6000 },
- { 0x8700, 0xa41d, 0x5000 },
- { 0x8700, 0xa415, 0x4000 },
- { 0x8700, 0xa411, 0x3000 },
- { 0x8700, 0xa40f, 0x2000 },
- { 0x0700, 0xa40e, 0x0000 },
- { 0x0700, 0xa410, 0x0000 },
- { 0x8700, 0xa413, 0x2000 },
- { 0x0700, 0xa412, 0x0000 },
- { 0x0700, 0xa414, 0x0000 },
- { 0x8700, 0xa419, 0x3000 },
- { 0x8700, 0xa417, 0x2000 },
- { 0x0700, 0xa416, 0x0000 },
- { 0x0700, 0xa418, 0x0000 },
- { 0x8700, 0xa41b, 0x2000 },
- { 0x0700, 0xa41a, 0x0000 },
- { 0x0700, 0xa41c, 0x0000 },
- { 0x8700, 0xa425, 0x4000 },
- { 0x8700, 0xa421, 0x3000 },
- { 0x8700, 0xa41f, 0x2000 },
- { 0x0700, 0xa41e, 0x0000 },
- { 0x0700, 0xa420, 0x0000 },
- { 0x8700, 0xa423, 0x2000 },
- { 0x0700, 0xa422, 0x0000 },
- { 0x0700, 0xa424, 0x0000 },
- { 0x8700, 0xa429, 0x3000 },
- { 0x8700, 0xa427, 0x2000 },
- { 0x0700, 0xa426, 0x0000 },
- { 0x0700, 0xa428, 0x0000 },
- { 0x8700, 0xa42b, 0x2000 },
- { 0x0700, 0xa42a, 0x0000 },
- { 0x0700, 0xa42c, 0x0000 },
- { 0x8700, 0xa43d, 0x5000 },
- { 0x8700, 0xa435, 0x4000 },
- { 0x8700, 0xa431, 0x3000 },
- { 0x8700, 0xa42f, 0x2000 },
- { 0x0700, 0xa42e, 0x0000 },
- { 0x0700, 0xa430, 0x0000 },
- { 0x8700, 0xa433, 0x2000 },
- { 0x0700, 0xa432, 0x0000 },
- { 0x0700, 0xa434, 0x0000 },
- { 0x8700, 0xa439, 0x3000 },
- { 0x8700, 0xa437, 0x2000 },
- { 0x0700, 0xa436, 0x0000 },
- { 0x0700, 0xa438, 0x0000 },
- { 0x8700, 0xa43b, 0x2000 },
- { 0x0700, 0xa43a, 0x0000 },
- { 0x0700, 0xa43c, 0x0000 },
- { 0x8700, 0xa445, 0x4000 },
- { 0x8700, 0xa441, 0x3000 },
- { 0x8700, 0xa43f, 0x2000 },
- { 0x0700, 0xa43e, 0x0000 },
- { 0x0700, 0xa440, 0x0000 },
- { 0x8700, 0xa443, 0x2000 },
- { 0x0700, 0xa442, 0x0000 },
- { 0x0700, 0xa444, 0x0000 },
- { 0x8700, 0xa449, 0x3000 },
- { 0x8700, 0xa447, 0x2000 },
- { 0x0700, 0xa446, 0x0000 },
- { 0x0700, 0xa448, 0x0000 },
- { 0x8700, 0xa44b, 0x2000 },
- { 0x0700, 0xa44a, 0x0000 },
- { 0x0700, 0xa44c, 0x0000 },
- { 0x8300, 0xf8ff, 0x8000 },
- { 0x9a00, 0xa490, 0x7000 },
- { 0x8700, 0xa46d, 0x6000 },
- { 0x8700, 0xa45d, 0x5000 },
- { 0x8700, 0xa455, 0x4000 },
- { 0x8700, 0xa451, 0x3000 },
- { 0x8700, 0xa44f, 0x2000 },
- { 0x0700, 0xa44e, 0x0000 },
- { 0x0700, 0xa450, 0x0000 },
- { 0x8700, 0xa453, 0x2000 },
- { 0x0700, 0xa452, 0x0000 },
- { 0x0700, 0xa454, 0x0000 },
- { 0x8700, 0xa459, 0x3000 },
- { 0x8700, 0xa457, 0x2000 },
- { 0x0700, 0xa456, 0x0000 },
- { 0x0700, 0xa458, 0x0000 },
- { 0x8700, 0xa45b, 0x2000 },
- { 0x0700, 0xa45a, 0x0000 },
- { 0x0700, 0xa45c, 0x0000 },
- { 0x8700, 0xa465, 0x4000 },
- { 0x8700, 0xa461, 0x3000 },
- { 0x8700, 0xa45f, 0x2000 },
- { 0x0700, 0xa45e, 0x0000 },
- { 0x0700, 0xa460, 0x0000 },
- { 0x8700, 0xa463, 0x2000 },
- { 0x0700, 0xa462, 0x0000 },
- { 0x0700, 0xa464, 0x0000 },
- { 0x8700, 0xa469, 0x3000 },
- { 0x8700, 0xa467, 0x2000 },
- { 0x0700, 0xa466, 0x0000 },
- { 0x0700, 0xa468, 0x0000 },
- { 0x8700, 0xa46b, 0x2000 },
- { 0x0700, 0xa46a, 0x0000 },
- { 0x0700, 0xa46c, 0x0000 },
- { 0x8700, 0xa47d, 0x5000 },
- { 0x8700, 0xa475, 0x4000 },
- { 0x8700, 0xa471, 0x3000 },
- { 0x8700, 0xa46f, 0x2000 },
- { 0x0700, 0xa46e, 0x0000 },
- { 0x0700, 0xa470, 0x0000 },
- { 0x8700, 0xa473, 0x2000 },
- { 0x0700, 0xa472, 0x0000 },
- { 0x0700, 0xa474, 0x0000 },
- { 0x8700, 0xa479, 0x3000 },
- { 0x8700, 0xa477, 0x2000 },
- { 0x0700, 0xa476, 0x0000 },
- { 0x0700, 0xa478, 0x0000 },
- { 0x8700, 0xa47b, 0x2000 },
- { 0x0700, 0xa47a, 0x0000 },
- { 0x0700, 0xa47c, 0x0000 },
- { 0x8700, 0xa485, 0x4000 },
- { 0x8700, 0xa481, 0x3000 },
- { 0x8700, 0xa47f, 0x2000 },
- { 0x0700, 0xa47e, 0x0000 },
- { 0x0700, 0xa480, 0x0000 },
- { 0x8700, 0xa483, 0x2000 },
- { 0x0700, 0xa482, 0x0000 },
- { 0x0700, 0xa484, 0x0000 },
- { 0x8700, 0xa489, 0x3000 },
- { 0x8700, 0xa487, 0x2000 },
- { 0x0700, 0xa486, 0x0000 },
- { 0x0700, 0xa488, 0x0000 },
- { 0x8700, 0xa48b, 0x2000 },
- { 0x0700, 0xa48a, 0x0000 },
- { 0x0700, 0xa48c, 0x0000 },
- { 0x9a00, 0xa4b0, 0x6000 },
- { 0x9a00, 0xa4a0, 0x5000 },
- { 0x9a00, 0xa498, 0x4000 },
- { 0x9a00, 0xa494, 0x3000 },
- { 0x9a00, 0xa492, 0x2000 },
- { 0x1a00, 0xa491, 0x0000 },
- { 0x1a00, 0xa493, 0x0000 },
- { 0x9a00, 0xa496, 0x2000 },
- { 0x1a00, 0xa495, 0x0000 },
- { 0x1a00, 0xa497, 0x0000 },
- { 0x9a00, 0xa49c, 0x3000 },
- { 0x9a00, 0xa49a, 0x2000 },
- { 0x1a00, 0xa499, 0x0000 },
- { 0x1a00, 0xa49b, 0x0000 },
- { 0x9a00, 0xa49e, 0x2000 },
- { 0x1a00, 0xa49d, 0x0000 },
- { 0x1a00, 0xa49f, 0x0000 },
- { 0x9a00, 0xa4a8, 0x4000 },
- { 0x9a00, 0xa4a4, 0x3000 },
- { 0x9a00, 0xa4a2, 0x2000 },
- { 0x1a00, 0xa4a1, 0x0000 },
- { 0x1a00, 0xa4a3, 0x0000 },
- { 0x9a00, 0xa4a6, 0x2000 },
- { 0x1a00, 0xa4a5, 0x0000 },
- { 0x1a00, 0xa4a7, 0x0000 },
- { 0x9a00, 0xa4ac, 0x3000 },
- { 0x9a00, 0xa4aa, 0x2000 },
- { 0x1a00, 0xa4a9, 0x0000 },
- { 0x1a00, 0xa4ab, 0x0000 },
- { 0x9a00, 0xa4ae, 0x2000 },
- { 0x1a00, 0xa4ad, 0x0000 },
- { 0x1a00, 0xa4af, 0x0000 },
- { 0x9a00, 0xa4c0, 0x5000 },
- { 0x9a00, 0xa4b8, 0x4000 },
- { 0x9a00, 0xa4b4, 0x3000 },
- { 0x9a00, 0xa4b2, 0x2000 },
- { 0x1a00, 0xa4b1, 0x0000 },
- { 0x1a00, 0xa4b3, 0x0000 },
- { 0x9a00, 0xa4b6, 0x2000 },
- { 0x1a00, 0xa4b5, 0x0000 },
- { 0x1a00, 0xa4b7, 0x0000 },
- { 0x9a00, 0xa4bc, 0x3000 },
- { 0x9a00, 0xa4ba, 0x2000 },
- { 0x1a00, 0xa4b9, 0x0000 },
- { 0x1a00, 0xa4bb, 0x0000 },
- { 0x9a00, 0xa4be, 0x2000 },
- { 0x1a00, 0xa4bd, 0x0000 },
- { 0x1a00, 0xa4bf, 0x0000 },
- { 0x8700, 0xd7a3, 0x4000 },
- { 0x9a00, 0xa4c4, 0x3000 },
- { 0x9a00, 0xa4c2, 0x2000 },
- { 0x1a00, 0xa4c1, 0x0000 },
- { 0x1a00, 0xa4c3, 0x0000 },
- { 0x9a00, 0xa4c6, 0x2000 },
- { 0x1a00, 0xa4c5, 0x0000 },
- { 0x0700, 0xac00, 0x0000 },
- { 0x8400, 0xdbff, 0x3000 },
- { 0x8400, 0xdb7f, 0x2000 },
- { 0x0400, 0xd800, 0x0000 },
- { 0x0400, 0xdb80, 0x0000 },
- { 0x8400, 0xdfff, 0x2000 },
- { 0x0400, 0xdc00, 0x0000 },
- { 0x0300, 0xe000, 0x0000 },
- { 0x8700, 0xf93f, 0x7000 },
- { 0x8700, 0xf91f, 0x6000 },
- { 0x8700, 0xf90f, 0x5000 },
- { 0x8700, 0xf907, 0x4000 },
- { 0x8700, 0xf903, 0x3000 },
- { 0x8700, 0xf901, 0x2000 },
- { 0x0700, 0xf900, 0x0000 },
- { 0x0700, 0xf902, 0x0000 },
- { 0x8700, 0xf905, 0x2000 },
- { 0x0700, 0xf904, 0x0000 },
- { 0x0700, 0xf906, 0x0000 },
- { 0x8700, 0xf90b, 0x3000 },
- { 0x8700, 0xf909, 0x2000 },
- { 0x0700, 0xf908, 0x0000 },
- { 0x0700, 0xf90a, 0x0000 },
- { 0x8700, 0xf90d, 0x2000 },
- { 0x0700, 0xf90c, 0x0000 },
- { 0x0700, 0xf90e, 0x0000 },
- { 0x8700, 0xf917, 0x4000 },
- { 0x8700, 0xf913, 0x3000 },
- { 0x8700, 0xf911, 0x2000 },
- { 0x0700, 0xf910, 0x0000 },
- { 0x0700, 0xf912, 0x0000 },
- { 0x8700, 0xf915, 0x2000 },
- { 0x0700, 0xf914, 0x0000 },
- { 0x0700, 0xf916, 0x0000 },
- { 0x8700, 0xf91b, 0x3000 },
- { 0x8700, 0xf919, 0x2000 },
- { 0x0700, 0xf918, 0x0000 },
- { 0x0700, 0xf91a, 0x0000 },
- { 0x8700, 0xf91d, 0x2000 },
- { 0x0700, 0xf91c, 0x0000 },
- { 0x0700, 0xf91e, 0x0000 },
- { 0x8700, 0xf92f, 0x5000 },
- { 0x8700, 0xf927, 0x4000 },
- { 0x8700, 0xf923, 0x3000 },
- { 0x8700, 0xf921, 0x2000 },
- { 0x0700, 0xf920, 0x0000 },
- { 0x0700, 0xf922, 0x0000 },
- { 0x8700, 0xf925, 0x2000 },
- { 0x0700, 0xf924, 0x0000 },
- { 0x0700, 0xf926, 0x0000 },
- { 0x8700, 0xf92b, 0x3000 },
- { 0x8700, 0xf929, 0x2000 },
- { 0x0700, 0xf928, 0x0000 },
- { 0x0700, 0xf92a, 0x0000 },
- { 0x8700, 0xf92d, 0x2000 },
- { 0x0700, 0xf92c, 0x0000 },
- { 0x0700, 0xf92e, 0x0000 },
- { 0x8700, 0xf937, 0x4000 },
- { 0x8700, 0xf933, 0x3000 },
- { 0x8700, 0xf931, 0x2000 },
- { 0x0700, 0xf930, 0x0000 },
- { 0x0700, 0xf932, 0x0000 },
- { 0x8700, 0xf935, 0x2000 },
- { 0x0700, 0xf934, 0x0000 },
- { 0x0700, 0xf936, 0x0000 },
- { 0x8700, 0xf93b, 0x3000 },
- { 0x8700, 0xf939, 0x2000 },
- { 0x0700, 0xf938, 0x0000 },
- { 0x0700, 0xf93a, 0x0000 },
- { 0x8700, 0xf93d, 0x2000 },
- { 0x0700, 0xf93c, 0x0000 },
- { 0x0700, 0xf93e, 0x0000 },
- { 0x8700, 0xf95f, 0x6000 },
- { 0x8700, 0xf94f, 0x5000 },
- { 0x8700, 0xf947, 0x4000 },
- { 0x8700, 0xf943, 0x3000 },
- { 0x8700, 0xf941, 0x2000 },
- { 0x0700, 0xf940, 0x0000 },
- { 0x0700, 0xf942, 0x0000 },
- { 0x8700, 0xf945, 0x2000 },
- { 0x0700, 0xf944, 0x0000 },
- { 0x0700, 0xf946, 0x0000 },
- { 0x8700, 0xf94b, 0x3000 },
- { 0x8700, 0xf949, 0x2000 },
- { 0x0700, 0xf948, 0x0000 },
- { 0x0700, 0xf94a, 0x0000 },
- { 0x8700, 0xf94d, 0x2000 },
- { 0x0700, 0xf94c, 0x0000 },
- { 0x0700, 0xf94e, 0x0000 },
- { 0x8700, 0xf957, 0x4000 },
- { 0x8700, 0xf953, 0x3000 },
- { 0x8700, 0xf951, 0x2000 },
- { 0x0700, 0xf950, 0x0000 },
- { 0x0700, 0xf952, 0x0000 },
- { 0x8700, 0xf955, 0x2000 },
- { 0x0700, 0xf954, 0x0000 },
- { 0x0700, 0xf956, 0x0000 },
- { 0x8700, 0xf95b, 0x3000 },
- { 0x8700, 0xf959, 0x2000 },
- { 0x0700, 0xf958, 0x0000 },
- { 0x0700, 0xf95a, 0x0000 },
- { 0x8700, 0xf95d, 0x2000 },
- { 0x0700, 0xf95c, 0x0000 },
- { 0x0700, 0xf95e, 0x0000 },
- { 0x8700, 0xf96f, 0x5000 },
- { 0x8700, 0xf967, 0x4000 },
- { 0x8700, 0xf963, 0x3000 },
- { 0x8700, 0xf961, 0x2000 },
- { 0x0700, 0xf960, 0x0000 },
- { 0x0700, 0xf962, 0x0000 },
- { 0x8700, 0xf965, 0x2000 },
- { 0x0700, 0xf964, 0x0000 },
- { 0x0700, 0xf966, 0x0000 },
- { 0x8700, 0xf96b, 0x3000 },
- { 0x8700, 0xf969, 0x2000 },
- { 0x0700, 0xf968, 0x0000 },
- { 0x0700, 0xf96a, 0x0000 },
- { 0x8700, 0xf96d, 0x2000 },
- { 0x0700, 0xf96c, 0x0000 },
- { 0x0700, 0xf96e, 0x0000 },
- { 0x8700, 0xf977, 0x4000 },
- { 0x8700, 0xf973, 0x3000 },
- { 0x8700, 0xf971, 0x2000 },
- { 0x0700, 0xf970, 0x0000 },
- { 0x0700, 0xf972, 0x0000 },
- { 0x8700, 0xf975, 0x2000 },
- { 0x0700, 0xf974, 0x0000 },
- { 0x0700, 0xf976, 0x0000 },
- { 0x8700, 0xf97b, 0x3000 },
- { 0x8700, 0xf979, 0x2000 },
- { 0x0700, 0xf978, 0x0000 },
- { 0x0700, 0xf97a, 0x0000 },
- { 0x8700, 0xf97d, 0x2000 },
- { 0x0700, 0xf97c, 0x0000 },
- { 0x0700, 0xf97e, 0x0000 },
- { 0x8700, 0xfb27, 0x9000 },
- { 0x8700, 0xf9ff, 0x8000 },
- { 0x8700, 0xf9bf, 0x7000 },
- { 0x8700, 0xf99f, 0x6000 },
- { 0x8700, 0xf98f, 0x5000 },
- { 0x8700, 0xf987, 0x4000 },
- { 0x8700, 0xf983, 0x3000 },
- { 0x8700, 0xf981, 0x2000 },
- { 0x0700, 0xf980, 0x0000 },
- { 0x0700, 0xf982, 0x0000 },
- { 0x8700, 0xf985, 0x2000 },
- { 0x0700, 0xf984, 0x0000 },
- { 0x0700, 0xf986, 0x0000 },
- { 0x8700, 0xf98b, 0x3000 },
- { 0x8700, 0xf989, 0x2000 },
- { 0x0700, 0xf988, 0x0000 },
- { 0x0700, 0xf98a, 0x0000 },
- { 0x8700, 0xf98d, 0x2000 },
- { 0x0700, 0xf98c, 0x0000 },
- { 0x0700, 0xf98e, 0x0000 },
- { 0x8700, 0xf997, 0x4000 },
- { 0x8700, 0xf993, 0x3000 },
- { 0x8700, 0xf991, 0x2000 },
- { 0x0700, 0xf990, 0x0000 },
- { 0x0700, 0xf992, 0x0000 },
- { 0x8700, 0xf995, 0x2000 },
- { 0x0700, 0xf994, 0x0000 },
- { 0x0700, 0xf996, 0x0000 },
- { 0x8700, 0xf99b, 0x3000 },
- { 0x8700, 0xf999, 0x2000 },
- { 0x0700, 0xf998, 0x0000 },
- { 0x0700, 0xf99a, 0x0000 },
- { 0x8700, 0xf99d, 0x2000 },
- { 0x0700, 0xf99c, 0x0000 },
- { 0x0700, 0xf99e, 0x0000 },
- { 0x8700, 0xf9af, 0x5000 },
- { 0x8700, 0xf9a7, 0x4000 },
- { 0x8700, 0xf9a3, 0x3000 },
- { 0x8700, 0xf9a1, 0x2000 },
- { 0x0700, 0xf9a0, 0x0000 },
- { 0x0700, 0xf9a2, 0x0000 },
- { 0x8700, 0xf9a5, 0x2000 },
- { 0x0700, 0xf9a4, 0x0000 },
- { 0x0700, 0xf9a6, 0x0000 },
- { 0x8700, 0xf9ab, 0x3000 },
- { 0x8700, 0xf9a9, 0x2000 },
- { 0x0700, 0xf9a8, 0x0000 },
- { 0x0700, 0xf9aa, 0x0000 },
- { 0x8700, 0xf9ad, 0x2000 },
- { 0x0700, 0xf9ac, 0x0000 },
- { 0x0700, 0xf9ae, 0x0000 },
- { 0x8700, 0xf9b7, 0x4000 },
- { 0x8700, 0xf9b3, 0x3000 },
- { 0x8700, 0xf9b1, 0x2000 },
- { 0x0700, 0xf9b0, 0x0000 },
- { 0x0700, 0xf9b2, 0x0000 },
- { 0x8700, 0xf9b5, 0x2000 },
- { 0x0700, 0xf9b4, 0x0000 },
- { 0x0700, 0xf9b6, 0x0000 },
- { 0x8700, 0xf9bb, 0x3000 },
- { 0x8700, 0xf9b9, 0x2000 },
- { 0x0700, 0xf9b8, 0x0000 },
- { 0x0700, 0xf9ba, 0x0000 },
- { 0x8700, 0xf9bd, 0x2000 },
- { 0x0700, 0xf9bc, 0x0000 },
- { 0x0700, 0xf9be, 0x0000 },
- { 0x8700, 0xf9df, 0x6000 },
- { 0x8700, 0xf9cf, 0x5000 },
- { 0x8700, 0xf9c7, 0x4000 },
- { 0x8700, 0xf9c3, 0x3000 },
- { 0x8700, 0xf9c1, 0x2000 },
- { 0x0700, 0xf9c0, 0x0000 },
- { 0x0700, 0xf9c2, 0x0000 },
- { 0x8700, 0xf9c5, 0x2000 },
- { 0x0700, 0xf9c4, 0x0000 },
- { 0x0700, 0xf9c6, 0x0000 },
- { 0x8700, 0xf9cb, 0x3000 },
- { 0x8700, 0xf9c9, 0x2000 },
- { 0x0700, 0xf9c8, 0x0000 },
- { 0x0700, 0xf9ca, 0x0000 },
- { 0x8700, 0xf9cd, 0x2000 },
- { 0x0700, 0xf9cc, 0x0000 },
- { 0x0700, 0xf9ce, 0x0000 },
- { 0x8700, 0xf9d7, 0x4000 },
- { 0x8700, 0xf9d3, 0x3000 },
- { 0x8700, 0xf9d1, 0x2000 },
- { 0x0700, 0xf9d0, 0x0000 },
- { 0x0700, 0xf9d2, 0x0000 },
- { 0x8700, 0xf9d5, 0x2000 },
- { 0x0700, 0xf9d4, 0x0000 },
- { 0x0700, 0xf9d6, 0x0000 },
- { 0x8700, 0xf9db, 0x3000 },
- { 0x8700, 0xf9d9, 0x2000 },
- { 0x0700, 0xf9d8, 0x0000 },
- { 0x0700, 0xf9da, 0x0000 },
- { 0x8700, 0xf9dd, 0x2000 },
- { 0x0700, 0xf9dc, 0x0000 },
- { 0x0700, 0xf9de, 0x0000 },
- { 0x8700, 0xf9ef, 0x5000 },
- { 0x8700, 0xf9e7, 0x4000 },
- { 0x8700, 0xf9e3, 0x3000 },
- { 0x8700, 0xf9e1, 0x2000 },
- { 0x0700, 0xf9e0, 0x0000 },
- { 0x0700, 0xf9e2, 0x0000 },
- { 0x8700, 0xf9e5, 0x2000 },
- { 0x0700, 0xf9e4, 0x0000 },
- { 0x0700, 0xf9e6, 0x0000 },
- { 0x8700, 0xf9eb, 0x3000 },
- { 0x8700, 0xf9e9, 0x2000 },
- { 0x0700, 0xf9e8, 0x0000 },
- { 0x0700, 0xf9ea, 0x0000 },
- { 0x8700, 0xf9ed, 0x2000 },
- { 0x0700, 0xf9ec, 0x0000 },
- { 0x0700, 0xf9ee, 0x0000 },
- { 0x8700, 0xf9f7, 0x4000 },
- { 0x8700, 0xf9f3, 0x3000 },
- { 0x8700, 0xf9f1, 0x2000 },
- { 0x0700, 0xf9f0, 0x0000 },
- { 0x0700, 0xf9f2, 0x0000 },
- { 0x8700, 0xf9f5, 0x2000 },
- { 0x0700, 0xf9f4, 0x0000 },
- { 0x0700, 0xf9f6, 0x0000 },
- { 0x8700, 0xf9fb, 0x3000 },
- { 0x8700, 0xf9f9, 0x2000 },
- { 0x0700, 0xf9f8, 0x0000 },
- { 0x0700, 0xf9fa, 0x0000 },
- { 0x8700, 0xf9fd, 0x2000 },
- { 0x0700, 0xf9fc, 0x0000 },
- { 0x0700, 0xf9fe, 0x0000 },
- { 0x8700, 0xfa41, 0x7000 },
- { 0x8700, 0xfa1f, 0x6000 },
- { 0x8700, 0xfa0f, 0x5000 },
- { 0x8700, 0xfa07, 0x4000 },
- { 0x8700, 0xfa03, 0x3000 },
- { 0x8700, 0xfa01, 0x2000 },
- { 0x0700, 0xfa00, 0x0000 },
- { 0x0700, 0xfa02, 0x0000 },
- { 0x8700, 0xfa05, 0x2000 },
- { 0x0700, 0xfa04, 0x0000 },
- { 0x0700, 0xfa06, 0x0000 },
- { 0x8700, 0xfa0b, 0x3000 },
- { 0x8700, 0xfa09, 0x2000 },
- { 0x0700, 0xfa08, 0x0000 },
- { 0x0700, 0xfa0a, 0x0000 },
- { 0x8700, 0xfa0d, 0x2000 },
- { 0x0700, 0xfa0c, 0x0000 },
- { 0x0700, 0xfa0e, 0x0000 },
- { 0x8700, 0xfa17, 0x4000 },
- { 0x8700, 0xfa13, 0x3000 },
- { 0x8700, 0xfa11, 0x2000 },
- { 0x0700, 0xfa10, 0x0000 },
- { 0x0700, 0xfa12, 0x0000 },
- { 0x8700, 0xfa15, 0x2000 },
- { 0x0700, 0xfa14, 0x0000 },
- { 0x0700, 0xfa16, 0x0000 },
- { 0x8700, 0xfa1b, 0x3000 },
- { 0x8700, 0xfa19, 0x2000 },
- { 0x0700, 0xfa18, 0x0000 },
- { 0x0700, 0xfa1a, 0x0000 },
- { 0x8700, 0xfa1d, 0x2000 },
- { 0x0700, 0xfa1c, 0x0000 },
- { 0x0700, 0xfa1e, 0x0000 },
- { 0x8700, 0xfa31, 0x5000 },
- { 0x8700, 0xfa27, 0x4000 },
- { 0x8700, 0xfa23, 0x3000 },
- { 0x8700, 0xfa21, 0x2000 },
- { 0x0700, 0xfa20, 0x0000 },
- { 0x0700, 0xfa22, 0x0000 },
- { 0x8700, 0xfa25, 0x2000 },
- { 0x0700, 0xfa24, 0x0000 },
- { 0x0700, 0xfa26, 0x0000 },
- { 0x8700, 0xfa2b, 0x3000 },
- { 0x8700, 0xfa29, 0x2000 },
- { 0x0700, 0xfa28, 0x0000 },
- { 0x0700, 0xfa2a, 0x0000 },
- { 0x8700, 0xfa2d, 0x2000 },
- { 0x0700, 0xfa2c, 0x0000 },
- { 0x0700, 0xfa30, 0x0000 },
- { 0x8700, 0xfa39, 0x4000 },
- { 0x8700, 0xfa35, 0x3000 },
- { 0x8700, 0xfa33, 0x2000 },
- { 0x0700, 0xfa32, 0x0000 },
- { 0x0700, 0xfa34, 0x0000 },
- { 0x8700, 0xfa37, 0x2000 },
- { 0x0700, 0xfa36, 0x0000 },
- { 0x0700, 0xfa38, 0x0000 },
- { 0x8700, 0xfa3d, 0x3000 },
- { 0x8700, 0xfa3b, 0x2000 },
- { 0x0700, 0xfa3a, 0x0000 },
- { 0x0700, 0xfa3c, 0x0000 },
- { 0x8700, 0xfa3f, 0x2000 },
- { 0x0700, 0xfa3e, 0x0000 },
- { 0x0700, 0xfa40, 0x0000 },
- { 0x8700, 0xfa61, 0x6000 },
- { 0x8700, 0xfa51, 0x5000 },
- { 0x8700, 0xfa49, 0x4000 },
- { 0x8700, 0xfa45, 0x3000 },
- { 0x8700, 0xfa43, 0x2000 },
- { 0x0700, 0xfa42, 0x0000 },
- { 0x0700, 0xfa44, 0x0000 },
- { 0x8700, 0xfa47, 0x2000 },
- { 0x0700, 0xfa46, 0x0000 },
- { 0x0700, 0xfa48, 0x0000 },
- { 0x8700, 0xfa4d, 0x3000 },
- { 0x8700, 0xfa4b, 0x2000 },
- { 0x0700, 0xfa4a, 0x0000 },
- { 0x0700, 0xfa4c, 0x0000 },
- { 0x8700, 0xfa4f, 0x2000 },
- { 0x0700, 0xfa4e, 0x0000 },
- { 0x0700, 0xfa50, 0x0000 },
- { 0x8700, 0xfa59, 0x4000 },
- { 0x8700, 0xfa55, 0x3000 },
- { 0x8700, 0xfa53, 0x2000 },
- { 0x0700, 0xfa52, 0x0000 },
- { 0x0700, 0xfa54, 0x0000 },
- { 0x8700, 0xfa57, 0x2000 },
- { 0x0700, 0xfa56, 0x0000 },
- { 0x0700, 0xfa58, 0x0000 },
- { 0x8700, 0xfa5d, 0x3000 },
- { 0x8700, 0xfa5b, 0x2000 },
- { 0x0700, 0xfa5a, 0x0000 },
- { 0x0700, 0xfa5c, 0x0000 },
- { 0x8700, 0xfa5f, 0x2000 },
- { 0x0700, 0xfa5e, 0x0000 },
- { 0x0700, 0xfa60, 0x0000 },
- { 0x8500, 0xfb06, 0x5000 },
- { 0x8700, 0xfa69, 0x4000 },
- { 0x8700, 0xfa65, 0x3000 },
- { 0x8700, 0xfa63, 0x2000 },
- { 0x0700, 0xfa62, 0x0000 },
- { 0x0700, 0xfa64, 0x0000 },
- { 0x8700, 0xfa67, 0x2000 },
- { 0x0700, 0xfa66, 0x0000 },
- { 0x0700, 0xfa68, 0x0000 },
- { 0x8500, 0xfb02, 0x3000 },
- { 0x8500, 0xfb00, 0x2000 },
- { 0x0700, 0xfa6a, 0x0000 },
- { 0x0500, 0xfb01, 0x0000 },
- { 0x8500, 0xfb04, 0x2000 },
- { 0x0500, 0xfb03, 0x0000 },
- { 0x0500, 0xfb05, 0x0000 },
- { 0x8700, 0xfb1f, 0x4000 },
- { 0x8500, 0xfb16, 0x3000 },
- { 0x8500, 0xfb14, 0x2000 },
- { 0x0500, 0xfb13, 0x0000 },
- { 0x0500, 0xfb15, 0x0000 },
- { 0x8700, 0xfb1d, 0x2000 },
- { 0x0500, 0xfb17, 0x0000 },
- { 0x0c00, 0xfb1e, 0x0000 },
- { 0x8700, 0xfb23, 0x3000 },
- { 0x8700, 0xfb21, 0x2000 },
- { 0x0700, 0xfb20, 0x0000 },
- { 0x0700, 0xfb22, 0x0000 },
- { 0x8700, 0xfb25, 0x2000 },
- { 0x0700, 0xfb24, 0x0000 },
- { 0x0700, 0xfb26, 0x0000 },
- { 0x8700, 0xfbac, 0x8000 },
- { 0x8700, 0xfb6c, 0x7000 },
- { 0x8700, 0xfb4c, 0x6000 },
- { 0x8700, 0xfb38, 0x5000 },
- { 0x8700, 0xfb2f, 0x4000 },
- { 0x8700, 0xfb2b, 0x3000 },
- { 0x9900, 0xfb29, 0x2000 },
- { 0x0700, 0xfb28, 0x0000 },
- { 0x0700, 0xfb2a, 0x0000 },
- { 0x8700, 0xfb2d, 0x2000 },
- { 0x0700, 0xfb2c, 0x0000 },
- { 0x0700, 0xfb2e, 0x0000 },
- { 0x8700, 0xfb33, 0x3000 },
- { 0x8700, 0xfb31, 0x2000 },
- { 0x0700, 0xfb30, 0x0000 },
- { 0x0700, 0xfb32, 0x0000 },
- { 0x8700, 0xfb35, 0x2000 },
- { 0x0700, 0xfb34, 0x0000 },
- { 0x0700, 0xfb36, 0x0000 },
- { 0x8700, 0xfb43, 0x4000 },
- { 0x8700, 0xfb3c, 0x3000 },
- { 0x8700, 0xfb3a, 0x2000 },
- { 0x0700, 0xfb39, 0x0000 },
- { 0x0700, 0xfb3b, 0x0000 },
- { 0x8700, 0xfb40, 0x2000 },
- { 0x0700, 0xfb3e, 0x0000 },
- { 0x0700, 0xfb41, 0x0000 },
- { 0x8700, 0xfb48, 0x3000 },
- { 0x8700, 0xfb46, 0x2000 },
- { 0x0700, 0xfb44, 0x0000 },
- { 0x0700, 0xfb47, 0x0000 },
- { 0x8700, 0xfb4a, 0x2000 },
- { 0x0700, 0xfb49, 0x0000 },
- { 0x0700, 0xfb4b, 0x0000 },
- { 0x8700, 0xfb5c, 0x5000 },
- { 0x8700, 0xfb54, 0x4000 },
- { 0x8700, 0xfb50, 0x3000 },
- { 0x8700, 0xfb4e, 0x2000 },
- { 0x0700, 0xfb4d, 0x0000 },
- { 0x0700, 0xfb4f, 0x0000 },
- { 0x8700, 0xfb52, 0x2000 },
- { 0x0700, 0xfb51, 0x0000 },
- { 0x0700, 0xfb53, 0x0000 },
- { 0x8700, 0xfb58, 0x3000 },
- { 0x8700, 0xfb56, 0x2000 },
- { 0x0700, 0xfb55, 0x0000 },
- { 0x0700, 0xfb57, 0x0000 },
- { 0x8700, 0xfb5a, 0x2000 },
- { 0x0700, 0xfb59, 0x0000 },
- { 0x0700, 0xfb5b, 0x0000 },
- { 0x8700, 0xfb64, 0x4000 },
- { 0x8700, 0xfb60, 0x3000 },
- { 0x8700, 0xfb5e, 0x2000 },
- { 0x0700, 0xfb5d, 0x0000 },
- { 0x0700, 0xfb5f, 0x0000 },
- { 0x8700, 0xfb62, 0x2000 },
- { 0x0700, 0xfb61, 0x0000 },
- { 0x0700, 0xfb63, 0x0000 },
- { 0x8700, 0xfb68, 0x3000 },
- { 0x8700, 0xfb66, 0x2000 },
- { 0x0700, 0xfb65, 0x0000 },
- { 0x0700, 0xfb67, 0x0000 },
- { 0x8700, 0xfb6a, 0x2000 },
- { 0x0700, 0xfb69, 0x0000 },
- { 0x0700, 0xfb6b, 0x0000 },
- { 0x8700, 0xfb8c, 0x6000 },
- { 0x8700, 0xfb7c, 0x5000 },
- { 0x8700, 0xfb74, 0x4000 },
- { 0x8700, 0xfb70, 0x3000 },
- { 0x8700, 0xfb6e, 0x2000 },
- { 0x0700, 0xfb6d, 0x0000 },
- { 0x0700, 0xfb6f, 0x0000 },
- { 0x8700, 0xfb72, 0x2000 },
- { 0x0700, 0xfb71, 0x0000 },
- { 0x0700, 0xfb73, 0x0000 },
- { 0x8700, 0xfb78, 0x3000 },
- { 0x8700, 0xfb76, 0x2000 },
- { 0x0700, 0xfb75, 0x0000 },
- { 0x0700, 0xfb77, 0x0000 },
- { 0x8700, 0xfb7a, 0x2000 },
- { 0x0700, 0xfb79, 0x0000 },
- { 0x0700, 0xfb7b, 0x0000 },
- { 0x8700, 0xfb84, 0x4000 },
- { 0x8700, 0xfb80, 0x3000 },
- { 0x8700, 0xfb7e, 0x2000 },
- { 0x0700, 0xfb7d, 0x0000 },
- { 0x0700, 0xfb7f, 0x0000 },
- { 0x8700, 0xfb82, 0x2000 },
- { 0x0700, 0xfb81, 0x0000 },
- { 0x0700, 0xfb83, 0x0000 },
- { 0x8700, 0xfb88, 0x3000 },
- { 0x8700, 0xfb86, 0x2000 },
- { 0x0700, 0xfb85, 0x0000 },
- { 0x0700, 0xfb87, 0x0000 },
- { 0x8700, 0xfb8a, 0x2000 },
- { 0x0700, 0xfb89, 0x0000 },
- { 0x0700, 0xfb8b, 0x0000 },
- { 0x8700, 0xfb9c, 0x5000 },
- { 0x8700, 0xfb94, 0x4000 },
- { 0x8700, 0xfb90, 0x3000 },
- { 0x8700, 0xfb8e, 0x2000 },
- { 0x0700, 0xfb8d, 0x0000 },
- { 0x0700, 0xfb8f, 0x0000 },
- { 0x8700, 0xfb92, 0x2000 },
- { 0x0700, 0xfb91, 0x0000 },
- { 0x0700, 0xfb93, 0x0000 },
- { 0x8700, 0xfb98, 0x3000 },
- { 0x8700, 0xfb96, 0x2000 },
- { 0x0700, 0xfb95, 0x0000 },
- { 0x0700, 0xfb97, 0x0000 },
- { 0x8700, 0xfb9a, 0x2000 },
- { 0x0700, 0xfb99, 0x0000 },
- { 0x0700, 0xfb9b, 0x0000 },
- { 0x8700, 0xfba4, 0x4000 },
- { 0x8700, 0xfba0, 0x3000 },
- { 0x8700, 0xfb9e, 0x2000 },
- { 0x0700, 0xfb9d, 0x0000 },
- { 0x0700, 0xfb9f, 0x0000 },
- { 0x8700, 0xfba2, 0x2000 },
- { 0x0700, 0xfba1, 0x0000 },
- { 0x0700, 0xfba3, 0x0000 },
- { 0x8700, 0xfba8, 0x3000 },
- { 0x8700, 0xfba6, 0x2000 },
- { 0x0700, 0xfba5, 0x0000 },
- { 0x0700, 0xfba7, 0x0000 },
- { 0x8700, 0xfbaa, 0x2000 },
- { 0x0700, 0xfba9, 0x0000 },
- { 0x0700, 0xfbab, 0x0000 },
- { 0x8700, 0xfc0d, 0x7000 },
- { 0x8700, 0xfbed, 0x6000 },
- { 0x8700, 0xfbdd, 0x5000 },
- { 0x8700, 0xfbd5, 0x4000 },
- { 0x8700, 0xfbb0, 0x3000 },
- { 0x8700, 0xfbae, 0x2000 },
- { 0x0700, 0xfbad, 0x0000 },
- { 0x0700, 0xfbaf, 0x0000 },
- { 0x8700, 0xfbd3, 0x2000 },
- { 0x0700, 0xfbb1, 0x0000 },
- { 0x0700, 0xfbd4, 0x0000 },
- { 0x8700, 0xfbd9, 0x3000 },
- { 0x8700, 0xfbd7, 0x2000 },
- { 0x0700, 0xfbd6, 0x0000 },
- { 0x0700, 0xfbd8, 0x0000 },
- { 0x8700, 0xfbdb, 0x2000 },
- { 0x0700, 0xfbda, 0x0000 },
- { 0x0700, 0xfbdc, 0x0000 },
- { 0x8700, 0xfbe5, 0x4000 },
- { 0x8700, 0xfbe1, 0x3000 },
- { 0x8700, 0xfbdf, 0x2000 },
- { 0x0700, 0xfbde, 0x0000 },
- { 0x0700, 0xfbe0, 0x0000 },
- { 0x8700, 0xfbe3, 0x2000 },
- { 0x0700, 0xfbe2, 0x0000 },
- { 0x0700, 0xfbe4, 0x0000 },
- { 0x8700, 0xfbe9, 0x3000 },
- { 0x8700, 0xfbe7, 0x2000 },
- { 0x0700, 0xfbe6, 0x0000 },
- { 0x0700, 0xfbe8, 0x0000 },
- { 0x8700, 0xfbeb, 0x2000 },
- { 0x0700, 0xfbea, 0x0000 },
- { 0x0700, 0xfbec, 0x0000 },
- { 0x8700, 0xfbfd, 0x5000 },
- { 0x8700, 0xfbf5, 0x4000 },
- { 0x8700, 0xfbf1, 0x3000 },
- { 0x8700, 0xfbef, 0x2000 },
- { 0x0700, 0xfbee, 0x0000 },
- { 0x0700, 0xfbf0, 0x0000 },
- { 0x8700, 0xfbf3, 0x2000 },
- { 0x0700, 0xfbf2, 0x0000 },
- { 0x0700, 0xfbf4, 0x0000 },
- { 0x8700, 0xfbf9, 0x3000 },
- { 0x8700, 0xfbf7, 0x2000 },
- { 0x0700, 0xfbf6, 0x0000 },
- { 0x0700, 0xfbf8, 0x0000 },
- { 0x8700, 0xfbfb, 0x2000 },
- { 0x0700, 0xfbfa, 0x0000 },
- { 0x0700, 0xfbfc, 0x0000 },
- { 0x8700, 0xfc05, 0x4000 },
- { 0x8700, 0xfc01, 0x3000 },
- { 0x8700, 0xfbff, 0x2000 },
- { 0x0700, 0xfbfe, 0x0000 },
- { 0x0700, 0xfc00, 0x0000 },
- { 0x8700, 0xfc03, 0x2000 },
- { 0x0700, 0xfc02, 0x0000 },
- { 0x0700, 0xfc04, 0x0000 },
- { 0x8700, 0xfc09, 0x3000 },
- { 0x8700, 0xfc07, 0x2000 },
- { 0x0700, 0xfc06, 0x0000 },
- { 0x0700, 0xfc08, 0x0000 },
- { 0x8700, 0xfc0b, 0x2000 },
- { 0x0700, 0xfc0a, 0x0000 },
- { 0x0700, 0xfc0c, 0x0000 },
- { 0x8700, 0xfc2d, 0x6000 },
- { 0x8700, 0xfc1d, 0x5000 },
- { 0x8700, 0xfc15, 0x4000 },
- { 0x8700, 0xfc11, 0x3000 },
- { 0x8700, 0xfc0f, 0x2000 },
- { 0x0700, 0xfc0e, 0x0000 },
- { 0x0700, 0xfc10, 0x0000 },
- { 0x8700, 0xfc13, 0x2000 },
- { 0x0700, 0xfc12, 0x0000 },
- { 0x0700, 0xfc14, 0x0000 },
- { 0x8700, 0xfc19, 0x3000 },
- { 0x8700, 0xfc17, 0x2000 },
- { 0x0700, 0xfc16, 0x0000 },
- { 0x0700, 0xfc18, 0x0000 },
- { 0x8700, 0xfc1b, 0x2000 },
- { 0x0700, 0xfc1a, 0x0000 },
- { 0x0700, 0xfc1c, 0x0000 },
- { 0x8700, 0xfc25, 0x4000 },
- { 0x8700, 0xfc21, 0x3000 },
- { 0x8700, 0xfc1f, 0x2000 },
- { 0x0700, 0xfc1e, 0x0000 },
- { 0x0700, 0xfc20, 0x0000 },
- { 0x8700, 0xfc23, 0x2000 },
- { 0x0700, 0xfc22, 0x0000 },
- { 0x0700, 0xfc24, 0x0000 },
- { 0x8700, 0xfc29, 0x3000 },
- { 0x8700, 0xfc27, 0x2000 },
- { 0x0700, 0xfc26, 0x0000 },
- { 0x0700, 0xfc28, 0x0000 },
- { 0x8700, 0xfc2b, 0x2000 },
- { 0x0700, 0xfc2a, 0x0000 },
- { 0x0700, 0xfc2c, 0x0000 },
- { 0x8700, 0xfc3d, 0x5000 },
- { 0x8700, 0xfc35, 0x4000 },
- { 0x8700, 0xfc31, 0x3000 },
- { 0x8700, 0xfc2f, 0x2000 },
- { 0x0700, 0xfc2e, 0x0000 },
- { 0x0700, 0xfc30, 0x0000 },
- { 0x8700, 0xfc33, 0x2000 },
- { 0x0700, 0xfc32, 0x0000 },
- { 0x0700, 0xfc34, 0x0000 },
- { 0x8700, 0xfc39, 0x3000 },
- { 0x8700, 0xfc37, 0x2000 },
- { 0x0700, 0xfc36, 0x0000 },
- { 0x0700, 0xfc38, 0x0000 },
- { 0x8700, 0xfc3b, 0x2000 },
- { 0x0700, 0xfc3a, 0x0000 },
- { 0x0700, 0xfc3c, 0x0000 },
- { 0x8700, 0xfc45, 0x4000 },
- { 0x8700, 0xfc41, 0x3000 },
- { 0x8700, 0xfc3f, 0x2000 },
- { 0x0700, 0xfc3e, 0x0000 },
- { 0x0700, 0xfc40, 0x0000 },
- { 0x8700, 0xfc43, 0x2000 },
- { 0x0700, 0xfc42, 0x0000 },
- { 0x0700, 0xfc44, 0x0000 },
- { 0x8700, 0xfc49, 0x3000 },
- { 0x8700, 0xfc47, 0x2000 },
- { 0x0700, 0xfc46, 0x0000 },
- { 0x0700, 0xfc48, 0x0000 },
- { 0x8700, 0xfc4b, 0x2000 },
- { 0x0700, 0xfc4a, 0x0000 },
- { 0x0700, 0xfc4c, 0x0000 },
- { 0x8700, 0xfeac, 0xa000 },
- { 0x8700, 0xfd5d, 0x9000 },
- { 0x8700, 0xfccd, 0x8000 },
- { 0x8700, 0xfc8d, 0x7000 },
- { 0x8700, 0xfc6d, 0x6000 },
- { 0x8700, 0xfc5d, 0x5000 },
- { 0x8700, 0xfc55, 0x4000 },
- { 0x8700, 0xfc51, 0x3000 },
- { 0x8700, 0xfc4f, 0x2000 },
- { 0x0700, 0xfc4e, 0x0000 },
- { 0x0700, 0xfc50, 0x0000 },
- { 0x8700, 0xfc53, 0x2000 },
- { 0x0700, 0xfc52, 0x0000 },
- { 0x0700, 0xfc54, 0x0000 },
- { 0x8700, 0xfc59, 0x3000 },
- { 0x8700, 0xfc57, 0x2000 },
- { 0x0700, 0xfc56, 0x0000 },
- { 0x0700, 0xfc58, 0x0000 },
- { 0x8700, 0xfc5b, 0x2000 },
- { 0x0700, 0xfc5a, 0x0000 },
- { 0x0700, 0xfc5c, 0x0000 },
- { 0x8700, 0xfc65, 0x4000 },
- { 0x8700, 0xfc61, 0x3000 },
- { 0x8700, 0xfc5f, 0x2000 },
- { 0x0700, 0xfc5e, 0x0000 },
- { 0x0700, 0xfc60, 0x0000 },
- { 0x8700, 0xfc63, 0x2000 },
- { 0x0700, 0xfc62, 0x0000 },
- { 0x0700, 0xfc64, 0x0000 },
- { 0x8700, 0xfc69, 0x3000 },
- { 0x8700, 0xfc67, 0x2000 },
- { 0x0700, 0xfc66, 0x0000 },
- { 0x0700, 0xfc68, 0x0000 },
- { 0x8700, 0xfc6b, 0x2000 },
- { 0x0700, 0xfc6a, 0x0000 },
- { 0x0700, 0xfc6c, 0x0000 },
- { 0x8700, 0xfc7d, 0x5000 },
- { 0x8700, 0xfc75, 0x4000 },
- { 0x8700, 0xfc71, 0x3000 },
- { 0x8700, 0xfc6f, 0x2000 },
- { 0x0700, 0xfc6e, 0x0000 },
- { 0x0700, 0xfc70, 0x0000 },
- { 0x8700, 0xfc73, 0x2000 },
- { 0x0700, 0xfc72, 0x0000 },
- { 0x0700, 0xfc74, 0x0000 },
- { 0x8700, 0xfc79, 0x3000 },
- { 0x8700, 0xfc77, 0x2000 },
- { 0x0700, 0xfc76, 0x0000 },
- { 0x0700, 0xfc78, 0x0000 },
- { 0x8700, 0xfc7b, 0x2000 },
- { 0x0700, 0xfc7a, 0x0000 },
- { 0x0700, 0xfc7c, 0x0000 },
- { 0x8700, 0xfc85, 0x4000 },
- { 0x8700, 0xfc81, 0x3000 },
- { 0x8700, 0xfc7f, 0x2000 },
- { 0x0700, 0xfc7e, 0x0000 },
- { 0x0700, 0xfc80, 0x0000 },
- { 0x8700, 0xfc83, 0x2000 },
- { 0x0700, 0xfc82, 0x0000 },
- { 0x0700, 0xfc84, 0x0000 },
- { 0x8700, 0xfc89, 0x3000 },
- { 0x8700, 0xfc87, 0x2000 },
- { 0x0700, 0xfc86, 0x0000 },
- { 0x0700, 0xfc88, 0x0000 },
- { 0x8700, 0xfc8b, 0x2000 },
- { 0x0700, 0xfc8a, 0x0000 },
- { 0x0700, 0xfc8c, 0x0000 },
- { 0x8700, 0xfcad, 0x6000 },
- { 0x8700, 0xfc9d, 0x5000 },
- { 0x8700, 0xfc95, 0x4000 },
- { 0x8700, 0xfc91, 0x3000 },
- { 0x8700, 0xfc8f, 0x2000 },
- { 0x0700, 0xfc8e, 0x0000 },
- { 0x0700, 0xfc90, 0x0000 },
- { 0x8700, 0xfc93, 0x2000 },
- { 0x0700, 0xfc92, 0x0000 },
- { 0x0700, 0xfc94, 0x0000 },
- { 0x8700, 0xfc99, 0x3000 },
- { 0x8700, 0xfc97, 0x2000 },
- { 0x0700, 0xfc96, 0x0000 },
- { 0x0700, 0xfc98, 0x0000 },
- { 0x8700, 0xfc9b, 0x2000 },
- { 0x0700, 0xfc9a, 0x0000 },
- { 0x0700, 0xfc9c, 0x0000 },
- { 0x8700, 0xfca5, 0x4000 },
- { 0x8700, 0xfca1, 0x3000 },
- { 0x8700, 0xfc9f, 0x2000 },
- { 0x0700, 0xfc9e, 0x0000 },
- { 0x0700, 0xfca0, 0x0000 },
- { 0x8700, 0xfca3, 0x2000 },
- { 0x0700, 0xfca2, 0x0000 },
- { 0x0700, 0xfca4, 0x0000 },
- { 0x8700, 0xfca9, 0x3000 },
- { 0x8700, 0xfca7, 0x2000 },
- { 0x0700, 0xfca6, 0x0000 },
- { 0x0700, 0xfca8, 0x0000 },
- { 0x8700, 0xfcab, 0x2000 },
- { 0x0700, 0xfcaa, 0x0000 },
- { 0x0700, 0xfcac, 0x0000 },
- { 0x8700, 0xfcbd, 0x5000 },
- { 0x8700, 0xfcb5, 0x4000 },
- { 0x8700, 0xfcb1, 0x3000 },
- { 0x8700, 0xfcaf, 0x2000 },
- { 0x0700, 0xfcae, 0x0000 },
- { 0x0700, 0xfcb0, 0x0000 },
- { 0x8700, 0xfcb3, 0x2000 },
- { 0x0700, 0xfcb2, 0x0000 },
- { 0x0700, 0xfcb4, 0x0000 },
- { 0x8700, 0xfcb9, 0x3000 },
- { 0x8700, 0xfcb7, 0x2000 },
- { 0x0700, 0xfcb6, 0x0000 },
- { 0x0700, 0xfcb8, 0x0000 },
- { 0x8700, 0xfcbb, 0x2000 },
- { 0x0700, 0xfcba, 0x0000 },
- { 0x0700, 0xfcbc, 0x0000 },
- { 0x8700, 0xfcc5, 0x4000 },
- { 0x8700, 0xfcc1, 0x3000 },
- { 0x8700, 0xfcbf, 0x2000 },
- { 0x0700, 0xfcbe, 0x0000 },
- { 0x0700, 0xfcc0, 0x0000 },
- { 0x8700, 0xfcc3, 0x2000 },
- { 0x0700, 0xfcc2, 0x0000 },
- { 0x0700, 0xfcc4, 0x0000 },
- { 0x8700, 0xfcc9, 0x3000 },
- { 0x8700, 0xfcc7, 0x2000 },
- { 0x0700, 0xfcc6, 0x0000 },
- { 0x0700, 0xfcc8, 0x0000 },
- { 0x8700, 0xfccb, 0x2000 },
- { 0x0700, 0xfcca, 0x0000 },
- { 0x0700, 0xfccc, 0x0000 },
- { 0x8700, 0xfd0d, 0x7000 },
- { 0x8700, 0xfced, 0x6000 },
- { 0x8700, 0xfcdd, 0x5000 },
- { 0x8700, 0xfcd5, 0x4000 },
- { 0x8700, 0xfcd1, 0x3000 },
- { 0x8700, 0xfccf, 0x2000 },
- { 0x0700, 0xfcce, 0x0000 },
- { 0x0700, 0xfcd0, 0x0000 },
- { 0x8700, 0xfcd3, 0x2000 },
- { 0x0700, 0xfcd2, 0x0000 },
- { 0x0700, 0xfcd4, 0x0000 },
- { 0x8700, 0xfcd9, 0x3000 },
- { 0x8700, 0xfcd7, 0x2000 },
- { 0x0700, 0xfcd6, 0x0000 },
- { 0x0700, 0xfcd8, 0x0000 },
- { 0x8700, 0xfcdb, 0x2000 },
- { 0x0700, 0xfcda, 0x0000 },
- { 0x0700, 0xfcdc, 0x0000 },
- { 0x8700, 0xfce5, 0x4000 },
- { 0x8700, 0xfce1, 0x3000 },
- { 0x8700, 0xfcdf, 0x2000 },
- { 0x0700, 0xfcde, 0x0000 },
- { 0x0700, 0xfce0, 0x0000 },
- { 0x8700, 0xfce3, 0x2000 },
- { 0x0700, 0xfce2, 0x0000 },
- { 0x0700, 0xfce4, 0x0000 },
- { 0x8700, 0xfce9, 0x3000 },
- { 0x8700, 0xfce7, 0x2000 },
- { 0x0700, 0xfce6, 0x0000 },
- { 0x0700, 0xfce8, 0x0000 },
- { 0x8700, 0xfceb, 0x2000 },
- { 0x0700, 0xfcea, 0x0000 },
- { 0x0700, 0xfcec, 0x0000 },
- { 0x8700, 0xfcfd, 0x5000 },
- { 0x8700, 0xfcf5, 0x4000 },
- { 0x8700, 0xfcf1, 0x3000 },
- { 0x8700, 0xfcef, 0x2000 },
- { 0x0700, 0xfcee, 0x0000 },
- { 0x0700, 0xfcf0, 0x0000 },
- { 0x8700, 0xfcf3, 0x2000 },
- { 0x0700, 0xfcf2, 0x0000 },
- { 0x0700, 0xfcf4, 0x0000 },
- { 0x8700, 0xfcf9, 0x3000 },
- { 0x8700, 0xfcf7, 0x2000 },
- { 0x0700, 0xfcf6, 0x0000 },
- { 0x0700, 0xfcf8, 0x0000 },
- { 0x8700, 0xfcfb, 0x2000 },
- { 0x0700, 0xfcfa, 0x0000 },
- { 0x0700, 0xfcfc, 0x0000 },
- { 0x8700, 0xfd05, 0x4000 },
- { 0x8700, 0xfd01, 0x3000 },
- { 0x8700, 0xfcff, 0x2000 },
- { 0x0700, 0xfcfe, 0x0000 },
- { 0x0700, 0xfd00, 0x0000 },
- { 0x8700, 0xfd03, 0x2000 },
- { 0x0700, 0xfd02, 0x0000 },
- { 0x0700, 0xfd04, 0x0000 },
- { 0x8700, 0xfd09, 0x3000 },
- { 0x8700, 0xfd07, 0x2000 },
- { 0x0700, 0xfd06, 0x0000 },
- { 0x0700, 0xfd08, 0x0000 },
- { 0x8700, 0xfd0b, 0x2000 },
- { 0x0700, 0xfd0a, 0x0000 },
- { 0x0700, 0xfd0c, 0x0000 },
- { 0x8700, 0xfd2d, 0x6000 },
- { 0x8700, 0xfd1d, 0x5000 },
- { 0x8700, 0xfd15, 0x4000 },
- { 0x8700, 0xfd11, 0x3000 },
- { 0x8700, 0xfd0f, 0x2000 },
- { 0x0700, 0xfd0e, 0x0000 },
- { 0x0700, 0xfd10, 0x0000 },
- { 0x8700, 0xfd13, 0x2000 },
- { 0x0700, 0xfd12, 0x0000 },
- { 0x0700, 0xfd14, 0x0000 },
- { 0x8700, 0xfd19, 0x3000 },
- { 0x8700, 0xfd17, 0x2000 },
- { 0x0700, 0xfd16, 0x0000 },
- { 0x0700, 0xfd18, 0x0000 },
- { 0x8700, 0xfd1b, 0x2000 },
- { 0x0700, 0xfd1a, 0x0000 },
- { 0x0700, 0xfd1c, 0x0000 },
- { 0x8700, 0xfd25, 0x4000 },
- { 0x8700, 0xfd21, 0x3000 },
- { 0x8700, 0xfd1f, 0x2000 },
- { 0x0700, 0xfd1e, 0x0000 },
- { 0x0700, 0xfd20, 0x0000 },
- { 0x8700, 0xfd23, 0x2000 },
- { 0x0700, 0xfd22, 0x0000 },
- { 0x0700, 0xfd24, 0x0000 },
- { 0x8700, 0xfd29, 0x3000 },
- { 0x8700, 0xfd27, 0x2000 },
- { 0x0700, 0xfd26, 0x0000 },
- { 0x0700, 0xfd28, 0x0000 },
- { 0x8700, 0xfd2b, 0x2000 },
- { 0x0700, 0xfd2a, 0x0000 },
- { 0x0700, 0xfd2c, 0x0000 },
- { 0x8700, 0xfd3d, 0x5000 },
- { 0x8700, 0xfd35, 0x4000 },
- { 0x8700, 0xfd31, 0x3000 },
- { 0x8700, 0xfd2f, 0x2000 },
- { 0x0700, 0xfd2e, 0x0000 },
- { 0x0700, 0xfd30, 0x0000 },
- { 0x8700, 0xfd33, 0x2000 },
- { 0x0700, 0xfd32, 0x0000 },
- { 0x0700, 0xfd34, 0x0000 },
- { 0x8700, 0xfd39, 0x3000 },
- { 0x8700, 0xfd37, 0x2000 },
- { 0x0700, 0xfd36, 0x0000 },
- { 0x0700, 0xfd38, 0x0000 },
- { 0x8700, 0xfd3b, 0x2000 },
- { 0x0700, 0xfd3a, 0x0000 },
- { 0x0700, 0xfd3c, 0x0000 },
- { 0x8700, 0xfd55, 0x4000 },
- { 0x8700, 0xfd51, 0x3000 },
- { 0x9200, 0xfd3f, 0x2000 },
- { 0x1600, 0xfd3e, 0x0000 },
- { 0x0700, 0xfd50, 0x0000 },
- { 0x8700, 0xfd53, 0x2000 },
- { 0x0700, 0xfd52, 0x0000 },
- { 0x0700, 0xfd54, 0x0000 },
- { 0x8700, 0xfd59, 0x3000 },
- { 0x8700, 0xfd57, 0x2000 },
- { 0x0700, 0xfd56, 0x0000 },
- { 0x0700, 0xfd58, 0x0000 },
- { 0x8700, 0xfd5b, 0x2000 },
- { 0x0700, 0xfd5a, 0x0000 },
- { 0x0700, 0xfd5c, 0x0000 },
- { 0x8c00, 0xfe09, 0x8000 },
- { 0x8700, 0xfd9f, 0x7000 },
- { 0x8700, 0xfd7d, 0x6000 },
- { 0x8700, 0xfd6d, 0x5000 },
- { 0x8700, 0xfd65, 0x4000 },
- { 0x8700, 0xfd61, 0x3000 },
- { 0x8700, 0xfd5f, 0x2000 },
- { 0x0700, 0xfd5e, 0x0000 },
- { 0x0700, 0xfd60, 0x0000 },
- { 0x8700, 0xfd63, 0x2000 },
- { 0x0700, 0xfd62, 0x0000 },
- { 0x0700, 0xfd64, 0x0000 },
- { 0x8700, 0xfd69, 0x3000 },
- { 0x8700, 0xfd67, 0x2000 },
- { 0x0700, 0xfd66, 0x0000 },
- { 0x0700, 0xfd68, 0x0000 },
- { 0x8700, 0xfd6b, 0x2000 },
- { 0x0700, 0xfd6a, 0x0000 },
- { 0x0700, 0xfd6c, 0x0000 },
- { 0x8700, 0xfd75, 0x4000 },
- { 0x8700, 0xfd71, 0x3000 },
- { 0x8700, 0xfd6f, 0x2000 },
- { 0x0700, 0xfd6e, 0x0000 },
- { 0x0700, 0xfd70, 0x0000 },
- { 0x8700, 0xfd73, 0x2000 },
- { 0x0700, 0xfd72, 0x0000 },
- { 0x0700, 0xfd74, 0x0000 },
- { 0x8700, 0xfd79, 0x3000 },
- { 0x8700, 0xfd77, 0x2000 },
- { 0x0700, 0xfd76, 0x0000 },
- { 0x0700, 0xfd78, 0x0000 },
- { 0x8700, 0xfd7b, 0x2000 },
- { 0x0700, 0xfd7a, 0x0000 },
- { 0x0700, 0xfd7c, 0x0000 },
- { 0x8700, 0xfd8d, 0x5000 },
- { 0x8700, 0xfd85, 0x4000 },
- { 0x8700, 0xfd81, 0x3000 },
- { 0x8700, 0xfd7f, 0x2000 },
- { 0x0700, 0xfd7e, 0x0000 },
- { 0x0700, 0xfd80, 0x0000 },
- { 0x8700, 0xfd83, 0x2000 },
- { 0x0700, 0xfd82, 0x0000 },
- { 0x0700, 0xfd84, 0x0000 },
- { 0x8700, 0xfd89, 0x3000 },
- { 0x8700, 0xfd87, 0x2000 },
- { 0x0700, 0xfd86, 0x0000 },
- { 0x0700, 0xfd88, 0x0000 },
- { 0x8700, 0xfd8b, 0x2000 },
- { 0x0700, 0xfd8a, 0x0000 },
- { 0x0700, 0xfd8c, 0x0000 },
- { 0x8700, 0xfd97, 0x4000 },
- { 0x8700, 0xfd93, 0x3000 },
- { 0x8700, 0xfd8f, 0x2000 },
- { 0x0700, 0xfd8e, 0x0000 },
- { 0x0700, 0xfd92, 0x0000 },
- { 0x8700, 0xfd95, 0x2000 },
- { 0x0700, 0xfd94, 0x0000 },
- { 0x0700, 0xfd96, 0x0000 },
- { 0x8700, 0xfd9b, 0x3000 },
- { 0x8700, 0xfd99, 0x2000 },
- { 0x0700, 0xfd98, 0x0000 },
- { 0x0700, 0xfd9a, 0x0000 },
- { 0x8700, 0xfd9d, 0x2000 },
- { 0x0700, 0xfd9c, 0x0000 },
- { 0x0700, 0xfd9e, 0x0000 },
- { 0x8700, 0xfdbf, 0x6000 },
- { 0x8700, 0xfdaf, 0x5000 },
- { 0x8700, 0xfda7, 0x4000 },
- { 0x8700, 0xfda3, 0x3000 },
- { 0x8700, 0xfda1, 0x2000 },
- { 0x0700, 0xfda0, 0x0000 },
- { 0x0700, 0xfda2, 0x0000 },
- { 0x8700, 0xfda5, 0x2000 },
- { 0x0700, 0xfda4, 0x0000 },
- { 0x0700, 0xfda6, 0x0000 },
- { 0x8700, 0xfdab, 0x3000 },
- { 0x8700, 0xfda9, 0x2000 },
- { 0x0700, 0xfda8, 0x0000 },
- { 0x0700, 0xfdaa, 0x0000 },
- { 0x8700, 0xfdad, 0x2000 },
- { 0x0700, 0xfdac, 0x0000 },
- { 0x0700, 0xfdae, 0x0000 },
- { 0x8700, 0xfdb7, 0x4000 },
- { 0x8700, 0xfdb3, 0x3000 },
- { 0x8700, 0xfdb1, 0x2000 },
- { 0x0700, 0xfdb0, 0x0000 },
- { 0x0700, 0xfdb2, 0x0000 },
- { 0x8700, 0xfdb5, 0x2000 },
- { 0x0700, 0xfdb4, 0x0000 },
- { 0x0700, 0xfdb6, 0x0000 },
- { 0x8700, 0xfdbb, 0x3000 },
- { 0x8700, 0xfdb9, 0x2000 },
- { 0x0700, 0xfdb8, 0x0000 },
- { 0x0700, 0xfdba, 0x0000 },
- { 0x8700, 0xfdbd, 0x2000 },
- { 0x0700, 0xfdbc, 0x0000 },
- { 0x0700, 0xfdbe, 0x0000 },
- { 0x8700, 0xfdf7, 0x5000 },
- { 0x8700, 0xfdc7, 0x4000 },
- { 0x8700, 0xfdc3, 0x3000 },
- { 0x8700, 0xfdc1, 0x2000 },
- { 0x0700, 0xfdc0, 0x0000 },
- { 0x0700, 0xfdc2, 0x0000 },
- { 0x8700, 0xfdc5, 0x2000 },
- { 0x0700, 0xfdc4, 0x0000 },
- { 0x0700, 0xfdc6, 0x0000 },
- { 0x8700, 0xfdf3, 0x3000 },
- { 0x8700, 0xfdf1, 0x2000 },
- { 0x0700, 0xfdf0, 0x0000 },
- { 0x0700, 0xfdf2, 0x0000 },
- { 0x8700, 0xfdf5, 0x2000 },
- { 0x0700, 0xfdf4, 0x0000 },
- { 0x0700, 0xfdf6, 0x0000 },
- { 0x8c00, 0xfe01, 0x4000 },
- { 0x8700, 0xfdfb, 0x3000 },
- { 0x8700, 0xfdf9, 0x2000 },
- { 0x0700, 0xfdf8, 0x0000 },
- { 0x0700, 0xfdfa, 0x0000 },
- { 0x9a00, 0xfdfd, 0x2000 },
- { 0x1700, 0xfdfc, 0x0000 },
- { 0x0c00, 0xfe00, 0x0000 },
- { 0x8c00, 0xfe05, 0x3000 },
- { 0x8c00, 0xfe03, 0x2000 },
- { 0x0c00, 0xfe02, 0x0000 },
- { 0x0c00, 0xfe04, 0x0000 },
- { 0x8c00, 0xfe07, 0x2000 },
- { 0x0c00, 0xfe06, 0x0000 },
- { 0x0c00, 0xfe08, 0x0000 },
- { 0x9900, 0xfe66, 0x7000 },
- { 0x9500, 0xfe45, 0x6000 },
- { 0x9600, 0xfe35, 0x5000 },
- { 0x8c00, 0xfe21, 0x4000 },
- { 0x8c00, 0xfe0d, 0x3000 },
- { 0x8c00, 0xfe0b, 0x2000 },
- { 0x0c00, 0xfe0a, 0x0000 },
- { 0x0c00, 0xfe0c, 0x0000 },
- { 0x8c00, 0xfe0f, 0x2000 },
- { 0x0c00, 0xfe0e, 0x0000 },
- { 0x0c00, 0xfe20, 0x0000 },
- { 0x9100, 0xfe31, 0x3000 },
- { 0x8c00, 0xfe23, 0x2000 },
- { 0x0c00, 0xfe22, 0x0000 },
- { 0x1500, 0xfe30, 0x0000 },
- { 0x9000, 0xfe33, 0x2000 },
- { 0x1100, 0xfe32, 0x0000 },
- { 0x1000, 0xfe34, 0x0000 },
- { 0x9600, 0xfe3d, 0x4000 },
- { 0x9600, 0xfe39, 0x3000 },
- { 0x9600, 0xfe37, 0x2000 },
- { 0x1200, 0xfe36, 0x0000 },
- { 0x1200, 0xfe38, 0x0000 },
- { 0x9600, 0xfe3b, 0x2000 },
- { 0x1200, 0xfe3a, 0x0000 },
- { 0x1200, 0xfe3c, 0x0000 },
- { 0x9600, 0xfe41, 0x3000 },
- { 0x9600, 0xfe3f, 0x2000 },
- { 0x1200, 0xfe3e, 0x0000 },
- { 0x1200, 0xfe40, 0x0000 },
- { 0x9600, 0xfe43, 0x2000 },
- { 0x1200, 0xfe42, 0x0000 },
- { 0x1200, 0xfe44, 0x0000 },
- { 0x9500, 0xfe56, 0x5000 },
- { 0x9000, 0xfe4d, 0x4000 },
- { 0x9500, 0xfe49, 0x3000 },
- { 0x9600, 0xfe47, 0x2000 },
- { 0x1500, 0xfe46, 0x0000 },
- { 0x1200, 0xfe48, 0x0000 },
- { 0x9500, 0xfe4b, 0x2000 },
- { 0x1500, 0xfe4a, 0x0000 },
- { 0x1500, 0xfe4c, 0x0000 },
- { 0x9500, 0xfe51, 0x3000 },
- { 0x9000, 0xfe4f, 0x2000 },
- { 0x1000, 0xfe4e, 0x0000 },
- { 0x1500, 0xfe50, 0x0000 },
- { 0x9500, 0xfe54, 0x2000 },
- { 0x1500, 0xfe52, 0x0000 },
- { 0x1500, 0xfe55, 0x0000 },
- { 0x9200, 0xfe5e, 0x4000 },
- { 0x9200, 0xfe5a, 0x3000 },
- { 0x9100, 0xfe58, 0x2000 },
- { 0x1500, 0xfe57, 0x0000 },
- { 0x1600, 0xfe59, 0x0000 },
- { 0x9200, 0xfe5c, 0x2000 },
- { 0x1600, 0xfe5b, 0x0000 },
- { 0x1600, 0xfe5d, 0x0000 },
- { 0x9900, 0xfe62, 0x3000 },
- { 0x9500, 0xfe60, 0x2000 },
- { 0x1500, 0xfe5f, 0x0000 },
- { 0x1500, 0xfe61, 0x0000 },
- { 0x9900, 0xfe64, 0x2000 },
- { 0x1100, 0xfe63, 0x0000 },
- { 0x1900, 0xfe65, 0x0000 },
- { 0x8700, 0xfe8c, 0x6000 },
- { 0x8700, 0xfe7c, 0x5000 },
- { 0x8700, 0xfe73, 0x4000 },
- { 0x9500, 0xfe6b, 0x3000 },
- { 0x9700, 0xfe69, 0x2000 },
- { 0x1500, 0xfe68, 0x0000 },
- { 0x1500, 0xfe6a, 0x0000 },
- { 0x8700, 0xfe71, 0x2000 },
- { 0x0700, 0xfe70, 0x0000 },
- { 0x0700, 0xfe72, 0x0000 },
- { 0x8700, 0xfe78, 0x3000 },
- { 0x8700, 0xfe76, 0x2000 },
- { 0x0700, 0xfe74, 0x0000 },
- { 0x0700, 0xfe77, 0x0000 },
- { 0x8700, 0xfe7a, 0x2000 },
- { 0x0700, 0xfe79, 0x0000 },
- { 0x0700, 0xfe7b, 0x0000 },
- { 0x8700, 0xfe84, 0x4000 },
- { 0x8700, 0xfe80, 0x3000 },
- { 0x8700, 0xfe7e, 0x2000 },
- { 0x0700, 0xfe7d, 0x0000 },
- { 0x0700, 0xfe7f, 0x0000 },
- { 0x8700, 0xfe82, 0x2000 },
- { 0x0700, 0xfe81, 0x0000 },
- { 0x0700, 0xfe83, 0x0000 },
- { 0x8700, 0xfe88, 0x3000 },
- { 0x8700, 0xfe86, 0x2000 },
- { 0x0700, 0xfe85, 0x0000 },
- { 0x0700, 0xfe87, 0x0000 },
- { 0x8700, 0xfe8a, 0x2000 },
- { 0x0700, 0xfe89, 0x0000 },
- { 0x0700, 0xfe8b, 0x0000 },
- { 0x8700, 0xfe9c, 0x5000 },
- { 0x8700, 0xfe94, 0x4000 },
- { 0x8700, 0xfe90, 0x3000 },
- { 0x8700, 0xfe8e, 0x2000 },
- { 0x0700, 0xfe8d, 0x0000 },
- { 0x0700, 0xfe8f, 0x0000 },
- { 0x8700, 0xfe92, 0x2000 },
- { 0x0700, 0xfe91, 0x0000 },
- { 0x0700, 0xfe93, 0x0000 },
- { 0x8700, 0xfe98, 0x3000 },
- { 0x8700, 0xfe96, 0x2000 },
- { 0x0700, 0xfe95, 0x0000 },
- { 0x0700, 0xfe97, 0x0000 },
- { 0x8700, 0xfe9a, 0x2000 },
- { 0x0700, 0xfe99, 0x0000 },
- { 0x0700, 0xfe9b, 0x0000 },
- { 0x8700, 0xfea4, 0x4000 },
- { 0x8700, 0xfea0, 0x3000 },
- { 0x8700, 0xfe9e, 0x2000 },
- { 0x0700, 0xfe9d, 0x0000 },
- { 0x0700, 0xfe9f, 0x0000 },
- { 0x8700, 0xfea2, 0x2000 },
- { 0x0700, 0xfea1, 0x0000 },
- { 0x0700, 0xfea3, 0x0000 },
- { 0x8700, 0xfea8, 0x3000 },
- { 0x8700, 0xfea6, 0x2000 },
- { 0x0700, 0xfea5, 0x0000 },
- { 0x0700, 0xfea7, 0x0000 },
- { 0x8700, 0xfeaa, 0x2000 },
- { 0x0700, 0xfea9, 0x0000 },
- { 0x0700, 0xfeab, 0x0000 },
- { 0x8700, 0xffaf, 0x9000 },
- { 0x8900, 0xff2f, 0x8020 },
- { 0x8700, 0xfeec, 0x7000 },
- { 0x8700, 0xfecc, 0x6000 },
- { 0x8700, 0xfebc, 0x5000 },
- { 0x8700, 0xfeb4, 0x4000 },
- { 0x8700, 0xfeb0, 0x3000 },
- { 0x8700, 0xfeae, 0x2000 },
- { 0x0700, 0xfead, 0x0000 },
- { 0x0700, 0xfeaf, 0x0000 },
- { 0x8700, 0xfeb2, 0x2000 },
- { 0x0700, 0xfeb1, 0x0000 },
- { 0x0700, 0xfeb3, 0x0000 },
- { 0x8700, 0xfeb8, 0x3000 },
- { 0x8700, 0xfeb6, 0x2000 },
- { 0x0700, 0xfeb5, 0x0000 },
- { 0x0700, 0xfeb7, 0x0000 },
- { 0x8700, 0xfeba, 0x2000 },
- { 0x0700, 0xfeb9, 0x0000 },
- { 0x0700, 0xfebb, 0x0000 },
- { 0x8700, 0xfec4, 0x4000 },
- { 0x8700, 0xfec0, 0x3000 },
- { 0x8700, 0xfebe, 0x2000 },
- { 0x0700, 0xfebd, 0x0000 },
- { 0x0700, 0xfebf, 0x0000 },
- { 0x8700, 0xfec2, 0x2000 },
- { 0x0700, 0xfec1, 0x0000 },
- { 0x0700, 0xfec3, 0x0000 },
- { 0x8700, 0xfec8, 0x3000 },
- { 0x8700, 0xfec6, 0x2000 },
- { 0x0700, 0xfec5, 0x0000 },
- { 0x0700, 0xfec7, 0x0000 },
- { 0x8700, 0xfeca, 0x2000 },
- { 0x0700, 0xfec9, 0x0000 },
- { 0x0700, 0xfecb, 0x0000 },
- { 0x8700, 0xfedc, 0x5000 },
- { 0x8700, 0xfed4, 0x4000 },
- { 0x8700, 0xfed0, 0x3000 },
- { 0x8700, 0xfece, 0x2000 },
- { 0x0700, 0xfecd, 0x0000 },
- { 0x0700, 0xfecf, 0x0000 },
- { 0x8700, 0xfed2, 0x2000 },
- { 0x0700, 0xfed1, 0x0000 },
- { 0x0700, 0xfed3, 0x0000 },
- { 0x8700, 0xfed8, 0x3000 },
- { 0x8700, 0xfed6, 0x2000 },
- { 0x0700, 0xfed5, 0x0000 },
- { 0x0700, 0xfed7, 0x0000 },
- { 0x8700, 0xfeda, 0x2000 },
- { 0x0700, 0xfed9, 0x0000 },
- { 0x0700, 0xfedb, 0x0000 },
- { 0x8700, 0xfee4, 0x4000 },
- { 0x8700, 0xfee0, 0x3000 },
- { 0x8700, 0xfede, 0x2000 },
- { 0x0700, 0xfedd, 0x0000 },
- { 0x0700, 0xfedf, 0x0000 },
- { 0x8700, 0xfee2, 0x2000 },
- { 0x0700, 0xfee1, 0x0000 },
- { 0x0700, 0xfee3, 0x0000 },
- { 0x8700, 0xfee8, 0x3000 },
- { 0x8700, 0xfee6, 0x2000 },
- { 0x0700, 0xfee5, 0x0000 },
- { 0x0700, 0xfee7, 0x0000 },
- { 0x8700, 0xfeea, 0x2000 },
- { 0x0700, 0xfee9, 0x0000 },
- { 0x0700, 0xfeeb, 0x0000 },
- { 0x9500, 0xff0f, 0x6000 },
- { 0x8700, 0xfefc, 0x5000 },
- { 0x8700, 0xfef4, 0x4000 },
- { 0x8700, 0xfef0, 0x3000 },
- { 0x8700, 0xfeee, 0x2000 },
- { 0x0700, 0xfeed, 0x0000 },
- { 0x0700, 0xfeef, 0x0000 },
- { 0x8700, 0xfef2, 0x2000 },
- { 0x0700, 0xfef1, 0x0000 },
- { 0x0700, 0xfef3, 0x0000 },
- { 0x8700, 0xfef8, 0x3000 },
- { 0x8700, 0xfef6, 0x2000 },
- { 0x0700, 0xfef5, 0x0000 },
- { 0x0700, 0xfef7, 0x0000 },
- { 0x8700, 0xfefa, 0x2000 },
- { 0x0700, 0xfef9, 0x0000 },
- { 0x0700, 0xfefb, 0x0000 },
- { 0x9500, 0xff07, 0x4000 },
- { 0x9500, 0xff03, 0x3000 },
- { 0x9500, 0xff01, 0x2000 },
- { 0x0100, 0xfeff, 0x0000 },
- { 0x1500, 0xff02, 0x0000 },
- { 0x9500, 0xff05, 0x2000 },
- { 0x1700, 0xff04, 0x0000 },
- { 0x1500, 0xff06, 0x0000 },
- { 0x9900, 0xff0b, 0x3000 },
- { 0x9200, 0xff09, 0x2000 },
- { 0x1600, 0xff08, 0x0000 },
- { 0x1500, 0xff0a, 0x0000 },
- { 0x9100, 0xff0d, 0x2000 },
- { 0x1500, 0xff0c, 0x0000 },
- { 0x1500, 0xff0e, 0x0000 },
- { 0x9500, 0xff1f, 0x5000 },
- { 0x8d00, 0xff17, 0x4000 },
- { 0x8d00, 0xff13, 0x3000 },
- { 0x8d00, 0xff11, 0x2000 },
- { 0x0d00, 0xff10, 0x0000 },
- { 0x0d00, 0xff12, 0x0000 },
- { 0x8d00, 0xff15, 0x2000 },
- { 0x0d00, 0xff14, 0x0000 },
- { 0x0d00, 0xff16, 0x0000 },
- { 0x9500, 0xff1b, 0x3000 },
- { 0x8d00, 0xff19, 0x2000 },
- { 0x0d00, 0xff18, 0x0000 },
- { 0x1500, 0xff1a, 0x0000 },
- { 0x9900, 0xff1d, 0x2000 },
- { 0x1900, 0xff1c, 0x0000 },
- { 0x1900, 0xff1e, 0x0000 },
- { 0x8900, 0xff27, 0x4020 },
- { 0x8900, 0xff23, 0x3020 },
- { 0x8900, 0xff21, 0x2020 },
- { 0x1500, 0xff20, 0x0000 },
- { 0x0900, 0xff22, 0x0020 },
- { 0x8900, 0xff25, 0x2020 },
- { 0x0900, 0xff24, 0x0020 },
- { 0x0900, 0xff26, 0x0020 },
- { 0x8900, 0xff2b, 0x3020 },
- { 0x8900, 0xff29, 0x2020 },
- { 0x0900, 0xff28, 0x0020 },
- { 0x0900, 0xff2a, 0x0020 },
- { 0x8900, 0xff2d, 0x2020 },
- { 0x0900, 0xff2c, 0x0020 },
- { 0x0900, 0xff2e, 0x0020 },
- { 0x8700, 0xff6f, 0x7000 },
- { 0x8500, 0xff4f, 0x6fe0 },
- { 0x9000, 0xff3f, 0x5000 },
- { 0x8900, 0xff37, 0x4020 },
- { 0x8900, 0xff33, 0x3020 },
- { 0x8900, 0xff31, 0x2020 },
- { 0x0900, 0xff30, 0x0020 },
- { 0x0900, 0xff32, 0x0020 },
- { 0x8900, 0xff35, 0x2020 },
- { 0x0900, 0xff34, 0x0020 },
- { 0x0900, 0xff36, 0x0020 },
- { 0x9600, 0xff3b, 0x3000 },
- { 0x8900, 0xff39, 0x2020 },
- { 0x0900, 0xff38, 0x0020 },
- { 0x0900, 0xff3a, 0x0020 },
- { 0x9200, 0xff3d, 0x2000 },
- { 0x1500, 0xff3c, 0x0000 },
- { 0x1800, 0xff3e, 0x0000 },
- { 0x8500, 0xff47, 0x4fe0 },
- { 0x8500, 0xff43, 0x3fe0 },
- { 0x8500, 0xff41, 0x2fe0 },
- { 0x1800, 0xff40, 0x0000 },
- { 0x0500, 0xff42, 0x0fe0 },
- { 0x8500, 0xff45, 0x2fe0 },
- { 0x0500, 0xff44, 0x0fe0 },
- { 0x0500, 0xff46, 0x0fe0 },
- { 0x8500, 0xff4b, 0x3fe0 },
- { 0x8500, 0xff49, 0x2fe0 },
- { 0x0500, 0xff48, 0x0fe0 },
- { 0x0500, 0xff4a, 0x0fe0 },
- { 0x8500, 0xff4d, 0x2fe0 },
- { 0x0500, 0xff4c, 0x0fe0 },
- { 0x0500, 0xff4e, 0x0fe0 },
- { 0x9600, 0xff5f, 0x5000 },
- { 0x8500, 0xff57, 0x4fe0 },
- { 0x8500, 0xff53, 0x3fe0 },
- { 0x8500, 0xff51, 0x2fe0 },
- { 0x0500, 0xff50, 0x0fe0 },
- { 0x0500, 0xff52, 0x0fe0 },
- { 0x8500, 0xff55, 0x2fe0 },
- { 0x0500, 0xff54, 0x0fe0 },
- { 0x0500, 0xff56, 0x0fe0 },
- { 0x9600, 0xff5b, 0x3000 },
- { 0x8500, 0xff59, 0x2fe0 },
- { 0x0500, 0xff58, 0x0fe0 },
- { 0x0500, 0xff5a, 0x0fe0 },
- { 0x9200, 0xff5d, 0x2000 },
- { 0x1900, 0xff5c, 0x0000 },
- { 0x1900, 0xff5e, 0x0000 },
- { 0x8700, 0xff67, 0x4000 },
- { 0x9200, 0xff63, 0x3000 },
- { 0x9500, 0xff61, 0x2000 },
- { 0x1200, 0xff60, 0x0000 },
- { 0x1600, 0xff62, 0x0000 },
- { 0x9000, 0xff65, 0x2000 },
- { 0x1500, 0xff64, 0x0000 },
- { 0x0700, 0xff66, 0x0000 },
- { 0x8700, 0xff6b, 0x3000 },
- { 0x8700, 0xff69, 0x2000 },
- { 0x0700, 0xff68, 0x0000 },
- { 0x0700, 0xff6a, 0x0000 },
- { 0x8700, 0xff6d, 0x2000 },
- { 0x0700, 0xff6c, 0x0000 },
- { 0x0700, 0xff6e, 0x0000 },
- { 0x8700, 0xff8f, 0x6000 },
- { 0x8700, 0xff7f, 0x5000 },
- { 0x8700, 0xff77, 0x4000 },
- { 0x8700, 0xff73, 0x3000 },
- { 0x8700, 0xff71, 0x2000 },
- { 0x0600, 0xff70, 0x0000 },
- { 0x0700, 0xff72, 0x0000 },
- { 0x8700, 0xff75, 0x2000 },
- { 0x0700, 0xff74, 0x0000 },
- { 0x0700, 0xff76, 0x0000 },
- { 0x8700, 0xff7b, 0x3000 },
- { 0x8700, 0xff79, 0x2000 },
- { 0x0700, 0xff78, 0x0000 },
- { 0x0700, 0xff7a, 0x0000 },
- { 0x8700, 0xff7d, 0x2000 },
- { 0x0700, 0xff7c, 0x0000 },
- { 0x0700, 0xff7e, 0x0000 },
- { 0x8700, 0xff87, 0x4000 },
- { 0x8700, 0xff83, 0x3000 },
- { 0x8700, 0xff81, 0x2000 },
- { 0x0700, 0xff80, 0x0000 },
- { 0x0700, 0xff82, 0x0000 },
- { 0x8700, 0xff85, 0x2000 },
- { 0x0700, 0xff84, 0x0000 },
- { 0x0700, 0xff86, 0x0000 },
- { 0x8700, 0xff8b, 0x3000 },
- { 0x8700, 0xff89, 0x2000 },
- { 0x0700, 0xff88, 0x0000 },
- { 0x0700, 0xff8a, 0x0000 },
- { 0x8700, 0xff8d, 0x2000 },
- { 0x0700, 0xff8c, 0x0000 },
- { 0x0700, 0xff8e, 0x0000 },
- { 0x8600, 0xff9f, 0x5000 },
- { 0x8700, 0xff97, 0x4000 },
- { 0x8700, 0xff93, 0x3000 },
- { 0x8700, 0xff91, 0x2000 },
- { 0x0700, 0xff90, 0x0000 },
- { 0x0700, 0xff92, 0x0000 },
- { 0x8700, 0xff95, 0x2000 },
- { 0x0700, 0xff94, 0x0000 },
- { 0x0700, 0xff96, 0x0000 },
- { 0x8700, 0xff9b, 0x3000 },
- { 0x8700, 0xff99, 0x2000 },
- { 0x0700, 0xff98, 0x0000 },
- { 0x0700, 0xff9a, 0x0000 },
- { 0x8700, 0xff9d, 0x2000 },
- { 0x0700, 0xff9c, 0x0000 },
- { 0x0600, 0xff9e, 0x0000 },
- { 0x8700, 0xffa7, 0x4000 },
- { 0x8700, 0xffa3, 0x3000 },
- { 0x8700, 0xffa1, 0x2000 },
- { 0x0700, 0xffa0, 0x0000 },
- { 0x0700, 0xffa2, 0x0000 },
- { 0x8700, 0xffa5, 0x2000 },
- { 0x0700, 0xffa4, 0x0000 },
- { 0x0700, 0xffa6, 0x0000 },
- { 0x8700, 0xffab, 0x3000 },
- { 0x8700, 0xffa9, 0x2000 },
- { 0x0700, 0xffa8, 0x0000 },
- { 0x0700, 0xffaa, 0x0000 },
- { 0x8700, 0xffad, 0x2000 },
- { 0x0700, 0xffac, 0x0000 },
- { 0x0700, 0xffae, 0x0000 },
- { 0x8701, 0x004c, 0x8000 },
- { 0x8701, 0x0008, 0x7000 },
- { 0x8700, 0xffd6, 0x6000 },
- { 0x8700, 0xffc2, 0x5000 },
- { 0x8700, 0xffb7, 0x4000 },
- { 0x8700, 0xffb3, 0x3000 },
- { 0x8700, 0xffb1, 0x2000 },
- { 0x0700, 0xffb0, 0x0000 },
- { 0x0700, 0xffb2, 0x0000 },
- { 0x8700, 0xffb5, 0x2000 },
- { 0x0700, 0xffb4, 0x0000 },
- { 0x0700, 0xffb6, 0x0000 },
- { 0x8700, 0xffbb, 0x3000 },
- { 0x8700, 0xffb9, 0x2000 },
- { 0x0700, 0xffb8, 0x0000 },
- { 0x0700, 0xffba, 0x0000 },
- { 0x8700, 0xffbd, 0x2000 },
- { 0x0700, 0xffbc, 0x0000 },
- { 0x0700, 0xffbe, 0x0000 },
- { 0x8700, 0xffcc, 0x4000 },
- { 0x8700, 0xffc6, 0x3000 },
- { 0x8700, 0xffc4, 0x2000 },
- { 0x0700, 0xffc3, 0x0000 },
- { 0x0700, 0xffc5, 0x0000 },
- { 0x8700, 0xffca, 0x2000 },
- { 0x0700, 0xffc7, 0x0000 },
- { 0x0700, 0xffcb, 0x0000 },
- { 0x8700, 0xffd2, 0x3000 },
- { 0x8700, 0xffce, 0x2000 },
- { 0x0700, 0xffcd, 0x0000 },
- { 0x0700, 0xffcf, 0x0000 },
- { 0x8700, 0xffd4, 0x2000 },
- { 0x0700, 0xffd3, 0x0000 },
- { 0x0700, 0xffd5, 0x0000 },
- { 0x9900, 0xffec, 0x5000 },
- { 0x9800, 0xffe3, 0x4000 },
- { 0x8700, 0xffdc, 0x3000 },
- { 0x8700, 0xffda, 0x2000 },
- { 0x0700, 0xffd7, 0x0000 },
- { 0x0700, 0xffdb, 0x0000 },
- { 0x9700, 0xffe1, 0x2000 },
- { 0x1700, 0xffe0, 0x0000 },
- { 0x1900, 0xffe2, 0x0000 },
- { 0x9a00, 0xffe8, 0x3000 },
- { 0x9700, 0xffe5, 0x2000 },
- { 0x1a00, 0xffe4, 0x0000 },
- { 0x1700, 0xffe6, 0x0000 },
- { 0x9900, 0xffea, 0x2000 },
- { 0x1900, 0xffe9, 0x0000 },
- { 0x1900, 0xffeb, 0x0000 },
- { 0x8701, 0x0000, 0x4000 },
- { 0x8100, 0xfffa, 0x3000 },
- { 0x9a00, 0xffee, 0x2000 },
- { 0x1a00, 0xffed, 0x0000 },
- { 0x0100, 0xfff9, 0x0000 },
- { 0x9a00, 0xfffc, 0x2000 },
- { 0x0100, 0xfffb, 0x0000 },
- { 0x1a00, 0xfffd, 0x0000 },
- { 0x8701, 0x0004, 0x3000 },
- { 0x8701, 0x0002, 0x2000 },
- { 0x0701, 0x0001, 0x0000 },
- { 0x0701, 0x0003, 0x0000 },
- { 0x8701, 0x0006, 0x2000 },
- { 0x0701, 0x0005, 0x0000 },
- { 0x0701, 0x0007, 0x0000 },
- { 0x8701, 0x002a, 0x6000 },
- { 0x8701, 0x0019, 0x5000 },
- { 0x8701, 0x0011, 0x4000 },
- { 0x8701, 0x000d, 0x3000 },
- { 0x8701, 0x000a, 0x2000 },
- { 0x0701, 0x0009, 0x0000 },
- { 0x0701, 0x000b, 0x0000 },
- { 0x8701, 0x000f, 0x2000 },
- { 0x0701, 0x000e, 0x0000 },
- { 0x0701, 0x0010, 0x0000 },
- { 0x8701, 0x0015, 0x3000 },
- { 0x8701, 0x0013, 0x2000 },
- { 0x0701, 0x0012, 0x0000 },
- { 0x0701, 0x0014, 0x0000 },
- { 0x8701, 0x0017, 0x2000 },
- { 0x0701, 0x0016, 0x0000 },
- { 0x0701, 0x0018, 0x0000 },
- { 0x8701, 0x0021, 0x4000 },
- { 0x8701, 0x001d, 0x3000 },
- { 0x8701, 0x001b, 0x2000 },
- { 0x0701, 0x001a, 0x0000 },
- { 0x0701, 0x001c, 0x0000 },
- { 0x8701, 0x001f, 0x2000 },
- { 0x0701, 0x001e, 0x0000 },
- { 0x0701, 0x0020, 0x0000 },
- { 0x8701, 0x0025, 0x3000 },
- { 0x8701, 0x0023, 0x2000 },
- { 0x0701, 0x0022, 0x0000 },
- { 0x0701, 0x0024, 0x0000 },
- { 0x8701, 0x0028, 0x2000 },
- { 0x0701, 0x0026, 0x0000 },
- { 0x0701, 0x0029, 0x0000 },
- { 0x8701, 0x003a, 0x5000 },
- { 0x8701, 0x0032, 0x4000 },
- { 0x8701, 0x002e, 0x3000 },
- { 0x8701, 0x002c, 0x2000 },
- { 0x0701, 0x002b, 0x0000 },
- { 0x0701, 0x002d, 0x0000 },
- { 0x8701, 0x0030, 0x2000 },
- { 0x0701, 0x002f, 0x0000 },
- { 0x0701, 0x0031, 0x0000 },
- { 0x8701, 0x0036, 0x3000 },
- { 0x8701, 0x0034, 0x2000 },
- { 0x0701, 0x0033, 0x0000 },
- { 0x0701, 0x0035, 0x0000 },
- { 0x8701, 0x0038, 0x2000 },
- { 0x0701, 0x0037, 0x0000 },
- { 0x0701, 0x0039, 0x0000 },
- { 0x8701, 0x0044, 0x4000 },
- { 0x8701, 0x0040, 0x3000 },
- { 0x8701, 0x003d, 0x2000 },
- { 0x0701, 0x003c, 0x0000 },
- { 0x0701, 0x003f, 0x0000 },
- { 0x8701, 0x0042, 0x2000 },
- { 0x0701, 0x0041, 0x0000 },
- { 0x0701, 0x0043, 0x0000 },
- { 0x8701, 0x0048, 0x3000 },
- { 0x8701, 0x0046, 0x2000 },
- { 0x0701, 0x0045, 0x0000 },
- { 0x0701, 0x0047, 0x0000 },
- { 0x8701, 0x004a, 0x2000 },
- { 0x0701, 0x0049, 0x0000 },
- { 0x0701, 0x004b, 0x0000 },
- { 0x8701, 0x00b0, 0x7000 },
- { 0x8701, 0x0090, 0x6000 },
- { 0x8701, 0x0080, 0x5000 },
- { 0x8701, 0x0056, 0x4000 },
- { 0x8701, 0x0052, 0x3000 },
- { 0x8701, 0x0050, 0x2000 },
- { 0x0701, 0x004d, 0x0000 },
- { 0x0701, 0x0051, 0x0000 },
- { 0x8701, 0x0054, 0x2000 },
- { 0x0701, 0x0053, 0x0000 },
- { 0x0701, 0x0055, 0x0000 },
- { 0x8701, 0x005a, 0x3000 },
- { 0x8701, 0x0058, 0x2000 },
- { 0x0701, 0x0057, 0x0000 },
- { 0x0701, 0x0059, 0x0000 },
- { 0x8701, 0x005c, 0x2000 },
- { 0x0701, 0x005b, 0x0000 },
- { 0x0701, 0x005d, 0x0000 },
- { 0x8701, 0x0088, 0x4000 },
- { 0x8701, 0x0084, 0x3000 },
- { 0x8701, 0x0082, 0x2000 },
- { 0x0701, 0x0081, 0x0000 },
- { 0x0701, 0x0083, 0x0000 },
- { 0x8701, 0x0086, 0x2000 },
- { 0x0701, 0x0085, 0x0000 },
- { 0x0701, 0x0087, 0x0000 },
- { 0x8701, 0x008c, 0x3000 },
- { 0x8701, 0x008a, 0x2000 },
- { 0x0701, 0x0089, 0x0000 },
- { 0x0701, 0x008b, 0x0000 },
- { 0x8701, 0x008e, 0x2000 },
- { 0x0701, 0x008d, 0x0000 },
- { 0x0701, 0x008f, 0x0000 },
- { 0x8701, 0x00a0, 0x5000 },
- { 0x8701, 0x0098, 0x4000 },
- { 0x8701, 0x0094, 0x3000 },
- { 0x8701, 0x0092, 0x2000 },
- { 0x0701, 0x0091, 0x0000 },
- { 0x0701, 0x0093, 0x0000 },
- { 0x8701, 0x0096, 0x2000 },
- { 0x0701, 0x0095, 0x0000 },
- { 0x0701, 0x0097, 0x0000 },
- { 0x8701, 0x009c, 0x3000 },
- { 0x8701, 0x009a, 0x2000 },
- { 0x0701, 0x0099, 0x0000 },
- { 0x0701, 0x009b, 0x0000 },
- { 0x8701, 0x009e, 0x2000 },
- { 0x0701, 0x009d, 0x0000 },
- { 0x0701, 0x009f, 0x0000 },
- { 0x8701, 0x00a8, 0x4000 },
- { 0x8701, 0x00a4, 0x3000 },
- { 0x8701, 0x00a2, 0x2000 },
- { 0x0701, 0x00a1, 0x0000 },
- { 0x0701, 0x00a3, 0x0000 },
- { 0x8701, 0x00a6, 0x2000 },
- { 0x0701, 0x00a5, 0x0000 },
- { 0x0701, 0x00a7, 0x0000 },
- { 0x8701, 0x00ac, 0x3000 },
- { 0x8701, 0x00aa, 0x2000 },
- { 0x0701, 0x00a9, 0x0000 },
- { 0x0701, 0x00ab, 0x0000 },
- { 0x8701, 0x00ae, 0x2000 },
- { 0x0701, 0x00ad, 0x0000 },
- { 0x0701, 0x00af, 0x0000 },
- { 0x8701, 0x00d0, 0x6000 },
- { 0x8701, 0x00c0, 0x5000 },
- { 0x8701, 0x00b8, 0x4000 },
- { 0x8701, 0x00b4, 0x3000 },
- { 0x8701, 0x00b2, 0x2000 },
- { 0x0701, 0x00b1, 0x0000 },
- { 0x0701, 0x00b3, 0x0000 },
- { 0x8701, 0x00b6, 0x2000 },
- { 0x0701, 0x00b5, 0x0000 },
- { 0x0701, 0x00b7, 0x0000 },
- { 0x8701, 0x00bc, 0x3000 },
- { 0x8701, 0x00ba, 0x2000 },
- { 0x0701, 0x00b9, 0x0000 },
- { 0x0701, 0x00bb, 0x0000 },
- { 0x8701, 0x00be, 0x2000 },
- { 0x0701, 0x00bd, 0x0000 },
- { 0x0701, 0x00bf, 0x0000 },
- { 0x8701, 0x00c8, 0x4000 },
- { 0x8701, 0x00c4, 0x3000 },
- { 0x8701, 0x00c2, 0x2000 },
- { 0x0701, 0x00c1, 0x0000 },
- { 0x0701, 0x00c3, 0x0000 },
- { 0x8701, 0x00c6, 0x2000 },
- { 0x0701, 0x00c5, 0x0000 },
- { 0x0701, 0x00c7, 0x0000 },
- { 0x8701, 0x00cc, 0x3000 },
- { 0x8701, 0x00ca, 0x2000 },
- { 0x0701, 0x00c9, 0x0000 },
- { 0x0701, 0x00cb, 0x0000 },
- { 0x8701, 0x00ce, 0x2000 },
- { 0x0701, 0x00cd, 0x0000 },
- { 0x0701, 0x00cf, 0x0000 },
- { 0x8701, 0x00e0, 0x5000 },
- { 0x8701, 0x00d8, 0x4000 },
- { 0x8701, 0x00d4, 0x3000 },
- { 0x8701, 0x00d2, 0x2000 },
- { 0x0701, 0x00d1, 0x0000 },
- { 0x0701, 0x00d3, 0x0000 },
- { 0x8701, 0x00d6, 0x2000 },
- { 0x0701, 0x00d5, 0x0000 },
- { 0x0701, 0x00d7, 0x0000 },
- { 0x8701, 0x00dc, 0x3000 },
- { 0x8701, 0x00da, 0x2000 },
- { 0x0701, 0x00d9, 0x0000 },
- { 0x0701, 0x00db, 0x0000 },
- { 0x8701, 0x00de, 0x2000 },
- { 0x0701, 0x00dd, 0x0000 },
- { 0x0701, 0x00df, 0x0000 },
- { 0x8701, 0x00e8, 0x4000 },
- { 0x8701, 0x00e4, 0x3000 },
- { 0x8701, 0x00e2, 0x2000 },
- { 0x0701, 0x00e1, 0x0000 },
- { 0x0701, 0x00e3, 0x0000 },
- { 0x8701, 0x00e6, 0x2000 },
- { 0x0701, 0x00e5, 0x0000 },
- { 0x0701, 0x00e7, 0x0000 },
- { 0x8701, 0x00ec, 0x3000 },
- { 0x8701, 0x00ea, 0x2000 },
- { 0x0701, 0x00e9, 0x0000 },
- { 0x0701, 0x00eb, 0x0000 },
- { 0x8701, 0x00ee, 0x2000 },
- { 0x0701, 0x00ed, 0x0000 },
- { 0x0701, 0x00ef, 0x0000 },
- { 0x8501, 0xd459, 0xb000 },
- { 0x9a01, 0xd080, 0xa000 },
- { 0x8701, 0x045f, 0x9000 },
- { 0x8701, 0x0349, 0x8000 },
- { 0x9a01, 0x013c, 0x7000 },
- { 0x8f01, 0x0119, 0x6000 },
- { 0x8f01, 0x0109, 0x5000 },
- { 0x8701, 0x00f8, 0x4000 },
- { 0x8701, 0x00f4, 0x3000 },
- { 0x8701, 0x00f2, 0x2000 },
- { 0x0701, 0x00f1, 0x0000 },
- { 0x0701, 0x00f3, 0x0000 },
- { 0x8701, 0x00f6, 0x2000 },
- { 0x0701, 0x00f5, 0x0000 },
- { 0x0701, 0x00f7, 0x0000 },
- { 0x9501, 0x0101, 0x3000 },
- { 0x8701, 0x00fa, 0x2000 },
- { 0x0701, 0x00f9, 0x0000 },
- { 0x1501, 0x0100, 0x0000 },
- { 0x8f01, 0x0107, 0x2000 },
- { 0x1a01, 0x0102, 0x0000 },
- { 0x0f01, 0x0108, 0x0000 },
- { 0x8f01, 0x0111, 0x4000 },
- { 0x8f01, 0x010d, 0x3000 },
- { 0x8f01, 0x010b, 0x2000 },
- { 0x0f01, 0x010a, 0x0000 },
- { 0x0f01, 0x010c, 0x0000 },
- { 0x8f01, 0x010f, 0x2000 },
- { 0x0f01, 0x010e, 0x0000 },
- { 0x0f01, 0x0110, 0x0000 },
- { 0x8f01, 0x0115, 0x3000 },
- { 0x8f01, 0x0113, 0x2000 },
- { 0x0f01, 0x0112, 0x0000 },
- { 0x0f01, 0x0114, 0x0000 },
- { 0x8f01, 0x0117, 0x2000 },
- { 0x0f01, 0x0116, 0x0000 },
- { 0x0f01, 0x0118, 0x0000 },
- { 0x8f01, 0x0129, 0x5000 },
- { 0x8f01, 0x0121, 0x4000 },
- { 0x8f01, 0x011d, 0x3000 },
- { 0x8f01, 0x011b, 0x2000 },
- { 0x0f01, 0x011a, 0x0000 },
- { 0x0f01, 0x011c, 0x0000 },
- { 0x8f01, 0x011f, 0x2000 },
- { 0x0f01, 0x011e, 0x0000 },
- { 0x0f01, 0x0120, 0x0000 },
- { 0x8f01, 0x0125, 0x3000 },
- { 0x8f01, 0x0123, 0x2000 },
- { 0x0f01, 0x0122, 0x0000 },
- { 0x0f01, 0x0124, 0x0000 },
- { 0x8f01, 0x0127, 0x2000 },
- { 0x0f01, 0x0126, 0x0000 },
- { 0x0f01, 0x0128, 0x0000 },
- { 0x8f01, 0x0131, 0x4000 },
- { 0x8f01, 0x012d, 0x3000 },
- { 0x8f01, 0x012b, 0x2000 },
- { 0x0f01, 0x012a, 0x0000 },
- { 0x0f01, 0x012c, 0x0000 },
- { 0x8f01, 0x012f, 0x2000 },
- { 0x0f01, 0x012e, 0x0000 },
- { 0x0f01, 0x0130, 0x0000 },
- { 0x9a01, 0x0138, 0x3000 },
- { 0x8f01, 0x0133, 0x2000 },
- { 0x0f01, 0x0132, 0x0000 },
- { 0x1a01, 0x0137, 0x0000 },
- { 0x9a01, 0x013a, 0x2000 },
- { 0x1a01, 0x0139, 0x0000 },
- { 0x1a01, 0x013b, 0x0000 },
- { 0x8701, 0x031c, 0x6000 },
- { 0x8701, 0x030c, 0x5000 },
- { 0x8701, 0x0304, 0x4000 },
- { 0x8701, 0x0300, 0x3000 },
- { 0x9a01, 0x013e, 0x2000 },
- { 0x1a01, 0x013d, 0x0000 },
- { 0x1a01, 0x013f, 0x0000 },
- { 0x8701, 0x0302, 0x2000 },
- { 0x0701, 0x0301, 0x0000 },
- { 0x0701, 0x0303, 0x0000 },
- { 0x8701, 0x0308, 0x3000 },
- { 0x8701, 0x0306, 0x2000 },
- { 0x0701, 0x0305, 0x0000 },
- { 0x0701, 0x0307, 0x0000 },
- { 0x8701, 0x030a, 0x2000 },
- { 0x0701, 0x0309, 0x0000 },
- { 0x0701, 0x030b, 0x0000 },
- { 0x8701, 0x0314, 0x4000 },
- { 0x8701, 0x0310, 0x3000 },
- { 0x8701, 0x030e, 0x2000 },
- { 0x0701, 0x030d, 0x0000 },
- { 0x0701, 0x030f, 0x0000 },
- { 0x8701, 0x0312, 0x2000 },
- { 0x0701, 0x0311, 0x0000 },
- { 0x0701, 0x0313, 0x0000 },
- { 0x8701, 0x0318, 0x3000 },
- { 0x8701, 0x0316, 0x2000 },
- { 0x0701, 0x0315, 0x0000 },
- { 0x0701, 0x0317, 0x0000 },
- { 0x8701, 0x031a, 0x2000 },
- { 0x0701, 0x0319, 0x0000 },
- { 0x0701, 0x031b, 0x0000 },
- { 0x8701, 0x0339, 0x5000 },
- { 0x8701, 0x0331, 0x4000 },
- { 0x8f01, 0x0321, 0x3000 },
- { 0x8701, 0x031e, 0x2000 },
- { 0x0701, 0x031d, 0x0000 },
- { 0x0f01, 0x0320, 0x0000 },
- { 0x8f01, 0x0323, 0x2000 },
- { 0x0f01, 0x0322, 0x0000 },
- { 0x0701, 0x0330, 0x0000 },
- { 0x8701, 0x0335, 0x3000 },
- { 0x8701, 0x0333, 0x2000 },
- { 0x0701, 0x0332, 0x0000 },
- { 0x0701, 0x0334, 0x0000 },
- { 0x8701, 0x0337, 0x2000 },
- { 0x0701, 0x0336, 0x0000 },
- { 0x0701, 0x0338, 0x0000 },
- { 0x8701, 0x0341, 0x4000 },
- { 0x8701, 0x033d, 0x3000 },
- { 0x8701, 0x033b, 0x2000 },
- { 0x0701, 0x033a, 0x0000 },
- { 0x0701, 0x033c, 0x0000 },
- { 0x8701, 0x033f, 0x2000 },
- { 0x0701, 0x033e, 0x0000 },
- { 0x0701, 0x0340, 0x0000 },
- { 0x8701, 0x0345, 0x3000 },
- { 0x8701, 0x0343, 0x2000 },
- { 0x0701, 0x0342, 0x0000 },
- { 0x0701, 0x0344, 0x0000 },
- { 0x8701, 0x0347, 0x2000 },
- { 0x0701, 0x0346, 0x0000 },
- { 0x0701, 0x0348, 0x0000 },
- { 0x8901, 0x041f, 0x7028 },
- { 0x9501, 0x039f, 0x6000 },
- { 0x8701, 0x038e, 0x5000 },
- { 0x8701, 0x0386, 0x4000 },
- { 0x8701, 0x0382, 0x3000 },
- { 0x8701, 0x0380, 0x2000 },
- { 0x0e01, 0x034a, 0x0000 },
- { 0x0701, 0x0381, 0x0000 },
- { 0x8701, 0x0384, 0x2000 },
- { 0x0701, 0x0383, 0x0000 },
- { 0x0701, 0x0385, 0x0000 },
- { 0x8701, 0x038a, 0x3000 },
- { 0x8701, 0x0388, 0x2000 },
- { 0x0701, 0x0387, 0x0000 },
- { 0x0701, 0x0389, 0x0000 },
- { 0x8701, 0x038c, 0x2000 },
- { 0x0701, 0x038b, 0x0000 },
- { 0x0701, 0x038d, 0x0000 },
- { 0x8701, 0x0396, 0x4000 },
- { 0x8701, 0x0392, 0x3000 },
- { 0x8701, 0x0390, 0x2000 },
- { 0x0701, 0x038f, 0x0000 },
- { 0x0701, 0x0391, 0x0000 },
- { 0x8701, 0x0394, 0x2000 },
- { 0x0701, 0x0393, 0x0000 },
- { 0x0701, 0x0395, 0x0000 },
- { 0x8701, 0x039a, 0x3000 },
- { 0x8701, 0x0398, 0x2000 },
- { 0x0701, 0x0397, 0x0000 },
- { 0x0701, 0x0399, 0x0000 },
- { 0x8701, 0x039c, 0x2000 },
- { 0x0701, 0x039b, 0x0000 },
- { 0x0701, 0x039d, 0x0000 },
- { 0x8901, 0x040f, 0x5028 },
- { 0x8901, 0x0407, 0x4028 },
- { 0x8901, 0x0403, 0x3028 },
- { 0x8901, 0x0401, 0x2028 },
- { 0x0901, 0x0400, 0x0028 },
- { 0x0901, 0x0402, 0x0028 },
- { 0x8901, 0x0405, 0x2028 },
- { 0x0901, 0x0404, 0x0028 },
- { 0x0901, 0x0406, 0x0028 },
- { 0x8901, 0x040b, 0x3028 },
- { 0x8901, 0x0409, 0x2028 },
- { 0x0901, 0x0408, 0x0028 },
- { 0x0901, 0x040a, 0x0028 },
- { 0x8901, 0x040d, 0x2028 },
- { 0x0901, 0x040c, 0x0028 },
- { 0x0901, 0x040e, 0x0028 },
- { 0x8901, 0x0417, 0x4028 },
- { 0x8901, 0x0413, 0x3028 },
- { 0x8901, 0x0411, 0x2028 },
- { 0x0901, 0x0410, 0x0028 },
- { 0x0901, 0x0412, 0x0028 },
- { 0x8901, 0x0415, 0x2028 },
- { 0x0901, 0x0414, 0x0028 },
- { 0x0901, 0x0416, 0x0028 },
- { 0x8901, 0x041b, 0x3028 },
- { 0x8901, 0x0419, 0x2028 },
- { 0x0901, 0x0418, 0x0028 },
- { 0x0901, 0x041a, 0x0028 },
- { 0x8901, 0x041d, 0x2028 },
- { 0x0901, 0x041c, 0x0028 },
- { 0x0901, 0x041e, 0x0028 },
- { 0x8501, 0x043f, 0x6fd8 },
- { 0x8501, 0x042f, 0x5fd8 },
- { 0x8901, 0x0427, 0x4028 },
- { 0x8901, 0x0423, 0x3028 },
- { 0x8901, 0x0421, 0x2028 },
- { 0x0901, 0x0420, 0x0028 },
- { 0x0901, 0x0422, 0x0028 },
- { 0x8901, 0x0425, 0x2028 },
- { 0x0901, 0x0424, 0x0028 },
- { 0x0901, 0x0426, 0x0028 },
- { 0x8501, 0x042b, 0x3fd8 },
- { 0x8501, 0x0429, 0x2fd8 },
- { 0x0501, 0x0428, 0x0fd8 },
- { 0x0501, 0x042a, 0x0fd8 },
- { 0x8501, 0x042d, 0x2fd8 },
- { 0x0501, 0x042c, 0x0fd8 },
- { 0x0501, 0x042e, 0x0fd8 },
- { 0x8501, 0x0437, 0x4fd8 },
- { 0x8501, 0x0433, 0x3fd8 },
- { 0x8501, 0x0431, 0x2fd8 },
- { 0x0501, 0x0430, 0x0fd8 },
- { 0x0501, 0x0432, 0x0fd8 },
- { 0x8501, 0x0435, 0x2fd8 },
- { 0x0501, 0x0434, 0x0fd8 },
- { 0x0501, 0x0436, 0x0fd8 },
- { 0x8501, 0x043b, 0x3fd8 },
- { 0x8501, 0x0439, 0x2fd8 },
- { 0x0501, 0x0438, 0x0fd8 },
- { 0x0501, 0x043a, 0x0fd8 },
- { 0x8501, 0x043d, 0x2fd8 },
- { 0x0501, 0x043c, 0x0fd8 },
- { 0x0501, 0x043e, 0x0fd8 },
- { 0x8501, 0x044f, 0x5fd8 },
- { 0x8501, 0x0447, 0x4fd8 },
- { 0x8501, 0x0443, 0x3fd8 },
- { 0x8501, 0x0441, 0x2fd8 },
- { 0x0501, 0x0440, 0x0fd8 },
- { 0x0501, 0x0442, 0x0fd8 },
- { 0x8501, 0x0445, 0x2fd8 },
- { 0x0501, 0x0444, 0x0fd8 },
- { 0x0501, 0x0446, 0x0fd8 },
- { 0x8501, 0x044b, 0x3fd8 },
- { 0x8501, 0x0449, 0x2fd8 },
- { 0x0501, 0x0448, 0x0fd8 },
- { 0x0501, 0x044a, 0x0fd8 },
- { 0x8501, 0x044d, 0x2fd8 },
- { 0x0501, 0x044c, 0x0fd8 },
- { 0x0501, 0x044e, 0x0fd8 },
- { 0x8701, 0x0457, 0x4000 },
- { 0x8701, 0x0453, 0x3000 },
- { 0x8701, 0x0451, 0x2000 },
- { 0x0701, 0x0450, 0x0000 },
- { 0x0701, 0x0452, 0x0000 },
- { 0x8701, 0x0455, 0x2000 },
- { 0x0701, 0x0454, 0x0000 },
- { 0x0701, 0x0456, 0x0000 },
- { 0x8701, 0x045b, 0x3000 },
- { 0x8701, 0x0459, 0x2000 },
- { 0x0701, 0x0458, 0x0000 },
- { 0x0701, 0x045a, 0x0000 },
- { 0x8701, 0x045d, 0x2000 },
- { 0x0701, 0x045c, 0x0000 },
- { 0x0701, 0x045e, 0x0000 },
- { 0x9a01, 0xd000, 0x8000 },
- { 0x8d01, 0x04a1, 0x7000 },
- { 0x8701, 0x047f, 0x6000 },
- { 0x8701, 0x046f, 0x5000 },
- { 0x8701, 0x0467, 0x4000 },
- { 0x8701, 0x0463, 0x3000 },
- { 0x8701, 0x0461, 0x2000 },
- { 0x0701, 0x0460, 0x0000 },
- { 0x0701, 0x0462, 0x0000 },
- { 0x8701, 0x0465, 0x2000 },
- { 0x0701, 0x0464, 0x0000 },
- { 0x0701, 0x0466, 0x0000 },
- { 0x8701, 0x046b, 0x3000 },
- { 0x8701, 0x0469, 0x2000 },
- { 0x0701, 0x0468, 0x0000 },
- { 0x0701, 0x046a, 0x0000 },
- { 0x8701, 0x046d, 0x2000 },
- { 0x0701, 0x046c, 0x0000 },
- { 0x0701, 0x046e, 0x0000 },
- { 0x8701, 0x0477, 0x4000 },
- { 0x8701, 0x0473, 0x3000 },
- { 0x8701, 0x0471, 0x2000 },
- { 0x0701, 0x0470, 0x0000 },
- { 0x0701, 0x0472, 0x0000 },
- { 0x8701, 0x0475, 0x2000 },
- { 0x0701, 0x0474, 0x0000 },
- { 0x0701, 0x0476, 0x0000 },
- { 0x8701, 0x047b, 0x3000 },
- { 0x8701, 0x0479, 0x2000 },
- { 0x0701, 0x0478, 0x0000 },
- { 0x0701, 0x047a, 0x0000 },
- { 0x8701, 0x047d, 0x2000 },
- { 0x0701, 0x047c, 0x0000 },
- { 0x0701, 0x047e, 0x0000 },
- { 0x8701, 0x048f, 0x5000 },
- { 0x8701, 0x0487, 0x4000 },
- { 0x8701, 0x0483, 0x3000 },
- { 0x8701, 0x0481, 0x2000 },
- { 0x0701, 0x0480, 0x0000 },
- { 0x0701, 0x0482, 0x0000 },
- { 0x8701, 0x0485, 0x2000 },
- { 0x0701, 0x0484, 0x0000 },
- { 0x0701, 0x0486, 0x0000 },
- { 0x8701, 0x048b, 0x3000 },
- { 0x8701, 0x0489, 0x2000 },
- { 0x0701, 0x0488, 0x0000 },
- { 0x0701, 0x048a, 0x0000 },
- { 0x8701, 0x048d, 0x2000 },
- { 0x0701, 0x048c, 0x0000 },
- { 0x0701, 0x048e, 0x0000 },
- { 0x8701, 0x0497, 0x4000 },
- { 0x8701, 0x0493, 0x3000 },
- { 0x8701, 0x0491, 0x2000 },
- { 0x0701, 0x0490, 0x0000 },
- { 0x0701, 0x0492, 0x0000 },
- { 0x8701, 0x0495, 0x2000 },
- { 0x0701, 0x0494, 0x0000 },
- { 0x0701, 0x0496, 0x0000 },
- { 0x8701, 0x049b, 0x3000 },
- { 0x8701, 0x0499, 0x2000 },
- { 0x0701, 0x0498, 0x0000 },
- { 0x0701, 0x049a, 0x0000 },
- { 0x8701, 0x049d, 0x2000 },
- { 0x0701, 0x049c, 0x0000 },
- { 0x0d01, 0x04a0, 0x0000 },
- { 0x8701, 0x081a, 0x6000 },
- { 0x8701, 0x080a, 0x5000 },
- { 0x8d01, 0x04a9, 0x4000 },
- { 0x8d01, 0x04a5, 0x3000 },
- { 0x8d01, 0x04a3, 0x2000 },
- { 0x0d01, 0x04a2, 0x0000 },
- { 0x0d01, 0x04a4, 0x0000 },
- { 0x8d01, 0x04a7, 0x2000 },
- { 0x0d01, 0x04a6, 0x0000 },
- { 0x0d01, 0x04a8, 0x0000 },
- { 0x8701, 0x0803, 0x3000 },
- { 0x8701, 0x0801, 0x2000 },
- { 0x0701, 0x0800, 0x0000 },
- { 0x0701, 0x0802, 0x0000 },
- { 0x8701, 0x0805, 0x2000 },
- { 0x0701, 0x0804, 0x0000 },
- { 0x0701, 0x0808, 0x0000 },
- { 0x8701, 0x0812, 0x4000 },
- { 0x8701, 0x080e, 0x3000 },
- { 0x8701, 0x080c, 0x2000 },
- { 0x0701, 0x080b, 0x0000 },
- { 0x0701, 0x080d, 0x0000 },
- { 0x8701, 0x0810, 0x2000 },
- { 0x0701, 0x080f, 0x0000 },
- { 0x0701, 0x0811, 0x0000 },
- { 0x8701, 0x0816, 0x3000 },
- { 0x8701, 0x0814, 0x2000 },
- { 0x0701, 0x0813, 0x0000 },
- { 0x0701, 0x0815, 0x0000 },
- { 0x8701, 0x0818, 0x2000 },
- { 0x0701, 0x0817, 0x0000 },
- { 0x0701, 0x0819, 0x0000 },
- { 0x8701, 0x082a, 0x5000 },
- { 0x8701, 0x0822, 0x4000 },
- { 0x8701, 0x081e, 0x3000 },
- { 0x8701, 0x081c, 0x2000 },
- { 0x0701, 0x081b, 0x0000 },
- { 0x0701, 0x081d, 0x0000 },
- { 0x8701, 0x0820, 0x2000 },
- { 0x0701, 0x081f, 0x0000 },
- { 0x0701, 0x0821, 0x0000 },
- { 0x8701, 0x0826, 0x3000 },
- { 0x8701, 0x0824, 0x2000 },
- { 0x0701, 0x0823, 0x0000 },
- { 0x0701, 0x0825, 0x0000 },
- { 0x8701, 0x0828, 0x2000 },
- { 0x0701, 0x0827, 0x0000 },
- { 0x0701, 0x0829, 0x0000 },
- { 0x8701, 0x0832, 0x4000 },
- { 0x8701, 0x082e, 0x3000 },
- { 0x8701, 0x082c, 0x2000 },
- { 0x0701, 0x082b, 0x0000 },
- { 0x0701, 0x082d, 0x0000 },
- { 0x8701, 0x0830, 0x2000 },
- { 0x0701, 0x082f, 0x0000 },
- { 0x0701, 0x0831, 0x0000 },
- { 0x8701, 0x0837, 0x3000 },
- { 0x8701, 0x0834, 0x2000 },
- { 0x0701, 0x0833, 0x0000 },
- { 0x0701, 0x0835, 0x0000 },
- { 0x8701, 0x083c, 0x2000 },
- { 0x0701, 0x0838, 0x0000 },
- { 0x0701, 0x083f, 0x0000 },
- { 0x9a01, 0xd040, 0x7000 },
- { 0x9a01, 0xd020, 0x6000 },
- { 0x9a01, 0xd010, 0x5000 },
- { 0x9a01, 0xd008, 0x4000 },
- { 0x9a01, 0xd004, 0x3000 },
- { 0x9a01, 0xd002, 0x2000 },
- { 0x1a01, 0xd001, 0x0000 },
- { 0x1a01, 0xd003, 0x0000 },
- { 0x9a01, 0xd006, 0x2000 },
- { 0x1a01, 0xd005, 0x0000 },
- { 0x1a01, 0xd007, 0x0000 },
- { 0x9a01, 0xd00c, 0x3000 },
- { 0x9a01, 0xd00a, 0x2000 },
- { 0x1a01, 0xd009, 0x0000 },
- { 0x1a01, 0xd00b, 0x0000 },
- { 0x9a01, 0xd00e, 0x2000 },
- { 0x1a01, 0xd00d, 0x0000 },
- { 0x1a01, 0xd00f, 0x0000 },
- { 0x9a01, 0xd018, 0x4000 },
- { 0x9a01, 0xd014, 0x3000 },
- { 0x9a01, 0xd012, 0x2000 },
- { 0x1a01, 0xd011, 0x0000 },
- { 0x1a01, 0xd013, 0x0000 },
- { 0x9a01, 0xd016, 0x2000 },
- { 0x1a01, 0xd015, 0x0000 },
- { 0x1a01, 0xd017, 0x0000 },
- { 0x9a01, 0xd01c, 0x3000 },
- { 0x9a01, 0xd01a, 0x2000 },
- { 0x1a01, 0xd019, 0x0000 },
- { 0x1a01, 0xd01b, 0x0000 },
- { 0x9a01, 0xd01e, 0x2000 },
- { 0x1a01, 0xd01d, 0x0000 },
- { 0x1a01, 0xd01f, 0x0000 },
- { 0x9a01, 0xd030, 0x5000 },
- { 0x9a01, 0xd028, 0x4000 },
- { 0x9a01, 0xd024, 0x3000 },
- { 0x9a01, 0xd022, 0x2000 },
- { 0x1a01, 0xd021, 0x0000 },
- { 0x1a01, 0xd023, 0x0000 },
- { 0x9a01, 0xd026, 0x2000 },
- { 0x1a01, 0xd025, 0x0000 },
- { 0x1a01, 0xd027, 0x0000 },
- { 0x9a01, 0xd02c, 0x3000 },
- { 0x9a01, 0xd02a, 0x2000 },
- { 0x1a01, 0xd029, 0x0000 },
- { 0x1a01, 0xd02b, 0x0000 },
- { 0x9a01, 0xd02e, 0x2000 },
- { 0x1a01, 0xd02d, 0x0000 },
- { 0x1a01, 0xd02f, 0x0000 },
- { 0x9a01, 0xd038, 0x4000 },
- { 0x9a01, 0xd034, 0x3000 },
- { 0x9a01, 0xd032, 0x2000 },
- { 0x1a01, 0xd031, 0x0000 },
- { 0x1a01, 0xd033, 0x0000 },
- { 0x9a01, 0xd036, 0x2000 },
- { 0x1a01, 0xd035, 0x0000 },
- { 0x1a01, 0xd037, 0x0000 },
- { 0x9a01, 0xd03c, 0x3000 },
- { 0x9a01, 0xd03a, 0x2000 },
- { 0x1a01, 0xd039, 0x0000 },
- { 0x1a01, 0xd03b, 0x0000 },
- { 0x9a01, 0xd03e, 0x2000 },
- { 0x1a01, 0xd03d, 0x0000 },
- { 0x1a01, 0xd03f, 0x0000 },
- { 0x9a01, 0xd060, 0x6000 },
- { 0x9a01, 0xd050, 0x5000 },
- { 0x9a01, 0xd048, 0x4000 },
- { 0x9a01, 0xd044, 0x3000 },
- { 0x9a01, 0xd042, 0x2000 },
- { 0x1a01, 0xd041, 0x0000 },
- { 0x1a01, 0xd043, 0x0000 },
- { 0x9a01, 0xd046, 0x2000 },
- { 0x1a01, 0xd045, 0x0000 },
- { 0x1a01, 0xd047, 0x0000 },
- { 0x9a01, 0xd04c, 0x3000 },
- { 0x9a01, 0xd04a, 0x2000 },
- { 0x1a01, 0xd049, 0x0000 },
- { 0x1a01, 0xd04b, 0x0000 },
- { 0x9a01, 0xd04e, 0x2000 },
- { 0x1a01, 0xd04d, 0x0000 },
- { 0x1a01, 0xd04f, 0x0000 },
- { 0x9a01, 0xd058, 0x4000 },
- { 0x9a01, 0xd054, 0x3000 },
- { 0x9a01, 0xd052, 0x2000 },
- { 0x1a01, 0xd051, 0x0000 },
- { 0x1a01, 0xd053, 0x0000 },
- { 0x9a01, 0xd056, 0x2000 },
- { 0x1a01, 0xd055, 0x0000 },
- { 0x1a01, 0xd057, 0x0000 },
- { 0x9a01, 0xd05c, 0x3000 },
- { 0x9a01, 0xd05a, 0x2000 },
- { 0x1a01, 0xd059, 0x0000 },
- { 0x1a01, 0xd05b, 0x0000 },
- { 0x9a01, 0xd05e, 0x2000 },
- { 0x1a01, 0xd05d, 0x0000 },
- { 0x1a01, 0xd05f, 0x0000 },
- { 0x9a01, 0xd070, 0x5000 },
- { 0x9a01, 0xd068, 0x4000 },
- { 0x9a01, 0xd064, 0x3000 },
- { 0x9a01, 0xd062, 0x2000 },
- { 0x1a01, 0xd061, 0x0000 },
- { 0x1a01, 0xd063, 0x0000 },
- { 0x9a01, 0xd066, 0x2000 },
- { 0x1a01, 0xd065, 0x0000 },
- { 0x1a01, 0xd067, 0x0000 },
- { 0x9a01, 0xd06c, 0x3000 },
- { 0x9a01, 0xd06a, 0x2000 },
- { 0x1a01, 0xd069, 0x0000 },
- { 0x1a01, 0xd06b, 0x0000 },
- { 0x9a01, 0xd06e, 0x2000 },
- { 0x1a01, 0xd06d, 0x0000 },
- { 0x1a01, 0xd06f, 0x0000 },
- { 0x9a01, 0xd078, 0x4000 },
- { 0x9a01, 0xd074, 0x3000 },
- { 0x9a01, 0xd072, 0x2000 },
- { 0x1a01, 0xd071, 0x0000 },
- { 0x1a01, 0xd073, 0x0000 },
- { 0x9a01, 0xd076, 0x2000 },
- { 0x1a01, 0xd075, 0x0000 },
- { 0x1a01, 0xd077, 0x0000 },
- { 0x9a01, 0xd07c, 0x3000 },
- { 0x9a01, 0xd07a, 0x2000 },
- { 0x1a01, 0xd079, 0x0000 },
- { 0x1a01, 0xd07b, 0x0000 },
- { 0x9a01, 0xd07e, 0x2000 },
- { 0x1a01, 0xd07d, 0x0000 },
- { 0x1a01, 0xd07f, 0x0000 },
- { 0x9a01, 0xd18d, 0x9000 },
- { 0x9a01, 0xd10a, 0x8000 },
- { 0x9a01, 0xd0c0, 0x7000 },
- { 0x9a01, 0xd0a0, 0x6000 },
- { 0x9a01, 0xd090, 0x5000 },
- { 0x9a01, 0xd088, 0x4000 },
- { 0x9a01, 0xd084, 0x3000 },
- { 0x9a01, 0xd082, 0x2000 },
- { 0x1a01, 0xd081, 0x0000 },
- { 0x1a01, 0xd083, 0x0000 },
- { 0x9a01, 0xd086, 0x2000 },
- { 0x1a01, 0xd085, 0x0000 },
- { 0x1a01, 0xd087, 0x0000 },
- { 0x9a01, 0xd08c, 0x3000 },
- { 0x9a01, 0xd08a, 0x2000 },
- { 0x1a01, 0xd089, 0x0000 },
- { 0x1a01, 0xd08b, 0x0000 },
- { 0x9a01, 0xd08e, 0x2000 },
- { 0x1a01, 0xd08d, 0x0000 },
- { 0x1a01, 0xd08f, 0x0000 },
- { 0x9a01, 0xd098, 0x4000 },
- { 0x9a01, 0xd094, 0x3000 },
- { 0x9a01, 0xd092, 0x2000 },
- { 0x1a01, 0xd091, 0x0000 },
- { 0x1a01, 0xd093, 0x0000 },
- { 0x9a01, 0xd096, 0x2000 },
- { 0x1a01, 0xd095, 0x0000 },
- { 0x1a01, 0xd097, 0x0000 },
- { 0x9a01, 0xd09c, 0x3000 },
- { 0x9a01, 0xd09a, 0x2000 },
- { 0x1a01, 0xd099, 0x0000 },
- { 0x1a01, 0xd09b, 0x0000 },
- { 0x9a01, 0xd09e, 0x2000 },
- { 0x1a01, 0xd09d, 0x0000 },
- { 0x1a01, 0xd09f, 0x0000 },
- { 0x9a01, 0xd0b0, 0x5000 },
- { 0x9a01, 0xd0a8, 0x4000 },
- { 0x9a01, 0xd0a4, 0x3000 },
- { 0x9a01, 0xd0a2, 0x2000 },
- { 0x1a01, 0xd0a1, 0x0000 },
- { 0x1a01, 0xd0a3, 0x0000 },
- { 0x9a01, 0xd0a6, 0x2000 },
- { 0x1a01, 0xd0a5, 0x0000 },
- { 0x1a01, 0xd0a7, 0x0000 },
- { 0x9a01, 0xd0ac, 0x3000 },
- { 0x9a01, 0xd0aa, 0x2000 },
- { 0x1a01, 0xd0a9, 0x0000 },
- { 0x1a01, 0xd0ab, 0x0000 },
- { 0x9a01, 0xd0ae, 0x2000 },
- { 0x1a01, 0xd0ad, 0x0000 },
- { 0x1a01, 0xd0af, 0x0000 },
- { 0x9a01, 0xd0b8, 0x4000 },
- { 0x9a01, 0xd0b4, 0x3000 },
- { 0x9a01, 0xd0b2, 0x2000 },
- { 0x1a01, 0xd0b1, 0x0000 },
- { 0x1a01, 0xd0b3, 0x0000 },
- { 0x9a01, 0xd0b6, 0x2000 },
- { 0x1a01, 0xd0b5, 0x0000 },
- { 0x1a01, 0xd0b7, 0x0000 },
- { 0x9a01, 0xd0bc, 0x3000 },
- { 0x9a01, 0xd0ba, 0x2000 },
- { 0x1a01, 0xd0b9, 0x0000 },
- { 0x1a01, 0xd0bb, 0x0000 },
- { 0x9a01, 0xd0be, 0x2000 },
- { 0x1a01, 0xd0bd, 0x0000 },
- { 0x1a01, 0xd0bf, 0x0000 },
- { 0x9a01, 0xd0e0, 0x6000 },
- { 0x9a01, 0xd0d0, 0x5000 },
- { 0x9a01, 0xd0c8, 0x4000 },
- { 0x9a01, 0xd0c4, 0x3000 },
- { 0x9a01, 0xd0c2, 0x2000 },
- { 0x1a01, 0xd0c1, 0x0000 },
- { 0x1a01, 0xd0c3, 0x0000 },
- { 0x9a01, 0xd0c6, 0x2000 },
- { 0x1a01, 0xd0c5, 0x0000 },
- { 0x1a01, 0xd0c7, 0x0000 },
- { 0x9a01, 0xd0cc, 0x3000 },
- { 0x9a01, 0xd0ca, 0x2000 },
- { 0x1a01, 0xd0c9, 0x0000 },
- { 0x1a01, 0xd0cb, 0x0000 },
- { 0x9a01, 0xd0ce, 0x2000 },
- { 0x1a01, 0xd0cd, 0x0000 },
- { 0x1a01, 0xd0cf, 0x0000 },
- { 0x9a01, 0xd0d8, 0x4000 },
- { 0x9a01, 0xd0d4, 0x3000 },
- { 0x9a01, 0xd0d2, 0x2000 },
- { 0x1a01, 0xd0d1, 0x0000 },
- { 0x1a01, 0xd0d3, 0x0000 },
- { 0x9a01, 0xd0d6, 0x2000 },
- { 0x1a01, 0xd0d5, 0x0000 },
- { 0x1a01, 0xd0d7, 0x0000 },
- { 0x9a01, 0xd0dc, 0x3000 },
- { 0x9a01, 0xd0da, 0x2000 },
- { 0x1a01, 0xd0d9, 0x0000 },
- { 0x1a01, 0xd0db, 0x0000 },
- { 0x9a01, 0xd0de, 0x2000 },
- { 0x1a01, 0xd0dd, 0x0000 },
- { 0x1a01, 0xd0df, 0x0000 },
- { 0x9a01, 0xd0f0, 0x5000 },
- { 0x9a01, 0xd0e8, 0x4000 },
- { 0x9a01, 0xd0e4, 0x3000 },
- { 0x9a01, 0xd0e2, 0x2000 },
- { 0x1a01, 0xd0e1, 0x0000 },
- { 0x1a01, 0xd0e3, 0x0000 },
- { 0x9a01, 0xd0e6, 0x2000 },
- { 0x1a01, 0xd0e5, 0x0000 },
- { 0x1a01, 0xd0e7, 0x0000 },
- { 0x9a01, 0xd0ec, 0x3000 },
- { 0x9a01, 0xd0ea, 0x2000 },
- { 0x1a01, 0xd0e9, 0x0000 },
- { 0x1a01, 0xd0eb, 0x0000 },
- { 0x9a01, 0xd0ee, 0x2000 },
- { 0x1a01, 0xd0ed, 0x0000 },
- { 0x1a01, 0xd0ef, 0x0000 },
- { 0x9a01, 0xd102, 0x4000 },
- { 0x9a01, 0xd0f4, 0x3000 },
- { 0x9a01, 0xd0f2, 0x2000 },
- { 0x1a01, 0xd0f1, 0x0000 },
- { 0x1a01, 0xd0f3, 0x0000 },
- { 0x9a01, 0xd100, 0x2000 },
- { 0x1a01, 0xd0f5, 0x0000 },
- { 0x1a01, 0xd101, 0x0000 },
- { 0x9a01, 0xd106, 0x3000 },
- { 0x9a01, 0xd104, 0x2000 },
- { 0x1a01, 0xd103, 0x0000 },
- { 0x1a01, 0xd105, 0x0000 },
- { 0x9a01, 0xd108, 0x2000 },
- { 0x1a01, 0xd107, 0x0000 },
- { 0x1a01, 0xd109, 0x0000 },
- { 0x9a01, 0xd14d, 0x7000 },
- { 0x9a01, 0xd12d, 0x6000 },
- { 0x9a01, 0xd11a, 0x5000 },
- { 0x9a01, 0xd112, 0x4000 },
- { 0x9a01, 0xd10e, 0x3000 },
- { 0x9a01, 0xd10c, 0x2000 },
- { 0x1a01, 0xd10b, 0x0000 },
- { 0x1a01, 0xd10d, 0x0000 },
- { 0x9a01, 0xd110, 0x2000 },
- { 0x1a01, 0xd10f, 0x0000 },
- { 0x1a01, 0xd111, 0x0000 },
- { 0x9a01, 0xd116, 0x3000 },
- { 0x9a01, 0xd114, 0x2000 },
- { 0x1a01, 0xd113, 0x0000 },
- { 0x1a01, 0xd115, 0x0000 },
- { 0x9a01, 0xd118, 0x2000 },
- { 0x1a01, 0xd117, 0x0000 },
- { 0x1a01, 0xd119, 0x0000 },
- { 0x9a01, 0xd122, 0x4000 },
- { 0x9a01, 0xd11e, 0x3000 },
- { 0x9a01, 0xd11c, 0x2000 },
- { 0x1a01, 0xd11b, 0x0000 },
- { 0x1a01, 0xd11d, 0x0000 },
- { 0x9a01, 0xd120, 0x2000 },
- { 0x1a01, 0xd11f, 0x0000 },
- { 0x1a01, 0xd121, 0x0000 },
- { 0x9a01, 0xd126, 0x3000 },
- { 0x9a01, 0xd124, 0x2000 },
- { 0x1a01, 0xd123, 0x0000 },
- { 0x1a01, 0xd125, 0x0000 },
- { 0x9a01, 0xd12b, 0x2000 },
- { 0x1a01, 0xd12a, 0x0000 },
- { 0x1a01, 0xd12c, 0x0000 },
- { 0x9a01, 0xd13d, 0x5000 },
- { 0x9a01, 0xd135, 0x4000 },
- { 0x9a01, 0xd131, 0x3000 },
- { 0x9a01, 0xd12f, 0x2000 },
- { 0x1a01, 0xd12e, 0x0000 },
- { 0x1a01, 0xd130, 0x0000 },
- { 0x9a01, 0xd133, 0x2000 },
- { 0x1a01, 0xd132, 0x0000 },
- { 0x1a01, 0xd134, 0x0000 },
- { 0x9a01, 0xd139, 0x3000 },
- { 0x9a01, 0xd137, 0x2000 },
- { 0x1a01, 0xd136, 0x0000 },
- { 0x1a01, 0xd138, 0x0000 },
- { 0x9a01, 0xd13b, 0x2000 },
- { 0x1a01, 0xd13a, 0x0000 },
- { 0x1a01, 0xd13c, 0x0000 },
- { 0x9a01, 0xd145, 0x4000 },
- { 0x9a01, 0xd141, 0x3000 },
- { 0x9a01, 0xd13f, 0x2000 },
- { 0x1a01, 0xd13e, 0x0000 },
- { 0x1a01, 0xd140, 0x0000 },
- { 0x9a01, 0xd143, 0x2000 },
- { 0x1a01, 0xd142, 0x0000 },
- { 0x1a01, 0xd144, 0x0000 },
- { 0x9a01, 0xd149, 0x3000 },
- { 0x9a01, 0xd147, 0x2000 },
- { 0x1a01, 0xd146, 0x0000 },
- { 0x1a01, 0xd148, 0x0000 },
- { 0x9a01, 0xd14b, 0x2000 },
- { 0x1a01, 0xd14a, 0x0000 },
- { 0x1a01, 0xd14c, 0x0000 },
- { 0x8a01, 0xd16d, 0x6000 },
- { 0x9a01, 0xd15d, 0x5000 },
- { 0x9a01, 0xd155, 0x4000 },
- { 0x9a01, 0xd151, 0x3000 },
- { 0x9a01, 0xd14f, 0x2000 },
- { 0x1a01, 0xd14e, 0x0000 },
- { 0x1a01, 0xd150, 0x0000 },
- { 0x9a01, 0xd153, 0x2000 },
- { 0x1a01, 0xd152, 0x0000 },
- { 0x1a01, 0xd154, 0x0000 },
- { 0x9a01, 0xd159, 0x3000 },
- { 0x9a01, 0xd157, 0x2000 },
- { 0x1a01, 0xd156, 0x0000 },
- { 0x1a01, 0xd158, 0x0000 },
- { 0x9a01, 0xd15b, 0x2000 },
- { 0x1a01, 0xd15a, 0x0000 },
- { 0x1a01, 0xd15c, 0x0000 },
- { 0x8a01, 0xd165, 0x4000 },
- { 0x9a01, 0xd161, 0x3000 },
- { 0x9a01, 0xd15f, 0x2000 },
- { 0x1a01, 0xd15e, 0x0000 },
- { 0x1a01, 0xd160, 0x0000 },
- { 0x9a01, 0xd163, 0x2000 },
- { 0x1a01, 0xd162, 0x0000 },
- { 0x1a01, 0xd164, 0x0000 },
- { 0x8c01, 0xd169, 0x3000 },
- { 0x8c01, 0xd167, 0x2000 },
- { 0x0a01, 0xd166, 0x0000 },
- { 0x0c01, 0xd168, 0x0000 },
- { 0x9a01, 0xd16b, 0x2000 },
- { 0x1a01, 0xd16a, 0x0000 },
- { 0x1a01, 0xd16c, 0x0000 },
- { 0x8c01, 0xd17d, 0x5000 },
- { 0x8101, 0xd175, 0x4000 },
- { 0x8a01, 0xd171, 0x3000 },
- { 0x8a01, 0xd16f, 0x2000 },
- { 0x0a01, 0xd16e, 0x0000 },
- { 0x0a01, 0xd170, 0x0000 },
- { 0x8101, 0xd173, 0x2000 },
- { 0x0a01, 0xd172, 0x0000 },
- { 0x0101, 0xd174, 0x0000 },
- { 0x8101, 0xd179, 0x3000 },
- { 0x8101, 0xd177, 0x2000 },
- { 0x0101, 0xd176, 0x0000 },
- { 0x0101, 0xd178, 0x0000 },
- { 0x8c01, 0xd17b, 0x2000 },
- { 0x0101, 0xd17a, 0x0000 },
- { 0x0c01, 0xd17c, 0x0000 },
- { 0x8c01, 0xd185, 0x4000 },
- { 0x8c01, 0xd181, 0x3000 },
- { 0x8c01, 0xd17f, 0x2000 },
- { 0x0c01, 0xd17e, 0x0000 },
- { 0x0c01, 0xd180, 0x0000 },
- { 0x9a01, 0xd183, 0x2000 },
- { 0x0c01, 0xd182, 0x0000 },
- { 0x1a01, 0xd184, 0x0000 },
- { 0x8c01, 0xd189, 0x3000 },
- { 0x8c01, 0xd187, 0x2000 },
- { 0x0c01, 0xd186, 0x0000 },
- { 0x0c01, 0xd188, 0x0000 },
- { 0x8c01, 0xd18b, 0x2000 },
- { 0x0c01, 0xd18a, 0x0000 },
- { 0x1a01, 0xd18c, 0x0000 },
- { 0x9a01, 0xd32f, 0x8000 },
- { 0x9a01, 0xd1cd, 0x7000 },
- { 0x8c01, 0xd1ad, 0x6000 },
- { 0x9a01, 0xd19d, 0x5000 },
- { 0x9a01, 0xd195, 0x4000 },
- { 0x9a01, 0xd191, 0x3000 },
- { 0x9a01, 0xd18f, 0x2000 },
- { 0x1a01, 0xd18e, 0x0000 },
- { 0x1a01, 0xd190, 0x0000 },
- { 0x9a01, 0xd193, 0x2000 },
- { 0x1a01, 0xd192, 0x0000 },
- { 0x1a01, 0xd194, 0x0000 },
- { 0x9a01, 0xd199, 0x3000 },
- { 0x9a01, 0xd197, 0x2000 },
- { 0x1a01, 0xd196, 0x0000 },
- { 0x1a01, 0xd198, 0x0000 },
- { 0x9a01, 0xd19b, 0x2000 },
- { 0x1a01, 0xd19a, 0x0000 },
- { 0x1a01, 0xd19c, 0x0000 },
- { 0x9a01, 0xd1a5, 0x4000 },
- { 0x9a01, 0xd1a1, 0x3000 },
- { 0x9a01, 0xd19f, 0x2000 },
- { 0x1a01, 0xd19e, 0x0000 },
- { 0x1a01, 0xd1a0, 0x0000 },
- { 0x9a01, 0xd1a3, 0x2000 },
- { 0x1a01, 0xd1a2, 0x0000 },
- { 0x1a01, 0xd1a4, 0x0000 },
- { 0x9a01, 0xd1a9, 0x3000 },
- { 0x9a01, 0xd1a7, 0x2000 },
- { 0x1a01, 0xd1a6, 0x0000 },
- { 0x1a01, 0xd1a8, 0x0000 },
- { 0x8c01, 0xd1ab, 0x2000 },
- { 0x0c01, 0xd1aa, 0x0000 },
- { 0x0c01, 0xd1ac, 0x0000 },
- { 0x9a01, 0xd1bd, 0x5000 },
- { 0x9a01, 0xd1b5, 0x4000 },
- { 0x9a01, 0xd1b1, 0x3000 },
- { 0x9a01, 0xd1af, 0x2000 },
- { 0x1a01, 0xd1ae, 0x0000 },
- { 0x1a01, 0xd1b0, 0x0000 },
- { 0x9a01, 0xd1b3, 0x2000 },
- { 0x1a01, 0xd1b2, 0x0000 },
- { 0x1a01, 0xd1b4, 0x0000 },
- { 0x9a01, 0xd1b9, 0x3000 },
- { 0x9a01, 0xd1b7, 0x2000 },
- { 0x1a01, 0xd1b6, 0x0000 },
- { 0x1a01, 0xd1b8, 0x0000 },
- { 0x9a01, 0xd1bb, 0x2000 },
- { 0x1a01, 0xd1ba, 0x0000 },
- { 0x1a01, 0xd1bc, 0x0000 },
- { 0x9a01, 0xd1c5, 0x4000 },
- { 0x9a01, 0xd1c1, 0x3000 },
- { 0x9a01, 0xd1bf, 0x2000 },
- { 0x1a01, 0xd1be, 0x0000 },
- { 0x1a01, 0xd1c0, 0x0000 },
- { 0x9a01, 0xd1c3, 0x2000 },
- { 0x1a01, 0xd1c2, 0x0000 },
- { 0x1a01, 0xd1c4, 0x0000 },
- { 0x9a01, 0xd1c9, 0x3000 },
- { 0x9a01, 0xd1c7, 0x2000 },
- { 0x1a01, 0xd1c6, 0x0000 },
- { 0x1a01, 0xd1c8, 0x0000 },
- { 0x9a01, 0xd1cb, 0x2000 },
- { 0x1a01, 0xd1ca, 0x0000 },
- { 0x1a01, 0xd1cc, 0x0000 },
- { 0x9a01, 0xd30f, 0x6000 },
- { 0x9a01, 0xd1dd, 0x5000 },
- { 0x9a01, 0xd1d5, 0x4000 },
- { 0x9a01, 0xd1d1, 0x3000 },
- { 0x9a01, 0xd1cf, 0x2000 },
- { 0x1a01, 0xd1ce, 0x0000 },
- { 0x1a01, 0xd1d0, 0x0000 },
- { 0x9a01, 0xd1d3, 0x2000 },
- { 0x1a01, 0xd1d2, 0x0000 },
- { 0x1a01, 0xd1d4, 0x0000 },
- { 0x9a01, 0xd1d9, 0x3000 },
- { 0x9a01, 0xd1d7, 0x2000 },
- { 0x1a01, 0xd1d6, 0x0000 },
- { 0x1a01, 0xd1d8, 0x0000 },
- { 0x9a01, 0xd1db, 0x2000 },
- { 0x1a01, 0xd1da, 0x0000 },
- { 0x1a01, 0xd1dc, 0x0000 },
- { 0x9a01, 0xd307, 0x4000 },
- { 0x9a01, 0xd303, 0x3000 },
- { 0x9a01, 0xd301, 0x2000 },
- { 0x1a01, 0xd300, 0x0000 },
- { 0x1a01, 0xd302, 0x0000 },
- { 0x9a01, 0xd305, 0x2000 },
- { 0x1a01, 0xd304, 0x0000 },
- { 0x1a01, 0xd306, 0x0000 },
- { 0x9a01, 0xd30b, 0x3000 },
- { 0x9a01, 0xd309, 0x2000 },
- { 0x1a01, 0xd308, 0x0000 },
- { 0x1a01, 0xd30a, 0x0000 },
- { 0x9a01, 0xd30d, 0x2000 },
- { 0x1a01, 0xd30c, 0x0000 },
- { 0x1a01, 0xd30e, 0x0000 },
- { 0x9a01, 0xd31f, 0x5000 },
- { 0x9a01, 0xd317, 0x4000 },
- { 0x9a01, 0xd313, 0x3000 },
- { 0x9a01, 0xd311, 0x2000 },
- { 0x1a01, 0xd310, 0x0000 },
- { 0x1a01, 0xd312, 0x0000 },
- { 0x9a01, 0xd315, 0x2000 },
- { 0x1a01, 0xd314, 0x0000 },
- { 0x1a01, 0xd316, 0x0000 },
- { 0x9a01, 0xd31b, 0x3000 },
- { 0x9a01, 0xd319, 0x2000 },
- { 0x1a01, 0xd318, 0x0000 },
- { 0x1a01, 0xd31a, 0x0000 },
- { 0x9a01, 0xd31d, 0x2000 },
- { 0x1a01, 0xd31c, 0x0000 },
- { 0x1a01, 0xd31e, 0x0000 },
- { 0x9a01, 0xd327, 0x4000 },
- { 0x9a01, 0xd323, 0x3000 },
- { 0x9a01, 0xd321, 0x2000 },
- { 0x1a01, 0xd320, 0x0000 },
- { 0x1a01, 0xd322, 0x0000 },
- { 0x9a01, 0xd325, 0x2000 },
- { 0x1a01, 0xd324, 0x0000 },
- { 0x1a01, 0xd326, 0x0000 },
- { 0x9a01, 0xd32b, 0x3000 },
- { 0x9a01, 0xd329, 0x2000 },
- { 0x1a01, 0xd328, 0x0000 },
- { 0x1a01, 0xd32a, 0x0000 },
- { 0x9a01, 0xd32d, 0x2000 },
- { 0x1a01, 0xd32c, 0x0000 },
- { 0x1a01, 0xd32e, 0x0000 },
- { 0x8901, 0xd418, 0x7000 },
- { 0x9a01, 0xd34f, 0x6000 },
- { 0x9a01, 0xd33f, 0x5000 },
- { 0x9a01, 0xd337, 0x4000 },
- { 0x9a01, 0xd333, 0x3000 },
- { 0x9a01, 0xd331, 0x2000 },
- { 0x1a01, 0xd330, 0x0000 },
- { 0x1a01, 0xd332, 0x0000 },
- { 0x9a01, 0xd335, 0x2000 },
- { 0x1a01, 0xd334, 0x0000 },
- { 0x1a01, 0xd336, 0x0000 },
- { 0x9a01, 0xd33b, 0x3000 },
- { 0x9a01, 0xd339, 0x2000 },
- { 0x1a01, 0xd338, 0x0000 },
- { 0x1a01, 0xd33a, 0x0000 },
- { 0x9a01, 0xd33d, 0x2000 },
- { 0x1a01, 0xd33c, 0x0000 },
- { 0x1a01, 0xd33e, 0x0000 },
- { 0x9a01, 0xd347, 0x4000 },
- { 0x9a01, 0xd343, 0x3000 },
- { 0x9a01, 0xd341, 0x2000 },
- { 0x1a01, 0xd340, 0x0000 },
- { 0x1a01, 0xd342, 0x0000 },
- { 0x9a01, 0xd345, 0x2000 },
- { 0x1a01, 0xd344, 0x0000 },
- { 0x1a01, 0xd346, 0x0000 },
- { 0x9a01, 0xd34b, 0x3000 },
- { 0x9a01, 0xd349, 0x2000 },
- { 0x1a01, 0xd348, 0x0000 },
- { 0x1a01, 0xd34a, 0x0000 },
- { 0x9a01, 0xd34d, 0x2000 },
- { 0x1a01, 0xd34c, 0x0000 },
- { 0x1a01, 0xd34e, 0x0000 },
- { 0x8901, 0xd408, 0x5000 },
- { 0x8901, 0xd400, 0x4000 },
- { 0x9a01, 0xd353, 0x3000 },
- { 0x9a01, 0xd351, 0x2000 },
- { 0x1a01, 0xd350, 0x0000 },
- { 0x1a01, 0xd352, 0x0000 },
- { 0x9a01, 0xd355, 0x2000 },
- { 0x1a01, 0xd354, 0x0000 },
- { 0x1a01, 0xd356, 0x0000 },
- { 0x8901, 0xd404, 0x3000 },
- { 0x8901, 0xd402, 0x2000 },
- { 0x0901, 0xd401, 0x0000 },
- { 0x0901, 0xd403, 0x0000 },
- { 0x8901, 0xd406, 0x2000 },
- { 0x0901, 0xd405, 0x0000 },
- { 0x0901, 0xd407, 0x0000 },
- { 0x8901, 0xd410, 0x4000 },
- { 0x8901, 0xd40c, 0x3000 },
- { 0x8901, 0xd40a, 0x2000 },
- { 0x0901, 0xd409, 0x0000 },
- { 0x0901, 0xd40b, 0x0000 },
- { 0x8901, 0xd40e, 0x2000 },
- { 0x0901, 0xd40d, 0x0000 },
- { 0x0901, 0xd40f, 0x0000 },
- { 0x8901, 0xd414, 0x3000 },
- { 0x8901, 0xd412, 0x2000 },
- { 0x0901, 0xd411, 0x0000 },
- { 0x0901, 0xd413, 0x0000 },
- { 0x8901, 0xd416, 0x2000 },
- { 0x0901, 0xd415, 0x0000 },
- { 0x0901, 0xd417, 0x0000 },
- { 0x8901, 0xd438, 0x6000 },
- { 0x8501, 0xd428, 0x5000 },
- { 0x8501, 0xd420, 0x4000 },
- { 0x8501, 0xd41c, 0x3000 },
- { 0x8501, 0xd41a, 0x2000 },
- { 0x0901, 0xd419, 0x0000 },
- { 0x0501, 0xd41b, 0x0000 },
- { 0x8501, 0xd41e, 0x2000 },
- { 0x0501, 0xd41d, 0x0000 },
- { 0x0501, 0xd41f, 0x0000 },
- { 0x8501, 0xd424, 0x3000 },
- { 0x8501, 0xd422, 0x2000 },
- { 0x0501, 0xd421, 0x0000 },
- { 0x0501, 0xd423, 0x0000 },
- { 0x8501, 0xd426, 0x2000 },
- { 0x0501, 0xd425, 0x0000 },
- { 0x0501, 0xd427, 0x0000 },
- { 0x8501, 0xd430, 0x4000 },
- { 0x8501, 0xd42c, 0x3000 },
- { 0x8501, 0xd42a, 0x2000 },
- { 0x0501, 0xd429, 0x0000 },
- { 0x0501, 0xd42b, 0x0000 },
- { 0x8501, 0xd42e, 0x2000 },
- { 0x0501, 0xd42d, 0x0000 },
- { 0x0501, 0xd42f, 0x0000 },
- { 0x8901, 0xd434, 0x3000 },
- { 0x8501, 0xd432, 0x2000 },
- { 0x0501, 0xd431, 0x0000 },
- { 0x0501, 0xd433, 0x0000 },
- { 0x8901, 0xd436, 0x2000 },
- { 0x0901, 0xd435, 0x0000 },
- { 0x0901, 0xd437, 0x0000 },
- { 0x8901, 0xd448, 0x5000 },
- { 0x8901, 0xd440, 0x4000 },
- { 0x8901, 0xd43c, 0x3000 },
- { 0x8901, 0xd43a, 0x2000 },
- { 0x0901, 0xd439, 0x0000 },
- { 0x0901, 0xd43b, 0x0000 },
- { 0x8901, 0xd43e, 0x2000 },
- { 0x0901, 0xd43d, 0x0000 },
- { 0x0901, 0xd43f, 0x0000 },
- { 0x8901, 0xd444, 0x3000 },
- { 0x8901, 0xd442, 0x2000 },
- { 0x0901, 0xd441, 0x0000 },
- { 0x0901, 0xd443, 0x0000 },
- { 0x8901, 0xd446, 0x2000 },
- { 0x0901, 0xd445, 0x0000 },
- { 0x0901, 0xd447, 0x0000 },
- { 0x8501, 0xd450, 0x4000 },
- { 0x8901, 0xd44c, 0x3000 },
- { 0x8901, 0xd44a, 0x2000 },
- { 0x0901, 0xd449, 0x0000 },
- { 0x0901, 0xd44b, 0x0000 },
- { 0x8501, 0xd44e, 0x2000 },
- { 0x0901, 0xd44d, 0x0000 },
- { 0x0501, 0xd44f, 0x0000 },
- { 0x8501, 0xd454, 0x3000 },
- { 0x8501, 0xd452, 0x2000 },
- { 0x0501, 0xd451, 0x0000 },
- { 0x0501, 0xd453, 0x0000 },
- { 0x8501, 0xd457, 0x2000 },
- { 0x0501, 0xd456, 0x0000 },
- { 0x0501, 0xd458, 0x0000 },
- { 0x8702, 0xf876, 0xb000 },
- { 0x8901, 0xd670, 0xa000 },
- { 0x8901, 0xd570, 0x9000 },
- { 0x8901, 0xd4e4, 0x8000 },
- { 0x8501, 0xd499, 0x7000 },
- { 0x8901, 0xd479, 0x6000 },
- { 0x8901, 0xd469, 0x5000 },
- { 0x8501, 0xd461, 0x4000 },
- { 0x8501, 0xd45d, 0x3000 },
- { 0x8501, 0xd45b, 0x2000 },
- { 0x0501, 0xd45a, 0x0000 },
- { 0x0501, 0xd45c, 0x0000 },
- { 0x8501, 0xd45f, 0x2000 },
- { 0x0501, 0xd45e, 0x0000 },
- { 0x0501, 0xd460, 0x0000 },
- { 0x8501, 0xd465, 0x3000 },
- { 0x8501, 0xd463, 0x2000 },
- { 0x0501, 0xd462, 0x0000 },
- { 0x0501, 0xd464, 0x0000 },
- { 0x8501, 0xd467, 0x2000 },
- { 0x0501, 0xd466, 0x0000 },
- { 0x0901, 0xd468, 0x0000 },
- { 0x8901, 0xd471, 0x4000 },
- { 0x8901, 0xd46d, 0x3000 },
- { 0x8901, 0xd46b, 0x2000 },
- { 0x0901, 0xd46a, 0x0000 },
- { 0x0901, 0xd46c, 0x0000 },
- { 0x8901, 0xd46f, 0x2000 },
- { 0x0901, 0xd46e, 0x0000 },
- { 0x0901, 0xd470, 0x0000 },
- { 0x8901, 0xd475, 0x3000 },
- { 0x8901, 0xd473, 0x2000 },
- { 0x0901, 0xd472, 0x0000 },
- { 0x0901, 0xd474, 0x0000 },
- { 0x8901, 0xd477, 0x2000 },
- { 0x0901, 0xd476, 0x0000 },
- { 0x0901, 0xd478, 0x0000 },
- { 0x8501, 0xd489, 0x5000 },
- { 0x8901, 0xd481, 0x4000 },
- { 0x8901, 0xd47d, 0x3000 },
- { 0x8901, 0xd47b, 0x2000 },
- { 0x0901, 0xd47a, 0x0000 },
- { 0x0901, 0xd47c, 0x0000 },
- { 0x8901, 0xd47f, 0x2000 },
- { 0x0901, 0xd47e, 0x0000 },
- { 0x0901, 0xd480, 0x0000 },
- { 0x8501, 0xd485, 0x3000 },
- { 0x8501, 0xd483, 0x2000 },
- { 0x0501, 0xd482, 0x0000 },
- { 0x0501, 0xd484, 0x0000 },
- { 0x8501, 0xd487, 0x2000 },
- { 0x0501, 0xd486, 0x0000 },
- { 0x0501, 0xd488, 0x0000 },
- { 0x8501, 0xd491, 0x4000 },
- { 0x8501, 0xd48d, 0x3000 },
- { 0x8501, 0xd48b, 0x2000 },
- { 0x0501, 0xd48a, 0x0000 },
- { 0x0501, 0xd48c, 0x0000 },
- { 0x8501, 0xd48f, 0x2000 },
- { 0x0501, 0xd48e, 0x0000 },
- { 0x0501, 0xd490, 0x0000 },
- { 0x8501, 0xd495, 0x3000 },
- { 0x8501, 0xd493, 0x2000 },
- { 0x0501, 0xd492, 0x0000 },
- { 0x0501, 0xd494, 0x0000 },
- { 0x8501, 0xd497, 0x2000 },
- { 0x0501, 0xd496, 0x0000 },
- { 0x0501, 0xd498, 0x0000 },
- { 0x8501, 0xd4c3, 0x6000 },
- { 0x8901, 0xd4b1, 0x5000 },
- { 0x8901, 0xd4a6, 0x4000 },
- { 0x8901, 0xd49e, 0x3000 },
- { 0x8501, 0xd49b, 0x2000 },
- { 0x0501, 0xd49a, 0x0000 },
- { 0x0901, 0xd49c, 0x0000 },
- { 0x8901, 0xd4a2, 0x2000 },
- { 0x0901, 0xd49f, 0x0000 },
- { 0x0901, 0xd4a5, 0x0000 },
- { 0x8901, 0xd4ac, 0x3000 },
- { 0x8901, 0xd4aa, 0x2000 },
- { 0x0901, 0xd4a9, 0x0000 },
- { 0x0901, 0xd4ab, 0x0000 },
- { 0x8901, 0xd4af, 0x2000 },
- { 0x0901, 0xd4ae, 0x0000 },
- { 0x0901, 0xd4b0, 0x0000 },
- { 0x8501, 0xd4b9, 0x4000 },
- { 0x8901, 0xd4b5, 0x3000 },
- { 0x8901, 0xd4b3, 0x2000 },
- { 0x0901, 0xd4b2, 0x0000 },
- { 0x0901, 0xd4b4, 0x0000 },
- { 0x8501, 0xd4b7, 0x2000 },
- { 0x0501, 0xd4b6, 0x0000 },
- { 0x0501, 0xd4b8, 0x0000 },
- { 0x8501, 0xd4bf, 0x3000 },
- { 0x8501, 0xd4bd, 0x2000 },
- { 0x0501, 0xd4bb, 0x0000 },
- { 0x0501, 0xd4be, 0x0000 },
- { 0x8501, 0xd4c1, 0x2000 },
- { 0x0501, 0xd4c0, 0x0000 },
- { 0x0501, 0xd4c2, 0x0000 },
- { 0x8901, 0xd4d4, 0x5000 },
- { 0x8501, 0xd4cc, 0x4000 },
- { 0x8501, 0xd4c8, 0x3000 },
- { 0x8501, 0xd4c6, 0x2000 },
- { 0x0501, 0xd4c5, 0x0000 },
- { 0x0501, 0xd4c7, 0x0000 },
- { 0x8501, 0xd4ca, 0x2000 },
- { 0x0501, 0xd4c9, 0x0000 },
- { 0x0501, 0xd4cb, 0x0000 },
- { 0x8901, 0xd4d0, 0x3000 },
- { 0x8501, 0xd4ce, 0x2000 },
- { 0x0501, 0xd4cd, 0x0000 },
- { 0x0501, 0xd4cf, 0x0000 },
- { 0x8901, 0xd4d2, 0x2000 },
- { 0x0901, 0xd4d1, 0x0000 },
- { 0x0901, 0xd4d3, 0x0000 },
- { 0x8901, 0xd4dc, 0x4000 },
- { 0x8901, 0xd4d8, 0x3000 },
- { 0x8901, 0xd4d6, 0x2000 },
- { 0x0901, 0xd4d5, 0x0000 },
- { 0x0901, 0xd4d7, 0x0000 },
- { 0x8901, 0xd4da, 0x2000 },
- { 0x0901, 0xd4d9, 0x0000 },
- { 0x0901, 0xd4db, 0x0000 },
- { 0x8901, 0xd4e0, 0x3000 },
- { 0x8901, 0xd4de, 0x2000 },
- { 0x0901, 0xd4dd, 0x0000 },
- { 0x0901, 0xd4df, 0x0000 },
- { 0x8901, 0xd4e2, 0x2000 },
- { 0x0901, 0xd4e1, 0x0000 },
- { 0x0901, 0xd4e3, 0x0000 },
- { 0x8501, 0xd529, 0x7000 },
- { 0x8901, 0xd504, 0x6000 },
- { 0x8501, 0xd4f4, 0x5000 },
- { 0x8501, 0xd4ec, 0x4000 },
- { 0x8901, 0xd4e8, 0x3000 },
- { 0x8901, 0xd4e6, 0x2000 },
- { 0x0901, 0xd4e5, 0x0000 },
- { 0x0901, 0xd4e7, 0x0000 },
- { 0x8501, 0xd4ea, 0x2000 },
- { 0x0901, 0xd4e9, 0x0000 },
- { 0x0501, 0xd4eb, 0x0000 },
- { 0x8501, 0xd4f0, 0x3000 },
- { 0x8501, 0xd4ee, 0x2000 },
- { 0x0501, 0xd4ed, 0x0000 },
- { 0x0501, 0xd4ef, 0x0000 },
- { 0x8501, 0xd4f2, 0x2000 },
- { 0x0501, 0xd4f1, 0x0000 },
- { 0x0501, 0xd4f3, 0x0000 },
- { 0x8501, 0xd4fc, 0x4000 },
- { 0x8501, 0xd4f8, 0x3000 },
- { 0x8501, 0xd4f6, 0x2000 },
- { 0x0501, 0xd4f5, 0x0000 },
- { 0x0501, 0xd4f7, 0x0000 },
- { 0x8501, 0xd4fa, 0x2000 },
- { 0x0501, 0xd4f9, 0x0000 },
- { 0x0501, 0xd4fb, 0x0000 },
- { 0x8501, 0xd500, 0x3000 },
- { 0x8501, 0xd4fe, 0x2000 },
- { 0x0501, 0xd4fd, 0x0000 },
- { 0x0501, 0xd4ff, 0x0000 },
- { 0x8501, 0xd502, 0x2000 },
- { 0x0501, 0xd501, 0x0000 },
- { 0x0501, 0xd503, 0x0000 },
- { 0x8901, 0xd518, 0x5000 },
- { 0x8901, 0xd50f, 0x4000 },
- { 0x8901, 0xd509, 0x3000 },
- { 0x8901, 0xd507, 0x2000 },
- { 0x0901, 0xd505, 0x0000 },
- { 0x0901, 0xd508, 0x0000 },
- { 0x8901, 0xd50d, 0x2000 },
- { 0x0901, 0xd50a, 0x0000 },
- { 0x0901, 0xd50e, 0x0000 },
- { 0x8901, 0xd513, 0x3000 },
- { 0x8901, 0xd511, 0x2000 },
- { 0x0901, 0xd510, 0x0000 },
- { 0x0901, 0xd512, 0x0000 },
- { 0x8901, 0xd516, 0x2000 },
- { 0x0901, 0xd514, 0x0000 },
- { 0x0901, 0xd517, 0x0000 },
- { 0x8501, 0xd521, 0x4000 },
- { 0x8901, 0xd51c, 0x3000 },
- { 0x8901, 0xd51a, 0x2000 },
- { 0x0901, 0xd519, 0x0000 },
- { 0x0901, 0xd51b, 0x0000 },
- { 0x8501, 0xd51f, 0x2000 },
- { 0x0501, 0xd51e, 0x0000 },
- { 0x0501, 0xd520, 0x0000 },
- { 0x8501, 0xd525, 0x3000 },
- { 0x8501, 0xd523, 0x2000 },
- { 0x0501, 0xd522, 0x0000 },
- { 0x0501, 0xd524, 0x0000 },
- { 0x8501, 0xd527, 0x2000 },
- { 0x0501, 0xd526, 0x0000 },
- { 0x0501, 0xd528, 0x0000 },
- { 0x8901, 0xd54f, 0x6000 },
- { 0x8901, 0xd539, 0x5000 },
- { 0x8501, 0xd531, 0x4000 },
- { 0x8501, 0xd52d, 0x3000 },
- { 0x8501, 0xd52b, 0x2000 },
- { 0x0501, 0xd52a, 0x0000 },
- { 0x0501, 0xd52c, 0x0000 },
- { 0x8501, 0xd52f, 0x2000 },
- { 0x0501, 0xd52e, 0x0000 },
- { 0x0501, 0xd530, 0x0000 },
- { 0x8501, 0xd535, 0x3000 },
- { 0x8501, 0xd533, 0x2000 },
- { 0x0501, 0xd532, 0x0000 },
- { 0x0501, 0xd534, 0x0000 },
- { 0x8501, 0xd537, 0x2000 },
- { 0x0501, 0xd536, 0x0000 },
- { 0x0901, 0xd538, 0x0000 },
- { 0x8901, 0xd543, 0x4000 },
- { 0x8901, 0xd53e, 0x3000 },
- { 0x8901, 0xd53c, 0x2000 },
- { 0x0901, 0xd53b, 0x0000 },
- { 0x0901, 0xd53d, 0x0000 },
- { 0x8901, 0xd541, 0x2000 },
- { 0x0901, 0xd540, 0x0000 },
- { 0x0901, 0xd542, 0x0000 },
- { 0x8901, 0xd54b, 0x3000 },
- { 0x8901, 0xd546, 0x2000 },
- { 0x0901, 0xd544, 0x0000 },
- { 0x0901, 0xd54a, 0x0000 },
- { 0x8901, 0xd54d, 0x2000 },
- { 0x0901, 0xd54c, 0x0000 },
- { 0x0901, 0xd54e, 0x0000 },
- { 0x8501, 0xd560, 0x5000 },
- { 0x8501, 0xd558, 0x4000 },
- { 0x8501, 0xd554, 0x3000 },
- { 0x8501, 0xd552, 0x2000 },
- { 0x0901, 0xd550, 0x0000 },
- { 0x0501, 0xd553, 0x0000 },
- { 0x8501, 0xd556, 0x2000 },
- { 0x0501, 0xd555, 0x0000 },
- { 0x0501, 0xd557, 0x0000 },
- { 0x8501, 0xd55c, 0x3000 },
- { 0x8501, 0xd55a, 0x2000 },
- { 0x0501, 0xd559, 0x0000 },
- { 0x0501, 0xd55b, 0x0000 },
- { 0x8501, 0xd55e, 0x2000 },
- { 0x0501, 0xd55d, 0x0000 },
- { 0x0501, 0xd55f, 0x0000 },
- { 0x8501, 0xd568, 0x4000 },
- { 0x8501, 0xd564, 0x3000 },
- { 0x8501, 0xd562, 0x2000 },
- { 0x0501, 0xd561, 0x0000 },
- { 0x0501, 0xd563, 0x0000 },
- { 0x8501, 0xd566, 0x2000 },
- { 0x0501, 0xd565, 0x0000 },
- { 0x0501, 0xd567, 0x0000 },
- { 0x8901, 0xd56c, 0x3000 },
- { 0x8501, 0xd56a, 0x2000 },
- { 0x0501, 0xd569, 0x0000 },
- { 0x0501, 0xd56b, 0x0000 },
- { 0x8901, 0xd56e, 0x2000 },
- { 0x0901, 0xd56d, 0x0000 },
- { 0x0901, 0xd56f, 0x0000 },
- { 0x8501, 0xd5f0, 0x8000 },
- { 0x8901, 0xd5b0, 0x7000 },
- { 0x8501, 0xd590, 0x6000 },
- { 0x8901, 0xd580, 0x5000 },
- { 0x8901, 0xd578, 0x4000 },
- { 0x8901, 0xd574, 0x3000 },
- { 0x8901, 0xd572, 0x2000 },
- { 0x0901, 0xd571, 0x0000 },
- { 0x0901, 0xd573, 0x0000 },
- { 0x8901, 0xd576, 0x2000 },
- { 0x0901, 0xd575, 0x0000 },
- { 0x0901, 0xd577, 0x0000 },
- { 0x8901, 0xd57c, 0x3000 },
- { 0x8901, 0xd57a, 0x2000 },
- { 0x0901, 0xd579, 0x0000 },
- { 0x0901, 0xd57b, 0x0000 },
- { 0x8901, 0xd57e, 0x2000 },
- { 0x0901, 0xd57d, 0x0000 },
- { 0x0901, 0xd57f, 0x0000 },
- { 0x8501, 0xd588, 0x4000 },
- { 0x8901, 0xd584, 0x3000 },
- { 0x8901, 0xd582, 0x2000 },
- { 0x0901, 0xd581, 0x0000 },
- { 0x0901, 0xd583, 0x0000 },
- { 0x8501, 0xd586, 0x2000 },
- { 0x0901, 0xd585, 0x0000 },
- { 0x0501, 0xd587, 0x0000 },
- { 0x8501, 0xd58c, 0x3000 },
- { 0x8501, 0xd58a, 0x2000 },
- { 0x0501, 0xd589, 0x0000 },
- { 0x0501, 0xd58b, 0x0000 },
- { 0x8501, 0xd58e, 0x2000 },
- { 0x0501, 0xd58d, 0x0000 },
- { 0x0501, 0xd58f, 0x0000 },
- { 0x8901, 0xd5a0, 0x5000 },
- { 0x8501, 0xd598, 0x4000 },
- { 0x8501, 0xd594, 0x3000 },
- { 0x8501, 0xd592, 0x2000 },
- { 0x0501, 0xd591, 0x0000 },
- { 0x0501, 0xd593, 0x0000 },
- { 0x8501, 0xd596, 0x2000 },
- { 0x0501, 0xd595, 0x0000 },
- { 0x0501, 0xd597, 0x0000 },
- { 0x8501, 0xd59c, 0x3000 },
- { 0x8501, 0xd59a, 0x2000 },
- { 0x0501, 0xd599, 0x0000 },
- { 0x0501, 0xd59b, 0x0000 },
- { 0x8501, 0xd59e, 0x2000 },
- { 0x0501, 0xd59d, 0x0000 },
- { 0x0501, 0xd59f, 0x0000 },
- { 0x8901, 0xd5a8, 0x4000 },
- { 0x8901, 0xd5a4, 0x3000 },
- { 0x8901, 0xd5a2, 0x2000 },
- { 0x0901, 0xd5a1, 0x0000 },
- { 0x0901, 0xd5a3, 0x0000 },
- { 0x8901, 0xd5a6, 0x2000 },
- { 0x0901, 0xd5a5, 0x0000 },
- { 0x0901, 0xd5a7, 0x0000 },
- { 0x8901, 0xd5ac, 0x3000 },
- { 0x8901, 0xd5aa, 0x2000 },
- { 0x0901, 0xd5a9, 0x0000 },
- { 0x0901, 0xd5ab, 0x0000 },
- { 0x8901, 0xd5ae, 0x2000 },
- { 0x0901, 0xd5ad, 0x0000 },
- { 0x0901, 0xd5af, 0x0000 },
- { 0x8501, 0xd5d0, 0x6000 },
- { 0x8501, 0xd5c0, 0x5000 },
- { 0x8901, 0xd5b8, 0x4000 },
- { 0x8901, 0xd5b4, 0x3000 },
- { 0x8901, 0xd5b2, 0x2000 },
- { 0x0901, 0xd5b1, 0x0000 },
- { 0x0901, 0xd5b3, 0x0000 },
- { 0x8901, 0xd5b6, 0x2000 },
- { 0x0901, 0xd5b5, 0x0000 },
- { 0x0901, 0xd5b7, 0x0000 },
- { 0x8501, 0xd5bc, 0x3000 },
- { 0x8501, 0xd5ba, 0x2000 },
- { 0x0901, 0xd5b9, 0x0000 },
- { 0x0501, 0xd5bb, 0x0000 },
- { 0x8501, 0xd5be, 0x2000 },
- { 0x0501, 0xd5bd, 0x0000 },
- { 0x0501, 0xd5bf, 0x0000 },
- { 0x8501, 0xd5c8, 0x4000 },
- { 0x8501, 0xd5c4, 0x3000 },
- { 0x8501, 0xd5c2, 0x2000 },
- { 0x0501, 0xd5c1, 0x0000 },
- { 0x0501, 0xd5c3, 0x0000 },
- { 0x8501, 0xd5c6, 0x2000 },
- { 0x0501, 0xd5c5, 0x0000 },
- { 0x0501, 0xd5c7, 0x0000 },
- { 0x8501, 0xd5cc, 0x3000 },
- { 0x8501, 0xd5ca, 0x2000 },
- { 0x0501, 0xd5c9, 0x0000 },
- { 0x0501, 0xd5cb, 0x0000 },
- { 0x8501, 0xd5ce, 0x2000 },
- { 0x0501, 0xd5cd, 0x0000 },
- { 0x0501, 0xd5cf, 0x0000 },
- { 0x8901, 0xd5e0, 0x5000 },
- { 0x8901, 0xd5d8, 0x4000 },
- { 0x8901, 0xd5d4, 0x3000 },
- { 0x8501, 0xd5d2, 0x2000 },
- { 0x0501, 0xd5d1, 0x0000 },
- { 0x0501, 0xd5d3, 0x0000 },
- { 0x8901, 0xd5d6, 0x2000 },
- { 0x0901, 0xd5d5, 0x0000 },
- { 0x0901, 0xd5d7, 0x0000 },
- { 0x8901, 0xd5dc, 0x3000 },
- { 0x8901, 0xd5da, 0x2000 },
- { 0x0901, 0xd5d9, 0x0000 },
- { 0x0901, 0xd5db, 0x0000 },
- { 0x8901, 0xd5de, 0x2000 },
- { 0x0901, 0xd5dd, 0x0000 },
- { 0x0901, 0xd5df, 0x0000 },
- { 0x8901, 0xd5e8, 0x4000 },
- { 0x8901, 0xd5e4, 0x3000 },
- { 0x8901, 0xd5e2, 0x2000 },
- { 0x0901, 0xd5e1, 0x0000 },
- { 0x0901, 0xd5e3, 0x0000 },
- { 0x8901, 0xd5e6, 0x2000 },
- { 0x0901, 0xd5e5, 0x0000 },
- { 0x0901, 0xd5e7, 0x0000 },
- { 0x8901, 0xd5ec, 0x3000 },
- { 0x8901, 0xd5ea, 0x2000 },
- { 0x0901, 0xd5e9, 0x0000 },
- { 0x0901, 0xd5eb, 0x0000 },
- { 0x8501, 0xd5ee, 0x2000 },
- { 0x0901, 0xd5ed, 0x0000 },
- { 0x0501, 0xd5ef, 0x0000 },
- { 0x8501, 0xd630, 0x7000 },
- { 0x8901, 0xd610, 0x6000 },
- { 0x8501, 0xd600, 0x5000 },
- { 0x8501, 0xd5f8, 0x4000 },
- { 0x8501, 0xd5f4, 0x3000 },
- { 0x8501, 0xd5f2, 0x2000 },
- { 0x0501, 0xd5f1, 0x0000 },
- { 0x0501, 0xd5f3, 0x0000 },
- { 0x8501, 0xd5f6, 0x2000 },
- { 0x0501, 0xd5f5, 0x0000 },
- { 0x0501, 0xd5f7, 0x0000 },
- { 0x8501, 0xd5fc, 0x3000 },
- { 0x8501, 0xd5fa, 0x2000 },
- { 0x0501, 0xd5f9, 0x0000 },
- { 0x0501, 0xd5fb, 0x0000 },
- { 0x8501, 0xd5fe, 0x2000 },
- { 0x0501, 0xd5fd, 0x0000 },
- { 0x0501, 0xd5ff, 0x0000 },
- { 0x8901, 0xd608, 0x4000 },
- { 0x8501, 0xd604, 0x3000 },
- { 0x8501, 0xd602, 0x2000 },
- { 0x0501, 0xd601, 0x0000 },
- { 0x0501, 0xd603, 0x0000 },
- { 0x8501, 0xd606, 0x2000 },
- { 0x0501, 0xd605, 0x0000 },
- { 0x0501, 0xd607, 0x0000 },
- { 0x8901, 0xd60c, 0x3000 },
- { 0x8901, 0xd60a, 0x2000 },
- { 0x0901, 0xd609, 0x0000 },
- { 0x0901, 0xd60b, 0x0000 },
- { 0x8901, 0xd60e, 0x2000 },
- { 0x0901, 0xd60d, 0x0000 },
- { 0x0901, 0xd60f, 0x0000 },
- { 0x8901, 0xd620, 0x5000 },
- { 0x8901, 0xd618, 0x4000 },
- { 0x8901, 0xd614, 0x3000 },
- { 0x8901, 0xd612, 0x2000 },
- { 0x0901, 0xd611, 0x0000 },
- { 0x0901, 0xd613, 0x0000 },
- { 0x8901, 0xd616, 0x2000 },
- { 0x0901, 0xd615, 0x0000 },
- { 0x0901, 0xd617, 0x0000 },
- { 0x8901, 0xd61c, 0x3000 },
- { 0x8901, 0xd61a, 0x2000 },
- { 0x0901, 0xd619, 0x0000 },
- { 0x0901, 0xd61b, 0x0000 },
- { 0x8901, 0xd61e, 0x2000 },
- { 0x0901, 0xd61d, 0x0000 },
- { 0x0901, 0xd61f, 0x0000 },
- { 0x8501, 0xd628, 0x4000 },
- { 0x8501, 0xd624, 0x3000 },
- { 0x8501, 0xd622, 0x2000 },
- { 0x0901, 0xd621, 0x0000 },
- { 0x0501, 0xd623, 0x0000 },
- { 0x8501, 0xd626, 0x2000 },
- { 0x0501, 0xd625, 0x0000 },
- { 0x0501, 0xd627, 0x0000 },
- { 0x8501, 0xd62c, 0x3000 },
- { 0x8501, 0xd62a, 0x2000 },
- { 0x0501, 0xd629, 0x0000 },
- { 0x0501, 0xd62b, 0x0000 },
- { 0x8501, 0xd62e, 0x2000 },
- { 0x0501, 0xd62d, 0x0000 },
- { 0x0501, 0xd62f, 0x0000 },
- { 0x8901, 0xd650, 0x6000 },
- { 0x8901, 0xd640, 0x5000 },
- { 0x8501, 0xd638, 0x4000 },
- { 0x8501, 0xd634, 0x3000 },
- { 0x8501, 0xd632, 0x2000 },
- { 0x0501, 0xd631, 0x0000 },
- { 0x0501, 0xd633, 0x0000 },
- { 0x8501, 0xd636, 0x2000 },
- { 0x0501, 0xd635, 0x0000 },
- { 0x0501, 0xd637, 0x0000 },
- { 0x8901, 0xd63c, 0x3000 },
- { 0x8501, 0xd63a, 0x2000 },
- { 0x0501, 0xd639, 0x0000 },
- { 0x0501, 0xd63b, 0x0000 },
- { 0x8901, 0xd63e, 0x2000 },
- { 0x0901, 0xd63d, 0x0000 },
- { 0x0901, 0xd63f, 0x0000 },
- { 0x8901, 0xd648, 0x4000 },
- { 0x8901, 0xd644, 0x3000 },
- { 0x8901, 0xd642, 0x2000 },
- { 0x0901, 0xd641, 0x0000 },
- { 0x0901, 0xd643, 0x0000 },
- { 0x8901, 0xd646, 0x2000 },
- { 0x0901, 0xd645, 0x0000 },
- { 0x0901, 0xd647, 0x0000 },
- { 0x8901, 0xd64c, 0x3000 },
- { 0x8901, 0xd64a, 0x2000 },
- { 0x0901, 0xd649, 0x0000 },
- { 0x0901, 0xd64b, 0x0000 },
- { 0x8901, 0xd64e, 0x2000 },
- { 0x0901, 0xd64d, 0x0000 },
- { 0x0901, 0xd64f, 0x0000 },
- { 0x8501, 0xd660, 0x5000 },
- { 0x8501, 0xd658, 0x4000 },
- { 0x8901, 0xd654, 0x3000 },
- { 0x8901, 0xd652, 0x2000 },
- { 0x0901, 0xd651, 0x0000 },
- { 0x0901, 0xd653, 0x0000 },
- { 0x8501, 0xd656, 0x2000 },
- { 0x0901, 0xd655, 0x0000 },
- { 0x0501, 0xd657, 0x0000 },
- { 0x8501, 0xd65c, 0x3000 },
- { 0x8501, 0xd65a, 0x2000 },
- { 0x0501, 0xd659, 0x0000 },
- { 0x0501, 0xd65b, 0x0000 },
- { 0x8501, 0xd65e, 0x2000 },
- { 0x0501, 0xd65d, 0x0000 },
- { 0x0501, 0xd65f, 0x0000 },
- { 0x8501, 0xd668, 0x4000 },
- { 0x8501, 0xd664, 0x3000 },
- { 0x8501, 0xd662, 0x2000 },
- { 0x0501, 0xd661, 0x0000 },
- { 0x0501, 0xd663, 0x0000 },
- { 0x8501, 0xd666, 0x2000 },
- { 0x0501, 0xd665, 0x0000 },
- { 0x0501, 0xd667, 0x0000 },
- { 0x8501, 0xd66c, 0x3000 },
- { 0x8501, 0xd66a, 0x2000 },
- { 0x0501, 0xd669, 0x0000 },
- { 0x0501, 0xd66b, 0x0000 },
- { 0x8501, 0xd66e, 0x2000 },
- { 0x0501, 0xd66d, 0x0000 },
- { 0x0501, 0xd66f, 0x0000 },
- { 0x8501, 0xd774, 0x9000 },
- { 0x8901, 0xd6f4, 0x8000 },
- { 0x8901, 0xd6b4, 0x7000 },
- { 0x8501, 0xd690, 0x6000 },
- { 0x8901, 0xd680, 0x5000 },
- { 0x8901, 0xd678, 0x4000 },
- { 0x8901, 0xd674, 0x3000 },
- { 0x8901, 0xd672, 0x2000 },
- { 0x0901, 0xd671, 0x0000 },
- { 0x0901, 0xd673, 0x0000 },
- { 0x8901, 0xd676, 0x2000 },
- { 0x0901, 0xd675, 0x0000 },
- { 0x0901, 0xd677, 0x0000 },
- { 0x8901, 0xd67c, 0x3000 },
- { 0x8901, 0xd67a, 0x2000 },
- { 0x0901, 0xd679, 0x0000 },
- { 0x0901, 0xd67b, 0x0000 },
- { 0x8901, 0xd67e, 0x2000 },
- { 0x0901, 0xd67d, 0x0000 },
- { 0x0901, 0xd67f, 0x0000 },
- { 0x8901, 0xd688, 0x4000 },
- { 0x8901, 0xd684, 0x3000 },
- { 0x8901, 0xd682, 0x2000 },
- { 0x0901, 0xd681, 0x0000 },
- { 0x0901, 0xd683, 0x0000 },
- { 0x8901, 0xd686, 0x2000 },
- { 0x0901, 0xd685, 0x0000 },
- { 0x0901, 0xd687, 0x0000 },
- { 0x8501, 0xd68c, 0x3000 },
- { 0x8501, 0xd68a, 0x2000 },
- { 0x0901, 0xd689, 0x0000 },
- { 0x0501, 0xd68b, 0x0000 },
- { 0x8501, 0xd68e, 0x2000 },
- { 0x0501, 0xd68d, 0x0000 },
- { 0x0501, 0xd68f, 0x0000 },
- { 0x8501, 0xd6a0, 0x5000 },
- { 0x8501, 0xd698, 0x4000 },
- { 0x8501, 0xd694, 0x3000 },
- { 0x8501, 0xd692, 0x2000 },
- { 0x0501, 0xd691, 0x0000 },
- { 0x0501, 0xd693, 0x0000 },
- { 0x8501, 0xd696, 0x2000 },
- { 0x0501, 0xd695, 0x0000 },
- { 0x0501, 0xd697, 0x0000 },
- { 0x8501, 0xd69c, 0x3000 },
- { 0x8501, 0xd69a, 0x2000 },
- { 0x0501, 0xd699, 0x0000 },
- { 0x0501, 0xd69b, 0x0000 },
- { 0x8501, 0xd69e, 0x2000 },
- { 0x0501, 0xd69d, 0x0000 },
- { 0x0501, 0xd69f, 0x0000 },
- { 0x8901, 0xd6ac, 0x4000 },
- { 0x8901, 0xd6a8, 0x3000 },
- { 0x8501, 0xd6a2, 0x2000 },
- { 0x0501, 0xd6a1, 0x0000 },
- { 0x0501, 0xd6a3, 0x0000 },
- { 0x8901, 0xd6aa, 0x2000 },
- { 0x0901, 0xd6a9, 0x0000 },
- { 0x0901, 0xd6ab, 0x0000 },
- { 0x8901, 0xd6b0, 0x3000 },
- { 0x8901, 0xd6ae, 0x2000 },
- { 0x0901, 0xd6ad, 0x0000 },
- { 0x0901, 0xd6af, 0x0000 },
- { 0x8901, 0xd6b2, 0x2000 },
- { 0x0901, 0xd6b1, 0x0000 },
- { 0x0901, 0xd6b3, 0x0000 },
- { 0x8501, 0xd6d4, 0x6000 },
- { 0x8501, 0xd6c4, 0x5000 },
- { 0x8901, 0xd6bc, 0x4000 },
- { 0x8901, 0xd6b8, 0x3000 },
- { 0x8901, 0xd6b6, 0x2000 },
- { 0x0901, 0xd6b5, 0x0000 },
- { 0x0901, 0xd6b7, 0x0000 },
- { 0x8901, 0xd6ba, 0x2000 },
- { 0x0901, 0xd6b9, 0x0000 },
- { 0x0901, 0xd6bb, 0x0000 },
- { 0x8901, 0xd6c0, 0x3000 },
- { 0x8901, 0xd6be, 0x2000 },
- { 0x0901, 0xd6bd, 0x0000 },
- { 0x0901, 0xd6bf, 0x0000 },
- { 0x8501, 0xd6c2, 0x2000 },
- { 0x1901, 0xd6c1, 0x0000 },
- { 0x0501, 0xd6c3, 0x0000 },
- { 0x8501, 0xd6cc, 0x4000 },
- { 0x8501, 0xd6c8, 0x3000 },
- { 0x8501, 0xd6c6, 0x2000 },
- { 0x0501, 0xd6c5, 0x0000 },
- { 0x0501, 0xd6c7, 0x0000 },
- { 0x8501, 0xd6ca, 0x2000 },
- { 0x0501, 0xd6c9, 0x0000 },
- { 0x0501, 0xd6cb, 0x0000 },
- { 0x8501, 0xd6d0, 0x3000 },
- { 0x8501, 0xd6ce, 0x2000 },
- { 0x0501, 0xd6cd, 0x0000 },
- { 0x0501, 0xd6cf, 0x0000 },
- { 0x8501, 0xd6d2, 0x2000 },
- { 0x0501, 0xd6d1, 0x0000 },
- { 0x0501, 0xd6d3, 0x0000 },
- { 0x8901, 0xd6e4, 0x5000 },
- { 0x8501, 0xd6dc, 0x4000 },
- { 0x8501, 0xd6d8, 0x3000 },
- { 0x8501, 0xd6d6, 0x2000 },
- { 0x0501, 0xd6d5, 0x0000 },
- { 0x0501, 0xd6d7, 0x0000 },
- { 0x8501, 0xd6da, 0x2000 },
- { 0x0501, 0xd6d9, 0x0000 },
- { 0x1901, 0xd6db, 0x0000 },
- { 0x8501, 0xd6e0, 0x3000 },
- { 0x8501, 0xd6de, 0x2000 },
- { 0x0501, 0xd6dd, 0x0000 },
- { 0x0501, 0xd6df, 0x0000 },
- { 0x8901, 0xd6e2, 0x2000 },
- { 0x0501, 0xd6e1, 0x0000 },
- { 0x0901, 0xd6e3, 0x0000 },
- { 0x8901, 0xd6ec, 0x4000 },
- { 0x8901, 0xd6e8, 0x3000 },
- { 0x8901, 0xd6e6, 0x2000 },
- { 0x0901, 0xd6e5, 0x0000 },
- { 0x0901, 0xd6e7, 0x0000 },
- { 0x8901, 0xd6ea, 0x2000 },
- { 0x0901, 0xd6e9, 0x0000 },
- { 0x0901, 0xd6eb, 0x0000 },
- { 0x8901, 0xd6f0, 0x3000 },
- { 0x8901, 0xd6ee, 0x2000 },
- { 0x0901, 0xd6ed, 0x0000 },
- { 0x0901, 0xd6ef, 0x0000 },
- { 0x8901, 0xd6f2, 0x2000 },
- { 0x0901, 0xd6f1, 0x0000 },
- { 0x0901, 0xd6f3, 0x0000 },
- { 0x8901, 0xd734, 0x7000 },
- { 0x8501, 0xd714, 0x6000 },
- { 0x8501, 0xd704, 0x5000 },
- { 0x8501, 0xd6fc, 0x4000 },
- { 0x8901, 0xd6f8, 0x3000 },
- { 0x8901, 0xd6f6, 0x2000 },
- { 0x0901, 0xd6f5, 0x0000 },
- { 0x0901, 0xd6f7, 0x0000 },
- { 0x8901, 0xd6fa, 0x2000 },
- { 0x0901, 0xd6f9, 0x0000 },
- { 0x1901, 0xd6fb, 0x0000 },
- { 0x8501, 0xd700, 0x3000 },
- { 0x8501, 0xd6fe, 0x2000 },
- { 0x0501, 0xd6fd, 0x0000 },
- { 0x0501, 0xd6ff, 0x0000 },
- { 0x8501, 0xd702, 0x2000 },
- { 0x0501, 0xd701, 0x0000 },
- { 0x0501, 0xd703, 0x0000 },
- { 0x8501, 0xd70c, 0x4000 },
- { 0x8501, 0xd708, 0x3000 },
- { 0x8501, 0xd706, 0x2000 },
- { 0x0501, 0xd705, 0x0000 },
- { 0x0501, 0xd707, 0x0000 },
- { 0x8501, 0xd70a, 0x2000 },
- { 0x0501, 0xd709, 0x0000 },
- { 0x0501, 0xd70b, 0x0000 },
- { 0x8501, 0xd710, 0x3000 },
- { 0x8501, 0xd70e, 0x2000 },
- { 0x0501, 0xd70d, 0x0000 },
- { 0x0501, 0xd70f, 0x0000 },
- { 0x8501, 0xd712, 0x2000 },
- { 0x0501, 0xd711, 0x0000 },
- { 0x0501, 0xd713, 0x0000 },
- { 0x8901, 0xd724, 0x5000 },
- { 0x8901, 0xd71c, 0x4000 },
- { 0x8501, 0xd718, 0x3000 },
- { 0x8501, 0xd716, 0x2000 },
- { 0x1901, 0xd715, 0x0000 },
- { 0x0501, 0xd717, 0x0000 },
- { 0x8501, 0xd71a, 0x2000 },
- { 0x0501, 0xd719, 0x0000 },
- { 0x0501, 0xd71b, 0x0000 },
- { 0x8901, 0xd720, 0x3000 },
- { 0x8901, 0xd71e, 0x2000 },
- { 0x0901, 0xd71d, 0x0000 },
- { 0x0901, 0xd71f, 0x0000 },
- { 0x8901, 0xd722, 0x2000 },
- { 0x0901, 0xd721, 0x0000 },
- { 0x0901, 0xd723, 0x0000 },
- { 0x8901, 0xd72c, 0x4000 },
- { 0x8901, 0xd728, 0x3000 },
- { 0x8901, 0xd726, 0x2000 },
- { 0x0901, 0xd725, 0x0000 },
- { 0x0901, 0xd727, 0x0000 },
- { 0x8901, 0xd72a, 0x2000 },
- { 0x0901, 0xd729, 0x0000 },
- { 0x0901, 0xd72b, 0x0000 },
- { 0x8901, 0xd730, 0x3000 },
- { 0x8901, 0xd72e, 0x2000 },
- { 0x0901, 0xd72d, 0x0000 },
- { 0x0901, 0xd72f, 0x0000 },
- { 0x8901, 0xd732, 0x2000 },
- { 0x0901, 0xd731, 0x0000 },
- { 0x0901, 0xd733, 0x0000 },
- { 0x8501, 0xd754, 0x6000 },
- { 0x8501, 0xd744, 0x5000 },
- { 0x8501, 0xd73c, 0x4000 },
- { 0x8501, 0xd738, 0x3000 },
- { 0x8501, 0xd736, 0x2000 },
- { 0x1901, 0xd735, 0x0000 },
- { 0x0501, 0xd737, 0x0000 },
- { 0x8501, 0xd73a, 0x2000 },
- { 0x0501, 0xd739, 0x0000 },
- { 0x0501, 0xd73b, 0x0000 },
- { 0x8501, 0xd740, 0x3000 },
- { 0x8501, 0xd73e, 0x2000 },
- { 0x0501, 0xd73d, 0x0000 },
- { 0x0501, 0xd73f, 0x0000 },
- { 0x8501, 0xd742, 0x2000 },
- { 0x0501, 0xd741, 0x0000 },
- { 0x0501, 0xd743, 0x0000 },
- { 0x8501, 0xd74c, 0x4000 },
- { 0x8501, 0xd748, 0x3000 },
- { 0x8501, 0xd746, 0x2000 },
- { 0x0501, 0xd745, 0x0000 },
- { 0x0501, 0xd747, 0x0000 },
- { 0x8501, 0xd74a, 0x2000 },
- { 0x0501, 0xd749, 0x0000 },
- { 0x0501, 0xd74b, 0x0000 },
- { 0x8501, 0xd750, 0x3000 },
- { 0x8501, 0xd74e, 0x2000 },
- { 0x0501, 0xd74d, 0x0000 },
- { 0x1901, 0xd74f, 0x0000 },
- { 0x8501, 0xd752, 0x2000 },
- { 0x0501, 0xd751, 0x0000 },
- { 0x0501, 0xd753, 0x0000 },
- { 0x8901, 0xd764, 0x5000 },
- { 0x8901, 0xd75c, 0x4000 },
- { 0x8901, 0xd758, 0x3000 },
- { 0x8901, 0xd756, 0x2000 },
- { 0x0501, 0xd755, 0x0000 },
- { 0x0901, 0xd757, 0x0000 },
- { 0x8901, 0xd75a, 0x2000 },
- { 0x0901, 0xd759, 0x0000 },
- { 0x0901, 0xd75b, 0x0000 },
- { 0x8901, 0xd760, 0x3000 },
- { 0x8901, 0xd75e, 0x2000 },
- { 0x0901, 0xd75d, 0x0000 },
- { 0x0901, 0xd75f, 0x0000 },
- { 0x8901, 0xd762, 0x2000 },
- { 0x0901, 0xd761, 0x0000 },
- { 0x0901, 0xd763, 0x0000 },
- { 0x8901, 0xd76c, 0x4000 },
- { 0x8901, 0xd768, 0x3000 },
- { 0x8901, 0xd766, 0x2000 },
- { 0x0901, 0xd765, 0x0000 },
- { 0x0901, 0xd767, 0x0000 },
- { 0x8901, 0xd76a, 0x2000 },
- { 0x0901, 0xd769, 0x0000 },
- { 0x0901, 0xd76b, 0x0000 },
- { 0x8501, 0xd770, 0x3000 },
- { 0x8901, 0xd76e, 0x2000 },
- { 0x0901, 0xd76d, 0x0000 },
- { 0x1901, 0xd76f, 0x0000 },
- { 0x8501, 0xd772, 0x2000 },
- { 0x0501, 0xd771, 0x0000 },
- { 0x0501, 0xd773, 0x0000 },
- { 0x8d01, 0xd7f8, 0x8000 },
- { 0x8501, 0xd7b4, 0x7000 },
- { 0x8901, 0xd794, 0x6000 },
- { 0x8501, 0xd784, 0x5000 },
- { 0x8501, 0xd77c, 0x4000 },
- { 0x8501, 0xd778, 0x3000 },
- { 0x8501, 0xd776, 0x2000 },
- { 0x0501, 0xd775, 0x0000 },
- { 0x0501, 0xd777, 0x0000 },
- { 0x8501, 0xd77a, 0x2000 },
- { 0x0501, 0xd779, 0x0000 },
- { 0x0501, 0xd77b, 0x0000 },
- { 0x8501, 0xd780, 0x3000 },
- { 0x8501, 0xd77e, 0x2000 },
- { 0x0501, 0xd77d, 0x0000 },
- { 0x0501, 0xd77f, 0x0000 },
- { 0x8501, 0xd782, 0x2000 },
- { 0x0501, 0xd781, 0x0000 },
- { 0x0501, 0xd783, 0x0000 },
- { 0x8501, 0xd78c, 0x4000 },
- { 0x8501, 0xd788, 0x3000 },
- { 0x8501, 0xd786, 0x2000 },
- { 0x0501, 0xd785, 0x0000 },
- { 0x0501, 0xd787, 0x0000 },
- { 0x8501, 0xd78a, 0x2000 },
- { 0x1901, 0xd789, 0x0000 },
- { 0x0501, 0xd78b, 0x0000 },
- { 0x8901, 0xd790, 0x3000 },
- { 0x8501, 0xd78e, 0x2000 },
- { 0x0501, 0xd78d, 0x0000 },
- { 0x0501, 0xd78f, 0x0000 },
- { 0x8901, 0xd792, 0x2000 },
- { 0x0901, 0xd791, 0x0000 },
- { 0x0901, 0xd793, 0x0000 },
- { 0x8901, 0xd7a4, 0x5000 },
- { 0x8901, 0xd79c, 0x4000 },
- { 0x8901, 0xd798, 0x3000 },
- { 0x8901, 0xd796, 0x2000 },
- { 0x0901, 0xd795, 0x0000 },
- { 0x0901, 0xd797, 0x0000 },
- { 0x8901, 0xd79a, 0x2000 },
- { 0x0901, 0xd799, 0x0000 },
- { 0x0901, 0xd79b, 0x0000 },
- { 0x8901, 0xd7a0, 0x3000 },
- { 0x8901, 0xd79e, 0x2000 },
- { 0x0901, 0xd79d, 0x0000 },
- { 0x0901, 0xd79f, 0x0000 },
- { 0x8901, 0xd7a2, 0x2000 },
- { 0x0901, 0xd7a1, 0x0000 },
- { 0x0901, 0xd7a3, 0x0000 },
- { 0x8501, 0xd7ac, 0x4000 },
- { 0x8901, 0xd7a8, 0x3000 },
- { 0x8901, 0xd7a6, 0x2000 },
- { 0x0901, 0xd7a5, 0x0000 },
- { 0x0901, 0xd7a7, 0x0000 },
- { 0x8501, 0xd7aa, 0x2000 },
- { 0x1901, 0xd7a9, 0x0000 },
- { 0x0501, 0xd7ab, 0x0000 },
- { 0x8501, 0xd7b0, 0x3000 },
- { 0x8501, 0xd7ae, 0x2000 },
- { 0x0501, 0xd7ad, 0x0000 },
- { 0x0501, 0xd7af, 0x0000 },
- { 0x8501, 0xd7b2, 0x2000 },
- { 0x0501, 0xd7b1, 0x0000 },
- { 0x0501, 0xd7b3, 0x0000 },
- { 0x8d01, 0xd7d8, 0x6000 },
- { 0x8501, 0xd7c4, 0x5000 },
- { 0x8501, 0xd7bc, 0x4000 },
- { 0x8501, 0xd7b8, 0x3000 },
- { 0x8501, 0xd7b6, 0x2000 },
- { 0x0501, 0xd7b5, 0x0000 },
- { 0x0501, 0xd7b7, 0x0000 },
- { 0x8501, 0xd7ba, 0x2000 },
- { 0x0501, 0xd7b9, 0x0000 },
- { 0x0501, 0xd7bb, 0x0000 },
- { 0x8501, 0xd7c0, 0x3000 },
- { 0x8501, 0xd7be, 0x2000 },
- { 0x0501, 0xd7bd, 0x0000 },
- { 0x0501, 0xd7bf, 0x0000 },
- { 0x8501, 0xd7c2, 0x2000 },
- { 0x0501, 0xd7c1, 0x0000 },
- { 0x1901, 0xd7c3, 0x0000 },
- { 0x8d01, 0xd7d0, 0x4000 },
- { 0x8501, 0xd7c8, 0x3000 },
- { 0x8501, 0xd7c6, 0x2000 },
- { 0x0501, 0xd7c5, 0x0000 },
- { 0x0501, 0xd7c7, 0x0000 },
- { 0x8d01, 0xd7ce, 0x2000 },
- { 0x0501, 0xd7c9, 0x0000 },
- { 0x0d01, 0xd7cf, 0x0000 },
- { 0x8d01, 0xd7d4, 0x3000 },
- { 0x8d01, 0xd7d2, 0x2000 },
- { 0x0d01, 0xd7d1, 0x0000 },
- { 0x0d01, 0xd7d3, 0x0000 },
- { 0x8d01, 0xd7d6, 0x2000 },
- { 0x0d01, 0xd7d5, 0x0000 },
- { 0x0d01, 0xd7d7, 0x0000 },
- { 0x8d01, 0xd7e8, 0x5000 },
- { 0x8d01, 0xd7e0, 0x4000 },
- { 0x8d01, 0xd7dc, 0x3000 },
- { 0x8d01, 0xd7da, 0x2000 },
- { 0x0d01, 0xd7d9, 0x0000 },
- { 0x0d01, 0xd7db, 0x0000 },
- { 0x8d01, 0xd7de, 0x2000 },
- { 0x0d01, 0xd7dd, 0x0000 },
- { 0x0d01, 0xd7df, 0x0000 },
- { 0x8d01, 0xd7e4, 0x3000 },
- { 0x8d01, 0xd7e2, 0x2000 },
- { 0x0d01, 0xd7e1, 0x0000 },
- { 0x0d01, 0xd7e3, 0x0000 },
- { 0x8d01, 0xd7e6, 0x2000 },
- { 0x0d01, 0xd7e5, 0x0000 },
- { 0x0d01, 0xd7e7, 0x0000 },
- { 0x8d01, 0xd7f0, 0x4000 },
- { 0x8d01, 0xd7ec, 0x3000 },
- { 0x8d01, 0xd7ea, 0x2000 },
- { 0x0d01, 0xd7e9, 0x0000 },
- { 0x0d01, 0xd7eb, 0x0000 },
- { 0x8d01, 0xd7ee, 0x2000 },
- { 0x0d01, 0xd7ed, 0x0000 },
- { 0x0d01, 0xd7ef, 0x0000 },
- { 0x8d01, 0xd7f4, 0x3000 },
- { 0x8d01, 0xd7f2, 0x2000 },
- { 0x0d01, 0xd7f1, 0x0000 },
- { 0x0d01, 0xd7f3, 0x0000 },
- { 0x8d01, 0xd7f6, 0x2000 },
- { 0x0d01, 0xd7f5, 0x0000 },
- { 0x0d01, 0xd7f7, 0x0000 },
- { 0x8702, 0xf836, 0x7000 },
- { 0x8702, 0xf816, 0x6000 },
- { 0x8702, 0xf806, 0x5000 },
- { 0x8702, 0x0000, 0x4000 },
- { 0x8d01, 0xd7fc, 0x3000 },
- { 0x8d01, 0xd7fa, 0x2000 },
- { 0x0d01, 0xd7f9, 0x0000 },
- { 0x0d01, 0xd7fb, 0x0000 },
- { 0x8d01, 0xd7fe, 0x2000 },
- { 0x0d01, 0xd7fd, 0x0000 },
- { 0x0d01, 0xd7ff, 0x0000 },
- { 0x8702, 0xf802, 0x3000 },
- { 0x8702, 0xf800, 0x2000 },
- { 0x0702, 0xa6d6, 0x0000 },
- { 0x0702, 0xf801, 0x0000 },
- { 0x8702, 0xf804, 0x2000 },
- { 0x0702, 0xf803, 0x0000 },
- { 0x0702, 0xf805, 0x0000 },
- { 0x8702, 0xf80e, 0x4000 },
- { 0x8702, 0xf80a, 0x3000 },
- { 0x8702, 0xf808, 0x2000 },
- { 0x0702, 0xf807, 0x0000 },
- { 0x0702, 0xf809, 0x0000 },
- { 0x8702, 0xf80c, 0x2000 },
- { 0x0702, 0xf80b, 0x0000 },
- { 0x0702, 0xf80d, 0x0000 },
- { 0x8702, 0xf812, 0x3000 },
- { 0x8702, 0xf810, 0x2000 },
- { 0x0702, 0xf80f, 0x0000 },
- { 0x0702, 0xf811, 0x0000 },
- { 0x8702, 0xf814, 0x2000 },
- { 0x0702, 0xf813, 0x0000 },
- { 0x0702, 0xf815, 0x0000 },
- { 0x8702, 0xf826, 0x5000 },
- { 0x8702, 0xf81e, 0x4000 },
- { 0x8702, 0xf81a, 0x3000 },
- { 0x8702, 0xf818, 0x2000 },
- { 0x0702, 0xf817, 0x0000 },
- { 0x0702, 0xf819, 0x0000 },
- { 0x8702, 0xf81c, 0x2000 },
- { 0x0702, 0xf81b, 0x0000 },
- { 0x0702, 0xf81d, 0x0000 },
- { 0x8702, 0xf822, 0x3000 },
- { 0x8702, 0xf820, 0x2000 },
- { 0x0702, 0xf81f, 0x0000 },
- { 0x0702, 0xf821, 0x0000 },
- { 0x8702, 0xf824, 0x2000 },
- { 0x0702, 0xf823, 0x0000 },
- { 0x0702, 0xf825, 0x0000 },
- { 0x8702, 0xf82e, 0x4000 },
- { 0x8702, 0xf82a, 0x3000 },
- { 0x8702, 0xf828, 0x2000 },
- { 0x0702, 0xf827, 0x0000 },
- { 0x0702, 0xf829, 0x0000 },
- { 0x8702, 0xf82c, 0x2000 },
- { 0x0702, 0xf82b, 0x0000 },
- { 0x0702, 0xf82d, 0x0000 },
- { 0x8702, 0xf832, 0x3000 },
- { 0x8702, 0xf830, 0x2000 },
- { 0x0702, 0xf82f, 0x0000 },
- { 0x0702, 0xf831, 0x0000 },
- { 0x8702, 0xf834, 0x2000 },
- { 0x0702, 0xf833, 0x0000 },
- { 0x0702, 0xf835, 0x0000 },
- { 0x8702, 0xf856, 0x6000 },
- { 0x8702, 0xf846, 0x5000 },
- { 0x8702, 0xf83e, 0x4000 },
- { 0x8702, 0xf83a, 0x3000 },
- { 0x8702, 0xf838, 0x2000 },
- { 0x0702, 0xf837, 0x0000 },
- { 0x0702, 0xf839, 0x0000 },
- { 0x8702, 0xf83c, 0x2000 },
- { 0x0702, 0xf83b, 0x0000 },
- { 0x0702, 0xf83d, 0x0000 },
- { 0x8702, 0xf842, 0x3000 },
- { 0x8702, 0xf840, 0x2000 },
- { 0x0702, 0xf83f, 0x0000 },
- { 0x0702, 0xf841, 0x0000 },
- { 0x8702, 0xf844, 0x2000 },
- { 0x0702, 0xf843, 0x0000 },
- { 0x0702, 0xf845, 0x0000 },
- { 0x8702, 0xf84e, 0x4000 },
- { 0x8702, 0xf84a, 0x3000 },
- { 0x8702, 0xf848, 0x2000 },
- { 0x0702, 0xf847, 0x0000 },
- { 0x0702, 0xf849, 0x0000 },
- { 0x8702, 0xf84c, 0x2000 },
- { 0x0702, 0xf84b, 0x0000 },
- { 0x0702, 0xf84d, 0x0000 },
- { 0x8702, 0xf852, 0x3000 },
- { 0x8702, 0xf850, 0x2000 },
- { 0x0702, 0xf84f, 0x0000 },
- { 0x0702, 0xf851, 0x0000 },
- { 0x8702, 0xf854, 0x2000 },
- { 0x0702, 0xf853, 0x0000 },
- { 0x0702, 0xf855, 0x0000 },
- { 0x8702, 0xf866, 0x5000 },
- { 0x8702, 0xf85e, 0x4000 },
- { 0x8702, 0xf85a, 0x3000 },
- { 0x8702, 0xf858, 0x2000 },
- { 0x0702, 0xf857, 0x0000 },
- { 0x0702, 0xf859, 0x0000 },
- { 0x8702, 0xf85c, 0x2000 },
- { 0x0702, 0xf85b, 0x0000 },
- { 0x0702, 0xf85d, 0x0000 },
- { 0x8702, 0xf862, 0x3000 },
- { 0x8702, 0xf860, 0x2000 },
- { 0x0702, 0xf85f, 0x0000 },
- { 0x0702, 0xf861, 0x0000 },
- { 0x8702, 0xf864, 0x2000 },
- { 0x0702, 0xf863, 0x0000 },
- { 0x0702, 0xf865, 0x0000 },
- { 0x8702, 0xf86e, 0x4000 },
- { 0x8702, 0xf86a, 0x3000 },
- { 0x8702, 0xf868, 0x2000 },
- { 0x0702, 0xf867, 0x0000 },
- { 0x0702, 0xf869, 0x0000 },
- { 0x8702, 0xf86c, 0x2000 },
- { 0x0702, 0xf86b, 0x0000 },
- { 0x0702, 0xf86d, 0x0000 },
- { 0x8702, 0xf872, 0x3000 },
- { 0x8702, 0xf870, 0x2000 },
- { 0x0702, 0xf86f, 0x0000 },
- { 0x0702, 0xf871, 0x0000 },
- { 0x8702, 0xf874, 0x2000 },
- { 0x0702, 0xf873, 0x0000 },
- { 0x0702, 0xf875, 0x0000 },
- { 0x8702, 0xf976, 0x9000 },
- { 0x8702, 0xf8f6, 0x8000 },
- { 0x8702, 0xf8b6, 0x7000 },
- { 0x8702, 0xf896, 0x6000 },
- { 0x8702, 0xf886, 0x5000 },
- { 0x8702, 0xf87e, 0x4000 },
- { 0x8702, 0xf87a, 0x3000 },
- { 0x8702, 0xf878, 0x2000 },
- { 0x0702, 0xf877, 0x0000 },
- { 0x0702, 0xf879, 0x0000 },
- { 0x8702, 0xf87c, 0x2000 },
- { 0x0702, 0xf87b, 0x0000 },
- { 0x0702, 0xf87d, 0x0000 },
- { 0x8702, 0xf882, 0x3000 },
- { 0x8702, 0xf880, 0x2000 },
- { 0x0702, 0xf87f, 0x0000 },
- { 0x0702, 0xf881, 0x0000 },
- { 0x8702, 0xf884, 0x2000 },
- { 0x0702, 0xf883, 0x0000 },
- { 0x0702, 0xf885, 0x0000 },
- { 0x8702, 0xf88e, 0x4000 },
- { 0x8702, 0xf88a, 0x3000 },
- { 0x8702, 0xf888, 0x2000 },
- { 0x0702, 0xf887, 0x0000 },
- { 0x0702, 0xf889, 0x0000 },
- { 0x8702, 0xf88c, 0x2000 },
- { 0x0702, 0xf88b, 0x0000 },
- { 0x0702, 0xf88d, 0x0000 },
- { 0x8702, 0xf892, 0x3000 },
- { 0x8702, 0xf890, 0x2000 },
- { 0x0702, 0xf88f, 0x0000 },
- { 0x0702, 0xf891, 0x0000 },
- { 0x8702, 0xf894, 0x2000 },
- { 0x0702, 0xf893, 0x0000 },
- { 0x0702, 0xf895, 0x0000 },
- { 0x8702, 0xf8a6, 0x5000 },
- { 0x8702, 0xf89e, 0x4000 },
- { 0x8702, 0xf89a, 0x3000 },
- { 0x8702, 0xf898, 0x2000 },
- { 0x0702, 0xf897, 0x0000 },
- { 0x0702, 0xf899, 0x0000 },
- { 0x8702, 0xf89c, 0x2000 },
- { 0x0702, 0xf89b, 0x0000 },
- { 0x0702, 0xf89d, 0x0000 },
- { 0x8702, 0xf8a2, 0x3000 },
- { 0x8702, 0xf8a0, 0x2000 },
- { 0x0702, 0xf89f, 0x0000 },
- { 0x0702, 0xf8a1, 0x0000 },
- { 0x8702, 0xf8a4, 0x2000 },
- { 0x0702, 0xf8a3, 0x0000 },
- { 0x0702, 0xf8a5, 0x0000 },
- { 0x8702, 0xf8ae, 0x4000 },
- { 0x8702, 0xf8aa, 0x3000 },
- { 0x8702, 0xf8a8, 0x2000 },
- { 0x0702, 0xf8a7, 0x0000 },
- { 0x0702, 0xf8a9, 0x0000 },
- { 0x8702, 0xf8ac, 0x2000 },
- { 0x0702, 0xf8ab, 0x0000 },
- { 0x0702, 0xf8ad, 0x0000 },
- { 0x8702, 0xf8b2, 0x3000 },
- { 0x8702, 0xf8b0, 0x2000 },
- { 0x0702, 0xf8af, 0x0000 },
- { 0x0702, 0xf8b1, 0x0000 },
- { 0x8702, 0xf8b4, 0x2000 },
- { 0x0702, 0xf8b3, 0x0000 },
- { 0x0702, 0xf8b5, 0x0000 },
- { 0x8702, 0xf8d6, 0x6000 },
- { 0x8702, 0xf8c6, 0x5000 },
- { 0x8702, 0xf8be, 0x4000 },
- { 0x8702, 0xf8ba, 0x3000 },
- { 0x8702, 0xf8b8, 0x2000 },
- { 0x0702, 0xf8b7, 0x0000 },
- { 0x0702, 0xf8b9, 0x0000 },
- { 0x8702, 0xf8bc, 0x2000 },
- { 0x0702, 0xf8bb, 0x0000 },
- { 0x0702, 0xf8bd, 0x0000 },
- { 0x8702, 0xf8c2, 0x3000 },
- { 0x8702, 0xf8c0, 0x2000 },
- { 0x0702, 0xf8bf, 0x0000 },
- { 0x0702, 0xf8c1, 0x0000 },
- { 0x8702, 0xf8c4, 0x2000 },
- { 0x0702, 0xf8c3, 0x0000 },
- { 0x0702, 0xf8c5, 0x0000 },
- { 0x8702, 0xf8ce, 0x4000 },
- { 0x8702, 0xf8ca, 0x3000 },
- { 0x8702, 0xf8c8, 0x2000 },
- { 0x0702, 0xf8c7, 0x0000 },
- { 0x0702, 0xf8c9, 0x0000 },
- { 0x8702, 0xf8cc, 0x2000 },
- { 0x0702, 0xf8cb, 0x0000 },
- { 0x0702, 0xf8cd, 0x0000 },
- { 0x8702, 0xf8d2, 0x3000 },
- { 0x8702, 0xf8d0, 0x2000 },
- { 0x0702, 0xf8cf, 0x0000 },
- { 0x0702, 0xf8d1, 0x0000 },
- { 0x8702, 0xf8d4, 0x2000 },
- { 0x0702, 0xf8d3, 0x0000 },
- { 0x0702, 0xf8d5, 0x0000 },
- { 0x8702, 0xf8e6, 0x5000 },
- { 0x8702, 0xf8de, 0x4000 },
- { 0x8702, 0xf8da, 0x3000 },
- { 0x8702, 0xf8d8, 0x2000 },
- { 0x0702, 0xf8d7, 0x0000 },
- { 0x0702, 0xf8d9, 0x0000 },
- { 0x8702, 0xf8dc, 0x2000 },
- { 0x0702, 0xf8db, 0x0000 },
- { 0x0702, 0xf8dd, 0x0000 },
- { 0x8702, 0xf8e2, 0x3000 },
- { 0x8702, 0xf8e0, 0x2000 },
- { 0x0702, 0xf8df, 0x0000 },
- { 0x0702, 0xf8e1, 0x0000 },
- { 0x8702, 0xf8e4, 0x2000 },
- { 0x0702, 0xf8e3, 0x0000 },
- { 0x0702, 0xf8e5, 0x0000 },
- { 0x8702, 0xf8ee, 0x4000 },
- { 0x8702, 0xf8ea, 0x3000 },
- { 0x8702, 0xf8e8, 0x2000 },
- { 0x0702, 0xf8e7, 0x0000 },
- { 0x0702, 0xf8e9, 0x0000 },
- { 0x8702, 0xf8ec, 0x2000 },
- { 0x0702, 0xf8eb, 0x0000 },
- { 0x0702, 0xf8ed, 0x0000 },
- { 0x8702, 0xf8f2, 0x3000 },
- { 0x8702, 0xf8f0, 0x2000 },
- { 0x0702, 0xf8ef, 0x0000 },
- { 0x0702, 0xf8f1, 0x0000 },
- { 0x8702, 0xf8f4, 0x2000 },
- { 0x0702, 0xf8f3, 0x0000 },
- { 0x0702, 0xf8f5, 0x0000 },
- { 0x8702, 0xf936, 0x7000 },
- { 0x8702, 0xf916, 0x6000 },
- { 0x8702, 0xf906, 0x5000 },
- { 0x8702, 0xf8fe, 0x4000 },
- { 0x8702, 0xf8fa, 0x3000 },
- { 0x8702, 0xf8f8, 0x2000 },
- { 0x0702, 0xf8f7, 0x0000 },
- { 0x0702, 0xf8f9, 0x0000 },
- { 0x8702, 0xf8fc, 0x2000 },
- { 0x0702, 0xf8fb, 0x0000 },
- { 0x0702, 0xf8fd, 0x0000 },
- { 0x8702, 0xf902, 0x3000 },
- { 0x8702, 0xf900, 0x2000 },
- { 0x0702, 0xf8ff, 0x0000 },
- { 0x0702, 0xf901, 0x0000 },
- { 0x8702, 0xf904, 0x2000 },
- { 0x0702, 0xf903, 0x0000 },
- { 0x0702, 0xf905, 0x0000 },
- { 0x8702, 0xf90e, 0x4000 },
- { 0x8702, 0xf90a, 0x3000 },
- { 0x8702, 0xf908, 0x2000 },
- { 0x0702, 0xf907, 0x0000 },
- { 0x0702, 0xf909, 0x0000 },
- { 0x8702, 0xf90c, 0x2000 },
- { 0x0702, 0xf90b, 0x0000 },
- { 0x0702, 0xf90d, 0x0000 },
- { 0x8702, 0xf912, 0x3000 },
- { 0x8702, 0xf910, 0x2000 },
- { 0x0702, 0xf90f, 0x0000 },
- { 0x0702, 0xf911, 0x0000 },
- { 0x8702, 0xf914, 0x2000 },
- { 0x0702, 0xf913, 0x0000 },
- { 0x0702, 0xf915, 0x0000 },
- { 0x8702, 0xf926, 0x5000 },
- { 0x8702, 0xf91e, 0x4000 },
- { 0x8702, 0xf91a, 0x3000 },
- { 0x8702, 0xf918, 0x2000 },
- { 0x0702, 0xf917, 0x0000 },
- { 0x0702, 0xf919, 0x0000 },
- { 0x8702, 0xf91c, 0x2000 },
- { 0x0702, 0xf91b, 0x0000 },
- { 0x0702, 0xf91d, 0x0000 },
- { 0x8702, 0xf922, 0x3000 },
- { 0x8702, 0xf920, 0x2000 },
- { 0x0702, 0xf91f, 0x0000 },
- { 0x0702, 0xf921, 0x0000 },
- { 0x8702, 0xf924, 0x2000 },
- { 0x0702, 0xf923, 0x0000 },
- { 0x0702, 0xf925, 0x0000 },
- { 0x8702, 0xf92e, 0x4000 },
- { 0x8702, 0xf92a, 0x3000 },
- { 0x8702, 0xf928, 0x2000 },
- { 0x0702, 0xf927, 0x0000 },
- { 0x0702, 0xf929, 0x0000 },
- { 0x8702, 0xf92c, 0x2000 },
- { 0x0702, 0xf92b, 0x0000 },
- { 0x0702, 0xf92d, 0x0000 },
- { 0x8702, 0xf932, 0x3000 },
- { 0x8702, 0xf930, 0x2000 },
- { 0x0702, 0xf92f, 0x0000 },
- { 0x0702, 0xf931, 0x0000 },
- { 0x8702, 0xf934, 0x2000 },
- { 0x0702, 0xf933, 0x0000 },
- { 0x0702, 0xf935, 0x0000 },
- { 0x8702, 0xf956, 0x6000 },
- { 0x8702, 0xf946, 0x5000 },
- { 0x8702, 0xf93e, 0x4000 },
- { 0x8702, 0xf93a, 0x3000 },
- { 0x8702, 0xf938, 0x2000 },
- { 0x0702, 0xf937, 0x0000 },
- { 0x0702, 0xf939, 0x0000 },
- { 0x8702, 0xf93c, 0x2000 },
- { 0x0702, 0xf93b, 0x0000 },
- { 0x0702, 0xf93d, 0x0000 },
- { 0x8702, 0xf942, 0x3000 },
- { 0x8702, 0xf940, 0x2000 },
- { 0x0702, 0xf93f, 0x0000 },
- { 0x0702, 0xf941, 0x0000 },
- { 0x8702, 0xf944, 0x2000 },
- { 0x0702, 0xf943, 0x0000 },
- { 0x0702, 0xf945, 0x0000 },
- { 0x8702, 0xf94e, 0x4000 },
- { 0x8702, 0xf94a, 0x3000 },
- { 0x8702, 0xf948, 0x2000 },
- { 0x0702, 0xf947, 0x0000 },
- { 0x0702, 0xf949, 0x0000 },
- { 0x8702, 0xf94c, 0x2000 },
- { 0x0702, 0xf94b, 0x0000 },
- { 0x0702, 0xf94d, 0x0000 },
- { 0x8702, 0xf952, 0x3000 },
- { 0x8702, 0xf950, 0x2000 },
- { 0x0702, 0xf94f, 0x0000 },
- { 0x0702, 0xf951, 0x0000 },
- { 0x8702, 0xf954, 0x2000 },
- { 0x0702, 0xf953, 0x0000 },
- { 0x0702, 0xf955, 0x0000 },
- { 0x8702, 0xf966, 0x5000 },
- { 0x8702, 0xf95e, 0x4000 },
- { 0x8702, 0xf95a, 0x3000 },
- { 0x8702, 0xf958, 0x2000 },
- { 0x0702, 0xf957, 0x0000 },
- { 0x0702, 0xf959, 0x0000 },
- { 0x8702, 0xf95c, 0x2000 },
- { 0x0702, 0xf95b, 0x0000 },
- { 0x0702, 0xf95d, 0x0000 },
- { 0x8702, 0xf962, 0x3000 },
- { 0x8702, 0xf960, 0x2000 },
- { 0x0702, 0xf95f, 0x0000 },
- { 0x0702, 0xf961, 0x0000 },
- { 0x8702, 0xf964, 0x2000 },
- { 0x0702, 0xf963, 0x0000 },
- { 0x0702, 0xf965, 0x0000 },
- { 0x8702, 0xf96e, 0x4000 },
- { 0x8702, 0xf96a, 0x3000 },
- { 0x8702, 0xf968, 0x2000 },
- { 0x0702, 0xf967, 0x0000 },
- { 0x0702, 0xf969, 0x0000 },
- { 0x8702, 0xf96c, 0x2000 },
- { 0x0702, 0xf96b, 0x0000 },
- { 0x0702, 0xf96d, 0x0000 },
- { 0x8702, 0xf972, 0x3000 },
- { 0x8702, 0xf970, 0x2000 },
- { 0x0702, 0xf96f, 0x0000 },
- { 0x0702, 0xf971, 0x0000 },
- { 0x8702, 0xf974, 0x2000 },
- { 0x0702, 0xf973, 0x0000 },
- { 0x0702, 0xf975, 0x0000 },
- { 0x810e, 0x0077, 0x9000 },
- { 0x8702, 0xf9f6, 0x8000 },
- { 0x8702, 0xf9b6, 0x7000 },
- { 0x8702, 0xf996, 0x6000 },
- { 0x8702, 0xf986, 0x5000 },
- { 0x8702, 0xf97e, 0x4000 },
- { 0x8702, 0xf97a, 0x3000 },
- { 0x8702, 0xf978, 0x2000 },
- { 0x0702, 0xf977, 0x0000 },
- { 0x0702, 0xf979, 0x0000 },
- { 0x8702, 0xf97c, 0x2000 },
- { 0x0702, 0xf97b, 0x0000 },
- { 0x0702, 0xf97d, 0x0000 },
- { 0x8702, 0xf982, 0x3000 },
- { 0x8702, 0xf980, 0x2000 },
- { 0x0702, 0xf97f, 0x0000 },
- { 0x0702, 0xf981, 0x0000 },
- { 0x8702, 0xf984, 0x2000 },
- { 0x0702, 0xf983, 0x0000 },
- { 0x0702, 0xf985, 0x0000 },
- { 0x8702, 0xf98e, 0x4000 },
- { 0x8702, 0xf98a, 0x3000 },
- { 0x8702, 0xf988, 0x2000 },
- { 0x0702, 0xf987, 0x0000 },
- { 0x0702, 0xf989, 0x0000 },
- { 0x8702, 0xf98c, 0x2000 },
- { 0x0702, 0xf98b, 0x0000 },
- { 0x0702, 0xf98d, 0x0000 },
- { 0x8702, 0xf992, 0x3000 },
- { 0x8702, 0xf990, 0x2000 },
- { 0x0702, 0xf98f, 0x0000 },
- { 0x0702, 0xf991, 0x0000 },
- { 0x8702, 0xf994, 0x2000 },
- { 0x0702, 0xf993, 0x0000 },
- { 0x0702, 0xf995, 0x0000 },
- { 0x8702, 0xf9a6, 0x5000 },
- { 0x8702, 0xf99e, 0x4000 },
- { 0x8702, 0xf99a, 0x3000 },
- { 0x8702, 0xf998, 0x2000 },
- { 0x0702, 0xf997, 0x0000 },
- { 0x0702, 0xf999, 0x0000 },
- { 0x8702, 0xf99c, 0x2000 },
- { 0x0702, 0xf99b, 0x0000 },
- { 0x0702, 0xf99d, 0x0000 },
- { 0x8702, 0xf9a2, 0x3000 },
- { 0x8702, 0xf9a0, 0x2000 },
- { 0x0702, 0xf99f, 0x0000 },
- { 0x0702, 0xf9a1, 0x0000 },
- { 0x8702, 0xf9a4, 0x2000 },
- { 0x0702, 0xf9a3, 0x0000 },
- { 0x0702, 0xf9a5, 0x0000 },
- { 0x8702, 0xf9ae, 0x4000 },
- { 0x8702, 0xf9aa, 0x3000 },
- { 0x8702, 0xf9a8, 0x2000 },
- { 0x0702, 0xf9a7, 0x0000 },
- { 0x0702, 0xf9a9, 0x0000 },
- { 0x8702, 0xf9ac, 0x2000 },
- { 0x0702, 0xf9ab, 0x0000 },
- { 0x0702, 0xf9ad, 0x0000 },
- { 0x8702, 0xf9b2, 0x3000 },
- { 0x8702, 0xf9b0, 0x2000 },
- { 0x0702, 0xf9af, 0x0000 },
- { 0x0702, 0xf9b1, 0x0000 },
- { 0x8702, 0xf9b4, 0x2000 },
- { 0x0702, 0xf9b3, 0x0000 },
- { 0x0702, 0xf9b5, 0x0000 },
- { 0x8702, 0xf9d6, 0x6000 },
- { 0x8702, 0xf9c6, 0x5000 },
- { 0x8702, 0xf9be, 0x4000 },
- { 0x8702, 0xf9ba, 0x3000 },
- { 0x8702, 0xf9b8, 0x2000 },
- { 0x0702, 0xf9b7, 0x0000 },
- { 0x0702, 0xf9b9, 0x0000 },
- { 0x8702, 0xf9bc, 0x2000 },
- { 0x0702, 0xf9bb, 0x0000 },
- { 0x0702, 0xf9bd, 0x0000 },
- { 0x8702, 0xf9c2, 0x3000 },
- { 0x8702, 0xf9c0, 0x2000 },
- { 0x0702, 0xf9bf, 0x0000 },
- { 0x0702, 0xf9c1, 0x0000 },
- { 0x8702, 0xf9c4, 0x2000 },
- { 0x0702, 0xf9c3, 0x0000 },
- { 0x0702, 0xf9c5, 0x0000 },
- { 0x8702, 0xf9ce, 0x4000 },
- { 0x8702, 0xf9ca, 0x3000 },
- { 0x8702, 0xf9c8, 0x2000 },
- { 0x0702, 0xf9c7, 0x0000 },
- { 0x0702, 0xf9c9, 0x0000 },
- { 0x8702, 0xf9cc, 0x2000 },
- { 0x0702, 0xf9cb, 0x0000 },
- { 0x0702, 0xf9cd, 0x0000 },
- { 0x8702, 0xf9d2, 0x3000 },
- { 0x8702, 0xf9d0, 0x2000 },
- { 0x0702, 0xf9cf, 0x0000 },
- { 0x0702, 0xf9d1, 0x0000 },
- { 0x8702, 0xf9d4, 0x2000 },
- { 0x0702, 0xf9d3, 0x0000 },
- { 0x0702, 0xf9d5, 0x0000 },
- { 0x8702, 0xf9e6, 0x5000 },
- { 0x8702, 0xf9de, 0x4000 },
- { 0x8702, 0xf9da, 0x3000 },
- { 0x8702, 0xf9d8, 0x2000 },
- { 0x0702, 0xf9d7, 0x0000 },
- { 0x0702, 0xf9d9, 0x0000 },
- { 0x8702, 0xf9dc, 0x2000 },
- { 0x0702, 0xf9db, 0x0000 },
- { 0x0702, 0xf9dd, 0x0000 },
- { 0x8702, 0xf9e2, 0x3000 },
- { 0x8702, 0xf9e0, 0x2000 },
- { 0x0702, 0xf9df, 0x0000 },
- { 0x0702, 0xf9e1, 0x0000 },
- { 0x8702, 0xf9e4, 0x2000 },
- { 0x0702, 0xf9e3, 0x0000 },
- { 0x0702, 0xf9e5, 0x0000 },
- { 0x8702, 0xf9ee, 0x4000 },
- { 0x8702, 0xf9ea, 0x3000 },
- { 0x8702, 0xf9e8, 0x2000 },
- { 0x0702, 0xf9e7, 0x0000 },
- { 0x0702, 0xf9e9, 0x0000 },
- { 0x8702, 0xf9ec, 0x2000 },
- { 0x0702, 0xf9eb, 0x0000 },
- { 0x0702, 0xf9ed, 0x0000 },
- { 0x8702, 0xf9f2, 0x3000 },
- { 0x8702, 0xf9f0, 0x2000 },
- { 0x0702, 0xf9ef, 0x0000 },
- { 0x0702, 0xf9f1, 0x0000 },
- { 0x8702, 0xf9f4, 0x2000 },
- { 0x0702, 0xf9f3, 0x0000 },
- { 0x0702, 0xf9f5, 0x0000 },
- { 0x810e, 0x0037, 0x7000 },
- { 0x8702, 0xfa16, 0x6000 },
- { 0x8702, 0xfa06, 0x5000 },
- { 0x8702, 0xf9fe, 0x4000 },
- { 0x8702, 0xf9fa, 0x3000 },
- { 0x8702, 0xf9f8, 0x2000 },
- { 0x0702, 0xf9f7, 0x0000 },
- { 0x0702, 0xf9f9, 0x0000 },
- { 0x8702, 0xf9fc, 0x2000 },
- { 0x0702, 0xf9fb, 0x0000 },
- { 0x0702, 0xf9fd, 0x0000 },
- { 0x8702, 0xfa02, 0x3000 },
- { 0x8702, 0xfa00, 0x2000 },
- { 0x0702, 0xf9ff, 0x0000 },
- { 0x0702, 0xfa01, 0x0000 },
- { 0x8702, 0xfa04, 0x2000 },
- { 0x0702, 0xfa03, 0x0000 },
- { 0x0702, 0xfa05, 0x0000 },
- { 0x8702, 0xfa0e, 0x4000 },
- { 0x8702, 0xfa0a, 0x3000 },
- { 0x8702, 0xfa08, 0x2000 },
- { 0x0702, 0xfa07, 0x0000 },
- { 0x0702, 0xfa09, 0x0000 },
- { 0x8702, 0xfa0c, 0x2000 },
- { 0x0702, 0xfa0b, 0x0000 },
- { 0x0702, 0xfa0d, 0x0000 },
- { 0x8702, 0xfa12, 0x3000 },
- { 0x8702, 0xfa10, 0x2000 },
- { 0x0702, 0xfa0f, 0x0000 },
- { 0x0702, 0xfa11, 0x0000 },
- { 0x8702, 0xfa14, 0x2000 },
- { 0x0702, 0xfa13, 0x0000 },
- { 0x0702, 0xfa15, 0x0000 },
- { 0x810e, 0x0027, 0x5000 },
- { 0x810e, 0x0001, 0x4000 },
- { 0x8702, 0xfa1a, 0x3000 },
- { 0x8702, 0xfa18, 0x2000 },
- { 0x0702, 0xfa17, 0x0000 },
- { 0x0702, 0xfa19, 0x0000 },
- { 0x8702, 0xfa1c, 0x2000 },
- { 0x0702, 0xfa1b, 0x0000 },
- { 0x0702, 0xfa1d, 0x0000 },
- { 0x810e, 0x0023, 0x3000 },
- { 0x810e, 0x0021, 0x2000 },
- { 0x010e, 0x0020, 0x0000 },
- { 0x010e, 0x0022, 0x0000 },
- { 0x810e, 0x0025, 0x2000 },
- { 0x010e, 0x0024, 0x0000 },
- { 0x010e, 0x0026, 0x0000 },
- { 0x810e, 0x002f, 0x4000 },
- { 0x810e, 0x002b, 0x3000 },
- { 0x810e, 0x0029, 0x2000 },
- { 0x010e, 0x0028, 0x0000 },
- { 0x010e, 0x002a, 0x0000 },
- { 0x810e, 0x002d, 0x2000 },
- { 0x010e, 0x002c, 0x0000 },
- { 0x010e, 0x002e, 0x0000 },
- { 0x810e, 0x0033, 0x3000 },
- { 0x810e, 0x0031, 0x2000 },
- { 0x010e, 0x0030, 0x0000 },
- { 0x010e, 0x0032, 0x0000 },
- { 0x810e, 0x0035, 0x2000 },
- { 0x010e, 0x0034, 0x0000 },
- { 0x010e, 0x0036, 0x0000 },
- { 0x810e, 0x0057, 0x6000 },
- { 0x810e, 0x0047, 0x5000 },
- { 0x810e, 0x003f, 0x4000 },
- { 0x810e, 0x003b, 0x3000 },
- { 0x810e, 0x0039, 0x2000 },
- { 0x010e, 0x0038, 0x0000 },
- { 0x010e, 0x003a, 0x0000 },
- { 0x810e, 0x003d, 0x2000 },
- { 0x010e, 0x003c, 0x0000 },
- { 0x010e, 0x003e, 0x0000 },
- { 0x810e, 0x0043, 0x3000 },
- { 0x810e, 0x0041, 0x2000 },
- { 0x010e, 0x0040, 0x0000 },
- { 0x010e, 0x0042, 0x0000 },
- { 0x810e, 0x0045, 0x2000 },
- { 0x010e, 0x0044, 0x0000 },
- { 0x010e, 0x0046, 0x0000 },
- { 0x810e, 0x004f, 0x4000 },
- { 0x810e, 0x004b, 0x3000 },
- { 0x810e, 0x0049, 0x2000 },
- { 0x010e, 0x0048, 0x0000 },
- { 0x010e, 0x004a, 0x0000 },
- { 0x810e, 0x004d, 0x2000 },
- { 0x010e, 0x004c, 0x0000 },
- { 0x010e, 0x004e, 0x0000 },
- { 0x810e, 0x0053, 0x3000 },
- { 0x810e, 0x0051, 0x2000 },
- { 0x010e, 0x0050, 0x0000 },
- { 0x010e, 0x0052, 0x0000 },
- { 0x810e, 0x0055, 0x2000 },
- { 0x010e, 0x0054, 0x0000 },
- { 0x010e, 0x0056, 0x0000 },
- { 0x810e, 0x0067, 0x5000 },
- { 0x810e, 0x005f, 0x4000 },
- { 0x810e, 0x005b, 0x3000 },
- { 0x810e, 0x0059, 0x2000 },
- { 0x010e, 0x0058, 0x0000 },
- { 0x010e, 0x005a, 0x0000 },
- { 0x810e, 0x005d, 0x2000 },
- { 0x010e, 0x005c, 0x0000 },
- { 0x010e, 0x005e, 0x0000 },
- { 0x810e, 0x0063, 0x3000 },
- { 0x810e, 0x0061, 0x2000 },
- { 0x010e, 0x0060, 0x0000 },
- { 0x010e, 0x0062, 0x0000 },
- { 0x810e, 0x0065, 0x2000 },
- { 0x010e, 0x0064, 0x0000 },
- { 0x010e, 0x0066, 0x0000 },
- { 0x810e, 0x006f, 0x4000 },
- { 0x810e, 0x006b, 0x3000 },
- { 0x810e, 0x0069, 0x2000 },
- { 0x010e, 0x0068, 0x0000 },
- { 0x010e, 0x006a, 0x0000 },
- { 0x810e, 0x006d, 0x2000 },
- { 0x010e, 0x006c, 0x0000 },
- { 0x010e, 0x006e, 0x0000 },
- { 0x810e, 0x0073, 0x3000 },
- { 0x810e, 0x0071, 0x2000 },
- { 0x010e, 0x0070, 0x0000 },
- { 0x010e, 0x0072, 0x0000 },
- { 0x810e, 0x0075, 0x2000 },
- { 0x010e, 0x0074, 0x0000 },
- { 0x010e, 0x0076, 0x0000 },
- { 0x8c0e, 0x0177, 0x8000 },
- { 0x8c0e, 0x0137, 0x7000 },
- { 0x8c0e, 0x0117, 0x6000 },
- { 0x8c0e, 0x0107, 0x5000 },
- { 0x810e, 0x007f, 0x4000 },
- { 0x810e, 0x007b, 0x3000 },
- { 0x810e, 0x0079, 0x2000 },
- { 0x010e, 0x0078, 0x0000 },
- { 0x010e, 0x007a, 0x0000 },
- { 0x810e, 0x007d, 0x2000 },
- { 0x010e, 0x007c, 0x0000 },
- { 0x010e, 0x007e, 0x0000 },
- { 0x8c0e, 0x0103, 0x3000 },
- { 0x8c0e, 0x0101, 0x2000 },
- { 0x0c0e, 0x0100, 0x0000 },
- { 0x0c0e, 0x0102, 0x0000 },
- { 0x8c0e, 0x0105, 0x2000 },
- { 0x0c0e, 0x0104, 0x0000 },
- { 0x0c0e, 0x0106, 0x0000 },
- { 0x8c0e, 0x010f, 0x4000 },
- { 0x8c0e, 0x010b, 0x3000 },
- { 0x8c0e, 0x0109, 0x2000 },
- { 0x0c0e, 0x0108, 0x0000 },
- { 0x0c0e, 0x010a, 0x0000 },
- { 0x8c0e, 0x010d, 0x2000 },
- { 0x0c0e, 0x010c, 0x0000 },
- { 0x0c0e, 0x010e, 0x0000 },
- { 0x8c0e, 0x0113, 0x3000 },
- { 0x8c0e, 0x0111, 0x2000 },
- { 0x0c0e, 0x0110, 0x0000 },
- { 0x0c0e, 0x0112, 0x0000 },
- { 0x8c0e, 0x0115, 0x2000 },
- { 0x0c0e, 0x0114, 0x0000 },
- { 0x0c0e, 0x0116, 0x0000 },
- { 0x8c0e, 0x0127, 0x5000 },
- { 0x8c0e, 0x011f, 0x4000 },
- { 0x8c0e, 0x011b, 0x3000 },
- { 0x8c0e, 0x0119, 0x2000 },
- { 0x0c0e, 0x0118, 0x0000 },
- { 0x0c0e, 0x011a, 0x0000 },
- { 0x8c0e, 0x011d, 0x2000 },
- { 0x0c0e, 0x011c, 0x0000 },
- { 0x0c0e, 0x011e, 0x0000 },
- { 0x8c0e, 0x0123, 0x3000 },
- { 0x8c0e, 0x0121, 0x2000 },
- { 0x0c0e, 0x0120, 0x0000 },
- { 0x0c0e, 0x0122, 0x0000 },
- { 0x8c0e, 0x0125, 0x2000 },
- { 0x0c0e, 0x0124, 0x0000 },
- { 0x0c0e, 0x0126, 0x0000 },
- { 0x8c0e, 0x012f, 0x4000 },
- { 0x8c0e, 0x012b, 0x3000 },
- { 0x8c0e, 0x0129, 0x2000 },
- { 0x0c0e, 0x0128, 0x0000 },
- { 0x0c0e, 0x012a, 0x0000 },
- { 0x8c0e, 0x012d, 0x2000 },
- { 0x0c0e, 0x012c, 0x0000 },
- { 0x0c0e, 0x012e, 0x0000 },
- { 0x8c0e, 0x0133, 0x3000 },
- { 0x8c0e, 0x0131, 0x2000 },
- { 0x0c0e, 0x0130, 0x0000 },
- { 0x0c0e, 0x0132, 0x0000 },
- { 0x8c0e, 0x0135, 0x2000 },
- { 0x0c0e, 0x0134, 0x0000 },
- { 0x0c0e, 0x0136, 0x0000 },
- { 0x8c0e, 0x0157, 0x6000 },
- { 0x8c0e, 0x0147, 0x5000 },
- { 0x8c0e, 0x013f, 0x4000 },
- { 0x8c0e, 0x013b, 0x3000 },
- { 0x8c0e, 0x0139, 0x2000 },
- { 0x0c0e, 0x0138, 0x0000 },
- { 0x0c0e, 0x013a, 0x0000 },
- { 0x8c0e, 0x013d, 0x2000 },
- { 0x0c0e, 0x013c, 0x0000 },
- { 0x0c0e, 0x013e, 0x0000 },
- { 0x8c0e, 0x0143, 0x3000 },
- { 0x8c0e, 0x0141, 0x2000 },
- { 0x0c0e, 0x0140, 0x0000 },
- { 0x0c0e, 0x0142, 0x0000 },
- { 0x8c0e, 0x0145, 0x2000 },
- { 0x0c0e, 0x0144, 0x0000 },
- { 0x0c0e, 0x0146, 0x0000 },
- { 0x8c0e, 0x014f, 0x4000 },
- { 0x8c0e, 0x014b, 0x3000 },
- { 0x8c0e, 0x0149, 0x2000 },
- { 0x0c0e, 0x0148, 0x0000 },
- { 0x0c0e, 0x014a, 0x0000 },
- { 0x8c0e, 0x014d, 0x2000 },
- { 0x0c0e, 0x014c, 0x0000 },
- { 0x0c0e, 0x014e, 0x0000 },
- { 0x8c0e, 0x0153, 0x3000 },
- { 0x8c0e, 0x0151, 0x2000 },
- { 0x0c0e, 0x0150, 0x0000 },
- { 0x0c0e, 0x0152, 0x0000 },
- { 0x8c0e, 0x0155, 0x2000 },
- { 0x0c0e, 0x0154, 0x0000 },
- { 0x0c0e, 0x0156, 0x0000 },
- { 0x8c0e, 0x0167, 0x5000 },
- { 0x8c0e, 0x015f, 0x4000 },
- { 0x8c0e, 0x015b, 0x3000 },
- { 0x8c0e, 0x0159, 0x2000 },
- { 0x0c0e, 0x0158, 0x0000 },
- { 0x0c0e, 0x015a, 0x0000 },
- { 0x8c0e, 0x015d, 0x2000 },
- { 0x0c0e, 0x015c, 0x0000 },
- { 0x0c0e, 0x015e, 0x0000 },
- { 0x8c0e, 0x0163, 0x3000 },
- { 0x8c0e, 0x0161, 0x2000 },
- { 0x0c0e, 0x0160, 0x0000 },
- { 0x0c0e, 0x0162, 0x0000 },
- { 0x8c0e, 0x0165, 0x2000 },
- { 0x0c0e, 0x0164, 0x0000 },
- { 0x0c0e, 0x0166, 0x0000 },
- { 0x8c0e, 0x016f, 0x4000 },
- { 0x8c0e, 0x016b, 0x3000 },
- { 0x8c0e, 0x0169, 0x2000 },
- { 0x0c0e, 0x0168, 0x0000 },
- { 0x0c0e, 0x016a, 0x0000 },
- { 0x8c0e, 0x016d, 0x2000 },
- { 0x0c0e, 0x016c, 0x0000 },
- { 0x0c0e, 0x016e, 0x0000 },
- { 0x8c0e, 0x0173, 0x3000 },
- { 0x8c0e, 0x0171, 0x2000 },
- { 0x0c0e, 0x0170, 0x0000 },
- { 0x0c0e, 0x0172, 0x0000 },
- { 0x8c0e, 0x0175, 0x2000 },
- { 0x0c0e, 0x0174, 0x0000 },
- { 0x0c0e, 0x0176, 0x0000 },
- { 0x8c0e, 0x01b7, 0x7000 },
- { 0x8c0e, 0x0197, 0x6000 },
- { 0x8c0e, 0x0187, 0x5000 },
- { 0x8c0e, 0x017f, 0x4000 },
- { 0x8c0e, 0x017b, 0x3000 },
- { 0x8c0e, 0x0179, 0x2000 },
- { 0x0c0e, 0x0178, 0x0000 },
- { 0x0c0e, 0x017a, 0x0000 },
- { 0x8c0e, 0x017d, 0x2000 },
- { 0x0c0e, 0x017c, 0x0000 },
- { 0x0c0e, 0x017e, 0x0000 },
- { 0x8c0e, 0x0183, 0x3000 },
- { 0x8c0e, 0x0181, 0x2000 },
- { 0x0c0e, 0x0180, 0x0000 },
- { 0x0c0e, 0x0182, 0x0000 },
- { 0x8c0e, 0x0185, 0x2000 },
- { 0x0c0e, 0x0184, 0x0000 },
- { 0x0c0e, 0x0186, 0x0000 },
- { 0x8c0e, 0x018f, 0x4000 },
- { 0x8c0e, 0x018b, 0x3000 },
- { 0x8c0e, 0x0189, 0x2000 },
- { 0x0c0e, 0x0188, 0x0000 },
- { 0x0c0e, 0x018a, 0x0000 },
- { 0x8c0e, 0x018d, 0x2000 },
- { 0x0c0e, 0x018c, 0x0000 },
- { 0x0c0e, 0x018e, 0x0000 },
- { 0x8c0e, 0x0193, 0x3000 },
- { 0x8c0e, 0x0191, 0x2000 },
- { 0x0c0e, 0x0190, 0x0000 },
- { 0x0c0e, 0x0192, 0x0000 },
- { 0x8c0e, 0x0195, 0x2000 },
- { 0x0c0e, 0x0194, 0x0000 },
- { 0x0c0e, 0x0196, 0x0000 },
- { 0x8c0e, 0x01a7, 0x5000 },
- { 0x8c0e, 0x019f, 0x4000 },
- { 0x8c0e, 0x019b, 0x3000 },
- { 0x8c0e, 0x0199, 0x2000 },
- { 0x0c0e, 0x0198, 0x0000 },
- { 0x0c0e, 0x019a, 0x0000 },
- { 0x8c0e, 0x019d, 0x2000 },
- { 0x0c0e, 0x019c, 0x0000 },
- { 0x0c0e, 0x019e, 0x0000 },
- { 0x8c0e, 0x01a3, 0x3000 },
- { 0x8c0e, 0x01a1, 0x2000 },
- { 0x0c0e, 0x01a0, 0x0000 },
- { 0x0c0e, 0x01a2, 0x0000 },
- { 0x8c0e, 0x01a5, 0x2000 },
- { 0x0c0e, 0x01a4, 0x0000 },
- { 0x0c0e, 0x01a6, 0x0000 },
- { 0x8c0e, 0x01af, 0x4000 },
- { 0x8c0e, 0x01ab, 0x3000 },
- { 0x8c0e, 0x01a9, 0x2000 },
- { 0x0c0e, 0x01a8, 0x0000 },
- { 0x0c0e, 0x01aa, 0x0000 },
- { 0x8c0e, 0x01ad, 0x2000 },
- { 0x0c0e, 0x01ac, 0x0000 },
- { 0x0c0e, 0x01ae, 0x0000 },
- { 0x8c0e, 0x01b3, 0x3000 },
- { 0x8c0e, 0x01b1, 0x2000 },
- { 0x0c0e, 0x01b0, 0x0000 },
- { 0x0c0e, 0x01b2, 0x0000 },
- { 0x8c0e, 0x01b5, 0x2000 },
- { 0x0c0e, 0x01b4, 0x0000 },
- { 0x0c0e, 0x01b6, 0x0000 },
- { 0x8c0e, 0x01d7, 0x6000 },
- { 0x8c0e, 0x01c7, 0x5000 },
- { 0x8c0e, 0x01bf, 0x4000 },
- { 0x8c0e, 0x01bb, 0x3000 },
- { 0x8c0e, 0x01b9, 0x2000 },
- { 0x0c0e, 0x01b8, 0x0000 },
- { 0x0c0e, 0x01ba, 0x0000 },
- { 0x8c0e, 0x01bd, 0x2000 },
- { 0x0c0e, 0x01bc, 0x0000 },
- { 0x0c0e, 0x01be, 0x0000 },
- { 0x8c0e, 0x01c3, 0x3000 },
- { 0x8c0e, 0x01c1, 0x2000 },
- { 0x0c0e, 0x01c0, 0x0000 },
- { 0x0c0e, 0x01c2, 0x0000 },
- { 0x8c0e, 0x01c5, 0x2000 },
- { 0x0c0e, 0x01c4, 0x0000 },
- { 0x0c0e, 0x01c6, 0x0000 },
- { 0x8c0e, 0x01cf, 0x4000 },
- { 0x8c0e, 0x01cb, 0x3000 },
- { 0x8c0e, 0x01c9, 0x2000 },
- { 0x0c0e, 0x01c8, 0x0000 },
- { 0x0c0e, 0x01ca, 0x0000 },
- { 0x8c0e, 0x01cd, 0x2000 },
- { 0x0c0e, 0x01cc, 0x0000 },
- { 0x0c0e, 0x01ce, 0x0000 },
- { 0x8c0e, 0x01d3, 0x3000 },
- { 0x8c0e, 0x01d1, 0x2000 },
- { 0x0c0e, 0x01d0, 0x0000 },
- { 0x0c0e, 0x01d2, 0x0000 },
- { 0x8c0e, 0x01d5, 0x2000 },
- { 0x0c0e, 0x01d4, 0x0000 },
- { 0x0c0e, 0x01d6, 0x0000 },
- { 0x8c0e, 0x01e7, 0x5000 },
- { 0x8c0e, 0x01df, 0x4000 },
- { 0x8c0e, 0x01db, 0x3000 },
- { 0x8c0e, 0x01d9, 0x2000 },
- { 0x0c0e, 0x01d8, 0x0000 },
- { 0x0c0e, 0x01da, 0x0000 },
- { 0x8c0e, 0x01dd, 0x2000 },
- { 0x0c0e, 0x01dc, 0x0000 },
- { 0x0c0e, 0x01de, 0x0000 },
- { 0x8c0e, 0x01e3, 0x3000 },
- { 0x8c0e, 0x01e1, 0x2000 },
- { 0x0c0e, 0x01e0, 0x0000 },
- { 0x0c0e, 0x01e2, 0x0000 },
- { 0x8c0e, 0x01e5, 0x2000 },
- { 0x0c0e, 0x01e4, 0x0000 },
- { 0x0c0e, 0x01e6, 0x0000 },
- { 0x8c0e, 0x01ef, 0x4000 },
- { 0x8c0e, 0x01eb, 0x3000 },
- { 0x8c0e, 0x01e9, 0x2000 },
- { 0x0c0e, 0x01e8, 0x0000 },
- { 0x0c0e, 0x01ea, 0x0000 },
- { 0x8c0e, 0x01ed, 0x2000 },
- { 0x0c0e, 0x01ec, 0x0000 },
- { 0x0c0e, 0x01ee, 0x0000 },
- { 0x830f, 0xfffd, 0x2000 },
- { 0x030f, 0x0000, 0x0000 },
- { 0x0310, 0x0000, 0x1000 },
- { 0x0310, 0xfffd, 0x0000 },
+ { 0x09800000, 0x0000001f },
+ { 0x09000020, 0x74000000 },
+ { 0x09800021, 0x54000002 },
+ { 0x09000024, 0x5c000000 },
+ { 0x09800025, 0x54000002 },
+ { 0x09000028, 0x58000000 },
+ { 0x09000029, 0x48000000 },
+ { 0x0900002a, 0x54000000 },
+ { 0x0900002b, 0x64000000 },
+ { 0x0900002c, 0x54000000 },
+ { 0x0900002d, 0x44000000 },
+ { 0x0980002e, 0x54000001 },
+ { 0x09800030, 0x34000009 },
+ { 0x0980003a, 0x54000001 },
+ { 0x0980003c, 0x64000002 },
+ { 0x0980003f, 0x54000001 },
+ { 0x21000041, 0x24000020 },
+ { 0x21000042, 0x24000020 },
+ { 0x21000043, 0x24000020 },
+ { 0x21000044, 0x24000020 },
+ { 0x21000045, 0x24000020 },
+ { 0x21000046, 0x24000020 },
+ { 0x21000047, 0x24000020 },
+ { 0x21000048, 0x24000020 },
+ { 0x21000049, 0x24000020 },
+ { 0x2100004a, 0x24000020 },
+ { 0x2100004b, 0x24000020 },
+ { 0x2100004c, 0x24000020 },
+ { 0x2100004d, 0x24000020 },
+ { 0x2100004e, 0x24000020 },
+ { 0x2100004f, 0x24000020 },
+ { 0x21000050, 0x24000020 },
+ { 0x21000051, 0x24000020 },
+ { 0x21000052, 0x24000020 },
+ { 0x21000053, 0x24000020 },
+ { 0x21000054, 0x24000020 },
+ { 0x21000055, 0x24000020 },
+ { 0x21000056, 0x24000020 },
+ { 0x21000057, 0x24000020 },
+ { 0x21000058, 0x24000020 },
+ { 0x21000059, 0x24000020 },
+ { 0x2100005a, 0x24000020 },
+ { 0x0900005b, 0x58000000 },
+ { 0x0900005c, 0x54000000 },
+ { 0x0900005d, 0x48000000 },
+ { 0x0900005e, 0x60000000 },
+ { 0x0900005f, 0x40000000 },
+ { 0x09000060, 0x60000000 },
+ { 0x21000061, 0x1400ffe0 },
+ { 0x21000062, 0x1400ffe0 },
+ { 0x21000063, 0x1400ffe0 },
+ { 0x21000064, 0x1400ffe0 },
+ { 0x21000065, 0x1400ffe0 },
+ { 0x21000066, 0x1400ffe0 },
+ { 0x21000067, 0x1400ffe0 },
+ { 0x21000068, 0x1400ffe0 },
+ { 0x21000069, 0x1400ffe0 },
+ { 0x2100006a, 0x1400ffe0 },
+ { 0x2100006b, 0x1400ffe0 },
+ { 0x2100006c, 0x1400ffe0 },
+ { 0x2100006d, 0x1400ffe0 },
+ { 0x2100006e, 0x1400ffe0 },
+ { 0x2100006f, 0x1400ffe0 },
+ { 0x21000070, 0x1400ffe0 },
+ { 0x21000071, 0x1400ffe0 },
+ { 0x21000072, 0x1400ffe0 },
+ { 0x21000073, 0x1400ffe0 },
+ { 0x21000074, 0x1400ffe0 },
+ { 0x21000075, 0x1400ffe0 },
+ { 0x21000076, 0x1400ffe0 },
+ { 0x21000077, 0x1400ffe0 },
+ { 0x21000078, 0x1400ffe0 },
+ { 0x21000079, 0x1400ffe0 },
+ { 0x2100007a, 0x1400ffe0 },
+ { 0x0900007b, 0x58000000 },
+ { 0x0900007c, 0x64000000 },
+ { 0x0900007d, 0x48000000 },
+ { 0x0900007e, 0x64000000 },
+ { 0x0980007f, 0x00000020 },
+ { 0x090000a0, 0x74000000 },
+ { 0x090000a1, 0x54000000 },
+ { 0x098000a2, 0x5c000003 },
+ { 0x098000a6, 0x68000001 },
+ { 0x090000a8, 0x60000000 },
+ { 0x090000a9, 0x68000000 },
+ { 0x210000aa, 0x14000000 },
+ { 0x090000ab, 0x50000000 },
+ { 0x090000ac, 0x64000000 },
+ { 0x090000ad, 0x04000000 },
+ { 0x090000ae, 0x68000000 },
+ { 0x090000af, 0x60000000 },
+ { 0x090000b0, 0x68000000 },
+ { 0x090000b1, 0x64000000 },
+ { 0x098000b2, 0x3c000001 },
+ { 0x090000b4, 0x60000000 },
+ { 0x090000b5, 0x140002e7 },
+ { 0x090000b6, 0x68000000 },
+ { 0x090000b7, 0x54000000 },
+ { 0x090000b8, 0x60000000 },
+ { 0x090000b9, 0x3c000000 },
+ { 0x210000ba, 0x14000000 },
+ { 0x090000bb, 0x4c000000 },
+ { 0x098000bc, 0x3c000002 },
+ { 0x090000bf, 0x54000000 },
+ { 0x210000c0, 0x24000020 },
+ { 0x210000c1, 0x24000020 },
+ { 0x210000c2, 0x24000020 },
+ { 0x210000c3, 0x24000020 },
+ { 0x210000c4, 0x24000020 },
+ { 0x210000c5, 0x24000020 },
+ { 0x210000c6, 0x24000020 },
+ { 0x210000c7, 0x24000020 },
+ { 0x210000c8, 0x24000020 },
+ { 0x210000c9, 0x24000020 },
+ { 0x210000ca, 0x24000020 },
+ { 0x210000cb, 0x24000020 },
+ { 0x210000cc, 0x24000020 },
+ { 0x210000cd, 0x24000020 },
+ { 0x210000ce, 0x24000020 },
+ { 0x210000cf, 0x24000020 },
+ { 0x210000d0, 0x24000020 },
+ { 0x210000d1, 0x24000020 },
+ { 0x210000d2, 0x24000020 },
+ { 0x210000d3, 0x24000020 },
+ { 0x210000d4, 0x24000020 },
+ { 0x210000d5, 0x24000020 },
+ { 0x210000d6, 0x24000020 },
+ { 0x090000d7, 0x64000000 },
+ { 0x210000d8, 0x24000020 },
+ { 0x210000d9, 0x24000020 },
+ { 0x210000da, 0x24000020 },
+ { 0x210000db, 0x24000020 },
+ { 0x210000dc, 0x24000020 },
+ { 0x210000dd, 0x24000020 },
+ { 0x210000de, 0x24000020 },
+ { 0x210000df, 0x14000000 },
+ { 0x210000e0, 0x1400ffe0 },
+ { 0x210000e1, 0x1400ffe0 },
+ { 0x210000e2, 0x1400ffe0 },
+ { 0x210000e3, 0x1400ffe0 },
+ { 0x210000e4, 0x1400ffe0 },
+ { 0x210000e5, 0x1400ffe0 },
+ { 0x210000e6, 0x1400ffe0 },
+ { 0x210000e7, 0x1400ffe0 },
+ { 0x210000e8, 0x1400ffe0 },
+ { 0x210000e9, 0x1400ffe0 },
+ { 0x210000ea, 0x1400ffe0 },
+ { 0x210000eb, 0x1400ffe0 },
+ { 0x210000ec, 0x1400ffe0 },
+ { 0x210000ed, 0x1400ffe0 },
+ { 0x210000ee, 0x1400ffe0 },
+ { 0x210000ef, 0x1400ffe0 },
+ { 0x210000f0, 0x1400ffe0 },
+ { 0x210000f1, 0x1400ffe0 },
+ { 0x210000f2, 0x1400ffe0 },
+ { 0x210000f3, 0x1400ffe0 },
+ { 0x210000f4, 0x1400ffe0 },
+ { 0x210000f5, 0x1400ffe0 },
+ { 0x210000f6, 0x1400ffe0 },
+ { 0x090000f7, 0x64000000 },
+ { 0x210000f8, 0x1400ffe0 },
+ { 0x210000f9, 0x1400ffe0 },
+ { 0x210000fa, 0x1400ffe0 },
+ { 0x210000fb, 0x1400ffe0 },
+ { 0x210000fc, 0x1400ffe0 },
+ { 0x210000fd, 0x1400ffe0 },
+ { 0x210000fe, 0x1400ffe0 },
+ { 0x210000ff, 0x14000079 },
+ { 0x21000100, 0x24000001 },
+ { 0x21000101, 0x1400ffff },
+ { 0x21000102, 0x24000001 },
+ { 0x21000103, 0x1400ffff },
+ { 0x21000104, 0x24000001 },
+ { 0x21000105, 0x1400ffff },
+ { 0x21000106, 0x24000001 },
+ { 0x21000107, 0x1400ffff },
+ { 0x21000108, 0x24000001 },
+ { 0x21000109, 0x1400ffff },
+ { 0x2100010a, 0x24000001 },
+ { 0x2100010b, 0x1400ffff },
+ { 0x2100010c, 0x24000001 },
+ { 0x2100010d, 0x1400ffff },
+ { 0x2100010e, 0x24000001 },
+ { 0x2100010f, 0x1400ffff },
+ { 0x21000110, 0x24000001 },
+ { 0x21000111, 0x1400ffff },
+ { 0x21000112, 0x24000001 },
+ { 0x21000113, 0x1400ffff },
+ { 0x21000114, 0x24000001 },
+ { 0x21000115, 0x1400ffff },
+ { 0x21000116, 0x24000001 },
+ { 0x21000117, 0x1400ffff },
+ { 0x21000118, 0x24000001 },
+ { 0x21000119, 0x1400ffff },
+ { 0x2100011a, 0x24000001 },
+ { 0x2100011b, 0x1400ffff },
+ { 0x2100011c, 0x24000001 },
+ { 0x2100011d, 0x1400ffff },
+ { 0x2100011e, 0x24000001 },
+ { 0x2100011f, 0x1400ffff },
+ { 0x21000120, 0x24000001 },
+ { 0x21000121, 0x1400ffff },
+ { 0x21000122, 0x24000001 },
+ { 0x21000123, 0x1400ffff },
+ { 0x21000124, 0x24000001 },
+ { 0x21000125, 0x1400ffff },
+ { 0x21000126, 0x24000001 },
+ { 0x21000127, 0x1400ffff },
+ { 0x21000128, 0x24000001 },
+ { 0x21000129, 0x1400ffff },
+ { 0x2100012a, 0x24000001 },
+ { 0x2100012b, 0x1400ffff },
+ { 0x2100012c, 0x24000001 },
+ { 0x2100012d, 0x1400ffff },
+ { 0x2100012e, 0x24000001 },
+ { 0x2100012f, 0x1400ffff },
+ { 0x21000130, 0x2400ff39 },
+ { 0x21000131, 0x1400ff18 },
+ { 0x21000132, 0x24000001 },
+ { 0x21000133, 0x1400ffff },
+ { 0x21000134, 0x24000001 },
+ { 0x21000135, 0x1400ffff },
+ { 0x21000136, 0x24000001 },
+ { 0x21000137, 0x1400ffff },
+ { 0x21000138, 0x14000000 },
+ { 0x21000139, 0x24000001 },
+ { 0x2100013a, 0x1400ffff },
+ { 0x2100013b, 0x24000001 },
+ { 0x2100013c, 0x1400ffff },
+ { 0x2100013d, 0x24000001 },
+ { 0x2100013e, 0x1400ffff },
+ { 0x2100013f, 0x24000001 },
+ { 0x21000140, 0x1400ffff },
+ { 0x21000141, 0x24000001 },
+ { 0x21000142, 0x1400ffff },
+ { 0x21000143, 0x24000001 },
+ { 0x21000144, 0x1400ffff },
+ { 0x21000145, 0x24000001 },
+ { 0x21000146, 0x1400ffff },
+ { 0x21000147, 0x24000001 },
+ { 0x21000148, 0x1400ffff },
+ { 0x21000149, 0x14000000 },
+ { 0x2100014a, 0x24000001 },
+ { 0x2100014b, 0x1400ffff },
+ { 0x2100014c, 0x24000001 },
+ { 0x2100014d, 0x1400ffff },
+ { 0x2100014e, 0x24000001 },
+ { 0x2100014f, 0x1400ffff },
+ { 0x21000150, 0x24000001 },
+ { 0x21000151, 0x1400ffff },
+ { 0x21000152, 0x24000001 },
+ { 0x21000153, 0x1400ffff },
+ { 0x21000154, 0x24000001 },
+ { 0x21000155, 0x1400ffff },
+ { 0x21000156, 0x24000001 },
+ { 0x21000157, 0x1400ffff },
+ { 0x21000158, 0x24000001 },
+ { 0x21000159, 0x1400ffff },
+ { 0x2100015a, 0x24000001 },
+ { 0x2100015b, 0x1400ffff },
+ { 0x2100015c, 0x24000001 },
+ { 0x2100015d, 0x1400ffff },
+ { 0x2100015e, 0x24000001 },
+ { 0x2100015f, 0x1400ffff },
+ { 0x21000160, 0x24000001 },
+ { 0x21000161, 0x1400ffff },
+ { 0x21000162, 0x24000001 },
+ { 0x21000163, 0x1400ffff },
+ { 0x21000164, 0x24000001 },
+ { 0x21000165, 0x1400ffff },
+ { 0x21000166, 0x24000001 },
+ { 0x21000167, 0x1400ffff },
+ { 0x21000168, 0x24000001 },
+ { 0x21000169, 0x1400ffff },
+ { 0x2100016a, 0x24000001 },
+ { 0x2100016b, 0x1400ffff },
+ { 0x2100016c, 0x24000001 },
+ { 0x2100016d, 0x1400ffff },
+ { 0x2100016e, 0x24000001 },
+ { 0x2100016f, 0x1400ffff },
+ { 0x21000170, 0x24000001 },
+ { 0x21000171, 0x1400ffff },
+ { 0x21000172, 0x24000001 },
+ { 0x21000173, 0x1400ffff },
+ { 0x21000174, 0x24000001 },
+ { 0x21000175, 0x1400ffff },
+ { 0x21000176, 0x24000001 },
+ { 0x21000177, 0x1400ffff },
+ { 0x21000178, 0x2400ff87 },
+ { 0x21000179, 0x24000001 },
+ { 0x2100017a, 0x1400ffff },
+ { 0x2100017b, 0x24000001 },
+ { 0x2100017c, 0x1400ffff },
+ { 0x2100017d, 0x24000001 },
+ { 0x2100017e, 0x1400ffff },
+ { 0x2100017f, 0x1400fed4 },
+ { 0x21000180, 0x14000000 },
+ { 0x21000181, 0x240000d2 },
+ { 0x21000182, 0x24000001 },
+ { 0x21000183, 0x1400ffff },
+ { 0x21000184, 0x24000001 },
+ { 0x21000185, 0x1400ffff },
+ { 0x21000186, 0x240000ce },
+ { 0x21000187, 0x24000001 },
+ { 0x21000188, 0x1400ffff },
+ { 0x21000189, 0x240000cd },
+ { 0x2100018a, 0x240000cd },
+ { 0x2100018b, 0x24000001 },
+ { 0x2100018c, 0x1400ffff },
+ { 0x2100018d, 0x14000000 },
+ { 0x2100018e, 0x2400004f },
+ { 0x2100018f, 0x240000ca },
+ { 0x21000190, 0x240000cb },
+ { 0x21000191, 0x24000001 },
+ { 0x21000192, 0x1400ffff },
+ { 0x21000193, 0x240000cd },
+ { 0x21000194, 0x240000cf },
+ { 0x21000195, 0x14000061 },
+ { 0x21000196, 0x240000d3 },
+ { 0x21000197, 0x240000d1 },
+ { 0x21000198, 0x24000001 },
+ { 0x21000199, 0x1400ffff },
+ { 0x2100019a, 0x140000a3 },
+ { 0x2100019b, 0x14000000 },
+ { 0x2100019c, 0x240000d3 },
+ { 0x2100019d, 0x240000d5 },
+ { 0x2100019e, 0x14000082 },
+ { 0x2100019f, 0x240000d6 },
+ { 0x210001a0, 0x24000001 },
+ { 0x210001a1, 0x1400ffff },
+ { 0x210001a2, 0x24000001 },
+ { 0x210001a3, 0x1400ffff },
+ { 0x210001a4, 0x24000001 },
+ { 0x210001a5, 0x1400ffff },
+ { 0x210001a6, 0x240000da },
+ { 0x210001a7, 0x24000001 },
+ { 0x210001a8, 0x1400ffff },
+ { 0x210001a9, 0x240000da },
+ { 0x218001aa, 0x14000001 },
+ { 0x210001ac, 0x24000001 },
+ { 0x210001ad, 0x1400ffff },
+ { 0x210001ae, 0x240000da },
+ { 0x210001af, 0x24000001 },
+ { 0x210001b0, 0x1400ffff },
+ { 0x210001b1, 0x240000d9 },
+ { 0x210001b2, 0x240000d9 },
+ { 0x210001b3, 0x24000001 },
+ { 0x210001b4, 0x1400ffff },
+ { 0x210001b5, 0x24000001 },
+ { 0x210001b6, 0x1400ffff },
+ { 0x210001b7, 0x240000db },
+ { 0x210001b8, 0x24000001 },
+ { 0x210001b9, 0x1400ffff },
+ { 0x210001ba, 0x14000000 },
+ { 0x210001bb, 0x1c000000 },
+ { 0x210001bc, 0x24000001 },
+ { 0x210001bd, 0x1400ffff },
+ { 0x210001be, 0x14000000 },
+ { 0x210001bf, 0x14000038 },
+ { 0x218001c0, 0x1c000003 },
+ { 0x210001c4, 0x24000002 },
+ { 0x210001c5, 0x2000ffff },
+ { 0x210001c6, 0x1400fffe },
+ { 0x210001c7, 0x24000002 },
+ { 0x210001c8, 0x2000ffff },
+ { 0x210001c9, 0x1400fffe },
+ { 0x210001ca, 0x24000002 },
+ { 0x210001cb, 0x2000ffff },
+ { 0x210001cc, 0x1400fffe },
+ { 0x210001cd, 0x24000001 },
+ { 0x210001ce, 0x1400ffff },
+ { 0x210001cf, 0x24000001 },
+ { 0x210001d0, 0x1400ffff },
+ { 0x210001d1, 0x24000001 },
+ { 0x210001d2, 0x1400ffff },
+ { 0x210001d3, 0x24000001 },
+ { 0x210001d4, 0x1400ffff },
+ { 0x210001d5, 0x24000001 },
+ { 0x210001d6, 0x1400ffff },
+ { 0x210001d7, 0x24000001 },
+ { 0x210001d8, 0x1400ffff },
+ { 0x210001d9, 0x24000001 },
+ { 0x210001da, 0x1400ffff },
+ { 0x210001db, 0x24000001 },
+ { 0x210001dc, 0x1400ffff },
+ { 0x210001dd, 0x1400ffb1 },
+ { 0x210001de, 0x24000001 },
+ { 0x210001df, 0x1400ffff },
+ { 0x210001e0, 0x24000001 },
+ { 0x210001e1, 0x1400ffff },
+ { 0x210001e2, 0x24000001 },
+ { 0x210001e3, 0x1400ffff },
+ { 0x210001e4, 0x24000001 },
+ { 0x210001e5, 0x1400ffff },
+ { 0x210001e6, 0x24000001 },
+ { 0x210001e7, 0x1400ffff },
+ { 0x210001e8, 0x24000001 },
+ { 0x210001e9, 0x1400ffff },
+ { 0x210001ea, 0x24000001 },
+ { 0x210001eb, 0x1400ffff },
+ { 0x210001ec, 0x24000001 },
+ { 0x210001ed, 0x1400ffff },
+ { 0x210001ee, 0x24000001 },
+ { 0x210001ef, 0x1400ffff },
+ { 0x210001f0, 0x14000000 },
+ { 0x210001f1, 0x24000002 },
+ { 0x210001f2, 0x2000ffff },
+ { 0x210001f3, 0x1400fffe },
+ { 0x210001f4, 0x24000001 },
+ { 0x210001f5, 0x1400ffff },
+ { 0x210001f6, 0x2400ff9f },
+ { 0x210001f7, 0x2400ffc8 },
+ { 0x210001f8, 0x24000001 },
+ { 0x210001f9, 0x1400ffff },
+ { 0x210001fa, 0x24000001 },
+ { 0x210001fb, 0x1400ffff },
+ { 0x210001fc, 0x24000001 },
+ { 0x210001fd, 0x1400ffff },
+ { 0x210001fe, 0x24000001 },
+ { 0x210001ff, 0x1400ffff },
+ { 0x21000200, 0x24000001 },
+ { 0x21000201, 0x1400ffff },
+ { 0x21000202, 0x24000001 },
+ { 0x21000203, 0x1400ffff },
+ { 0x21000204, 0x24000001 },
+ { 0x21000205, 0x1400ffff },
+ { 0x21000206, 0x24000001 },
+ { 0x21000207, 0x1400ffff },
+ { 0x21000208, 0x24000001 },
+ { 0x21000209, 0x1400ffff },
+ { 0x2100020a, 0x24000001 },
+ { 0x2100020b, 0x1400ffff },
+ { 0x2100020c, 0x24000001 },
+ { 0x2100020d, 0x1400ffff },
+ { 0x2100020e, 0x24000001 },
+ { 0x2100020f, 0x1400ffff },
+ { 0x21000210, 0x24000001 },
+ { 0x21000211, 0x1400ffff },
+ { 0x21000212, 0x24000001 },
+ { 0x21000213, 0x1400ffff },
+ { 0x21000214, 0x24000001 },
+ { 0x21000215, 0x1400ffff },
+ { 0x21000216, 0x24000001 },
+ { 0x21000217, 0x1400ffff },
+ { 0x21000218, 0x24000001 },
+ { 0x21000219, 0x1400ffff },
+ { 0x2100021a, 0x24000001 },
+ { 0x2100021b, 0x1400ffff },
+ { 0x2100021c, 0x24000001 },
+ { 0x2100021d, 0x1400ffff },
+ { 0x2100021e, 0x24000001 },
+ { 0x2100021f, 0x1400ffff },
+ { 0x21000220, 0x2400ff7e },
+ { 0x21000221, 0x14000000 },
+ { 0x21000222, 0x24000001 },
+ { 0x21000223, 0x1400ffff },
+ { 0x21000224, 0x24000001 },
+ { 0x21000225, 0x1400ffff },
+ { 0x21000226, 0x24000001 },
+ { 0x21000227, 0x1400ffff },
+ { 0x21000228, 0x24000001 },
+ { 0x21000229, 0x1400ffff },
+ { 0x2100022a, 0x24000001 },
+ { 0x2100022b, 0x1400ffff },
+ { 0x2100022c, 0x24000001 },
+ { 0x2100022d, 0x1400ffff },
+ { 0x2100022e, 0x24000001 },
+ { 0x2100022f, 0x1400ffff },
+ { 0x21000230, 0x24000001 },
+ { 0x21000231, 0x1400ffff },
+ { 0x21000232, 0x24000001 },
+ { 0x21000233, 0x1400ffff },
+ { 0x21800234, 0x14000005 },
+ { 0x2100023a, 0x24000000 },
+ { 0x2100023b, 0x24000001 },
+ { 0x2100023c, 0x1400ffff },
+ { 0x2100023d, 0x2400ff5d },
+ { 0x2100023e, 0x24000000 },
+ { 0x2180023f, 0x14000001 },
+ { 0x21000241, 0x24000053 },
+ { 0x21800250, 0x14000002 },
+ { 0x21000253, 0x1400ff2e },
+ { 0x21000254, 0x1400ff32 },
+ { 0x21000255, 0x14000000 },
+ { 0x21000256, 0x1400ff33 },
+ { 0x21000257, 0x1400ff33 },
+ { 0x21000258, 0x14000000 },
+ { 0x21000259, 0x1400ff36 },
+ { 0x2100025a, 0x14000000 },
+ { 0x2100025b, 0x1400ff35 },
+ { 0x2180025c, 0x14000003 },
+ { 0x21000260, 0x1400ff33 },
+ { 0x21800261, 0x14000001 },
+ { 0x21000263, 0x1400ff31 },
+ { 0x21800264, 0x14000003 },
+ { 0x21000268, 0x1400ff2f },
+ { 0x21000269, 0x1400ff2d },
+ { 0x2180026a, 0x14000004 },
+ { 0x2100026f, 0x1400ff2d },
+ { 0x21800270, 0x14000001 },
+ { 0x21000272, 0x1400ff2b },
+ { 0x21800273, 0x14000001 },
+ { 0x21000275, 0x1400ff2a },
+ { 0x21800276, 0x14000009 },
+ { 0x21000280, 0x1400ff26 },
+ { 0x21800281, 0x14000001 },
+ { 0x21000283, 0x1400ff26 },
+ { 0x21800284, 0x14000003 },
+ { 0x21000288, 0x1400ff26 },
+ { 0x21000289, 0x14000000 },
+ { 0x2100028a, 0x1400ff27 },
+ { 0x2100028b, 0x1400ff27 },
+ { 0x2180028c, 0x14000005 },
+ { 0x21000292, 0x1400ff25 },
+ { 0x21000293, 0x14000000 },
+ { 0x21000294, 0x1400ffad },
+ { 0x21800295, 0x1400001a },
+ { 0x218002b0, 0x18000011 },
+ { 0x098002c2, 0x60000003 },
+ { 0x098002c6, 0x1800000b },
+ { 0x098002d2, 0x6000000d },
+ { 0x218002e0, 0x18000004 },
+ { 0x098002e5, 0x60000008 },
+ { 0x090002ee, 0x18000000 },
+ { 0x098002ef, 0x60000010 },
+ { 0x1b800300, 0x30000044 },
+ { 0x1b000345, 0x30000054 },
+ { 0x1b800346, 0x30000029 },
+ { 0x13800374, 0x60000001 },
+ { 0x1300037a, 0x18000000 },
+ { 0x0900037e, 0x54000000 },
+ { 0x13800384, 0x60000001 },
+ { 0x13000386, 0x24000026 },
+ { 0x09000387, 0x54000000 },
+ { 0x13000388, 0x24000025 },
+ { 0x13000389, 0x24000025 },
+ { 0x1300038a, 0x24000025 },
+ { 0x1300038c, 0x24000040 },
+ { 0x1300038e, 0x2400003f },
+ { 0x1300038f, 0x2400003f },
+ { 0x13000390, 0x14000000 },
+ { 0x13000391, 0x24000020 },
+ { 0x13000392, 0x24000020 },
+ { 0x13000393, 0x24000020 },
+ { 0x13000394, 0x24000020 },
+ { 0x13000395, 0x24000020 },
+ { 0x13000396, 0x24000020 },
+ { 0x13000397, 0x24000020 },
+ { 0x13000398, 0x24000020 },
+ { 0x13000399, 0x24000020 },
+ { 0x1300039a, 0x24000020 },
+ { 0x1300039b, 0x24000020 },
+ { 0x1300039c, 0x24000020 },
+ { 0x1300039d, 0x24000020 },
+ { 0x1300039e, 0x24000020 },
+ { 0x1300039f, 0x24000020 },
+ { 0x130003a0, 0x24000020 },
+ { 0x130003a1, 0x24000020 },
+ { 0x130003a3, 0x24000020 },
+ { 0x130003a4, 0x24000020 },
+ { 0x130003a5, 0x24000020 },
+ { 0x130003a6, 0x24000020 },
+ { 0x130003a7, 0x24000020 },
+ { 0x130003a8, 0x24000020 },
+ { 0x130003a9, 0x24000020 },
+ { 0x130003aa, 0x24000020 },
+ { 0x130003ab, 0x24000020 },
+ { 0x130003ac, 0x1400ffda },
+ { 0x130003ad, 0x1400ffdb },
+ { 0x130003ae, 0x1400ffdb },
+ { 0x130003af, 0x1400ffdb },
+ { 0x130003b0, 0x14000000 },
+ { 0x130003b1, 0x1400ffe0 },
+ { 0x130003b2, 0x1400ffe0 },
+ { 0x130003b3, 0x1400ffe0 },
+ { 0x130003b4, 0x1400ffe0 },
+ { 0x130003b5, 0x1400ffe0 },
+ { 0x130003b6, 0x1400ffe0 },
+ { 0x130003b7, 0x1400ffe0 },
+ { 0x130003b8, 0x1400ffe0 },
+ { 0x130003b9, 0x1400ffe0 },
+ { 0x130003ba, 0x1400ffe0 },
+ { 0x130003bb, 0x1400ffe0 },
+ { 0x130003bc, 0x1400ffe0 },
+ { 0x130003bd, 0x1400ffe0 },
+ { 0x130003be, 0x1400ffe0 },
+ { 0x130003bf, 0x1400ffe0 },
+ { 0x130003c0, 0x1400ffe0 },
+ { 0x130003c1, 0x1400ffe0 },
+ { 0x130003c2, 0x1400ffe1 },
+ { 0x130003c3, 0x1400ffe0 },
+ { 0x130003c4, 0x1400ffe0 },
+ { 0x130003c5, 0x1400ffe0 },
+ { 0x130003c6, 0x1400ffe0 },
+ { 0x130003c7, 0x1400ffe0 },
+ { 0x130003c8, 0x1400ffe0 },
+ { 0x130003c9, 0x1400ffe0 },
+ { 0x130003ca, 0x1400ffe0 },
+ { 0x130003cb, 0x1400ffe0 },
+ { 0x130003cc, 0x1400ffc0 },
+ { 0x130003cd, 0x1400ffc1 },
+ { 0x130003ce, 0x1400ffc1 },
+ { 0x130003d0, 0x1400ffc2 },
+ { 0x130003d1, 0x1400ffc7 },
+ { 0x138003d2, 0x24000002 },
+ { 0x130003d5, 0x1400ffd1 },
+ { 0x130003d6, 0x1400ffca },
+ { 0x130003d7, 0x14000000 },
+ { 0x130003d8, 0x24000001 },
+ { 0x130003d9, 0x1400ffff },
+ { 0x130003da, 0x24000001 },
+ { 0x130003db, 0x1400ffff },
+ { 0x130003dc, 0x24000001 },
+ { 0x130003dd, 0x1400ffff },
+ { 0x130003de, 0x24000001 },
+ { 0x130003df, 0x1400ffff },
+ { 0x130003e0, 0x24000001 },
+ { 0x130003e1, 0x1400ffff },
+ { 0x0a0003e2, 0x24000001 },
+ { 0x0a0003e3, 0x1400ffff },
+ { 0x0a0003e4, 0x24000001 },
+ { 0x0a0003e5, 0x1400ffff },
+ { 0x0a0003e6, 0x24000001 },
+ { 0x0a0003e7, 0x1400ffff },
+ { 0x0a0003e8, 0x24000001 },
+ { 0x0a0003e9, 0x1400ffff },
+ { 0x0a0003ea, 0x24000001 },
+ { 0x0a0003eb, 0x1400ffff },
+ { 0x0a0003ec, 0x24000001 },
+ { 0x0a0003ed, 0x1400ffff },
+ { 0x0a0003ee, 0x24000001 },
+ { 0x0a0003ef, 0x1400ffff },
+ { 0x130003f0, 0x1400ffaa },
+ { 0x130003f1, 0x1400ffb0 },
+ { 0x130003f2, 0x14000007 },
+ { 0x130003f3, 0x14000000 },
+ { 0x130003f4, 0x2400ffc4 },
+ { 0x130003f5, 0x1400ffa0 },
+ { 0x130003f6, 0x64000000 },
+ { 0x130003f7, 0x24000001 },
+ { 0x130003f8, 0x1400ffff },
+ { 0x130003f9, 0x2400fff9 },
+ { 0x130003fa, 0x24000001 },
+ { 0x130003fb, 0x1400ffff },
+ { 0x130003fc, 0x14000000 },
+ { 0x138003fd, 0x24000002 },
+ { 0x0c000400, 0x24000050 },
+ { 0x0c000401, 0x24000050 },
+ { 0x0c000402, 0x24000050 },
+ { 0x0c000403, 0x24000050 },
+ { 0x0c000404, 0x24000050 },
+ { 0x0c000405, 0x24000050 },
+ { 0x0c000406, 0x24000050 },
+ { 0x0c000407, 0x24000050 },
+ { 0x0c000408, 0x24000050 },
+ { 0x0c000409, 0x24000050 },
+ { 0x0c00040a, 0x24000050 },
+ { 0x0c00040b, 0x24000050 },
+ { 0x0c00040c, 0x24000050 },
+ { 0x0c00040d, 0x24000050 },
+ { 0x0c00040e, 0x24000050 },
+ { 0x0c00040f, 0x24000050 },
+ { 0x0c000410, 0x24000020 },
+ { 0x0c000411, 0x24000020 },
+ { 0x0c000412, 0x24000020 },
+ { 0x0c000413, 0x24000020 },
+ { 0x0c000414, 0x24000020 },
+ { 0x0c000415, 0x24000020 },
+ { 0x0c000416, 0x24000020 },
+ { 0x0c000417, 0x24000020 },
+ { 0x0c000418, 0x24000020 },
+ { 0x0c000419, 0x24000020 },
+ { 0x0c00041a, 0x24000020 },
+ { 0x0c00041b, 0x24000020 },
+ { 0x0c00041c, 0x24000020 },
+ { 0x0c00041d, 0x24000020 },
+ { 0x0c00041e, 0x24000020 },
+ { 0x0c00041f, 0x24000020 },
+ { 0x0c000420, 0x24000020 },
+ { 0x0c000421, 0x24000020 },
+ { 0x0c000422, 0x24000020 },
+ { 0x0c000423, 0x24000020 },
+ { 0x0c000424, 0x24000020 },
+ { 0x0c000425, 0x24000020 },
+ { 0x0c000426, 0x24000020 },
+ { 0x0c000427, 0x24000020 },
+ { 0x0c000428, 0x24000020 },
+ { 0x0c000429, 0x24000020 },
+ { 0x0c00042a, 0x24000020 },
+ { 0x0c00042b, 0x24000020 },
+ { 0x0c00042c, 0x24000020 },
+ { 0x0c00042d, 0x24000020 },
+ { 0x0c00042e, 0x24000020 },
+ { 0x0c00042f, 0x24000020 },
+ { 0x0c000430, 0x1400ffe0 },
+ { 0x0c000431, 0x1400ffe0 },
+ { 0x0c000432, 0x1400ffe0 },
+ { 0x0c000433, 0x1400ffe0 },
+ { 0x0c000434, 0x1400ffe0 },
+ { 0x0c000435, 0x1400ffe0 },
+ { 0x0c000436, 0x1400ffe0 },
+ { 0x0c000437, 0x1400ffe0 },
+ { 0x0c000438, 0x1400ffe0 },
+ { 0x0c000439, 0x1400ffe0 },
+ { 0x0c00043a, 0x1400ffe0 },
+ { 0x0c00043b, 0x1400ffe0 },
+ { 0x0c00043c, 0x1400ffe0 },
+ { 0x0c00043d, 0x1400ffe0 },
+ { 0x0c00043e, 0x1400ffe0 },
+ { 0x0c00043f, 0x1400ffe0 },
+ { 0x0c000440, 0x1400ffe0 },
+ { 0x0c000441, 0x1400ffe0 },
+ { 0x0c000442, 0x1400ffe0 },
+ { 0x0c000443, 0x1400ffe0 },
+ { 0x0c000444, 0x1400ffe0 },
+ { 0x0c000445, 0x1400ffe0 },
+ { 0x0c000446, 0x1400ffe0 },
+ { 0x0c000447, 0x1400ffe0 },
+ { 0x0c000448, 0x1400ffe0 },
+ { 0x0c000449, 0x1400ffe0 },
+ { 0x0c00044a, 0x1400ffe0 },
+ { 0x0c00044b, 0x1400ffe0 },
+ { 0x0c00044c, 0x1400ffe0 },
+ { 0x0c00044d, 0x1400ffe0 },
+ { 0x0c00044e, 0x1400ffe0 },
+ { 0x0c00044f, 0x1400ffe0 },
+ { 0x0c000450, 0x1400ffb0 },
+ { 0x0c000451, 0x1400ffb0 },
+ { 0x0c000452, 0x1400ffb0 },
+ { 0x0c000453, 0x1400ffb0 },
+ { 0x0c000454, 0x1400ffb0 },
+ { 0x0c000455, 0x1400ffb0 },
+ { 0x0c000456, 0x1400ffb0 },
+ { 0x0c000457, 0x1400ffb0 },
+ { 0x0c000458, 0x1400ffb0 },
+ { 0x0c000459, 0x1400ffb0 },
+ { 0x0c00045a, 0x1400ffb0 },
+ { 0x0c00045b, 0x1400ffb0 },
+ { 0x0c00045c, 0x1400ffb0 },
+ { 0x0c00045d, 0x1400ffb0 },
+ { 0x0c00045e, 0x1400ffb0 },
+ { 0x0c00045f, 0x1400ffb0 },
+ { 0x0c000460, 0x24000001 },
+ { 0x0c000461, 0x1400ffff },
+ { 0x0c000462, 0x24000001 },
+ { 0x0c000463, 0x1400ffff },
+ { 0x0c000464, 0x24000001 },
+ { 0x0c000465, 0x1400ffff },
+ { 0x0c000466, 0x24000001 },
+ { 0x0c000467, 0x1400ffff },
+ { 0x0c000468, 0x24000001 },
+ { 0x0c000469, 0x1400ffff },
+ { 0x0c00046a, 0x24000001 },
+ { 0x0c00046b, 0x1400ffff },
+ { 0x0c00046c, 0x24000001 },
+ { 0x0c00046d, 0x1400ffff },
+ { 0x0c00046e, 0x24000001 },
+ { 0x0c00046f, 0x1400ffff },
+ { 0x0c000470, 0x24000001 },
+ { 0x0c000471, 0x1400ffff },
+ { 0x0c000472, 0x24000001 },
+ { 0x0c000473, 0x1400ffff },
+ { 0x0c000474, 0x24000001 },
+ { 0x0c000475, 0x1400ffff },
+ { 0x0c000476, 0x24000001 },
+ { 0x0c000477, 0x1400ffff },
+ { 0x0c000478, 0x24000001 },
+ { 0x0c000479, 0x1400ffff },
+ { 0x0c00047a, 0x24000001 },
+ { 0x0c00047b, 0x1400ffff },
+ { 0x0c00047c, 0x24000001 },
+ { 0x0c00047d, 0x1400ffff },
+ { 0x0c00047e, 0x24000001 },
+ { 0x0c00047f, 0x1400ffff },
+ { 0x0c000480, 0x24000001 },
+ { 0x0c000481, 0x1400ffff },
+ { 0x0c000482, 0x68000000 },
+ { 0x0c800483, 0x30000003 },
+ { 0x0c800488, 0x2c000001 },
+ { 0x0c00048a, 0x24000001 },
+ { 0x0c00048b, 0x1400ffff },
+ { 0x0c00048c, 0x24000001 },
+ { 0x0c00048d, 0x1400ffff },
+ { 0x0c00048e, 0x24000001 },
+ { 0x0c00048f, 0x1400ffff },
+ { 0x0c000490, 0x24000001 },
+ { 0x0c000491, 0x1400ffff },
+ { 0x0c000492, 0x24000001 },
+ { 0x0c000493, 0x1400ffff },
+ { 0x0c000494, 0x24000001 },
+ { 0x0c000495, 0x1400ffff },
+ { 0x0c000496, 0x24000001 },
+ { 0x0c000497, 0x1400ffff },
+ { 0x0c000498, 0x24000001 },
+ { 0x0c000499, 0x1400ffff },
+ { 0x0c00049a, 0x24000001 },
+ { 0x0c00049b, 0x1400ffff },
+ { 0x0c00049c, 0x24000001 },
+ { 0x0c00049d, 0x1400ffff },
+ { 0x0c00049e, 0x24000001 },
+ { 0x0c00049f, 0x1400ffff },
+ { 0x0c0004a0, 0x24000001 },
+ { 0x0c0004a1, 0x1400ffff },
+ { 0x0c0004a2, 0x24000001 },
+ { 0x0c0004a3, 0x1400ffff },
+ { 0x0c0004a4, 0x24000001 },
+ { 0x0c0004a5, 0x1400ffff },
+ { 0x0c0004a6, 0x24000001 },
+ { 0x0c0004a7, 0x1400ffff },
+ { 0x0c0004a8, 0x24000001 },
+ { 0x0c0004a9, 0x1400ffff },
+ { 0x0c0004aa, 0x24000001 },
+ { 0x0c0004ab, 0x1400ffff },
+ { 0x0c0004ac, 0x24000001 },
+ { 0x0c0004ad, 0x1400ffff },
+ { 0x0c0004ae, 0x24000001 },
+ { 0x0c0004af, 0x1400ffff },
+ { 0x0c0004b0, 0x24000001 },
+ { 0x0c0004b1, 0x1400ffff },
+ { 0x0c0004b2, 0x24000001 },
+ { 0x0c0004b3, 0x1400ffff },
+ { 0x0c0004b4, 0x24000001 },
+ { 0x0c0004b5, 0x1400ffff },
+ { 0x0c0004b6, 0x24000001 },
+ { 0x0c0004b7, 0x1400ffff },
+ { 0x0c0004b8, 0x24000001 },
+ { 0x0c0004b9, 0x1400ffff },
+ { 0x0c0004ba, 0x24000001 },
+ { 0x0c0004bb, 0x1400ffff },
+ { 0x0c0004bc, 0x24000001 },
+ { 0x0c0004bd, 0x1400ffff },
+ { 0x0c0004be, 0x24000001 },
+ { 0x0c0004bf, 0x1400ffff },
+ { 0x0c0004c0, 0x24000000 },
+ { 0x0c0004c1, 0x24000001 },
+ { 0x0c0004c2, 0x1400ffff },
+ { 0x0c0004c3, 0x24000001 },
+ { 0x0c0004c4, 0x1400ffff },
+ { 0x0c0004c5, 0x24000001 },
+ { 0x0c0004c6, 0x1400ffff },
+ { 0x0c0004c7, 0x24000001 },
+ { 0x0c0004c8, 0x1400ffff },
+ { 0x0c0004c9, 0x24000001 },
+ { 0x0c0004ca, 0x1400ffff },
+ { 0x0c0004cb, 0x24000001 },
+ { 0x0c0004cc, 0x1400ffff },
+ { 0x0c0004cd, 0x24000001 },
+ { 0x0c0004ce, 0x1400ffff },
+ { 0x0c0004d0, 0x24000001 },
+ { 0x0c0004d1, 0x1400ffff },
+ { 0x0c0004d2, 0x24000001 },
+ { 0x0c0004d3, 0x1400ffff },
+ { 0x0c0004d4, 0x24000001 },
+ { 0x0c0004d5, 0x1400ffff },
+ { 0x0c0004d6, 0x24000001 },
+ { 0x0c0004d7, 0x1400ffff },
+ { 0x0c0004d8, 0x24000001 },
+ { 0x0c0004d9, 0x1400ffff },
+ { 0x0c0004da, 0x24000001 },
+ { 0x0c0004db, 0x1400ffff },
+ { 0x0c0004dc, 0x24000001 },
+ { 0x0c0004dd, 0x1400ffff },
+ { 0x0c0004de, 0x24000001 },
+ { 0x0c0004df, 0x1400ffff },
+ { 0x0c0004e0, 0x24000001 },
+ { 0x0c0004e1, 0x1400ffff },
+ { 0x0c0004e2, 0x24000001 },
+ { 0x0c0004e3, 0x1400ffff },
+ { 0x0c0004e4, 0x24000001 },
+ { 0x0c0004e5, 0x1400ffff },
+ { 0x0c0004e6, 0x24000001 },
+ { 0x0c0004e7, 0x1400ffff },
+ { 0x0c0004e8, 0x24000001 },
+ { 0x0c0004e9, 0x1400ffff },
+ { 0x0c0004ea, 0x24000001 },
+ { 0x0c0004eb, 0x1400ffff },
+ { 0x0c0004ec, 0x24000001 },
+ { 0x0c0004ed, 0x1400ffff },
+ { 0x0c0004ee, 0x24000001 },
+ { 0x0c0004ef, 0x1400ffff },
+ { 0x0c0004f0, 0x24000001 },
+ { 0x0c0004f1, 0x1400ffff },
+ { 0x0c0004f2, 0x24000001 },
+ { 0x0c0004f3, 0x1400ffff },
+ { 0x0c0004f4, 0x24000001 },
+ { 0x0c0004f5, 0x1400ffff },
+ { 0x0c0004f6, 0x24000001 },
+ { 0x0c0004f7, 0x1400ffff },
+ { 0x0c0004f8, 0x24000001 },
+ { 0x0c0004f9, 0x1400ffff },
+ { 0x0c000500, 0x24000001 },
+ { 0x0c000501, 0x1400ffff },
+ { 0x0c000502, 0x24000001 },
+ { 0x0c000503, 0x1400ffff },
+ { 0x0c000504, 0x24000001 },
+ { 0x0c000505, 0x1400ffff },
+ { 0x0c000506, 0x24000001 },
+ { 0x0c000507, 0x1400ffff },
+ { 0x0c000508, 0x24000001 },
+ { 0x0c000509, 0x1400ffff },
+ { 0x0c00050a, 0x24000001 },
+ { 0x0c00050b, 0x1400ffff },
+ { 0x0c00050c, 0x24000001 },
+ { 0x0c00050d, 0x1400ffff },
+ { 0x0c00050e, 0x24000001 },
+ { 0x0c00050f, 0x1400ffff },
+ { 0x01000531, 0x24000030 },
+ { 0x01000532, 0x24000030 },
+ { 0x01000533, 0x24000030 },
+ { 0x01000534, 0x24000030 },
+ { 0x01000535, 0x24000030 },
+ { 0x01000536, 0x24000030 },
+ { 0x01000537, 0x24000030 },
+ { 0x01000538, 0x24000030 },
+ { 0x01000539, 0x24000030 },
+ { 0x0100053a, 0x24000030 },
+ { 0x0100053b, 0x24000030 },
+ { 0x0100053c, 0x24000030 },
+ { 0x0100053d, 0x24000030 },
+ { 0x0100053e, 0x24000030 },
+ { 0x0100053f, 0x24000030 },
+ { 0x01000540, 0x24000030 },
+ { 0x01000541, 0x24000030 },
+ { 0x01000542, 0x24000030 },
+ { 0x01000543, 0x24000030 },
+ { 0x01000544, 0x24000030 },
+ { 0x01000545, 0x24000030 },
+ { 0x01000546, 0x24000030 },
+ { 0x01000547, 0x24000030 },
+ { 0x01000548, 0x24000030 },
+ { 0x01000549, 0x24000030 },
+ { 0x0100054a, 0x24000030 },
+ { 0x0100054b, 0x24000030 },
+ { 0x0100054c, 0x24000030 },
+ { 0x0100054d, 0x24000030 },
+ { 0x0100054e, 0x24000030 },
+ { 0x0100054f, 0x24000030 },
+ { 0x01000550, 0x24000030 },
+ { 0x01000551, 0x24000030 },
+ { 0x01000552, 0x24000030 },
+ { 0x01000553, 0x24000030 },
+ { 0x01000554, 0x24000030 },
+ { 0x01000555, 0x24000030 },
+ { 0x01000556, 0x24000030 },
+ { 0x01000559, 0x18000000 },
+ { 0x0180055a, 0x54000005 },
+ { 0x01000561, 0x1400ffd0 },
+ { 0x01000562, 0x1400ffd0 },
+ { 0x01000563, 0x1400ffd0 },
+ { 0x01000564, 0x1400ffd0 },
+ { 0x01000565, 0x1400ffd0 },
+ { 0x01000566, 0x1400ffd0 },
+ { 0x01000567, 0x1400ffd0 },
+ { 0x01000568, 0x1400ffd0 },
+ { 0x01000569, 0x1400ffd0 },
+ { 0x0100056a, 0x1400ffd0 },
+ { 0x0100056b, 0x1400ffd0 },
+ { 0x0100056c, 0x1400ffd0 },
+ { 0x0100056d, 0x1400ffd0 },
+ { 0x0100056e, 0x1400ffd0 },
+ { 0x0100056f, 0x1400ffd0 },
+ { 0x01000570, 0x1400ffd0 },
+ { 0x01000571, 0x1400ffd0 },
+ { 0x01000572, 0x1400ffd0 },
+ { 0x01000573, 0x1400ffd0 },
+ { 0x01000574, 0x1400ffd0 },
+ { 0x01000575, 0x1400ffd0 },
+ { 0x01000576, 0x1400ffd0 },
+ { 0x01000577, 0x1400ffd0 },
+ { 0x01000578, 0x1400ffd0 },
+ { 0x01000579, 0x1400ffd0 },
+ { 0x0100057a, 0x1400ffd0 },
+ { 0x0100057b, 0x1400ffd0 },
+ { 0x0100057c, 0x1400ffd0 },
+ { 0x0100057d, 0x1400ffd0 },
+ { 0x0100057e, 0x1400ffd0 },
+ { 0x0100057f, 0x1400ffd0 },
+ { 0x01000580, 0x1400ffd0 },
+ { 0x01000581, 0x1400ffd0 },
+ { 0x01000582, 0x1400ffd0 },
+ { 0x01000583, 0x1400ffd0 },
+ { 0x01000584, 0x1400ffd0 },
+ { 0x01000585, 0x1400ffd0 },
+ { 0x01000586, 0x1400ffd0 },
+ { 0x01000587, 0x14000000 },
+ { 0x09000589, 0x54000000 },
+ { 0x0100058a, 0x44000000 },
+ { 0x19800591, 0x30000028 },
+ { 0x198005bb, 0x30000002 },
+ { 0x190005be, 0x54000000 },
+ { 0x190005bf, 0x30000000 },
+ { 0x190005c0, 0x54000000 },
+ { 0x198005c1, 0x30000001 },
+ { 0x190005c3, 0x54000000 },
+ { 0x198005c4, 0x30000001 },
+ { 0x190005c6, 0x54000000 },
+ { 0x190005c7, 0x30000000 },
+ { 0x198005d0, 0x1c00001a },
+ { 0x198005f0, 0x1c000002 },
+ { 0x198005f3, 0x54000001 },
+ { 0x09800600, 0x04000003 },
+ { 0x0000060b, 0x5c000000 },
+ { 0x0980060c, 0x54000001 },
+ { 0x0080060e, 0x68000001 },
+ { 0x00800610, 0x30000005 },
+ { 0x0900061b, 0x54000000 },
+ { 0x0080061e, 0x54000001 },
+ { 0x00800621, 0x1c000019 },
+ { 0x09000640, 0x18000000 },
+ { 0x00800641, 0x1c000009 },
+ { 0x1b80064b, 0x30000013 },
+ { 0x09800660, 0x34000009 },
+ { 0x0080066a, 0x54000003 },
+ { 0x0080066e, 0x1c000001 },
+ { 0x1b000670, 0x30000000 },
+ { 0x00800671, 0x1c000062 },
+ { 0x000006d4, 0x54000000 },
+ { 0x000006d5, 0x1c000000 },
+ { 0x008006d6, 0x30000006 },
+ { 0x090006dd, 0x04000000 },
+ { 0x000006de, 0x2c000000 },
+ { 0x008006df, 0x30000005 },
+ { 0x008006e5, 0x18000001 },
+ { 0x008006e7, 0x30000001 },
+ { 0x000006e9, 0x68000000 },
+ { 0x008006ea, 0x30000003 },
+ { 0x008006ee, 0x1c000001 },
+ { 0x008006f0, 0x34000009 },
+ { 0x008006fa, 0x1c000002 },
+ { 0x008006fd, 0x68000001 },
+ { 0x000006ff, 0x1c000000 },
+ { 0x31800700, 0x5400000d },
+ { 0x3100070f, 0x04000000 },
+ { 0x31000710, 0x1c000000 },
+ { 0x31000711, 0x30000000 },
+ { 0x31800712, 0x1c00001d },
+ { 0x31800730, 0x3000001a },
+ { 0x3180074d, 0x1c000020 },
+ { 0x37800780, 0x1c000025 },
+ { 0x378007a6, 0x3000000a },
+ { 0x370007b1, 0x1c000000 },
+ { 0x0e800901, 0x30000001 },
+ { 0x0e000903, 0x28000000 },
+ { 0x0e800904, 0x1c000035 },
+ { 0x0e00093c, 0x30000000 },
+ { 0x0e00093d, 0x1c000000 },
+ { 0x0e80093e, 0x28000002 },
+ { 0x0e800941, 0x30000007 },
+ { 0x0e800949, 0x28000003 },
+ { 0x0e00094d, 0x30000000 },
+ { 0x0e000950, 0x1c000000 },
+ { 0x0e800951, 0x30000003 },
+ { 0x0e800958, 0x1c000009 },
+ { 0x0e800962, 0x30000001 },
+ { 0x09800964, 0x54000001 },
+ { 0x0e800966, 0x34000009 },
+ { 0x09000970, 0x54000000 },
+ { 0x0e00097d, 0x1c000000 },
+ { 0x02000981, 0x30000000 },
+ { 0x02800982, 0x28000001 },
+ { 0x02800985, 0x1c000007 },
+ { 0x0280098f, 0x1c000001 },
+ { 0x02800993, 0x1c000015 },
+ { 0x028009aa, 0x1c000006 },
+ { 0x020009b2, 0x1c000000 },
+ { 0x028009b6, 0x1c000003 },
+ { 0x020009bc, 0x30000000 },
+ { 0x020009bd, 0x1c000000 },
+ { 0x028009be, 0x28000002 },
+ { 0x028009c1, 0x30000003 },
+ { 0x028009c7, 0x28000001 },
+ { 0x028009cb, 0x28000001 },
+ { 0x020009cd, 0x30000000 },
+ { 0x020009ce, 0x1c000000 },
+ { 0x020009d7, 0x28000000 },
+ { 0x028009dc, 0x1c000001 },
+ { 0x028009df, 0x1c000002 },
+ { 0x028009e2, 0x30000001 },
+ { 0x028009e6, 0x34000009 },
+ { 0x028009f0, 0x1c000001 },
+ { 0x028009f2, 0x5c000001 },
+ { 0x028009f4, 0x3c000005 },
+ { 0x020009fa, 0x68000000 },
+ { 0x15800a01, 0x30000001 },
+ { 0x15000a03, 0x28000000 },
+ { 0x15800a05, 0x1c000005 },
+ { 0x15800a0f, 0x1c000001 },
+ { 0x15800a13, 0x1c000015 },
+ { 0x15800a2a, 0x1c000006 },
+ { 0x15800a32, 0x1c000001 },
+ { 0x15800a35, 0x1c000001 },
+ { 0x15800a38, 0x1c000001 },
+ { 0x15000a3c, 0x30000000 },
+ { 0x15800a3e, 0x28000002 },
+ { 0x15800a41, 0x30000001 },
+ { 0x15800a47, 0x30000001 },
+ { 0x15800a4b, 0x30000002 },
+ { 0x15800a59, 0x1c000003 },
+ { 0x15000a5e, 0x1c000000 },
+ { 0x15800a66, 0x34000009 },
+ { 0x15800a70, 0x30000001 },
+ { 0x15800a72, 0x1c000002 },
+ { 0x14800a81, 0x30000001 },
+ { 0x14000a83, 0x28000000 },
+ { 0x14800a85, 0x1c000008 },
+ { 0x14800a8f, 0x1c000002 },
+ { 0x14800a93, 0x1c000015 },
+ { 0x14800aaa, 0x1c000006 },
+ { 0x14800ab2, 0x1c000001 },
+ { 0x14800ab5, 0x1c000004 },
+ { 0x14000abc, 0x30000000 },
+ { 0x14000abd, 0x1c000000 },
+ { 0x14800abe, 0x28000002 },
+ { 0x14800ac1, 0x30000004 },
+ { 0x14800ac7, 0x30000001 },
+ { 0x14000ac9, 0x28000000 },
+ { 0x14800acb, 0x28000001 },
+ { 0x14000acd, 0x30000000 },
+ { 0x14000ad0, 0x1c000000 },
+ { 0x14800ae0, 0x1c000001 },
+ { 0x14800ae2, 0x30000001 },
+ { 0x14800ae6, 0x34000009 },
+ { 0x14000af1, 0x5c000000 },
+ { 0x2b000b01, 0x30000000 },
+ { 0x2b800b02, 0x28000001 },
+ { 0x2b800b05, 0x1c000007 },
+ { 0x2b800b0f, 0x1c000001 },
+ { 0x2b800b13, 0x1c000015 },
+ { 0x2b800b2a, 0x1c000006 },
+ { 0x2b800b32, 0x1c000001 },
+ { 0x2b800b35, 0x1c000004 },
+ { 0x2b000b3c, 0x30000000 },
+ { 0x2b000b3d, 0x1c000000 },
+ { 0x2b000b3e, 0x28000000 },
+ { 0x2b000b3f, 0x30000000 },
+ { 0x2b000b40, 0x28000000 },
+ { 0x2b800b41, 0x30000002 },
+ { 0x2b800b47, 0x28000001 },
+ { 0x2b800b4b, 0x28000001 },
+ { 0x2b000b4d, 0x30000000 },
+ { 0x2b000b56, 0x30000000 },
+ { 0x2b000b57, 0x28000000 },
+ { 0x2b800b5c, 0x1c000001 },
+ { 0x2b800b5f, 0x1c000002 },
+ { 0x2b800b66, 0x34000009 },
+ { 0x2b000b70, 0x68000000 },
+ { 0x2b000b71, 0x1c000000 },
+ { 0x35000b82, 0x30000000 },
+ { 0x35000b83, 0x1c000000 },
+ { 0x35800b85, 0x1c000005 },
+ { 0x35800b8e, 0x1c000002 },
+ { 0x35800b92, 0x1c000003 },
+ { 0x35800b99, 0x1c000001 },
+ { 0x35000b9c, 0x1c000000 },
+ { 0x35800b9e, 0x1c000001 },
+ { 0x35800ba3, 0x1c000001 },
+ { 0x35800ba8, 0x1c000002 },
+ { 0x35800bae, 0x1c00000b },
+ { 0x35800bbe, 0x28000001 },
+ { 0x35000bc0, 0x30000000 },
+ { 0x35800bc1, 0x28000001 },
+ { 0x35800bc6, 0x28000002 },
+ { 0x35800bca, 0x28000002 },
+ { 0x35000bcd, 0x30000000 },
+ { 0x35000bd7, 0x28000000 },
+ { 0x35800be6, 0x34000009 },
+ { 0x35800bf0, 0x3c000002 },
+ { 0x35800bf3, 0x68000005 },
+ { 0x35000bf9, 0x5c000000 },
+ { 0x35000bfa, 0x68000000 },
+ { 0x36800c01, 0x28000002 },
+ { 0x36800c05, 0x1c000007 },
+ { 0x36800c0e, 0x1c000002 },
+ { 0x36800c12, 0x1c000016 },
+ { 0x36800c2a, 0x1c000009 },
+ { 0x36800c35, 0x1c000004 },
+ { 0x36800c3e, 0x30000002 },
+ { 0x36800c41, 0x28000003 },
+ { 0x36800c46, 0x30000002 },
+ { 0x36800c4a, 0x30000003 },
+ { 0x36800c55, 0x30000001 },
+ { 0x36800c60, 0x1c000001 },
+ { 0x36800c66, 0x34000009 },
+ { 0x1c800c82, 0x28000001 },
+ { 0x1c800c85, 0x1c000007 },
+ { 0x1c800c8e, 0x1c000002 },
+ { 0x1c800c92, 0x1c000016 },
+ { 0x1c800caa, 0x1c000009 },
+ { 0x1c800cb5, 0x1c000004 },
+ { 0x1c000cbc, 0x30000000 },
+ { 0x1c000cbd, 0x1c000000 },
+ { 0x1c000cbe, 0x28000000 },
+ { 0x1c000cbf, 0x30000000 },
+ { 0x1c800cc0, 0x28000004 },
+ { 0x1c000cc6, 0x30000000 },
+ { 0x1c800cc7, 0x28000001 },
+ { 0x1c800cca, 0x28000001 },
+ { 0x1c800ccc, 0x30000001 },
+ { 0x1c800cd5, 0x28000001 },
+ { 0x1c000cde, 0x1c000000 },
+ { 0x1c800ce0, 0x1c000001 },
+ { 0x1c800ce6, 0x34000009 },
+ { 0x24800d02, 0x28000001 },
+ { 0x24800d05, 0x1c000007 },
+ { 0x24800d0e, 0x1c000002 },
+ { 0x24800d12, 0x1c000016 },
+ { 0x24800d2a, 0x1c00000f },
+ { 0x24800d3e, 0x28000002 },
+ { 0x24800d41, 0x30000002 },
+ { 0x24800d46, 0x28000002 },
+ { 0x24800d4a, 0x28000002 },
+ { 0x24000d4d, 0x30000000 },
+ { 0x24000d57, 0x28000000 },
+ { 0x24800d60, 0x1c000001 },
+ { 0x24800d66, 0x34000009 },
+ { 0x2f800d82, 0x28000001 },
+ { 0x2f800d85, 0x1c000011 },
+ { 0x2f800d9a, 0x1c000017 },
+ { 0x2f800db3, 0x1c000008 },
+ { 0x2f000dbd, 0x1c000000 },
+ { 0x2f800dc0, 0x1c000006 },
+ { 0x2f000dca, 0x30000000 },
+ { 0x2f800dcf, 0x28000002 },
+ { 0x2f800dd2, 0x30000002 },
+ { 0x2f000dd6, 0x30000000 },
+ { 0x2f800dd8, 0x28000007 },
+ { 0x2f800df2, 0x28000001 },
+ { 0x2f000df4, 0x54000000 },
+ { 0x38800e01, 0x1c00002f },
+ { 0x38000e31, 0x30000000 },
+ { 0x38800e32, 0x1c000001 },
+ { 0x38800e34, 0x30000006 },
+ { 0x09000e3f, 0x5c000000 },
+ { 0x38800e40, 0x1c000005 },
+ { 0x38000e46, 0x18000000 },
+ { 0x38800e47, 0x30000007 },
+ { 0x38000e4f, 0x54000000 },
+ { 0x38800e50, 0x34000009 },
+ { 0x38800e5a, 0x54000001 },
+ { 0x20800e81, 0x1c000001 },
+ { 0x20000e84, 0x1c000000 },
+ { 0x20800e87, 0x1c000001 },
+ { 0x20000e8a, 0x1c000000 },
+ { 0x20000e8d, 0x1c000000 },
+ { 0x20800e94, 0x1c000003 },
+ { 0x20800e99, 0x1c000006 },
+ { 0x20800ea1, 0x1c000002 },
+ { 0x20000ea5, 0x1c000000 },
+ { 0x20000ea7, 0x1c000000 },
+ { 0x20800eaa, 0x1c000001 },
+ { 0x20800ead, 0x1c000003 },
+ { 0x20000eb1, 0x30000000 },
+ { 0x20800eb2, 0x1c000001 },
+ { 0x20800eb4, 0x30000005 },
+ { 0x20800ebb, 0x30000001 },
+ { 0x20000ebd, 0x1c000000 },
+ { 0x20800ec0, 0x1c000004 },
+ { 0x20000ec6, 0x18000000 },
+ { 0x20800ec8, 0x30000005 },
+ { 0x20800ed0, 0x34000009 },
+ { 0x20800edc, 0x1c000001 },
+ { 0x39000f00, 0x1c000000 },
+ { 0x39800f01, 0x68000002 },
+ { 0x39800f04, 0x5400000e },
+ { 0x39800f13, 0x68000004 },
+ { 0x39800f18, 0x30000001 },
+ { 0x39800f1a, 0x68000005 },
+ { 0x39800f20, 0x34000009 },
+ { 0x39800f2a, 0x3c000009 },
+ { 0x39000f34, 0x68000000 },
+ { 0x39000f35, 0x30000000 },
+ { 0x39000f36, 0x68000000 },
+ { 0x39000f37, 0x30000000 },
+ { 0x39000f38, 0x68000000 },
+ { 0x39000f39, 0x30000000 },
+ { 0x39000f3a, 0x58000000 },
+ { 0x39000f3b, 0x48000000 },
+ { 0x39000f3c, 0x58000000 },
+ { 0x39000f3d, 0x48000000 },
+ { 0x39800f3e, 0x28000001 },
+ { 0x39800f40, 0x1c000007 },
+ { 0x39800f49, 0x1c000021 },
+ { 0x39800f71, 0x3000000d },
+ { 0x39000f7f, 0x28000000 },
+ { 0x39800f80, 0x30000004 },
+ { 0x39000f85, 0x54000000 },
+ { 0x39800f86, 0x30000001 },
+ { 0x39800f88, 0x1c000003 },
+ { 0x39800f90, 0x30000007 },
+ { 0x39800f99, 0x30000023 },
+ { 0x39800fbe, 0x68000007 },
+ { 0x39000fc6, 0x30000000 },
+ { 0x39800fc7, 0x68000005 },
+ { 0x39000fcf, 0x68000000 },
+ { 0x39800fd0, 0x54000001 },
+ { 0x26801000, 0x1c000021 },
+ { 0x26801023, 0x1c000004 },
+ { 0x26801029, 0x1c000001 },
+ { 0x2600102c, 0x28000000 },
+ { 0x2680102d, 0x30000003 },
+ { 0x26001031, 0x28000000 },
+ { 0x26001032, 0x30000000 },
+ { 0x26801036, 0x30000001 },
+ { 0x26001038, 0x28000000 },
+ { 0x26001039, 0x30000000 },
+ { 0x26801040, 0x34000009 },
+ { 0x2680104a, 0x54000005 },
+ { 0x26801050, 0x1c000005 },
+ { 0x26801056, 0x28000001 },
+ { 0x26801058, 0x30000001 },
+ { 0x100010a0, 0x24001c60 },
+ { 0x100010a1, 0x24001c60 },
+ { 0x100010a2, 0x24001c60 },
+ { 0x100010a3, 0x24001c60 },
+ { 0x100010a4, 0x24001c60 },
+ { 0x100010a5, 0x24001c60 },
+ { 0x100010a6, 0x24001c60 },
+ { 0x100010a7, 0x24001c60 },
+ { 0x100010a8, 0x24001c60 },
+ { 0x100010a9, 0x24001c60 },
+ { 0x100010aa, 0x24001c60 },
+ { 0x100010ab, 0x24001c60 },
+ { 0x100010ac, 0x24001c60 },
+ { 0x100010ad, 0x24001c60 },
+ { 0x100010ae, 0x24001c60 },
+ { 0x100010af, 0x24001c60 },
+ { 0x100010b0, 0x24001c60 },
+ { 0x100010b1, 0x24001c60 },
+ { 0x100010b2, 0x24001c60 },
+ { 0x100010b3, 0x24001c60 },
+ { 0x100010b4, 0x24001c60 },
+ { 0x100010b5, 0x24001c60 },
+ { 0x100010b6, 0x24001c60 },
+ { 0x100010b7, 0x24001c60 },
+ { 0x100010b8, 0x24001c60 },
+ { 0x100010b9, 0x24001c60 },
+ { 0x100010ba, 0x24001c60 },
+ { 0x100010bb, 0x24001c60 },
+ { 0x100010bc, 0x24001c60 },
+ { 0x100010bd, 0x24001c60 },
+ { 0x100010be, 0x24001c60 },
+ { 0x100010bf, 0x24001c60 },
+ { 0x100010c0, 0x24001c60 },
+ { 0x100010c1, 0x24001c60 },
+ { 0x100010c2, 0x24001c60 },
+ { 0x100010c3, 0x24001c60 },
+ { 0x100010c4, 0x24001c60 },
+ { 0x100010c5, 0x24001c60 },
+ { 0x108010d0, 0x1c00002a },
+ { 0x090010fb, 0x54000000 },
+ { 0x100010fc, 0x18000000 },
+ { 0x17801100, 0x1c000059 },
+ { 0x1780115f, 0x1c000043 },
+ { 0x178011a8, 0x1c000051 },
+ { 0x0f801200, 0x1c000048 },
+ { 0x0f80124a, 0x1c000003 },
+ { 0x0f801250, 0x1c000006 },
+ { 0x0f001258, 0x1c000000 },
+ { 0x0f80125a, 0x1c000003 },
+ { 0x0f801260, 0x1c000028 },
+ { 0x0f80128a, 0x1c000003 },
+ { 0x0f801290, 0x1c000020 },
+ { 0x0f8012b2, 0x1c000003 },
+ { 0x0f8012b8, 0x1c000006 },
+ { 0x0f0012c0, 0x1c000000 },
+ { 0x0f8012c2, 0x1c000003 },
+ { 0x0f8012c8, 0x1c00000e },
+ { 0x0f8012d8, 0x1c000038 },
+ { 0x0f801312, 0x1c000003 },
+ { 0x0f801318, 0x1c000042 },
+ { 0x0f00135f, 0x30000000 },
+ { 0x0f001360, 0x68000000 },
+ { 0x0f801361, 0x54000007 },
+ { 0x0f801369, 0x3c000013 },
+ { 0x0f801380, 0x1c00000f },
+ { 0x0f801390, 0x68000009 },
+ { 0x088013a0, 0x1c000054 },
+ { 0x07801401, 0x1c00026b },
+ { 0x0780166d, 0x54000001 },
+ { 0x0780166f, 0x1c000007 },
+ { 0x28001680, 0x74000000 },
+ { 0x28801681, 0x1c000019 },
+ { 0x2800169b, 0x58000000 },
+ { 0x2800169c, 0x48000000 },
+ { 0x2d8016a0, 0x1c00004a },
+ { 0x098016eb, 0x54000002 },
+ { 0x2d8016ee, 0x38000002 },
+ { 0x32801700, 0x1c00000c },
+ { 0x3280170e, 0x1c000003 },
+ { 0x32801712, 0x30000002 },
+ { 0x18801720, 0x1c000011 },
+ { 0x18801732, 0x30000002 },
+ { 0x09801735, 0x54000001 },
+ { 0x06801740, 0x1c000011 },
+ { 0x06801752, 0x30000001 },
+ { 0x33801760, 0x1c00000c },
+ { 0x3380176e, 0x1c000002 },
+ { 0x33801772, 0x30000001 },
+ { 0x1f801780, 0x1c000033 },
+ { 0x1f8017b4, 0x04000001 },
+ { 0x1f0017b6, 0x28000000 },
+ { 0x1f8017b7, 0x30000006 },
+ { 0x1f8017be, 0x28000007 },
+ { 0x1f0017c6, 0x30000000 },
+ { 0x1f8017c7, 0x28000001 },
+ { 0x1f8017c9, 0x3000000a },
+ { 0x1f8017d4, 0x54000002 },
+ { 0x1f0017d7, 0x18000000 },
+ { 0x1f8017d8, 0x54000002 },
+ { 0x1f0017db, 0x5c000000 },
+ { 0x1f0017dc, 0x1c000000 },
+ { 0x1f0017dd, 0x30000000 },
+ { 0x1f8017e0, 0x34000009 },
+ { 0x1f8017f0, 0x3c000009 },
+ { 0x25801800, 0x54000005 },
+ { 0x25001806, 0x44000000 },
+ { 0x25801807, 0x54000003 },
+ { 0x2580180b, 0x30000002 },
+ { 0x2500180e, 0x74000000 },
+ { 0x25801810, 0x34000009 },
+ { 0x25801820, 0x1c000022 },
+ { 0x25001843, 0x18000000 },
+ { 0x25801844, 0x1c000033 },
+ { 0x25801880, 0x1c000028 },
+ { 0x250018a9, 0x30000000 },
+ { 0x22801900, 0x1c00001c },
+ { 0x22801920, 0x30000002 },
+ { 0x22801923, 0x28000003 },
+ { 0x22801927, 0x30000001 },
+ { 0x22801929, 0x28000002 },
+ { 0x22801930, 0x28000001 },
+ { 0x22001932, 0x30000000 },
+ { 0x22801933, 0x28000005 },
+ { 0x22801939, 0x30000002 },
+ { 0x22001940, 0x68000000 },
+ { 0x22801944, 0x54000001 },
+ { 0x22801946, 0x34000009 },
+ { 0x34801950, 0x1c00001d },
+ { 0x34801970, 0x1c000004 },
+ { 0x27801980, 0x1c000029 },
+ { 0x278019b0, 0x28000010 },
+ { 0x278019c1, 0x1c000006 },
+ { 0x278019c8, 0x28000001 },
+ { 0x278019d0, 0x34000009 },
+ { 0x278019de, 0x54000001 },
+ { 0x1f8019e0, 0x6800001f },
+ { 0x05801a00, 0x1c000016 },
+ { 0x05801a17, 0x30000001 },
+ { 0x05801a19, 0x28000002 },
+ { 0x05801a1e, 0x54000001 },
+ { 0x21801d00, 0x1400002b },
+ { 0x21801d2c, 0x18000035 },
+ { 0x21801d62, 0x14000015 },
+ { 0x0c001d78, 0x18000000 },
+ { 0x21801d79, 0x14000021 },
+ { 0x21801d9b, 0x18000024 },
+ { 0x1b801dc0, 0x30000003 },
+ { 0x21001e00, 0x24000001 },
+ { 0x21001e01, 0x1400ffff },
+ { 0x21001e02, 0x24000001 },
+ { 0x21001e03, 0x1400ffff },
+ { 0x21001e04, 0x24000001 },
+ { 0x21001e05, 0x1400ffff },
+ { 0x21001e06, 0x24000001 },
+ { 0x21001e07, 0x1400ffff },
+ { 0x21001e08, 0x24000001 },
+ { 0x21001e09, 0x1400ffff },
+ { 0x21001e0a, 0x24000001 },
+ { 0x21001e0b, 0x1400ffff },
+ { 0x21001e0c, 0x24000001 },
+ { 0x21001e0d, 0x1400ffff },
+ { 0x21001e0e, 0x24000001 },
+ { 0x21001e0f, 0x1400ffff },
+ { 0x21001e10, 0x24000001 },
+ { 0x21001e11, 0x1400ffff },
+ { 0x21001e12, 0x24000001 },
+ { 0x21001e13, 0x1400ffff },
+ { 0x21001e14, 0x24000001 },
+ { 0x21001e15, 0x1400ffff },
+ { 0x21001e16, 0x24000001 },
+ { 0x21001e17, 0x1400ffff },
+ { 0x21001e18, 0x24000001 },
+ { 0x21001e19, 0x1400ffff },
+ { 0x21001e1a, 0x24000001 },
+ { 0x21001e1b, 0x1400ffff },
+ { 0x21001e1c, 0x24000001 },
+ { 0x21001e1d, 0x1400ffff },
+ { 0x21001e1e, 0x24000001 },
+ { 0x21001e1f, 0x1400ffff },
+ { 0x21001e20, 0x24000001 },
+ { 0x21001e21, 0x1400ffff },
+ { 0x21001e22, 0x24000001 },
+ { 0x21001e23, 0x1400ffff },
+ { 0x21001e24, 0x24000001 },
+ { 0x21001e25, 0x1400ffff },
+ { 0x21001e26, 0x24000001 },
+ { 0x21001e27, 0x1400ffff },
+ { 0x21001e28, 0x24000001 },
+ { 0x21001e29, 0x1400ffff },
+ { 0x21001e2a, 0x24000001 },
+ { 0x21001e2b, 0x1400ffff },
+ { 0x21001e2c, 0x24000001 },
+ { 0x21001e2d, 0x1400ffff },
+ { 0x21001e2e, 0x24000001 },
+ { 0x21001e2f, 0x1400ffff },
+ { 0x21001e30, 0x24000001 },
+ { 0x21001e31, 0x1400ffff },
+ { 0x21001e32, 0x24000001 },
+ { 0x21001e33, 0x1400ffff },
+ { 0x21001e34, 0x24000001 },
+ { 0x21001e35, 0x1400ffff },
+ { 0x21001e36, 0x24000001 },
+ { 0x21001e37, 0x1400ffff },
+ { 0x21001e38, 0x24000001 },
+ { 0x21001e39, 0x1400ffff },
+ { 0x21001e3a, 0x24000001 },
+ { 0x21001e3b, 0x1400ffff },
+ { 0x21001e3c, 0x24000001 },
+ { 0x21001e3d, 0x1400ffff },
+ { 0x21001e3e, 0x24000001 },
+ { 0x21001e3f, 0x1400ffff },
+ { 0x21001e40, 0x24000001 },
+ { 0x21001e41, 0x1400ffff },
+ { 0x21001e42, 0x24000001 },
+ { 0x21001e43, 0x1400ffff },
+ { 0x21001e44, 0x24000001 },
+ { 0x21001e45, 0x1400ffff },
+ { 0x21001e46, 0x24000001 },
+ { 0x21001e47, 0x1400ffff },
+ { 0x21001e48, 0x24000001 },
+ { 0x21001e49, 0x1400ffff },
+ { 0x21001e4a, 0x24000001 },
+ { 0x21001e4b, 0x1400ffff },
+ { 0x21001e4c, 0x24000001 },
+ { 0x21001e4d, 0x1400ffff },
+ { 0x21001e4e, 0x24000001 },
+ { 0x21001e4f, 0x1400ffff },
+ { 0x21001e50, 0x24000001 },
+ { 0x21001e51, 0x1400ffff },
+ { 0x21001e52, 0x24000001 },
+ { 0x21001e53, 0x1400ffff },
+ { 0x21001e54, 0x24000001 },
+ { 0x21001e55, 0x1400ffff },
+ { 0x21001e56, 0x24000001 },
+ { 0x21001e57, 0x1400ffff },
+ { 0x21001e58, 0x24000001 },
+ { 0x21001e59, 0x1400ffff },
+ { 0x21001e5a, 0x24000001 },
+ { 0x21001e5b, 0x1400ffff },
+ { 0x21001e5c, 0x24000001 },
+ { 0x21001e5d, 0x1400ffff },
+ { 0x21001e5e, 0x24000001 },
+ { 0x21001e5f, 0x1400ffff },
+ { 0x21001e60, 0x24000001 },
+ { 0x21001e61, 0x1400ffff },
+ { 0x21001e62, 0x24000001 },
+ { 0x21001e63, 0x1400ffff },
+ { 0x21001e64, 0x24000001 },
+ { 0x21001e65, 0x1400ffff },
+ { 0x21001e66, 0x24000001 },
+ { 0x21001e67, 0x1400ffff },
+ { 0x21001e68, 0x24000001 },
+ { 0x21001e69, 0x1400ffff },
+ { 0x21001e6a, 0x24000001 },
+ { 0x21001e6b, 0x1400ffff },
+ { 0x21001e6c, 0x24000001 },
+ { 0x21001e6d, 0x1400ffff },
+ { 0x21001e6e, 0x24000001 },
+ { 0x21001e6f, 0x1400ffff },
+ { 0x21001e70, 0x24000001 },
+ { 0x21001e71, 0x1400ffff },
+ { 0x21001e72, 0x24000001 },
+ { 0x21001e73, 0x1400ffff },
+ { 0x21001e74, 0x24000001 },
+ { 0x21001e75, 0x1400ffff },
+ { 0x21001e76, 0x24000001 },
+ { 0x21001e77, 0x1400ffff },
+ { 0x21001e78, 0x24000001 },
+ { 0x21001e79, 0x1400ffff },
+ { 0x21001e7a, 0x24000001 },
+ { 0x21001e7b, 0x1400ffff },
+ { 0x21001e7c, 0x24000001 },
+ { 0x21001e7d, 0x1400ffff },
+ { 0x21001e7e, 0x24000001 },
+ { 0x21001e7f, 0x1400ffff },
+ { 0x21001e80, 0x24000001 },
+ { 0x21001e81, 0x1400ffff },
+ { 0x21001e82, 0x24000001 },
+ { 0x21001e83, 0x1400ffff },
+ { 0x21001e84, 0x24000001 },
+ { 0x21001e85, 0x1400ffff },
+ { 0x21001e86, 0x24000001 },
+ { 0x21001e87, 0x1400ffff },
+ { 0x21001e88, 0x24000001 },
+ { 0x21001e89, 0x1400ffff },
+ { 0x21001e8a, 0x24000001 },
+ { 0x21001e8b, 0x1400ffff },
+ { 0x21001e8c, 0x24000001 },
+ { 0x21001e8d, 0x1400ffff },
+ { 0x21001e8e, 0x24000001 },
+ { 0x21001e8f, 0x1400ffff },
+ { 0x21001e90, 0x24000001 },
+ { 0x21001e91, 0x1400ffff },
+ { 0x21001e92, 0x24000001 },
+ { 0x21001e93, 0x1400ffff },
+ { 0x21001e94, 0x24000001 },
+ { 0x21001e95, 0x1400ffff },
+ { 0x21801e96, 0x14000004 },
+ { 0x21001e9b, 0x1400ffc5 },
+ { 0x21001ea0, 0x24000001 },
+ { 0x21001ea1, 0x1400ffff },
+ { 0x21001ea2, 0x24000001 },
+ { 0x21001ea3, 0x1400ffff },
+ { 0x21001ea4, 0x24000001 },
+ { 0x21001ea5, 0x1400ffff },
+ { 0x21001ea6, 0x24000001 },
+ { 0x21001ea7, 0x1400ffff },
+ { 0x21001ea8, 0x24000001 },
+ { 0x21001ea9, 0x1400ffff },
+ { 0x21001eaa, 0x24000001 },
+ { 0x21001eab, 0x1400ffff },
+ { 0x21001eac, 0x24000001 },
+ { 0x21001ead, 0x1400ffff },
+ { 0x21001eae, 0x24000001 },
+ { 0x21001eaf, 0x1400ffff },
+ { 0x21001eb0, 0x24000001 },
+ { 0x21001eb1, 0x1400ffff },
+ { 0x21001eb2, 0x24000001 },
+ { 0x21001eb3, 0x1400ffff },
+ { 0x21001eb4, 0x24000001 },
+ { 0x21001eb5, 0x1400ffff },
+ { 0x21001eb6, 0x24000001 },
+ { 0x21001eb7, 0x1400ffff },
+ { 0x21001eb8, 0x24000001 },
+ { 0x21001eb9, 0x1400ffff },
+ { 0x21001eba, 0x24000001 },
+ { 0x21001ebb, 0x1400ffff },
+ { 0x21001ebc, 0x24000001 },
+ { 0x21001ebd, 0x1400ffff },
+ { 0x21001ebe, 0x24000001 },
+ { 0x21001ebf, 0x1400ffff },
+ { 0x21001ec0, 0x24000001 },
+ { 0x21001ec1, 0x1400ffff },
+ { 0x21001ec2, 0x24000001 },
+ { 0x21001ec3, 0x1400ffff },
+ { 0x21001ec4, 0x24000001 },
+ { 0x21001ec5, 0x1400ffff },
+ { 0x21001ec6, 0x24000001 },
+ { 0x21001ec7, 0x1400ffff },
+ { 0x21001ec8, 0x24000001 },
+ { 0x21001ec9, 0x1400ffff },
+ { 0x21001eca, 0x24000001 },
+ { 0x21001ecb, 0x1400ffff },
+ { 0x21001ecc, 0x24000001 },
+ { 0x21001ecd, 0x1400ffff },
+ { 0x21001ece, 0x24000001 },
+ { 0x21001ecf, 0x1400ffff },
+ { 0x21001ed0, 0x24000001 },
+ { 0x21001ed1, 0x1400ffff },
+ { 0x21001ed2, 0x24000001 },
+ { 0x21001ed3, 0x1400ffff },
+ { 0x21001ed4, 0x24000001 },
+ { 0x21001ed5, 0x1400ffff },
+ { 0x21001ed6, 0x24000001 },
+ { 0x21001ed7, 0x1400ffff },
+ { 0x21001ed8, 0x24000001 },
+ { 0x21001ed9, 0x1400ffff },
+ { 0x21001eda, 0x24000001 },
+ { 0x21001edb, 0x1400ffff },
+ { 0x21001edc, 0x24000001 },
+ { 0x21001edd, 0x1400ffff },
+ { 0x21001ede, 0x24000001 },
+ { 0x21001edf, 0x1400ffff },
+ { 0x21001ee0, 0x24000001 },
+ { 0x21001ee1, 0x1400ffff },
+ { 0x21001ee2, 0x24000001 },
+ { 0x21001ee3, 0x1400ffff },
+ { 0x21001ee4, 0x24000001 },
+ { 0x21001ee5, 0x1400ffff },
+ { 0x21001ee6, 0x24000001 },
+ { 0x21001ee7, 0x1400ffff },
+ { 0x21001ee8, 0x24000001 },
+ { 0x21001ee9, 0x1400ffff },
+ { 0x21001eea, 0x24000001 },
+ { 0x21001eeb, 0x1400ffff },
+ { 0x21001eec, 0x24000001 },
+ { 0x21001eed, 0x1400ffff },
+ { 0x21001eee, 0x24000001 },
+ { 0x21001eef, 0x1400ffff },
+ { 0x21001ef0, 0x24000001 },
+ { 0x21001ef1, 0x1400ffff },
+ { 0x21001ef2, 0x24000001 },
+ { 0x21001ef3, 0x1400ffff },
+ { 0x21001ef4, 0x24000001 },
+ { 0x21001ef5, 0x1400ffff },
+ { 0x21001ef6, 0x24000001 },
+ { 0x21001ef7, 0x1400ffff },
+ { 0x21001ef8, 0x24000001 },
+ { 0x21001ef9, 0x1400ffff },
+ { 0x13001f00, 0x14000008 },
+ { 0x13001f01, 0x14000008 },
+ { 0x13001f02, 0x14000008 },
+ { 0x13001f03, 0x14000008 },
+ { 0x13001f04, 0x14000008 },
+ { 0x13001f05, 0x14000008 },
+ { 0x13001f06, 0x14000008 },
+ { 0x13001f07, 0x14000008 },
+ { 0x13001f08, 0x2400fff8 },
+ { 0x13001f09, 0x2400fff8 },
+ { 0x13001f0a, 0x2400fff8 },
+ { 0x13001f0b, 0x2400fff8 },
+ { 0x13001f0c, 0x2400fff8 },
+ { 0x13001f0d, 0x2400fff8 },
+ { 0x13001f0e, 0x2400fff8 },
+ { 0x13001f0f, 0x2400fff8 },
+ { 0x13001f10, 0x14000008 },
+ { 0x13001f11, 0x14000008 },
+ { 0x13001f12, 0x14000008 },
+ { 0x13001f13, 0x14000008 },
+ { 0x13001f14, 0x14000008 },
+ { 0x13001f15, 0x14000008 },
+ { 0x13001f18, 0x2400fff8 },
+ { 0x13001f19, 0x2400fff8 },
+ { 0x13001f1a, 0x2400fff8 },
+ { 0x13001f1b, 0x2400fff8 },
+ { 0x13001f1c, 0x2400fff8 },
+ { 0x13001f1d, 0x2400fff8 },
+ { 0x13001f20, 0x14000008 },
+ { 0x13001f21, 0x14000008 },
+ { 0x13001f22, 0x14000008 },
+ { 0x13001f23, 0x14000008 },
+ { 0x13001f24, 0x14000008 },
+ { 0x13001f25, 0x14000008 },
+ { 0x13001f26, 0x14000008 },
+ { 0x13001f27, 0x14000008 },
+ { 0x13001f28, 0x2400fff8 },
+ { 0x13001f29, 0x2400fff8 },
+ { 0x13001f2a, 0x2400fff8 },
+ { 0x13001f2b, 0x2400fff8 },
+ { 0x13001f2c, 0x2400fff8 },
+ { 0x13001f2d, 0x2400fff8 },
+ { 0x13001f2e, 0x2400fff8 },
+ { 0x13001f2f, 0x2400fff8 },
+ { 0x13001f30, 0x14000008 },
+ { 0x13001f31, 0x14000008 },
+ { 0x13001f32, 0x14000008 },
+ { 0x13001f33, 0x14000008 },
+ { 0x13001f34, 0x14000008 },
+ { 0x13001f35, 0x14000008 },
+ { 0x13001f36, 0x14000008 },
+ { 0x13001f37, 0x14000008 },
+ { 0x13001f38, 0x2400fff8 },
+ { 0x13001f39, 0x2400fff8 },
+ { 0x13001f3a, 0x2400fff8 },
+ { 0x13001f3b, 0x2400fff8 },
+ { 0x13001f3c, 0x2400fff8 },
+ { 0x13001f3d, 0x2400fff8 },
+ { 0x13001f3e, 0x2400fff8 },
+ { 0x13001f3f, 0x2400fff8 },
+ { 0x13001f40, 0x14000008 },
+ { 0x13001f41, 0x14000008 },
+ { 0x13001f42, 0x14000008 },
+ { 0x13001f43, 0x14000008 },
+ { 0x13001f44, 0x14000008 },
+ { 0x13001f45, 0x14000008 },
+ { 0x13001f48, 0x2400fff8 },
+ { 0x13001f49, 0x2400fff8 },
+ { 0x13001f4a, 0x2400fff8 },
+ { 0x13001f4b, 0x2400fff8 },
+ { 0x13001f4c, 0x2400fff8 },
+ { 0x13001f4d, 0x2400fff8 },
+ { 0x13001f50, 0x14000000 },
+ { 0x13001f51, 0x14000008 },
+ { 0x13001f52, 0x14000000 },
+ { 0x13001f53, 0x14000008 },
+ { 0x13001f54, 0x14000000 },
+ { 0x13001f55, 0x14000008 },
+ { 0x13001f56, 0x14000000 },
+ { 0x13001f57, 0x14000008 },
+ { 0x13001f59, 0x2400fff8 },
+ { 0x13001f5b, 0x2400fff8 },
+ { 0x13001f5d, 0x2400fff8 },
+ { 0x13001f5f, 0x2400fff8 },
+ { 0x13001f60, 0x14000008 },
+ { 0x13001f61, 0x14000008 },
+ { 0x13001f62, 0x14000008 },
+ { 0x13001f63, 0x14000008 },
+ { 0x13001f64, 0x14000008 },
+ { 0x13001f65, 0x14000008 },
+ { 0x13001f66, 0x14000008 },
+ { 0x13001f67, 0x14000008 },
+ { 0x13001f68, 0x2400fff8 },
+ { 0x13001f69, 0x2400fff8 },
+ { 0x13001f6a, 0x2400fff8 },
+ { 0x13001f6b, 0x2400fff8 },
+ { 0x13001f6c, 0x2400fff8 },
+ { 0x13001f6d, 0x2400fff8 },
+ { 0x13001f6e, 0x2400fff8 },
+ { 0x13001f6f, 0x2400fff8 },
+ { 0x13001f70, 0x1400004a },
+ { 0x13001f71, 0x1400004a },
+ { 0x13001f72, 0x14000056 },
+ { 0x13001f73, 0x14000056 },
+ { 0x13001f74, 0x14000056 },
+ { 0x13001f75, 0x14000056 },
+ { 0x13001f76, 0x14000064 },
+ { 0x13001f77, 0x14000064 },
+ { 0x13001f78, 0x14000080 },
+ { 0x13001f79, 0x14000080 },
+ { 0x13001f7a, 0x14000070 },
+ { 0x13001f7b, 0x14000070 },
+ { 0x13001f7c, 0x1400007e },
+ { 0x13001f7d, 0x1400007e },
+ { 0x13001f80, 0x14000008 },
+ { 0x13001f81, 0x14000008 },
+ { 0x13001f82, 0x14000008 },
+ { 0x13001f83, 0x14000008 },
+ { 0x13001f84, 0x14000008 },
+ { 0x13001f85, 0x14000008 },
+ { 0x13001f86, 0x14000008 },
+ { 0x13001f87, 0x14000008 },
+ { 0x13001f88, 0x2000fff8 },
+ { 0x13001f89, 0x2000fff8 },
+ { 0x13001f8a, 0x2000fff8 },
+ { 0x13001f8b, 0x2000fff8 },
+ { 0x13001f8c, 0x2000fff8 },
+ { 0x13001f8d, 0x2000fff8 },
+ { 0x13001f8e, 0x2000fff8 },
+ { 0x13001f8f, 0x2000fff8 },
+ { 0x13001f90, 0x14000008 },
+ { 0x13001f91, 0x14000008 },
+ { 0x13001f92, 0x14000008 },
+ { 0x13001f93, 0x14000008 },
+ { 0x13001f94, 0x14000008 },
+ { 0x13001f95, 0x14000008 },
+ { 0x13001f96, 0x14000008 },
+ { 0x13001f97, 0x14000008 },
+ { 0x13001f98, 0x2000fff8 },
+ { 0x13001f99, 0x2000fff8 },
+ { 0x13001f9a, 0x2000fff8 },
+ { 0x13001f9b, 0x2000fff8 },
+ { 0x13001f9c, 0x2000fff8 },
+ { 0x13001f9d, 0x2000fff8 },
+ { 0x13001f9e, 0x2000fff8 },
+ { 0x13001f9f, 0x2000fff8 },
+ { 0x13001fa0, 0x14000008 },
+ { 0x13001fa1, 0x14000008 },
+ { 0x13001fa2, 0x14000008 },
+ { 0x13001fa3, 0x14000008 },
+ { 0x13001fa4, 0x14000008 },
+ { 0x13001fa5, 0x14000008 },
+ { 0x13001fa6, 0x14000008 },
+ { 0x13001fa7, 0x14000008 },
+ { 0x13001fa8, 0x2000fff8 },
+ { 0x13001fa9, 0x2000fff8 },
+ { 0x13001faa, 0x2000fff8 },
+ { 0x13001fab, 0x2000fff8 },
+ { 0x13001fac, 0x2000fff8 },
+ { 0x13001fad, 0x2000fff8 },
+ { 0x13001fae, 0x2000fff8 },
+ { 0x13001faf, 0x2000fff8 },
+ { 0x13001fb0, 0x14000008 },
+ { 0x13001fb1, 0x14000008 },
+ { 0x13001fb2, 0x14000000 },
+ { 0x13001fb3, 0x14000009 },
+ { 0x13001fb4, 0x14000000 },
+ { 0x13801fb6, 0x14000001 },
+ { 0x13001fb8, 0x2400fff8 },
+ { 0x13001fb9, 0x2400fff8 },
+ { 0x13001fba, 0x2400ffb6 },
+ { 0x13001fbb, 0x2400ffb6 },
+ { 0x13001fbc, 0x2000fff7 },
+ { 0x13001fbd, 0x60000000 },
+ { 0x13001fbe, 0x1400e3db },
+ { 0x13801fbf, 0x60000002 },
+ { 0x13001fc2, 0x14000000 },
+ { 0x13001fc3, 0x14000009 },
+ { 0x13001fc4, 0x14000000 },
+ { 0x13801fc6, 0x14000001 },
+ { 0x13001fc8, 0x2400ffaa },
+ { 0x13001fc9, 0x2400ffaa },
+ { 0x13001fca, 0x2400ffaa },
+ { 0x13001fcb, 0x2400ffaa },
+ { 0x13001fcc, 0x2000fff7 },
+ { 0x13801fcd, 0x60000002 },
+ { 0x13001fd0, 0x14000008 },
+ { 0x13001fd1, 0x14000008 },
+ { 0x13801fd2, 0x14000001 },
+ { 0x13801fd6, 0x14000001 },
+ { 0x13001fd8, 0x2400fff8 },
+ { 0x13001fd9, 0x2400fff8 },
+ { 0x13001fda, 0x2400ff9c },
+ { 0x13001fdb, 0x2400ff9c },
+ { 0x13801fdd, 0x60000002 },
+ { 0x13001fe0, 0x14000008 },
+ { 0x13001fe1, 0x14000008 },
+ { 0x13801fe2, 0x14000002 },
+ { 0x13001fe5, 0x14000007 },
+ { 0x13801fe6, 0x14000001 },
+ { 0x13001fe8, 0x2400fff8 },
+ { 0x13001fe9, 0x2400fff8 },
+ { 0x13001fea, 0x2400ff90 },
+ { 0x13001feb, 0x2400ff90 },
+ { 0x13001fec, 0x2400fff9 },
+ { 0x13801fed, 0x60000002 },
+ { 0x13001ff2, 0x14000000 },
+ { 0x13001ff3, 0x14000009 },
+ { 0x13001ff4, 0x14000000 },
+ { 0x13801ff6, 0x14000001 },
+ { 0x13001ff8, 0x2400ff80 },
+ { 0x13001ff9, 0x2400ff80 },
+ { 0x13001ffa, 0x2400ff82 },
+ { 0x13001ffb, 0x2400ff82 },
+ { 0x13001ffc, 0x2000fff7 },
+ { 0x13801ffd, 0x60000001 },
+ { 0x09802000, 0x7400000a },
+ { 0x0980200b, 0x04000004 },
+ { 0x09802010, 0x44000005 },
+ { 0x09802016, 0x54000001 },
+ { 0x09002018, 0x50000000 },
+ { 0x09002019, 0x4c000000 },
+ { 0x0900201a, 0x58000000 },
+ { 0x0980201b, 0x50000001 },
+ { 0x0900201d, 0x4c000000 },
+ { 0x0900201e, 0x58000000 },
+ { 0x0900201f, 0x50000000 },
+ { 0x09802020, 0x54000007 },
+ { 0x09002028, 0x6c000000 },
+ { 0x09002029, 0x70000000 },
+ { 0x0980202a, 0x04000004 },
+ { 0x0900202f, 0x74000000 },
+ { 0x09802030, 0x54000008 },
+ { 0x09002039, 0x50000000 },
+ { 0x0900203a, 0x4c000000 },
+ { 0x0980203b, 0x54000003 },
+ { 0x0980203f, 0x40000001 },
+ { 0x09802041, 0x54000002 },
+ { 0x09002044, 0x64000000 },
+ { 0x09002045, 0x58000000 },
+ { 0x09002046, 0x48000000 },
+ { 0x09802047, 0x5400000a },
+ { 0x09002052, 0x64000000 },
+ { 0x09002053, 0x54000000 },
+ { 0x09002054, 0x40000000 },
+ { 0x09802055, 0x54000009 },
+ { 0x0900205f, 0x74000000 },
+ { 0x09802060, 0x04000003 },
+ { 0x0980206a, 0x04000005 },
+ { 0x09002070, 0x3c000000 },
+ { 0x21002071, 0x14000000 },
+ { 0x09802074, 0x3c000005 },
+ { 0x0980207a, 0x64000002 },
+ { 0x0900207d, 0x58000000 },
+ { 0x0900207e, 0x48000000 },
+ { 0x2100207f, 0x14000000 },
+ { 0x09802080, 0x3c000009 },
+ { 0x0980208a, 0x64000002 },
+ { 0x0900208d, 0x58000000 },
+ { 0x0900208e, 0x48000000 },
+ { 0x21802090, 0x18000004 },
+ { 0x098020a0, 0x5c000015 },
+ { 0x1b8020d0, 0x3000000c },
+ { 0x1b8020dd, 0x2c000003 },
+ { 0x1b0020e1, 0x30000000 },
+ { 0x1b8020e2, 0x2c000002 },
+ { 0x1b8020e5, 0x30000006 },
+ { 0x09802100, 0x68000001 },
+ { 0x09002102, 0x24000000 },
+ { 0x09802103, 0x68000003 },
+ { 0x09002107, 0x24000000 },
+ { 0x09802108, 0x68000001 },
+ { 0x0900210a, 0x14000000 },
+ { 0x0980210b, 0x24000002 },
+ { 0x0980210e, 0x14000001 },
+ { 0x09802110, 0x24000002 },
+ { 0x09002113, 0x14000000 },
+ { 0x09002114, 0x68000000 },
+ { 0x09002115, 0x24000000 },
+ { 0x09802116, 0x68000002 },
+ { 0x09802119, 0x24000004 },
+ { 0x0980211e, 0x68000005 },
+ { 0x09002124, 0x24000000 },
+ { 0x09002125, 0x68000000 },
+ { 0x13002126, 0x2400e2a3 },
+ { 0x09002127, 0x68000000 },
+ { 0x09002128, 0x24000000 },
+ { 0x09002129, 0x68000000 },
+ { 0x2100212a, 0x2400df41 },
+ { 0x2100212b, 0x2400dfba },
+ { 0x0980212c, 0x24000001 },
+ { 0x0900212e, 0x68000000 },
+ { 0x0900212f, 0x14000000 },
+ { 0x09802130, 0x24000001 },
+ { 0x09002132, 0x68000000 },
+ { 0x09002133, 0x24000000 },
+ { 0x09002134, 0x14000000 },
+ { 0x09802135, 0x1c000003 },
+ { 0x09002139, 0x14000000 },
+ { 0x0980213a, 0x68000001 },
+ { 0x0980213c, 0x14000001 },
+ { 0x0980213e, 0x24000001 },
+ { 0x09802140, 0x64000004 },
+ { 0x09002145, 0x24000000 },
+ { 0x09802146, 0x14000003 },
+ { 0x0900214a, 0x68000000 },
+ { 0x0900214b, 0x64000000 },
+ { 0x0900214c, 0x68000000 },
+ { 0x09802153, 0x3c00000c },
+ { 0x09002160, 0x38000010 },
+ { 0x09002161, 0x38000010 },
+ { 0x09002162, 0x38000010 },
+ { 0x09002163, 0x38000010 },
+ { 0x09002164, 0x38000010 },
+ { 0x09002165, 0x38000010 },
+ { 0x09002166, 0x38000010 },
+ { 0x09002167, 0x38000010 },
+ { 0x09002168, 0x38000010 },
+ { 0x09002169, 0x38000010 },
+ { 0x0900216a, 0x38000010 },
+ { 0x0900216b, 0x38000010 },
+ { 0x0900216c, 0x38000010 },
+ { 0x0900216d, 0x38000010 },
+ { 0x0900216e, 0x38000010 },
+ { 0x0900216f, 0x38000010 },
+ { 0x09002170, 0x3800fff0 },
+ { 0x09002171, 0x3800fff0 },
+ { 0x09002172, 0x3800fff0 },
+ { 0x09002173, 0x3800fff0 },
+ { 0x09002174, 0x3800fff0 },
+ { 0x09002175, 0x3800fff0 },
+ { 0x09002176, 0x3800fff0 },
+ { 0x09002177, 0x3800fff0 },
+ { 0x09002178, 0x3800fff0 },
+ { 0x09002179, 0x3800fff0 },
+ { 0x0900217a, 0x3800fff0 },
+ { 0x0900217b, 0x3800fff0 },
+ { 0x0900217c, 0x3800fff0 },
+ { 0x0900217d, 0x3800fff0 },
+ { 0x0900217e, 0x3800fff0 },
+ { 0x0900217f, 0x3800fff0 },
+ { 0x09802180, 0x38000003 },
+ { 0x09802190, 0x64000004 },
+ { 0x09802195, 0x68000004 },
+ { 0x0980219a, 0x64000001 },
+ { 0x0980219c, 0x68000003 },
+ { 0x090021a0, 0x64000000 },
+ { 0x098021a1, 0x68000001 },
+ { 0x090021a3, 0x64000000 },
+ { 0x098021a4, 0x68000001 },
+ { 0x090021a6, 0x64000000 },
+ { 0x098021a7, 0x68000006 },
+ { 0x090021ae, 0x64000000 },
+ { 0x098021af, 0x6800001e },
+ { 0x098021ce, 0x64000001 },
+ { 0x098021d0, 0x68000001 },
+ { 0x090021d2, 0x64000000 },
+ { 0x090021d3, 0x68000000 },
+ { 0x090021d4, 0x64000000 },
+ { 0x098021d5, 0x6800001e },
+ { 0x098021f4, 0x6400010b },
+ { 0x09802300, 0x68000007 },
+ { 0x09802308, 0x64000003 },
+ { 0x0980230c, 0x68000013 },
+ { 0x09802320, 0x64000001 },
+ { 0x09802322, 0x68000006 },
+ { 0x09002329, 0x58000000 },
+ { 0x0900232a, 0x48000000 },
+ { 0x0980232b, 0x68000050 },
+ { 0x0900237c, 0x64000000 },
+ { 0x0980237d, 0x6800001d },
+ { 0x0980239b, 0x64000018 },
+ { 0x090023b4, 0x58000000 },
+ { 0x090023b5, 0x48000000 },
+ { 0x090023b6, 0x54000000 },
+ { 0x098023b7, 0x68000024 },
+ { 0x09802400, 0x68000026 },
+ { 0x09802440, 0x6800000a },
+ { 0x09802460, 0x3c00003b },
+ { 0x0980249c, 0x68000019 },
+ { 0x090024b6, 0x6800001a },
+ { 0x090024b7, 0x6800001a },
+ { 0x090024b8, 0x6800001a },
+ { 0x090024b9, 0x6800001a },
+ { 0x090024ba, 0x6800001a },
+ { 0x090024bb, 0x6800001a },
+ { 0x090024bc, 0x6800001a },
+ { 0x090024bd, 0x6800001a },
+ { 0x090024be, 0x6800001a },
+ { 0x090024bf, 0x6800001a },
+ { 0x090024c0, 0x6800001a },
+ { 0x090024c1, 0x6800001a },
+ { 0x090024c2, 0x6800001a },
+ { 0x090024c3, 0x6800001a },
+ { 0x090024c4, 0x6800001a },
+ { 0x090024c5, 0x6800001a },
+ { 0x090024c6, 0x6800001a },
+ { 0x090024c7, 0x6800001a },
+ { 0x090024c8, 0x6800001a },
+ { 0x090024c9, 0x6800001a },
+ { 0x090024ca, 0x6800001a },
+ { 0x090024cb, 0x6800001a },
+ { 0x090024cc, 0x6800001a },
+ { 0x090024cd, 0x6800001a },
+ { 0x090024ce, 0x6800001a },
+ { 0x090024cf, 0x6800001a },
+ { 0x090024d0, 0x6800ffe6 },
+ { 0x090024d1, 0x6800ffe6 },
+ { 0x090024d2, 0x6800ffe6 },
+ { 0x090024d3, 0x6800ffe6 },
+ { 0x090024d4, 0x6800ffe6 },
+ { 0x090024d5, 0x6800ffe6 },
+ { 0x090024d6, 0x6800ffe6 },
+ { 0x090024d7, 0x6800ffe6 },
+ { 0x090024d8, 0x6800ffe6 },
+ { 0x090024d9, 0x6800ffe6 },
+ { 0x090024da, 0x6800ffe6 },
+ { 0x090024db, 0x6800ffe6 },
+ { 0x090024dc, 0x6800ffe6 },
+ { 0x090024dd, 0x6800ffe6 },
+ { 0x090024de, 0x6800ffe6 },
+ { 0x090024df, 0x6800ffe6 },
+ { 0x090024e0, 0x6800ffe6 },
+ { 0x090024e1, 0x6800ffe6 },
+ { 0x090024e2, 0x6800ffe6 },
+ { 0x090024e3, 0x6800ffe6 },
+ { 0x090024e4, 0x6800ffe6 },
+ { 0x090024e5, 0x6800ffe6 },
+ { 0x090024e6, 0x6800ffe6 },
+ { 0x090024e7, 0x6800ffe6 },
+ { 0x090024e8, 0x6800ffe6 },
+ { 0x090024e9, 0x6800ffe6 },
+ { 0x098024ea, 0x3c000015 },
+ { 0x09802500, 0x680000b6 },
+ { 0x090025b7, 0x64000000 },
+ { 0x098025b8, 0x68000008 },
+ { 0x090025c1, 0x64000000 },
+ { 0x098025c2, 0x68000035 },
+ { 0x098025f8, 0x64000007 },
+ { 0x09802600, 0x6800006e },
+ { 0x0900266f, 0x64000000 },
+ { 0x09802670, 0x6800002c },
+ { 0x098026a0, 0x68000011 },
+ { 0x09802701, 0x68000003 },
+ { 0x09802706, 0x68000003 },
+ { 0x0980270c, 0x6800001b },
+ { 0x09802729, 0x68000022 },
+ { 0x0900274d, 0x68000000 },
+ { 0x0980274f, 0x68000003 },
+ { 0x09002756, 0x68000000 },
+ { 0x09802758, 0x68000006 },
+ { 0x09802761, 0x68000006 },
+ { 0x09002768, 0x58000000 },
+ { 0x09002769, 0x48000000 },
+ { 0x0900276a, 0x58000000 },
+ { 0x0900276b, 0x48000000 },
+ { 0x0900276c, 0x58000000 },
+ { 0x0900276d, 0x48000000 },
+ { 0x0900276e, 0x58000000 },
+ { 0x0900276f, 0x48000000 },
+ { 0x09002770, 0x58000000 },
+ { 0x09002771, 0x48000000 },
+ { 0x09002772, 0x58000000 },
+ { 0x09002773, 0x48000000 },
+ { 0x09002774, 0x58000000 },
+ { 0x09002775, 0x48000000 },
+ { 0x09802776, 0x3c00001d },
+ { 0x09002794, 0x68000000 },
+ { 0x09802798, 0x68000017 },
+ { 0x098027b1, 0x6800000d },
+ { 0x098027c0, 0x64000004 },
+ { 0x090027c5, 0x58000000 },
+ { 0x090027c6, 0x48000000 },
+ { 0x098027d0, 0x64000015 },
+ { 0x090027e6, 0x58000000 },
+ { 0x090027e7, 0x48000000 },
+ { 0x090027e8, 0x58000000 },
+ { 0x090027e9, 0x48000000 },
+ { 0x090027ea, 0x58000000 },
+ { 0x090027eb, 0x48000000 },
+ { 0x098027f0, 0x6400000f },
+ { 0x04802800, 0x680000ff },
+ { 0x09802900, 0x64000082 },
+ { 0x09002983, 0x58000000 },
+ { 0x09002984, 0x48000000 },
+ { 0x09002985, 0x58000000 },
+ { 0x09002986, 0x48000000 },
+ { 0x09002987, 0x58000000 },
+ { 0x09002988, 0x48000000 },
+ { 0x09002989, 0x58000000 },
+ { 0x0900298a, 0x48000000 },
+ { 0x0900298b, 0x58000000 },
+ { 0x0900298c, 0x48000000 },
+ { 0x0900298d, 0x58000000 },
+ { 0x0900298e, 0x48000000 },
+ { 0x0900298f, 0x58000000 },
+ { 0x09002990, 0x48000000 },
+ { 0x09002991, 0x58000000 },
+ { 0x09002992, 0x48000000 },
+ { 0x09002993, 0x58000000 },
+ { 0x09002994, 0x48000000 },
+ { 0x09002995, 0x58000000 },
+ { 0x09002996, 0x48000000 },
+ { 0x09002997, 0x58000000 },
+ { 0x09002998, 0x48000000 },
+ { 0x09802999, 0x6400003e },
+ { 0x090029d8, 0x58000000 },
+ { 0x090029d9, 0x48000000 },
+ { 0x090029da, 0x58000000 },
+ { 0x090029db, 0x48000000 },
+ { 0x098029dc, 0x6400001f },
+ { 0x090029fc, 0x58000000 },
+ { 0x090029fd, 0x48000000 },
+ { 0x098029fe, 0x64000101 },
+ { 0x09802b00, 0x68000013 },
+ { 0x11002c00, 0x24000030 },
+ { 0x11002c01, 0x24000030 },
+ { 0x11002c02, 0x24000030 },
+ { 0x11002c03, 0x24000030 },
+ { 0x11002c04, 0x24000030 },
+ { 0x11002c05, 0x24000030 },
+ { 0x11002c06, 0x24000030 },
+ { 0x11002c07, 0x24000030 },
+ { 0x11002c08, 0x24000030 },
+ { 0x11002c09, 0x24000030 },
+ { 0x11002c0a, 0x24000030 },
+ { 0x11002c0b, 0x24000030 },
+ { 0x11002c0c, 0x24000030 },
+ { 0x11002c0d, 0x24000030 },
+ { 0x11002c0e, 0x24000030 },
+ { 0x11002c0f, 0x24000030 },
+ { 0x11002c10, 0x24000030 },
+ { 0x11002c11, 0x24000030 },
+ { 0x11002c12, 0x24000030 },
+ { 0x11002c13, 0x24000030 },
+ { 0x11002c14, 0x24000030 },
+ { 0x11002c15, 0x24000030 },
+ { 0x11002c16, 0x24000030 },
+ { 0x11002c17, 0x24000030 },
+ { 0x11002c18, 0x24000030 },
+ { 0x11002c19, 0x24000030 },
+ { 0x11002c1a, 0x24000030 },
+ { 0x11002c1b, 0x24000030 },
+ { 0x11002c1c, 0x24000030 },
+ { 0x11002c1d, 0x24000030 },
+ { 0x11002c1e, 0x24000030 },
+ { 0x11002c1f, 0x24000030 },
+ { 0x11002c20, 0x24000030 },
+ { 0x11002c21, 0x24000030 },
+ { 0x11002c22, 0x24000030 },
+ { 0x11002c23, 0x24000030 },
+ { 0x11002c24, 0x24000030 },
+ { 0x11002c25, 0x24000030 },
+ { 0x11002c26, 0x24000030 },
+ { 0x11002c27, 0x24000030 },
+ { 0x11002c28, 0x24000030 },
+ { 0x11002c29, 0x24000030 },
+ { 0x11002c2a, 0x24000030 },
+ { 0x11002c2b, 0x24000030 },
+ { 0x11002c2c, 0x24000030 },
+ { 0x11002c2d, 0x24000030 },
+ { 0x11002c2e, 0x24000030 },
+ { 0x11002c30, 0x1400ffd0 },
+ { 0x11002c31, 0x1400ffd0 },
+ { 0x11002c32, 0x1400ffd0 },
+ { 0x11002c33, 0x1400ffd0 },
+ { 0x11002c34, 0x1400ffd0 },
+ { 0x11002c35, 0x1400ffd0 },
+ { 0x11002c36, 0x1400ffd0 },
+ { 0x11002c37, 0x1400ffd0 },
+ { 0x11002c38, 0x1400ffd0 },
+ { 0x11002c39, 0x1400ffd0 },
+ { 0x11002c3a, 0x1400ffd0 },
+ { 0x11002c3b, 0x1400ffd0 },
+ { 0x11002c3c, 0x1400ffd0 },
+ { 0x11002c3d, 0x1400ffd0 },
+ { 0x11002c3e, 0x1400ffd0 },
+ { 0x11002c3f, 0x1400ffd0 },
+ { 0x11002c40, 0x1400ffd0 },
+ { 0x11002c41, 0x1400ffd0 },
+ { 0x11002c42, 0x1400ffd0 },
+ { 0x11002c43, 0x1400ffd0 },
+ { 0x11002c44, 0x1400ffd0 },
+ { 0x11002c45, 0x1400ffd0 },
+ { 0x11002c46, 0x1400ffd0 },
+ { 0x11002c47, 0x1400ffd0 },
+ { 0x11002c48, 0x1400ffd0 },
+ { 0x11002c49, 0x1400ffd0 },
+ { 0x11002c4a, 0x1400ffd0 },
+ { 0x11002c4b, 0x1400ffd0 },
+ { 0x11002c4c, 0x1400ffd0 },
+ { 0x11002c4d, 0x1400ffd0 },
+ { 0x11002c4e, 0x1400ffd0 },
+ { 0x11002c4f, 0x1400ffd0 },
+ { 0x11002c50, 0x1400ffd0 },
+ { 0x11002c51, 0x1400ffd0 },
+ { 0x11002c52, 0x1400ffd0 },
+ { 0x11002c53, 0x1400ffd0 },
+ { 0x11002c54, 0x1400ffd0 },
+ { 0x11002c55, 0x1400ffd0 },
+ { 0x11002c56, 0x1400ffd0 },
+ { 0x11002c57, 0x1400ffd0 },
+ { 0x11002c58, 0x1400ffd0 },
+ { 0x11002c59, 0x1400ffd0 },
+ { 0x11002c5a, 0x1400ffd0 },
+ { 0x11002c5b, 0x1400ffd0 },
+ { 0x11002c5c, 0x1400ffd0 },
+ { 0x11002c5d, 0x1400ffd0 },
+ { 0x11002c5e, 0x1400ffd0 },
+ { 0x0a002c80, 0x24000001 },
+ { 0x0a002c81, 0x1400ffff },
+ { 0x0a002c82, 0x24000001 },
+ { 0x0a002c83, 0x1400ffff },
+ { 0x0a002c84, 0x24000001 },
+ { 0x0a002c85, 0x1400ffff },
+ { 0x0a002c86, 0x24000001 },
+ { 0x0a002c87, 0x1400ffff },
+ { 0x0a002c88, 0x24000001 },
+ { 0x0a002c89, 0x1400ffff },
+ { 0x0a002c8a, 0x24000001 },
+ { 0x0a002c8b, 0x1400ffff },
+ { 0x0a002c8c, 0x24000001 },
+ { 0x0a002c8d, 0x1400ffff },
+ { 0x0a002c8e, 0x24000001 },
+ { 0x0a002c8f, 0x1400ffff },
+ { 0x0a002c90, 0x24000001 },
+ { 0x0a002c91, 0x1400ffff },
+ { 0x0a002c92, 0x24000001 },
+ { 0x0a002c93, 0x1400ffff },
+ { 0x0a002c94, 0x24000001 },
+ { 0x0a002c95, 0x1400ffff },
+ { 0x0a002c96, 0x24000001 },
+ { 0x0a002c97, 0x1400ffff },
+ { 0x0a002c98, 0x24000001 },
+ { 0x0a002c99, 0x1400ffff },
+ { 0x0a002c9a, 0x24000001 },
+ { 0x0a002c9b, 0x1400ffff },
+ { 0x0a002c9c, 0x24000001 },
+ { 0x0a002c9d, 0x1400ffff },
+ { 0x0a002c9e, 0x24000001 },
+ { 0x0a002c9f, 0x1400ffff },
+ { 0x0a002ca0, 0x24000001 },
+ { 0x0a002ca1, 0x1400ffff },
+ { 0x0a002ca2, 0x24000001 },
+ { 0x0a002ca3, 0x1400ffff },
+ { 0x0a002ca4, 0x24000001 },
+ { 0x0a002ca5, 0x1400ffff },
+ { 0x0a002ca6, 0x24000001 },
+ { 0x0a002ca7, 0x1400ffff },
+ { 0x0a002ca8, 0x24000001 },
+ { 0x0a002ca9, 0x1400ffff },
+ { 0x0a002caa, 0x24000001 },
+ { 0x0a002cab, 0x1400ffff },
+ { 0x0a002cac, 0x24000001 },
+ { 0x0a002cad, 0x1400ffff },
+ { 0x0a002cae, 0x24000001 },
+ { 0x0a002caf, 0x1400ffff },
+ { 0x0a002cb0, 0x24000001 },
+ { 0x0a002cb1, 0x1400ffff },
+ { 0x0a002cb2, 0x24000001 },
+ { 0x0a002cb3, 0x1400ffff },
+ { 0x0a002cb4, 0x24000001 },
+ { 0x0a002cb5, 0x1400ffff },
+ { 0x0a002cb6, 0x24000001 },
+ { 0x0a002cb7, 0x1400ffff },
+ { 0x0a002cb8, 0x24000001 },
+ { 0x0a002cb9, 0x1400ffff },
+ { 0x0a002cba, 0x24000001 },
+ { 0x0a002cbb, 0x1400ffff },
+ { 0x0a002cbc, 0x24000001 },
+ { 0x0a002cbd, 0x1400ffff },
+ { 0x0a002cbe, 0x24000001 },
+ { 0x0a002cbf, 0x1400ffff },
+ { 0x0a002cc0, 0x24000001 },
+ { 0x0a002cc1, 0x1400ffff },
+ { 0x0a002cc2, 0x24000001 },
+ { 0x0a002cc3, 0x1400ffff },
+ { 0x0a002cc4, 0x24000001 },
+ { 0x0a002cc5, 0x1400ffff },
+ { 0x0a002cc6, 0x24000001 },
+ { 0x0a002cc7, 0x1400ffff },
+ { 0x0a002cc8, 0x24000001 },
+ { 0x0a002cc9, 0x1400ffff },
+ { 0x0a002cca, 0x24000001 },
+ { 0x0a002ccb, 0x1400ffff },
+ { 0x0a002ccc, 0x24000001 },
+ { 0x0a002ccd, 0x1400ffff },
+ { 0x0a002cce, 0x24000001 },
+ { 0x0a002ccf, 0x1400ffff },
+ { 0x0a002cd0, 0x24000001 },
+ { 0x0a002cd1, 0x1400ffff },
+ { 0x0a002cd2, 0x24000001 },
+ { 0x0a002cd3, 0x1400ffff },
+ { 0x0a002cd4, 0x24000001 },
+ { 0x0a002cd5, 0x1400ffff },
+ { 0x0a002cd6, 0x24000001 },
+ { 0x0a002cd7, 0x1400ffff },
+ { 0x0a002cd8, 0x24000001 },
+ { 0x0a002cd9, 0x1400ffff },
+ { 0x0a002cda, 0x24000001 },
+ { 0x0a002cdb, 0x1400ffff },
+ { 0x0a002cdc, 0x24000001 },
+ { 0x0a002cdd, 0x1400ffff },
+ { 0x0a002cde, 0x24000001 },
+ { 0x0a002cdf, 0x1400ffff },
+ { 0x0a002ce0, 0x24000001 },
+ { 0x0a002ce1, 0x1400ffff },
+ { 0x0a002ce2, 0x24000001 },
+ { 0x0a002ce3, 0x1400ffff },
+ { 0x0a002ce4, 0x14000000 },
+ { 0x0a802ce5, 0x68000005 },
+ { 0x0a802cf9, 0x54000003 },
+ { 0x0a002cfd, 0x3c000000 },
+ { 0x0a802cfe, 0x54000001 },
+ { 0x10002d00, 0x1400e3a0 },
+ { 0x10002d01, 0x1400e3a0 },
+ { 0x10002d02, 0x1400e3a0 },
+ { 0x10002d03, 0x1400e3a0 },
+ { 0x10002d04, 0x1400e3a0 },
+ { 0x10002d05, 0x1400e3a0 },
+ { 0x10002d06, 0x1400e3a0 },
+ { 0x10002d07, 0x1400e3a0 },
+ { 0x10002d08, 0x1400e3a0 },
+ { 0x10002d09, 0x1400e3a0 },
+ { 0x10002d0a, 0x1400e3a0 },
+ { 0x10002d0b, 0x1400e3a0 },
+ { 0x10002d0c, 0x1400e3a0 },
+ { 0x10002d0d, 0x1400e3a0 },
+ { 0x10002d0e, 0x1400e3a0 },
+ { 0x10002d0f, 0x1400e3a0 },
+ { 0x10002d10, 0x1400e3a0 },
+ { 0x10002d11, 0x1400e3a0 },
+ { 0x10002d12, 0x1400e3a0 },
+ { 0x10002d13, 0x1400e3a0 },
+ { 0x10002d14, 0x1400e3a0 },
+ { 0x10002d15, 0x1400e3a0 },
+ { 0x10002d16, 0x1400e3a0 },
+ { 0x10002d17, 0x1400e3a0 },
+ { 0x10002d18, 0x1400e3a0 },
+ { 0x10002d19, 0x1400e3a0 },
+ { 0x10002d1a, 0x1400e3a0 },
+ { 0x10002d1b, 0x1400e3a0 },
+ { 0x10002d1c, 0x1400e3a0 },
+ { 0x10002d1d, 0x1400e3a0 },
+ { 0x10002d1e, 0x1400e3a0 },
+ { 0x10002d1f, 0x1400e3a0 },
+ { 0x10002d20, 0x1400e3a0 },
+ { 0x10002d21, 0x1400e3a0 },
+ { 0x10002d22, 0x1400e3a0 },
+ { 0x10002d23, 0x1400e3a0 },
+ { 0x10002d24, 0x1400e3a0 },
+ { 0x10002d25, 0x1400e3a0 },
+ { 0x3a802d30, 0x1c000035 },
+ { 0x3a002d6f, 0x18000000 },
+ { 0x0f802d80, 0x1c000016 },
+ { 0x0f802da0, 0x1c000006 },
+ { 0x0f802da8, 0x1c000006 },
+ { 0x0f802db0, 0x1c000006 },
+ { 0x0f802db8, 0x1c000006 },
+ { 0x0f802dc0, 0x1c000006 },
+ { 0x0f802dc8, 0x1c000006 },
+ { 0x0f802dd0, 0x1c000006 },
+ { 0x0f802dd8, 0x1c000006 },
+ { 0x09802e00, 0x54000001 },
+ { 0x09002e02, 0x50000000 },
+ { 0x09002e03, 0x4c000000 },
+ { 0x09002e04, 0x50000000 },
+ { 0x09002e05, 0x4c000000 },
+ { 0x09802e06, 0x54000002 },
+ { 0x09002e09, 0x50000000 },
+ { 0x09002e0a, 0x4c000000 },
+ { 0x09002e0b, 0x54000000 },
+ { 0x09002e0c, 0x50000000 },
+ { 0x09002e0d, 0x4c000000 },
+ { 0x09802e0e, 0x54000008 },
+ { 0x09002e17, 0x44000000 },
+ { 0x09002e1c, 0x50000000 },
+ { 0x09002e1d, 0x4c000000 },
+ { 0x16802e80, 0x68000019 },
+ { 0x16802e9b, 0x68000058 },
+ { 0x16802f00, 0x680000d5 },
+ { 0x09802ff0, 0x6800000b },
+ { 0x09003000, 0x74000000 },
+ { 0x09803001, 0x54000002 },
+ { 0x09003004, 0x68000000 },
+ { 0x16003005, 0x18000000 },
+ { 0x09003006, 0x1c000000 },
+ { 0x16003007, 0x38000000 },
+ { 0x09003008, 0x58000000 },
+ { 0x09003009, 0x48000000 },
+ { 0x0900300a, 0x58000000 },
+ { 0x0900300b, 0x48000000 },
+ { 0x0900300c, 0x58000000 },
+ { 0x0900300d, 0x48000000 },
+ { 0x0900300e, 0x58000000 },
+ { 0x0900300f, 0x48000000 },
+ { 0x09003010, 0x58000000 },
+ { 0x09003011, 0x48000000 },
+ { 0x09803012, 0x68000001 },
+ { 0x09003014, 0x58000000 },
+ { 0x09003015, 0x48000000 },
+ { 0x09003016, 0x58000000 },
+ { 0x09003017, 0x48000000 },
+ { 0x09003018, 0x58000000 },
+ { 0x09003019, 0x48000000 },
+ { 0x0900301a, 0x58000000 },
+ { 0x0900301b, 0x48000000 },
+ { 0x0900301c, 0x44000000 },
+ { 0x0900301d, 0x58000000 },
+ { 0x0980301e, 0x48000001 },
+ { 0x09003020, 0x68000000 },
+ { 0x16803021, 0x38000008 },
+ { 0x1b80302a, 0x30000005 },
+ { 0x09003030, 0x44000000 },
+ { 0x09803031, 0x18000004 },
+ { 0x09803036, 0x68000001 },
+ { 0x16803038, 0x38000002 },
+ { 0x1600303b, 0x18000000 },
+ { 0x0900303c, 0x1c000000 },
+ { 0x0900303d, 0x54000000 },
+ { 0x0980303e, 0x68000001 },
+ { 0x1a803041, 0x1c000055 },
+ { 0x1b803099, 0x30000001 },
+ { 0x0980309b, 0x60000001 },
+ { 0x1a80309d, 0x18000001 },
+ { 0x1a00309f, 0x1c000000 },
+ { 0x090030a0, 0x44000000 },
+ { 0x1d8030a1, 0x1c000059 },
+ { 0x090030fb, 0x54000000 },
+ { 0x098030fc, 0x18000002 },
+ { 0x1d0030ff, 0x1c000000 },
+ { 0x03803105, 0x1c000027 },
+ { 0x17803131, 0x1c00005d },
+ { 0x09803190, 0x68000001 },
+ { 0x09803192, 0x3c000003 },
+ { 0x09803196, 0x68000009 },
+ { 0x038031a0, 0x1c000017 },
+ { 0x098031c0, 0x6800000f },
+ { 0x1d8031f0, 0x1c00000f },
+ { 0x17803200, 0x6800001e },
+ { 0x09803220, 0x3c000009 },
+ { 0x0980322a, 0x68000019 },
+ { 0x09003250, 0x68000000 },
+ { 0x09803251, 0x3c00000e },
+ { 0x17803260, 0x6800001f },
+ { 0x09803280, 0x3c000009 },
+ { 0x0980328a, 0x68000026 },
+ { 0x098032b1, 0x3c00000e },
+ { 0x098032c0, 0x6800003e },
+ { 0x09803300, 0x680000ff },
+ { 0x16803400, 0x1c0019b5 },
+ { 0x09804dc0, 0x6800003f },
+ { 0x16804e00, 0x1c0051bb },
+ { 0x3c80a000, 0x1c000014 },
+ { 0x3c00a015, 0x18000000 },
+ { 0x3c80a016, 0x1c000476 },
+ { 0x3c80a490, 0x68000036 },
+ { 0x0980a700, 0x60000016 },
+ { 0x3080a800, 0x1c000001 },
+ { 0x3000a802, 0x28000000 },
+ { 0x3080a803, 0x1c000002 },
+ { 0x3000a806, 0x30000000 },
+ { 0x3080a807, 0x1c000003 },
+ { 0x3000a80b, 0x30000000 },
+ { 0x3080a80c, 0x1c000016 },
+ { 0x3080a823, 0x28000001 },
+ { 0x3080a825, 0x30000001 },
+ { 0x3000a827, 0x28000000 },
+ { 0x3080a828, 0x68000003 },
+ { 0x1780ac00, 0x1c002ba3 },
+ { 0x0980d800, 0x1000037f },
+ { 0x0980db80, 0x1000007f },
+ { 0x0980dc00, 0x100003ff },
+ { 0x0980e000, 0x0c0018ff },
+ { 0x1680f900, 0x1c00012d },
+ { 0x1680fa30, 0x1c00003a },
+ { 0x1680fa70, 0x1c000069 },
+ { 0x2180fb00, 0x14000006 },
+ { 0x0180fb13, 0x14000004 },
+ { 0x1900fb1d, 0x1c000000 },
+ { 0x1900fb1e, 0x30000000 },
+ { 0x1980fb1f, 0x1c000009 },
+ { 0x1900fb29, 0x64000000 },
+ { 0x1980fb2a, 0x1c00000c },
+ { 0x1980fb38, 0x1c000004 },
+ { 0x1900fb3e, 0x1c000000 },
+ { 0x1980fb40, 0x1c000001 },
+ { 0x1980fb43, 0x1c000001 },
+ { 0x1980fb46, 0x1c00006b },
+ { 0x0080fbd3, 0x1c00016a },
+ { 0x0900fd3e, 0x58000000 },
+ { 0x0900fd3f, 0x48000000 },
+ { 0x0080fd50, 0x1c00003f },
+ { 0x0080fd92, 0x1c000035 },
+ { 0x0080fdf0, 0x1c00000b },
+ { 0x0000fdfc, 0x5c000000 },
+ { 0x0900fdfd, 0x68000000 },
+ { 0x1b80fe00, 0x3000000f },
+ { 0x0980fe10, 0x54000006 },
+ { 0x0900fe17, 0x58000000 },
+ { 0x0900fe18, 0x48000000 },
+ { 0x0900fe19, 0x54000000 },
+ { 0x1b80fe20, 0x30000003 },
+ { 0x0900fe30, 0x54000000 },
+ { 0x0980fe31, 0x44000001 },
+ { 0x0980fe33, 0x40000001 },
+ { 0x0900fe35, 0x58000000 },
+ { 0x0900fe36, 0x48000000 },
+ { 0x0900fe37, 0x58000000 },
+ { 0x0900fe38, 0x48000000 },
+ { 0x0900fe39, 0x58000000 },
+ { 0x0900fe3a, 0x48000000 },
+ { 0x0900fe3b, 0x58000000 },
+ { 0x0900fe3c, 0x48000000 },
+ { 0x0900fe3d, 0x58000000 },
+ { 0x0900fe3e, 0x48000000 },
+ { 0x0900fe3f, 0x58000000 },
+ { 0x0900fe40, 0x48000000 },
+ { 0x0900fe41, 0x58000000 },
+ { 0x0900fe42, 0x48000000 },
+ { 0x0900fe43, 0x58000000 },
+ { 0x0900fe44, 0x48000000 },
+ { 0x0980fe45, 0x54000001 },
+ { 0x0900fe47, 0x58000000 },
+ { 0x0900fe48, 0x48000000 },
+ { 0x0980fe49, 0x54000003 },
+ { 0x0980fe4d, 0x40000002 },
+ { 0x0980fe50, 0x54000002 },
+ { 0x0980fe54, 0x54000003 },
+ { 0x0900fe58, 0x44000000 },
+ { 0x0900fe59, 0x58000000 },
+ { 0x0900fe5a, 0x48000000 },
+ { 0x0900fe5b, 0x58000000 },
+ { 0x0900fe5c, 0x48000000 },
+ { 0x0900fe5d, 0x58000000 },
+ { 0x0900fe5e, 0x48000000 },
+ { 0x0980fe5f, 0x54000002 },
+ { 0x0900fe62, 0x64000000 },
+ { 0x0900fe63, 0x44000000 },
+ { 0x0980fe64, 0x64000002 },
+ { 0x0900fe68, 0x54000000 },
+ { 0x0900fe69, 0x5c000000 },
+ { 0x0980fe6a, 0x54000001 },
+ { 0x0080fe70, 0x1c000004 },
+ { 0x0080fe76, 0x1c000086 },
+ { 0x0900feff, 0x04000000 },
+ { 0x0980ff01, 0x54000002 },
+ { 0x0900ff04, 0x5c000000 },
+ { 0x0980ff05, 0x54000002 },
+ { 0x0900ff08, 0x58000000 },
+ { 0x0900ff09, 0x48000000 },
+ { 0x0900ff0a, 0x54000000 },
+ { 0x0900ff0b, 0x64000000 },
+ { 0x0900ff0c, 0x54000000 },
+ { 0x0900ff0d, 0x44000000 },
+ { 0x0980ff0e, 0x54000001 },
+ { 0x0980ff10, 0x34000009 },
+ { 0x0980ff1a, 0x54000001 },
+ { 0x0980ff1c, 0x64000002 },
+ { 0x0980ff1f, 0x54000001 },
+ { 0x2100ff21, 0x24000020 },
+ { 0x2100ff22, 0x24000020 },
+ { 0x2100ff23, 0x24000020 },
+ { 0x2100ff24, 0x24000020 },
+ { 0x2100ff25, 0x24000020 },
+ { 0x2100ff26, 0x24000020 },
+ { 0x2100ff27, 0x24000020 },
+ { 0x2100ff28, 0x24000020 },
+ { 0x2100ff29, 0x24000020 },
+ { 0x2100ff2a, 0x24000020 },
+ { 0x2100ff2b, 0x24000020 },
+ { 0x2100ff2c, 0x24000020 },
+ { 0x2100ff2d, 0x24000020 },
+ { 0x2100ff2e, 0x24000020 },
+ { 0x2100ff2f, 0x24000020 },
+ { 0x2100ff30, 0x24000020 },
+ { 0x2100ff31, 0x24000020 },
+ { 0x2100ff32, 0x24000020 },
+ { 0x2100ff33, 0x24000020 },
+ { 0x2100ff34, 0x24000020 },
+ { 0x2100ff35, 0x24000020 },
+ { 0x2100ff36, 0x24000020 },
+ { 0x2100ff37, 0x24000020 },
+ { 0x2100ff38, 0x24000020 },
+ { 0x2100ff39, 0x24000020 },
+ { 0x2100ff3a, 0x24000020 },
+ { 0x0900ff3b, 0x58000000 },
+ { 0x0900ff3c, 0x54000000 },
+ { 0x0900ff3d, 0x48000000 },
+ { 0x0900ff3e, 0x60000000 },
+ { 0x0900ff3f, 0x40000000 },
+ { 0x0900ff40, 0x60000000 },
+ { 0x2100ff41, 0x1400ffe0 },
+ { 0x2100ff42, 0x1400ffe0 },
+ { 0x2100ff43, 0x1400ffe0 },
+ { 0x2100ff44, 0x1400ffe0 },
+ { 0x2100ff45, 0x1400ffe0 },
+ { 0x2100ff46, 0x1400ffe0 },
+ { 0x2100ff47, 0x1400ffe0 },
+ { 0x2100ff48, 0x1400ffe0 },
+ { 0x2100ff49, 0x1400ffe0 },
+ { 0x2100ff4a, 0x1400ffe0 },
+ { 0x2100ff4b, 0x1400ffe0 },
+ { 0x2100ff4c, 0x1400ffe0 },
+ { 0x2100ff4d, 0x1400ffe0 },
+ { 0x2100ff4e, 0x1400ffe0 },
+ { 0x2100ff4f, 0x1400ffe0 },
+ { 0x2100ff50, 0x1400ffe0 },
+ { 0x2100ff51, 0x1400ffe0 },
+ { 0x2100ff52, 0x1400ffe0 },
+ { 0x2100ff53, 0x1400ffe0 },
+ { 0x2100ff54, 0x1400ffe0 },
+ { 0x2100ff55, 0x1400ffe0 },
+ { 0x2100ff56, 0x1400ffe0 },
+ { 0x2100ff57, 0x1400ffe0 },
+ { 0x2100ff58, 0x1400ffe0 },
+ { 0x2100ff59, 0x1400ffe0 },
+ { 0x2100ff5a, 0x1400ffe0 },
+ { 0x0900ff5b, 0x58000000 },
+ { 0x0900ff5c, 0x64000000 },
+ { 0x0900ff5d, 0x48000000 },
+ { 0x0900ff5e, 0x64000000 },
+ { 0x0900ff5f, 0x58000000 },
+ { 0x0900ff60, 0x48000000 },
+ { 0x0900ff61, 0x54000000 },
+ { 0x0900ff62, 0x58000000 },
+ { 0x0900ff63, 0x48000000 },
+ { 0x0980ff64, 0x54000001 },
+ { 0x1d80ff66, 0x1c000009 },
+ { 0x0900ff70, 0x18000000 },
+ { 0x1d80ff71, 0x1c00002c },
+ { 0x0980ff9e, 0x18000001 },
+ { 0x1780ffa0, 0x1c00001e },
+ { 0x1780ffc2, 0x1c000005 },
+ { 0x1780ffca, 0x1c000005 },
+ { 0x1780ffd2, 0x1c000005 },
+ { 0x1780ffda, 0x1c000002 },
+ { 0x0980ffe0, 0x5c000001 },
+ { 0x0900ffe2, 0x64000000 },
+ { 0x0900ffe3, 0x60000000 },
+ { 0x0900ffe4, 0x68000000 },
+ { 0x0980ffe5, 0x5c000001 },
+ { 0x0900ffe8, 0x68000000 },
+ { 0x0980ffe9, 0x64000003 },
+ { 0x0980ffed, 0x68000001 },
+ { 0x0980fff9, 0x04000002 },
+ { 0x0980fffc, 0x68000001 },
+ { 0x23810000, 0x1c00000b },
+ { 0x2381000d, 0x1c000019 },
+ { 0x23810028, 0x1c000012 },
+ { 0x2381003c, 0x1c000001 },
+ { 0x2381003f, 0x1c00000e },
+ { 0x23810050, 0x1c00000d },
+ { 0x23810080, 0x1c00007a },
+ { 0x09810100, 0x54000001 },
+ { 0x09010102, 0x68000000 },
+ { 0x09810107, 0x3c00002c },
+ { 0x09810137, 0x68000008 },
+ { 0x13810140, 0x38000034 },
+ { 0x13810175, 0x3c000003 },
+ { 0x13810179, 0x68000010 },
+ { 0x1301018a, 0x3c000000 },
+ { 0x29810300, 0x1c00001e },
+ { 0x29810320, 0x3c000003 },
+ { 0x12810330, 0x1c000019 },
+ { 0x1201034a, 0x38000000 },
+ { 0x3b810380, 0x1c00001d },
+ { 0x3b01039f, 0x54000000 },
+ { 0x2a8103a0, 0x1c000023 },
+ { 0x2a8103c8, 0x1c000007 },
+ { 0x2a0103d0, 0x68000000 },
+ { 0x2a8103d1, 0x38000004 },
+ { 0x0d010400, 0x24000028 },
+ { 0x0d010401, 0x24000028 },
+ { 0x0d010402, 0x24000028 },
+ { 0x0d010403, 0x24000028 },
+ { 0x0d010404, 0x24000028 },
+ { 0x0d010405, 0x24000028 },
+ { 0x0d010406, 0x24000028 },
+ { 0x0d010407, 0x24000028 },
+ { 0x0d010408, 0x24000028 },
+ { 0x0d010409, 0x24000028 },
+ { 0x0d01040a, 0x24000028 },
+ { 0x0d01040b, 0x24000028 },
+ { 0x0d01040c, 0x24000028 },
+ { 0x0d01040d, 0x24000028 },
+ { 0x0d01040e, 0x24000028 },
+ { 0x0d01040f, 0x24000028 },
+ { 0x0d010410, 0x24000028 },
+ { 0x0d010411, 0x24000028 },
+ { 0x0d010412, 0x24000028 },
+ { 0x0d010413, 0x24000028 },
+ { 0x0d010414, 0x24000028 },
+ { 0x0d010415, 0x24000028 },
+ { 0x0d010416, 0x24000028 },
+ { 0x0d010417, 0x24000028 },
+ { 0x0d010418, 0x24000028 },
+ { 0x0d010419, 0x24000028 },
+ { 0x0d01041a, 0x24000028 },
+ { 0x0d01041b, 0x24000028 },
+ { 0x0d01041c, 0x24000028 },
+ { 0x0d01041d, 0x24000028 },
+ { 0x0d01041e, 0x24000028 },
+ { 0x0d01041f, 0x24000028 },
+ { 0x0d010420, 0x24000028 },
+ { 0x0d010421, 0x24000028 },
+ { 0x0d010422, 0x24000028 },
+ { 0x0d010423, 0x24000028 },
+ { 0x0d010424, 0x24000028 },
+ { 0x0d010425, 0x24000028 },
+ { 0x0d010426, 0x24000028 },
+ { 0x0d010427, 0x24000028 },
+ { 0x0d010428, 0x1400ffd8 },
+ { 0x0d010429, 0x1400ffd8 },
+ { 0x0d01042a, 0x1400ffd8 },
+ { 0x0d01042b, 0x1400ffd8 },
+ { 0x0d01042c, 0x1400ffd8 },
+ { 0x0d01042d, 0x1400ffd8 },
+ { 0x0d01042e, 0x1400ffd8 },
+ { 0x0d01042f, 0x1400ffd8 },
+ { 0x0d010430, 0x1400ffd8 },
+ { 0x0d010431, 0x1400ffd8 },
+ { 0x0d010432, 0x1400ffd8 },
+ { 0x0d010433, 0x1400ffd8 },
+ { 0x0d010434, 0x1400ffd8 },
+ { 0x0d010435, 0x1400ffd8 },
+ { 0x0d010436, 0x1400ffd8 },
+ { 0x0d010437, 0x1400ffd8 },
+ { 0x0d010438, 0x1400ffd8 },
+ { 0x0d010439, 0x1400ffd8 },
+ { 0x0d01043a, 0x1400ffd8 },
+ { 0x0d01043b, 0x1400ffd8 },
+ { 0x0d01043c, 0x1400ffd8 },
+ { 0x0d01043d, 0x1400ffd8 },
+ { 0x0d01043e, 0x1400ffd8 },
+ { 0x0d01043f, 0x1400ffd8 },
+ { 0x0d010440, 0x1400ffd8 },
+ { 0x0d010441, 0x1400ffd8 },
+ { 0x0d010442, 0x1400ffd8 },
+ { 0x0d010443, 0x1400ffd8 },
+ { 0x0d010444, 0x1400ffd8 },
+ { 0x0d010445, 0x1400ffd8 },
+ { 0x0d010446, 0x1400ffd8 },
+ { 0x0d010447, 0x1400ffd8 },
+ { 0x0d010448, 0x1400ffd8 },
+ { 0x0d010449, 0x1400ffd8 },
+ { 0x0d01044a, 0x1400ffd8 },
+ { 0x0d01044b, 0x1400ffd8 },
+ { 0x0d01044c, 0x1400ffd8 },
+ { 0x0d01044d, 0x1400ffd8 },
+ { 0x0d01044e, 0x1400ffd8 },
+ { 0x0d01044f, 0x1400ffd8 },
+ { 0x2e810450, 0x1c00004d },
+ { 0x2c8104a0, 0x34000009 },
+ { 0x0b810800, 0x1c000005 },
+ { 0x0b010808, 0x1c000000 },
+ { 0x0b81080a, 0x1c00002b },
+ { 0x0b810837, 0x1c000001 },
+ { 0x0b01083c, 0x1c000000 },
+ { 0x0b01083f, 0x1c000000 },
+ { 0x1e010a00, 0x1c000000 },
+ { 0x1e810a01, 0x30000002 },
+ { 0x1e810a05, 0x30000001 },
+ { 0x1e810a0c, 0x30000003 },
+ { 0x1e810a10, 0x1c000003 },
+ { 0x1e810a15, 0x1c000002 },
+ { 0x1e810a19, 0x1c00001a },
+ { 0x1e810a38, 0x30000002 },
+ { 0x1e010a3f, 0x30000000 },
+ { 0x1e810a40, 0x3c000007 },
+ { 0x1e810a50, 0x54000008 },
+ { 0x0981d000, 0x680000f5 },
+ { 0x0981d100, 0x68000026 },
+ { 0x0981d12a, 0x6800003a },
+ { 0x0981d165, 0x28000001 },
+ { 0x1b81d167, 0x30000002 },
+ { 0x0981d16a, 0x68000002 },
+ { 0x0981d16d, 0x28000005 },
+ { 0x0981d173, 0x04000007 },
+ { 0x1b81d17b, 0x30000007 },
+ { 0x0981d183, 0x68000001 },
+ { 0x1b81d185, 0x30000006 },
+ { 0x0981d18c, 0x6800001d },
+ { 0x1b81d1aa, 0x30000003 },
+ { 0x0981d1ae, 0x6800002f },
+ { 0x1381d200, 0x68000041 },
+ { 0x1381d242, 0x30000002 },
+ { 0x1301d245, 0x68000000 },
+ { 0x0981d300, 0x68000056 },
+ { 0x0981d400, 0x24000019 },
+ { 0x0981d41a, 0x14000019 },
+ { 0x0981d434, 0x24000019 },
+ { 0x0981d44e, 0x14000006 },
+ { 0x0981d456, 0x14000011 },
+ { 0x0981d468, 0x24000019 },
+ { 0x0981d482, 0x14000019 },
+ { 0x0901d49c, 0x24000000 },
+ { 0x0981d49e, 0x24000001 },
+ { 0x0901d4a2, 0x24000000 },
+ { 0x0981d4a5, 0x24000001 },
+ { 0x0981d4a9, 0x24000003 },
+ { 0x0981d4ae, 0x24000007 },
+ { 0x0981d4b6, 0x14000003 },
+ { 0x0901d4bb, 0x14000000 },
+ { 0x0981d4bd, 0x14000006 },
+ { 0x0981d4c5, 0x1400000a },
+ { 0x0981d4d0, 0x24000019 },
+ { 0x0981d4ea, 0x14000019 },
+ { 0x0981d504, 0x24000001 },
+ { 0x0981d507, 0x24000003 },
+ { 0x0981d50d, 0x24000007 },
+ { 0x0981d516, 0x24000006 },
+ { 0x0981d51e, 0x14000019 },
+ { 0x0981d538, 0x24000001 },
+ { 0x0981d53b, 0x24000003 },
+ { 0x0981d540, 0x24000004 },
+ { 0x0901d546, 0x24000000 },
+ { 0x0981d54a, 0x24000006 },
+ { 0x0981d552, 0x14000019 },
+ { 0x0981d56c, 0x24000019 },
+ { 0x0981d586, 0x14000019 },
+ { 0x0981d5a0, 0x24000019 },
+ { 0x0981d5ba, 0x14000019 },
+ { 0x0981d5d4, 0x24000019 },
+ { 0x0981d5ee, 0x14000019 },
+ { 0x0981d608, 0x24000019 },
+ { 0x0981d622, 0x14000019 },
+ { 0x0981d63c, 0x24000019 },
+ { 0x0981d656, 0x14000019 },
+ { 0x0981d670, 0x24000019 },
+ { 0x0981d68a, 0x1400001b },
+ { 0x0981d6a8, 0x24000018 },
+ { 0x0901d6c1, 0x64000000 },
+ { 0x0981d6c2, 0x14000018 },
+ { 0x0901d6db, 0x64000000 },
+ { 0x0981d6dc, 0x14000005 },
+ { 0x0981d6e2, 0x24000018 },
+ { 0x0901d6fb, 0x64000000 },
+ { 0x0981d6fc, 0x14000018 },
+ { 0x0901d715, 0x64000000 },
+ { 0x0981d716, 0x14000005 },
+ { 0x0981d71c, 0x24000018 },
+ { 0x0901d735, 0x64000000 },
+ { 0x0981d736, 0x14000018 },
+ { 0x0901d74f, 0x64000000 },
+ { 0x0981d750, 0x14000005 },
+ { 0x0981d756, 0x24000018 },
+ { 0x0901d76f, 0x64000000 },
+ { 0x0981d770, 0x14000018 },
+ { 0x0901d789, 0x64000000 },
+ { 0x0981d78a, 0x14000005 },
+ { 0x0981d790, 0x24000018 },
+ { 0x0901d7a9, 0x64000000 },
+ { 0x0981d7aa, 0x14000018 },
+ { 0x0901d7c3, 0x64000000 },
+ { 0x0981d7c4, 0x14000005 },
+ { 0x0981d7ce, 0x34000031 },
+ { 0x16820000, 0x1c00a6d6 },
+ { 0x1682f800, 0x1c00021d },
+ { 0x090e0001, 0x04000000 },
+ { 0x098e0020, 0x0400005f },
+ { 0x1b8e0100, 0x300000ef },
+ { 0x098f0000, 0x0c00fffd },
+ { 0x09900000, 0x0c00fffd },
};
diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c
index 28d4dc5b3..d1cdc1195 100644
--- a/ext/pcre/php_pcre.c
+++ b/ext/pcre/php_pcre.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pcre.c,v 1.168.2.5 2006/01/01 12:50:11 sniper Exp $ */
+/* $Id: php_pcre.c,v 1.168.2.9 2006/04/11 21:33:46 andrei Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -453,7 +453,7 @@ static void php_pcre_match(INTERNAL_FUNCTION_PARAMETERS, int global)
/*
* Build a mapping from subpattern numbers to their names. We will always
- * allocate the table, even though they may be no named subpatterns. This
+ * allocate the table, even though there may be no named subpatterns. This
* avoids somewhat more complicated logic in the inner loops.
*/
subpat_names = (char **)safe_emalloc(num_subpats, sizeof(char *), 0);
@@ -467,22 +467,34 @@ static void php_pcre_match(INTERNAL_FUNCTION_PARAMETERS, int global)
if (rc < 0) {
php_error(E_WARNING, "%s: internal pcre_fullinfo() error %d",
get_active_function_name(TSRMLS_C), rc);
+ efree(offsets);
+ efree(subpat_names);
RETURN_FALSE;
}
if (name_cnt > 0) {
int rc1, rc2;
+ long dummy_l;
+ double dummy_d;
rc1 = pcre_fullinfo(re, extra, PCRE_INFO_NAMETABLE, &name_table);
rc2 = pcre_fullinfo(re, extra, PCRE_INFO_NAMEENTRYSIZE, &name_size);
rc = rc2 ? rc2 : rc1;
if (rc < 0) {
php_error(E_WARNING, "%s: internal pcre_fullinfo() error %d",
get_active_function_name(TSRMLS_C), rc);
+ efree(offsets);
+ efree(subpat_names);
RETURN_FALSE;
}
while (ni++ < name_cnt) {
name_idx = 0xff * name_table[0] + name_table[1];
subpat_names[name_idx] = name_table + 2;
+ if (is_numeric_string(subpat_names[name_idx], strlen(subpat_names[name_idx]), &dummy_l, &dummy_d, 0) > 0) {
+ php_error(E_WARNING, "%s: numeric named subpatterns are not allowed", get_active_function_name(TSRMLS_C));
+ efree(offsets);
+ efree(subpat_names);
+ RETURN_FALSE;
+ }
name_table += name_size;
}
}
@@ -1455,7 +1467,7 @@ PHP_FUNCTION(preg_quote)
/* Allocate enough memory so that even if each character
is quoted, we won't run out of room */
- out_str = safe_emalloc(2, Z_STRLEN_PP(in_str_arg), 1);
+ out_str = safe_emalloc(4, Z_STRLEN_PP(in_str_arg), 1);
/* Go through the string and quote necessary characters */
for(p = in_str, q = out_str; p != in_str_end; p++) {
@@ -1487,6 +1499,8 @@ PHP_FUNCTION(preg_quote)
case '\0':
*q++ = '\\';
*q++ = '0';
+ *q++ = '0';
+ *q++ = '0';
break;
default:
@@ -1613,8 +1627,8 @@ PHP_FUNCTION(preg_grep)
zend_function_entry pcre_functions[] = {
PHP_FE(preg_match, third_arg_force_ref)
PHP_FE(preg_match_all, third_arg_force_ref)
- PHP_FE(preg_replace, NULL)
- PHP_FE(preg_replace_callback, NULL)
+ PHP_FE(preg_replace, fifth_arg_force_ref)
+ PHP_FE(preg_replace_callback, fifth_arg_force_ref)
PHP_FE(preg_split, NULL)
PHP_FE(preg_quote, NULL)
PHP_FE(preg_grep, NULL)
diff --git a/ext/pcre/tests/bug26927.phpt b/ext/pcre/tests/bug26927.phpt
index 25b6b2e57..5c64deb37 100644
--- a/ext/pcre/tests/bug26927.phpt
+++ b/ext/pcre/tests/bug26927.phpt
@@ -8,4 +8,4 @@ Bug #26927 (preg_quote() does not escape \0)
?>
--EXPECT--
int(1)
-string(4) "a\0b"
+string(6) "a\000b"
diff --git a/ext/pdo/CREDITS b/ext/pdo/CREDITS
index e65021935..5971cdb0d 100755
--- a/ext/pdo/CREDITS
+++ b/ext/pdo/CREDITS
@@ -1,2 +1,3 @@
PHP Data Objects
-Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle
+Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle, Ilia Alshanetsky
+
diff --git a/ext/pdo/package2.xml b/ext/pdo/package2.xml
index d402867df..add5a47fc 100644
--- a/ext/pdo/package2.xml
+++ b/ext/pdo/package2.xml
@@ -36,7 +36,7 @@ Read the documentation at http://www.php.net/pdo for more information.
<email>george@omniti.com</email>
<active>yes</active>
</lead>
- <date>2005-12-04</date>
+ <date>2006-05-01</date>
<version>
<release>1.0.3</release>
<api>1.0.3</api>
@@ -46,17 +46,14 @@ Read the documentation at http://www.php.net/pdo for more information.
<api>stable</api>
</stability>
<license uri="http://www.php.net/license">PHP</license>
- <notes>** NOTE WELL! **
-All the PDO_XXX constants have been renamed to PDO::XXX form for future
-compatibility with PHP namespaces. Sorry for the inconvenience, especially
-after Release Candidate 1.
+ <notes>
+It is highly recommended that you update to PHP 5.1 or higher before using PDO.
+This PECL release corresponds to the PHP 5.1.3 release.
You need to install a PDO database driver to make use of PDO,
check http://pecl.php.net/package-search.php?pkg_name=PDO
for a list of available PDO drivers.
-It is highly recommended that you update to PHP 5.1 before using PDO.
-
If you are running on Windows, you can find a precompiled binary at:
http://pecl4win.php.net/ext.php/php_pdo.dll
@@ -64,6 +61,13 @@ You can find additional PDO drivers at:
http://pecl4win.php.net
** Changes **
+- Added PDO::PARAM_EVT_* family of constants. (Sara)
+- Fixed bug #37167 (PDO segfaults when throwing exception from the
+ fetch handler). (Tony)
+- Fixed memory corruption when PDO::FETCH_LAZY mode is being used. (Ilia)
+- Fixed bug #36222 (errorInfo in PDOException is always NULL). (Ilia)
+- Fixed bug #35797 (segfault on PDOStatement::execute() with
+ zend.ze1_compatibility_mode = On). (Tony, Ilia)
- Fixed bug #35543 (crash when calling non-existing method in extended class). (Tony)
- Fixed bug #35508 (improved validation of fetch modes). (Tony)
- Fixed bug #35431 (PDO crashes when using LAZY fetch with fetchAll). (Wez)
@@ -93,7 +97,6 @@ http://pecl4win.php.net
You should uninstall and re-install your individual database drivers whenever
you upgrade the base PDO package, otherwise you will see an error about PDO API
numbers when you run your PHP scripts.
-
</notes>
<contents>
diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c
index ee72d5106..cbf443bc9 100755
--- a/ext/pdo/pdo_dbh.c
+++ b/ext/pdo/pdo_dbh.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_dbh.c,v 1.82.2.26 2006/01/01 12:50:11 sniper Exp $ */
+/* $Id: pdo_dbh.c,v 1.82.2.31 2006/05/03 21:58:38 pollita Exp $ */
/* The PDO Database Handle Class */
@@ -41,7 +41,7 @@ void pdo_raise_impl_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *sqlstate
pdo_error_type *pdo_err = &dbh->error_code;
char *message = NULL;
const char *msg;
- zval *info = NULL;
+
if (dbh->error_mode == PDO_ERRMODE_SILENT) {
#if 0
@@ -64,12 +64,6 @@ void pdo_raise_impl_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *sqlstate
msg = "<<Unknown error>>";
}
- MAKE_STD_ZVAL(info);
- array_init(info);
-
- add_next_index_string(info, *pdo_err, 1);
- add_next_index_long(info, 0);
-
if (supp) {
spprintf(&message, 0, "SQLSTATE[%s]: %s: %s", *pdo_err, msg, supp);
} else {
@@ -78,12 +72,8 @@ void pdo_raise_impl_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *sqlstate
if (dbh->error_mode != PDO_ERRMODE_EXCEPTION) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", message);
-
- if (info) {
- zval_ptr_dtor(&info);
- }
} else {
- zval *ex;
+ zval *ex, *info;
zend_class_entry *def_ex = php_pdo_get_exception_base(1 TSRMLS_CC), *pdo_ex = php_pdo_get_exception();
MAKE_STD_ZVAL(ex);
@@ -92,10 +82,14 @@ void pdo_raise_impl_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *sqlstate
zend_update_property_string(def_ex, ex, "message", sizeof("message")-1, message TSRMLS_CC);
zend_update_property_string(def_ex, ex, "code", sizeof("code")-1, *pdo_err TSRMLS_CC);
- if (info) {
- zend_update_property(pdo_ex, ex, "errorInfo", sizeof("errorInfo")-1, info TSRMLS_CC);
- zval_ptr_dtor(&info);
- }
+ MAKE_STD_ZVAL(info);
+ array_init(info);
+
+ add_next_index_string(info, *pdo_err, 1);
+ add_next_index_long(info, 0);
+
+ zend_update_property(pdo_ex, ex, "errorInfo", sizeof("errorInfo")-1, info TSRMLS_CC);
+ zval_ptr_dtor(&info);
zend_throw_exception_object(ex TSRMLS_CC);
}
@@ -129,7 +123,6 @@ void pdo_handle_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt TSRMLS_DC)
}
if (dbh->methods->fetch_err) {
-
MAKE_STD_ZVAL(info);
array_init(info);
@@ -146,9 +139,6 @@ void pdo_handle_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt TSRMLS_DC)
supp = estrndup(Z_STRVAL_PP(item), Z_STRLEN_PP(item));
}
}
-
- zval_ptr_dtor(&info);
- info = NULL;
}
if (supp) {
@@ -159,10 +149,6 @@ void pdo_handle_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt TSRMLS_DC)
if (dbh->error_mode == PDO_ERRMODE_WARNING) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", message);
-
- if (info) {
- zval_ptr_dtor(&info);
- }
} else if (EG(exception) == NULL) {
zval *ex;
zend_class_entry *def_ex = php_pdo_get_exception_base(1 TSRMLS_CC), *pdo_ex = php_pdo_get_exception();
@@ -175,12 +161,15 @@ void pdo_handle_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt TSRMLS_DC)
if (info) {
zend_update_property(pdo_ex, ex, "errorInfo", sizeof("errorInfo")-1, info TSRMLS_CC);
- zval_ptr_dtor(&info);
}
zend_throw_exception_object(ex TSRMLS_CC);
}
-
+
+ if (info) {
+ zval_ptr_dtor(&info);
+ }
+
if (message) {
efree(message);
}
@@ -203,7 +192,7 @@ static char *dsn_from_uri(char *uri, char *buf, size_t buflen TSRMLS_DC)
return dsn;
}
-/* {{{ proto object PDO::__construct(string dsn, string username, string passwd [, array options])
+/* {{{ proto void PDO::__construct(string dsn, string username, string passwd [, array options])
*/
static PHP_METHOD(PDO, dbh_constructor)
{
@@ -1047,6 +1036,7 @@ static PHP_METHOD(PDO, quote)
RETURN_STRINGL(qstr, qlen, 0);
}
PDO_HANDLE_DBH_ERR();
+ RETURN_FALSE;
}
/* }}} */
@@ -1260,6 +1250,14 @@ void pdo_dbh_init(TSRMLS_D)
REGISTER_PDO_CLASS_CONST_LONG("PARAM_STMT", (long)PDO_PARAM_STMT);
REGISTER_PDO_CLASS_CONST_LONG("PARAM_INPUT_OUTPUT", (long)PDO_PARAM_INPUT_OUTPUT);
+ REGISTER_PDO_CLASS_CONST_LONG("PARAM_EVT_ALLOC", (long)PDO_PARAM_EVT_ALLOC);
+ REGISTER_PDO_CLASS_CONST_LONG("PARAM_EVT_FREE", (long)PDO_PARAM_EVT_FREE);
+ REGISTER_PDO_CLASS_CONST_LONG("PARAM_EVT_EXEC_PRE", (long)PDO_PARAM_EVT_EXEC_PRE);
+ REGISTER_PDO_CLASS_CONST_LONG("PARAM_EVT_EXEC_POST", (long)PDO_PARAM_EVT_EXEC_POST);
+ REGISTER_PDO_CLASS_CONST_LONG("PARAM_EVT_FETCH_PRE", (long)PDO_PARAM_EVT_FETCH_PRE);
+ REGISTER_PDO_CLASS_CONST_LONG("PARAM_EVT_FETCH_POST", (long)PDO_PARAM_EVT_FETCH_POST);
+ REGISTER_PDO_CLASS_CONST_LONG("PARAM_EVT_NORMALIZE", (long)PDO_PARAM_EVT_NORMALIZE);
+
REGISTER_PDO_CLASS_CONST_LONG("FETCH_LAZY", (long)PDO_FETCH_LAZY);
REGISTER_PDO_CLASS_CONST_LONG("FETCH_ASSOC",(long)PDO_FETCH_ASSOC);
REGISTER_PDO_CLASS_CONST_LONG("FETCH_NUM", (long)PDO_FETCH_NUM);
@@ -1297,6 +1295,7 @@ void pdo_dbh_init(TSRMLS_D)
REGISTER_PDO_CLASS_CONST_LONG("ATTR_DRIVER_NAME", (long)PDO_ATTR_DRIVER_NAME);
REGISTER_PDO_CLASS_CONST_LONG("ATTR_STRINGIFY_FETCHES",(long)PDO_ATTR_STRINGIFY_FETCHES);
REGISTER_PDO_CLASS_CONST_LONG("ATTR_MAX_COLUMN_LEN",(long)PDO_ATTR_MAX_COLUMN_LEN);
+ REGISTER_PDO_CLASS_CONST_LONG("ATTR_EMULATE_PREPARES",(long)PDO_ATTR_EMULATE_PREPARES);
REGISTER_PDO_CLASS_CONST_LONG("ERRMODE_SILENT", (long)PDO_ERRMODE_SILENT);
REGISTER_PDO_CLASS_CONST_LONG("ERRMODE_WARNING", (long)PDO_ERRMODE_WARNING);
diff --git a/ext/pdo/pdo_sql_parser.c b/ext/pdo/pdo_sql_parser.c
index a6b20adfe..e3e6541e4 100644
--- a/ext/pdo/pdo_sql_parser.c
+++ b/ext/pdo/pdo_sql_parser.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.11 on Sun Jan 1 14:38:30 2006 */
+/* Generated by re2c 0.9.11 on Wed Jan 25 11:31:13 2006 */
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_sql_parser.c,v 1.35.2.5 2006/01/01 12:50:11 sniper Exp $ */
+/* $Id: pdo_sql_parser.c,v 1.35.2.6 2006/01/25 16:35:23 iliaa Exp $ */
#include "php.h"
#include "php_pdo_driver.h"
@@ -492,15 +492,25 @@ rewrite:
}
for (plc = placeholders; plc; plc = plc->next) {
- snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1);
+ int skip_map = 0;
+ char *p;
+ name = estrndup(plc->pos, plc->len);
+
+ /* check if bound parameter is already available */
+ if (!strcmp(name, "?") || zend_hash_find(stmt->bound_param_map, name, plc->len + 1, (void**) &p) == FAILURE) {
+ snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1);
+ } else {
+ memset(idxbuf, 0, sizeof(idxbuf));
+ memcpy(idxbuf, p, sizeof(idxbuf));
+ skip_map = 1;
+ }
+
plc->quoted = estrdup(idxbuf);
plc->qlen = strlen(plc->quoted);
plc->freeq = 1;
newbuffer_len += plc->qlen;
- name = estrndup(plc->pos, plc->len);
-
- if (stmt->named_rewrite_template) {
+ if (!skip_map && stmt->named_rewrite_template) {
/* create a mapping */
zend_hash_update(stmt->bound_param_map, name, plc->len + 1, idxbuf, plc->qlen + 1, NULL);
diff --git a/ext/pdo/pdo_sql_parser.c.orig b/ext/pdo/pdo_sql_parser.c.orig
index 453b35371..b5ca7203c 100644
--- a/ext/pdo/pdo_sql_parser.c.orig
+++ b/ext/pdo/pdo_sql_parser.c.orig
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.11 on Sun Jan 1 14:38:30 2006 */
+/* Generated by re2c 0.9.11 on Wed Jan 25 11:31:13 2006 */
#line 1 "ext/pdo/pdo_sql_parser.re"
/*
+----------------------------------------------------------------------+
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_sql_parser.c,v 1.35.2.5 2006/01/01 12:50:11 sniper Exp $ */
+/* $Id: pdo_sql_parser.c,v 1.35.2.6 2006/01/25 16:35:23 iliaa Exp $ */
#include "php.h"
#include "php_pdo_driver.h"
@@ -512,15 +512,25 @@ rewrite:
}
for (plc = placeholders; plc; plc = plc->next) {
- snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1);
+ int skip_map = 0;
+ char *p;
+ name = estrndup(plc->pos, plc->len);
+
+ /* check if bound parameter is already available */
+ if (!strcmp(name, "?") || zend_hash_find(stmt->bound_param_map, name, plc->len + 1, (void**) &p) == FAILURE) {
+ snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1);
+ } else {
+ memset(idxbuf, 0, sizeof(idxbuf));
+ memcpy(idxbuf, p, sizeof(idxbuf));
+ skip_map = 1;
+ }
+
plc->quoted = estrdup(idxbuf);
plc->qlen = strlen(plc->quoted);
plc->freeq = 1;
newbuffer_len += plc->qlen;
- name = estrndup(plc->pos, plc->len);
-
- if (stmt->named_rewrite_template) {
+ if (!skip_map && stmt->named_rewrite_template) {
/* create a mapping */
zend_hash_update(stmt->bound_param_map, name, plc->len + 1, idxbuf, plc->qlen + 1, NULL);
diff --git a/ext/pdo/pdo_sql_parser.re b/ext/pdo/pdo_sql_parser.re
index 81b558c4e..beff5e874 100644
--- a/ext/pdo/pdo_sql_parser.re
+++ b/ext/pdo/pdo_sql_parser.re
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_sql_parser.re,v 1.28.2.3 2006/01/01 12:26:08 sniper Exp $ */
+/* $Id: pdo_sql_parser.re,v 1.28.2.4 2006/01/25 16:35:23 iliaa Exp $ */
#include "php.h"
#include "php_pdo_driver.h"
@@ -287,15 +287,25 @@ rewrite:
}
for (plc = placeholders; plc; plc = plc->next) {
- snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1);
+ int skip_map = 0;
+ char *p;
+ name = estrndup(plc->pos, plc->len);
+
+ /* check if bound parameter is already available */
+ if (!strcmp(name, "?") || zend_hash_find(stmt->bound_param_map, name, plc->len + 1, (void**) &p) == FAILURE) {
+ snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1);
+ } else {
+ memset(idxbuf, 0, sizeof(idxbuf));
+ memcpy(idxbuf, p, sizeof(idxbuf));
+ skip_map = 1;
+ }
+
plc->quoted = estrdup(idxbuf);
plc->qlen = strlen(plc->quoted);
plc->freeq = 1;
newbuffer_len += plc->qlen;
- name = estrndup(plc->pos, plc->len);
-
- if (stmt->named_rewrite_template) {
+ if (!skip_map && stmt->named_rewrite_template) {
/* create a mapping */
zend_hash_update(stmt->bound_param_map, name, plc->len + 1, idxbuf, plc->qlen + 1, NULL);
diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c
index dbc056247..a9f65e28d 100755
--- a/ext/pdo/pdo_stmt.c
+++ b/ext/pdo/pdo_stmt.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_stmt.c,v 1.118.2.30 2006/01/01 20:07:41 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.118.2.38 2006/04/22 19:10:53 tony2001 Exp $ */
/* The PDO Statement Handle Class */
@@ -42,19 +42,19 @@
* since it is a .c file, it won't be installed for use by PECL extensions, so we include it here. */
ZEND_BEGIN_ARG_INFO(first_arg_force_ref, 0)
ZEND_ARG_PASS_INFO(1)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO(second_arg_force_ref, 0)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(1)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO(third_arg_force_ref, 0)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(1)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO(fourth_arg_force_ref, 0)
@@ -62,10 +62,10 @@ ZEND_BEGIN_ARG_INFO(fourth_arg_force_ref, 0)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(1)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO(all_args_by_ref, 1)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
/* }}} */
#endif
@@ -283,7 +283,6 @@ static int really_register_bound_param(struct pdo_bound_param_data *param, pdo_s
param->stmt = stmt;
param->is_param = is_param;
- ZVAL_ADDREF(param->parameter);
if (param->driver_params) {
ZVAL_ADDREF(param->driver_params);
}
@@ -324,25 +323,52 @@ static int really_register_bound_param(struct pdo_bound_param_data *param, pdo_s
}
return 0;
}
-
- /* tell the driver we just created a parameter */
+
+ /* ask the driver to perform any normalization it needs on the
+ * parameter name. Note that it is illegal for the driver to take
+ * a reference to param, as it resides in transient storage only
+ * at this time. */
if (stmt->methods->param_hook) {
- if (!stmt->methods->param_hook(stmt, param,
- PDO_PARAM_EVT_ALLOC TSRMLS_CC)) {
+ if (!stmt->methods->param_hook(stmt, param, PDO_PARAM_EVT_NORMALIZE
+ TSRMLS_CC)) {
+ if (param->name) {
+ efree(param->name);
+ param->name = NULL;
+ }
return 0;
}
}
+ /* delete any other parameter registered with this number.
+ * If the parameter is named, it will be removed and correctly
+ * disposed of by the hash_update call that follows */
if (param->paramno >= 0) {
zend_hash_index_del(hash, param->paramno);
}
-
+
+ /* allocate storage for the parameter, keyed by its "canonical" name */
if (param->name) {
- zend_hash_update(hash, param->name, param->namelen, param, sizeof(*param), (void**)&pparam);
+ zend_hash_update(hash, param->name, param->namelen, param,
+ sizeof(*param), (void**)&pparam);
} else {
- zend_hash_index_update(hash, param->paramno, param, sizeof(*param), (void**)&pparam);
+ zend_hash_index_update(hash, param->paramno, param, sizeof(*param),
+ (void**)&pparam);
}
+ /* tell the driver we just created a parameter */
+ if (stmt->methods->param_hook) {
+ if (!stmt->methods->param_hook(stmt, pparam, PDO_PARAM_EVT_ALLOC
+ TSRMLS_CC)) {
+ /* undo storage allocation; the hash will free the parameter
+ * name if required */
+ if (pparam->name) {
+ zend_hash_del(hash, pparam->name, pparam->namelen);
+ } else {
+ zend_hash_index_del(hash, pparam->paramno);
+ }
+ return 0;
+ }
+ }
return 1;
}
/* }}} */
@@ -395,7 +421,6 @@ static PHP_METHOD(PDOStatement, execute)
zval_ptr_dtor(&param.parameter);
RETURN_FALSE;
}
- zval_ptr_dtor(&param.parameter);
zend_hash_move_forward(Z_ARRVAL_P(input_params));
}
@@ -638,6 +663,7 @@ static int do_fetch_class_prepare(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
if (!ce) {
stmt->fetch.cls.ce = ZEND_STANDARD_CLASS_DEF_PTR;
+ ce = ZEND_STANDARD_CLASS_DEF_PTR;
}
if (ce->constructor) {
@@ -832,7 +858,13 @@ static int do_fetch(pdo_stmt_t *stmt, int do_bind, zval *return_value,
case PDO_FETCH_BOTH:
case PDO_FETCH_NUM:
case PDO_FETCH_NAMED:
- array_init(return_value);
+ if (!return_all) {
+ ALLOC_HASHTABLE(return_value->value.ht);
+ zend_hash_init(return_value->value.ht, stmt->column_count, NULL, ZVAL_PTR_DTOR, 0);
+ Z_TYPE_P(return_value) = IS_ARRAY;
+ } else {
+ array_init(return_value);
+ }
break;
case PDO_FETCH_COLUMN:
@@ -1075,7 +1107,7 @@ static int do_fetch(pdo_stmt_t *stmt, int do_bind, zval *return_value,
if (return_all) {
zval_ptr_dtor(&return_value); /* we don't need that */
return_value = retval;
- } else {
+ } else if (retval) {
*return_value = *retval;
zval_copy_ctor(return_value);
INIT_PZVAL(return_value);
@@ -1472,6 +1504,7 @@ static int register_bound_param(INTERNAL_FUNCTION_PARAMETERS, pdo_stmt_t *stmt,
return 0;
}
+ ZVAL_ADDREF(param.parameter);
return really_register_bound_param(&param, stmt, is_param TSRMLS_CC);
} /* }}} */
@@ -1490,16 +1523,17 @@ static PHP_METHOD(PDOStatement, bindValue)
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz/|l", &param.name,
&param.namelen, &param.parameter, &param.param_type)) {
RETURN_FALSE;
- }
+ }
}
-
+
if (param.paramno > 0) {
--param.paramno; /* make it zero-based internally */
} else if (!param.name) {
pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "Columns/Parameters are 1-based" TSRMLS_CC);
RETURN_FALSE;
}
-
+
+ ZVAL_ADDREF(param.parameter);
RETURN_BOOL(really_register_bound_param(&param, stmt, TRUE TSRMLS_CC));
}
/* }}} */
@@ -1599,6 +1633,17 @@ fail:
/* {{{ proto mixed PDOStatement::getAttribute(long attribute)
Get an attribute */
+
+static int generic_stmt_attr_get(pdo_stmt_t *stmt, zval *return_value, long attr)
+{
+ switch (attr) {
+ case PDO_ATTR_EMULATE_PREPARES:
+ RETVAL_BOOL(stmt->supports_placeholders == PDO_PLACEHOLDER_NONE);
+ return 1;
+ }
+ return 0;
+}
+
static PHP_METHOD(PDOStatement, getAttribute)
{
long attr;
@@ -1609,8 +1654,12 @@ static PHP_METHOD(PDOStatement, getAttribute)
}
if (!stmt->methods->get_attribute) {
- pdo_raise_impl_error(stmt->dbh, stmt, "IM001", "This driver doesn't support getting attributes" TSRMLS_CC);
- RETURN_FALSE;
+ if (!generic_stmt_attr_get(stmt, return_value, attr)) {
+ pdo_raise_impl_error(stmt->dbh, stmt, "IM001",
+ "This driver doesn't support getting attributes" TSRMLS_CC);
+ RETURN_FALSE;
+ }
+ return;
}
PDO_STMT_CLEAR_ERR();
@@ -1620,9 +1669,13 @@ static PHP_METHOD(PDOStatement, getAttribute)
RETURN_FALSE;
case 0:
- /* XXX: should do something better here */
- pdo_raise_impl_error(stmt->dbh, stmt, "IM001", "driver doesn't support getting that attribute" TSRMLS_CC);
- RETURN_FALSE;
+ if (!generic_stmt_attr_get(stmt, return_value, attr)) {
+ /* XXX: should do something better here */
+ pdo_raise_impl_error(stmt->dbh, stmt, "IM001",
+ "driver doesn't support getting that attribute" TSRMLS_CC);
+ RETURN_FALSE;
+ }
+ return;
default:
return;
@@ -1657,6 +1710,7 @@ static PHP_METHOD(PDOStatement, getColumnMeta)
pdo_raise_impl_error(stmt->dbh, stmt, "42P10", "column number must be non-negative" TSRMLS_CC);
RETURN_FALSE;
}
+
if (!stmt->methods->get_column_meta) {
pdo_raise_impl_error(stmt->dbh, stmt, "IM001", "driver doesn't support meta data" TSRMLS_CC);
RETURN_FALSE;
@@ -1911,6 +1965,10 @@ static PHP_METHOD(PDOStatement, debugDumpParams)
struct pdo_bound_param_data *param;
PHP_STMT_GET_OBJ;
+ if (out == NULL) {
+ RETURN_FALSE;
+ }
+
php_stream_printf(out TSRMLS_CC, "SQL: [%d] %.*s\n",
stmt->query_stringlen,
stmt->query_stringlen, stmt->query_string);
diff --git a/ext/pdo/php_pdo_driver.h b/ext/pdo/php_pdo_driver.h
index 321fdff65..451778109 100755
--- a/ext/pdo/php_pdo_driver.h
+++ b/ext/pdo/php_pdo_driver.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_driver.h,v 1.66.2.9 2006/01/01 12:50:11 sniper Exp $ */
+/* $Id: php_pdo_driver.h,v 1.66.2.11 2006/04/09 08:05:01 wez Exp $ */
#ifndef PHP_PDO_DRIVER_H
#define PHP_PDO_DRIVER_H
@@ -44,7 +44,7 @@ PDO_API char *php_pdo_int64_to_str(pdo_int64_t i64 TSRMLS_DC);
# define FALSE 0
#endif
-#define PDO_DRIVER_API 20051128
+#define PDO_DRIVER_API 20060409
enum pdo_param_type {
PDO_PARAM_NULL,
@@ -129,6 +129,7 @@ enum pdo_attribute_type {
PDO_ATTR_DRIVER_NAME, /* name of the driver (as used in the constructor) */
PDO_ATTR_STRINGIFY_FETCHES, /* converts integer/float types to strings during fetch */
PDO_ATTR_MAX_COLUMN_LEN, /* make database calculate maximum length of data found in a column */
+ PDO_ATTR_EMULATE_PREPARES, /* use query emulation rather than native */
/* this defines the start of the range for driver specific options.
* Drivers should define their own attribute constants beginning with this
@@ -338,7 +339,8 @@ enum pdo_param_event {
PDO_PARAM_EVT_EXEC_PRE,
PDO_PARAM_EVT_EXEC_POST,
PDO_PARAM_EVT_FETCH_PRE,
- PDO_PARAM_EVT_FETCH_POST
+ PDO_PARAM_EVT_FETCH_POST,
+ PDO_PARAM_EVT_NORMALIZE
};
typedef int (*pdo_stmt_param_hook_func)(pdo_stmt_t *stmt, struct pdo_bound_param_data *param, enum pdo_param_event event_type TSRMLS_DC);
diff --git a/ext/pdo/tests/bug_35671.phpt b/ext/pdo/tests/bug_35671.phpt
new file mode 100644
index 000000000..768773f90
--- /dev/null
+++ b/ext/pdo/tests/bug_35671.phpt
@@ -0,0 +1,45 @@
+--TEST--
+PDO Common: PHP Bug #35671: binding by name breakage
+--SKIPIF--
+<?php # vim:ft=php
+if (!extension_loaded('pdo')) die('skip');
+$dir = getenv('REDIR_TEST_DIR');
+if (false == $dir) die('skip no driver');
+require_once $dir . 'pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.dirname(__FILE__) . '/../../pdo/tests/');
+require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
+$db = PDOTest::factory();
+
+$db->exec('CREATE TABLE test (field1 VARCHAR(32), field2 VARCHAR(32), field3 VARCHAR(32))');
+$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+
+$insert = $db->prepare("insert into test (field1, field2, field3) values (:value1, :value2, :value3)");
+
+$parm = array(
+ ":value1" => 15,
+ ":value2" => 20,
+ ":value3" => 25
+);
+
+$insert->execute($parm);
+$insert = null;
+
+var_dump($db->query("SELECT * from test")->fetchAll(PDO::FETCH_ASSOC));
+
+?>
+--EXPECT--
+array(1) {
+ [0]=>
+ array(3) {
+ ["field1"]=>
+ string(2) "15"
+ ["field2"]=>
+ string(2) "20"
+ ["field3"]=>
+ string(2) "25"
+ }
+}
diff --git a/ext/pdo/tests/pdo_011.phpt b/ext/pdo/tests/pdo_011.phpt
index e3eefc4af..4a240426e 100644
--- a/ext/pdo/tests/pdo_011.phpt
+++ b/ext/pdo/tests/pdo_011.phpt
@@ -28,7 +28,7 @@ class DerivedStatement extends PDOStatement
echo __METHOD__ . "($name)\n";
}
- function retrieve($id, $val) {
+ function reTrieve($id, $val) {
echo __METHOD__ . "($id,$val)\n";
return array($id=>$val);
}
@@ -77,6 +77,10 @@ var_dump($select2->fetchAll(PDO::FETCH_FUNC, array($f, 'factory')));
var_dump(get_class($derived));
$derived->execute();
var_dump($derived->fetchAll(PDO::FETCH_FUNC, array($derived, 'retrieve')));
+$derived->execute();
+var_dump($derived->fetchAll(PDO::FETCH_FUNC, array($derived, 'reTrieve')));
+$derived->execute();
+var_dump($derived->fetchAll(PDO::FETCH_FUNC, array($derived, 'RETRIEVE')));
?>
--EXPECTF--
@@ -217,10 +221,62 @@ array(4) {
}
}
string(16) "DerivedStatement"
-DerivedStatement::retrieve(1,A)
-DerivedStatement::retrieve(2,B)
-DerivedStatement::retrieve(3,C)
-DerivedStatement::retrieve(4,D)
+DerivedStatement::reTrieve(1,A)
+DerivedStatement::reTrieve(2,B)
+DerivedStatement::reTrieve(3,C)
+DerivedStatement::reTrieve(4,D)
+array(4) {
+ [0]=>
+ array(1) {
+ [1]=>
+ string(1) "A"
+ }
+ [1]=>
+ array(1) {
+ [2]=>
+ string(1) "B"
+ }
+ [2]=>
+ array(1) {
+ [3]=>
+ string(1) "C"
+ }
+ [3]=>
+ array(1) {
+ [4]=>
+ string(1) "D"
+ }
+}
+DerivedStatement::reTrieve(1,A)
+DerivedStatement::reTrieve(2,B)
+DerivedStatement::reTrieve(3,C)
+DerivedStatement::reTrieve(4,D)
+array(4) {
+ [0]=>
+ array(1) {
+ [1]=>
+ string(1) "A"
+ }
+ [1]=>
+ array(1) {
+ [2]=>
+ string(1) "B"
+ }
+ [2]=>
+ array(1) {
+ [3]=>
+ string(1) "C"
+ }
+ [3]=>
+ array(1) {
+ [4]=>
+ string(1) "D"
+ }
+}
+DerivedStatement::reTrieve(1,A)
+DerivedStatement::reTrieve(2,B)
+DerivedStatement::reTrieve(3,C)
+DerivedStatement::reTrieve(4,D)
array(4) {
[0]=>
array(1) {
diff --git a/ext/pdo/tests/pdo_014.phpt b/ext/pdo/tests/pdo_014.phpt
index b26135728..794fdae7d 100644
--- a/ext/pdo/tests/pdo_014.phpt
+++ b/ext/pdo/tests/pdo_014.phpt
@@ -3,7 +3,7 @@ PDO Common: PDOStatement SPL iterator
--SKIPIF--
<?php # vim:ft=php
if (!extension_loaded('pdo')) die('skip');
-if (!extension_loaded('SPL')) print 'skip SPL not available';
+if (!extension_loaded('SPL')) die('skip SPL not available');
if (!class_exists('IteratorIterator', false)) die('skip IteratorIterator class not present');
$dir = getenv('REDIR_TEST_DIR');
if (false == $dir) die('skip no driver');
diff --git a/ext/pdo/tests/pdo_031.phpt b/ext/pdo/tests/pdo_031.phpt
index 30a75d79b..79f6b4252 100755
--- a/ext/pdo/tests/pdo_031.phpt
+++ b/ext/pdo/tests/pdo_031.phpt
@@ -3,7 +3,7 @@ PDO Common: PDOStatement SPL iterator
--SKIPIF--
<?php # vim:ft=php
if (!extension_loaded('pdo')) die('skip');
-if (!extension_loaded('SPL')) print 'skip SPL not available';
+if (!extension_loaded('SPL')) die ('skip SPL not available');
$dir = getenv('REDIR_TEST_DIR');
if (false == $dir) die('skip no driver');
require_once $dir . 'pdo_test.inc';
diff --git a/ext/pdo_dblib/package2.xml b/ext/pdo_dblib/package2.xml
index f1fcb76d7..8b726666d 100644
--- a/ext/pdo_dblib/package2.xml
+++ b/ext/pdo_dblib/package2.xml
@@ -20,7 +20,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
<email>fmk@php.net</email>
<active>yes</active>
</lead>
- <date>2005-12-04</date>
+ <date>2006-05-01</date>
<version>
<release>1.0.1</release>
<api>1.0.1</api>
@@ -66,7 +66,7 @@ Windows platforms.
<package>
<name>pdo</name>
<channel>pecl.php.net</channel>
- <min>1.0</min>
+ <min>1.0.3</min>
<providesextension>PDO</providesextension>
</package>
</required>
diff --git a/ext/pdo_firebird/package2.xml b/ext/pdo_firebird/package2.xml
index 414b9e6c8..5b5984c80 100644
--- a/ext/pdo_firebird/package2.xml
+++ b/ext/pdo_firebird/package2.xml
@@ -15,7 +15,7 @@ all versions of Firebird and InterBase versions 6 and up.
<email>abies@php.net</email>
<active>yes</active>
</lead>
- <date>2005-12-04</date>
+ <date>2006-05-01</date>
<version>
<release>0.3</release>
<api>0.3</api>
@@ -57,7 +57,7 @@ Hope it works!
<package>
<name>pdo</name>
<channel>pecl.php.net</channel>
- <min>1.0</min>
+ <min>1.0.3</min>
<providesextension>PDO</providesextension>
</package>
</required>
diff --git a/ext/pdo_mysql/CREDITS b/ext/pdo_mysql/CREDITS
index 0735d9a1e..0bee1ee76 100755
--- a/ext/pdo_mysql/CREDITS
+++ b/ext/pdo_mysql/CREDITS
@@ -1,2 +1,3 @@
-mySQL 3.x driver for PDO
-George Schlossnagle
+mySQL driver for PDO
+George Schlossnagle, Wez Furlong, Ilia Alshanetsky
+
diff --git a/ext/pdo_mysql/config.m4 b/ext/pdo_mysql/config.m4
index b6d9ab8bb..26172b644 100755
--- a/ext/pdo_mysql/config.m4
+++ b/ext/pdo_mysql/config.m4
@@ -1,5 +1,5 @@
dnl
-dnl $Id: config.m4,v 1.25.2.6 2005/12/04 18:33:26 wez Exp $
+dnl $Id: config.m4,v 1.25.2.7 2006/05/02 00:59:22 wez Exp $
dnl
if test "$PHP_PDO" != "no"; then
@@ -87,6 +87,9 @@ if test "$PHP_PDO_MYSQL" != "no"; then
AC_DEFINE_UNQUOTED(PDO_MYSQL_UNIX_ADDR, "$PDO_MYSQL_SOCKET", [ ])
+
+ _SAVE_LIBS=$LIBS
+ LIBS="$LIBS $PDO_MYSQL_LIBS"
PHP_CHECK_LIBRARY(mysqlclient, mysql_query,
[
PHP_EVAL_LIBLINE($PDO_MYSQL_LIBS, PDO_MYSQL_SHARED_LIBADD)
@@ -95,8 +98,6 @@ if test "$PHP_PDO_MYSQL" != "no"; then
],[
$PDO_MYSQL_LIBS
])
- _SAVE_LIBS=$LIBS
- LIBS="$LIBS $PDO_MYSQL_LIBS"
AC_CHECK_FUNCS([mysql_commit mysql_stmt_prepare mysql_next_result mysql_sqlstate])
LIBS=$_SAVE_LIBS
diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c
index f2ce644b8..39a22f164 100755
--- a/ext/pdo_mysql/mysql_driver.c
+++ b/ext/pdo_mysql/mysql_driver.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysql_driver.c,v 1.59.2.8 2006/01/01 12:50:11 sniper Exp $ */
+/* $Id: mysql_driver.c,v 1.59.2.13 2006/04/09 08:11:31 wez Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -163,17 +163,22 @@ static int mysql_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len,
char *nsql = NULL;
int nsql_len = 0;
int ret;
+ int server_version;
#endif
S->H = H;
stmt->driver_data = S;
stmt->methods = &mysql_stmt_methods;
- /* TODO: add runtime check to determine if the server we are talking to supports
- * prepared statements; if it doesn't, we should set stmt->supports_placeholders
- * to PDO_PLACEHOLDER_NONE, and have the rest of the code look at S->stmt to
- * determine if we're using real prepared statements or the PDO emulated version */
+ if (H->emulate_prepare) {
+ goto end;
+ }
+
#if HAVE_MYSQL_STMT_PREPARE
+ server_version = mysql_get_server_version(H->server);
+ if (server_version < 40100) {
+ goto fallback;
+ }
stmt->supports_placeholders = PDO_PLACEHOLDER_POSITIONAL;
ret = pdo_parse_params(stmt, (char*)sql, sql_len, &nsql, &nsql_len TSRMLS_CC);
@@ -230,6 +235,7 @@ static int mysql_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len,
fallback:
#endif
+end:
stmt->supports_placeholders = PDO_PLACEHOLDER_NONE;
return 1;
@@ -312,7 +318,10 @@ static int pdo_mysql_set_attribute(pdo_dbh_t *dbh, long attr, zval *val TSRMLS_D
case PDO_MYSQL_ATTR_USE_BUFFERED_QUERY:
((pdo_mysql_db_handle *)dbh->driver_data)->buffered = Z_BVAL_P(val);
return 1;
-
+ case PDO_MYSQL_ATTR_DIRECT_QUERY:
+ case PDO_ATTR_EMULATE_PREPARES:
+ ((pdo_mysql_db_handle *)dbh->driver_data)->emulate_prepare = Z_BVAL_P(val);
+ return 1;
default:
return 0;
}
@@ -355,6 +364,14 @@ static int pdo_mysql_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_value
ZVAL_LONG(return_value, H->buffered);
return 1;
+ case PDO_MYSQL_ATTR_DIRECT_QUERY:
+ ZVAL_LONG(return_value, H->emulate_prepare);
+ return 1;
+
+ case PDO_MYSQL_ATTR_MAX_BUFFER_SIZE:
+ ZVAL_LONG(return_value, H->max_buffer_size);
+ return 1;
+
default:
return 0;
}
@@ -416,6 +433,17 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
H->einfo.errcode = 0;
H->einfo.errmsg = NULL;
+ /* at the time of writing, the mysql documentation states:
+ * http://mysql.localhost.net.ar/doc/refman/5.0/en/query-cache-how.html
+ * "A query also is not cached under these conditions:
+ * ...
+ * It was issued as a prepared statement, even if no placeholders were employed."
+ *
+ * We default to emulating prepared statements
+ * in order to take advantage of the query cache
+FIXME: H->emulate_prepare = 1; a bit risky to do this so late in the RC, so defer it.
+ */
+
/* allocate an environment */
/* handle for the server */
@@ -425,6 +453,7 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
}
dbh->driver_data = H;
+ H->max_buffer_size = 1024*1024;
/* handle MySQL options */
if (driver_options) {
@@ -434,6 +463,13 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
H->buffered = pdo_attr_lval(driver_options, PDO_MYSQL_ATTR_USE_BUFFERED_QUERY, 0 TSRMLS_CC);
+ H->emulate_prepare = pdo_attr_lval(driver_options,
+ PDO_MYSQL_ATTR_DIRECT_QUERY, H->emulate_prepare TSRMLS_CC);
+ H->emulate_prepare = pdo_attr_lval(driver_options,
+ PDO_ATTR_EMULATE_PREPARES, H->emulate_prepare TSRMLS_CC);
+
+ H->max_buffer_size = pdo_attr_lval(driver_options, PDO_MYSQL_ATTR_MAX_BUFFER_SIZE, H->max_buffer_size TSRMLS_CC);
+
if (mysql_options(H->server, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&connect_timeout)) {
pdo_mysql_error(dbh);
goto cleanup;
@@ -444,6 +480,15 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
goto cleanup;
}
+#ifdef MYSQL_OPT_RECONNECT
+ /* since 5.0.3, the default for this option is 0 if not specified.
+ * we want the old behaviour */
+ {
+ long reconnect = 1;
+ mysql_options(H->server, MYSQL_OPT_RECONNECT, (const char*)&reconnect);
+ }
+#endif
+
init_cmd = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_INIT_COMMAND, NULL TSRMLS_CC);
if (init_cmd) {
if (mysql_options(H->server, MYSQL_INIT_COMMAND, (const char *)init_cmd)) {
@@ -488,7 +533,9 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
goto cleanup;
}
- mysql_handle_autocommit(dbh TSRMLS_CC);
+ if (!dbh->auto_commit) {
+ mysql_handle_autocommit(dbh TSRMLS_CC);
+ }
H->attached = 1;
diff --git a/ext/pdo_mysql/mysql_statement.c b/ext/pdo_mysql/mysql_statement.c
index 5218e7b7f..7675e1ee7 100755
--- a/ext/pdo_mysql/mysql_statement.c
+++ b/ext/pdo_mysql/mysql_statement.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysql_statement.c,v 1.48.2.10 2006/01/01 12:50:11 sniper Exp $ */
+/* $Id: mysql_statement.c,v 1.48.2.14 2006/04/22 16:35:18 wez Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -67,12 +67,23 @@ static int pdo_mysql_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC)
efree(S->out_length);
}
#endif
+#if HAVE_MYSQL_NEXT_RESULT
+ while (mysql_more_results(S->H->server)) {
+ MYSQL_RES *res;
+ if (mysql_next_result(S->H->server) != 0) {
+ break;
+ }
+
+ res = mysql_store_result(S->H->server);
+ if (res) {
+ mysql_free_result(res);
+ }
+ }
+#endif
efree(S);
return 1;
}
-#define PDO_MYSQL_MAX_BUFFER 1024*1024 /* 1 megabyte */
-
static int pdo_mysql_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC)
{
pdo_mysql_stmt *S = (pdo_mysql_stmt*)stmt->driver_data;
@@ -144,8 +155,8 @@ static int pdo_mysql_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC)
S->fields[i].max_length? S->fields[i].max_length:
S->fields[i].length;
/* work-around for longtext and alike */
- if (S->bound_result[i].buffer_length > PDO_MYSQL_MAX_BUFFER) {
- S->bound_result[i].buffer_length = PDO_MYSQL_MAX_BUFFER;
+ if (S->bound_result[i].buffer_length > H->max_buffer_size) {
+ S->bound_result[i].buffer_length = H->max_buffer_size;
}
}
#if 0
@@ -592,6 +603,18 @@ static int pdo_mysql_stmt_cursor_closer(pdo_stmt_t *stmt TSRMLS_DC)
mysql_free_result(S->result);
S->result = NULL;
}
+#if HAVE_MYSQL_NEXT_RESULT
+ while (mysql_more_results(S->H->server)) {
+ MYSQL_RES *res;
+ if (mysql_next_result(S->H->server) != 0) {
+ break;
+ }
+ res = mysql_store_result(S->H->server);
+ if (res) {
+ mysql_free_result(res);
+ }
+ }
+#endif
return 1;
}
diff --git a/ext/pdo_mysql/package2.xml b/ext/pdo_mysql/package2.xml
index fded1712f..cee6cc7de 100644
--- a/ext/pdo_mysql/package2.xml
+++ b/ext/pdo_mysql/package2.xml
@@ -26,7 +26,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
<email>wez@php.net</email>
<active>yes</active>
</lead>
- <date>2005-12-04</date>
+ <date>2006-05-01</date>
<version>
<release>1.0.2</release>
<api>1.0.2</api>
@@ -37,6 +37,14 @@ http://pear.php.net/dtd/package-2.0.xsd">
</stability>
<license uri="http://www.php.net/license">PHP</license>
<notes>
+This PECL release corresponds to PHP 5.1.3.
+
+Added PDO::ATTR_EMULATE_PREPARES which can be used to force use of emulated or
+native prepares. This attribute should can be set on the database handle, and
+will cause subsequent prepares to use emulation.
+
+- Fixed bug #36572 (cannot use native prepared statements with internal
+ queries like "show master status") (Ilia)
- Repackage using package2.xml
- Fixed Bug #35480 and #35415, crash when using persistent connections.
- Improved error detection for OPTIMIZE queries
@@ -75,7 +83,7 @@ Windows binaries can be found at http://pecl4win.php.net/ext.php/php_pdo_mysql.d
<package>
<name>pdo</name>
<channel>pecl.php.net</channel>
- <min>1.0</min>
+ <min>1.0.3</min>
<providesextension>PDO</providesextension>
</package>
</required>
diff --git a/ext/pdo_mysql/pdo_mysql.c b/ext/pdo_mysql/pdo_mysql.c
index 2f8be1d52..a0491138b 100755
--- a/ext/pdo_mysql/pdo_mysql.c
+++ b/ext/pdo_mysql/pdo_mysql.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_mysql.c,v 1.8.2.12 2006/01/01 12:50:11 sniper Exp $ */
+/* $Id: pdo_mysql.c,v 1.8.2.13 2006/03/05 17:18:01 iliaa Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -80,6 +80,8 @@ PHP_MINIT_FUNCTION(pdo_mysql)
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_INIT_COMMAND", (long)PDO_MYSQL_ATTR_INIT_COMMAND);
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_FILE", (long)PDO_MYSQL_ATTR_READ_DEFAULT_FILE);
REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_GROUP", (long)PDO_MYSQL_ATTR_READ_DEFAULT_GROUP);
+ REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_MAX_BUFFER_SIZE", (long)PDO_MYSQL_ATTR_MAX_BUFFER_SIZE);
+ REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_DIRECT_QUERY", (long)PDO_MYSQL_ATTR_DIRECT_QUERY);
return php_pdo_register_driver(&pdo_mysql_driver);
}
diff --git a/ext/pdo_mysql/php_pdo_mysql_int.h b/ext/pdo_mysql/php_pdo_mysql_int.h
index 2602e04e1..2bc2f1d8a 100755
--- a/ext/pdo_mysql/php_pdo_mysql_int.h
+++ b/ext/pdo_mysql/php_pdo_mysql_int.h
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_mysql_int.h,v 1.16.2.2 2006/01/01 12:50:11 sniper Exp $ */
+/* $Id: php_pdo_mysql_int.h,v 1.16.2.4 2006/03/05 17:18:01 iliaa Exp $ */
#ifndef PHP_PDO_MYSQL_INT_H
#define PHP_PDO_MYSQL_INT_H
@@ -37,7 +37,9 @@ typedef struct {
unsigned attached:1;
unsigned buffered:1;
+ unsigned emulate_prepare:1;
unsigned _reserved:31;
+ unsigned long max_buffer_size;
pdo_mysql_error_info einfo;
} pdo_mysql_db_handle;
@@ -82,5 +84,7 @@ enum {
PDO_MYSQL_ATTR_INIT_COMMAND,
PDO_MYSQL_ATTR_READ_DEFAULT_FILE,
PDO_MYSQL_ATTR_READ_DEFAULT_GROUP,
+ PDO_MYSQL_ATTR_MAX_BUFFER_SIZE,
+ PDO_MYSQL_ATTR_DIRECT_QUERY,
};
#endif
diff --git a/ext/pdo_oci/config.m4 b/ext/pdo_oci/config.m4
index 084e111c1..c5a30a4f8 100755
--- a/ext/pdo_oci/config.m4
+++ b/ext/pdo_oci/config.m4
@@ -1,4 +1,4 @@
-dnl $Id: config.m4,v 1.14.2.4 2006/01/06 11:48:19 tony2001 Exp $
+dnl $Id: config.m4,v 1.14.2.5 2006/02/16 02:03:13 pollita Exp $
if test "$PHP_PDO" != "no"; then
@@ -88,11 +88,11 @@ You need to tell me where to find your oracle SDK, or set ORACLE_HOME.
PHP_ADD_INCLUDE($PDO_OCI_IC_PREFIX/lib/oracle/$PDO_OCI_IC_VERS/client/include)
AC_MSG_RESULT($PDO_OCI_IC_PREFIX/lib/oracle/$PDO_OCI_IC_VERS/client/include)
elif test -f $PDO_OCI_IC_PREFIX/sdk/include/oci.h ; then
- PHP_ADD_INCLUDE($PDO_OCI_PREFIX/sdk/include)
- AC_MSG_RESULT($PDO_OCI_PREFIX/sdk/include)
+ PHP_ADD_INCLUDE($PDO_OCI_IC_PREFIX/sdk/include)
+ AC_MSG_RESULT($PDO_OCI_IC_PREFIX/sdk/include)
elif test -f $PDO_OCI_IC_PREFIX/client/include/oci.h ; then
- PHP_ADD_INCLUDE($PDO_OCI_PREFIX/client/include)
- AC_MSG_RESULT($PDO_OCI_PREFIX/client/include)
+ PHP_ADD_INCLUDE($PDO_OCI_IC_PREFIX/client/include)
+ AC_MSG_RESULT($PDO_OCI_IC_PREFIX/client/include)
else
AC_MSG_ERROR([I'm too dumb to figure out where the include dir is in your instant client install])
fi
diff --git a/ext/pdo_oci/oci_statement.c b/ext/pdo_oci/oci_statement.c
index 061729e8a..ee6077267 100755
--- a/ext/pdo_oci/oci_statement.c
+++ b/ext/pdo_oci/oci_statement.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: oci_statement.c,v 1.16.2.9 2006/01/01 12:50:12 sniper Exp $ */
+/* $Id: oci_statement.c,v 1.16.2.10 2006/03/18 22:06:30 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -545,6 +545,10 @@ static int oci_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC) /* {{{ */
) {
/* should be big enough for most date formats and numbers */
S->cols[colno].datalen = 512;
+#if defined(SQLT_IBFLOAT) && defined(SQLT_IBDOUBLE)
+ } else if (dtype == SQLT_IBFLOAT || dtype == SQLT_IBDOUBLE) {
+ S->cols[colno].datalen = 1024;
+#endif
} else {
S->cols[colno].datalen = col->maxlen;
}
diff --git a/ext/pdo_oci/package2.xml b/ext/pdo_oci/package2.xml
index f8cb18175..1f828d1f1 100644
--- a/ext/pdo_oci/package2.xml
+++ b/ext/pdo_oci/package2.xml
@@ -14,7 +14,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
<email>wez@php.net</email>
<active>yes</active>
</lead>
- <date>2005-12-04</date>
+ <date>2006-05-01</date>
<version>
<release>1.0.1</release>
<api>1.0.1</api>
@@ -25,6 +25,9 @@ http://pear.php.net/dtd/package-2.0.xsd">
</stability>
<license uri="http://www.php.net/license">PHP</license>
<notes>
+- Added support for BINARY_DOUBLE and BINARY_FLOAT to PDO_OCI and OCI8
+ (also fixes bug #36764). (Tony)
+- Fixed bug #35907 (PDO_OCI uses hardcoded lib path $ORACLE_HOME/lib). (Tony)
- Repackage with package2.xml
- Improved handling of long columns
- Fixed PECL Bug #5722; implemented LOB support.
@@ -59,7 +62,7 @@ http://pecl4win.php.net/ext.php/php_pdo_oci.dll
<package>
<name>pdo</name>
<channel>pecl.php.net</channel>
- <min>1.0</min>
+ <min>1.0.3</min>
<providesextension>PDO</providesextension>
</package>
</required>
diff --git a/ext/pdo_oci/tests/bug_33707.phpt b/ext/pdo_oci/tests/bug_33707.phpt
index 17ea37f74..6e53e3fb9 100644
--- a/ext/pdo_oci/tests/bug_33707.phpt
+++ b/ext/pdo_oci/tests/bug_33707.phpt
@@ -3,8 +3,7 @@ PDO OCI Bug #33707
--SKIPIF--
<?php
if (!extension_loaded('pdo') || !extension_loaded('pdo_oci')) die('skip not loaded');
-require 'ext/pdo_oci/tests/config.inc';
-require 'ext/pdo/tests/pdo_test.inc';
+require dirname(__FILE__).'/../../pdo/tests/pdo_test.inc';
PDOTest::skip();
?>
--FILE--
diff --git a/ext/pdo_odbc/config.m4 b/ext/pdo_odbc/config.m4
index acc350d85..94dad6e22 100755
--- a/ext/pdo_odbc/config.m4
+++ b/ext/pdo_odbc/config.m4
@@ -1,4 +1,4 @@
-dnl $Id: config.m4,v 1.22 2005/07/27 03:22:02 wez Exp $
+dnl $Id: config.m4,v 1.22.2.1 2006/04/30 01:42:53 wez Exp $
dnl config.m4 for extension pdo_odbc
dnl vim:et:sw=2:ts=2:
@@ -160,7 +160,7 @@ functions required for PDO support.
PHP_NEW_EXTENSION(pdo_odbc, pdo_odbc.c odbc_driver.c odbc_stmt.c, $ext_shared,,-I$pdo_inc_path $PDO_ODBC_INCLUDE)
PHP_SUBST(PDO_ODBC_SHARED_LIBADD)
- ifdef([PHP_ADD_EXTENDION_DEP],
+ ifdef([PHP_ADD_EXTENSION_DEP],
[
PHP_ADD_EXTENSION_DEP(pdo_odbc, pdo)
])
diff --git a/ext/pdo_odbc/odbc_driver.c b/ext/pdo_odbc/odbc_driver.c
index 6ef1b7ff4..085ca9007 100755
--- a/ext/pdo_odbc/odbc_driver.c
+++ b/ext/pdo_odbc/odbc_driver.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: odbc_driver.c,v 1.27.2.2 2005/12/14 04:56:22 wez Exp $ */
+/* $Id: odbc_driver.c,v 1.27.2.4 2006/04/30 01:27:33 wez Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -198,13 +198,21 @@ static int odbc_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len, p
efree(nsql);
}
+ stmt->driver_data = S;
+ stmt->methods = &odbc_stmt_methods;
+
if (rc != SQL_SUCCESS) {
pdo_odbc_stmt_error("SQLPrepare");
+ if (rc != SQL_SUCCESS_WITH_INFO) {
+ /* clone error information into the db handle */
+ strcpy(H->einfo.last_err_msg, S->einfo.last_err_msg);
+ H->einfo.file = S->einfo.file;
+ H->einfo.line = S->einfo.line;
+ H->einfo.what = S->einfo.what;
+ strcpy(dbh->error_code, stmt->error_code);
+ }
}
- stmt->driver_data = S;
- stmt->methods = &odbc_stmt_methods;
-
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
return 0;
}
@@ -226,6 +234,14 @@ static long odbc_handle_doer(pdo_dbh_t *dbh, const char *sql, long sql_len TSRML
rc = SQLExecDirect(stmt, (char *)sql, sql_len);
+ if (rc == SQL_NO_DATA) {
+ /* If SQLExecDirect executes a searched update or delete statement that
+ * does not affect any rows at the data source, the call to
+ * SQLExecDirect returns SQL_NO_DATA. */
+ row_count = 0;
+ goto out;
+ }
+
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
pdo_odbc_doer_error("SQLExecDirect");
goto out;
diff --git a/ext/pdo_odbc/odbc_stmt.c b/ext/pdo_odbc/odbc_stmt.c
index ea9a6980d..2711355ed 100755
--- a/ext/pdo_odbc/odbc_stmt.c
+++ b/ext/pdo_odbc/odbc_stmt.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: odbc_stmt.c,v 1.26.2.1 2005/09/30 04:19:24 wez Exp $ */
+/* $Id: odbc_stmt.c,v 1.26.2.2 2006/03/27 21:04:12 wez Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -146,6 +146,7 @@ static int odbc_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC)
stmt->column_count = (int)colcount;
S->cols = ecalloc(colcount, sizeof(pdo_odbc_column));
+ S->going_long = 0;
}
return 1;
@@ -399,8 +400,9 @@ static int odbc_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC)
col->param_type = PDO_PARAM_STR;
/* tell ODBC to put it straight into our buffer, but only if it
- * isn't "long" data */
- if (colsize < 256) {
+ * isn't "long" data, and only if we haven't already bound a long
+ * column. */
+ if (colsize < 256 && !S->going_long) {
S->cols[colno].data = emalloc(colsize+1);
rc = SQLBindCol(S->stmt, colno+1, SQL_C_CHAR, S->cols[colno].data,
@@ -414,6 +416,7 @@ static int odbc_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC)
/* allocate a smaller buffer to keep around for smaller
* "long" columns */
S->cols[colno].data = emalloc(256);
+ S->going_long = 1;
}
return 1;
@@ -589,6 +592,7 @@ static int odbc_stmt_next_rowset(pdo_stmt_t *stmt TSRMLS_DC)
SQLNumResultCols(S->stmt, &colcount);
stmt->column_count = (int)colcount;
S->cols = ecalloc(colcount, sizeof(pdo_odbc_column));
+ S->going_long = 0;
return 1;
}
diff --git a/ext/pdo_odbc/package2.xml b/ext/pdo_odbc/package2.xml
index ce50b8d42..3eb99d141 100644
--- a/ext/pdo_odbc/package2.xml
+++ b/ext/pdo_odbc/package2.xml
@@ -15,7 +15,7 @@ and IBM DB2 libraries, and will support more in future releases.
<email>wez@php.net</email>
<active>yes</active>
</lead>
- <date>2005-12-04</date>
+ <date>2006-05-01</date>
<version>
<release>1.0.1</release>
<api>1.0.1</api>
@@ -26,6 +26,8 @@ and IBM DB2 libraries, and will support more in future releases.
</stability>
<license uri="http://www.php.net/license">PHP</license>
<notes>
+- Fixed bug #35552 (crash when pdo_odbc prepare fails). (Wez).
+- Fixed bug #36632 (bad error reporting for pdo_odbc exec UPDATE). (Wez).
- repackage with package2.xml
You require either IBM DB2 CLI libraries or unixODBC to use this package.
@@ -57,7 +59,7 @@ http://pecl4win.php.net/ext.php/php_pdo_odbc.dll
<package>
<name>pdo</name>
<channel>pecl.php.net</channel>
- <min>1.0</min>
+ <min>1.0.3</min>
<providesextension>PDO</providesextension>
</package>
</required>
diff --git a/ext/pdo_odbc/php_pdo_odbc_int.h b/ext/pdo_odbc/php_pdo_odbc_int.h
index caa31f3cb..5286a8b7e 100755
--- a/ext/pdo_odbc/php_pdo_odbc_int.h
+++ b/ext/pdo_odbc/php_pdo_odbc_int.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pdo_odbc_int.h,v 1.9 2005/07/07 12:49:21 wez Exp $ */
+/* $Id: php_pdo_odbc_int.h,v 1.9.2.1 2006/03/27 21:04:12 wez Exp $ */
#ifdef PHP_WIN32
# define PDO_ODBC_TYPE "Win32"
@@ -136,7 +136,7 @@ typedef struct {
unsigned long datalen;
long fetched_len;
SWORD coltype;
- char colname[32];
+ char colname[128];
} pdo_odbc_column;
typedef struct {
@@ -144,6 +144,8 @@ typedef struct {
pdo_odbc_column *cols;
pdo_odbc_db_handle *H;
pdo_odbc_errinfo einfo;
+ unsigned going_long:1;
+ unsigned _spare:31;
} pdo_odbc_stmt;
typedef struct {
diff --git a/ext/pdo_pgsql/config.w32 b/ext/pdo_pgsql/config.w32
index 36a2ea7f2..618ff1fc6 100644
--- a/ext/pdo_pgsql/config.w32
+++ b/ext/pdo_pgsql/config.w32
@@ -1,4 +1,4 @@
-// $Id: config.w32,v 1.4 2005/05/16 17:34:44 edink Exp $
+// $Id: config.w32,v 1.4.2.1 2006/03/14 10:49:18 edink Exp $
// vim:ft=javascript
ARG_WITH("pdo-pgsql", "PostgreSQL support for PDO", "no");
@@ -7,6 +7,11 @@ if (PHP_PDO_PGSQL != "no") {
if (CHECK_LIB("libpq.lib", "pdo_pgsql", PHP_PDO_PGSQL) &&
CHECK_HEADER_ADD_INCLUDE("libpq-fe.h", "CFLAGS_PDO_PGSQL", PHP_PDO_PGSQL + ";" + PHP_PHP_BUILD + "\\include\\pgsql")) {
EXTENSION("pdo_pgsql", "pdo_pgsql.c pgsql_driver.c pgsql_statement.c");
+
+ if (CHECK_HEADER_ADD_INCLUDE("pg_config.h", "CFLAGS_PDO_PGSQL", PHP_PDO_PGSQL + ";" + PHP_PHP_BUILD + "\\include\\pgsql")) {
+ ADD_FLAG('CFLAGS_PDO_PGSQL', "/D HAVE_PG_CONFIG_H");
+ }
+
ADD_FLAG('CFLAGS_PDO_PGSQL', "/I ..\\pecl");
AC_DEFINE('HAVE_PDO_PGSQL', 1, 'Have PostgreSQL library');
ADD_FLAG('CFLAGS_PDO_PGSQL', "/D HAVE_PQPARAMETERSTATUS=1 /D HAVE_PQPROTOCOLVERSION=1 /D HAVE_PGTRANSACTIONSTATUS=1 /D HAVE_PQUNESCAPEBYTEA=1 /D HAVE_PQRESULTERRORFIELD=1");
diff --git a/ext/pdo_pgsql/package2.xml b/ext/pdo_pgsql/package2.xml
index 3508bceb8..e397958a7 100644
--- a/ext/pdo_pgsql/package2.xml
+++ b/ext/pdo_pgsql/package2.xml
@@ -26,10 +26,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
<email>wez@php.net</email>
<active>yes</active>
</lead>
- <date>2005-12-04</date>
+ <date>2006-05-01</date>
<version>
- <release>1.0.1</release>
- <api>1.0.1</api>
+ <release>1.0.2</release>
+ <api>1.0.2</api>
</version>
<stability>
<release>stable</release>
@@ -37,6 +37,14 @@ http://pear.php.net/dtd/package-2.0.xsd">
</stability>
<license uri="http://www.php.net/license">PHP</license>
<notes>
+This PECL release corresponds to PHP 5.1.3.
+
+- Fixed bug #36727 (segfault in pdo_pgsql bindValue() when no parameters are
+ defined). (Tony)
+- Fixed bug #36382 (PDO/PgSQL's getColumnMeta() crashes). (Derick)
+- Fixed bug #36176 (PDO_PGSQL - PDO::exec() does not return number of rows
+ affected by the operation). (Ilia)
+- Fixed prepared statement name conflict handling in PDO_PGSQL. (Thies, Ilia)
- repackage with package2.xml
- Added PDO::pgsqlLOBCreate(), PDO::pgsqlLOBOpen() and PDO::pgsqlLOBUnlink().
@@ -69,7 +77,7 @@ http://pecl4win.php.net/ext.php/php_pdo_pgsql.dll
<package>
<name>pdo</name>
<channel>pecl.php.net</channel>
- <min>1.0.2</min>
+ <min>1.0.3</min>
<providesextension>PDO</providesextension>
</package>
</required>
diff --git a/ext/pdo_pgsql/pdo_pgsql.c b/ext/pdo_pgsql/pdo_pgsql.c
index 87cfb1b86..805cd2c9d 100644
--- a/ext/pdo_pgsql/pdo_pgsql.c
+++ b/ext/pdo_pgsql/pdo_pgsql.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_pgsql.c,v 1.7.2.10 2006/01/01 12:50:12 sniper Exp $ */
+/* $Id: pdo_pgsql.c,v 1.7.2.11 2006/03/14 10:49:18 edink Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -30,6 +30,10 @@
#include "php_pdo_pgsql.h"
#include "php_pdo_pgsql_int.h"
+#ifdef HAVE_PG_CONFIG_H
+#include <pg_config.h>
+#endif
+
/* {{{ pdo_pgsql_functions[] */
zend_function_entry pdo_pgsql_functions[] = {
{NULL, NULL, NULL}
@@ -115,6 +119,12 @@ PHP_MINFO_FUNCTION(pdo_pgsql)
{
php_info_print_table_start();
php_info_print_table_header(2, "PDO Driver for PostgreSQL", "enabled");
+#ifdef HAVE_PG_CONFIG_H
+ php_info_print_table_row(2, "PostgreSQL(libpq) Version", PG_VERSION);
+#endif
+ php_info_print_table_row(2, "Module version", pdo_pgsql_module_entry.version);
+ php_info_print_table_row(2, "Revision", " $Id: pdo_pgsql.c,v 1.7.2.11 2006/03/14 10:49:18 edink Exp $ ");
+
php_info_print_table_end();
}
/* }}} */
diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c
index 8568d3697..84fd076c6 100644
--- a/ext/pdo_pgsql/pgsql_driver.c
+++ b/ext/pdo_pgsql/pgsql_driver.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql_driver.c,v 1.53.2.10 2006/01/01 12:50:12 sniper Exp $ */
+/* $Id: pgsql_driver.c,v 1.53.2.14 2006/04/09 08:17:50 wez Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -218,6 +218,7 @@ static int pgsql_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len,
int ret;
char *nsql = NULL;
int nsql_len = 0;
+ int emulate = 0;
#endif
S->H = H;
@@ -233,9 +234,18 @@ static int pgsql_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len,
}
#if HAVE_PQPREPARE
- if ((!driver_options || pdo_attr_lval(driver_options,
- PDO_PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT, 0 TSRMLS_CC) == 0)
- && PQprotocolVersion(H->server) > 2) {
+
+ if (driver_options) {
+ if (pdo_attr_lval(driver_options,
+ PDO_PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT, 0 TSRMLS_CC) == 1) {
+ emulate = 1;
+ } else if (pdo_attr_lval(driver_options, PDO_ATTR_EMULATE_PREPARES,
+ 0 TSRMLS_CC) == 1) {
+ emulate = 1;
+ }
+ }
+
+ if (!emulate && PQprotocolVersion(H->server) > 2) {
stmt->supports_placeholders = PDO_PLACEHOLDER_NAMED;
stmt->named_rewrite_template = "$%d";
ret = pdo_parse_params(stmt, (char*)sql, sql_len, &nsql, &nsql_len TSRMLS_CC);
@@ -270,23 +280,27 @@ static long pgsql_handle_doer(pdo_dbh_t *dbh, const char *sql, long sql_len TSRM
{
pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data;
PGresult *res;
+ long ret = 1;
+ ExecStatusType qs;
if (!(res = PQexec(H->server, sql))) {
/* fatal error */
pdo_pgsql_error(dbh, PGRES_FATAL_ERROR, NULL);
return -1;
- } else {
- ExecStatusType qs = PQresultStatus(res);
- if (qs != PGRES_COMMAND_OK && qs != PGRES_TUPLES_OK) {
- pdo_pgsql_error(dbh, qs, pdo_pgsql_sqlstate(res));
- PQclear(res);
- return -1;
- }
- H->pgoid = PQoidValue(res);
+ }
+ qs = PQresultStatus(res);
+ if (qs != PGRES_COMMAND_OK && qs != PGRES_TUPLES_OK) {
+ pdo_pgsql_error(dbh, qs, pdo_pgsql_sqlstate(res));
PQclear(res);
+ return -1;
}
+ H->pgoid = PQoidValue(res);
+#if HAVE_PQCMDTUPLES
+ ret = atol(PQcmdTuples(res));
+#endif
+ PQclear(res);
- return 1;
+ return ret;
}
static int pgsql_handle_quoter(pdo_dbh_t *dbh, const char *unquoted, int unquotedlen, char **quoted, int *quotedlen, enum pdo_param_type paramtype TSRMLS_DC)
@@ -667,7 +681,7 @@ static int pdo_pgsql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
H->pgoid = -1;
dbh->methods = &pgsql_methods;
- dbh->alloc_own_columns = 0;
+ dbh->alloc_own_columns = 1;
dbh->max_escaped_char_length = 2;
ret = 1;
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c
index 1d28d0b71..5abdfa111 100644
--- a/ext/pdo_pgsql/pgsql_statement.c
+++ b/ext/pdo_pgsql/pgsql_statement.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql_statement.c,v 1.31.2.10 2006/01/01 12:50:12 sniper Exp $ */
+/* $Id: pgsql_statement.c,v 1.31.2.12 2006/03/27 20:51:01 wez Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -221,7 +221,7 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
}
break;
- case PDO_PARAM_EVT_ALLOC:
+ case PDO_PARAM_EVT_NORMALIZE:
/* decode name from $1, $2 into 0, 1 etc. */
if (param->name) {
if (param->name[0] == '$') {
@@ -229,7 +229,7 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
} else {
/* resolve parameter name to rewritten name */
char *nameptr;
- if (SUCCESS == zend_hash_find(stmt->bound_param_map,
+ if (stmt->bound_param_map && SUCCESS == zend_hash_find(stmt->bound_param_map,
param->name, param->namelen + 1, (void**)&nameptr)) {
param->paramno = atoi(nameptr + 1) - 1;
} else {
@@ -240,6 +240,10 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
}
break;
+ case PDO_PARAM_EVT_ALLOC:
+ /* work is handled by EVT_NORMALIZE */
+ return 1;
+
case PDO_PARAM_EVT_EXEC_PRE:
if (!S->param_values) {
S->param_values = ecalloc(
diff --git a/ext/pdo_pgsql/tests/bug36727.phpt b/ext/pdo_pgsql/tests/bug36727.phpt
new file mode 100644
index 000000000..c6f7c8a80
--- /dev/null
+++ b/ext/pdo_pgsql/tests/bug36727.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Bug #36727 (segfault in bindValue() when no parameters are defined)
+--SKIPIF--
+<?php
+if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded');
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+require dirname(__FILE__) . '/config.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+require dirname(__FILE__) . '/config.inc';
+$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+
+$stmt = $db->prepare('SELECT * FROM child');
+var_dump($stmt->bindValue(':test', 1, PDO::PARAM_INT));
+
+echo "Done\n";
+?>
+--EXPECT--
+bool(false)
+Done
diff --git a/ext/pdo_sqlite/config.m4 b/ext/pdo_sqlite/config.m4
index cd9db22b4..0d9f59d7f 100644
--- a/ext/pdo_sqlite/config.m4
+++ b/ext/pdo_sqlite/config.m4
@@ -1,4 +1,4 @@
-dnl $Id: config.m4,v 1.26.2.8 2005/12/31 00:56:06 sniper Exp $
+dnl $Id: config.m4,v 1.26.2.9 2006/05/03 11:12:54 pajoye Exp $
dnl config.m4 for extension pdo_sqlite
dnl vim:et:sw=2:ts=2:
@@ -7,6 +7,9 @@ if test "$PHP_PDO" != "no"; then
PHP_ARG_WITH(pdo-sqlite, for sqlite 3 driver for PDO,
[ --without-pdo-sqlite PDO: sqlite 3 support],yes)
+PHP_ARG_WITH(pdo-sqlite, for sqlite 3 support for PDO,
+[ --with-pdo-sqlite[=DIR] PDO: sqlite support. DIR is the sqlite base directory, the bundled sqlite is used by default])
+
if test "$PHP_PDO_SQLITE" != "no"; then
ifdef([PHP_CHECK_PDO_INCLUDES],
diff --git a/ext/pdo_sqlite/package2.xml b/ext/pdo_sqlite/package2.xml
index 25d6e95dd..7ccec31cb 100644
--- a/ext/pdo_sqlite/package2.xml
+++ b/ext/pdo_sqlite/package2.xml
@@ -19,7 +19,7 @@ concurrency.
<email>wez@php.net</email>
<active>yes</active>
</lead>
- <date>2005-12-04</date>
+ <date>2006-05-01</date>
<version>
<release>1.0.1</release>
<api>1.0.1</api>
@@ -30,8 +30,8 @@ concurrency.
</stability>
<license uri="http://www.php.net/license">PHP</license>
<notes>
-- Upgraded to new package2 format; no code changes in this release
-
+- Updated libsqlite in ext/pdo_sqlite to 3.2.8. (Ilia)
+- Upgraded to new package2 format
- Fixed PECL Bug #5633; build issues
- Added sqliteCreateFunction() and sqliteCreateAggregate()
- Fixed PECL Bug #3452; problem when first row of a result set contains a NULL value.
@@ -176,7 +176,7 @@ http://pecl4win.php.net/ext.php/php_pdo_sqlite.dll
<package>
<name>pdo</name>
<channel>pecl.php.net</channel>
- <min>1.0</min>
+ <min>1.0.3</min>
<providesextension>PDO</providesextension>
</package>
</required>
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c
index 92a20ad1c..df233118e 100644
--- a/ext/pgsql/pgsql.c
+++ b/ext/pgsql/pgsql.c
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql.c,v 1.331.2.8 2006/01/01 12:50:12 sniper Exp $ */
+/* $Id: pgsql.c,v 1.331.2.13 2006/04/10 19:51:55 helly Exp $ */
#include <stdlib.h>
@@ -257,7 +257,7 @@ ZEND_GET_MODULE(pgsql)
static int le_link, le_plink, le_result, le_lofp, le_string;
-ZEND_DECLARE_MODULE_GLOBALS(pgsql);
+ZEND_DECLARE_MODULE_GLOBALS(pgsql)
/* {{{ _php_pgsql_trim_message */
static char * _php_pgsql_trim_message(const char *message, int *len)
@@ -1257,7 +1257,7 @@ PHP_FUNCTION(pg_query_params)
}
otype = (*tmp)->type;
- convert_to_string(*tmp);
+ convert_to_string_ex(tmp);
if (Z_TYPE_PP(tmp) != IS_STRING) {
php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error converting parameter");
_php_pgsql_free_params(params, num_params);
@@ -2360,7 +2360,7 @@ PHP_FUNCTION(pg_trace)
RETURN_FALSE;
}
- if (FAILURE == php_stream_cast(stream, PHP_STREAM_AS_STDIO, (void**)fp, REPORT_ERRORS)) {
+ if (FAILURE == php_stream_cast(stream, PHP_STREAM_AS_STDIO, (void**)&fp, REPORT_ERRORS)) {
php_stream_close(stream);
RETURN_FALSE;
}
@@ -4531,6 +4531,7 @@ PHP_PGSQL_API int php_pgsql_convert(PGconn *pg_link, const char *table_name, con
zend_hash_get_current_data_ex(Z_ARRVAL_P(values), (void **)&val, &pos) == SUCCESS;
zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos)) {
skip_field = 0;
+ new_val = NULL;
if ((key_type = zend_hash_get_current_key_ex(Z_ARRVAL_P(values), &field, &field_len, &num_idx, 0, &pos)) == HASH_KEY_NON_EXISTANT) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to get array key type");
@@ -4569,7 +4570,7 @@ PHP_PGSQL_API int php_pgsql_convert(PGconn *pg_link, const char *table_name, con
if (err) {
break; /* break out for() */
}
- MAKE_STD_ZVAL(new_val);
+ ALLOC_INIT_ZVAL(new_val);
switch(php_pgsql_get_data_type(Z_STRVAL_PP(type), Z_STRLEN_PP(type)))
{
case PG_BOOL:
diff --git a/ext/pgsql/tests/80_bug36625.phpt b/ext/pgsql/tests/80_bug36625.phpt
new file mode 100755
index 000000000..a95cea711
--- /dev/null
+++ b/ext/pgsql/tests/80_bug36625.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Bug #36625 (pg_trace() does not work)
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--FILE--
+<?php
+
+require_once('config.inc');
+
+$dbh = @pg_connect($conn_str);
+if (!$dbh) {
+ die ('Could not connect to the server');
+}
+
+$tracefile = dirname(__FILE__) . '/trace.tmp';
+
+@unlink($tracefile);
+var_dump(file_exists($tracefile));
+
+pg_trace($tracefile, 'w', $dbh);
+$res = pg_query($dbh, 'select 1');
+var_dump($res);
+pg_close($dbh);
+
+$found = 0;
+function search_trace_file($line)
+{
+ if (strpos($line, '"select 1"') !== false || strpos($line, "'select 1'") !== false) {
+ $GLOBALS['found']++;
+ }
+}
+
+$trace = file($tracefile);
+array_walk($trace, 'search_trace_file');
+var_dump($found > 0);
+var_dump(file_exists($tracefile));
+
+?>
+===DONE===
+--CLEAN--
+<?php unlink($tracefile); ?>
+--EXPECTF--
+bool(false)
+resource(%d) of type (pgsql result)
+bool(true)
+bool(true)
+===DONE===
diff --git a/ext/posix/CREDITS b/ext/posix/CREDITS
index c769635d9..34b1a4720 100644
--- a/ext/posix/CREDITS
+++ b/ext/posix/CREDITS
@@ -1,2 +1,2 @@
Posix
-Kristian Köhntopp
+Kristian Koehntopp
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 7ed925593..1eedbb6e3 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_reflection.c,v 1.164.2.17 2006/01/01 12:50:12 sniper Exp $ */
+/* $Id: php_reflection.c,v 1.164.2.33 2006/03/29 14:28:42 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -240,9 +240,7 @@ static void reflection_objects_clone(void *object, void **object_clone TSRMLS_DC
reflection_object **intern_clone = (reflection_object **) object_clone;
*intern_clone = emalloc(sizeof(reflection_object));
- (*intern_clone)->zo.ce = intern->zo.ce;
- (*intern_clone)->zo.guards = NULL;
- ALLOC_HASHTABLE((*intern_clone)->zo.properties);
+ zend_object_std_init(&(*intern_clone)->zo, intern->zo.ce TSRMLS_CC);
(*intern_clone)->ptr = intern->ptr;
(*intern_clone)->free_ptr = intern->free_ptr;
(*intern_clone)->obj = intern->obj;
@@ -264,8 +262,7 @@ static zend_object_value reflection_objects_new(zend_class_entry *class_type TSR
intern->obj = NULL;
intern->free_ptr = 0;
- ALLOC_HASHTABLE(intern->zo.properties);
- zend_hash_init(intern->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ zend_object_std_init(&intern->zo, class_type TSRMLS_CC);
zend_hash_copy(intern->zo.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
retval.handle = zend_objects_store_put(intern, NULL, reflection_free_objects_storage, reflection_objects_clone TSRMLS_CC);
retval.handlers = &reflection_object_handlers;
@@ -352,6 +349,7 @@ static void _class_string(string *str, zend_class_entry *ce, zval *obj, char *in
/* Constants */
if (&ce->constants_table) {
+ zend_hash_apply_with_argument(&ce->constants_table, (apply_func_arg_t) zval_update_constant, (void*)1 TSRMLS_CC);
string_printf(str, "\n");
count = zend_hash_num_elements(&ce->constants_table);
string_printf(str, "%s - Constants [%d] {\n", indent, count);
@@ -553,7 +551,7 @@ static zend_op* _get_recv_op(zend_op_array *op_array, zend_uint offset)
++offset;
while (op < end) {
if ((op->opcode == ZEND_RECV || op->opcode == ZEND_RECV_INIT) &&
- op->op1.u.constant.value.lval == offset) {
+ op->op1.u.constant.value.lval == (long)offset) {
return op;
}
++op;
@@ -670,6 +668,9 @@ static void _function_string(string *str, zend_function *fptr, zend_class_entry
string_printf(str, fptr->common.scope ? "%sMethod [ " : "%sFunction [ ", indent);
string_printf(str, (fptr->type == ZEND_USER_FUNCTION) ? "<user" : "<internal");
+ if (fptr->common.fn_flags & ZEND_ACC_DEPRECATED) {
+ string_printf(str, ", deprecated");
+ }
#if MBO_0
if (fptr->type == ZEND_INTERNAL_FUNCTION && ((zend_internal_function*)fptr)->module) {
string_printf(str, ":%s", ((zend_internal_function*)fptr)->module->name);
@@ -867,6 +868,41 @@ static void _extension_string(string *str, zend_module_entry *module, char *inde
module->module_number, module->name,
(module->version == NO_VERSION_YET) ? "<no_version>" : module->version);
+ if (module->deps) {
+ zend_module_dep* dep = module->deps;
+
+ string_printf(str, "\n - Dependencies {\n");
+
+ while(dep->name) {
+ string_printf(str, "%s Dependency [ %s (", indent, dep->name);
+
+ switch(dep->type) {
+ case MODULE_DEP_REQUIRED:
+ string_write(str, "Required", sizeof("Required") - 1);
+ break;
+ case MODULE_DEP_CONFLICTS:
+ string_write(str, "Conflicts", sizeof("Conflicts") - 1);
+ break;
+ case MODULE_DEP_OPTIONAL:
+ string_write(str, "Optional", sizeof("Optional") - 1);
+ break;
+ default:
+ string_write(str, "Error", sizeof("Error") - 1); /* shouldn't happen */
+ break;
+ }
+
+ if (dep->rel) {
+ string_printf(str, " %s", dep->rel);
+ }
+ if (dep->version) {
+ string_printf(str, " %s", dep->version);
+ }
+ string_write(str, ") ]\n", sizeof(") ]\n") - 1);
+ dep++;
+ }
+ string_printf(str, "%s }\n", indent);
+ }
+
{
string str_ini;
string_init(&str_ini);
@@ -1070,14 +1106,10 @@ static void reflection_property_factory(zend_class_entry *ce, zend_property_info
if (!(prop->flags & ZEND_ACC_PRIVATE)) {
/* we have to seach the class hierarchy for this (implicit) public or protected property */
- zend_class_entry *tmp_ce = ce->parent;
+ zend_class_entry *tmp_ce = ce;
zend_property_info *tmp_info;
- while (tmp_ce && zend_hash_find(&tmp_ce->properties_info, prop_name, strlen(prop_name) + 1, (void **) &tmp_info) == SUCCESS) {
- if (tmp_info->flags & ZEND_ACC_PRIVATE) {
- /* private in super class => NOT the same property */
- break;
- }
+ while (tmp_ce && zend_hash_find(&tmp_ce->properties_info, prop_name, strlen(prop_name) + 1, (void **) &tmp_info) != SUCCESS) {
ce = tmp_ce;
prop = tmp_info;
tmp_ce = tmp_ce->parent;
@@ -1284,7 +1316,7 @@ ZEND_METHOD(reflection, getModifierNames)
}
/* }}} */
-/* {{{ proto public static mixed ReflectionFunction::export(string name [, bool return]) throws ReflectionException
+/* {{{ proto public static mixed ReflectionFunction::export(string name [, bool return])
Exports a reflection object. Returns the output if TRUE is specified for return, printing it otherwise. */
ZEND_METHOD(reflection_function, export)
{
@@ -1292,7 +1324,7 @@ ZEND_METHOD(reflection_function, export)
}
/* }}} */
-/* {{{ proto public ReflectionFunction::__construct(string name)
+/* {{{ proto public void ReflectionFunction::__construct(string name)
Constructor. Throws an Exception in case the given function does not exist */
ZEND_METHOD(reflection_function, __construct)
{
@@ -1711,7 +1743,7 @@ ZEND_METHOD(reflection_parameter, export)
}
/* }}} */
-/* {{{ proto public ReflectionParameter::__construct(mixed function, mixed parameter)
+/* {{{ proto public void ReflectionParameter::__construct(mixed function, mixed parameter)
Constructor. Throws an Exception in case the given method does not exist */
ZEND_METHOD(reflection_parameter, __construct)
{
@@ -1752,6 +1784,7 @@ ZEND_METHOD(reflection_parameter, __construct)
}
efree(lcname);
}
+ ce = fptr->common.scope;
break;
case IS_ARRAY: {
@@ -1866,9 +1899,10 @@ ZEND_METHOD(reflection_parameter, getName)
}
/* }}} */
-/* {{{ proto public ReflectionClass ReflectionParameter::getClass()
- Returns this parameters's class hint or NULL if there is none */
-ZEND_METHOD(reflection_parameter, getClass)
+#if MBO_0
+/* {{{ proto public ReflectionFunction ReflectionParameter::getDeclaringFunction()
+ Returns the ReflectionFunction for the function of this parameter */
+ZEND_METHOD(reflection_parameter, getDeclaringFunction)
{
reflection_object *intern;
parameter_reference *param;
@@ -1876,12 +1910,44 @@ ZEND_METHOD(reflection_parameter, getClass)
METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
GET_REFLECTION_OBJECT_PTR(param);
- if (!param->arg_info->class_name) {
- RETURN_NULL();
+ if (!param->fptr->common.scope) {
+ reflection_function_factory(param->fptr, return_value TSRMLS_CC);
} else {
- zend_class_entry **pce;
+ reflection_method_factory(param->fptr->common.scope, param->fptr, return_value TSRMLS_CC);
+ }
+}
+/* }}} */
+#endif
+
+/* {{{ proto public ReflectionClass|NULL ReflectionParameter::getDeclaringClass()
+ Returns in which class this parameter is defined (not the typehint of the parameter) */
+ZEND_METHOD(reflection_parameter, getDeclaringClass)
+{
+ reflection_object *intern;
+ parameter_reference *param;
+
+ METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
+ GET_REFLECTION_OBJECT_PTR(param);
+
+ if (param->fptr->common.scope) {
+ zend_reflection_class_factory(param->fptr->common.scope, return_value TSRMLS_CC);
+ }
+}
+/* }}} */
+
+/* {{{ proto public ReflectionClass|NULL ReflectionParameter::getClass()
+ Returns this parameters's class hint or NULL if there is none */
+ZEND_METHOD(reflection_parameter, getClass)
+{
+ reflection_object *intern;
+ parameter_reference *param;
+ zend_class_entry **pce;
+
+ METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
+ GET_REFLECTION_OBJECT_PTR(param);
- if (zend_lookup_class_ex(param->arg_info->class_name, param->arg_info->class_name_len, 1, &pce TSRMLS_CC) == FAILURE) {
+ if (param->arg_info->class_name) {
+ if (zend_lookup_class(param->arg_info->class_name, param->arg_info->class_name_len, &pce TSRMLS_CC) == FAILURE) {
zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
"Class %s does not exist", param->arg_info->class_name);
return;
@@ -1933,6 +1999,22 @@ ZEND_METHOD(reflection_parameter, isPassedByReference)
}
/* }}} */
+#if MBO_0
+/* {{{ proto public bool ReflectionParameter::getPosition()
+ Returns whether this parameter is an optional parameter */
+ZEND_METHOD(reflection_parameter, getPosition)
+{
+ reflection_object *intern;
+ parameter_reference *param;
+
+ METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
+ GET_REFLECTION_OBJECT_PTR(param);
+
+ RETVAL_LONG(param->offset);
+}
+/* }}} */
+#endif
+
/* {{{ proto public bool ReflectionParameter::isOptional()
Returns whether this parameter is an optional parameter */
ZEND_METHOD(reflection_parameter, isOptional)
@@ -2015,7 +2097,7 @@ ZEND_METHOD(reflection_method, export)
}
/* }}} */
-/* {{{ proto public ReflectionMethod::__construct(mixed class_or_method [, string name])
+/* {{{ proto public void ReflectionMethod::__construct(mixed class_or_method [, string name])
Constructor. Throws an Exception in case the given method does not exist */
ZEND_METHOD(reflection_method, __construct)
{
@@ -2369,6 +2451,14 @@ ZEND_METHOD(reflection_method, isStatic)
}
/* }}} */
+/* {{{ proto public bool ReflectionFunction::isDeprecated()
+ Returns whether this function is deprecated */
+ZEND_METHOD(reflection_function, isDeprecated)
+{
+ _function_check_flag(INTERNAL_FUNCTION_PARAM_PASSTHRU, ZEND_ACC_DEPRECATED);
+}
+/* }}} */
+
/* {{{ proto public bool ReflectionMethod::isConstructor()
Returns whether this method is the constructor */
ZEND_METHOD(reflection_method, isConstructor)
@@ -2507,7 +2597,7 @@ static void reflection_class_object_ctor(INTERNAL_FUNCTION_PARAMETERS, int is_ob
}
/* }}} */
-/* {{{ proto public ReflectionClass::__construct(mixed argument) throws ReflectionException
+/* {{{ proto public void ReflectionClass::__construct(mixed argument) throws ReflectionException
Constructor. Takes a string or an instance as an argument */
ZEND_METHOD(reflection_class, __construct)
{
@@ -3179,8 +3269,6 @@ ZEND_METHOD(reflection_class, newInstance)
METHOD_NOTSTATIC(reflection_class_ptr);
GET_REFLECTION_OBJECT_PTR(ce);
- object_init_ex(return_value, ce);
-
/* Run the constructor if there is one */
if (ce->constructor) {
zval ***params;
@@ -3198,6 +3286,77 @@ ZEND_METHOD(reflection_class, newInstance)
RETURN_FALSE;
}
+ object_init_ex(return_value, ce);
+
+ fci.size = sizeof(fci);
+ fci.function_table = EG(function_table);
+ fci.function_name = NULL;
+ fci.symbol_table = NULL;
+ fci.object_pp = &return_value;
+ fci.retval_ptr_ptr = &retval_ptr;
+ fci.param_count = argc;
+ fci.params = params;
+ fci.no_separation = 1;
+
+ fcc.initialized = 1;
+ fcc.function_handler = ce->constructor;
+ fcc.calling_scope = EG(scope);
+ fcc.object_pp = &return_value;
+
+ if (zend_call_function(&fci, &fcc TSRMLS_CC) == FAILURE) {
+ efree(params);
+ zval_ptr_dtor(&retval_ptr);
+ zend_error(E_WARNING, "Invocation of %s's constructor failed", ce->name);
+ RETURN_NULL();
+ }
+ if (retval_ptr) {
+ zval_ptr_dtor(&retval_ptr);
+ }
+ efree(params);
+ } else if (!ZEND_NUM_ARGS()) {
+ object_init_ex(return_value, ce);
+ } else {
+ zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Class %s does not have a constructor, so you cannot pass any constructor arguments", ce->name);
+ }
+}
+/* }}} */
+
+/* {{{ proto public stdclass ReflectionClass::newInstanceArgs(array args)
+ Returns an instance of this class */
+ZEND_METHOD(reflection_class, newInstanceArgs)
+{
+ zval *retval_ptr;
+ reflection_object *intern;
+ zend_class_entry *ce;
+ int argc;
+ HashTable *args;
+
+
+ METHOD_NOTSTATIC(reflection_class_ptr);
+ GET_REFLECTION_OBJECT_PTR(ce);
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|h", &args) == FAILURE) {
+ return;
+ }
+ argc = args->nNumOfElements;
+
+ /* Run the constructor if there is one */
+ if (ce->constructor) {
+ zval ***params;
+ zend_fcall_info fci;
+ zend_fcall_info_cache fcc;
+
+ if (!(ce->constructor->common.fn_flags & ZEND_ACC_PUBLIC)) {
+ zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Access to non-public constructor of class %s", ce->name);
+ return;
+ }
+
+ params = safe_emalloc(sizeof(zval **), argc, 0);
+ zend_hash_apply_with_argument(args, (apply_func_arg_t)_zval_array_to_c_array, &params TSRMLS_CC);
+ params -= argc;
+
+ object_init_ex(return_value, ce);
+
fci.size = sizeof(fci);
fci.function_table = EG(function_table);
fci.function_name = NULL;
@@ -3223,6 +3382,10 @@ ZEND_METHOD(reflection_class, newInstance)
zval_ptr_dtor(&retval_ptr);
}
efree(params);
+ } else if (!ZEND_NUM_ARGS()) {
+ object_init_ex(return_value, ce);
+ } else {
+ zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Class %s does not have a constructor, so you cannot pass any constructor arguments", ce->name);
}
}
/* }}} */
@@ -3247,7 +3410,7 @@ ZEND_METHOD(reflection_class, getInterfaces)
zval *interface;
ALLOC_ZVAL(interface);
zend_reflection_class_factory(ce->interfaces[i], interface TSRMLS_CC);
- add_assoc_zval_ex(return_value, ce->interfaces[i]->name, ce->interfaces[i]->name_length, interface);
+ add_assoc_zval_ex(return_value, ce->interfaces[i]->name, ce->interfaces[i]->name_length + 1, interface);
}
}
}
@@ -3423,7 +3586,7 @@ ZEND_METHOD(reflection_object, export)
}
/* }}} */
-/* {{{ proto public ReflectionObject::__construct(mixed argument) throws ReflectionException
+/* {{{ proto public void ReflectionObject::__construct(mixed argument) throws ReflectionException
Constructor. Takes an instance as an argument */
ZEND_METHOD(reflection_object, __construct)
{
@@ -3439,7 +3602,7 @@ ZEND_METHOD(reflection_property, export)
}
/* }}} */
-/* {{{ proto public ReflectionProperty::__construct(mixed class, string name)
+/* {{{ proto public void ReflectionProperty::__construct(mixed class, string name)
Constructor. Throws an Exception in case the given property does not exist */
ZEND_METHOD(reflection_property, __construct)
{
@@ -3491,14 +3654,10 @@ ZEND_METHOD(reflection_property, __construct)
if (!(property_info->flags & ZEND_ACC_PRIVATE)) {
/* we have to seach the class hierarchy for this (implicit) public or protected property */
- zend_class_entry *tmp_ce = ce->parent;
+ zend_class_entry *tmp_ce = ce;
zend_property_info *tmp_info;
- while (tmp_ce && zend_hash_find(&tmp_ce->properties_info, name_str, name_len + 1, (void **) &tmp_info) == SUCCESS) {
- if (tmp_info->flags & ZEND_ACC_PRIVATE) {
- /* private in super class => NOT the same property */
- break;
- }
+ while (tmp_ce && zend_hash_find(&tmp_ce->properties_info, name_str, name_len + 1, (void **) &tmp_info) != SUCCESS) {
ce = tmp_ce;
property_info = tmp_info;
tmp_ce = tmp_ce->parent;
@@ -3724,11 +3883,19 @@ ZEND_METHOD(reflection_property, getDeclaringClass)
{
reflection_object *intern;
property_reference *ref;
+ zend_class_entry *tmp_ce, *ce;
+ zend_property_info *tmp_info;
METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
GET_REFLECTION_OBJECT_PTR(ref);
- zend_reflection_class_factory(ref->ce, return_value TSRMLS_CC);
+ ce = tmp_ce = ref->ce;
+ while (tmp_ce && zend_hash_find(&tmp_ce->properties_info, ref->prop->name, ref->prop->name_length + 1, (void **) &tmp_info) == SUCCESS) {
+ ce = tmp_ce;
+ tmp_ce = tmp_ce->parent;
+ }
+
+ zend_reflection_class_factory(ce, return_value TSRMLS_CC);
}
/* {{{ proto public string ReflectionProperty::getDocComment()
@@ -3754,7 +3921,7 @@ ZEND_METHOD(reflection_extension, export)
}
/* }}} */
-/* {{{ proto public ReflectionExtension::__construct(string name)
+/* {{{ proto public void ReflectionExtension::__construct(string name)
Constructor. Throws an Exception in case the given extension does not exist */
ZEND_METHOD(reflection_extension, __construct)
{
@@ -3983,6 +4150,58 @@ ZEND_METHOD(reflection_extension, getClassNames)
}
/* }}} */
+/* {{{ proto public array ReflectionExtension::getDependencies()
+ Returns an array containing all names of all extensions this extension depends on */
+ZEND_METHOD(reflection_extension, getDependencies)
+{
+ reflection_object *intern;
+ zend_module_entry *module;
+ zend_module_dep *dep;
+
+ METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
+ GET_REFLECTION_OBJECT_PTR(module);
+
+ array_init(return_value);
+
+ dep = module->deps;
+
+ if (!dep)
+ {
+ return;
+ }
+
+ while(dep->name) {
+ char *relation;
+ char *rel_type;
+ int len;
+
+ switch(dep->type) {
+ case MODULE_DEP_REQUIRED:
+ rel_type = "Required";
+ break;
+ case MODULE_DEP_CONFLICTS:
+ rel_type = "Conflicts";
+ break;
+ case MODULE_DEP_OPTIONAL:
+ rel_type = "Optional";
+ break;
+ default:
+ rel_type = "Error"; /* shouldn't happen */
+ break;
+ }
+
+ len = spprintf(&relation, 0, "%s%s%s%s%s",
+ rel_type,
+ dep->rel ? " " : "",
+ dep->rel ? dep->rel : "",
+ dep->version ? " " : "",
+ dep->version ? dep->version : "");
+ add_assoc_stringl(return_value, dep->name, relation, len, 0);
+ dep++;
+ }
+}
+/* }}} */
+
/* {{{ method tables */
static zend_function_entry reflection_exception_functions[] = {
{NULL, NULL, NULL}
@@ -4023,6 +4242,7 @@ static zend_function_entry reflection_function_functions[] = {
ZEND_ME(reflection_function, getExtension, NULL, 0)
ZEND_ME(reflection_function, getExtensionName, NULL, 0)
#endif
+ ZEND_ME(reflection_function, isDeprecated, NULL, 0)
{NULL, NULL, NULL}
};
@@ -4076,6 +4296,7 @@ static zend_function_entry reflection_class_functions[] = {
ZEND_ME(reflection_class, getModifiers, NULL, 0)
ZEND_ME(reflection_class, isInstance, NULL, 0)
ZEND_ME(reflection_class, newInstance, NULL, 0)
+ ZEND_ME(reflection_class, newInstanceArgs, NULL, 0)
ZEND_ME(reflection_class, getParentClass, NULL, 0)
ZEND_ME(reflection_class, isSubclassOf, NULL, 0)
ZEND_ME(reflection_class, getStaticProperties, NULL, 0)
@@ -4121,9 +4342,16 @@ static zend_function_entry reflection_parameter_functions[] = {
ZEND_ME(reflection_parameter, __toString, NULL, 0)
ZEND_ME(reflection_parameter, getName, NULL, 0)
ZEND_ME(reflection_parameter, isPassedByReference, NULL, 0)
+#if MBO_0
+ ZEND_ME(reflection_parameter, getDeclaringFunction, NULL, 0)
+#endif
+ ZEND_ME(reflection_parameter, getDeclaringClass, NULL, 0)
ZEND_ME(reflection_parameter, getClass, NULL, 0)
ZEND_ME(reflection_parameter, isArray, NULL, 0)
ZEND_ME(reflection_parameter, allowsNull, NULL, 0)
+#if MBO_0
+ ZEND_ME(reflection_parameter, getPosition, NULL, 0)
+#endif
ZEND_ME(reflection_parameter, isOptional, NULL, 0)
ZEND_ME(reflection_parameter, isDefaultValueAvailable, NULL, 0)
ZEND_ME(reflection_parameter, getDefaultValue, NULL, 0)
@@ -4142,6 +4370,7 @@ static zend_function_entry reflection_extension_functions[] = {
ZEND_ME(reflection_extension, getINIEntries, NULL, 0)
ZEND_ME(reflection_extension, getClasses, NULL, 0)
ZEND_ME(reflection_extension, getClassNames, NULL, 0)
+ ZEND_ME(reflection_extension, getDependencies, NULL, 0)
{NULL, NULL, NULL}
};
/* }}} */
@@ -4195,6 +4424,8 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
reflection_register_implement(reflection_function_ptr, reflector_ptr TSRMLS_CC);
zend_declare_property_string(reflection_function_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(function, "IS_DEPRECATED", ZEND_ACC_DEPRECATED);
+
INIT_CLASS_ENTRY(_reflection_entry, "ReflectionParameter", reflection_parameter_functions);
_reflection_entry.create_object = reflection_objects_new;
reflection_parameter_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
@@ -4207,12 +4438,12 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
zend_declare_property_string(reflection_method_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_string(reflection_method_ptr, "class", sizeof("class")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
- REGISTER_REFLECTION_CLASS_CONST_LONG(method, "STATIC", ZEND_ACC_STATIC);
- REGISTER_REFLECTION_CLASS_CONST_LONG(method, "PUBLIC", ZEND_ACC_PUBLIC);
- REGISTER_REFLECTION_CLASS_CONST_LONG(method, "PROTECTED", ZEND_ACC_PROTECTED);
- REGISTER_REFLECTION_CLASS_CONST_LONG(method, "PRIVATE", ZEND_ACC_PRIVATE);
- REGISTER_REFLECTION_CLASS_CONST_LONG(method, "ABSTRACT", ZEND_ACC_ABSTRACT);
- REGISTER_REFLECTION_CLASS_CONST_LONG(method, "FINAL", ZEND_ACC_FINAL);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_STATIC", ZEND_ACC_STATIC);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_PUBLIC", ZEND_ACC_PUBLIC);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_PROTECTED", ZEND_ACC_PROTECTED);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_PRIVATE", ZEND_ACC_PRIVATE);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_ABSTRACT", ZEND_ACC_ABSTRACT);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_FINAL", ZEND_ACC_FINAL);
INIT_CLASS_ENTRY(_reflection_entry, "ReflectionClass", reflection_class_functions);
_reflection_entry.create_object = reflection_objects_new;
@@ -4220,9 +4451,9 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
reflection_register_implement(reflection_class_ptr, reflector_ptr TSRMLS_CC);
zend_declare_property_string(reflection_class_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
- REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IMPLICIT_ABSTRACT", ZEND_ACC_IMPLICIT_ABSTRACT_CLASS);
- REGISTER_REFLECTION_CLASS_CONST_LONG(class, "EXPLICIT_ABSTRACT", ZEND_ACC_EXPLICIT_ABSTRACT_CLASS);
- REGISTER_REFLECTION_CLASS_CONST_LONG(class, "FINAL", ZEND_ACC_FINAL_CLASS);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IS_IMPLICIT_ABSTRACT", ZEND_ACC_IMPLICIT_ABSTRACT_CLASS);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IS_EXPLICIT_ABSTRACT", ZEND_ACC_EXPLICIT_ABSTRACT_CLASS);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IS_FINAL", ZEND_ACC_FINAL_CLASS);
INIT_CLASS_ENTRY(_reflection_entry, "ReflectionObject", reflection_object_functions);
_reflection_entry.create_object = reflection_objects_new;
@@ -4235,10 +4466,10 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
zend_declare_property_string(reflection_property_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_string(reflection_property_ptr, "class", sizeof("class")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
- REGISTER_REFLECTION_CLASS_CONST_LONG(property, "STATIC", ZEND_ACC_STATIC);
- REGISTER_REFLECTION_CLASS_CONST_LONG(property, "PUBLIC", ZEND_ACC_PUBLIC);
- REGISTER_REFLECTION_CLASS_CONST_LONG(property, "PROTECTED", ZEND_ACC_PROTECTED);
- REGISTER_REFLECTION_CLASS_CONST_LONG(property, "PRIVATE", ZEND_ACC_PRIVATE);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(property, "IS_STATIC", ZEND_ACC_STATIC);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(property, "IS_PUBLIC", ZEND_ACC_PUBLIC);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(property, "IS_PROTECTED", ZEND_ACC_PROTECTED);
+ REGISTER_REFLECTION_CLASS_CONST_LONG(property, "IS_PRIVATE", ZEND_ACC_PRIVATE);
INIT_CLASS_ENTRY(_reflection_entry, "ReflectionExtension", reflection_extension_functions);
_reflection_entry.create_object = reflection_objects_new;
@@ -4254,7 +4485,7 @@ PHP_MINFO_FUNCTION(reflection) /* {{{ */
php_info_print_table_start();
php_info_print_table_header(2, "Reflection", "enabled");
- php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 1.164.2.17 2006/01/01 12:50:12 sniper Exp $");
+ php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 1.164.2.33 2006/03/29 14:28:42 tony2001 Exp $");
php_info_print_table_end();
} /* }}} */
diff --git a/ext/reflection/tests/001.phpt b/ext/reflection/tests/001.phpt
index 6a9d31a30..55458885c 100755
--- a/ext/reflection/tests/001.phpt
+++ b/ext/reflection/tests/001.phpt
@@ -1,5 +1,7 @@
--TEST--
Reflection inheritance
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/002.phpt b/ext/reflection/tests/002.phpt
index bef4c8166..9b233d372 100755
--- a/ext/reflection/tests/002.phpt
+++ b/ext/reflection/tests/002.phpt
@@ -1,5 +1,7 @@
--TEST--
Reflection properties are read only
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/003.phpt b/ext/reflection/tests/003.phpt
index 660389255..af8d82d57 100755
--- a/ext/reflection/tests/003.phpt
+++ b/ext/reflection/tests/003.phpt
@@ -1,5 +1,7 @@
--TEST--
-invoke() with base class method
+ReflectionMethod::invoke() with base class method
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/004.phpt b/ext/reflection/tests/004.phpt
index f8a448e6c..912d52654 100755
--- a/ext/reflection/tests/004.phpt
+++ b/ext/reflection/tests/004.phpt
@@ -1,5 +1,7 @@
--TEST--
-invoke() with non object or null value
+ReflectionMethod::invoke() with non object or null value
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/005.phpt b/ext/reflection/tests/005.phpt
index f337e44ae..bedc7d032 100755
--- a/ext/reflection/tests/005.phpt
+++ b/ext/reflection/tests/005.phpt
@@ -1,5 +1,7 @@
--TEST--
ReflectionMethod::getDocComment() uses wrong comment block
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/006.phpt b/ext/reflection/tests/006.phpt
index 89c438765..9e97ae465 100755
--- a/ext/reflection/tests/006.phpt
+++ b/ext/reflection/tests/006.phpt
@@ -1,5 +1,7 @@
--TEST--
ReflectionClass::[gs]etStaticPropertyValue
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/007.phpt b/ext/reflection/tests/007.phpt
new file mode 100755
index 000000000..83764e551
--- /dev/null
+++ b/ext/reflection/tests/007.phpt
@@ -0,0 +1,162 @@
+--TEST--
+ReflectionClass::newInstance[Args]
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
+--FILE--
+<?php
+
+function test($class)
+{
+ echo "====>$class\n";
+ try
+ {
+ $ref = new ReflectionClass($class);
+ }
+ catch (ReflectionException $e)
+ {
+ var_dump($e->getMessage());
+ return; // only here
+ }
+
+ echo "====>newInstance()\n";
+ try
+ {
+ var_dump($ref->newInstance());
+ }
+ catch (ReflectionException $e)
+ {
+ var_dump($e->getMessage());
+ }
+
+ echo "====>newInstance(25)\n";
+ try
+ {
+ var_dump($ref->newInstance(25));
+ }
+ catch (ReflectionException $e)
+ {
+ var_dump($e->getMessage());
+ }
+
+ echo "====>newInstance(25, 42)\n";
+ try
+ {
+ var_dump($ref->newInstance(25, 42));
+ }
+ catch (ReflectionException $e)
+ {
+ var_dump($e->getMessage());
+ }
+
+ echo "\n";
+}
+
+function __autoload($class)
+{
+ echo __FUNCTION__ . "($class)\n";
+}
+
+test('Class_does_not_exist');
+
+Class NoCtor
+{
+}
+
+test('NoCtor');
+
+Class WithCtor
+{
+ function __construct()
+ {
+ echo __METHOD__ . "()\n";
+ var_dump(func_get_args());
+ }
+}
+
+test('WithCtor');
+
+Class WithCtorWithArgs
+{
+ function __construct($arg)
+ {
+ echo __METHOD__ . "($arg)\n";
+ var_dump(func_get_args());
+ }
+}
+
+test('WithCtorWithArgs');
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+
+====>Class_does_not_exist
+__autoload(Class_does_not_exist)
+string(41) "Class Class_does_not_exist does not exist"
+====>NoCtor
+====>newInstance()
+object(NoCtor)#%d (0) {
+}
+====>newInstance(25)
+string(86) "Class NoCtor does not have a constructor, so you cannot pass any constructor arguments"
+====>newInstance(25, 42)
+string(86) "Class NoCtor does not have a constructor, so you cannot pass any constructor arguments"
+
+====>WithCtor
+====>newInstance()
+WithCtor::__construct()
+array(0) {
+}
+object(WithCtor)#%d (0) {
+}
+====>newInstance(25)
+WithCtor::__construct()
+array(1) {
+ [0]=>
+ int(25)
+}
+object(WithCtor)#%d (0) {
+}
+====>newInstance(25, 42)
+WithCtor::__construct()
+array(2) {
+ [0]=>
+ int(25)
+ [1]=>
+ int(42)
+}
+object(WithCtor)#%d (0) {
+}
+
+====>WithCtorWithArgs
+====>newInstance()
+
+Warning: Missing argument 1 for WithCtorWithArgs::__construct() in %s007.php on line %d
+
+Notice: Undefined variable: arg in %s007.php on line %d
+WithCtorWithArgs::__construct()
+array(0) {
+}
+object(WithCtorWithArgs)#%d (0) {
+}
+====>newInstance(25)
+WithCtorWithArgs::__construct(25)
+array(1) {
+ [0]=>
+ int(25)
+}
+object(WithCtorWithArgs)#%d (0) {
+}
+====>newInstance(25, 42)
+WithCtorWithArgs::__construct(25)
+array(2) {
+ [0]=>
+ int(25)
+ [1]=>
+ int(42)
+}
+object(WithCtorWithArgs)#%d (0) {
+}
+
+===DONE===
diff --git a/ext/reflection/tests/bug26640.phpt b/ext/reflection/tests/bug26640.phpt
index 2cbd0d23d..026e67561 100755
--- a/ext/reflection/tests/bug26640.phpt
+++ b/ext/reflection/tests/bug26640.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #26640 (__autoload() not invoked by Reflection classes)
+Reflection Bug #26640 (__autoload() not invoked by Reflection classes)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/bug26695.phpt b/ext/reflection/tests/bug26695.phpt
index 38e6607c3..c62395325 100755
--- a/ext/reflection/tests/bug26695.phpt
+++ b/ext/reflection/tests/bug26695.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #26695 (Reflection API does not recognize mixed-case class hints)
+Reflection Bug #26695 (Reflection API does not recognize mixed-case class hints)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/bug29268.phpt b/ext/reflection/tests/bug29268.phpt
index 335ee7337..9f17a5e11 100755
--- a/ext/reflection/tests/bug29268.phpt
+++ b/ext/reflection/tests/bug29268.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #29268 (__autoload() not called with reflectionProperty->getClass())
+Reflection Bug #29268 (__autoload() not called with reflectionProperty->getClass())
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
function __autoload($classname) {
@@ -14,8 +16,9 @@ class B{
$ref = new reflectionMethod('B','doit');
$parameters = $ref->getParameters();
-foreach($parameters as $parameter){
- $class = $parameter->getClass();
+foreach($parameters as $parameter)
+{
+ $class = $parameter->getClass();
echo $class->name."\n";
}
echo "ok\n";
diff --git a/ext/reflection/tests/bug29523.phpt b/ext/reflection/tests/bug29523.phpt
index 4eb357cc2..e952d0ffe 100755
--- a/ext/reflection/tests/bug29523.phpt
+++ b/ext/reflection/tests/bug29523.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #29523 (ReflectionParameter::isOptional() is incorrect)
+Reflection Bug #29523 (ReflectionParameter::isOptional() is incorrect)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/bug29828.phpt b/ext/reflection/tests/bug29828.phpt
index e1c9bbd36..f9052ac6b 100755
--- a/ext/reflection/tests/bug29828.phpt
+++ b/ext/reflection/tests/bug29828.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #29828 (Interfaces no longer work)
+Reflection Bug #29828 (Interfaces no longer work)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/bug29986.phpt b/ext/reflection/tests/bug29986.phpt
new file mode 100644
index 000000000..85bad6d6e
--- /dev/null
+++ b/ext/reflection/tests/bug29986.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Reflection Bug #29986 (Class constants won't work with predefined constants when using ReflectionClass)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
+--FILE--
+<?php
+class just_constants
+{
+ const BOOLEAN_CONSTANT = true;
+ const NULL_CONSTANT = null;
+ const STRING_CONSTANT = 'This is a string';
+ const INTEGER_CONSTANT = 1000;
+ const FLOAT_CONSTANT = 3.14159265;
+}
+
+Reflection::export(new ReflectionClass('just_constants'));
+?>
+--EXPECTF--
+Class [ <user> class just_constants ] {
+ @@ %s
+
+ - Constants [5] {
+ Constant [ boolean BOOLEAN_CONSTANT ] { }
+ Constant [ null NULL_CONSTANT ] { }
+ Constant [ string STRING_CONSTANT ] { }
+ Constant [ integer INTEGER_CONSTANT ] { }
+ Constant [ double FLOAT_CONSTANT ] { }
+ }
+
+ - Static properties [0] {
+ }
+
+ - Static methods [0] {
+ }
+
+ - Properties [0] {
+ }
+
+ - Methods [0] {
+ }
+}
diff --git a/ext/reflection/tests/bug30146.phpt b/ext/reflection/tests/bug30146.phpt
index 72c6d2e5f..d7dd2fc21 100755
--- a/ext/reflection/tests/bug30146.phpt
+++ b/ext/reflection/tests/bug30146.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #30146 (ReflectionProperty->getValue() requires instance for static property)
+Reflection Bug #30146 (ReflectionProperty->getValue() requires instance for static property)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
class test {
diff --git a/ext/reflection/tests/bug30148.phpt b/ext/reflection/tests/bug30148.phpt
index bc4415bfd..91bc31b65 100755
--- a/ext/reflection/tests/bug30148.phpt
+++ b/ext/reflection/tests/bug30148.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #30148 (ReflectionMethod->isConstructor() fails for inherited classes)
+Reflection Bug #30148 (ReflectionMethod->isConstructor() fails for inherited classes)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/bug30209.phpt b/ext/reflection/tests/bug30209.phpt
index 6705c6704..bab16ee35 100755
--- a/ext/reflection/tests/bug30209.phpt
+++ b/ext/reflection/tests/bug30209.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #30209 (ReflectionClass::getMethod() lowercases attribute)
+Reflection Bug #30209 (ReflectionClass::getMethod() lowercases attribute)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/bug30856.phpt b/ext/reflection/tests/bug30856.phpt
index 6c6d3171a..eaa6cf289 100755
--- a/ext/reflection/tests/bug30856.phpt
+++ b/ext/reflection/tests/bug30856.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #30856 (ReflectionClass::getStaticProperties segfaults)
+Reflection Bug #30856 (ReflectionClass::getStaticProperties segfaults)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
class bogus {
diff --git a/ext/reflection/tests/bug30961.phpt b/ext/reflection/tests/bug30961.phpt
index 67964343e..c765e7cc8 100755
--- a/ext/reflection/tests/bug30961.phpt
+++ b/ext/reflection/tests/bug30961.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #30961 (Wrong linenumber in ReflectionClass getStartLine())
+Reflection Bug #30961 (Wrong linenumber in ReflectionClass getStartLine())
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
class a
diff --git a/ext/reflection/tests/bug31651.phpt b/ext/reflection/tests/bug31651.phpt
index 60bee14e9..66a56c0f4 100755
--- a/ext/reflection/tests/bug31651.phpt
+++ b/ext/reflection/tests/bug31651.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #31651 (ReflectionClass::getDefaultProperties segfaults with arrays.)
+Reflection Bug #31651 (ReflectionClass::getDefaultProperties segfaults with arrays.)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/bug32981.phpt b/ext/reflection/tests/bug32981.phpt
index 1f89ca682..53214d7aa 100755
--- a/ext/reflection/tests/bug32981.phpt
+++ b/ext/reflection/tests/bug32981.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #32981 (ReflectionMethod::getStaticVariables() causes apache2.0.54 seg fault)
+Reflection Bug #32981 (ReflectionMethod::getStaticVariables() causes apache2.0.54 seg fault)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/bug33312.phpt b/ext/reflection/tests/bug33312.phpt
index 3784b56a6..2413a3dc3 100755
--- a/ext/reflection/tests/bug33312.phpt
+++ b/ext/reflection/tests/bug33312.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #33312 (ReflectionParameter methods do not work correctly)
+Reflection Bug #33312 (ReflectionParameter methods do not work correctly)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
class Foo {
diff --git a/ext/reflection/tests/bug33389.phpt b/ext/reflection/tests/bug33389.phpt
index 36f7079e2..d2a84e212 100755
--- a/ext/reflection/tests/bug33389.phpt
+++ b/ext/reflection/tests/bug33389.phpt
@@ -1,5 +1,7 @@
--TEST--
-Bug #33389 (double free() when exporting a ReflectionClass)
+Reflection Bug #33389 (double free() when exporting a ReflectionClass)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
define ('foobar', 1);
diff --git a/ext/reflection/tests/bug36308.phpt b/ext/reflection/tests/bug36308.phpt
new file mode 100755
index 000000000..52717b474
--- /dev/null
+++ b/ext/reflection/tests/bug36308.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Reflection Bug #36308 (ReflectionProperty::getDocComment() does not reflect extended class commentary)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
+--FILE--
+<?php
+class Base {
+ /** Base comment block */
+ public $foo = 'bar';
+}
+
+class Extended extends Base {
+ /** Extended commentary */
+ public $foo = 'zim';
+}
+
+$reflect = new ReflectionClass('Extended');
+$props = $reflect->getProperties();
+echo $props[0]->getDocComment();
+?>
+--EXPECT--
+/** Extended commentary */ \ No newline at end of file
diff --git a/ext/reflection/tests/bug36337.phpt b/ext/reflection/tests/bug36337.phpt
new file mode 100644
index 000000000..8ec928fc8
--- /dev/null
+++ b/ext/reflection/tests/bug36337.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Reflection Bug #36337 (ReflectionProperty fails to return correct visibility)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
+--FILE--
+<?php
+
+abstract class enum {
+ protected $_values;
+
+ public function __construct() {
+ $property = new ReflectionProperty(get_class($this),'_values');
+ var_dump($property->isProtected());
+ }
+
+}
+
+final class myEnum extends enum {
+ public $_values = array(
+ 0 => 'No value',
+ );
+}
+
+$x = new myEnum();
+
+echo "Done\n";
+?>
+--EXPECT--
+bool(false)
+Done
diff --git a/ext/reflection/tests/bug36434.phpt b/ext/reflection/tests/bug36434.phpt
new file mode 100644
index 000000000..e305c657a
--- /dev/null
+++ b/ext/reflection/tests/bug36434.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Reflection Bug #36434 (Properties from parent class fail to indetify their true origin)
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
+--FILE--
+<?php
+class ancester
+{
+public $ancester = 0;
+ function ancester()
+ {
+ return $this->ancester;
+ }
+}
+class foo extends ancester
+{
+public $bar = "1";
+ function foo()
+ {
+ return $this->bar;
+ }
+}
+
+$r = new ReflectionClass('foo');
+foreach ($r->GetProperties() as $p)
+{
+ echo $p->getName(). " ". $p->getDeclaringClass()->getName()."\n";
+}
+
+?>
+--EXPECT--
+bar foo
+ancester ancester
diff --git a/ext/reflection/tests/parameters_001.phpt b/ext/reflection/tests/parameters_001.phpt
index 0879756ea..036f11973 100755
--- a/ext/reflection/tests/parameters_001.phpt
+++ b/ext/reflection/tests/parameters_001.phpt
@@ -1,5 +1,7 @@
--TEST--
-Check for parameter being optional
+ReflectionParameter Check for parameter being optional
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/parameters_002.phpt b/ext/reflection/tests/parameters_002.phpt
new file mode 100755
index 000000000..6f911448c
--- /dev/null
+++ b/ext/reflection/tests/parameters_002.phpt
@@ -0,0 +1,209 @@
+--TEST--
+ReflectionParameter::getClass(), getDeclaringClass(), getDeclaringFunction()
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
+--FILE--
+<?php
+
+function test($nix, Array $ar, &$ref, stdClass $std, NonExistingClass $na, stdClass &$opt = NULL, $def = "FooBar")
+{
+}
+
+class test
+{
+ function test($nix, Array $ar, &$ref, stdClass $std, NonExistingClass $na, stdClass $opt = NULL, $def = "FooBar")
+ {
+ }
+}
+
+function check_params_decl_func($r, $f)
+{
+ $c = $r->$f();
+ echo $f . ': ' . ($c ? ($c instanceof ReflectionMethod ? $c->class . '::' : '') . $c->name : 'NULL') . "()\n";
+}
+
+function check_params_decl_class($r, $f)
+{
+ $c = $r->$f();
+ echo $f . ': ' . ($c ? $c->name : 'NULL') . "\n";
+}
+
+function check_params_func($r, $f)
+{
+ echo $f . ': ';
+ $v = $r->$f();
+ var_dump($v);
+}
+
+function check_params($r)
+{
+ echo "#####" . ($r instanceof ReflectionMethod ? $r->class . '::' : '') . $r->name . "()#####\n";
+ $i = 0;
+ foreach($r->getParameters() as $p)
+ {
+ echo "===" . $i . "===\n";
+ $i++;
+ check_params_func($p, 'getName');
+ check_params_func($p, 'isPassedByReference');
+ try
+ {
+ check_params_decl_class($p, 'getClass');
+ }
+ catch(ReflectionException $e)
+ {
+ echo $e->getMessage() . "\n";
+ }
+ check_params_decl_class($p, 'getDeclaringClass');
+// check_params_decl_func($p, 'getDeclaringFunction');
+ check_params_func($p, 'isArray');
+ check_params_func($p, 'allowsNull');
+ check_params_func($p, 'isOptional');
+ check_params_func($p, 'isDefaultValueAvailable');
+ if ($p->isOptional())
+ {
+ check_params_func($p, 'getDefaultValue');
+ }
+ }
+}
+
+check_params(new ReflectionFunction('test'));
+
+check_params(new ReflectionMethod('test::test'));
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECT--
+#####test()#####
+===0===
+getName: string(3) "nix"
+isPassedByReference: bool(false)
+getClass: NULL
+getDeclaringClass: NULL
+isArray: bool(false)
+allowsNull: bool(true)
+isOptional: bool(false)
+isDefaultValueAvailable: bool(false)
+===1===
+getName: string(2) "ar"
+isPassedByReference: bool(false)
+getClass: NULL
+getDeclaringClass: NULL
+isArray: bool(true)
+allowsNull: bool(false)
+isOptional: bool(false)
+isDefaultValueAvailable: bool(false)
+===2===
+getName: string(3) "ref"
+isPassedByReference: bool(true)
+getClass: NULL
+getDeclaringClass: NULL
+isArray: bool(false)
+allowsNull: bool(true)
+isOptional: bool(false)
+isDefaultValueAvailable: bool(false)
+===3===
+getName: string(3) "std"
+isPassedByReference: bool(false)
+getClass: stdClass
+getDeclaringClass: NULL
+isArray: bool(false)
+allowsNull: bool(false)
+isOptional: bool(false)
+isDefaultValueAvailable: bool(false)
+===4===
+getName: string(2) "na"
+isPassedByReference: bool(false)
+Class NonExistingClass does not exist
+getDeclaringClass: NULL
+isArray: bool(false)
+allowsNull: bool(false)
+isOptional: bool(false)
+isDefaultValueAvailable: bool(false)
+===5===
+getName: string(3) "opt"
+isPassedByReference: bool(true)
+getClass: stdClass
+getDeclaringClass: NULL
+isArray: bool(false)
+allowsNull: bool(true)
+isOptional: bool(true)
+isDefaultValueAvailable: bool(true)
+getDefaultValue: NULL
+===6===
+getName: string(3) "def"
+isPassedByReference: bool(false)
+getClass: NULL
+getDeclaringClass: NULL
+isArray: bool(false)
+allowsNull: bool(true)
+isOptional: bool(true)
+isDefaultValueAvailable: bool(true)
+getDefaultValue: string(6) "FooBar"
+#####test::test()#####
+===0===
+getName: string(3) "nix"
+isPassedByReference: bool(false)
+getClass: NULL
+getDeclaringClass: test
+isArray: bool(false)
+allowsNull: bool(true)
+isOptional: bool(false)
+isDefaultValueAvailable: bool(false)
+===1===
+getName: string(2) "ar"
+isPassedByReference: bool(false)
+getClass: NULL
+getDeclaringClass: test
+isArray: bool(true)
+allowsNull: bool(false)
+isOptional: bool(false)
+isDefaultValueAvailable: bool(false)
+===2===
+getName: string(3) "ref"
+isPassedByReference: bool(true)
+getClass: NULL
+getDeclaringClass: test
+isArray: bool(false)
+allowsNull: bool(true)
+isOptional: bool(false)
+isDefaultValueAvailable: bool(false)
+===3===
+getName: string(3) "std"
+isPassedByReference: bool(false)
+getClass: stdClass
+getDeclaringClass: test
+isArray: bool(false)
+allowsNull: bool(false)
+isOptional: bool(false)
+isDefaultValueAvailable: bool(false)
+===4===
+getName: string(2) "na"
+isPassedByReference: bool(false)
+Class NonExistingClass does not exist
+getDeclaringClass: test
+isArray: bool(false)
+allowsNull: bool(false)
+isOptional: bool(false)
+isDefaultValueAvailable: bool(false)
+===5===
+getName: string(3) "opt"
+isPassedByReference: bool(false)
+getClass: stdClass
+getDeclaringClass: test
+isArray: bool(false)
+allowsNull: bool(true)
+isOptional: bool(true)
+isDefaultValueAvailable: bool(true)
+getDefaultValue: NULL
+===6===
+getName: string(3) "def"
+isPassedByReference: bool(false)
+getClass: NULL
+getDeclaringClass: test
+isArray: bool(false)
+allowsNull: bool(true)
+isOptional: bool(true)
+isDefaultValueAvailable: bool(true)
+getDefaultValue: string(6) "FooBar"
+===DONE===
diff --git a/ext/reflection/tests/property_exists.phpt b/ext/reflection/tests/property_exists.phpt
index fa712dfdb..8fd45f2b8 100755
--- a/ext/reflection/tests/property_exists.phpt
+++ b/ext/reflection/tests/property_exists.phpt
@@ -1,5 +1,7 @@
--TEST--
-ZE2 property_exists()
+Reflection and property_exists()
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/reflection/tests/static_properties_002.phpt b/ext/reflection/tests/static_properties_002.phpt
index 29b84a8e6..051b9fb10 100755
--- a/ext/reflection/tests/static_properties_002.phpt
+++ b/ext/reflection/tests/static_properties_002.phpt
@@ -1,7 +1,7 @@
--TEST--
-ZE2 Inheriting static properties
+Reflection and inheriting static properties
--SKIPIF--
-<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
+<?php extension_loaded('reflection') or die('skip'); ?>
--FILE--
<?php
diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c
index 9943c50ad..89f072f53 100644
--- a/ext/session/mod_files.c
+++ b/ext/session/mod_files.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mod_files.c,v 1.100.2.2 2006/01/01 12:50:12 sniper Exp $ */
+/* $Id: mod_files.c,v 1.100.2.3 2006/04/18 00:31:45 iliaa Exp $ */
#include "php.h"
@@ -397,10 +397,12 @@ PS_DESTROY_FUNC(files)
if (!ps_files_path_create(buf, sizeof(buf), data, key))
return FAILURE;
- ps_files_close(data);
+ if (data->fd != -1) {
+ ps_files_close(data);
- if (VCWD_UNLINK(buf) == -1) {
- return FAILURE;
+ if (VCWD_UNLINK(buf) == -1) {
+ return FAILURE;
+ }
}
return SUCCESS;
diff --git a/ext/session/php_session.h b/ext/session/php_session.h
index 6b6dc7bf3..6e13d5415 100644
--- a/ext/session/php_session.h
+++ b/ext/session/php_session.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_session.h,v 1.101.2.1 2006/01/01 12:50:12 sniper Exp $ */
+/* $Id: php_session.h,v 1.101.2.2 2006/01/28 06:14:49 fmk Exp $ */
#ifndef PHP_SESSION_H
#define PHP_SESSION_H
@@ -184,9 +184,9 @@ typedef struct ps_serializer_struct {
PHPAPI void session_adapt_url(const char *, size_t, char **, size_t * TSRMLS_DC);
-void php_add_session_var(char *name, size_t namelen TSRMLS_DC);
-void php_set_session_var(char *name, size_t namelen, zval *state_val, php_unserialize_data_t *var_hash TSRMLS_DC);
-int php_get_session_var(char *name, size_t namelen, zval ***state_var TSRMLS_DC);
+PHPAPI void php_add_session_var(char *name, size_t namelen TSRMLS_DC);
+PHPAPI void php_set_session_var(char *name, size_t namelen, zval *state_val, php_unserialize_data_t *var_hash TSRMLS_DC);
+PHPAPI int php_get_session_var(char *name, size_t namelen, zval ***state_var TSRMLS_DC);
PHPAPI int php_session_register_module(ps_module *);
diff --git a/ext/session/session.c b/ext/session/session.c
index f90f25b1a..b9c6a2201 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: session.c,v 1.417.2.5 2006/01/01 12:50:12 sniper Exp $ */
+/* $Id: session.c,v 1.417.2.8 2006/02/10 07:39:13 rasmus Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -277,7 +277,7 @@ typedef struct {
#define MAX_STR 512
-void php_add_session_var(char *name, size_t namelen TSRMLS_DC)
+PHPAPI void php_add_session_var(char *name, size_t namelen TSRMLS_DC)
{
zval **sym_track = NULL;
@@ -318,7 +318,7 @@ void php_add_session_var(char *name, size_t namelen TSRMLS_DC)
}
}
-void php_set_session_var(char *name, size_t namelen, zval *state_val, php_unserialize_data_t *var_hash TSRMLS_DC)
+PHPAPI void php_set_session_var(char *name, size_t namelen, zval *state_val, php_unserialize_data_t *var_hash TSRMLS_DC)
{
if (PG(register_globals)) {
zval **old_symbol;
@@ -358,7 +358,7 @@ void php_set_session_var(char *name, size_t namelen, zval *state_val, php_unseri
}
}
-int php_get_session_var(char *name, size_t namelen, zval ***state_var TSRMLS_DC)
+PHPAPI int php_get_session_var(char *name, size_t namelen, zval ***state_var TSRMLS_DC)
{
int ret = FAILURE;
@@ -741,6 +741,12 @@ static void php_session_initialize(TSRMLS_D)
char *val;
int vallen;
+ /* check session name for invalid characters */
+ if (PS(id) && strpbrk(PS(id), "\r\n\t <>'\"\\")) {
+ efree(PS(id));
+ PS(id) = NULL;
+ }
+
if (!PS(mod)) {
php_error_docref(NULL TSRMLS_CC, E_ERROR, "No storage module chosen - failed to initialize session.");
return;
@@ -1082,8 +1088,9 @@ static void php_session_reset_id(TSRMLS_D)
{
int module_number = PS(module_number);
- if (PS(use_cookies)) {
+ if (PS(use_cookies) && PS(send_cookie)) {
php_session_send_cookie(TSRMLS_C);
+ PS(send_cookie) = 0;
}
/* if the SID constant exists, destroy it. */
@@ -1479,6 +1486,7 @@ PHP_FUNCTION(session_regenerate_id)
PS(id) = PS(mod)->s_create_sid(&PS(mod_data), NULL TSRMLS_CC);
+ PS(send_cookie) = 1;
php_session_reset_id(TSRMLS_C);
RETURN_TRUE;
diff --git a/ext/session/tests/bug36459.phpt b/ext/session/tests/bug36459.phpt
new file mode 100644
index 000000000..26ff8684f
--- /dev/null
+++ b/ext/session/tests/bug36459.phpt
@@ -0,0 +1,41 @@
+--TEST--
+bug #31454 (Incorrect adding PHPSESSID to links, which contains \r\n)
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--INI--
+session.use_trans_sid=1
+session.use_cookies=0
+session.name=sid
+--FILE--
+<?php
+error_reporting(E_ALL);
+
+session_start();
+
+# Do not remove \r from this tests, they are essential!
+?>
+<html>
+ <head>
+ <title>Bug #36459 Incorrect adding PHPSESSID to links, which contains \r\n</title>
+ </head>
+ <body>
+ <p>See source html code</p>
+ <a href="/b2w/www/ru/adm/pages/?action=prev&rec_id=8&pid=2"
+ style="font: normal 11pt Times New Roman">incorrect link</a><br />
+ <br />
+ <a href="/b2w/www/ru/adm/pages/?action=prev&rec_id=8&pid=2" style="font: normal 11pt Times New Roman">correct link</a>
+ </body>
+</html>
+--EXPECTF--
+<html>
+ <head>
+ <title>Bug #36459 Incorrect adding PHPSESSID to links, which contains \r\n</title>
+ </head>
+ <body>
+ <p>See source html code</p>
+ <a href="/b2w/www/ru/adm/pages/?action=prev&rec_id=8&pid=2&sid=%s"
+ style="font: normal 11pt Times New Roman">incorrect link</a><br />
+ <br />
+ <a href="/b2w/www/ru/adm/pages/?action=prev&rec_id=8&pid=2&sid=%s" style="font: normal 11pt Times New Roman">correct link</a>
+ </body>
+</html>
diff --git a/ext/simplexml/php_simplexml.h b/ext/simplexml/php_simplexml.h
index 167937194..400c4f5c4 100644
--- a/ext/simplexml/php_simplexml.h
+++ b/ext/simplexml/php_simplexml.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_simplexml.h,v 1.20.2.1 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: php_simplexml.h,v 1.20.2.2 2006/02/26 23:14:45 helly Exp $ */
#ifndef PHP_SIMPLEXML_H
#define PHP_SIMPLEXML_H
@@ -53,6 +53,13 @@ PHP_RINIT_FUNCTION(simplexml);
#endif
PHP_MINFO_FUNCTION(simplexml);
+typedef enum {
+ SXE_ITER_NONE = 0,
+ SXE_ITER_ELEMENT = 1,
+ SXE_ITER_CHILD = 2,
+ SXE_ITER_ATTRLIST = 3
+} SXE_ITER;
+
typedef struct {
zend_object zo;
php_libxml_node_ptr *node;
@@ -63,16 +70,12 @@ typedef struct {
int itertype;
char *name;
char *nsprefix;
- int type;
+ SXE_ITER type;
zval *data;
} iter;
+ zval *tmp;
} php_sxe_object;
-#define SXE_ITER_NONE 0
-#define SXE_ITER_ELEMENT 1
-#define SXE_ITER_CHILD 2
-#define SXE_ITER_ATTRLIST 3
-
#ifdef ZTS
#define SIMPLEXML_G(v) TSRMG(simplexml_globals_id, zend_simplexml_globals *, v)
#else
diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c
index e02bf13e5..a82b9b82c 100644
--- a/ext/simplexml/simplexml.c
+++ b/ext/simplexml/simplexml.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: simplexml.c,v 1.151.2.10 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: simplexml.c,v 1.151.2.22 2006/04/14 15:19:45 helly Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -130,10 +130,10 @@ static inline int match_ns(php_sxe_object *sxe, xmlNodePtr node, xmlChar *name)
}
/* }}} */
-static xmlNodePtr sxe_get_element_by_offset(php_sxe_object *sxe, long offset, xmlNodePtr node) /* {{{ */
+static xmlNodePtr sxe_get_element_by_offset(php_sxe_object *sxe, long offset, xmlNodePtr node, long *cnt) /* {{{ */
{
long nodendx = 0;
-
+
if (sxe->iter.type == SXE_ITER_NONE) {
return NULL;
}
@@ -151,12 +151,15 @@ static xmlNodePtr sxe_get_element_by_offset(php_sxe_object *sxe, long offset, xm
next_iter:
node = node->next;
}
+
+ if (cnt) {
+ *cnt = nodendx;
+ }
return node;
}
/* }}} */
-#if SXE_ELEMENT_BY_NAME
static xmlNodePtr sxe_find_element_by_name(php_sxe_object *sxe, xmlNodePtr node, char *name TSRMLS_DC) /* {{{ */
{
while (node) {
@@ -172,7 +175,7 @@ next_iter:
return NULL;
} /* }}} */
-static xmlNodePtr sxe_get_element_by_name(php_sxe_object *sxe, xmlNodePtr node, char **name, int *type TSRMLS_DC) /* {{{ */
+static xmlNodePtr sxe_get_element_by_name(php_sxe_object *sxe, xmlNodePtr node, char **name, SXE_ITER *type TSRMLS_DC) /* {{{ */
{
int orgtype;
xmlNodePtr orgnode = node;
@@ -219,7 +222,6 @@ next_iter:
return NULL;
}
/* }}} */
-#endif /* SXE_ELEMENT_BY_NAME */
/* {{{ sxe_prop_dim_read()
*/
@@ -229,10 +231,10 @@ static zval * sxe_prop_dim_read(zval *object, zval *member, zend_bool elements,
php_sxe_object *sxe;
char *name;
xmlNodePtr node;
- xmlAttrPtr attr;
+ xmlAttrPtr attr = NULL;
zval tmp_zv;
- int nodendx = 0;
- int test;
+ int nodendx = 0;
+ int test = 0;
sxe = php_sxe_fetch_object(object TSRMLS_CC);
@@ -303,7 +305,7 @@ static zval * sxe_prop_dim_read(zval *object, zval *member, zend_bool elements,
if (sxe->iter.type == SXE_ITER_CHILD) {
node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
}
- node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node);
+ node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL);
if (node) {
_node_as_zval(sxe, node, return_value, SXE_ITER_NONE, NULL, sxe->iter.nsprefix TSRMLS_CC);
}
@@ -329,6 +331,10 @@ static zval * sxe_prop_dim_read(zval *object, zval *member, zend_bool elements,
if (member == &tmp_zv) {
zval_dtor(&tmp_zv);
}
+ if (Z_TYPE_P(return_value) == IS_NULL) {
+ FREE_ZVAL(return_value);
+ return_value = &EG(uninitialized_zval);
+ }
return return_value;
}
@@ -356,6 +362,11 @@ static void change_node_zval(xmlNodePtr node, zval *value TSRMLS_DC)
{
zval value_copy;
+ if (!value)
+ {
+ xmlNodeSetContentLen(node, "", 0);
+ return;
+ }
switch (Z_TYPE_P(value)) {
case IS_LONG:
case IS_BOOL:
@@ -383,19 +394,21 @@ static void change_node_zval(xmlNodePtr node, zval *value TSRMLS_DC)
/* {{{ sxe_property_write()
*/
-static void sxe_prop_dim_write(zval *object, zval *member, zval *value, zend_bool elements, zend_bool attribs TSRMLS_DC)
+static void sxe_prop_dim_write(zval *object, zval *member, zval *value, zend_bool elements, zend_bool attribs, xmlNodePtr *pnewnode TSRMLS_DC)
{
php_sxe_object *sxe;
char *name;
xmlNodePtr node;
xmlNodePtr newnode = NULL;
+ xmlNodePtr mynode;
xmlNodePtr tempnode;
xmlAttrPtr attr = NULL;
int counter = 0;
int is_attr = 0;
int nodendx = 0;
- int test;
- zval tmp_zv, trim_zv;
+ int test = 0;
+ long cnt;
+ zval tmp_zv, trim_zv, value_copy;
if (!member) {
/* This happens when the user did: $sxe[] = $value
@@ -444,9 +457,36 @@ static void sxe_prop_dim_write(zval *object, zval *member, zval *value, zend_boo
attr = (xmlAttrPtr)node;
test = sxe->iter.name != NULL;
} else if (sxe->iter.type != SXE_ITER_CHILD) {
+ mynode = node;
node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
attr = node ? node->properties : NULL;
test = 0;
+ if (attribs && !node && sxe->iter.type == SXE_ITER_ELEMENT) {
+ node = xmlNewChild(mynode, mynode->ns, sxe->iter.name, NULL);
+ attr = node->properties;
+ }
+ }
+
+ mynode = node;
+
+ if (value) {
+ switch (Z_TYPE_P(value)) {
+ case IS_LONG:
+ case IS_BOOL:
+ case IS_DOUBLE:
+ case IS_NULL:
+ if (value->refcount > 1) {
+ value_copy = *value;
+ zval_copy_ctor(&value_copy);
+ value = &value_copy;
+ }
+ convert_to_string(value);
+ break;
+ case IS_STRING:
+ break;
+ default:
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "It is not yet possible to assign complex types to %s", attribs ? "attributes" : "properties");
+ }
}
if (node) {
@@ -478,7 +518,7 @@ static void sxe_prop_dim_write(zval *object, zval *member, zval *value, zend_boo
if (elements) {
if (Z_TYPE_P(member) == IS_LONG) {
- newnode = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node);
+ newnode = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, &cnt);
if (newnode) {
++counter;
}
@@ -502,34 +542,38 @@ next_iter:
if (is_attr) {
newnode = (xmlNodePtr) attr;
}
- while ((tempnode = (xmlNodePtr) newnode->children)) {
- xmlUnlinkNode(tempnode);
- php_libxml_node_free_resource((xmlNodePtr) tempnode TSRMLS_CC);
+ if (value) {
+ while ((tempnode = (xmlNodePtr) newnode->children)) {
+ xmlUnlinkNode(tempnode);
+ php_libxml_node_free_resource((xmlNodePtr) tempnode TSRMLS_CC);
+ }
+ change_node_zval(newnode, value TSRMLS_CC);
}
- change_node_zval(newnode, value TSRMLS_CC);
} else if (counter > 1) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot assign to an array of nodes (duplicate subnodes or attr detected)");
- } else {
- if (attribs) {
- switch (Z_TYPE_P(value)) {
- case IS_LONG:
- case IS_BOOL:
- case IS_DOUBLE:
- case IS_NULL:
- convert_to_string(value);
- case IS_STRING:
- newnode = (xmlNodePtr)xmlNewProp(node, name, Z_STRVAL_P(value));
- break;
- default:
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "It is not yet possible to assign complex types to attributes");
+ } else if (elements) {
+ if (!node) {
+ newnode = xmlNewTextChild(mynode, mynode->ns, name, value ? Z_STRVAL_P(value) : NULL);
+ } else if (Z_TYPE_P(member) == IS_LONG) {
+ if (cnt < Z_LVAL_P(member)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot add element %s number %ld when only %ld such elements exist", mynode->name, Z_LVAL_P(member), cnt);
}
+ newnode = xmlNewTextChild(mynode->parent, mynode->ns, mynode->name, value ? Z_STRVAL_P(value) : NULL);
}
+ } else if (attribs) {
+ newnode = (xmlNodePtr)xmlNewProp(node, name, value ? Z_STRVAL_P(value) : NULL);
}
}
if (member == &tmp_zv) {
zval_dtor(&tmp_zv);
}
+ if (pnewnode) {
+ *pnewnode = newnode;
+ }
+ if (value && value == &value_copy) {
+ zval_dtor(value);
+ }
}
/* }}} */
@@ -537,7 +581,7 @@ next_iter:
*/
static void sxe_property_write(zval *object, zval *member, zval *value TSRMLS_DC)
{
- sxe_prop_dim_write(object, member, value, 1, 0 TSRMLS_CC);
+ sxe_prop_dim_write(object, member, value, 1, 0, NULL TSRMLS_CC);
}
/* }}} */
@@ -545,7 +589,37 @@ static void sxe_property_write(zval *object, zval *member, zval *value TSRMLS_DC
*/
static void sxe_dimension_write(zval *object, zval *offset, zval *value TSRMLS_DC)
{
- sxe_prop_dim_write(object, offset, value, 0, 1 TSRMLS_CC);
+ sxe_prop_dim_write(object, offset, value, 0, 1, NULL TSRMLS_CC);
+}
+/* }}} */
+
+static zval** sxe_property_get_adr(zval *object, zval *member TSRMLS_DC) /* {{{ */
+{
+ php_sxe_object *sxe;
+ xmlNodePtr node;
+ zval *return_value;
+ char *name;
+ SXE_ITER type;
+
+ sxe = php_sxe_fetch_object(object TSRMLS_CC);
+
+ GET_NODE(sxe, node);
+ convert_to_string(member);
+ name = Z_STRVAL_P(member);
+ node = sxe_get_element_by_name(sxe, node, &name, &type TSRMLS_CC);
+ if (!node) {
+ sxe_prop_dim_write(object, member, NULL, 1, 0, &node TSRMLS_CC);
+ type = SXE_ITER_NONE;
+ name = NULL;
+ }
+ MAKE_STD_ZVAL(return_value);
+ _node_as_zval(sxe, node, return_value, type, name, sxe->iter.nsprefix TSRMLS_CC);
+
+ sxe = php_sxe_fetch_object(return_value TSRMLS_CC);
+ sxe->tmp = return_value;
+ return_value->is_ref = 1;
+
+ return &sxe->tmp;
}
/* }}} */
@@ -554,15 +628,20 @@ static void sxe_dimension_write(zval *object, zval *offset, zval *value TSRMLS_D
static int sxe_prop_dim_exists(zval *object, zval *member, int check_empty, zend_bool elements, zend_bool attribs TSRMLS_DC)
{
php_sxe_object *sxe;
- char *name;
xmlNodePtr node;
xmlAttrPtr attr = NULL;
int exists = 0;
- int test;
+ int test = 0;
+ zval tmp_zv;
- sxe = php_sxe_fetch_object(object TSRMLS_CC);
+ if (Z_TYPE_P(member) != IS_STRING && Z_TYPE_P(member) != IS_LONG) {
+ tmp_zv = *member;
+ zval_copy_ctor(&tmp_zv);
+ member = &tmp_zv;
+ convert_to_string(member);
+ }
- name = Z_STRVAL_P(member);
+ sxe = php_sxe_fetch_object(object TSRMLS_CC);
GET_NODE(sxe, node);
@@ -590,13 +669,28 @@ static int sxe_prop_dim_exists(zval *object, zval *member, int check_empty, zend
if (node) {
if (attribs) {
- while (attr) {
- if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && !xmlStrcmp(attr->name, name) && match_ns(sxe, (xmlNodePtr) attr, sxe->iter.nsprefix)) {
- exists = 1;
- break;
+ if (Z_TYPE_P(member) == IS_LONG) {
+ int nodendx = 0;
+
+ while (attr && nodendx <= Z_LVAL_P(member)) {
+ if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->iter.nsprefix)) {
+ if (nodendx == Z_LVAL_P(member)) {
+ exists = 1;
+ break;
+ }
+ nodendx++;
+ }
+ attr = attr->next;
}
+ } else {
+ while (attr) {
+ if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && !xmlStrcmp(attr->name, Z_STRVAL_P(member)) && match_ns(sxe, (xmlNodePtr) attr, sxe->iter.nsprefix)) {
+ exists = 1;
+ break;
+ }
- attr = attr->next;
+ attr = attr->next;
+ }
}
}
@@ -605,17 +699,9 @@ static int sxe_prop_dim_exists(zval *object, zval *member, int check_empty, zend
if (sxe->iter.type == SXE_ITER_CHILD) {
node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
}
- node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node);
+ node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL);
}
else {
- zval tmp_zv;
-
- if (Z_TYPE_P(member) != IS_STRING) {
- tmp_zv = *member;
- zval_copy_ctor(&tmp_zv);
- member = &tmp_zv;
- convert_to_string(member);
- }
node = node->children;
while (node) {
xmlNodePtr nnext;
@@ -625,16 +711,17 @@ static int sxe_prop_dim_exists(zval *object, zval *member, int check_empty, zend
}
node = nnext;
}
- if (member == &tmp_zv) {
- zval_dtor(&tmp_zv);
- }
- }
+ }
if (node) {
exists = 1;
}
}
}
+ if (member == &tmp_zv) {
+ zval_dtor(&tmp_zv);
+ }
+
return exists;
}
/* }}} */
@@ -662,12 +749,12 @@ static void sxe_prop_dim_delete(zval *object, zval *member, zend_bool elements,
php_sxe_object *sxe;
xmlNodePtr node;
xmlNodePtr nnext;
- xmlAttrPtr attr;
+ xmlAttrPtr attr = NULL;
xmlAttrPtr anext;
zval tmp_zv;
- int test;
+ int test = 0;
- if (Z_TYPE_P(member) != IS_STRING) {
+ if (Z_TYPE_P(member) != IS_STRING && Z_TYPE_P(member) != IS_LONG) {
tmp_zv = *member;
zval_copy_ctor(&tmp_zv);
member = &tmp_zv;
@@ -677,13 +764,24 @@ static void sxe_prop_dim_delete(zval *object, zval *member, zend_bool elements,
sxe = php_sxe_fetch_object(object TSRMLS_CC);
GET_NODE(sxe, node);
+
+ if (Z_TYPE_P(member) == IS_LONG) {
+ if (sxe->iter.type != SXE_ITER_ATTRLIST) {
+ attribs = 0;
+ elements = 1;
+ if (sxe->iter.type == SXE_ITER_CHILD) {
+ node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
+ }
+ }
+ }
+
if (sxe->iter.type == SXE_ITER_ATTRLIST) {
attribs = 1;
elements = 0;
- node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
+ node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
attr = (xmlAttrPtr)node;
test = sxe->iter.name != NULL;
- } else {
+ } else if (sxe->iter.type != SXE_ITER_CHILD) {
node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
attr = node ? node->properties : NULL;
test = 0;
@@ -691,31 +789,58 @@ static void sxe_prop_dim_delete(zval *object, zval *member, zend_bool elements,
if (node) {
if (attribs) {
- while (attr) {
- anext = attr->next;
- if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && !xmlStrcmp(attr->name, Z_STRVAL_P(member)) && match_ns(sxe, (xmlNodePtr) attr, sxe->iter.nsprefix)) {
- xmlUnlinkNode((xmlNodePtr) attr);
- php_libxml_node_free_resource((xmlNodePtr) attr TSRMLS_CC);
- break;
+ if (Z_TYPE_P(member) == IS_LONG) {
+ int nodendx = 0;
+
+ while (attr && nodendx <= Z_LVAL_P(member)) {
+ if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->iter.nsprefix)) {
+ if (nodendx == Z_LVAL_P(member)) {
+ xmlUnlinkNode((xmlNodePtr) attr);
+ php_libxml_node_free_resource((xmlNodePtr) attr TSRMLS_CC);
+ break;
+ }
+ nodendx++;
+ }
+ attr = attr->next;
+ }
+ } else {
+ while (attr) {
+ anext = attr->next;
+ if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && !xmlStrcmp(attr->name, Z_STRVAL_P(member)) && match_ns(sxe, (xmlNodePtr) attr, sxe->iter.nsprefix)) {
+ xmlUnlinkNode((xmlNodePtr) attr);
+ php_libxml_node_free_resource((xmlNodePtr) attr TSRMLS_CC);
+ break;
+ }
+ attr = anext;
}
- attr = anext;
}
}
if (elements) {
- node = node->children;
- while (node) {
- nnext = node->next;
-
- SKIP_TEXT(node);
-
- if (!xmlStrcmp(node->name, Z_STRVAL_P(member))) {
+ if (Z_TYPE_P(member) == IS_LONG) {
+ if (sxe->iter.type == SXE_ITER_CHILD) {
+ node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
+ }
+ node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL);
+ if (node) {
xmlUnlinkNode(node);
php_libxml_node_free_resource(node TSRMLS_CC);
}
+ } else {
+ node = node->children;
+ while (node) {
+ nnext = node->next;
+
+ SKIP_TEXT(node);
+
+ if (!xmlStrcmp(node->name, Z_STRVAL_P(member))) {
+ xmlUnlinkNode(node);
+ php_libxml_node_free_resource(node TSRMLS_CC);
+ }
next_iter:
- node = nnext;
+ node = nnext;
+ }
}
}
}
@@ -864,7 +989,7 @@ static HashTable * sxe_properties_get(zval *object TSRMLS_DC)
ZVAL_STRING(value, sxe_xmlNodeListGetString(node->doc, node->children, 1), 0);
zend_hash_next_index_insert(rv, &value, sizeof(zval *), NULL);
node = NULL;
- } else {
+ } else if (sxe->iter.type != SXE_ITER_CHILD) {
node = node->children;
}
@@ -1000,7 +1125,7 @@ SXE_METHOD(xpath)
_node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_NONE, NULL, NULL TSRMLS_CC);
} else if (nodeptr->type == XML_ATTRIBUTE_NODE) {
_node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_ATTRLIST, (char*)nodeptr->name, NULL TSRMLS_CC);
- } else {
+ } else {
_node_as_zval(sxe, nodeptr, value, SXE_ITER_NONE, NULL, NULL TSRMLS_CC);
}
@@ -1215,7 +1340,7 @@ SXE_METHOD(getDocNamespaces)
}
/* }}} */
-/* {{{ proto object SimpleXMLElement::children()
+/* {{{ proto object SimpleXMLElement::children([string ns])
Finds children of given node */
SXE_METHOD(children)
{
@@ -1242,6 +1367,23 @@ SXE_METHOD(children)
}
/* }}} */
+/* {{{ proto object SimpleXMLElement::getName()
+ Finds children of given node */
+SXE_METHOD(getName)
+{
+ php_sxe_object *sxe;
+ xmlNodePtr node;
+ int namelen;
+
+ sxe = php_sxe_fetch_object(getThis() TSRMLS_CC);
+
+ GET_NODE(sxe, node);
+
+ namelen = xmlStrlen(node->name);
+ RETURN_STRINGL((char*)node->name, namelen, 1);
+}
+/* }}} */
+
/* {{{ proto array SimpleXMLElement::attributes([string ns])
Identifies an element's attributes */
SXE_METHOD(attributes)
@@ -1268,6 +1410,129 @@ SXE_METHOD(attributes)
}
/* }}} */
+/* {{{ proto void SimpleXMLElement::addChild(string qName [, string value [,string ns]])
+ Add Element with optional namespace information */
+SXE_METHOD(addChild)
+{
+ php_sxe_object *sxe;
+ char *qname, *value = NULL, *nsuri = NULL;
+ int qname_len, value_len = 0, nsuri_len = 0;
+ xmlNodePtr node, newnode;
+ xmlNsPtr nsptr = NULL;
+ xmlChar *localname, *prefix = NULL;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!s!",
+ &qname, &qname_len, &value, &value_len, &nsuri, &nsuri_len) == FAILURE) {
+ return;
+ }
+
+ if (qname_len == 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Element name is required");
+ return;
+ }
+
+ sxe = php_sxe_fetch_object(getThis() TSRMLS_CC);
+ GET_NODE(sxe, node);
+
+ if (sxe->iter.type == SXE_ITER_ATTRLIST) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot add element to attributes");
+ return;
+ }
+
+ node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
+
+ localname = xmlSplitQName2(qname, &prefix);
+ if (localname == NULL) {
+ localname = xmlStrdup(qname);
+ }
+
+
+ newnode = xmlNewChild(node, NULL, localname, value);
+
+ if (nsuri != NULL) {
+ nsptr = xmlSearchNsByHref(node->doc, node, nsuri);
+ if (nsptr == NULL) {
+ nsptr = xmlNewNs(newnode, nsuri, prefix);
+ }
+ newnode->ns = nsptr;
+ }
+
+ _node_as_zval(sxe, newnode, return_value, SXE_ITER_NONE, localname, prefix TSRMLS_CC);
+
+ xmlFree(localname);
+ if (prefix != NULL) {
+ xmlFree(prefix);
+ }
+}
+/* }}} */
+
+/* {{{ proto void SimpleXMLElement::addAttribute(string qName, string value [,string ns])
+ Add Attribute with optional namespace information */
+SXE_METHOD(addAttribute)
+{
+ php_sxe_object *sxe;
+ char *qname, *value = NULL, *nsuri = NULL;
+ int qname_len, value_len = 0, nsuri_len = 0;
+ xmlNodePtr node;
+ xmlAttrPtr attrp = NULL;
+ xmlNsPtr nsptr = NULL;
+ xmlChar *localname, *prefix = NULL;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|s!",
+ &qname, &qname_len, &value, &value_len, &nsuri, &nsuri_len) == FAILURE) {
+ return;
+ }
+
+ if (qname_len == 0 || value_len == 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attribute name and value are required");
+ return;
+ }
+
+ sxe = php_sxe_fetch_object(getThis() TSRMLS_CC);
+ GET_NODE(sxe, node);
+
+ node = php_sxe_get_first_node(sxe, node TSRMLS_CC);
+
+ if (node->type != XML_ELEMENT_NODE) {
+ node = node->parent;
+ }
+
+ if (node == NULL) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to locate parent Element");
+ return;
+ }
+
+ localname = xmlSplitQName2(qname, &prefix);
+ if (localname == NULL) {
+ localname = xmlStrdup(qname);
+ }
+
+ attrp = xmlHasNsProp(node, localname, nsuri);
+ if (attrp != NULL && attrp->type != XML_ATTRIBUTE_DECL) {
+ xmlFree(localname);
+ if (prefix != NULL) {
+ xmlFree(prefix);
+ }
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attribute already exists");
+ return;
+ }
+
+ if (nsuri != NULL) {
+ nsptr = xmlSearchNsByHref(node->doc, node, nsuri);
+ if (nsptr == NULL) {
+ nsptr = xmlNewNs(node, nsuri, prefix);
+ }
+ }
+
+ attrp = xmlNewNsProp(node, nsptr, localname, value);
+
+ xmlFree(localname);
+ if (prefix != NULL) {
+ xmlFree(prefix);
+ }
+}
+/* }}} */
+
/* {{{ cast_object()
*/
static int cast_object(zval *object, int type, char *contents TSRMLS_DC)
@@ -1358,9 +1623,14 @@ static int sxe_count_elements(zval *object, long *count TSRMLS_DC) /* {{{ */
{
php_sxe_object *sxe;
xmlNodePtr node;
+ zval *data;
*count = 0;
sxe = php_sxe_fetch_object(object TSRMLS_CC);
+
+ data = sxe->iter.data;
+ sxe->iter.data = NULL;
+
node = php_sxe_reset_iterator(sxe, 0 TSRMLS_CC);
while (node)
@@ -1370,6 +1640,11 @@ static int sxe_count_elements(zval *object, long *count TSRMLS_DC) /* {{{ */
}
+ if (sxe->iter.data) {
+ zval_ptr_dtor(&sxe->iter.data);
+ }
+ sxe->iter.data = data;
+
return SUCCESS;
}
/* }}} */
@@ -1396,7 +1671,7 @@ static zend_object_handlers sxe_object_handlers = {
sxe_property_write,
sxe_dimension_read,
sxe_dimension_write,
- NULL,
+ sxe_property_get_adr,
sxe_get_value, /* get */
NULL,
sxe_property_exists,
@@ -1420,7 +1695,7 @@ static zend_object_handlers sxe_ze1_object_handlers = {
sxe_property_write,
sxe_dimension_read,
sxe_dimension_write,
- NULL,
+ sxe_property_get_adr,
sxe_get_value, /* get */
NULL,
sxe_property_exists,
@@ -1495,6 +1770,10 @@ static void sxe_object_dtor(void *object, zend_object_handle handle TSRMLS_DC)
xmlFree(sxe->iter.nsprefix);
sxe->iter.nsprefix = NULL;
}
+ if (sxe->tmp) {
+ zval_ptr_dtor(&sxe->tmp);
+ sxe->tmp = NULL;
+ }
}
/* }}} */
@@ -1506,8 +1785,19 @@ static void sxe_object_free_storage(void *object TSRMLS_DC)
sxe = (php_sxe_object *) object;
- zend_hash_destroy(sxe->zo.properties);
- FREE_HASHTABLE(sxe->zo.properties);
+#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1 && PHP_RELEASE_VERSION > 2) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1) || (PHP_MAJOR_VERSION > 5)
+ zend_object_std_dtor(&sxe->zo TSRMLS_CC);
+#else
+ if (sxe->zo.guards) {
+ zend_hash_destroy(sxe->zo.guards);
+ FREE_HASHTABLE(sxe->zo.guards);
+ }
+
+ if (sxe->zo.properties) {
+ zend_hash_destroy(sxe->zo.properties);
+ FREE_HASHTABLE(sxe->zo.properties);
+ }
+#endif
php_libxml_node_decrement_resource((php_libxml_node_object *)sxe TSRMLS_CC);
@@ -1531,15 +1821,21 @@ static php_sxe_object* php_sxe_object_new(zend_class_entry *ce TSRMLS_DC)
php_sxe_object *intern;
intern = ecalloc(1, sizeof(php_sxe_object));
- intern->zo.ce = ce;
intern->iter.type = SXE_ITER_NONE;
intern->iter.nsprefix = NULL;
intern->iter.name = NULL;
+#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1 && PHP_RELEASE_VERSION > 2) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1) || (PHP_MAJOR_VERSION > 5)
+ zend_object_std_init(&intern->zo, ce TSRMLS_CC);
+#else
ALLOC_HASHTABLE(intern->zo.properties);
zend_hash_init(intern->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ intern->zo.ce = ce;
+ intern->zo.guards = NULL;
+#endif
+
return intern;
}
/* }}} */
@@ -1591,11 +1887,7 @@ PHP_FUNCTION(simplexml_load_file)
return;
}
-#if LIBXML_VERSION >= 20600
docp = xmlReadFile(filename, NULL, options);
-#else
- docp = xmlParseFile(filename);
-#endif
if (! docp) {
RETURN_FALSE;
@@ -1635,11 +1927,7 @@ PHP_FUNCTION(simplexml_load_string)
return;
}
-#if LIBXML_VERSION >= 20600
docp = xmlReadMemory(data, data_len, NULL, NULL, options);
-#else
- docp = xmlParseMemory(data, data_len);
-#endif
if (! docp) {
RETURN_FALSE;
@@ -1681,11 +1969,9 @@ SXE_METHOD(__construct)
}
php_std_error_handling();
-#if LIBXML_VERSION >= 20600
+
docp = is_url ? xmlReadFile(data, NULL, options) : xmlReadMemory(data, data_len, NULL, NULL, options);
-#else
- docp = is_url ? xmlParseFile(data) : xmlParseMemory(data, data_len);
-#endif
+
if (!docp) {
((php_libxml_node_object *)sxe)->document = NULL;
zend_throw_exception(zend_exception_get_default(), "String could not be parsed as XML", 0 TSRMLS_CC);
@@ -1821,6 +2107,9 @@ static int php_sxe_iterator_current_key(zend_object_iterator *iter, char **str_k
if (intern != NULL && intern->node != NULL) {
curnode = (xmlNodePtr)((php_libxml_node_ptr *)intern->node)->node;
}
+ if (!curnode) {
+ return HASH_KEY_NON_EXISTANT;
+ }
namelen = xmlStrlen(curnode->name);
*str_key = estrndup(curnode->name, namelen);
@@ -1961,11 +2250,14 @@ static zend_function_entry sxe_functions[] = {
SXE_ME(__construct, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) /* must be called */
SXE_ME(asXML, NULL, ZEND_ACC_PUBLIC)
SXE_ME(xpath, NULL, ZEND_ACC_PUBLIC)
- SXE_ME(registerXPathNamespace, NULL, ZEND_ACC_PUBLIC)
+ SXE_ME(registerXPathNamespace, NULL, ZEND_ACC_PUBLIC)
SXE_ME(attributes, NULL, ZEND_ACC_PUBLIC)
- SXE_ME(children, NULL, ZEND_ACC_PUBLIC)
+ SXE_ME(children, NULL, ZEND_ACC_PUBLIC)
SXE_ME(getNamespaces, NULL, ZEND_ACC_PUBLIC)
SXE_ME(getDocNamespaces, NULL, ZEND_ACC_PUBLIC)
+ SXE_ME(getName, NULL, ZEND_ACC_PUBLIC)
+ SXE_ME(addChild, NULL, ZEND_ACC_PUBLIC)
+ SXE_ME(addAttribute, NULL, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
@@ -2018,7 +2310,7 @@ PHP_MINFO_FUNCTION(simplexml)
{
php_info_print_table_start();
php_info_print_table_header(2, "Simplexml support", "enabled");
- php_info_print_table_row(2, "Revision", "$Revision: 1.151.2.10 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 1.151.2.22 $");
php_info_print_table_row(2, "Schema support",
#ifdef LIBXML_SCHEMAS_ENABLED
"enabled");
diff --git a/ext/simplexml/tests/009b.phpt b/ext/simplexml/tests/009b.phpt
new file mode 100755
index 000000000..dba300c72
--- /dev/null
+++ b/ext/simplexml/tests/009b.phpt
@@ -0,0 +1,35 @@
+--TEST--
+SimpleXML: foreach
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
+--FILE--
+<?php
+$sxe = simplexml_load_string(<<<EOF
+<?xml version='1.0'?>
+<!DOCTYPE sxe SYSTEM "notfound.dtd">
+<sxe id="elem1">
+ Plain text.
+ <elem1 attr1='first'>Bla bla 1.<!-- comment --><elem2>
+ Here we have some text data.
+ </elem2></elem1>
+ <elem11 attr2='second'>Bla bla 2.</elem11>
+</sxe>
+EOF
+);
+var_dump($sxe->children());
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+object(SimpleXMLElement)#%d (3) {
+ ["@attributes"]=>
+ array(1) {
+ ["id"]=>
+ string(5) "elem1"
+ }
+ ["elem1"]=>
+ string(10) "Bla bla 1."
+ ["elem11"]=>
+ string(10) "Bla bla 2."
+}
+===DONE===
diff --git a/ext/simplexml/tests/026.phpt b/ext/simplexml/tests/026.phpt
new file mode 100755
index 000000000..d6de94be3
--- /dev/null
+++ b/ext/simplexml/tests/026.phpt
@@ -0,0 +1,40 @@
+--TEST--
+SimpleXML: getName()
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
+--FILE--
+<?php
+$xml =<<<EOF
+<people>
+ <person>Jane</person>
+</people>
+EOF;
+
+function traverse_xml($xml, $pad = '')
+{
+ $name = $xml->getName();
+ echo "$pad<$name";
+ foreach($xml->attributes() as $attr => $value)
+ {
+ echo " $attr=\"$value\"";
+ }
+ echo ">" . trim($xml) . "\n";
+ foreach($xml->children() as $node)
+ {
+ traverse_xml($node, $pad.' ');
+ }
+ echo $pad."</$name>\n";
+}
+
+
+$people = simplexml_load_string($xml);
+traverse_xml($people);
+
+?>
+===DONE===
+--EXPECTF--
+<people>
+ <person>Jane
+ </person>
+</people>
+===DONE===
diff --git a/ext/simplexml/tests/027.phpt b/ext/simplexml/tests/027.phpt
new file mode 100755
index 000000000..f32786c7c
--- /dev/null
+++ b/ext/simplexml/tests/027.phpt
@@ -0,0 +1,74 @@
+--TEST--
+SimpleXML: Adding an elements
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
+--FILE--
+<?php
+$xml =<<<EOF
+<people></people>
+EOF;
+
+function traverse_xml($xml, $pad = '')
+{
+ $name = $xml->getName();
+ echo "$pad<$name";
+ foreach($xml->attributes() as $attr => $value)
+ {
+ echo " $attr=\"$value\"";
+ }
+ echo ">" . trim($xml) . "\n";
+ foreach($xml->children() as $node)
+ {
+ traverse_xml($node, $pad.' ');
+ }
+ echo $pad."</$name>\n";
+}
+
+
+$people = simplexml_load_string($xml);
+traverse_xml($people);
+$people->person = 'Joe';
+$people->person['gender'] = 'male';
+traverse_xml($people);
+$people->person = 'Jane';
+traverse_xml($people);
+$people->person['gender'] = 'female';
+$people->person[1] = 'Joe';
+$people->person[1]['gender'] = 'male';
+traverse_xml($people);
+$people->person[3] = 'Minni-me';
+$people->person[2]['gender'] = 'male';
+traverse_xml($people);
+$people->person[3]['gender'] = 'error';
+
+?>
+===DONE===
+--EXPECTF--
+<people>
+</people>
+<people>
+ <person gender="male">Joe
+ </person>
+</people>
+<people>
+ <person gender="male">Jane
+ </person>
+</people>
+<people>
+ <person gender="female">Jane
+ </person>
+ <person gender="male">Joe
+ </person>
+</people>
+
+Warning: main(): Cannot add element person number 3 when only 2 such elements exist in %s027.php on line %d
+<people>
+ <person gender="female">Jane
+ </person>
+ <person gender="male">Joe
+ </person>
+ <person gender="male">Minni-me
+ </person>
+</people>
+
+Fatal error: Objects used as arrays in post/pre increment/decrement must return values by reference in %s027.php on line %d
diff --git a/ext/simplexml/tests/028.phpt b/ext/simplexml/tests/028.phpt
new file mode 100755
index 000000000..753056b9a
--- /dev/null
+++ b/ext/simplexml/tests/028.phpt
@@ -0,0 +1,42 @@
+--TEST--
+SimpleXML: Adding an elements without text
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
+--FILE--
+<?php
+$xml =<<<EOF
+<people></people>
+EOF;
+
+function traverse_xml($xml, $pad = '')
+{
+ $name = $xml->getName();
+ echo "$pad<$name";
+ foreach($xml->attributes() as $attr => $value)
+ {
+ echo " $attr=\"$value\"";
+ }
+ echo ">" . trim($xml) . "\n";
+ foreach($xml->children() as $node)
+ {
+ traverse_xml($node, $pad.' ');
+ }
+ echo $pad."</$name>\n";
+}
+
+
+$people = simplexml_load_string($xml);
+traverse_xml($people);
+$people->person['name'] = 'John';
+traverse_xml($people);
+
+?>
+===DONE===
+--EXPECTF--
+<people>
+</people>
+<people>
+ <person name="John">
+ </person>
+</people>
+===DONE===
diff --git a/ext/simplexml/tests/029.phpt b/ext/simplexml/tests/029.phpt
new file mode 100755
index 000000000..86a4f308e
--- /dev/null
+++ b/ext/simplexml/tests/029.phpt
@@ -0,0 +1,40 @@
+--TEST--
+SimpleXML: foreach and count
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
+--FILE--
+<?php
+$xml =<<<EOF
+<people>
+ <person name="Joe"/>
+ <person name="John">
+ <children>
+ <person name="Joe"/>
+ </children>
+ </person>
+ <person name="Jane"/>
+</people>
+EOF;
+
+$people = simplexml_load_string($xml);
+
+foreach($people as $person)
+{
+ var_dump((string)$person['name']);
+ var_dump(count($people));
+ var_dump(count($person));
+}
+
+?>
+===DONE===
+--EXPECTF--
+string(3) "Joe"
+int(3)
+int(0)
+string(4) "John"
+int(3)
+int(1)
+string(4) "Jane"
+int(3)
+int(0)
+===DONE===
diff --git a/ext/simplexml/tests/030.phpt b/ext/simplexml/tests/030.phpt
new file mode 100644
index 000000000..774a5f145
--- /dev/null
+++ b/ext/simplexml/tests/030.phpt
@@ -0,0 +1,44 @@
+--TEST--
+SimpleXML: isset and unset by offset
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
+--FILE--
+<?php
+$xml =<<<EOF
+<root s:att1="b" att1="a"
+ xmlns:s="urn::test" xmlns:t="urn::test-t">
+ <child1>test</child1>
+ <child1>test 2</child1>
+ <s:child3 />
+</root>
+EOF;
+
+$sxe = simplexml_load_string($xml);
+
+echo $sxe->child1[0]."\n";
+echo $sxe->child1[1]."\n\n";
+
+var_dump(isset($sxe->child1[1]));
+unset($sxe->child1[1]);
+var_dump(isset($sxe->child1[1]));
+echo "\n";
+
+$atts = $sxe->attributes("urn::test");
+var_dump(isset($atts[0]));
+unset($atts[0]);
+var_dump(isset($atts[0]));
+var_dump(isset($atts[TRUE]));
+
+?>
+===DONE===
+--EXPECT--
+test
+test 2
+
+bool(true)
+bool(false)
+
+bool(true)
+bool(false)
+bool(false)
+===DONE===
diff --git a/ext/simplexml/tests/031.phpt b/ext/simplexml/tests/031.phpt
new file mode 100644
index 000000000..cd2d266ba
--- /dev/null
+++ b/ext/simplexml/tests/031.phpt
@@ -0,0 +1,57 @@
+--TEST--
+SimpleXML: addChild and addAttribute
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
+--FILE--
+<?php
+$xml =<<<EOF
+<root s:att1="b" att1="a"
+ xmlns:s="urn::test" xmlns:t="urn::test-t">
+ <child1>test</child1>
+ <child1>test 2</child1>
+ <s:child3 />
+</root>
+EOF;
+
+$sxe = simplexml_load_string($xml);
+
+/* Add new attribute in a new namespace */
+$sxe->addAttribute('v:att11', 'xxx', 'urn::test-v');
+
+/* Try to add attribute again -> display warning as method is for new Attr only */
+$sxe->addAttribute('v:att11', 'xxx', 'urn::test-v');
+
+/* Add new attribute w/o namespace */
+$sxe->addAttribute('att2', 'no-ns');
+
+$d = $sxe->attributes();
+/* Try to add element to attribute -> display warning and do not add */
+$d->addChild('m:test', 'myval', 'urn::test');
+
+
+/* Test adding elements in various configurations */
+$sxe->addChild('m:test1', 'myval', 'urn::test');
+
+/* New namespace test */
+$n = $sxe->addChild('m:test2', 'myval', 'urn::testnew');
+
+$sxe->addChild('test3', 'myval', 'urn::testnew');
+$sxe->addChild('test4', 'myval');
+
+/* Does not add prefix here although name is valid (but discouraged) - change behavior? */
+$sxe->addChild('s:test5', 'myval');
+
+echo $sxe->asXML();
+?>
+===DONE===
+--EXPECTF--
+Warning: SimpleXMLElement::addAttribute(): Attribute already exists in %s031.php on line %d
+
+Warning: SimpleXMLElement::addChild(): Cannot add element to attributes in %s031.php on line %d
+<?xml version="1.0"?>
+<root xmlns:s="urn::test" xmlns:t="urn::test-t" xmlns:v="urn::test-v" s:att1="b" att1="a" v:att11="xxx" att2="no-ns">
+ <child1>test</child1>
+ <child1>test 2</child1>
+ <s:child3/>
+<s:test1>myval</s:test1><m:test2 xmlns:m="urn::testnew">myval</m:test2><test3 xmlns="urn::testnew">myval</test3><test4>myval</test4><test5>myval</test5></root>
+===DONE===
diff --git a/ext/simplexml/tests/032.phpt b/ext/simplexml/tests/032.phpt
new file mode 100755
index 000000000..5c2225146
--- /dev/null
+++ b/ext/simplexml/tests/032.phpt
@@ -0,0 +1,45 @@
+--TEST--
+SimpleXML: comparing instances
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
+--FILE--
+<?php
+$xml =<<<EOF
+<people>
+ <person name="Joe"/>
+ <person name="John">
+ <children>
+ <person name="Joe"/>
+ </children>
+ </person>
+ <person name="Jane"/>
+</people>
+EOF;
+
+$xml1 =<<<EOF
+<people>
+ <person name="John">
+ <children>
+ <person name="Joe"/>
+ </children>
+ </person>
+ <person name="Jane"/>
+</people>
+EOF;
+
+
+$people = simplexml_load_string($xml);
+$people1 = simplexml_load_string($xml);
+$people2 = simplexml_load_string($xml1);
+
+var_dump($people1 == $people);
+var_dump($people2 == $people);
+var_dump($people2 == $people1);
+
+?>
+===DONE===
+--EXPECTF--
+bool(true)
+bool(false)
+bool(false)
+===DONE===
diff --git a/ext/simplexml/tests/033.phpt b/ext/simplexml/tests/033.phpt
new file mode 100755
index 000000000..ba01b2155
--- /dev/null
+++ b/ext/simplexml/tests/033.phpt
@@ -0,0 +1,137 @@
+--TEST--
+SimpleXML: casting instances
+--SKIPIF--
+<?php if (!extension_loaded("simplexml")) print "skip"; ?>
+--FILE--
+<?php
+
+$xml =<<<EOF
+<people>
+test
+ <person name="Joe"/>
+ <person name="John">
+ <children>
+ <person name="Joe"/>
+ </children>
+ </person>
+ <person name="Jane"/>
+</people>
+EOF;
+
+$foo = simplexml_load_string( "<foo />" );
+$people = simplexml_load_string($xml);
+
+var_dump((bool)$foo);
+var_dump((bool)$people);
+var_dump((int)$foo);
+var_dump((int)$people);
+var_dump((double)$foo);
+var_dump((double)$people);
+var_dump((string)$foo);
+var_dump((string)$people);
+var_dump((array)$foo);
+var_dump((array)$people);
+var_dump((object)$foo);
+var_dump((object)$people);
+
+?>
+===DONE===
+--EXPECTF--
+bool(false)
+bool(true)
+int(0)
+int(0)
+float(0)
+float(0)
+string(0) ""
+string(15) "
+test
+
+
+
+"
+array(0) {
+}
+array(1) {
+ ["person"]=>
+ array(3) {
+ [0]=>
+ object(SimpleXMLElement)#%d (1) {
+ ["@attributes"]=>
+ array(1) {
+ ["name"]=>
+ string(3) "Joe"
+ }
+ }
+ [1]=>
+ object(SimpleXMLElement)#%d (2) {
+ ["@attributes"]=>
+ array(1) {
+ ["name"]=>
+ string(4) "John"
+ }
+ ["children"]=>
+ object(SimpleXMLElement)#%d (1) {
+ ["person"]=>
+ object(SimpleXMLElement)#%d (1) {
+ ["@attributes"]=>
+ array(1) {
+ ["name"]=>
+ string(3) "Joe"
+ }
+ }
+ }
+ }
+ [2]=>
+ object(SimpleXMLElement)#%d (1) {
+ ["@attributes"]=>
+ array(1) {
+ ["name"]=>
+ string(4) "Jane"
+ }
+ }
+ }
+}
+object(SimpleXMLElement)#%d (0) {
+}
+object(SimpleXMLElement)#%d (1) {
+ ["person"]=>
+ array(3) {
+ [0]=>
+ object(SimpleXMLElement)#%d (1) {
+ ["@attributes"]=>
+ array(1) {
+ ["name"]=>
+ string(3) "Joe"
+ }
+ }
+ [1]=>
+ object(SimpleXMLElement)#%d (2) {
+ ["@attributes"]=>
+ array(1) {
+ ["name"]=>
+ string(4) "John"
+ }
+ ["children"]=>
+ object(SimpleXMLElement)#%d (1) {
+ ["person"]=>
+ object(SimpleXMLElement)#%d (1) {
+ ["@attributes"]=>
+ array(1) {
+ ["name"]=>
+ string(3) "Joe"
+ }
+ }
+ }
+ }
+ [2]=>
+ object(SimpleXMLElement)#%d (1) {
+ ["@attributes"]=>
+ array(1) {
+ ["name"]=>
+ string(4) "Jane"
+ }
+ }
+ }
+}
+===DONE===
diff --git a/ext/simplexml/tests/bug35785.phpt b/ext/simplexml/tests/bug35785.phpt
index 34489c5b1..de65a1956 100755
--- a/ext/simplexml/tests/bug35785.phpt
+++ b/ext/simplexml/tests/bug35785.phpt
@@ -3,21 +3,24 @@ Bug #35785 (SimpleXML memory read error)
--FILE--
<?php
-$options["database"] = "xmldatabase";
$xml = simplexml_load_string("<root></root>");
-$count = count($xml->posts) + 1;
-$xml->bla->posts[$count]->name = $_POST["name"];
+$xml->bla->posts->name = "FooBar";
+echo $xml->asXML();
+
+echo "===FAIL===\n";
+
+$xml = simplexml_load_string("<root></root>");
+$count = count($xml->bla->posts);
+var_dump($count);
+$xml->bla->posts[++$count]->name = "FooBar";
echo $xml->asXML();
?>
===DONE===
<?php exit(0); __halt_compiler(); ?>
--EXPECTF--
-
-Notice: Undefined index: name in %sbug35785.php on line %d
-
-Strict Standards: Creating default object from empty value in %sbug35785.php on line %d
-
-Warning: Attempt to assign property of non-object in %sbug35785.php on line %d
<?xml version="1.0"?>
-<root/>
-===DONE===
+<root><bla><posts><name>FooBar</name></posts></bla></root>
+===FAIL===
+int(0)
+
+Fatal error: Objects used as arrays in post/pre increment/decrement must return values by reference in %sbug35785.php on line %d
diff --git a/ext/simplexml/tests/bug36611.phpt b/ext/simplexml/tests/bug36611.phpt
new file mode 100644
index 000000000..fdfed0d01
--- /dev/null
+++ b/ext/simplexml/tests/bug36611.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Bug #36611 (assignment to SimpleXML object attribute changes argument type to string)
+--FILE--
+<?php
+
+$xml_str = <<<EOD
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<c_fpobel >
+ <pos >
+ <pos/>
+ </pos>
+</c_fpobel>
+EOD;
+
+$xml = simplexml_load_string ($xml_str) ;
+
+$val = 1;
+
+var_dump($val);
+$obj->pos["act_idx"] = $val;
+var_dump($val) ;
+
+echo "Done\n";
+?>
+--EXPECT--
+int(1)
+int(1)
+Done
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index a9d5467f5..a86a11acf 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_encoding.c,v 1.103.2.13 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: php_encoding.c,v 1.103.2.21 2006/04/17 16:08:08 andrei Exp $ */
#include <time.h>
@@ -211,6 +211,9 @@ encode defaultEncoding[] = {
{{END_KNOWN_TYPES, NULL, NULL, NULL}, guess_zval_convert, guess_xml_convert}
};
+int numDefaultEncodings = sizeof(defaultEncoding)/sizeof(encode);
+
+
void whiteSpace_replace(char* str)
{
while (*str != '\0') {
@@ -246,6 +249,23 @@ void whiteSpace_collapse(char* str)
*pos = '\0';
}
+static encodePtr find_encoder_by_type_name(sdlPtr sdl, const char *type)
+{
+ if (sdl && sdl->encoders) {
+ HashPosition pos;
+ encodePtr *enc;
+
+ for (zend_hash_internal_pointer_reset_ex(sdl->encoders, &pos);
+ zend_hash_get_current_data_ex(sdl->encoders, (void **) &enc, &pos) == SUCCESS;
+ zend_hash_move_forward_ex(sdl->encoders, &pos)) {
+ if (strcmp((*enc)->details.type_str, type) == 0) {
+ return *enc;
+ }
+ }
+ }
+ return NULL;
+}
+
xmlNodePtr master_to_xml(encodePtr encode, zval *data, int style, xmlNodePtr parent)
{
xmlNodePtr node = NULL;
@@ -306,6 +326,39 @@ xmlNodePtr master_to_xml(encodePtr encode, zval *data, int style, xmlNodePtr par
xmlSetNs(node, nsp);
}
} else {
+ if (SOAP_GLOBAL(class_map) && data &&
+ Z_TYPE_P(data) == IS_OBJECT &&
+ !Z_OBJPROP_P(data)->nApplyCount) {
+ zend_class_entry *ce = Z_OBJCE_P(data);
+ HashPosition pos;
+ zval **tmp;
+ char *type_name = NULL;
+ uint type_len;
+ ulong idx;
+
+ for (zend_hash_internal_pointer_reset_ex(SOAP_GLOBAL(class_map), &pos);
+ zend_hash_get_current_data_ex(SOAP_GLOBAL(class_map), (void **) &tmp, &pos) == SUCCESS;
+ zend_hash_move_forward_ex(SOAP_GLOBAL(class_map), &pos)) {
+ if (Z_TYPE_PP(tmp) == IS_STRING &&
+ ce->name_length == Z_STRLEN_PP(tmp) &&
+ zend_binary_strncasecmp(ce->name, ce->name_length, Z_STRVAL_PP(tmp), ce->name_length, ce->name_length) == 0 &&
+ zend_hash_get_current_key_ex(SOAP_GLOBAL(class_map), &type_name, &type_len, &idx, 0, &pos) == HASH_KEY_IS_STRING) {
+
+ /* TODO: namespace isn't stored */
+ encodePtr enc = get_encoder(SOAP_GLOBAL(sdl), SOAP_GLOBAL(sdl)->target_ns, type_name);
+ if (enc) {
+ encode = enc;
+ } else if (SOAP_GLOBAL(sdl)) {
+ enc = find_encoder_by_type_name(SOAP_GLOBAL(sdl), type_name);
+ if (enc) {
+ encode = enc;
+ }
+ }
+ break;
+ }
+ }
+ }
+
if (encode == NULL) {
encode = get_conversion(UNKNOWN_TYPE);
}
@@ -689,7 +742,7 @@ static xmlNodePtr to_xml_string(encodeTypePtr type, zval *data, int style, xmlNo
zval_copy_ctor(&tmp);
convert_to_string(&tmp);
- str = php_escape_html_entities(Z_STRVAL(tmp), Z_STRLEN(tmp), &new_len, 0, 0, NULL TSRMLS_CC);
+ str = php_escape_html_entities(Z_STRVAL(tmp), Z_STRLEN(tmp), &new_len, 0, 0, NULL TSRMLS_CC);
zval_dtor(&tmp);
}
@@ -730,7 +783,7 @@ static xmlNodePtr to_xml_base64(encodeTypePtr type, zval *data, int style, xmlNo
xmlAddChild(parent, ret);
FIND_ZVAL_NULL(data, ret, style);
- if (Z_TYPE_P(data) == IS_STRING) {
+ if (Z_TYPE_P(data) == IS_STRING) {
str = php_base64_encode((unsigned char*)Z_STRVAL_P(data), Z_STRLEN_P(data), &str_len);
xmlNodeSetContentLen(ret, str, str_len);
efree(str);
@@ -763,14 +816,14 @@ static xmlNodePtr to_xml_hexbin(encodeTypePtr type, zval *data, int style, xmlNo
xmlAddChild(parent, ret);
FIND_ZVAL_NULL(data, ret, style);
- if (Z_TYPE_P(data) != IS_STRING) {
+ if (Z_TYPE_P(data) != IS_STRING) {
tmp = *data;
zval_copy_ctor(&tmp);
convert_to_string(&tmp);
data = &tmp;
}
str = (unsigned char *) safe_emalloc(Z_STRLEN_P(data) * 2, sizeof(char), 1);
-
+
for (i = j = 0; i < Z_STRLEN_P(data); i++) {
str[j++] = hexconvtab[((unsigned char)Z_STRVAL_P(data)[i]) >> 4];
str[j++] = hexconvtab[((unsigned char)Z_STRVAL_P(data)[i]) & 15];
@@ -1078,11 +1131,13 @@ static void model_to_zval_object(zval *ret, sdlContentModelPtr model, xmlNodePtr
{
switch (model->kind) {
case XSD_CONTENT_ELEMENT:
- if (model->u.element->name) {
- xmlNodePtr node = get_node(data->children, model->u.element->name);
- if (node) {
- zval *val;
+ if (model->u.element->name) {
+ xmlNodePtr node = get_node(data->children, model->u.element->name);
+
+ if (node) {
+ zval *val;
+ node = check_and_resolve_href(node);
if (node && node->children && node->children->content) {
if (model->u.element->fixed && strcmp(model->u.element->fixed,node->children->content) != 0) {
soap_error3(E_ERROR, "Encoding: Element '%s' has fixed value '%s' (value '%s' is not allowed)", model->u.element->name, model->u.element->fixed, node->children->content);
@@ -1129,6 +1184,14 @@ static void model_to_zval_object(zval *ret, sdlContentModelPtr model, xmlNodePtr
add_next_index_zval(array, val);
} while ((node = get_node(node->next, model->u.element->name)) != NULL);
val = array;
+ } else if ((SOAP_GLOBAL(features) & SOAP_SINGLE_ELEMENT_ARRAYS) &&
+ (model->max_occurs == -1 || model->max_occurs > 1)) {
+ zval *array;
+
+ MAKE_STD_ZVAL(array);
+ array_init(array);
+ add_next_index_zval(array, val);
+ val = array;
}
set_zval_property(ret, model->u.element->name, val TSRMLS_CC);
}
@@ -1164,7 +1227,7 @@ static void model_to_zval_object(zval *ret, sdlContentModelPtr model, xmlNodePtr
}
/* Struct encode/decode */
-static zval *to_zval_object(encodeTypePtr type, xmlNodePtr data)
+static zval *to_zval_object_ex(encodeTypePtr type, xmlNodePtr data, zend_class_entry *pce)
{
zval *ret;
xmlNodePtr trav;
@@ -1174,7 +1237,9 @@ static zval *to_zval_object(encodeTypePtr type, xmlNodePtr data)
zend_bool redo_any = 0;
TSRMLS_FETCH();
- if (SOAP_GLOBAL(class_map) && type->type_str) {
+ if (pce) {
+ ce = pce;
+ } else if (SOAP_GLOBAL(class_map) && type->type_str) {
zval **classname;
zend_class_entry *tmp;
@@ -1217,12 +1282,25 @@ static zval *to_zval_object(encodeTypePtr type, xmlNodePtr data)
sdlType->encode->details.sdl_type->kind != XSD_TYPEKIND_SIMPLE &&
sdlType->encode->details.sdl_type->kind != XSD_TYPEKIND_LIST &&
sdlType->encode->details.sdl_type->kind != XSD_TYPEKIND_UNION) {
- ret = master_to_zval_int(sdlType->encode, data);
+
+ if (ce != ZEND_STANDARD_CLASS_DEF_PTR &&
+ sdlType->encode->to_zval == sdl_guess_convert_zval &&
+ sdlType->encode->details.sdl_type != NULL &&
+ (sdlType->encode->details.sdl_type->kind == XSD_TYPEKIND_COMPLEX ||
+ sdlType->encode->details.sdl_type->kind == XSD_TYPEKIND_RESTRICTION ||
+ sdlType->encode->details.sdl_type->kind == XSD_TYPEKIND_EXTENSION) &&
+ (sdlType->encode->details.sdl_type->encode == NULL ||
+ (sdlType->encode->details.sdl_type->encode->details.type != IS_ARRAY &&
+ sdlType->encode->details.sdl_type->encode->details.type != SOAP_ENC_ARRAY))) {
+ ret = to_zval_object_ex(&sdlType->encode->details, data, ce);
+ } else {
+ ret = master_to_zval_int(sdlType->encode, data);
+ }
FIND_XML_NULL(data, ret);
if (get_zval_property(ret, "any" TSRMLS_CC) != NULL) {
- unset_zval_property(ret, "any" TSRMLS_CC);
+ unset_zval_property(ret, "any" TSRMLS_CC);
redo_any = 1;
- }
+ }
if (Z_TYPE_P(ret) == IS_OBJECT && ce != ZEND_STANDARD_CLASS_DEF_PTR) {
zend_object *zobj = zend_objects_get_address(ret TSRMLS_CC);
zobj->ce = ce;
@@ -1244,7 +1322,7 @@ static zval *to_zval_object(encodeTypePtr type, xmlNodePtr data)
if (sdlType->model) {
model_to_zval_object(ret, sdlType->model, data, sdl TSRMLS_CC);
if (redo_any && get_zval_property(ret, "any" TSRMLS_CC) == NULL) {
- model_to_zval_any(ret, data->children TSRMLS_CC);
+ model_to_zval_any(ret, data->children TSRMLS_CC);
}
}
if (sdlType->attributes) {
@@ -1322,6 +1400,12 @@ static zval *to_zval_object(encodeTypePtr type, xmlNodePtr data)
return ret;
}
+static zval *to_zval_object(encodeTypePtr type, xmlNodePtr data)
+{
+ return to_zval_object_ex(type, data, NULL);
+}
+
+
static int model_to_xml_object(xmlNodePtr node, sdlContentModelPtr model, zval *object, int style, int strict TSRMLS_DC)
{
switch (model->kind) {
@@ -1526,7 +1610,7 @@ static sdlTypePtr model_array_element(sdlContentModelPtr model)
static xmlNodePtr to_xml_object(encodeTypePtr type, zval *data, int style, xmlNodePtr parent)
{
xmlNodePtr xmlParam;
- HashTable *prop;
+ HashTable *prop = NULL;
int i;
sdlTypePtr sdlType = type->sdl_type;
TSRMLS_FETCH();
@@ -1534,19 +1618,19 @@ static xmlNodePtr to_xml_object(encodeTypePtr type, zval *data, int style, xmlNo
if (!data || Z_TYPE_P(data) == IS_NULL) {
xmlParam = xmlNewNode(NULL,"BOGUS");
xmlAddChild(parent, xmlParam);
- if (style == SOAP_ENCODED) {
+ if (style == SOAP_ENCODED) {
xmlSetProp(xmlParam, "xsi:nil", "true");
}
return xmlParam;
}
+ if (Z_TYPE_P(data) == IS_OBJECT) {
+ prop = Z_OBJPROP_P(data);
+ } else if (Z_TYPE_P(data) == IS_ARRAY) {
+ prop = Z_ARRVAL_P(data);
+ }
+
if (sdlType) {
- prop = NULL;
- if (Z_TYPE_P(data) == IS_OBJECT) {
- prop = Z_OBJPROP_P(data);
- } else if (Z_TYPE_P(data) == IS_ARRAY) {
- prop = Z_ARRVAL_P(data);
- }
if (sdlType->kind == XSD_TYPEKIND_RESTRICTION &&
sdlType->encode && type != &sdlType->encode->details) {
encodePtr enc;
@@ -1578,7 +1662,10 @@ static xmlNodePtr to_xml_object(encodeTypePtr type, zval *data, int style, xmlNo
sdlType->encode->details.sdl_type->kind != XSD_TYPEKIND_SIMPLE &&
sdlType->encode->details.sdl_type->kind != XSD_TYPEKIND_LIST &&
sdlType->encode->details.sdl_type->kind != XSD_TYPEKIND_UNION) {
+
+ if (prop) prop->nApplyCount++;
xmlParam = master_to_xml(sdlType->encode, data, style, parent);
+ if (prop) prop->nApplyCount--;
} else {
zval *tmp = get_zval_property(data, "_" TSRMLS_CC);
@@ -1595,7 +1682,6 @@ static xmlNodePtr to_xml_object(encodeTypePtr type, zval *data, int style, xmlNo
xmlParam = xmlNewNode(NULL,"BOGUS");
xmlAddChild(parent, xmlParam);
}
- FIND_ZVAL_NULL(data, xmlParam, style);
if (prop != NULL) {
sdlTypePtr array_el;
@@ -1655,7 +1741,7 @@ static xmlNodePtr to_xml_object(encodeTypePtr type, zval *data, int style, xmlNo
an implicit schema. Otherwise, use form.
*/
if ((*attr)->namens &&
- (!strncmp((*attr)->namens, XML_NAMESPACE, sizeof(XML_NAMESPACE)) ||
+ (!strncmp((*attr)->namens, XML_NAMESPACE, sizeof(XML_NAMESPACE)) ||
(*attr)->form == XSD_FORM_QUALIFIED)) {
xmlNsPtr nsp = encode_add_ns(xmlParam, (*attr)->namens);
@@ -1678,14 +1764,7 @@ static xmlNodePtr to_xml_object(encodeTypePtr type, zval *data, int style, xmlNo
} else {
xmlParam = xmlNewNode(NULL,"BOGUS");
xmlAddChild(parent, xmlParam);
- FIND_ZVAL_NULL(data, xmlParam, style);
- prop = NULL;
- if (Z_TYPE_P(data) == IS_OBJECT) {
- prop = Z_OBJPROP_P(data);
- } else if (Z_TYPE_P(data) == IS_ARRAY) {
- prop = Z_ARRVAL_P(data);
- }
if (prop != NULL) {
i = zend_hash_num_elements(prop);
zend_hash_internal_pointer_reset(prop);
@@ -2759,7 +2838,7 @@ static zval *to_zval_any(encodeTypePtr type, xmlNodePtr data)
}
static xmlNodePtr to_xml_any(encodeTypePtr type, zval *data, int style, xmlNodePtr parent)
-{
+{
xmlNodePtr ret;
if (Z_TYPE_P(data) == IS_STRING) {
@@ -2804,11 +2883,11 @@ zval *sdl_guess_convert_zval(encodeTypePtr enc, xmlNodePtr data)
}
if (type->restrictions->minLength &&
strlen(data->children->content) < type->restrictions->minLength->value) {
- soap_error0(E_WARNING, "Encoding: Restriction: length less then 'minLength'");
+ soap_error0(E_WARNING, "Encoding: Restriction: length less than 'minLength'");
}
if (type->restrictions->maxLength &&
strlen(data->children->content) > type->restrictions->maxLength->value) {
- soap_error0(E_WARNING, "Encoding: Restriction: length greater then 'maxLength'");
+ soap_error0(E_WARNING, "Encoding: Restriction: length greater than 'maxLength'");
}
if (type->restrictions->length &&
strlen(data->children->content) != type->restrictions->length->value) {
@@ -2867,11 +2946,11 @@ xmlNodePtr sdl_guess_convert_xml(encodeTypePtr enc, zval *data, int style, xmlNo
}
if (type->restrictions->minLength &&
Z_STRLEN_P(data) < type->restrictions->minLength->value) {
- soap_error0(E_WARNING, "Encoding: Restriction: length less then 'minLength'");
+ soap_error0(E_WARNING, "Encoding: Restriction: length less than 'minLength'");
}
if (type->restrictions->maxLength &&
Z_STRLEN_P(data) > type->restrictions->maxLength->value) {
- soap_error0(E_WARNING, "Encoding: Restriction: length greater then 'maxLength'");
+ soap_error0(E_WARNING, "Encoding: Restriction: length greater than 'maxLength'");
}
if (type->restrictions->length &&
Z_STRLEN_P(data) != type->restrictions->length->value) {
@@ -3126,7 +3205,7 @@ static encodePtr get_array_type(xmlNodePtr node, zval *array, smart_str *type TS
if (different || count == 0) {
smart_str_appendl(type, "xsd:anyType", 11);
- return get_conversion(XSD_ANYTYPE);
+ return get_conversion(XSD_ANYTYPE);
} else {
encodePtr enc;
@@ -3226,3 +3305,17 @@ void delete_encoder(void *encode)
}
efree(t);
}
+
+void delete_encoder_persistent(void *encode)
+{
+ encodePtr t = *((encodePtr*)encode);
+ if (t->details.ns) {
+ free(t->details.ns);
+ }
+ if (t->details.type_str) {
+ free(t->details.type_str);
+ }
+ /* we should never have mapping in persistent encoder */
+ assert(t->details.map == NULL);
+ free(t);
+}
diff --git a/ext/soap/php_encoding.h b/ext/soap/php_encoding.h
index c46c700b9..8c339133e 100644
--- a/ext/soap/php_encoding.h
+++ b/ext/soap/php_encoding.h
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_encoding.h,v 1.38.2.1 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: php_encoding.h,v 1.38.2.3 2006/04/17 16:08:08 andrei Exp $ */
#ifndef PHP_ENCODING_H
#define PHP_ENCODING_H
@@ -219,7 +219,9 @@ xmlNsPtr encode_add_ns(xmlNodePtr node, const char* ns);
encodePtr get_conversion(int encode);
void delete_encoder(void *handle);
+void delete_encoder_persistent(void *handle);
extern encode defaultEncoding[];
+extern int numDefaultEncodings;
#endif
diff --git a/ext/soap/php_http.c b/ext/soap/php_http.c
index 41aaa309f..ab953c7cb 100644
--- a/ext/soap/php_http.c
+++ b/ext/soap/php_http.c
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_http.c,v 1.77.2.6 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: php_http.c,v 1.77.2.11 2006/04/13 08:18:36 dmitry Exp $ */
#include "php_soap.h"
#include "ext/standard/base64.h"
@@ -223,6 +223,7 @@ int make_http_soap_request(zval *this_ptr,
{
char *request;
smart_str soap_headers = {0};
+ smart_str soap_headers_z = {0};
int request_size, err;
php_url *phpurl = NULL;
php_stream *stream;
@@ -249,8 +250,10 @@ int make_http_soap_request(zval *this_ptr,
int level = Z_LVAL_PP(tmp) & 0x0f;
int kind = Z_LVAL_PP(tmp) & SOAP_COMPRESSION_DEFLATE;
+ if (level > 9) {level = 9;}
+
if ((Z_LVAL_PP(tmp) & SOAP_COMPRESSION_ACCEPT) != 0) {
- smart_str_append_const(&soap_headers,"Accept-Encoding: gzip, deflate\r\n");
+ smart_str_append_const(&soap_headers_z,"Accept-Encoding: gzip, deflate\r\n");
}
if (level > 0) {
zval func;
@@ -270,11 +273,11 @@ int make_http_soap_request(zval *this_ptr,
if (kind == SOAP_COMPRESSION_DEFLATE) {
n = 2;
ZVAL_STRING(&func, "gzcompress", 0);
- smart_str_append_const(&soap_headers,"Content-Encoding: deflate\r\n");
+ smart_str_append_const(&soap_headers_z,"Content-Encoding: deflate\r\n");
} else {
n = 3;
ZVAL_STRING(&func, "gzencode", 0);
- smart_str_append_const(&soap_headers,"Content-Encoding: gzip\r\n");
+ smart_str_append_const(&soap_headers_z,"Content-Encoding: gzip\r\n");
ZVAL_LONG(params[2], 1);
}
if (call_user_function(CG(function_table), (zval**)NULL, &func, &retval, n, params TSRMLS_CC) == SUCCESS &&
@@ -414,12 +417,25 @@ try_again:
smart_str_append_unsigned(&soap_headers, phpurl->port);
}
smart_str_append_const(&soap_headers, "\r\n"
- "Connection: Keep-Alive\r\n"
+ "Connection: Keep-Alive\r\n");
/*
"Connection: close\r\n"
"Accept: text/html; text/xml; text/plain\r\n"
*/
- "User-Agent: PHP SOAP 0.1\r\n");
+ if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_user_agent", sizeof("_user_agent"), (void **)&tmp) == SUCCESS &&
+ Z_TYPE_PP(tmp) == IS_STRING) {
+ if (Z_STRLEN_PP(tmp) > 0) {
+ smart_str_append_const(&soap_headers, "User-Agent: ");
+ smart_str_appendl(&soap_headers, Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp));
+ smart_str_append_const(&soap_headers, "\r\n");
+ }
+ } else{
+ smart_str_append_const(&soap_headers, "User-Agent: PHP-SOAP/"PHP_VERSION"\r\n");
+ }
+
+ smart_str_append(&soap_headers, &soap_headers_z);
+ smart_str_free(&soap_headers_z);
+
if (soap_version == SOAP_1_2) {
smart_str_append_const(&soap_headers,"Content-Type: application/soap+xml; charset=utf-8");
if (soapaction) {
@@ -674,6 +690,13 @@ try_again:
return FALSE;
}
+ if (!buffer) {
+ php_stream_close(stream);
+ zend_hash_del(Z_OBJPROP_P(this_ptr), "httpsocket", sizeof("httpsocket"));
+ zend_hash_del(Z_OBJPROP_P(this_ptr), "_use_proxy", sizeof("_use_proxy"));
+ return TRUE;
+ }
+
do {
if (!get_http_headers(stream, &http_headers, &http_header_size TSRMLS_CC)) {
if (http_headers) {efree(http_headers);}
@@ -797,7 +820,22 @@ try_again:
efree(cookie);
}
- if (!get_http_body(stream, !http_1_1, http_headers, &http_body, &http_body_size TSRMLS_CC)) {
+ if (http_1_1) {
+ http_close = FALSE;
+ if (use_proxy && !use_ssl) {
+ connection = get_http_header_value(http_headers,"Proxy-Connection: ");
+ if (connection) {
+ if (strncasecmp(connection, "close", sizeof("close")-1) == 0) {
+ http_close = TRUE;
+ }
+ efree(connection);
+ }
+ }
+ } else {
+ http_close = TRUE;
+ }
+
+ if (!get_http_body(stream, http_close, http_headers, &http_body, &http_body_size TSRMLS_CC)) {
if (request != buf) {efree(request);}
php_stream_close(stream);
efree(http_headers);
diff --git a/ext/soap/php_schema.c b/ext/soap/php_schema.c
index 4e8787d1c..903c2cf3d 100644
--- a/ext/soap/php_schema.c
+++ b/ext/soap/php_schema.c
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_schema.c,v 1.58.2.4 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: php_schema.c,v 1.58.2.6 2006/04/09 23:35:51 andrei Exp $ */
#include "php_soap.h"
#include "libxml/uri.h"
@@ -2117,7 +2117,7 @@ static void schema_attribute_fixup(sdlCtx *ctx, sdlAttributePtr attr)
}
if (attr->name == NULL && attr->ref != NULL) {
char *name = strrchr(attr->ref, ':');
- if (*name) {
+ if (name) {
attr->name = estrdup(name+1);
} else{
attr->name = estrdup(attr->ref);
@@ -2358,6 +2358,28 @@ void delete_model(void *handle)
efree(tmp);
}
+void delete_model_persistent(void *handle)
+{
+ sdlContentModelPtr tmp = *((sdlContentModelPtr*)handle);
+ switch (tmp->kind) {
+ case XSD_CONTENT_ELEMENT:
+ case XSD_CONTENT_GROUP:
+ break;
+ case XSD_CONTENT_SEQUENCE:
+ case XSD_CONTENT_ALL:
+ case XSD_CONTENT_CHOICE:
+ zend_hash_destroy(tmp->u.content);
+ free(tmp->u.content);
+ break;
+ case XSD_CONTENT_GROUP_REF:
+ free(tmp->u.group_ref);
+ break;
+ default:
+ break;
+ }
+ free(tmp);
+}
+
void delete_type(void *data)
{
sdlTypePtr type = *((sdlTypePtr*)data);
@@ -2405,6 +2427,53 @@ void delete_type(void *data)
efree(type);
}
+void delete_type_persistent(void *data)
+{
+ sdlTypePtr type = *((sdlTypePtr*)data);
+ if (type->name) {
+ free(type->name);
+ }
+ if (type->namens) {
+ free(type->namens);
+ }
+ if (type->def) {
+ free(type->def);
+ }
+ if (type->fixed) {
+ free(type->fixed);
+ }
+ if (type->elements) {
+ zend_hash_destroy(type->elements);
+ free(type->elements);
+ }
+ if (type->attributes) {
+ zend_hash_destroy(type->attributes);
+ free(type->attributes);
+ }
+ if (type->model) {
+ delete_model_persistent((void**)&type->model);
+ }
+ if (type->restrictions) {
+ delete_restriction_var_int_persistent(&type->restrictions->minExclusive);
+ delete_restriction_var_int_persistent(&type->restrictions->minInclusive);
+ delete_restriction_var_int_persistent(&type->restrictions->maxExclusive);
+ delete_restriction_var_int_persistent(&type->restrictions->maxInclusive);
+ delete_restriction_var_int_persistent(&type->restrictions->totalDigits);
+ delete_restriction_var_int_persistent(&type->restrictions->fractionDigits);
+ delete_restriction_var_int_persistent(&type->restrictions->length);
+ delete_restriction_var_int_persistent(&type->restrictions->minLength);
+ delete_restriction_var_int_persistent(&type->restrictions->maxLength);
+ delete_restriction_var_char_persistent(&type->restrictions->whiteSpace);
+ delete_restriction_var_char_persistent(&type->restrictions->pattern);
+ if (type->restrictions->enumeration) {
+ zend_hash_destroy(type->restrictions->enumeration);
+ free(type->restrictions->enumeration);
+ }
+ free(type->restrictions);
+ }
+ free(type);
+}
+
void delete_extra_attribute(void *attribute)
{
sdlExtraAttributePtr attr = *((sdlExtraAttributePtr*)attribute);
@@ -2418,6 +2487,19 @@ void delete_extra_attribute(void *attribute)
efree(attr);
}
+void delete_extra_attribute_persistent(void *attribute)
+{
+ sdlExtraAttributePtr attr = *((sdlExtraAttributePtr*)attribute);
+
+ if (attr->ns) {
+ free(attr->ns);
+ }
+ if (attr->val) {
+ free(attr->val);
+ }
+ free(attr);
+}
+
void delete_attribute(void *attribute)
{
sdlAttributePtr attr = *((sdlAttributePtr*)attribute);
@@ -2444,6 +2526,32 @@ void delete_attribute(void *attribute)
efree(attr);
}
+void delete_attribute_persistent(void *attribute)
+{
+ sdlAttributePtr attr = *((sdlAttributePtr*)attribute);
+
+ if (attr->def) {
+ free(attr->def);
+ }
+ if (attr->fixed) {
+ free(attr->fixed);
+ }
+ if (attr->name) {
+ free(attr->name);
+ }
+ if (attr->namens) {
+ free(attr->namens);
+ }
+ if (attr->ref) {
+ free(attr->ref);
+ }
+ if (attr->extraAttributes) {
+ zend_hash_destroy(attr->extraAttributes);
+ free(attr->extraAttributes);
+ }
+ free(attr);
+}
+
void delete_restriction_var_int(void *rvi)
{
sdlRestrictionIntPtr ptr = *((sdlRestrictionIntPtr*)rvi);
@@ -2452,6 +2560,14 @@ void delete_restriction_var_int(void *rvi)
}
}
+void delete_restriction_var_int_persistent(void *rvi)
+{
+ sdlRestrictionIntPtr ptr = *((sdlRestrictionIntPtr*)rvi);
+ if (ptr) {
+ free(ptr);
+ }
+}
+
void delete_restriction_var_char(void *srvc)
{
sdlRestrictionCharPtr ptr = *((sdlRestrictionCharPtr*)srvc);
@@ -2462,3 +2578,14 @@ void delete_restriction_var_char(void *srvc)
efree(ptr);
}
}
+
+void delete_restriction_var_char_persistent(void *srvc)
+{
+ sdlRestrictionCharPtr ptr = *((sdlRestrictionCharPtr*)srvc);
+ if (ptr) {
+ if (ptr->value) {
+ free(ptr->value);
+ }
+ free(ptr);
+ }
+}
diff --git a/ext/soap/php_schema.h b/ext/soap/php_schema.h
index e18391b58..58b8f32cb 100644
--- a/ext/soap/php_schema.h
+++ b/ext/soap/php_schema.h
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_schema.h,v 1.13.2.1 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: php_schema.h,v 1.13.2.2 2006/04/09 23:35:51 andrei Exp $ */
#ifndef PHP_SCHEMA_H
#define PHP_SCHEMA_H
@@ -26,9 +26,15 @@ int load_schema(sdlCtx *ctx, xmlNodePtr schema TSRMLS_DC);
void schema_pass2(sdlCtx *ctx);
void delete_model(void *handle);
+void delete_model_persistent(void *handle);
void delete_type(void *data);
+void delete_type_persistent(void *data);
void delete_extra_attribute(void *attribute);
+void delete_extra_attribute_persistent(void *attribute);
void delete_attribute(void *attribute);
+void delete_attribute_persistent(void *attribute);
void delete_restriction_var_int(void *rvi);
+void delete_restriction_var_int_persistent(void *rvi);
void delete_restriction_var_char(void *srvc);
+void delete_restriction_var_char_persistent(void *srvc);
#endif
diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c
index 7f24a5081..b0185c890 100644
--- a/ext/soap/php_sdl.c
+++ b/ext/soap/php_sdl.c
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_sdl.c,v 1.88.2.5 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: php_sdl.c,v 1.88.2.12 2006/04/19 10:48:54 dmitry Exp $ */
#include "php_soap.h"
#include "ext/libxml/php_libxml.h"
@@ -35,10 +35,15 @@
#endif
static void delete_fault(void *fault);
+static void delete_fault_persistent(void *fault);
static void delete_binding(void *binding);
+static void delete_binding_persistent(void *binding);
static void delete_function(void *function);
+static void delete_function_persistent(void *function);
static void delete_parameter(void *paramater);
+static void delete_parameter_persistent(void *paramater);
static void delete_header(void *header);
+static void delete_header_persistent(void *header);
static void delete_document(void *doc_ptr);
encodePtr get_encoder_from_prefix(sdlPtr sdl, xmlNodePtr node, const char *type)
@@ -138,13 +143,18 @@ encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *type)
enc = get_encoder_ex(NULL, enc_nscat, enc_len);
efree(enc_nscat);
if (enc && sdl) {
- encodePtr new_enc = emalloc(sizeof(encode));
+ encodePtr new_enc = pemalloc(sizeof(encode), sdl->is_persistent);
memcpy(new_enc, enc, sizeof(encode));
- new_enc->details.ns = estrndup(ns, ns_len);
- new_enc->details.type_str = estrdup(new_enc->details.type_str);
+ if (sdl->is_persistent) {
+ new_enc->details.ns = zend_strndup(ns, ns_len);
+ new_enc->details.type_str = strdup(new_enc->details.type_str);
+ } else {
+ new_enc->details.ns = estrndup(ns, ns_len);
+ new_enc->details.type_str = estrdup(new_enc->details.type_str);
+ }
if (sdl->encoders == NULL) {
- sdl->encoders = emalloc(sizeof(HashTable));
- zend_hash_init(sdl->encoders, 0, NULL, delete_encoder, 0);
+ sdl->encoders = pemalloc(sizeof(HashTable), sdl->is_persistent);
+ zend_hash_init(sdl->encoders, 0, NULL, delete_encoder, sdl->is_persistent);
}
zend_hash_update(sdl->encoders, nscat, len + 1, &new_enc, sizeof(encodePtr), NULL);
enc = new_enc;
@@ -1407,7 +1417,7 @@ static HashTable* sdl_deserialize_parameters(encodePtr *encoders, sdlTypePtr *ty
return ht;
}
-static sdlPtr get_sdl_from_cache(const char *fn, const char *uri, time_t t)
+static sdlPtr get_sdl_from_cache(const char *fn, const char *uri, time_t t, time_t *cached TSRMLS_DC)
{
sdlPtr sdl;
time_t old_t;
@@ -1451,6 +1461,7 @@ static sdlPtr get_sdl_from_cache(const char *fn, const char *uri, time_t t)
efree(buf);
return NULL;
}
+ *cached = old_t;
WSDL_CACHE_GET_INT(i, &in);
if (i == 0 && strncmp(in, uri, i) != 0) {
@@ -1983,7 +1994,7 @@ static void sdl_serialize_soap_body(sdlSoapBindingFunctionBodyPtr body, HashTabl
}
}
-static void add_sdl_to_cache(const char *fn, const char *uri, time_t t, sdlPtr sdl)
+static void add_sdl_to_cache(const char *fn, const char *uri, time_t t, sdlPtr sdl TSRMLS_DC)
{
smart_str buf = {0};
smart_str *out = &buf;
@@ -2258,14 +2269,867 @@ static void add_sdl_to_cache(const char *fn, const char *uri, time_t t, sdlPtr s
zend_hash_destroy(&tmp_types);
}
-sdlPtr get_sdl(zval *this_ptr, char *uri TSRMLS_DC)
+
+static void make_persistent_restriction_int(void *data)
+{
+ sdlRestrictionIntPtr *rest = (sdlRestrictionIntPtr *)data;
+ sdlRestrictionIntPtr prest = NULL;
+
+ prest = malloc(sizeof(sdlRestrictionInt));
+ *prest = **rest;
+ *rest = prest;
+}
+
+
+static void make_persistent_restriction_char(void *data)
+{
+ sdlRestrictionCharPtr *rest = (sdlRestrictionCharPtr *)data;
+ sdlRestrictionCharPtr prest = NULL;
+
+ prest = malloc(sizeof(sdlRestrictionChar));
+ memset(prest, 0, sizeof(sdlRestrictionChar));
+ prest->value = strdup((*rest)->value);
+ prest->fixed = (*rest)->fixed;
+ *rest = prest;
+}
+
+
+static void make_persistent_sdl_type_ref(sdlTypePtr *type, HashTable *ptr_map, HashTable *bp_types)
+{
+ sdlTypePtr *tmp;
+
+ if (zend_hash_find(ptr_map, (char *)type, sizeof(sdlTypePtr), (void**)&tmp) == SUCCESS) {
+ *type = *tmp;
+ } else {
+ zend_hash_next_index_insert(bp_types, (void*)&type, sizeof(sdlTypePtr*), NULL);
+ }
+}
+
+
+static void make_persistent_sdl_encoder_ref(encodePtr *enc, HashTable *ptr_map, HashTable *bp_encoders)
+{
+ encodePtr *tmp;
+
+ /* do not process defaultEncoding's here */
+ if ((*enc) >= defaultEncoding && (*enc) < defaultEncoding + numDefaultEncodings) {
+ return;
+ }
+
+ if (zend_hash_find(ptr_map, (char *)enc, sizeof(encodePtr), (void**)&tmp) == SUCCESS) {
+ *enc = *tmp;
+ } else {
+ zend_hash_next_index_insert(bp_encoders, (void*)&enc, sizeof(encodePtr*), NULL);
+ }
+}
+
+
+static HashTable* make_persistent_sdl_function_headers(HashTable *headers, HashTable *ptr_map)
+{
+ HashTable *pheaders;
+ sdlSoapBindingFunctionHeaderPtr *tmp, pheader;
+ encodePtr *penc;
+ sdlTypePtr *ptype;
+ ulong index;
+ char *key;
+ uint key_len;
+
+ pheaders = malloc(sizeof(HashTable));
+ zend_hash_init(pheaders, zend_hash_num_elements(headers), NULL, delete_header_persistent, 1);
+
+ zend_hash_internal_pointer_reset(headers);
+ while (zend_hash_get_current_data(headers, (void**)&tmp) == SUCCESS) {
+ pheader = malloc(sizeof(sdlSoapBindingFunctionHeader));
+ memset(pheader, 0, sizeof(sdlSoapBindingFunctionHeader));
+ *pheader = **tmp;
+
+ if (pheader->name) {
+ pheader->name = strdup(pheader->name);
+ }
+ if (pheader->ns) {
+ pheader->ns = strdup(pheader->ns);
+ }
+
+ if (pheader->encode->details.sdl_type) {
+ if (zend_hash_find(ptr_map, (char*)&pheader->encode, sizeof(encodePtr), (void**)&penc) == FAILURE) {
+ assert(0);
+ }
+ pheader->encode = *penc;
+ }
+ if (pheader->element) {
+ if (zend_hash_find(ptr_map, (char*)&pheader->element, sizeof(sdlTypePtr), (void**)&ptype) == FAILURE) {
+ assert(0);
+ }
+ pheader->element = *ptype;
+ }
+
+ if (pheader->headerfaults) {
+ pheader->headerfaults = make_persistent_sdl_function_headers(pheader->headerfaults, ptr_map);
+ }
+
+ if (zend_hash_get_current_key_ex(headers, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) {
+ zend_hash_add(pheaders, key, key_len, (void*)&pheader, sizeof(sdlSoapBindingFunctionHeaderPtr), NULL);
+ } else {
+ zend_hash_next_index_insert(pheaders, (void*)&pheader, sizeof(sdlSoapBindingFunctionHeaderPtr), NULL);
+ }
+
+ zend_hash_move_forward(headers);
+ }
+
+ return pheaders;
+}
+
+
+static void make_persistent_sdl_soap_body(sdlSoapBindingFunctionBodyPtr body, HashTable *ptr_map)
+{
+ if (body->ns) {
+ body->ns = strdup(body->ns);
+ }
+
+ if (body->headers) {
+ body->headers = make_persistent_sdl_function_headers(body->headers, ptr_map);
+ }
+}
+
+
+static HashTable* make_persistent_sdl_parameters(HashTable *params, HashTable *ptr_map)
+{
+ HashTable *pparams;
+ sdlParamPtr *tmp, pparam;
+ sdlTypePtr *ptype;
+ encodePtr *penc;
+ ulong index;
+ char *key;
+ uint key_len;
+
+ pparams = malloc(sizeof(HashTable));
+ zend_hash_init(pparams, zend_hash_num_elements(params), NULL, delete_parameter_persistent, 1);
+
+ zend_hash_internal_pointer_reset(params);
+ while (zend_hash_get_current_data(params, (void**)&tmp) == SUCCESS) {
+ pparam = malloc(sizeof(sdlParam));
+ memset(pparam, 0, sizeof(sdlParam));
+ *pparam = **tmp;
+
+ if (pparam->paramName) {
+ pparam->paramName = strdup(pparam->paramName);
+ }
+
+ if (pparam->encode && pparam->encode->details.sdl_type) {
+ if (zend_hash_find(ptr_map, (char*)&pparam->encode, sizeof(encodePtr), (void**)&penc) == FAILURE) {
+ assert(0);
+ }
+ pparam->encode = *penc;
+ }
+ if (pparam->element) {
+ if (zend_hash_find(ptr_map, (char*)&pparam->element, sizeof(sdlTypePtr), (void**)&ptype) == FAILURE) {
+ assert(0);
+ }
+ pparam->element = *ptype;
+ }
+
+ if (zend_hash_get_current_key_ex(params, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) {
+ zend_hash_add(pparams, key, key_len, (void*)&pparam, sizeof(sdlParamPtr), NULL);
+ } else {
+ zend_hash_next_index_insert(pparams, (void*)&pparam, sizeof(sdlParamPtr), NULL);
+ }
+
+ zend_hash_move_forward(params);
+ }
+
+
+ return pparams;
+}
+
+static HashTable* make_persistent_sdl_function_faults(sdlFunctionPtr func, HashTable *faults, HashTable *ptr_map)
+{
+ HashTable *pfaults;
+ sdlFaultPtr *tmp, pfault;
+ ulong index;
+ char *key;
+ uint key_len;
+
+ pfaults = malloc(sizeof(HashTable));
+ zend_hash_init(pfaults, zend_hash_num_elements(faults), NULL, delete_fault_persistent, 1);
+
+ zend_hash_internal_pointer_reset(faults);
+ while (zend_hash_get_current_data(faults, (void**)&tmp) == SUCCESS) {
+ pfault = malloc(sizeof(sdlFault));
+ memset(pfault, 0, sizeof(sdlFault));
+ *pfault = **tmp;
+
+ if (pfault->name) {
+ pfault->name = strdup(pfault->name);
+ }
+ if (pfault->details) {
+ pfault->details = make_persistent_sdl_parameters(pfault->details, ptr_map);
+ }
+
+ if (func->binding->bindingType == BINDING_SOAP && pfault->bindingAttributes) {
+ sdlSoapBindingFunctionFaultPtr soap_binding;
+
+ soap_binding = malloc(sizeof(sdlSoapBindingFunctionFault));
+ memset(soap_binding, 0, sizeof(sdlSoapBindingFunctionFault));
+ *soap_binding = *(sdlSoapBindingFunctionFaultPtr)pfault->bindingAttributes;
+ if (soap_binding->ns) {
+ soap_binding->ns = strdup(soap_binding->ns);
+ }
+ pfault->bindingAttributes = soap_binding;
+ }
+
+ if (zend_hash_get_current_key_ex(faults, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) {
+ zend_hash_add(pfaults, key, key_len, (void*)&pfault, sizeof(sdlParamPtr), NULL);
+ } else {
+ zend_hash_next_index_insert(pfaults, (void*)&pfault, sizeof(sdlParamPtr), NULL);
+ }
+
+ zend_hash_move_forward(faults);
+ }
+
+
+ return pfaults;
+}
+
+
+static sdlAttributePtr make_persistent_sdl_attribute(sdlAttributePtr attr, HashTable *ptr_map, HashTable *bp_types, HashTable *bp_encoders)
+{
+ sdlAttributePtr pattr;
+ ulong index;
+ char *key;
+ uint key_len;
+
+ pattr = malloc(sizeof(sdlAttribute));
+ memset(pattr, 0, sizeof(sdlAttribute));
+
+ *pattr = *attr;
+
+ if (pattr->name) {
+ pattr->name = strdup(pattr->name);
+ }
+ if (pattr->namens) {
+ pattr->namens = strdup(pattr->namens);
+ }
+ if (pattr->ref) {
+ pattr->ref = strdup(pattr->ref);
+ }
+ if (pattr->def) {
+ pattr->def = strdup(pattr->def);
+ }
+ if (pattr->fixed) {
+ pattr->fixed = strdup(pattr->fixed);
+ }
+
+ /* we do not want to process defaultEncoding's here */
+ if (pattr->encode) {
+ make_persistent_sdl_encoder_ref(&pattr->encode, ptr_map, bp_encoders);
+ }
+
+ if (pattr->extraAttributes) {
+ sdlExtraAttributePtr *tmp, pextra;
+
+ pattr->extraAttributes = malloc(sizeof(HashTable));
+ zend_hash_init(pattr->extraAttributes, zend_hash_num_elements(attr->extraAttributes), NULL, delete_extra_attribute_persistent, 1);
+
+ zend_hash_internal_pointer_reset(pattr->extraAttributes);
+ while (zend_hash_get_current_data(attr->extraAttributes, (void**)&tmp) == SUCCESS) {
+ pextra = malloc(sizeof(sdlExtraAttribute));
+ memset(pextra, 0, sizeof(sdlExtraAttribute));
+ if ((*tmp)->ns) {
+ pextra->ns = strdup((*tmp)->ns);
+ }
+ if ((*tmp)->val) {
+ pextra->val = strdup((*tmp)->val);
+ }
+
+ if (zend_hash_get_current_key_ex(attr->extraAttributes, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) {
+ zend_hash_add(pattr->extraAttributes, key, key_len, (void*)&pextra, sizeof(sdlExtraAttributePtr), NULL);
+ }
+
+ zend_hash_move_forward(attr->extraAttributes);
+ }
+ }
+
+ return pattr;
+}
+
+
+static sdlContentModelPtr make_persistent_sdl_model(sdlContentModelPtr model, HashTable *ptr_map, HashTable *bp_types, HashTable *bp_encoders)
+{
+ sdlContentModelPtr pmodel;
+ sdlContentModelPtr *tmp, pcontent;
+
+ pmodel = malloc(sizeof(sdlContentModel));
+ memset(pmodel, 0, sizeof(sdlContentModel));
+ *pmodel = *model;
+
+ switch (pmodel->kind) {
+ case XSD_CONTENT_ELEMENT:
+ if (pmodel->u.element) {
+ make_persistent_sdl_type_ref(&pmodel->u.element, ptr_map, bp_types);
+ }
+ break;
+
+ case XSD_CONTENT_SEQUENCE:
+ case XSD_CONTENT_ALL:
+ case XSD_CONTENT_CHOICE:
+ pmodel->u.content = malloc(sizeof(HashTable));
+ zend_hash_init(pmodel->u.content, zend_hash_num_elements(model->u.content), NULL, delete_model_persistent, 1);
+
+ zend_hash_internal_pointer_reset(model->u.content);
+ while (zend_hash_get_current_data(model->u.content, (void**)&tmp) == SUCCESS) {
+ pcontent = make_persistent_sdl_model(*tmp, ptr_map, bp_types, bp_encoders);
+ zend_hash_next_index_insert(pmodel->u.content, (void*)&pcontent, sizeof(sdlContentModelPtr), NULL);
+ zend_hash_move_forward(model->u.content);
+ }
+ break;
+
+ case XSD_CONTENT_GROUP_REF:
+ if (pmodel->u.group_ref) {
+ pmodel->u.group_ref = strdup(pmodel->u.group_ref);
+ }
+ break;
+
+ case XSD_CONTENT_GROUP:
+ if (pmodel->u.group) {
+ make_persistent_sdl_type_ref(&pmodel->u.group, ptr_map, bp_types);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return pmodel;
+}
+
+
+static sdlTypePtr make_persistent_sdl_type(sdlTypePtr type, HashTable *ptr_map, HashTable *bp_types, HashTable *bp_encoders)
{
+ ulong index;
+ char *key;
+ uint key_len;
+ sdlTypePtr ptype = NULL;
+
+ ptype = malloc(sizeof(sdlType));
+ memset(ptype, 0, sizeof(sdlType));
+
+ *ptype = *type;
+
+ if (ptype->name) {
+ ptype->name = strdup(ptype->name);
+ }
+ if (ptype->namens) {
+ ptype->namens = strdup(ptype->namens);
+ }
+ if (ptype->def) {
+ ptype->def = strdup(ptype->def);
+ }
+ if (ptype->fixed) {
+ ptype->fixed = strdup(ptype->fixed);
+ }
+ if (ptype->ref) {
+ ptype->ref = strdup(ptype->ref);
+ }
+
+ /* we do not want to process defaultEncoding's here */
+ if (ptype->encode) {
+ make_persistent_sdl_encoder_ref(&ptype->encode, ptr_map, bp_encoders);
+ }
+
+ if (ptype->restrictions) {
+ ptype->restrictions = malloc(sizeof(sdlRestrictions));
+ memset(ptype->restrictions, 0, sizeof(sdlRestrictions));
+ *ptype->restrictions = *type->restrictions;
+
+ if (ptype->restrictions->minExclusive) {
+ make_persistent_restriction_int(&ptype->restrictions->minExclusive);
+ }
+ if (ptype->restrictions->maxExclusive) {
+ make_persistent_restriction_int(&ptype->restrictions->maxExclusive);
+ }
+ if (ptype->restrictions->minInclusive) {
+ make_persistent_restriction_int(&ptype->restrictions->minInclusive);
+ }
+ if (ptype->restrictions->maxInclusive) {
+ make_persistent_restriction_int(&ptype->restrictions->maxInclusive);
+ }
+ if (ptype->restrictions->totalDigits) {
+ make_persistent_restriction_int(&ptype->restrictions->totalDigits);
+ }
+ if (ptype->restrictions->fractionDigits) {
+ make_persistent_restriction_int(&ptype->restrictions->fractionDigits);
+ }
+ if (ptype->restrictions->length) {
+ make_persistent_restriction_int(&ptype->restrictions->length);
+ }
+ if (ptype->restrictions->minLength) {
+ make_persistent_restriction_int(&ptype->restrictions->minLength);
+ }
+ if (ptype->restrictions->maxLength) {
+ make_persistent_restriction_int(&ptype->restrictions->maxLength);
+ }
+ if (ptype->restrictions->whiteSpace) {
+ make_persistent_restriction_char(&ptype->restrictions->whiteSpace);
+ }
+ if (ptype->restrictions->pattern) {
+ make_persistent_restriction_char(&ptype->restrictions->pattern);
+ }
+
+ if (type->restrictions->enumeration) {
+ sdlRestrictionCharPtr tmp;
+
+ ptype->restrictions->enumeration = malloc(sizeof(HashTable));
+ zend_hash_init(ptype->restrictions->enumeration, zend_hash_num_elements(type->restrictions->enumeration), NULL, delete_restriction_var_char_persistent, 1);
+ zend_hash_copy(ptype->restrictions->enumeration, type->restrictions->enumeration, make_persistent_restriction_char, (void*)&tmp, sizeof(sdlRestrictionCharPtr));
+ }
+ }
+
+ if (ptype->elements) {
+ sdlTypePtr *tmp, pelem;
+
+ ptype->elements = malloc(sizeof(HashTable));
+ zend_hash_init(ptype->elements, zend_hash_num_elements(type->elements), NULL, delete_type_persistent, 1);
+
+ zend_hash_internal_pointer_reset(type->elements);
+ while (zend_hash_get_current_data(type->elements, (void **)&tmp) == SUCCESS) {
+ pelem = make_persistent_sdl_type(*tmp, ptr_map, bp_types, bp_encoders);
+ if (zend_hash_get_current_key_ex(type->elements, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) {
+ zend_hash_add(ptype->elements, key, key_len, (void*)&pelem, sizeof(sdlTypePtr), NULL);
+ } else {
+ zend_hash_next_index_insert(ptype->elements, (void*)&pelem, sizeof(sdlTypePtr), NULL);
+ }
+ zend_hash_add(ptr_map, (char*)tmp, sizeof(*tmp), (void*)&pelem, sizeof(sdlTypePtr), NULL);
+ zend_hash_move_forward(type->elements);
+ }
+ }
+
+ if (ptype->attributes) {
+ sdlAttributePtr *tmp, pattr;
+
+ ptype->attributes = malloc(sizeof(HashTable));
+ zend_hash_init(ptype->attributes, zend_hash_num_elements(type->attributes), NULL, delete_attribute_persistent, 1);
+
+ zend_hash_internal_pointer_reset(type->attributes);
+ while (zend_hash_get_current_data(type->attributes, (void **)&tmp) == SUCCESS) {
+ pattr = make_persistent_sdl_attribute(*tmp, ptr_map, bp_types, bp_encoders);
+ if (zend_hash_get_current_key_ex(type->attributes, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) {
+ zend_hash_add(ptype->attributes, key, key_len, (void*)&pattr, sizeof(sdlAttributePtr), NULL);
+ } else {
+ zend_hash_next_index_insert(ptype->attributes, (void*)&pattr, sizeof(sdlAttributePtr), NULL);
+ }
+ zend_hash_move_forward(type->attributes);
+ }
+ }
+
+ if (type->model) {
+ ptype->model = make_persistent_sdl_model(ptype->model, ptr_map, bp_types, bp_encoders);
+ }
+
+ return ptype;
+}
+
+static encodePtr make_persistent_sdl_encoder(encodePtr enc, HashTable *ptr_map, HashTable *bp_types, HashTable *bp_encoders)
+{
+ encodePtr penc = NULL;
+
+ penc = malloc(sizeof(encode));
+ memset(penc, 0, sizeof(encode));
+
+ *penc = *enc;
+
+ if (penc->details.type_str) {
+ penc->details.type_str = strdup(penc->details.type_str);
+ }
+ if (penc->details.ns) {
+ penc->details.ns = strdup(penc->details.ns);
+ }
+
+ if (penc->details.sdl_type) {
+ make_persistent_sdl_type_ref(&penc->details.sdl_type, ptr_map, bp_types);
+ }
+
+ return penc;
+}
+
+static sdlBindingPtr make_persistent_sdl_binding(sdlBindingPtr bind, HashTable *ptr_map)
+{
+ sdlBindingPtr pbind = NULL;
+
+ pbind = malloc(sizeof(sdlBinding));
+ memset(pbind, 0, sizeof(sdlBinding));
+
+ *pbind = *bind;
+
+ if (pbind->name) {
+ pbind->name = strdup(pbind->name);
+ }
+ if (pbind->location) {
+ pbind->location = strdup(pbind->location);
+ }
+
+ if (pbind->bindingType == BINDING_SOAP && pbind->bindingAttributes) {
+ sdlSoapBindingPtr soap_binding;
+
+ soap_binding = malloc(sizeof(sdlSoapBinding));
+ memset(soap_binding, 0, sizeof(sdlSoapBinding));
+ *soap_binding = *(sdlSoapBindingPtr)pbind->bindingAttributes;
+ pbind->bindingAttributes = soap_binding;
+ }
+
+ return pbind;
+}
+
+static sdlFunctionPtr make_persistent_sdl_function(sdlFunctionPtr func, HashTable *ptr_map)
+{
+ sdlFunctionPtr pfunc = NULL;
+
+ pfunc = malloc(sizeof(sdlFunction));
+ memset(pfunc, 0, sizeof(sdlFunction));
+
+ *pfunc = *func;
+
+ if (pfunc->functionName) {
+ pfunc->functionName = strdup(pfunc->functionName);
+ }
+ if (pfunc->requestName) {
+ pfunc->requestName = strdup(pfunc->requestName);
+ }
+ if (pfunc->responseName) {
+ pfunc->responseName = strdup(pfunc->responseName);
+ }
+
+ if (pfunc->binding) {
+ sdlBindingPtr *tmp;
+
+ if (zend_hash_find(ptr_map, (char*)&pfunc->binding, sizeof(pfunc->binding), (void**)&tmp) == FAILURE) {
+ assert(0);
+ }
+ pfunc->binding = *tmp;
+
+ if (pfunc->binding->bindingType == BINDING_SOAP && pfunc->bindingAttributes) {
+ sdlSoapBindingFunctionPtr soap_binding;
+
+ soap_binding = malloc(sizeof(sdlSoapBindingFunction));
+ memset(soap_binding, 0, sizeof(sdlSoapBindingFunction));
+ *soap_binding = *(sdlSoapBindingFunctionPtr)pfunc->bindingAttributes;
+ if (soap_binding->soapAction) {
+ soap_binding->soapAction = strdup(soap_binding->soapAction);
+ }
+ make_persistent_sdl_soap_body(&soap_binding->input, ptr_map);
+ make_persistent_sdl_soap_body(&soap_binding->output, ptr_map);
+ pfunc->bindingAttributes = soap_binding;
+ }
+
+ if (pfunc->requestParameters) {
+ pfunc->requestParameters = make_persistent_sdl_parameters(pfunc->requestParameters, ptr_map);
+ }
+ if (pfunc->responseParameters) {
+ pfunc->responseParameters = make_persistent_sdl_parameters(pfunc->responseParameters, ptr_map);
+ }
+ if (pfunc->faults) {
+ pfunc->faults = make_persistent_sdl_function_faults(pfunc, pfunc->faults, ptr_map);
+ }
+ }
+
+ return pfunc;
+}
+
+static sdlPtr make_persistent_sdl(sdlPtr sdl TSRMLS_DC)
+{
+ sdlPtr psdl = NULL;
+ HashTable ptr_map;
+ HashTable bp_types, bp_encoders;
+ ulong index;
+ char *key;
+ uint key_len;
+
+ zend_hash_init(&bp_types, 0, NULL, NULL, 0);
+ zend_hash_init(&bp_encoders, 0, NULL, NULL, 0);
+ zend_hash_init(&ptr_map, 0, NULL, NULL, 0);
+
+ psdl = malloc(sizeof(*sdl));
+ memset(psdl, 0, sizeof(*sdl));
+
+ if (sdl->source) {
+ psdl->source = strdup(sdl->source);
+ }
+ if (sdl->target_ns) {
+ psdl->target_ns = strdup(sdl->target_ns);
+ }
+
+ if (sdl->groups) {
+ sdlTypePtr *tmp;
+ sdlTypePtr ptype;
+
+ psdl->groups = malloc(sizeof(HashTable));
+ zend_hash_init(psdl->groups, zend_hash_num_elements(sdl->groups), NULL, delete_type_persistent, 1);
+
+ zend_hash_internal_pointer_reset(sdl->groups);
+ while (zend_hash_get_current_data(sdl->groups, (void **)&tmp) == SUCCESS) {
+ ptype = make_persistent_sdl_type(*tmp, &ptr_map, &bp_types, &bp_encoders);
+ if (zend_hash_get_current_key_ex(sdl->groups, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) {
+ zend_hash_add(psdl->groups, key, key_len, (void*)&ptype, sizeof(sdlTypePtr), NULL);
+ } else {
+ zend_hash_next_index_insert(psdl->groups, (void*)&ptype, sizeof(sdlTypePtr), NULL);
+ }
+ zend_hash_add(&ptr_map, (char*)tmp, sizeof(*tmp), (void*)&ptype, sizeof(sdlTypePtr), NULL);
+ zend_hash_move_forward(sdl->groups);
+ }
+ }
+
+ if (sdl->types) {
+ sdlTypePtr *tmp;
+ sdlTypePtr ptype;
+
+ psdl->types = malloc(sizeof(HashTable));
+ zend_hash_init(psdl->types, zend_hash_num_elements(sdl->types), NULL, delete_type_persistent, 1);
+
+ zend_hash_internal_pointer_reset(sdl->types);
+ while (zend_hash_get_current_data(sdl->types, (void **)&tmp) == SUCCESS) {
+ ptype = make_persistent_sdl_type(*tmp, &ptr_map, &bp_types, &bp_encoders);
+ if (zend_hash_get_current_key_ex(sdl->types, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) {
+ zend_hash_add(psdl->types, key, key_len, (void*)&ptype, sizeof(sdlTypePtr), NULL);
+ } else {
+ zend_hash_next_index_insert(psdl->types, (void*)&ptype, sizeof(sdlTypePtr), NULL);
+ }
+ zend_hash_add(&ptr_map, (char*)tmp, sizeof(*tmp), (void*)&ptype, sizeof(sdlTypePtr), NULL);
+ zend_hash_move_forward(sdl->types);
+ }
+ }
+
+ if (sdl->elements) {
+ sdlTypePtr *tmp;
+ sdlTypePtr ptype;
+
+ psdl->elements = malloc(sizeof(HashTable));
+ zend_hash_init(psdl->elements, zend_hash_num_elements(sdl->elements), NULL, delete_type_persistent, 1);
+
+ zend_hash_internal_pointer_reset(sdl->elements);
+ while (zend_hash_get_current_data(sdl->elements, (void **)&tmp) == SUCCESS) {
+ ptype = make_persistent_sdl_type(*tmp, &ptr_map, &bp_types, &bp_encoders);
+ if (zend_hash_get_current_key_ex(sdl->elements, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) {
+ zend_hash_add(psdl->elements, key, key_len, (void*)&ptype, sizeof(sdlTypePtr), NULL);
+ } else {
+ zend_hash_next_index_insert(psdl->elements, (void*)&ptype, sizeof(sdlTypePtr), NULL);
+ }
+ zend_hash_add(&ptr_map, (char*)tmp, sizeof(*tmp), (void*)&ptype, sizeof(sdlTypePtr), NULL);
+ zend_hash_move_forward(sdl->elements);
+ }
+ }
+
+ if (sdl->encoders) {
+ encodePtr *tmp;
+ encodePtr penc;
+
+ psdl->encoders = malloc(sizeof(HashTable));
+ zend_hash_init(psdl->encoders, zend_hash_num_elements(sdl->encoders), NULL, delete_encoder_persistent, 1);
+
+ zend_hash_internal_pointer_reset(sdl->encoders);
+ while (zend_hash_get_current_data(sdl->encoders, (void **)&tmp) == SUCCESS) {
+ penc = make_persistent_sdl_encoder(*tmp, &ptr_map, &bp_types, &bp_encoders);
+ if (zend_hash_get_current_key_ex(sdl->encoders, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) {
+ zend_hash_add(psdl->encoders, key, key_len, (void*)&penc, sizeof(encodePtr), NULL);
+ } else {
+ zend_hash_next_index_insert(psdl->encoders, (void*)&penc, sizeof(encodePtr), NULL);
+ }
+ zend_hash_add(&ptr_map, (char*)tmp, sizeof(*tmp), (void*)&penc, sizeof(encodePtr), NULL);
+ zend_hash_move_forward(sdl->encoders);
+ }
+ }
+
+ /* do backpatching here */
+ if (zend_hash_num_elements(&bp_types)) {
+ sdlTypePtr **tmp, *ptype = NULL;
+
+ zend_hash_internal_pointer_reset(&bp_types);
+ while (zend_hash_get_current_data(&bp_types, (void**)&tmp) == SUCCESS) {
+ if (zend_hash_find(&ptr_map, (char*)(*tmp), sizeof(**tmp), (void**)&ptype) == FAILURE) {
+ assert(0);
+ }
+ **tmp = *ptype;
+ zend_hash_move_forward(&bp_types);
+ }
+ }
+ if (zend_hash_num_elements(&bp_encoders)) {
+ encodePtr **tmp, *penc = NULL;
+
+ zend_hash_internal_pointer_reset(&bp_encoders);
+ while (zend_hash_get_current_data(&bp_encoders, (void**)&tmp) == SUCCESS) {
+ if (zend_hash_find(&ptr_map, (char*)(*tmp), sizeof(**tmp), (void**)&penc) == FAILURE) {
+ assert(0);
+ }
+ **tmp = *penc;
+ zend_hash_move_forward(&bp_encoders);
+ }
+ }
+
+
+ if (sdl->bindings) {
+ sdlBindingPtr *tmp;
+ sdlBindingPtr pbind;
+
+ psdl->bindings = malloc(sizeof(HashTable));
+ zend_hash_init(psdl->bindings, zend_hash_num_elements(sdl->bindings), NULL, delete_binding_persistent, 1);
+
+ zend_hash_internal_pointer_reset(sdl->bindings);
+ while (zend_hash_get_current_data(sdl->bindings, (void **)&tmp) == SUCCESS) {
+ pbind = make_persistent_sdl_binding(*tmp, &ptr_map);
+ if (zend_hash_get_current_key_ex(sdl->bindings, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) {
+ zend_hash_add(psdl->bindings, key, key_len, (void*)&pbind, sizeof(sdlBindingPtr), NULL);
+ } else {
+ zend_hash_next_index_insert(psdl->bindings, (void*)&pbind, sizeof(sdlBindingPtr), NULL);
+ }
+ zend_hash_add(&ptr_map, (char*)tmp, sizeof(*tmp), (void*)&pbind, sizeof(sdlBindingPtr), NULL);
+ zend_hash_move_forward(sdl->bindings);
+ }
+ }
+
+ zend_hash_init(&psdl->functions, zend_hash_num_elements(&sdl->functions), NULL, delete_function_persistent, 1);
+ if (zend_hash_num_elements(&sdl->functions)) {
+ sdlFunctionPtr *tmp;
+ sdlFunctionPtr pfunc;
+
+ zend_hash_internal_pointer_reset(&sdl->functions);
+ while (zend_hash_get_current_data(&sdl->functions, (void **)&tmp) == SUCCESS) {
+ pfunc = make_persistent_sdl_function(*tmp, &ptr_map);
+ if (zend_hash_get_current_key_ex(&sdl->functions, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) {
+ zend_hash_add(&psdl->functions, key, key_len, (void*)&pfunc, sizeof(sdlFunctionPtr), NULL);
+ } else {
+ zend_hash_next_index_insert(&psdl->functions, (void*)&pfunc, sizeof(sdlFunctionPtr), NULL);
+ }
+ zend_hash_add(&ptr_map, (char*)tmp, sizeof(*tmp), (void*)&pfunc, sizeof(sdlFunctionPtr), NULL);
+ zend_hash_move_forward(&sdl->functions);
+ }
+ }
+
+ if (sdl->requests) {
+ sdlFunctionPtr *tmp;
+ sdlFunctionPtr *preq;
+
+ psdl->requests = malloc(sizeof(HashTable));
+ zend_hash_init(psdl->requests, zend_hash_num_elements(sdl->requests), NULL, NULL, 1);
+
+ zend_hash_internal_pointer_reset(sdl->requests);
+ while (zend_hash_get_current_data(sdl->requests, (void **)&tmp) == SUCCESS) {
+ if (zend_hash_find(&ptr_map, (char*)tmp, sizeof(*tmp), (void**)&preq) == FAILURE) {
+ assert(0);
+ }
+ *tmp = *preq;
+ if (zend_hash_get_current_key_ex(sdl->requests, &key, &key_len, &index, 0, NULL) == HASH_KEY_IS_STRING) {
+ zend_hash_add(psdl->requests, key, key_len, (void*)&preq, sizeof(sdlFunctionPtr), NULL);
+ }
+ zend_hash_move_forward(sdl->requests);
+ }
+ }
+
+ zend_hash_destroy(&ptr_map);
+ zend_hash_destroy(&bp_encoders);
+ zend_hash_destroy(&bp_types);
+
+ return psdl;
+}
+
+typedef struct _sdl_cache_bucket {
+ sdlPtr sdl;
+ time_t time;
+} sdl_cache_bucket;
+
+static void delete_psdl(void *data)
+{
+ sdl_cache_bucket *p = (sdl_cache_bucket*)data;
+ sdlPtr tmp = p->sdl;
+
+ zend_hash_destroy(&tmp->functions);
+ if (tmp->source) {
+ free(tmp->source);
+ }
+ if (tmp->target_ns) {
+ free(tmp->target_ns);
+ }
+ if (tmp->elements) {
+ zend_hash_destroy(tmp->elements);
+ free(tmp->elements);
+ }
+ if (tmp->encoders) {
+ zend_hash_destroy(tmp->encoders);
+ free(tmp->encoders);
+ }
+ if (tmp->types) {
+ zend_hash_destroy(tmp->types);
+ free(tmp->types);
+ }
+ if (tmp->groups) {
+ zend_hash_destroy(tmp->groups);
+ free(tmp->groups);
+ }
+ if (tmp->bindings) {
+ zend_hash_destroy(tmp->bindings);
+ free(tmp->bindings);
+ }
+ if (tmp->requests) {
+ zend_hash_destroy(tmp->requests);
+ free(tmp->requests);
+ }
+ free(tmp);
+}
+
+sdlPtr get_sdl(zval *this_ptr, char *uri, long cache_wsdl TSRMLS_DC)
+{
+ char fn[MAXPATHLEN];
sdlPtr sdl = NULL;
char* old_error_code = SOAP_GLOBAL(error_code);
- int uri_len;
+ int uri_len = 0;
php_stream_context *context=NULL;
- zval **tmp, **proxy_host, **proxy_port, *orig_context, *new_context;
+ zval **tmp, **proxy_host, **proxy_port, *orig_context = NULL, *new_context = NULL;
smart_str headers = {0};
+ char* key = NULL;
+ time_t t = time(0);
+
+ if (strchr(uri,':') != NULL || IS_ABSOLUTE_PATH(uri, uri_len)) {
+ uri_len = strlen(uri);
+ } else if (VCWD_REALPATH(uri, fn) == NULL) {
+ cache_wsdl = WSDL_CACHE_NONE;
+ } else {
+ uri = fn;
+ uri_len = strlen(uri);
+ }
+
+ if ((cache_wsdl & WSDL_CACHE_MEMORY) && SOAP_GLOBAL(mem_cache)) {
+ sdl_cache_bucket *p;
+
+ if (SUCCESS == zend_hash_find(SOAP_GLOBAL(mem_cache), uri, uri_len+1, (void*)&p)) {
+ if (p->time < t - SOAP_GLOBAL(cache_ttl)) {
+ /* in-memory cache entry is expired */
+ zend_hash_del(&EG(persistent_list), uri, uri_len+1);
+ } else {
+ return p->sdl;
+ }
+ }
+ }
+
+ if ((cache_wsdl & WSDL_CACHE_DISK) && (uri_len < MAXPATHLEN)) {
+ time_t t = time(0);
+ char md5str[33];
+ PHP_MD5_CTX context;
+ unsigned char digest[16];
+ int len = strlen(SOAP_GLOBAL(cache_dir));
+ time_t cached;
+
+ md5str[0] = '\0';
+ PHP_MD5Init(&context);
+ PHP_MD5Update(&context, uri, uri_len);
+ PHP_MD5Final(digest, &context);
+ make_digest(md5str, digest);
+ key = emalloc(len+sizeof("/wsdl-")-1+sizeof(md5str));
+ memcpy(key,SOAP_GLOBAL(cache_dir),len);
+ memcpy(key+len,"/wsdl-",sizeof("/wsdl-")-1);
+ memcpy(key+len+sizeof("/wsdl-")-1,md5str,sizeof(md5str));
+
+ if ((sdl = get_sdl_from_cache(key, uri, t-SOAP_GLOBAL(cache_ttl), &cached TSRMLS_CC)) != NULL) {
+ t = cached;
+ efree(key);
+ goto cache_in_memory;
+ }
+ }
if (SUCCESS == zend_hash_find(Z_OBJPROP_P(this_ptr),
"_stream_context", sizeof("_stream_context"), (void**)&tmp)) {
@@ -2330,42 +3194,9 @@ sdlPtr get_sdl(zval *this_ptr, char *uri TSRMLS_DC)
SOAP_GLOBAL(error_code) = "WSDL";
- if (SOAP_GLOBAL(cache_enabled) && ((uri_len = strlen(uri)) < MAXPATHLEN)) {
- char fn[MAXPATHLEN];
-
- if (strchr(uri,':') != NULL || IS_ABSOLUTE_PATH(uri, uri_len)) {
- strcpy(fn, uri);
- } else if (VCWD_REALPATH(uri, fn) == NULL) {
- sdl = load_wsdl(this_ptr, uri TSRMLS_CC);
- }
- if (sdl == NULL) {
- char* key;
- time_t t = time(0);
- char md5str[33];
- PHP_MD5_CTX context;
- unsigned char digest[16];
- int len = strlen(SOAP_GLOBAL(cache_dir));
-
- md5str[0] = '\0';
- PHP_MD5Init(&context);
- PHP_MD5Update(&context, fn, strlen(fn));
- PHP_MD5Final(digest, &context);
- make_digest(md5str, digest);
- key = emalloc(len+sizeof("/wsdl-")-1+sizeof(md5str));
- memcpy(key,SOAP_GLOBAL(cache_dir),len);
- memcpy(key+len,"/wsdl-",sizeof("/wsdl-")-1);
- memcpy(key+len+sizeof("/wsdl-")-1,md5str,sizeof(md5str));
-
- if ((sdl = get_sdl_from_cache(key, fn, t-SOAP_GLOBAL(cache_ttl))) == NULL) {
- sdl = load_wsdl(this_ptr, fn TSRMLS_CC);
- if (sdl != NULL) {
- add_sdl_to_cache(key, fn, t, sdl);
- }
- }
- efree(key);
- }
- } else {
- sdl = load_wsdl(this_ptr, uri TSRMLS_CC);
+ sdl = load_wsdl(this_ptr, uri TSRMLS_CC);
+ if (sdl) {
+ sdl->is_persistent = 0;
}
SOAP_GLOBAL(error_code) = old_error_code;
@@ -2375,11 +3206,72 @@ sdlPtr get_sdl(zval *this_ptr, char *uri TSRMLS_DC)
zval_ptr_dtor(&new_context);
}
+ if ((cache_wsdl & WSDL_CACHE_DISK) && key) {
+ if (sdl) {
+ add_sdl_to_cache(key, uri, t, sdl TSRMLS_CC);
+ }
+ efree(key);
+ }
+
+cache_in_memory:
+ if (cache_wsdl & WSDL_CACHE_MEMORY) {
+ if (sdl) {
+ sdlPtr psdl;
+ sdl_cache_bucket p;
+
+ if (SOAP_GLOBAL(mem_cache) == NULL) {
+ SOAP_GLOBAL(mem_cache) = malloc(sizeof(HashTable));
+ zend_hash_init(SOAP_GLOBAL(mem_cache), 0, NULL, delete_psdl, 1);
+ } else if (SOAP_GLOBAL(cache_limit) > 0 &&
+ SOAP_GLOBAL(cache_limit) <= zend_hash_num_elements(SOAP_GLOBAL(mem_cache))) {
+ /* in-memory cache overflow */
+ sdl_cache_bucket *q;
+ HashPosition pos;
+ time_t latest = t;
+ char *key = NULL;
+ uint key_len;
+ ulong idx;
+
+ for (zend_hash_internal_pointer_reset_ex(SOAP_GLOBAL(mem_cache), &pos);
+ zend_hash_get_current_data_ex(SOAP_GLOBAL(mem_cache), (void **) &q, &pos) == SUCCESS;
+ zend_hash_move_forward_ex(SOAP_GLOBAL(mem_cache), &pos)) {
+ if (q->time < latest) {
+ latest = q->time;
+ zend_hash_get_current_key_ex(SOAP_GLOBAL(mem_cache), &key, &key_len, &idx, 0, &pos);
+ }
+ }
+ if (key) {
+ zend_hash_del(SOAP_GLOBAL(mem_cache), key, key_len);
+ } else {
+ return sdl;
+ }
+ }
+
+ psdl = make_persistent_sdl(sdl TSRMLS_CC);
+ psdl->is_persistent = 1;
+ p.time = t;
+ p.sdl = psdl;
+
+ if (SUCCESS == zend_hash_update(SOAP_GLOBAL(mem_cache), uri,
+ uri_len+1, (void*)&p, sizeof(sdl_cache_bucket), NULL)) {
+ /* remove non-persitent sdl structure */
+ delete_sdl_impl(sdl);
+ /* and replace it with persistent one */
+ sdl = psdl;
+ } else {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to register persistent entry");
+ /* clean up persistent sdl */
+ delete_psdl(&p);
+ /* keep non-persistent sdl and return it */
+ }
+ }
+ }
+
return sdl;
}
/* Deletes */
-void delete_sdl(void *handle)
+void delete_sdl_impl(void *handle)
{
sdlPtr tmp = (sdlPtr)handle;
@@ -2417,6 +3309,15 @@ void delete_sdl(void *handle)
efree(tmp);
}
+void delete_sdl(void *handle)
+{
+ sdlPtr tmp = (sdlPtr)handle;
+
+ if (!tmp->is_persistent) {
+ delete_sdl_impl(tmp);
+ }
+}
+
static void delete_binding(void *data)
{
sdlBindingPtr binding = *((sdlBindingPtr*)data);
@@ -2437,6 +3338,26 @@ static void delete_binding(void *data)
efree(binding);
}
+static void delete_binding_persistent(void *data)
+{
+ sdlBindingPtr binding = *((sdlBindingPtr*)data);
+
+ if (binding->location) {
+ free(binding->location);
+ }
+ if (binding->name) {
+ free(binding->name);
+ }
+
+ if (binding->bindingType == BINDING_SOAP) {
+ sdlSoapBindingPtr soapBind = binding->bindingAttributes;
+ if (soapBind) {
+ free(soapBind);
+ }
+ }
+ free(binding);
+}
+
static void delete_sdl_soap_binding_function_body(sdlSoapBindingFunctionBody body)
{
if (body.ns) {
@@ -2448,6 +3369,17 @@ static void delete_sdl_soap_binding_function_body(sdlSoapBindingFunctionBody bod
}
}
+static void delete_sdl_soap_binding_function_body_persistent(sdlSoapBindingFunctionBody body)
+{
+ if (body.ns) {
+ free(body.ns);
+ }
+ if (body.headers) {
+ zend_hash_destroy(body.headers);
+ free(body.headers);
+ }
+}
+
static void delete_function(void *data)
{
sdlFunctionPtr function = *((sdlFunctionPtr*)data);
@@ -2487,6 +3419,45 @@ static void delete_function(void *data)
efree(function);
}
+static void delete_function_persistent(void *data)
+{
+ sdlFunctionPtr function = *((sdlFunctionPtr*)data);
+
+ if (function->functionName) {
+ free(function->functionName);
+ }
+ if (function->requestName) {
+ free(function->requestName);
+ }
+ if (function->responseName) {
+ free(function->responseName);
+ }
+ if (function->requestParameters) {
+ zend_hash_destroy(function->requestParameters);
+ free(function->requestParameters);
+ }
+ if (function->responseParameters) {
+ zend_hash_destroy(function->responseParameters);
+ free(function->responseParameters);
+ }
+ if (function->faults) {
+ zend_hash_destroy(function->faults);
+ free(function->faults);
+ }
+
+ if (function->bindingAttributes &&
+ function->binding && function->binding->bindingType == BINDING_SOAP) {
+ sdlSoapBindingFunctionPtr soapFunction = function->bindingAttributes;
+ if (soapFunction->soapAction) {
+ free(soapFunction->soapAction);
+ }
+ delete_sdl_soap_binding_function_body_persistent(soapFunction->input);
+ delete_sdl_soap_binding_function_body_persistent(soapFunction->output);
+ free(soapFunction);
+ }
+ free(function);
+}
+
static void delete_parameter(void *data)
{
sdlParamPtr param = *((sdlParamPtr*)data);
@@ -2496,6 +3467,15 @@ static void delete_parameter(void *data)
efree(param);
}
+static void delete_parameter_persistent(void *data)
+{
+ sdlParamPtr param = *((sdlParamPtr*)data);
+ if (param->paramName) {
+ free(param->paramName);
+ }
+ free(param);
+}
+
static void delete_header(void *data)
{
sdlSoapBindingFunctionHeaderPtr hdr = *((sdlSoapBindingFunctionHeaderPtr*)data);
@@ -2512,6 +3492,22 @@ static void delete_header(void *data)
efree(hdr);
}
+static void delete_header_persistent(void *data)
+{
+ sdlSoapBindingFunctionHeaderPtr hdr = *((sdlSoapBindingFunctionHeaderPtr*)data);
+ if (hdr->name) {
+ free(hdr->name);
+ }
+ if (hdr->ns) {
+ free(hdr->ns);
+ }
+ if (hdr->headerfaults) {
+ zend_hash_destroy(hdr->headerfaults);
+ free(hdr->headerfaults);
+ }
+ free(hdr);
+}
+
static void delete_fault(void *data)
{
sdlFaultPtr fault = *((sdlFaultPtr*)data);
@@ -2533,8 +3529,30 @@ static void delete_fault(void *data)
efree(fault);
}
+static void delete_fault_persistent(void *data)
+{
+ sdlFaultPtr fault = *((sdlFaultPtr*)data);
+ if (fault->name) {
+ free(fault->name);
+ }
+ if (fault->details) {
+ zend_hash_destroy(fault->details);
+ free(fault->details);
+ }
+ if (fault->bindingAttributes) {
+ sdlSoapBindingFunctionFaultPtr binding = (sdlSoapBindingFunctionFaultPtr)fault->bindingAttributes;
+
+ if (binding->ns) {
+ free(binding->ns);
+ }
+ free(fault->bindingAttributes);
+ }
+ free(fault);
+}
+
static void delete_document(void *doc_ptr)
{
xmlDocPtr doc = *((xmlDocPtr*)doc_ptr);
xmlFreeDoc(doc);
}
+
diff --git a/ext/soap/php_sdl.h b/ext/soap/php_sdl.h
index 155f819d6..2d615e7cf 100644
--- a/ext/soap/php_sdl.h
+++ b/ext/soap/php_sdl.h
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_sdl.h,v 1.37.2.1 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: php_sdl.h,v 1.37.2.3 2006/04/19 10:48:54 dmitry Exp $ */
#ifndef PHP_SDL_H
#define PHP_SDL_H
@@ -61,6 +61,7 @@ struct _sdl {
HashTable *groups; /* array of sdlTypesPtr */
char *target_ns;
char *source;
+ zend_bool is_persistent;
};
typedef struct sdlCtx {
@@ -250,7 +251,8 @@ struct _sdlAttribute {
encodePtr encode;
};
-sdlPtr get_sdl(zval *this_ptr, char *uri TSRMLS_DC);
+
+sdlPtr get_sdl(zval *this_ptr, char *uri, long cache_wsdl TSRMLS_DC);
encodePtr get_encoder_from_prefix(sdlPtr sdl, xmlNodePtr data, const char *type);
encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *type);
@@ -260,5 +262,6 @@ sdlBindingPtr get_binding_from_type(sdlPtr sdl, int type);
sdlBindingPtr get_binding_from_name(sdlPtr sdl, char *name, char *ns);
void delete_sdl(void *handle);
+void delete_sdl_impl(void *handle);
#endif
diff --git a/ext/soap/php_soap.h b/ext/soap/php_soap.h
index 4a521569f..f652ef094 100644
--- a/ext/soap/php_soap.h
+++ b/ext/soap/php_soap.h
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_soap.h,v 1.38.2.1 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: php_soap.h,v 1.38.2.6 2006/04/19 10:48:54 dmitry Exp $ */
#ifndef PHP_SOAP_H
#define PHP_SOAP_H
@@ -97,6 +97,8 @@ struct _soapMapping {
} map_class;
};
+struct _soapHeader;
+
struct _soapService {
sdlPtr sdl;
@@ -119,6 +121,8 @@ struct _soapService {
char *uri;
xmlCharEncodingHandlerPtr encoding;
HashTable *class_map;
+ int features;
+ struct _soapHeader **soap_headers_ptr;
};
#define SOAP_CLASS 1
@@ -151,6 +155,14 @@ struct _soapService {
#define SOAP_AUTHENTICATION_BASIC 0
#define SOAP_AUTHENTICATION_DIGEST 1
+#define SOAP_SINGLE_ELEMENT_ARRAYS (1<<0)
+#define SOAP_WAIT_ONE_WAY_CALLS (2<<0)
+
+#define WSDL_CACHE_NONE 0x0
+#define WSDL_CACHE_DISK 0x1
+#define WSDL_CACHE_MEMORY 0x2
+#define WSDL_CACHE_BOTH 0x3
+
ZEND_BEGIN_MODULE_GLOBALS(soap)
HashTable defEncNs; /* mapping of default namespaces to prefixes */
HashTable defEnc;
@@ -162,11 +174,15 @@ ZEND_BEGIN_MODULE_GLOBALS(soap)
zend_bool use_soap_error_handler;
char* error_code;
zval* error_object;
- zend_bool cache_enabled;
+ long cache;
char* cache_dir;
long cache_ttl;
+ long cache_limit;
+ HashTable *mem_cache;
xmlCharEncodingHandlerPtr encoding;
HashTable *class_map;
+ int features;
+ HashTable wsdl_cache;
ZEND_END_MODULE_GLOBALS(soap)
#ifdef PHP_WIN32
diff --git a/ext/soap/soap.c b/ext/soap/soap.c
index b812c14e1..1cae27a54 100644
--- a/ext/soap/soap.c
+++ b/ext/soap/soap.c
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: soap.c,v 1.156.2.11 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: soap.c,v 1.156.2.29 2006/05/25 08:14:50 dmitry Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -244,6 +244,7 @@ PHP_METHOD(SoapServer, getFunctions);
PHP_METHOD(SoapServer, handle);
PHP_METHOD(SoapServer, setPersistence);
PHP_METHOD(SoapServer, fault);
+PHP_METHOD(SoapServer, addSoapHeader);
#ifdef HAVE_PHP_DOMXML
PHP_METHOD(PHP_SOAP_SERVER_CLASS, map);
#endif
@@ -309,6 +310,7 @@ static zend_function_entry soap_server_functions[] = {
PHP_ME(SoapServer, getFunctions, NULL, 0)
PHP_ME(SoapServer, handle, NULL, 0)
PHP_ME(SoapServer, fault, NULL, 0)
+ PHP_ME(SoapServer, addSoapHeader, NULL, 0)
#ifdef HAVE_PHP_DOMXML
PHP_ME(SoapServer, map, NULL, 0)
#endif
@@ -389,18 +391,49 @@ zend_module_entry soap_module_entry = {
ZEND_GET_MODULE(soap)
#endif
+#ifndef ZEND_ENGINE_2
+# define OnUpdateLong OnUpdateInt
+#endif
+
+ZEND_INI_MH(OnUpdateCacheEnabled)
+{
+ long *p;
+#ifndef ZTS
+ char *base = (char *) mh_arg2;
+#else
+ char *base;
+
+ base = (char *) ts_resource(*((int *) mh_arg2));
+#endif
+
+ p = (long*) (base+(size_t) mh_arg1);
+
+ if (new_value_length==2 && strcasecmp("on", new_value)==0) {
+ *p = 1;
+ }
+ else if (new_value_length==3 && strcasecmp("yes", new_value)==0) {
+ *p = 1;
+ }
+ else if (new_value_length==4 && strcasecmp("true", new_value)==0) {
+ *p = 1;
+ }
+ else {
+ *p = (long) (atoi(new_value) != 0);
+ }
+ return SUCCESS;
+}
+
PHP_INI_BEGIN()
-STD_PHP_INI_ENTRY("soap.wsdl_cache_enabled", "1", PHP_INI_ALL, OnUpdateBool,
- cache_enabled, zend_soap_globals, soap_globals)
+STD_PHP_INI_ENTRY("soap.wsdl_cache_enabled", "1", PHP_INI_ALL, OnUpdateCacheEnabled,
+ cache, zend_soap_globals, soap_globals)
STD_PHP_INI_ENTRY("soap.wsdl_cache_dir", "/tmp", PHP_INI_ALL, OnUpdateString,
cache_dir, zend_soap_globals, soap_globals)
-#ifdef ZEND_ENGINE_2
STD_PHP_INI_ENTRY("soap.wsdl_cache_ttl", "86400", PHP_INI_ALL, OnUpdateLong,
cache_ttl, zend_soap_globals, soap_globals)
-#else
-STD_PHP_INI_ENTRY("soap.wsdl_cache_ttl", "86400", PHP_INI_ALL, OnUpdateInt,
- cache_ttl, zend_soap_globals, soap_globals)
-#endif
+STD_PHP_INI_ENTRY("soap.wsdl_cache", "1", PHP_INI_ALL, OnUpdateLong,
+ cache, zend_soap_globals, soap_globals)
+STD_PHP_INI_ENTRY("soap.wsdl_cache_limit", "5", PHP_INI_ALL, OnUpdateLong,
+ cache_limit, zend_soap_globals, soap_globals)
PHP_INI_END()
static HashTable defEnc, defEncIndex, defEncNs;
@@ -457,6 +490,7 @@ static void php_soap_init_globals(zend_soap_globals *soap_globals TSRMLS_DC)
soap_globals->error_object = NULL;
soap_globals->sdl = NULL;
soap_globals->soap_version = SOAP_1_1;
+ soap_globals->mem_cache = NULL;
}
PHP_MSHUTDOWN_FUNCTION(soap)
@@ -465,6 +499,10 @@ PHP_MSHUTDOWN_FUNCTION(soap)
zend_hash_destroy(&SOAP_GLOBAL(defEnc));
zend_hash_destroy(&SOAP_GLOBAL(defEncIndex));
zend_hash_destroy(&SOAP_GLOBAL(defEncNs));
+ if (SOAP_GLOBAL(mem_cache)) {
+ zend_hash_destroy(SOAP_GLOBAL(mem_cache));
+ free(SOAP_GLOBAL(mem_cache));
+ }
UNREGISTER_INI_ENTRIES();
return SUCCESS;
}
@@ -479,6 +517,7 @@ PHP_RINIT_FUNCTION(soap)
SOAP_GLOBAL(soap_version) = SOAP_1_1;
SOAP_GLOBAL(encoding) = NULL;
SOAP_GLOBAL(class_map) = NULL;
+ SOAP_GLOBAL(features) = 0;
return SUCCESS;
}
@@ -489,7 +528,7 @@ PHP_MINIT_FUNCTION(soap)
/* TODO: add ini entry for always use soap errors */
php_soap_prepare_globals();
ZEND_INIT_MODULE_GLOBALS(soap, php_soap_init_globals, NULL);
- REGISTER_INI_ENTRIES();
+ REGISTER_INI_ENTRIES();
#ifndef ZEND_ENGINE_2
/* Enable php stream/wrapper support for libxml */
@@ -633,6 +672,14 @@ PHP_MINIT_FUNCTION(soap)
REGISTER_STRING_CONSTANT("XSD_NAMESPACE", XSD_NAMESPACE, CONST_CS | CONST_PERSISTENT);
REGISTER_STRING_CONSTANT("XSD_1999_NAMESPACE", XSD_1999_NAMESPACE, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("SOAP_SINGLE_ELEMENT_ARRAYS", SOAP_SINGLE_ELEMENT_ARRAYS, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("SOAP_WAIT_ONE_WAY_CALLS", SOAP_WAIT_ONE_WAY_CALLS, CONST_CS | CONST_PERSISTENT);
+
+ REGISTER_LONG_CONSTANT("WSDL_CACHE_NONE", WSDL_CACHE_NONE, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("WSDL_CACHE_DISK", WSDL_CACHE_DISK, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("WSDL_CACHE_MEMORY", WSDL_CACHE_MEMORY, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("WSDL_CACHE_BOTH", WSDL_CACHE_BOTH, CONST_CS | CONST_PERSISTENT);
+
old_error_handler = zend_error_cb;
zend_error_cb = soap_error_handler;
@@ -755,7 +802,7 @@ PHP_METHOD(SoapHeader, SoapHeader)
PHP_METHOD(SoapFault, SoapFault)
{
char *fault_string = NULL, *fault_code = NULL, *fault_actor = NULL, *name = NULL, *fault_code_ns = NULL;
- int fault_string_len, fault_code_len, fault_actor_len, name_len;
+ int fault_string_len, fault_actor_len, name_len, fault_code_len = 0;
zval *code = NULL, *details = NULL, *headerfault = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zs|s!z!s!z",
@@ -812,6 +859,10 @@ PHP_METHOD(SoapFault, __toString)
zend_fcall_info fci;
zval fname;
+ if (ZEND_NUM_ARGS() > 0) {
+ ZEND_WRONG_PARAM_COUNT();
+ }
+
faultcode = zend_read_property(soap_fault_class_entry, this_ptr, "faultcode", sizeof("faultcode")-1, 1 TSRMLS_CC);
faultstring = zend_read_property(soap_fault_class_entry, this_ptr, "faultstring", sizeof("faultstring")-1, 1 TSRMLS_CC);
file = zend_read_property(soap_fault_class_entry, this_ptr, "file", sizeof("file")-1, 1 TSRMLS_CC);
@@ -895,6 +946,7 @@ PHP_METHOD(SoapServer, SoapServer)
zval *wsdl, *options = NULL;
int ret;
int version = SOAP_1_1;
+ long cache_wsdl;
SOAP_SERVER_BEGIN_CODE();
@@ -912,6 +964,8 @@ PHP_METHOD(SoapServer, SoapServer)
service = emalloc(sizeof(soapService));
memset(service, 0, sizeof(soapService));
+ cache_wsdl = SOAP_GLOBAL(cache);
+
if (options != NULL) {
HashTable *ht = Z_ARRVAL_P(options);
zval **tmp;
@@ -957,6 +1011,16 @@ PHP_METHOD(SoapServer, SoapServer)
zend_hash_copy(service->class_map, (*tmp)->value.ht, (copy_ctor_func_t) zval_add_ref, (void *) &ztmp, sizeof(zval *));
}
+ if (zend_hash_find(ht, "features", sizeof("features"), (void**)&tmp) == SUCCESS &&
+ Z_TYPE_PP(tmp) == IS_LONG) {
+ service->features = Z_LVAL_PP(tmp);
+ }
+
+ if (zend_hash_find(ht, "cache_wsdl", sizeof("cache_wsdl"), (void**)&tmp) == SUCCESS &&
+ Z_TYPE_PP(tmp) == IS_LONG) {
+ cache_wsdl = Z_LVAL_PP(tmp);
+ }
+
} else if (wsdl == NULL) {
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Invalid arguments. 'uri' option is required in nonWSDL mode.");
}
@@ -968,7 +1032,7 @@ PHP_METHOD(SoapServer, SoapServer)
zend_hash_init(service->soap_functions.ft, 0, NULL, ZVAL_PTR_DTOR, 0);
if (wsdl) {
- service->sdl = get_sdl(this_ptr, Z_STRVAL_P(wsdl) TSRMLS_CC);
+ service->sdl = get_sdl(this_ptr, Z_STRVAL_P(wsdl), cache_wsdl TSRMLS_CC);
if (service->uri == NULL) {
if (service->sdl->target_ns) {
service->uri = estrdup(service->sdl->target_ns);
@@ -1347,17 +1411,18 @@ PHP_METHOD(SoapServer, handle)
sdlPtr old_sdl = NULL;
soapServicePtr service;
xmlDocPtr doc_request=NULL, doc_return;
- zval function_name, **params, **raw_post, *soap_obj, retval, **server_vars;
+ zval function_name, **params, **raw_post, *soap_obj, retval;
char *fn_name, cont_len[30];
int num_params = 0, size, i, call_status = 0;
xmlChar *buf;
HashTable *function_table;
- soapHeader *soap_headers;
+ soapHeader *soap_headers = NULL;
sdlFunctionPtr function;
char *arg = NULL;
int arg_len;
xmlCharEncodingHandlerPtr old_encoding;
HashTable *old_class_map;
+ int old_features;
SOAP_SERVER_BEGIN_CODE();
@@ -1368,54 +1433,51 @@ PHP_METHOD(SoapServer, handle)
}
INIT_ZVAL(retval);
- if (zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **)&server_vars) == SUCCESS) {
- zval **req_method, **query_string;
- if (zend_hash_find(Z_ARRVAL_PP(server_vars), "REQUEST_METHOD", sizeof("REQUEST_METHOD"), (void **)&req_method) == SUCCESS) {
- if (!strcmp(Z_STRVAL_PP(req_method), "GET") && zend_hash_find(Z_ARRVAL_PP(server_vars), "QUERY_STRING", sizeof("QUERY_STRING"), (void **)&query_string) == SUCCESS) {
- if (stricmp(Z_STRVAL_PP(query_string), "wsdl") == 0) {
- if (service->sdl) {
+ if (SG(request_info).request_method &&
+ strcmp(SG(request_info).request_method, "GET") == 0 &&
+ SG(request_info).query_string &&
+ stricmp(SG(request_info).query_string, "wsdl") == 0) {
+
+ if (service->sdl) {
/*
- char *hdr = emalloc(sizeof("Location: ")+strlen(service->sdl->source));
- strcpy(hdr,"Location: ");
- strcat(hdr,service->sdl->source);
- sapi_add_header(hdr, sizeof("Location: ")+strlen(service->sdl->source)-1, 1);
- efree(hdr);
+ char *hdr = emalloc(sizeof("Location: ")+strlen(service->sdl->source));
+ strcpy(hdr,"Location: ");
+ strcat(hdr,service->sdl->source);
+ sapi_add_header(hdr, sizeof("Location: ")+strlen(service->sdl->source)-1, 1);
+ efree(hdr);
*/
- zval readfile, readfile_ret, *param;
+ zval readfile, readfile_ret, *param;
- INIT_ZVAL(readfile);
- INIT_ZVAL(readfile_ret);
- MAKE_STD_ZVAL(param);
+ INIT_ZVAL(readfile);
+ INIT_ZVAL(readfile_ret);
+ MAKE_STD_ZVAL(param);
- sapi_add_header("Content-Type: text/xml; charset=utf-8", sizeof("Content-Type: text/xml; charset=utf-8")-1, 1);
- ZVAL_STRING(param, service->sdl->source, 1);
- ZVAL_STRING(&readfile, "readfile", 1);
- if (call_user_function(EG(function_table), NULL, &readfile, &readfile_ret, 1, &param TSRMLS_CC) == FAILURE) {
- soap_server_fault("Server", "Couldn't find WSDL", NULL, NULL, NULL TSRMLS_CC);
- }
+ sapi_add_header("Content-Type: text/xml; charset=utf-8", sizeof("Content-Type: text/xml; charset=utf-8")-1, 1);
+ ZVAL_STRING(param, service->sdl->source, 1);
+ ZVAL_STRING(&readfile, "readfile", 1);
+ if (call_user_function(EG(function_table), NULL, &readfile, &readfile_ret, 1, &param TSRMLS_CC) == FAILURE) {
+ soap_server_fault("Server", "Couldn't find WSDL", NULL, NULL, NULL TSRMLS_CC);
+ }
- zval_ptr_dtor(&param);
- zval_dtor(&readfile);
- zval_dtor(&readfile_ret);
+ zval_ptr_dtor(&param);
+ zval_dtor(&readfile);
+ zval_dtor(&readfile_ret);
- SOAP_SERVER_END_CODE();
- return;
- } else {
- soap_server_fault("Server", "WSDL generation is not supported yet", NULL, NULL, NULL TSRMLS_CC);
+ SOAP_SERVER_END_CODE();
+ return;
+ } else {
+ soap_server_fault("Server", "WSDL generation is not supported yet", NULL, NULL, NULL TSRMLS_CC);
/*
- sapi_add_header("Content-Type: text/xml; charset=utf-8", sizeof("Content-Type: text/xml; charset=utf-8"), 1);
- PUTS("<?xml version=\"1.0\" ?>\n<definitions\n");
- PUTS(" xmlns=\"http://schemas.xmlsoap.org/wsdl/\"\n");
- PUTS(" targetNamespace=\"");
- PUTS(service->uri);
- PUTS("\">\n");
- PUTS("</definitions>");
+ sapi_add_header("Content-Type: text/xml; charset=utf-8", sizeof("Content-Type: text/xml; charset=utf-8"), 1);
+ PUTS("<?xml version=\"1.0\" ?>\n<definitions\n");
+ PUTS(" xmlns=\"http://schemas.xmlsoap.org/wsdl/\"\n");
+ PUTS(" targetNamespace=\"");
+ PUTS(service->uri);
+ PUTS("\">\n");
+ PUTS("</definitions>");
*/
- SOAP_SERVER_END_CODE();
- return;
- }
- }
- }
+ SOAP_SERVER_END_CODE();
+ return;
}
}
@@ -1428,6 +1490,7 @@ PHP_METHOD(SoapServer, handle)
&& ((*raw_post)->type==IS_STRING)) {
zval **server_vars, **encoding;
+ zend_is_auto_global("_SERVER", sizeof("_SERVER")-1 TSRMLS_CC);
if (zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **) &server_vars) == SUCCESS &&
Z_TYPE_PP(server_vars) == IS_ARRAY &&
zend_hash_find(Z_ARRVAL_PP(server_vars), "HTTP_CONTENT_ENCODING", sizeof("HTTP_CONTENT_ENCODING"), (void **) &encoding)==SUCCESS &&
@@ -1464,14 +1527,10 @@ PHP_METHOD(SoapServer, handle)
doc_request = soap_xmlParseMemory(Z_STRVAL_PP(raw_post),Z_STRLEN_PP(raw_post));
}
} else {
- if (zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **)&server_vars) == SUCCESS) {
- zval **req_method;
- if (zend_hash_find(Z_ARRVAL_PP(server_vars), "REQUEST_METHOD", sizeof("REQUEST_METHOD"), (void **)&req_method) == SUCCESS) {
- if (!strcmp(Z_STRVAL_PP(req_method), "POST")) {
- if (!zend_ini_long("always_populate_raw_post_data", sizeof("always_populate_raw_post_data"), 0)) {
- php_error_docref(NULL TSRMLS_CC, E_ERROR, "PHP-SOAP requires 'always_populate_raw_post_data' to be on please check your php.ini file");
- }
- }
+ if (SG(request_info).request_method &&
+ strcmp(SG(request_info).request_method, "POST") == 0) {
+ if (!zend_ini_long("always_populate_raw_post_data", sizeof("always_populate_raw_post_data"), 0)) {
+ php_error_docref(NULL TSRMLS_CC, E_ERROR, "PHP-SOAP requires 'always_populate_raw_post_data' to be on please check your php.ini file");
}
}
soap_server_fault("Server", "Bad Request. Can't find HTTP_RAW_POST_DATA", NULL, NULL, NULL TSRMLS_CC);
@@ -1503,12 +1562,16 @@ PHP_METHOD(SoapServer, handle)
SOAP_GLOBAL(encoding) = service->encoding;
old_class_map = SOAP_GLOBAL(class_map);
SOAP_GLOBAL(class_map) = service->class_map;
+ old_features = SOAP_GLOBAL(features);
+ SOAP_GLOBAL(features) = service->features;
old_soap_version = SOAP_GLOBAL(soap_version);
function = deserialize_function_call(service->sdl, doc_request, service->actor, &function_name, &num_params, &params, &soap_version, &soap_headers TSRMLS_CC);
xmlFreeDoc(doc_request);
+
+ service->soap_headers_ptr = &soap_headers;
+ soap_obj = NULL;
if (service->type == SOAP_CLASS) {
- soap_obj = NULL;
#if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION)
/* If persistent then set soap_obj from from the previous created session (if available) */
if (service->soap_class.persistance == SOAP_PERSISTENCE_SESSION) {
@@ -1547,16 +1610,15 @@ PHP_METHOD(SoapServer, handle)
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Error calling constructor");
}
if (EG(exception)) {
+ php_end_ob_buffer(0, 0 TSRMLS_CC);
if (Z_TYPE_P(EG(exception)) == IS_OBJECT &&
instanceof_function(Z_OBJCE_P(EG(exception)), soap_fault_class_entry TSRMLS_CC)) {
- soap_server_fault_ex(function, EG(exception), NULL TSRMLS_CC);
- } else {
- zval_dtor(&constructor);
- zval_dtor(&c_ret);
- zval_ptr_dtor(&tmp_soap);
- php_end_ob_buffer(0, 0 TSRMLS_CC);
- goto fail;
+ soap_server_fault_ex(function, EG(exception), NULL TSRMLS_CC);
}
+ zval_dtor(&constructor);
+ zval_dtor(&c_ret);
+ zval_ptr_dtor(&tmp_soap);
+ goto fail;
}
zval_dtor(&constructor);
zval_dtor(&c_ret);
@@ -1580,17 +1642,16 @@ PHP_METHOD(SoapServer, handle)
}
#ifdef ZEND_ENGINE_2
if (EG(exception)) {
+ php_end_ob_buffer(0, 0 TSRMLS_CC);
if (Z_TYPE_P(EG(exception)) == IS_OBJECT &&
instanceof_function(Z_OBJCE_P(EG(exception)), soap_fault_class_entry TSRMLS_CC)) {
soap_server_fault_ex(function, EG(exception), NULL TSRMLS_CC);
- } else {
- zval_dtor(&constructor);
- zval_dtor(&c_ret);
- efree(class_name);
- zval_ptr_dtor(&tmp_soap);
- php_end_ob_buffer(0, 0 TSRMLS_CC);
- goto fail;
}
+ zval_dtor(&constructor);
+ zval_dtor(&c_ret);
+ efree(class_name);
+ zval_ptr_dtor(&tmp_soap);
+ goto fail;
}
#endif
zval_dtor(&constructor);
@@ -1641,7 +1702,9 @@ PHP_METHOD(SoapServer, handle)
}
fn_name = estrndup(Z_STRVAL(h->function_name),Z_STRLEN(h->function_name));
- if (zend_hash_exists(function_table, php_strtolower(fn_name, Z_STRLEN(h->function_name)), Z_STRLEN(h->function_name) + 1)) {
+ if (zend_hash_exists(function_table, php_strtolower(fn_name, Z_STRLEN(h->function_name)), Z_STRLEN(h->function_name) + 1) ||
+ (service->type == SOAP_CLASS &&
+ zend_hash_exists(function_table, ZEND_CALL_FUNC_NAME, sizeof(ZEND_CALL_FUNC_NAME)))) {
if (service->type == SOAP_CLASS) {
call_status = call_user_function(NULL, &soap_obj, &h->function_name, &h->retval, h->num_params, h->parameters TSRMLS_CC);
} else {
@@ -1652,30 +1715,33 @@ PHP_METHOD(SoapServer, handle)
}
if (Z_TYPE(h->retval) == IS_OBJECT &&
instanceof_function(Z_OBJCE(h->retval), soap_fault_class_entry TSRMLS_CC)) {
- zval *headerfault = NULL, **tmp;
+ zval *headerfault = NULL, **tmp;
if (zend_hash_find(Z_OBJPROP(h->retval), "headerfault", sizeof("headerfault"), (void**)&tmp) == SUCCESS &&
Z_TYPE_PP(tmp) != IS_NULL) {
headerfault = *tmp;
}
+ php_end_ob_buffer(0, 0 TSRMLS_CC);
soap_server_fault_ex(function, &h->retval, h TSRMLS_CC);
+ efree(fn_name);
+ if (soap_obj) {zval_ptr_dtor(&soap_obj);}
+ goto fail;
#ifdef ZEND_ENGINE_2
} else if (EG(exception)) {
+ php_end_ob_buffer(0, 0 TSRMLS_CC);
if (Z_TYPE_P(EG(exception)) == IS_OBJECT &&
instanceof_function(Z_OBJCE_P(EG(exception)), soap_fault_class_entry TSRMLS_CC)) {
- zval *headerfault = NULL, **tmp;
+ zval *headerfault = NULL, **tmp;
if (zend_hash_find(Z_OBJPROP_P(EG(exception)), "headerfault", sizeof("headerfault"), (void**)&tmp) == SUCCESS &&
Z_TYPE_PP(tmp) != IS_NULL) {
headerfault = *tmp;
}
soap_server_fault_ex(function, EG(exception), h TSRMLS_CC);
- } else {
+ }
efree(fn_name);
if (soap_obj) {zval_ptr_dtor(&soap_obj);}
- php_end_ob_buffer(0, 0 TSRMLS_CC);
goto fail;
- }
#endif
}
} else if (h->mustUnderstand) {
@@ -1708,14 +1774,19 @@ PHP_METHOD(SoapServer, handle)
#ifdef ZEND_ENGINE_2
if (EG(exception)) {
+ php_end_ob_buffer(0, 0 TSRMLS_CC);
if (Z_TYPE_P(EG(exception)) == IS_OBJECT &&
instanceof_function(Z_OBJCE_P(EG(exception)), soap_fault_class_entry TSRMLS_CC)) {
soap_server_fault_ex(function, EG(exception), NULL TSRMLS_CC);
- } else {
- if (soap_obj) {zval_ptr_dtor(&soap_obj);}
- php_end_ob_buffer(0, 0 TSRMLS_CC);
- goto fail;
}
+#if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION)
+ if (soap_obj && service->soap_class.persistance != SOAP_PERSISTENCE_SESSION) {
+#else
+ if (soap_obj) {
+#endif
+ zval_ptr_dtor(&soap_obj);
+ }
+ goto fail;
}
#endif
if (call_status == SUCCESS) {
@@ -1723,7 +1794,9 @@ PHP_METHOD(SoapServer, handle)
if (Z_TYPE(retval) == IS_OBJECT &&
instanceof_function(Z_OBJCE(retval), soap_fault_class_entry TSRMLS_CC)) {
+ php_end_ob_buffer(0, 0 TSRMLS_CC);
soap_server_fault_ex(function, &retval, NULL TSRMLS_CC);
+ goto fail;
}
if (function && function->responseName) {
@@ -1773,6 +1846,7 @@ fail:
SOAP_GLOBAL(encoding) = old_encoding;
SOAP_GLOBAL(sdl) = old_sdl;
SOAP_GLOBAL(class_map) = old_class_map;
+ SOAP_GLOBAL(features) = old_features;
/* Free soap headers */
zval_dtor(&retval);
@@ -1781,15 +1855,18 @@ fail:
int i;
soap_headers = soap_headers->next;
- i = h->num_params;
- while (i > 0) {
- zval_ptr_dtor(&h->parameters[--i]);
+ if (h->parameters) {
+ i = h->num_params;
+ while (i > 0) {
+ zval_ptr_dtor(&h->parameters[--i]);
+ }
+ efree(h->parameters);
}
- efree(h->parameters);
zval_dtor(&h->function_name);
zval_dtor(&h->retval);
efree(h);
}
+ service->soap_headers_ptr = NULL;
/* Free Memory */
if (num_params > 0) {
@@ -1826,6 +1903,37 @@ PHP_METHOD(SoapServer, fault)
}
/* }}} */
+PHP_METHOD(SoapServer, addSoapHeader)
+{
+ soapServicePtr service;
+ zval *fault;
+ soapHeader **p;
+
+ SOAP_SERVER_BEGIN_CODE();
+
+ FETCH_THIS_SERVICE(service);
+
+ if (!service || !service->soap_headers_ptr) {
+ php_error_docref(NULL TSRMLS_CC, E_ERROR, "The SoapServer::addSoapHeader function may be called only during SOAP request processing");
+ }
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &fault, soap_header_class_entry) == FAILURE) {
+ php_error_docref(NULL TSRMLS_CC, E_ERROR, "Invalid parameters");
+ }
+
+ p = service->soap_headers_ptr;
+ while (*p != NULL) {
+ p = &(*p)->next;
+ }
+ *p = emalloc(sizeof(soapHeader));
+ memset(*p, 0, sizeof(soapHeader));
+ ZVAL_NULL(&(*p)->function_name);
+ (*p)->retval = *fault;
+ zval_copy_ctor(&(*p)->retval);
+
+ SOAP_SERVER_END_CODE();
+}
+
static void soap_server_fault_ex(sdlFunctionPtr function, zval* fault, soapHeader *hdr TSRMLS_DC)
{
int soap_version;
@@ -1856,7 +1964,6 @@ static void soap_server_fault_ex(sdlFunctionPtr function, zval* fault, soapHeade
xmlFreeDoc(doc_return);
xmlFree(buf);
zend_clear_exception(TSRMLS_C);
- zend_bailout();
}
static void soap_server_fault(char* code, char* string, char *actor, zval* details, char* name TSRMLS_DC)
@@ -1868,6 +1975,7 @@ static void soap_server_fault(char* code, char* string, char *actor, zval* detai
set_soap_fault(&ret, NULL, code, string, actor, details, name TSRMLS_CC);
/* TODO: Which function */
soap_server_fault_ex(NULL, &ret, NULL TSRMLS_CC);
+ zend_bailout();
}
static void soap_error_handler(int error_num, const char *error_filename, const uint error_lineno, const char *format, va_list args)
@@ -2005,6 +2113,7 @@ static void soap_error_handler(int error_num, const char *error_filename, const
if (fault) {
soap_server_fault_ex(NULL, &fault_obj, NULL TSRMLS_CC);
+ zend_bailout();
}
}
}
@@ -2042,6 +2151,7 @@ PHP_METHOD(SoapClient, SoapClient)
zval *options = NULL;
int soap_version = SOAP_1_1;
php_stream_context *context = NULL;
+ long cache_wsdl;
SOAP_CLIENT_BEGIN_CODE();
@@ -2057,6 +2167,9 @@ PHP_METHOD(SoapClient, SoapClient)
} else {
wsdl = NULL;
}
+
+ cache_wsdl = SOAP_GLOBAL(cache);
+
if (options != NULL) {
HashTable *ht = Z_ARRVAL_P(options);
zval **tmp;
@@ -2182,6 +2295,7 @@ PHP_METHOD(SoapClient, SoapClient)
MAKE_STD_ZVAL(class_map);
*class_map = **tmp;
+ INIT_PZVAL(class_map);
zval_copy_ctor(class_map);
#ifdef ZEND_ENGINE_2
class_map->refcount--;
@@ -2189,6 +2303,11 @@ PHP_METHOD(SoapClient, SoapClient)
add_property_zval(this_ptr, "_classmap", class_map);
}
+ if (zend_hash_find(ht, "features", sizeof("features"), (void**)&tmp) == SUCCESS &&
+ Z_TYPE_PP(tmp) == IS_LONG) {
+ add_property_long(this_ptr, "_features", Z_LVAL_PP(tmp));
+ }
+
if (zend_hash_find(ht, "connection_timeout", sizeof("connection_timeout"), (void**)&tmp) == SUCCESS &&
Z_TYPE_PP(tmp) == IS_LONG && Z_LVAL_PP(tmp) > 0) {
add_property_long(this_ptr, "_connection_timeout", Z_LVAL_PP(tmp));
@@ -2198,6 +2317,16 @@ PHP_METHOD(SoapClient, SoapClient)
add_property_resource(this_ptr, "_stream_context", context->rsrc_id);
}
+ if (zend_hash_find(ht, "cache_wsdl", sizeof("cache_wsdl"), (void**)&tmp) == SUCCESS &&
+ Z_TYPE_PP(tmp) == IS_LONG) {
+ cache_wsdl = Z_LVAL_PP(tmp);
+ }
+
+ if (zend_hash_find(ht, "user_agent", sizeof("user_agent"), (void**)&tmp) == SUCCESS &&
+ Z_TYPE_PP(tmp) == IS_STRING) {
+ add_property_stringl(this_ptr, "_user_agent", Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1);
+ }
+
} else if (wsdl == NULL) {
php_error_docref(NULL TSRMLS_CC, E_ERROR, "'location' and 'uri' options are requred in nonWSDL mode");
return;
@@ -2212,7 +2341,7 @@ PHP_METHOD(SoapClient, SoapClient)
old_soap_version = SOAP_GLOBAL(soap_version);
SOAP_GLOBAL(soap_version) = soap_version;
- sdl = get_sdl(this_ptr, Z_STRVAL_P(wsdl) TSRMLS_CC);
+ sdl = get_sdl(this_ptr, Z_STRVAL_P(wsdl), cache_wsdl TSRMLS_CC);
ret = zend_list_insert(sdl, le_sdl);
add_property_resource(this_ptr, "sdl", ret);
@@ -2224,13 +2353,13 @@ PHP_METHOD(SoapClient, SoapClient)
}
/* }}} */
-static int do_request(zval *this_ptr, xmlDoc *request, char *location, char *action, int version, zval *response TSRMLS_DC)
+static int do_request(zval *this_ptr, xmlDoc *request, char *location, char *action, int version, int one_way, zval *response TSRMLS_DC)
{
int ret = TRUE;
char *buf;
int buf_size;
- zval func, param0, param1, param2, param3;
- zval *params[4];
+ zval func, param0, param1, param2, param3, param4;
+ zval *params[5];
zval **trace;
zval **fault;
@@ -2270,7 +2399,11 @@ static int do_request(zval *this_ptr, xmlDoc *request, char *location, char *act
params[3] = &param3;
ZVAL_LONG(params[3], version);
- if (call_user_function(NULL, &this_ptr, &func, response, 4, params TSRMLS_CC) != SUCCESS) {
+ INIT_ZVAL(param4);
+ params[4] = &param4;
+ ZVAL_LONG(params[4], one_way);
+
+ if (call_user_function(NULL, &this_ptr, &func, response, 5, params TSRMLS_CC) != SUCCESS) {
add_soap_fault(this_ptr, "Client", "SoapSlient::__doRequest() failed", NULL, NULL TSRMLS_CC);
ret = FALSE;
} else if (Z_TYPE_P(response) != IS_STRING) {
@@ -2313,6 +2446,7 @@ static void do_soap_call(zval* this_ptr,
zval response;
xmlCharEncodingHandlerPtr old_encoding;
HashTable *old_class_map;
+ int old_features;
SOAP_CLIENT_BEGIN_CODE();
@@ -2358,21 +2492,36 @@ static void do_soap_call(zval* this_ptr,
} else {
SOAP_GLOBAL(class_map) = NULL;
}
+ old_features = SOAP_GLOBAL(features);
+ if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_features", sizeof("_features"), (void **) &tmp) == SUCCESS &&
+ Z_TYPE_PP(tmp) == IS_LONG) {
+ SOAP_GLOBAL(features) = Z_LVAL_PP(tmp);
+ } else {
+ SOAP_GLOBAL(features) = 0;
+ }
if (sdl != NULL) {
fn = get_function(sdl, function);
if (fn != NULL) {
sdlBindingPtr binding = fn->binding;
+ int one_way = 0;
+
+ if (fn->responseName == NULL &&
+ fn->responseParameters == NULL &&
+ soap_headers == NULL) {
+ one_way = 1;
+ }
+
if (location == NULL) {
location = binding->location;
}
if (binding->bindingType == BINDING_SOAP) {
sdlSoapBindingFunctionPtr fnb = (sdlSoapBindingFunctionPtr)fn->bindingAttributes;
request = serialize_function_call(this_ptr, fn, NULL, fnb->input.ns, real_args, arg_count, soap_version, soap_headers TSRMLS_CC);
- ret = do_request(this_ptr, request, location, fnb->soapAction, soap_version, &response TSRMLS_CC);
+ ret = do_request(this_ptr, request, location, fnb->soapAction, soap_version, one_way, &response TSRMLS_CC);
} else {
request = serialize_function_call(this_ptr, fn, NULL, sdl->target_ns, real_args, arg_count, soap_version, soap_headers TSRMLS_CC);
- ret = do_request(this_ptr, request, location, NULL, soap_version, &response TSRMLS_CC);
+ ret = do_request(this_ptr, request, location, NULL, soap_version, one_way, &response TSRMLS_CC);
}
xmlFreeDoc(request);
@@ -2415,7 +2564,7 @@ static void do_soap_call(zval* this_ptr,
}
smart_str_0(&action);
- ret = do_request(this_ptr, request, location, action.c, soap_version, &response TSRMLS_CC);
+ ret = do_request(this_ptr, request, location, action.c, soap_version, 0, &response TSRMLS_CC);
smart_str_free(&action);
xmlFreeDoc(request);
@@ -2458,10 +2607,11 @@ static void do_soap_call(zval* this_ptr,
zend_throw_exception_object(exception TSRMLS_CC);
}
#endif
- if (SOAP_GLOBAL(encoding) != NULL) {
+ if (SOAP_GLOBAL(encoding) != NULL) {
xmlCharEncCloseFunc(SOAP_GLOBAL(encoding));
- }
- SOAP_GLOBAL(class_map) = old_class_map;
+ }
+ SOAP_GLOBAL(features) = old_features;
+ SOAP_GLOBAL(class_map) = old_class_map;
SOAP_GLOBAL(encoding) = old_encoding;
SOAP_GLOBAL(sdl) = old_sdl;
SOAP_CLIENT_END_CODE();
@@ -2474,7 +2624,7 @@ static void verify_soap_headers_array(HashTable *ht TSRMLS_DC)
zend_hash_internal_pointer_reset(ht);
while (zend_hash_get_current_data(ht, (void**)&tmp) == SUCCESS) {
if (Z_TYPE_PP(tmp) != IS_OBJECT ||
- Z_OBJCE_PP(tmp) != soap_header_class_entry) {
+ !instanceof_function(Z_OBJCE_PP(tmp), soap_header_class_entry TSRMLS_CC)) {
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Invalid SOAP header");
}
zend_hash_move_forward(ht);
@@ -2497,7 +2647,7 @@ PHP_METHOD(SoapClient, __call)
zval **param;
int arg_count;
zval **tmp;
- zend_bool free_soap_headers;
+ zend_bool free_soap_headers = 0;
HashPosition pos;
@@ -2521,7 +2671,7 @@ PHP_METHOD(SoapClient, __call)
if (zend_hash_find(ht, "uri", sizeof("uri"), (void**)&tmp) == SUCCESS &&
Z_TYPE_PP(tmp) == IS_STRING) {
- soap_action = Z_STRVAL_PP(tmp);
+ uri = Z_STRVAL_PP(tmp);
}
} else if (Z_TYPE_P(options) != IS_NULL) {
php_error_docref(NULL TSRMLS_CC, E_ERROR, "first parameter must be string or null");
@@ -2534,7 +2684,7 @@ PHP_METHOD(SoapClient, __call)
verify_soap_headers_array(soap_headers TSRMLS_CC);
free_soap_headers = 0;
} else if (Z_TYPE_P(headers) == IS_OBJECT &&
- Z_OBJCE_P(headers) == soap_header_class_entry) {
+ instanceof_function(Z_OBJCE_P(headers), soap_header_class_entry TSRMLS_CC)) {
soap_headers = emalloc(sizeof(HashTable));
zend_hash_init(soap_headers, 0, NULL, ZVAL_PTR_DTOR, 0);
zend_hash_next_index_insert(soap_headers, &headers, sizeof(zval*), NULL);
@@ -2711,15 +2861,21 @@ PHP_METHOD(SoapClient, __doRequest)
char *buf, *location, *action;
int buf_size, location_size, action_size;
long version;
+ long one_way = 0;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sssl",
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sssl|l",
&buf, &buf_size,
&location, &location_size,
&action, &action_size,
- &version) == FAILURE) {
+ &version, &one_way) == FAILURE) {
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Invalid parameters");
}
- if (make_http_soap_request(this_ptr, buf, buf_size, location, action, version,
+ if (SOAP_GLOBAL(features) & SOAP_WAIT_ONE_WAY_CALLS) {
+ one_way = 0;
+ }
+ if (one_way && make_http_soap_request(this_ptr, buf, buf_size, location, action, version, NULL, NULL TSRMLS_CC)) {
+ RETURN_EMPTY_STRING();
+ } else if (make_http_soap_request(this_ptr, buf, buf_size, location, action, version,
&Z_STRVAL_P(return_value), &Z_STRLEN_P(return_value) TSRMLS_CC)) {
return_value->type = IS_STRING;
return;
@@ -2791,7 +2947,7 @@ PHP_METHOD(SoapClient, __setSoapHeaders)
add_property_zval(this_ptr, "__default_headers", headers);
}
} else if (Z_TYPE_P(headers) == IS_OBJECT &&
- Z_OBJCE_P(headers) == soap_header_class_entry) {
+ instanceof_function(Z_OBJCE_P(headers), soap_header_class_entry TSRMLS_CC)) {
zval *default_headers;
ALLOC_INIT_ZVAL(default_headers);
array_init(default_headers);
@@ -2898,6 +3054,9 @@ static void set_soap_fault(zval *obj, char *fault_code_ns, char *fault_code, cha
}
if (fault_string != NULL) {
add_property_string(obj, "faultstring", fault_string, 1);
+#ifdef ZEND_ENGINE_2
+ zend_update_property_string(zend_exception_get_default(), obj, "message", sizeof("message")-1, fault_string TSRMLS_CC);
+#endif
}
if (fault_code != NULL) {
int soap_version = SOAP_GLOBAL(soap_version);
@@ -3463,7 +3622,7 @@ static xmlDocPtr serialize_response_call(sdlFunctionPtr function, char *function
head = xmlNewChild(envelope, ns, "Header", NULL);
if (Z_TYPE_P(hdr_ret) == IS_OBJECT &&
- Z_OBJCE_P(hdr_ret) == soap_header_class_entry) {
+ instanceof_function(Z_OBJCE_P(hdr_ret), soap_header_class_entry TSRMLS_CC)) {
HashTable* ht = Z_OBJPROP_P(hdr_ret);
zval **tmp;
sdlSoapBindingFunctionHeaderPtr *hdr;
@@ -3690,7 +3849,7 @@ static xmlDocPtr serialize_response_call(sdlFunctionPtr function, char *function
if (Z_TYPE(h->retval) == IS_OBJECT &&
- Z_OBJCE(h->retval) == soap_header_class_entry) {
+ instanceof_function(Z_OBJCE(h->retval), soap_header_class_entry TSRMLS_CC)) {
HashTable* ht = Z_OBJPROP(h->retval);
zval **tmp;
sdlSoapBindingFunctionHeaderPtr *hdr;
diff --git a/ext/soap/tests/bugs/bug30045.phpt b/ext/soap/tests/bugs/bug30045.phpt
index 14de8e366..e51921e99 100644
--- a/ext/soap/tests/bugs/bug30045.phpt
+++ b/ext/soap/tests/bugs/bug30045.phpt
@@ -42,7 +42,7 @@ function test($type, $num) {
try {
printf(" %0.0f\n ", $num);
$ret = $soap->foo($type, new SoapVar($num, $type));
- printf(" %0.0f\n", $num, $ret);
+ printf(" %0.0f\n", $ret);
} catch (SoapFault $ex) {
var_dump($ex);
}
diff --git a/ext/soap/tests/bugs/bug35142.phpt b/ext/soap/tests/bugs/bug35142.phpt
index f787c5964..7ab49430c 100755
--- a/ext/soap/tests/bugs/bug35142.phpt
+++ b/ext/soap/tests/bugs/bug35142.phpt
@@ -49,7 +49,7 @@ class LogOffEvent {
public $audienceMemberId;
public $timestamp;
public $smokeStatus;
- public $callInititator;
+ public $callInitiator;
function __construct($audienceMemberId, $timestamp, $smokeStatus) {
$this->audienceMemberId = $audienceMemberId;
@@ -98,6 +98,15 @@ object(IVREvents)#%d (6) {
int(101)
["messageId"]=>
int(12345)
+ ["source"]=>
+ string(3) "IVR"
+ ["logOnEvent"]=>
+ object(LogOnEvent)#%d (2) {
+ ["audienceMemberId"]=>
+ int(34567)
+ ["timestamp"]=>
+ string(25) "2005-11-08T11:22:07+03:00"
+ }
["logOffEvent"]=>
array(2) {
[0]=>
@@ -123,13 +132,4 @@ object(IVREvents)#%d (6) {
string(3) "IVR"
}
}
- ["logOnEvent"]=>
- object(LogOnEvent)#%d (2) {
- ["audienceMemberId"]=>
- int(34567)
- ["timestamp"]=>
- string(25) "2005-11-08T11:22:07+03:00"
- }
- ["source"]=>
- string(3) "IVR"
}
diff --git a/ext/soap/tests/bugs/bug36226.phpt b/ext/soap/tests/bugs/bug36226.phpt
new file mode 100755
index 000000000..2d3461d61
--- /dev/null
+++ b/ext/soap/tests/bugs/bug36226.phpt
@@ -0,0 +1,139 @@
+--TEST--
+Bug #36226 SOAP Inconsistent handling when passing potential arrays.
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--INI--
+soap.wsdl_cache_enabled=0
+--FILE--
+<?php
+ini_set("soap.wsdl_cache_enabled",0);
+$timestamp = "2005-11-08T11:22:07+03:00";
+$wsdl = dirname(__FILE__)."/bug35142.wsdl";
+
+function PostEvents($x) {
+ var_dump($x);
+ exit();
+ return $x;
+}
+
+class TestSoapClient extends SoapClient {
+
+ function __construct($wsdl, $options) {
+ parent::__construct($wsdl, $options);
+ $this->server = new SoapServer($wsdl, $options);
+ $this->server->addFunction('PostEvents');
+ }
+
+ function __doRequest($request, $location, $action, $version) {
+ echo "$request\n";
+ $this->server->handle($request);
+ return $response;
+ }
+
+}
+
+$soapClient = new TestSoapClient($wsdl,
+ array('trace' => 1, 'exceptions' => 0,
+ 'classmap' => array('logOnEvent' => 'LogOnEvent',
+ 'logOffEvent' => 'LogOffEvent',
+ 'events' => 'IVREvents'),
+ 'features' => SOAP_SINGLE_ELEMENT_ARRAYS));
+
+$logOnEvent = new LogOnEvent(34567, $timestamp);
+$logOffEvents[] = new LogOffEvent(34567, $timestamp, "Smoked");
+$logOffEvents[] = new LogOffEvent(34568, $timestamp, "SmokeFree");
+$ivrEvents = new IVREvents("1.0", 101, 12345, 'IVR', $logOnEvent, $logOffEvents);
+
+$result = $soapClient->PostEvents($ivrEvents);
+
+class LogOffEvent {
+ public $audienceMemberId;
+ public $timestamp;
+ public $smokeStatus;
+ public $callInitiator;
+
+ function __construct($audienceMemberId, $timestamp, $smokeStatus) {
+ $this->audienceMemberId = $audienceMemberId;
+ $this->timestamp = $timestamp;
+ $this->smokeStatus = $smokeStatus;
+ $this->callInitiator = "IVR";
+ }
+}
+
+class LogOnEvent {
+ public $audienceMemberId;
+ public $timestamp;
+
+ function __construct($audienceMemberId, $timestamp) {
+ $this->audienceMemberId = $audienceMemberId;
+ $this->timestamp = $timestamp;
+ }
+}
+
+class IVREvents {
+ public $version;
+ public $activityId;
+ public $messageId;
+ public $source;
+ public $logOnEvent;
+ public $logOffEvent;
+
+ function __construct($version, $activityId, $messageId, $source, $logOnEvent=NULL, $logOffEvent=NULL) {
+ $this->version = $version;
+ $this->activityId = $activityId;
+ $this->messageId = $messageId;
+ $this->source = $source;
+ $this->logOnEvent = $logOnEvent;
+ $this->logOffEvent = $logOffEvent;
+ }
+}
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://testurl/Message"><SOAP-ENV:Body><ns1:ivrEvents version="1.0" activityId="101" messageId="12345" source="IVR"><ns1:logOffEvent audienceMemberId="34567" timestamp="2005-11-08T11:22:07+03:00" smokeStatus="Smoked" callInitiator="IVR"/><ns1:logOffEvent audienceMemberId="34568" timestamp="2005-11-08T11:22:07+03:00" smokeStatus="SmokeFree" callInitiator="IVR"/><ns1:logOnEvent audienceMemberId="34567" timestamp="2005-11-08T11:22:07+03:00"/></ns1:ivrEvents></SOAP-ENV:Body></SOAP-ENV:Envelope>
+
+object(IVREvents)#%d (6) {
+ ["version"]=>
+ string(3) "1.0"
+ ["activityId"]=>
+ int(101)
+ ["messageId"]=>
+ int(12345)
+ ["source"]=>
+ string(3) "IVR"
+ ["logOnEvent"]=>
+ array(1) {
+ [0]=>
+ object(LogOnEvent)#10 (2) {
+ ["audienceMemberId"]=>
+ int(34567)
+ ["timestamp"]=>
+ string(25) "2005-11-08T11:22:07+03:00"
+ }
+ }
+ ["logOffEvent"]=>
+ array(2) {
+ [0]=>
+ object(LogOffEvent)#%d (4) {
+ ["audienceMemberId"]=>
+ int(34567)
+ ["timestamp"]=>
+ string(25) "2005-11-08T11:22:07+03:00"
+ ["smokeStatus"]=>
+ string(6) "Smoked"
+ ["callInitiator"]=>
+ string(3) "IVR"
+ }
+ [1]=>
+ object(LogOffEvent)#%d (4) {
+ ["audienceMemberId"]=>
+ int(34568)
+ ["timestamp"]=>
+ string(25) "2005-11-08T11:22:07+03:00"
+ ["smokeStatus"]=>
+ string(9) "SmokeFree"
+ ["callInitiator"]=>
+ string(3) "IVR"
+ }
+ }
+}
diff --git a/ext/soap/tests/bugs/bug36575.phpt b/ext/soap/tests/bugs/bug36575.phpt
new file mode 100755
index 000000000..d205f8805
--- /dev/null
+++ b/ext/soap/tests/bugs/bug36575.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Bug #36575 (Incorrect complex type instantiation with hierarchies)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--INI--
+soap.wsdl_cache_enabled=0
+--FILE--
+<?php
+abstract class CT_A1 {
+ public $var1;
+}
+
+class CT_A2 extends CT_A1 {
+ public $var2;
+}
+
+class CT_A3 extends CT_A2 {
+ public $var3;
+}
+
+// returns A2 in WSDL
+function test( $a1 ) {
+ $a3 = new CT_A3();
+ $a3->var1 = $a1->var1;
+ $a3->var2 = "var two";
+ $a3->var3 = "var three";
+ return $a3;
+}
+
+$classMap = array("A1" => "CT_A1", "A2" => "CT_A2", "A3" => "CT_A3");
+
+$client = new SoapClient(dirname(__FILE__)."/bug36575.wsdl", array("trace" => 1, "exceptions" => 0, "classmap" => $classMap));
+$a2 = new CT_A2();
+$a2->var1 = "one";
+$a2->var2 = "two";
+$client->test($a2);
+
+$soapRequest = $client->__getLastRequest();
+
+echo $soapRequest;
+
+$server = new SoapServer(dirname(__FILE__)."/bug36575.wsdl", array("classmap" => $classMap));
+$server->addFunction("test");
+$server->handle($soapRequest);
+echo "ok\n";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:test.soap#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="urn:test.soap.types#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><a1 xsi:type="ns2:A2"><var1 xsi:type="xsd:string">one</var1><var2 xsi:type="xsd:string">two</var2></a1></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:test.soap#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="urn:test.soap.types#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:testResponse><result xsi:type="ns2:A3"><var1 xsi:type="xsd:string">one</var1><var2 xsi:type="xsd:string">var two</var2><var3 xsi:type="xsd:string">var three</var3></result></ns1:testResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/bugs/bug36575.wsdl b/ext/soap/tests/bugs/bug36575.wsdl
new file mode 100755
index 000000000..0f1899bcd
--- /dev/null
+++ b/ext/soap/tests/bugs/bug36575.wsdl
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<definitions name="shoppingcart"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="urn:test.soap#" targetNamespace="urn:test.soap#"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:types="urn:test.soap.types#">
+ <!-- all datatypes will be imported to namespace types: -->
+ <types>
+ <xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap = "http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:tns="urn:test.soap.types#"
+ targetNamespace="urn:test.soap.types#">
+
+ <xs:complexType name="A1">
+ <xs:all>
+ <xs:element name="var1" type="xs:string" nillable="true"/>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="A2">
+ <xs:complexContent>
+ <xs:extension base="tns:A1">
+ <xs:all>
+ <xs:element name="var2" type="xs:string" nillable="true"/>
+ </xs:all>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="A3">
+ <xs:complexContent>
+ <xs:extension base="tns:A2">
+ <xs:all>
+ <xs:element name="var3" type="xs:string" nillable="true"/>
+ </xs:all>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:schema>
+ </types>
+
+ <message name="test-request">
+ <part name="a1" type="types:A1"/>
+ </message>
+ <message name="test-response">
+ <part name="result" type="types:A2"/>
+ </message>
+
+ <portType name="catalog-porttype">
+ <operation name="test" parameterOrder="a1">
+ <input name="test-request" message="tns:test-request"/>
+ <output name="test-response" message="tns:test-response"/>
+ </operation>
+ </portType>
+
+ <!-- @type doesn't like tns: -->
+ <binding name="catalog-binding" type="tns:catalog-porttype">
+ <soap:binding style="rpc"
+ transport="http://schemas.xmlsoap.org/soap/http"/>
+
+ <operation name="test">
+ <soap:operation soapAction="urn:test.soap#test"/>
+ <input>
+ <soap:body use="encoded" namespace="urn:test.soap#"
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+ </input>
+ <output>
+ <soap:body use="encoded" namespace="urn:test.soap#"
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+ </output>
+ </operation>
+ </binding>
+
+ <service name="catalog">
+ <!-- @binding doesn't like to be tns: -->
+ <port name="catalog-port" binding="tns:catalog-binding">
+ <soap:address location="xxxxxxxx"/>
+ </port>
+ </service>
+
+</definitions>
diff --git a/ext/soap/tests/bugs/bug36614.phpt b/ext/soap/tests/bugs/bug36614.phpt
new file mode 100755
index 000000000..ba6734812
--- /dev/null
+++ b/ext/soap/tests/bugs/bug36614.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Bug #36614 (Segfault when using Soap)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--INI--
+soap.wsdl_cache_enabled=0
+--FILE--
+<?php
+$lo_soap = new SoapClient(dirname(__FILE__)."/bug36614.wsdl");
+echo "ok\n";
+?>
+--EXPECT--
+ok
diff --git a/ext/soap/tests/bugs/bug36614.wsdl b/ext/soap/tests/bugs/bug36614.wsdl
new file mode 100755
index 000000000..ecf1b1b2f
--- /dev/null
+++ b/ext/soap/tests/bugs/bug36614.wsdl
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<definitions name="SonicMobile Web-Services"
+ targetNamespace="http://soap.sonicmobile.com/sonicmobile.wsdl"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:sonic="http://soap.sonicmobile.com/sonicmobile.wsdl"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <types>
+ <xsd:schema xmlns="http://www.w3.org/2000/10/XMLSchema">
+ <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+ <complexType name="TransportCount">
+ <all>
+ <element name="transport" type="string" />
+ <element name="count" type="integer" />
+ <element name="rate" type="integer" />
+ <element name="last_message" type="integer" />
+ </all>
+ </complexType>
+ <complexType name="ArrayOfTransportCount">
+ <complexContent>
+ <restriction base="soapenc:Array">
+ <attribute ref="soapenc:arrayType" arrayType="TransportCount[]" />
+ </restriction>
+ </complexContent>
+ </complexType>
+ </xsd:schema>
+ </types>
+
+ <message name="userSendMessageRequest">
+ <part name="sourceUser" type="xsd:int"/>
+ <part name="password" type="xsd:string"/>
+ <part name="destinationUser" type="xsd:int"/>
+ <part name="content" type="xsd:string"/>
+ <part name="sendRepliesTo" type="xsd:string"/>
+ <part name="reference" type="xsd:string"/>
+ </message>
+
+ <message name="sendMessageRequest">
+ <part name="application" type="xsd:string"/>
+ <part name="password" type="xsd:string"/>
+ <part name="destination" type="xsd:string"/>
+ <part name="content" type="xsd:string"/>
+ <part name="reference" type="xsd:string"/>
+ <part name="requestSource" type="xsd:string"/>
+ <part name="customer" type="xsd:string"/>
+ <part name="class" type="xsd:string"/>
+ </message>
+
+ <message name="MessageResponse">
+ <part name="messageid" type="xsd:int"/>
+ <part name="response" type="xsd:string"/>
+ </message>
+
+ <message name="messageCountRequest">
+ <part name="password" type="xsd:string"/>
+ </message>
+
+ <message name="messageCountResponse">
+ <part name="transports" type="tns:ArrayOfTransportCount"/>
+ </message>
+
+ <message name="serverStatusRequest">
+ <part name="password" type="xsd:string"/>
+ </message>
+ <message name="serverStatusResponse">
+ <part name="status_string" type="xsd:string"/>
+ </message>
+
+ <message name="flushGatewayRequest">
+ <part name="password" type="xsd:string"/>
+ </message>
+ <message name="flushGatewayResponse">
+ <part name="status_string" type="xsd:string"/>
+ </message>
+
+ <portType name="SonicMobilePortType">
+ <operation name="userSendMessage">
+ <input message="sonic:userSendMessageRequest"/>
+ <output message="sonic:MessageResponse"/>
+ </operation>
+
+ <operation name="sendMessage">
+ <input message="sonic:sendMessageRequest"/>
+ <output message="sonic:MessageResponse"/>
+ </operation>
+
+ <operation name="messageCount">
+ <input message="sonic:messageCountRequest"/>
+ <output message="sonic:messageCountResponse"/>
+ </operation>
+
+ <operation name="serverStatus">
+ <input message="sonic:serverStatusRequest"/>
+ <output message="sonic:serverStatusResponse"/>
+ </operation>
+
+ <operation name="flushGateway">
+ <input message="sonic:flushGatewayRequest"/>
+ <output message="sonic:flushGatewayResponse"/>
+ </operation>
+ </portType>
+
+ <binding name="SonicMobileBinding" type="sonic:SonicMobilePortType">
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
+
+ <operation name="userSendMessage">
+ <soap:operation soapAction="http://soap.sonicmobile.com/SonicMobile/SOAP#userSendMessage"/>
+
+ <input>
+ <soap:body
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
+ use="encoded" />
+ </input>
+
+ <output>
+ <soap:body
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
+ use="encoded" />
+ </output>
+ </operation>
+
+ <operation name="sendMessage">
+ <soap:operation soapAction="http://soap.sonicmobile.com/SonicMobile/SOAP#sendMessage"/>
+
+ <input>
+ <soap:body
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
+ use="encoded" />
+ </input>
+
+ <output>
+ <soap:body
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
+ use="encoded" />
+ </output>
+ </operation>
+
+ <operation name="messageCount">
+ <soap:operation soapAction="http://soap.sonicmobile.com/SonicMobile/SOAP#messageCount"/>
+
+ <input>
+ <soap:body
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
+ use="encoded" />
+ </input>
+
+ <output>
+ <soap:body
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
+ use="encoded" />
+ </output>
+ </operation>
+
+ <operation name="serverStatus">
+ <soap:operation soapAction="http://soap.sonicmobile.com/SonicMobile/SOAP#serverStatus"/>
+
+ <input>
+ <soap:body
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
+ use="encoded" />
+ </input>
+
+ <output>
+ <soap:body
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
+ use="encoded" />
+ </output>
+ </operation>
+
+ <operation name="flushGateway">
+ <soap:operation soapAction="http://soap.sonicmobile.com/SonicMobile/SOAP#flushGateway"/>
+
+ <input>
+ <soap:body
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
+ use="encoded" />
+ </input>
+ <output>
+ <soap:body
+ encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ namespace="http://soap.sonicmobile.com/SonicMobile/SOAP"
+ use="encoded" />
+ </output>
+ </operation>
+
+ </binding>
+
+ <service name="SonicMobile">
+ <port name="SonicMobilePort" binding="sonic:SonicMobileBinding">
+ <soap:address location="http://soap.sonicmobile.com/"/>
+ </port>
+ </service>
+
+</definitions>
diff --git a/ext/soap/tests/bugs/bug36629.phpt b/ext/soap/tests/bugs/bug36629.phpt
new file mode 100755
index 000000000..7982cfa6b
--- /dev/null
+++ b/ext/soap/tests/bugs/bug36629.phpt
@@ -0,0 +1,53 @@
+--TEST--
+Bug #36629 (SoapServer::handle() exits on SOAP faults)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+function test1() {
+ throw new SoapFault("Server", "test1");
+}
+function test2() {
+ return new SoapFault("Server", "test2");
+}
+
+$server = new soapserver(null,array('uri'=>"http://testuri.org"));
+$server->addfunction(array("test1","test2"));
+
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<SOAP-ENV:Envelope
+ SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:si="http://soapinterop.org/xsd">
+ <SOAP-ENV:Body>
+ <ns1:test1 xmlns:ns1="http://testuri.org" />
+ </SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
+EOF;
+$server->handle();
+
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<SOAP-ENV:Envelope
+ SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:si="http://soapinterop.org/xsd">
+ <SOAP-ENV:Body>
+ <ns1:test2 xmlns:ns1="http://testuri.org" />
+ </SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
+EOF;
+$server->handle();
+echo "ok\n";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>test1</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>test2</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/bugs/bug36908.phpt b/ext/soap/tests/bugs/bug36908.phpt
new file mode 100755
index 000000000..588c559a0
--- /dev/null
+++ b/ext/soap/tests/bugs/bug36908.phpt
@@ -0,0 +1,46 @@
+--TEST--
+Bug #36908 (wsdl default value overrides value in soap request)
+--SKIPIF--
+<?php
+ if (!extension_loaded('soap')) die('skip soap extension not available');
+?>
+--INI--
+soap.wsdl_cache_enabled=0
+--FILE--
+<?php
+class PublisherService {
+ function add($publisher) {
+ return $publisher->region_id;
+ }
+}
+$input =
+'<?xml version="1.0" encoding="UTF-8"?>
+<soapenv:Envelope
+xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <soapenv:Body>
+ <ns1:add xmlns:ns1="urn:PublisherService" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+ <publisher href="#id0"/>
+ </ns1:add>
+ <multiRef xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+xmlns:ns3="http://soap.dev/soap/types" id="id0" soapenc:root="0"
+soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+xsi:type="ns3:publisher">
+ <region_id href="#id5"/>
+ </multiRef>
+ <multiRef xmlns:ns5="http://soap.dev/soap/types"
+xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" id="id5"
+soapenc:root="0"
+soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+xsi:type="xsd:long">9</multiRef>
+ </soapenv:Body>
+</soapenv:Envelope>';
+ini_set('soap.wsdl_cache_enabled', false);
+$server = new SoapServer(dirname(__FILE__)."/bug36908.wsdl");
+$server->setClass("PublisherService");
+$server->handle($input);
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:PublisherService" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:addResponse><out xsi:type="xsd:string">9</out></ns1:addResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
diff --git a/ext/soap/tests/bugs/bug36908.wsdl b/ext/soap/tests/bugs/bug36908.wsdl
new file mode 100755
index 000000000..f3be3f630
--- /dev/null
+++ b/ext/soap/tests/bugs/bug36908.wsdl
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+xmlns:api="http://soap.dev/soap/PublisherService"
+xmlns:types="http://soap.dev/soap/types"
+targetNamespace="http://soap.dev/soap/PublisherService">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+xmlns:types="http://soap.dev/soap/types"
+targetNamespace="http://soap.dev/soap/types">
+ <xsd:complexType name="publisher">
+ <xsd:all>
+ <xsd:element name="region_id" type="xsd:long" default="52"/>
+ </xsd:all>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="addInput">
+ <wsdl:part name="publisher" type="types:publisher"/>
+ </wsdl:message>
+ <wsdl:message name="addOutput">
+ <wsdl:part name="out" type="xsd:string"/>
+ </wsdl:message>
+ <wsdl:portType name="PublisherServicePortType">
+ <wsdl:operation name="add">
+ <wsdl:input message="api:addInput"/>
+ <wsdl:output message="api:addOutput"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PublisherServiceBinding" type="api:PublisherServicePortType">
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="add">
+ <soap:operation soapAction="urn:PublisherService#add" style="rpc"/>
+ <wsdl:input>
+ <soap:body use="encoded" namespace="urn:PublisherService" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="encoded" namespace="urn:PublisherService" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PublisherService">
+ <wsdl:port name="PublisherServicePort" binding="api:PublisherServiceBinding">
+ <soap:address location="http://soap.dev/soap//publisher_test.php"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git a/ext/soap/tests/bugs/bug37083.phpt b/ext/soap/tests/bugs/bug37083.phpt
new file mode 100755
index 000000000..471b5e49a
--- /dev/null
+++ b/ext/soap/tests/bugs/bug37083.phpt
@@ -0,0 +1,58 @@
+--TEST--
+Bug #37083 (Frequent crashs in SOAP extension with new WSDL caching code in multithread WS)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--INI--
+soap.wsdl_cache_enabled=3
+--FILE--
+<?php
+class TestSoapClient extends SoapClient {
+ function __doRequest($request, $location, $action, $version) {
+ return <<<EOF
+<?xml version="1.0" encoding="utf-8"?>
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<soapenv:Body>
+<ns1:searchResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:java:de.pangaea.metadataportal.search.SearchService">
+<searchReturn href="#id0"/>
+</ns1:searchResponse>
+<multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:SearchResponse" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="urn:java:de.pangaea.metadataportal.search.SearchService"><offset xsi:type="xsd:int">0</offset><queryTime xsi:type="xsd:long">34</queryTime><results soapenc:arrayType="ns2:SearchResponseItem[10]" xsi:type="soapenc:Array"><results href="#id1"/><results href="#id2"/><results href="#id3"/><results href="#id4"/><results href="#id5"/><results href="#id6"/><results href="#id7"/><results href="#id8"/><results href="#id9"/><results href="#id10"/></results><totalCount xsi:type="xsd:int">3501</totalCount></multiRef>
+<multiRef id="id9" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns3:SearchResponseItem" xmlns:ns3="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><fields href="#id11"/><identifier xsi:type="xsd:string">oai:dlmd.ifremer.fr:5900168</identifier><score xsi:type="xsd:float">0.13684115</score><xml xsi:type="xsd:string">xml1</xml></multiRef>
+<multiRef id="id7" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns4:SearchResponseItem" xmlns:ns4="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><fields href="#id12"/><identifier xsi:type="xsd:string">oai:dlmd.ifremer.fr:5900039</identifier><score xsi:type="xsd:float">0.13684115</score><xml xsi:type="xsd:string">xml2</xml></multiRef>
+<multiRef id="id6" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns5:SearchResponseItem" xmlns:ns5="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><fields href="#id13"/><identifier xsi:type="xsd:string">oai:dlmd.ifremer.fr:5900040</identifier><score xsi:type="xsd:float">0.13684115</score><xml xsi:type="xsd:string">xml3</xml></multiRef>
+<multiRef id="id10" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns6:SearchResponseItem" xmlns:ns6="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><fields href="#id14"/><identifier xsi:type="xsd:string">oai:dlmd.ifremer.fr:41534</identifier><score xsi:type="xsd:float">0.13684115</score><xml xsi:type="xsd:string">xml4</xml></multiRef>
+<multiRef id="id8" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns7:SearchResponseItem" xmlns:ns7="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><fields href="#id15"/><identifier xsi:type="xsd:string">oai:dlmd.ifremer.fr:5900038</identifier><score xsi:type="xsd:float">0.13684115</score><xml xsi:type="xsd:string">xml5</xml></multiRef>
+<multiRef id="id4" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns8:SearchResponseItem" xmlns:ns8="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><fields href="#id16"/><identifier xsi:type="xsd:string">oai:dlmd.ifremer.fr:2900229</identifier><score xsi:type="xsd:float">0.13684115</score><xml xsi:type="xsd:string">xml6</xml></multiRef>
+<multiRef id="id5" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns9:SearchResponseItem" xmlns:ns9="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><fields href="#id17"/><identifier xsi:type="xsd:string">oai:dlmd.ifremer.fr:2900228</identifier><score xsi:type="xsd:float">0.13684115</score><xml xsi:type="xsd:string">xml7</xml></multiRef>
+<multiRef id="id3" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns10:SearchResponseItem" xmlns:ns10="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><fields href="#id18"/><identifier xsi:type="xsd:string">oai:dlmd.ifremer.fr:2900230</identifier><score xsi:type="xsd:float">0.13684115</score><xml xsi:type="xsd:string">xml8</xml></multiRef>
+<multiRef id="id2" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns11:SearchResponseItem" xmlns:ns11="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><fields href="#id19"/><identifier xsi:type="xsd:string">oai:dlmd.ifremer.fr:2900235</identifier><score xsi:type="xsd:float">0.13684115</score><xml xsi:type="xsd:string">xml9</xml></multiRef>
+<multiRef id="id1" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns12:SearchResponseItem" xmlns:ns12="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><fields href="#id20"/><identifier xsi:type="xsd:string">oai:dlmd.ifremer.fr:5900196</identifier><score xsi:type="xsd:float">0.13684115</score><xml xsi:type="xsd:string">xml10</xml></multiRef>
+<multiRef id="id15" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns13:Map" xmlns:ns13="http://xml.apache.org/xml-soap" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><item><key xsi:type="soapenc:string">maxDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2038-12-31T22:59:59.000Z</value></value></item><item><key xsi:type="soapenc:string">minDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2004-12-01T04:58:00.000Z</value></value></item><item><key xsi:type="soapenc:string">minLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">105.539</value></value></item><item><key xsi:type="soapenc:string">maxLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">112.283</value></value></item><item><key xsi:type="soapenc:string">maxLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">-30.024</value></value></item><item><key xsi:type="soapenc:string">minLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">-34.788</value></value></item></multiRef>
+<multiRef id="id20" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns14:Map" xmlns:ns14="http://xml.apache.org/xml-soap" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><item><key xsi:type="soapenc:string">maxDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2038-12-31T22:59:59.000Z</value></value></item><item><key xsi:type="soapenc:string">minDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2004-06-07T17:41:44.000Z</value></value></item><item><key xsi:type="soapenc:string">minLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">129.882</value></value></item><item><key xsi:type="soapenc:string">maxLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">133.635</value></value></item><item><key xsi:type="soapenc:string">maxLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">39.529</value></value></item><item><key xsi:type="soapenc:string">minLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">36.419</value></value></item></multiRef>
+<multiRef id="id18" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns15:Map" xmlns:ns15="http://xml.apache.org/xml-soap" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><item><key xsi:type="soapenc:string">maxDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2038-12-31T22:59:59.000Z</value></value></item><item><key xsi:type="soapenc:string">minDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2004-03-10T01:40:00.000Z</value></value></item><item><key xsi:type="soapenc:string">minLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">63.121</value></value></item><item><key xsi:type="soapenc:string">maxLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">80.92</value></value></item><item><key xsi:type="soapenc:string">maxLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">0.158</value></value></item><item><key xsi:type="soapenc:string">minLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">-3.675</value></value></item></multiRef>
+<multiRef id="id14" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns16:Map" xmlns:ns16="http://xml.apache.org/xml-soap" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><item><key xsi:type="soapenc:string">maxDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2038-12-31T22:59:59.000Z</value></value></item><item><key xsi:type="soapenc:string">minDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2003-01-12T05:15:00.000Z</value></value></item><item><key xsi:type="soapenc:string">minLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">-42.88</value></value></item><item><key xsi:type="soapenc:string">maxLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">-20.85</value></value></item><item><key xsi:type="soapenc:string">maxLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">61.41</value></value></item><item><key xsi:type="soapenc:string">minLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">43.2</value></value></item></multiRef>
+<multiRef id="id13" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns17:Map" xmlns:ns17="http://xml.apache.org/xml-soap" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><item><key xsi:type="soapenc:string">maxDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2038-12-31T22:59:59.000Z</value></value></item><item><key xsi:type="soapenc:string">minDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2004-12-01T16:50:00.000Z</value></value></item><item><key xsi:type="soapenc:string">minLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">108.962</value></value></item><item><key xsi:type="soapenc:string">maxLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">114.713</value></value></item><item><key xsi:type="soapenc:string">maxLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">-35.262</value></value></item><item><key xsi:type="soapenc:string">minLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">-42.756</value></value></item></multiRef>
+<multiRef id="id17" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns18:Map" xmlns:ns18="http://xml.apache.org/xml-soap" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><item><key xsi:type="soapenc:string">maxDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2038-12-31T22:59:59.000Z</value></value></item><item><key xsi:type="soapenc:string">minDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2003-10-10T11:52:00.000Z</value></value></item><item><key xsi:type="soapenc:string">minLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">68.14</value></value></item><item><key xsi:type="soapenc:string">maxLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">95.987</value></value></item><item><key xsi:type="soapenc:string">maxLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">3.97</value></value></item><item><key xsi:type="soapenc:string">minLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">-1.242</value></value></item></multiRef>
+<multiRef id="id16" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns19:Map" xmlns:ns19="http://xml.apache.org/xml-soap" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><item><key xsi:type="soapenc:string">maxDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2038-12-31T22:59:59.000Z</value></value></item><item><key xsi:type="soapenc:string">minDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2004-01-10T10:35:00.000Z</value></value></item><item><key xsi:type="soapenc:string">minLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">67.71</value></value></item><item><key xsi:type="soapenc:string">maxLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">77.743</value></value></item><item><key xsi:type="soapenc:string">maxLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">3.546</value></value></item><item><key xsi:type="soapenc:string">minLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">-1.965</value></value></item></multiRef>
+<multiRef id="id19" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns20:Map" xmlns:ns20="http://xml.apache.org/xml-soap" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><item><key xsi:type="soapenc:string">maxDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2038-12-31T22:59:59.000Z</value></value></item><item><key xsi:type="soapenc:string">minDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2004-04-09T23:00:00.000Z</value></value></item><item><key xsi:type="soapenc:string">minLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">59.116</value></value></item><item><key xsi:type="soapenc:string">maxLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">69.206</value></value></item><item><key xsi:type="soapenc:string">maxLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">-2.274</value></value></item><item><key xsi:type="soapenc:string">minLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">-4.093</value></value></item></multiRef>
+<multiRef id="id11" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns21:Map" xmlns:ns21="http://xml.apache.org/xml-soap" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><item><key xsi:type="soapenc:string">maxDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2038-12-31T22:59:59.000Z</value></value></item><item><key xsi:type="soapenc:string">minDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2002-11-09T23:10:00.000Z</value></value></item><item><key xsi:type="soapenc:string">minLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">156.013</value></value></item><item><key xsi:type="soapenc:string">maxLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">160.042</value></value></item><item><key xsi:type="soapenc:string">maxLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">5.648</value></value></item><item><key xsi:type="soapenc:string">minLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">4.773</value></value></item></multiRef>
+<multiRef id="id12" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns22:Map" xmlns:ns22="http://xml.apache.org/xml-soap" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><item><key xsi:type="soapenc:string">maxDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2038-12-31T22:59:59.000Z</value></value></item><item><key xsi:type="soapenc:string">minDateTime</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="xsd:dateTime">2004-11-01T16:58:00.000Z</value></value></item><item><key xsi:type="soapenc:string">minLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">108.11</value></value></item><item><key xsi:type="soapenc:string">maxLongitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">113.383</value></value></item><item><key xsi:type="soapenc:string">maxLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">-31.666</value></value></item><item><key xsi:type="soapenc:string">minLatitude</key><value soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array"><value xsi:type="soapenc:double">-35.075</value></value></item></multiRef>
+</soapenv:Body></soapenv:Envelope>
+EOF;
+ }
+}
+for ($i = 0; $i < 10; $i++) {
+ $ws=new TestSoapClient(dirname(__FILE__).'/bug37083.wsdl',
+ array('encoding'=>'ISO-8859-1',
+ 'cache_wsdl'=>WSDL_CACHE_BOTH));
+ $search=new stdClass();
+ $search->queryString='argo';
+ $search->ranges[]=$r=new stdClass();
+ $r->field='maxDateTime';
+ $r->min='2003-04-01';
+ $search->index='all';
+ $res=$ws->search($search,0,10);
+}
+echo "ok\n";
+?>
+--EXPECT--
+ok
diff --git a/ext/soap/tests/bugs/bug37083.wsdl b/ext/soap/tests/bugs/bug37083.wsdl
new file mode 100755
index 000000000..2a3b37980
--- /dev/null
+++ b/ext/soap/tests/bugs/bug37083.wsdl
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns:intf="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <wsdl:types>
+ <schema targetNamespace="urn:java:de.pangaea.metadataportal.search.SearchService" xmlns="http://www.w3.org/2001/XMLSchema">
+ <import namespace="http://xml.apache.org/xml-soap"/>
+ <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+ <complexType name="SearchRequestRange">
+ <sequence>
+ <element name="field" nillable="true" type="xsd:string"/>
+ <element name="max" nillable="true" type="xsd:anyType"/>
+ <element name="min" nillable="true" type="xsd:anyType"/>
+ </sequence>
+ </complexType>
+ <complexType name="ArrayOfSearchRequestRange">
+ <complexContent>
+ <restriction base="soapenc:Array">
+ <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:SearchRequestRange[]"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+ <complexType name="SearchRequest">
+ <sequence>
+ <element name="index" nillable="true" type="xsd:string"/>
+ <element name="queryString" nillable="true" type="xsd:string"/>
+ <element name="ranges" nillable="true" type="impl:ArrayOfSearchRequestRange"/>
+ </sequence>
+ </complexType>
+ <complexType name="SearchResponseItem">
+ <sequence>
+ <element name="fields" nillable="true" type="apachesoap:Map"/>
+ <element name="identifier" nillable="true" type="xsd:string"/>
+ <element name="score" type="xsd:float"/>
+ <element name="xml" nillable="true" type="xsd:string"/>
+ </sequence>
+ </complexType>
+ <complexType name="ArrayOfSearchResponseItem">
+ <complexContent>
+ <restriction base="soapenc:Array">
+ <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:SearchResponseItem[]"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+ <complexType name="SearchResponse">
+ <sequence>
+ <element name="offset" type="xsd:int"/>
+ <element name="queryTime" type="xsd:long"/>
+ <element name="results" nillable="true" type="impl:ArrayOfSearchResponseItem"/>
+ <element name="totalCount" type="xsd:int"/>
+ </sequence>
+ </complexType>
+ </schema>
+ <schema targetNamespace="http://xml.apache.org/xml-soap" xmlns="http://www.w3.org/2001/XMLSchema">
+ <import namespace="urn:java:de.pangaea.metadataportal.search.SearchService"/>
+ <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+ <complexType name="mapItem">
+ <sequence>
+ <element name="key" nillable="true" type="xsd:anyType"/>
+ <element name="value" nillable="true" type="xsd:anyType"/>
+ </sequence>
+ </complexType>
+ <complexType name="Map">
+ <sequence>
+ <element maxOccurs="unbounded" minOccurs="0" name="item" type="apachesoap:mapItem"/>
+ </sequence>
+ </complexType>
+ </schema>
+ </wsdl:types>
+ <wsdl:message name="searchRequest">
+ <wsdl:part name="in0" type="impl:SearchRequest"/>
+ <wsdl:part name="in1" type="xsd:int"/>
+ <wsdl:part name="in2" type="xsd:int"/>
+ </wsdl:message>
+ <wsdl:message name="searchResponse">
+ <wsdl:part name="searchReturn" type="impl:SearchResponse"/>
+ </wsdl:message>
+ <wsdl:portType name="SearchServiceAxisImpl">
+ <wsdl:operation name="search" parameterOrder="in0 in1 in2">
+ <wsdl:input message="impl:searchRequest" name="searchRequest"/>
+ <wsdl:output message="impl:searchResponse" name="searchResponse"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="SearchSoapBinding" type="impl:SearchServiceAxisImpl">
+ <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="search">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input name="searchRequest">
+ <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:java:de.pangaea.metadataportal.search.SearchService" use="encoded"/>
+ </wsdl:input>
+ <wsdl:output name="searchResponse">
+ <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:java:de.pangaea.metadataportal.search.SearchService" use="encoded"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="SearchServiceAxisImplService">
+ <wsdl:port binding="impl:SearchSoapBinding" name="Search">
+ <wsdlsoap:address location="test://"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git a/ext/soap/tests/bugs/bug37278.phpt b/ext/soap/tests/bugs/bug37278.phpt
new file mode 100755
index 000000000..eb96f2f3a
--- /dev/null
+++ b/ext/soap/tests/bugs/bug37278.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Bug #37278 (SOAP not respecting uri in __soapCall)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$options = array(
+ "location" => "test://",
+ "uri" => "http://bricolage.sourceforge.net/Bric/SOAP/Auth",
+ "trace" => 1);
+
+$client = new SoapClient(null, $options);
+
+$newNS = "http://bricolage.sourceforge.net/Bric/SOAP/Story";
+
+try {
+ $client->__soapCall("list_ids", array(), array("uri" => $newNS));
+} catch (Exception $e) {
+ print $client->__getLastRequest();
+}
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://bricolage.sourceforge.net/Bric/SOAP/Story" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:list_ids/></SOAP-ENV:Body></SOAP-ENV:Envelope> \ No newline at end of file
diff --git a/ext/soap/tests/classmap003.phpt b/ext/soap/tests/classmap003.phpt
new file mode 100755
index 000000000..30d86c4a8
--- /dev/null
+++ b/ext/soap/tests/classmap003.phpt
@@ -0,0 +1,54 @@
+--TEST--
+SOAP Classmap 3: encoding of inherited objects
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+ini_set("soap.wsdl_cache_enabled",0);
+
+class A {
+ public $x;
+ function __construct($a){
+ $this->x = $a;
+ }
+}
+
+class B extends A {
+ public $y;
+ function __construct($a){
+ parent::__construct($a);
+ $this->y = $a + 1;
+ }
+}
+
+function f(){
+ return new B(5);
+}
+
+class LocalSoapClient extends SoapClient {
+
+ function __construct($wsdl, $options) {
+ parent::__construct($wsdl, $options);
+ $this->server = new SoapServer($wsdl, $options);
+ $this->server->addFunction("f");
+ }
+
+ function __doRequest($request, $location, $action, $version) {
+ ob_start();
+ $this->server->handle($request);
+ $response = ob_get_contents();
+ ob_end_clean();
+ return $response;
+ }
+}
+
+$client = new LocalSoapClient(dirname(__FILE__)."/classmap003.wsdl",
+ array('classmap'=>array('A'=>'A','B'=>'B')));
+print_r($client->f());
+?>
+--EXPECT--
+B Object
+(
+ [y] => 6
+ [x] => 5
+)
diff --git a/ext/soap/tests/classmap003.wsdl b/ext/soap/tests/classmap003.wsdl
new file mode 100755
index 000000000..494c41864
--- /dev/null
+++ b/ext/soap/tests/classmap003.wsdl
@@ -0,0 +1,51 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!-- WSDL file generated by Zend Studio. -->
+
+<definitions name="ab" targetNamespace="urn:ab" xmlns:typens="urn:ab" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
+ <types>
+ <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:ab">
+ <xsd:complexType name="A">
+ <xsd:sequence>
+ <xsd:element name="x" type="xsd:anyType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="B">
+ <xsd:complexContent>
+ <xsd:extension base="typens:A">
+ <xsd:sequence>
+ <xsd:element name="y" type="xsd:anyType"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:schema>
+ </types>
+ <message name="f"/>
+ <message name="fResponse">
+ <part name="fReturn" type="typens:A"/>
+ </message>
+ <portType name="abServerPortType">
+ <operation name="f">
+ <input message="typens:f"/>
+ <output message="typens:fResponse"/>
+ </operation>
+ </portType>
+ <binding name="abServerBinding" type="typens:abServerPortType">
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <operation name="f">
+ <soap:operation soapAction="urn:abServerAction"/>
+ <input>
+ <soap:body namespace="urn:ab" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+ </input>
+ <output>
+ <soap:body namespace="urn:ab" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+ </output>
+ </operation>
+ </binding>
+ <service name="abService">
+ <port name="abServerPort" binding="typens:abServerBinding">
+ <soap:address location="http://localhost/abServer.php"/>
+ </port>
+ </service>
+</definitions>
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_001w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_001w.phpt
index 15a6c0983..fd898a1e2 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_001w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_001w.phpt
@@ -24,3 +24,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/requestresponse"><SOAP-ENV:Body><ns2:echoSOAPStructFaultRequest><ns1:varString>arg</ns1:varString><ns1:varInt>34</ns1:varInt><ns1:varFloat>325.325</ns1:varFloat></ns2:echoSOAPStructFaultRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoSOAPStructFault'.</faultstring><detail><ns2:SOAPStructFaultPart><ns1:soapStruct><ns1:varString>arg</ns1:varString><ns1:varInt>34</ns1:varInt><ns1:varFloat>325.325</ns1:varFloat></ns1:soapStruct></ns2:SOAPStructFaultPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_002w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_002w.phpt
index 1778d38ba..22275ac4f 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_002w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_002w.phpt
@@ -30,3 +30,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/requestresponse"><SOAP-ENV:Body><ns2:echoBaseStructFaultRequest><ns1:structMessage><ns1:varString>a1</ns1:varString><ns1:varInt>11</ns1:varInt><ns1:varFloat>12.345</ns1:varFloat></ns1:structMessage><ns1:shortMessage>11</ns1:shortMessage></ns2:echoBaseStructFaultRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoBaseStructFault'.</faultstring><detail><ns2:BaseStructPart><ns1:structMessage><ns1:varString>a1</ns1:varString><ns1:varInt>11</ns1:varInt><ns1:varFloat>12.345</ns1:varFloat></ns1:structMessage><ns1:shortMessage>11</ns1:shortMessage></ns2:BaseStructPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_003w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_003w.phpt
index cd7cc499d..3fb4e1154 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_003w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_003w.phpt
@@ -38,3 +38,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/requestresponse"><SOAP-ENV:Body><ns2:echoExtendedStructFaultRequest><ns1:structMessage><ns1:varString>a1</ns1:varString><ns1:varInt>11</ns1:varInt><ns1:varFloat>12.345</ns1:varFloat></ns1:structMessage><ns1:shortMessage>12</ns1:shortMessage><ns1:stringMessage>arg</ns1:stringMessage><ns1:intMessage>-3</ns1:intMessage><ns1:anotherIntMessage>5</ns1:anotherIntMessage></ns2:echoExtendedStructFaultRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoExtendedStructFault'.</faultstring><detail><ns2:ExtendedStructPart><ns1:structMessage><ns1:varString>a1</ns1:varString><ns1:varInt>11</ns1:varInt><ns1:varFloat>12.345</ns1:varFloat></ns1:structMessage><ns1:shortMessage>12</ns1:shortMessage><ns1:stringMessage>arg</ns1:stringMessage><ns1:intMessage>-3</ns1:intMessage><ns1:anotherIntMessage>5</ns1:anotherIntMessage></ns2:ExtendedStructPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_004w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_004w.phpt
index 421878bb8..42ea0eef2 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_004w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_004w.phpt
@@ -33,3 +33,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults1Request><ns1:whichFault>1</ns1:whichFault><ns1:param1><ns2:varString>arg1</ns2:varString><ns2:varInt>34</ns2:varInt><ns2:varFloat>325.325</ns2:varFloat></ns1:param1><ns1:param2><ns2:structMessage><ns2:varString>arg2</ns2:varString><ns2:varInt>34</ns2:varInt><ns2:varFloat>325.325</ns2:varFloat></ns2:structMessage><ns2:shortMessage>12</ns2:shortMessage></ns1:param2></ns1:echoMultipleFaults1Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns2:SOAPStructFaultPart><ns1:soapStruct><ns1:varString>arg1</ns1:varString><ns1:varInt>34</ns1:varInt><ns1:varFloat>325.325</ns1:varFloat></ns1:soapStruct></ns2:SOAPStructFaultPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_005w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_005w.phpt
index 9b3b0be5e..34e9baf7d 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_005w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_005w.phpt
@@ -33,3 +33,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults1Request><ns1:whichFault>2</ns1:whichFault><ns1:param1><ns2:varString>arg1</ns2:varString><ns2:varInt>34</ns2:varInt><ns2:varFloat>325.325</ns2:varFloat></ns1:param1><ns1:param2><ns2:structMessage><ns2:varString>arg2</ns2:varString><ns2:varInt>34</ns2:varInt><ns2:varFloat>325.325</ns2:varFloat></ns2:structMessage><ns2:shortMessage>12</ns2:shortMessage></ns1:param2></ns1:echoMultipleFaults1Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns2:BaseStructPart><ns1:structMessage><ns1:varString>arg2</ns1:varString><ns1:varInt>34</ns1:varInt><ns1:varFloat>325.325</ns1:varFloat></ns1:structMessage><ns1:shortMessage>12</ns1:shortMessage></ns2:BaseStructPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_006w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_006w.phpt
index e6566888f..db21c2e51 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_006w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_006w.phpt
@@ -33,3 +33,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults1Request><ns1:whichFault>3</ns1:whichFault><ns1:param1><ns2:varString>arg1</ns2:varString><ns2:varInt>34</ns2:varInt><ns2:varFloat>325.325</ns2:varFloat></ns1:param1><ns1:param2><ns2:structMessage><ns2:varString>arg2</ns2:varString><ns2:varInt>34</ns2:varInt><ns2:varFloat>325.325</ns2:varFloat></ns2:structMessage><ns2:shortMessage>12</ns2:shortMessage></ns1:param2></ns1:echoMultipleFaults1Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns2:SOAPStructFaultPart><ns1:soapStruct><ns1:varString>arg1</ns1:varString><ns1:varInt>34</ns1:varInt><ns1:varFloat>325.325</ns1:varFloat></ns1:soapStruct></ns2:SOAPStructFaultPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_007w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_007w.phpt
index 54db2ebe4..73da00e8e 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_007w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_007w.phpt
@@ -49,3 +49,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults2Request><ns1:whichFault>1</ns1:whichFault><ns1:param1><ns2:structMessage><ns2:varString>s1</ns2:varString><ns2:varInt>1</ns2:varInt><ns2:varFloat>1.1</ns2:varFloat></ns2:structMessage><ns2:shortMessage>1</ns2:shortMessage></ns1:param1><ns1:param2><ns2:structMessage><ns2:varString>s2</ns2:varString><ns2:varInt>2</ns2:varInt><ns2:varFloat>2.2</ns2:varFloat></ns2:structMessage><ns2:shortMessage>2</ns2:shortMessage><ns2:stringMessage>arg</ns2:stringMessage><ns2:intMessage>-3</ns2:intMessage><ns2:anotherIntMessage>5</ns2:anotherIntMessage></ns1:param2><ns1:param3><ns2:structMessage><ns2:varString>s3</ns2:varString><ns2:varInt>3</ns2:varInt><ns2:varFloat>3.3</ns2:varFloat></ns2:structMessage><ns2:shortMessage>3</ns2:shortMessage><ns2:stringMessage>arg</ns2:stringMessage><ns2:intMessage>-3</ns2:intMessage><ns2:anotherIntMessage>5</ns2:anotherIntMessage><ns2:booleanMessage>true</ns2:booleanMessage></ns1:param3></ns1:echoMultipleFaults2Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns2:BaseStructPart><ns1:structMessage><ns1:varString>s1</ns1:varString><ns1:varInt>1</ns1:varInt><ns1:varFloat>1.1</ns1:varFloat></ns1:structMessage><ns1:shortMessage>1</ns1:shortMessage></ns2:BaseStructPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_008w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_008w.phpt
index bbb39de71..3fa3e6d77 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_008w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_008w.phpt
@@ -49,3 +49,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults2Request><ns1:whichFault>2</ns1:whichFault><ns1:param1><ns2:structMessage><ns2:varString>s1</ns2:varString><ns2:varInt>1</ns2:varInt><ns2:varFloat>1.1</ns2:varFloat></ns2:structMessage><ns2:shortMessage>1</ns2:shortMessage></ns1:param1><ns1:param2><ns2:structMessage><ns2:varString>s2</ns2:varString><ns2:varInt>2</ns2:varInt><ns2:varFloat>2.2</ns2:varFloat></ns2:structMessage><ns2:shortMessage>2</ns2:shortMessage><ns2:stringMessage>arg</ns2:stringMessage><ns2:intMessage>-3</ns2:intMessage><ns2:anotherIntMessage>5</ns2:anotherIntMessage></ns1:param2><ns1:param3><ns2:structMessage><ns2:varString>s3</ns2:varString><ns2:varInt>3</ns2:varInt><ns2:varFloat>3.3</ns2:varFloat></ns2:structMessage><ns2:shortMessage>3</ns2:shortMessage><ns2:stringMessage>arg</ns2:stringMessage><ns2:intMessage>-3</ns2:intMessage><ns2:anotherIntMessage>5</ns2:anotherIntMessage><ns2:booleanMessage>true</ns2:booleanMessage></ns1:param3></ns1:echoMultipleFaults2Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns2:ExtendedStructPart><ns1:structMessage><ns1:varString>s2</ns1:varString><ns1:varInt>2</ns1:varInt><ns1:varFloat>2.2</ns1:varFloat></ns1:structMessage><ns1:shortMessage>2</ns1:shortMessage><ns1:stringMessage>arg</ns1:stringMessage><ns1:intMessage>-3</ns1:intMessage><ns1:anotherIntMessage>5</ns1:anotherIntMessage></ns2:ExtendedStructPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_009w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_009w.phpt
index 28e9208c0..340c25a8c 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_009w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_009w.phpt
@@ -49,3 +49,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults2Request><ns1:whichFault>3</ns1:whichFault><ns1:param1><ns2:structMessage><ns2:varString>s1</ns2:varString><ns2:varInt>1</ns2:varInt><ns2:varFloat>1.1</ns2:varFloat></ns2:structMessage><ns2:shortMessage>1</ns2:shortMessage></ns1:param1><ns1:param2><ns2:structMessage><ns2:varString>s2</ns2:varString><ns2:varInt>2</ns2:varInt><ns2:varFloat>2.2</ns2:varFloat></ns2:structMessage><ns2:shortMessage>2</ns2:shortMessage><ns2:stringMessage>arg</ns2:stringMessage><ns2:intMessage>-3</ns2:intMessage><ns2:anotherIntMessage>5</ns2:anotherIntMessage></ns1:param2><ns1:param3><ns2:structMessage><ns2:varString>s3</ns2:varString><ns2:varInt>3</ns2:varInt><ns2:varFloat>3.3</ns2:varFloat></ns2:structMessage><ns2:shortMessage>3</ns2:shortMessage><ns2:stringMessage>arg</ns2:stringMessage><ns2:intMessage>-3</ns2:intMessage><ns2:anotherIntMessage>5</ns2:anotherIntMessage><ns2:booleanMessage>true</ns2:booleanMessage></ns1:param3></ns1:echoMultipleFaults2Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns2:MoreExtendedStructPart><ns1:structMessage><ns1:varString>s3</ns1:varString><ns1:varInt>3</ns1:varInt><ns1:varFloat>3.3</ns1:varFloat></ns1:structMessage><ns1:shortMessage>3</ns1:shortMessage><ns1:stringMessage>arg</ns1:stringMessage><ns1:intMessage>-3</ns1:intMessage><ns1:anotherIntMessage>5</ns1:anotherIntMessage><ns1:booleanMessage>true</ns1:booleanMessage></ns2:MoreExtendedStructPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_010w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_010w.phpt
index 7c047e885..c89ac264d 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_010w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_doclit_010w.phpt
@@ -49,3 +49,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults2Request><ns1:whichFault>4</ns1:whichFault><ns1:param1><ns2:structMessage><ns2:varString>s1</ns2:varString><ns2:varInt>1</ns2:varInt><ns2:varFloat>1.1</ns2:varFloat></ns2:structMessage><ns2:shortMessage>1</ns2:shortMessage></ns1:param1><ns1:param2><ns2:structMessage><ns2:varString>s2</ns2:varString><ns2:varInt>2</ns2:varInt><ns2:varFloat>2.2</ns2:varFloat></ns2:structMessage><ns2:shortMessage>2</ns2:shortMessage><ns2:stringMessage>arg</ns2:stringMessage><ns2:intMessage>-3</ns2:intMessage><ns2:anotherIntMessage>5</ns2:anotherIntMessage></ns1:param2><ns1:param3><ns2:structMessage><ns2:varString>s3</ns2:varString><ns2:varInt>3</ns2:varInt><ns2:varFloat>3.3</ns2:varFloat></ns2:structMessage><ns2:shortMessage>3</ns2:shortMessage><ns2:stringMessage>arg</ns2:stringMessage><ns2:intMessage>-3</ns2:intMessage><ns2:anotherIntMessage>5</ns2:anotherIntMessage><ns2:booleanMessage>true</ns2:booleanMessage></ns1:param3></ns1:echoMultipleFaults2Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns2:BaseStructPart><ns1:structMessage><ns1:varString>s1</ns1:varString><ns1:varInt>1</ns1:varInt><ns1:varFloat>1.1</ns1:varFloat></ns1:structMessage><ns1:shortMessage>1</ns1:shortMessage></ns2:BaseStructPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_001w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_001w.phpt
index 3c77e08f0..a0601aaac 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_001w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_001w.phpt
@@ -24,3 +24,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoSOAPStructFault><param xsi:type="ns2:SOAPStructFault"><soapStruct xsi:type="ns2:SOAPStruct"><varString xsi:type="xsd:string">arg</varString><varInt xsi:type="xsd:int">34</varInt><varFloat xsi:type="xsd:float">325.325</varFloat></soapStruct></param></ns1:echoSOAPStructFault></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoSOAPStructFault'.</faultstring><detail><ns2:part1 xsi:type="ns1:SOAPStructFault"><soapStruct xsi:type="ns1:SOAPStruct"><varString xsi:type="xsd:string">arg</varString><varInt xsi:type="xsd:int">34</varInt><varFloat xsi:type="xsd:float">325.325</varFloat></soapStruct></ns2:part1></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_002w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_002w.phpt
index 9b1a2b2bf..9d80f80e1 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_002w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_002w.phpt
@@ -23,3 +23,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoBaseStructFault><param xsi:type="ns2:BaseStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">12</shortMessage></param></ns1:echoBaseStructFault></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoBaseStructFault'.</faultstring><detail><ns2:part2 xsi:type="ns1:BaseStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">12</shortMessage></ns2:part2></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_003w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_003w.phpt
index db2890c8e..ff787f9a7 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_003w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_003w.phpt
@@ -31,3 +31,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoExtendedStructFault><param xsi:type="ns2:ExtendedStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">12</shortMessage><stringMessage xsi:type="xsd:string">arg</stringMessage><intMessage xsi:type="xsd:int">-3</intMessage><anotherIntMessage xsi:type="xsd:int">5</anotherIntMessage></param></ns1:echoExtendedStructFault></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoExtendedStructFault'.</faultstring><detail><ns2:part3 xsi:type="ns1:ExtendedStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">12</shortMessage><stringMessage xsi:type="xsd:string">arg</stringMessage><intMessage xsi:type="xsd:int">-3</intMessage><anotherIntMessage xsi:type="xsd:int">5</anotherIntMessage></ns2:part3></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_004w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_004w.phpt
index 0846a04ba..b68e464ac 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_004w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_004w.phpt
@@ -31,3 +31,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults1><whichFault xsi:type="xsd:int">1</whichFault><param1 xsi:type="ns2:SOAPStruct"><varString xsi:type="xsd:string">arg</varString><varInt xsi:type="xsd:int">34</varInt><varFloat xsi:type="xsd:float">325.325</varFloat></param1><param2 xsi:type="ns2:BaseStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">12</shortMessage></param2></ns1:echoMultipleFaults1></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns2:part1 xsi:type="ns1:SOAPStructFault"><soapStruct xsi:type="ns1:SOAPStruct"><varString xsi:type="xsd:string">arg</varString><varInt xsi:type="xsd:int">34</varInt><varFloat xsi:type="xsd:float">325.325</varFloat></soapStruct></ns2:part1></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_005w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_005w.phpt
index 03db1a245..eef797fa5 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_005w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_005w.phpt
@@ -31,3 +31,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults1><whichFault xsi:type="xsd:int">2</whichFault><param1 xsi:type="ns2:SOAPStruct"><varString xsi:type="xsd:string">arg</varString><varInt xsi:type="xsd:int">34</varInt><varFloat xsi:type="xsd:float">325.325</varFloat></param1><param2 xsi:type="ns2:BaseStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">12</shortMessage></param2></ns1:echoMultipleFaults1></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns2:part2 xsi:type="ns1:BaseStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">12</shortMessage></ns2:part2></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_006w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_006w.phpt
index e5fa8540a..adf675701 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_006w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_006w.phpt
@@ -31,3 +31,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults1><whichFault xsi:type="xsd:int">3</whichFault><param1 xsi:type="ns2:SOAPStruct"><varString xsi:type="xsd:string">arg</varString><varInt xsi:type="xsd:int">34</varInt><varFloat xsi:type="xsd:float">325.325</varFloat></param1><param2 xsi:type="ns2:BaseStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">12</shortMessage></param2></ns1:echoMultipleFaults1></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns2:part1 xsi:type="ns1:SOAPStructFault"><soapStruct xsi:type="ns1:SOAPStruct"><varString xsi:type="xsd:string">arg</varString><varInt xsi:type="xsd:int">34</varInt><varFloat xsi:type="xsd:float">325.325</varFloat></soapStruct></ns2:part1></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_007w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_007w.phpt
index 8df5e9a94..a1a345d5e 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_007w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_007w.phpt
@@ -39,3 +39,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults2><whichFault xsi:type="xsd:int">1</whichFault><param1 xsi:type="ns2:BaseStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">1</shortMessage></param1><param2 xsi:type="ns2:ExtendedStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">2</shortMessage><stringMessage xsi:type="xsd:string">arg</stringMessage><intMessage xsi:type="xsd:int">-3</intMessage><anotherIntMessage xsi:type="xsd:int">5</anotherIntMessage></param2><param3 xsi:type="ns2:MoreExtendedStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">3</shortMessage><stringMessage xsi:type="xsd:string">arg</stringMessage><intMessage xsi:type="xsd:int">-3</intMessage><anotherIntMessage xsi:type="xsd:int">5</anotherIntMessage><booleanMessage xsi:type="xsd:boolean">true</booleanMessage></param3></ns1:echoMultipleFaults2></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns2:part2 xsi:type="ns1:BaseStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">1</shortMessage></ns2:part2></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_008w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_008w.phpt
index ed1a38cb1..fc7d74709 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_008w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_008w.phpt
@@ -39,3 +39,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults2><whichFault xsi:type="xsd:int">2</whichFault><param1 xsi:type="ns2:BaseStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">1</shortMessage></param1><param2 xsi:type="ns2:ExtendedStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">2</shortMessage><stringMessage xsi:type="xsd:string">arg</stringMessage><intMessage xsi:type="xsd:int">-3</intMessage><anotherIntMessage xsi:type="xsd:int">5</anotherIntMessage></param2><param3 xsi:type="ns2:MoreExtendedStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">3</shortMessage><stringMessage xsi:type="xsd:string">arg</stringMessage><intMessage xsi:type="xsd:int">-3</intMessage><anotherIntMessage xsi:type="xsd:int">5</anotherIntMessage><booleanMessage xsi:type="xsd:boolean">true</booleanMessage></param3></ns1:echoMultipleFaults2></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns2:part3 xsi:type="ns1:ExtendedStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">2</shortMessage><stringMessage xsi:type="xsd:string">arg</stringMessage><intMessage xsi:type="xsd:int">-3</intMessage><anotherIntMessage xsi:type="xsd:int">5</anotherIntMessage></ns2:part3></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_009w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_009w.phpt
index 1c206ff81..7f4bde62d 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_009w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_009w.phpt
@@ -39,3 +39,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults2><whichFault xsi:type="xsd:int">3</whichFault><param1 xsi:type="ns2:BaseStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">1</shortMessage></param1><param2 xsi:type="ns2:ExtendedStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">2</shortMessage><stringMessage xsi:type="xsd:string">arg</stringMessage><intMessage xsi:type="xsd:int">-3</intMessage><anotherIntMessage xsi:type="xsd:int">5</anotherIntMessage></param2><param3 xsi:type="ns2:MoreExtendedStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">3</shortMessage><stringMessage xsi:type="xsd:string">arg</stringMessage><intMessage xsi:type="xsd:int">-3</intMessage><anotherIntMessage xsi:type="xsd:int">5</anotherIntMessage><booleanMessage xsi:type="xsd:boolean">true</booleanMessage></param3></ns1:echoMultipleFaults2></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns2:part4 xsi:type="ns1:MoreExtendedStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">3</shortMessage><stringMessage xsi:type="xsd:string">arg</stringMessage><intMessage xsi:type="xsd:int">-3</intMessage><anotherIntMessage xsi:type="xsd:int">5</anotherIntMessage><booleanMessage xsi:type="xsd:boolean">true</booleanMessage></ns2:part4></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_010w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_010w.phpt
index 8d7597655..5adca12d9 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_010w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_complex_rpcenc_010w.phpt
@@ -39,3 +39,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults2><whichFault xsi:type="xsd:int">4</whichFault><param1 xsi:type="ns2:BaseStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">1</shortMessage></param1><param2 xsi:type="ns2:ExtendedStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">2</shortMessage><stringMessage xsi:type="xsd:string">arg</stringMessage><intMessage xsi:type="xsd:int">-3</intMessage><anotherIntMessage xsi:type="xsd:int">5</anotherIntMessage></param2><param3 xsi:type="ns2:MoreExtendedStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">3</shortMessage><stringMessage xsi:type="xsd:string">arg</stringMessage><intMessage xsi:type="xsd:int">-3</intMessage><anotherIntMessage xsi:type="xsd:int">5</anotherIntMessage><booleanMessage xsi:type="xsd:boolean">true</booleanMessage></param3></ns1:echoMultipleFaults2></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns2:part2 xsi:type="ns1:BaseStruct"><floatMessage xsi:type="xsd:float">12.345</floatMessage><shortMessage xsi:type="xsd:short">1</shortMessage></ns2:part2></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_001w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_001w.phpt
index 576b664db..ee719f17c 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_001w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_001w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse"><SOAP-ENV:Body><ns1:echoEmptyFaultRequest/></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoEmptyFault'.</faultstring><detail><ns1:EmptyPart/></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_002w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_002w.phpt
index 5484df49c..7ea0f6f13 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_002w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_002w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse"><SOAP-ENV:Body><ns1:echoStringFaultRequest>Hello World</ns1:echoStringFaultRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoStringFault'.</faultstring><detail><ns1:StringPart>Hello World</ns1:StringPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_003w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_003w.phpt
index c6f519d13..937e49f3a 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_003w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_003w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/requestresponse"><SOAP-ENV:Body><ns2:echoIntArrayFaultRequest><ns1:value>34</ns1:value><ns1:value>12</ns1:value></ns2:echoIntArrayFaultRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoIntArrayFault'.</faultstring><detail><ns2:ArrayOfIntPart><ns1:value>34</ns1:value><ns1:value>12</ns1:value></ns2:ArrayOfIntPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_004w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_004w.phpt
index 61c1e59be..00530b56c 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_004w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_004w.phpt
@@ -18,3 +18,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults1Request><ns1:whichFault>1</ns1:whichFault><ns1:param1>Hello world</ns1:param1><ns1:param2><ns2:value>12.345</ns2:value><ns2:value>45</ns2:value><ns2:value>678</ns2:value></ns1:param2></ns1:echoMultipleFaults1Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns1:EmptyPart/></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_005w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_005w.phpt
index dd65751c4..ac77defb8 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_005w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_005w.phpt
@@ -18,3 +18,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults1Request><ns1:whichFault>2</ns1:whichFault><ns1:param1>Hello world</ns1:param1><ns1:param2><ns2:value>12.345</ns2:value><ns2:value>45</ns2:value><ns2:value>678</ns2:value></ns1:param2></ns1:echoMultipleFaults1Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns1:StringPart>Hello world</ns1:StringPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_006w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_006w.phpt
index a8ba99206..5246dad51 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_006w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_006w.phpt
@@ -18,3 +18,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults1Request><ns1:whichFault>3</ns1:whichFault><ns1:param1>Hello world</ns1:param1><ns1:param2><ns2:value>12.345</ns2:value><ns2:value>45</ns2:value><ns2:value>678</ns2:value></ns1:param2></ns1:echoMultipleFaults1Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns2:ArrayOfFloatPart><ns1:value>12.345</ns1:value><ns1:value>45</ns1:value><ns1:value>678</ns1:value></ns2:ArrayOfFloatPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_007w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_007w.phpt
index 5cc2c2062..acf66959c 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_007w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_007w.phpt
@@ -18,3 +18,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults1Request><ns1:whichFault>4</ns1:whichFault><ns1:param1>Hello world</ns1:param1><ns1:param2><ns2:value>12.345</ns2:value><ns2:value>45</ns2:value><ns2:value>678</ns2:value></ns1:param2></ns1:echoMultipleFaults1Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns1:EmptyPart/></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_008w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_008w.phpt
index 3125a4c0c..27c9623db 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_008w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_008w.phpt
@@ -19,3 +19,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults2Request><ns1:whichFault>1</ns1:whichFault><ns1:param1>Hello world</ns1:param1><ns1:param2>12.345</ns1:param2><ns1:param3><ns2:value>one</ns2:value><ns2:value>two</ns2:value><ns2:value>three</ns2:value></ns1:param3></ns1:echoMultipleFaults2Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns1:FloatPart>12.345</ns1:FloatPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_009w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_009w.phpt
index 460af7915..783e52047 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_009w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_009w.phpt
@@ -19,3 +19,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults2Request><ns1:whichFault>2</ns1:whichFault><ns1:param1>Hello world</ns1:param1><ns1:param2>12.345</ns1:param2><ns1:param3><ns2:value>one</ns2:value><ns2:value>two</ns2:value><ns2:value>three</ns2:value></ns1:param3></ns1:echoMultipleFaults2Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns1:StringPart>Hello world</ns1:StringPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_010w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_010w.phpt
index c5c7ba738..8d05a088d 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_010w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_010w.phpt
@@ -19,3 +19,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults2Request><ns1:whichFault>3</ns1:whichFault><ns1:param1>Hello world</ns1:param1><ns1:param2>12.345</ns1:param2><ns1:param3><ns2:value>one</ns2:value><ns2:value>two</ns2:value><ns2:value>three</ns2:value></ns1:param3></ns1:echoMultipleFaults2Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns2:ArrayOfStringPart><ns1:value>one</ns1:value><ns1:value>two</ns1:value><ns1:value>three</ns1:value></ns2:ArrayOfStringPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_011w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_011w.phpt
index 9753e9854..0af808b48 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_011w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_011w.phpt
@@ -19,3 +19,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse" xmlns:ns2="http://soapinterop.org/types"><SOAP-ENV:Body><ns1:echoMultipleFaults2Request><ns1:whichFault>4</ns1:whichFault><ns1:param1>Hello world</ns1:param1><ns1:param2>12.345</ns1:param2><ns1:param3><ns2:value>one</ns2:value><ns2:value>two</ns2:value><ns2:value>three</ns2:value></ns1:param3></ns1:echoMultipleFaults2Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns1:FloatPart>12.345</ns1:FloatPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_012w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_012w.phpt
index 7bf2ae3a7..86a86f4d9 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_012w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_012w.phpt
@@ -18,3 +18,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse"><SOAP-ENV:Body><ns1:echoMultipleFaults3Request><ns1:whichFault>1</ns1:whichFault><ns1:param1>arg1</ns1:param1><ns1:param2>arg2</ns1:param2></ns1:echoMultipleFaults3Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults3'.</faultstring><detail><ns1:StringPart>arg1</ns1:StringPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_013w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_013w.phpt
index 058e16eb2..7718a4722 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_013w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_013w.phpt
@@ -18,3 +18,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse"><SOAP-ENV:Body><ns1:echoMultipleFaults3Request><ns1:whichFault>2</ns1:whichFault><ns1:param1>arg1</ns1:param1><ns1:param2>arg2</ns1:param2></ns1:echoMultipleFaults3Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults3'.</faultstring><detail><ns1:String2Part>arg2</ns1:String2Part></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_014w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_014w.phpt
index ab1028bbe..d35a075f5 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_014w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_014w.phpt
@@ -18,3 +18,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse"><SOAP-ENV:Body><ns1:echoMultipleFaults3Request><ns1:whichFault>3</ns1:whichFault><ns1:param1>arg1</ns1:param1><ns1:param2>arg2</ns1:param2></ns1:echoMultipleFaults3Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults3'.</faultstring><detail><ns1:StringPart>arg1</ns1:StringPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_015w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_015w.phpt
index d3949c91a..2a652e719 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_015w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_015w.phpt
@@ -18,3 +18,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse"><SOAP-ENV:Body><ns1:echoMultipleFaults4Request><ns1:whichFault>1</ns1:whichFault><ns1:param1>162</ns1:param1><ns1:param2>1</ns1:param2></ns1:echoMultipleFaults4Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults4'.</faultstring><detail><ns1:IntPart>162</ns1:IntPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_016w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_016w.phpt
index b16cc2375..81eb3e98e 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_016w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_016w.phpt
@@ -18,3 +18,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse"><SOAP-ENV:Body><ns1:echoMultipleFaults4Request><ns1:whichFault>2</ns1:whichFault><ns1:param1>162</ns1:param1><ns1:param2>1</ns1:param2></ns1:echoMultipleFaults4Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults4'.</faultstring><detail><ns1:EnumPart>1</ns1:EnumPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_017w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_017w.phpt
index 442f45261..08ca44adc 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_017w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_doclit_017w.phpt
@@ -18,3 +18,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/requestresponse"><SOAP-ENV:Body><ns1:echoMultipleFaults4Request><ns1:whichFault>3</ns1:whichFault><ns1:param1>162</ns1:param1><ns1:param2>1</ns1:param2></ns1:echoMultipleFaults4Request></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types/part"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults4'.</faultstring><detail><ns1:IntPart>162</ns1:IntPart></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_001w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_001w.phpt
index 8582257d2..d5421dcde 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_001w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_001w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoEmptyFault/></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoEmptyFault'.</faultstring><detail><ns2:part1 xsi:nil="true" xsi:type="ns1:EmptyFault"/></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_002w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_002w.phpt
index f86355121..80957682f 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_002w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_002w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoStringFault><param xsi:type="xsd:string">Hello World</param></ns1:echoStringFault></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoStringFault'.</faultstring><detail><ns1:part2 xsi:type="xsd:string">Hello World</ns1:part2></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_003w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_003w.phpt
index 0cddcdc94..19a00e47f 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_003w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_003w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoIntArrayFault><param SOAP-ENC:arrayType="xsd:int[2]" xsi:type="ns2:ArrayOfInt"><item xsi:type="xsd:int">34</item><item xsi:type="xsd:int">12</item></param></ns1:echoIntArrayFault></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoIntArrayFault'.</faultstring><detail><ns2:part5 SOAP-ENC:arrayType="xsd:int[2]" xsi:type="ns1:ArrayOfInt"><item xsi:type="xsd:int">34</item><item xsi:type="xsd:int">12</item></ns2:part5></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_004w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_004w.phpt
index dbf1d63f1..7a237647e 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_004w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_004w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults1><whichFault xsi:type="xsd:int">1</whichFault><param1 xsi:type="xsd:string">Hello world</param1><param2 SOAP-ENC:arrayType="xsd:float[3]" xsi:type="ns2:ArrayOfFloat"><item xsi:type="xsd:float">12.345</item><item xsi:type="xsd:float">45</item><item xsi:type="xsd:float">678</item></param2></ns1:echoMultipleFaults1></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns2:part1 xsi:nil="true" xsi:type="ns1:EmptyFault"/></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_005w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_005w.phpt
index 25b4d0145..de07294de 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_005w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_005w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults1><whichFault xsi:type="xsd:int">2</whichFault><param1 xsi:type="xsd:string">Hello world</param1><param2 SOAP-ENC:arrayType="xsd:float[3]" xsi:type="ns2:ArrayOfFloat"><item xsi:type="xsd:float">12.345</item><item xsi:type="xsd:float">45</item><item xsi:type="xsd:float">678</item></param2></ns1:echoMultipleFaults1></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns1:part2 xsi:type="xsd:string">Hello world</ns1:part2></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_006w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_006w.phpt
index b25d7c0e0..8a95c9a46 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_006w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_006w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults1><whichFault xsi:type="xsd:int">3</whichFault><param1 xsi:type="xsd:string">Hello world</param1><param2 SOAP-ENC:arrayType="xsd:float[3]" xsi:type="ns2:ArrayOfFloat"><item xsi:type="xsd:float">12.345</item><item xsi:type="xsd:float">45</item><item xsi:type="xsd:float">678</item></param2></ns1:echoMultipleFaults1></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns2:part7 SOAP-ENC:arrayType="xsd:float[3]" xsi:type="ns1:ArrayOfFloat"><item xsi:type="xsd:float">12.345</item><item xsi:type="xsd:float">45</item><item xsi:type="xsd:float">678</item></ns2:part7></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_007w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_007w.phpt
index f4484b690..153ba5050 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_007w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_007w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults1><whichFault xsi:type="xsd:int">4</whichFault><param1 xsi:type="xsd:string">Hello world</param1><param2 SOAP-ENC:arrayType="xsd:float[3]" xsi:type="ns2:ArrayOfFloat"><item xsi:type="xsd:float">12.345</item><item xsi:type="xsd:float">45</item><item xsi:type="xsd:float">678</item></param2></ns1:echoMultipleFaults1></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults1'.</faultstring><detail><ns2:part1 xsi:nil="true" xsi:type="ns1:EmptyFault"/></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_008w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_008w.phpt
index c7cbd26b9..e5a95d18f 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_008w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_008w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults2><whichFault xsi:type="xsd:int">1</whichFault><param1 xsi:type="xsd:string">Hello World</param1><param2 xsi:type="xsd:float">12.345</param2><param3 SOAP-ENC:arrayType="xsd:string[3]" xsi:type="ns2:ArrayOfString"><item xsi:type="xsd:string">one</item><item xsi:type="xsd:string">two</item><item xsi:type="xsd:string">three</item></param3></ns1:echoMultipleFaults2></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns1:part4 xsi:type="xsd:float">12.345</ns1:part4></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_009w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_009w.phpt
index 28d4819b8..c3cb033ac 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_009w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_009w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults2><whichFault xsi:type="xsd:int">2</whichFault><param1 xsi:type="xsd:string">Hello World</param1><param2 xsi:type="xsd:float">12.345</param2><param3 SOAP-ENC:arrayType="xsd:string[3]" xsi:type="ns2:ArrayOfString"><item xsi:type="xsd:string">one</item><item xsi:type="xsd:string">two</item><item xsi:type="xsd:string">three</item></param3></ns1:echoMultipleFaults2></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns1:part2 xsi:type="xsd:string">Hello World</ns1:part2></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_010w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_010w.phpt
index 0030daebb..dce4032f4 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_010w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_010w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults2><whichFault xsi:type="xsd:int">3</whichFault><param1 xsi:type="xsd:string">Hello World</param1><param2 xsi:type="xsd:float">12.345</param2><param3 SOAP-ENC:arrayType="xsd:string[3]" xsi:type="ns2:ArrayOfString"><item xsi:type="xsd:string">one</item><item xsi:type="xsd:string">two</item><item xsi:type="xsd:string">three</item></param3></ns1:echoMultipleFaults2></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns2:part6 SOAP-ENC:arrayType="xsd:string[3]" xsi:type="ns1:ArrayOfString"><item xsi:type="xsd:string">one</item><item xsi:type="xsd:string">two</item><item xsi:type="xsd:string">three</item></ns2:part6></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_011w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_011w.phpt
index bccad3665..c1fa3000b 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_011w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_011w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults2><whichFault xsi:type="xsd:int">4</whichFault><param1 xsi:type="xsd:string">Hello World</param1><param2 xsi:type="xsd:float">12.345</param2><param3 SOAP-ENC:arrayType="xsd:string[3]" xsi:type="ns2:ArrayOfString"><item xsi:type="xsd:string">one</item><item xsi:type="xsd:string">two</item><item xsi:type="xsd:string">three</item></param3></ns1:echoMultipleFaults2></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults2'.</faultstring><detail><ns1:part4 xsi:type="xsd:float">12.345</ns1:part4></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_012w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_012w.phpt
index 2dccfc397..965bb816e 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_012w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_012w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults3><whichFault xsi:type="xsd:int">1</whichFault><param1 xsi:type="xsd:string">arg1</param1><param2 xsi:type="xsd:string">arg2</param2></ns1:echoMultipleFaults3></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/wsdl/fault1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults3'.</faultstring><detail><ns1:part2 xsi:type="xsd:string">arg1</ns1:part2></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_013w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_013w.phpt
index 0a557cc72..c4eb6c1dc 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_013w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_013w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults3><whichFault xsi:type="xsd:int">2</whichFault><param1 xsi:type="xsd:string">arg1</param1><param2 xsi:type="xsd:string">arg2</param2></ns1:echoMultipleFaults3></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/wsdl/fault2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults3'.</faultstring><detail><ns1:part2 xsi:type="xsd:string">arg2</ns1:part2></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_014w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_014w.phpt
index d082e5c8d..733f5ca48 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_014w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_014w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults3><whichFault xsi:type="xsd:int">3</whichFault><param1 xsi:type="xsd:string">arg1</param1><param2 xsi:type="xsd:string">arg2</param2></ns1:echoMultipleFaults3></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/wsdl/fault1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults3'.</faultstring><detail><ns1:part2 xsi:type="xsd:string">arg1</ns1:part2></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_015w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_015w.phpt
index d3139de6f..46b3ff065 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_015w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_015w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults4><whichFault xsi:type="xsd:int">1</whichFault><param1 xsi:type="xsd:int">162</param1><param2 xsi:type="ns2:Enum">1</param2></ns1:echoMultipleFaults4></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults4'.</faultstring><detail><ns1:part3 xsi:type="xsd:int">162</ns1:part3></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_016w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_016w.phpt
index 43f71b2cc..40c3db6fb 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_016w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_016w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults4><whichFault xsi:type="xsd:int">2</whichFault><param1 xsi:type="xsd:int">162</param1><param2 xsi:type="ns2:Enum">1</param2></ns1:echoMultipleFaults4></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/types" xmlns:ns2="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults4'.</faultstring><detail><ns2:part9 xsi:type="ns1:Enum">1</ns2:part9></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_017w.phpt b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_017w.phpt
index e0e31d90b..622d17d6a 100644
--- a/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_017w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupH/r4_groupH_simple_rpcenc_017w.phpt
@@ -16,3 +16,4 @@ echo "ok\n";
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:echoMultipleFaults4><whichFault xsi:type="xsd:int">3</whichFault><param1 xsi:type="xsd:int">162</param1><param2 xsi:type="ns2:Enum">1</param2></ns1:echoMultipleFaults4></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://soapinterop.org/wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Fault in response to 'echoMultipleFaults4'.</faultstring><detail><ns1:part3 xsi:type="xsd:int">162</ns1:part3></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/interop/Round4/GroupI/r4_groupI_xsd_006w.phpt b/ext/soap/tests/interop/Round4/GroupI/r4_groupI_xsd_006w.phpt
index 32308ba2b..566461451 100644
--- a/ext/soap/tests/interop/Round4/GroupI/r4_groupI_xsd_006w.phpt
+++ b/ext/soap/tests/interop/Round4/GroupI/r4_groupI_xsd_006w.phpt
Binary files differ
diff --git a/ext/soap/tests/schema/schema075.phpt b/ext/soap/tests/schema/schema075.phpt
index 2a84be9ce..0f430f59d 100644
--- a/ext/soap/tests/schema/schema075.phpt
+++ b/ext/soap/tests/schema/schema075.phpt
@@ -19,7 +19,7 @@ echo "ok";
--EXPECTF--
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam ns1:int1="1" ns1:int2="2" int3="3" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
-object(stdClass)#5 (3) {
+object(stdClass)#%d (3) {
["int1"]=>
int(1)
["int2"]=>
diff --git a/ext/soap/tests/schema/schema076.phpt b/ext/soap/tests/schema/schema076.phpt
index dfa7791fe..6e6444a5d 100644
--- a/ext/soap/tests/schema/schema076.phpt
+++ b/ext/soap/tests/schema/schema076.phpt
@@ -19,7 +19,7 @@ echo "ok";
--EXPECTF--
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam int1="1" ns1:int2="2" int3="3" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
-object(stdClass)#5 (3) {
+object(stdClass)#%d (3) {
["int1"]=>
int(1)
["int2"]=>
diff --git a/ext/soap/tests/schema/schema077.phpt b/ext/soap/tests/schema/schema077.phpt
index baf10449d..779503cb4 100644
--- a/ext/soap/tests/schema/schema077.phpt
+++ b/ext/soap/tests/schema/schema077.phpt
@@ -19,7 +19,7 @@ echo "ok";
--EXPECTF--
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test><testParam int1="1" ns1:int2="2" int3="3" xsi:type="ns1:testType"/></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
-object(stdClass)#5 (3) {
+object(stdClass)#%d (3) {
["int1"]=>
int(1)
["int2"]=>
diff --git a/ext/soap/tests/schema/schema078.phpt b/ext/soap/tests/schema/schema078.phpt
index a674270df..7636a78f9 100644
--- a/ext/soap/tests/schema/schema078.phpt
+++ b/ext/soap/tests/schema/schema078.phpt
@@ -21,7 +21,7 @@ echo "ok";
--EXPECTF--
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/"><SOAP-ENV:Body><ns1:test><testParam><ns1:int1>1</ns1:int1><ns1:int2>2</ns1:int2><int3>3</int3></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
-object(stdClass)#5 (3) {
+object(stdClass)#%d (3) {
["int1"]=>
int(1)
["int2"]=>
diff --git a/ext/soap/tests/schema/schema079.phpt b/ext/soap/tests/schema/schema079.phpt
index d7f2ab97c..34dcd9bee 100644
--- a/ext/soap/tests/schema/schema079.phpt
+++ b/ext/soap/tests/schema/schema079.phpt
@@ -21,7 +21,7 @@ echo "ok";
--EXPECTF--
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/"><SOAP-ENV:Body><ns1:test><testParam><int1>1</int1><ns1:int2>2</ns1:int2><int3>3</int3></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
-object(stdClass)#5 (3) {
+object(stdClass)#%d (3) {
["int1"]=>
int(1)
["int2"]=>
diff --git a/ext/soap/tests/schema/schema080.phpt b/ext/soap/tests/schema/schema080.phpt
index 4accf551f..7519d6a30 100644
--- a/ext/soap/tests/schema/schema080.phpt
+++ b/ext/soap/tests/schema/schema080.phpt
@@ -21,7 +21,7 @@ echo "ok";
--EXPECTF--
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test-uri/"><SOAP-ENV:Body><ns1:test><testParam><int1>1</int1><ns1:int2>2</ns1:int2><int3>3</int3></testParam></ns1:test></SOAP-ENV:Body></SOAP-ENV:Envelope>
-object(stdClass)#5 (3) {
+object(stdClass)#%d (3) {
["int1"]=>
int(1)
["int2"]=>
diff --git a/ext/soap/tests/server017.phpt b/ext/soap/tests/server017.phpt
index 2f5dd6b6e..cc4af5e70 100644
--- a/ext/soap/tests/server017.phpt
+++ b/ext/soap/tests/server017.phpt
@@ -31,3 +31,4 @@ echo "ok\n";
--EXPECT--
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>MyFault</faultcode><faultstring>My fault string</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/server018.phpt b/ext/soap/tests/server018.phpt
index 724f0d884..22c37a09b 100644
--- a/ext/soap/tests/server018.phpt
+++ b/ext/soap/tests/server018.phpt
@@ -31,3 +31,4 @@ echo "ok\n";
--EXPECT--
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>MyFault</faultcode><faultstring>My fault string</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/server022.phpt b/ext/soap/tests/server022.phpt
index 7b74d8923..90b06d5a1 100755
--- a/ext/soap/tests/server022.phpt
+++ b/ext/soap/tests/server022.phpt
@@ -38,3 +38,4 @@ echo "ok\n";
--EXPECT--
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>MyFault</faultcode><faultstring>My fault string</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/server023.phpt b/ext/soap/tests/server023.phpt
new file mode 100755
index 000000000..c227204d3
--- /dev/null
+++ b/ext/soap/tests/server023.phpt
@@ -0,0 +1,37 @@
+--TEST--
+SOAP Server 23: Send SOAP headers those were not received
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+function test() {
+ global $server;
+ $server->addSoapHeader(new SoapHeader("http://testuri.org", "Test1", "Hello Header!"));
+ $server->addSoapHeader(new SoapHeader("http://testuri.org", "Test2", "Hello Header!"));
+ return "Hello Body!";
+}
+
+$server = new soapserver(null,array('uri'=>"http://testuri.org"));
+$server->addfunction("test");
+
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<SOAP-ENV:Envelope
+ SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:si="http://soapinterop.org/xsd">
+ <SOAP-ENV:Body>
+ <ns1:test xmlns:ns1="http://testuri.org"/>
+ </SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
+EOF;
+
+$server->handle();
+echo "ok\n";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://testuri.org" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Header><ns1:Test1>Hello Header!</ns1:Test1><ns1:Test2>Hello Header!</ns1:Test2></SOAP-ENV:Header><SOAP-ENV:Body><ns1:testResponse><return xsi:type="xsd:string">Hello Body!</return></ns1:testResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/server024.phpt b/ext/soap/tests/server024.phpt
new file mode 100755
index 000000000..0ddd9cec3
--- /dev/null
+++ b/ext/soap/tests/server024.phpt
@@ -0,0 +1,49 @@
+--TEST--
+SOAP Server 24: Send SOAP headers those were not received
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+class TestHeader1 extends SoapHeader {
+ function __construct($data) {
+ parent::__construct("http://testuri.org", "Test1", $data);
+ }
+}
+
+class TestHeader2 extends SoapHeader {
+ function __construct($data) {
+ parent::__construct("http://testuri.org", "Test2", $data);
+ }
+}
+
+function test() {
+ global $server;
+ $server->addSoapHeader(new TestHeader1("Hello Header!"));
+ $server->addSoapHeader(new TestHeader2("Hello Header!"));
+ return "Hello Body!";
+}
+
+$server = new soapserver(null,array('uri'=>"http://testuri.org"));
+$server->addfunction("test");
+
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<SOAP-ENV:Envelope
+ SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:si="http://soapinterop.org/xsd">
+ <SOAP-ENV:Body>
+ <ns1:test xmlns:ns1="http://testuri.org"/>
+ </SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
+EOF;
+
+$server->handle();
+echo "ok\n";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://testuri.org" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Header><ns1:Test1>Hello Header!</ns1:Test1><ns1:Test2>Hello Header!</ns1:Test2></SOAP-ENV:Header><SOAP-ENV:Body><ns1:testResponse><return xsi:type="xsd:string">Hello Body!</return></ns1:testResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/server025.phpt b/ext/soap/tests/server025.phpt
new file mode 100755
index 000000000..0a98b4108
--- /dev/null
+++ b/ext/soap/tests/server025.phpt
@@ -0,0 +1,46 @@
+--TEST--
+SOAP Server 25: One-way SOAP headers encoding using WSDL
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+class TestHeader1 extends SoapHeader {
+ function __construct($data) {
+ parent::__construct("http://testuri.org", "Test1", $data);
+ }
+}
+
+class TestHeader2 extends SoapHeader {
+ function __construct($data) {
+ parent::__construct("http://testuri.org", "Test2", $data);
+ }
+}
+
+function test() {
+ global $server;
+ $server->addSoapHeader(new TestHeader1("Hello Header!"));
+ $server->addSoapHeader(new TestHeader2("Hello Header!"));
+ return "Hello Body!";
+}
+
+$server = new soapserver(dirname(__FILE__)."/server025.wsdl");
+$server->addfunction("test");
+
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<SOAP-ENV:Envelope
+ SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
+ <SOAP-ENV:Body>
+ <ns1:test xmlns:ns1="http://testuri.org"/>
+ </SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
+EOF;
+
+$server->handle();
+echo "ok\n";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://testuri.org"><SOAP-ENV:Header><ns1:Test1 xsi:type="xsd:string">Hello Header!</ns1:Test1><ns1:Test2 xsi:type="xsd:string">Hello Header!</ns1:Test2></SOAP-ENV:Header><SOAP-ENV:Body><ns1:testResponse><result>Hello Body!</result></ns1:testResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/server025.wsdl b/ext/soap/tests/server025.wsdl
new file mode 100755
index 000000000..2870f4e70
--- /dev/null
+++ b/ext/soap/tests/server025.wsdl
@@ -0,0 +1,55 @@
+<?xml version="1.0" ?>
+<definitions
+ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:si="http://soapinterop.org/xsd"
+ xmlns:tns="http://linuxsrv.home/~dmitry/soap/test.wsdl"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ targetNamespace="http://testuri.org">
+
+ <message name="TestHeader1">
+ <part name="Test1" type="xsd:string" />
+ </message>
+ <message name="TestHeader2">
+ <part name="Test2" type="xsd:string" />
+ </message>
+
+ <message name="TestRequest">
+ </message>
+ <message name="TestResponse">
+ <part name="result" type="xsd:string" />
+ </message>
+
+ <portType name="TestServicePortType">
+ <operation name="test">
+ <input message="tns:TestRequest" />
+ <output message="tns:TestResponse" />
+ </operation>
+ </portType>
+
+ <binding name="TestServiceBinding" type="tns:TestServicePortType">
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
+ <operation name="test">
+ <soap:operation soapAction="Test" style="rpc" />
+ <input>
+ <soap:body namespace="http://testuri.org" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
+ </input>
+ <output>
+ <soap:body namespace="http://testuri.org" use="literal" />
+ <soap:header namespace="http://testuri.org" message="tns:TestHeader1" part="Test1" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
+ <soap:header namespace="http://testuri.org" message="tns:TestHeader2" part="Test2" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
+ </output>
+ </operation>
+ </binding>
+
+ <service name="TestService">
+ <port name="TestServicePort" binding="tns:TestServiceBinding">
+ <soap:address location="http://linuxsrv.home/~dmitry/soap/soap_server.php" />
+ </port>
+ </service>
+
+</definitions>
diff --git a/ext/soap/tests/soap12/T63.phpt b/ext/soap/tests/soap12/T63.phpt
index 262f657b9..9b5f90c4f 100644
--- a/ext/soap/tests/soap12/T63.phpt
+++ b/ext/soap/tests/soap12/T63.phpt
@@ -22,3 +22,4 @@ include "soap12-test.inc";
--EXPECT--
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:validateCountryCodeFault>Country code must be 2 letters.</ns1:validateCountryCodeFault></env:Header><env:Body><env:Fault><env:Code><env:Value>env:Sender</env:Value></env:Code><env:Reason><env:Text>Not a valid country code</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
+ok
diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c
index b601efbd1..691c176f3 100644
--- a/ext/sockets/sockets.c
+++ b/ext/sockets/sockets.c
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sockets.c,v 1.171.2.7 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: sockets.c,v 1.171.2.9 2006/04/07 14:04:36 pajoye Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/spl/doxygen.cfg b/ext/spl/doxygen.cfg
index 1d79e4046..d58017a6a 100755
--- a/ext/spl/doxygen.cfg
+++ b/ext/spl/doxygen.cfg
@@ -87,8 +87,8 @@ FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
-SOURCE_BROWSER = NO
-INLINE_SOURCES = NO
+SOURCE_BROWSER = YES
+INLINE_SOURCES = YES
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
diff --git a/ext/spl/examples/directorygraphiterator.inc b/ext/spl/examples/directorygraphiterator.inc
index 89f3de66b..61d6709e1 100644
--- a/ext/spl/examples/directorygraphiterator.inc
+++ b/ext/spl/examples/directorygraphiterator.inc
@@ -18,7 +18,16 @@ class DirectoryGraphIterator extends DirectoryTreeIterator
{
function __construct($path)
{
- RecursiveIteratorIterator::__construct(new RecursiveCachingIterator(new ParentIterator(new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_FILENAME)), CachingIterator::CALL_TOSTRING|CachingIterator::CATCH_GET_CHILD), 1);
+ RecursiveIteratorIterator::__construct(
+ new RecursiveCachingIterator(
+ new ParentIterator(
+ new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_FILENAME
+ )
+ ),
+ CachingIterator::CALL_TOSTRING|CachingIterator::CATCH_GET_CHILD
+ ),
+ parent::SELF_FIRST
+ );
}
}
diff --git a/ext/spl/examples/directorytreeiterator.inc b/ext/spl/examples/directorytreeiterator.inc
index 3036a23a4..4a741c318 100644
--- a/ext/spl/examples/directorytreeiterator.inc
+++ b/ext/spl/examples/directorytreeiterator.inc
@@ -21,7 +21,14 @@ class DirectoryTreeIterator extends RecursiveIteratorIterator
*/
function __construct($path)
{
- parent::__construct(new RecursiveCachingIterator(new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_FILENAME), CachingIterator::CALL_TOSTRING|CachingIterator::CATCH_GET_CHILD), 1);
+ parent::__construct(
+ new RecursiveCachingIterator(
+ new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_FILENAME
+ ),
+ CachingIterator::CALL_TOSTRING|CachingIterator::CATCH_GET_CHILD
+ ),
+ parent::SELF_FIRST
+ );
}
/** @return the current element prefixed with ASCII graphics
diff --git a/ext/spl/internal/iteratoriterator.inc b/ext/spl/internal/iteratoriterator.inc
index 60786927b..13c717523 100755
--- a/ext/spl/internal/iteratoriterator.inc
+++ b/ext/spl/internal/iteratoriterator.inc
@@ -109,7 +109,7 @@ class IteratorIterator implements OuterIterator
*/
function __call($func, $params)
{
- return call_user_func_array(array($this->it, $func), $params);
+ return call_user_func_array(array($this->iterator, $func), $params);
}
/** The inner iterator must be private because when this class will be
diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c
index ca59dba27..2ac1cef67 100755
--- a/ext/spl/php_spl.c
+++ b/ext/spl/php_spl.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_spl.c,v 1.52.2.25 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: php_spl.c,v 1.52.2.28 2006/03/23 19:55:16 helly Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -340,7 +340,7 @@ static void autoload_func_info_dtor(autoload_func_info *alfi)
Try all registerd autoload function to load the requested class */
PHP_FUNCTION(spl_autoload_call)
{
- zval **class_name, *retval = NULL;
+ zval *class_name, *retval = NULL;
int class_name_len;
char *func_name, *lc_name;
uint func_name_len;
@@ -348,18 +348,18 @@ PHP_FUNCTION(spl_autoload_call)
HashPosition function_pos;
autoload_func_info *alfi;
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &class_name) == FAILURE || Z_TYPE_PP(class_name) != IS_STRING) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &class_name) == FAILURE || Z_TYPE_P(class_name) != IS_STRING) {
return;
}
if (SPL_G(autoload_functions)) {
- class_name_len = Z_STRLEN_PP(class_name);
- lc_name = zend_str_tolower_dup(Z_STRVAL_PP(class_name), class_name_len);
+ class_name_len = Z_STRLEN_P(class_name);
+ lc_name = zend_str_tolower_dup(Z_STRVAL_P(class_name), class_name_len);
zend_hash_internal_pointer_reset_ex(SPL_G(autoload_functions), &function_pos);
while(zend_hash_has_more_elements_ex(SPL_G(autoload_functions), &function_pos) == SUCCESS && !EG(exception)) {
zend_hash_get_current_key_ex(SPL_G(autoload_functions), &func_name, &func_name_len, &dummy, 0, &function_pos);
zend_hash_get_current_data_ex(SPL_G(autoload_functions), (void **) &alfi, &function_pos);
- zend_call_method(alfi->obj ? &alfi->obj : NULL, alfi->ce, &alfi->func_ptr, func_name, func_name_len, &retval, 1, *class_name, NULL TSRMLS_CC);
+ zend_call_method(alfi->obj ? &alfi->obj : NULL, alfi->ce, &alfi->func_ptr, func_name, func_name_len, &retval, 1, class_name, NULL TSRMLS_CC);
if (retval) {
zval_ptr_dtor(&retval);
}
@@ -371,11 +371,11 @@ PHP_FUNCTION(spl_autoload_call)
efree(lc_name);
} else {
/* do not use or overwrite &EG(autoload_func) here */
- zend_call_method_with_1_params(NULL, NULL, NULL, "spl_autoload", NULL, *class_name);
+ zend_call_method_with_1_params(NULL, NULL, NULL, "spl_autoload", NULL, class_name);
}
} /* }}} */
-/* {{{ proto void spl_autoload_register([string autoload_function = "spl_autoload" [, throw = true]])
+/* {{{ proto bool spl_autoload_register([mixed autoload_function = "spl_autoload" [, throw = true]])
Register given function as __autoload() implementation */
PHP_FUNCTION(spl_autoload_register)
{
@@ -399,7 +399,7 @@ PHP_FUNCTION(spl_autoload_register)
if (do_throw) {
zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, "Function spl_autoload_call() cannot be registered");
}
- return;
+ RETURN_FALSE;
}
}
}
@@ -411,25 +411,25 @@ PHP_FUNCTION(spl_autoload_register)
zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, "Passed array specifies a non static method but no object");
}
efree(func_name);
- return;
+ RETURN_FALSE;
}
else if (do_throw) {
zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, "Passed array does not specify %s %smethod", alfi.func_ptr ? "a callable" : "an existing", !obj_ptr ? "static " : "");
}
efree(func_name);
- return;
+ RETURN_FALSE;
} else if (Z_TYPE_P(zcallable) == IS_STRING) {
if (do_throw) {
zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, "Function '%s' not %s", func_name, alfi.func_ptr ? "callable" : "found");
}
efree(func_name);
- return;
+ RETURN_FALSE;
} else {
if (do_throw) {
zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, "Illegal value passed");
}
efree(func_name);
- return;
+ RETURN_FALSE;
}
}
@@ -442,7 +442,7 @@ PHP_FUNCTION(spl_autoload_register)
} else {
alfi.obj = NULL;
}
-
+
if (!SPL_G(autoload_functions)) {
ALLOC_HASHTABLE(SPL_G(autoload_functions));
zend_hash_init(SPL_G(autoload_functions), 1, NULL, (dtor_func_t) autoload_func_info_dtor, 0);
@@ -469,25 +469,34 @@ PHP_FUNCTION(spl_autoload_register)
} else {
zend_hash_find(EG(function_table), "spl_autoload", sizeof("spl_autoload"), (void **) &EG(autoload_func));
}
+ RETURN_TRUE;
} /* }}} */
-/* {{{ proto bool spl_autoload_unregister(string autoload_function)
+/* {{{ proto bool spl_autoload_unregister(mixed autoload_function)
Unregister given function as __autoload() implementation */
PHP_FUNCTION(spl_autoload_unregister)
{
- char *func_name, *lc_name;
- int func_name_len, success = FAILURE;
+ char *func_name;
+ int func_name_len;
+ zval *zcallable;
+ int success = FAILURE;
zend_function *spl_func_ptr;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &func_name, &func_name_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &zcallable) == FAILURE) {
return;
}
- lc_name = do_alloca(func_name_len + 1);
- zend_str_tolower_copy(lc_name, func_name, func_name_len);
+ if (!zend_is_callable_ex(zcallable, IS_CALLABLE_CHECK_SYNTAX_ONLY, &func_name, &func_name_len, NULL, NULL, NULL TSRMLS_CC)) {
+ if (func_name) {
+ efree(func_name);
+ }
+ RETURN_FALSE;
+ }
+
+ zend_str_tolower(func_name, func_name_len);
if (SPL_G(autoload_functions)) {
- if (func_name_len == sizeof("spl_autoload_call")-1 && !strcmp(lc_name, "spl_autoload_call")) {
+ if (func_name_len == sizeof("spl_autoload_call")-1 && !strcmp(func_name, "spl_autoload_call")) {
/* remove all */
zend_hash_destroy(SPL_G(autoload_functions));
FREE_HASHTABLE(SPL_G(autoload_functions));
@@ -496,9 +505,9 @@ PHP_FUNCTION(spl_autoload_unregister)
success = SUCCESS;
} else {
/* remove specific */
- success = zend_hash_del(SPL_G(autoload_functions), lc_name, func_name_len+1);
+ success = zend_hash_del(SPL_G(autoload_functions), func_name, func_name_len+1);
}
- } else if (func_name_len == sizeof("spl_autoload")-1 && !strcmp(lc_name, "spl_autoload")) {
+ } else if (func_name_len == sizeof("spl_autoload")-1 && !strcmp(func_name, "spl_autoload")) {
/* register single spl_autoload() */
zend_hash_find(EG(function_table), "spl_autoload", sizeof("spl_autoload"), (void **) &spl_func_ptr);
@@ -508,8 +517,7 @@ PHP_FUNCTION(spl_autoload_unregister)
}
}
- free_alloca(lc_name);
-
+ efree(func_name);
RETURN_BOOL(success == SUCCESS);
} /* }}} */
@@ -598,6 +606,11 @@ PHP_MINFO_FUNCTION(spl)
}
/* }}} */
+static
+ZEND_BEGIN_ARG_INFO(arginfo_iterator, 0)
+ ZEND_ARG_INFO(0, iterator)
+ZEND_END_ARG_INFO();
+
/* {{{ spl_functions
*/
zend_function_entry spl_functions[] = {
@@ -611,8 +624,8 @@ zend_function_entry spl_functions[] = {
PHP_FE(class_parents, NULL)
PHP_FE(class_implements, NULL)
#ifdef SPL_ITERATORS_H
- PHP_FE(iterator_to_array, NULL)
- PHP_FE(iterator_count, NULL)
+ PHP_FE(iterator_to_array, arginfo_iterator)
+ PHP_FE(iterator_count, arginfo_iterator)
#endif /* SPL_ITERATORS_H */
{NULL, NULL, NULL}
};
diff --git a/ext/spl/spl.php b/ext/spl/spl.php
index a3a867761..f704e044b 100755
--- a/ext/spl/spl.php
+++ b/ext/spl/spl.php
@@ -51,9 +51,10 @@
*
* SPL offers two advanced directory and file handling classes:
*
- * - class DirectoryIterator implements Iterator
+ * - class SplFileInfo
+ * - class DirectoryIterator extends SplFileInfo implements Iterator
* - class RecursiveDirectoryIterator extends DirectoryIterator implements RecursiveIterator
- * - class SplFileObject implements RecursiveIterator, SeekableIterator
+ * - class SplFileObject extends SplFileInfo implements RecursiveIterator, SeekableIterator
*
* 3) XML
*
@@ -101,8 +102,14 @@
* - interface SplObserver
* - interface SplSubject
* - class SplObjectStorage
+ *
+ * 8) @ref Examples
+ *
+ * The classes and interfaces in this group are contained as PHP code in the
+ * examples subdirectory of ext/SPL. Sooner or later they will be moved to
+ * c-code.
*
- * Some articles about SPL:
+ * 9) Some articles about SPL:
* - <a href="http://www.sitepoint.com/article/php5-standard-library/1">Introducing PHP 5's Standard Library</a>
* - <a href="http://www.ramikayyali.com/archives/2005/02/25/iterators">Iterators in PHP5</a>
* - <a href="http://www.phpriot.com/d/articles/php/oop/oop-with-spl-php-5-1/index.html">Advanced OOP with SPL in PHP 5</a>
@@ -111,7 +118,7 @@
* - <a href="http://www.wiki.cc/php/SPL">SPL on PHP Wiki</a>
* - <a href="http://www.professionelle-softwareentwicklung-mit-php5.de/erste_auflage/oop.iterators.spl.html">Die Standard PHP Library (SPL) [german]</a>
*
- * Talks on SPL:
+ * 10) Talks on SPL:
* - SPL for the masses <a href="http://somabo.de/talks/200504_php_quebec_spl_for_the_masses.pps">[pps]</a>, <a href="http://somabo.de/talks/200504_php_quebec_spl_for_the_masses.pdf">[pdf]</a>
* - From engine overloading to SPL <a href="http://somabo.de/talks/200505_cancun_from_engine_overloading_to_spl.pps">[pps]</a>, <a href="http://somabo.de/talks/200505_cancun_from_engine_overloading_to_spl.pdf">[pdf]</a>
* - Happy SPLing <a href="http://somabo.de/talks/200509_toronto_happy_spling.pps">[pps]</a>, <a href="http://somabo.de/talks/200509_toronto_happy_spling.pdf">[pdf]</a>
@@ -582,7 +589,7 @@ interface Serializable
/** @ingroup SPL
* @brief An Array wrapper
* @since PHP 5.0
- * @version 1.1
+ * @version 1.2
*
* This array wrapper allows to recursively iterate over Arrays and public
* Object properties.
@@ -712,7 +719,7 @@ class ArrayIterator implements SeekableIterator, ArrayAccess, Countable
* 1 set: array indices can be accessed as properties in read/write
*/
function setFlags($flags);
-
+
/**
* @ return current flags
*/
@@ -761,29 +768,41 @@ class ArrayIterator implements SeekableIterator, ArrayAccess, Countable
}
/** @ingroup SPL
- * @brief Directory iterator
- * @since PHP 5.0
+ * @brief File info class
+ * @since PHP 5.1.3
*/
-class DirectoryIterator implements Iterator
+class SplFileInfo
{
- /** Construct a directory iterator from a path-string.
+ /** Construct a file info object
*
- * @param $path directory to iterate.
+ * @param $file_name path or file name
*/
- function __construct($path);
+ function __construct($file_name);
- /** @return The opened path.
+ /** @return the path part only.
*/
function getPath();
- /** @return The current file name.
+ /** @return the filename only.
*/
function getFilename();
+ /** @return SplFileInfo created for the file
+ * @param class_name name of class to instantiate
+ * @see SplFileInfo::setInfoClass()
+ */
+ function getFileInfo(string class_name = NULL);
+
/** @return The current entries path and file name.
*/
function getPathname();
+ /** @return SplFileInfo created for the path
+ * @param class_name name of class to instantiate
+ * @see SplFileInfo::setInfoClass()
+ */
+ function getPathInfo(string class_name = NULL);
+
/** @return The current entry's permissions.
*/
function getPerms();
@@ -840,15 +859,11 @@ class DirectoryIterator implements Iterator
*/
function isDir();
- /** @return Whether the current entry is either '.' or '..'.
- */
- function isDot();
-
/** @return whether the current entry is a link.
*/
function isLink();
- /** @return getFilename()
+ /** @return getPathname()
*/
function __toString();
@@ -862,17 +877,85 @@ class DirectoryIterator implements Iterator
* @return The opened file as a SplFileObject instance
*
* @see SplFileObject
+ * @see SplFileInfo::setFileClass()
* @see file()
*/
- function DirectoryIterator::openFile($mode = 'r', $use_include_path = false, $context = NULL);
+ function openFile($mode = 'r', $use_include_path = false, $context = NULL);
+
+ /** @param class_name name of class used with openFile(). Must be derived
+ * from SPLFileObject.
+ */
+ function setFileClass(string class_name = "SplFileObject");
+
+ /** @param class_name name of class used with getFileInfo(), getPathInfo().
+ * Must be derived from SplFileInfo.
+ */
+ function setInfoClass(string class_name = "SplFileInfo");
+}
+
+/** @ingroup SPL
+ * @brief Directory iterator
+ * @version 1.1
+ * @since PHP 5.0
+ */
+class DirectoryIterator extends SplFileInfo implements Iterator
+{
+ /** Construct a directory iterator from a path-string.
+ *
+ * @param $path directory to iterate.
+ */
+ function __construct($path);
+
+ /** @return index of entry
+ */
+ function key();
+
+ /** @return $this
+ */
+ function current();
+
+ /** @return Whether the current entry is either '.' or '..'.
+ */
+ function isDot();
+
+ /** @return whether the current entry is a link.
+ */
+ function isLink();
+
+ /** @return getFilename()
+ */
+ function __toString();
}
/** @ingroup SPL
* @brief recursive directory iterator
+ * @version 1.1
* @since PHP 5.0
*/
class RecursiveDirectoryIterator extends DirectoryIterator implements RecursiveIterator
{
+ const CURRENT_AS_FILEINFO 0x00000010; /* make RecursiveDirectoryTree::current() return SplFileInfo */
+ const KEY_AS_FILENAME 0x00000020; /* make RecursiveDirectoryTree::key() return getFilename() */
+ const NEW_CURRENT_AND_KEY 0x00000030; /* CURRENT_AS_FILEINFO + KEY_AS_FILENAME */
+
+ /** Construct a directory iterator from a path-string.
+ *
+ * @param $path directory to iterate.
+ * @param $flags open flags
+ * - CURRENT_AS_FILEINFO
+ * - KEY_AS_FILENAME
+ * - NEW_CURRENT_AND_KEY
+ */
+ function __construct($path, $flags = 0);
+
+ /** @return getPathname() or getFilename() depending on flags
+ */
+ function key();
+
+ /** @return getFilename() or getFileInfo() depending on flags
+ */
+ function current();
+
/** @return whether the current is a directory (not '.' or '..').
*/
function hasChildren();
@@ -880,6 +963,14 @@ class RecursiveDirectoryIterator extends DirectoryIterator implements RecursiveI
/** @return a RecursiveDirectoryIterator for the current entry.
*/
function getChildren();
+
+ /** @return sub path only (without main path)
+ */
+ function getSubPath();
+
+ /** @return the current sub path
+ */
+ function getSubPathname();
}
/** @ingroup SPL
diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c
index 8becf1a1e..34804315a 100755
--- a/ext/spl/spl_array.c
+++ b/ext/spl/spl_array.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_array.c,v 1.71.2.7 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: spl_array.c,v 1.71.2.17 2006/04/07 22:53:23 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -67,7 +67,9 @@ typedef struct _spl_array_object {
} spl_array_object;
static inline HashTable *spl_array_get_hash_table(spl_array_object* intern, int check_std_props TSRMLS_DC) {
- if ((intern->ar_flags & SPL_ARRAY_USE_OTHER) && (check_std_props == 0 || (intern->ar_flags & SPL_ARRAY_STD_PROP_LIST) == 0)) {
+ if ((intern->ar_flags & SPL_ARRAY_IS_SELF) != 0) {
+ return intern->std.properties;
+ } else if ((intern->ar_flags & SPL_ARRAY_USE_OTHER) && (check_std_props == 0 || (intern->ar_flags & SPL_ARRAY_STD_PROP_LIST) == 0)) {
spl_array_object *other = (spl_array_object*)zend_object_store_get_object(intern->array TSRMLS_CC);
return spl_array_get_hash_table(other, check_std_props TSRMLS_CC);
} else if ((intern->ar_flags & ((check_std_props ? SPL_ARRAY_STD_PROP_LIST : 0) | SPL_ARRAY_IS_SELF)) != 0) {
@@ -103,8 +105,7 @@ static void spl_array_object_free_storage(void *object TSRMLS_DC)
{
spl_array_object *intern = (spl_array_object *)object;
- zend_hash_destroy(intern->std.properties);
- FREE_HASHTABLE(intern->std.properties);
+ zend_object_std_dtor(&intern->std TSRMLS_CC);
zval_ptr_dtor(&intern->array);
zval_ptr_dtor(&intern->retval);
@@ -113,8 +114,10 @@ static void spl_array_object_free_storage(void *object TSRMLS_DC)
}
/* }}} */
+zend_object_iterator *spl_array_get_iterator(zend_class_entry *ce, zval *object TSRMLS_DC);
+
/* {{{ spl_array_object_new */
-static zend_object_value spl_array_object_new_ex(zend_class_entry *class_type, spl_array_object **obj, zval *orig TSRMLS_DC)
+static zend_object_value spl_array_object_new_ex(zend_class_entry *class_type, spl_array_object **obj, zval *orig, int clone_orig TSRMLS_DC)
{
zend_object_value retval;
spl_array_object *intern;
@@ -124,22 +127,35 @@ static zend_object_value spl_array_object_new_ex(zend_class_entry *class_type, s
intern = emalloc(sizeof(spl_array_object));
memset(intern, 0, sizeof(spl_array_object));
- intern->std.ce = class_type;
*obj = intern;
ALLOC_INIT_ZVAL(intern->retval);
- ALLOC_HASHTABLE(intern->std.properties);
- zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ zend_object_std_init(&intern->std, class_type TSRMLS_CC);
zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
intern->ar_flags = 0;
+ intern->ce_get_iterator = spl_ce_ArrayIterator;
if (orig) {
spl_array_object *other = (spl_array_object*)zend_object_store_get_object(orig TSRMLS_CC);
- intern->array = orig;
- ZVAL_ADDREF(intern->array);
intern->ar_flags &= ~ SPL_ARRAY_CLONE_MASK;
- intern->ar_flags |= (other->ar_flags & SPL_ARRAY_CLONE_MASK) | SPL_ARRAY_IS_REF | SPL_ARRAY_USE_OTHER;
+ intern->ar_flags |= (other->ar_flags & SPL_ARRAY_CLONE_MASK);
+ intern->ce_get_iterator = other->ce_get_iterator;
+ if (clone_orig) {
+ intern->array = other->array;
+ if (Z_OBJ_HT_P(orig) == &spl_handler_ArrayObject) {
+ MAKE_STD_ZVAL(intern->array);
+ array_init(intern->array);
+ zend_hash_copy(HASH_OF(intern->array), HASH_OF(other->array), (copy_ctor_func_t) zval_add_ref, &tmp, sizeof(zval*));
+ }
+ if (Z_OBJ_HT_P(orig) == &spl_handler_ArrayIterator) {
+ ZVAL_ADDREF(other->array);
+ }
+ } else {
+ intern->array = orig;
+ ZVAL_ADDREF(intern->array);
+ intern->ar_flags |= SPL_ARRAY_IS_REF | SPL_ARRAY_USE_OTHER;
+ }
} else {
MAKE_STD_ZVAL(intern->array);
array_init(intern->array);
@@ -148,7 +164,7 @@ static zend_object_value spl_array_object_new_ex(zend_class_entry *class_type, s
retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t) spl_array_object_free_storage, NULL TSRMLS_CC);
while (parent) {
- if (parent == spl_ce_ArrayIterator) {
+ if (parent == spl_ce_ArrayIterator || parent == spl_ce_RecursiveArrayIterator) {
retval.handlers = &spl_handler_ArrayIterator;
break;
} else if (parent == spl_ce_ArrayObject) {
@@ -159,7 +175,7 @@ static zend_object_value spl_array_object_new_ex(zend_class_entry *class_type, s
inherited = 1;
}
if (!parent) { /* this must never happen */
- php_error_docref(NULL TSRMLS_CC, E_COMPILE_ERROR, "Internal compiler error, Class is not child of ArrayObject or arrayIterator");
+ php_error_docref(NULL TSRMLS_CC, E_COMPILE_ERROR, "Internal compiler error, Class is not child of ArrayObject or ArrayIterator");
}
if (inherited) {
zend_hash_find(&class_type->function_table, "offsetget", sizeof("offsetget"), (void **) &intern->fptr_offset_get);
@@ -189,7 +205,7 @@ static zend_object_value spl_array_object_new_ex(zend_class_entry *class_type, s
static zend_object_value spl_array_object_new(zend_class_entry *class_type TSRMLS_DC)
{
spl_array_object *tmp;
- return spl_array_object_new_ex(class_type, &tmp, NULL TSRMLS_CC);
+ return spl_array_object_new_ex(class_type, &tmp, NULL, 0 TSRMLS_CC);
}
/* }}} */
@@ -203,7 +219,7 @@ static zend_object_value spl_array_object_clone(zval *zobject TSRMLS_DC)
spl_array_object *intern;
old_object = zend_objects_get_address(zobject TSRMLS_CC);
- new_obj_val = spl_array_object_new_ex(old_object->ce, &intern, zobject TSRMLS_CC);
+ new_obj_val = spl_array_object_new_ex(old_object->ce, &intern, zobject, 1 TSRMLS_CC);
new_object = &intern->std;
zend_objects_clone_members(new_object, new_obj_val, old_object, handle TSRMLS_CC);
@@ -222,6 +238,10 @@ static zval **spl_array_get_dimension_ptr_ptr(int check_inherited, zval *object,
if (check_inherited && intern->fptr_offset_get) {
return zend_call_method_with_1_params(&object, Z_OBJCE_P(object), &intern->fptr_offset_get, "offsetGet", NULL, offset);
}*/
+
+ if (!offset) {
+ return &EG(uninitialized_zval_ptr);
+ }
switch(Z_TYPE_P(offset)) {
case IS_STRING:
@@ -259,11 +279,16 @@ static zval *spl_array_read_dimension_ex(int check_inherited, zval *object, zval
spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC);
if (intern->fptr_offset_get) {
zval *rv;
+ SEPARATE_ARG_IF_REF(offset);
zend_call_method_with_1_params(&object, Z_OBJCE_P(object), &intern->fptr_offset_get, "offsetGet", &rv, offset);
- zval_ptr_dtor(&intern->retval);
- MAKE_STD_ZVAL(intern->retval);
- ZVAL_ZVAL(intern->retval, rv, 1, 1);
- return intern->retval;
+ zval_ptr_dtor(&offset);
+ if (rv) {
+ zval_ptr_dtor(&intern->retval);
+ MAKE_STD_ZVAL(intern->retval);
+ ZVAL_ZVAL(intern->retval, rv, 1, 1);
+ return intern->retval;
+ }
+ return EG(uninitialized_zval_ptr);
}
}
return *spl_array_get_dimension_ptr_ptr(check_inherited, object, offset, type TSRMLS_CC);
@@ -278,19 +303,15 @@ static void spl_array_write_dimension_ex(int check_inherited, zval *object, zval
{
spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC);
long index;
- int free_offset;
if (check_inherited && intern->fptr_offset_set) {
if (!offset) {
ALLOC_INIT_ZVAL(offset);
- free_offset = 1;
} else {
- free_offset = 0;
+ SEPARATE_ARG_IF_REF(offset);
}
zend_call_method_with_2_params(&object, Z_OBJCE_P(object), &intern->fptr_offset_set, "offsetSet", NULL, offset, value);
- if (free_offset) {
- zval_ptr_dtor(&offset);
- }
+ zval_ptr_dtor(&offset);
return;
}
@@ -341,7 +362,9 @@ static void spl_array_unset_dimension_ex(int check_inherited, zval *object, zval
long index;
if (check_inherited && intern->fptr_offset_del) {
+ SEPARATE_ARG_IF_REF(offset);
zend_call_method_with_1_params(&object, Z_OBJCE_P(object), &intern->fptr_offset_del, "offsetUnset", NULL, offset);
+ zval_ptr_dtor(&offset);
return;
}
@@ -389,12 +412,16 @@ static int spl_array_has_dimension_ex(int check_inherited, zval *object, zval *o
zval *rv;
if (check_inherited && intern->fptr_offset_has) {
+ SEPARATE_ARG_IF_REF(offset);
zend_call_method_with_1_params(&object, Z_OBJCE_P(object), &intern->fptr_offset_has, "offsetExists", &rv, offset);
- if (zend_is_true(rv)) {
+ zval_ptr_dtor(&offset);
+ if (rv && zend_is_true(rv)) {
zval_ptr_dtor(&rv);
return 1;
}
- zval_ptr_dtor(&rv);
+ if (rv) {
+ zval_ptr_dtor(&rv);
+ }
return 0;
}
@@ -472,6 +499,7 @@ void spl_array_iterator_append(zval *object, zval *append_value TSRMLS_DC) /* {{
if (Z_TYPE_P(intern->array) == IS_OBJECT) {
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Cannot append properties to objects, use %s::offsetSet() instead", Z_OBJCE_P(object)->name);
+ return;
}
spl_array_write_dimension(object, NULL, append_value TSRMLS_CC);
@@ -701,7 +729,6 @@ static void spl_array_it_move_forward(zend_object_iterator *iter TSRMLS_DC) /* {
{
spl_array_it *iterator = (spl_array_it *)iter;
spl_array_object *object = iterator->object;
-
HashTable *aht = spl_array_get_hash_table(object, 0 TSRMLS_CC);
if (!aht) {
@@ -820,6 +847,7 @@ SPL_METHOD(Array, __construct)
}
if (object == array) {
intern->ar_flags |= SPL_ARRAY_IS_SELF;
+ intern->ar_flags &= ~SPL_ARRAY_USE_OTHER;
} else {
intern->ar_flags &= ~SPL_ARRAY_IS_SELF;
}
@@ -909,15 +937,14 @@ SPL_METHOD(Array, exchangeArray)
{
zval *object = getThis(), *tmp, **array;
spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC);
-
- array_init(return_value);
+
+ array_init(return_value);
zend_hash_copy(HASH_OF(return_value), spl_array_get_hash_table(intern, 0 TSRMLS_CC), (copy_ctor_func_t) zval_add_ref, &tmp, sizeof(zval*));
- if (ZEND_NUM_ARGS() > 1 || zend_get_parameters_ex(1, &array) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &array) == FAILURE) {
WRONG_PARAM_COUNT;
}
- if (Z_TYPE_PP(array) == IS_OBJECT && intern == (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC))
- {
+ if (Z_TYPE_PP(array) == IS_OBJECT && intern == (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC)) {
zval_ptr_dtor(&intern->array);
array = &object;
intern->array = object;
@@ -959,7 +986,7 @@ SPL_METHOD(Array, getIterator)
}
return_value->type = IS_OBJECT;
- return_value->value.obj = spl_array_object_new_ex(intern->ce_get_iterator, &iterator, object TSRMLS_CC);
+ return_value->value.obj = spl_array_object_new_ex(intern->ce_get_iterator, &iterator, object, 0 TSRMLS_CC);
return_value->refcount = 1;
return_value->is_ref = 1;
}
@@ -999,15 +1026,12 @@ SPL_METHOD(Array, seek)
if (position >= 0) { /* negative values are not supported */
zend_hash_internal_pointer_reset_ex(aht, &intern->pos);
+ result = SUCCESS;
while (position-- > 0 && (result = spl_array_next(intern TSRMLS_CC)) == SUCCESS);
- if (intern->pos && (intern->ar_flags & SPL_ARRAY_IS_REF) && spl_hash_verify_pos(intern TSRMLS_CC) == FAILURE) {
- /* fail */
- } else {
- if (zend_hash_has_more_elements_ex(aht, &intern->pos) == SUCCESS) {
- return; /* ok */
- }
+ if (result == SUCCESS && zend_hash_has_more_elements_ex(aht, &intern->pos) == SUCCESS) {
+ return; /* ok */
}
}
zend_throw_exception_ex(spl_ce_OutOfBoundsException, 0 TSRMLS_CC, "Seek position %ld is out of range", opos);
@@ -1199,7 +1223,7 @@ SPL_METHOD(Array, getChildren)
if (zend_hash_get_current_data_ex(aht, (void **) &entry, &intern->pos) == FAILURE) {
return;
}
-
+
if (Z_TYPE_PP(entry) == IS_OBJECT && instanceof_function(Z_OBJCE_PP(entry), Z_OBJCE_P(getThis()) TSRMLS_CC)) {
RETURN_ZVAL(*entry, 0, 0);
}
@@ -1211,43 +1235,43 @@ SPL_METHOD(Array, getChildren)
static
ZEND_BEGIN_ARG_INFO(arginfo_array___construct, 0)
ZEND_ARG_INFO(0, array)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_array_offsetGet, 0, 0, 1)
ZEND_ARG_INFO(0, index)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_array_offsetSet, 0, 0, 2)
ZEND_ARG_INFO(0, index)
ZEND_ARG_INFO(0, newval)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO(arginfo_array_append, 0)
ZEND_ARG_INFO(0, value)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO(arginfo_array_seek, 0)
ZEND_ARG_INFO(0, position)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO(arginfo_array_exchangeArray, 0)
ZEND_ARG_INFO(0, array)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO(arginfo_array_setFlags, 0)
ZEND_ARG_INFO(0, flags)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO(arginfo_array_setIteratorClass, 0)
ZEND_ARG_INFO(0, iteratorClass)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static zend_function_entry spl_funcs_ArrayObject[] = {
SPL_ME(Array, __construct, arginfo_array___construct, ZEND_ACC_PUBLIC)
@@ -1307,6 +1331,7 @@ PHP_MINIT_FUNCTION(spl_array)
REGISTER_SPL_IMPLEMENTS(ArrayObject, Aggregate);
REGISTER_SPL_IMPLEMENTS(ArrayObject, ArrayAccess);
memcpy(&spl_handler_ArrayObject, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
+
spl_handler_ArrayObject.clone_obj = spl_array_object_clone;
spl_handler_ArrayObject.read_dimension = spl_array_read_dimension;
spl_handler_ArrayObject.write_dimension = spl_array_write_dimension;
diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c
index 25396603f..1f949eaf3 100755
--- a/ext/spl/spl_directory.c
+++ b/ext/spl/spl_directory.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_directory.c,v 1.45.2.10 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: spl_directory.c,v 1.45.2.27 2006/04/06 19:01:56 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -70,9 +70,12 @@ static void spl_filesystem_object_free_storage(void *object TSRMLS_DC) /* {{{ */
{
spl_filesystem_object *intern = (spl_filesystem_object*)object;
- zend_hash_destroy(intern->std.properties);
- FREE_HASHTABLE(intern->std.properties);
-
+ if (intern->oth_handler && intern->oth_handler->dtor) {
+ intern->oth_handler->dtor(intern TSRMLS_CC);
+ }
+
+ zend_object_std_dtor(&intern->std TSRMLS_CC);
+
if (intern->path) {
efree(intern->path);
}
@@ -129,14 +132,12 @@ static zend_object_value spl_filesystem_object_new_ex(zend_class_entry *class_ty
intern = emalloc(sizeof(spl_filesystem_object));
memset(intern, 0, sizeof(spl_filesystem_object));
- intern->std.ce = class_type;
- /* intern->type = SPL_FS_INFO; done by set o */
+ /* intern->type = SPL_FS_INFO; done by set 0 */
intern->file_class = spl_ce_SplFileObject;
intern->info_class = spl_ce_SplFileInfo;
if (obj) *obj = intern;
- ALLOC_HASHTABLE(intern->std.properties);
- zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ zend_object_std_init(&intern->std, class_type TSRMLS_CC);
zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) spl_filesystem_object_free_storage, NULL TSRMLS_CC);
@@ -162,7 +163,7 @@ static inline void spl_filesystem_object_get_file_name(spl_filesystem_object *in
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Object not initialized");
break;
case SPL_FS_DIR:
- intern->file_name_len = spprintf(&intern->file_name, 0, "%s/%s", intern->path, intern->u.dir.entry.d_name);
+ intern->file_name_len = spprintf(&intern->file_name, 0, "%s%c%s", intern->path, DEFAULT_SLASH, intern->u.dir.entry.d_name);
break;
}
}
@@ -176,7 +177,11 @@ static void spl_filesystem_dir_open(spl_filesystem_object* intern, char *path TS
intern->path_len = strlen(path);
intern->u.dir.dirp = php_stream_opendir(path, ENFORCE_SAFE_MODE|REPORT_ERRORS, NULL);
- if (intern->path_len && (path[intern->path_len-1] == '/' || path[intern->path_len-1] == '\\')) {
+ if (intern->path_len && (path[intern->path_len-1] == '/'
+#if defined(PHP_WIN32) || defined(NETWARE)
+ || path[intern->path_len-1] == '\\'
+#endif
+ )) {
intern->path = estrndup(path, --intern->path_len);
} else {
intern->path = estrndup(path, intern->path_len);
@@ -264,9 +269,16 @@ static zend_object_value spl_filesystem_object_clone(zval *zobject TSRMLS_DC)
intern->file_class = source->file_class;
intern->info_class = source->info_class;
+ intern->flags = source->flags;
+ intern->oth = source->oth;
+ intern->oth_handler = source->oth_handler;
zend_objects_clone_members(new_object, new_obj_val, old_object, handle TSRMLS_CC);
+ if (intern->oth_handler && intern->oth_handler->clone) {
+ intern->oth_handler->clone(source, intern TSRMLS_CC);
+ }
+
return new_obj_val;
}
/* }}} */
@@ -279,7 +291,11 @@ void spl_filesystem_info_set_filename(spl_filesystem_object *intern, char *path,
intern->file_name_len = len;
p1 = strrchr(path, '/');
+#if defined(PHP_WIN32) || defined(NETWARE)
p2 = strrchr(path, '\\');
+#else
+ p2 = 0;
+#endif
if (p1 || p2) {
intern->path_len = (p1 > p2 ? p1 : p2) - path;
} else {
@@ -291,6 +307,7 @@ void spl_filesystem_info_set_filename(spl_filesystem_object *intern, char *path,
static spl_filesystem_object * spl_filesystem_object_create_info(spl_filesystem_object *source, char *file_path, int file_path_len, int use_copy, zend_class_entry *ce, zval *return_value TSRMLS_DC) /* {{{ */
{
spl_filesystem_object *intern;
+ zval *arg1;
if (!file_path || !file_path_len) {
zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Cannot create SplFileInfo for empty path");
@@ -303,10 +320,18 @@ static spl_filesystem_object * spl_filesystem_object_create_info(spl_filesystem_
php_set_error_handling(EH_THROW, spl_ce_RuntimeException TSRMLS_CC);
- return_value->value.obj = spl_filesystem_object_new_ex(ce ? ce : source->info_class, &intern TSRMLS_CC);
+ ce = ce ? ce : source->info_class;
+ return_value->value.obj = spl_filesystem_object_new_ex(ce, &intern TSRMLS_CC);
Z_TYPE_P(return_value) = IS_OBJECT;
- spl_filesystem_info_set_filename(intern, file_path, file_path_len, use_copy TSRMLS_CC);
+ if (ce->constructor->common.scope != spl_ce_SplFileInfo) {
+ MAKE_STD_ZVAL(arg1);
+ ZVAL_STRINGL(arg1, file_path, file_path_len, use_copy);
+ zend_call_method_with_1_params(&return_value, ce, &ce->constructor, "__construct", NULL, arg1);
+ zval_ptr_dtor(&arg1);
+ } else {
+ spl_filesystem_info_set_filename(intern, file_path, file_path_len, use_copy TSRMLS_CC);
+ }
php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
@@ -317,6 +342,7 @@ static spl_filesystem_object * spl_filesystem_object_create_type(int ht, spl_fil
{
spl_filesystem_object *intern;
zend_bool use_include_path = 0;
+ zval *arg1, *arg2;
php_set_error_handling(EH_THROW, spl_ce_RuntimeException TSRMLS_CC);
@@ -334,40 +360,63 @@ static spl_filesystem_object * spl_filesystem_object_create_type(int ht, spl_fil
switch (type) {
case SPL_FS_INFO:
- return_value->value.obj = spl_filesystem_object_new_ex(ce ? ce : source->info_class, &intern TSRMLS_CC);
+ ce = ce ? ce : source->info_class;
+ return_value->value.obj = spl_filesystem_object_new_ex(ce, &intern TSRMLS_CC);
Z_TYPE_P(return_value) = IS_OBJECT;
-
+
spl_filesystem_object_get_file_name(source TSRMLS_CC);
- intern->file_name = estrndup(source->file_name, source->file_name_len);
- intern->file_name_len = source->file_name_len;
+ if (ce->constructor->common.scope != spl_ce_SplFileInfo) {
+ MAKE_STD_ZVAL(arg1);
+ ZVAL_STRINGL(arg1, source->file_name, source->file_name_len, 1);
+ zend_call_method_with_1_params(&return_value, ce, &ce->constructor, "__construct", NULL, arg1);
+ zval_ptr_dtor(&arg1);
+ } else {
+ intern->file_name = estrndup(source->file_name, source->file_name_len);
+ intern->file_name_len = source->file_name_len;
+ intern->path = estrndup(source->path, source->path_len);
+ intern->path_len = source->path_len;
+ }
break;
case SPL_FS_FILE:
- return_value->value.obj = spl_filesystem_object_new_ex(ce ? ce : source->file_class, &intern TSRMLS_CC);
+ ce = ce ? ce : source->file_class;
+ return_value->value.obj = spl_filesystem_object_new_ex(ce, &intern TSRMLS_CC);
Z_TYPE_P(return_value) = IS_OBJECT;
spl_filesystem_object_get_file_name(source TSRMLS_CC);
- intern->file_name = source->file_name;
- intern->file_name_len = source->file_name_len;
-
- intern->u.file.open_mode = "r";
- intern->u.file.open_mode_len = 1;
-
- if (ht && zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sbr",
- &intern->u.file.open_mode, &intern->u.file.open_mode_len,
- &use_include_path, &intern->u.file.zcontext) == FAILURE) {
- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
- intern->u.file.open_mode = NULL;
- zval_dtor(return_value);
- Z_TYPE_P(return_value) = IS_NULL;
- return NULL;
- }
-
- if (spl_filesystem_file_open(intern, use_include_path, 0 TSRMLS_CC) == FAILURE) {
- php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
- zval_dtor(return_value);
- Z_TYPE_P(return_value) = IS_NULL;
- return NULL;
+
+ if (ce->constructor->common.scope != spl_ce_SplFileObject) {
+ MAKE_STD_ZVAL(arg1);
+ MAKE_STD_ZVAL(arg2);
+ ZVAL_STRINGL(arg1, source->file_name, source->file_name_len, 1);
+ ZVAL_STRINGL(arg2, "r", 1, 1);
+ zend_call_method_with_2_params(&return_value, ce, &ce->constructor, "__construct", NULL, arg1, arg2);
+ zval_ptr_dtor(&arg1);
+ zval_ptr_dtor(&arg2);
+ } else {
+ intern->file_name = source->file_name;
+ intern->file_name_len = source->file_name_len;
+
+ intern->u.file.open_mode = "r";
+ intern->u.file.open_mode_len = 1;
+
+ if (ht && zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sbr",
+ &intern->u.file.open_mode, &intern->u.file.open_mode_len,
+ &use_include_path, &intern->u.file.zcontext) == FAILURE) {
+ php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
+ intern->u.file.open_mode = NULL;
+ zval_dtor(return_value);
+ Z_TYPE_P(return_value) = IS_NULL;
+ return NULL;
+ }
+
+ if (spl_filesystem_file_open(intern, use_include_path, 0 TSRMLS_CC) == FAILURE) {
+ php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
+ zval_dtor(return_value);
+ Z_TYPE_P(return_value) = IS_NULL;
+ return NULL;
+ }
}
+ break;
case SPL_FS_DIR:
php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Operation not supported");
@@ -392,6 +441,12 @@ SPL_METHOD(DirectoryIterator, __construct)
return;
}
+ if (!len) {
+ php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
+ zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Directory name must not be empty.");
+ return;
+ }
+
intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
spl_filesystem_dir_open(intern, path TSRMLS_CC);
intern->u.dir.is_recursive = instanceof_function(intern->std.ce, spl_ce_RecursiveDirectoryIterator TSRMLS_CC) ? 1 : 0;
@@ -690,34 +745,41 @@ SPL_METHOD(SplFileInfo, openFile)
spl_filesystem_object_create_type(ht, intern, SPL_FS_FILE, NULL, return_value TSRMLS_CC);
}
+/* }}} */
-/* {{{ proto SplFileObject SplFileInfo::setFileClass([string class_name])
+/* {{{ proto void SplFileInfo::setFileClass([string class_name])
Class to use in openFile() */
SPL_METHOD(SplFileInfo, setFileClass)
{
spl_filesystem_object *intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
zend_class_entry *ce = spl_ce_SplFileObject;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|C", &ce) == FAILURE) {
- return;
+ php_set_error_handling(EH_THROW, spl_ce_UnexpectedValueException TSRMLS_CC);
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|C", &ce) == SUCCESS) {
+ intern->file_class = ce;
}
- intern->file_class = ce;
+ php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
}
+/* }}} */
-/* {{{ proto SplFileObject SplFileInfo::setInfoClass([string class_name])
- Class to use in getFileInfo(), getPathInfo(), getSubPathInfo() */
+/* {{{ proto void SplFileInfo::setInfoClass([string class_name])
+ Class to use in getFileInfo(), getPathInfo() */
SPL_METHOD(SplFileInfo, setInfoClass)
{
spl_filesystem_object *intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
zend_class_entry *ce = spl_ce_SplFileInfo;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|C", &ce) == FAILURE) {
- return;
+ php_set_error_handling(EH_THROW, spl_ce_UnexpectedValueException TSRMLS_CC);
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|C", &ce) == SUCCESS) {
+ intern->info_class = ce;
}
- intern->file_class = ce;
+ php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
}
+/* }}} */
/* {{{ proto SplFileInfo SplFileInfo::getFileInfo([string $class_name])
Get/copy file info */
@@ -726,12 +788,15 @@ SPL_METHOD(SplFileInfo, getFileInfo)
spl_filesystem_object *intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
zend_class_entry *ce = intern->info_class;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|C", &ce) == FAILURE) {
- return;
+ php_set_error_handling(EH_THROW, spl_ce_UnexpectedValueException TSRMLS_CC);
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|C", &ce) == SUCCESS) {
+ spl_filesystem_object_create_type(ht, intern, SPL_FS_INFO, ce, return_value TSRMLS_CC);
}
- spl_filesystem_object_create_type(ht, intern, SPL_FS_INFO, ce, return_value TSRMLS_CC);
+ php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
}
+/* }}} */
/* {{{ proto SplFileInfo SplFileInfo::getPathInfo([string $class_name])
Get/copy file info */
@@ -740,12 +805,15 @@ SPL_METHOD(SplFileInfo, getPathInfo)
spl_filesystem_object *intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
zend_class_entry *ce = intern->info_class;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|C", &ce) == FAILURE) {
- return;
+ php_set_error_handling(EH_THROW, spl_ce_UnexpectedValueException TSRMLS_CC);
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|C", &ce) == SUCCESS) {
+ spl_filesystem_object_create_info(intern, intern->path, intern->path_len, 1, ce, return_value TSRMLS_CC);
}
- spl_filesystem_object_create_info(intern, intern->path, intern->path_len, 1, ce, return_value TSRMLS_CC);
+ php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
}
+/* }}} */
/* {{{ proto void RecursiveDirectoryIterator::__construct(string path [, int flags])
Cronstructs a new dir iterator from a path. */
@@ -756,7 +824,7 @@ SPL_METHOD(RecursiveDirectoryIterator, __construct)
int len;
long flags = SPL_FILE_DIR_CURRENT_AS_FILEINFO;
- php_set_error_handling(EH_THROW, spl_ce_RuntimeException TSRMLS_CC);
+ php_set_error_handling(EH_THROW, spl_ce_UnexpectedValueException TSRMLS_CC);
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &path, &len, &flags) == FAILURE) {
php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
@@ -852,12 +920,15 @@ SPL_METHOD(RecursiveDirectoryIterator, getChildren)
subdir = (spl_filesystem_object*)zend_object_store_get_object(return_value TSRMLS_CC);
if (subdir) {
if (intern->u.dir.sub_path && intern->u.dir.sub_path[0]) {
- subdir->u.dir.sub_path_len = spprintf(&subdir->u.dir.sub_path, 0, "%s/%s", intern->u.dir.sub_path, intern->u.dir.entry.d_name);
+ subdir->u.dir.sub_path_len = spprintf(&subdir->u.dir.sub_path, 0, "%s%c%s", intern->u.dir.sub_path, DEFAULT_SLASH, intern->u.dir.entry.d_name);
} else {
subdir->u.dir.sub_path_len = strlen(intern->u.dir.entry.d_name);
subdir->u.dir.sub_path = estrndup(intern->u.dir.entry.d_name, subdir->u.dir.sub_path_len);
}
+ subdir->info_class = intern->info_class;
+ subdir->file_class = intern->file_class;
subdir->flags = intern->flags;
+ subdir->oth = intern->oth;
}
}
/* }}} */
@@ -885,7 +956,7 @@ SPL_METHOD(RecursiveDirectoryIterator, getSubPathname)
int len;
if (intern->u.dir.sub_path) {
- len = spprintf(&sub_name, 0, "%s/%s", intern->u.dir.sub_path, intern->u.dir.entry.d_name);
+ len = spprintf(&sub_name, 0, "%s%c%s", intern->u.dir.sub_path, DEFAULT_SLASH, intern->u.dir.entry.d_name);
RETURN_STRINGL(sub_name, len, 0);
} else {
RETURN_STRING(intern->u.dir.entry.d_name, 1);
@@ -893,28 +964,6 @@ SPL_METHOD(RecursiveDirectoryIterator, getSubPathname)
}
/* }}} */
-/* {{{ proto SplFileInfo RecursiveDirectoryIterator::getSubPathInfo([string $class_info])
- Create SplFileInfo for sub path */
-SPL_METHOD(RecursiveDirectoryIterator, getSubPathInfo)
-{
- spl_filesystem_object *intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
- char *sub_name;
- int len;
- zend_class_entry *ce = intern->info_class;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|C", &ce) == FAILURE) {
- return;
- }
-
- if (intern->u.dir.sub_path) {
- len = spprintf(&sub_name, 0, "%s/%s", intern->u.dir.sub_path, intern->u.dir.entry.d_name);
- spl_filesystem_object_create_info(intern, sub_name, len, 0, ce, return_value TSRMLS_CC);
- } else {
- spl_filesystem_object_create_info(intern, intern->path, intern->path_len, 1, ce, return_value TSRMLS_CC);
- }
-}
-/* }}} */
-
/* define an overloaded iterator structure */
typedef struct {
zend_object_iterator intern;
@@ -1181,6 +1230,7 @@ static int spl_filesystem_object_cast(zval *readobj, zval *writeobj, int type, i
return SUCCESS;
}
}
+ ZVAL_NULL(writeobj);
return FAILURE;
}
/* }}} */
@@ -1190,19 +1240,19 @@ static int spl_filesystem_object_cast(zval *readobj, zval *writeobj, int type, i
static
ZEND_BEGIN_ARG_INFO(arginfo_info___construct, 0)
ZEND_ARG_INFO(0, file_name)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_info_openFile, 0, 0, 0)
ZEND_ARG_INFO(0, open_mode)
ZEND_ARG_INFO(0, use_include_path)
ZEND_ARG_INFO(0, context)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_info_optinalFileClass, 0, 0, 0)
ZEND_ARG_INFO(0, class_name)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
/* the method table */
/* each method can have its own parameters and visibility */
@@ -1238,7 +1288,7 @@ static zend_function_entry spl_SplFileInfo_functions[] = {
static
ZEND_BEGIN_ARG_INFO(arginfo_dir___construct, 0)
ZEND_ARG_INFO(0, path)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
/* the method table */
/* each method can have its own parameters and visibility */
@@ -1259,7 +1309,7 @@ static
ZEND_BEGIN_ARG_INFO(arginfo_r_dir___construct, 0)
ZEND_ARG_INFO(0, path)
ZEND_ARG_INFO(0, flags)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static zend_function_entry spl_RecursiveDirectoryIterator_functions[] = {
SPL_ME(RecursiveDirectoryIterator, __construct, arginfo_r_dir___construct, ZEND_ACC_PUBLIC)
@@ -1271,14 +1321,13 @@ static zend_function_entry spl_RecursiveDirectoryIterator_functions[] = {
SPL_ME(RecursiveDirectoryIterator, getChildren, NULL, ZEND_ACC_PUBLIC)
SPL_ME(RecursiveDirectoryIterator, getSubPath, NULL, ZEND_ACC_PUBLIC)
SPL_ME(RecursiveDirectoryIterator, getSubPathname,NULL, ZEND_ACC_PUBLIC)
- SPL_ME(RecursiveDirectoryIterator, getSubPathInfo,arginfo_info_optinalFileClass, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
static int spl_filesystem_file_read(spl_filesystem_object *intern, int silent TSRMLS_DC) /* {{{ */
{
char *buf;
- size_t line_len;
+ size_t line_len = 0;
int len;
long line_add = (intern->u.file.current_line || intern->u.file.current_zval) ? 1 : 0;
@@ -1291,7 +1340,17 @@ static int spl_filesystem_file_read(spl_filesystem_object *intern, int silent TS
return FAILURE;
}
- buf = php_stream_get_line(intern->u.file.stream, NULL, intern->u.file.max_line_len, &line_len);
+ if (intern->u.file.max_line_len > 0) {
+ buf = emalloc((intern->u.file.max_line_len + 1) * sizeof(char));
+ if (php_stream_get_line(intern->u.file.stream, buf, intern->u.file.max_line_len, &line_len) == NULL) {
+ efree(buf);
+ buf = NULL;
+ } else {
+ buf[line_len] = '\0';
+ }
+ } else {
+ buf = php_stream_get_line(intern->u.file.stream, NULL, 0, &line_len);
+ }
if (!buf) {
intern->u.file.current_line = estrdup("");
@@ -1317,7 +1376,7 @@ static int spl_filesystem_file_read(spl_filesystem_object *intern, int silent TS
static int spl_filesystem_file_read_line(zval * this_ptr, spl_filesystem_object *intern, int silent TSRMLS_DC) /* {{{ */
{
- zval *retval;
+ zval *retval = NULL;
/* if overloaded call the function, otherwise do it directly */
if (intern->u.file.func_getCurr->common.scope != spl_ce_SplFileObject) {
@@ -1383,7 +1442,11 @@ SPL_METHOD(SplFileObject, __construct)
if (spl_filesystem_file_open(intern, use_include_path, 0 TSRMLS_CC) == SUCCESS) {
p1 = strrchr(intern->file_name, '/');
+#if defined(PHP_WIN32) || defined(NETWARE)
p2 = strrchr(intern->file_name, '\\');
+#else
+ p2 = 0;
+#endif
if (p1 || p2) {
intern->path_len = (p1 > p2 ? p1 : p2) - intern->file_name;
} else {
@@ -1774,13 +1837,13 @@ SPL_METHOD(SplFileObject, fwrite)
char *str;
int str_len;
int ret;
- long length;
+ long length = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &str, &str_len, &length) == FAILURE) {
return;
}
- if (ZEND_NUM_ARGS() < 2) {
+ if (ZEND_NUM_ARGS() > 1) {
str_len = MAX(0, MIN(length, str_len));
}
if (!str_len) {
@@ -1851,61 +1914,61 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object___construct, 0, 0, 1)
ZEND_ARG_INFO(0, open_mode)
ZEND_ARG_INFO(0, use_include_path)
ZEND_ARG_INFO(0, context)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO(arginfo_file_object_setFlags, 0)
ZEND_ARG_INFO(0, flags)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO(arginfo_file_object_setMaxLineLen, 0)
ZEND_ARG_INFO(0, max_len)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fgetcsv, 0, 0, 0)
ZEND_ARG_INFO(0, delimiter)
ZEND_ARG_INFO(0, enclosure)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_flock, 0, 0, 1)
ZEND_ARG_INFO(0, operation)
- ZEND_ARG_INFO(1, wouldblock])
-ZEND_END_ARG_INFO();
+ ZEND_ARG_INFO(1, wouldblock)
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fseek, 0, 0, 1)
ZEND_ARG_INFO(0, pos)
ZEND_ARG_INFO(0, whence)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fgetss, 0, 0, 0)
ZEND_ARG_INFO(0, allowable_tags)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fscanf, 0, 0, 1)
ZEND_ARG_INFO(0, format)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fwrite, 0, 0, 1)
ZEND_ARG_INFO(0, str)
ZEND_ARG_INFO(0, length)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_ftruncate, 0, 0, 1)
ZEND_ARG_INFO(0, size)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_seek, 0, 0, 1)
ZEND_ARG_INFO(0, line_pos)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static zend_function_entry spl_SplFileObject_functions[] = {
SPL_ME(SplFileObject, __construct, arginfo_file_object___construct, ZEND_ACC_PUBLIC)
@@ -1945,7 +2008,7 @@ static zend_function_entry spl_SplFileObject_functions[] = {
static
ZEND_BEGIN_ARG_INFO_EX(arginfo_temp_file_object___construct, 0, 0, 1)
ZEND_ARG_INFO(0, max_memory)
-ZEND_END_ARG_INFO();
+ZEND_END_ARG_INFO()
static zend_function_entry spl_SplTempFileObject_functions[] = {
SPL_ME(SplTempFileObject, __construct, arginfo_temp_file_object___construct, ZEND_ACC_PUBLIC)
diff --git a/ext/spl/spl_directory.h b/ext/spl/spl_directory.h
index a2bc9c4c0..513fa7eb8 100755
--- a/ext/spl/spl_directory.h
+++ b/ext/spl/spl_directory.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_directory.h,v 1.12.2.3 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: spl_directory.h,v 1.12.2.5 2006/03/08 21:54:48 helly Exp $ */
#ifndef SPL_DIRECTORY_H
#define SPL_DIRECTORY_H
@@ -33,13 +33,25 @@ extern PHPAPI zend_class_entry *spl_ce_SplTempFileObject;
PHP_MINIT_FUNCTION(spl_directory);
typedef enum {
- SPL_FS_INFO,
+ SPL_FS_INFO, /* must be 0 */
SPL_FS_DIR,
SPL_FS_FILE,
} SPL_FS_OBJ_TYPE;
-typedef struct _spl_filesystem_object {
+typedef struct _spl_filesystem_object spl_filesystem_object;
+
+typedef void (*spl_foreign_dtor_t)(spl_filesystem_object *object TSRMLS_DC);
+typedef void (*spl_foreign_clone_t)(spl_filesystem_object *src, spl_filesystem_object *dst TSRMLS_DC);
+
+typedef struct _spl_other_handler {
+ spl_foreign_dtor_t dtor;
+ spl_foreign_clone_t clone;
+} spl_other_handler;
+
+struct _spl_filesystem_object {
zend_object std;
+ void *oth;
+ spl_other_handler *oth_handler;
char *path;
int path_len;
char *file_name;
@@ -72,7 +84,7 @@ typedef struct _spl_filesystem_object {
zend_function *func_getCurr;
} file;
} u;
-} spl_filesystem_object;
+};
#define SPL_FILE_OBJECT_DROP_NEW_LINE 0x00000001 /* drop new lines */
diff --git a/ext/spl/spl_engine.c b/ext/spl/spl_engine.c
index 2da47f7d3..dcc9af3c6 100755
--- a/ext/spl/spl_engine.c
+++ b/ext/spl/spl_engine.c
@@ -32,7 +32,7 @@
#include "spl_array.h"
/* {{{ spl_instantiate */
-void spl_instantiate(zend_class_entry *pce, zval **object, int alloc TSRMLS_DC)
+PHPAPI void spl_instantiate(zend_class_entry *pce, zval **object, int alloc TSRMLS_DC)
{
if (alloc) {
ALLOC_ZVAL(*object);
@@ -43,20 +43,6 @@ void spl_instantiate(zend_class_entry *pce, zval **object, int alloc TSRMLS_DC)
}
/* }}} */
-/* {{{ spl_is_instance_of */
-int spl_is_instance_of(zval **obj, zend_class_entry *ce TSRMLS_DC)
-{
- /* Ensure everything needed is available before checking for the type.
- */
- zend_class_entry *instance_ce;
-
- if (obj && (instance_ce = spl_get_class_entry(*obj TSRMLS_CC)) != NULL) {
- return instanceof_function(instance_ce, ce TSRMLS_CC);
- }
- return 0;
-}
-/* }}} */
-
/*
* Local variables:
* tab-width: 4
diff --git a/ext/spl/spl_engine.h b/ext/spl/spl_engine.h
index 0e953bbf1..06a77942f 100755
--- a/ext/spl/spl_engine.h
+++ b/ext/spl/spl_engine.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_engine.h,v 1.19.2.1 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: spl_engine.h,v 1.19.2.3 2006/03/14 18:07:51 fmk Exp $ */
#ifndef SPL_ENGINE_H
#define SPL_ENGINE_H
@@ -36,7 +36,7 @@ static inline zend_class_entry *spl_get_class_entry(zval *obj TSRMLS_DC)
}
/* }}} */
-void spl_instantiate(zend_class_entry *pce, zval **object, int alloc TSRMLS_DC);
+PHPAPI void spl_instantiate(zend_class_entry *pce, zval **object, int alloc TSRMLS_DC);
/* {{{ spl_instantiate_arg_ex1 */
static inline int spl_instantiate_arg_ex1(zend_class_entry *pce, zval **retval, int alloc, zval *arg1 TSRMLS_DC)
@@ -58,8 +58,6 @@ static inline int spl_instantiate_arg_ex2(zend_class_entry *pce, zval **retval,
}
/* }}} */
-int spl_is_instance_of(zval **obj, zend_class_entry *ce TSRMLS_DC);
-
#endif /* SPL_ENGINE_H */
/*
diff --git a/ext/spl/spl_functions.c b/ext/spl/spl_functions.c
index b257982d1..52f92f692 100755
--- a/ext/spl/spl_functions.c
+++ b/ext/spl/spl_functions.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_functions.c,v 1.28.2.2 2006/01/01 12:50:13 sniper Exp $ */
+/* $Id: spl_functions.c,v 1.28.2.3 2006/03/09 11:43:45 sebastian Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -50,7 +50,7 @@ void spl_register_interface(zend_class_entry ** ppce, char * class_name, zend_fu
/* }}} */
/* {{{ spl_register_std_class */
-void spl_register_std_class(zend_class_entry ** ppce, char * class_name, void * obj_ctor, zend_function_entry * function_list TSRMLS_DC)
+PHPAPI void spl_register_std_class(zend_class_entry ** ppce, char * class_name, void * obj_ctor, zend_function_entry * function_list TSRMLS_DC)
{
zend_class_entry ce;
@@ -66,7 +66,7 @@ void spl_register_std_class(zend_class_entry ** ppce, char * class_name, void *
/* }}} */
/* {{{ spl_register_sub_class */
-void spl_register_sub_class(zend_class_entry ** ppce, zend_class_entry * parent_ce, char * class_name, void *obj_ctor, zend_function_entry * function_list TSRMLS_DC)
+PHPAPI void spl_register_sub_class(zend_class_entry ** ppce, zend_class_entry * parent_ce, char * class_name, void *obj_ctor, zend_function_entry * function_list TSRMLS_DC)
{
zend_class_entry ce;
diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c
index df065545f..0ba01180b 100755
--- a/ext/spl/spl_iterators.c
+++ b/ext/spl/spl_iterators.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_iterators.c,v 1.73.2.20 2006/01/01 19:55:27 helly Exp $ */
+/* $Id: spl_iterators.c,v 1.73.2.33 2006/07/17 21:13:32 helly Exp $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -36,6 +36,10 @@
#include "spl_array.h"
#include "spl_exceptions.h"
+#ifdef accept
+#undef accept
+#endif
+
PHPAPI zend_class_entry *spl_ce_RecursiveIterator;
PHPAPI zend_class_entry *spl_ce_RecursiveIteratorIterator;
PHPAPI zend_class_entry *spl_ce_FilterIterator;
@@ -359,7 +363,7 @@ zend_object_iterator_funcs spl_recursive_it_iterator_funcs = {
spl_recursive_it_rewind
};
-/* {{{ proto RecursiveIteratorIterator::__construct(RecursiveIterator|IteratorAggregate it [, int mode = RIT_LEAVES_ONLY [, int flags = 0]]) throws InvalidArgumentException
+/* {{{ proto void RecursiveIteratorIterator::__construct(RecursiveIterator|IteratorAggregate it [, int mode = RIT_LEAVES_ONLY [, int flags = 0]]) throws InvalidArgumentException
Creates a RecursiveIteratorIterator from a RecursiveIterator. */
SPL_METHOD(RecursiveIteratorIterator, __construct)
{
@@ -448,7 +452,7 @@ SPL_METHOD(RecursiveIteratorIterator, rewind)
spl_recursive_it_rewind_ex(object, getThis() TSRMLS_CC);
} /* }}} */
-/* {{{ proto bolean RecursiveIteratorIterator::valid()
+/* {{{ proto bool RecursiveIteratorIterator::valid()
Check whether the current position is valid */
SPL_METHOD(RecursiveIteratorIterator, valid)
{
@@ -584,28 +588,28 @@ SPL_METHOD(RecursiveIteratorIterator, callGetChildren)
}
} /* }}} */
-/* {{{ proto RecursiveIterator RecursiveIteratorIterator::beginChildren()
+/* {{{ proto void RecursiveIteratorIterator::beginChildren()
Called when recursing one level down */
SPL_METHOD(RecursiveIteratorIterator, beginChildren)
{
/* nothing to do */
} /* }}} */
-/* {{{ proto RecursiveIterator RecursiveIteratorIterator::endChildren()
+/* {{{ proto void RecursiveIteratorIterator::endChildren()
Called when end recursing one level */
SPL_METHOD(RecursiveIteratorIterator, endChildren)
{
/* nothing to do */
} /* }}} */
-/* {{{ proto RecursiveIterator RecursiveIteratorIterator::nextElement()
+/* {{{ proto void RecursiveIteratorIterator::nextElement()
Called when the next element is available */
SPL_METHOD(RecursiveIteratorIterator, nextElement)
{
/* nothing to do */
} /* }}} */
-/* {{{ proto RecursiveIterator RecursiveIteratorIterator::setMaxDepth([$max_depth = -1])
+/* {{{ proto void RecursiveIteratorIterator::setMaxDepth([$max_depth = -1])
Set the maximum allowed depth (or any depth if pmax_depth = -1] */
SPL_METHOD(RecursiveIteratorIterator, setMaxDepth)
{
@@ -622,7 +626,7 @@ SPL_METHOD(RecursiveIteratorIterator, setMaxDepth)
object->max_depth = max_depth;
} /* }}} */
-/* {{{ proto RecursiveIterator RecursiveIteratorIterator::getMaxDepth()
+/* {{{ proto int|false RecursiveIteratorIterator::getMaxDepth()
Return the maximum accepted depth or false if any depth is allowed */
SPL_METHOD(RecursiveIteratorIterator, getMaxDepth)
{
@@ -670,8 +674,7 @@ static void spl_RecursiveIteratorIterator_free_storage(void *_object TSRMLS_DC)
object->iterators = NULL;
}
- zend_hash_destroy(object->std.properties);
- FREE_HASHTABLE(object->std.properties);
+ zend_object_std_dtor(&object->std TSRMLS_CC);
efree(object);
}
@@ -686,10 +689,8 @@ static zend_object_value spl_RecursiveIteratorIterator_new(zend_class_entry *cla
intern = emalloc(sizeof(spl_recursive_it_object));
memset(intern, 0, sizeof(spl_recursive_it_object));
- intern->std.ce = class_type;
- ALLOC_HASHTABLE(intern->std.properties);
- zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ zend_object_std_init(&intern->std, class_type TSRMLS_CC);
zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t) spl_RecursiveIteratorIterator_free_storage, NULL TSRMLS_CC);
@@ -815,18 +816,32 @@ int spl_dual_it_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS)
}
#endif
+#define SPL_CHECK_CTOR(intern, classname) \
+ if (intern->dit_type == DIT_Unknown) { \
+ zend_throw_exception_ex(spl_ce_BadMethodCallException, 0 TSRMLS_CC, "Classes derived from %s must call %s::__construct()", \
+ (spl_ce_##classname)->name, (spl_ce_##classname)->name); \
+ return; \
+ }
+
+#define APPENDIT_CHECK_CTOR(intern) SPL_CHECK_CTOR(intern, AppendIterator)
+
static inline int spl_dual_it_fetch(spl_dual_it_object *intern, int check_more TSRMLS_DC);
-static inline spl_dual_it_object* spl_dual_it_construct(INTERNAL_FUNCTION_PARAMETERS, zend_class_entry *ce_inner, dual_it_type dit_type)
+static spl_dual_it_object* spl_dual_it_construct(INTERNAL_FUNCTION_PARAMETERS, zend_class_entry *ce_base, zend_class_entry *ce_inner, dual_it_type dit_type)
{
zval *zobject, *retval;
spl_dual_it_object *intern;
- zend_class_entry *ce;
+ zend_class_entry *ce = NULL;
int inc_refcount = 1;
- php_set_error_handling(EH_THROW, spl_ce_InvalidArgumentException TSRMLS_CC);
-
intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ if (intern->dit_type != DIT_Unknown) {
+ zend_throw_exception_ex(spl_ce_BadMethodCallException, 0 TSRMLS_CC, "%s::getIterator() must be called exactly once per instance", ce_base->name);
+ return NULL;
+ }
+
+ php_set_error_handling(EH_THROW, spl_ce_InvalidArgumentException TSRMLS_CC);
intern->dit_type = dit_type;
switch (dit_type) {
@@ -859,7 +874,7 @@ static inline spl_dual_it_object* spl_dual_it_construct(INTERNAL_FUNCTION_PARAME
if (((flags & CIT_CALL_TOSTRING) && (flags & (CIT_TOSTRING_USE_KEY|CIT_TOSTRING_USE_CURRENT)))
|| ((flags & (CIT_TOSTRING_USE_KEY|CIT_TOSTRING_USE_CURRENT)) == (CIT_TOSTRING_USE_KEY|CIT_TOSTRING_USE_CURRENT))) {
php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
- zend_throw_exception(spl_ce_InvalidArgumentException, "Flags must contain only one of CIT_CALL_TOSTRING, CIT_TOSTRING_USE_KEY, CIT_TOSTRING_USE_CURRENT", 0 TSRMLS_CC);
+ zend_throw_exception(spl_ce_InvalidArgumentException, "Flags must contain only one of CATCH_GET_CHILD, CALL_TOSTRING, TOSTRING_USE_KEY, TOSTRING_USE_CURRENT", 0 TSRMLS_CC);
return NULL;
}
intern->u.caching.flags |= flags & CIT_PUBLIC;
@@ -929,11 +944,11 @@ static inline spl_dual_it_object* spl_dual_it_construct(INTERNAL_FUNCTION_PARAME
return intern;
}
-/* {{{ proto FilterIterator::__construct(Iterator it)
+/* {{{ proto void FilterIterator::__construct(Iterator it)
Create an Iterator from another iterator */
-SPL_METHOD(dual_it, __construct)
+SPL_METHOD(FilterIterator, __construct)
{
- spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, zend_ce_iterator, DIT_Default);
+ spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_FilterIterator, zend_ce_iterator, DIT_FilterIterator);
} /* }}} */
/* {{{ proto Iterator FilterIterator::getInnerIterator()
@@ -1045,10 +1060,10 @@ SPL_METHOD(dual_it, rewind)
spl_dual_it_fetch(intern, 1 TSRMLS_CC);
} /* }}} */
-/* {{{ proto boolean FilterIterator::valid()
- proto boolean ParentIterator::valid()
- proto boolean IteratorIterator::valid()
- proto boolean NoRewindIterator::valid()
+/* {{{ proto bool FilterIterator::valid()
+ proto bool ParentIterator::valid()
+ proto bool IteratorIterator::valid()
+ proto bool NoRewindIterator::valid()
Check whether the current element is valid */
SPL_METHOD(dual_it, valid)
{
@@ -1169,14 +1184,14 @@ SPL_METHOD(FilterIterator, next)
spl_filter_it_next(getThis(), intern TSRMLS_CC);
} /* }}} */
-/* {{{ proto RecursiveFilterIterator::__construct(RecursiveIterator it)
+/* {{{ proto void RecursiveFilterIterator::__construct(RecursiveIterator it)
Create a RecursiveFilterIterator from a RecursiveIterator */
SPL_METHOD(RecursiveFilterIterator, __construct)
{
- spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RecursiveIterator, DIT_Default);
+ spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RecursiveFilterIterator, spl_ce_RecursiveIterator, DIT_RecursiveFilterIterator);
} /* }}} */
-/* {{{ proto boolean RecursiveFilterIterator::hasChildren()
+/* {{{ proto bool RecursiveFilterIterator::hasChildren()
Check whether the inner iterator's current element has children */
SPL_METHOD(RecursiveFilterIterator, hasChildren)
{
@@ -1199,18 +1214,18 @@ SPL_METHOD(RecursiveFilterIterator, getChildren)
intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "getchildren", &retval);
- spl_instantiate_arg_ex1(spl_ce_RecursiveFilterIterator, &return_value, 0, retval TSRMLS_CC);
+ spl_instantiate_arg_ex1(Z_OBJCE_P(getThis()), &return_value, 0, retval TSRMLS_CC);
zval_ptr_dtor(&retval);
} /* }}} */
-/* {{{ proto ParentIterator::__construct(RecursiveIterator it)
+/* {{{ proto void ParentIterator::__construct(RecursiveIterator it)
Create a ParentIterator from a RecursiveIterator */
SPL_METHOD(ParentIterator, __construct)
{
- spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RecursiveIterator, DIT_Default);
+ spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_ParentIterator, spl_ce_RecursiveIterator, DIT_ParentIterator);
} /* }}} */
-/* {{{ proto boolean ParentIterator::hasChildren()
+/* {{{ proto bool ParentIterator::hasChildren()
Check whether the inner iterator's current element has children */
SPL_METHOD(ParentIterator, hasChildren)
{
@@ -1233,12 +1248,12 @@ SPL_METHOD(ParentIterator, getChildren)
intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "getchildren", &retval);
- spl_instantiate_arg_ex1(spl_ce_ParentIterator, &return_value, 0, retval TSRMLS_CC);
+ spl_instantiate_arg_ex1(Z_OBJCE_P(getThis()), &return_value, 0, retval TSRMLS_CC);
zval_ptr_dtor(&retval);
} /* }}} */
/* {{{ spl_dual_it_free_storage */
-static inline void spl_dual_it_free_storage(void *_object TSRMLS_DC)
+static void spl_dual_it_free_storage(void *_object TSRMLS_DC)
{
spl_dual_it_object *object = (spl_dual_it_object *)_object;
@@ -1257,8 +1272,7 @@ static inline void spl_dual_it_free_storage(void *_object TSRMLS_DC)
zval_ptr_dtor(&object->u.append.zarrayit);
}
- zend_hash_destroy(object->std.properties);
- FREE_HASHTABLE(object->std.properties);
+ zend_object_std_dtor(&object->std TSRMLS_CC);
efree(object);
}
@@ -1273,10 +1287,9 @@ static zend_object_value spl_dual_it_new(zend_class_entry *class_type TSRMLS_DC)
intern = emalloc(sizeof(spl_dual_it_object));
memset(intern, 0, sizeof(spl_dual_it_object));
- intern->std.ce = class_type;
+ intern->dit_type = DIT_Unknown;
- ALLOC_HASHTABLE(intern->std.properties);
- zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ zend_object_std_init(&intern->std, class_type TSRMLS_CC);
zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t) spl_dual_it_free_storage, NULL TSRMLS_CC);
@@ -1291,7 +1304,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_filter_it___construct, 0)
ZEND_END_ARG_INFO();
static zend_function_entry spl_funcs_FilterIterator[] = {
- SPL_ME(dual_it, __construct, arginfo_filter_it___construct, ZEND_ACC_PUBLIC)
+ SPL_ME(FilterIterator, __construct, arginfo_filter_it___construct, ZEND_ACC_PUBLIC)
SPL_ME(FilterIterator, rewind, NULL, ZEND_ACC_PUBLIC)
SPL_ME(dual_it, valid, NULL, ZEND_ACC_PUBLIC)
SPL_ME(dual_it, key, NULL, ZEND_ACC_PUBLIC)
@@ -1343,7 +1356,7 @@ static inline void spl_limit_it_seek(spl_dual_it_object *intern, long pos TSRMLS
zend_throw_exception_ex(spl_ce_OutOfBoundsException, 0 TSRMLS_CC, "Cannot seek to %ld which is below the offset %ld", pos, intern->u.limit.offset);
return;
}
- if (pos > intern->u.limit.offset + intern->u.limit.count && intern->u.limit.count != -1) {
+ if (pos >= intern->u.limit.offset + intern->u.limit.count && intern->u.limit.count != -1) {
zend_throw_exception_ex(spl_ce_OutOfBoundsException, 0 TSRMLS_CC, "Cannot seek to %ld which is behind offest %ld plus count %ld", pos, intern->u.limit.offset, intern->u.limit.count);
return;
}
@@ -1376,7 +1389,7 @@ static inline void spl_limit_it_seek(spl_dual_it_object *intern, long pos TSRMLS
Construct a LimitIterator from an Iterator with a given starting offset and optionally a maximum count */
SPL_METHOD(LimitIterator, __construct)
{
- spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, zend_ce_iterator, DIT_LimitIterator);
+ spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_LimitIterator, zend_ce_iterator, DIT_LimitIterator);
} /* }}} */
/* {{{ proto void LimitIterator::rewind()
@@ -1390,7 +1403,7 @@ SPL_METHOD(LimitIterator, rewind)
spl_limit_it_seek(intern, intern->u.limit.offset TSRMLS_CC);
} /* }}} */
-/* {{{ proto boolean LimitIterator::valid()
+/* {{{ proto bool LimitIterator::valid()
Check whether the current element is valid */
SPL_METHOD(LimitIterator, valid)
{
@@ -1564,11 +1577,11 @@ static inline void spl_caching_it_rewind(spl_dual_it_object *intern TSRMLS_DC)
spl_caching_it_next(intern TSRMLS_CC);
}
-/* {{{ proto CachingIterator::__construct(Iterator it [, flags = CIT_CALL_TOSTRING])
+/* {{{ proto void CachingIterator::__construct(Iterator it [, flags = CIT_CALL_TOSTRING])
Construct a CachingIterator from an Iterator */
SPL_METHOD(CachingIterator, __construct)
{
- spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, zend_ce_iterator, DIT_CachingIterator);
+ spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_CachingIterator, zend_ce_iterator, DIT_CachingIterator);
} /* }}} */
/* {{{ proto void CachingIterator::rewind()
@@ -1582,7 +1595,7 @@ SPL_METHOD(CachingIterator, rewind)
spl_caching_it_rewind(intern TSRMLS_CC);
} /* }}} */
-/* {{{ proto boolean CachingIterator::valid()
+/* {{{ proto bool CachingIterator::valid()
Check whether the current element is valid */
SPL_METHOD(CachingIterator, valid)
{
@@ -1604,7 +1617,7 @@ SPL_METHOD(CachingIterator, next)
spl_caching_it_next(intern TSRMLS_CC);
} /* }}} */
-/* {{{ proto boolean CachingIterator::hasNext()
+/* {{{ proto bool CachingIterator::hasNext()
Check whether the inner iterator has a valid next element */
SPL_METHOD(CachingIterator, hasNext)
{
@@ -1628,7 +1641,7 @@ SPL_METHOD(CachingIterator, __toString)
}
if (intern->u.caching.flags & CIT_TOSTRING_USE_KEY) {
if (intern->current.key_type == HASH_KEY_IS_STRING) {
- RETURN_STRINGL(intern->current.str_key, intern->current.str_key_len, 1);
+ RETURN_STRINGL(intern->current.str_key, intern->current.str_key_len-1, 1);
} else {
RETVAL_LONG(intern->current.int_key);
convert_to_string(return_value);
@@ -1665,14 +1678,14 @@ static zend_function_entry spl_funcs_CachingIterator[] = {
{NULL, NULL, NULL}
};
-/* {{{ proto RecursiveCachingIterator::__construct(RecursiveIterator it [, flags = CIT_CALL_TOSTRING])
+/* {{{ proto void RecursiveCachingIterator::__construct(RecursiveIterator it [, flags = CIT_CALL_TOSTRING])
Create an iterator from a RecursiveIterator */
SPL_METHOD(RecursiveCachingIterator, __construct)
{
- spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RecursiveIterator, DIT_RecursiveCachingIterator);
+ spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_RecursiveCachingIterator, spl_ce_RecursiveIterator, DIT_RecursiveCachingIterator);
} /* }}} */
-/* {{{ proto bolean RecursiveCachingIterator::hasChildren()
+/* {{{ proto bool RecursiveCachingIterator::hasChildren()
Check whether the current element of the inner iterator has children */
SPL_METHOD(RecursiveCachingIterator, hasChildren)
{
@@ -1711,11 +1724,11 @@ static zend_function_entry spl_funcs_RecursiveCachingIterator[] = {
{NULL, NULL, NULL}
};
-/* {{{ proto IteratorIterator::__construct(Traversable it)
+/* {{{ proto void IteratorIterator::__construct(Traversable it)
Create an iterator from anything that is traversable */
SPL_METHOD(IteratorIterator, __construct)
{
- spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, zend_ce_traversable, DIT_IteratorIterator);
+ spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_IteratorIterator, zend_ce_traversable, DIT_IteratorIterator);
} /* }}} */
static
@@ -1734,11 +1747,11 @@ static zend_function_entry spl_funcs_IteratorIterator[] = {
{NULL, NULL, NULL}
};
-/* {{{ proto NoRewindIterator::__construct(Iterator it)
+/* {{{ proto void NoRewindIterator::__construct(Iterator it)
Create an iterator from another iterator */
SPL_METHOD(NoRewindIterator, __construct)
{
- spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, zend_ce_iterator, DIT_NoRewindIterator);
+ spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_NoRewindIterator, zend_ce_iterator, DIT_NoRewindIterator);
} /* }}} */
/* {{{ proto void NoRewindIterator::rewind()
@@ -1748,7 +1761,7 @@ SPL_METHOD(NoRewindIterator, rewind)
/* nothing to do */
} /* }}} */
-/* {{{ proto void NoRewindIterator::valid()
+/* {{{ proto bool NoRewindIterator::valid()
Return inner iterators valid() */
SPL_METHOD(NoRewindIterator, valid)
{
@@ -1818,14 +1831,14 @@ static zend_function_entry spl_funcs_NoRewindIterator[] = {
{NULL, NULL, NULL}
};
-/* {{{ proto InfiniteIterator::__construct(Iterator it)
+/* {{{ proto void InfiniteIterator::__construct(Iterator it)
Create an iterator from another iterator */
SPL_METHOD(InfiniteIterator, __construct)
{
- spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, zend_ce_iterator, DIT_InfiniteIterator);
+ spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_InfiniteIterator, zend_ce_iterator, DIT_InfiniteIterator);
} /* }}} */
-/* {{{ proto InfiniteIterator::next()
+/* {{{ proto void InfiniteIterator::next()
Prevent a call to inner iterators rewind() (internally the current data will be fetched if valid()) */
SPL_METHOD(InfiniteIterator, next)
{
@@ -1850,34 +1863,34 @@ static zend_function_entry spl_funcs_InfiniteIterator[] = {
{NULL, NULL, NULL}
};
-/* {{{ proto EmptyIterator::rewind()
+/* {{{ proto void EmptyIterator::rewind()
Does nothing */
SPL_METHOD(EmptyIterator, rewind)
{
} /* }}} */
-/* {{{ proto EmptyIterator::valid()
+/* {{{ proto false EmptyIterator::valid()
Return false */
SPL_METHOD(EmptyIterator, valid)
{
RETURN_FALSE;
} /* }}} */
-/* {{{ proto EmptyIterator::key()
- Throws exception */
+/* {{{ proto void EmptyIterator::key()
+ Throws exception BadMethodCallException */
SPL_METHOD(EmptyIterator, key)
{
zend_throw_exception(spl_ce_BadMethodCallException, "Accessing the key of an EmptyIterator", 0 TSRMLS_CC);
} /* }}} */
-/* {{{ proto EmptyIterator::current()
- Throws exception */
+/* {{{ proto void EmptyIterator::current()
+ Throws exception BadMethodCallException */
SPL_METHOD(EmptyIterator, current)
{
zend_throw_exception(spl_ce_BadMethodCallException, "Accessing the value of an EmptyIterator", 0 TSRMLS_CC);
} /* }}} */
-/* {{{ proto EmptyIterator::next()
+/* {{{ proto void EmptyIterator::next()
Does nothing */
SPL_METHOD(EmptyIterator, next)
{
@@ -1916,7 +1929,6 @@ int spl_append_it_next_iterator(spl_dual_it_object *intern TSRMLS_DC) /* {{{*/
intern->inner.object = zend_object_store_get_object(*it TSRMLS_CC);
intern->inner.iterator = intern->inner.ce->get_iterator(intern->inner.ce, *it TSRMLS_CC);
spl_dual_it_rewind(intern TSRMLS_CC);
- intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator TSRMLS_CC);
return SUCCESS;
} else {
return FAILURE;
@@ -1926,6 +1938,7 @@ int spl_append_it_next_iterator(spl_dual_it_object *intern TSRMLS_DC) /* {{{*/
void spl_append_it_fetch(spl_dual_it_object *intern TSRMLS_DC) /* {{{*/
{
while (spl_dual_it_valid(intern TSRMLS_CC) != SUCCESS) {
+ intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator TSRMLS_CC);
if (spl_append_it_next_iterator(intern TSRMLS_CC) != SUCCESS) {
return;
}
@@ -1941,11 +1954,11 @@ void spl_append_it_next(spl_dual_it_object *intern TSRMLS_DC) /* {{{ */
spl_append_it_fetch(intern TSRMLS_CC);
} /* }}} */
-/* {{{ proto AppendIterator::__construct()
+/* {{{ proto void AppendIterator::__construct()
Create an AppendIterator */
SPL_METHOD(AppendIterator, __construct)
{
- spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, zend_ce_iterator, DIT_AppendIterator);
+ spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, spl_ce_AppendIterator, zend_ce_iterator, DIT_AppendIterator);
} /* }}} */
/* {{{ proto void AppendIterator::append(Iterator it)
@@ -1956,8 +1969,10 @@ SPL_METHOD(AppendIterator, append)
zval *it;
intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ APPENDIT_CHECK_CTOR(intern);
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &it, zend_ce_iterator) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &it, zend_ce_iterator) == FAILURE) {
return;
}
spl_array_iterator_append(intern->u.append.zarrayit, it TSRMLS_CC);
@@ -1987,7 +2002,7 @@ SPL_METHOD(AppendIterator, rewind)
}
} /* }}} */
-/* {{{ proto boolean AppendIterator::valid()
+/* {{{ proto bool AppendIterator::valid()
Check if the current state is valid */
SPL_METHOD(AppendIterator, valid)
{
@@ -1998,7 +2013,7 @@ SPL_METHOD(AppendIterator, valid)
RETURN_BOOL(intern->current.data);
} /* }}} */
-/* {{{ proto AppendIterator::next()
+/* {{{ proto void AppendIterator::next()
Forward to next element */
SPL_METHOD(AppendIterator, next)
{
@@ -2026,7 +2041,7 @@ static zend_function_entry spl_funcs_AppendIterator[] = {
{NULL, NULL, NULL}
};
-/* {{{ array iterator_to_array(Traversable it)
+/* {{{ proto array iterator_to_array(Traversable it)
Copy the iterator into an array */
PHP_FUNCTION(iterator_to_array)
{
@@ -2048,11 +2063,20 @@ PHP_FUNCTION(iterator_to_array)
if (iter->funcs->rewind) {
iter->funcs->rewind(iter TSRMLS_CC);
}
+ if (EG(exception)) {
+ return;
+ }
while (iter->funcs->valid(iter TSRMLS_CC) == SUCCESS) {
iter->funcs->get_current_data(iter, &data TSRMLS_CC);
+ if (EG(exception)) {
+ return;
+ }
(*data)->refcount++;
if (iter->funcs->get_current_key) {
key_type = iter->funcs->get_current_key(iter, &str_key, &str_key_len, &int_key TSRMLS_CC);
+ if (EG(exception)) {
+ return;
+ }
switch(key_type) {
case HASH_KEY_IS_STRING:
add_assoc_zval_ex(return_value, str_key, str_key_len, *data);
@@ -2066,12 +2090,18 @@ PHP_FUNCTION(iterator_to_array)
add_next_index_zval(return_value, *data);
}
iter->funcs->move_forward(iter TSRMLS_CC);
+ if (EG(exception)) {
+ return;
+ }
}
iter->funcs->dtor(iter TSRMLS_CC);
+ if (EG(exception)) {
+ return;
+ }
}
/* }}} */
-/* {{{ int iterator_count(Travesable it)
+/* {{{ proto int iterator_count(Traversable it)
Count the elements in an iterator */
PHP_FUNCTION(iterator_count)
{
@@ -2088,11 +2118,23 @@ PHP_FUNCTION(iterator_count)
if (iter->funcs->rewind) {
iter->funcs->rewind(iter TSRMLS_CC);
}
+ if (EG(exception)) {
+ return;
+ }
while (iter->funcs->valid(iter TSRMLS_CC) == SUCCESS) {
+ if (EG(exception)) {
+ return;
+ }
count++;
iter->funcs->move_forward(iter TSRMLS_CC);
+ if (EG(exception)) {
+ return;
+ }
}
iter->funcs->dtor(iter TSRMLS_CC);
+ if (EG(exception)) {
+ return;
+ }
RETURN_LONG(count);
}
@@ -2130,8 +2172,13 @@ PHP_MINIT_FUNCTION(spl_iterators)
REGISTER_SPL_CLASS_CONST_LONG(RecursiveIteratorIterator, "CHILD_FIRST", RIT_CHILD_FIRST);
REGISTER_SPL_CLASS_CONST_LONG(RecursiveIteratorIterator, "CATCH_GET_CHILD", RIT_CATCH_GET_CHILD);
- REGISTER_SPL_STD_CLASS_EX(FilterIterator, spl_dual_it_new, spl_funcs_FilterIterator);
- REGISTER_SPL_ITERATOR(FilterIterator);
+ REGISTER_SPL_INTERFACE(OuterIterator);
+ REGISTER_SPL_ITERATOR(OuterIterator);
+
+ REGISTER_SPL_STD_CLASS_EX(IteratorIterator, spl_dual_it_new, spl_funcs_IteratorIterator);
+ REGISTER_SPL_ITERATOR(IteratorIterator);
+
+ REGISTER_SPL_SUB_CLASS_EX(FilterIterator, IteratorIterator, spl_dual_it_new, spl_funcs_FilterIterator);
spl_ce_FilterIterator->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
REGISTER_SPL_SUB_CLASS_EX(RecursiveFilterIterator, FilterIterator, spl_dual_it_new, spl_funcs_RecursiveFilterIterator);
@@ -2142,11 +2189,9 @@ PHP_MINIT_FUNCTION(spl_iterators)
REGISTER_SPL_INTERFACE(SeekableIterator);
REGISTER_SPL_ITERATOR(SeekableIterator);
- REGISTER_SPL_STD_CLASS_EX(LimitIterator, spl_dual_it_new, spl_funcs_LimitIterator);
- REGISTER_SPL_ITERATOR(LimitIterator);
+ REGISTER_SPL_SUB_CLASS_EX(LimitIterator, IteratorIterator, spl_dual_it_new, spl_funcs_LimitIterator);
- REGISTER_SPL_STD_CLASS_EX(CachingIterator, spl_dual_it_new, spl_funcs_CachingIterator);
- REGISTER_SPL_ITERATOR(CachingIterator);
+ REGISTER_SPL_SUB_CLASS_EX(CachingIterator, IteratorIterator, spl_dual_it_new, spl_funcs_CachingIterator);
REGISTER_SPL_CLASS_CONST_LONG(CachingIterator, "CALL_TOSTRING", CIT_CALL_TOSTRING);
REGISTER_SPL_CLASS_CONST_LONG(CachingIterator, "CATCH_GET_CHILD", CIT_CATCH_GET_CHILD);
@@ -2156,25 +2201,11 @@ PHP_MINIT_FUNCTION(spl_iterators)
REGISTER_SPL_SUB_CLASS_EX(RecursiveCachingIterator, CachingIterator, spl_dual_it_new, spl_funcs_RecursiveCachingIterator);
REGISTER_SPL_IMPLEMENTS(RecursiveCachingIterator, RecursiveIterator);
- REGISTER_SPL_STD_CLASS_EX(IteratorIterator, spl_dual_it_new, spl_funcs_IteratorIterator);
- REGISTER_SPL_ITERATOR(IteratorIterator);
+ REGISTER_SPL_SUB_CLASS_EX(NoRewindIterator, IteratorIterator, spl_dual_it_new, spl_funcs_NoRewindIterator);
- REGISTER_SPL_STD_CLASS_EX(NoRewindIterator, spl_dual_it_new, spl_funcs_NoRewindIterator);
- REGISTER_SPL_ITERATOR(NoRewindIterator);
-
- REGISTER_SPL_INTERFACE(OuterIterator);
- REGISTER_SPL_ITERATOR(OuterIterator);
-
- REGISTER_SPL_STD_CLASS_EX(AppendIterator, spl_dual_it_new, spl_funcs_AppendIterator);
+ REGISTER_SPL_SUB_CLASS_EX(AppendIterator, IteratorIterator, spl_dual_it_new, spl_funcs_AppendIterator);
REGISTER_SPL_IMPLEMENTS(RecursiveIteratorIterator, OuterIterator);
- REGISTER_SPL_IMPLEMENTS(CachingIterator, OuterIterator);
- REGISTER_SPL_IMPLEMENTS(FilterIterator, OuterIterator);
- REGISTER_SPL_IMPLEMENTS(LimitIterator, OuterIterator);
- REGISTER_SPL_IMPLEMENTS(IteratorIterator, OuterIterator);
- REGISTER_SPL_IMPLEMENTS(NoRewindIterator, OuterIterator);
- REGISTER_SPL_IMPLEMENTS(AppendIterator, OuterIterator);
-
REGISTER_SPL_SUB_CLASS_EX(InfiniteIterator, IteratorIterator, spl_dual_it_new, spl_funcs_InfiniteIterator);
REGISTER_SPL_STD_CLASS_EX(EmptyIterator, NULL, spl_funcs_EmptyIterator);
diff --git a/ext/spl/spl_iterators.h b/ext/spl/spl_iterators.h
index faad41da9..3b39b03cd 100755
--- a/ext/spl/spl_iterators.h
+++ b/ext/spl/spl_iterators.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_iterators.h,v 1.18.2.6 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: spl_iterators.h,v 1.18.2.7 2006/03/05 17:39:49 helly Exp $ */
#ifndef SPL_ITERATORS_H
#define SPL_ITERATORS_H
@@ -53,6 +53,9 @@ PHP_FUNCTION(iterator_count);
typedef enum {
DIT_Default = 0,
+ DIT_FilterIterator = DIT_Default,
+ DIT_RecursiveFilterIterator = DIT_Default,
+ DIT_ParentIterator = DIT_Default,
DIT_LimitIterator,
DIT_CachingIterator,
DIT_RecursiveCachingIterator,
@@ -60,6 +63,7 @@ typedef enum {
DIT_NoRewindIterator,
DIT_InfiniteIterator,
DIT_AppendIterator,
+ DIT_Unknown = ~0
} dual_it_type;
enum {
diff --git a/ext/spl/spl_observer.c b/ext/spl/spl_observer.c
index 5f3d271cf..fc7259e1e 100755
--- a/ext/spl/spl_observer.c
+++ b/ext/spl/spl_observer.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_observer.c,v 1.2.2.5 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: spl_observer.c,v 1.2.2.6 2006/03/29 14:28:42 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -85,9 +85,8 @@ void spl_SplOjectStorage_free_storage(void *object TSRMLS_DC) /* {{{ */
{
spl_SplObjectStorage *intern = (spl_SplObjectStorage *)object;
- zend_hash_destroy(intern->std.properties);
- FREE_HASHTABLE(intern->std.properties);
-
+ zend_object_std_dtor(&intern->std TSRMLS_CC);
+
zend_hash_destroy(&intern->storage);
efree(object);
@@ -101,11 +100,9 @@ static zend_object_value spl_object_storage_new_ex(zend_class_entry *class_type,
intern = emalloc(sizeof(spl_SplObjectStorage));
memset(intern, 0, sizeof(spl_SplObjectStorage));
- intern->std.ce = class_type;
*obj = intern;
- ALLOC_HASHTABLE(intern->std.properties);
- zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ zend_object_std_init(&intern->std, class_type TSRMLS_CC);
zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
zend_hash_init(&intern->storage, 0, NULL, ZVAL_PTR_DTOR, 0);
diff --git a/ext/spl/spl_sxe.c b/ext/spl/spl_sxe.c
index f2568371c..5f9a98ee5 100755
--- a/ext/spl/spl_sxe.c
+++ b/ext/spl/spl_sxe.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_sxe.c,v 1.8.2.3 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: spl_sxe.c,v 1.8.2.5 2006/03/06 09:50:44 helly Exp $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -32,6 +32,7 @@
#include "spl_engine.h"
#include "spl_iterators.h"
#include "spl_sxe.h"
+#include "spl_array.h"
zend_class_entry *spl_ce_SimpleXMLIterator = NULL;
zend_class_entry *spl_ce_SimpleXMLElement;
@@ -40,7 +41,9 @@ zend_class_entry *spl_ce_SimpleXMLElement;
#include "ext/simplexml/php_simplexml_exports.h"
-SPL_METHOD(SimpleXMLIterator, rewind) /* {{{ */
+/* {{{ proto void SimpleXMLIterator::rewind()
+ Rewind to first element */
+SPL_METHOD(SimpleXMLIterator, rewind)
{
php_sxe_iterator iter;
@@ -49,7 +52,9 @@ SPL_METHOD(SimpleXMLIterator, rewind) /* {{{ */
}
/* }}} */
-SPL_METHOD(SimpleXMLIterator, valid) /* {{{ */
+/* {{{ proto bool SimpleXMLIterator::valid()
+ Check whether iteration is valid */
+SPL_METHOD(SimpleXMLIterator, valid)
{
php_sxe_object *sxe = php_sxe_fetch_object(getThis() TSRMLS_CC);
@@ -57,7 +62,9 @@ SPL_METHOD(SimpleXMLIterator, valid) /* {{{ */
}
/* }}} */
-SPL_METHOD(SimpleXMLIterator, current) /* {{{ */
+/* {{{ proto SimpleXMLIterator SimpleXMLIterator::current()
+ Get current element */
+SPL_METHOD(SimpleXMLIterator, current)
{
php_sxe_object *sxe = php_sxe_fetch_object(getThis() TSRMLS_CC);
@@ -69,7 +76,9 @@ SPL_METHOD(SimpleXMLIterator, current) /* {{{ */
}
/* }}} */
-SPL_METHOD(SimpleXMLIterator, key) /* {{{ */
+/* {{{ proto string SimpleXMLIterator::key()
+ Get name of current child element */
+SPL_METHOD(SimpleXMLIterator, key)
{
xmlNodePtr curnode;
php_sxe_object *intern;
@@ -85,11 +94,13 @@ SPL_METHOD(SimpleXMLIterator, key) /* {{{ */
RETURN_STRINGL((char*)curnode->name, xmlStrlen(curnode->name), 1);
}
- RETURN_FALSE;
+ RETURN_FALSE;
}
/* }}} */
-SPL_METHOD(SimpleXMLIterator, next) /* {{{ */
+/* {{{ proto void SimpleXMLIterator::next()
+ Move to next element */
+SPL_METHOD(SimpleXMLIterator, next)
{
php_sxe_iterator iter;
@@ -98,15 +109,15 @@ SPL_METHOD(SimpleXMLIterator, next) /* {{{ */
}
/* }}} */
-/* {{{ hasChildren()
- */
+/* {{{ proto bool SimpleXMLIterator::hasChildren()
+ Check whether element has children (elements) */
SPL_METHOD(SimpleXMLIterator, hasChildren)
{
php_sxe_object *sxe = php_sxe_fetch_object(getThis() TSRMLS_CC);
php_sxe_object *child;
xmlNodePtr node;
- if (!sxe->iter.data) {
+ if (!sxe->iter.data || sxe->iter.type == SXE_ITER_ATTRLIST) {
RETURN_FALSE;
}
child = php_sxe_fetch_object(sxe->iter.data TSRMLS_CC);
@@ -122,19 +133,30 @@ SPL_METHOD(SimpleXMLIterator, hasChildren)
}
/* }}} */
-/* {{{ getChildren()
- */
+/* {{{ proto SimpleXMLIterator SimpleXMLIterator::getChildren()
+ Get child element iterator */
SPL_METHOD(SimpleXMLIterator, getChildren)
{
php_sxe_object *sxe = php_sxe_fetch_object(getThis() TSRMLS_CC);
- if (!sxe->iter.data) {
+ if (!sxe->iter.data || sxe->iter.type == SXE_ITER_ATTRLIST) {
return; /* return NULL */
}
return_value->type = IS_OBJECT;
return_value->value.obj = zend_objects_store_clone_obj(sxe->iter.data TSRMLS_CC);
}
+/* {{{ proto int SimpleXMLIterator::count()
+ Get number of child elements */
+SPL_METHOD(SimpleXMLIterator, count)
+{
+ long count = 0;
+
+ Z_OBJ_HANDLER_P(getThis(), count_elements)(getThis(), &count TSRMLS_CC);
+
+ RETURN_LONG(count);
+}
+
static zend_function_entry spl_funcs_SimpleXMLIterator[] = {
SPL_ME(SimpleXMLIterator, rewind, NULL, ZEND_ACC_PUBLIC)
SPL_ME(SimpleXMLIterator, valid, NULL, ZEND_ACC_PUBLIC)
@@ -143,6 +165,7 @@ static zend_function_entry spl_funcs_SimpleXMLIterator[] = {
SPL_ME(SimpleXMLIterator, next, NULL, ZEND_ACC_PUBLIC)
SPL_ME(SimpleXMLIterator, hasChildren, NULL, ZEND_ACC_PUBLIC)
SPL_ME(SimpleXMLIterator, getChildren, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(SimpleXMLIterator, count, NULL, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
/* }}} */
@@ -150,17 +173,18 @@ static zend_function_entry spl_funcs_SimpleXMLIterator[] = {
SPL_API PHP_MINIT_FUNCTION(spl_sxe) /* {{{ */
{
zend_class_entry **pce;
-
+
if (zend_hash_find(CG(class_table), "simplexmlelement", sizeof("SimpleXMLElement"), (void **) &pce) == FAILURE) {
spl_ce_SimpleXMLElement = NULL;
spl_ce_SimpleXMLIterator = NULL;
return SUCCESS; /* SimpleXML must be initialized before */
}
-
+
spl_ce_SimpleXMLElement = *pce;
REGISTER_SPL_SUB_CLASS_EX(SimpleXMLIterator, SimpleXMLElement, spl_ce_SimpleXMLElement->create_object, spl_funcs_SimpleXMLIterator);
REGISTER_SPL_IMPLEMENTS(SimpleXMLIterator, RecursiveIterator);
+ REGISTER_SPL_IMPLEMENTS(SimpleXMLIterator, Countable);
return SUCCESS;
}
diff --git a/ext/spl/tests/array_017.phpt b/ext/spl/tests/array_017.phpt
index f028a1203..72bf63998 100755
--- a/ext/spl/tests/array_017.phpt
+++ b/ext/spl/tests/array_017.phpt
@@ -29,7 +29,7 @@ class ArrayIteratorEx extends ArrayIterator
function setFlags($flags)
{
echo __METHOD__ . "($flags)\n";
- ArrayObject::setFlags($flags);
+ ArrayIterator::setFlags($flags);
}
}
diff --git a/ext/spl/tests/array_019.phpt b/ext/spl/tests/array_019.phpt
new file mode 100755
index 000000000..1416d8407
--- /dev/null
+++ b/ext/spl/tests/array_019.phpt
@@ -0,0 +1,32 @@
+--TEST--
+SPL: ArrayIterator and foreach by reference
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+$ar = new ArrayObject(array(1)); foreach($ar as &$v) var_dump($v);
+$ar = new ArrayIterator(array(2)); foreach($ar as &$v) var_dump($v);
+$ar = new RecursiveArrayIterator(array(3)); foreach($ar as &$v) var_dump($v);
+
+class ArrayIteratorEx extends ArrayIterator
+{
+ function current()
+ {
+ return ArrayIterator::current();
+ }
+}
+
+$ar = new ArrayIteratorEx(array(4)); foreach($ar as $v) var_dump($v);
+$ar = new ArrayIteratorEx(array(5)); foreach($ar as &$v) var_dump($v);
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+int(1)
+int(2)
+int(3)
+int(4)
+int(5)
+===DONE===
diff --git a/ext/spl/tests/array_020.phpt b/ext/spl/tests/array_020.phpt
new file mode 100755
index 000000000..cdeb4a216
--- /dev/null
+++ b/ext/spl/tests/array_020.phpt
@@ -0,0 +1,66 @@
+--TEST--
+SPL: ArrayIterator overloading
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+class ArrayIteratorEx extends ArrayIterator
+{
+ function rewind()
+ {
+ echo __METHOD__ . "\n";
+ ArrayIterator::rewind();
+ }
+
+ function valid()
+ {
+ echo __METHOD__ . "\n";
+ return ArrayIterator::valid();
+ }
+
+ function key()
+ {
+ echo __METHOD__ . "\n";
+ return ArrayIterator::key();
+ }
+
+ function current()
+ {
+ echo __METHOD__ . "\n";
+ return ArrayIterator::current();
+ }
+
+ function next()
+ {
+ echo __METHOD__ . "\n";
+ return ArrayIterator::next();
+ }
+}
+
+$ar = new ArrayIteratorEx(array(1,2));
+foreach($ar as $k => $v)
+{
+ var_dump($k);
+ var_dump($v);
+}
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+ArrayIteratorEx::rewind
+ArrayIteratorEx::valid
+ArrayIteratorEx::current
+ArrayIteratorEx::key
+int(0)
+int(1)
+ArrayIteratorEx::next
+ArrayIteratorEx::valid
+ArrayIteratorEx::current
+ArrayIteratorEx::key
+int(1)
+int(2)
+ArrayIteratorEx::next
+ArrayIteratorEx::valid
+===DONE===
diff --git a/ext/spl/tests/array_021.phpt b/ext/spl/tests/array_021.phpt
new file mode 100755
index 000000000..f2ae0c87e
--- /dev/null
+++ b/ext/spl/tests/array_021.phpt
@@ -0,0 +1,31 @@
+--TEST--
+SPL: ArrayObject::seek() and exceptions
+--FILE--
+<?php
+
+class foo extends ArrayObject
+{
+ public function seek($key)
+ {
+ echo __METHOD__ . "($key)\n";
+ throw new Exception("hi");
+ }
+}
+
+$test = new foo(array(1,2,3));
+
+try
+{
+ $test->seek('bar');
+}
+catch (Exception $e)
+{
+ echo "got exception\n";
+}
+
+?>
+===DONE===
+--EXPECT--
+foo::seek(bar)
+got exception
+===DONE===
diff --git a/ext/spl/tests/array_022.phpt b/ext/spl/tests/array_022.phpt
new file mode 100755
index 000000000..d1eafd677
--- /dev/null
+++ b/ext/spl/tests/array_022.phpt
@@ -0,0 +1,94 @@
+--TEST--
+SPL: ArrayObject/Iterator and reference to self
+--FILE--
+==ArrayObject===
+<?php
+
+class MyArrayObject extends ArrayObject
+{
+ public function __construct()
+ {
+ parent::__construct($this);
+ $this['bar'] = 'baz';
+ }
+}
+
+$a = new MyArrayObject;
+
+$b = clone $a;
+$b['baz'] = 'Foo';
+
+var_dump($a);
+var_dump($b);
+
+?>
+==ArrayIterator===
+<?php
+
+class MyArrayIterator extends ArrayIterator
+{
+ public function __construct()
+ {
+ parent::__construct($this);
+ $this['bar'] = 'baz';
+ }
+}
+
+$a = new MyArrayIterator;
+
+$b = clone $a;
+$b['baz'] = 'Foo';
+
+var_dump($a);
+var_dump($b);
+
+?>
+===DONE===
+--EXPECTF--
+==ArrayObject===
+object(MyArrayObject)#%d (1) {
+ ["bar"]=>
+ string(3) "baz"
+}
+object(MyArrayObject)#%d (2) {
+ ["bar"]=>
+ string(3) "baz"
+ ["baz"]=>
+ string(3) "Foo"
+}
+==ArrayIterator===
+object(MyArrayIterator)#%d (1) {
+ ["bar"]=>
+ string(3) "baz"
+}
+object(MyArrayIterator)#%d (2) {
+ ["bar"]=>
+ string(3) "baz"
+ ["baz"]=>
+ string(3) "Foo"
+}
+===DONE===
+--UEXPECTF--
+==ArrayObject===
+object(MyArrayObject)#%d (1) {
+ [u"bar"]=>
+ unicode(3) "baz"
+}
+object(MyArrayObject)#%d (2) {
+ [u"bar"]=>
+ unicode(3) "baz"
+ [u"baz"]=>
+ unicode(3) "Foo"
+}
+==ArrayIterator===
+object(MyArrayIterator)#%d (1) {
+ [u"bar"]=>
+ unicode(3) "baz"
+}
+object(MyArrayIterator)#%d (2) {
+ [u"bar"]=>
+ unicode(3) "baz"
+ [u"baz"]=>
+ unicode(3) "Foo"
+}
+===DONE===
diff --git a/ext/spl/tests/bug34548.phpt b/ext/spl/tests/bug34548.phpt
index 90f2e8f6e..73262a806 100644
--- a/ext/spl/tests/bug34548.phpt
+++ b/ext/spl/tests/bug34548.phpt
@@ -1,5 +1,5 @@
--TEST--
-bug #34548 (Method append() in class extended from ArrayObject crashes PHP)
+Bug #34548 (Method append() in class extended from ArrayObject crashes PHP)
--SKIPIF--
<?php if (!extension_loaded("spl")) print "skip"; ?>
--FILE--
diff --git a/ext/spl/tests/bug36258.phpt b/ext/spl/tests/bug36258.phpt
new file mode 100644
index 000000000..297c7f597
--- /dev/null
+++ b/ext/spl/tests/bug36258.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Bug #36258 (SplFileObject::getPath() may lead to segfault)
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+$diriter = new RecursiveIteratorIterator( new RecursiveDirectoryIterator('.') );
+
+foreach ($diriter as $key => $file) {
+ var_dump($file->getFilename());
+ var_dump($file->getPath());
+ break;
+}
+
+echo "Done\n";
+?>
+--EXPECTF--
+string(%d) "%s"
+string(%d) "%s"
+Done
diff --git a/ext/spl/tests/bug36287.phpt b/ext/spl/tests/bug36287.phpt
new file mode 100755
index 000000000..29ae0e2c9
--- /dev/null
+++ b/ext/spl/tests/bug36287.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Bug #36287
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("."), true);
+
+$idx = 0;
+foreach($it as $file)
+{
+ echo "First\n";
+ if("." != $file && ".." != $file)
+ {
+ var_Dump($file->getFilename());
+ }
+ echo "Second\n";
+ if($file != "." && $file != "..")
+ {
+ var_dump($file->getFilename());
+ }
+ if (++$idx > 1)
+ {
+ break;
+ }
+}
+
+?>
+===DONE===
+--EXPECTF--
+First
+string(%d) "%s"
+Second
+string(%d) "%s"
+First
+string(%d) "%s"
+Second
+string(%d) "%s"
+===DONE===
diff --git a/ext/spl/tests/bug36825.phpt b/ext/spl/tests/bug36825.phpt
new file mode 100644
index 000000000..503ec43a4
--- /dev/null
+++ b/ext/spl/tests/bug36825.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Bug #36825 (Exceptions thrown in ArrayObject::offsetGet cause segfault)
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+class foo extends ArrayObject
+{
+ public function offsetGet($key)
+ {
+ echo __METHOD__ . "($key)\n";
+ throw new Exception("hi");
+ }
+}
+
+$test = new foo();
+
+try
+{
+ var_dump($test['bar']);
+}
+catch (Exception $e)
+{
+ echo "got exception\n";
+}
+
+?>
+===DONE===
+--EXPECT--
+foo::offsetGet(bar)
+got exception
+===DONE===
diff --git a/ext/spl/tests/bug36941.phpt b/ext/spl/tests/bug36941.phpt
new file mode 100755
index 000000000..528ba4a46
--- /dev/null
+++ b/ext/spl/tests/bug36941.phpt
@@ -0,0 +1,46 @@
+--TEST--
+Bug #36941 (ArrayIterator does not clone itself)
+--FILE--
+===ArrayObject===
+<?php
+$a = new ArrayObject();
+$a[] = 1;
+
+$b = clone $a;
+
+var_dump($a[0], $b[0]);
+$b[0] = $b[0] + 1;
+var_dump($a[0], $b[0]);
+$b[0] = 3;
+var_dump($a[0], $b[0]);
+?>
+===ArrayIterator===
+<?php
+$a = new ArrayIterator();
+$a[] = 1;
+
+$b = clone $a;
+
+var_dump($a[0], $b[0]);
+$b[0] = $b[0] + 1;
+var_dump($a[0], $b[0]);
+$b[0] = 3;
+var_dump($a[0], $b[0]);
+?>
+===DONE===
+--EXPECT--
+===ArrayObject===
+int(1)
+int(1)
+int(1)
+int(2)
+int(1)
+int(3)
+===ArrayIterator===
+int(1)
+int(1)
+int(2)
+int(2)
+int(3)
+int(3)
+===DONE===
diff --git a/ext/spl/tests/iterator_012.phpt b/ext/spl/tests/iterator_012.phpt
index 8195072b5..c6eb86eef 100755
--- a/ext/spl/tests/iterator_012.phpt
+++ b/ext/spl/tests/iterator_012.phpt
@@ -1,5 +1,5 @@
--TEST--
-SPL: NoRweindIterator
+SPL: NoRewindIterator
--SKIPIF--
<?php if (!extension_loaded("spl")) print "skip"; ?>
--FILE--
diff --git a/ext/spl/tests/iterator_019.phpt b/ext/spl/tests/iterator_019.phpt
index 8195072b5..c6eb86eef 100755
--- a/ext/spl/tests/iterator_019.phpt
+++ b/ext/spl/tests/iterator_019.phpt
@@ -1,5 +1,5 @@
--TEST--
-SPL: NoRweindIterator
+SPL: NoRewindIterator
--SKIPIF--
<?php if (!extension_loaded("spl")) print "skip"; ?>
--FILE--
diff --git a/ext/spl/tests/iterator_030.phpt b/ext/spl/tests/iterator_030.phpt
new file mode 100755
index 000000000..6ed8035ac
--- /dev/null
+++ b/ext/spl/tests/iterator_030.phpt
@@ -0,0 +1,46 @@
+--TEST--
+SPL: EmptyIterator access
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+$it = new EmptyIterator;
+
+var_dump($it->valid());
+$it->rewind();
+var_dump($it->valid());
+$it->next();
+var_dump($it->valid());
+
+try
+{
+ var_dump($it->key());
+}
+catch(BadMethodCallException $e)
+{
+ echo $e->getMessage() . "\n";
+}
+
+try
+{
+ var_dump($it->current());
+}
+catch(BadMethodCallException $e)
+{
+ echo $e->getMessage() . "\n";
+}
+
+var_dump($it->valid());
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECT--
+bool(false)
+bool(false)
+bool(false)
+Accessing the key of an EmptyIterator
+Accessing the value of an EmptyIterator
+bool(false)
+===DONE===
diff --git a/ext/spl/tests/iterator_031.phpt b/ext/spl/tests/iterator_031.phpt
new file mode 100755
index 000000000..00afa6185
--- /dev/null
+++ b/ext/spl/tests/iterator_031.phpt
@@ -0,0 +1,118 @@
+--TEST--
+SPL: AppendIterator::append() rewinds when neccessary
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+class MyArrayIterator extends ArrayIterator
+{
+ function rewind()
+ {
+ echo __METHOD__ . "\n";
+ parent::rewind();
+ }
+}
+
+$it = new MyArrayIterator(array(1,2));
+
+foreach($it as $k=>$v)
+{
+ echo "$k=>$v\n";
+}
+
+class MyAppendIterator extends AppendIterator
+{
+ function __construct()
+ {
+ echo __METHOD__ . "\n";
+ }
+
+ function rewind()
+ {
+ echo __METHOD__ . "\n";
+ parent::rewind();
+ }
+
+ function valid()
+ {
+ echo __METHOD__ . "\n";
+ return parent::valid();
+ }
+
+ function append(Iterator $what)
+ {
+ echo __METHOD__ . "\n";
+ parent::append($what);
+ }
+
+ function parent__construct()
+ {
+ parent::__construct();
+ }
+}
+
+$ap = new MyAppendIterator;
+
+try
+{
+ $ap->append($it);
+}
+catch(BadMethodCallException $e)
+{
+ echo $e->getMessage() . "\n";
+}
+
+$ap->parent__construct();
+
+try
+{
+ $ap->parent__construct($it);
+}
+catch(BadMethodCallException $e)
+{
+ echo $e->getMessage() . "\n";
+}
+
+$ap->append($it);
+$ap->append($it);
+$ap->append($it);
+
+foreach($ap as $k=>$v)
+{
+ echo "$k=>$v\n";
+}
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECT--
+MyArrayIterator::rewind
+0=>1
+1=>2
+MyAppendIterator::__construct
+MyAppendIterator::append
+Classes derived from AppendIterator must call AppendIterator::__construct()
+AppendIterator::getIterator() must be called exactly once per instance
+MyAppendIterator::append
+MyArrayIterator::rewind
+MyAppendIterator::append
+MyAppendIterator::append
+MyAppendIterator::rewind
+MyArrayIterator::rewind
+MyAppendIterator::valid
+0=>1
+MyAppendIterator::valid
+1=>2
+MyArrayIterator::rewind
+MyAppendIterator::valid
+0=>1
+MyAppendIterator::valid
+1=>2
+MyArrayIterator::rewind
+MyAppendIterator::valid
+0=>1
+MyAppendIterator::valid
+1=>2
+MyAppendIterator::valid
+===DONE===
diff --git a/ext/spl/tests/iterator_032.phpt b/ext/spl/tests/iterator_032.phpt
new file mode 100755
index 000000000..86695d4af
--- /dev/null
+++ b/ext/spl/tests/iterator_032.phpt
@@ -0,0 +1,52 @@
+--TEST--
+SPL: LimitIterator::getPosition()
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+$it = new LimitIterator(new ArrayIterator(array(1,2,3,4)), 1, 2);
+
+foreach($it as $k=>$v)
+{
+ echo "$k=>$v\n";
+ var_dump($it->getPosition());
+}
+
+try
+{
+ $it->seek(0);
+}
+catch(OutOfBoundsException $e)
+{
+ echo $e->getMessage() . "\n";
+}
+
+$it->seek(2);
+var_dump($it->current());
+
+try
+{
+ $it->seek(3);
+}
+catch(OutOfBoundsException $e)
+{
+ echo $e->getMessage() . "\n";
+}
+
+$it->next();
+var_dump($it->valid());
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECT--
+1=>2
+int(1)
+2=>3
+int(2)
+Cannot seek to 0 which is below the offset 1
+int(3)
+Cannot seek to 3 which is behind offest 1 plus count 2
+bool(false)
+===DONE===
diff --git a/ext/spl/tests/iterator_033.phpt b/ext/spl/tests/iterator_033.phpt
new file mode 100755
index 000000000..c1880cb2f
--- /dev/null
+++ b/ext/spl/tests/iterator_033.phpt
@@ -0,0 +1,46 @@
+--TEST--
+SPL: ParentIterator
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+$it = new ParentIterator(new RecursiveArrayIterator(array(1,array(21,22, array(231)),3)));
+
+foreach(new RecursiveIteratorIterator($it) as $k=>$v)
+{
+ var_dump($k);
+ var_dump($v);
+}
+
+echo "==SECOND==\n";
+
+foreach(new RecursiveIteratorIterator($it, 1) as $k=>$v)
+{
+ var_dump($k);
+ var_dump($v);
+}
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECT--
+==SECOND==
+int(1)
+array(3) {
+ [0]=>
+ int(21)
+ [1]=>
+ int(22)
+ [2]=>
+ array(1) {
+ [0]=>
+ int(231)
+ }
+}
+int(2)
+array(1) {
+ [0]=>
+ int(231)
+}
+===DONE===
diff --git a/ext/spl/tests/iterator_034.phpt b/ext/spl/tests/iterator_034.phpt
new file mode 100755
index 000000000..b81c6d970
--- /dev/null
+++ b/ext/spl/tests/iterator_034.phpt
@@ -0,0 +1,190 @@
+--TEST--
+SPL: RecursiveIteratorIterator and break deep
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+class MyRecursiveArrayIterator extends RecursiveArrayIterator
+{
+ function valid()
+ {
+ if (!parent::valid())
+ {
+ echo __METHOD__ . "() = false\n";
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+
+ function getChildren()
+ {
+ echo __METHOD__ . "()\n";
+ return parent::getChildren();
+ }
+
+ function rewind()
+ {
+ echo __METHOD__ . "()\n";
+ parent::rewind();
+ }
+}
+
+class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
+{
+ private $max_depth;
+ private $over = 0;
+
+ function __construct($it, $max_depth)
+ {
+ $this->max_depth = $max_depth;
+ parent::__construct($it);
+ }
+
+ function rewind()
+ {
+ echo __METHOD__ . "() - BEGIN\n";
+ parent::rewind();
+ echo __METHOD__ . "() - DONE\n";
+ }
+
+ function valid()
+ {
+ echo __METHOD__ . "()\n";
+ return parent::valid();
+ }
+
+ function current()
+ {
+ echo __METHOD__ . "()\n";
+ return parent::current();
+ }
+
+ function key()
+ {
+ echo __METHOD__ . "()\n";
+ return parent::key();
+ }
+
+ function next()
+ {
+ echo __METHOD__ . "()\n";
+ parent::next();
+ }
+
+ function callHasChildren()
+ {
+ $has = parent::callHasChildren();
+ $res = $this->getDepth() < $this->max_depth && $has;
+ echo __METHOD__ . "(".$this->getDepth().") = ".($res?"yes":"no")."/".($has?"yes":"no")."\n";
+ return $res;
+ }
+
+ function beginChildren()
+ {
+ echo __METHOD__ . "(".$this->getDepth().")\n";
+ parent::beginChildren();
+ }
+
+ function endChildren()
+ {
+ echo __METHOD__ . "(".$this->getDepth().")\n";
+ parent::endChildren();
+ }
+}
+
+$p = 0;
+$it = new RecursiveArrayIteratorIterator(new MyRecursiveArrayIterator(array("a", array("ba", array("bba", "bbb"), array(array("bcaa"), array("bcba"))), array("ca"), "d")), 2);
+foreach($it as $k=>$v)
+{
+ if (is_array($v)) $v = join('',$v);
+ echo "$k=>$v\n";
+ if ($p++ == 5)
+ {
+ echo "===BREAK===\n";
+ break;
+ }
+}
+
+echo "===FOREND===\n";
+
+$it->rewind();
+
+echo "===CHECK===\n";
+
+var_dump($it->valid());
+var_dump($it->current() == "a");
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECT--
+RecursiveArrayIteratorIterator::rewind() - BEGIN
+MyRecursiveArrayIterator::rewind()
+RecursiveArrayIteratorIterator::callHasChildren(0) = no/no
+RecursiveArrayIteratorIterator::rewind() - DONE
+RecursiveArrayIteratorIterator::valid()
+RecursiveArrayIteratorIterator::current()
+RecursiveArrayIteratorIterator::key()
+0=>a
+RecursiveArrayIteratorIterator::next()
+RecursiveArrayIteratorIterator::callHasChildren(0) = yes/yes
+MyRecursiveArrayIterator::getChildren()
+MyRecursiveArrayIterator::rewind()
+RecursiveArrayIteratorIterator::beginChildren(1)
+RecursiveArrayIteratorIterator::callHasChildren(1) = no/no
+RecursiveArrayIteratorIterator::valid()
+RecursiveArrayIteratorIterator::current()
+RecursiveArrayIteratorIterator::key()
+0=>ba
+RecursiveArrayIteratorIterator::next()
+RecursiveArrayIteratorIterator::callHasChildren(1) = yes/yes
+MyRecursiveArrayIterator::getChildren()
+MyRecursiveArrayIterator::rewind()
+RecursiveArrayIteratorIterator::beginChildren(2)
+RecursiveArrayIteratorIterator::callHasChildren(2) = no/no
+RecursiveArrayIteratorIterator::valid()
+RecursiveArrayIteratorIterator::current()
+RecursiveArrayIteratorIterator::key()
+0=>bba
+RecursiveArrayIteratorIterator::next()
+RecursiveArrayIteratorIterator::callHasChildren(2) = no/no
+RecursiveArrayIteratorIterator::valid()
+RecursiveArrayIteratorIterator::current()
+RecursiveArrayIteratorIterator::key()
+1=>bbb
+RecursiveArrayIteratorIterator::next()
+MyRecursiveArrayIterator::valid() = false
+RecursiveArrayIteratorIterator::endChildren(2)
+RecursiveArrayIteratorIterator::callHasChildren(1) = yes/yes
+MyRecursiveArrayIterator::getChildren()
+MyRecursiveArrayIterator::rewind()
+RecursiveArrayIteratorIterator::beginChildren(2)
+RecursiveArrayIteratorIterator::callHasChildren(2) = no/yes
+RecursiveArrayIteratorIterator::valid()
+RecursiveArrayIteratorIterator::current()
+RecursiveArrayIteratorIterator::key()
+0=>bcaa
+RecursiveArrayIteratorIterator::next()
+RecursiveArrayIteratorIterator::callHasChildren(2) = no/yes
+RecursiveArrayIteratorIterator::valid()
+RecursiveArrayIteratorIterator::current()
+RecursiveArrayIteratorIterator::key()
+1=>bcba
+===BREAK===
+===FOREND===
+RecursiveArrayIteratorIterator::rewind() - BEGIN
+RecursiveArrayIteratorIterator::endChildren(1)
+RecursiveArrayIteratorIterator::endChildren(0)
+MyRecursiveArrayIterator::rewind()
+RecursiveArrayIteratorIterator::callHasChildren(0) = no/no
+RecursiveArrayIteratorIterator::rewind() - DONE
+===CHECK===
+RecursiveArrayIteratorIterator::valid()
+bool(true)
+RecursiveArrayIteratorIterator::current()
+bool(true)
+===DONE===
diff --git a/ext/spl/tests/iterator_035.phpt b/ext/spl/tests/iterator_035.phpt
new file mode 100644
index 000000000..eebc7f22a
--- /dev/null
+++ b/ext/spl/tests/iterator_035.phpt
@@ -0,0 +1,17 @@
+--TEST--
+SPL: ArrayIterator and values assigned by reference
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+$tmp = 1;
+
+$a = new ArrayIterator();
+$a[] = $tmp;
+$a[] = &$tmp;
+
+echo "Done\n";
+?>
+--EXPECTF--
+Fatal error: Objects used as arrays in post/pre increment/decrement must return values by reference in %s on line %d
diff --git a/ext/spl/tests/spl_autoload_008.phpt b/ext/spl/tests/spl_autoload_008.phpt
new file mode 100755
index 000000000..a3f24d96c
--- /dev/null
+++ b/ext/spl/tests/spl_autoload_008.phpt
@@ -0,0 +1,131 @@
+--TEST--
+SPL: spl_autoload() with exceptions
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--INI--
+include_path=.
+--FILE--
+<?php
+
+function MyAutoLoad($className)
+{
+ echo __METHOD__ . "($className)\n";
+ throw new Exception('Bla');
+}
+
+class MyAutoLoader
+{
+ static function autoLoad($className)
+ {
+ echo __METHOD__ . "($className)\n";
+ throw new Exception('Bla');
+ }
+
+ function dynaLoad($className)
+ {
+ echo __METHOD__ . "($className)\n";
+ throw new Exception('Bla');
+ }
+}
+
+$obj = new MyAutoLoader;
+
+$funcs = array(
+ 'MyAutoLoad',
+ 'MyAutoLoader::autoLoad',
+ 'MyAutoLoader::dynaLoad',
+ array('MyAutoLoader', 'autoLoad'),
+ array('MyAutoLoader', 'dynaLoad'),
+ array($obj, 'autoLoad'),
+ array($obj, 'dynaLoad'),
+);
+
+foreach($funcs as $idx => $func)
+{
+ echo "====$idx====\n";
+
+ try
+ {
+ var_dump($func);
+ spl_autoload_register($func);
+ if (count(spl_autoload_functions()))
+ {
+ echo "registered\n";
+
+ var_dump(class_exists("NoExistingTestClass", true));
+ }
+ }
+ catch (Exception $e)
+ {
+ echo get_class($e) . ": " . $e->getMessage() . "\n";
+ }
+
+ spl_autoload_unregister($func);
+ var_dump(count(spl_autoload_functions()));
+}
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+====0====
+string(10) "MyAutoLoad"
+registered
+MyAutoLoad(NoExistingTestClass)
+Exception: Bla
+int(0)
+====1====
+string(22) "MyAutoLoader::autoLoad"
+registered
+MyAutoLoader::autoLoad(NoExistingTestClass)
+Exception: Bla
+int(0)
+====2====
+string(22) "MyAutoLoader::dynaLoad"
+LogicException: Function 'MyAutoLoader::dynaLoad' not callable
+int(0)
+====3====
+array(2) {
+ [0]=>
+ string(12) "MyAutoLoader"
+ [1]=>
+ string(8) "autoLoad"
+}
+registered
+MyAutoLoader::autoLoad(NoExistingTestClass)
+Exception: Bla
+int(0)
+====4====
+array(2) {
+ [0]=>
+ string(12) "MyAutoLoader"
+ [1]=>
+ string(8) "dynaLoad"
+}
+LogicException: Passed array specifies a non static method but no object
+int(0)
+====5====
+array(2) {
+ [0]=>
+ object(MyAutoLoader)#%d (0) {
+ }
+ [1]=>
+ string(8) "autoLoad"
+}
+registered
+MyAutoLoader::autoLoad(NoExistingTestClass)
+Exception: Bla
+int(0)
+====6====
+array(2) {
+ [0]=>
+ object(MyAutoLoader)#%d (0) {
+ }
+ [1]=>
+ string(8) "dynaLoad"
+}
+registered
+MyAutoLoader::dynaLoad(NoExistingTestClass)
+Exception: Bla
+int(0)
+===DONE===
diff --git a/ext/spl/tests/sxe_005.phpt b/ext/spl/tests/sxe_005.phpt
new file mode 100755
index 000000000..2efd0a6be
--- /dev/null
+++ b/ext/spl/tests/sxe_005.phpt
@@ -0,0 +1,46 @@
+--TEST--
+SPL: SimpleXMLIterator and getChildren()
+--SKIPIF--
+<?php
+if (!extension_loaded("spl")) print "skip";
+if (!extension_loaded('simplexml')) print 'skip';
+if (!extension_loaded("libxml")) print "skip LibXML not present";
+if (!class_exists('RecursiveIteratorIterator')) print 'skip RecursiveIteratorIterator not available';
+?>
+--FILE--
+<?php
+
+$xml =<<<EOF
+<?xml version='1.0'?>
+<sxe>
+ <elem1/>
+ <elem2/>
+ <elem2/>
+</sxe>
+EOF;
+
+class SXETest extends SimpleXMLIterator
+{
+ function count()
+ {
+ echo __METHOD__ . "\n";
+ return parent::count();
+ }
+}
+
+$sxe = new SXETest($xml);
+
+var_dump(count($sxe));
+var_dump(count($sxe->elem1));
+var_dump(count($sxe->elem2));
+
+?>
+===DONE===
+--EXPECT--
+SXETest::count
+int(3)
+SXETest::count
+int(1)
+SXETest::count
+int(2)
+===DONE===
diff --git a/ext/sqlite/sqlite.c b/ext/sqlite/sqlite.c
index 3c0f3bdc4..0686199ae 100644
--- a/ext/sqlite/sqlite.c
+++ b/ext/sqlite/sqlite.c
@@ -17,7 +17,7 @@
| Marcus Boerger <helly@php.net> |
+----------------------------------------------------------------------+
- $Id: sqlite.c,v 1.166.2.11 2006/01/01 12:50:14 sniper Exp $
+ $Id: sqlite.c,v 1.166.2.13 2006/04/18 14:30:15 iliaa Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -802,8 +802,7 @@ static void sqlite_object_free_storage(void *object TSRMLS_DC)
{
sqlite_object *intern = (sqlite_object *)object;
- zend_hash_destroy(intern->std.properties);
- FREE_HASHTABLE(intern->std.properties);
+ zend_object_std_dtor(&intern->std TSRMLS_CC);
if (intern->u.ptr) {
if (intern->type == is_db) {
@@ -826,10 +825,8 @@ static void sqlite_object_new(zend_class_entry *class_type, zend_object_handlers
intern = emalloc(sizeof(sqlite_object));
memset(intern, 0, sizeof(sqlite_object));
- intern->std.ce = class_type;
- ALLOC_HASHTABLE(intern->std.properties);
- zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ zend_object_std_init(&intern->std, class_type TSRMLS_CC);
zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
retval->handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t) sqlite_object_free_storage, NULL TSRMLS_CC);
@@ -1127,7 +1124,7 @@ PHP_MINFO_FUNCTION(sqlite)
{
php_info_print_table_start();
php_info_print_table_header(2, "SQLite support", "enabled");
- php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " $Id: sqlite.c,v 1.166.2.11 2006/01/01 12:50:14 sniper Exp $");
+ php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " $Id: sqlite.c,v 1.166.2.13 2006/04/18 14:30:15 iliaa Exp $");
php_info_print_table_row(2, "SQLite Library", sqlite_libversion());
php_info_print_table_row(2, "SQLite Encoding", sqlite_libencoding());
php_info_print_table_end();
@@ -1708,7 +1705,9 @@ PHP_FUNCTION(sqlite_fetch_column_types)
add_index_string(return_value, i, colnames[ncols + i] ? (char *)colnames[ncols + i] : "", 1);
}
}
-
+ if (res.vm) {
+ sqlite_finalize(res.vm, NULL);
+ }
done:
sqlite_exec(db->db, "PRAGMA show_datatypes = OFF", NULL, NULL, NULL);
}
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 426af5dc6..fc698fd2d 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: array.c,v 1.308.2.16 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: array.c,v 1.308.2.22 2006/06/03 18:59:55 andrei Exp $ */
#include "php.h"
#include "php_ini.h"
@@ -92,20 +92,9 @@
#define DOUBLE_DRIFT_FIX 0.000000000000001
-ZEND_BEGIN_MODULE_GLOBALS(array)
- int *multisort_flags[2];
- int (*compare_func)(zval *result, zval *op1, zval *op2 TSRMLS_DC);
-ZEND_END_MODULE_GLOBALS(array)
-
ZEND_DECLARE_MODULE_GLOBALS(array)
-#ifdef ZTS
-#define ARRAYG(v) TSRMG(array_globals_id, zend_array_globals *, v)
-#else
-#define ARRAYG(v) (array_globals.v)
-#endif
-
-/* {{{ php_extname_init_globals
+/* {{{ php_array_init_globals
*/
static void php_array_init_globals(zend_array_globals *array_globals)
{
@@ -325,8 +314,11 @@ PHP_FUNCTION(count)
if (Z_OBJ_HT_P(array)->get_class_entry && instanceof_function(Z_OBJCE_P(array), spl_ce_Countable TSRMLS_CC)) {
zend_call_method_with_0_params(&array, NULL, NULL, "count", &retval);
- RETVAL_LONG(Z_LVAL_P(retval));
- zval_ptr_dtor(&retval);
+ if (retval) {
+ convert_to_long(retval);
+ RETVAL_LONG(Z_LVAL_P(retval));
+ zval_ptr_dtor(&retval);
+ }
return;
}
#endif
@@ -1823,14 +1815,14 @@ HashTable* php_splice(HashTable *in_hash, int offset, int length,
/* Clamp the offset.. */
if (offset > num_in)
offset = num_in;
- else if (offset < 0 && (offset=num_in+offset) < 0)
+ else if (offset < 0 && (offset = (num_in + offset)) < 0)
offset = 0;
/* ..and the length */
if (length < 0) {
- length = num_in-offset+length;
- } else if (((unsigned) offset + (unsigned) length) > num_in) {
- length = num_in-offset;
+ length = num_in - offset + length;
+ } else if (((unsigned)offset + (unsigned)length) > (unsigned)num_in) {
+ length = num_in - offset;
}
/* Create and initialize output hash */
@@ -2217,14 +2209,14 @@ PHP_FUNCTION(array_slice)
/* Clamp the offset.. */
if (offset_val > num_in)
return;
- else if (offset_val < 0 && (offset_val=num_in+offset_val) < 0)
+ else if (offset_val < 0 && (offset_val = (num_in + offset_val)) < 0)
offset_val = 0;
/* ..and the length */
if (length_val < 0) {
- length_val = num_in-offset_val+length_val;
- } else if (((unsigned) offset_val + (unsigned) length_val) > num_in) {
- length_val = num_in-offset_val;
+ length_val = num_in - offset_val + length_val;
+ } else if (((unsigned)offset_val + (unsigned)length_val) > (unsigned)num_in) {
+ length_val = num_in - offset_val;
}
if (length_val == 0)
@@ -4146,12 +4138,10 @@ PHP_FUNCTION(array_filter)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "The first argument should be an array");
return;
}
- if (callback) {
- func = *callback;
- }
array = *input;
if (ZEND_NUM_ARGS() > 1) {
+ func = *callback;
if (!zend_is_callable(func, 0, &callback_name)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "The second argument, '%s', should be a valid callback", callback_name);
efree(callback_name);
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index ed718ae7a..79adf1ca2 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: basic_functions.c,v 1.725.2.17 2006/01/04 21:31:29 derick Exp $ */
+/* $Id: basic_functions.c,v 1.725.2.32 2006/06/28 22:08:59 iliaa Exp $ */
#include "php.h"
#include "php_streams.h"
@@ -99,9 +99,9 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE;
#ifdef ZTS
-int basic_globals_id;
+PHPAPI int basic_globals_id;
#else
-php_basic_globals basic_globals;
+PHPAPI php_basic_globals basic_globals;
#endif
#include "php_fopen_wrappers.h"
@@ -382,7 +382,9 @@ zend_function_entry basic_functions[] = {
#endif
#if !defined(PHP_WIN32) && !defined(NETWARE)
PHP_FE(expm1, NULL)
+# ifdef HAVE_LOG1P
PHP_FE(log1p, NULL)
+# endif
#endif
PHP_FE(pi, NULL)
@@ -423,7 +425,9 @@ zend_function_entry basic_functions[] = {
#ifdef HAVE_GETOPT
PHP_FE(getopt, NULL)
#endif
-
+#ifdef HAVE_GETLOADAVG
+ PHP_FE(sys_getloadavg, NULL)
+#endif
#ifdef HAVE_GETTIMEOFDAY
PHP_FE(microtime, NULL)
PHP_FE(gettimeofday, NULL)
@@ -694,8 +698,6 @@ zend_function_entry basic_functions[] = {
#endif
#if HAVE_LCHOWN
PHP_FE(lchown, NULL)
-#endif
-#if HAVE_LCHOWN
PHP_FE(lchgrp, NULL)
#endif
PHP_FE(chmod, NULL)
@@ -1124,6 +1126,9 @@ PHP_MINIT_FUNCTION(basic)
PHP_MSHUTDOWN_FUNCTION(basic)
{
+#ifdef HAVE_SYSLOG_H
+ PHP_MSHUTDOWN(syslog)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
+#endif
#ifdef ZTS
ts_free_id(basic_globals_id);
#ifdef PHP_WIN32
@@ -1663,7 +1668,7 @@ PHP_FUNCTION(getopt)
opterr = 0;
/* Force reinitialization of getopt() (via optind reset) on every call. */
- optind = 0;
+ optind = 1;
/* Invoke getopt(3) on the argument array. */
#ifdef HARTMUT_0
@@ -1743,17 +1748,19 @@ PHP_FUNCTION(flush)
Delay for a given number of seconds */
PHP_FUNCTION(sleep)
{
- zval **num;
+ long num;
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &num) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &num) == FAILURE) {
+ RETURN_FALSE;
+ }
+ if (num < 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Number of seconds must be greater than or equal to 0");
+ RETURN_FALSE;
}
-
- convert_to_long_ex(num);
#ifdef PHP_SLEEP_NON_VOID
- RETURN_LONG(php_sleep(Z_LVAL_PP(num)));
+ RETURN_LONG(php_sleep(num));
#else
- php_sleep(Z_LVAL_PP(num));
+ php_sleep(num);
#endif
}
@@ -1764,13 +1771,16 @@ PHP_FUNCTION(sleep)
PHP_FUNCTION(usleep)
{
#if HAVE_USLEEP
- zval **num;
+ long num;
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &num) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &num) == FAILURE) {
+ return;
+ }
+ if (num < 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Number of microseconds must be greater than or equal to 0");
+ RETURN_FALSE;
}
- convert_to_long_ex(num);
- usleep(Z_LVAL_PP(num));
+ usleep(num);
#endif
}
/* }}} */
@@ -1822,7 +1832,7 @@ PHP_FUNCTION(time_sleep_until)
c_ts = (double)(d_ts - tm.tv_sec - tm.tv_usec / 1000000.00);
if (c_ts < 0) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sleep until to time is less then current time.");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sleep until to time is less than current time.");
RETURN_FALSE;
}
@@ -2024,7 +2034,7 @@ PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers T
break;
case 3: /*save to a file */
- stream = php_stream_open_wrapper(opt, "a", IGNORE_URL | ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL);
+ stream = php_stream_open_wrapper(opt, "a", IGNORE_URL_WIN | ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL);
if (!stream)
return FAILURE;
php_stream_write(stream, message, strlen(message));
@@ -2387,6 +2397,7 @@ PHP_FUNCTION(register_shutdown_function)
shutdown_function_entry.arguments = (zval **) safe_emalloc(sizeof(zval *), shutdown_function_entry.arg_count, 0);
if (zend_get_parameters_array(ht, shutdown_function_entry.arg_count, shutdown_function_entry.arguments) == FAILURE) {
+ efree(shutdown_function_entry.arguments);
RETURN_FALSE;
}
@@ -2970,6 +2981,7 @@ PHP_FUNCTION(register_tick_function)
tick_fe.arguments = (zval **) safe_emalloc(sizeof(zval *), tick_fe.arg_count, 0);
if (zend_get_parameters_array(ht, tick_fe.arg_count, tick_fe.arguments) == FAILURE) {
+ efree(tick_fe.arguments);
RETURN_FALSE;
}
@@ -3339,6 +3351,23 @@ PHP_FUNCTION(import_request_variables)
}
/* }}} */
+#ifdef HAVE_GETLOADAVG
+PHP_FUNCTION(sys_getloadavg)
+{
+ double load[3];
+
+ if (getloadavg(load, 3) == -1) {
+ RETURN_FALSE;
+ } else {
+ array_init(return_value);
+ add_index_double(return_value, 0, load[0]);
+ add_index_double(return_value, 1, load[1]);
+ add_index_double(return_value, 2, load[2]);
+ }
+}
+#endif
+
+
/*
* Local variables:
* tab-width: 4
diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h
index d47fe01c1..9f0bf7c93 100644
--- a/ext/standard/basic_functions.h
+++ b/ext/standard/basic_functions.h
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: basic_functions.h,v 1.139.2.1 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: basic_functions.h,v 1.139.2.4 2006/02/18 05:41:59 rasmus Exp $ */
#ifndef BASIC_FUNCTIONS_H
#define BASIC_FUNCTIONS_H
@@ -116,6 +116,9 @@ PHP_NAMED_FUNCTION(php_if_crc32);
PHP_FUNCTION(register_tick_function);
PHP_FUNCTION(unregister_tick_function);
+#ifdef HAVE_GETLOADAVG
+PHP_FUNCTION(sys_getloadavg);
+#endif
PHP_FUNCTION(is_uploaded_file);
PHP_FUNCTION(move_uploaded_file);
@@ -216,10 +219,10 @@ typedef struct _php_basic_globals {
#ifdef ZTS
#define BG(v) TSRMG(basic_globals_id, php_basic_globals *, v)
-extern int basic_globals_id;
+PHPAPI extern int basic_globals_id;
#else
#define BG(v) (basic_globals.v)
-extern php_basic_globals basic_globals;
+PHPAPI extern php_basic_globals basic_globals;
#endif
#if HAVE_PUTENV
diff --git a/ext/standard/crc32.c b/ext/standard/crc32.c
index 96419a705..af517f726 100644
--- a/ext/standard/crc32.c
+++ b/ext/standard/crc32.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: crc32.c,v 1.16.2.1 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: crc32.c,v 1.16.2.4 2006/02/09 15:48:46 pajoye Exp $ */
#include "php.h"
#include "basic_functions.h"
@@ -26,19 +26,20 @@
Calculate the crc32 polynomial of a string */
PHP_NAMED_FUNCTION(php_if_crc32)
{
- unsigned int crc = ~0;
char *p;
int len, nr;
-
+ php_uint32 crcinit = 0;
+ register php_uint32 crc;
+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &p, &nr) == FAILURE) {
return;
}
+ crc = crcinit^0xFFFFFFFF;
- len = 0 ;
- for (len += nr; nr--; ++p) {
- CRC32(crc, *p);
+ for (len =+nr; nr--; ++p) {
+ crc = ((crc >> 8) & 0x00FFFFFF) ^ crc32tab[(crc ^ (*p)) & 0xFF ];
}
- RETVAL_LONG(~crc);
+ RETVAL_LONG(crc^0xFFFFFFFF);
}
/* }}} */
diff --git a/ext/standard/credits.c b/ext/standard/credits.c
index f64e5049e..2cf356ea9 100644
--- a/ext/standard/credits.c
+++ b/ext/standard/credits.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: credits.c,v 1.36.2.3 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: credits.c,v 1.36.2.4 2006/03/23 18:36:46 iliaa Exp $ */
#include "php.h"
#include "info.h"
@@ -69,7 +69,7 @@ PHPAPI void php_print_credits(int flag TSRMLS_DC)
CREDIT_LINE("Win32 Port", "Shane Caraveo, Zeev Suraski, Wez Furlong");
CREDIT_LINE("Server API (SAPI) Abstraction Layer", "Andi Gutmans, Shane Caraveo, Zeev Suraski");
CREDIT_LINE("Streams Abstraction Layer", "Wez Furlong, Sara Golemon");
- CREDIT_LINE("PHP Data Objects Layer", "Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle");
+ CREDIT_LINE("PHP Data Objects Layer", "Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle, Ilia Alshanetsky");
php_info_print_table_end();
}
@@ -106,7 +106,7 @@ PHPAPI void php_print_credits(int flag TSRMLS_DC)
if (flag & PHP_CREDITS_QA) {
php_info_print_table_start();
php_info_print_table_header(1, "PHP 5.1 Quality Assurance Team");
- php_info_print_table_row(1, "Ilia Alshanetsky, Joerg Behrens, Stefan Esser, Moriyoshi Koizumi, Magnus Maatta, Sebastian Nohn, Derick Rethans, Melvyn Sopacua, Jani Taskinen");
+ php_info_print_table_row(1, "Ilia Alshanetsky, Joerg Behrens, Antony Dovgal, Stefan Esser, Moriyoshi Koizumi, Magnus Maatta, Sebastian Nohn, Derick Rethans, Melvyn Sopacua, Jani Taskinen");
php_info_print_table_end();
}
diff --git a/ext/standard/credits_ext.h b/ext/standard/credits_ext.h
index 5b8bface0..6b3f53648 100644
--- a/ext/standard/credits_ext.h
+++ b/ext/standard/credits_ext.h
@@ -43,10 +43,9 @@ CREDIT_LINE("mhash", "Sascha Schumann");
CREDIT_LINE("mime_magic", "Hartmut Holzgraefe");
CREDIT_LINE("MING", "Dave Hayden, Frank M. Kromann");
CREDIT_LINE("MS SQL", "Frank M. Kromann");
-CREDIT_LINE("msession", "Mark L. Woodward");
CREDIT_LINE("mSQL", "Zeev Suraski");
CREDIT_LINE("Multibyte String Functions", "Tsukada Takuya, Rui Hirokawa");
-CREDIT_LINE("mySQL 3.x driver for PDO", "George Schlossnagle");
+CREDIT_LINE("mySQL driver for PDO", "George Schlossnagle, Wez Furlong, Ilia Alshanetsky");
CREDIT_LINE("MySQL", "Zeev Suraski, Zak Greant, Georg Richter");
CREDIT_LINE("MySQLi", "Zak Greant, Georg Richter");
CREDIT_LINE("ncurses", "Ilia Alshanetsky, Wez Furlong, Hartmut Holzgraefe, Georg Richter");
@@ -57,9 +56,9 @@ CREDIT_LINE("OpenSSL", "Stig Venaas, Wez Furlong, Sascha Kettler");
CREDIT_LINE("Oracle (OCI) driver for PDO", "Wez Furlong");
CREDIT_LINE("pcntl", "Jason Greene");
CREDIT_LINE("Perl Compatible Regexps", "Andrei Zmievski");
-CREDIT_LINE("PHP Data Objects", "Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle");
+CREDIT_LINE("PHP Data Objects", "Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle, Ilia Alshanetsky");
CREDIT_LINE("PHP hash", "Sara Golemon, Rasmus Lerdorf, Stefan Esser, Michael Wallner");
-CREDIT_LINE("Posix", "Kristian Köhntopp");
+CREDIT_LINE("Posix", "Kristian Koehntopp");
CREDIT_LINE("PostgreSQL driver for PDO", "Edin Kadribasic, Ilia Alshanetsky");
CREDIT_LINE("PostgreSQL", "Jouni Ahto, Zeev Suraski, Yasuo Ohgaki, Chris Kings-Lynne");
CREDIT_LINE("Pspell", "Vlad Krupin");
@@ -86,6 +85,6 @@ CREDIT_LINE("WDDX", "Andrei Zmievski");
CREDIT_LINE("XML", "Stig Bakken, Thies C. Arntzen, Sterling Hughes");
CREDIT_LINE("XMLReader", "Rob Richards");
CREDIT_LINE("xmlrpc", "Dan Libby");
-CREDIT_LINE("XMLWriter", "Rob Richards");
+CREDIT_LINE("XMLWriter", "Rob Richards, Pierre-Alain Joye");
CREDIT_LINE("XSL", "Christian Stocker, Rob Richards");
CREDIT_LINE("Zlib", "Rasmus Lerdorf, Stefan Roehrich, Zeev Suraski, Jade Nicoletti");
diff --git a/ext/standard/cyr_convert.c b/ext/standard/cyr_convert.c
index d48aa5715..501f9a61a 100644
--- a/ext/standard/cyr_convert.c
+++ b/ext/standard/cyr_convert.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: cyr_convert.c,v 1.27.2.2 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: cyr_convert.c,v 1.27.2.3 2006/01/18 23:55:47 tony2001 Exp $ */
#include <stdlib.h>
@@ -47,9 +47,9 @@
typedef unsigned char _cyr_charset_table[512];
-/* {{{ const static _cyr_charset_table _cyr_win1251
+/* {{{ static const _cyr_charset_table _cyr_win1251
*/
-const static _cyr_charset_table _cyr_win1251 = {
+static const _cyr_charset_table _cyr_win1251 = {
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,
diff --git a/ext/standard/dir.c b/ext/standard/dir.c
index cc3e727f2..dbdde4507 100644
--- a/ext/standard/dir.c
+++ b/ext/standard/dir.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dir.c,v 1.147.2.2 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: dir.c,v 1.147.2.3 2006/02/26 10:49:50 helly Exp $ */
/* {{{ includes/startup/misc */
@@ -370,7 +370,7 @@ PHP_FUNCTION(glob)
int pattern_len;
long flags = 0;
glob_t globbuf;
- unsigned int n;
+ int n;
int ret;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &pattern, &pattern_len, &flags) == FAILURE)
diff --git a/ext/standard/exec.c b/ext/standard/exec.c
index 451026ba9..6ff23cc12 100644
--- a/ext/standard/exec.c
+++ b/ext/standard/exec.c
@@ -16,7 +16,7 @@
| Ilia Alshanetsky <iliaa@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: exec.c,v 1.113.2.2 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: exec.c,v 1.113.2.3 2006/02/26 10:49:50 helly Exp $ */
#include <stdio.h>
#include "php.h"
@@ -135,7 +135,7 @@ int php_exec(int type, char *cmd, zval *array, zval *return_value TSRMLS_DC)
/* strip trailing whitespaces */
l = bufl;
while (l-- && isspace(((unsigned char *)buf)[l]));
- if (l != (bufl - 1)) {
+ if (l != (int)(bufl - 1)) {
bufl = l + 1;
buf[bufl] = '\0';
}
@@ -148,7 +148,7 @@ int php_exec(int type, char *cmd, zval *array, zval *return_value TSRMLS_DC)
if (type != 2) {
l = bufl;
while (l-- && isspace(((unsigned char *)buf)[l]));
- if (l != (bufl - 1)) {
+ if (l != (int)(bufl - 1)) {
bufl = l + 1;
buf[bufl] = '\0';
}
diff --git a/ext/standard/file.c b/ext/standard/file.c
index ed4d1a72b..6e09bac53 100644
--- a/ext/standard/file.c
+++ b/ext/standard/file.c
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: file.c,v 1.409.2.3 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: file.c,v 1.409.2.6 2006/04/06 02:39:55 iliaa Exp $ */
/* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */
@@ -773,8 +773,9 @@ PHP_FUNCTION(tempnam)
zval **arg1, **arg2;
char *d;
char *opened_path;
- char p[64];
+ char *p;
int fd;
+ size_t p_len;
if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
WRONG_PARAM_COUNT;
@@ -787,7 +788,11 @@ PHP_FUNCTION(tempnam)
}
d = estrndup(Z_STRVAL_PP(arg1), Z_STRLEN_PP(arg1));
- strlcpy(p, Z_STRVAL_PP(arg2), sizeof(p));
+
+ php_basename(Z_STRVAL_PP(arg2), Z_STRLEN_PP(arg2), NULL, 0, &p, &p_len TSRMLS_CC);
+ if (p_len > 64) {
+ p[63] = '\0';
+ }
if ((fd = php_open_temporary_fd(d, p, &opened_path TSRMLS_CC)) >= 0) {
close(fd);
@@ -795,6 +800,7 @@ PHP_FUNCTION(tempnam)
} else {
RETVAL_FALSE;
}
+ efree(p);
efree(d);
}
/* }}} */
@@ -1355,10 +1361,10 @@ PHPAPI PHP_FUNCTION(fseek)
/* {{{ proto int mkdir(char *dir int mode)
*/
-PHPAPI int php_mkdir(char *dir, long mode TSRMLS_DC)
+PHPAPI int php_mkdir_ex(char *dir, long mode, int options TSRMLS_DC)
{
int ret;
-
+
if (PG(safe_mode) && (!php_checkuid(dir, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
return -1;
}
@@ -1367,11 +1373,16 @@ PHPAPI int php_mkdir(char *dir, long mode TSRMLS_DC)
return -1;
}
- if ((ret = VCWD_MKDIR(dir, (mode_t)mode)) < 0) {
+ if ((ret = VCWD_MKDIR(dir, (mode_t)mode)) < 0 && (options & REPORT_ERRORS)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", strerror(errno));
}
- return ret;
+ return ret;
+}
+
+PHPAPI int php_mkdir(char *dir, long mode TSRMLS_DC)
+{
+ return php_mkdir_ex(dir, mode, REPORT_ERRORS TSRMLS_CC);
}
/* }}} */
@@ -1756,7 +1767,7 @@ no_stat:
}
safe_to_copy:
- srcstream = php_stream_open_wrapper(src, "rb", STREAM_DISABLE_OPEN_BASEDIR | REPORT_ERRORS, NULL);
+ srcstream = php_stream_open_wrapper(src, "rb", ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL);
if (!srcstream) {
return ret;
diff --git a/ext/standard/file.h b/ext/standard/file.h
index 9cbb1166f..c7a1406fb 100644
--- a/ext/standard/file.h
+++ b/ext/standard/file.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: file.h,v 1.94.2.1 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: file.h,v 1.94.2.2 2006/01/13 04:05:59 pajoye Exp $ */
/* Synced with php 3.0 revision 1.30 1999-06-16 [ssb] */
@@ -72,6 +72,7 @@ PHP_MINIT_FUNCTION(user_streams);
PHPAPI int php_le_stream_context(void);
PHPAPI int php_set_sock_blocking(int socketd, int block TSRMLS_DC);
PHPAPI int php_copy_file(char *src, char *dest TSRMLS_DC);
+PHPAPI int php_mkdir_ex(char *dir, long mode, int options TSRMLS_DC);
PHPAPI int php_mkdir(char *dir, long mode TSRMLS_DC);
#define META_DEF_BUFSIZE 8192
diff --git a/ext/standard/filestat.c b/ext/standard/filestat.c
index f0746be46..3b81dbb07 100644
--- a/ext/standard/filestat.c
+++ b/ext/standard/filestat.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: filestat.c,v 1.136.2.3 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: filestat.c,v 1.136.2.9 2006/08/10 21:30:23 iliaa Exp $ */
#include "php.h"
#include "safe_mode.h"
@@ -323,12 +323,9 @@ PHP_FUNCTION(disk_free_space)
}
/* }}} */
-/* {{{ proto bool chgrp(string filename, mixed group)
- Change file group */
-#ifndef NETWARE
-PHP_FUNCTION(chgrp)
-{
#if !defined(WINDOWS)
+static void php_do_chgrp(INTERNAL_FUNCTION_PARAMETERS, int do_lchgrp)
+{
zval **filename, **group;
gid_t gid;
struct group *gr=NULL;
@@ -360,25 +357,51 @@ PHP_FUNCTION(chgrp)
RETURN_FALSE;
}
- ret = VCWD_CHOWN(Z_STRVAL_PP(filename), -1, gid);
+ if (do_lchgrp) {
+#if HAVE_LCHOWN
+ ret = VCWD_LCHOWN(Z_STRVAL_PP(filename), -1, gid);
+#endif
+ } else {
+ ret = VCWD_CHOWN(Z_STRVAL_PP(filename), -1, gid);
+ }
if (ret == -1) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", strerror(errno));
RETURN_FALSE;
}
RETURN_TRUE;
+}
+#endif
+
+#ifndef NETWARE
+/* {{{ proto bool chgrp(string filename, mixed group)
+ Change file group */
+PHP_FUNCTION(chgrp)
+{
+#if !defined(WINDOWS)
+ php_do_chgrp(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
#else
RETURN_FALSE;
#endif
}
+/* }}} */
+
+/* {{{ proto bool lchgrp(string filename, mixed group)
+ Change symlink group */
+#if HAVE_LCHOWN
+PHP_FUNCTION(lchgrp)
+{
+# if !defined(WINDOWS)
+ php_do_chgrp(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
+# else
+ RETURN_FALSE;
+# endif
+}
#endif
/* }}} */
+#endif
-/* {{{ proto bool chown (string filename, mixed user)
- Change file owner */
-#ifndef NETWARE
-PHP_FUNCTION(chown)
+static void php_do_chown(INTERNAL_FUNCTION_PARAMETERS, int do_lchown)
{
-#if !defined(WINDOWS)
zval **filename, **user;
int ret;
uid_t uid;
@@ -410,16 +433,48 @@ PHP_FUNCTION(chown)
RETURN_FALSE;
}
- ret = VCWD_CHOWN(Z_STRVAL_PP(filename), uid, -1);
+ if (do_lchown) {
+#if HAVE_LCHOWN
+ ret = VCWD_LCHOWN(Z_STRVAL_PP(filename), uid, -1);
+#endif
+ } else {
+ ret = VCWD_CHOWN(Z_STRVAL_PP(filename), uid, -1);
+ }
if (ret == -1) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", strerror(errno));
RETURN_FALSE;
}
+}
+
+#ifndef NETWARE
+/* {{{ proto bool chown (string filename, mixed user)
+ Change file owner */
+PHP_FUNCTION(chown)
+{
+#if !defined(WINDOWS)
+ RETVAL_TRUE;
+ php_do_chown(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
+#else
+ RETURN_FALSE;
#endif
- RETURN_TRUE;
+}
+/* }}} */
+
+/* {{{ proto bool chown (string filename, mixed user)
+ Change file owner */
+#if HAVE_LCHOWN
+PHP_FUNCTION(lchown)
+{
+# if !defined(WINDOWS)
+ RETVAL_TRUE;
+ php_do_chown(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
+# else
+ RETURN_FALSE;
+# endif
}
#endif
/* }}} */
+#endif
/* {{{ proto bool chmod(string filename, int mode)
Change file mode */
@@ -449,8 +504,23 @@ PHP_FUNCTION(chmod)
Setuiding files could allow users to gain privileges
that safe mode doesn't give them.
*/
- if(PG(safe_mode))
- imode &= 0777;
+
+ if(PG(safe_mode)) {
+ php_stream_statbuf ssb;
+ if (php_stream_stat_path_ex(Z_STRVAL_PP(filename), 0, &ssb, NULL)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "stat failed for %s", Z_STRVAL_PP(filename));
+ RETURN_FALSE;
+ }
+ if ((imode & 04000) != 0 && (ssb.sb.st_mode & 04000) == 0) {
+ imode ^= 04000;
+ }
+ if ((imode & 02000) != 0 && (ssb.sb.st_mode & 02000) == 0) {
+ imode ^= 02000;
+ }
+ if ((imode & 01000) != 0 && (ssb.sb.st_mode & 01000) == 0) {
+ imode ^= 01000;
+ }
+ }
ret = VCWD_CHMOD(Z_STRVAL_PP(filename), imode);
if (ret == -1) {
@@ -556,15 +626,22 @@ PHPAPI void php_stat(const char *filename, php_stat_len filename_length, int typ
int flags = 0, rmask=S_IROTH, wmask=S_IWOTH, xmask=S_IXOTH; /* access rights defaults to other */
char *stat_sb_names[13]={"dev", "ino", "mode", "nlink", "uid", "gid", "rdev",
"size", "atime", "mtime", "ctime", "blksize", "blocks"};
+ char *local;
+ php_stream_wrapper *wrapper;
if (!filename_length) {
RETURN_FALSE;
}
+ if ((wrapper = php_stream_locate_url_wrapper(filename, &local, 0 TSRMLS_CC)) == &php_plain_files_wrapper) {
+ if (php_check_open_basedir(local TSRMLS_CC) || (PG(safe_mode) && !php_checkuid_ex(filename, NULL, CHECKUID_ALLOW_FILE_NOT_EXISTS, CHECKUID_NO_ERRORS))) {
+ RETURN_FALSE;
+ }
+ }
+
if (IS_ACCESS_CHECK(type)) {
- char *local;
+ if (wrapper == &php_plain_files_wrapper) {
- if (php_stream_locate_url_wrapper(filename, &local, 0 TSRMLS_CC) == &php_plain_files_wrapper) {
switch (type) {
#ifdef F_OK
case FS_EXISTS:
@@ -644,9 +721,6 @@ PHPAPI void php_stat(const char *filename, php_stat_len filename_length, int typ
if (IS_ABLE_CHECK(type) && getuid() == 0) {
/* root has special perms on plain_wrapper
But we don't know about root under Netware */
- php_stream_wrapper *wrapper;
-
- wrapper = php_stream_locate_url_wrapper(filename, NULL, 0 TSRMLS_CC);
if (wrapper == &php_plain_files_wrapper) {
if (type == FS_IS_X) {
xmask = S_IXROOT;
diff --git a/ext/standard/filters.c b/ext/standard/filters.c
index 930663236..12aeabecd 100644
--- a/ext/standard/filters.c
+++ b/ext/standard/filters.c
@@ -14,10 +14,13 @@
+----------------------------------------------------------------------+
| Authors: |
| Wez Furlong (wez@thebrainroom.com) |
+ | Sara Golemon (pollita@php.net) |
+ | Moriyoshi Koizumi (moriyoshi@php.net) |
+ | Marcus Boerger (helly@php.net) |
+----------------------------------------------------------------------+
*/
-/* $Id: filters.c,v 1.44.2.3 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: filters.c,v 1.44.2.6 2006/04/17 19:26:04 pollita Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -102,7 +105,7 @@ static php_stream_filter_status_t strfilter_toupper_filter(
if (bytes_consumed) {
*bytes_consumed = consumed;
}
-
+
return PSFS_PASS_ON;
}
@@ -130,7 +133,7 @@ static php_stream_filter_status_t strfilter_tolower_filter(
if (bytes_consumed) {
*bytes_consumed = consumed;
}
-
+
return PSFS_PASS_ON;
}
@@ -638,7 +641,7 @@ static php_conv_err_t php_conv_base64_decode_convert(php_conv_base64_decode *ins
size_t icnt, ocnt;
unsigned int ustat;
- const static unsigned int nbitsof_pack = 8;
+ static const unsigned int nbitsof_pack = 8;
if (in_pp == NULL || in_left_p == NULL) {
if (inst->eos || inst->urem_nbits == 0) {
@@ -1028,6 +1031,18 @@ static php_conv_err_t php_conv_qprint_decode_convert(php_conv_qprint_decode *ins
scan_stat = 4;
ps++, icnt--;
break;
+ } else if (!inst->lbchars && lb_cnt == 0 && *ps == '\r') {
+ /* auto-detect line endings, looks like network line ending \r\n (could be mac \r) */
+ lb_cnt++;
+ scan_stat = 5;
+ ps++, icnt--;
+ break;
+ } else if (!inst->lbchars && lb_cnt == 0 && *ps == '\n') {
+ /* auto-detect line endings, looks like unix-lineendings, not to spec, but it is seem in the wild, a lot */
+ lb_cnt = lb_ptr = 0;
+ scan_stat = 0;
+ ps++, icnt--;
+ break;
} else if (lb_cnt < inst->lbchars_len &&
*ps == (unsigned char)inst->lbchars[lb_cnt]) {
lb_cnt++;
@@ -1085,7 +1100,16 @@ static php_conv_err_t php_conv_qprint_decode_convert(php_conv_qprint_decode *ins
} break;
case 5: {
- if (lb_cnt >= inst->lbchars_len) {
+ if (!inst->lbchars && lb_cnt == 1 && *ps == '\n') {
+ /* auto-detect soft line breaks, found network line break */
+ lb_cnt = lb_ptr = 0;
+ scan_stat = 0;
+ ps++, icnt--; /* consume \n */
+ } else if (!inst->lbchars && lb_cnt > 0) {
+ /* auto-detect soft line breaks, found mac line break */
+ lb_cnt = lb_ptr = 0;
+ scan_stat = 0;
+ } else if (lb_cnt >= inst->lbchars_len) {
/* soft line break */
lb_cnt = lb_ptr = 0;
scan_stat = 0;
@@ -1405,12 +1429,10 @@ static php_conv *php_conv_open(int conv_mode, const HashTable *options, int pers
size_t lbchars_len;
if (options != NULL) {
+ /* If line-break-chars are not specified, filter will attempt to detect line endings (\r, \n, or \r\n) */
GET_STR_PROP(options, lbchars, lbchars_len, "line-break-chars", 0);
- if (lbchars == NULL) {
- lbchars = pestrdup("\r\n", 0);
- lbchars_len = 2;
- }
}
+
retval = pemalloc(sizeof(php_conv_qprint_decode), persistent);
if (lbchars != NULL) {
if (php_conv_qprint_decode_ctor((php_conv_qprint_decode *)retval, lbchars, lbchars_len, 1, persistent)) {
@@ -1795,6 +1817,88 @@ static php_stream_filter_factory strfilter_convert_factory = {
};
/* }}} */
+/* {{{ consumed filter implementation */
+typedef struct _php_consumed_filter_data {
+ int persistent;
+ size_t consumed;
+ off_t offset;
+} php_consumed_filter_data;
+
+static php_stream_filter_status_t consumed_filter_filter(
+ php_stream *stream,
+ php_stream_filter *thisfilter,
+ php_stream_bucket_brigade *buckets_in,
+ php_stream_bucket_brigade *buckets_out,
+ size_t *bytes_consumed,
+ int flags
+ TSRMLS_DC)
+{
+ php_consumed_filter_data *data = (php_consumed_filter_data *)(thisfilter->abstract);
+ php_stream_bucket *bucket;
+ size_t consumed = 0;
+
+ if (data->offset == ~0) {
+ data->offset = php_stream_tell(stream);
+ }
+ while ((bucket = buckets_in->head) != NULL) {
+ php_stream_bucket_unlink(bucket TSRMLS_CC);
+ consumed += bucket->buflen;
+ php_stream_bucket_append(buckets_out, bucket TSRMLS_CC);
+ }
+ if (bytes_consumed) {
+ *bytes_consumed = consumed;
+ }
+ if (flags & PSFS_FLAG_FLUSH_CLOSE) {
+ php_stream_seek(stream, data->offset + data->consumed, SEEK_SET);
+ }
+ data->consumed += consumed;
+
+ return PSFS_PASS_ON;
+}
+
+static void consumed_filter_dtor(php_stream_filter *thisfilter TSRMLS_DC)
+{
+ if (thisfilter && thisfilter->abstract) {
+ php_consumed_filter_data *data = (php_consumed_filter_data*)thisfilter->abstract;
+ pefree(data, data->persistent);
+ }
+}
+
+static php_stream_filter_ops consumed_filter_ops = {
+ consumed_filter_filter,
+ consumed_filter_dtor,
+ "consumed"
+};
+
+static php_stream_filter *consumed_filter_create(const char *filtername, zval *filterparams, int persistent TSRMLS_DC)
+{
+ php_stream_filter_ops *fops = NULL;
+ php_consumed_filter_data *data;
+
+ if (strcasecmp(filtername, "consumed")) {
+ return NULL;
+ }
+
+ /* Create this filter */
+ data = pecalloc(1, sizeof(php_consumed_filter_data), persistent);
+ if (!data) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed allocating %d bytes.", sizeof(php_consumed_filter_data));
+ return NULL;
+ }
+ data->persistent = persistent;
+ data->consumed = 0;
+ data->offset = ~0;
+ fops = &consumed_filter_ops;
+
+ return php_stream_filter_alloc(fops, data, persistent);
+}
+
+php_stream_filter_factory consumed_filter_factory = {
+ consumed_filter_create
+};
+
+/* }}} */
+
static const struct {
php_stream_filter_ops *ops;
php_stream_filter_factory *factory;
@@ -1804,6 +1908,7 @@ static const struct {
{ &strfilter_tolower_ops, &strfilter_tolower_factory },
{ &strfilter_strip_tags_ops, &strfilter_strip_tags_factory },
{ &strfilter_convert_ops, &strfilter_convert_factory },
+ { &consumed_filter_ops, &consumed_filter_factory },
/* additional filters to go here */
{ NULL, NULL }
};
diff --git a/ext/standard/ftp_fopen_wrapper.c b/ext/standard/ftp_fopen_wrapper.c
index 926cdaaaa..b6237d008 100644
--- a/ext/standard/ftp_fopen_wrapper.c
+++ b/ext/standard/ftp_fopen_wrapper.c
@@ -18,7 +18,7 @@
| Sara Golemon <pollita@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: ftp_fopen_wrapper.c,v 1.85.2.3 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: ftp_fopen_wrapper.c,v 1.85.2.4 2006/03/20 14:10:35 tony2001 Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -611,7 +611,7 @@ static size_t php_ftp_dirstream_read(php_stream *stream, char *buf, size_t count
tmp_len = MIN(sizeof(ent->d_name), basename_len - 1);
memcpy(ent->d_name, basename, tmp_len);
- ent->d_name[tmp_len] = '\0';
+ ent->d_name[tmp_len - 1] = '\0';
efree(basename);
/* Trim off trailing whitespace characters */
diff --git a/ext/standard/html.c b/ext/standard/html.c
index 31962c7d3..08e791192 100644
--- a/ext/standard/html.c
+++ b/ext/standard/html.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: html.c,v 1.111.2.1 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: html.c,v 1.111.2.2 2006/02/25 21:32:11 rasmus Exp $ */
/*
* HTML entity resources:
@@ -884,7 +884,7 @@ PHPAPI char *php_unescape_html_entities(unsigned char *old, int oldlen, int *new
unsigned char replacement[15];
int replacement_len;
- ret = estrdup(old);
+ ret = estrndup(old, oldlen);
retlen = oldlen;
if (!retlen) {
goto empty_source;
diff --git a/ext/standard/http.c b/ext/standard/http.c
index c4bef796e..af6ec8292 100644
--- a/ext/standard/http.c
+++ b/ext/standard/http.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: http.c,v 1.14.2.3 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: http.c,v 1.14.2.4 2006/03/08 22:00:21 mike Exp $ */
#include "php_http.h"
#include "php_ini.h"
@@ -82,7 +82,7 @@ PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart_str *formstr,
if (Z_TYPE_PP(zdata) == IS_ARRAY || Z_TYPE_PP(zdata) == IS_OBJECT) {
if (key_type == HASH_KEY_IS_STRING) {
ekey = php_url_encode(key, key_len, &ekey_len);
- newprefix_len = key_suffix_len + ekey_len + key_prefix_len + 1;
+ newprefix_len = key_suffix_len + ekey_len + key_prefix_len + 3 /* %5B */;
newprefix = emalloc(newprefix_len + 1);
p = newprefix;
@@ -99,13 +99,14 @@ PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart_str *formstr,
memcpy(p, key_suffix, key_suffix_len);
p += key_suffix_len;
}
-
- *(p++) = '[';
+ *(p++) = '%';
+ *(p++) = '5';
+ *(p++) = 'B';
*p = '\0';
} else {
/* Is an integer key */
ekey_len = spprintf(&ekey, 12, "%ld", idx);
- newprefix_len = key_prefix_len + num_prefix_len + ekey_len + key_suffix_len + 1;
+ newprefix_len = key_prefix_len + num_prefix_len + ekey_len + key_suffix_len + 3 /* %5B */;
newprefix = emalloc(newprefix_len + 1);
p = newprefix;
@@ -125,11 +126,13 @@ PHPAPI int php_url_encode_hash_ex(HashTable *ht, smart_str *formstr,
memcpy(p, key_suffix, key_suffix_len);
p += key_suffix_len;
}
- *(p++) = '[';
+ *(p++) = '%';
+ *(p++) = '5';
+ *(p++) = 'B';
*p = '\0';
}
ht->nApplyCount++;
- php_url_encode_hash_ex(HASH_OF(*zdata), formstr, NULL, 0, newprefix, newprefix_len, "]", 1, (Z_TYPE_PP(zdata) == IS_OBJECT ? *zdata : NULL), arg_sep TSRMLS_CC);
+ php_url_encode_hash_ex(HASH_OF(*zdata), formstr, NULL, 0, newprefix, newprefix_len, "%5D", 3, (Z_TYPE_PP(zdata) == IS_OBJECT ? *zdata : NULL), arg_sep TSRMLS_CC);
ht->nApplyCount--;
efree(newprefix);
} else if (Z_TYPE_PP(zdata) == IS_NULL || Z_TYPE_PP(zdata) == IS_RESOURCE) {
diff --git a/ext/standard/http_fopen_wrapper.c b/ext/standard/http_fopen_wrapper.c
index 1254afcf3..ba39b714a 100644
--- a/ext/standard/http_fopen_wrapper.c
+++ b/ext/standard/http_fopen_wrapper.c
@@ -19,7 +19,7 @@
| Sara Golemon <pollita@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: http_fopen_wrapper.c,v 1.99.2.8 2006/01/01 12:50:14 sniper Exp $ */
+/* $Id: http_fopen_wrapper.c,v 1.99.2.12 2006/04/16 17:40:33 iliaa Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -487,8 +487,13 @@ php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper, char *path,
} else {
response_code = 0;
}
+ /* when we request only the header, don't fail even on error codes */
+ if (options & STREAM_ONLY_GET_HEADERS) {
+ reqok = 1;
+ }
switch(response_code) {
case 200:
+ case 206: /* partial content */
case 302:
case 303:
case 301:
@@ -634,10 +639,11 @@ php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper, char *path,
} \
} \
/* check for control characters in login, password & path */
- CHECK_FOR_CNTRL_CHARS(resource->user)
- CHECK_FOR_CNTRL_CHARS(resource->pass)
- CHECK_FOR_CNTRL_CHARS(resource->path)
-
+ if (strncasecmp(new_path, "http://", sizeof("http://") - 1) || strncasecmp(new_path, "https://", sizeof("https://") - 1)) {
+ CHECK_FOR_CNTRL_CHARS(resource->user)
+ CHECK_FOR_CNTRL_CHARS(resource->pass)
+ CHECK_FOR_CNTRL_CHARS(resource->path)
+ }
stream = php_stream_url_wrap_http_ex(wrapper, new_path, mode, options, opened_path, context, --redirect_max, 0 STREAMS_CC TSRMLS_CC);
} else {
php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "HTTP request failed! %s", tmp_line);
diff --git a/ext/standard/incomplete_class.c b/ext/standard/incomplete_class.c
index c55b05c67..50511c01f 100644
--- a/ext/standard/incomplete_class.c
+++ b/ext/standard/incomplete_class.c
@@ -17,7 +17,7 @@
*/
-/* $Id: incomplete_class.c,v 1.28.2.1 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: incomplete_class.c,v 1.28.2.2 2006/01/28 06:14:34 fmk Exp $ */
#include "php.h"
#include "basic_functions.h"
@@ -122,7 +122,7 @@ zend_class_entry *php_create_incomplete_class(TSRMLS_D)
/* {{{ php_lookup_class_name
*/
-char *php_lookup_class_name(zval *object, zend_uint *nlen)
+PHPAPI char *php_lookup_class_name(zval *object, zend_uint *nlen)
{
zval **val;
char *retval = NULL;
@@ -144,7 +144,7 @@ char *php_lookup_class_name(zval *object, zend_uint *nlen)
/* {{{ php_store_class_name
*/
-void php_store_class_name(zval *object, const char *name, zend_uint len)
+PHPAPI void php_store_class_name(zval *object, const char *name, zend_uint len)
{
zval *val;
TSRMLS_FETCH();
diff --git a/ext/standard/info.c b/ext/standard/info.c
index b3c5fc415..fa2afe07d 100644
--- a/ext/standard/info.c
+++ b/ext/standard/info.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: info.c,v 1.249.2.7 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: info.c,v 1.249.2.10 2006/03/31 11:11:12 tony2001 Exp $ */
#include "php.h"
#include "php_ini.h"
@@ -58,6 +58,23 @@ ZEND_EXTERN_MODULE_GLOBALS(iconv)
PHPAPI extern char *php_ini_opened_path;
PHPAPI extern char *php_ini_scanned_files;
+
+static int php_info_write_wrapper(const char *str, uint str_length)
+{
+ int new_len, written;
+ char *elem_esc;
+
+ TSRMLS_FETCH();
+
+ elem_esc = php_escape_html_entities((char *)str, str_length, &new_len, 0, ENT_QUOTES, NULL TSRMLS_CC);
+
+ written = php_body_write(elem_esc, new_len TSRMLS_CC);
+
+ efree(elem_esc);
+
+ return written;
+}
+
/* {{{ _display_module_info
*/
@@ -135,30 +152,13 @@ static void php_print_gpcse_array(char *name, uint name_length TSRMLS_DC)
PUTS(" => ");
}
if (Z_TYPE_PP(tmp) == IS_ARRAY) {
- zval *tmp3;
-
- MAKE_STD_ZVAL(tmp3);
-
if (!sapi_module.phpinfo_as_text) {
PUTS("<pre>");
- }
- php_start_ob_buffer(NULL, 4096, 1 TSRMLS_CC);
-
- zend_print_zval_r(*tmp, 0 TSRMLS_CC);
-
- php_ob_get_buffer(tmp3 TSRMLS_CC);
- php_end_ob_buffer(0, 0 TSRMLS_CC);
-
- if (!sapi_module.phpinfo_as_text) {
- elem_esc = php_info_html_esc(Z_STRVAL_P(tmp3) TSRMLS_CC);
- PUTS(elem_esc);
- efree(elem_esc);
+ zend_print_zval_ex((zend_write_func_t) php_info_write_wrapper, *tmp, 0);
PUTS("</pre>");
} else {
- PUTS(Z_STRVAL_P(tmp3));
+ zend_print_zval_r(*tmp, 0 TSRMLS_CC);
}
- zval_ptr_dtor(&tmp3);
-
} else if (Z_TYPE_PP(tmp) != IS_STRING) {
tmp2 = **tmp;
zval_copy_ctor(&tmp2);
diff --git a/ext/standard/math.c b/ext/standard/math.c
index 0aad86c06..2f5ee7ba0 100644
--- a/ext/standard/math.c
+++ b/ext/standard/math.c
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: math.c,v 1.131.2.1 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: math.c,v 1.131.2.2 2006/02/06 11:28:41 tony2001 Exp $ */
#include "php.h"
#include "php_math.h"
@@ -448,7 +448,7 @@ PHP_FUNCTION(pow)
/* calculate pow(long,long) in O(log exp) operations, bail if overflow */
while (i >= 1) {
int overflow;
- double dval;
+ double dval = 0.0;
if (i % 2) {
--i;
diff --git a/ext/standard/pack.c b/ext/standard/pack.c
index 1badfaed5..e9757f647 100644
--- a/ext/standard/pack.c
+++ b/ext/standard/pack.c
@@ -15,7 +15,7 @@
| Author: Chris Schneider <cschneid@relog.ch> |
+----------------------------------------------------------------------+
*/
-/* $Id: pack.c,v 1.57.2.3 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: pack.c,v 1.57.2.5 2006/02/26 10:49:50 helly Exp $ */
#include "php.h"
@@ -55,7 +55,7 @@
#endif
#define INC_OUTPUTPOS(a,b) \
- if ((a) < 0 || ((INT_MAX - outputpos)/(b)) < (a)) { \
+ if ((a) < 0 || ((INT_MAX - outputpos)/((int)b)) < (a)) { \
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Type %c: integer overflow in format string", code); \
RETURN_FALSE; \
} \
@@ -692,7 +692,9 @@ PHP_FUNCTION(unpack)
len = size * 2;
}
- len -= argb % 2;
+ if (argb > 0) {
+ len -= argb % 2;
+ }
buf = emalloc(len + 1);
diff --git a/ext/standard/php_array.h b/ext/standard/php_array.h
index 1ed616a38..b4e6923b4 100644
--- a/ext/standard/php_array.h
+++ b/ext/standard/php_array.h
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_array.h,v 1.50.2.1 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: php_array.h,v 1.50.2.3 2006/06/03 18:59:55 andrei Exp $ */
#ifndef PHP_ARRAY_H
#define PHP_ARRAY_H
@@ -103,4 +103,15 @@ HashTable* php_splice(HashTable *, int, int, zval ***, int, HashTable **);
PHPAPI int php_array_merge(HashTable *dest, HashTable *src, int recursive TSRMLS_DC);
int multisort_compare(const void *a, const void *b TSRMLS_DC);
+ZEND_BEGIN_MODULE_GLOBALS(array)
+ int *multisort_flags[2];
+ int (*compare_func)(zval *result, zval *op1, zval *op2 TSRMLS_DC);
+ZEND_END_MODULE_GLOBALS(array)
+
+#ifdef ZTS
+#define ARRAYG(v) TSRMG(array_globals_id, zend_array_globals *, v)
+#else
+#define ARRAYG(v) (array_globals.v)
+#endif
+
#endif /* PHP_ARRAY_H */
diff --git a/ext/standard/php_ext_syslog.h b/ext/standard/php_ext_syslog.h
index 8652fc88c..d26b63269 100644
--- a/ext/standard/php_ext_syslog.h
+++ b/ext/standard/php_ext_syslog.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_ext_syslog.h,v 1.12.2.1 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: php_ext_syslog.h,v 1.12.2.2 2006/03/20 23:03:11 tony2001 Exp $ */
#ifndef PHP_EXT_SYSLOG_H
#define PHP_EXT_SYSLOG_H
@@ -28,6 +28,7 @@
PHP_MINIT_FUNCTION(syslog);
PHP_RINIT_FUNCTION(syslog);
PHP_RSHUTDOWN_FUNCTION(syslog);
+PHP_MSHUTDOWN_FUNCTION(syslog);
PHP_FUNCTION(openlog);
PHP_FUNCTION(syslog);
diff --git a/ext/standard/php_filestat.h b/ext/standard/php_filestat.h
index c29a81747..f029f1f5a 100644
--- a/ext/standard/php_filestat.h
+++ b/ext/standard/php_filestat.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_filestat.h,v 1.24.2.2 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: php_filestat.h,v 1.24.2.4 2006/03/05 19:01:37 derick Exp $ */
#ifndef PHP_FILESTAT_H
#define PHP_FILESTAT_H
@@ -47,6 +47,12 @@ PHP_FUNCTION(disk_total_space);
PHP_FUNCTION(disk_free_space);
PHP_FUNCTION(chown);
PHP_FUNCTION(chgrp);
+#if HAVE_LCHOWN
+PHP_FUNCTION(lchown);
+#endif
+#if HAVE_LCHOWN
+PHP_FUNCTION(lchgrp);
+#endif
PHP_FUNCTION(chmod);
#if HAVE_UTIME
PHP_FUNCTION(touch);
diff --git a/ext/standard/php_fopen_wrapper.c b/ext/standard/php_fopen_wrapper.c
index f440c75fe..db2157396 100644
--- a/ext/standard/php_fopen_wrapper.c
+++ b/ext/standard/php_fopen_wrapper.c
@@ -17,7 +17,7 @@
| Hartmut Holzgraefe <hholzgra@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_fopen_wrapper.c,v 1.45.2.3 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: php_fopen_wrapper.c,v 1.45.2.4 2006/05/01 16:02:07 helly Exp $ */
#include <stdio.h>
#include <stdlib.h>
@@ -158,9 +158,29 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, ch
int mode_rw = 0;
php_stream * stream = NULL;
char *p, *token, *pathdup;
+ long max_memory;
- if (!strncasecmp(path, "php://", 6))
+ if (!strncasecmp(path, "php://", 6)) {
path += 6;
+ }
+
+ if (!strncasecmp(path, "temp", 4)) {
+ path += 4;
+ max_memory = PHP_STREAM_MAX_MEM;
+ if (!strncasecmp(path, "/maxmemory:", 11)) {
+ path += 11;
+ max_memory = strtol(path, NULL, 10);
+ if (max_memory < 0) {
+ php_error_docref(NULL TSRMLS_CC, E_ERROR, "Max memory must be >= 0");
+ return NULL;
+ }
+ }
+ return php_stream_temp_create(TEMP_STREAM_DEFAULT, max_memory);
+ }
+
+ if (!strcasecmp(path, "memory")) {
+ return php_stream_memory_create(TEMP_STREAM_DEFAULT);
+ }
if (!strcasecmp(path, "output")) {
return php_stream_alloc(&php_stream_output_ops, NULL, 0, "wb");
diff --git a/ext/standard/php_incomplete_class.h b/ext/standard/php_incomplete_class.h
index be6aba1a1..b0f9f1a3a 100644
--- a/ext/standard/php_incomplete_class.h
+++ b/ext/standard/php_incomplete_class.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_incomplete_class.h,v 1.17.2.1 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: php_incomplete_class.h,v 1.17.2.2 2006/01/28 06:14:34 fmk Exp $ */
#ifndef PHP_INCOMPLETE_CLASS_H
#define PHP_INCOMPLETE_CLASS_H
@@ -55,8 +55,8 @@ extern "C" {
zend_class_entry *php_create_incomplete_class(TSRMLS_D);
-char *php_lookup_class_name(zval *object, zend_uint *nlen);
-void php_store_class_name(zval *object, const char *name, zend_uint len);
+PHPAPI char *php_lookup_class_name(zval *object, zend_uint *nlen);
+PHPAPI void php_store_class_name(zval *object, const char *name, zend_uint len);
#ifdef __cplusplus
};
diff --git a/ext/standard/php_math.h b/ext/standard/php_math.h
index 805114f9c..19fa2518b 100644
--- a/ext/standard/php_math.h
+++ b/ext/standard/php_math.h
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_math.h,v 1.28.2.1 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: php_math.h,v 1.28.2.2 2006/01/13 13:04:27 tony2001 Exp $ */
#ifndef PHP_MATH_H
#define PHP_MATH_H
@@ -68,8 +68,9 @@ PHP_FUNCTION(rad2deg);
*/
PHP_FUNCTION(hypot);
PHP_FUNCTION(expm1);
+#ifdef HAVE_LOG1P
PHP_FUNCTION(log1p);
-
+#endif
PHP_FUNCTION(sinh);
PHP_FUNCTION(cosh);
diff --git a/ext/standard/php_smart_str.h b/ext/standard/php_smart_str.h
index 6d28cb4d7..e38ee8d23 100644
--- a/ext/standard/php_smart_str.h
+++ b/ext/standard/php_smart_str.h
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_smart_str.h,v 1.30.2.1 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: php_smart_str.h,v 1.30.2.3 2006/05/03 13:32:10 iliaa Exp $ */
#ifndef PHP_SMART_STR_H
#define PHP_SMART_STR_H
diff --git a/ext/standard/reg.c b/ext/standard/reg.c
index a50733672..f72476f69 100644
--- a/ext/standard/reg.c
+++ b/ext/standard/reg.c
@@ -17,7 +17,7 @@
| Jaakko Hyvätti <jaakko@hyvatti.iki.fi> |
+----------------------------------------------------------------------+
*/
-/* $Id: reg.c,v 1.82.2.2 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: reg.c,v 1.82.2.3 2006/02/26 10:49:50 helly Exp $ */
#include <stdio.h>
#include <ctype.h>
@@ -355,7 +355,7 @@ PHPAPI char *php_reg_replace(const char *pattern, const char *replace, const cha
new_l = strlen(buf) + subs[0].rm_so; /* part before the match */
walk = replace;
while (*walk) {
- if ('\\' == *walk && isdigit((unsigned char)walk[1]) && ((unsigned char)walk[1]) - '0' <= re.re_nsub) {
+ if ('\\' == *walk && isdigit((unsigned char)walk[1]) && ((unsigned char)walk[1]) - '0' <= (int)re.re_nsub) {
if (subs[walk[1] - '0'].rm_so > -1 && subs[walk[1] - '0'].rm_eo > -1) {
new_l += subs[walk[1] - '0'].rm_eo - subs[walk[1] - '0'].rm_so;
}
diff --git a/ext/standard/scanf.c b/ext/standard/scanf.c
index ed0ef42eb..c40a29a63 100644
--- a/ext/standard/scanf.c
+++ b/ext/standard/scanf.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: scanf.c,v 1.31.2.2 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: scanf.c,v 1.31.2.3 2006/08/04 20:34:31 tony2001 Exp $ */
/*
scanf.c --
@@ -732,7 +732,7 @@ PHPAPI int php_sscanf_internal( char *string, char *format,
if (*end == '$') {
format = end+1;
ch = format++;
- objIndex = varStart + value;
+ objIndex = varStart + value - 1;
}
}
@@ -762,7 +762,9 @@ PHPAPI int php_sscanf_internal( char *string, char *format,
switch (*ch) {
case 'n':
if (!(flags & SCAN_SUPPRESS)) {
- if (numVars) {
+ if (numVars && objIndex >= argCount) {
+ break;
+ } else if (numVars) {
zend_uint refcount;
current = args[objIndex++];
@@ -888,7 +890,9 @@ PHPAPI int php_sscanf_internal( char *string, char *format,
}
}
if (!(flags & SCAN_SUPPRESS)) {
- if (numVars) {
+ if (numVars && objIndex >= argCount) {
+ break;
+ } else if (numVars) {
zend_uint refcount;
current = args[objIndex++];
@@ -932,7 +936,9 @@ PHPAPI int php_sscanf_internal( char *string, char *format,
goto done;
}
if (!(flags & SCAN_SUPPRESS)) {
- if (numVars) {
+ if (numVars && objIndex >= argCount) {
+ break;
+ } else if (numVars) {
current = args[objIndex++];
zval_dtor( *current );
ZVAL_STRINGL( *current, string, end-string, 1);
@@ -1089,7 +1095,9 @@ PHPAPI int php_sscanf_internal( char *string, char *format,
value = (int) (*fn)(buf, NULL, base);
if ((flags & SCAN_UNSIGNED) && (value < 0)) {
sprintf(buf, "%u", value); /* INTL: ISO digit */
- if (numVars) {
+ if (numVars && objIndex >= argCount) {
+ break;
+ } else if (numVars) {
/* change passed value type to string */
current = args[objIndex++];
convert_to_string( *current );
@@ -1098,7 +1106,9 @@ PHPAPI int php_sscanf_internal( char *string, char *format,
add_index_string(*return_value, objIndex++, buf, 1);
}
} else {
- if (numVars) {
+ if (numVars && objIndex >= argCount) {
+ break;
+ } else if (numVars) {
current = args[objIndex++];
convert_to_long( *current );
Z_LVAL(**current) = value;
@@ -1206,7 +1216,9 @@ PHPAPI int php_sscanf_internal( char *string, char *format,
double dvalue;
*end = '\0';
dvalue = zend_strtod(buf, NULL);
- if (numVars) {
+ if (numVars && objIndex >= argCount) {
+ break;
+ } else if (numVars) {
current = args[objIndex++];
convert_to_double( *current );
Z_DVAL_PP( current ) = dvalue;
diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c
index fe57f511d..05d1efdcd 100644
--- a/ext/standard/streamsfuncs.c
+++ b/ext/standard/streamsfuncs.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streamsfuncs.c,v 1.58.2.1 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: streamsfuncs.c,v 1.58.2.6 2006/04/19 08:43:29 tony2001 Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -207,6 +207,8 @@ PHP_FUNCTION(stream_socket_server)
/* no need to dup; we need to efree buf anyway */
zval_dtor(zerrstr);
ZVAL_STRING(zerrstr, errstr, 0);
+ } else if (errstr) {
+ efree(errstr);
}
RETURN_FALSE;
}
@@ -750,7 +752,15 @@ PHP_FUNCTION(stream_select)
/* If seconds is not set to null, build the timeval, else we wait indefinitely */
if (sec != NULL) {
- convert_to_long_ex(&sec);
+ convert_to_long(sec);
+
+ if (Z_LVAL_P(sec) < 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The seconds parameter must be greater than 0.");
+ RETURN_FALSE;
+ } else if (usec < 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The microseconds parameter must be greater than 0.");
+ RETURN_FALSE;
+ }
/* Solaris + BSD do not like microsecond values which are >= 1 sec */
if (usec > 999999) {
@@ -1173,7 +1183,7 @@ PHP_FUNCTION(stream_get_line)
}
if (max_length < 0) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The maximum allowed length must be greater then or equal to zero.");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The maximum allowed length must be greater than or equal to zero.");
RETURN_FALSE;
}
if (!max_length) {
diff --git a/ext/standard/string.c b/ext/standard/string.c
index a830a6d87..67d6b1cf4 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: string.c,v 1.445.2.6 2006/01/05 20:49:37 tony2001 Exp $ */
+/* $Id: string.c,v 1.445.2.16 2006/08/10 17:46:43 iliaa Exp $ */
/* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
@@ -237,7 +237,7 @@ static void php_spn_common_handler(INTERNAL_FUNCTION_PARAMETERS, int behavior)
}
}
- if (((unsigned) start + (unsigned) len) > len1) {
+ if ((start + len) > len1) {
len = len1 - start;
}
@@ -632,7 +632,8 @@ PHP_FUNCTION(wordwrap)
{
const char *text, *breakchar = "\n";
char *newtext;
- int textlen, breakcharlen = 1, newtextlen, alloced, chk;
+ int textlen, breakcharlen = 1, newtextlen, chk;
+ size_t alloced;
long current = 0, laststart = 0, lastspace = 0;
long linelength = 75;
zend_bool docut = 0;
@@ -676,12 +677,13 @@ PHP_FUNCTION(wordwrap)
/* Multiple character line break or forced cut */
if (linelength > 0) {
chk = (int)(textlen/linelength + 1);
+ newtext = safe_emalloc(chk, breakcharlen, textlen + 1);
alloced = textlen + chk * breakcharlen + 1;
} else {
chk = textlen;
alloced = textlen * (breakcharlen + 1) + 1;
+ newtext = safe_emalloc(textlen, (breakcharlen + 1), 1);
}
- newtext = emalloc(alloced);
/* now keep track of the actual new text length */
newtextlen = 0;
@@ -1166,7 +1168,7 @@ quit_loop:
if (state == 1) {
cend = c;
}
- if (suffix != NULL && sufflen < (cend - comp) &&
+ if (suffix != NULL && sufflen < (uint)(cend - comp) &&
memcmp(cend - sufflen, suffix, sufflen) == 0) {
cend -= sufflen;
}
@@ -1611,10 +1613,18 @@ PHP_FUNCTION(stripos)
RETURN_FALSE;
}
+ if (haystack_len == 0) {
+ RETURN_FALSE;
+ }
+
haystack_dup = estrndup(haystack, haystack_len);
php_strtolower(haystack_dup, haystack_len);
if (Z_TYPE_P(needle) == IS_STRING) {
+ if (Z_STRLEN_P(needle) == 0 || Z_STRLEN_P(needle) > haystack_len) {
+ efree(haystack_dup);
+ RETURN_FALSE;
+ }
needle_dup = estrndup(Z_STRVAL_P(needle), Z_STRLEN_P(needle));
php_strtolower(needle_dup, Z_STRLEN_P(needle));
found = php_memnstr(haystack_dup + offset, needle_dup, Z_STRLEN_P(needle), haystack_dup + haystack_len);
@@ -1983,7 +1993,7 @@ PHP_FUNCTION(substr)
RETURN_FALSE;
}
- if (((unsigned) f + (unsigned) l) > Z_STRLEN_PP(str)) {
+ if ((f + l) > Z_STRLEN_PP(str)) {
l = Z_STRLEN_PP(str) - f;
}
@@ -2080,7 +2090,7 @@ PHP_FUNCTION(substr_replace)
}
}
- if (((unsigned) f + (unsigned) l) > Z_STRLEN_PP(str)) {
+ if ((f + l) > Z_STRLEN_PP(str)) {
l = Z_STRLEN_PP(str) - f;
}
if (Z_TYPE_PP(repl) == IS_ARRAY) {
@@ -2176,7 +2186,7 @@ PHP_FUNCTION(substr_replace)
}
}
- if (((unsigned) f + (unsigned) l) > Z_STRLEN_PP(tmp_str)) {
+ if ((f + l) > Z_STRLEN_PP(tmp_str)) {
l = Z_STRLEN_PP(tmp_str) - f;
}
@@ -4193,7 +4203,7 @@ PHP_FUNCTION(str_repeat)
zval **input_str; /* Input string */
zval **mult; /* Multiplier */
char *result; /* Resulting string */
- int result_len; /* Length of the resulting string */
+ size_t result_len; /* Length of the resulting string */
if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &input_str, &mult) == FAILURE) {
WRONG_PARAM_COUNT;
@@ -4218,11 +4228,7 @@ PHP_FUNCTION(str_repeat)
/* Initialize the result string */
result_len = Z_STRLEN_PP(input_str) * Z_LVAL_PP(mult);
- if (result_len < 1 || result_len > 2147483647) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "You may not create strings longer than 2147483647 bytes");
- RETURN_FALSE;
- }
- result = (char *)emalloc(result_len + 1);
+ result = (char *)safe_emalloc(Z_STRLEN_PP(input_str), Z_LVAL_PP(mult), 1);
/* Heavy optimization for situations where input string is 1 byte long */
if (Z_STRLEN_PP(input_str) == 1) {
@@ -4473,7 +4479,7 @@ PHP_FUNCTION(substr_count)
if (ac > 2) {
convert_to_long_ex(offset);
if (Z_LVAL_PP(offset) < 0) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset should be greater then or equal to 0.");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset should be greater than or equal to 0.");
RETURN_FALSE;
}
p += Z_LVAL_PP(offset);
@@ -4653,6 +4659,8 @@ PHP_FUNCTION(str_rot13)
if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg)) {
WRONG_PARAM_COUNT;
}
+
+ convert_to_string_ex(arg);
RETVAL_ZVAL(*arg, 1, 0);
php_strtr(Z_STRVAL_P(return_value), Z_STRLEN_P(return_value), rot13_from, rot13_to, 52);
@@ -4881,13 +4889,19 @@ PHP_FUNCTION(substr_compare)
RETURN_FALSE;
}
- if (len && offset >= s1_len) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The start position cannot exceed initial string length.");
+ if (ZEND_NUM_ARGS() >= 4 && len <= 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The length must be greater than zero");
RETURN_FALSE;
}
if (offset < 0) {
offset = s1_len + offset;
+ offset = (offset < 0) ? 0 : offset;
+ }
+
+ if ((offset + len) > s1_len) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The start position cannot exceed initial string length");
+ RETURN_FALSE;
}
cmp_len = (uint) (len ? len : MAX(s2_len, (s1_len - offset)));
diff --git a/ext/standard/syslog.c b/ext/standard/syslog.c
index da310ee81..2407fb56a 100644
--- a/ext/standard/syslog.c
+++ b/ext/standard/syslog.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: syslog.c,v 1.49.2.1 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: syslog.c,v 1.49.2.3 2006/03/21 00:59:08 iliaa Exp $ */
#include "php.h"
@@ -97,6 +97,7 @@ PHP_MINIT_FUNCTION(syslog)
/* AIX doesn't have LOG_PERROR */
REGISTER_LONG_CONSTANT("LOG_PERROR", LOG_PERROR, CONST_CS | CONST_PERSISTENT); /*log to stderr*/
#endif
+ BG(syslog_device)=NULL;
return SUCCESS;
}
@@ -109,22 +110,26 @@ PHP_RINIT_FUNCTION(syslog)
} else {
BG(syslog_started)=0;
}
- BG(syslog_device)=NULL;
return SUCCESS;
}
PHP_RSHUTDOWN_FUNCTION(syslog)
{
- if (BG(syslog_device)) {
- efree(BG(syslog_device));
- }
#ifdef PHP_WIN32
closelog();
#endif
return SUCCESS;
}
+PHP_MSHUTDOWN_FUNCTION(syslog)
+{
+ if (BG(syslog_device)) {
+ free(BG(syslog_device));
+ }
+ return SUCCESS;
+}
+
/* {{{ start_syslog
*/
static void start_syslog(TSRMLS_D)
@@ -224,9 +229,9 @@ PHP_FUNCTION(openlog)
return;
}
if (BG(syslog_device)) {
- efree(BG(syslog_device));
+ free(BG(syslog_device));
}
- BG(syslog_device) = estrndup(ident, ident_len);
+ BG(syslog_device) = zend_strndup(ident, ident_len);
openlog(BG(syslog_device), option, facility);
RETURN_TRUE;
}
@@ -242,7 +247,7 @@ PHP_FUNCTION(closelog)
closelog();
if (BG(syslog_device)) {
- efree(BG(syslog_device));
+ free(BG(syslog_device));
BG(syslog_device)=NULL;
}
RETURN_TRUE;
@@ -262,12 +267,7 @@ PHP_FUNCTION(syslog)
return;
}
- /*
- * CAVEAT: if the message contains patterns such as "%s",
- * this will cause problems.
- */
-
- php_syslog(priority, "%.500s", message);
+ php_syslog(priority, "%s", message);
RETURN_TRUE;
}
/* }}} */
diff --git a/ext/standard/tests/array/array_chunk2.phpt b/ext/standard/tests/array/array_chunk2.phpt
new file mode 100644
index 000000000..09d148ed0
--- /dev/null
+++ b/ext/standard/tests/array/array_chunk2.phpt
@@ -0,0 +1,146 @@
+--TEST--
+basic array_chunk test
+--FILE--
+<?php
+$input_array = array('a', 'b', 'c', 'd', 'e');
+var_dump(array_chunk($input_array, 0));
+var_dump(array_chunk($input_array, 0, true));
+var_dump(array_chunk($input_array, 1));
+var_dump(array_chunk($input_array, 1, true));
+var_dump(array_chunk($input_array, 2));
+var_dump(array_chunk($input_array, 2, true));
+var_dump(array_chunk($input_array, 10));
+var_dump(array_chunk($input_array, 10, true));
+?>
+--EXPECTF--
+Warning: array_chunk(): Size parameter expected to be greater than 0 in %s on line %d
+NULL
+
+Warning: array_chunk(): Size parameter expected to be greater than 0 in %s on line %d
+NULL
+array(5) {
+ [0]=>
+ array(1) {
+ [0]=>
+ string(1) "a"
+ }
+ [1]=>
+ array(1) {
+ [0]=>
+ string(1) "b"
+ }
+ [2]=>
+ array(1) {
+ [0]=>
+ string(1) "c"
+ }
+ [3]=>
+ array(1) {
+ [0]=>
+ string(1) "d"
+ }
+ [4]=>
+ array(1) {
+ [0]=>
+ string(1) "e"
+ }
+}
+array(5) {
+ [0]=>
+ array(1) {
+ [0]=>
+ string(1) "a"
+ }
+ [1]=>
+ array(1) {
+ [1]=>
+ string(1) "b"
+ }
+ [2]=>
+ array(1) {
+ [2]=>
+ string(1) "c"
+ }
+ [3]=>
+ array(1) {
+ [3]=>
+ string(1) "d"
+ }
+ [4]=>
+ array(1) {
+ [4]=>
+ string(1) "e"
+ }
+}
+array(3) {
+ [0]=>
+ array(2) {
+ [0]=>
+ string(1) "a"
+ [1]=>
+ string(1) "b"
+ }
+ [1]=>
+ array(2) {
+ [0]=>
+ string(1) "c"
+ [1]=>
+ string(1) "d"
+ }
+ [2]=>
+ array(1) {
+ [0]=>
+ string(1) "e"
+ }
+}
+array(3) {
+ [0]=>
+ array(2) {
+ [0]=>
+ string(1) "a"
+ [1]=>
+ string(1) "b"
+ }
+ [1]=>
+ array(2) {
+ [2]=>
+ string(1) "c"
+ [3]=>
+ string(1) "d"
+ }
+ [2]=>
+ array(1) {
+ [4]=>
+ string(1) "e"
+ }
+}
+array(1) {
+ [0]=>
+ array(5) {
+ [0]=>
+ string(1) "a"
+ [1]=>
+ string(1) "b"
+ [2]=>
+ string(1) "c"
+ [3]=>
+ string(1) "d"
+ [4]=>
+ string(1) "e"
+ }
+}
+array(1) {
+ [0]=>
+ array(5) {
+ [0]=>
+ string(1) "a"
+ [1]=>
+ string(1) "b"
+ [2]=>
+ string(1) "c"
+ [3]=>
+ string(1) "d"
+ [4]=>
+ string(1) "e"
+ }
+}
diff --git a/ext/standard/tests/array/array_combine.phpt b/ext/standard/tests/array/array_combine.phpt
new file mode 100755
index 000000000..6952b66fb
--- /dev/null
+++ b/ext/standard/tests/array/array_combine.phpt
@@ -0,0 +1,122 @@
+--TEST--
+basic array_combine test
+--FILE--
+<?php
+ $array1 = array('green', 'red', 'yellow');
+ $array2 = array('1', '2', '3');
+ $array3 = array(0, 1, 2);
+ $array4 = array(TRUE, FALSE, NULL);
+ $a = array_combine($array1, $array1);
+ $b = array_combine($array1, $array2);
+ $c = array_combine($array1, $array3);
+ $d = array_combine($array1, $array4);
+ $e = array_combine($array2, $array1);
+ $f = array_combine($array2, $array2);
+ $g = array_combine($array2, $array3);
+ $h = array_combine($array2, $array4);
+ $i = array_combine($array3, $array1);
+ $j = array_combine($array3, $array2);
+ $k = array_combine($array3, $array3);
+ $l = array_combine($array3, $array4);
+ $m = array_combine($array4, $array1);
+ $n = array_combine($array4, $array2);
+ $o = array_combine($array4, $array3);
+ $p = array_combine($array4, $array4);
+ for($letter = "a"; $letter <= "p"; $letter++)
+ {
+ print_r($$letter);
+ }
+?>
+--EXPECT--
+Array
+(
+ [green] => green
+ [red] => red
+ [yellow] => yellow
+)
+Array
+(
+ [green] => 1
+ [red] => 2
+ [yellow] => 3
+)
+Array
+(
+ [green] => 0
+ [red] => 1
+ [yellow] => 2
+)
+Array
+(
+ [green] => 1
+ [red] =>
+ [yellow] =>
+)
+Array
+(
+ [1] => green
+ [2] => red
+ [3] => yellow
+)
+Array
+(
+ [1] => 1
+ [2] => 2
+ [3] => 3
+)
+Array
+(
+ [1] => 0
+ [2] => 1
+ [3] => 2
+)
+Array
+(
+ [1] => 1
+ [2] =>
+ [3] =>
+)
+Array
+(
+ [0] => green
+ [1] => red
+ [2] => yellow
+)
+Array
+(
+ [0] => 1
+ [1] => 2
+ [2] => 3
+)
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => 2
+)
+Array
+(
+ [0] => 1
+ [1] =>
+ [2] =>
+)
+Array
+(
+ [1] => green
+ [] => yellow
+)
+Array
+(
+ [1] => 1
+ [] => 3
+)
+Array
+(
+ [1] => 0
+ [] => 2
+)
+Array
+(
+ [1] => 1
+ [] =>
+) \ No newline at end of file
diff --git a/ext/standard/tests/array/array_count_values2.phpt b/ext/standard/tests/array/array_count_values2.phpt
new file mode 100644
index 000000000..50472179f
--- /dev/null
+++ b/ext/standard/tests/array/array_count_values2.phpt
@@ -0,0 +1,43 @@
+--TEST--
+basic array_count_values test
+--FILE--
+<?php
+$array1 = array(1,
+ "hello",
+ 1,
+ "world",
+ "hello",
+ "",
+ "rabbit",
+ "foo",
+ "Foo",
+ TRUE,
+ FALSE,
+ NULL,
+ 0);
+var_dump(array_count_values($array1));
+?>
+--EXPECTF--
+Warning: array_count_values(): Can only count STRING and INTEGER values! in %s on line %s
+
+Warning: array_count_values(): Can only count STRING and INTEGER values! in %s on line %s
+
+Warning: array_count_values(): Can only count STRING and INTEGER values! in %s on line %s
+array(8) {
+ [1]=>
+ int(2)
+ ["hello"]=>
+ int(2)
+ ["world"]=>
+ int(1)
+ [""]=>
+ int(1)
+ ["rabbit"]=>
+ int(1)
+ ["foo"]=>
+ int(1)
+ ["Foo"]=>
+ int(1)
+ [0]=>
+ int(1)
+}
diff --git a/ext/standard/tests/array/array_diff_assoc.phpt b/ext/standard/tests/array/array_diff_assoc.phpt
new file mode 100755
index 000000000..32d4758dd
--- /dev/null
+++ b/ext/standard/tests/array/array_diff_assoc.phpt
@@ -0,0 +1,49 @@
+--TEST--
+basic array_diff_assoc test
+--FILE--
+<?php
+$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red", "");
+$array2 = array("a" => "green", "yellow", "red", TRUE);
+$array3 = array("red", "a"=>"brown", "");
+$result[] = array_diff_assoc($array1, $array2);
+$result[] = array_diff_assoc($array1, $array3);
+$result[] = array_diff_assoc($array2, $array3);
+$result[] = array_diff_assoc($array1, $array2, $array3);
+print_r($result)
+?>
+--EXPECT--
+Array
+(
+ [0] => Array
+ (
+ [b] => brown
+ [c] => blue
+ [0] => red
+ [1] =>
+ )
+
+ [1] => Array
+ (
+ [a] => green
+ [b] => brown
+ [c] => blue
+ )
+
+ [2] => Array
+ (
+ [a] => green
+ [0] => yellow
+ [1] => red
+ [2] => 1
+ )
+
+ [3] => Array
+ (
+ [b] => brown
+ [c] => blue
+ )
+
+)
+
+
+
diff --git a/ext/standard/tests/array/array_diff_key2.phpt b/ext/standard/tests/array/array_diff_key2.phpt
new file mode 100644
index 000000000..ba32b984f
--- /dev/null
+++ b/ext/standard/tests/array/array_diff_key2.phpt
@@ -0,0 +1,44 @@
+--TEST--
+basic array_diff_key test
+--FILE--
+<?php
+$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red", "");
+$array2 = array("a" => "green", "yellow", "red", TRUE);
+$array3 = array("red", "a"=>"brown", "");
+$result[] = array_diff_key($array1, $array2);
+$result[] = array_diff_key($array1, $array3);
+$result[] = array_diff_key($array2, $array3);
+$result[] = array_diff_key($array1, $array2, $array3);
+
+var_dump($result);
+
+?>
+--EXPECT--
+array(4) {
+ [0]=>
+ array(2) {
+ ["b"]=>
+ string(5) "brown"
+ ["c"]=>
+ string(4) "blue"
+ }
+ [1]=>
+ array(2) {
+ ["b"]=>
+ string(5) "brown"
+ ["c"]=>
+ string(4) "blue"
+ }
+ [2]=>
+ array(1) {
+ [2]=>
+ bool(true)
+ }
+ [3]=>
+ array(2) {
+ ["b"]=>
+ string(5) "brown"
+ ["c"]=>
+ string(4) "blue"
+ }
+}
diff --git a/ext/standard/tests/file/bug24313.phpt b/ext/standard/tests/file/bug24313.phpt
index dcea58ffe..4b84bcac4 100644
--- a/ext/standard/tests/file/bug24313.phpt
+++ b/ext/standard/tests/file/bug24313.phpt
@@ -4,7 +4,7 @@ Bug #24313 (file_exists() warning on non-existant files when is open_basedir ena
open_basedir=/tmp
--FILE--
<?php
- var_dump(file_exists("./foobar"));
+ var_dump(file_exists("/tmp/bogus_file_no_such_thing"));
?>
--EXPECT--
bool(false)
diff --git a/ext/standard/tests/file/bug37158.phpt b/ext/standard/tests/file/bug37158.phpt
new file mode 100644
index 000000000..48df46cc6
--- /dev/null
+++ b/ext/standard/tests/file/bug37158.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Bug #37158 (if userspace stream is present, fread() reads in 8192 max, otherwise it works)
+--FILE--
+<?php
+
+class VariableStream {
+
+ function stream_open($path, $mode, $options, &$opened_path)
+ {
+ return true;
+ }
+}
+
+stream_wrapper_register("var", "VariableStream");
+
+error_reporting(E_ALL | E_STRICT);
+$file = dirname(__FILE__) . '/footest.txt';
+$x = str_repeat(1, 8192);
+$fp = fopen($file, 'w');
+for ($i = 0; $i < 5; $i++) {
+ fwrite($fp, $x);
+}
+fclose($fp);
+
+$fp = fopen($file, 'r');
+$outsidecontents = fread($fp, 20000);
+fclose($fp);
+var_dump('size of contents 1 = ' . strlen($outsidecontents));
+$outsidecontents = file_get_contents($file);
+var_dump('size of contents 2 = ' . strlen($outsidecontents));
+
+unlink($file);
+
+echo "Done\n";
+?>
+--EXPECT--
+string(26) "size of contents 1 = 20000"
+string(26) "size of contents 2 = 40960"
+Done
diff --git a/ext/standard/tests/file/userstreams.phpt b/ext/standard/tests/file/userstreams.phpt
index 124825f24..9b80508b3 100644
--- a/ext/standard/tests/file/userstreams.phpt
+++ b/ext/standard/tests/file/userstreams.phpt
@@ -211,15 +211,15 @@ for ($i = 0; $i < 256; $i++) {
$whence = $whence_map[array_rand($whence_map, 1)];
switch($whence) {
case SEEK_SET:
- $offset = rand(0, $DATALEN);
+ $offset = rand(0, $DATALEN - 1);
$position = $offset;
break;
case SEEK_END:
- $offset = -rand(0, $DATALEN);
+ $offset = -rand(0, $DATALEN - 1);
$position = $DATALEN + $offset;
break;
case SEEK_CUR:
- $offset = rand(0, $DATALEN);
+ $offset = rand(0, $DATALEN - 1);
$offset -= $position;
$position += $offset;
break;
diff --git a/ext/standard/tests/filters/read.phpt b/ext/standard/tests/filters/read.phpt
new file mode 100644
index 000000000..a2372cf8f
--- /dev/null
+++ b/ext/standard/tests/filters/read.phpt
@@ -0,0 +1,72 @@
+--TEST--
+stream filter - reading
+--FILE--
+<?php
+echo "-TEST\n";
+class filter extends php_user_filter {
+ function filter($in, $out, &$consumed, $closing)
+ {
+ $output = 0;
+ while ($bucket = stream_bucket_make_writeable($in)) {
+ $bucket->data = strtoupper($bucket->data);
+ $consumed += $bucket->datalen;
+ stream_bucket_append($out, $bucket);
+ $output = 1;
+ }
+ if ($closing) {
+ $bucket = stream_bucket_new($this->stream, "\n===close===\n");
+ stream_bucket_append($out, $bucket);
+ $output = 1;
+ }
+ return $output ? PSFS_PASS_ON : PSFS_FEED_ME;
+ }
+}
+stream_filter_register("strtoupper", "filter")
+ or die("Failed to register filter");
+
+if ($f = fopen(__FILE__, "rb")) {
+ stream_filter_append($f, "strtoupper");
+ while (!feof($f)) {
+ echo fread($f, 8192);
+ }
+ fclose($f);
+}
+echo "Done\n";
+?>
+--EXPECTF--
+%sTEST
+<?PHP
+ECHO "-TEST\N";
+CLASS FILTER EXTENDS PHP_USER_FILTER {
+ FUNCTION FILTER($IN, $OUT, &$CONSUMED, $CLOSING)
+ {
+ $OUTPUT = 0;
+ WHILE ($BUCKET = STREAM_BUCKET_MAKE_WRITEABLE($IN)) {
+ $BUCKET->DATA = STRTOUPPER($BUCKET->DATA);
+ $CONSUMED += $BUCKET->DATALEN;
+ STREAM_BUCKET_APPEND($OUT, $BUCKET);
+ $OUTPUT = 1;
+ }
+ IF ($CLOSING) {
+ $BUCKET = STREAM_BUCKET_NEW($THIS->STREAM, "\N===CLOSE===\N");
+ STREAM_BUCKET_APPEND($OUT, $BUCKET);
+ $OUTPUT = 1;
+ }
+ RETURN $OUTPUT ? PSFS_PASS_ON : PSFS_FEED_ME;
+ }
+}
+STREAM_FILTER_REGISTER("STRTOUPPER", "FILTER")
+ OR DIE("FAILED TO REGISTER FILTER");
+
+IF ($F = FOPEN(__FILE__, "RB")) {
+ STREAM_FILTER_APPEND($F, "STRTOUPPER");
+ WHILE (!FEOF($F)) {
+ ECHO FREAD($F, 8192);
+ }
+ FCLOSE($F);
+}
+ECHO "DONE\N";
+?>
+
+===close===
+Done
diff --git a/ext/standard/tests/general_functions/bug35229.phpt b/ext/standard/tests/general_functions/bug35229.phpt
index bcd0ef548..e5a294598 100755
--- a/ext/standard/tests/general_functions/bug35229.phpt
+++ b/ext/standard/tests/general_functions/bug35229.phpt
@@ -1,5 +1,5 @@
--TEST--
-Bug #35229 (call_user_func() crashes when arguement_stack is nearly full)
+Bug #35229 (call_user_func() crashes when argument stack is nearly full)
--FILE--
<?php
class test2 {
diff --git a/ext/standard/tests/general_functions/bug36011.phpt b/ext/standard/tests/general_functions/bug36011.phpt
new file mode 100755
index 000000000..08a45014f
--- /dev/null
+++ b/ext/standard/tests/general_functions/bug36011.phpt
@@ -0,0 +1,46 @@
+--TEST--
+Bug #36011 (Strict errormsg wrong for call_user_func() and the likes)
+--FILE--
+<?php
+
+class TestClass
+{
+ static function test()
+ {
+ echo __METHOD__ . "()\n";
+ }
+
+ function whee()
+ {
+ array_map(array('TestClass', 'test'), array('array_value'));
+ }
+
+ function whee4()
+ {
+ call_user_func(array('TestClass', 'test'));
+ }
+
+ static function whee5()
+ {
+ call_user_func(array('TestClass', 'test'));
+ }
+}
+
+TestClass::test();
+
+$a = new TestClass();
+$a->whee();
+$a->whee4();
+$a->whee5();
+
+TestClass::whee5();
+
+?>
+===DONE===
+--EXPECTF--
+TestClass::test()
+TestClass::test()
+TestClass::test()
+TestClass::test()
+TestClass::test()
+===DONE===
diff --git a/ext/standard/tests/math/bug21523.phpt b/ext/standard/tests/math/bug21523.phpt
index 23d4df7dd..3ca82b632 100644
--- a/ext/standard/tests/math/bug21523.phpt
+++ b/ext/standard/tests/math/bug21523.phpt
@@ -1,7 +1,8 @@
--TEST--
Bug #21523 (number_format tries to allocate negative amount of memory)
--FILE--
-<?php // $Id: bug21523.phpt,v 1.2 2003/01/23 19:07:25 moriyoshi Exp $ vim600:syn=php
+<?php // $Id: bug21523.phpt,v 1.2.4.1 2006/03/22 19:27:47 tony2001 Exp $ vim600:syn=php
+set_time_limit(5);
var_dump(number_format(-2000, 2768));
echo "OK";
diff --git a/ext/standard/tests/strings/bug33605.phpt b/ext/standard/tests/strings/bug33605.phpt
new file mode 100644
index 000000000..f0c49eb18
--- /dev/null
+++ b/ext/standard/tests/strings/bug33605.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Bug #33605 (substr_compare crashes)
+--FILE--
+<?php
+$res = substr_compare("aa", "a", -99999999, 0, 0);
+var_dump($res);
+
+?>
+--EXPECTF--
+Warning: substr_compare(): The length must be greater than zero in %s on line %d
+bool(false)
diff --git a/ext/standard/tests/strings/bug36148.phpt b/ext/standard/tests/strings/bug36148.phpt
new file mode 100644
index 000000000..06caac333
--- /dev/null
+++ b/ext/standard/tests/strings/bug36148.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Bug #36148 (unpack("H*hex", $data) is adding an extra character to the end of the string)
+--FILE--
+<?php
+$values = array("a", "aa", "aaa", "aaaa");
+foreach ($values as $value) {
+ $a = pack("H*", $value);
+ $b = unpack("H*", $a);
+ echo $value.": ";
+ var_dump($b);
+}
+?>
+--EXPECT--
+a: array(1) {
+ [1]=>
+ string(2) "a0"
+}
+aa: array(1) {
+ [1]=>
+ string(2) "aa"
+}
+aaa: array(1) {
+ [1]=>
+ string(4) "aaa0"
+}
+aaaa: array(1) {
+ [1]=>
+ string(4) "aaaa"
+}
diff --git a/ext/standard/tests/strings/bug36306.phpt b/ext/standard/tests/strings/bug36306.phpt
new file mode 100644
index 000000000..ff6279a2d
--- /dev/null
+++ b/ext/standard/tests/strings/bug36306.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Bug #36306 crc32() 64bit
+--FILE--
+<?php
+
+/* as an example how to write crc32 tests
+ PHP does not have uint values, you cannot
+ display crc32 like a signed integer.
+ Have to find some small strings to truely reproduce
+ the problem, this example being not a problem
+*/
+echo dechex(crc32("platform independant")) . "\n";
+?>
+--EXPECT--
+ccd9fe66
diff --git a/ext/standard/tests/strings/bug36944.phpt b/ext/standard/tests/strings/bug36944.phpt
new file mode 100644
index 000000000..2a43d060e
--- /dev/null
+++ b/ext/standard/tests/strings/bug36944.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Bug #36944 (strncmp & strncasecmp do not return false on negative string length)
+--FILE--
+<?php
+
+var_dump(strncmp("test ", "e", -1));
+var_dump(strncmp("test ", "e", 10));
+var_dump(strncmp("test ", "e", 0));
+
+var_dump(strncasecmp("test ", "E", -1));
+var_dump(strncasecmp("test ", "E", 10));
+var_dump(strncasecmp("test ", "E", 0));
+
+echo "Done\n";
+?>
+--EXPECTF--
+Warning: Length must be greater than or equal to 0 in %s on line %d
+bool(false)
+int(%d)
+int(0)
+
+Warning: Length must be greater than or equal to 0 in %s on line %d
+bool(false)
+int(%d)
+int(0)
+Done
diff --git a/ext/standard/tests/strings/substr_compare.phpt b/ext/standard/tests/strings/substr_compare.phpt
new file mode 100644
index 000000000..594aed173
--- /dev/null
+++ b/ext/standard/tests/strings/substr_compare.phpt
@@ -0,0 +1,39 @@
+--TEST--
+substr_compare()
+--FILE--
+<?php
+
+var_dump(substr_compare("abcde", "bc", 1, 2));
+var_dump(substr_compare("abcde", "bcg", 1, 2));
+var_dump(substr_compare("abcde", "BC", 1, 2, true));
+var_dump(substr_compare("abcde", "bc", 1, 3));
+var_dump(substr_compare("abcde", "cd", 1, 2));
+var_dump(substr_compare("abcde", "abc", 5, 1));
+
+var_dump(substr_compare("abcde", -1, 0, NULL, new stdClass));
+echo "Test\n";
+var_dump(substr_compare("abcde", "abc", -1, NULL, -5));
+var_dump(substr_compare("abcde", -1, 0, "str", new stdClass));
+
+echo "Done\n";
+?>
+--EXPECTF--
+int(0)
+int(0)
+int(0)
+int(1)
+int(-1)
+
+Warning: substr_compare(): The start position cannot exceed initial string length in %s on line %d
+bool(false)
+
+Warning: substr_compare() expects parameter 5 to be boolean, object given in %s on line %d
+bool(false)
+Test
+
+Warning: substr_compare(): The length must be greater than zero in %s on line %d
+bool(false)
+
+Warning: substr_compare() expects parameter 4 to be long, string given in %s on line %d
+bool(false)
+Done
diff --git a/ext/standard/tests/strings/url_t.phpt b/ext/standard/tests/strings/url_t.phpt
index be95e0294..2d18fa5c0 100644
--- a/ext/standard/tests/strings/url_t.phpt
+++ b/ext/standard/tests/strings/url_t.phpt
@@ -70,6 +70,7 @@ $sample_urls = array (
'http://foo.com#bar',
'scheme:',
'foo+bar://baz@bang/bla',
+'gg:9130731',
);
foreach ($sample_urls as $url) {
@@ -678,6 +679,12 @@ array(4) {
["path"]=>
string(4) "/bla"
}
+array(2) {
+ ["scheme"]=>
+ string(2) "gg"
+ ["path"]=>
+ string(7) "9130731"
+}
string(4) "http"
string(11) "www.php.net"
int(80)
diff --git a/ext/standard/url.c b/ext/standard/url.c
index 6231f28a4..09da50aef 100644
--- a/ext/standard/url.c
+++ b/ext/standard/url.c
@@ -15,7 +15,7 @@
| Author: Jim Winstead <jimw@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: url.c,v 1.86.2.3 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: url.c,v 1.86.2.5 2006/02/12 16:39:44 iliaa Exp $ */
#include <stdlib.h>
#include <string.h>
@@ -25,6 +25,7 @@
#include "php.h"
#include "url.h"
+#include "file.h"
#ifdef _OSD_POSIX
#ifndef APACHE
#error On this EBCDIC platform, PHP is only supported as an Apache module.
@@ -137,7 +138,7 @@ PHPAPI php_url *php_url_parse_ex(char const *str, int length)
p++;
}
- if ((*p) == '\0' || *p == '/') {
+ if ((*p == '\0' || *p == '/') && (p - e) < 7) {
goto parse_port;
}
@@ -658,7 +659,7 @@ PHP_FUNCTION(get_headers)
{
char *url;
int url_len;
- php_stream_context *context = NULL;
+ php_stream_context *context;
php_stream *stream;
zval **prev_val, **hdr = NULL;
HashPosition pos;
@@ -667,6 +668,7 @@ PHP_FUNCTION(get_headers)
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &url, &url_len, &format) == FAILURE) {
return;
}
+ context = FG(default_context) ? FG(default_context) : (FG(default_context) = php_stream_context_alloc());
if (!(stream = php_stream_open_wrapper_ex(url, "r", REPORT_ERRORS | STREAM_USE_URL | STREAM_ONLY_GET_HEADERS, NULL, context))) {
RETURN_FALSE;
diff --git a/ext/standard/url_scanner_ex.c b/ext/standard/url_scanner_ex.c
index 5a9116b53..fdfcc6ee4 100644
--- a/ext/standard/url_scanner_ex.c
+++ b/ext/standard/url_scanner_ex.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.11 on Sun Jan 1 14:39:52 2006 */
+/* Generated by re2c 0.9.11 on Tue Feb 28 09:38:22 2006 */
/*
+----------------------------------------------------------------------+
| PHP Version 5 |
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: url_scanner_ex.c,v 1.95.2.3 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: url_scanner_ex.c,v 1.95.2.4 2006/02/28 14:45:18 iliaa Exp $ */
#include "php.h"
@@ -107,41 +107,6 @@ static inline void append_modified_url(smart_str *url, smart_str *dest, smart_st
q = (p = url->c) + url->len;
scan:
-{
- static unsigned char yybm[] = {
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 0, 128, 128, 128, 128, 0,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- };
{
YYCTYPE yych;
@@ -150,12 +115,12 @@ scan:
yy0:
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if(yybm[0+yych] & 128) {
- goto yy8;
+ switch(yych){
+ case '#': goto yy6;
+ case ':': goto yy2;
+ case '?': goto yy4;
+ default: goto yy8;
}
- if(yych <= '9') goto yy6;
- if(yych >= ';') goto yy4;
- goto yy2;
yy2: ++YYCURSOR;
goto yy3;
yy3:
@@ -172,14 +137,13 @@ yy8: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy9;
-yy9: if(yybm[0+yych] & 128) {
- goto yy8;
+yy9: switch(yych){
+ case '#': case ':': case '?': goto yy10;
+ default: goto yy8;
}
- goto yy10;
yy10:
{ goto scan; }
}
-}
done:
@@ -347,41 +311,6 @@ state_plain_begin:
state_plain:
start = YYCURSOR;
-{
- static unsigned char yybm[] = {
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 0, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- };
{
YYCTYPE yych;
@@ -390,10 +319,10 @@ state_plain:
yy11:
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if(yybm[0+yych] & 128) {
- goto yy15;
+ switch(yych){
+ case '<': goto yy13;
+ default: goto yy15;
}
- goto yy13;
yy13: ++YYCURSOR;
goto yy14;
yy14:
@@ -402,53 +331,17 @@ yy15: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy16;
-yy16: if(yybm[0+yych] & 128) {
- goto yy15;
+yy16: switch(yych){
+ case '<': goto yy17;
+ default: goto yy15;
}
- goto yy17;
yy17:
{ passthru(STD_ARGS); goto state_plain; }
}
-}
state_tag:
start = YYCURSOR;
-{
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
{
YYCTYPE yych;
@@ -457,11 +350,60 @@ state_tag:
yy18:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if(yych <= '@') goto yy22;
- if(yych <= 'Z') goto yy20;
- if(yych <= '`') goto yy22;
- if(yych >= '{') goto yy22;
- goto yy20;
+ switch(yych){
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy20;
+ default: goto yy22;
+ }
yy20: ++YYCURSOR;
yych = *YYCURSOR;
goto yy25;
@@ -475,11 +417,60 @@ yy24: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy25;
-yy25: if(yybm[0+yych] & 128) {
- goto yy24;
+yy25: switch(yych){
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy24;
+ default: goto yy21;
}
- goto yy21;
-}
}
@@ -488,41 +479,6 @@ state_next_arg_begin:
state_next_arg:
start = YYCURSOR;
-{
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
{
YYCTYPE yych;
@@ -531,24 +487,63 @@ state_next_arg:
yy26:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if(yych <= '='){
- if(yych <= 0x0B){
- if(yych <= 0x08) goto yy34;
- goto yy30;
- } else {
- if(yych == ' ') goto yy30;
- goto yy34;
- }
- } else {
- if(yych <= 'Z'){
- if(yych <= '>') goto yy28;
- if(yych <= '@') goto yy34;
- goto yy32;
- } else {
- if(yych <= '`') goto yy34;
- if(yych <= 'z') goto yy32;
- goto yy34;
- }
+ switch(yych){
+ case 0x09:
+ case 0x0A:
+ case 0x0B: case 0x0D: case ' ': goto yy30;
+ case '>': goto yy28;
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy32;
+ default: goto yy34;
}
yy28: ++YYCURSOR;
goto yy29;
@@ -571,51 +566,17 @@ yy36: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy37;
-yy37: if(yybm[0+yych] & 128) {
- goto yy36;
+yy37: switch(yych){
+ case 0x09:
+ case 0x0A:
+ case 0x0B: case 0x0D: case ' ': goto yy36;
+ default: goto yy31;
}
- goto yy31;
-}
}
state_arg:
start = YYCURSOR;
-{
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
{
YYCTYPE yych;
@@ -624,11 +585,60 @@ state_arg:
yy38:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if(yych <= '@') goto yy42;
- if(yych <= 'Z') goto yy40;
- if(yych <= '`') goto yy42;
- if(yych >= '{') goto yy42;
- goto yy40;
+ switch(yych){
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy40;
+ default: goto yy42;
+ }
yy40: ++YYCURSOR;
yych = *YYCURSOR;
goto yy45;
@@ -642,51 +652,65 @@ yy44: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy45;
-yy45: if(yybm[0+yych] & 128) {
- goto yy44;
+yy45: switch(yych){
+ case '-': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy44;
+ default: goto yy41;
}
- goto yy41;
-}
}
state_before_val:
start = YYCURSOR;
-{
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
{
YYCTYPE yych;
@@ -696,14 +720,18 @@ state_before_val:
yy46:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if(yych == ' ') goto yy48;
- if(yych == '=') goto yy50;
- goto yy52;
+ switch(yych){
+ case ' ': goto yy48;
+ case '=': goto yy50;
+ default: goto yy52;
+ }
yy48: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == ' ') goto yy55;
- if(yych == '=') goto yy53;
- goto yy49;
+ switch(yych){
+ case ' ': goto yy55;
+ case '=': goto yy53;
+ default: goto yy49;
+ }
yy49:
{ --YYCURSOR; goto state_next_arg_begin; }
yy50: ++YYCURSOR;
@@ -717,63 +745,29 @@ yy53: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy54;
-yy54: if(yybm[0+yych] & 128) {
- goto yy53;
+yy54: switch(yych){
+ case ' ': goto yy53;
+ default: goto yy51;
}
- goto yy51;
yy55: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy56;
-yy56: if(yych == ' ') goto yy55;
- if(yych == '=') goto yy53;
- goto yy57;
+yy56: switch(yych){
+ case ' ': goto yy55;
+ case '=': goto yy53;
+ default: goto yy57;
+ }
yy57: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy49;
}
}
-}
state_val:
start = YYCURSOR;
-{
- static unsigned char yybm[] = {
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 160, 160, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 160, 248, 56, 248, 248, 248, 248, 200,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 0, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- };
{
YYCTYPE yych;
@@ -783,29 +777,18 @@ state_val:
yy58:
if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
- if(yych <= '!'){
- if(yych <= 0x0A){
- if(yych <= 0x08) goto yy63;
- goto yy64;
- } else {
- if(yych == ' ') goto yy64;
- goto yy63;
- }
- } else {
- if(yych <= '\''){
- if(yych <= '"') goto yy60;
- if(yych <= '&') goto yy63;
- goto yy62;
- } else {
- if(yych == '>') goto yy64;
- goto yy63;
- }
+ switch(yych){
+ case 0x09:
+ case 0x0A: case 0x0D: case ' ': case '>': goto yy64;
+ case '"': goto yy60;
+ case '\'': goto yy62;
+ default: goto yy63;
}
yy60: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy77;
yy61:
-{ handle_val(STD_ARGS, 0, '\0'); goto state_next_arg_begin; }
+{ handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; }
yy62: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy69;
@@ -819,38 +802,40 @@ yy66: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy67;
-yy67: if(yybm[0+yych] & 8) {
- goto yy66;
+yy67: switch(yych){
+ case 0x09:
+ case 0x0A: case 0x0D: case ' ': case '>': goto yy61;
+ default: goto yy66;
}
- goto yy61;
yy68: yyaccept = 0;
YYMARKER = ++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
goto yy69;
-yy69: if(yybm[0+yych] & 16) {
- goto yy68;
+yy69: switch(yych){
+ case 0x09:
+ case 0x0A: case 0x0D: case ' ': goto yy72;
+ case '\'': goto yy70;
+ case '>': goto yy61;
+ default: goto yy68;
}
- if(yych <= '&') goto yy72;
- if(yych >= '(') goto yy61;
- goto yy70;
yy70: ++YYCURSOR;
- if(yybm[0+(yych = *YYCURSOR)] & 8) {
- yych = *YYCURSOR;
- goto yy66;
+ switch((yych = *YYCURSOR)) {
+ case 0x09:
+ case 0x0A: case 0x0D: case ' ': case '>': goto yy71;
+ default: goto yy66;
}
- goto yy71;
yy71:
{ handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; }
yy72: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy73;
-yy73: if(yybm[0+yych] & 32) {
- goto yy72;
+yy73: switch(yych){
+ case '\'': goto yy75;
+ case '>': goto yy74;
+ default: goto yy72;
}
- if(yych <= '=') goto yy75;
- goto yy74;
yy74: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy61;
@@ -862,34 +847,34 @@ yy76: yyaccept = 0;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
goto yy77;
-yy77: if(yybm[0+yych] & 64) {
- goto yy76;
+yy77: switch(yych){
+ case 0x09:
+ case 0x0A: case 0x0D: case ' ': goto yy80;
+ case '"': goto yy78;
+ case '>': goto yy61;
+ default: goto yy76;
}
- if(yych <= '!') goto yy80;
- if(yych >= '#') goto yy61;
- goto yy78;
yy78: ++YYCURSOR;
- if(yybm[0+(yych = *YYCURSOR)] & 8) {
- yych = *YYCURSOR;
- goto yy66;
+ switch((yych = *YYCURSOR)) {
+ case 0x09:
+ case 0x0A: case 0x0D: case ' ': case '>': goto yy79;
+ default: goto yy66;
}
- goto yy79;
yy79:
{ handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; }
yy80: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy81;
-yy81: if(yybm[0+yych] & 128) {
- goto yy80;
+yy81: switch(yych){
+ case '"': goto yy82;
+ case '>': goto yy74;
+ default: goto yy80;
}
- if(yych >= '>') goto yy74;
- goto yy82;
yy82: ++YYCURSOR;
yych = *YYCURSOR;
goto yy79;
}
-}
stop:
diff --git a/ext/standard/url_scanner_ex.c.orig b/ext/standard/url_scanner_ex.c.orig
index 2e7e3fed6..083340973 100644
--- a/ext/standard/url_scanner_ex.c.orig
+++ b/ext/standard/url_scanner_ex.c.orig
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.11 on Sun Jan 1 14:39:52 2006 */
+/* Generated by re2c 0.9.11 on Tue Feb 28 09:38:22 2006 */
#line 1 "ext/standard/url_scanner_ex.re"
/*
+----------------------------------------------------------------------+
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: url_scanner_ex.c,v 1.95.2.3 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: url_scanner_ex.c,v 1.95.2.4 2006/02/28 14:45:18 iliaa Exp $ */
#include "php.h"
@@ -109,43 +109,8 @@ static inline void append_modified_url(smart_str *url, smart_str *dest, smart_st
q = (p = url->c) + url->len;
scan:
-{
- static unsigned char yybm[] = {
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 0, 128, 128, 128, 128, 0,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- };
-
-#line 149 "ext/standard/url_scanner_ex.c"
+
+#line 114 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
goto yy0;
@@ -153,43 +118,42 @@ scan:
yy0:
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if(yybm[0+yych] & 128) {
- goto yy8;
+ switch(yych){
+ case '#': goto yy6;
+ case ':': goto yy2;
+ case '?': goto yy4;
+ default: goto yy8;
}
- if(yych <= '9') goto yy6;
- if(yych >= ';') goto yy4;
- goto yy2;
yy2: ++YYCURSOR;
goto yy3;
yy3:
#line 115 "ext/standard/url_scanner_ex.re"
{ smart_str_append(dest, url); return; }
-#line 168 "ext/standard/url_scanner_ex.c"
+#line 133 "ext/standard/url_scanner_ex.c"
yy4: ++YYCURSOR;
goto yy5;
yy5:
#line 116 "ext/standard/url_scanner_ex.re"
{ sep = separator; goto scan; }
-#line 174 "ext/standard/url_scanner_ex.c"
+#line 139 "ext/standard/url_scanner_ex.c"
yy6: ++YYCURSOR;
goto yy7;
yy7:
#line 117 "ext/standard/url_scanner_ex.re"
{ bash = p - 1; goto done; }
-#line 180 "ext/standard/url_scanner_ex.c"
+#line 145 "ext/standard/url_scanner_ex.c"
yy8: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy9;
-yy9: if(yybm[0+yych] & 128) {
- goto yy8;
+yy9: switch(yych){
+ case '#': case ':': case '?': goto yy10;
+ default: goto yy8;
}
- goto yy10;
yy10:
#line 118 "ext/standard/url_scanner_ex.re"
{ goto scan; }
-#line 192 "ext/standard/url_scanner_ex.c"
-}
+#line 157 "ext/standard/url_scanner_ex.c"
}
#line 119 "ext/standard/url_scanner_ex.re"
@@ -359,43 +323,8 @@ state_plain_begin:
state_plain:
start = YYCURSOR;
-{
- static unsigned char yybm[] = {
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 0, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- };
-
-#line 399 "ext/standard/url_scanner_ex.c"
+
+#line 328 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
goto yy11;
@@ -403,72 +332,36 @@ state_plain:
yy11:
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if(yybm[0+yych] & 128) {
- goto yy15;
+ switch(yych){
+ case '<': goto yy13;
+ default: goto yy15;
}
- goto yy13;
yy13: ++YYCURSOR;
goto yy14;
yy14:
#line 287 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; }
-#line 416 "ext/standard/url_scanner_ex.c"
+#line 345 "ext/standard/url_scanner_ex.c"
yy15: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy16;
-yy16: if(yybm[0+yych] & 128) {
- goto yy15;
+yy16: switch(yych){
+ case '<': goto yy17;
+ default: goto yy15;
}
- goto yy17;
yy17:
#line 288 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); goto state_plain; }
-#line 428 "ext/standard/url_scanner_ex.c"
-}
+#line 357 "ext/standard/url_scanner_ex.c"
}
#line 289 "ext/standard/url_scanner_ex.re"
state_tag:
start = YYCURSOR;
-{
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
-#line 472 "ext/standard/url_scanner_ex.c"
+
+#line 365 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
goto yy18;
@@ -476,33 +369,131 @@ state_tag:
yy18:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if(yych <= '@') goto yy22;
- if(yych <= 'Z') goto yy20;
- if(yych <= '`') goto yy22;
- if(yych >= '{') goto yy22;
- goto yy20;
+ switch(yych){
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy20;
+ default: goto yy22;
+ }
yy20: ++YYCURSOR;
yych = *YYCURSOR;
goto yy25;
yy21:
#line 294 "ext/standard/url_scanner_ex.re"
{ handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; }
-#line 491 "ext/standard/url_scanner_ex.c"
+#line 433 "ext/standard/url_scanner_ex.c"
yy22: ++YYCURSOR;
goto yy23;
yy23:
#line 295 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); goto state_plain_begin; }
-#line 497 "ext/standard/url_scanner_ex.c"
+#line 439 "ext/standard/url_scanner_ex.c"
yy24: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy25;
-yy25: if(yybm[0+yych] & 128) {
- goto yy24;
+yy25: switch(yych){
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy24;
+ default: goto yy21;
}
- goto yy21;
-}
}
#line 296 "ext/standard/url_scanner_ex.re"
@@ -512,43 +503,8 @@ state_next_arg_begin:
state_next_arg:
start = YYCURSOR;
-{
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
-#line 552 "ext/standard/url_scanner_ex.c"
+
+#line 508 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
goto yy26;
@@ -556,102 +512,107 @@ state_next_arg:
yy26:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if(yych <= '='){
- if(yych <= 0x0B){
- if(yych <= 0x08) goto yy34;
- goto yy30;
- } else {
- if(yych == ' ') goto yy30;
- goto yy34;
- }
- } else {
- if(yych <= 'Z'){
- if(yych <= '>') goto yy28;
- if(yych <= '@') goto yy34;
- goto yy32;
- } else {
- if(yych <= '`') goto yy34;
- if(yych <= 'z') goto yy32;
- goto yy34;
- }
+ switch(yych){
+ case 0x09:
+ case 0x0A:
+ case 0x0B: case 0x0D: case ' ': goto yy30;
+ case '>': goto yy28;
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy32;
+ default: goto yy34;
}
yy28: ++YYCURSOR;
goto yy29;
yy29:
#line 304 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; }
-#line 584 "ext/standard/url_scanner_ex.c"
+#line 579 "ext/standard/url_scanner_ex.c"
yy30: ++YYCURSOR;
yych = *YYCURSOR;
goto yy37;
yy31:
#line 305 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); goto state_next_arg; }
-#line 591 "ext/standard/url_scanner_ex.c"
+#line 586 "ext/standard/url_scanner_ex.c"
yy32: ++YYCURSOR;
goto yy33;
yy33:
#line 306 "ext/standard/url_scanner_ex.re"
{ --YYCURSOR; STATE = STATE_ARG; goto state_arg; }
-#line 597 "ext/standard/url_scanner_ex.c"
+#line 592 "ext/standard/url_scanner_ex.c"
yy34: ++YYCURSOR;
goto yy35;
yy35:
#line 307 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); goto state_plain_begin; }
-#line 603 "ext/standard/url_scanner_ex.c"
+#line 598 "ext/standard/url_scanner_ex.c"
yy36: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy37;
-yy37: if(yybm[0+yych] & 128) {
- goto yy36;
+yy37: switch(yych){
+ case 0x09:
+ case 0x0A:
+ case 0x0B: case 0x0D: case ' ': goto yy36;
+ default: goto yy31;
}
- goto yy31;
-}
}
#line 308 "ext/standard/url_scanner_ex.re"
state_arg:
start = YYCURSOR;
-{
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
-#line 655 "ext/standard/url_scanner_ex.c"
+
+#line 616 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
goto yy38;
@@ -659,76 +620,139 @@ state_arg:
yy38:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if(yych <= '@') goto yy42;
- if(yych <= 'Z') goto yy40;
- if(yych <= '`') goto yy42;
- if(yych >= '{') goto yy42;
- goto yy40;
+ switch(yych){
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy40;
+ default: goto yy42;
+ }
yy40: ++YYCURSOR;
yych = *YYCURSOR;
goto yy45;
yy41:
#line 313 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; goto state_before_val; }
-#line 674 "ext/standard/url_scanner_ex.c"
+#line 684 "ext/standard/url_scanner_ex.c"
yy42: ++YYCURSOR;
goto yy43;
yy43:
#line 314 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; }
-#line 680 "ext/standard/url_scanner_ex.c"
+#line 690 "ext/standard/url_scanner_ex.c"
yy44: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy45;
-yy45: if(yybm[0+yych] & 128) {
- goto yy44;
+yy45: switch(yych){
+ case '-': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy44;
+ default: goto yy41;
}
- goto yy41;
-}
}
#line 315 "ext/standard/url_scanner_ex.re"
state_before_val:
start = YYCURSOR;
-{
- static unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
-#line 732 "ext/standard/url_scanner_ex.c"
+
+#line 756 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
@@ -737,91 +761,61 @@ state_before_val:
yy46:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
- if(yych == ' ') goto yy48;
- if(yych == '=') goto yy50;
- goto yy52;
+ switch(yych){
+ case ' ': goto yy48;
+ case '=': goto yy50;
+ default: goto yy52;
+ }
yy48: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == ' ') goto yy55;
- if(yych == '=') goto yy53;
- goto yy49;
+ switch(yych){
+ case ' ': goto yy55;
+ case '=': goto yy53;
+ default: goto yy49;
+ }
yy49:
#line 321 "ext/standard/url_scanner_ex.re"
{ --YYCURSOR; goto state_next_arg_begin; }
-#line 752 "ext/standard/url_scanner_ex.c"
+#line 780 "ext/standard/url_scanner_ex.c"
yy50: ++YYCURSOR;
yych = *YYCURSOR;
goto yy54;
yy51:
#line 320 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; }
-#line 759 "ext/standard/url_scanner_ex.c"
+#line 787 "ext/standard/url_scanner_ex.c"
yy52: yych = *++YYCURSOR;
goto yy49;
yy53: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy54;
-yy54: if(yybm[0+yych] & 128) {
- goto yy53;
+yy54: switch(yych){
+ case ' ': goto yy53;
+ default: goto yy51;
}
- goto yy51;
yy55: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy56;
-yy56: if(yych == ' ') goto yy55;
- if(yych == '=') goto yy53;
- goto yy57;
+yy56: switch(yych){
+ case ' ': goto yy55;
+ case '=': goto yy53;
+ default: goto yy57;
+ }
yy57: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy49;
}
}
-}
#line 322 "ext/standard/url_scanner_ex.re"
state_val:
start = YYCURSOR;
-{
- static unsigned char yybm[] = {
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 160, 160, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 160, 248, 56, 248, 248, 248, 248, 200,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 0, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- 248, 248, 248, 248, 248, 248, 248, 248,
- };
-
-#line 825 "ext/standard/url_scanner_ex.c"
+
+#line 819 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
@@ -830,31 +824,20 @@ state_val:
yy58:
if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
- if(yych <= '!'){
- if(yych <= 0x0A){
- if(yych <= 0x08) goto yy63;
- goto yy64;
- } else {
- if(yych == ' ') goto yy64;
- goto yy63;
- }
- } else {
- if(yych <= '\''){
- if(yych <= '"') goto yy60;
- if(yych <= '&') goto yy63;
- goto yy62;
- } else {
- if(yych == '>') goto yy64;
- goto yy63;
- }
+ switch(yych){
+ case 0x09:
+ case 0x0A: case 0x0D: case ' ': case '>': goto yy64;
+ case '"': goto yy60;
+ case '\'': goto yy62;
+ default: goto yy63;
}
yy60: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy77;
yy61:
#line 330 "ext/standard/url_scanner_ex.re"
-{ handle_val(STD_ARGS, 0, '\0'); goto state_next_arg_begin; }
-#line 858 "ext/standard/url_scanner_ex.c"
+{ handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; }
+#line 841 "ext/standard/url_scanner_ex.c"
yy62: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy69;
@@ -865,45 +848,47 @@ yy64: ++YYCURSOR;
yy65:
#line 331 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); goto state_next_arg_begin; }
-#line 869 "ext/standard/url_scanner_ex.c"
+#line 852 "ext/standard/url_scanner_ex.c"
yy66: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy67;
-yy67: if(yybm[0+yych] & 8) {
- goto yy66;
+yy67: switch(yych){
+ case 0x09:
+ case 0x0A: case 0x0D: case ' ': case '>': goto yy61;
+ default: goto yy66;
}
- goto yy61;
yy68: yyaccept = 0;
YYMARKER = ++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
goto yy69;
-yy69: if(yybm[0+yych] & 16) {
- goto yy68;
+yy69: switch(yych){
+ case 0x09:
+ case 0x0A: case 0x0D: case ' ': goto yy72;
+ case '\'': goto yy70;
+ case '>': goto yy61;
+ default: goto yy68;
}
- if(yych <= '&') goto yy72;
- if(yych >= '(') goto yy61;
- goto yy70;
yy70: ++YYCURSOR;
- if(yybm[0+(yych = *YYCURSOR)] & 8) {
- yych = *YYCURSOR;
- goto yy66;
+ switch((yych = *YYCURSOR)) {
+ case 0x09:
+ case 0x0A: case 0x0D: case ' ': case '>': goto yy71;
+ default: goto yy66;
}
- goto yy71;
yy71:
#line 329 "ext/standard/url_scanner_ex.re"
{ handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; }
-#line 898 "ext/standard/url_scanner_ex.c"
+#line 883 "ext/standard/url_scanner_ex.c"
yy72: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy73;
-yy73: if(yybm[0+yych] & 32) {
- goto yy72;
+yy73: switch(yych){
+ case '\'': goto yy75;
+ case '>': goto yy74;
+ default: goto yy72;
}
- if(yych <= '=') goto yy75;
- goto yy74;
yy74: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy61;
@@ -915,36 +900,36 @@ yy76: yyaccept = 0;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
goto yy77;
-yy77: if(yybm[0+yych] & 64) {
- goto yy76;
+yy77: switch(yych){
+ case 0x09:
+ case 0x0A: case 0x0D: case ' ': goto yy80;
+ case '"': goto yy78;
+ case '>': goto yy61;
+ default: goto yy76;
}
- if(yych <= '!') goto yy80;
- if(yych >= '#') goto yy61;
- goto yy78;
yy78: ++YYCURSOR;
- if(yybm[0+(yych = *YYCURSOR)] & 8) {
- yych = *YYCURSOR;
- goto yy66;
+ switch((yych = *YYCURSOR)) {
+ case 0x09:
+ case 0x0A: case 0x0D: case ' ': case '>': goto yy79;
+ default: goto yy66;
}
- goto yy79;
yy79:
#line 328 "ext/standard/url_scanner_ex.re"
{ handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; }
-#line 934 "ext/standard/url_scanner_ex.c"
+#line 920 "ext/standard/url_scanner_ex.c"
yy80: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy81;
-yy81: if(yybm[0+yych] & 128) {
- goto yy80;
+yy81: switch(yych){
+ case '"': goto yy82;
+ case '>': goto yy74;
+ default: goto yy80;
}
- if(yych >= '>') goto yy74;
- goto yy82;
yy82: ++YYCURSOR;
yych = *YYCURSOR;
goto yy79;
}
-}
#line 332 "ext/standard/url_scanner_ex.re"
diff --git a/ext/standard/url_scanner_ex.re b/ext/standard/url_scanner_ex.re
index c5d60a888..1108af54a 100644
--- a/ext/standard/url_scanner_ex.re
+++ b/ext/standard/url_scanner_ex.re
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: url_scanner_ex.re,v 1.76.2.1 2006/01/01 12:26:08 sniper Exp $ */
+/* $Id: url_scanner_ex.re,v 1.76.2.2 2006/02/28 14:45:18 iliaa Exp $ */
#include "php.h"
@@ -302,7 +302,7 @@ state_next_arg:
start = YYCURSOR;
/*!re2c
">" { passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; }
- [ \v\t\n]+ { passthru(STD_ARGS); goto state_next_arg; }
+ [ \v\r\t\n]+ { passthru(STD_ARGS); goto state_next_arg; }
alpha { --YYCURSOR; STATE = STATE_ARG; goto state_arg; }
any { passthru(STD_ARGS); goto state_plain_begin; }
*/
@@ -327,7 +327,7 @@ state_val:
/*!re2c
["] (any\[">])* ["] { handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; }
['] (any\['>])* ['] { handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; }
- (any\[ \t\n>])+ { handle_val(STD_ARGS, 0, '\0'); goto state_next_arg_begin; }
+ (any\[ \r\t\n>])+ { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; }
any { passthru(STD_ARGS); goto state_next_arg_begin; }
*/
diff --git a/ext/standard/user_filters.c b/ext/standard/user_filters.c
index d275f55e4..cffc28dda 100644
--- a/ext/standard/user_filters.c
+++ b/ext/standard/user_filters.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: user_filters.c,v 1.31.2.1 2006/01/01 12:50:15 sniper Exp $ */
+/* $Id: user_filters.c,v 1.31.2.4 2006/03/30 21:10:23 tony2001 Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -64,6 +64,15 @@ static zend_function_entry user_filter_class_funcs[] = {
static zend_class_entry user_filter_class_entry;
+static ZEND_RSRC_DTOR_FUNC(php_bucket_dtor)
+{
+ php_stream_bucket *bucket = (php_stream_bucket *)rsrc->ptr;
+ if (bucket) {
+ php_stream_bucket_delref(bucket TSRMLS_CC);
+ bucket = NULL;
+ }
+}
+
PHP_MINIT_FUNCTION(user_filters)
{
/* init the filter class ancestor */
@@ -83,7 +92,7 @@ PHP_MINIT_FUNCTION(user_filters)
/* Filters will dispose of their brigades */
le_bucket_brigade = zend_register_list_destructors_ex(NULL, NULL, PHP_STREAM_BRIGADE_RES_NAME, module_number);
/* Brigades will dispose of their buckets */
- le_bucket = zend_register_list_destructors_ex(NULL, NULL, PHP_STREAM_BUCKET_RES_NAME, module_number);
+ le_bucket = zend_register_list_destructors_ex(php_bucket_dtor, NULL, PHP_STREAM_BUCKET_RES_NAME, module_number);
if (le_bucket_brigade == FAILURE) {
return FAILURE;
@@ -406,7 +415,7 @@ static void php_stream_bucket_attach(int append, INTERNAL_FUNCTION_PARAMETERS)
if (!bucket->own_buf) {
bucket = php_stream_bucket_make_writeable(bucket TSRMLS_CC);
}
- if (bucket->buflen != Z_STRLEN_PP(pzdata)) {
+ if ((int)bucket->buflen != Z_STRLEN_PP(pzdata)) {
bucket->buf = perealloc(bucket->buf, Z_STRLEN_PP(pzdata), bucket->is_persistent);
bucket->buflen = Z_STRLEN_PP(pzdata);
}
@@ -418,6 +427,12 @@ static void php_stream_bucket_attach(int append, INTERNAL_FUNCTION_PARAMETERS)
} else {
php_stream_bucket_prepend(brigade, bucket TSRMLS_CC);
}
+ /* This is a hack necessary to accomodate situations where bucket is appended to the stream
+ * multiple times. See bug35916.phpt for reference.
+ */
+ if (bucket->refcount == 1) {
+ bucket->refcount++;
+ }
}
/* }}} */
diff --git a/ext/standard/var.c b/ext/standard/var.c
index 233f318c1..a1311a198 100644
--- a/ext/standard/var.c
+++ b/ext/standard/var.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: var.c,v 1.203.2.5 2006/01/01 12:50:16 sniper Exp $ */
+/* $Id: var.c,v 1.203.2.7 2006/04/05 02:28:06 iliaa Exp $ */
@@ -221,12 +221,44 @@ static int zval_array_element_dump(zval **zv, int num_args, va_list args, zend_h
return 0;
}
+static int zval_object_property_dump(zval **zv, int num_args, va_list args, zend_hash_key *hash_key)
+{
+ int level;
+ char *prop_name, *class_name;
+ TSRMLS_FETCH();
+
+ level = va_arg(args, int);
+
+ if (hash_key->nKeyLength ==0 ) { /* numeric key */
+ php_printf("%*c[%ld]=>\n", level + 1, ' ', hash_key->h);
+ } else { /* string key */
+ zend_unmangle_property_name_ex(hash_key->arKey, hash_key->nKeyLength, &class_name, &prop_name);
+ if (class_name) {
+ php_printf("%*c[\"%s", level + 1, ' ', prop_name);
+ if (class_name[0]=='*') {
+ ZEND_PUTS(":protected");
+ } else {
+ ZEND_PUTS(":private");
+ }
+ } else {
+ php_printf("%*c[\"%s", level + 1, ' ', hash_key->arKey);
+#ifdef ANDREY_0
+ ZEND_PUTS(":public");
+#endif
+ }
+ ZEND_PUTS("\"]=>\n");
+ }
+ php_debug_zval_dump(zv, level + 2 TSRMLS_CC);
+ return 0;
+}
+
PHPAPI void php_debug_zval_dump(zval **struc, int level TSRMLS_DC)
{
HashTable *myht = NULL;
char *class_name;
zend_uint class_name_len;
zend_class_entry *ce;
+ int (*zval_element_dump_func)(zval**, int, va_list, zend_hash_key*);
if (level > 1) {
php_printf("%*c", level - 1, ' ');
@@ -257,6 +289,7 @@ PHPAPI void php_debug_zval_dump(zval **struc, int level TSRMLS_DC)
return;
}
php_printf("%sarray(%d) refcount(%u){\n", COMMON, zend_hash_num_elements(myht), Z_REFCOUNT_PP(struc));
+ zval_element_dump_func = zval_array_element_dump;
goto head_done;
case IS_OBJECT:
myht = Z_OBJPROP_PP(struc);
@@ -268,9 +301,10 @@ PHPAPI void php_debug_zval_dump(zval **struc, int level TSRMLS_DC)
Z_OBJ_HANDLER(**struc, get_class_name)(*struc, &class_name, &class_name_len, 0 TSRMLS_CC);
php_printf("%sobject(%s)#%d (%d) refcount(%u){\n", COMMON, class_name, Z_OBJ_HANDLE_PP(struc), myht ? zend_hash_num_elements(myht) : 0, Z_REFCOUNT_PP(struc));
efree(class_name);
+ zval_element_dump_func = zval_object_property_dump;
head_done:
if (myht) {
- zend_hash_apply_with_arguments(myht, (apply_func_args_t) zval_array_element_dump, 1, level, (Z_TYPE_PP(struc) == IS_ARRAY ? 0 : 1));
+ zend_hash_apply_with_arguments(myht, (apply_func_args_t) zval_element_dump_func, 1, level, (Z_TYPE_PP(struc) == IS_ARRAY ? 0 : 1));
}
if (level > 1) {
php_printf("%*c", level-1, ' ');
@@ -781,10 +815,18 @@ static void php_var_serialize_intern(smart_str *buf, zval **struc, HashTable *va
if (zend_hash_get_current_data_ex(myht,
(void **) &data, &pos) != SUCCESS
|| !data
- || data == struc) {
+ || data == struc
+ || (Z_TYPE_PP(data) == IS_ARRAY && Z_ARRVAL_PP(data)->nApplyCount > 1)
+ ) {
smart_str_appendl(buf, "N;", 2);
} else {
+ if (Z_TYPE_PP(data) == IS_ARRAY) {
+ Z_ARRVAL_PP(data)->nApplyCount++;
+ }
php_var_serialize_intern(buf, data, var_hash TSRMLS_CC);
+ if (Z_TYPE_PP(data) == IS_ARRAY) {
+ Z_ARRVAL_PP(data)->nApplyCount--;
+ }
}
}
}
diff --git a/ext/tidy/php_tidy.def b/ext/tidy/php_tidy.def
index 0caabc01f..1c17276de 100644
--- a/ext/tidy/php_tidy.def
+++ b/ext/tidy/php_tidy.def
@@ -45,7 +45,6 @@ tidyOptGetCategory
tidyOptGetDefault
tidyOptGetDefaultInt
tidyOptGetDefaultBool
-tidyOptGetDoc
tidyOptGetPickList
tidyOptGetNextPick
tidyOptGetValue
diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c
index 1545688a2..2e0cdbffa 100644
--- a/ext/tidy/tidy.c
+++ b/ext/tidy/tidy.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: tidy.c,v 1.66.2.5 2006/01/01 12:50:16 sniper Exp $ */
+/* $Id: tidy.c,v 1.66.2.8 2006/04/19 21:47:20 nlopess Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -37,6 +37,11 @@
#include "tidy.h"
#include "buffio.h"
+/* compatibility with older versions of libtidy */
+#ifndef TIDY_CALL
+#define TIDY_CALL
+#endif
+
#define PHP_TIDY_MODULE_VERSION "2.0"
/* {{{ ext/tidy macros
@@ -333,22 +338,22 @@ zend_module_entry tidy_module_entry = {
ZEND_GET_MODULE(tidy)
#endif
-void *php_tidy_malloc(size_t len)
+void* TIDY_CALL php_tidy_malloc(size_t len)
{
return emalloc(len);
}
-void *php_tidy_realloc(void *buf, size_t len)
+void* TIDY_CALL php_tidy_realloc(void *buf, size_t len)
{
return erealloc(buf, len);
}
-void php_tidy_free(void *buf)
+void TIDY_CALL php_tidy_free(void *buf)
{
efree(buf);
}
-void php_tidy_panic(ctmbstr msg)
+void TIDY_CALL php_tidy_panic(ctmbstr msg)
{
TSRMLS_FETCH();
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Could not allocate memory for tidy! (Reason: %s)", (char *)msg);
@@ -530,8 +535,19 @@ static void tidy_object_free_storage(void *object TSRMLS_DC)
{
PHPTidyObj *intern = (PHPTidyObj *)object;
- zend_hash_destroy(intern->std.properties);
- FREE_HASHTABLE(intern->std.properties);
+#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1 && PHP_RELEASE_VERSION > 2) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1) || (PHP_MAJOR_VERSION > 5)
+ zend_object_std_dtor(&intern->std TSRMLS_CC);
+#else
+ if (intern->std.guards) {
+ zend_hash_destroy(intern->std.guards);
+ FREE_HASHTABLE(intern->std.guards);
+ }
+
+ if (intern->std.properties) {
+ zend_hash_destroy(intern->std.properties);
+ FREE_HASHTABLE(intern->std.properties);
+ }
+#endif
if (intern->ptdoc) {
intern->ptdoc->ref_count--;
@@ -555,10 +571,16 @@ static void tidy_object_new(zend_class_entry *class_type, zend_object_handlers *
intern = emalloc(sizeof(PHPTidyObj));
memset(intern, 0, sizeof(PHPTidyObj));
- intern->std.ce = class_type;
-
+#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1 && PHP_RELEASE_VERSION > 2) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1) || (PHP_MAJOR_VERSION > 5)
+ zend_object_std_init(&intern->std, class_type TSRMLS_CC);
+#else
ALLOC_HASHTABLE(intern->std.properties);
zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+
+ intern->std.ce = class_type;
+ intern->std.guards = NULL;
+#endif
+
zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
switch(objtype) {
@@ -983,7 +1005,7 @@ PHP_MINFO_FUNCTION(tidy)
php_info_print_table_start();
php_info_print_table_header(2, "Tidy support", "enabled");
php_info_print_table_row(2, "libTidy Release", (char *)tidyReleaseDate());
- php_info_print_table_row(2, "Extension Version", PHP_TIDY_MODULE_VERSION " ($Id: tidy.c,v 1.66.2.5 2006/01/01 12:50:16 sniper Exp $)");
+ php_info_print_table_row(2, "Extension Version", PHP_TIDY_MODULE_VERSION " ($Id: tidy.c,v 1.66.2.8 2006/04/19 21:47:20 nlopess Exp $)");
php_info_print_table_end();
DISPLAY_INI_ENTRIES();
diff --git a/ext/tokenizer/tests/002.phpt b/ext/tokenizer/tests/002.phpt
index c9a822b74..fad8f2ae7 100644
--- a/ext/tokenizer/tests/002.phpt
+++ b/ext/tokenizer/tests/002.phpt
@@ -21,40 +21,40 @@ foreach ($strings as $s) {
echo "Done\n";
?>
---EXPECT--
+--EXPECTF--
array(49) {
[0]=>
array(2) {
[0]=>
- int(367)
+ int(%d)
[1]=>
string(2) "<?"
}
[1]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[2]=>
array(2) {
[0]=>
- int(316)
+ int(%d)
[1]=>
string(4) "echo"
}
[3]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[4]=>
array(2) {
[0]=>
- int(305)
+ int(%d)
[1]=>
string(1) "1"
}
@@ -63,21 +63,21 @@ array(49) {
[6]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[7]=>
array(2) {
[0]=>
- int(301)
+ int(%d)
[1]=>
string(2) "if"
}
[8]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
@@ -86,7 +86,7 @@ array(49) {
[10]=>
array(2) {
[0]=>
- int(349)
+ int(%d)
[1]=>
string(5) "isset"
}
@@ -95,7 +95,7 @@ array(49) {
[12]=>
array(2) {
[0]=>
- int(309)
+ int(%d)
[1]=>
string(2) "$a"
}
@@ -106,28 +106,28 @@ array(49) {
[15]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[16]=>
array(2) {
[0]=>
- int(266)
+ int(%d)
[1]=>
string(5) "print"
}
[17]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[18]=>
array(2) {
[0]=>
- int(309)
+ int(%d)
[1]=>
string(2) "$a"
}
@@ -136,7 +136,7 @@ array(49) {
[20]=>
array(2) {
[0]=>
- int(305)
+ int(%d)
[1]=>
string(1) "1"
}
@@ -145,21 +145,21 @@ array(49) {
[22]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[23]=>
array(2) {
[0]=>
- int(309)
+ int(%d)
[1]=>
string(2) "$a"
}
[24]=>
array(2) {
[0]=>
- int(297)
+ int(%d)
[1]=>
string(2) "++"
}
@@ -168,21 +168,21 @@ array(49) {
[26]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[27]=>
array(2) {
[0]=>
- int(309)
+ int(%d)
[1]=>
string(2) "$a"
}
[28]=>
array(2) {
[0]=>
- int(296)
+ int(%d)
[1]=>
string(2) "--"
}
@@ -191,42 +191,42 @@ array(49) {
[30]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[31]=>
array(2) {
[0]=>
- int(309)
+ int(%d)
[1]=>
string(2) "$a"
}
[32]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[33]=>
array(2) {
[0]=>
- int(283)
+ int(%d)
[1]=>
string(2) "=="
}
[34]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[35]=>
array(2) {
[0]=>
- int(305)
+ int(%d)
[1]=>
string(1) "2"
}
@@ -235,42 +235,42 @@ array(49) {
[37]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[38]=>
array(2) {
[0]=>
- int(309)
+ int(%d)
[1]=>
string(2) "$a"
}
[39]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[40]=>
array(2) {
[0]=>
- int(281)
+ int(%d)
[1]=>
string(3) "==="
}
[41]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[42]=>
array(2) {
[0]=>
- int(305)
+ int(%d)
[1]=>
string(1) "2"
}
@@ -279,14 +279,14 @@ array(49) {
[44]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[45]=>
array(2) {
[0]=>
- int(304)
+ int(%d)
[1]=>
string(5) "endif"
}
@@ -295,14 +295,14 @@ array(49) {
[47]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[48]=>
array(2) {
[0]=>
- int(369)
+ int(%d)
[1]=>
string(2) "?>"
}
@@ -311,14 +311,14 @@ array(37) {
[0]=>
array(2) {
[0]=>
- int(367)
+ int(%d)
[1]=>
string(6) "<?php "
}
[1]=>
array(2) {
[0]=>
- int(327)
+ int(%d)
[1]=>
string(6) "switch"
}
@@ -327,7 +327,7 @@ array(37) {
[3]=>
array(2) {
[0]=>
- int(309)
+ int(%d)
[1]=>
string(2) "$a"
}
@@ -336,7 +336,7 @@ array(37) {
[5]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
@@ -345,28 +345,28 @@ array(37) {
[7]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[8]=>
array(2) {
[0]=>
- int(329)
+ int(%d)
[1]=>
string(4) "case"
}
[9]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[10]=>
array(2) {
[0]=>
- int(305)
+ int(%d)
[1]=>
string(1) "1"
}
@@ -375,14 +375,14 @@ array(37) {
[12]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[13]=>
array(2) {
[0]=>
- int(331)
+ int(%d)
[1]=>
string(5) "break"
}
@@ -391,14 +391,14 @@ array(37) {
[15]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[16]=>
array(2) {
[0]=>
- int(330)
+ int(%d)
[1]=>
string(7) "default"
}
@@ -407,14 +407,14 @@ array(37) {
[18]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[19]=>
array(2) {
[0]=>
- int(331)
+ int(%d)
[1]=>
string(5) "break"
}
@@ -423,7 +423,7 @@ array(37) {
[21]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
@@ -432,14 +432,14 @@ array(37) {
[23]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[24]=>
array(2) {
[0]=>
- int(318)
+ int(%d)
[1]=>
string(5) "while"
}
@@ -448,7 +448,7 @@ array(37) {
[26]=>
array(2) {
[0]=>
- int(309)
+ int(%d)
[1]=>
string(2) "$a"
}
@@ -457,7 +457,7 @@ array(37) {
[28]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
@@ -466,14 +466,14 @@ array(37) {
[30]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[31]=>
array(2) {
[0]=>
- int(300)
+ int(%d)
[1]=>
string(4) "exit"
}
@@ -482,7 +482,7 @@ array(37) {
[33]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
@@ -491,14 +491,14 @@ array(37) {
[35]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[36]=>
array(2) {
[0]=>
- int(369)
+ int(%d)
[1]=>
string(2) "?>"
}
@@ -507,42 +507,42 @@ array(48) {
[0]=>
array(2) {
[0]=>
- int(367)
+ int(%d)
[1]=>
string(2) "<?"
}
[1]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[2]=>
array(2) {
[0]=>
- int(365)
+ int(%d)
[1]=>
string(13) "/* comment */"
}
[3]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[4]=>
array(2) {
[0]=>
- int(301)
+ int(%d)
[1]=>
string(2) "if"
}
[5]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
@@ -551,35 +551,35 @@ array(48) {
[7]=>
array(2) {
[0]=>
- int(305)
+ int(%d)
[1]=>
string(1) "1"
}
[8]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[9]=>
array(2) {
[0]=>
- int(278)
+ int(%d)
[1]=>
string(2) "||"
}
[10]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[11]=>
array(2) {
[0]=>
- int(305)
+ int(%d)
[1]=>
string(1) "2"
}
@@ -588,7 +588,7 @@ array(48) {
[13]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
@@ -597,7 +597,7 @@ array(48) {
[15]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
@@ -606,21 +606,21 @@ array(48) {
[17]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[18]=>
array(2) {
[0]=>
- int(309)
+ int(%d)
[1]=>
string(2) "$a"
}
[19]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
@@ -629,21 +629,21 @@ array(48) {
[21]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[22]=>
array(2) {
[0]=>
- int(305)
+ int(%d)
[1]=>
string(1) "2"
}
[23]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
@@ -652,14 +652,14 @@ array(48) {
[25]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[26]=>
array(2) {
[0]=>
- int(305)
+ int(%d)
[1]=>
string(1) "1"
}
@@ -668,21 +668,21 @@ array(48) {
[28]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[29]=>
array(2) {
[0]=>
- int(309)
+ int(%d)
[1]=>
string(2) "$b"
}
[30]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
@@ -691,14 +691,14 @@ array(48) {
[32]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[33]=>
array(2) {
[0]=>
- int(305)
+ int(%d)
[1]=>
string(1) "3"
}
@@ -707,7 +707,7 @@ array(48) {
[35]=>
array(2) {
[0]=>
- int(305)
+ int(%d)
[1]=>
string(1) "2"
}
@@ -716,21 +716,21 @@ array(48) {
[37]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[38]=>
array(2) {
[0]=>
- int(309)
+ int(%d)
[1]=>
string(2) "$c"
}
[39]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
@@ -739,14 +739,14 @@ array(48) {
[41]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[42]=>
array(2) {
[0]=>
- int(305)
+ int(%d)
[1]=>
string(1) "4"
}
@@ -755,7 +755,7 @@ array(48) {
[44]=>
array(2) {
[0]=>
- int(305)
+ int(%d)
[1]=>
string(1) "2"
}
@@ -764,14 +764,14 @@ array(48) {
[46]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) " "
}
[47]=>
array(2) {
[0]=>
- int(369)
+ int(%d)
[1]=>
string(2) "?>"
}
@@ -780,7 +780,7 @@ array(1) {
[0]=>
array(2) {
[0]=>
- int(311)
+ int(%d)
[1]=>
string(17) "wrong syntax here"
}
diff --git a/ext/tokenizer/tests/003.phpt b/ext/tokenizer/tests/003.phpt
index 802728b97..66d088eec 100644
--- a/ext/tokenizer/tests/003.phpt
+++ b/ext/tokenizer/tests/003.phpt
@@ -25,7 +25,7 @@ array(1) {
[0]=>
array(2) {
[0]=>
- int(311)
+ int(%d)
[1]=>
string(1) "0"
}
@@ -34,7 +34,7 @@ array(1) {
[0]=>
array(2) {
[0]=>
- int(311)
+ int(%d)
[1]=>
string(2) "-1"
}
diff --git a/ext/tokenizer/tests/bug26463.phpt b/ext/tokenizer/tests/bug26463.phpt
index 8739c2a2b..c5d2148ea 100644
--- a/ext/tokenizer/tests/bug26463.phpt
+++ b/ext/tokenizer/tests/bug26463.phpt
@@ -20,7 +20,7 @@ array(19) {
[0]=>
array(2) {
[0]=>
- int(367)
+ int(%d)
[1]=>
string(6) "<?php
"
@@ -28,7 +28,7 @@ array(19) {
[1]=>
array(2) {
[0]=>
- int(309)
+ int(%d)
[1]=>
string(2) "$x"
}
@@ -37,7 +37,7 @@ array(19) {
[3]=>
array(2) {
[0]=>
- int(371)
+ int(%d)
[1]=>
string(6) "<<<DD
"
@@ -45,7 +45,7 @@ array(19) {
[4]=>
array(2) {
[0]=>
- int(307)
+ int(%d)
[1]=>
string(13) "jhdsjkfhjdsh
"
@@ -53,14 +53,14 @@ array(19) {
[5]=>
array(2) {
[0]=>
- int(372)
+ int(%d)
[1]=>
string(2) "DD"
}
[6]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) "
"
@@ -70,7 +70,7 @@ array(19) {
[8]=>
array(2) {
[0]=>
- int(315)
+ int(%d)
[1]=>
string(2) """"
}
@@ -79,7 +79,7 @@ array(19) {
[10]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) "
"
@@ -87,7 +87,7 @@ array(19) {
[11]=>
array(2) {
[0]=>
- int(309)
+ int(%d)
[1]=>
string(2) "$a"
}
@@ -96,7 +96,7 @@ array(19) {
[13]=>
array(2) {
[0]=>
- int(371)
+ int(%d)
[1]=>
string(8) "<<<DDDD
"
@@ -104,7 +104,7 @@ array(19) {
[14]=>
array(2) {
[0]=>
- int(307)
+ int(%d)
[1]=>
string(13) "jhdsjkfhjdsh
"
@@ -112,7 +112,7 @@ array(19) {
[15]=>
array(2) {
[0]=>
- int(372)
+ int(%d)
[1]=>
string(4) "DDDD"
}
@@ -121,7 +121,7 @@ array(19) {
[17]=>
array(2) {
[0]=>
- int(370)
+ int(%d)
[1]=>
string(1) "
"
@@ -129,7 +129,7 @@ array(19) {
[18]=>
array(2) {
[0]=>
- int(369)
+ int(%d)
[1]=>
string(2) "?>"
}
diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c
index d274f8519..ebc13866d 100644
--- a/ext/wddx/wddx.c
+++ b/ext/wddx/wddx.c
@@ -16,7 +16,11 @@
+----------------------------------------------------------------------+
*/
-/* $Id: wddx.c,v 1.119.2.8 2006/01/01 12:50:16 sniper Exp $ */
+/* $Id: wddx.c,v 1.119.2.11 2006/05/25 10:01:30 helly Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
#include "php.h"
@@ -35,6 +39,7 @@
#include "ext/standard/html.h"
#include "ext/standard/php_string.h"
#include "ext/date/php_date.h"
+#include "zend_globals.h"
#define WDDX_BUF_LEN 256
#define PHP_CLASS_NAME_VAR "php_class_name"
@@ -746,7 +751,7 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X
} else if (!strcmp(name, EL_CHAR)) {
int i;
- for (i = 0; atts[i]; i++) {
+ if (atts) for (i = 0; atts[i]; i++) {
if (!strcmp(atts[i], EL_CHAR_CODE) && atts[++i] && atts[i][0]) {
char tmp_buf[2];
@@ -766,7 +771,7 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X
} else if (!strcmp(name, EL_BOOLEAN)) {
int i;
- for (i = 0; atts[i]; i++) {
+ if (atts) for (i = 0; atts[i]; i++) {
if (!strcmp(atts[i], EL_VALUE) && atts[++i] && atts[i][0]) {
ent.type = ST_BOOLEAN;
SET_STACK_VARNAME;
@@ -807,7 +812,7 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X
} else if (!strcmp(name, EL_VAR)) {
int i;
- for (i = 0; atts[i]; i++) {
+ if (atts) for (i = 0; atts[i]; i++) {
if (!strcmp(atts[i], EL_NAME) && atts[++i] && atts[i][0]) {
char *decoded;
int decoded_len;
@@ -824,7 +829,7 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X
MAKE_STD_ZVAL(ent.data);
array_init(ent.data);
- for (i = 0; atts[i]; i++) {
+ if (atts) for (i = 0; atts[i]; i++) {
if (!strcmp(atts[i], "fieldNames") && atts[++i] && atts[i][0]) {
zval *tmp;
char *key;
@@ -864,7 +869,7 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X
ent.varname = NULL;
ent.data = NULL;
- for (i = 0; atts[i]; i++) {
+ if (atts) for (i = 0; atts[i]; i++) {
if (!strcmp(atts[i], EL_NAME) && atts[++i] && atts[i][0]) {
char *decoded;
int decoded_len;
diff --git a/ext/xml/xml.c b/ext/xml/xml.c
index e96daf640..d62052bb7 100644
--- a/ext/xml/xml.c
+++ b/ext/xml/xml.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: xml.c,v 1.157.2.3 2006/01/01 12:50:16 sniper Exp $ */
+/* $Id: xml.c,v 1.157.2.4 2006/02/02 21:43:09 tony2001 Exp $ */
#define IS_EXT_MODULE
@@ -1358,9 +1358,8 @@ PHP_FUNCTION(xml_parse_into_struct)
{
xml_parser *parser;
zval **pind, **data, **xdata, **info = 0;
- int argc, ret;
+ int ret;
- argc = ZEND_NUM_ARGS();
if (zend_get_parameters_ex(4, &pind, &data, &xdata,&info) == SUCCESS) {
zval_dtor(*info);
array_init(*info);
diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c
index d70fb9d93..1f764b49d 100644
--- a/ext/xmlreader/php_xmlreader.c
+++ b/ext/xmlreader/php_xmlreader.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xmlreader.c,v 1.13.2.8 2006/01/01 12:50:16 sniper Exp $ */
+/* $Id: php_xmlreader.c,v 1.13.2.14 2006/04/03 14:59:30 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -110,6 +110,40 @@ static int xmlreader_property_reader(xmlreader_object *obj, xmlreader_prop_handl
}
/* }}} */
+/* {{{ xmlreader_get_property_ptr_ptr */
+zval **xmlreader_get_property_ptr_ptr(zval *object, zval *member TSRMLS_DC)
+{
+ xmlreader_object *obj;
+ zval tmp_member;
+ zval **retval = NULL;
+ xmlreader_prop_handler *hnd;
+ zend_object_handlers *std_hnd;
+ int ret = FAILURE;
+
+ if (member->type != IS_STRING) {
+ tmp_member = *member;
+ zval_copy_ctor(&tmp_member);
+ convert_to_string(&tmp_member);
+ member = &tmp_member;
+ }
+
+ obj = (xmlreader_object *)zend_objects_get_address(object TSRMLS_CC);
+
+ if (obj->prop_handler != NULL) {
+ ret = zend_hash_find(obj->prop_handler, Z_STRVAL_P(member), Z_STRLEN_P(member)+1, (void **) &hnd);
+ }
+ if (ret == FAILURE) {
+ std_hnd = zend_get_std_object_handlers();
+ retval = std_hnd->get_property_ptr_ptr(object, member TSRMLS_CC);
+ }
+
+ if (member == &tmp_member) {
+ zval_dtor(member);
+ }
+ return retval;
+}
+/* }}} */
+
/* {{{ xmlreader_read_property */
zval *xmlreader_read_property(zval *object, zval *member, int type TSRMLS_DC)
{
@@ -343,9 +377,20 @@ void xmlreader_objects_free_storage(void *object TSRMLS_DC)
{
xmlreader_object *intern = (xmlreader_object *)object;
- zend_hash_destroy(intern->std.properties);
- FREE_HASHTABLE(intern->std.properties);
-
+#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1 && PHP_RELEASE_VERSION > 2) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1) || (PHP_MAJOR_VERSION > 5)
+ zend_object_std_dtor(&intern->std TSRMLS_CC);
+#else
+ if (intern->std.guards) {
+ zend_hash_destroy(intern->std.guards);
+ FREE_HASHTABLE(intern->std.guards);
+ }
+
+ if (intern->std.properties) {
+ zend_hash_destroy(intern->std.properties);
+ FREE_HASHTABLE(intern->std.properties);
+ }
+#endif
+
xmlreader_free_resources(intern);
efree(object);
@@ -360,15 +405,21 @@ zend_object_value xmlreader_objects_new(zend_class_entry *class_type TSRMLS_DC)
zval *tmp;
intern = emalloc(sizeof(xmlreader_object));
- intern->std.ce = class_type;
- intern->std.guards = NULL;
intern->ptr = NULL;
intern->input = NULL;
intern->schema = NULL;
intern->prop_handler = &xmlreader_prop_handlers;
+#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1 && PHP_RELEASE_VERSION > 2) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1) || (PHP_MAJOR_VERSION > 5)
+ zend_object_std_init(&intern->std, class_type TSRMLS_CC);
+#else
ALLOC_HASHTABLE(intern->std.properties);
zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+
+ intern->std.ce = class_type;
+ intern->std.guards = NULL;
+#endif
+
zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t) xmlreader_objects_free_storage, xmlreader_objects_clone TSRMLS_CC);
intern->handle = retval.handle;
@@ -405,7 +456,7 @@ static void php_xmlreader_string_arg(INTERNAL_FUNCTION_PARAMETERS, xmlreader_rea
xmlFree(retchar);
return;
} else {
- RETVAL_EMPTY_STRING();
+ RETVAL_NULL();
}
}
/* }}} */
@@ -537,7 +588,7 @@ Get value of an attribute at index from current element */
PHP_METHOD(xmlreader, getAttributeNo)
{
zval *id;
- int attr_pos;
+ long attr_pos;
char *retchar = NULL;
xmlreader_object *intern;
@@ -600,7 +651,8 @@ Indicates whether given property (one of the parser option constants) is set or
PHP_METHOD(xmlreader, getParserProperty)
{
zval *id;
- int property, retval = -1;
+ long property;
+ int retval = -1;
xmlreader_object *intern;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &property) == FAILURE) {
@@ -678,7 +730,8 @@ Returns TRUE on success and FALSE on failure */
PHP_METHOD(xmlreader, moveToAttributeNo)
{
zval *id;
- int attr_pos, retval;
+ long attr_pos;
+ int retval;
xmlreader_object *intern;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &attr_pos) == FAILURE) {
@@ -829,7 +882,7 @@ PHP_METHOD(xmlreader, open)
{
zval *id;
int source_len = 0;
- xmlreader_object *intern;
+ xmlreader_object *intern = NULL;
char *source, *valid_file = NULL;
char resolved_path[MAXPATHLEN + 1];
xmlTextReaderPtr reader = NULL;
@@ -951,7 +1004,7 @@ PHP_METHOD(xmlreader, XML)
{
zval *id;
int source_len = 0;
- xmlreader_object *intern;
+ xmlreader_object *intern = NULL;
char *source, *uri = NULL;
int resolved_path_len;
char *directory=NULL, resolved_path[MAXPATHLEN];
@@ -1096,7 +1149,7 @@ PHP_MINIT_FUNCTION(xmlreader)
memcpy(&xmlreader_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
xmlreader_object_handlers.read_property = xmlreader_read_property;
xmlreader_object_handlers.write_property = xmlreader_write_property;
- xmlreader_object_handlers.get_property_ptr_ptr = NULL;
+ xmlreader_object_handlers.get_property_ptr_ptr = xmlreader_get_property_ptr_ptr;
INIT_CLASS_ENTRY(ce, "XMLReader", xmlreader_functions);
ce.create_object = xmlreader_objects_new;
diff --git a/ext/xmlreader/tests/011.phpt b/ext/xmlreader/tests/011.phpt
new file mode 100644
index 000000000..be31bbe47
--- /dev/null
+++ b/ext/xmlreader/tests/011.phpt
@@ -0,0 +1,34 @@
+--TEST--
+XMLReader: libxml2 XML Reader, string data
+--SKIPIF--
+<?php if (!extension_loaded("xmlreader")) print "skip";
+$reader = new XMLReader();
+if (!method_exists($reader, 'readInnerXml')) print "skip";
+?>
+--FILE--
+<?php
+/* $Id: 011.phpt,v 1.2.2.2 2006/03/30 21:47:21 helly Exp $ */
+
+$xmlstring = '<?xml version="1.0" encoding="UTF-8"?>
+<books><book>test</book></books>';
+
+$reader = new XMLReader();
+$reader->XML($xmlstring);
+$reader->read();
+echo $reader->readInnerXml();
+echo "\n";
+$reader->close();
+
+
+$reader = new XMLReader();
+$reader->XML($xmlstring);
+$reader->read();
+echo $reader->readOuterXml();
+echo "\n";
+$reader->close();
+?>
+===DONE===
+--EXPECT--
+<book>test</book>
+<books><book>test</book></books>
+===DONE===
diff --git a/ext/xmlreader/tests/012.dtd b/ext/xmlreader/tests/012.dtd
new file mode 100755
index 000000000..b65412af0
--- /dev/null
+++ b/ext/xmlreader/tests/012.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT foo EMPTY>
+<!ATTLIST foo bar CDATA '' baz CDATA ''>
diff --git a/ext/xmlreader/tests/012.phpt b/ext/xmlreader/tests/012.phpt
new file mode 100755
index 000000000..ccd9d3b0b
--- /dev/null
+++ b/ext/xmlreader/tests/012.phpt
@@ -0,0 +1,69 @@
+--TEST--
+XMLReader: accessing empty and non existing attributes
+--SKIPIF--
+<?php if (!extension_loaded("xmlreader")) print "skip"; ?>
+--FILE--
+<?php
+/* $Id: 012.phpt,v 1.1.2.2 2006/03/30 21:47:21 helly Exp $ */
+
+$xmlstring =<<<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<foo bar=""/>
+EOF;
+
+$reader = new XMLReader();
+$reader->XML($xmlstring);
+$reader->read();
+var_dump($reader->getAttribute('bar'));
+var_dump($reader->getAttribute('baz'));
+$reader->close();
+
+$xmlstring =<<<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE foo SYSTEM "012.dtd">
+<foo bar=""/>
+EOF;
+
+$xmlstring = str_replace('012.dtd', dirname(__FILE__).'/012.dtd', $xmlstring);
+
+$reader = new XMLReader();
+$reader->XML($xmlstring);
+$reader->setParserProperty(XMLReader::DEFAULTATTRS, true);
+while($reader->read() && $reader->nodeType != XMLReader::ELEMENT);
+var_dump($reader->getAttribute('bar'));
+var_dump($reader->getAttribute('baz'));
+$reader->close();
+
+?>
+===FILE===
+<?php
+
+$reader = new XMLReader();
+$reader->open(dirname(__FILE__) . '/012.xml');
+//$reader->setParserProperty(XMLReader::DEFAULTATTRS, true);
+while($reader->read() && $reader->nodeType != XMLReader::ELEMENT);
+var_dump($reader->getAttribute('bar'));
+var_dump($reader->getAttribute('baz'));
+$reader->close();
+
+$reader = new XMLReader();
+$reader->open(dirname(__FILE__) . '/012.xml');
+$reader->setParserProperty(XMLReader::DEFAULTATTRS, true);
+while($reader->read() && $reader->nodeType != XMLReader::ELEMENT);
+var_dump($reader->getAttribute('bar'));
+var_dump($reader->getAttribute('baz'));
+$reader->close();
+
+?>
+===DONE===
+--EXPECT--
+string(0) ""
+NULL
+string(0) ""
+string(0) ""
+===FILE===
+string(0) ""
+NULL
+string(0) ""
+string(0) ""
+===DONE===
diff --git a/ext/xmlreader/tests/012.xml b/ext/xmlreader/tests/012.xml
new file mode 100755
index 000000000..5012bd5ef
--- /dev/null
+++ b/ext/xmlreader/tests/012.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE foo SYSTEM "012.dtd">
+<foo bar=""/>
diff --git a/ext/xmlreader/tests/bug36743.phpt b/ext/xmlreader/tests/bug36743.phpt
new file mode 100644
index 000000000..45747d49f
--- /dev/null
+++ b/ext/xmlreader/tests/bug36743.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #36743 (In a class extending XMLReader array properties are not writable)
+--FILE--
+<?php
+
+class Test extends XMLReader
+{
+ private $testArr = array();
+ public function __construct()
+ {
+ $this->testArr[] = 1;
+ var_dump($this->testArr);
+ }
+}
+
+$t = new test;
+
+echo "Done\n";
+?>
+--EXPECT--
+array(1) {
+ [0]=>
+ int(1)
+}
+Done
diff --git a/ext/xmlrpc/tests/bug37057.phpt b/ext/xmlrpc/tests/bug37057.phpt
new file mode 100644
index 000000000..0764d8af6
--- /dev/null
+++ b/ext/xmlrpc/tests/bug37057.phpt
@@ -0,0 +1,62 @@
+--TEST--
+Bug #37057 (xmlrpc_decode() may produce arrays with numeric string keys which are unaccessible)
+--FILE--
+<?php
+$response='<?xml version="1.0"?>
+<methodResponse>
+ <params>
+ <param>
+ <value>
+ <struct>
+ <member>
+ <name>50</name>
+ <value><string>0.29</string></value>
+ </member>
+ </struct>
+ </value>
+ </param>
+ </params>
+</methodResponse>';
+
+$retval=xmlrpc_decode($response);
+var_dump($retval);
+var_dump($retval["50"]);
+var_dump($retval[50]);
+
+$response='<?xml version="1.0"?>
+<methodResponse>
+ <params>
+ <param>
+ <value>
+ <struct>
+ <member>
+ <name>0</name>
+ <value><string>0.29</string></value>
+ </member>
+ </struct>
+ </value>
+ </param>
+ </params>
+</methodResponse>';
+
+$retval=xmlrpc_decode($response);
+var_dump($retval);
+var_dump($retval["0"]);
+var_dump($retval[0]);
+
+echo "Done\n";
+?>
+--EXPECT--
+array(1) {
+ [50]=>
+ string(4) "0.29"
+}
+string(4) "0.29"
+string(4) "0.29"
+array(1) {
+ [0]=>
+ string(4) "0.29"
+}
+string(4) "0.29"
+string(4) "0.29"
+Done
diff --git a/ext/xmlrpc/tests/bug38431.phpt b/ext/xmlrpc/tests/bug38431.phpt
new file mode 100644
index 000000000..288fe1041
--- /dev/null
+++ b/ext/xmlrpc/tests/bug38431.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #38431 (xmlrpc_get_type() crashes PHP on objects)
+--SKIPIF--
+<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
+--FILE--
+<?php
+
+var_dump(xmlrpc_get_type(new stdclass));
+var_dump(xmlrpc_get_type(array()));
+$var = array(1,2,3);
+var_dump(xmlrpc_get_type($var));
+$var = array("test"=>1,2,3);
+var_dump(xmlrpc_get_type($var));
+$var = array("test"=>1,"test2"=>2);
+var_dump(xmlrpc_get_type($var));
+
+echo "Done\n";
+?>
+--EXPECTF--
+string(5) "array"
+string(5) "array"
+string(5) "array"
+string(5) "mixed"
+string(6) "struct"
+Done
diff --git a/ext/xmlrpc/xmlrpc-epi-php.c b/ext/xmlrpc/xmlrpc-epi-php.c
index 6af8009de..9a043e59e 100644
--- a/ext/xmlrpc/xmlrpc-epi-php.c
+++ b/ext/xmlrpc/xmlrpc-epi-php.c
@@ -51,7 +51,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: xmlrpc-epi-php.c,v 1.39.2.4 2006/01/01 12:50:16 sniper Exp $ */
+/* $Id: xmlrpc-epi-php.c,v 1.39.2.7 2006/08/11 19:16:29 tony2001 Exp $ */
/**********************************************************************
* BUGS: *
@@ -300,7 +300,13 @@ static int add_zval(zval* list, const char* id, zval** val)
{
if (list && val) {
if (id) {
- return zend_hash_update(Z_ARRVAL_P(list), (char*) id, strlen(id) + 1, (void *) val, sizeof(zval **), NULL);
+ int id_len = strlen(id);
+ if (!(id_len > 1 && id[0] == '0') && is_numeric_string((char *)id, id_len, NULL, NULL, 0) == IS_LONG) {
+ long index = strtol(id, NULL, 0);
+ return zend_hash_index_update(Z_ARRVAL_P(list), index, (void *) val, sizeof(zval **), NULL);
+ } else {
+ return zend_hash_update(Z_ARRVAL_P(list), (char*) id, strlen(id) + 1, (void *) val, sizeof(zval **), NULL);
+ }
} else {
return zend_hash_next_index_insert(Z_ARRVAL_P(list), (void *) val, sizeof(zval **), NULL);
}
diff --git a/ext/xmlwriter/CREDITS b/ext/xmlwriter/CREDITS
index d3a9ebe1b..e40bc651a 100644
--- a/ext/xmlwriter/CREDITS
+++ b/ext/xmlwriter/CREDITS
@@ -1,3 +1,2 @@
XMLWriter
-Rob Richards
-Pierre-Alain Joye
+Rob Richards, Pierre-Alain Joye
diff --git a/ext/xmlwriter/php_xmlwriter.c b/ext/xmlwriter/php_xmlwriter.c
index d80afa148..72c035bd9 100644
--- a/ext/xmlwriter/php_xmlwriter.c
+++ b/ext/xmlwriter/php_xmlwriter.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xmlwriter.c,v 1.20.2.9 2006/01/01 12:50:16 sniper Exp $ */
+/* $Id: php_xmlwriter.c,v 1.20.2.12 2006/04/03 14:59:30 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -77,10 +77,20 @@ static void xmlwriter_object_free_storage(void *object TSRMLS_DC)
xmlwriter_free_resource_ptr(intern->xmlwriter_ptr TSRMLS_CC);
}
intern->xmlwriter_ptr = NULL;
+
+#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1 && PHP_RELEASE_VERSION > 2) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1) || (PHP_MAJOR_VERSION > 5)
+ zend_object_std_dtor(&intern->zo TSRMLS_CC);
+#else
+ if (intern->zo.guards) {
+ zend_hash_destroy(intern->zo.guards);
+ FREE_HASHTABLE(intern->zo.guards);
+ }
+
if (intern->zo.properties) {
zend_hash_destroy(intern->zo.properties);
FREE_HASHTABLE(intern->zo.properties);
}
+#endif
efree(intern);
}
@@ -96,11 +106,18 @@ PHP_XMLWRITER_API zend_object_value xmlwriter_object_new(zend_class_entry *class
intern = emalloc(sizeof(ze_xmlwriter_object));
memset(&intern->zo, 0, sizeof(zend_object));
- intern->zo.ce = class_type;
intern->xmlwriter_ptr = NULL;
-
+
+#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1 && PHP_RELEASE_VERSION > 2) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1) || (PHP_MAJOR_VERSION > 5)
+ zend_object_std_init(&intern->zo, class_type TSRMLS_CC);
+#else
ALLOC_HASHTABLE(intern->zo.properties);
zend_hash_init(intern->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+
+ intern->zo.ce = class_type;
+ intern->zo.guards = NULL;
+#endif
+
zend_hash_copy(intern->zo.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref,
(void *) &tmp, sizeof(zval *));
@@ -1615,7 +1632,7 @@ PHP_FUNCTION(xmlwriter_open_uri)
#ifdef ZEND_ENGINE_2
zval *this = getThis();
- ze_xmlwriter_object *ze_obj;
+ ze_xmlwriter_object *ze_obj = NULL;
#endif
#ifndef ZEND_ENGINE_2
@@ -1694,7 +1711,7 @@ PHP_FUNCTION(xmlwriter_open_memory)
#ifdef ZEND_ENGINE_2
zval *this = getThis();
- ze_xmlwriter_object *ze_obj;
+ ze_xmlwriter_object *ze_obj = NULL;
#endif
#ifdef ZEND_ENGINE_2
diff --git a/ext/xsl/php_xsl.c b/ext/xsl/php_xsl.c
index 91e392844..b176c2e97 100644
--- a/ext/xsl/php_xsl.c
+++ b/ext/xsl/php_xsl.c
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xsl.c,v 1.32.2.5 2006/01/01 12:50:17 sniper Exp $ */
+/* $Id: php_xsl.c,v 1.32.2.6 2006/03/29 14:28:43 tony2001 Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -80,8 +80,7 @@ void xsl_objects_free_storage(void *object TSRMLS_DC)
{
xsl_object *intern = (xsl_object *)object;
- zend_hash_destroy(intern->std.properties);
- FREE_HASHTABLE(intern->std.properties);
+ zend_object_std_dtor(&intern->std TSRMLS_CC);
zend_hash_destroy(intern->parameter);
FREE_HASHTABLE(intern->parameter);
@@ -119,8 +118,6 @@ zend_object_value xsl_objects_new(zend_class_entry *class_type TSRMLS_DC)
zval *tmp;
intern = emalloc(sizeof(xsl_object));
- intern->std.ce = class_type;
- intern->std.guards = NULL;
intern->ptr = NULL;
intern->prop_handler = NULL;
intern->parameter = NULL;
@@ -130,8 +127,7 @@ zend_object_value xsl_objects_new(zend_class_entry *class_type TSRMLS_DC)
intern->node_list = NULL;
intern->doc = NULL;
- ALLOC_HASHTABLE(intern->std.properties);
- zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ zend_object_std_init(&intern->std, class_type TSRMLS_CC);
zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
ALLOC_HASHTABLE(intern->parameter);
zend_hash_init(intern->parameter, 0, NULL, ZVAL_PTR_DTOR, 0);
diff --git a/ext/xsl/xsltprocessor.c b/ext/xsl/xsltprocessor.c
index 7fad460d9..58a903868 100644
--- a/ext/xsl/xsltprocessor.c
+++ b/ext/xsl/xsltprocessor.c
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: xsltprocessor.c,v 1.39.2.2 2006/01/01 12:50:17 sniper Exp $ */
+/* $Id: xsltprocessor.c,v 1.39.2.3 2006/06/14 09:43:22 chregu Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -231,8 +231,7 @@ static void xsl_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs, int t
}
break;
default:
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "php:function object type %d is not supported yet", obj->type);
- ZVAL_STRING(args[i], "", 0);
+ ZVAL_STRING(args[i], xmlXPathCastToString(obj), 1);
}
xmlXPathFreeObject(obj);
fci.params[i] = &args[i];