Version in base suite: 8.4.23-1~deb13u1 Base version: php8.4_8.4.23-1~deb13u1 Target version: php8.4_8.4.24-1~deb13u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/p/php8.4/php8.4_8.4.23-1~deb13u1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/p/php8.4/php8.4_8.4.24-1~deb13u1.dsc /srv/release.debian.org/tmp/cVq9930oF0/php8.4-8.4.24/ext/exif/tests/gh11020.jpg |binary /srv/release.debian.org/tmp/cVq9930oF0/php8.4-8.4.24/ext/phar/tests/tar/files/circular_symlinks.tar |binary /srv/release.debian.org/tmp/cVq9930oF0/php8.4-8.4.24/ext/phar/tests/tar/files/circular_symlinks_long.tar |binary /srv/release.debian.org/tmp/cVq9930oF0/php8.4-8.4.24/ext/phar/tests/tar/files/circular_symlinks_rho.tar |binary php8.4-8.4.24/.github/CODEOWNERS | 2 php8.4-8.4.24/.github/actions/apk/action.yml | 1 php8.4-8.4.24/.github/actions/apt-x64/action.yml | 1 php8.4-8.4.24/.github/actions/configure-alpine/action.yml | 2 php8.4-8.4.24/.github/workflows/test-suite.yml | 12 php8.4-8.4.24/EXTENSIONS | 4 php8.4-8.4.24/NEWS | 140 php8.4-8.4.24/Zend/Zend.m4 | 1 php8.4-8.4.24/Zend/zend.h | 2 php8.4-8.4.24/Zend/zend_ast.c | 26 php8.4-8.4.24/configure | 57 php8.4-8.4.24/configure.ac | 2 php8.4-8.4.24/debian/changelog | 9 php8.4-8.4.24/ext/bcmath/libbcmath/src/convert.c | 2 php8.4-8.4.24/ext/bcmath/libbcmath/src/convert.h | 2 php8.4-8.4.24/ext/bcmath/libbcmath/src/str2num.c | 1 php8.4-8.4.24/ext/bcmath/tests/GHSA-x692-q9x7-8c3f.phpt | 13 php8.4-8.4.24/ext/calendar/gregor.c | 1 php8.4-8.4.24/ext/calendar/julian.c | 1 php8.4-8.4.24/ext/calendar/tests/gh22602.phpt | 20 php8.4-8.4.24/ext/com_dotnet/com_com.c | 2 php8.4-8.4.24/ext/date/lib/parse_date.re | 4 php8.4-8.4.24/ext/date/lib/timelib.h | 6 php8.4-8.4.24/ext/date/lib/timelib_private.h | 2 php8.4-8.4.24/ext/date/lib/timezonedb.h | 4275 ++++------ php8.4-8.4.24/ext/date/lib/tm2unixtime.c | 31 php8.4-8.4.24/ext/date/lib/unixtime2tm.c | 27 php8.4-8.4.24/ext/date/php_date.c | 24 php8.4-8.4.24/ext/date/tests/bug-gh11310-1.phpt | 37 php8.4-8.4.24/ext/date/tests/bug-gh11310-2.phpt | 37 php8.4-8.4.24/ext/dba/libflatfile/flatfile.c | 64 php8.4-8.4.24/ext/dba/tests/dba_flatfile_oob.phpt | 31 php8.4-8.4.24/ext/dom/document.c | 4 php8.4-8.4.24/ext/dom/html5_parser.c | 2 php8.4-8.4.24/ext/dom/html5_parser.h | 2 php8.4-8.4.24/ext/dom/html5_serializer.c | 2 php8.4-8.4.24/ext/dom/html5_serializer.h | 2 php8.4-8.4.24/ext/dom/html_collection.c | 2 php8.4-8.4.24/ext/dom/html_collection.h | 2 php8.4-8.4.24/ext/dom/html_document.c | 2 php8.4-8.4.24/ext/dom/infra.c | 2 php8.4-8.4.24/ext/dom/infra.h | 2 php8.4-8.4.24/ext/dom/inner_html_mixin.c | 6 php8.4-8.4.24/ext/dom/internal_helpers.h | 2 php8.4-8.4.24/ext/dom/lexbor/lexbor/selectors-adapted/selectors.c | 2 php8.4-8.4.24/ext/dom/lexbor/lexbor/selectors-adapted/selectors.h | 2 php8.4-8.4.24/ext/dom/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch | 5 php8.4-8.4.24/ext/dom/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch | 5 php8.4-8.4.24/ext/dom/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch | 5 php8.4-8.4.24/ext/dom/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch | 5 php8.4-8.4.24/ext/dom/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch | 5 php8.4-8.4.24/ext/dom/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch | 5 php8.4-8.4.24/ext/dom/lexbor/patches/update-lexbor.sh | 8 php8.4-8.4.24/ext/dom/namespace_compat.c | 2 php8.4-8.4.24/ext/dom/namespace_compat.h | 2 php8.4-8.4.24/ext/dom/nodelist.h | 2 php8.4-8.4.24/ext/dom/parentnode/css_selectors.c | 2 php8.4-8.4.24/ext/dom/parentnode/tree.c | 2 php8.4-8.4.24/ext/dom/private_data.c | 2 php8.4-8.4.24/ext/dom/private_data.h | 2 php8.4-8.4.24/ext/dom/serialize_common.h | 2 php8.4-8.4.24/ext/dom/tests/modern/html/encoding/HTMLDocument_createFromFile_http_header.phpt | 2 php8.4-8.4.24/ext/dom/tests/modern/xml/gh22570.phpt | 42 php8.4-8.4.24/ext/dom/tests/xpath_php_function_removes_argument_node.phpt | 33 php8.4-8.4.24/ext/dom/token_list.c | 2 php8.4-8.4.24/ext/dom/token_list.h | 2 php8.4-8.4.24/ext/dom/xml_document.c | 2 php8.4-8.4.24/ext/dom/xml_serializer.c | 16 php8.4-8.4.24/ext/dom/xml_serializer.h | 2 php8.4-8.4.24/ext/dom/xpath_callbacks.c | 18 php8.4-8.4.24/ext/dom/xpath_callbacks.h | 2 php8.4-8.4.24/ext/exif/exif.c | 10 php8.4-8.4.24/ext/exif/tests/bug72094.phpt | 2 php8.4-8.4.24/ext/exif/tests/gh11020.phpt | 12 php8.4-8.4.24/ext/ftp/ftp.c | 57 php8.4-8.4.24/ext/ftp/ftp.h | 1 php8.4-8.4.24/ext/ftp/php_ftp.c | 30 php8.4-8.4.24/ext/ftp/tests/bug80901.phpt | 2 php8.4-8.4.24/ext/ftp/tests/ftp_close_during_transfer.phpt | 44 php8.4-8.4.24/ext/ftp/tests/ftp_get_ascii_crlf_boundary.phpt | 25 php8.4-8.4.24/ext/ftp/tests/ftp_nb_close_during_transfer.phpt | 44 php8.4-8.4.24/ext/ftp/tests/ftp_nb_get_during_nb_transfer.phpt | 44 php8.4-8.4.24/ext/ftp/tests/ftp_nb_get_during_transfer.phpt | 40 php8.4-8.4.24/ext/ftp/tests/server.inc | 7 php8.4-8.4.24/ext/gd/gd.c | 2 php8.4-8.4.24/ext/gd/libgd/gd_gif_in.c | 6 php8.4-8.4.24/ext/gd/tests/gh19666.phpt | 4 php8.4-8.4.24/ext/gd/tests/gh19739.phpt | 4 php8.4-8.4.24/ext/gd/tests/imageloadfont_short_read.phpt | 67 php8.4-8.4.24/ext/hash/hash.c | 20 php8.4-8.4.24/ext/hash/hash_adler32.c | 1 php8.4-8.4.24/ext/hash/hash_crc32.c | 3 php8.4-8.4.24/ext/hash/hash_fnv.c | 4 php8.4-8.4.24/ext/hash/hash_gost.c | 6 php8.4-8.4.24/ext/hash/hash_haval.c | 2 php8.4-8.4.24/ext/hash/hash_joaat.c | 1 php8.4-8.4.24/ext/hash/hash_md.c | 9 php8.4-8.4.24/ext/hash/hash_murmur.c | 3 php8.4-8.4.24/ext/hash/hash_ripemd.c | 12 php8.4-8.4.24/ext/hash/hash_sha.c | 21 php8.4-8.4.24/ext/hash/hash_sha3.c | 6 php8.4-8.4.24/ext/hash/hash_snefru.c | 3 php8.4-8.4.24/ext/hash/hash_tiger.c | 3 php8.4-8.4.24/ext/hash/hash_whirlpool.c | 3 php8.4-8.4.24/ext/hash/hash_xxhash.c | 8 php8.4-8.4.24/ext/hash/php_hash.h | 18 php8.4-8.4.24/ext/iconv/tests/bug48147.phpt | 32 php8.4-8.4.24/ext/iconv/tests/bug52211.phpt | 16 php8.4-8.4.24/ext/iconv/tests/bug76249.phpt | 21 php8.4-8.4.24/ext/iconv/tests/eucjp2iso2022jp.phpt | 10 php8.4-8.4.24/ext/iconv/tests/iconv_mime_encode.phpt | 10 php8.4-8.4.24/ext/intl/collator/collator_create.c | 4 php8.4-8.4.24/ext/intl/collator/collator_sort.c | 23 php8.4-8.4.24/ext/intl/intl_convertcpp.cpp | 4 php8.4-8.4.24/ext/intl/locale/locale_methods.c | 18 php8.4-8.4.24/ext/intl/spoofchecker/spoofchecker_create.c | 8 php8.4-8.4.24/ext/intl/tests/collator_double_ctor.phpt | 16 php8.4-8.4.24/ext/intl/tests/collator_sort_modify_during_compare.phpt | 36 php8.4-8.4.24/ext/intl/tests/intlchar_reset_error.phpt | 19 php8.4-8.4.24/ext/intl/tests/locale_lookup_invalid_language_tag.phpt | 35 php8.4-8.4.24/ext/intl/tests/spoofchecker_double_ctor.phpt | 18 php8.4-8.4.24/ext/intl/uchar/uchar.c | 46 php8.4-8.4.24/ext/ldap/ldap.c | 1 php8.4-8.4.24/ext/ldap/tests/ldap_sort_control_missing_attr.phpt | 30 php8.4-8.4.24/ext/libxml/mime_sniff.c | 4 php8.4-8.4.24/ext/odbc/php_odbc.c | 21 php8.4-8.4.24/ext/odbc/php_odbc_includes.h | 1 php8.4-8.4.24/ext/odbc/tests/config.inc | 2 php8.4-8.4.24/ext/odbc/tests/gh22668.phpt | 33 php8.4-8.4.24/ext/opcache/ZendAccelerator.c | 2 php8.4-8.4.24/ext/opcache/jit/zend_jit_ir.c | 2 php8.4-8.4.24/ext/opcache/tests/gh21770.phpt | 25 php8.4-8.4.24/ext/opcache/tests/jit/gh22158.phpt | 33 php8.4-8.4.24/ext/opcache/tests/preload_gh21770.inc | 20 php8.4-8.4.24/ext/openssl/openssl.c | 15 php8.4-8.4.24/ext/openssl/tests/openssl_pkcs12_read_array_init.phpt | 23 php8.4-8.4.24/ext/openssl/tests/stream_supplemental_read_timeout.phpt | 90 php8.4-8.4.24/ext/openssl/xp_ssl.c | 12 php8.4-8.4.24/ext/pdo_dblib/dblib_driver.c | 12 php8.4-8.4.24/ext/pdo_firebird/firebird_driver.c | 6 php8.4-8.4.24/ext/pdo_odbc/odbc_driver.c | 8 php8.4-8.4.24/ext/pdo_odbc/odbc_stmt.c | 20 php8.4-8.4.24/ext/pdo_odbc/php_pdo_odbc_int.h | 1 php8.4-8.4.24/ext/pdo_odbc/tests/config.inc | 3 php8.4-8.4.24/ext/pdo_odbc/tests/gh22665.phpt | 32 php8.4-8.4.24/ext/pdo_odbc/tests/gh22666.phpt | 30 php8.4-8.4.24/ext/pdo_odbc/tests/gh22667.phpt | 32 php8.4-8.4.24/ext/pgsql/pgsql.c | 3 php8.4-8.4.24/ext/pgsql/tests/10pg_convert_9.phpt | 18 php8.4-8.4.24/ext/pgsql/tests/10pg_convert_json_array.phpt | 4 php8.4-8.4.24/ext/pgsql/tests/12pg_insert_9.phpt | 2 php8.4-8.4.24/ext/pgsql/tests/14pg_update_9.phpt | 2 php8.4-8.4.24/ext/pgsql/tests/GHSA-7qpv-r5mr-78m4.phpt | 58 php8.4-8.4.24/ext/pgsql/tests/bug64609.phpt | 2 php8.4-8.4.24/ext/pgsql/tests/bug68638.phpt | 2 php8.4-8.4.24/ext/phar/dirstream.c | 4 php8.4-8.4.24/ext/phar/phar_internal.h | 25 php8.4-8.4.24/ext/phar/phar_object.c | 45 php8.4-8.4.24/ext/phar/tests/phar_magic_dir_prefix.phpt | 80 php8.4-8.4.24/ext/phar/tests/tar/ghsa-vc5h-9ppw-p5f3-symlink-circular.phpt | 27 php8.4-8.4.24/ext/phar/tests/zip/zip_extra_underflow.phpt | 91 php8.4-8.4.24/ext/phar/util.c | 63 php8.4-8.4.24/ext/phar/zip.c | 52 php8.4-8.4.24/ext/posix/posix.c | 40 php8.4-8.4.24/ext/reflection/php_reflection.c | 115 php8.4-8.4.24/ext/reflection/tests/ReflectionConstant_null_byte_value.phpt | 14 php8.4-8.4.24/ext/reflection/tests/ReflectionParameter_leading_backslash.phpt | 17 php8.4-8.4.24/ext/reflection/tests/gh22441.phpt | 44 php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionClassConstant_doc_comment.phpt | 44 php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionClass_doc_comment.phpt | 37 php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionConstant_name.phpt | 15 php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionEnum_case_doc_comment.phpt | 46 php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionExtension_ini_value.phpt | 23 php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionFunctionAbstract_doc_comment.phpt | 36 php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionProperty_doc_comment.phpt | 44 php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionProperty_dynamic_name.phpt | 37 php8.4-8.4.24/ext/session/mod_user.c | 18 php8.4-8.4.24/ext/session/php_session.h | 1 php8.4-8.4.24/ext/session/session.c | 21 php8.4-8.4.24/ext/session/tests/user_session_module/recursive_handler_argv_leak.phpt | 31 php8.4-8.4.24/ext/shmop/shmop.c | 3 php8.4-8.4.24/ext/snmp/snmp.c | 1 php8.4-8.4.24/ext/snmp/tests/snmp_resolve_fail_leak.phpt | 16 php8.4-8.4.24/ext/soap/php_http.c | 6 php8.4-8.4.24/ext/soap/soap.c | 4 php8.4-8.4.24/ext/soap/tests/bugs/protocol_relative_redirect.phpt | 49 php8.4-8.4.24/ext/sockets/conversions.c | 2 php8.4-8.4.24/ext/sockets/tests/gh21161.phpt | 1 php8.4-8.4.24/ext/sockets/tests/socket_cmsg_rights.phpt | 2 php8.4-8.4.24/ext/sockets/tests/socket_sendmsg_scm_rights_object.phpt | 77 php8.4-8.4.24/ext/sodium/libsodium.c | 7 php8.4-8.4.24/ext/sodium/tests/pwhash_memlimit_below_min.phpt | 27 php8.4-8.4.24/ext/spl/php_spl.c | 18 php8.4-8.4.24/ext/spl/spl_directory.c | 4 php8.4-8.4.24/ext/spl/spl_iterators.c | 19 php8.4-8.4.24/ext/spl/tests/class_parents_leading_backslash.phpt | 72 php8.4-8.4.24/ext/spl/tests/gh16217.phpt | 35 php8.4-8.4.24/ext/spl/tests/recursiveiteratoriterator_next_during_endchildren.phpt | 42 php8.4-8.4.24/ext/spl/tests/recursiveiteratoriterator_next_during_valid.phpt | 47 php8.4-8.4.24/ext/spl/tests/recursiveiteratoriterator_rewind_during_next.phpt | 41 php8.4-8.4.24/ext/spl/tests/spl_autoload_leading_backslash.phpt | 18 php8.4-8.4.24/ext/standard/array.c | 27 php8.4-8.4.24/ext/standard/filters.c | 2 php8.4-8.4.24/ext/standard/fsock.c | 6 php8.4-8.4.24/ext/standard/image.c | 3 php8.4-8.4.24/ext/standard/math.c | 3 php8.4-8.4.24/ext/standard/proc_open.c | 7 php8.4-8.4.24/ext/standard/streamsfuncs.c | 5 php8.4-8.4.24/ext/standard/tests/array/gh22678.phpt | 48 php8.4-8.4.24/ext/standard/tests/assert/gh22290.phpt | 39 php8.4-8.4.24/ext/standard/tests/filters/gh22360.phpt | 24 php8.4-8.4.24/ext/standard/tests/general_functions/proc_open_fd_leak_on_setup_failure.phpt | 20 php8.4-8.4.24/ext/standard/tests/image/getimagesizefromstring_iff_overflow.phpt | 24 php8.4-8.4.24/ext/standard/tests/math/gh22395.phpt | 11 php8.4-8.4.24/ext/standard/tests/streams/gh22617.phpt | 45 php8.4-8.4.24/ext/zend_test/observer.c | 5 php8.4-8.4.24/ext/zend_test/php_test.h | 1 php8.4-8.4.24/ext/zip/php_zip.c | 42 php8.4-8.4.24/ext/zip/tests/bug_gh21705.phpt | 33 php8.4-8.4.24/ext/zip/tests/gh22649.phpt | 55 php8.4-8.4.24/main/php_version.h | 6 php8.4-8.4.24/main/streams/php_streams_int.h | 4 php8.4-8.4.24/main/streams/streams.c | 21 php8.4-8.4.24/sapi/phpdbg/phpdbg_bp.c | 4 php8.4-8.4.24/sapi/phpdbg/phpdbg_lexer.c | 1094 +- php8.4-8.4.24/sapi/phpdbg/phpdbg_lexer.l | 7 php8.4-8.4.24/sapi/phpdbg/phpdbg_utils.c | 17 php8.4-8.4.24/sapi/phpdbg/tests/gh17387.phpt | 8 php8.4-8.4.24/sapi/phpdbg/tests/phpdbg_resolve_opline_break_leak.phpt | 26 233 files changed, 6188 insertions(+), 3297 deletions(-) dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmp_fko8xl7/php8.4_8.4.23-1~deb13u1.dsc: no acceptable signature found dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmp_fko8xl7/php8.4_8.4.24-1~deb13u1.dsc: no acceptable signature found diff -Nru php8.4-8.4.23/.github/CODEOWNERS php8.4-8.4.24/.github/CODEOWNERS --- php8.4-8.4.23/.github/CODEOWNERS 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/.github/CODEOWNERS 2026-07-29 05:29:50.000000000 +0000 @@ -43,6 +43,7 @@ /ext/pdo_pgsql @devnexen @SakiTakamachi /ext/pdo_sqlite @SakiTakamachi /ext/pgsql @devnexen +/ext/phar @LamentXU123 /ext/random @TimWolla @zeriyoshi /ext/reflection @DanielEScherzer /ext/session @Girgias @@ -55,6 +56,7 @@ /ext/xmlreader @devnexen /ext/xmlwriter @devnexen /ext/xsl @devnexen +/ext/zip @LamentXU123 /main @bukka /sapi/fpm @bukka /Zend/Optimizer @dstogov diff -Nru php8.4-8.4.23/.github/actions/apk/action.yml php8.4-8.4.24/.github/actions/apk/action.yml --- php8.4-8.4.23/.github/actions/apk/action.yml 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/.github/actions/apk/action.yml 2026-07-29 05:29:50.000000000 +0000 @@ -28,7 +28,6 @@ curl-dev \ freetype-dev \ gettext-dev \ - gnu-libiconv-dev \ gmp-dev \ icu-dev \ icu-data-full \ diff -Nru php8.4-8.4.23/.github/actions/apt-x64/action.yml php8.4-8.4.24/.github/actions/apt-x64/action.yml --- php8.4-8.4.23/.github/actions/apt-x64/action.yml 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/.github/actions/apt-x64/action.yml 2026-07-29 05:29:50.000000000 +0000 @@ -63,6 +63,7 @@ snmp-mibs-downloader \ freetds-dev \ unixodbc-dev \ + libsqliteodbc \ llvm \ clang \ dovecot-core \ diff -Nru php8.4-8.4.23/.github/actions/configure-alpine/action.yml php8.4-8.4.24/.github/actions/configure-alpine/action.yml --- php8.4-8.4.23/.github/actions/configure-alpine/action.yml 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/.github/actions/configure-alpine/action.yml 2026-07-29 05:29:50.000000000 +0000 @@ -43,7 +43,7 @@ --enable-pcntl \ --with-readline \ --enable-mbstring \ - --with-iconv=/usr \ + --with-iconv \ --with-curl \ --with-gettext \ --enable-sockets \ diff -Nru php8.4-8.4.23/.github/workflows/test-suite.yml php8.4-8.4.24/.github/workflows/test-suite.yml --- php8.4-8.4.23/.github/workflows/test-suite.yml 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/.github/workflows/test-suite.yml 2026-07-29 05:29:50.000000000 +0000 @@ -16,6 +16,7 @@ name: LINUX_PPC64_ASAN_DEBUG_ZTS # This runs on a self-hosted runner; see https://wiki.php.net/systems/ci runs-on: [self-hosted, gentoo, ppc64] + timeout-minutes: 180 steps: - name: git checkout uses: actions/checkout@v6 @@ -55,6 +56,7 @@ if: ${{ fromJson(inputs.branch).jobs.ALPINE }} name: ALPINE_X64_ASAN_DEBUG_ZTS runs-on: ubuntu-24.04 + timeout-minutes: 180 container: image: 'alpine:3.22' steps: @@ -130,6 +132,7 @@ matrix: ${{ fromJson(inputs.branch).jobs.LINUX_X64.matrix }} name: "LINUX_X64${{ matrix.name }}_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}" runs-on: ubuntu-${{ fromJson(inputs.branch).config.ubuntu_version }} + timeout-minutes: 180 steps: - name: git checkout uses: actions/checkout@v6 @@ -166,7 +169,7 @@ ${{ matrix.variation && 'CFLAGS="-DZEND_RC_DEBUG=1 -DPROFITABILITY_CHECKS=0 -DZEND_VERIFY_FUNC_INFO=1 -DZEND_VERIFY_TYPE_INFERENCE"' || '' }} ${{ (matrix.variation && fromJson(inputs.branch).jobs.LINUX_X64.config.variation_enable_zend_max_execution_timers) && '--enable-zend-max-execution-timers' || '' }} --${{ matrix.debug && 'enable' || 'disable' }}-debug - ${{ matrix.debug && 'CXXFLAGS="-D_GLIBCXX_ASSERTIONS"' || '' }} + ${{ (matrix.variation || matrix.debug) && format('CXXFLAGS="{0} {1}"', matrix.variation && '-DZEND_VERIFY_TYPE_INFERENCE' || '', matrix.debug && '-D_GLIBCXX_ASSERTIONS' || '') || '' }} --${{ matrix.zts && 'enable' || 'disable' }}-zts asan: ${{ matrix.asan && 'true' || 'false' }} skipSlow: ${{ (matrix.asan && !inputs.all_variations) && 'true' || 'false' }} @@ -228,6 +231,7 @@ matrix: ${{ fromJson(inputs.branch).jobs.LINUX_X32.matrix }} name: "LINUX_X32_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}" runs-on: ubuntu-latest + timeout-minutes: 180 container: image: ubuntu:${{ fromJson(inputs.branch).config.ubuntu_version }} env: @@ -309,6 +313,7 @@ matrix: ${{ fromJson(inputs.branch).jobs.MACOS.matrix }} name: "MACOS_${{ matrix.arch }}_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}" runs-on: macos-${{ matrix.arch == 'X64' && '15-intel' || fromJson(inputs.branch).jobs.MACOS.config.arm64_version }} + timeout-minutes: 180 steps: - name: git checkout uses: actions/checkout@v6 @@ -386,6 +391,7 @@ FIREBIRD_USER: test FIREBIRD_PASSWORD: test runs-on: ubuntu-24.04 + timeout-minutes: 180 steps: - name: git checkout uses: actions/checkout@v6 @@ -642,6 +648,7 @@ FIREBIRD_PASSWORD: test name: OPCACHE_VARIATION runs-on: ubuntu-${{ fromJson(inputs.branch).config.ubuntu_version }} + timeout-minutes: 180 steps: - name: git checkout uses: actions/checkout@v6 @@ -705,6 +712,7 @@ if: ${{ fromJson(inputs.branch).jobs.MSAN }} name: MSAN runs-on: ubuntu-${{ fromJson(inputs.branch).config.ubuntu_version }} + timeout-minutes: 180 steps: - name: git checkout uses: actions/checkout@v6 @@ -796,6 +804,7 @@ if: ${{ fromJson(inputs.branch).jobs.LIBMYSQLCLIENT }} name: LIBMYSQLCLIENT runs-on: ubuntu-${{ fromJson(inputs.branch).config.ubuntu_version }} + timeout-minutes: 180 steps: - name: git checkout uses: actions/checkout@v6 @@ -834,6 +843,7 @@ matrix: ${{ fromJson(inputs.branch).jobs.WINDOWS.matrix }} name: "WINDOWS_${{ matrix.x64 && 'X64' || 'X86' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}${{ matrix.asan && '_ASAN' || ''}}${{ matrix.clang && '_CLANG' || ''}}" runs-on: ${{ fromJson(inputs.branch).jobs.WINDOWS.config.runs_on }} + timeout-minutes: 180 env: PHP_BUILD_CACHE_BASE_DIR: C:\build-cache PHP_BUILD_OBJ_DIR: C:\obj diff -Nru php8.4-8.4.23/EXTENSIONS php8.4-8.4.24/EXTENSIONS --- php8.4-8.4.23/EXTENSIONS 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/EXTENSIONS 2026-07-29 05:29:50.000000000 +0000 @@ -402,6 +402,7 @@ Marcus Börger (2008 - 2008) Steph Fox (2008 - 2008) Bishop Bettini (2018 - 2019) + Weilin Du (2026 - 2026) MAINTENANCE: Maintained STATUS: Working SINCE: 5.3 @@ -499,7 +500,8 @@ ------------------------------------------------------------------------------- EXTENSION: zip PRIMARY MAINTAINER: Pierre-Alain Joye (2006 - 2011) - Remi Collet (2013-2020) + Remi Collet (2013 - 2020) + Weilin Du (2026 - 2026) MAINTENANCE: Maintained STATUS: Working ------------------------------------------------------------------------------- diff -Nru php8.4-8.4.23/NEWS php8.4-8.4.24/NEWS --- php8.4-8.4.23/NEWS 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/NEWS 2026-07-29 05:29:50.000000000 +0000 @@ -1,10 +1,138 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -03 Jul 2026, PHP 8.4.23 +30 Jul 2026, PHP 8.4.24 + +- BCMath: + . Fixed GHSA-x692-q9x7-8c3f (Out-of-bounds write in bccomp()). + (CVE-2026-17544) (Recep Asan) + +- Calendar: + . Fixed bug GH-22602 (gregoriantojd() and juliantojd() integer overflow with + INT_MAX year). (arshidkv12) + +- Date: + . Update timelib to 2022.17. (Derick) + . Fixed bug GH-19803 (Parsing a string with a single white space does create + an error). (Derick) + . Fixed Unix timestamps in February of the year 0 are misparsed with + @-notation. (LukasGelbmann) + . Fixed bug GH-11310 (__debugInfo does nothing on userland classes extending + Date classes). (Derick) + +- DBA: + . Fixed OOB read on malformed length field in dba flatfile handler. (alhudz) + +- DOM: + . Fixed bug GH-22570 (Stack overflow when serializing a deeply nested + Dom\XMLDocument). (iliaal) + +- Exif: + . Fixed bug GH-11020 (exif_read_data() emits a spurious "Illegal IFD size" + warning when an IFD is not followed by a next-IFD offset). (Eyüp Can Akman) + +- GD: + . Upgrade libgd. (CVE-2026-9672) (Pierre Joye) + +- Hash: + . Fixed bug GH-18173 (ext/hash relies on implementation-defined malloc + alignment). (iliaal) + +- Intl: + . Fixed Locale::lookup() and locale_lookup() to return NULL instead of the + fallback locale when a language tag cannot be canonicalized. (Weilin Du) + . Fixed memory leaks when calling Collator::__construct() or + Spoofchecker::__construct() twice. (Weilin Du) + . Fixed IntlChar methods leaving stale global error state after successful + calls. (Xuyang Zhang) + +- ODBC: + . Fixed bug GH-22668 (Heap buffer over-read when a column value exceeds the + driver-reported display size). (iliaal) + +- OpenSSL: + . Fixed timeout for supplemental read at end of a blocking stream in SSL + stream wrapper. (ilutov) + +- PDO_ODBC: + . Fixed bug GH-20726 (Crash with ODBC connection pooling when the DSN + carries no credentials). (iliaal) + . Fixed bug GH-22667 (Heap buffer over-read when a column value exceeds the + driver-reported display size). (iliaal) + . Fixed bug GH-22666 (Heap buffer overflow when an output parameter value is + longer than the declared maxlen). (iliaal) + . Fixed bug GH-22665 (Out-of-bounds write when the ODBC driver reports a + diagnostic message length beyond the error buffer). (iliaal) + +- PGSQL: + . Fixed GHSA-7qpv-r5mr-78m4 (SQL injection via E'...' backslash breakout). + (CVE-2026-17543) (ilutov) + +- Phar: + . Fixed inconsistent handling of the magic ".phar" directory. Paths such as + "/.phar" remain protected, while non-magic paths that merely start with + ".phar" are handled consistently across file and directory creation, + copying, ArrayAccess, stream lookup, directory iteration and extraction. + (Weilin Du) + . Fixed GHSA-vc5h-9ppw-p5f3 (Crash via recursive symlinks). (CVE-2026-7260) + (Jakub Zelenka) + +- PHPDBG: + . Fixed bug GH-17387 (Trivial crash in phpdbg lexer). (iliaal) + . Fixed fleaked lowercased lookup keys in phpdbg_resolve_opline_break. + (jorgsowa) + . Fixed off-by-one in phpdbg_safe_class_lookup() causing class lookups to + always fail during phpdbg's signal-safe interruption path. (jorgsowa) + +- Reflection: + . Fixed bug GH-22324 (Ignore leading namespace separator in + ReflectionParameter::__construct()). (jorgsowa) + . Fixed bug GH-22441 (ReflectionClass::hasProperty() and getProperty() ignore + dynamic properties shadowing a private parent property). (iliaal) + . Fixed bug GH-22658 (ReflectionConstant::__toString() with a string value + with null bytes truncates output). (DanielEScherzer) + . Fixed bug GH-22681 (Reflection*::__toString() truncates on null bytes). + (DanielEScherzer) + +- Session: + . Fixed bug GH-21314 (Different session garbage collector behavior between + PHP 8.3 and PHP 8.5). (jorgsowa) + +- SPL: + . Fix class_parents for classes with leading slash in non-autoload mode. + (jorgsowa) + . Ignore leading back-slash in class_parents(), class_implements(), and + class_uses(). (jorgsowa) + . Fixed bug GH-16217 (SplFileObject::fputcsv() on an uninitialized object + segfaults). (iliaal) + +- Standard: + . Fixed bug GH-22360 (convert.base64-encode corruption on + incremental flush). (David Carlier) + . Fixed bug GH-22395 (base_convert() outputs at most 64 characters). + (Weilin Du) + . Fixed integer overflow in getimagesize() and getimagesizefromstring() + when parsing an IFF chunk with a size of INT_MAX. (David Carlier, Weilin Du) + . Fixed bug GH-22678 (Use-after-free in array_multisort() when the comparator + mutates the array being sorted). (azchin, iliaal) + +- Streams: + . Fixed bug GH-22617 (persistent stream keys truncated at null bytes, causing + distinct abstract unix domain sockets to share a resource). (David Carlier) + +- Zip: + . Fixed bug GH-22649 (ZipArchive::setCommentName() and setCommentIndex() + could crash after overwriting an entry and resetting its inherited + unchanged comment). (Weilin Du) + . Fixed bug GH-21705 (ZipArchive::getFromIndex() ignores + ZipArchive::FL_UNCHANGED for deleted entries). (Weilin Du) + +02 Jul 2026, PHP 8.4.23 - Core: . Fixed bug GH-22280 (Incorrect compile error for goto to label preceding try/finally block). (Pratik Bhujel) + . Fixed bug GH-22290 (AST pretty printing does not correctly handle strings + containing NUL). (iliaal) - BCMath: . Fixed issues with oversized allocations and signed overflow in bcround() @@ -48,15 +176,19 @@ - Opcache: . Fixed bug GH-20469 (Unsafe inheritance cache replay with reentrant autoloading). (Levi Morrison) + . Fixed bug GH-22158 (Tracing JIT dispatches the observer begin handler + through the wrong run_time_cache slot on megamorphic calls). (ptondereau, + iliaal) - OpenSSL: . Fixed bug GH-22187 (Memory corruption (zend_mm_heap corrupted) in - openssl_encrypt with AES-WRAP-PAD). (David Carlier) + openssl_encrypt with AES-WRAP-PAD). (CVE-2026-14355) (David Carlier) - Phar: . Fixed a bypass of the magic ".phar" directory protection in Phar::addEmptyDir() for paths starting with "/.phar", while allowing non-magic directory names that merely share the ".phar" prefix. (Weilin Du) + . Fixed an integer underflow when parsing ZIP extra fields. (Weilin Du) - Reflection: . Preserve class-name case in ReflectionClass::getProperty() error messages @@ -173,6 +305,8 @@ . Fixed bug GH-21593 (Borked function JIT JMPNZ smart branch). (ilutov) . Fixed bug GH-21460 (COND optimization regression). (Dmitry, Arnaud) . Fixed faulty returns out of zend_try block in zend_jit_trace(). (ilutov) + . Fixed bug GH-21770 (Infinite recursion in property hook getter in opcache + preloaded trait). (iliaal) - OpenSSL: . Fix a bunch of memory leaks and crashes on edge cases. (ndossche) @@ -222,7 +356,7 @@ - Streams: . Fixed bug GH-21468 (Segfault in file_get_contents w/ a https URL - and a proxy set). (ndossche) + and a proxy set). (CVE-2026-12184) (ndossche) - XSL: . Fixed bug GH-21600 (Segfault on module shutdown). (David Carlier) diff -Nru php8.4-8.4.23/Zend/Zend.m4 php8.4-8.4.24/Zend/Zend.m4 --- php8.4-8.4.23/Zend/Zend.m4 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/Zend/Zend.m4 2026-07-29 05:29:50.000000000 +0000 @@ -317,6 +317,7 @@ while ((*ip)()); FP = orig_fp; IP = orig_ip; + return 0; }], [])], [php_cv_have_global_register_vars=yes], [php_cv_have_global_register_vars=no]) diff -Nru php8.4-8.4.23/Zend/zend.h php8.4-8.4.24/Zend/zend.h --- php8.4-8.4.23/Zend/zend.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/Zend/zend.h 2026-07-29 05:29:50.000000000 +0000 @@ -20,7 +20,7 @@ #ifndef ZEND_H #define ZEND_H -#define ZEND_VERSION "4.4.23" +#define ZEND_VERSION "4.4.24" #define ZEND_ENGINE_3 diff -Nru php8.4-8.4.23/Zend/zend_ast.c php8.4-8.4.24/Zend/zend_ast.c --- php8.4-8.4.23/Zend/zend_ast.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/Zend/zend_ast.c 2026-07-29 05:29:50.000000000 +0000 @@ -1328,6 +1328,23 @@ } } +static ZEND_COLD void zend_ast_export_quoted_str(smart_str *str, zend_string *s) +{ + size_t i; + + for (i = 0; i < ZSTR_LEN(s); i++) { + if ((unsigned char) ZSTR_VAL(s)[i] < ' ') { + smart_str_appendc(str, '"'); + zend_ast_export_qstr(str, '"', s); + smart_str_appendc(str, '"'); + return; + } + } + smart_str_appendc(str, '\''); + zend_ast_export_str(str, s); + smart_str_appendc(str, '\''); +} + static ZEND_COLD void zend_ast_export_indent(smart_str *str, int indent) { while (indent > 0) { @@ -1612,9 +1629,7 @@ str, Z_DVAL_P(zv), (int) EG(precision), /* zero_fraction */ true); break; case IS_STRING: - smart_str_appendc(str, '\''); - zend_ast_export_str(str, Z_STR_P(zv)); - smart_str_appendc(str, '\''); + zend_ast_export_quoted_str(str, Z_STR_P(zv)); break; case IS_ARRAY: { zend_long idx; @@ -1629,9 +1644,8 @@ smart_str_appends(str, ", "); } if (key) { - smart_str_appendc(str, '\''); - zend_ast_export_str(str, key); - smart_str_appends(str, "' => "); + zend_ast_export_quoted_str(str, key); + smart_str_appends(str, " => "); } else { smart_str_append_long(str, idx); smart_str_appends(str, " => "); diff -Nru php8.4-8.4.23/configure php8.4-8.4.24/configure --- php8.4-8.4.23/configure 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/configure 2026-07-29 05:29:50.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.73 for PHP 8.4.23. +# Generated by GNU Autoconf 2.73 for PHP 8.4.24. # # Report bugs to . # @@ -802,8 +802,8 @@ # Identity of this package. PACKAGE_NAME='PHP' PACKAGE_TARNAME='php' -PACKAGE_VERSION='8.4.23' -PACKAGE_STRING='PHP 8.4.23' +PACKAGE_VERSION='8.4.24' +PACKAGE_STRING='PHP 8.4.24' PACKAGE_BUGREPORT='https://github.com/php/php-src/issues' PACKAGE_URL='https://www.php.net' @@ -1858,7 +1858,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures PHP 8.4.23 to adapt to many kinds of systems. +'configure' configures PHP 8.4.24 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1930,7 +1930,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of PHP 8.4.23:";; + short | recursive ) echo "Configuration of PHP 8.4.24:";; esac cat <<\_ACEOF @@ -2435,7 +2435,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -PHP configure 8.4.23 +PHP configure 8.4.24 generated by GNU Autoconf 2.73 Copyright (C) 2026 Free Software Foundation, Inc. @@ -3192,7 +3192,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by PHP $as_me 8.4.23, which was +It was created by PHP $as_me 8.4.24, which was generated by GNU Autoconf 2.73. Invocation command line was $ $0$ac_configure_args_raw @@ -4533,7 +4533,7 @@ ac_IFS=$IFS; IFS="." -set $(echo 8.4.23 | "${SED}" 's/\([0-9\.]*\)\(.*\)/\1\.\2/') +set $(echo 8.4.24 | "${SED}" 's/\([0-9\.]*\)\(.*\)/\1\.\2/') IFS=$ac_IFS PHP_MAJOR_VERSION=$1 PHP_MINOR_VERSION=$2 @@ -83022,6 +83022,7 @@ while ((*ip)()); FP = orig_fp; IP = orig_ip; + return 0; } int main (void) @@ -85196,7 +85197,7 @@ ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 85199 "configure"' > conftest.$ac_ext + echo '#line 85200 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -86671,7 +86672,7 @@ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat > conftest.$ac_ext <&5) + (eval echo "\"configure:86837: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "configure:86840: \$? = $ac_status" >&5 + echo "configure:86841: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -87133,11 +87134,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"configure:87136: $lt_compile\"" >&5) + (eval echo "\"configure:87137: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "configure:87140: \$? = $ac_status" >&5 + echo "configure:87141: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -87241,11 +87242,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"configure:87244: $lt_compile\"" >&5) + (eval echo "\"configure:87245: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "configure:87248: \$? = $ac_status" >&5 + echo "configure:87249: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -87706,7 +87707,7 @@ # Determine the default libpath from the value encoded in an empty executable. cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <&5) + (eval echo "\"configure:91797: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "configure:91800: \$? = $ac_status" >&5 + echo "configure:91801: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -91901,11 +91902,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"configure:91904: $lt_compile\"" >&5) + (eval echo "\"configure:91905: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "configure:91908: \$? = $ac_status" >&5 + echo "configure:91909: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -94133,7 +94134,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by PHP $as_me 8.4.23, which was +This file was extended by PHP $as_me 8.4.24, which was generated by GNU Autoconf 2.73. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -94202,7 +94203,7 @@ cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -PHP config.status 8.4.23 +PHP config.status 8.4.24 configured by $0, generated by GNU Autoconf 2.73, with options \\"\$ac_cs_config\\" diff -Nru php8.4-8.4.23/configure.ac php8.4-8.4.24/configure.ac --- php8.4-8.4.23/configure.ac 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/configure.ac 2026-07-29 05:29:50.000000000 +0000 @@ -17,7 +17,7 @@ dnl ---------------------------------------------------------------------------- AC_PREREQ([2.68]) -AC_INIT([PHP],[8.4.23],[https://github.com/php/php-src/issues],[php],[https://www.php.net]) +AC_INIT([PHP],[8.4.24],[https://github.com/php/php-src/issues],[php],[https://www.php.net]) AC_CONFIG_SRCDIR([main/php_version.h]) AC_CONFIG_AUX_DIR([build]) AC_PRESERVE_HELP_ORDER diff -Nru php8.4-8.4.23/debian/changelog php8.4-8.4.24/debian/changelog --- php8.4-8.4.23/debian/changelog 2026-07-03 12:26:56.000000000 +0000 +++ php8.4-8.4.24/debian/changelog 2026-07-31 05:11:11.000000000 +0000 @@ -1,3 +1,12 @@ +php8.4 (8.4.24-1~deb13u1) trixie-security; urgency=high + + * New upstream version 8.4.24 (Closes: #1143153) + + [CVE-2026-17544]: Out-of-bounds write in bccomp() + + [CVE-2026-17543]: SQL injection via E'...' backslash breakout + + [CVE-2026-7260]: Crash via recursive symlinks + + -- Ondřej Surý Fri, 31 Jul 2026 07:11:11 +0200 + php8.4 (8.4.23-1~deb13u1) trixie-security; urgency=high * New upstream version 8.4.23 diff -Nru php8.4-8.4.23/ext/bcmath/libbcmath/src/convert.c php8.4-8.4.24/ext/bcmath/libbcmath/src/convert.c --- php8.4-8.4.23/ext/bcmath/libbcmath/src/convert.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/bcmath/libbcmath/src/convert.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/bcmath/libbcmath/src/convert.h php8.4-8.4.24/ext/bcmath/libbcmath/src/convert.h --- php8.4-8.4.23/ext/bcmath/libbcmath/src/convert.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/bcmath/libbcmath/src/convert.h 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/bcmath/libbcmath/src/str2num.c php8.4-8.4.24/ext/bcmath/libbcmath/src/str2num.c --- php8.4-8.4.23/ext/bcmath/libbcmath/src/str2num.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/bcmath/libbcmath/src/str2num.c 2026-07-29 05:29:50.000000000 +0000 @@ -181,6 +181,7 @@ if (str_scale > 0) { const char *fractional_new_end = bc_skip_zero_reverse(fractional_end, fractional_ptr); str_scale -= fractional_end - fractional_new_end; /* fractional_end >= fractional_new_end */ + fractional_end = fractional_new_end; } } } else { diff -Nru php8.4-8.4.23/ext/bcmath/tests/GHSA-x692-q9x7-8c3f.phpt php8.4-8.4.24/ext/bcmath/tests/GHSA-x692-q9x7-8c3f.phpt --- php8.4-8.4.23/ext/bcmath/tests/GHSA-x692-q9x7-8c3f.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/bcmath/tests/GHSA-x692-q9x7-8c3f.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,13 @@ +--TEST-- +GHSA-x692-q9x7-8c3f: bccomp() out-of-bounds write +--CREDITS-- +Recep Asan (recepasan) +--FILE-- + +--EXPECT-- +int(1) diff -Nru php8.4-8.4.23/ext/calendar/gregor.c php8.4-8.4.24/ext/calendar/gregor.c --- php8.4-8.4.23/ext/calendar/gregor.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/calendar/gregor.c 2026-07-29 05:29:50.000000000 +0000 @@ -209,6 +209,7 @@ /* check for invalid dates */ if (inputYear == 0 || inputYear < -4714 || + inputYear > INT_MAX - 4800 || inputMonth <= 0 || inputMonth > 12 || inputDay <= 0 || inputDay > 31) { return (0); diff -Nru php8.4-8.4.23/ext/calendar/julian.c php8.4-8.4.24/ext/calendar/julian.c --- php8.4-8.4.23/ext/calendar/julian.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/calendar/julian.c 2026-07-29 05:29:50.000000000 +0000 @@ -222,6 +222,7 @@ /* check for invalid dates */ if (inputYear == 0 || inputYear < -4713 || + inputYear > INT_MAX - 4800 || inputMonth <= 0 || inputMonth > 12 || inputDay <= 0 || inputDay > 31) { return (0); diff -Nru php8.4-8.4.23/ext/calendar/tests/gh22602.phpt php8.4-8.4.24/ext/calendar/tests/gh22602.phpt --- php8.4-8.4.23/ext/calendar/tests/gh22602.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/calendar/tests/gh22602.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,20 @@ +--TEST-- +Bug GH-22602: (gregoriantojd() and juliantojd() integer overflow with INT_MAX year) +--EXTENSIONS-- +calendar +--FILE-- + 2147483647 ? 2147483647 : PHP_INT_MAX; +$min = PHP_INT_MAX > 2147483647 ? -2147483648 : PHP_INT_MIN; + +var_dump(gregoriantojd(5, 5, $max)); +var_dump(gregoriantojd(5, 5, $min)); +var_dump(juliantojd(5, 5, 2147483647)); +var_dump(juliantojd(5, 5, -2147483647)); + +?> +--EXPECT-- +int(0) +int(0) +int(0) +int(0) diff -Nru php8.4-8.4.23/ext/com_dotnet/com_com.c php8.4-8.4.24/ext/com_dotnet/com_com.c --- php8.4-8.4.23/ext/com_dotnet/com_com.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/com_dotnet/com_com.c 2026-07-29 05:29:50.000000000 +0000 @@ -321,7 +321,7 @@ IDispatch_Release(obj); } if (unk) { - IUnknown_Release(obj); + IUnknown_Release(unk); } efree(module); } diff -Nru php8.4-8.4.23/ext/date/lib/parse_date.re php8.4-8.4.24/ext/date/lib/parse_date.re --- php8.4-8.4.23/ext/date/lib/parse_date.re 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/date/lib/parse_date.re 2026-07-29 05:29:50.000000000 +0000 @@ -555,7 +555,6 @@ int len = 0; /* Skip over non-numeric chars */ - while (((**ptr < '0') || (**ptr > '9')) && (**ptr != '+') && (**ptr != '-')) { if (**ptr == '\0') { add_error(s, TIMELIB_ERR_UNEXPECTED_DATA, "Found unexpected data"); @@ -569,6 +568,7 @@ str[0] = '+'; /* First position is the sign */ str_ptr = str + 1; + while ((**ptr == '+') || (**ptr == '-')) { if (**ptr == '-') { str[0] = str[0] == '+' ? '-' : '+'; @@ -2020,7 +2020,7 @@ in.errors->error_messages = NULL; if (len > 0) { - while (isspace((unsigned char)*s) && s < e) { + while (isspace((unsigned char)*s) && s <= e) { s++; } while (isspace((unsigned char)*e) && e > s) { diff -Nru php8.4-8.4.23/ext/date/lib/timelib.h php8.4-8.4.24/ext/date/lib/timelib.h --- php8.4-8.4.23/ext/date/lib/timelib.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/date/lib/timelib.h 2026-07-29 05:29:50.000000000 +0000 @@ -30,9 +30,9 @@ # include "timelib_config.h" #endif -#define TIMELIB_VERSION 202215 -#define TIMELIB_EXTENDED_VERSION 20221501 -#define TIMELIB_ASCII_VERSION "2022.15" +#define TIMELIB_VERSION 202217 +#define TIMELIB_EXTENDED_VERSION 20221701 +#define TIMELIB_ASCII_VERSION "2022.17" #include #include diff -Nru php8.4-8.4.23/ext/date/lib/timelib_private.h php8.4-8.4.24/ext/date/lib/timelib_private.h --- php8.4-8.4.23/ext/date/lib/timelib_private.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/date/lib/timelib_private.h 2026-07-29 05:29:50.000000000 +0000 @@ -135,6 +135,7 @@ #ifndef TIMELIB_HAVE_BUILTIN_SADDLL_OVERFLOW # define TIMELIB_HAVE_BUILTIN_SADDLL_OVERFLOW 0 #endif + struct _ttinfo { int32_t offset; @@ -165,6 +166,7 @@ #endif /* From unixtime2tm.c */ +void timelib_date_from_epoch_days(timelib_sll epoch_days, timelib_sll *y, timelib_sll *m, timelib_sll *d); int timelib_apply_localtime(timelib_time *t, unsigned int localtime); /* From parse_posix.c */ diff -Nru php8.4-8.4.23/ext/date/lib/timezonedb.h php8.4-8.4.24/ext/date/lib/timezonedb.h --- php8.4-8.4.23/ext/date/lib/timezonedb.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/date/lib/timezonedb.h 2026-07-29 05:29:50.000000000 +0000 @@ -20,593 +20,593 @@ { (char*) "Africa/Bujumbura" , 0x000B2A }, { (char*) "Africa/Cairo" , 0x000BB9 }, { (char*) "Africa/Casablanca" , 0x0010E2 }, - { (char*) "Africa/Ceuta" , 0x00186D }, - { (char*) "Africa/Conakry" , 0x001AB9 }, - { (char*) "Africa/Dakar" , 0x001B63 }, - { (char*) "Africa/Dar_es_Salaam" , 0x001C04 }, - { (char*) "Africa/Djibouti" , 0x001CB1 }, - { (char*) "Africa/Douala" , 0x001D40 }, - { (char*) "Africa/El_Aaiun" , 0x001DCF }, - { (char*) "Africa/Freetown" , 0x002501 }, - { (char*) "Africa/Gaborone" , 0x002651 }, - { (char*) "Africa/Harare" , 0x002711 }, - { (char*) "Africa/Johannesburg" , 0x0027A0 }, - { (char*) "Africa/Juba" , 0x00286A }, - { (char*) "Africa/Kampala" , 0x002A40 }, - { (char*) "Africa/Khartoum" , 0x002B02 }, - { (char*) "Africa/Kigali" , 0x002CD8 }, - { (char*) "Africa/Kinshasa" , 0x002D67 }, - { (char*) "Africa/Lagos" , 0x002E0F }, - { (char*) "Africa/Libreville" , 0x002ECF }, - { (char*) "Africa/Lome" , 0x002F5E }, - { (char*) "Africa/Luanda" , 0x002FEC }, - { (char*) "Africa/Lubumbashi" , 0x00308A }, - { (char*) "Africa/Lusaka" , 0x003145 }, - { (char*) "Africa/Malabo" , 0x0031D4 }, - { (char*) "Africa/Maputo" , 0x003276 }, - { (char*) "Africa/Maseru" , 0x003305 }, - { (char*) "Africa/Mbabane" , 0x0033AE }, - { (char*) "Africa/Mogadishu" , 0x00343F }, - { (char*) "Africa/Monrovia" , 0x0034EC }, - { (char*) "Africa/Nairobi" , 0x00359C }, - { (char*) "Africa/Ndjamena" , 0x003667 }, - { (char*) "Africa/Niamey" , 0x003713 }, - { (char*) "Africa/Nouakchott" , 0x0037C8 }, - { (char*) "Africa/Ouagadougou" , 0x003872 }, - { (char*) "Africa/Porto-Novo" , 0x003900 }, - { (char*) "Africa/Sao_Tome" , 0x0039A2 }, - { (char*) "Africa/Timbuktu" , 0x003A5B }, - { (char*) "Africa/Tripoli" , 0x003AE9 }, - { (char*) "Africa/Tunis" , 0x003CA4 }, - { (char*) "Africa/Windhoek" , 0x003E71 }, - { (char*) "America/Adak" , 0x0040FB }, - { (char*) "America/Anchorage" , 0x0044EA }, - { (char*) "America/Anguilla" , 0x0048DA }, - { (char*) "America/Antigua" , 0x004968 }, - { (char*) "America/Araguaina" , 0x004A09 }, - { (char*) "America/Argentina/Buenos_Aires" , 0x004C6E }, - { (char*) "America/Argentina/Catamarca" , 0x004F53 }, - { (char*) "America/Argentina/ComodRivadavia" , 0x00523E }, - { (char*) "America/Argentina/Cordoba" , 0x00550E }, - { (char*) "America/Argentina/Jujuy" , 0x005814 }, - { (char*) "America/Argentina/La_Rioja" , 0x005ADC }, - { (char*) "America/Argentina/Mendoza" , 0x005DC2 }, - { (char*) "America/Argentina/Rio_Gallegos" , 0x00609E }, - { (char*) "America/Argentina/Salta" , 0x00637D }, - { (char*) "America/Argentina/San_Juan" , 0x006651 }, - { (char*) "America/Argentina/San_Luis" , 0x006937 }, - { (char*) "America/Argentina/Tucuman" , 0x006C1D }, - { (char*) "America/Argentina/Ushuaia" , 0x006F0B }, - { (char*) "America/Aruba" , 0x0071F0 }, - { (char*) "America/Asuncion" , 0x007293 }, - { (char*) "America/Atikokan" , 0x0076DC }, - { (char*) "America/Atka" , 0x0077E9 }, - { (char*) "America/Bahia" , 0x007BBE }, - { (char*) "America/Bahia_Banderas" , 0x007E79 }, - { (char*) "America/Barbados" , 0x008152 }, - { (char*) "America/Belem" , 0x008274 }, - { (char*) "America/Belize" , 0x00841C }, - { (char*) "America/Blanc-Sablon" , 0x00883D }, - { (char*) "America/Boa_Vista" , 0x008932 }, - { (char*) "America/Bogota" , 0x008AF3 }, - { (char*) "America/Boise" , 0x008BB2 }, - { (char*) "America/Buenos_Aires" , 0x008FC5 }, - { (char*) "America/Cambridge_Bay" , 0x009295 }, - { (char*) "America/Campo_Grande" , 0x009628 }, - { (char*) "America/Cancun" , 0x0099FE }, - { (char*) "America/Caracas" , 0x009C30 }, - { (char*) "America/Catamarca" , 0x009CFA }, - { (char*) "America/Cayenne" , 0x009FCA }, - { (char*) "America/Cayman" , 0x00A06D }, - { (char*) "America/Chicago" , 0x00A10E }, - { (char*) "America/Chihuahua" , 0x00A808 }, - { (char*) "America/Ciudad_Juarez" , 0x00AADD }, - { (char*) "America/Coral_Harbour" , 0x00ADD3 }, - { (char*) "America/Cordoba" , 0x00AE74 }, - { (char*) "America/Costa_Rica" , 0x00B144 }, - { (char*) "America/Coyhaique" , 0x00B238 }, - { (char*) "America/Creston" , 0x00B7A2 }, - { (char*) "America/Cuiaba" , 0x00B85E }, - { (char*) "America/Curacao" , 0x00BC1B }, - { (char*) "America/Danmarkshavn" , 0x00BCBE }, - { (char*) "America/Dawson" , 0x00BEA3 }, - { (char*) "America/Dawson_Creek" , 0x00C2C6 }, - { (char*) "America/Denver" , 0x00C59D }, - { (char*) "America/Detroit" , 0x00C9D0 }, - { (char*) "America/Dominica" , 0x00CD78 }, - { (char*) "America/Edmonton" , 0x00CE06 }, - { (char*) "America/Eirunepe" , 0x00D1FE }, - { (char*) "America/El_Salvador" , 0x00D3CD }, - { (char*) "America/Ensenada" , 0x00D489 }, - { (char*) "America/Fort_Nelson" , 0x00D9EC }, - { (char*) "America/Fort_Wayne" , 0x00DFB4 }, - { (char*) "America/Fortaleza" , 0x00E1D3 }, - { (char*) "America/Glace_Bay" , 0x00E3E9 }, - { (char*) "America/Godthab" , 0x00E780 }, - { (char*) "America/Goose_Bay" , 0x00EB51 }, - { (char*) "America/Grand_Turk" , 0x00F1A9 }, - { (char*) "America/Grenada" , 0x00F50A }, - { (char*) "America/Guadeloupe" , 0x00F598 }, - { (char*) "America/Guatemala" , 0x00F626 }, - { (char*) "America/Guayaquil" , 0x00F706 }, - { (char*) "America/Guyana" , 0x00F7D7 }, - { (char*) "America/Halifax" , 0x00F898 }, - { (char*) "America/Havana" , 0x00FF4A }, - { (char*) "America/Hermosillo" , 0x0103B3 }, - { (char*) "America/Indiana/Indianapolis" , 0x0104C7 }, - { (char*) "America/Indiana/Knox" , 0x0106FF }, - { (char*) "America/Indiana/Marengo" , 0x010B18 }, - { (char*) "America/Indiana/Petersburg" , 0x010D72 }, - { (char*) "America/Indiana/Tell_City" , 0x01103C }, - { (char*) "America/Indiana/Vevay" , 0x011266 }, - { (char*) "America/Indiana/Vincennes" , 0x0113FD }, - { (char*) "America/Indiana/Winamac" , 0x011653 }, - { (char*) "America/Indianapolis" , 0x0118D0 }, - { (char*) "America/Inuvik" , 0x011AEF }, - { (char*) "America/Iqaluit" , 0x011E40 }, - { (char*) "America/Jamaica" , 0x0121BC }, - { (char*) "America/Jujuy" , 0x01231B }, - { (char*) "America/Juneau" , 0x0125D9 }, - { (char*) "America/Kentucky/Louisville" , 0x0129BF }, - { (char*) "America/Kentucky/Monticello" , 0x012EC3 }, - { (char*) "America/Knox_IN" , 0x0132AF }, - { (char*) "America/Kralendijk" , 0x0136B3 }, - { (char*) "America/La_Paz" , 0x013770 }, - { (char*) "America/Lima" , 0x013826 }, - { (char*) "America/Los_Angeles" , 0x01394D }, - { (char*) "America/Louisville" , 0x013E6E }, - { (char*) "America/Lower_Princes" , 0x014354 }, - { (char*) "America/Maceio" , 0x014411 }, - { (char*) "America/Managua" , 0x014623 }, - { (char*) "America/Manaus" , 0x014756 }, - { (char*) "America/Marigot" , 0x01490D }, - { (char*) "America/Martinique" , 0x0149CA }, - { (char*) "America/Matamoros" , 0x014A88 }, - { (char*) "America/Mazatlan" , 0x014C75 }, - { (char*) "America/Mendoza" , 0x014F65 }, - { (char*) "America/Menominee" , 0x015235 }, - { (char*) "America/Merida" , 0x0155F5 }, - { (char*) "America/Metlakatla" , 0x0158A0 }, - { (char*) "America/Mexico_City" , 0x015B0D }, - { (char*) "America/Miquelon" , 0x015E2C }, - { (char*) "America/Moncton" , 0x01605E }, - { (char*) "America/Monterrey" , 0x016657 }, - { (char*) "America/Montevideo" , 0x01695E }, - { (char*) "America/Montreal" , 0x016D33 }, - { (char*) "America/Montserrat" , 0x0173F4 }, - { (char*) "America/Nassau" , 0x017482 }, - { (char*) "America/New_York" , 0x01787C }, - { (char*) "America/Nipigon" , 0x017F6C }, - { (char*) "America/Nome" , 0x01862D }, - { (char*) "America/Noronha" , 0x018A15 }, - { (char*) "America/North_Dakota/Beulah" , 0x018C15 }, - { (char*) "America/North_Dakota/Center" , 0x019049 }, - { (char*) "America/North_Dakota/New_Salem" , 0x019448 }, - { (char*) "America/Nuuk" , 0x01984D }, - { (char*) "America/Ojinaga" , 0x019C2F }, - { (char*) "America/Panama" , 0x019F25 }, - { (char*) "America/Pangnirtung" , 0x019FC6 }, - { (char*) "America/Paramaribo" , 0x01A329 }, - { (char*) "America/Phoenix" , 0x01A3F0 }, - { (char*) "America/Port-au-Prince" , 0x01A504 }, - { (char*) "America/Port_of_Spain" , 0x01A745 }, - { (char*) "America/Porto_Acre" , 0x01A7D3 }, - { (char*) "America/Porto_Velho" , 0x01A981 }, - { (char*) "America/Puerto_Rico" , 0x01AB1F }, - { (char*) "America/Punta_Arenas" , 0x01ABDC }, - { (char*) "America/Rainy_River" , 0x01B0BB }, - { (char*) "America/Rankin_Inlet" , 0x01B5D5 }, - { (char*) "America/Recife" , 0x01B91E }, - { (char*) "America/Regina" , 0x01BB18 }, - { (char*) "America/Resolute" , 0x01BDB7 }, - { (char*) "America/Rio_Branco" , 0x01C101 }, - { (char*) "America/Rosario" , 0x01C2B3 }, - { (char*) "America/Santa_Isabel" , 0x01C583 }, - { (char*) "America/Santarem" , 0x01CAE6 }, - { (char*) "America/Santiago" , 0x01CC96 }, - { (char*) "America/Santo_Domingo" , 0x01D1F9 }, - { (char*) "America/Sao_Paulo" , 0x01D342 }, - { (char*) "America/Scoresbysund" , 0x01D73C }, - { (char*) "America/Shiprock" , 0x01DB3D }, - { (char*) "America/Sitka" , 0x01DF5B }, - { (char*) "America/St_Barthelemy" , 0x01E336 }, - { (char*) "America/St_Johns" , 0x01E3F3 }, - { (char*) "America/St_Kitts" , 0x01EB70 }, - { (char*) "America/St_Lucia" , 0x01EBFE }, - { (char*) "America/St_Thomas" , 0x01EC9F }, - { (char*) "America/St_Vincent" , 0x01ED2D }, - { (char*) "America/Swift_Current" , 0x01EDCE }, - { (char*) "America/Tegucigalpa" , 0x01EF5C }, - { (char*) "America/Thule" , 0x01F02A }, - { (char*) "America/Thunder_Bay" , 0x01F20B }, - { (char*) "America/Tijuana" , 0x01F8CC }, - { (char*) "America/Toronto" , 0x01FE3E }, - { (char*) "America/Tortola" , 0x02051D }, - { (char*) "America/Vancouver" , 0x0205AB }, - { (char*) "America/Virgin" , 0x020B02 }, - { (char*) "America/Whitehorse" , 0x020BBF }, - { (char*) "America/Winnipeg" , 0x020FE2 }, - { (char*) "America/Yakutat" , 0x021519 }, - { (char*) "America/Yellowknife" , 0x0218E7 }, - { (char*) "Antarctica/Casey" , 0x021CBD }, - { (char*) "Antarctica/Davis" , 0x021DED }, - { (char*) "Antarctica/DumontDUrville" , 0x021EC3 }, - { (char*) "Antarctica/Macquarie" , 0x021F77 }, - { (char*) "Antarctica/Mawson" , 0x022363 }, - { (char*) "Antarctica/McMurdo" , 0x02240D }, - { (char*) "Antarctica/Palmer" , 0x02273F }, - { (char*) "Antarctica/Rothera" , 0x022AC8 }, - { (char*) "Antarctica/South_Pole" , 0x022B5F }, - { (char*) "Antarctica/Syowa" , 0x022F7E }, - { (char*) "Antarctica/Troll" , 0x023014 }, - { (char*) "Antarctica/Vostok" , 0x0230C3 }, - { (char*) "Arctic/Longyearbyen" , 0x02317F }, - { (char*) "Asia/Aden" , 0x02344C }, - { (char*) "Asia/Almaty" , 0x0234DD }, - { (char*) "Asia/Amman" , 0x023765 }, - { (char*) "Asia/Anadyr" , 0x023B11 }, - { (char*) "Asia/Aqtau" , 0x023E17 }, - { (char*) "Asia/Aqtobe" , 0x024096 }, - { (char*) "Asia/Ashgabat" , 0x024316 }, - { (char*) "Asia/Ashkhabad" , 0x024499 }, - { (char*) "Asia/Atyrau" , 0x02461C }, - { (char*) "Asia/Baghdad" , 0x0248A5 }, - { (char*) "Asia/Bahrain" , 0x024B27 }, - { (char*) "Asia/Baku" , 0x024BE0 }, - { (char*) "Asia/Bangkok" , 0x024ED4 }, - { (char*) "Asia/Barnaul" , 0x024F78 }, - { (char*) "Asia/Beirut" , 0x025283 }, - { (char*) "Asia/Bishkek" , 0x02556B }, - { (char*) "Asia/Brunei" , 0x0257E1 }, - { (char*) "Asia/Calcutta" , 0x025887 }, - { (char*) "Asia/Chita" , 0x02596F }, - { (char*) "Asia/Choibalsan" , 0x025C7D }, - { (char*) "Asia/Chongqing" , 0x025EDB }, - { (char*) "Asia/Chungking" , 0x026070 }, - { (char*) "Asia/Colombo" , 0x026205 }, - { (char*) "Asia/Dacca" , 0x026308 }, - { (char*) "Asia/Damascus" , 0x0263FB }, - { (char*) "Asia/Dhaka" , 0x0268D9 }, - { (char*) "Asia/Dili" , 0x0269CC }, - { (char*) "Asia/Dubai" , 0x026A82 }, - { (char*) "Asia/Dushanbe" , 0x026B13 }, - { (char*) "Asia/Famagusta" , 0x026C8D }, - { (char*) "Asia/Gaza" , 0x027054 }, - { (char*) "Asia/Harbin" , 0x027BF0 }, - { (char*) "Asia/Hebron" , 0x027D85 }, - { (char*) "Asia/Ho_Chi_Minh" , 0x028932 }, - { (char*) "Asia/Hong_Kong" , 0x028A2A }, - { (char*) "Asia/Hovd" , 0x028D3D }, - { (char*) "Asia/Irkutsk" , 0x028FB1 }, - { (char*) "Asia/Istanbul" , 0x0292CF }, - { (char*) "Asia/Jakarta" , 0x02978B }, - { (char*) "Asia/Jayapura" , 0x02989C }, - { (char*) "Asia/Jerusalem" , 0x029989 }, - { (char*) "Asia/Kabul" , 0x029DC7 }, - { (char*) "Asia/Kamchatka" , 0x029E72 }, - { (char*) "Asia/Karachi" , 0x02A167 }, - { (char*) "Asia/Kashgar" , 0x02A27D }, - { (char*) "Asia/Kathmandu" , 0x02A30E }, - { (char*) "Asia/Katmandu" , 0x02A3BB }, - { (char*) "Asia/Khandyga" , 0x02A468 }, - { (char*) "Asia/Kolkata" , 0x02A799 }, - { (char*) "Asia/Krasnoyarsk" , 0x02A881 }, - { (char*) "Asia/Kuala_Lumpur" , 0x02AB8B }, - { (char*) "Asia/Kuching" , 0x02ACAB }, - { (char*) "Asia/Kuwait" , 0x02AE05 }, - { (char*) "Asia/Macao" , 0x02AE96 }, - { (char*) "Asia/Macau" , 0x02B1B9 }, - { (char*) "Asia/Magadan" , 0x02B4DC }, - { (char*) "Asia/Makassar" , 0x02B7E7 }, - { (char*) "Asia/Manila" , 0x02B8FA }, - { (char*) "Asia/Muscat" , 0x02BA18 }, - { (char*) "Asia/Nicosia" , 0x02BAA9 }, - { (char*) "Asia/Novokuznetsk" , 0x02BD18 }, - { (char*) "Asia/Novosibirsk" , 0x02C00B }, - { (char*) "Asia/Omsk" , 0x02C31C }, - { (char*) "Asia/Oral" , 0x02C61A }, - { (char*) "Asia/Phnom_Penh" , 0x02C8A6 }, - { (char*) "Asia/Pontianak" , 0x02C97A }, - { (char*) "Asia/Pyongyang" , 0x02CA93 }, - { (char*) "Asia/Qatar" , 0x02CB56 }, - { (char*) "Asia/Qostanay" , 0x02CBFA }, - { (char*) "Asia/Qyzylorda" , 0x02CE90 }, - { (char*) "Asia/Rangoon" , 0x02D129 }, - { (char*) "Asia/Riyadh" , 0x02D1F0 }, - { (char*) "Asia/Saigon" , 0x02D281 }, - { (char*) "Asia/Sakhalin" , 0x02D379 }, - { (char*) "Asia/Samarkand" , 0x02D690 }, - { (char*) "Asia/Seoul" , 0x02D81B }, - { (char*) "Asia/Shanghai" , 0x02D9C6 }, - { (char*) "Asia/Singapore" , 0x02DB67 }, - { (char*) "Asia/Srednekolymsk" , 0x02DC73 }, - { (char*) "Asia/Taipei" , 0x02DF83 }, - { (char*) "Asia/Tashkent" , 0x02E18E }, - { (char*) "Asia/Tbilisi" , 0x02E319 }, - { (char*) "Asia/Tehran" , 0x02E591 }, - { (char*) "Asia/Tel_Aviv" , 0x02E8C9 }, - { (char*) "Asia/Thimbu" , 0x02ED07 }, - { (char*) "Asia/Thimphu" , 0x02EDAD }, - { (char*) "Asia/Tokyo" , 0x02EE53 }, - { (char*) "Asia/Tomsk" , 0x02EF34 }, - { (char*) "Asia/Ujung_Pandang" , 0x02F23F }, - { (char*) "Asia/Ulaanbaatar" , 0x02F309 }, - { (char*) "Asia/Ulan_Bator" , 0x02F577 }, - { (char*) "Asia/Urumqi" , 0x02F7D5 }, - { (char*) "Asia/Ust-Nera" , 0x02F873 }, - { (char*) "Asia/Vientiane" , 0x02FB96 }, - { (char*) "Asia/Vladivostok" , 0x02FC7C }, - { (char*) "Asia/Yakutsk" , 0x02FF81 }, - { (char*) "Asia/Yangon" , 0x030285 }, - { (char*) "Asia/Yekaterinburg" , 0x03034C }, - { (char*) "Asia/Yerevan" , 0x03065E }, - { (char*) "Atlantic/Azores" , 0x03092E }, - { (char*) "Atlantic/Bermuda" , 0x030EB9 }, - { (char*) "Atlantic/Canary" , 0x0312C5 }, - { (char*) "Atlantic/Cape_Verde" , 0x0314BD }, - { (char*) "Atlantic/Faeroe" , 0x031578 }, - { (char*) "Atlantic/Faroe" , 0x03173D }, - { (char*) "Atlantic/Jan_Mayen" , 0x031902 }, - { (char*) "Atlantic/Madeira" , 0x031BCF }, - { (char*) "Atlantic/Reykjavik" , 0x032146 }, - { (char*) "Atlantic/South_Georgia" , 0x032443 }, - { (char*) "Atlantic/St_Helena" , 0x0324D3 }, - { (char*) "Atlantic/Stanley" , 0x032574 }, - { (char*) "Australia/ACT" , 0x032895 }, - { (char*) "Australia/Adelaide" , 0x032C29 }, - { (char*) "Australia/Brisbane" , 0x032FDD }, - { (char*) "Australia/Broken_Hill" , 0x033121 }, - { (char*) "Australia/Canberra" , 0x0334F6 }, - { (char*) "Australia/Currie" , 0x03388A }, - { (char*) "Australia/Darwin" , 0x033C81 }, - { (char*) "Australia/Eucla" , 0x033D89 }, - { (char*) "Australia/Hobart" , 0x033EE8 }, - { (char*) "Australia/LHI" , 0x0342E7 }, - { (char*) "Australia/Lindeman" , 0x0345A7 }, - { (char*) "Australia/Lord_Howe" , 0x034717 }, - { (char*) "Australia/Melbourne" , 0x0349E7 }, - { (char*) "Australia/North" , 0x034D83 }, - { (char*) "Australia/NSW" , 0x034E79 }, - { (char*) "Australia/Perth" , 0x03520D }, - { (char*) "Australia/Queensland" , 0x035369 }, - { (char*) "Australia/South" , 0x035496 }, - { (char*) "Australia/Sydney" , 0x03583B }, - { (char*) "Australia/Tasmania" , 0x035BEB }, - { (char*) "Australia/Victoria" , 0x035FE2 }, - { (char*) "Australia/West" , 0x036376 }, - { (char*) "Australia/Yancowinna" , 0x0364B4 }, - { (char*) "Brazil/Acre" , 0x03686D }, - { (char*) "Brazil/DeNoronha" , 0x036A1B }, - { (char*) "Brazil/East" , 0x036C0B }, - { (char*) "Brazil/West" , 0x036FCF }, - { (char*) "Canada/Atlantic" , 0x037177 }, - { (char*) "Canada/Central" , 0x03780B }, - { (char*) "Canada/Eastern" , 0x037D25 }, - { (char*) "Canada/Mountain" , 0x0383E6 }, - { (char*) "Canada/Newfoundland" , 0x0387BC }, - { (char*) "Canada/Pacific" , 0x038F1E }, - { (char*) "Canada/Saskatchewan" , 0x03945C }, - { (char*) "Canada/Yukon" , 0x0396E6 }, - { (char*) "CET" , 0x039AF7 }, - { (char*) "Chile/Continental" , 0x039F52 }, - { (char*) "Chile/EasterIsland" , 0x03A4A8 }, - { (char*) "CST6CDT" , 0x03A94A }, - { (char*) "Cuba" , 0x03B030 }, - { (char*) "EET" , 0x03B499 }, - { (char*) "Egypt" , 0x03B74F }, - { (char*) "Eire" , 0x03BC78 }, - { (char*) "EST" , 0x03C25C }, - { (char*) "EST5EDT" , 0x03C2FD }, - { (char*) "Etc/GMT" , 0x03C9D9 }, - { (char*) "Etc/GMT+0" , 0x03CA54 }, - { (char*) "Etc/GMT+1" , 0x03CACF }, - { (char*) "Etc/GMT+10" , 0x03CB4C }, - { (char*) "Etc/GMT+11" , 0x03CBCA }, - { (char*) "Etc/GMT+12" , 0x03CC48 }, - { (char*) "Etc/GMT+2" , 0x03CCC6 }, - { (char*) "Etc/GMT+3" , 0x03CD43 }, - { (char*) "Etc/GMT+4" , 0x03CDC0 }, - { (char*) "Etc/GMT+5" , 0x03CE3D }, - { (char*) "Etc/GMT+6" , 0x03CEBA }, - { (char*) "Etc/GMT+7" , 0x03CF37 }, - { (char*) "Etc/GMT+8" , 0x03CFB4 }, - { (char*) "Etc/GMT+9" , 0x03D031 }, - { (char*) "Etc/GMT-0" , 0x03D0AE }, - { (char*) "Etc/GMT-1" , 0x03D129 }, - { (char*) "Etc/GMT-10" , 0x03D1A7 }, - { (char*) "Etc/GMT-11" , 0x03D226 }, - { (char*) "Etc/GMT-12" , 0x03D2A5 }, - { (char*) "Etc/GMT-13" , 0x03D324 }, - { (char*) "Etc/GMT-14" , 0x03D3A3 }, - { (char*) "Etc/GMT-2" , 0x03D422 }, - { (char*) "Etc/GMT-3" , 0x03D4A0 }, - { (char*) "Etc/GMT-4" , 0x03D51E }, - { (char*) "Etc/GMT-5" , 0x03D59C }, - { (char*) "Etc/GMT-6" , 0x03D61A }, - { (char*) "Etc/GMT-7" , 0x03D698 }, - { (char*) "Etc/GMT-8" , 0x03D716 }, - { (char*) "Etc/GMT-9" , 0x03D794 }, - { (char*) "Etc/GMT0" , 0x03D812 }, - { (char*) "Etc/Greenwich" , 0x03D88D }, - { (char*) "Etc/UCT" , 0x03D908 }, - { (char*) "Etc/Universal" , 0x03D983 }, - { (char*) "Etc/UTC" , 0x03D9FE }, - { (char*) "Etc/Zulu" , 0x03DA79 }, - { (char*) "Europe/Amsterdam" , 0x03DAF4 }, - { (char*) "Europe/Andorra" , 0x03DF2F }, - { (char*) "Europe/Astrakhan" , 0x03E0C0 }, - { (char*) "Europe/Athens" , 0x03E3B4 }, - { (char*) "Europe/Belfast" , 0x03E66A }, - { (char*) "Europe/Belgrade" , 0x03ECB5 }, - { (char*) "Europe/Berlin" , 0x03EE9F }, - { (char*) "Europe/Bratislava" , 0x03F17B }, - { (char*) "Europe/Brussels" , 0x03F45A }, - { (char*) "Europe/Bucharest" , 0x03F8B5 }, - { (char*) "Europe/Budapest" , 0x03FB56 }, - { (char*) "Europe/Busingen" , 0x03FE60 }, - { (char*) "Europe/Chisinau" , 0x040065 }, - { (char*) "Europe/Copenhagen" , 0x040528 }, - { (char*) "Europe/Dublin" , 0x0407A3 }, - { (char*) "Europe/Gibraltar" , 0x040D87 }, - { (char*) "Europe/Guernsey" , 0x041257 }, - { (char*) "Europe/Helsinki" , 0x0418AE }, - { (char*) "Europe/Isle_of_Man" , 0x041A9B }, - { (char*) "Europe/Istanbul" , 0x0420E6 }, - { (char*) "Europe/Jersey" , 0x0425A2 }, - { (char*) "Europe/Kaliningrad" , 0x042BF9 }, - { (char*) "Europe/Kiev" , 0x042FA1 }, - { (char*) "Europe/Kirov" , 0x0431DB }, - { (char*) "Europe/Kyiv" , 0x0434D4 }, - { (char*) "Europe/Lisbon" , 0x04371D }, - { (char*) "Europe/Ljubljana" , 0x043CF3 }, - { (char*) "Europe/London" , 0x043EDD }, - { (char*) "Europe/Luxembourg" , 0x044528 }, - { (char*) "Europe/Madrid" , 0x044973 }, - { (char*) "Europe/Malta" , 0x044D10 }, - { (char*) "Europe/Mariehamn" , 0x0450BC }, - { (char*) "Europe/Minsk" , 0x0452A9 }, - { (char*) "Europe/Monaco" , 0x0455DD }, - { (char*) "Europe/Moscow" , 0x045A43 }, - { (char*) "Europe/Nicosia" , 0x045DEF }, - { (char*) "Europe/Oslo" , 0x046050 }, - { (char*) "Europe/Paris" , 0x046300 }, - { (char*) "Europe/Podgorica" , 0x04675D }, - { (char*) "Europe/Prague" , 0x046947 }, - { (char*) "Europe/Riga" , 0x046C26 }, - { (char*) "Europe/Rome" , 0x046EE8 }, - { (char*) "Europe/Samara" , 0x0472A7 }, - { (char*) "Europe/San_Marino" , 0x0475A8 }, - { (char*) "Europe/Sarajevo" , 0x047967 }, - { (char*) "Europe/Saratov" , 0x047B51 }, - { (char*) "Europe/Simferopol" , 0x047E43 }, - { (char*) "Europe/Skopje" , 0x0481B6 }, - { (char*) "Europe/Sofia" , 0x0483A0 }, - { (char*) "Europe/Stockholm" , 0x0485FC }, - { (char*) "Europe/Tallinn" , 0x0487F9 }, - { (char*) "Europe/Tirane" , 0x048AA8 }, - { (char*) "Europe/Tiraspol" , 0x048D10 }, - { (char*) "Europe/Ulyanovsk" , 0x0491D3 }, - { (char*) "Europe/Uzhgorod" , 0x0494E9 }, - { (char*) "Europe/Vaduz" , 0x049723 }, - { (char*) "Europe/Vatican" , 0x04990D }, - { (char*) "Europe/Vienna" , 0x049CCC }, - { (char*) "Europe/Vilnius" , 0x049F6A }, - { (char*) "Europe/Volgograd" , 0x04A21A }, - { (char*) "Europe/Warsaw" , 0x04A529 }, - { (char*) "Europe/Zagreb" , 0x04A8D0 }, - { (char*) "Europe/Zaporozhye" , 0x04AABA }, - { (char*) "Europe/Zurich" , 0x04ACF4 }, - { (char*) "Factory" , 0x04AEF1 }, - { (char*) "GB" , 0x04AF6E }, - { (char*) "GB-Eire" , 0x04B5B9 }, - { (char*) "GMT" , 0x04BC04 }, - { (char*) "GMT+0" , 0x04BC7F }, - { (char*) "GMT-0" , 0x04BCFA }, - { (char*) "GMT0" , 0x04BD75 }, - { (char*) "Greenwich" , 0x04BDF0 }, - { (char*) "Hongkong" , 0x04BE6B }, - { (char*) "HST" , 0x04C17E }, - { (char*) "Iceland" , 0x04C267 }, - { (char*) "Indian/Antananarivo" , 0x04C2F5 }, - { (char*) "Indian/Chagos" , 0x04C3A1 }, - { (char*) "Indian/Christmas" , 0x04C445 }, - { (char*) "Indian/Cocos" , 0x04C4D6 }, - { (char*) "Indian/Comoro" , 0x04C56E }, - { (char*) "Indian/Kerguelen" , 0x04C5FD }, - { (char*) "Indian/Mahe" , 0x04C68E }, - { (char*) "Indian/Maldives" , 0x04C71F }, - { (char*) "Indian/Mauritius" , 0x04C7C3 }, - { (char*) "Indian/Mayotte" , 0x04C882 }, - { (char*) "Indian/Reunion" , 0x04C911 }, - { (char*) "Iran" , 0x04C9A2 }, - { (char*) "Israel" , 0x04CCDA }, - { (char*) "Jamaica" , 0x04D118 }, - { (char*) "Japan" , 0x04D277 }, - { (char*) "Kwajalein" , 0x04D358 }, - { (char*) "Libya" , 0x04D43F }, - { (char*) "MET" , 0x04D5FA }, - { (char*) "Mexico/BajaNorte" , 0x04DA55 }, - { (char*) "Mexico/BajaSur" , 0x04DFB8 }, - { (char*) "Mexico/General" , 0x04E276 }, - { (char*) "MST" , 0x04E587 }, - { (char*) "MST7MDT" , 0x04E683 }, - { (char*) "Navajo" , 0x04EAA1 }, - { (char*) "NZ" , 0x04EEBF }, - { (char*) "NZ-CHAT" , 0x04F2DE }, - { (char*) "Pacific/Apia" , 0x04F612 }, - { (char*) "Pacific/Auckland" , 0x04F7B5 }, - { (char*) "Pacific/Bougainville" , 0x04FBE7 }, - { (char*) "Pacific/Chatham" , 0x04FCC8 }, - { (char*) "Pacific/Chuuk" , 0x05000B }, - { (char*) "Pacific/Easter" , 0x0500E9 }, - { (char*) "Pacific/Efate" , 0x050598 }, - { (char*) "Pacific/Enderbury" , 0x0506FA }, - { (char*) "Pacific/Fakaofo" , 0x0507B2 }, - { (char*) "Pacific/Fiji" , 0x050857 }, - { (char*) "Pacific/Funafuti" , 0x0509EF }, - { (char*) "Pacific/Galapagos" , 0x050A81 }, - { (char*) "Pacific/Gambier" , 0x050B4D }, - { (char*) "Pacific/Guadalcanal" , 0x050BEC }, - { (char*) "Pacific/Guam" , 0x050C7E }, - { (char*) "Pacific/Honolulu" , 0x050DE8 }, - { (char*) "Pacific/Johnston" , 0x050ED7 }, - { (char*) "Pacific/Kanton" , 0x050FC0 }, - { (char*) "Pacific/Kiritimati" , 0x051087 }, - { (char*) "Pacific/Kosrae" , 0x05114D }, - { (char*) "Pacific/Kwajalein" , 0x051251 }, - { (char*) "Pacific/Majuro" , 0x051341 }, - { (char*) "Pacific/Marquesas" , 0x05143F }, - { (char*) "Pacific/Midway" , 0x0514E7 }, - { (char*) "Pacific/Nauru" , 0x0515AA }, - { (char*) "Pacific/Niue" , 0x05166D }, - { (char*) "Pacific/Norfolk" , 0x051713 }, - { (char*) "Pacific/Noumea" , 0x05180C }, - { (char*) "Pacific/Pago_Pago" , 0x0518DE }, - { (char*) "Pacific/Palau" , 0x05197C }, - { (char*) "Pacific/Pitcairn" , 0x051A1C }, - { (char*) "Pacific/Pohnpei" , 0x051AC1 }, - { (char*) "Pacific/Ponape" , 0x051BB1 }, - { (char*) "Pacific/Port_Moresby" , 0x051C43 }, - { (char*) "Pacific/Rarotonga" , 0x051D01 }, - { (char*) "Pacific/Saipan" , 0x051EA3 }, - { (char*) "Pacific/Samoa" , 0x052004 }, - { (char*) "Pacific/Tahiti" , 0x0520A2 }, - { (char*) "Pacific/Tarawa" , 0x052142 }, - { (char*) "Pacific/Tongatapu" , 0x0521E3 }, - { (char*) "Pacific/Truk" , 0x0522DC }, - { (char*) "Pacific/Wake" , 0x052382 }, - { (char*) "Pacific/Wallis" , 0x05241F }, - { (char*) "Pacific/Yap" , 0x0524B1 }, - { (char*) "Poland" , 0x052557 }, - { (char*) "Portugal" , 0x0528FE }, - { (char*) "PRC" , 0x052EC1 }, - { (char*) "PST8PDT" , 0x053056 }, - { (char*) "ROC" , 0x053570 }, - { (char*) "ROK" , 0x05377B }, - { (char*) "Singapore" , 0x053926 }, - { (char*) "Turkey" , 0x053A32 }, - { (char*) "UCT" , 0x053EEE }, - { (char*) "Universal" , 0x053F69 }, - { (char*) "US/Alaska" , 0x053FE4 }, - { (char*) "US/Aleutian" , 0x0543C1 }, - { (char*) "US/Arizona" , 0x054796 }, - { (char*) "US/Central" , 0x054892 }, - { (char*) "US/East-Indiana" , 0x054F78 }, - { (char*) "US/Eastern" , 0x055197 }, - { (char*) "US/Hawaii" , 0x055873 }, - { (char*) "US/Indiana-Starke" , 0x05595C }, - { (char*) "US/Michigan" , 0x055D60 }, - { (char*) "US/Mountain" , 0x0560EF }, - { (char*) "US/Pacific" , 0x05650D }, - { (char*) "US/Samoa" , 0x056A27 }, - { (char*) "UTC" , 0x056AC5 }, - { (char*) "W-SU" , 0x056B40 }, - { (char*) "WET" , 0x056ED8 }, - { (char*) "Zulu" , 0x05749B }, + { (char*) "Africa/Ceuta" , 0x001407 }, + { (char*) "Africa/Conakry" , 0x001653 }, + { (char*) "Africa/Dakar" , 0x0016FD }, + { (char*) "Africa/Dar_es_Salaam" , 0x00179E }, + { (char*) "Africa/Djibouti" , 0x00184B }, + { (char*) "Africa/Douala" , 0x0018DA }, + { (char*) "Africa/El_Aaiun" , 0x001969 }, + { (char*) "Africa/Freetown" , 0x001C35 }, + { (char*) "Africa/Gaborone" , 0x001D85 }, + { (char*) "Africa/Harare" , 0x001E45 }, + { (char*) "Africa/Johannesburg" , 0x001ED4 }, + { (char*) "Africa/Juba" , 0x001F9E }, + { (char*) "Africa/Kampala" , 0x002174 }, + { (char*) "Africa/Khartoum" , 0x002236 }, + { (char*) "Africa/Kigali" , 0x00240C }, + { (char*) "Africa/Kinshasa" , 0x00249B }, + { (char*) "Africa/Lagos" , 0x002543 }, + { (char*) "Africa/Libreville" , 0x002603 }, + { (char*) "Africa/Lome" , 0x002692 }, + { (char*) "Africa/Luanda" , 0x002720 }, + { (char*) "Africa/Lubumbashi" , 0x0027BE }, + { (char*) "Africa/Lusaka" , 0x002879 }, + { (char*) "Africa/Malabo" , 0x002908 }, + { (char*) "Africa/Maputo" , 0x0029AA }, + { (char*) "Africa/Maseru" , 0x002A39 }, + { (char*) "Africa/Mbabane" , 0x002AE2 }, + { (char*) "Africa/Mogadishu" , 0x002B73 }, + { (char*) "Africa/Monrovia" , 0x002C20 }, + { (char*) "Africa/Nairobi" , 0x002CD0 }, + { (char*) "Africa/Ndjamena" , 0x002D9B }, + { (char*) "Africa/Niamey" , 0x002E47 }, + { (char*) "Africa/Nouakchott" , 0x002EFC }, + { (char*) "Africa/Ouagadougou" , 0x002FA6 }, + { (char*) "Africa/Porto-Novo" , 0x003034 }, + { (char*) "Africa/Sao_Tome" , 0x0030D6 }, + { (char*) "Africa/Timbuktu" , 0x00318F }, + { (char*) "Africa/Tripoli" , 0x00321D }, + { (char*) "Africa/Tunis" , 0x0033D8 }, + { (char*) "Africa/Windhoek" , 0x0035A5 }, + { (char*) "America/Adak" , 0x00382F }, + { (char*) "America/Anchorage" , 0x003C1E }, + { (char*) "America/Anguilla" , 0x00400E }, + { (char*) "America/Antigua" , 0x00409C }, + { (char*) "America/Araguaina" , 0x00413D }, + { (char*) "America/Argentina/Buenos_Aires" , 0x0043A2 }, + { (char*) "America/Argentina/Catamarca" , 0x004687 }, + { (char*) "America/Argentina/ComodRivadavia" , 0x004972 }, + { (char*) "America/Argentina/Cordoba" , 0x004C42 }, + { (char*) "America/Argentina/Jujuy" , 0x004F48 }, + { (char*) "America/Argentina/La_Rioja" , 0x005210 }, + { (char*) "America/Argentina/Mendoza" , 0x0054F6 }, + { (char*) "America/Argentina/Rio_Gallegos" , 0x0057D2 }, + { (char*) "America/Argentina/Salta" , 0x005AB1 }, + { (char*) "America/Argentina/San_Juan" , 0x005D85 }, + { (char*) "America/Argentina/San_Luis" , 0x00606B }, + { (char*) "America/Argentina/Tucuman" , 0x006351 }, + { (char*) "America/Argentina/Ushuaia" , 0x00663F }, + { (char*) "America/Aruba" , 0x006924 }, + { (char*) "America/Asuncion" , 0x0069C7 }, + { (char*) "America/Atikokan" , 0x006E10 }, + { (char*) "America/Atka" , 0x006F1D }, + { (char*) "America/Bahia" , 0x0072F2 }, + { (char*) "America/Bahia_Banderas" , 0x0075AD }, + { (char*) "America/Barbados" , 0x007886 }, + { (char*) "America/Belem" , 0x0079A8 }, + { (char*) "America/Belize" , 0x007B50 }, + { (char*) "America/Blanc-Sablon" , 0x007F71 }, + { (char*) "America/Boa_Vista" , 0x008066 }, + { (char*) "America/Bogota" , 0x008227 }, + { (char*) "America/Boise" , 0x0082E6 }, + { (char*) "America/Buenos_Aires" , 0x0086F9 }, + { (char*) "America/Cambridge_Bay" , 0x0089C9 }, + { (char*) "America/Campo_Grande" , 0x008D5C }, + { (char*) "America/Cancun" , 0x009132 }, + { (char*) "America/Caracas" , 0x009364 }, + { (char*) "America/Catamarca" , 0x00942E }, + { (char*) "America/Cayenne" , 0x0096FE }, + { (char*) "America/Cayman" , 0x0097A1 }, + { (char*) "America/Chicago" , 0x009842 }, + { (char*) "America/Chihuahua" , 0x009F3C }, + { (char*) "America/Ciudad_Juarez" , 0x00A211 }, + { (char*) "America/Coral_Harbour" , 0x00A507 }, + { (char*) "America/Cordoba" , 0x00A5A8 }, + { (char*) "America/Costa_Rica" , 0x00A878 }, + { (char*) "America/Coyhaique" , 0x00A96C }, + { (char*) "America/Creston" , 0x00AED6 }, + { (char*) "America/Cuiaba" , 0x00AF92 }, + { (char*) "America/Curacao" , 0x00B34F }, + { (char*) "America/Danmarkshavn" , 0x00B3F2 }, + { (char*) "America/Dawson" , 0x00B5D7 }, + { (char*) "America/Dawson_Creek" , 0x00B9FA }, + { (char*) "America/Denver" , 0x00BCD1 }, + { (char*) "America/Detroit" , 0x00C104 }, + { (char*) "America/Dominica" , 0x00C4AC }, + { (char*) "America/Edmonton" , 0x00C53A }, + { (char*) "America/Eirunepe" , 0x00CA84 }, + { (char*) "America/El_Salvador" , 0x00CC53 }, + { (char*) "America/Ensenada" , 0x00CD0F }, + { (char*) "America/Fort_Nelson" , 0x00D272 }, + { (char*) "America/Fort_Wayne" , 0x00D83A }, + { (char*) "America/Fortaleza" , 0x00DA59 }, + { (char*) "America/Glace_Bay" , 0x00DC6F }, + { (char*) "America/Godthab" , 0x00E006 }, + { (char*) "America/Goose_Bay" , 0x00E3D7 }, + { (char*) "America/Grand_Turk" , 0x00EA2F }, + { (char*) "America/Grenada" , 0x00ED90 }, + { (char*) "America/Guadeloupe" , 0x00EE1E }, + { (char*) "America/Guatemala" , 0x00EEAC }, + { (char*) "America/Guayaquil" , 0x00EF8C }, + { (char*) "America/Guyana" , 0x00F05D }, + { (char*) "America/Halifax" , 0x00F11E }, + { (char*) "America/Havana" , 0x00F7D0 }, + { (char*) "America/Hermosillo" , 0x00FC39 }, + { (char*) "America/Indiana/Indianapolis" , 0x00FD4D }, + { (char*) "America/Indiana/Knox" , 0x00FF85 }, + { (char*) "America/Indiana/Marengo" , 0x01039E }, + { (char*) "America/Indiana/Petersburg" , 0x0105F8 }, + { (char*) "America/Indiana/Tell_City" , 0x0108C2 }, + { (char*) "America/Indiana/Vevay" , 0x010AEC }, + { (char*) "America/Indiana/Vincennes" , 0x010C83 }, + { (char*) "America/Indiana/Winamac" , 0x010ED9 }, + { (char*) "America/Indianapolis" , 0x011156 }, + { (char*) "America/Inuvik" , 0x011375 }, + { (char*) "America/Iqaluit" , 0x0116C6 }, + { (char*) "America/Jamaica" , 0x011A42 }, + { (char*) "America/Jujuy" , 0x011BA1 }, + { (char*) "America/Juneau" , 0x011E5F }, + { (char*) "America/Kentucky/Louisville" , 0x012245 }, + { (char*) "America/Kentucky/Monticello" , 0x012749 }, + { (char*) "America/Knox_IN" , 0x012B35 }, + { (char*) "America/Kralendijk" , 0x012F39 }, + { (char*) "America/La_Paz" , 0x012FF6 }, + { (char*) "America/Lima" , 0x0130AC }, + { (char*) "America/Los_Angeles" , 0x0131D3 }, + { (char*) "America/Louisville" , 0x0136F4 }, + { (char*) "America/Lower_Princes" , 0x013BDA }, + { (char*) "America/Maceio" , 0x013C97 }, + { (char*) "America/Managua" , 0x013EA9 }, + { (char*) "America/Manaus" , 0x013FDC }, + { (char*) "America/Marigot" , 0x014193 }, + { (char*) "America/Martinique" , 0x014250 }, + { (char*) "America/Matamoros" , 0x01430E }, + { (char*) "America/Mazatlan" , 0x0144FB }, + { (char*) "America/Mendoza" , 0x0147EB }, + { (char*) "America/Menominee" , 0x014ABB }, + { (char*) "America/Merida" , 0x014E7B }, + { (char*) "America/Metlakatla" , 0x015126 }, + { (char*) "America/Mexico_City" , 0x015393 }, + { (char*) "America/Miquelon" , 0x0156B2 }, + { (char*) "America/Moncton" , 0x0158E4 }, + { (char*) "America/Monterrey" , 0x015EDD }, + { (char*) "America/Montevideo" , 0x0161E4 }, + { (char*) "America/Montreal" , 0x0165B9 }, + { (char*) "America/Montserrat" , 0x016C7A }, + { (char*) "America/Nassau" , 0x016D08 }, + { (char*) "America/New_York" , 0x017102 }, + { (char*) "America/Nipigon" , 0x0177F2 }, + { (char*) "America/Nome" , 0x017EB3 }, + { (char*) "America/Noronha" , 0x01829B }, + { (char*) "America/North_Dakota/Beulah" , 0x01849B }, + { (char*) "America/North_Dakota/Center" , 0x0188CF }, + { (char*) "America/North_Dakota/New_Salem" , 0x018CCE }, + { (char*) "America/Nuuk" , 0x0190D3 }, + { (char*) "America/Ojinaga" , 0x0194B5 }, + { (char*) "America/Panama" , 0x0197AB }, + { (char*) "America/Pangnirtung" , 0x01984C }, + { (char*) "America/Paramaribo" , 0x019BAF }, + { (char*) "America/Phoenix" , 0x019C76 }, + { (char*) "America/Port-au-Prince" , 0x019D8A }, + { (char*) "America/Port_of_Spain" , 0x019FCB }, + { (char*) "America/Porto_Acre" , 0x01A059 }, + { (char*) "America/Porto_Velho" , 0x01A207 }, + { (char*) "America/Puerto_Rico" , 0x01A3A5 }, + { (char*) "America/Punta_Arenas" , 0x01A462 }, + { (char*) "America/Rainy_River" , 0x01A941 }, + { (char*) "America/Rankin_Inlet" , 0x01AE5B }, + { (char*) "America/Recife" , 0x01B1A4 }, + { (char*) "America/Regina" , 0x01B39E }, + { (char*) "America/Resolute" , 0x01B63D }, + { (char*) "America/Rio_Branco" , 0x01B987 }, + { (char*) "America/Rosario" , 0x01BB39 }, + { (char*) "America/Santa_Isabel" , 0x01BE09 }, + { (char*) "America/Santarem" , 0x01C36C }, + { (char*) "America/Santiago" , 0x01C51C }, + { (char*) "America/Santo_Domingo" , 0x01CA7F }, + { (char*) "America/Sao_Paulo" , 0x01CBC8 }, + { (char*) "America/Scoresbysund" , 0x01CFC2 }, + { (char*) "America/Shiprock" , 0x01D3C3 }, + { (char*) "America/Sitka" , 0x01D7E1 }, + { (char*) "America/St_Barthelemy" , 0x01DBBC }, + { (char*) "America/St_Johns" , 0x01DC79 }, + { (char*) "America/St_Kitts" , 0x01E3F6 }, + { (char*) "America/St_Lucia" , 0x01E484 }, + { (char*) "America/St_Thomas" , 0x01E525 }, + { (char*) "America/St_Vincent" , 0x01E5B3 }, + { (char*) "America/Swift_Current" , 0x01E654 }, + { (char*) "America/Tegucigalpa" , 0x01E7E2 }, + { (char*) "America/Thule" , 0x01E8B0 }, + { (char*) "America/Thunder_Bay" , 0x01EA91 }, + { (char*) "America/Tijuana" , 0x01F152 }, + { (char*) "America/Toronto" , 0x01F6C4 }, + { (char*) "America/Tortola" , 0x01FDA3 }, + { (char*) "America/Vancouver" , 0x01FE31 }, + { (char*) "America/Virgin" , 0x0204DB }, + { (char*) "America/Whitehorse" , 0x020598 }, + { (char*) "America/Winnipeg" , 0x0209BB }, + { (char*) "America/Yakutat" , 0x020EF2 }, + { (char*) "America/Yellowknife" , 0x0212C0 }, + { (char*) "Antarctica/Casey" , 0x0217ED }, + { (char*) "Antarctica/Davis" , 0x02191D }, + { (char*) "Antarctica/DumontDUrville" , 0x0219F3 }, + { (char*) "Antarctica/Macquarie" , 0x021AA7 }, + { (char*) "Antarctica/Mawson" , 0x021E93 }, + { (char*) "Antarctica/McMurdo" , 0x021F3D }, + { (char*) "Antarctica/Palmer" , 0x02226F }, + { (char*) "Antarctica/Rothera" , 0x0225F8 }, + { (char*) "Antarctica/South_Pole" , 0x02268F }, + { (char*) "Antarctica/Syowa" , 0x022AAE }, + { (char*) "Antarctica/Troll" , 0x022B44 }, + { (char*) "Antarctica/Vostok" , 0x022BF3 }, + { (char*) "Arctic/Longyearbyen" , 0x022CAF }, + { (char*) "Asia/Aden" , 0x022F7C }, + { (char*) "Asia/Almaty" , 0x02300D }, + { (char*) "Asia/Amman" , 0x023295 }, + { (char*) "Asia/Anadyr" , 0x023641 }, + { (char*) "Asia/Aqtau" , 0x023947 }, + { (char*) "Asia/Aqtobe" , 0x023BC6 }, + { (char*) "Asia/Ashgabat" , 0x023E46 }, + { (char*) "Asia/Ashkhabad" , 0x023FC9 }, + { (char*) "Asia/Atyrau" , 0x02414C }, + { (char*) "Asia/Baghdad" , 0x0243D5 }, + { (char*) "Asia/Bahrain" , 0x024657 }, + { (char*) "Asia/Baku" , 0x024710 }, + { (char*) "Asia/Bangkok" , 0x024A04 }, + { (char*) "Asia/Barnaul" , 0x024AA8 }, + { (char*) "Asia/Beirut" , 0x024DB3 }, + { (char*) "Asia/Bishkek" , 0x02509B }, + { (char*) "Asia/Brunei" , 0x025311 }, + { (char*) "Asia/Calcutta" , 0x0253B7 }, + { (char*) "Asia/Chita" , 0x02549F }, + { (char*) "Asia/Choibalsan" , 0x0257AD }, + { (char*) "Asia/Chongqing" , 0x025A0B }, + { (char*) "Asia/Chungking" , 0x025BA0 }, + { (char*) "Asia/Colombo" , 0x025D35 }, + { (char*) "Asia/Dacca" , 0x025E38 }, + { (char*) "Asia/Damascus" , 0x025F2B }, + { (char*) "Asia/Dhaka" , 0x026409 }, + { (char*) "Asia/Dili" , 0x0264FC }, + { (char*) "Asia/Dubai" , 0x0265B2 }, + { (char*) "Asia/Dushanbe" , 0x026643 }, + { (char*) "Asia/Famagusta" , 0x0267BD }, + { (char*) "Asia/Gaza" , 0x026B84 }, + { (char*) "Asia/Harbin" , 0x027720 }, + { (char*) "Asia/Hebron" , 0x0278B5 }, + { (char*) "Asia/Ho_Chi_Minh" , 0x028462 }, + { (char*) "Asia/Hong_Kong" , 0x028556 }, + { (char*) "Asia/Hovd" , 0x028869 }, + { (char*) "Asia/Irkutsk" , 0x028ADD }, + { (char*) "Asia/Istanbul" , 0x028DFB }, + { (char*) "Asia/Jakarta" , 0x0292B7 }, + { (char*) "Asia/Jayapura" , 0x0293C8 }, + { (char*) "Asia/Jerusalem" , 0x0294B5 }, + { (char*) "Asia/Kabul" , 0x0298F3 }, + { (char*) "Asia/Kamchatka" , 0x02999E }, + { (char*) "Asia/Karachi" , 0x029C93 }, + { (char*) "Asia/Kashgar" , 0x029DA9 }, + { (char*) "Asia/Kathmandu" , 0x029E3A }, + { (char*) "Asia/Katmandu" , 0x029EE7 }, + { (char*) "Asia/Khandyga" , 0x029F94 }, + { (char*) "Asia/Kolkata" , 0x02A2C5 }, + { (char*) "Asia/Krasnoyarsk" , 0x02A3AD }, + { (char*) "Asia/Kuala_Lumpur" , 0x02A6B7 }, + { (char*) "Asia/Kuching" , 0x02A7D7 }, + { (char*) "Asia/Kuwait" , 0x02A931 }, + { (char*) "Asia/Macao" , 0x02A9C2 }, + { (char*) "Asia/Macau" , 0x02ACE5 }, + { (char*) "Asia/Magadan" , 0x02B008 }, + { (char*) "Asia/Makassar" , 0x02B313 }, + { (char*) "Asia/Manila" , 0x02B426 }, + { (char*) "Asia/Muscat" , 0x02B544 }, + { (char*) "Asia/Nicosia" , 0x02B5D5 }, + { (char*) "Asia/Novokuznetsk" , 0x02B844 }, + { (char*) "Asia/Novosibirsk" , 0x02BB37 }, + { (char*) "Asia/Omsk" , 0x02BE48 }, + { (char*) "Asia/Oral" , 0x02C146 }, + { (char*) "Asia/Phnom_Penh" , 0x02C3D2 }, + { (char*) "Asia/Pontianak" , 0x02C4A2 }, + { (char*) "Asia/Pyongyang" , 0x02C5BB }, + { (char*) "Asia/Qatar" , 0x02C67E }, + { (char*) "Asia/Qostanay" , 0x02C722 }, + { (char*) "Asia/Qyzylorda" , 0x02C9B8 }, + { (char*) "Asia/Rangoon" , 0x02CC51 }, + { (char*) "Asia/Riyadh" , 0x02CD18 }, + { (char*) "Asia/Saigon" , 0x02CDA9 }, + { (char*) "Asia/Sakhalin" , 0x02CE9D }, + { (char*) "Asia/Samarkand" , 0x02D1B4 }, + { (char*) "Asia/Seoul" , 0x02D33F }, + { (char*) "Asia/Shanghai" , 0x02D4EA }, + { (char*) "Asia/Singapore" , 0x02D68B }, + { (char*) "Asia/Srednekolymsk" , 0x02D797 }, + { (char*) "Asia/Taipei" , 0x02DAA7 }, + { (char*) "Asia/Tashkent" , 0x02DCB2 }, + { (char*) "Asia/Tbilisi" , 0x02DE3D }, + { (char*) "Asia/Tehran" , 0x02E0B5 }, + { (char*) "Asia/Tel_Aviv" , 0x02E3ED }, + { (char*) "Asia/Thimbu" , 0x02E82B }, + { (char*) "Asia/Thimphu" , 0x02E8D1 }, + { (char*) "Asia/Tokyo" , 0x02E977 }, + { (char*) "Asia/Tomsk" , 0x02EA58 }, + { (char*) "Asia/Ujung_Pandang" , 0x02ED63 }, + { (char*) "Asia/Ulaanbaatar" , 0x02EE2D }, + { (char*) "Asia/Ulan_Bator" , 0x02F09B }, + { (char*) "Asia/Urumqi" , 0x02F2F9 }, + { (char*) "Asia/Ust-Nera" , 0x02F397 }, + { (char*) "Asia/Vientiane" , 0x02F6BA }, + { (char*) "Asia/Vladivostok" , 0x02F79C }, + { (char*) "Asia/Yakutsk" , 0x02FAA1 }, + { (char*) "Asia/Yangon" , 0x02FDA5 }, + { (char*) "Asia/Yekaterinburg" , 0x02FE6C }, + { (char*) "Asia/Yerevan" , 0x03017E }, + { (char*) "Atlantic/Azores" , 0x03044E }, + { (char*) "Atlantic/Bermuda" , 0x0309D9 }, + { (char*) "Atlantic/Canary" , 0x030DE5 }, + { (char*) "Atlantic/Cape_Verde" , 0x030FDD }, + { (char*) "Atlantic/Faeroe" , 0x031098 }, + { (char*) "Atlantic/Faroe" , 0x03125D }, + { (char*) "Atlantic/Jan_Mayen" , 0x031422 }, + { (char*) "Atlantic/Madeira" , 0x0316EF }, + { (char*) "Atlantic/Reykjavik" , 0x031C66 }, + { (char*) "Atlantic/South_Georgia" , 0x031F63 }, + { (char*) "Atlantic/St_Helena" , 0x031FF3 }, + { (char*) "Atlantic/Stanley" , 0x032094 }, + { (char*) "Australia/ACT" , 0x0323B5 }, + { (char*) "Australia/Adelaide" , 0x032749 }, + { (char*) "Australia/Brisbane" , 0x032AFD }, + { (char*) "Australia/Broken_Hill" , 0x032C41 }, + { (char*) "Australia/Canberra" , 0x033016 }, + { (char*) "Australia/Currie" , 0x0333AA }, + { (char*) "Australia/Darwin" , 0x0337A1 }, + { (char*) "Australia/Eucla" , 0x0338A9 }, + { (char*) "Australia/Hobart" , 0x033A08 }, + { (char*) "Australia/LHI" , 0x033E07 }, + { (char*) "Australia/Lindeman" , 0x0340C7 }, + { (char*) "Australia/Lord_Howe" , 0x034237 }, + { (char*) "Australia/Melbourne" , 0x034507 }, + { (char*) "Australia/North" , 0x0348A3 }, + { (char*) "Australia/NSW" , 0x034999 }, + { (char*) "Australia/Perth" , 0x034D2D }, + { (char*) "Australia/Queensland" , 0x034E89 }, + { (char*) "Australia/South" , 0x034FB6 }, + { (char*) "Australia/Sydney" , 0x03535B }, + { (char*) "Australia/Tasmania" , 0x03570B }, + { (char*) "Australia/Victoria" , 0x035B02 }, + { (char*) "Australia/West" , 0x035E96 }, + { (char*) "Australia/Yancowinna" , 0x035FD4 }, + { (char*) "Brazil/Acre" , 0x03638D }, + { (char*) "Brazil/DeNoronha" , 0x03653B }, + { (char*) "Brazil/East" , 0x03672B }, + { (char*) "Brazil/West" , 0x036AEF }, + { (char*) "Canada/Atlantic" , 0x036C97 }, + { (char*) "Canada/Central" , 0x03732B }, + { (char*) "Canada/Eastern" , 0x037845 }, + { (char*) "Canada/Mountain" , 0x037F06 }, + { (char*) "Canada/Newfoundland" , 0x038433 }, + { (char*) "Canada/Pacific" , 0x038B95 }, + { (char*) "Canada/Saskatchewan" , 0x03922A }, + { (char*) "Canada/Yukon" , 0x0394B4 }, + { (char*) "CET" , 0x0398C5 }, + { (char*) "Chile/Continental" , 0x039D20 }, + { (char*) "Chile/EasterIsland" , 0x03A276 }, + { (char*) "CST6CDT" , 0x03A718 }, + { (char*) "Cuba" , 0x03ADFE }, + { (char*) "EET" , 0x03B267 }, + { (char*) "Egypt" , 0x03B51D }, + { (char*) "Eire" , 0x03BA46 }, + { (char*) "EST" , 0x03C02A }, + { (char*) "EST5EDT" , 0x03C0CB }, + { (char*) "Etc/GMT" , 0x03C7A7 }, + { (char*) "Etc/GMT+0" , 0x03C822 }, + { (char*) "Etc/GMT+1" , 0x03C89D }, + { (char*) "Etc/GMT+10" , 0x03C91A }, + { (char*) "Etc/GMT+11" , 0x03C998 }, + { (char*) "Etc/GMT+12" , 0x03CA16 }, + { (char*) "Etc/GMT+2" , 0x03CA94 }, + { (char*) "Etc/GMT+3" , 0x03CB11 }, + { (char*) "Etc/GMT+4" , 0x03CB8E }, + { (char*) "Etc/GMT+5" , 0x03CC0B }, + { (char*) "Etc/GMT+6" , 0x03CC88 }, + { (char*) "Etc/GMT+7" , 0x03CD05 }, + { (char*) "Etc/GMT+8" , 0x03CD82 }, + { (char*) "Etc/GMT+9" , 0x03CDFF }, + { (char*) "Etc/GMT-0" , 0x03CE7C }, + { (char*) "Etc/GMT-1" , 0x03CEF7 }, + { (char*) "Etc/GMT-10" , 0x03CF75 }, + { (char*) "Etc/GMT-11" , 0x03CFF4 }, + { (char*) "Etc/GMT-12" , 0x03D073 }, + { (char*) "Etc/GMT-13" , 0x03D0F2 }, + { (char*) "Etc/GMT-14" , 0x03D171 }, + { (char*) "Etc/GMT-2" , 0x03D1F0 }, + { (char*) "Etc/GMT-3" , 0x03D26E }, + { (char*) "Etc/GMT-4" , 0x03D2EC }, + { (char*) "Etc/GMT-5" , 0x03D36A }, + { (char*) "Etc/GMT-6" , 0x03D3E8 }, + { (char*) "Etc/GMT-7" , 0x03D466 }, + { (char*) "Etc/GMT-8" , 0x03D4E4 }, + { (char*) "Etc/GMT-9" , 0x03D562 }, + { (char*) "Etc/GMT0" , 0x03D5E0 }, + { (char*) "Etc/Greenwich" , 0x03D65B }, + { (char*) "Etc/UCT" , 0x03D6D6 }, + { (char*) "Etc/Universal" , 0x03D751 }, + { (char*) "Etc/UTC" , 0x03D7CC }, + { (char*) "Etc/Zulu" , 0x03D847 }, + { (char*) "Europe/Amsterdam" , 0x03D8C2 }, + { (char*) "Europe/Andorra" , 0x03DCFD }, + { (char*) "Europe/Astrakhan" , 0x03DE8E }, + { (char*) "Europe/Athens" , 0x03E182 }, + { (char*) "Europe/Belfast" , 0x03E438 }, + { (char*) "Europe/Belgrade" , 0x03EA83 }, + { (char*) "Europe/Berlin" , 0x03EC6D }, + { (char*) "Europe/Bratislava" , 0x03EF49 }, + { (char*) "Europe/Brussels" , 0x03F228 }, + { (char*) "Europe/Bucharest" , 0x03F683 }, + { (char*) "Europe/Budapest" , 0x03F924 }, + { (char*) "Europe/Busingen" , 0x03FC2E }, + { (char*) "Europe/Chisinau" , 0x03FE33 }, + { (char*) "Europe/Copenhagen" , 0x0402F6 }, + { (char*) "Europe/Dublin" , 0x040571 }, + { (char*) "Europe/Gibraltar" , 0x040B55 }, + { (char*) "Europe/Guernsey" , 0x041025 }, + { (char*) "Europe/Helsinki" , 0x04167C }, + { (char*) "Europe/Isle_of_Man" , 0x041869 }, + { (char*) "Europe/Istanbul" , 0x041EB4 }, + { (char*) "Europe/Jersey" , 0x042370 }, + { (char*) "Europe/Kaliningrad" , 0x0429C7 }, + { (char*) "Europe/Kiev" , 0x042D6F }, + { (char*) "Europe/Kirov" , 0x042FA9 }, + { (char*) "Europe/Kyiv" , 0x0432A2 }, + { (char*) "Europe/Lisbon" , 0x0434EB }, + { (char*) "Europe/Ljubljana" , 0x043AC1 }, + { (char*) "Europe/London" , 0x043CAB }, + { (char*) "Europe/Luxembourg" , 0x0442F6 }, + { (char*) "Europe/Madrid" , 0x044741 }, + { (char*) "Europe/Malta" , 0x044ADE }, + { (char*) "Europe/Mariehamn" , 0x044E8A }, + { (char*) "Europe/Minsk" , 0x045077 }, + { (char*) "Europe/Monaco" , 0x0453AB }, + { (char*) "Europe/Moscow" , 0x045811 }, + { (char*) "Europe/Nicosia" , 0x045BBD }, + { (char*) "Europe/Oslo" , 0x045E1E }, + { (char*) "Europe/Paris" , 0x0460CE }, + { (char*) "Europe/Podgorica" , 0x04652B }, + { (char*) "Europe/Prague" , 0x046715 }, + { (char*) "Europe/Riga" , 0x0469F4 }, + { (char*) "Europe/Rome" , 0x046CB6 }, + { (char*) "Europe/Samara" , 0x047075 }, + { (char*) "Europe/San_Marino" , 0x047376 }, + { (char*) "Europe/Sarajevo" , 0x047735 }, + { (char*) "Europe/Saratov" , 0x04791F }, + { (char*) "Europe/Simferopol" , 0x047C11 }, + { (char*) "Europe/Skopje" , 0x047F84 }, + { (char*) "Europe/Sofia" , 0x04816E }, + { (char*) "Europe/Stockholm" , 0x0483CA }, + { (char*) "Europe/Tallinn" , 0x0485C7 }, + { (char*) "Europe/Tirane" , 0x048876 }, + { (char*) "Europe/Tiraspol" , 0x048ADE }, + { (char*) "Europe/Ulyanovsk" , 0x048FA1 }, + { (char*) "Europe/Uzhgorod" , 0x0492B7 }, + { (char*) "Europe/Vaduz" , 0x0494F1 }, + { (char*) "Europe/Vatican" , 0x0496DB }, + { (char*) "Europe/Vienna" , 0x049A9A }, + { (char*) "Europe/Vilnius" , 0x049D38 }, + { (char*) "Europe/Volgograd" , 0x049FE8 }, + { (char*) "Europe/Warsaw" , 0x04A2F7 }, + { (char*) "Europe/Zagreb" , 0x04A69E }, + { (char*) "Europe/Zaporozhye" , 0x04A888 }, + { (char*) "Europe/Zurich" , 0x04AAC2 }, + { (char*) "Factory" , 0x04ACBF }, + { (char*) "GB" , 0x04AD3C }, + { (char*) "GB-Eire" , 0x04B387 }, + { (char*) "GMT" , 0x04B9D2 }, + { (char*) "GMT+0" , 0x04BA4D }, + { (char*) "GMT-0" , 0x04BAC8 }, + { (char*) "GMT0" , 0x04BB43 }, + { (char*) "Greenwich" , 0x04BBBE }, + { (char*) "Hongkong" , 0x04BC39 }, + { (char*) "HST" , 0x04BF4C }, + { (char*) "Iceland" , 0x04C035 }, + { (char*) "Indian/Antananarivo" , 0x04C0C3 }, + { (char*) "Indian/Chagos" , 0x04C16F }, + { (char*) "Indian/Christmas" , 0x04C213 }, + { (char*) "Indian/Cocos" , 0x04C2A4 }, + { (char*) "Indian/Comoro" , 0x04C33C }, + { (char*) "Indian/Kerguelen" , 0x04C3CB }, + { (char*) "Indian/Mahe" , 0x04C45C }, + { (char*) "Indian/Maldives" , 0x04C4ED }, + { (char*) "Indian/Mauritius" , 0x04C591 }, + { (char*) "Indian/Mayotte" , 0x04C650 }, + { (char*) "Indian/Reunion" , 0x04C6DF }, + { (char*) "Iran" , 0x04C770 }, + { (char*) "Israel" , 0x04CAA8 }, + { (char*) "Jamaica" , 0x04CEE6 }, + { (char*) "Japan" , 0x04D045 }, + { (char*) "Kwajalein" , 0x04D126 }, + { (char*) "Libya" , 0x04D20D }, + { (char*) "MET" , 0x04D3C8 }, + { (char*) "Mexico/BajaNorte" , 0x04D823 }, + { (char*) "Mexico/BajaSur" , 0x04DD86 }, + { (char*) "Mexico/General" , 0x04E044 }, + { (char*) "MST" , 0x04E355 }, + { (char*) "MST7MDT" , 0x04E451 }, + { (char*) "Navajo" , 0x04E86F }, + { (char*) "NZ" , 0x04EC8D }, + { (char*) "NZ-CHAT" , 0x04F0AC }, + { (char*) "Pacific/Apia" , 0x04F3E0 }, + { (char*) "Pacific/Auckland" , 0x04F583 }, + { (char*) "Pacific/Bougainville" , 0x04F9B5 }, + { (char*) "Pacific/Chatham" , 0x04FA96 }, + { (char*) "Pacific/Chuuk" , 0x04FDD9 }, + { (char*) "Pacific/Easter" , 0x04FEB7 }, + { (char*) "Pacific/Efate" , 0x050366 }, + { (char*) "Pacific/Enderbury" , 0x0504C8 }, + { (char*) "Pacific/Fakaofo" , 0x050580 }, + { (char*) "Pacific/Fiji" , 0x050625 }, + { (char*) "Pacific/Funafuti" , 0x0507BD }, + { (char*) "Pacific/Galapagos" , 0x05084F }, + { (char*) "Pacific/Gambier" , 0x05091B }, + { (char*) "Pacific/Guadalcanal" , 0x0509BA }, + { (char*) "Pacific/Guam" , 0x050A4C }, + { (char*) "Pacific/Honolulu" , 0x050BB6 }, + { (char*) "Pacific/Johnston" , 0x050CA5 }, + { (char*) "Pacific/Kanton" , 0x050D8E }, + { (char*) "Pacific/Kiritimati" , 0x050E55 }, + { (char*) "Pacific/Kosrae" , 0x050F1B }, + { (char*) "Pacific/Kwajalein" , 0x05101F }, + { (char*) "Pacific/Majuro" , 0x05110F }, + { (char*) "Pacific/Marquesas" , 0x05120D }, + { (char*) "Pacific/Midway" , 0x0512B5 }, + { (char*) "Pacific/Nauru" , 0x051378 }, + { (char*) "Pacific/Niue" , 0x05143B }, + { (char*) "Pacific/Norfolk" , 0x0514E1 }, + { (char*) "Pacific/Noumea" , 0x0515DA }, + { (char*) "Pacific/Pago_Pago" , 0x0516AC }, + { (char*) "Pacific/Palau" , 0x05174A }, + { (char*) "Pacific/Pitcairn" , 0x0517EA }, + { (char*) "Pacific/Pohnpei" , 0x05188F }, + { (char*) "Pacific/Ponape" , 0x05197F }, + { (char*) "Pacific/Port_Moresby" , 0x051A11 }, + { (char*) "Pacific/Rarotonga" , 0x051ACF }, + { (char*) "Pacific/Saipan" , 0x051C71 }, + { (char*) "Pacific/Samoa" , 0x051DD2 }, + { (char*) "Pacific/Tahiti" , 0x051E70 }, + { (char*) "Pacific/Tarawa" , 0x051F10 }, + { (char*) "Pacific/Tongatapu" , 0x051FB1 }, + { (char*) "Pacific/Truk" , 0x0520AA }, + { (char*) "Pacific/Wake" , 0x052150 }, + { (char*) "Pacific/Wallis" , 0x0521ED }, + { (char*) "Pacific/Yap" , 0x05227F }, + { (char*) "Poland" , 0x052325 }, + { (char*) "Portugal" , 0x0526CC }, + { (char*) "PRC" , 0x052C8F }, + { (char*) "PST8PDT" , 0x052E24 }, + { (char*) "ROC" , 0x05333E }, + { (char*) "ROK" , 0x053549 }, + { (char*) "Singapore" , 0x0536F4 }, + { (char*) "Turkey" , 0x053800 }, + { (char*) "UCT" , 0x053CBC }, + { (char*) "Universal" , 0x053D37 }, + { (char*) "US/Alaska" , 0x053DB2 }, + { (char*) "US/Aleutian" , 0x05418F }, + { (char*) "US/Arizona" , 0x054564 }, + { (char*) "US/Central" , 0x054660 }, + { (char*) "US/East-Indiana" , 0x054D46 }, + { (char*) "US/Eastern" , 0x054F65 }, + { (char*) "US/Hawaii" , 0x055641 }, + { (char*) "US/Indiana-Starke" , 0x05572A }, + { (char*) "US/Michigan" , 0x055B2E }, + { (char*) "US/Mountain" , 0x055EBD }, + { (char*) "US/Pacific" , 0x0562DB }, + { (char*) "US/Samoa" , 0x0567F5 }, + { (char*) "UTC" , 0x056893 }, + { (char*) "W-SU" , 0x05690E }, + { (char*) "WET" , 0x056CA6 }, + { (char*) "Zulu" , 0x057269 }, }; -const unsigned char timelib_timezone_db_data_builtin[357654] = { +const unsigned char timelib_timezone_db_data_builtin[357092] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -919,7 +919,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0x51, 0xF9, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0xFF, 0x14, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xAC, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xD9, 0xED, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xA1, 0x32, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x35, 0xA4, 0x00, 0xFF, @@ -955,86 +955,16 @@ 0x00, 0x00, 0x00, 0x64, 0x44, 0x91, 0x20, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x14, 0x20, 0x00, 0x00, 0x00, 0x00, 0x66, 0x1B, 0x38, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xBA, 0x81, 0x20, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x69, 0x91, 0x28, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x69, 0xBF, 0x4D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x67, 0xD0, 0x20, 0x00, -0x00, 0x00, 0x00, 0x6B, 0x95, 0xF4, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x35, 0x3D, 0x20, 0x00, -0x00, 0x00, 0x00, 0x6D, 0x6C, 0x9C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x0B, 0xE4, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x6F, 0x3A, 0x09, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70, 0xD9, 0x51, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x71, 0x10, 0xB0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x72, 0xAF, 0xF9, 0x20, 0x00, -0x00, 0x00, 0x00, 0x72, 0xDE, 0x1D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x86, 0xA0, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x74, 0xB4, 0xC5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x76, 0x54, 0x0D, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x76, 0x8B, 0x6C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x2A, 0xB5, 0x20, 0x00, -0x00, 0x00, 0x00, 0x78, 0x58, 0xD9, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x22, 0x20, 0x00, -0x00, 0x00, 0x00, 0x7A, 0x2F, 0x81, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xC9, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x7C, 0x06, 0x28, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xA5, 0x71, 0x20, 0x00, -0x00, 0x00, 0x00, 0x7D, 0xD3, 0x95, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x72, 0xDE, 0x20, 0x00, -0x00, 0x00, 0x00, 0x7F, 0xAA, 0x3D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x81, 0x49, 0x85, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x81, 0x77, 0xAA, 0x20, 0x00, 0x00, 0x00, 0x00, 0x83, 0x20, 0x2D, 0x20, 0x00, -0x00, 0x00, 0x00, 0x83, 0x4E, 0x51, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x84, 0xED, 0x9A, 0x20, 0x00, -0x00, 0x00, 0x00, 0x85, 0x24, 0xF9, 0x20, 0x00, 0x00, 0x00, 0x00, 0x86, 0xC4, 0x41, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x86, 0xF2, 0x66, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x91, 0xAE, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x88, 0xC9, 0x0D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x68, 0x56, 0x20, 0x00, -0x00, 0x00, 0x00, 0x8A, 0x9F, 0xB5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x3E, 0xFD, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x8C, 0x6D, 0x22, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x0C, 0x6A, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x8E, 0x43, 0xC9, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xE3, 0x12, 0x20, 0x00, -0x00, 0x00, 0x00, 0x90, 0x11, 0x36, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x91, 0xB9, 0xB9, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x91, 0xE7, 0xDE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x93, 0x87, 0x26, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x93, 0xBE, 0x85, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x95, 0x5D, 0xCE, 0x20, 0x00, -0x00, 0x00, 0x00, 0x95, 0x8B, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x97, 0x2B, 0x3B, 0x20, 0x00, -0x00, 0x00, 0x00, 0x97, 0x62, 0x9A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x99, 0x01, 0xE2, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x99, 0x39, 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xD8, 0x8A, 0x20, 0x00, -0x00, 0x00, 0x00, 0x9B, 0x06, 0xAE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xA5, 0xF7, 0x20, 0x00, -0x00, 0x00, 0x00, 0x9C, 0xDD, 0x56, 0x20, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x7C, 0x9E, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x9E, 0xAA, 0xC3, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x53, 0x46, 0x20, 0x00, -0x00, 0x00, 0x00, 0xA0, 0x81, 0x6A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x20, 0xB3, 0x20, 0x00, -0x00, 0x00, 0x00, 0xA2, 0x58, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA3, 0xF7, 0x5A, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xA4, 0x25, 0x7F, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xC4, 0xC7, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xA5, 0xFC, 0x26, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x9B, 0x6F, 0x20, 0x00, -0x00, 0x00, 0x00, 0xA7, 0xD2, 0xCE, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x72, 0x16, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xA9, 0xA0, 0x3B, 0x20, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x3F, 0x83, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xAB, 0x76, 0xE2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x16, 0x2B, 0x20, 0x00, -0x00, 0x00, 0x00, 0xAD, 0x44, 0x4F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xEC, 0xD2, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xAF, 0x1A, 0xF7, 0x20, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xBA, 0x3F, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xB0, 0xF1, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x90, 0xE7, 0x20, 0x00, -0x00, 0x00, 0x00, 0xB2, 0xBF, 0x0B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x5E, 0x54, 0x20, 0x00, -0x00, 0x00, 0x00, 0xB4, 0x95, 0xB3, 0x20, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x34, 0xFB, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xB6, 0x6C, 0x5A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x0B, 0xA3, 0x20, 0x00, -0x00, 0x00, 0x00, 0xB8, 0x39, 0xC7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xD9, 0x10, 0x20, 0x00, -0x00, 0x00, 0x00, 0xBA, 0x10, 0x6F, 0x20, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xAF, 0xB7, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xBB, 0xDD, 0xDC, 0x20, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x86, 0x5F, 0x20, 0x00, -0x00, 0x00, 0x00, 0xBD, 0xB4, 0x83, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x53, 0xCC, 0x20, 0x00, -0x00, 0x00, 0x00, 0xBF, 0x8B, 0x2B, 0x20, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x2A, 0x73, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xC1, 0x58, 0x98, 0x20, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xF7, 0xE0, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xC3, 0x2F, 0x3F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xCE, 0x88, 0x20, 0x00, -0x00, 0x00, 0x00, 0xC5, 0x05, 0xE7, 0x20, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xA5, 0x2F, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xC6, 0xD3, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x72, 0x9C, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xC8, 0xA9, 0xFB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x49, 0x44, 0x20, 0x00, -0x00, 0x00, 0x00, 0xCA, 0x77, 0x68, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x1F, 0xEB, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xCC, 0x4E, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xED, 0x58, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xCE, 0x24, 0xB7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xC4, 0x00, 0x20, 0x00, -0x00, 0x00, 0x00, 0xCF, 0xF2, 0x24, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x91, 0x6D, 0x20, 0x00, -0x00, 0x00, 0x00, 0xD1, 0xC8, 0xCC, 0x20, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x68, 0x14, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xD3, 0x96, 0x39, 0x20, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x3E, 0xBC, 0x20, 0x00, -0x00, 0x00, 0x00, 0xD5, 0x6C, 0xE0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x0C, 0x29, 0x20, 0x00, -0x00, 0x00, 0x00, 0xD7, 0x43, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xE2, 0xD0, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xD9, 0x10, 0xF5, 0x20, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xB9, 0x78, 0x20, 0x00, -0x00, 0x00, 0x00, 0xDA, 0xE7, 0x9C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x86, 0xE5, 0x20, 0x00, -0x00, 0x00, 0x00, 0xDC, 0xBE, 0x44, 0x20, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 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, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, 0xFF, 0xF8, 0xE4, -0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, -0x31, 0x00, 0x2B, 0x30, 0x30, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x31, 0x3E, 0x2D, 0x31, 0x0A, 0x00, -0xBC, 0xAC, 0xC8, 0x01, 0x07, 0x16, 0x42, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x69, 0xBF, 0x4D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xAF, 0x30, 0x10, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x03, 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, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x02, 0xFF, 0xFF, 0xF8, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x0E, +0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, +0x00, 0x00, 0x00, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x30, +0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x30, 0x3E, 0x30, 0x0A, 0x00, 0xBC, 0xAC, 0xC8, 0x01, 0x07, 0x16, +0x42, 0x00, 0x00, 0x00, 0x00, /* Africa/Ceuta */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1142,7 +1072,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x48, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xD1, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE8, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x61, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC9, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x8E, 0xF2, 0x70, 0x00, @@ -1173,86 +1103,15 @@ 0x00, 0x00, 0x00, 0x65, 0xED, 0x14, 0x20, 0x00, 0x00, 0x00, 0x00, 0x66, 0x1B, 0x38, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xBA, 0x81, 0x20, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x69, 0x91, 0x28, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xBF, 0x4D, 0x20, 0x00, -0x00, 0x00, 0x00, 0x6B, 0x67, 0xD0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x95, 0xF4, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x6D, 0x35, 0x3D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x6C, 0x9C, 0x20, 0x00, -0x00, 0x00, 0x00, 0x6F, 0x0B, 0xE4, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x3A, 0x09, 0x20, 0x00, -0x00, 0x00, 0x00, 0x70, 0xD9, 0x51, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x10, 0xB0, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x72, 0xAF, 0xF9, 0x20, 0x00, 0x00, 0x00, 0x00, 0x72, 0xDE, 0x1D, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x74, 0x86, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xB4, 0xC5, 0x20, 0x00, -0x00, 0x00, 0x00, 0x76, 0x54, 0x0D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x76, 0x8B, 0x6C, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x78, 0x2A, 0xB5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x78, 0x58, 0xD9, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x79, 0xF8, 0x22, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x2F, 0x81, 0x20, 0x00, -0x00, 0x00, 0x00, 0x7B, 0xCE, 0xC9, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x06, 0x28, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x7D, 0xA5, 0x71, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xD3, 0x95, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x7F, 0x72, 0xDE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xAA, 0x3D, 0x20, 0x00, -0x00, 0x00, 0x00, 0x81, 0x49, 0x85, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x81, 0x77, 0xAA, 0x20, 0x00, -0x00, 0x00, 0x00, 0x83, 0x20, 0x2D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x83, 0x4E, 0x51, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x84, 0xED, 0x9A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x85, 0x24, 0xF9, 0x20, 0x00, -0x00, 0x00, 0x00, 0x86, 0xC4, 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x86, 0xF2, 0x66, 0x20, 0x00, -0x00, 0x00, 0x00, 0x88, 0x91, 0xAE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x88, 0xC9, 0x0D, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x8A, 0x68, 0x56, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x9F, 0xB5, 0x20, 0x00, -0x00, 0x00, 0x00, 0x8C, 0x3E, 0xFD, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x6D, 0x22, 0x20, 0x00, -0x00, 0x00, 0x00, 0x8E, 0x0C, 0x6A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x43, 0xC9, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x8F, 0xE3, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x90, 0x11, 0x36, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x91, 0xB9, 0xB9, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x91, 0xE7, 0xDE, 0x20, 0x00, -0x00, 0x00, 0x00, 0x93, 0x87, 0x26, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x93, 0xBE, 0x85, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x95, 0x5D, 0xCE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x95, 0x8B, 0xF2, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x97, 0x2B, 0x3B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x97, 0x62, 0x9A, 0x20, 0x00, -0x00, 0x00, 0x00, 0x99, 0x01, 0xE2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x99, 0x39, 0x41, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x9A, 0xD8, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x06, 0xAE, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x9C, 0xA5, 0xF7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xDD, 0x56, 0x20, 0x00, -0x00, 0x00, 0x00, 0x9E, 0x7C, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9E, 0xAA, 0xC3, 0x20, 0x00, -0x00, 0x00, 0x00, 0xA0, 0x53, 0x46, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x81, 0x6A, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xA2, 0x20, 0xB3, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x58, 0x12, 0x20, 0x00, -0x00, 0x00, 0x00, 0xA3, 0xF7, 0x5A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x25, 0x7F, 0x20, 0x00, -0x00, 0x00, 0x00, 0xA5, 0xC4, 0xC7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xFC, 0x26, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xA7, 0x9B, 0x6F, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xD2, 0xCE, 0x20, 0x00, -0x00, 0x00, 0x00, 0xA9, 0x72, 0x16, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xA0, 0x3B, 0x20, 0x00, -0x00, 0x00, 0x00, 0xAB, 0x3F, 0x83, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x76, 0xE2, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xAD, 0x16, 0x2B, 0x20, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x44, 0x4F, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xAE, 0xEC, 0xD2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x1A, 0xF7, 0x20, 0x00, -0x00, 0x00, 0x00, 0xB0, 0xBA, 0x3F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xF1, 0x9E, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xB2, 0x90, 0xE7, 0x20, 0x00, 0x00, 0x00, 0x00, 0xB2, 0xBF, 0x0B, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xB4, 0x5E, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x95, 0xB3, 0x20, 0x00, -0x00, 0x00, 0x00, 0xB6, 0x34, 0xFB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x6C, 0x5A, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xB8, 0x0B, 0xA3, 0x20, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x39, 0xC7, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xB9, 0xD9, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x10, 0x6F, 0x20, 0x00, -0x00, 0x00, 0x00, 0xBB, 0xAF, 0xB7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xDD, 0xDC, 0x20, 0x00, -0x00, 0x00, 0x00, 0xBD, 0x86, 0x5F, 0x20, 0x00, 0x00, 0x00, 0x00, 0xBD, 0xB4, 0x83, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xBF, 0x53, 0xCC, 0x20, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x8B, 0x2B, 0x20, 0x00, -0x00, 0x00, 0x00, 0xC1, 0x2A, 0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x58, 0x98, 0x20, 0x00, -0x00, 0x00, 0x00, 0xC2, 0xF7, 0xE0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x2F, 0x3F, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xC4, 0xCE, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x05, 0xE7, 0x20, 0x00, -0x00, 0x00, 0x00, 0xC6, 0xA5, 0x2F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xD3, 0x54, 0x20, 0x00, -0x00, 0x00, 0x00, 0xC8, 0x72, 0x9C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xA9, 0xFB, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xCA, 0x49, 0x44, 0x20, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x77, 0x68, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xCC, 0x1F, 0xEB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x4E, 0x10, 0x20, 0x00, -0x00, 0x00, 0x00, 0xCD, 0xED, 0x58, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x24, 0xB7, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xCF, 0xC4, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xF2, 0x24, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xD1, 0x91, 0x6D, 0x20, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xC8, 0xCC, 0x20, 0x00, -0x00, 0x00, 0x00, 0xD3, 0x68, 0x14, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x96, 0x39, 0x20, 0x00, -0x00, 0x00, 0x00, 0xD5, 0x3E, 0xBC, 0x20, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x6C, 0xE0, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xD7, 0x0C, 0x29, 0x20, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x43, 0x88, 0x20, 0x00, -0x00, 0x00, 0x00, 0xD8, 0xE2, 0xD0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xD9, 0x10, 0xF5, 0x20, 0x00, -0x00, 0x00, 0x00, 0xDA, 0xB9, 0x78, 0x20, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xE7, 0x9C, 0xA0, 0x00, -0x00, 0x00, 0x00, 0xDC, 0x86, 0xE5, 0x20, 0x00, 0x00, 0x00, 0x00, 0xDC, 0xBE, 0x44, 0x20, 0x01, +0x00, 0x00, 0x00, 0x6A, 0xAF, 0x30, 0x10, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, -0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 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, 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, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF, -0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, -0x0C, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x2D, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x30, 0x00, 0x0A, 0x3C, 0x2B, -0x30, 0x31, 0x3E, 0x2D, 0x31, 0x0A, 0x00, 0xB2, 0xC1, 0xB8, 0x00, 0xFE, 0x84, 0x40, 0x00, 0x00, -0x00, 0x00, +0x03, 0x02, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x03, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, +0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, +0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, +0x2B, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x30, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x30, 0x3E, 0x30, 0x0A, +0x00, 0xB2, 0xC1, 0xB8, 0x00, 0xFE, 0x84, 0x40, 0x00, 0x00, 0x00, 0x00, /* Africa/Freetown */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -4186,7 +4045,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0xDE, 0xCE, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xAF, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x98, 0x91, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xD2, 0x85, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x8A, 0xE8, 0x90, 0xFF, @@ -4231,20 +4090,41 @@ 0x00, 0x00, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x5F, 0x80, 0x00, -0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 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, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x7C, 0x00, 0x00, +0x00, 0x00, 0x00, 0x47, 0xD3, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x5E, 0x00, 0x00, +0x00, 0x00, 0x00, 0x49, 0xB3, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x40, 0x00, 0x00, +0x00, 0x00, 0x00, 0x4B, 0x9C, 0xA5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x5C, 0x80, 0x00, +0x00, 0x00, 0x00, 0x4D, 0x7C, 0x87, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x3E, 0x80, 0x00, +0x00, 0x00, 0x00, 0x4F, 0x5C, 0x69, 0x90, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x20, 0x80, 0x00, +0x00, 0x00, 0x00, 0x51, 0x3C, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x02, 0x80, 0x00, +0x00, 0x00, 0x00, 0x53, 0x1C, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xE4, 0x80, 0x00, +0x00, 0x00, 0x00, 0x54, 0xFC, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xC6, 0x80, 0x00, +0x00, 0x00, 0x00, 0x56, 0xE5, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xE3, 0x00, 0x00, +0x00, 0x00, 0x00, 0x58, 0xC5, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xC5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x5A, 0xA4, 0xF0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xA7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x89, 0x00, 0x00, +0x00, 0x00, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x6B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x87, 0x80, 0x00, +0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x69, 0x80, 0x00, +0x00, 0x00, 0x00, 0x64, 0x0D, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x4B, 0x80, 0x00, +0x00, 0x00, 0x00, 0x65, 0xED, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x2D, 0x80, 0x00, +0x00, 0x00, 0x00, 0x67, 0xCD, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x0F, 0x80, 0x00, +0x00, 0x00, 0x00, 0x69, 0xAD, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xF1, 0x80, 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, -0xFF, 0xFF, 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, -0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, -0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, -0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, -0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xDB, 0x0A, 0x38, 0x00, 0x65, -0x85, 0x95, 0x00, 0x00, 0x00, 0x22, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x2D, -0x20, 0x41, 0x42, 0x2C, 0x20, 0x42, 0x43, 0x28, 0x45, 0x29, 0x2C, 0x20, 0x4E, 0x54, 0x28, 0x45, -0x29, 0x2C, 0x20, 0x53, 0x4B, 0x28, 0x57, 0x29, +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, 0x05, 0xFF, +0xFF, 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, +0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, +0xA0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, +0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, +0x0A, 0x00, 0xDB, 0x0A, 0x38, 0x00, 0x65, 0x85, 0x95, 0x00, 0x00, 0x00, 0x1D, 0x43, 0x53, 0x54, +0x20, 0x2D, 0x20, 0x41, 0x42, 0x2C, 0x20, 0x42, 0x43, 0x28, 0x45, 0x29, 0x2C, 0x20, 0x4E, 0x54, +0x28, 0x45, 0x29, 0x2C, 0x20, 0x53, 0x4B, 0x28, 0x57, 0x29, /* America/Eirunepe */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9445,7 +9325,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3D, 0x76, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xBD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x15, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x26, 0x10, 0xFF, @@ -9510,7 +9390,27 @@ 0x00, 0x00, 0x00, 0x40, 0x6F, 0xDC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0xA9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xBE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x8B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x6D, 0x90, 0x00, -0x00, 0x00, 0x00, 0x45, 0xF3, 0xD3, 0x20, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xD3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x8A, 0x10, 0x00, +0x00, 0x00, 0x00, 0x47, 0xD3, 0xB5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x6C, 0x10, 0x00, +0x00, 0x00, 0x00, 0x49, 0xB3, 0x97, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x4E, 0x10, 0x00, +0x00, 0x00, 0x00, 0x4B, 0x9C, 0xB3, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x6A, 0x90, 0x00, +0x00, 0x00, 0x00, 0x4D, 0x7C, 0x95, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x4C, 0x90, 0x00, +0x00, 0x00, 0x00, 0x4F, 0x5C, 0x77, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x2E, 0x90, 0x00, +0x00, 0x00, 0x00, 0x51, 0x3C, 0x59, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x10, 0x90, 0x00, +0x00, 0x00, 0x00, 0x53, 0x1C, 0x3B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xF2, 0x90, 0x00, +0x00, 0x00, 0x00, 0x54, 0xFC, 0x1D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xD4, 0x90, 0x00, +0x00, 0x00, 0x00, 0x56, 0xE5, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xF1, 0x10, 0x00, +0x00, 0x00, 0x00, 0x58, 0xC5, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xD3, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5A, 0xA4, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xB5, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5C, 0x84, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x97, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5E, 0x64, 0xC2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x79, 0x10, 0x00, +0x00, 0x00, 0x00, 0x60, 0x4D, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x95, 0x90, 0x00, +0x00, 0x00, 0x00, 0x62, 0x2D, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x77, 0x90, 0x00, +0x00, 0x00, 0x00, 0x64, 0x0D, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x59, 0x90, 0x00, +0x00, 0x00, 0x00, 0x65, 0xED, 0x84, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x3B, 0x90, 0x00, +0x00, 0x00, 0x00, 0x67, 0xCD, 0x66, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x1D, 0x90, 0x00, +0x00, 0x00, 0x00, 0x69, 0xAD, 0x48, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xFF, 0x90, 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, @@ -9518,14 +9418,15 @@ 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, 0xFF, 0xFF, 0x8C, 0x94, 0x00, 0x00, 0xFF, 0xFF, -0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, -0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, -0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x0A, 0x50, 0x53, 0x54, 0x38, 0x50, -0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, -0x30, 0x0A, 0x00, 0xD4, 0x81, 0x0A, 0x00, 0x56, 0xCC, 0x0D, 0x00, 0x00, 0x00, 0x19, 0x50, 0x61, -0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x2D, 0x20, 0x42, 0x43, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, -0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, +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, 0x05, 0xFF, 0xFF, 0x8C, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x9D, +0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, +0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x50, +0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x4D, +0x53, 0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x0A, 0x00, 0xD4, 0x81, 0x0A, 0x00, 0x56, 0xCC, +0x0D, 0x00, 0x00, 0x00, 0x15, 0x4D, 0x53, 0x54, 0x20, 0x2D, 0x20, 0x42, 0x43, 0x20, 0x28, 0x6D, +0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, /* America/Virgin */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9765,7 +9666,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0xDE, 0xCE, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xAF, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x98, 0x91, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xD2, 0x85, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x8A, 0xE8, 0x90, 0xFF, @@ -9810,18 +9711,39 @@ 0x00, 0x00, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x5F, 0x80, 0x00, -0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 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, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x7C, 0x00, 0x00, +0x00, 0x00, 0x00, 0x47, 0xD3, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x5E, 0x00, 0x00, +0x00, 0x00, 0x00, 0x49, 0xB3, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x40, 0x00, 0x00, +0x00, 0x00, 0x00, 0x4B, 0x9C, 0xA5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x5C, 0x80, 0x00, +0x00, 0x00, 0x00, 0x4D, 0x7C, 0x87, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x3E, 0x80, 0x00, +0x00, 0x00, 0x00, 0x4F, 0x5C, 0x69, 0x90, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x20, 0x80, 0x00, +0x00, 0x00, 0x00, 0x51, 0x3C, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x02, 0x80, 0x00, +0x00, 0x00, 0x00, 0x53, 0x1C, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xE4, 0x80, 0x00, +0x00, 0x00, 0x00, 0x54, 0xFC, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xC6, 0x80, 0x00, +0x00, 0x00, 0x00, 0x56, 0xE5, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xE3, 0x00, 0x00, +0x00, 0x00, 0x00, 0x58, 0xC5, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xC5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x5A, 0xA4, 0xF0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xA7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x89, 0x00, 0x00, +0x00, 0x00, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x6B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x87, 0x80, 0x00, +0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x69, 0x80, 0x00, +0x00, 0x00, 0x00, 0x64, 0x0D, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x4B, 0x80, 0x00, +0x00, 0x00, 0x00, 0x65, 0xED, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x2D, 0x80, 0x00, +0x00, 0x00, 0x00, 0x67, 0xCD, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x0F, 0x80, 0x00, +0x00, 0x00, 0x00, 0x69, 0xAD, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xF1, 0x80, 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, -0xFF, 0xFF, 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, -0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, -0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, -0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, -0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x05, 0xFF, +0xFF, 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, +0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, +0xA0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, +0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, +0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Antarctica/Casey */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -11681,17 +11603,17 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x43, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xB6, 0xF2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x2F, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3D, 0xC7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, -0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, -0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x4C, 0x4D, -0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, -0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0x99, 0xBB, 0x78, -0x01, 0xB5, 0x6B, 0x2A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x63, 0xF6, 0x00, 0x01, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, +0x00, 0x05, 0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0D, 0x50, 0x4C, +0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, +0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0x99, 0xBB, 0x78, 0x01, 0xB5, 0x6B, 0x2A, +0x00, 0x00, 0x00, 0x00, /* Asia/Hong_Kong */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x48, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -12775,15 +12697,15 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x15, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x45, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0x01, 0x02, 0x03, 0x04, 0x02, 0x00, 0x00, 0x62, 0x5C, -0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, -0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, -0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, -0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0x9A, 0xF3, 0xF8, 0x01, 0xB2, 0xBF, 0x92, -0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x05, 0x00, 0x00, +0x70, 0x80, 0x00, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0D, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, +0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, +0x3E, 0x2D, 0x37, 0x0A, 0x00, 0x9A, 0xF3, 0xF8, 0x01, 0xB2, 0xBF, 0x92, 0x00, 0x00, 0x00, 0x00, + /* Asia/Pontianak */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -12954,17 +12876,17 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x43, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xB6, 0xF2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x2F, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3D, 0xC7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, -0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, -0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x4C, 0x4D, -0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, -0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x63, 0xF6, 0x00, 0x01, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, +0x00, 0x05, 0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0D, 0x50, 0x4C, +0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, +0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, /* Asia/Sakhalin */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -13663,16 +13585,16 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x47, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x51, 0x61, 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x00, 0x00, -0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, -0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, -0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, -0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0xA4, 0xBE, 0x7A, 0x01, 0xAF, -0x36, 0xA0, 0x00, 0x00, 0x00, 0x00, +0x60, 0x30, 0x00, 0x01, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x05, +0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0D, 0x50, 0x4C, 0x4D, 0x54, +0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, +0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0xA4, 0xBE, 0x7A, 0x01, 0xAF, 0x36, 0xA0, 0x00, 0x00, +0x00, 0x00, /* Asia/Vladivostok */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -15969,7 +15891,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0xDE, 0xCE, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xAF, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x98, 0x91, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xD2, 0x85, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x8A, 0xE8, 0x90, 0xFF, @@ -16014,18 +15936,39 @@ 0x00, 0x00, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x5F, 0x80, 0x00, -0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 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, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x7C, 0x00, 0x00, +0x00, 0x00, 0x00, 0x47, 0xD3, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x5E, 0x00, 0x00, +0x00, 0x00, 0x00, 0x49, 0xB3, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x40, 0x00, 0x00, +0x00, 0x00, 0x00, 0x4B, 0x9C, 0xA5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x5C, 0x80, 0x00, +0x00, 0x00, 0x00, 0x4D, 0x7C, 0x87, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x3E, 0x80, 0x00, +0x00, 0x00, 0x00, 0x4F, 0x5C, 0x69, 0x90, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x20, 0x80, 0x00, +0x00, 0x00, 0x00, 0x51, 0x3C, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x02, 0x80, 0x00, +0x00, 0x00, 0x00, 0x53, 0x1C, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xE4, 0x80, 0x00, +0x00, 0x00, 0x00, 0x54, 0xFC, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xC6, 0x80, 0x00, +0x00, 0x00, 0x00, 0x56, 0xE5, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xE3, 0x00, 0x00, +0x00, 0x00, 0x00, 0x58, 0xC5, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xC5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x5A, 0xA4, 0xF0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xA7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x89, 0x00, 0x00, +0x00, 0x00, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x6B, 0x00, 0x00, +0x00, 0x00, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x87, 0x80, 0x00, +0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x69, 0x80, 0x00, +0x00, 0x00, 0x00, 0x64, 0x0D, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x4B, 0x80, 0x00, +0x00, 0x00, 0x00, 0x65, 0xED, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x2D, 0x80, 0x00, +0x00, 0x00, 0x00, 0x67, 0xCD, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x0F, 0x80, 0x00, +0x00, 0x00, 0x00, 0x69, 0xAD, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xF1, 0x80, 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, -0xFF, 0xFF, 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, -0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, -0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, -0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, -0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x05, 0xFF, +0xFF, 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, +0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, +0xA0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, +0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, +0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Canada/Newfoundland */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -16154,7 +16097,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3D, 0x76, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xBD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x15, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x26, 0x10, 0xFF, @@ -16219,7 +16162,27 @@ 0x00, 0x00, 0x00, 0x40, 0x6F, 0xDC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0xA9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xBE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x8B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x6D, 0x90, 0x00, -0x00, 0x00, 0x00, 0x45, 0xF3, 0xD3, 0x20, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xD3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x8A, 0x10, 0x00, +0x00, 0x00, 0x00, 0x47, 0xD3, 0xB5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x6C, 0x10, 0x00, +0x00, 0x00, 0x00, 0x49, 0xB3, 0x97, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x4E, 0x10, 0x00, +0x00, 0x00, 0x00, 0x4B, 0x9C, 0xB3, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x6A, 0x90, 0x00, +0x00, 0x00, 0x00, 0x4D, 0x7C, 0x95, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x4C, 0x90, 0x00, +0x00, 0x00, 0x00, 0x4F, 0x5C, 0x77, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x2E, 0x90, 0x00, +0x00, 0x00, 0x00, 0x51, 0x3C, 0x59, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x10, 0x90, 0x00, +0x00, 0x00, 0x00, 0x53, 0x1C, 0x3B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xF2, 0x90, 0x00, +0x00, 0x00, 0x00, 0x54, 0xFC, 0x1D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xD4, 0x90, 0x00, +0x00, 0x00, 0x00, 0x56, 0xE5, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xF1, 0x10, 0x00, +0x00, 0x00, 0x00, 0x58, 0xC5, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xD3, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5A, 0xA4, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xB5, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5C, 0x84, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x97, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5E, 0x64, 0xC2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x79, 0x10, 0x00, +0x00, 0x00, 0x00, 0x60, 0x4D, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x95, 0x90, 0x00, +0x00, 0x00, 0x00, 0x62, 0x2D, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x77, 0x90, 0x00, +0x00, 0x00, 0x00, 0x64, 0x0D, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x59, 0x90, 0x00, +0x00, 0x00, 0x00, 0x65, 0xED, 0x84, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x3B, 0x90, 0x00, +0x00, 0x00, 0x00, 0x67, 0xCD, 0x66, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x1D, 0x90, 0x00, +0x00, 0x00, 0x00, 0x69, 0xAD, 0x48, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xFF, 0x90, 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, @@ -16227,12 +16190,14 @@ 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, 0xFF, 0xFF, 0x8C, 0x94, 0x00, 0x00, 0xFF, 0xFF, -0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, -0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, -0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x0A, 0x50, 0x53, 0x54, 0x38, 0x50, -0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, -0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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, 0x05, 0xFF, 0xFF, 0x8C, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x9D, +0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, +0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x50, +0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x4D, +0x53, 0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, /* Canada/Saskatchewan */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -24474,593 +24439,593 @@ { (char*) "Africa/Bujumbura" , 0x000F1A }, { (char*) "Africa/Cairo" , 0x000FBB }, { (char*) "Africa/Casablanca" , 0x001926 }, - { (char*) "Africa/Ceuta" , 0x0022AF }, - { (char*) "Africa/Conakry" , 0x002ACD }, - { (char*) "Africa/Dakar" , 0x002BA9 }, - { (char*) "Africa/Dar_es_Salaam" , 0x002C6B }, - { (char*) "Africa/Djibouti" , 0x002D4C }, - { (char*) "Africa/Douala" , 0x002DED }, - { (char*) "Africa/El_Aaiun" , 0x002E8E }, - { (char*) "Africa/Freetown" , 0x003791 }, - { (char*) "Africa/Gaborone" , 0x00396D }, - { (char*) "Africa/Harare" , 0x003A64 }, - { (char*) "Africa/Johannesburg" , 0x003B05 }, - { (char*) "Africa/Juba" , 0x003C07 }, - { (char*) "Africa/Kampala" , 0x003EBA }, - { (char*) "Africa/Khartoum" , 0x003FC1 }, - { (char*) "Africa/Kigali" , 0x004274 }, - { (char*) "Africa/Kinshasa" , 0x004315 }, - { (char*) "Africa/Lagos" , 0x0043CF }, - { (char*) "Africa/Libreville" , 0x0044C6 }, - { (char*) "Africa/Lome" , 0x004567 }, - { (char*) "Africa/Luanda" , 0x004607 }, - { (char*) "Africa/Lubumbashi" , 0x0046CE }, - { (char*) "Africa/Lusaka" , 0x0047AA }, - { (char*) "Africa/Malabo" , 0x00484B }, - { (char*) "Africa/Maputo" , 0x00490E }, - { (char*) "Africa/Maseru" , 0x0049AF }, - { (char*) "Africa/Mbabane" , 0x004A7B }, - { (char*) "Africa/Mogadishu" , 0x004B1F }, - { (char*) "Africa/Monrovia" , 0x004C00 }, - { (char*) "Africa/Nairobi" , 0x004CDC }, - { (char*) "Africa/Ndjamena" , 0x004DF1 }, - { (char*) "Africa/Niamey" , 0x004EC4 }, - { (char*) "Africa/Nouakchott" , 0x004FA9 }, - { (char*) "Africa/Ouagadougou" , 0x005085 }, - { (char*) "Africa/Porto-Novo" , 0x005125 }, - { (char*) "Africa/Sao_Tome" , 0x0051E8 }, - { (char*) "Africa/Timbuktu" , 0x0052F2 }, - { (char*) "Africa/Tripoli" , 0x005392 }, - { (char*) "Africa/Tunis" , 0x00560F }, - { (char*) "Africa/Windhoek" , 0x0058CC }, - { (char*) "America/Adak" , 0x005C93 }, - { (char*) "America/Anchorage" , 0x0065ED }, - { (char*) "America/Anguilla" , 0x006F4F }, - { (char*) "America/Antigua" , 0x006FEF }, - { (char*) "America/Araguaina" , 0x0070B1 }, - { (char*) "America/Argentina/Buenos_Aires" , 0x00742C }, - { (char*) "America/Argentina/Catamarca" , 0x007873 }, - { (char*) "America/Argentina/ComodRivadavia" , 0x007CC0 }, - { (char*) "America/Argentina/Cordoba" , 0x0080F2 }, - { (char*) "America/Argentina/Jujuy" , 0x00855A }, - { (char*) "America/Argentina/La_Rioja" , 0x00897A }, - { (char*) "America/Argentina/Mendoza" , 0x008DC7 }, - { (char*) "America/Argentina/Rio_Gallegos" , 0x009205 }, - { (char*) "America/Argentina/Salta" , 0x009646 }, - { (char*) "America/Argentina/San_Juan" , 0x009A72 }, - { (char*) "America/Argentina/San_Luis" , 0x009EBF }, - { (char*) "America/Argentina/Tucuman" , 0x00A318 }, - { (char*) "America/Argentina/Ushuaia" , 0x00A772 }, - { (char*) "America/Aruba" , 0x00ABB9 }, - { (char*) "America/Asuncion" , 0x00AC7F }, - { (char*) "America/Atikokan" , 0x00B2F7 }, - { (char*) "America/Atka" , 0x00B474 }, - { (char*) "America/Bahia" , 0x00BDB4 }, - { (char*) "America/Bahia_Banderas" , 0x00C1B7 }, - { (char*) "America/Barbados" , 0x00C620 }, - { (char*) "America/Belem" , 0x00C7E0 }, - { (char*) "America/Belize" , 0x00CA30 }, - { (char*) "America/Blanc-Sablon" , 0x00D08A }, - { (char*) "America/Boa_Vista" , 0x00D1DC }, - { (char*) "America/Bogota" , 0x00D459 }, - { (char*) "America/Boise" , 0x00D54D }, - { (char*) "America/Buenos_Aires" , 0x00DEE3 }, - { (char*) "America/Cambridge_Bay" , 0x00E315 }, - { (char*) "America/Campo_Grande" , 0x00EC03 }, - { (char*) "America/Cancun" , 0x00F1B7 }, - { (char*) "America/Caracas" , 0x00F52F }, - { (char*) "America/Catamarca" , 0x00F635 }, - { (char*) "America/Cayenne" , 0x00FA67 }, - { (char*) "America/Cayman" , 0x00FB2B }, - { (char*) "America/Chicago" , 0x00FBED }, - { (char*) "America/Chihuahua" , 0x010A15 }, - { (char*) "America/Ciudad_Juarez" , 0x010E85 }, - { (char*) "America/Coral_Harbour" , 0x0114AF }, - { (char*) "America/Cordoba" , 0x011571 }, - { (char*) "America/Costa_Rica" , 0x0119A3 }, - { (char*) "America/Coyhaique" , 0x011AEB }, - { (char*) "America/Creston" , 0x012351 }, - { (char*) "America/Cuiaba" , 0x01243F }, - { (char*) "America/Curacao" , 0x0129D0 }, - { (char*) "America/Danmarkshavn" , 0x012A96 }, - { (char*) "America/Dawson" , 0x012D76 }, - { (char*) "America/Dawson_Creek" , 0x0133E2 }, - { (char*) "America/Denver" , 0x013828 }, - { (char*) "America/Detroit" , 0x0141E5 }, - { (char*) "America/Dominica" , 0x014AC0 }, - { (char*) "America/Edmonton" , 0x014B60 }, - { (char*) "America/Eirunepe" , 0x0154AA }, - { (char*) "America/El_Salvador" , 0x015747 }, - { (char*) "America/Ensenada" , 0x015833 }, - { (char*) "America/Fort_Nelson" , 0x016399 }, - { (char*) "America/Fort_Wayne" , 0x016C79 }, - { (char*) "America/Fortaleza" , 0x017317 }, - { (char*) "America/Glace_Bay" , 0x017607 }, - { (char*) "America/Godthab" , 0x017EBE }, - { (char*) "America/Goose_Bay" , 0x01862B }, - { (char*) "America/Grand_Turk" , 0x0192E1 }, - { (char*) "America/Grenada" , 0x019A17 }, - { (char*) "America/Guadeloupe" , 0x019AB7 }, - { (char*) "America/Guatemala" , 0x019B57 }, - { (char*) "America/Guayaquil" , 0x019C7B }, - { (char*) "America/Guyana" , 0x019D81 }, - { (char*) "America/Halifax" , 0x019E85 }, - { (char*) "America/Havana" , 0x01AC0F }, - { (char*) "America/Hermosillo" , 0x01B58B }, - { (char*) "America/Indiana/Indianapolis" , 0x01B721 }, - { (char*) "America/Indiana/Knox" , 0x01BDD8 }, - { (char*) "America/Indiana/Marengo" , 0x01C785 }, - { (char*) "America/Indiana/Petersburg" , 0x01CE72 }, - { (char*) "America/Indiana/Tell_City" , 0x01D611 }, - { (char*) "America/Indiana/Vevay" , 0x01DCD5 }, - { (char*) "America/Indiana/Vincennes" , 0x01E291 }, - { (char*) "America/Indiana/Winamac" , 0x01E967 }, - { (char*) "America/Indianapolis" , 0x01F08B }, - { (char*) "America/Inuvik" , 0x01F729 }, - { (char*) "America/Iqaluit" , 0x01FF63 }, - { (char*) "America/Jamaica" , 0x020822 }, - { (char*) "America/Jujuy" , 0x020A10 }, - { (char*) "America/Juneau" , 0x020E26 }, - { (char*) "America/Kentucky/Louisville" , 0x021777 }, - { (char*) "America/Kentucky/Monticello" , 0x022285 }, - { (char*) "America/Knox_IN" , 0x022BE5 }, - { (char*) "America/Kralendijk" , 0x02357D }, - { (char*) "America/La_Paz" , 0x02367F }, - { (char*) "America/Lima" , 0x023765 }, - { (char*) "America/Los_Angeles" , 0x0238F9 }, - { (char*) "America/Louisville" , 0x024430 }, - { (char*) "America/Lower_Princes" , 0x024F20 }, - { (char*) "America/Maceio" , 0x025022 }, - { (char*) "America/Managua" , 0x025318 }, - { (char*) "America/Manaus" , 0x0254D2 }, - { (char*) "America/Marigot" , 0x02573B }, - { (char*) "America/Martinique" , 0x02583D }, - { (char*) "America/Matamoros" , 0x025931 }, - { (char*) "America/Mazatlan" , 0x025EF3 }, - { (char*) "America/Mendoza" , 0x026355 }, - { (char*) "America/Menominee" , 0x026787 }, - { (char*) "America/Merida" , 0x027094 }, - { (char*) "America/Metlakatla" , 0x02749D }, - { (char*) "America/Mexico_City" , 0x027A4F }, - { (char*) "America/Miquelon" , 0x027F2F }, - { (char*) "America/Moncton" , 0x0285AF }, - { (char*) "America/Monterrey" , 0x029225 }, - { (char*) "America/Montevideo" , 0x0296C1 }, - { (char*) "America/Montreal" , 0x029CA5 }, - { (char*) "America/Montserrat" , 0x02AA57 }, - { (char*) "America/Nassau" , 0x02AAF7 }, - { (char*) "America/New_York" , 0x02B457 }, - { (char*) "America/Nipigon" , 0x02C257 }, - { (char*) "America/Nome" , 0x02D009 }, - { (char*) "America/Noronha" , 0x02D961 }, - { (char*) "America/North_Dakota/Beulah" , 0x02DC3B }, - { (char*) "America/North_Dakota/Center" , 0x02E5B8 }, - { (char*) "America/North_Dakota/New_Salem" , 0x02EF35 }, - { (char*) "America/Nuuk" , 0x02F8B8 }, - { (char*) "America/Ojinaga" , 0x030036 }, - { (char*) "America/Panama" , 0x030652 }, - { (char*) "America/Pangnirtung" , 0x030714 }, - { (char*) "America/Paramaribo" , 0x030FBA }, - { (char*) "America/Phoenix" , 0x0310BE }, - { (char*) "America/Port-au-Prince" , 0x03124A }, - { (char*) "America/Port_of_Spain" , 0x0317F0 }, - { (char*) "America/Porto_Acre" , 0x031890 }, - { (char*) "America/Porto_Velho" , 0x031B02 }, - { (char*) "America/Puerto_Rico" , 0x031D48 }, - { (char*) "America/Punta_Arenas" , 0x031E4A }, - { (char*) "America/Rainy_River" , 0x0325D5 }, - { (char*) "America/Rankin_Inlet" , 0x033115 }, - { (char*) "America/Recife" , 0x033949 }, - { (char*) "America/Regina" , 0x033C1D }, - { (char*) "America/Resolute" , 0x034012 }, - { (char*) "America/Rio_Branco" , 0x034847 }, - { (char*) "America/Rosario" , 0x034ABD }, - { (char*) "America/Santa_Isabel" , 0x034EEF }, - { (char*) "America/Santarem" , 0x035A55 }, - { (char*) "America/Santiago" , 0x035CB8 }, - { (char*) "America/Santo_Domingo" , 0x0366A4 }, - { (char*) "America/Sao_Paulo" , 0x03687A }, - { (char*) "America/Scoresbysund" , 0x036E52 }, - { (char*) "America/Shiprock" , 0x03760A }, - { (char*) "America/Sitka" , 0x037FB2 }, - { (char*) "America/St_Barthelemy" , 0x0388EA }, - { (char*) "America/St_Johns" , 0x0389EC }, - { (char*) "America/St_Kitts" , 0x03985A }, - { (char*) "America/St_Lucia" , 0x0398FA }, - { (char*) "America/St_Thomas" , 0x0399BC }, - { (char*) "America/St_Vincent" , 0x039A5C }, - { (char*) "America/Swift_Current" , 0x039B1E }, - { (char*) "America/Tegucigalpa" , 0x039D6C }, - { (char*) "America/Thule" , 0x039E74 }, - { (char*) "America/Thunder_Bay" , 0x03A46C }, - { (char*) "America/Tijuana" , 0x03B21E }, - { (char*) "America/Toronto" , 0x03BD93 }, - { (char*) "America/Tortola" , 0x03CB63 }, - { (char*) "America/Vancouver" , 0x03CC03 }, - { (char*) "America/Virgin" , 0x03D774 }, - { (char*) "America/Whitehorse" , 0x03D876 }, - { (char*) "America/Winnipeg" , 0x03DEE2 }, - { (char*) "America/Yakutat" , 0x03EA3F }, - { (char*) "America/Yellowknife" , 0x03F35C }, - { (char*) "Antarctica/Casey" , 0x03FC84 }, - { (char*) "Antarctica/Davis" , 0x03FE3C }, - { (char*) "Antarctica/DumontDUrville" , 0x03FF68 }, - { (char*) "Antarctica/Macquarie" , 0x040038 }, - { (char*) "Antarctica/Mawson" , 0x040928 }, - { (char*) "Antarctica/McMurdo" , 0x0409F3 }, - { (char*) "Antarctica/Palmer" , 0x0411EE }, - { (char*) "Antarctica/Rothera" , 0x04177C }, - { (char*) "Antarctica/South_Pole" , 0x041825 }, - { (char*) "Antarctica/Syowa" , 0x0421B6 }, - { (char*) "Antarctica/Troll" , 0x04225E }, - { (char*) "Antarctica/Vostok" , 0x0426EB }, - { (char*) "Arctic/Longyearbyen" , 0x0427D2 }, - { (char*) "Asia/Aden" , 0x0430D8 }, - { (char*) "Asia/Almaty" , 0x04317B }, - { (char*) "Asia/Amman" , 0x043570 }, - { (char*) "Asia/Anadyr" , 0x043B15 }, - { (char*) "Asia/Aqtau" , 0x043FCA }, - { (char*) "Asia/Aqtobe" , 0x0443B4 }, - { (char*) "Asia/Ashgabat" , 0x0447B2 }, - { (char*) "Asia/Ashkhabad" , 0x044A1B }, - { (char*) "Asia/Atyrau" , 0x044C84 }, - { (char*) "Asia/Baghdad" , 0x045076 }, - { (char*) "Asia/Bahrain" , 0x04544B }, - { (char*) "Asia/Baku" , 0x045536 }, - { (char*) "Asia/Bangkok" , 0x0459FF }, - { (char*) "Asia/Barnaul" , 0x045AC4 }, - { (char*) "Asia/Beirut" , 0x045F95 }, - { (char*) "Asia/Bishkek" , 0x04680B }, - { (char*) "Asia/Brunei" , 0x046BE0 }, - { (char*) "Asia/Calcutta" , 0x046CA9 }, - { (char*) "Asia/Chita" , 0x046DD2 }, - { (char*) "Asia/Choibalsan" , 0x0472A9 }, - { (char*) "Asia/Chongqing" , 0x047622 }, - { (char*) "Asia/Chungking" , 0x04785F }, - { (char*) "Asia/Colombo" , 0x047A9C }, - { (char*) "Asia/Dacca" , 0x047C0E }, - { (char*) "Asia/Damascus" , 0x047D5D }, - { (char*) "Asia/Dhaka" , 0x0484BA }, - { (char*) "Asia/Dili" , 0x048609 }, - { (char*) "Asia/Dubai" , 0x048716 }, - { (char*) "Asia/Dushanbe" , 0x0487B9 }, - { (char*) "Asia/Famagusta" , 0x048A06 }, - { (char*) "Asia/Gaza" , 0x04920D }, - { (char*) "Asia/Harbin" , 0x04A127 }, - { (char*) "Asia/Hebron" , 0x04A364 }, - { (char*) "Asia/Ho_Chi_Minh" , 0x04B299 }, - { (char*) "Asia/Hong_Kong" , 0x04B3F6 }, - { (char*) "Asia/Hovd" , 0x04B8D3 }, - { (char*) "Asia/Irkutsk" , 0x04BC62 }, - { (char*) "Asia/Istanbul" , 0x04C155 }, - { (char*) "Asia/Jakarta" , 0x04C8EE }, - { (char*) "Asia/Jayapura" , 0x04CA86 }, - { (char*) "Asia/Jerusalem" , 0x04CBA5 }, - { (char*) "Asia/Kabul" , 0x04D505 }, - { (char*) "Asia/Kamchatka" , 0x04D5D3 }, - { (char*) "Asia/Karachi" , 0x04DA71 }, - { (char*) "Asia/Kashgar" , 0x04DBF8 }, - { (char*) "Asia/Kathmandu" , 0x04DC9B }, - { (char*) "Asia/Katmandu" , 0x04DD6D }, - { (char*) "Asia/Khandyga" , 0x04DE3F }, - { (char*) "Asia/Kolkata" , 0x04E352 }, - { (char*) "Asia/Krasnoyarsk" , 0x04E47B }, - { (char*) "Asia/Kuala_Lumpur" , 0x04E949 }, - { (char*) "Asia/Kuching" , 0x04EAFA }, - { (char*) "Asia/Kuwait" , 0x04ECE9 }, - { (char*) "Asia/Macao" , 0x04ED8C }, - { (char*) "Asia/Macau" , 0x04F263 }, - { (char*) "Asia/Magadan" , 0x04F73A }, - { (char*) "Asia/Makassar" , 0x04FC0E }, - { (char*) "Asia/Manila" , 0x04FD61 }, - { (char*) "Asia/Muscat" , 0x04FF13 }, - { (char*) "Asia/Nicosia" , 0x04FFB6 }, - { (char*) "Asia/Novokuznetsk" , 0x0507A2 }, - { (char*) "Asia/Novosibirsk" , 0x050C3E }, - { (char*) "Asia/Omsk" , 0x051115 }, - { (char*) "Asia/Oral" , 0x0515D7 }, - { (char*) "Asia/Phnom_Penh" , 0x0519D1 }, - { (char*) "Asia/Pontianak" , 0x051AF6 }, - { (char*) "Asia/Pyongyang" , 0x051C79 }, - { (char*) "Asia/Qatar" , 0x051D72 }, - { (char*) "Asia/Qostanay" , 0x051E37 }, - { (char*) "Asia/Qyzylorda" , 0x05225E }, - { (char*) "Asia/Rangoon" , 0x05267A }, - { (char*) "Asia/Riyadh" , 0x052784 }, - { (char*) "Asia/Saigon" , 0x052827 }, - { (char*) "Asia/Sakhalin" , 0x052984 }, - { (char*) "Asia/Samarkand" , 0x052E4C }, - { (char*) "Asia/Seoul" , 0x05309C }, - { (char*) "Asia/Shanghai" , 0x053311 }, - { (char*) "Asia/Singapore" , 0x05355A }, - { (char*) "Asia/Srednekolymsk" , 0x0536F7 }, - { (char*) "Asia/Taipei" , 0x053BCB }, - { (char*) "Asia/Tashkent" , 0x053ED0 }, - { (char*) "Asia/Tbilisi" , 0x05412E }, - { (char*) "Asia/Tehran" , 0x054529 }, - { (char*) "Asia/Tel_Aviv" , 0x054A15 }, - { (char*) "Asia/Thimbu" , 0x055375 }, - { (char*) "Asia/Thimphu" , 0x05543E }, - { (char*) "Asia/Tokyo" , 0x055507 }, - { (char*) "Asia/Tomsk" , 0x055648 }, - { (char*) "Asia/Ujung_Pandang" , 0x055B19 }, - { (char*) "Asia/Ulaanbaatar" , 0x055C23 }, - { (char*) "Asia/Ulan_Bator" , 0x055FAC }, - { (char*) "Asia/Urumqi" , 0x056325 }, - { (char*) "Asia/Ust-Nera" , 0x0563D5 }, - { (char*) "Asia/Vientiane" , 0x0568CB }, - { (char*) "Asia/Vladivostok" , 0x056A0C }, - { (char*) "Asia/Yakutsk" , 0x056ED5 }, - { (char*) "Asia/Yangon" , 0x05739D }, - { (char*) "Asia/Yekaterinburg" , 0x0574A7 }, - { (char*) "Asia/Yerevan" , 0x05798E }, - { (char*) "Atlantic/Azores" , 0x057E0B }, - { (char*) "Atlantic/Bermuda" , 0x058B8F }, - { (char*) "Atlantic/Canary" , 0x0594F7 }, - { (char*) "Atlantic/Cape_Verde" , 0x059C7A }, - { (char*) "Atlantic/Faeroe" , 0x059D86 }, - { (char*) "Atlantic/Faroe" , 0x05A4A9 }, - { (char*) "Atlantic/Jan_Mayen" , 0x05ABCC }, - { (char*) "Atlantic/Madeira" , 0x05B4D2 }, - { (char*) "Atlantic/Reykjavik" , 0x05C21E }, - { (char*) "Atlantic/South_Georgia" , 0x05C6B4 }, - { (char*) "Atlantic/St_Helena" , 0x05C756 }, - { (char*) "Atlantic/Stanley" , 0x05C818 }, - { (char*) "Australia/ACT" , 0x05CCD4 }, - { (char*) "Australia/Adelaide" , 0x05D56E }, - { (char*) "Australia/Brisbane" , 0x05DE29 }, - { (char*) "Australia/Broken_Hill" , 0x05DFEF }, - { (char*) "Australia/Canberra" , 0x05E8CC }, - { (char*) "Australia/Currie" , 0x05F166 }, - { (char*) "Australia/Darwin" , 0x05FAA8 }, - { (char*) "Australia/Eucla" , 0x05FC0B }, - { (char*) "Australia/Hobart" , 0x05FDF8 }, - { (char*) "Australia/LHI" , 0x060742 }, - { (char*) "Australia/Lindeman" , 0x060E84 }, - { (char*) "Australia/Lord_Howe" , 0x06108A }, - { (char*) "Australia/Melbourne" , 0x0617DC }, - { (char*) "Australia/North" , 0x06207E }, - { (char*) "Australia/NSW" , 0x0621CF }, - { (char*) "Australia/Perth" , 0x062A69 }, - { (char*) "Australia/Queensland" , 0x062C51 }, - { (char*) "Australia/South" , 0x062E00 }, - { (char*) "Australia/Sydney" , 0x0636AC }, - { (char*) "Australia/Tasmania" , 0x063F62 }, - { (char*) "Australia/Victoria" , 0x0648A4 }, - { (char*) "Australia/West" , 0x06513E }, - { (char*) "Australia/Yancowinna" , 0x065308 }, - { (char*) "Brazil/Acre" , 0x065BC9 }, - { (char*) "Brazil/DeNoronha" , 0x065E3B }, - { (char*) "Brazil/East" , 0x066105 }, - { (char*) "Brazil/West" , 0x0666A7 }, - { (char*) "Canada/Atlantic" , 0x066901 }, - { (char*) "Canada/Central" , 0x06766D }, - { (char*) "Canada/Eastern" , 0x0681AD }, - { (char*) "Canada/Mountain" , 0x068F5F }, - { (char*) "Canada/Newfoundland" , 0x069887 }, - { (char*) "Canada/Pacific" , 0x06A6DA }, - { (char*) "Canada/Saskatchewan" , 0x06B232 }, - { (char*) "Canada/Yukon" , 0x06B612 }, - { (char*) "CET" , 0x06BC6C }, - { (char*) "Chile/Continental" , 0x06C7ED }, - { (char*) "Chile/EasterIsland" , 0x06D1CC }, - { (char*) "CST6CDT" , 0x06DA83 }, - { (char*) "Cuba" , 0x06E897 }, - { (char*) "EET" , 0x06F213 }, - { (char*) "Egypt" , 0x06FAF5 }, - { (char*) "Eire" , 0x070460 }, - { (char*) "EST" , 0x071210 }, - { (char*) "EST5EDT" , 0x0712D2 }, - { (char*) "Etc/GMT" , 0x0720BE }, - { (char*) "Etc/GMT+0" , 0x07213C }, - { (char*) "Etc/GMT+1" , 0x0721BA }, - { (char*) "Etc/GMT+10" , 0x07223A }, - { (char*) "Etc/GMT+11" , 0x0722BB }, - { (char*) "Etc/GMT+12" , 0x07233C }, - { (char*) "Etc/GMT+2" , 0x0723BD }, - { (char*) "Etc/GMT+3" , 0x07243D }, - { (char*) "Etc/GMT+4" , 0x0724BD }, - { (char*) "Etc/GMT+5" , 0x07253D }, - { (char*) "Etc/GMT+6" , 0x0725BD }, - { (char*) "Etc/GMT+7" , 0x07263D }, - { (char*) "Etc/GMT+8" , 0x0726BD }, - { (char*) "Etc/GMT+9" , 0x07273D }, - { (char*) "Etc/GMT-0" , 0x0727BD }, - { (char*) "Etc/GMT-1" , 0x07283B }, - { (char*) "Etc/GMT-10" , 0x0728BC }, - { (char*) "Etc/GMT-11" , 0x07293E }, - { (char*) "Etc/GMT-12" , 0x0729C0 }, - { (char*) "Etc/GMT-13" , 0x072A42 }, - { (char*) "Etc/GMT-14" , 0x072AC4 }, - { (char*) "Etc/GMT-2" , 0x072B46 }, - { (char*) "Etc/GMT-3" , 0x072BC7 }, - { (char*) "Etc/GMT-4" , 0x072C48 }, - { (char*) "Etc/GMT-5" , 0x072CC9 }, - { (char*) "Etc/GMT-6" , 0x072D4A }, - { (char*) "Etc/GMT-7" , 0x072DCB }, - { (char*) "Etc/GMT-8" , 0x072E4C }, - { (char*) "Etc/GMT-9" , 0x072ECD }, - { (char*) "Etc/GMT0" , 0x072F4E }, - { (char*) "Etc/Greenwich" , 0x072FCC }, - { (char*) "Etc/UCT" , 0x07304A }, - { (char*) "Etc/Universal" , 0x0730C8 }, - { (char*) "Etc/UTC" , 0x073146 }, - { (char*) "Etc/Zulu" , 0x0731C4 }, - { (char*) "Europe/Amsterdam" , 0x073242 }, - { (char*) "Europe/Andorra" , 0x073DAC }, - { (char*) "Europe/Astrakhan" , 0x074486 }, - { (char*) "Europe/Athens" , 0x074923 }, - { (char*) "Europe/Belfast" , 0x075205 }, - { (char*) "Europe/Belgrade" , 0x076061 }, - { (char*) "Europe/Berlin" , 0x0767ED }, - { (char*) "Europe/Bratislava" , 0x077102 }, - { (char*) "Europe/Brussels" , 0x077A0B }, - { (char*) "Europe/Bucharest" , 0x07858C }, - { (char*) "Europe/Budapest" , 0x078E20 }, - { (char*) "Europe/Busingen" , 0x07976C }, - { (char*) "Europe/Chisinau" , 0x079EF5 }, - { (char*) "Europe/Copenhagen" , 0x07A879 }, - { (char*) "Europe/Dublin" , 0x07B0DE }, - { (char*) "Europe/Gibraltar" , 0x07BE8E }, - { (char*) "Europe/Guernsey" , 0x07CA96 }, - { (char*) "Europe/Helsinki" , 0x07D936 }, - { (char*) "Europe/Isle_of_Man" , 0x07E0AE }, - { (char*) "Europe/Istanbul" , 0x07EEFA }, - { (char*) "Europe/Jersey" , 0x07F693 }, - { (char*) "Europe/Kaliningrad" , 0x080533 }, - { (char*) "Europe/Kiev" , 0x080B28 }, - { (char*) "Europe/Kirov" , 0x08137C }, - { (char*) "Europe/Kyiv" , 0x081837 }, - { (char*) "Europe/Lisbon" , 0x08209A }, - { (char*) "Europe/Ljubljana" , 0x082E80 }, - { (char*) "Europe/London" , 0x08360C }, - { (char*) "Europe/Luxembourg" , 0x084468 }, - { (char*) "Europe/Madrid" , 0x084FF6 }, - { (char*) "Europe/Malta" , 0x085A48 }, - { (char*) "Europe/Mariehamn" , 0x086490 }, - { (char*) "Europe/Minsk" , 0x086C08 }, - { (char*) "Europe/Monaco" , 0x08712F }, - { (char*) "Europe/Moscow" , 0x087CBB }, - { (char*) "Europe/Nicosia" , 0x0882DA }, - { (char*) "Europe/Oslo" , 0x088AB8 }, - { (char*) "Europe/Paris" , 0x089378 }, - { (char*) "Europe/Podgorica" , 0x089F16 }, - { (char*) "Europe/Prague" , 0x08A6A2 }, - { (char*) "Europe/Riga" , 0x08AFAB }, - { (char*) "Europe/Rome" , 0x08B84D }, - { (char*) "Europe/Samara" , 0x08C2AA }, - { (char*) "Europe/San_Marino" , 0x08C780 }, - { (char*) "Europe/Sarajevo" , 0x08D1DD }, - { (char*) "Europe/Saratov" , 0x08D969 }, - { (char*) "Europe/Simferopol" , 0x08DE16 }, - { (char*) "Europe/Skopje" , 0x08E3E5 }, - { (char*) "Europe/Sofia" , 0x08EB71 }, - { (char*) "Europe/Stockholm" , 0x08F39A }, - { (char*) "Europe/Tallinn" , 0x08FB1B }, - { (char*) "Europe/Tirane" , 0x09038B }, - { (char*) "Europe/Tiraspol" , 0x090BBB }, - { (char*) "Europe/Ulyanovsk" , 0x09153F }, - { (char*) "Europe/Uzhgorod" , 0x091A42 }, - { (char*) "Europe/Vaduz" , 0x092296 }, - { (char*) "Europe/Vatican" , 0x092A02 }, - { (char*) "Europe/Vienna" , 0x09345F }, - { (char*) "Europe/Vilnius" , 0x093D03 }, - { (char*) "Europe/Volgograd" , 0x094581 }, - { (char*) "Europe/Warsaw" , 0x094A48 }, - { (char*) "Europe/Zagreb" , 0x0954B2 }, - { (char*) "Europe/Zaporozhye" , 0x095C3E }, - { (char*) "Europe/Zurich" , 0x096492 }, - { (char*) "Factory" , 0x096C13 }, - { (char*) "GB" , 0x096C93 }, - { (char*) "GB-Eire" , 0x097AEF }, - { (char*) "GMT" , 0x09894B }, - { (char*) "GMT+0" , 0x0989C9 }, - { (char*) "GMT-0" , 0x098A47 }, - { (char*) "GMT0" , 0x098AC5 }, - { (char*) "Greenwich" , 0x098B43 }, - { (char*) "Hongkong" , 0x098BC1 }, - { (char*) "HST" , 0x09909E }, - { (char*) "Iceland" , 0x0991F3 }, - { (char*) "Indian/Antananarivo" , 0x099293 }, - { (char*) "Indian/Chagos" , 0x09937A }, - { (char*) "Indian/Christmas" , 0x09943F }, - { (char*) "Indian/Cocos" , 0x0994E2 }, - { (char*) "Indian/Comoro" , 0x09958E }, - { (char*) "Indian/Kerguelen" , 0x09962F }, - { (char*) "Indian/Mahe" , 0x0996D2 }, - { (char*) "Indian/Maldives" , 0x099775 }, - { (char*) "Indian/Mauritius" , 0x09983A }, - { (char*) "Indian/Mayotte" , 0x099929 }, - { (char*) "Indian/Reunion" , 0x0999CA }, - { (char*) "Iran" , 0x099A6D }, - { (char*) "Israel" , 0x099F59 }, - { (char*) "Jamaica" , 0x09A8B9 }, - { (char*) "Japan" , 0x09AAA7 }, - { (char*) "Kwajalein" , 0x09ABE8 }, - { (char*) "Libya" , 0x09AD22 }, - { (char*) "MET" , 0x09AF9F }, - { (char*) "Mexico/BajaNorte" , 0x09BB20 }, - { (char*) "Mexico/BajaSur" , 0x09C686 }, - { (char*) "Mexico/General" , 0x09CAB6 }, - { (char*) "MST" , 0x09CF88 }, - { (char*) "MST7MDT" , 0x09D0FC }, - { (char*) "Navajo" , 0x09DAA4 }, - { (char*) "NZ" , 0x09E44C }, - { (char*) "NZ-CHAT" , 0x09EDDD }, - { (char*) "Pacific/Apia" , 0x09F5EF }, - { (char*) "Pacific/Auckland" , 0x09F851 }, - { (char*) "Pacific/Bougainville" , 0x0A01F5 }, - { (char*) "Pacific/Chatham" , 0x0A030B }, - { (char*) "Pacific/Chuuk" , 0x0A0B2C }, - { (char*) "Pacific/Easter" , 0x0A0C46 }, - { (char*) "Pacific/Efate" , 0x0A150A }, - { (char*) "Pacific/Enderbury" , 0x0A1722 }, - { (char*) "Pacific/Fakaofo" , 0x0A180A }, - { (char*) "Pacific/Fiji" , 0x0A18D0 }, - { (char*) "Pacific/Funafuti" , 0x0A1B10 }, - { (char*) "Pacific/Galapagos" , 0x0A1BB4 }, - { (char*) "Pacific/Gambier" , 0x0A1CB1 }, - { (char*) "Pacific/Guadalcanal" , 0x0A1D62 }, - { (char*) "Pacific/Guam" , 0x0A1E06 }, - { (char*) "Pacific/Honolulu" , 0x0A2000 }, - { (char*) "Pacific/Johnston" , 0x0A215B }, - { (char*) "Pacific/Kanton" , 0x0A22B0 }, - { (char*) "Pacific/Kiritimati" , 0x0A23A7 }, - { (char*) "Pacific/Kosrae" , 0x0A249F }, - { (char*) "Pacific/Kwajalein" , 0x0A2602 }, - { (char*) "Pacific/Majuro" , 0x0A2745 }, - { (char*) "Pacific/Marquesas" , 0x0A2891 }, - { (char*) "Pacific/Midway" , 0x0A294D }, - { (char*) "Pacific/Nauru" , 0x0A2A40 }, - { (char*) "Pacific/Niue" , 0x0A2B3A }, - { (char*) "Pacific/Norfolk" , 0x0A2C03 }, - { (char*) "Pacific/Noumea" , 0x0A2F71 }, - { (char*) "Pacific/Pago_Pago" , 0x0A309F }, - { (char*) "Pacific/Palau" , 0x0A315A }, - { (char*) "Pacific/Pitcairn" , 0x0A320C }, - { (char*) "Pacific/Pohnpei" , 0x0A32D4 }, - { (char*) "Pacific/Ponape" , 0x0A340F }, - { (char*) "Pacific/Port_Moresby" , 0x0A34B3 }, - { (char*) "Pacific/Rarotonga" , 0x0A3583 }, - { (char*) "Pacific/Saipan" , 0x0A37DC }, - { (char*) "Pacific/Samoa" , 0x0A39C8 }, - { (char*) "Pacific/Tahiti" , 0x0A3A83 }, - { (char*) "Pacific/Tarawa" , 0x0A3B35 }, - { (char*) "Pacific/Tongatapu" , 0x0A3BE8 }, - { (char*) "Pacific/Truk" , 0x0A3D5A }, - { (char*) "Pacific/Wake" , 0x0A3E12 }, - { (char*) "Pacific/Wallis" , 0x0A3EC1 }, - { (char*) "Pacific/Yap" , 0x0A3F65 }, - { (char*) "Poland" , 0x0A401D }, - { (char*) "Portugal" , 0x0A4A87 }, - { (char*) "PRC" , 0x0A585A }, - { (char*) "PST8PDT" , 0x0A5A97 }, - { (char*) "ROC" , 0x0A65C7 }, - { (char*) "ROK" , 0x0A68CC }, - { (char*) "Singapore" , 0x0A6B41 }, - { (char*) "Turkey" , 0x0A6CDE }, - { (char*) "UCT" , 0x0A7477 }, - { (char*) "Universal" , 0x0A74F5 }, - { (char*) "US/Alaska" , 0x0A7573 }, - { (char*) "US/Aleutian" , 0x0A7EC2 }, - { (char*) "US/Arizona" , 0x0A8802 }, - { (char*) "US/Central" , 0x0A8976 }, - { (char*) "US/East-Indiana" , 0x0A978A }, - { (char*) "US/Eastern" , 0x0A9E28 }, - { (char*) "US/Hawaii" , 0x0AAC14 }, - { (char*) "US/Indiana-Starke" , 0x0AAD69 }, - { (char*) "US/Michigan" , 0x0AB701 }, - { (char*) "US/Mountain" , 0x0ABFC3 }, - { (char*) "US/Pacific" , 0x0AC96B }, - { (char*) "US/Samoa" , 0x0AD49B }, - { (char*) "UTC" , 0x0AD556 }, - { (char*) "W-SU" , 0x0AD5D4 }, - { (char*) "WET" , 0x0ADBDF }, - { (char*) "Zulu" , 0x0AE9B2 }, + { (char*) "Africa/Ceuta" , 0x001DE2 }, + { (char*) "Africa/Conakry" , 0x002600 }, + { (char*) "Africa/Dakar" , 0x0026DC }, + { (char*) "Africa/Dar_es_Salaam" , 0x00279E }, + { (char*) "Africa/Djibouti" , 0x00287F }, + { (char*) "Africa/Douala" , 0x002920 }, + { (char*) "Africa/El_Aaiun" , 0x0029C1 }, + { (char*) "Africa/Freetown" , 0x002DF7 }, + { (char*) "Africa/Gaborone" , 0x002FD3 }, + { (char*) "Africa/Harare" , 0x0030CA }, + { (char*) "Africa/Johannesburg" , 0x00316B }, + { (char*) "Africa/Juba" , 0x00326D }, + { (char*) "Africa/Kampala" , 0x003520 }, + { (char*) "Africa/Khartoum" , 0x003627 }, + { (char*) "Africa/Kigali" , 0x0038DA }, + { (char*) "Africa/Kinshasa" , 0x00397B }, + { (char*) "Africa/Lagos" , 0x003A35 }, + { (char*) "Africa/Libreville" , 0x003B2C }, + { (char*) "Africa/Lome" , 0x003BCD }, + { (char*) "Africa/Luanda" , 0x003C6D }, + { (char*) "Africa/Lubumbashi" , 0x003D34 }, + { (char*) "Africa/Lusaka" , 0x003E10 }, + { (char*) "Africa/Malabo" , 0x003EB1 }, + { (char*) "Africa/Maputo" , 0x003F74 }, + { (char*) "Africa/Maseru" , 0x004015 }, + { (char*) "Africa/Mbabane" , 0x0040E1 }, + { (char*) "Africa/Mogadishu" , 0x004185 }, + { (char*) "Africa/Monrovia" , 0x004266 }, + { (char*) "Africa/Nairobi" , 0x004342 }, + { (char*) "Africa/Ndjamena" , 0x004457 }, + { (char*) "Africa/Niamey" , 0x00452A }, + { (char*) "Africa/Nouakchott" , 0x00460F }, + { (char*) "Africa/Ouagadougou" , 0x0046EB }, + { (char*) "Africa/Porto-Novo" , 0x00478B }, + { (char*) "Africa/Sao_Tome" , 0x00484E }, + { (char*) "Africa/Timbuktu" , 0x004958 }, + { (char*) "Africa/Tripoli" , 0x0049F8 }, + { (char*) "Africa/Tunis" , 0x004C75 }, + { (char*) "Africa/Windhoek" , 0x004F32 }, + { (char*) "America/Adak" , 0x0052F9 }, + { (char*) "America/Anchorage" , 0x005C53 }, + { (char*) "America/Anguilla" , 0x0065B5 }, + { (char*) "America/Antigua" , 0x006655 }, + { (char*) "America/Araguaina" , 0x006717 }, + { (char*) "America/Argentina/Buenos_Aires" , 0x006A92 }, + { (char*) "America/Argentina/Catamarca" , 0x006ED9 }, + { (char*) "America/Argentina/ComodRivadavia" , 0x007326 }, + { (char*) "America/Argentina/Cordoba" , 0x007758 }, + { (char*) "America/Argentina/Jujuy" , 0x007BC0 }, + { (char*) "America/Argentina/La_Rioja" , 0x007FE0 }, + { (char*) "America/Argentina/Mendoza" , 0x00842D }, + { (char*) "America/Argentina/Rio_Gallegos" , 0x00886B }, + { (char*) "America/Argentina/Salta" , 0x008CAC }, + { (char*) "America/Argentina/San_Juan" , 0x0090D8 }, + { (char*) "America/Argentina/San_Luis" , 0x009525 }, + { (char*) "America/Argentina/Tucuman" , 0x00997E }, + { (char*) "America/Argentina/Ushuaia" , 0x009DD8 }, + { (char*) "America/Aruba" , 0x00A21F }, + { (char*) "America/Asuncion" , 0x00A2E5 }, + { (char*) "America/Atikokan" , 0x00A95D }, + { (char*) "America/Atka" , 0x00AADA }, + { (char*) "America/Bahia" , 0x00B41A }, + { (char*) "America/Bahia_Banderas" , 0x00B81D }, + { (char*) "America/Barbados" , 0x00BC86 }, + { (char*) "America/Belem" , 0x00BE46 }, + { (char*) "America/Belize" , 0x00C096 }, + { (char*) "America/Blanc-Sablon" , 0x00C6F0 }, + { (char*) "America/Boa_Vista" , 0x00C842 }, + { (char*) "America/Bogota" , 0x00CABF }, + { (char*) "America/Boise" , 0x00CBB3 }, + { (char*) "America/Buenos_Aires" , 0x00D549 }, + { (char*) "America/Cambridge_Bay" , 0x00D97B }, + { (char*) "America/Campo_Grande" , 0x00E269 }, + { (char*) "America/Cancun" , 0x00E81D }, + { (char*) "America/Caracas" , 0x00EB95 }, + { (char*) "America/Catamarca" , 0x00EC9B }, + { (char*) "America/Cayenne" , 0x00F0CD }, + { (char*) "America/Cayman" , 0x00F191 }, + { (char*) "America/Chicago" , 0x00F253 }, + { (char*) "America/Chihuahua" , 0x01007B }, + { (char*) "America/Ciudad_Juarez" , 0x0104EB }, + { (char*) "America/Coral_Harbour" , 0x010B15 }, + { (char*) "America/Cordoba" , 0x010BD7 }, + { (char*) "America/Costa_Rica" , 0x011009 }, + { (char*) "America/Coyhaique" , 0x011151 }, + { (char*) "America/Creston" , 0x0119B7 }, + { (char*) "America/Cuiaba" , 0x011AA5 }, + { (char*) "America/Curacao" , 0x012036 }, + { (char*) "America/Danmarkshavn" , 0x0120FC }, + { (char*) "America/Dawson" , 0x0123DC }, + { (char*) "America/Dawson_Creek" , 0x012A48 }, + { (char*) "America/Denver" , 0x012E8E }, + { (char*) "America/Detroit" , 0x01384B }, + { (char*) "America/Dominica" , 0x014126 }, + { (char*) "America/Edmonton" , 0x0141C6 }, + { (char*) "America/Eirunepe" , 0x0149DD }, + { (char*) "America/El_Salvador" , 0x014C7A }, + { (char*) "America/Ensenada" , 0x014D66 }, + { (char*) "America/Fort_Nelson" , 0x0158CC }, + { (char*) "America/Fort_Wayne" , 0x0161AC }, + { (char*) "America/Fortaleza" , 0x01684A }, + { (char*) "America/Glace_Bay" , 0x016B3A }, + { (char*) "America/Godthab" , 0x0173F1 }, + { (char*) "America/Goose_Bay" , 0x017B5E }, + { (char*) "America/Grand_Turk" , 0x018814 }, + { (char*) "America/Grenada" , 0x018F4A }, + { (char*) "America/Guadeloupe" , 0x018FEA }, + { (char*) "America/Guatemala" , 0x01908A }, + { (char*) "America/Guayaquil" , 0x0191AE }, + { (char*) "America/Guyana" , 0x0192B4 }, + { (char*) "America/Halifax" , 0x0193B8 }, + { (char*) "America/Havana" , 0x01A142 }, + { (char*) "America/Hermosillo" , 0x01AABE }, + { (char*) "America/Indiana/Indianapolis" , 0x01AC54 }, + { (char*) "America/Indiana/Knox" , 0x01B30B }, + { (char*) "America/Indiana/Marengo" , 0x01BCB8 }, + { (char*) "America/Indiana/Petersburg" , 0x01C3A5 }, + { (char*) "America/Indiana/Tell_City" , 0x01CB44 }, + { (char*) "America/Indiana/Vevay" , 0x01D208 }, + { (char*) "America/Indiana/Vincennes" , 0x01D7C4 }, + { (char*) "America/Indiana/Winamac" , 0x01DE9A }, + { (char*) "America/Indianapolis" , 0x01E5BE }, + { (char*) "America/Inuvik" , 0x01EC5C }, + { (char*) "America/Iqaluit" , 0x01F496 }, + { (char*) "America/Jamaica" , 0x01FD55 }, + { (char*) "America/Jujuy" , 0x01FF43 }, + { (char*) "America/Juneau" , 0x020359 }, + { (char*) "America/Kentucky/Louisville" , 0x020CAA }, + { (char*) "America/Kentucky/Monticello" , 0x0217B8 }, + { (char*) "America/Knox_IN" , 0x022118 }, + { (char*) "America/Kralendijk" , 0x022AB0 }, + { (char*) "America/La_Paz" , 0x022BB2 }, + { (char*) "America/Lima" , 0x022C98 }, + { (char*) "America/Los_Angeles" , 0x022E2C }, + { (char*) "America/Louisville" , 0x023963 }, + { (char*) "America/Lower_Princes" , 0x024453 }, + { (char*) "America/Maceio" , 0x024555 }, + { (char*) "America/Managua" , 0x02484B }, + { (char*) "America/Manaus" , 0x024A05 }, + { (char*) "America/Marigot" , 0x024C6E }, + { (char*) "America/Martinique" , 0x024D70 }, + { (char*) "America/Matamoros" , 0x024E64 }, + { (char*) "America/Mazatlan" , 0x025426 }, + { (char*) "America/Mendoza" , 0x025888 }, + { (char*) "America/Menominee" , 0x025CBA }, + { (char*) "America/Merida" , 0x0265C7 }, + { (char*) "America/Metlakatla" , 0x0269D0 }, + { (char*) "America/Mexico_City" , 0x026F82 }, + { (char*) "America/Miquelon" , 0x027462 }, + { (char*) "America/Moncton" , 0x027AE2 }, + { (char*) "America/Monterrey" , 0x028758 }, + { (char*) "America/Montevideo" , 0x028BF4 }, + { (char*) "America/Montreal" , 0x0291D8 }, + { (char*) "America/Montserrat" , 0x029F8A }, + { (char*) "America/Nassau" , 0x02A02A }, + { (char*) "America/New_York" , 0x02A98A }, + { (char*) "America/Nipigon" , 0x02B78A }, + { (char*) "America/Nome" , 0x02C53C }, + { (char*) "America/Noronha" , 0x02CE94 }, + { (char*) "America/North_Dakota/Beulah" , 0x02D16E }, + { (char*) "America/North_Dakota/Center" , 0x02DAEB }, + { (char*) "America/North_Dakota/New_Salem" , 0x02E468 }, + { (char*) "America/Nuuk" , 0x02EDEB }, + { (char*) "America/Ojinaga" , 0x02F569 }, + { (char*) "America/Panama" , 0x02FB85 }, + { (char*) "America/Pangnirtung" , 0x02FC47 }, + { (char*) "America/Paramaribo" , 0x0304ED }, + { (char*) "America/Phoenix" , 0x0305F1 }, + { (char*) "America/Port-au-Prince" , 0x03077D }, + { (char*) "America/Port_of_Spain" , 0x030D23 }, + { (char*) "America/Porto_Acre" , 0x030DC3 }, + { (char*) "America/Porto_Velho" , 0x031035 }, + { (char*) "America/Puerto_Rico" , 0x03127B }, + { (char*) "America/Punta_Arenas" , 0x03137D }, + { (char*) "America/Rainy_River" , 0x031B08 }, + { (char*) "America/Rankin_Inlet" , 0x032648 }, + { (char*) "America/Recife" , 0x032E7C }, + { (char*) "America/Regina" , 0x033150 }, + { (char*) "America/Resolute" , 0x033545 }, + { (char*) "America/Rio_Branco" , 0x033D7A }, + { (char*) "America/Rosario" , 0x033FF0 }, + { (char*) "America/Santa_Isabel" , 0x034422 }, + { (char*) "America/Santarem" , 0x034F88 }, + { (char*) "America/Santiago" , 0x0351EB }, + { (char*) "America/Santo_Domingo" , 0x035BD7 }, + { (char*) "America/Sao_Paulo" , 0x035DAD }, + { (char*) "America/Scoresbysund" , 0x036385 }, + { (char*) "America/Shiprock" , 0x036B3D }, + { (char*) "America/Sitka" , 0x0374E5 }, + { (char*) "America/St_Barthelemy" , 0x037E1D }, + { (char*) "America/St_Johns" , 0x037F1F }, + { (char*) "America/St_Kitts" , 0x038D8D }, + { (char*) "America/St_Lucia" , 0x038E2D }, + { (char*) "America/St_Thomas" , 0x038EEF }, + { (char*) "America/St_Vincent" , 0x038F8F }, + { (char*) "America/Swift_Current" , 0x039051 }, + { (char*) "America/Tegucigalpa" , 0x03929F }, + { (char*) "America/Thule" , 0x0393A7 }, + { (char*) "America/Thunder_Bay" , 0x03999F }, + { (char*) "America/Tijuana" , 0x03A751 }, + { (char*) "America/Toronto" , 0x03B2C6 }, + { (char*) "America/Tortola" , 0x03C096 }, + { (char*) "America/Vancouver" , 0x03C136 }, + { (char*) "America/Virgin" , 0x03CB75 }, + { (char*) "America/Whitehorse" , 0x03CC77 }, + { (char*) "America/Winnipeg" , 0x03D2E3 }, + { (char*) "America/Yakutat" , 0x03DE40 }, + { (char*) "America/Yellowknife" , 0x03E75D }, + { (char*) "Antarctica/Casey" , 0x03EF57 }, + { (char*) "Antarctica/Davis" , 0x03F10F }, + { (char*) "Antarctica/DumontDUrville" , 0x03F23B }, + { (char*) "Antarctica/Macquarie" , 0x03F30B }, + { (char*) "Antarctica/Mawson" , 0x03FBFB }, + { (char*) "Antarctica/McMurdo" , 0x03FCC6 }, + { (char*) "Antarctica/Palmer" , 0x0404C1 }, + { (char*) "Antarctica/Rothera" , 0x040A4F }, + { (char*) "Antarctica/South_Pole" , 0x040AF8 }, + { (char*) "Antarctica/Syowa" , 0x041489 }, + { (char*) "Antarctica/Troll" , 0x041531 }, + { (char*) "Antarctica/Vostok" , 0x0419BE }, + { (char*) "Arctic/Longyearbyen" , 0x041AA5 }, + { (char*) "Asia/Aden" , 0x0423AB }, + { (char*) "Asia/Almaty" , 0x04244E }, + { (char*) "Asia/Amman" , 0x042843 }, + { (char*) "Asia/Anadyr" , 0x042DE8 }, + { (char*) "Asia/Aqtau" , 0x04329D }, + { (char*) "Asia/Aqtobe" , 0x043687 }, + { (char*) "Asia/Ashgabat" , 0x043A85 }, + { (char*) "Asia/Ashkhabad" , 0x043CEE }, + { (char*) "Asia/Atyrau" , 0x043F57 }, + { (char*) "Asia/Baghdad" , 0x044349 }, + { (char*) "Asia/Bahrain" , 0x04471E }, + { (char*) "Asia/Baku" , 0x044809 }, + { (char*) "Asia/Bangkok" , 0x044CD2 }, + { (char*) "Asia/Barnaul" , 0x044D97 }, + { (char*) "Asia/Beirut" , 0x045268 }, + { (char*) "Asia/Bishkek" , 0x045ADE }, + { (char*) "Asia/Brunei" , 0x045EB3 }, + { (char*) "Asia/Calcutta" , 0x045F7C }, + { (char*) "Asia/Chita" , 0x0460A5 }, + { (char*) "Asia/Choibalsan" , 0x04657C }, + { (char*) "Asia/Chongqing" , 0x0468F5 }, + { (char*) "Asia/Chungking" , 0x046B32 }, + { (char*) "Asia/Colombo" , 0x046D6F }, + { (char*) "Asia/Dacca" , 0x046EE1 }, + { (char*) "Asia/Damascus" , 0x047030 }, + { (char*) "Asia/Dhaka" , 0x04778D }, + { (char*) "Asia/Dili" , 0x0478DC }, + { (char*) "Asia/Dubai" , 0x0479E9 }, + { (char*) "Asia/Dushanbe" , 0x047A8C }, + { (char*) "Asia/Famagusta" , 0x047CD9 }, + { (char*) "Asia/Gaza" , 0x0484E0 }, + { (char*) "Asia/Harbin" , 0x0493FA }, + { (char*) "Asia/Hebron" , 0x049637 }, + { (char*) "Asia/Ho_Chi_Minh" , 0x04A56C }, + { (char*) "Asia/Hong_Kong" , 0x04A6C1 }, + { (char*) "Asia/Hovd" , 0x04AB9E }, + { (char*) "Asia/Irkutsk" , 0x04AF2D }, + { (char*) "Asia/Istanbul" , 0x04B420 }, + { (char*) "Asia/Jakarta" , 0x04BBB9 }, + { (char*) "Asia/Jayapura" , 0x04BD51 }, + { (char*) "Asia/Jerusalem" , 0x04BE70 }, + { (char*) "Asia/Kabul" , 0x04C7D0 }, + { (char*) "Asia/Kamchatka" , 0x04C89E }, + { (char*) "Asia/Karachi" , 0x04CD3C }, + { (char*) "Asia/Kashgar" , 0x04CEC3 }, + { (char*) "Asia/Kathmandu" , 0x04CF66 }, + { (char*) "Asia/Katmandu" , 0x04D038 }, + { (char*) "Asia/Khandyga" , 0x04D10A }, + { (char*) "Asia/Kolkata" , 0x04D61D }, + { (char*) "Asia/Krasnoyarsk" , 0x04D746 }, + { (char*) "Asia/Kuala_Lumpur" , 0x04DC14 }, + { (char*) "Asia/Kuching" , 0x04DDC5 }, + { (char*) "Asia/Kuwait" , 0x04DFB4 }, + { (char*) "Asia/Macao" , 0x04E057 }, + { (char*) "Asia/Macau" , 0x04E52E }, + { (char*) "Asia/Magadan" , 0x04EA05 }, + { (char*) "Asia/Makassar" , 0x04EED9 }, + { (char*) "Asia/Manila" , 0x04F02C }, + { (char*) "Asia/Muscat" , 0x04F1DE }, + { (char*) "Asia/Nicosia" , 0x04F281 }, + { (char*) "Asia/Novokuznetsk" , 0x04FA6D }, + { (char*) "Asia/Novosibirsk" , 0x04FF09 }, + { (char*) "Asia/Omsk" , 0x0503E0 }, + { (char*) "Asia/Oral" , 0x0508A2 }, + { (char*) "Asia/Phnom_Penh" , 0x050C9C }, + { (char*) "Asia/Pontianak" , 0x050DB9 }, + { (char*) "Asia/Pyongyang" , 0x050F3C }, + { (char*) "Asia/Qatar" , 0x051035 }, + { (char*) "Asia/Qostanay" , 0x0510FA }, + { (char*) "Asia/Qyzylorda" , 0x051521 }, + { (char*) "Asia/Rangoon" , 0x05193D }, + { (char*) "Asia/Riyadh" , 0x051A47 }, + { (char*) "Asia/Saigon" , 0x051AEA }, + { (char*) "Asia/Sakhalin" , 0x051C3F }, + { (char*) "Asia/Samarkand" , 0x052107 }, + { (char*) "Asia/Seoul" , 0x052357 }, + { (char*) "Asia/Shanghai" , 0x0525CC }, + { (char*) "Asia/Singapore" , 0x052815 }, + { (char*) "Asia/Srednekolymsk" , 0x0529B2 }, + { (char*) "Asia/Taipei" , 0x052E86 }, + { (char*) "Asia/Tashkent" , 0x05318B }, + { (char*) "Asia/Tbilisi" , 0x0533E9 }, + { (char*) "Asia/Tehran" , 0x0537E4 }, + { (char*) "Asia/Tel_Aviv" , 0x053CD0 }, + { (char*) "Asia/Thimbu" , 0x054630 }, + { (char*) "Asia/Thimphu" , 0x0546F9 }, + { (char*) "Asia/Tokyo" , 0x0547C2 }, + { (char*) "Asia/Tomsk" , 0x054903 }, + { (char*) "Asia/Ujung_Pandang" , 0x054DD4 }, + { (char*) "Asia/Ulaanbaatar" , 0x054EDE }, + { (char*) "Asia/Ulan_Bator" , 0x055267 }, + { (char*) "Asia/Urumqi" , 0x0555E0 }, + { (char*) "Asia/Ust-Nera" , 0x055690 }, + { (char*) "Asia/Vientiane" , 0x055B86 }, + { (char*) "Asia/Vladivostok" , 0x055CBF }, + { (char*) "Asia/Yakutsk" , 0x056188 }, + { (char*) "Asia/Yangon" , 0x056650 }, + { (char*) "Asia/Yekaterinburg" , 0x05675A }, + { (char*) "Asia/Yerevan" , 0x056C41 }, + { (char*) "Atlantic/Azores" , 0x0570BE }, + { (char*) "Atlantic/Bermuda" , 0x057E42 }, + { (char*) "Atlantic/Canary" , 0x0587AA }, + { (char*) "Atlantic/Cape_Verde" , 0x058F2D }, + { (char*) "Atlantic/Faeroe" , 0x059039 }, + { (char*) "Atlantic/Faroe" , 0x05975C }, + { (char*) "Atlantic/Jan_Mayen" , 0x059E7F }, + { (char*) "Atlantic/Madeira" , 0x05A785 }, + { (char*) "Atlantic/Reykjavik" , 0x05B4D1 }, + { (char*) "Atlantic/South_Georgia" , 0x05B967 }, + { (char*) "Atlantic/St_Helena" , 0x05BA09 }, + { (char*) "Atlantic/Stanley" , 0x05BACB }, + { (char*) "Australia/ACT" , 0x05BF87 }, + { (char*) "Australia/Adelaide" , 0x05C821 }, + { (char*) "Australia/Brisbane" , 0x05D0DC }, + { (char*) "Australia/Broken_Hill" , 0x05D2A2 }, + { (char*) "Australia/Canberra" , 0x05DB7F }, + { (char*) "Australia/Currie" , 0x05E419 }, + { (char*) "Australia/Darwin" , 0x05ED5B }, + { (char*) "Australia/Eucla" , 0x05EEBE }, + { (char*) "Australia/Hobart" , 0x05F0AB }, + { (char*) "Australia/LHI" , 0x05F9F5 }, + { (char*) "Australia/Lindeman" , 0x060137 }, + { (char*) "Australia/Lord_Howe" , 0x06033D }, + { (char*) "Australia/Melbourne" , 0x060A8F }, + { (char*) "Australia/North" , 0x061331 }, + { (char*) "Australia/NSW" , 0x061482 }, + { (char*) "Australia/Perth" , 0x061D1C }, + { (char*) "Australia/Queensland" , 0x061F04 }, + { (char*) "Australia/South" , 0x0620B3 }, + { (char*) "Australia/Sydney" , 0x06295F }, + { (char*) "Australia/Tasmania" , 0x063215 }, + { (char*) "Australia/Victoria" , 0x063B57 }, + { (char*) "Australia/West" , 0x0643F1 }, + { (char*) "Australia/Yancowinna" , 0x0645BB }, + { (char*) "Brazil/Acre" , 0x064E7C }, + { (char*) "Brazil/DeNoronha" , 0x0650EE }, + { (char*) "Brazil/East" , 0x0653B8 }, + { (char*) "Brazil/West" , 0x06595A }, + { (char*) "Canada/Atlantic" , 0x065BB4 }, + { (char*) "Canada/Central" , 0x066920 }, + { (char*) "Canada/Eastern" , 0x067460 }, + { (char*) "Canada/Mountain" , 0x068212 }, + { (char*) "Canada/Newfoundland" , 0x068A0C }, + { (char*) "Canada/Pacific" , 0x06985F }, + { (char*) "Canada/Saskatchewan" , 0x06A289 }, + { (char*) "Canada/Yukon" , 0x06A669 }, + { (char*) "CET" , 0x06ACC3 }, + { (char*) "Chile/Continental" , 0x06B844 }, + { (char*) "Chile/EasterIsland" , 0x06C223 }, + { (char*) "CST6CDT" , 0x06CADA }, + { (char*) "Cuba" , 0x06D8EE }, + { (char*) "EET" , 0x06E26A }, + { (char*) "Egypt" , 0x06EB4C }, + { (char*) "Eire" , 0x06F4B7 }, + { (char*) "EST" , 0x070267 }, + { (char*) "EST5EDT" , 0x070329 }, + { (char*) "Etc/GMT" , 0x071115 }, + { (char*) "Etc/GMT+0" , 0x071193 }, + { (char*) "Etc/GMT+1" , 0x071211 }, + { (char*) "Etc/GMT+10" , 0x071291 }, + { (char*) "Etc/GMT+11" , 0x071312 }, + { (char*) "Etc/GMT+12" , 0x071393 }, + { (char*) "Etc/GMT+2" , 0x071414 }, + { (char*) "Etc/GMT+3" , 0x071494 }, + { (char*) "Etc/GMT+4" , 0x071514 }, + { (char*) "Etc/GMT+5" , 0x071594 }, + { (char*) "Etc/GMT+6" , 0x071614 }, + { (char*) "Etc/GMT+7" , 0x071694 }, + { (char*) "Etc/GMT+8" , 0x071714 }, + { (char*) "Etc/GMT+9" , 0x071794 }, + { (char*) "Etc/GMT-0" , 0x071814 }, + { (char*) "Etc/GMT-1" , 0x071892 }, + { (char*) "Etc/GMT-10" , 0x071913 }, + { (char*) "Etc/GMT-11" , 0x071995 }, + { (char*) "Etc/GMT-12" , 0x071A17 }, + { (char*) "Etc/GMT-13" , 0x071A99 }, + { (char*) "Etc/GMT-14" , 0x071B1B }, + { (char*) "Etc/GMT-2" , 0x071B9D }, + { (char*) "Etc/GMT-3" , 0x071C1E }, + { (char*) "Etc/GMT-4" , 0x071C9F }, + { (char*) "Etc/GMT-5" , 0x071D20 }, + { (char*) "Etc/GMT-6" , 0x071DA1 }, + { (char*) "Etc/GMT-7" , 0x071E22 }, + { (char*) "Etc/GMT-8" , 0x071EA3 }, + { (char*) "Etc/GMT-9" , 0x071F24 }, + { (char*) "Etc/GMT0" , 0x071FA5 }, + { (char*) "Etc/Greenwich" , 0x072023 }, + { (char*) "Etc/UCT" , 0x0720A1 }, + { (char*) "Etc/Universal" , 0x07211F }, + { (char*) "Etc/UTC" , 0x07219D }, + { (char*) "Etc/Zulu" , 0x07221B }, + { (char*) "Europe/Amsterdam" , 0x072299 }, + { (char*) "Europe/Andorra" , 0x072E03 }, + { (char*) "Europe/Astrakhan" , 0x0734DD }, + { (char*) "Europe/Athens" , 0x07397A }, + { (char*) "Europe/Belfast" , 0x07425C }, + { (char*) "Europe/Belgrade" , 0x0750B8 }, + { (char*) "Europe/Berlin" , 0x075844 }, + { (char*) "Europe/Bratislava" , 0x076159 }, + { (char*) "Europe/Brussels" , 0x076A62 }, + { (char*) "Europe/Bucharest" , 0x0775E3 }, + { (char*) "Europe/Budapest" , 0x077E77 }, + { (char*) "Europe/Busingen" , 0x0787C3 }, + { (char*) "Europe/Chisinau" , 0x078F4C }, + { (char*) "Europe/Copenhagen" , 0x0798D0 }, + { (char*) "Europe/Dublin" , 0x07A135 }, + { (char*) "Europe/Gibraltar" , 0x07AEE5 }, + { (char*) "Europe/Guernsey" , 0x07BAED }, + { (char*) "Europe/Helsinki" , 0x07C98D }, + { (char*) "Europe/Isle_of_Man" , 0x07D105 }, + { (char*) "Europe/Istanbul" , 0x07DF51 }, + { (char*) "Europe/Jersey" , 0x07E6EA }, + { (char*) "Europe/Kaliningrad" , 0x07F58A }, + { (char*) "Europe/Kiev" , 0x07FB7F }, + { (char*) "Europe/Kirov" , 0x0803D3 }, + { (char*) "Europe/Kyiv" , 0x08088E }, + { (char*) "Europe/Lisbon" , 0x0810F1 }, + { (char*) "Europe/Ljubljana" , 0x081ED7 }, + { (char*) "Europe/London" , 0x082663 }, + { (char*) "Europe/Luxembourg" , 0x0834BF }, + { (char*) "Europe/Madrid" , 0x08404D }, + { (char*) "Europe/Malta" , 0x084A9F }, + { (char*) "Europe/Mariehamn" , 0x0854E7 }, + { (char*) "Europe/Minsk" , 0x085C5F }, + { (char*) "Europe/Monaco" , 0x086186 }, + { (char*) "Europe/Moscow" , 0x086D12 }, + { (char*) "Europe/Nicosia" , 0x087331 }, + { (char*) "Europe/Oslo" , 0x087B0F }, + { (char*) "Europe/Paris" , 0x0883CF }, + { (char*) "Europe/Podgorica" , 0x088F6D }, + { (char*) "Europe/Prague" , 0x0896F9 }, + { (char*) "Europe/Riga" , 0x08A002 }, + { (char*) "Europe/Rome" , 0x08A8A4 }, + { (char*) "Europe/Samara" , 0x08B301 }, + { (char*) "Europe/San_Marino" , 0x08B7D7 }, + { (char*) "Europe/Sarajevo" , 0x08C234 }, + { (char*) "Europe/Saratov" , 0x08C9C0 }, + { (char*) "Europe/Simferopol" , 0x08CE6D }, + { (char*) "Europe/Skopje" , 0x08D43C }, + { (char*) "Europe/Sofia" , 0x08DBC8 }, + { (char*) "Europe/Stockholm" , 0x08E3F1 }, + { (char*) "Europe/Tallinn" , 0x08EB72 }, + { (char*) "Europe/Tirane" , 0x08F3E2 }, + { (char*) "Europe/Tiraspol" , 0x08FC12 }, + { (char*) "Europe/Ulyanovsk" , 0x090596 }, + { (char*) "Europe/Uzhgorod" , 0x090A99 }, + { (char*) "Europe/Vaduz" , 0x0912ED }, + { (char*) "Europe/Vatican" , 0x091A59 }, + { (char*) "Europe/Vienna" , 0x0924B6 }, + { (char*) "Europe/Vilnius" , 0x092D5A }, + { (char*) "Europe/Volgograd" , 0x0935D8 }, + { (char*) "Europe/Warsaw" , 0x093A9F }, + { (char*) "Europe/Zagreb" , 0x094509 }, + { (char*) "Europe/Zaporozhye" , 0x094C95 }, + { (char*) "Europe/Zurich" , 0x0954E9 }, + { (char*) "Factory" , 0x095C6A }, + { (char*) "GB" , 0x095CEA }, + { (char*) "GB-Eire" , 0x096B46 }, + { (char*) "GMT" , 0x0979A2 }, + { (char*) "GMT+0" , 0x097A20 }, + { (char*) "GMT-0" , 0x097A9E }, + { (char*) "GMT0" , 0x097B1C }, + { (char*) "Greenwich" , 0x097B9A }, + { (char*) "Hongkong" , 0x097C18 }, + { (char*) "HST" , 0x0980F5 }, + { (char*) "Iceland" , 0x09824A }, + { (char*) "Indian/Antananarivo" , 0x0982EA }, + { (char*) "Indian/Chagos" , 0x0983D1 }, + { (char*) "Indian/Christmas" , 0x098496 }, + { (char*) "Indian/Cocos" , 0x098539 }, + { (char*) "Indian/Comoro" , 0x0985E5 }, + { (char*) "Indian/Kerguelen" , 0x098686 }, + { (char*) "Indian/Mahe" , 0x098729 }, + { (char*) "Indian/Maldives" , 0x0987CC }, + { (char*) "Indian/Mauritius" , 0x098891 }, + { (char*) "Indian/Mayotte" , 0x098980 }, + { (char*) "Indian/Reunion" , 0x098A21 }, + { (char*) "Iran" , 0x098AC4 }, + { (char*) "Israel" , 0x098FB0 }, + { (char*) "Jamaica" , 0x099910 }, + { (char*) "Japan" , 0x099AFE }, + { (char*) "Kwajalein" , 0x099C3F }, + { (char*) "Libya" , 0x099D79 }, + { (char*) "MET" , 0x099FF6 }, + { (char*) "Mexico/BajaNorte" , 0x09AB77 }, + { (char*) "Mexico/BajaSur" , 0x09B6DD }, + { (char*) "Mexico/General" , 0x09BB0D }, + { (char*) "MST" , 0x09BFDF }, + { (char*) "MST7MDT" , 0x09C153 }, + { (char*) "Navajo" , 0x09CAFB }, + { (char*) "NZ" , 0x09D4A3 }, + { (char*) "NZ-CHAT" , 0x09DE34 }, + { (char*) "Pacific/Apia" , 0x09E646 }, + { (char*) "Pacific/Auckland" , 0x09E8A8 }, + { (char*) "Pacific/Bougainville" , 0x09F24C }, + { (char*) "Pacific/Chatham" , 0x09F362 }, + { (char*) "Pacific/Chuuk" , 0x09FB83 }, + { (char*) "Pacific/Easter" , 0x09FC9D }, + { (char*) "Pacific/Efate" , 0x0A0561 }, + { (char*) "Pacific/Enderbury" , 0x0A0779 }, + { (char*) "Pacific/Fakaofo" , 0x0A0861 }, + { (char*) "Pacific/Fiji" , 0x0A0927 }, + { (char*) "Pacific/Funafuti" , 0x0A0B67 }, + { (char*) "Pacific/Galapagos" , 0x0A0C0B }, + { (char*) "Pacific/Gambier" , 0x0A0D08 }, + { (char*) "Pacific/Guadalcanal" , 0x0A0DB9 }, + { (char*) "Pacific/Guam" , 0x0A0E5D }, + { (char*) "Pacific/Honolulu" , 0x0A1057 }, + { (char*) "Pacific/Johnston" , 0x0A11B2 }, + { (char*) "Pacific/Kanton" , 0x0A1307 }, + { (char*) "Pacific/Kiritimati" , 0x0A13FE }, + { (char*) "Pacific/Kosrae" , 0x0A14F6 }, + { (char*) "Pacific/Kwajalein" , 0x0A1659 }, + { (char*) "Pacific/Majuro" , 0x0A179C }, + { (char*) "Pacific/Marquesas" , 0x0A18E8 }, + { (char*) "Pacific/Midway" , 0x0A19A4 }, + { (char*) "Pacific/Nauru" , 0x0A1A97 }, + { (char*) "Pacific/Niue" , 0x0A1B91 }, + { (char*) "Pacific/Norfolk" , 0x0A1C5A }, + { (char*) "Pacific/Noumea" , 0x0A1FC8 }, + { (char*) "Pacific/Pago_Pago" , 0x0A20F6 }, + { (char*) "Pacific/Palau" , 0x0A21B1 }, + { (char*) "Pacific/Pitcairn" , 0x0A2263 }, + { (char*) "Pacific/Pohnpei" , 0x0A232B }, + { (char*) "Pacific/Ponape" , 0x0A2466 }, + { (char*) "Pacific/Port_Moresby" , 0x0A250A }, + { (char*) "Pacific/Rarotonga" , 0x0A25DA }, + { (char*) "Pacific/Saipan" , 0x0A2833 }, + { (char*) "Pacific/Samoa" , 0x0A2A1F }, + { (char*) "Pacific/Tahiti" , 0x0A2ADA }, + { (char*) "Pacific/Tarawa" , 0x0A2B8C }, + { (char*) "Pacific/Tongatapu" , 0x0A2C3F }, + { (char*) "Pacific/Truk" , 0x0A2DB1 }, + { (char*) "Pacific/Wake" , 0x0A2E69 }, + { (char*) "Pacific/Wallis" , 0x0A2F18 }, + { (char*) "Pacific/Yap" , 0x0A2FBC }, + { (char*) "Poland" , 0x0A3074 }, + { (char*) "Portugal" , 0x0A3ADE }, + { (char*) "PRC" , 0x0A48B1 }, + { (char*) "PST8PDT" , 0x0A4AEE }, + { (char*) "ROC" , 0x0A561E }, + { (char*) "ROK" , 0x0A5923 }, + { (char*) "Singapore" , 0x0A5B98 }, + { (char*) "Turkey" , 0x0A5D35 }, + { (char*) "UCT" , 0x0A64CE }, + { (char*) "Universal" , 0x0A654C }, + { (char*) "US/Alaska" , 0x0A65CA }, + { (char*) "US/Aleutian" , 0x0A6F19 }, + { (char*) "US/Arizona" , 0x0A7859 }, + { (char*) "US/Central" , 0x0A79CD }, + { (char*) "US/East-Indiana" , 0x0A87E1 }, + { (char*) "US/Eastern" , 0x0A8E7F }, + { (char*) "US/Hawaii" , 0x0A9C6B }, + { (char*) "US/Indiana-Starke" , 0x0A9DC0 }, + { (char*) "US/Michigan" , 0x0AA758 }, + { (char*) "US/Mountain" , 0x0AB01A }, + { (char*) "US/Pacific" , 0x0AB9C2 }, + { (char*) "US/Samoa" , 0x0AC4F2 }, + { (char*) "UTC" , 0x0AC5AD }, + { (char*) "W-SU" , 0x0AC62B }, + { (char*) "WET" , 0x0ACC36 }, + { (char*) "Zulu" , 0x0ADA09 }, }; -const unsigned char timelib_timezone_db_data_builtin[715312] = { +const unsigned char timelib_timezone_db_data_builtin[711303] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -25504,7 +25469,7 @@ /* Africa/Casablanca */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0x96, 0x51, 0xF9, 0x9C, +0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0C, 0x96, 0x51, 0xF9, 0x9C, 0xC6, 0xFF, 0x14, 0x80, 0xC7, 0x58, 0xAC, 0x70, 0xC7, 0xD9, 0xED, 0x80, 0xD2, 0xA1, 0x32, 0xF0, 0xDB, 0x35, 0xA4, 0x00, 0xDB, 0xEE, 0x27, 0xF0, 0xFB, 0x25, 0x72, 0x40, 0xFB, 0xC2, 0xEF, 0x70, 0x08, 0x6B, 0x84, 0x80, 0x08, 0xC6, 0x6D, 0xF0, 0x0B, 0xE8, 0x0C, 0x00, 0x0C, 0x61, 0x47, 0xF0, @@ -25522,139 +25487,62 @@ 0x5E, 0x9B, 0xB0, 0xA0, 0x5E, 0xD3, 0x0F, 0xA0, 0x60, 0x72, 0x58, 0x20, 0x60, 0xA0, 0x7C, 0xA0, 0x62, 0x3F, 0xC5, 0x20, 0x62, 0x77, 0x24, 0x20, 0x64, 0x16, 0x6C, 0xA0, 0x64, 0x44, 0x91, 0x20, 0x65, 0xED, 0x14, 0x20, 0x66, 0x1B, 0x38, 0xA0, 0x67, 0xBA, 0x81, 0x20, 0x67, 0xF1, 0xE0, 0x20, -0x69, 0x91, 0x28, 0xA0, 0x69, 0xBF, 0x4D, 0x20, 0x6B, 0x67, 0xD0, 0x20, 0x6B, 0x95, 0xF4, 0xA0, -0x6D, 0x35, 0x3D, 0x20, 0x6D, 0x6C, 0x9C, 0x20, 0x6F, 0x0B, 0xE4, 0xA0, 0x6F, 0x3A, 0x09, 0x20, -0x70, 0xD9, 0x51, 0xA0, 0x71, 0x10, 0xB0, 0xA0, 0x72, 0xAF, 0xF9, 0x20, 0x72, 0xDE, 0x1D, 0xA0, -0x74, 0x86, 0xA0, 0xA0, 0x74, 0xB4, 0xC5, 0x20, 0x76, 0x54, 0x0D, 0xA0, 0x76, 0x8B, 0x6C, 0xA0, -0x78, 0x2A, 0xB5, 0x20, 0x78, 0x58, 0xD9, 0xA0, 0x79, 0xF8, 0x22, 0x20, 0x7A, 0x2F, 0x81, 0x20, -0x7B, 0xCE, 0xC9, 0xA0, 0x7C, 0x06, 0x28, 0xA0, 0x7D, 0xA5, 0x71, 0x20, 0x7D, 0xD3, 0x95, 0xA0, -0x7F, 0x72, 0xDE, 0x20, 0x7F, 0xAA, 0x3D, 0x20, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x69, 0x91, 0x28, 0xA0, 0x69, 0xBF, 0x4D, 0x20, 0x6A, 0xAF, 0x30, 0x10, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 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, 0x03, 0x04, -0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, -0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, -0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, 0xFF, 0xF8, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x0E, -0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, -0x00, 0x00, 0x00, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x30, -0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x03, 0x04, 0x03, 0x02, 0xFF, 0xFF, 0xF8, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, +0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x31, 0x00, +0x2B, 0x30, 0x30, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xC5, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, -0xFF, 0x96, 0x51, 0xF9, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0xFF, 0x14, 0x80, 0xFF, 0xFF, 0xFF, -0xFF, 0xC7, 0x58, 0xAC, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xD9, 0xED, 0x80, 0xFF, 0xFF, 0xFF, -0xFF, 0xD2, 0xA1, 0x32, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x35, 0xA4, 0x00, 0xFF, 0xFF, 0xFF, -0xFF, 0xDB, 0xEE, 0x27, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x25, 0x72, 0x40, 0xFF, 0xFF, 0xFF, -0xFF, 0xFB, 0xC2, 0xEF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x08, 0x6B, 0x84, 0x80, 0x00, 0x00, 0x00, -0x00, 0x08, 0xC6, 0x6D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE8, 0x0C, 0x00, 0x00, 0x00, 0x00, -0x00, 0x0C, 0x61, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC9, 0x3F, 0x80, 0x00, 0x00, 0x00, -0x00, 0x0E, 0x8E, 0xF2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xD3, 0x51, 0x80, 0x00, 0x00, 0x00, -0x00, 0x10, 0x27, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xB7, 0xA6, 0x00, 0x00, 0x00, 0x00, -0x00, 0x1E, 0x18, 0x6F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0xE6, 0x80, 0x00, 0x00, 0x00, -0x00, 0x48, 0xBB, 0x22, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x23, 0x1A, 0x00, 0x00, 0x00, 0x00, -0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xDC, 0xC0, 0x80, 0x00, 0x00, 0x00, -0x00, 0x4C, 0x5D, 0xE5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x97, 0xB8, 0x80, 0x00, 0x00, 0x00, -0x00, 0x4E, 0x34, 0x8C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x9C, 0xA0, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x50, 0x08, 0xBB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x31, 0x9A, 0x20, 0x00, 0x00, 0x00, -0x00, 0x50, 0x67, 0xA7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x7C, 0x82, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x51, 0xD8, 0xCB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x05, 0x9E, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x52, 0x6C, 0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x7A, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x53, 0xAE, 0x21, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0xDC, 0x46, 0x20, 0x00, 0x00, 0x00, -0x00, 0x54, 0x4C, 0x55, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x5C, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x55, 0x7C, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x55, 0xAB, 0x04, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x56, 0x2C, 0x37, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x3E, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x57, 0x53, 0x87, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x57, 0x81, 0xAC, 0x20, 0x00, 0x00, 0x00, -0x00, 0x58, 0x15, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x20, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x59, 0x20, 0xF4, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x58, 0x53, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x59, 0xF5, 0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB7, 0x02, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x5A, 0xF7, 0x9C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x25, 0xC0, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x5B, 0xD5, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xCE, 0x43, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x5C, 0xFC, 0x68, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x9B, 0xB0, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x5E, 0xD3, 0x0F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x72, 0x58, 0x20, 0x00, 0x00, 0x00, -0x00, 0x60, 0xA0, 0x7C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xC5, 0x20, 0x00, 0x00, 0x00, -0x00, 0x62, 0x77, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0x64, 0x16, 0x6C, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x64, 0x44, 0x91, 0x20, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x14, 0x20, 0x00, 0x00, 0x00, -0x00, 0x66, 0x1B, 0x38, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xBA, 0x81, 0x20, 0x00, 0x00, 0x00, -0x00, 0x67, 0xF1, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x69, 0x91, 0x28, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x69, 0xBF, 0x4D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x67, 0xD0, 0x20, 0x00, 0x00, 0x00, -0x00, 0x6B, 0x95, 0xF4, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x35, 0x3D, 0x20, 0x00, 0x00, 0x00, -0x00, 0x6D, 0x6C, 0x9C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x0B, 0xE4, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x6F, 0x3A, 0x09, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70, 0xD9, 0x51, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x71, 0x10, 0xB0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x72, 0xAF, 0xF9, 0x20, 0x00, 0x00, 0x00, -0x00, 0x72, 0xDE, 0x1D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x86, 0xA0, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x74, 0xB4, 0xC5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x76, 0x54, 0x0D, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x76, 0x8B, 0x6C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x2A, 0xB5, 0x20, 0x00, 0x00, 0x00, -0x00, 0x78, 0x58, 0xD9, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x22, 0x20, 0x00, 0x00, 0x00, -0x00, 0x7A, 0x2F, 0x81, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xC9, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x7C, 0x06, 0x28, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xA5, 0x71, 0x20, 0x00, 0x00, 0x00, -0x00, 0x7D, 0xD3, 0x95, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x72, 0xDE, 0x20, 0x00, 0x00, 0x00, -0x00, 0x7F, 0xAA, 0x3D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x81, 0x49, 0x85, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x81, 0x77, 0xAA, 0x20, 0x00, 0x00, 0x00, 0x00, 0x83, 0x20, 0x2D, 0x20, 0x00, 0x00, 0x00, -0x00, 0x83, 0x4E, 0x51, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x84, 0xED, 0x9A, 0x20, 0x00, 0x00, 0x00, -0x00, 0x85, 0x24, 0xF9, 0x20, 0x00, 0x00, 0x00, 0x00, 0x86, 0xC4, 0x41, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x86, 0xF2, 0x66, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x91, 0xAE, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x88, 0xC9, 0x0D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x68, 0x56, 0x20, 0x00, 0x00, 0x00, -0x00, 0x8A, 0x9F, 0xB5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x3E, 0xFD, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x8C, 0x6D, 0x22, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x0C, 0x6A, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x8E, 0x43, 0xC9, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xE3, 0x12, 0x20, 0x00, 0x00, 0x00, -0x00, 0x90, 0x11, 0x36, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x91, 0xB9, 0xB9, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x91, 0xE7, 0xDE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x93, 0x87, 0x26, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x93, 0xBE, 0x85, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x95, 0x5D, 0xCE, 0x20, 0x00, 0x00, 0x00, -0x00, 0x95, 0x8B, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x97, 0x2B, 0x3B, 0x20, 0x00, 0x00, 0x00, -0x00, 0x97, 0x62, 0x9A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x99, 0x01, 0xE2, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x99, 0x39, 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xD8, 0x8A, 0x20, 0x00, 0x00, 0x00, -0x00, 0x9B, 0x06, 0xAE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xA5, 0xF7, 0x20, 0x00, 0x00, 0x00, -0x00, 0x9C, 0xDD, 0x56, 0x20, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x7C, 0x9E, 0xA0, 0x00, 0x00, 0x00, -0x00, 0x9E, 0xAA, 0xC3, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x53, 0x46, 0x20, 0x00, 0x00, 0x00, -0x00, 0xA0, 0x81, 0x6A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x20, 0xB3, 0x20, 0x00, 0x00, 0x00, -0x00, 0xA2, 0x58, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA3, 0xF7, 0x5A, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xA4, 0x25, 0x7F, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xC4, 0xC7, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xA5, 0xFC, 0x26, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA7, 0x9B, 0x6F, 0x20, 0x00, 0x00, 0x00, -0x00, 0xA7, 0xD2, 0xCE, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x72, 0x16, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xA9, 0xA0, 0x3B, 0x20, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x3F, 0x83, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xAB, 0x76, 0xE2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x16, 0x2B, 0x20, 0x00, 0x00, 0x00, -0x00, 0xAD, 0x44, 0x4F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xEC, 0xD2, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xAF, 0x1A, 0xF7, 0x20, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xBA, 0x3F, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xB0, 0xF1, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x90, 0xE7, 0x20, 0x00, 0x00, 0x00, -0x00, 0xB2, 0xBF, 0x0B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x5E, 0x54, 0x20, 0x00, 0x00, 0x00, -0x00, 0xB4, 0x95, 0xB3, 0x20, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x34, 0xFB, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xB6, 0x6C, 0x5A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x0B, 0xA3, 0x20, 0x00, 0x00, 0x00, -0x00, 0xB8, 0x39, 0xC7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xD9, 0x10, 0x20, 0x00, 0x00, 0x00, -0x00, 0xBA, 0x10, 0x6F, 0x20, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xAF, 0xB7, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xBB, 0xDD, 0xDC, 0x20, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x86, 0x5F, 0x20, 0x00, 0x00, 0x00, -0x00, 0xBD, 0xB4, 0x83, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x53, 0xCC, 0x20, 0x00, 0x00, 0x00, -0x00, 0xBF, 0x8B, 0x2B, 0x20, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x2A, 0x73, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xC1, 0x58, 0x98, 0x20, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xF7, 0xE0, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xC3, 0x2F, 0x3F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xCE, 0x88, 0x20, 0x00, 0x00, 0x00, -0x00, 0xC5, 0x05, 0xE7, 0x20, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xA5, 0x2F, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xC6, 0xD3, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x72, 0x9C, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xC8, 0xA9, 0xFB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x49, 0x44, 0x20, 0x00, 0x00, 0x00, -0x00, 0xCA, 0x77, 0x68, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x1F, 0xEB, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xCC, 0x4E, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xED, 0x58, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xCE, 0x24, 0xB7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xC4, 0x00, 0x20, 0x00, 0x00, 0x00, -0x00, 0xCF, 0xF2, 0x24, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x91, 0x6D, 0x20, 0x00, 0x00, 0x00, -0x00, 0xD1, 0xC8, 0xCC, 0x20, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x68, 0x14, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xD3, 0x96, 0x39, 0x20, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x3E, 0xBC, 0x20, 0x00, 0x00, 0x00, -0x00, 0xD5, 0x6C, 0xE0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x0C, 0x29, 0x20, 0x00, 0x00, 0x00, -0x00, 0xD7, 0x43, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xE2, 0xD0, 0xA0, 0x00, 0x00, 0x00, -0x00, 0xD9, 0x10, 0xF5, 0x20, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xB9, 0x78, 0x20, 0x00, 0x00, 0x00, -0x00, 0xDA, 0xE7, 0x9C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x86, 0xE5, 0x20, 0x00, 0x00, 0x00, -0x00, 0xDC, 0xBE, 0x44, 0x20, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 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, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0xFF, 0xFF, 0xF8, 0xE4, 0x00, 0x00, -0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x31, 0x00, -0x2B, 0x30, 0x30, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x31, 0x3E, 0x2D, 0x31, 0x0A, 0x00, 0xBC, 0xAC, -0xC8, 0x01, 0x07, 0x16, 0x42, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0C, +0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0x51, 0xF9, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0xFF, 0x14, 0x80, +0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xAC, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xD9, 0xED, 0x80, +0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xA1, 0x32, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x35, 0xA4, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xEE, 0x27, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x25, 0x72, 0x40, +0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xC2, 0xEF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x08, 0x6B, 0x84, 0x80, +0x00, 0x00, 0x00, 0x00, 0x08, 0xC6, 0x6D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE8, 0x0C, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0C, 0x61, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC9, 0x3F, 0x80, +0x00, 0x00, 0x00, 0x00, 0x0E, 0x8E, 0xF2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xD3, 0x51, 0x80, +0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xB7, 0xA6, 0x00, +0x00, 0x00, 0x00, 0x00, 0x1E, 0x18, 0x6F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0xE6, 0x80, +0x00, 0x00, 0x00, 0x00, 0x48, 0xBB, 0x22, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x23, 0x1A, 0x00, +0x00, 0x00, 0x00, 0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xDC, 0xC0, 0x80, +0x00, 0x00, 0x00, 0x00, 0x4C, 0x5D, 0xE5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x97, 0xB8, 0x80, +0x00, 0x00, 0x00, 0x00, 0x4E, 0x34, 0x8C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x9C, 0xA0, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x50, 0x08, 0xBB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x31, 0x9A, 0x20, +0x00, 0x00, 0x00, 0x00, 0x50, 0x67, 0xA7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x7C, 0x82, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x51, 0xD8, 0xCB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x05, 0x9E, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x7A, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x53, 0xAE, 0x21, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0xDC, 0x46, 0x20, +0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x55, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x5C, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x55, 0x7C, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x55, 0xAB, 0x04, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x37, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x3E, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x57, 0x53, 0x87, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x57, 0x81, 0xAC, 0x20, +0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x20, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0xF4, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x58, 0x53, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB7, 0x02, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x5A, 0xF7, 0x9C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x25, 0xC0, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xCE, 0x43, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x5C, 0xFC, 0x68, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x9B, 0xB0, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x5E, 0xD3, 0x0F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x72, 0x58, 0x20, +0x00, 0x00, 0x00, 0x00, 0x60, 0xA0, 0x7C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xC5, 0x20, +0x00, 0x00, 0x00, 0x00, 0x62, 0x77, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0x64, 0x16, 0x6C, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x64, 0x44, 0x91, 0x20, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x14, 0x20, +0x00, 0x00, 0x00, 0x00, 0x66, 0x1B, 0x38, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xBA, 0x81, 0x20, +0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x69, 0x91, 0x28, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x69, 0xBF, 0x4D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xAF, 0x30, 0x10, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x03, 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, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x02, 0xFF, 0xFF, 0xF8, 0xE4, 0x00, 0x00, 0x00, 0x00, +0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, +0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, +0x2B, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x30, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x30, 0x3E, 0x30, 0x0A, +0x00, 0xBC, 0xAC, 0xC8, 0x01, 0x07, 0x16, 0x42, 0x00, 0x00, 0x00, 0x00, /* Africa/Ceuta */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -25865,7 +25753,7 @@ /* Africa/El_Aaiun */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x45, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0xBC, 0x48, 0xF0, 0xE0, +0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0xBC, 0x48, 0xF0, 0xE0, 0x0B, 0xD1, 0xB0, 0x90, 0x0B, 0xE8, 0x0C, 0x00, 0x0C, 0x61, 0x47, 0xF0, 0x0D, 0xC9, 0x3F, 0x80, 0x0E, 0x8E, 0xF2, 0x70, 0x0F, 0xD3, 0x51, 0x80, 0x10, 0x27, 0xA3, 0x70, 0x48, 0x41, 0xE6, 0x80, 0x48, 0xBB, 0x22, 0x70, 0x4A, 0x23, 0x1A, 0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x4B, 0xDC, 0xC0, 0x80, @@ -25880,134 +25768,57 @@ 0x5C, 0xFC, 0x68, 0x20, 0x5E, 0x9B, 0xB0, 0xA0, 0x5E, 0xD3, 0x0F, 0xA0, 0x60, 0x72, 0x58, 0x20, 0x60, 0xA0, 0x7C, 0xA0, 0x62, 0x3F, 0xC5, 0x20, 0x62, 0x77, 0x24, 0x20, 0x64, 0x16, 0x6C, 0xA0, 0x64, 0x44, 0x91, 0x20, 0x65, 0xED, 0x14, 0x20, 0x66, 0x1B, 0x38, 0xA0, 0x67, 0xBA, 0x81, 0x20, -0x67, 0xF1, 0xE0, 0x20, 0x69, 0x91, 0x28, 0xA0, 0x69, 0xBF, 0x4D, 0x20, 0x6B, 0x67, 0xD0, 0x20, -0x6B, 0x95, 0xF4, 0xA0, 0x6D, 0x35, 0x3D, 0x20, 0x6D, 0x6C, 0x9C, 0x20, 0x6F, 0x0B, 0xE4, 0xA0, -0x6F, 0x3A, 0x09, 0x20, 0x70, 0xD9, 0x51, 0xA0, 0x71, 0x10, 0xB0, 0xA0, 0x72, 0xAF, 0xF9, 0x20, -0x72, 0xDE, 0x1D, 0xA0, 0x74, 0x86, 0xA0, 0xA0, 0x74, 0xB4, 0xC5, 0x20, 0x76, 0x54, 0x0D, 0xA0, -0x76, 0x8B, 0x6C, 0xA0, 0x78, 0x2A, 0xB5, 0x20, 0x78, 0x58, 0xD9, 0xA0, 0x79, 0xF8, 0x22, 0x20, -0x7A, 0x2F, 0x81, 0x20, 0x7B, 0xCE, 0xC9, 0xA0, 0x7C, 0x06, 0x28, 0xA0, 0x7D, 0xA5, 0x71, 0x20, -0x7D, 0xD3, 0x95, 0xA0, 0x7F, 0x72, 0xDE, 0x20, 0x7F, 0xAA, 0x3D, 0x20, 0x01, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 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, -0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, -0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x31, 0x00, -0x2B, 0x30, 0x30, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, -0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x48, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xD1, 0xB0, 0x90, -0x00, 0x00, 0x00, 0x00, 0x0B, 0xE8, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x61, 0x47, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x0D, 0xC9, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x8E, 0xF2, 0x70, -0x00, 0x00, 0x00, 0x00, 0x0F, 0xD3, 0x51, 0x80, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0xA3, 0x70, -0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0xE6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x48, 0xBB, 0x22, 0x70, -0x00, 0x00, 0x00, 0x00, 0x4A, 0x23, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x8D, 0xD5, 0x70, -0x00, 0x00, 0x00, 0x00, 0x4B, 0xDC, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x5D, 0xE5, 0x70, -0x00, 0x00, 0x00, 0x00, 0x4D, 0x97, 0xB8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x34, 0x8C, 0xF0, -0x00, 0x00, 0x00, 0x00, 0x4F, 0x9C, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x08, 0xBB, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x50, 0x31, 0x9A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x50, 0x67, 0xA7, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x51, 0x7C, 0x82, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x51, 0xD8, 0xCB, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x52, 0x05, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x73, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x7A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0xAE, 0x21, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x53, 0xDC, 0x46, 0x20, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x55, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x5C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x7C, 0xE0, 0x20, -0x00, 0x00, 0x00, 0x00, 0x55, 0xAB, 0x04, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x37, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x3E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x57, 0x53, 0x87, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x57, 0x81, 0xAC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x54, 0x20, -0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x20, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0xF4, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x59, 0x58, 0x53, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x36, 0x20, -0x00, 0x00, 0x00, 0x00, 0x5A, 0xB7, 0x02, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xF7, 0x9C, 0x20, -0x00, 0x00, 0x00, 0x00, 0x5B, 0x25, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x18, 0x20, -0x00, 0x00, 0x00, 0x00, 0x5C, 0xCE, 0x43, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xFC, 0x68, 0x20, -0x00, 0x00, 0x00, 0x00, 0x5E, 0x9B, 0xB0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xD3, 0x0F, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x60, 0x72, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0xA0, 0x7C, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xC5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x62, 0x77, 0x24, 0x20, -0x00, 0x00, 0x00, 0x00, 0x64, 0x16, 0x6C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x64, 0x44, 0x91, 0x20, -0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x14, 0x20, 0x00, 0x00, 0x00, 0x00, 0x66, 0x1B, 0x38, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x67, 0xBA, 0x81, 0x20, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0xE0, 0x20, -0x00, 0x00, 0x00, 0x00, 0x69, 0x91, 0x28, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xBF, 0x4D, 0x20, -0x00, 0x00, 0x00, 0x00, 0x6B, 0x67, 0xD0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x95, 0xF4, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x6D, 0x35, 0x3D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x6C, 0x9C, 0x20, -0x00, 0x00, 0x00, 0x00, 0x6F, 0x0B, 0xE4, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x3A, 0x09, 0x20, -0x00, 0x00, 0x00, 0x00, 0x70, 0xD9, 0x51, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x10, 0xB0, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x72, 0xAF, 0xF9, 0x20, 0x00, 0x00, 0x00, 0x00, 0x72, 0xDE, 0x1D, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x74, 0x86, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xB4, 0xC5, 0x20, -0x00, 0x00, 0x00, 0x00, 0x76, 0x54, 0x0D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x76, 0x8B, 0x6C, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x78, 0x2A, 0xB5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x78, 0x58, 0xD9, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x22, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x2F, 0x81, 0x20, -0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xC9, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x06, 0x28, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x7D, 0xA5, 0x71, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xD3, 0x95, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x7F, 0x72, 0xDE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xAA, 0x3D, 0x20, -0x00, 0x00, 0x00, 0x00, 0x81, 0x49, 0x85, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x81, 0x77, 0xAA, 0x20, -0x00, 0x00, 0x00, 0x00, 0x83, 0x20, 0x2D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x83, 0x4E, 0x51, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x84, 0xED, 0x9A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x85, 0x24, 0xF9, 0x20, -0x00, 0x00, 0x00, 0x00, 0x86, 0xC4, 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x86, 0xF2, 0x66, 0x20, -0x00, 0x00, 0x00, 0x00, 0x88, 0x91, 0xAE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x88, 0xC9, 0x0D, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x8A, 0x68, 0x56, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x9F, 0xB5, 0x20, -0x00, 0x00, 0x00, 0x00, 0x8C, 0x3E, 0xFD, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x6D, 0x22, 0x20, -0x00, 0x00, 0x00, 0x00, 0x8E, 0x0C, 0x6A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x43, 0xC9, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x8F, 0xE3, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x90, 0x11, 0x36, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x91, 0xB9, 0xB9, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x91, 0xE7, 0xDE, 0x20, -0x00, 0x00, 0x00, 0x00, 0x93, 0x87, 0x26, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x93, 0xBE, 0x85, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x95, 0x5D, 0xCE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x95, 0x8B, 0xF2, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x97, 0x2B, 0x3B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x97, 0x62, 0x9A, 0x20, -0x00, 0x00, 0x00, 0x00, 0x99, 0x01, 0xE2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x99, 0x39, 0x41, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x9A, 0xD8, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x06, 0xAE, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x9C, 0xA5, 0xF7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xDD, 0x56, 0x20, -0x00, 0x00, 0x00, 0x00, 0x9E, 0x7C, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9E, 0xAA, 0xC3, 0x20, -0x00, 0x00, 0x00, 0x00, 0xA0, 0x53, 0x46, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x81, 0x6A, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xA2, 0x20, 0xB3, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x58, 0x12, 0x20, -0x00, 0x00, 0x00, 0x00, 0xA3, 0xF7, 0x5A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x25, 0x7F, 0x20, -0x00, 0x00, 0x00, 0x00, 0xA5, 0xC4, 0xC7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xFC, 0x26, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xA7, 0x9B, 0x6F, 0x20, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xD2, 0xCE, 0x20, -0x00, 0x00, 0x00, 0x00, 0xA9, 0x72, 0x16, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xA0, 0x3B, 0x20, -0x00, 0x00, 0x00, 0x00, 0xAB, 0x3F, 0x83, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x76, 0xE2, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xAD, 0x16, 0x2B, 0x20, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x44, 0x4F, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xAE, 0xEC, 0xD2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x1A, 0xF7, 0x20, -0x00, 0x00, 0x00, 0x00, 0xB0, 0xBA, 0x3F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xF1, 0x9E, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xB2, 0x90, 0xE7, 0x20, 0x00, 0x00, 0x00, 0x00, 0xB2, 0xBF, 0x0B, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xB4, 0x5E, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x95, 0xB3, 0x20, -0x00, 0x00, 0x00, 0x00, 0xB6, 0x34, 0xFB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x6C, 0x5A, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xB8, 0x0B, 0xA3, 0x20, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x39, 0xC7, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xB9, 0xD9, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x10, 0x6F, 0x20, -0x00, 0x00, 0x00, 0x00, 0xBB, 0xAF, 0xB7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xDD, 0xDC, 0x20, -0x00, 0x00, 0x00, 0x00, 0xBD, 0x86, 0x5F, 0x20, 0x00, 0x00, 0x00, 0x00, 0xBD, 0xB4, 0x83, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xBF, 0x53, 0xCC, 0x20, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x8B, 0x2B, 0x20, -0x00, 0x00, 0x00, 0x00, 0xC1, 0x2A, 0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x58, 0x98, 0x20, -0x00, 0x00, 0x00, 0x00, 0xC2, 0xF7, 0xE0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x2F, 0x3F, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xC4, 0xCE, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0xC5, 0x05, 0xE7, 0x20, -0x00, 0x00, 0x00, 0x00, 0xC6, 0xA5, 0x2F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xD3, 0x54, 0x20, -0x00, 0x00, 0x00, 0x00, 0xC8, 0x72, 0x9C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xA9, 0xFB, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xCA, 0x49, 0x44, 0x20, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x77, 0x68, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xCC, 0x1F, 0xEB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x4E, 0x10, 0x20, -0x00, 0x00, 0x00, 0x00, 0xCD, 0xED, 0x58, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x24, 0xB7, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xCF, 0xC4, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xF2, 0x24, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xD1, 0x91, 0x6D, 0x20, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xC8, 0xCC, 0x20, -0x00, 0x00, 0x00, 0x00, 0xD3, 0x68, 0x14, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x96, 0x39, 0x20, -0x00, 0x00, 0x00, 0x00, 0xD5, 0x3E, 0xBC, 0x20, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x6C, 0xE0, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xD7, 0x0C, 0x29, 0x20, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x43, 0x88, 0x20, -0x00, 0x00, 0x00, 0x00, 0xD8, 0xE2, 0xD0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xD9, 0x10, 0xF5, 0x20, -0x00, 0x00, 0x00, 0x00, 0xDA, 0xB9, 0x78, 0x20, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xE7, 0x9C, 0xA0, -0x00, 0x00, 0x00, 0x00, 0xDC, 0x86, 0xE5, 0x20, 0x00, 0x00, 0x00, 0x00, 0xDC, 0xBE, 0x44, 0x20, +0x67, 0xF1, 0xE0, 0x20, 0x69, 0x91, 0x28, 0xA0, 0x69, 0xBF, 0x4D, 0x20, 0x6A, 0xAF, 0x30, 0x10, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 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, 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, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, -0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, -0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, -0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x30, 0x00, 0x0A, 0x3C, -0x2B, 0x30, 0x31, 0x3E, 0x2D, 0x31, 0x0A, 0x00, 0xB2, 0xC1, 0xB8, 0x00, 0xFE, 0x84, 0x40, 0x00, -0x00, 0x00, 0x00, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x03, 0xFF, 0xFF, 0xF3, +0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x2B, +0x30, 0x31, 0x00, 0x2B, 0x30, 0x30, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x07, 0x00, +0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x48, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0B, +0xD1, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE8, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, +0x61, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC9, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0E, +0x8E, 0xF2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xD3, 0x51, 0x80, 0x00, 0x00, 0x00, 0x00, 0x10, +0x27, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0xE6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x48, +0xBB, 0x22, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x23, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, +0x8D, 0xD5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xDC, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4C, +0x5D, 0xE5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x97, 0xB8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4E, +0x34, 0x8C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x9C, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, +0x08, 0xBB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x31, 0x9A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x50, +0x67, 0xA7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x7C, 0x82, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x51, +0xD8, 0xCB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x05, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, +0x6C, 0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x7A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, +0xAE, 0x21, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0xDC, 0x46, 0x20, 0x00, 0x00, 0x00, 0x00, 0x54, +0x4C, 0x55, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x5C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, +0x7C, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x55, 0xAB, 0x04, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, +0x2C, 0x37, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x3E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x57, +0x53, 0x87, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x57, 0x81, 0xAC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, +0x15, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x20, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, +0x20, 0xF4, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x58, 0x53, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, +0xF5, 0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB7, 0x02, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5A, +0xF7, 0x9C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x25, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5B, +0xD5, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xCE, 0x43, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5C, +0xFC, 0x68, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x9B, 0xB0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5E, +0xD3, 0x0F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x72, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, +0xA0, 0x7C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xC5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x62, +0x77, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0x64, 0x16, 0x6C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x64, +0x44, 0x91, 0x20, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x14, 0x20, 0x00, 0x00, 0x00, 0x00, 0x66, +0x1B, 0x38, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xBA, 0x81, 0x20, 0x00, 0x00, 0x00, 0x00, 0x67, +0xF1, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x69, 0x91, 0x28, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, +0xBF, 0x4D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xAF, 0x30, 0x10, 0x01, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x03, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF, 0xFF, +0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, +0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x31, 0x00, 0x2B, 0x30, +0x30, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x30, 0x3E, 0x30, 0x0A, 0x00, 0xB2, 0xC1, 0xB8, 0x00, 0xFE, +0x84, 0x40, 0x00, 0x00, 0x00, 0x00, /* Africa/Freetown */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -30652,8 +30463,8 @@ /* America/Edmonton */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 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, 0x96, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x88, 0xDE, 0xCE, 0xE0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x88, 0xDE, 0xCE, 0xE0, 0x9E, 0xB8, 0xAF, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x98, 0x91, 0x90, 0xA0, 0xD2, 0x85, 0x80, 0xA2, 0x8A, 0xE8, 0x90, 0xA3, 0x84, 0x06, 0x00, 0xA4, 0x6A, 0xCA, 0x90, 0xA5, 0x35, 0xC3, 0x80, 0xA6, 0x53, 0xE7, 0x10, 0xA7, 0x15, 0xA5, 0x80, 0xA8, 0x33, 0xC9, 0x10, 0xA8, 0xFE, 0xC2, 0x00, @@ -30685,121 +30496,102 @@ 0x5D, 0xBE, 0x89, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x5F, 0x9E, 0x6B, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x61, 0x87, 0x87, 0x80, 0x62, 0x2D, 0xB2, 0x90, 0x63, 0x67, 0x69, 0x80, 0x64, 0x0D, 0x94, 0x90, 0x65, 0x47, 0x4B, 0x80, 0x65, 0xED, 0x76, 0x90, 0x67, 0x27, 0x2D, 0x80, 0x67, 0xCD, 0x58, 0x90, -0x69, 0x07, 0x0F, 0x80, 0x69, 0xAD, 0x3A, 0x90, 0x6A, 0xE6, 0xF1, 0x80, 0x6B, 0x96, 0x57, 0x10, -0x6C, 0xD0, 0x0E, 0x00, 0x6D, 0x76, 0x39, 0x10, 0x6E, 0xAF, 0xF0, 0x00, 0x6F, 0x56, 0x1B, 0x10, -0x70, 0x8F, 0xD2, 0x00, 0x71, 0x35, 0xFD, 0x10, 0x72, 0x6F, 0xB4, 0x00, 0x73, 0x15, 0xDF, 0x10, -0x74, 0x4F, 0x96, 0x00, 0x74, 0xFE, 0xFB, 0x90, 0x76, 0x38, 0xB2, 0x80, 0x76, 0xDE, 0xDD, 0x90, -0x78, 0x18, 0x94, 0x80, 0x78, 0xBE, 0xBF, 0x90, 0x79, 0xF8, 0x76, 0x80, 0x7A, 0x9E, 0xA1, 0x90, -0x7B, 0xD8, 0x58, 0x80, 0x7C, 0x7E, 0x83, 0x90, 0x7D, 0xB8, 0x3A, 0x80, 0x7E, 0x5E, 0x65, 0x90, -0x7F, 0x98, 0x1C, 0x80, 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, +0x69, 0x07, 0x0F, 0x80, 0x69, 0xAD, 0x3A, 0x90, 0x6A, 0xE6, 0xF1, 0x80, 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, 0xFF, 0xFF, 0x95, 0xA0, 0x00, 0x00, -0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, -0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, -0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x96, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, -0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0xDE, 0xCE, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, -0xAF, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x98, -0x91, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xD2, 0x85, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x8A, -0xE8, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x84, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, -0xCA, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xC3, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, -0xE7, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0xA5, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, -0xC9, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xC2, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, -0x0C, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, -0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xE3, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, -0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x19, 0x90, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, -0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, -0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xDD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, -0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, -0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, -0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, -0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0xA0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, -0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, -0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x64, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, -0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, -0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, -0x45, 0x80, 0x00, 0x00, 0x00, 0x00, 0x19, 0x09, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, -0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x26, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, -0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD2, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, -0xEB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, -0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x1D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, -0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, -0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xE1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, -0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xC3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, -0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xDF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, -0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xC1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, -0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0xA3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, -0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x85, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, -0x52, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x67, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, -0x34, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x73, -0x16, 0x80, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x66, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, -0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x48, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, -0xDA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, -0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE7, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, -0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xEE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, -0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, -0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, -0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, -0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, -0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, -0x5F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, -0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, -0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, -0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xA5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, -0x5C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x87, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, -0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x69, 0x90, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, -0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, -0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, -0xE4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, -0xC6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, -0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, -0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xF0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, -0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, -0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, -0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, -0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, -0x69, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, -0x4B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, -0x2D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, -0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, -0xF1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x57, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xD0, -0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x56, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, -0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, -0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, -0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, -0xB2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xDD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, -0x94, 0x80, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, -0x76, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, -0x58, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, -0x3A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, -0x1C, 0x80, 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, 0x05, 0xFF, 0xFF, 0x95, 0xA0, +0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, +0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, +0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, +0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, +0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0xDE, 0xCE, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xAF, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x98, 0x91, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xD2, 0x85, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x8A, 0xE8, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x84, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, 0xCA, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xC3, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, 0xE7, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0xA5, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, 0xC9, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xC2, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x0C, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x18, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xE3, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xDC, 0x00, +0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x19, 0x90, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xFC, 0x80, +0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xDE, 0x80, +0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xDD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xC0, 0x80, +0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0xA2, 0x80, +0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xBF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0xA1, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0xA0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x83, 0x00, +0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x65, 0x00, +0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x64, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x47, 0x00, +0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x29, 0x00, +0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x45, 0x80, +0x00, 0x00, 0x00, 0x00, 0x19, 0x09, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x27, 0x80, +0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x26, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, 0x09, 0x80, +0x00, 0x00, 0x00, 0x00, 0x1C, 0xD2, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xEB, 0x80, +0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xCD, 0x80, +0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x1D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0xAF, 0x80, +0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xCC, 0x00, +0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xE1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0xAE, 0x00, +0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xC3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x90, 0x00, +0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xDF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x72, 0x00, +0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xC1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0xA3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x70, 0x80, +0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x85, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x52, 0x80, +0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x67, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x34, 0x80, +0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x73, 0x16, 0x80, +0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x66, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xF8, 0x80, +0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x48, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xDA, 0x80, +0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xF7, 0x00, +0x00, 0x00, 0x00, 0x00, 0x38, 0xE7, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xD9, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xEE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0xBB, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x9D, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x7F, 0x00, +0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, +0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, +0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x5F, 0x80, +0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x7C, 0x00, +0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x5E, 0x00, +0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x40, 0x00, +0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xA5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x5C, 0x80, +0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x87, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x3E, 0x80, +0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x69, 0x90, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x20, 0x80, +0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x02, 0x80, +0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xE4, 0x80, +0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xC6, 0x80, +0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xE3, 0x00, +0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xC5, 0x00, +0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xF0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xA7, 0x00, +0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x89, 0x00, +0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x6B, 0x00, +0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x87, 0x80, +0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x69, 0x80, +0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x4B, 0x80, +0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x2D, 0x80, +0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x0F, 0x80, +0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xF1, 0x80, +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, 0xFF, 0xFF, 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, -0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, -0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, -0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xDB, 0x0A, 0x38, -0x00, 0x65, 0x85, 0x95, 0x00, 0x00, 0x00, 0x22, 0x4D, 0x6F, 0x75, 0x6E, 0x74, 0x61, 0x69, 0x6E, -0x20, 0x2D, 0x20, 0x41, 0x42, 0x2C, 0x20, 0x42, 0x43, 0x28, 0x45, 0x29, 0x2C, 0x20, 0x4E, 0x54, -0x28, 0x45, 0x29, 0x2C, 0x20, 0x53, 0x4B, 0x28, 0x57, 0x29, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x05, +0xFF, 0xFF, 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, +0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, +0xAB, 0xA0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, +0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, 0x0A, 0x00, 0xDB, +0x0A, 0x38, 0x00, 0x65, 0x85, 0x95, 0x00, 0x00, 0x00, 0x1D, 0x43, 0x53, 0x54, 0x20, 0x2D, 0x20, +0x41, 0x42, 0x2C, 0x20, 0x42, 0x43, 0x28, 0x45, 0x29, 0x2C, 0x20, 0x4E, 0x54, 0x28, 0x45, 0x29, +0x2C, 0x20, 0x53, 0x4B, 0x28, 0x57, 0x29, /* America/Eirunepe */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -41185,8 +40977,8 @@ /* America/Vancouver */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 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, 0xBE, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x9E, 0xB8, 0xBD, 0xA0, 0x9F, 0xBB, 0x15, 0x90, 0xCB, 0x89, 0x1A, 0xA0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x26, 0x10, 0xD3, 0x76, 0x0F, 0x20, 0xD4, 0x41, 0x08, 0x10, 0xD5, 0x55, 0xF1, 0x20, 0xD6, 0x20, 0xEA, 0x10, 0xD7, 0x35, 0xD3, 0x20, 0xD8, 0x00, 0xCC, 0x10, 0xD9, 0x15, 0xB5, 0x20, @@ -41228,17 +41020,8 @@ 0x5D, 0xBE, 0x97, 0x10, 0x5E, 0x64, 0xC2, 0x20, 0x5F, 0x9E, 0x79, 0x10, 0x60, 0x4D, 0xDE, 0xA0, 0x61, 0x87, 0x95, 0x90, 0x62, 0x2D, 0xC0, 0xA0, 0x63, 0x67, 0x77, 0x90, 0x64, 0x0D, 0xA2, 0xA0, 0x65, 0x47, 0x59, 0x90, 0x65, 0xED, 0x84, 0xA0, 0x67, 0x27, 0x3B, 0x90, 0x67, 0xCD, 0x66, 0xA0, -0x69, 0x07, 0x1D, 0x90, 0x69, 0xAD, 0x48, 0xA0, 0x6A, 0xE6, 0xFF, 0x90, 0x6B, 0x96, 0x65, 0x20, -0x6C, 0xD0, 0x1C, 0x10, 0x6D, 0x76, 0x47, 0x20, 0x6E, 0xAF, 0xFE, 0x10, 0x6F, 0x56, 0x29, 0x20, -0x70, 0x8F, 0xE0, 0x10, 0x71, 0x36, 0x0B, 0x20, 0x72, 0x6F, 0xC2, 0x10, 0x73, 0x15, 0xED, 0x20, -0x74, 0x4F, 0xA4, 0x10, 0x74, 0xFF, 0x09, 0xA0, 0x76, 0x38, 0xC0, 0x90, 0x76, 0xDE, 0xEB, 0xA0, -0x78, 0x18, 0xA2, 0x90, 0x78, 0xBE, 0xCD, 0xA0, 0x79, 0xF8, 0x84, 0x90, 0x7A, 0x9E, 0xAF, 0xA0, -0x7B, 0xD8, 0x66, 0x90, 0x7C, 0x7E, 0x91, 0xA0, 0x7D, 0xB8, 0x48, 0x90, 0x7E, 0x5E, 0x73, 0xA0, -0x7F, 0x98, 0x2A, 0x90, 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, +0x69, 0x07, 0x1D, 0x90, 0x69, 0xAD, 0x48, 0xA0, 0x6A, 0xE6, 0xFF, 0x90, 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, @@ -41246,110 +41029,100 @@ 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, 0x8C, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, -0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, -0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, -0x50, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x5A, -0x69, 0x66, 0x32, 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, 0xBE, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3D, -0x76, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xBD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, -0x15, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, -0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x76, -0x0F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x41, 0x08, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, -0xF1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xEA, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, -0xD3, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xCC, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, -0xB5, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0xAE, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, -0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x90, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, -0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0xAC, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, -0x95, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x8E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, -0x77, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x70, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, -0x59, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x52, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, -0x3B, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x29, 0x34, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, -0x58, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x12, 0x51, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, -0x3A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xF2, 0x33, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x07, -0x1C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xD2, 0x15, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, -0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xB1, 0xF7, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, -0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x91, 0xD9, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xAF, -0xFC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x71, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8F, -0xDE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0xC1, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, -0xC0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0xA3, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x4F, -0xA2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x85, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2F, -0x84, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0xA2, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, -0x66, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x84, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, -0x83, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x66, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, -0x65, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x48, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, -0x47, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, -0x29, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x88, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x78, -0x0B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x71, 0x28, 0x90, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, -0x27, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x05, 0x51, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x06, 0x41, -0x09, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, -0xEB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, -0xCD, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, -0xAF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xCD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, -0x91, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0xAF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, -0xAE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x91, 0x10, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, -0x90, 0x20, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x73, 0x10, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, -0x72, 0x20, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x55, 0x10, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, -0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x37, 0x10, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, -0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x53, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0x09, -0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x35, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, -0x34, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, 0x17, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD2, -0x16, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xF9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, -0xF8, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xDB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, -0x2B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0xBD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x22, 0x56, -0x0D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xDA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, -0xEF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0xBC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, -0xD1, 0x20, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x9E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, -0xED, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, -0xCF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, -0xB1, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, -0x93, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x60, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, -0x75, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, -0x92, 0x20, 0x00, 0x00, 0x00, 0x00, 0x32, 0x73, 0x24, 0x90, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, -0x74, 0x20, 0x00, 0x00, 0x00, 0x00, 0x34, 0x53, 0x06, 0x90, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, -0x56, 0x20, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xE8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, -0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1C, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE7, -0x1A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xE7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, -0xFC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0xC9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0, -0x18, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0xAB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, -0xFA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x8D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, -0xDC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0xA9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, -0xBE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x8B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, -0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x6D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, -0xD3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x8A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, -0xB5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x6C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, -0x97, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x4E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, -0xB3, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x6A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, -0x95, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x4C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, -0x77, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x2E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, -0x59, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x10, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, -0x3B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xF2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, -0x1D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xD4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, -0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xF1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, -0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xD3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, -0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xB5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, -0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x97, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, -0xC2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x79, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, -0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x95, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, -0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x77, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, -0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x59, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, -0x84, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x3B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, -0x66, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x1D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, -0x48, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, -0x65, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xD0, 0x1C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, -0x47, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xFE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x56, -0x29, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xE0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x36, -0x0B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0xC2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, -0xED, 0x20, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0xA4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFF, -0x09, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0xC0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, -0xEB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0xA2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, -0xCD, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x84, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, -0xAF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x66, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, -0x91, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x48, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, -0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x2A, 0x90, 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, 0x05, 0xFF, 0xFF, 0x8C, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x04, +0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, +0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, +0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, +0x32, 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, 0xA8, +0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3D, 0x76, 0xEC, +0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xBD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x15, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x76, 0x0F, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x41, 0x08, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xF1, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xEA, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xD3, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xCC, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0xB5, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0xAE, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xD1, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x90, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0xB3, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0xAC, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x95, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x8E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x77, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x70, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x59, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x52, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x3B, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x29, 0x34, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x58, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x12, 0x51, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x3A, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xF2, 0x33, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x07, 0x1C, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xD2, 0x15, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xFE, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xB1, 0xF7, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xE0, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x91, 0xD9, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xFC, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x71, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xDE, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0xC1, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0xC0, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0xA3, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0xA2, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x85, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x84, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0xA2, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x66, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x84, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x83, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x66, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x65, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x48, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x47, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x29, 0x20, +0x00, 0x00, 0x00, 0x00, 0x01, 0x88, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x78, 0x0B, 0x20, +0x00, 0x00, 0x00, 0x00, 0x03, 0x71, 0x28, 0x90, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x27, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x05, 0x51, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x06, 0x41, 0x09, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xEB, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xCD, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0xAF, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xCD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x91, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0xAF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0xAE, 0x20, +0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x91, 0x10, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x90, 0x20, +0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x73, 0x10, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x72, 0x20, +0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x55, 0x10, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x54, 0x20, +0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x37, 0x10, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x36, 0x20, +0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x53, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0x09, 0x18, 0x20, +0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x35, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x34, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, 0x17, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD2, 0x16, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xF9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xF8, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xDB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x2B, 0x20, +0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0xBD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x22, 0x56, 0x0D, 0x20, +0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xDA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xEF, 0x20, +0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0xBC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xD1, 0x20, +0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x9E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xED, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xCF, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0xB1, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x93, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x60, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x75, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x92, 0x20, +0x00, 0x00, 0x00, 0x00, 0x32, 0x73, 0x24, 0x90, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x74, 0x20, +0x00, 0x00, 0x00, 0x00, 0x34, 0x53, 0x06, 0x90, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x56, 0x20, +0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xE8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x38, 0x20, +0x00, 0x00, 0x00, 0x00, 0x38, 0x1C, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE7, 0x1A, 0x20, +0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xE7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xFC, 0x20, +0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0xC9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0, 0x18, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0xAB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xFA, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x8D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xDC, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0xA9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xBE, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x8B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0xA0, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x6D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xD3, 0x20, +0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x8A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0xB5, 0x20, +0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x6C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x97, 0x20, +0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x4E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xB3, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x6A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x95, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x4C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x77, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x2E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x59, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x10, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x3B, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xF2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x1D, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xD4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x3A, 0x20, +0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xF1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x1C, 0x20, +0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xD3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xFE, 0x20, +0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xB5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xE0, 0x20, +0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x97, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xC2, 0x20, +0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x79, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xDE, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x95, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xC0, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x77, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0xA2, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x59, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x84, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x3B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x66, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x1D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x48, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xFF, 0x90, 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, @@ -41359,15 +41132,14 @@ 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, 0x8C, 0x94, 0x00, 0x00, 0xFF, 0xFF, -0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, -0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, -0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x0A, 0x50, 0x53, 0x54, 0x38, 0x50, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xD4, 0x81, 0x0A, -0x00, 0x56, 0xCC, 0x0D, 0x00, 0x00, 0x00, 0x19, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, -0x2D, 0x20, 0x42, 0x43, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, -0x29, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x05, +0xFF, 0xFF, 0x8C, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, +0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, +0x9D, 0x90, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, +0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x0A, 0x00, 0xD4, +0x81, 0x0A, 0x00, 0x56, 0xCC, 0x0D, 0x00, 0x00, 0x00, 0x15, 0x4D, 0x53, 0x54, 0x20, 0x2D, 0x20, +0x42, 0x43, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, /* America/Virgin */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -41827,8 +41599,8 @@ /* America/Yellowknife */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 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, 0x96, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x88, 0xDE, 0xCE, 0xE0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x88, 0xDE, 0xCE, 0xE0, 0x9E, 0xB8, 0xAF, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x98, 0x91, 0x90, 0xA0, 0xD2, 0x85, 0x80, 0xA2, 0x8A, 0xE8, 0x90, 0xA3, 0x84, 0x06, 0x00, 0xA4, 0x6A, 0xCA, 0x90, 0xA5, 0x35, 0xC3, 0x80, 0xA6, 0x53, 0xE7, 0x10, 0xA7, 0x15, 0xA5, 0x80, 0xA8, 0x33, 0xC9, 0x10, 0xA8, 0xFE, 0xC2, 0x00, @@ -41860,119 +41632,100 @@ 0x5D, 0xBE, 0x89, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x5F, 0x9E, 0x6B, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x61, 0x87, 0x87, 0x80, 0x62, 0x2D, 0xB2, 0x90, 0x63, 0x67, 0x69, 0x80, 0x64, 0x0D, 0x94, 0x90, 0x65, 0x47, 0x4B, 0x80, 0x65, 0xED, 0x76, 0x90, 0x67, 0x27, 0x2D, 0x80, 0x67, 0xCD, 0x58, 0x90, -0x69, 0x07, 0x0F, 0x80, 0x69, 0xAD, 0x3A, 0x90, 0x6A, 0xE6, 0xF1, 0x80, 0x6B, 0x96, 0x57, 0x10, -0x6C, 0xD0, 0x0E, 0x00, 0x6D, 0x76, 0x39, 0x10, 0x6E, 0xAF, 0xF0, 0x00, 0x6F, 0x56, 0x1B, 0x10, -0x70, 0x8F, 0xD2, 0x00, 0x71, 0x35, 0xFD, 0x10, 0x72, 0x6F, 0xB4, 0x00, 0x73, 0x15, 0xDF, 0x10, -0x74, 0x4F, 0x96, 0x00, 0x74, 0xFE, 0xFB, 0x90, 0x76, 0x38, 0xB2, 0x80, 0x76, 0xDE, 0xDD, 0x90, -0x78, 0x18, 0x94, 0x80, 0x78, 0xBE, 0xBF, 0x90, 0x79, 0xF8, 0x76, 0x80, 0x7A, 0x9E, 0xA1, 0x90, -0x7B, 0xD8, 0x58, 0x80, 0x7C, 0x7E, 0x83, 0x90, 0x7D, 0xB8, 0x3A, 0x80, 0x7E, 0x5E, 0x65, 0x90, -0x7F, 0x98, 0x1C, 0x80, 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, +0x69, 0x07, 0x0F, 0x80, 0x69, 0xAD, 0x3A, 0x90, 0x6A, 0xE6, 0xF1, 0x80, 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, 0xFF, 0xFF, 0x95, 0xA0, 0x00, 0x00, -0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, -0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, -0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x96, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, -0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0xDE, 0xCE, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, -0xAF, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x98, -0x91, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xD2, 0x85, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x8A, -0xE8, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x84, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, -0xCA, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xC3, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, -0xE7, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0xA5, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, -0xC9, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xC2, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, -0x0C, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, -0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xE3, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, -0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x19, 0x90, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, -0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, -0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xDD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, -0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, -0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, -0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, -0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0xA0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, -0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, -0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x64, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, -0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, -0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, -0x45, 0x80, 0x00, 0x00, 0x00, 0x00, 0x19, 0x09, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, -0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x26, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, -0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD2, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, -0xEB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, -0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x1D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, -0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, -0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xE1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, -0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xC3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, -0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xDF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, -0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xC1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, -0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0xA3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, -0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x85, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, -0x52, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x67, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, -0x34, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x73, -0x16, 0x80, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x66, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, -0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x48, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, -0xDA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, -0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE7, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, -0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xEE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, -0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, -0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, -0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, -0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, -0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, -0x5F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, -0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, -0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, -0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xA5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, -0x5C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x87, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, -0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x69, 0x90, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, -0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, -0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, -0xE4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, -0xC6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, -0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, -0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xF0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, -0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, -0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, -0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, -0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, -0x69, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, -0x4B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, -0x2D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, -0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, -0xF1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x57, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xD0, -0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x56, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, -0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, -0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, -0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, -0xB2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xDD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, -0x94, 0x80, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, -0x76, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, -0x58, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, -0x3A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, -0x1C, 0x80, 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, 0x05, 0xFF, 0xFF, 0x95, 0xA0, +0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, +0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, +0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, +0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, +0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0xDE, 0xCE, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xAF, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x98, 0x91, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xD2, 0x85, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x8A, 0xE8, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x84, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, 0xCA, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xC3, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, 0xE7, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0xA5, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, 0xC9, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xC2, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x0C, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x18, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xE3, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xDC, 0x00, +0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x19, 0x90, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xFC, 0x80, +0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xDE, 0x80, +0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xDD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xC0, 0x80, +0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0xA2, 0x80, +0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xBF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0xA1, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0xA0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x83, 0x00, +0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x65, 0x00, +0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x64, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x47, 0x00, +0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x29, 0x00, +0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x45, 0x80, +0x00, 0x00, 0x00, 0x00, 0x19, 0x09, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x27, 0x80, +0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x26, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, 0x09, 0x80, +0x00, 0x00, 0x00, 0x00, 0x1C, 0xD2, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xEB, 0x80, +0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xCD, 0x80, +0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x1D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0xAF, 0x80, +0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xCC, 0x00, +0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xE1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0xAE, 0x00, +0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xC3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x90, 0x00, +0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xDF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x72, 0x00, +0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xC1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0xA3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x70, 0x80, +0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x85, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x52, 0x80, +0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x67, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x34, 0x80, +0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x73, 0x16, 0x80, +0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x66, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xF8, 0x80, +0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x48, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xDA, 0x80, +0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xF7, 0x00, +0x00, 0x00, 0x00, 0x00, 0x38, 0xE7, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xD9, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xEE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0xBB, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x9D, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x7F, 0x00, +0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, +0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, +0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x5F, 0x80, +0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x7C, 0x00, +0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x5E, 0x00, +0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x40, 0x00, +0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xA5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x5C, 0x80, +0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x87, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x3E, 0x80, +0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x69, 0x90, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x20, 0x80, +0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x02, 0x80, +0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xE4, 0x80, +0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xC6, 0x80, +0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xE3, 0x00, +0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xC5, 0x00, +0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xF0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xA7, 0x00, +0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x89, 0x00, +0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x6B, 0x00, +0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x87, 0x80, +0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x69, 0x80, +0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x4B, 0x80, +0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x2D, 0x80, +0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x0F, 0x80, +0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xF1, 0x80, +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, 0xFF, 0xFF, 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, -0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, -0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, -0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x05, +0xFF, 0xFF, 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, +0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, +0xAB, 0xA0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, +0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, 0x0A, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Antarctica/Casey */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -45005,26 +44758,26 @@ /* Asia/Ho_Chi_Minh */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x88, 0x8C, 0x43, 0x8A, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x88, 0x8C, 0x43, 0x8A, 0x91, 0xA3, 0x2B, 0x0A, 0xCD, 0x35, 0xE6, 0x80, 0xD1, 0x59, 0xCE, 0x70, 0xD2, 0x3B, 0x3E, 0xF0, 0xD5, 0x32, 0xBB, 0x10, 0xE4, 0xB6, 0xF2, 0x90, 0xED, 0x2F, 0x98, 0x00, 0x0A, 0x3D, 0xC7, 0x00, -0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, -0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, -0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, -0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, -0x39, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x01, 0x00, +0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x05, 0x00, 0x00, 0x70, 0x80, 0x00, +0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0D, 0x00, 0x00, 0x62, 0x70, 0x00, 0x05, 0x50, 0x4C, 0x4D, +0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x54, 0x5A, +0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, -0xFF, 0xFF, 0x88, 0x8C, 0x43, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, -0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, -0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xE4, 0xB6, 0xF2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x2F, 0x98, 0x00, 0x00, 0x00, -0x00, 0x00, 0x0A, 0x3D, 0xC7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, -0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, -0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x00, 0x00, 0x62, -0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, -0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, -0x0A, 0x00, 0x99, 0xBB, 0x78, 0x01, 0xB5, 0x6B, 0x2A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, +0x43, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, +0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, +0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xB6, +0xF2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x2F, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3D, +0xC7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x63, 0xF6, 0x00, +0x01, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x05, 0x00, 0x00, 0x70, +0x80, 0x00, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0D, 0x00, 0x00, 0x62, 0x70, 0x00, 0x05, 0x50, +0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, +0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0x99, 0xBB, 0x78, 0x01, 0xB5, 0x6B, +0x2A, 0x00, 0x00, 0x00, 0x00, /* Asia/Hong_Kong */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x48, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -46735,23 +46488,22 @@ /* Asia/Phnom_Penh */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4B, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x88, 0x8C, 0x45, 0x24, +0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x88, 0x8C, 0x45, 0x24, 0x91, 0xA3, 0x2B, 0x0A, 0xCD, 0x35, 0xE6, 0x80, 0xD1, 0x59, 0xCE, 0x70, 0xD2, 0x3B, 0x3E, 0xF0, -0x01, 0x02, 0x03, 0x04, 0x02, 0x00, 0x00, 0x62, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, -0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, -0x90, 0x00, 0x11, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x54, 0x5A, -0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x03, 0x04, 0x02, 0x00, 0x00, 0x62, 0x5C, 0x00, 0x01, 0x00, 0x00, 0x63, 0xF6, 0x00, +0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x05, 0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x00, 0x00, 0x7E, +0x90, 0x00, 0x0D, 0x00, 0x00, 0x62, 0x70, 0x00, 0x05, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, +0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, -0x45, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, -0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, -0x3E, 0xF0, 0x01, 0x02, 0x03, 0x04, 0x02, 0x00, 0x00, 0x62, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x63, -0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, -0x00, 0x7E, 0x90, 0x00, 0x11, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, -0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, -0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0x9A, 0xF3, 0xF8, 0x01, 0xB2, 0xBF, -0x92, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, +0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x45, 0x24, 0xFF, 0xFF, +0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, +0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0x01, 0x02, +0x03, 0x04, 0x02, 0x00, 0x00, 0x62, 0x5C, 0x00, 0x01, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, +0x00, 0x62, 0x70, 0x00, 0x05, 0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, +0x0D, 0x00, 0x00, 0x62, 0x70, 0x00, 0x05, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, +0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, +0x0A, 0x00, 0x9A, 0xF3, 0xF8, 0x01, 0xB2, 0xBF, 0x92, 0x00, 0x00, 0x00, 0x00, /* Asia/Pontianak */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -46985,26 +46737,26 @@ /* Asia/Saigon */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x88, 0x8C, 0x43, 0x8A, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x88, 0x8C, 0x43, 0x8A, 0x91, 0xA3, 0x2B, 0x0A, 0xCD, 0x35, 0xE6, 0x80, 0xD1, 0x59, 0xCE, 0x70, 0xD2, 0x3B, 0x3E, 0xF0, 0xD5, 0x32, 0xBB, 0x10, 0xE4, 0xB6, 0xF2, 0x90, 0xED, 0x2F, 0x98, 0x00, 0x0A, 0x3D, 0xC7, 0x00, -0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, -0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, -0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, -0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, -0x39, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x01, 0x00, +0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x05, 0x00, 0x00, 0x70, 0x80, 0x00, +0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0D, 0x00, 0x00, 0x62, 0x70, 0x00, 0x05, 0x50, 0x4C, 0x4D, +0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x54, 0x5A, +0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, -0xFF, 0xFF, 0x88, 0x8C, 0x43, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, -0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, -0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xE4, 0xB6, 0xF2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x2F, 0x98, 0x00, 0x00, 0x00, -0x00, 0x00, 0x0A, 0x3D, 0xC7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, -0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, -0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x00, 0x00, 0x62, -0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, -0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, -0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, +0x43, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, +0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, +0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xB6, +0xF2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x2F, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3D, +0xC7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x63, 0xF6, 0x00, +0x01, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x05, 0x00, 0x00, 0x70, +0x80, 0x00, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0D, 0x00, 0x00, 0x62, 0x70, 0x00, 0x05, 0x50, +0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, +0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, /* Asia/Sakhalin */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -48073,25 +47825,24 @@ /* Asia/Vientiane */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4C, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x88, 0x8C, 0x47, 0x50, +0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x88, 0x8C, 0x47, 0x50, 0x91, 0xA3, 0x2B, 0x0A, 0xCD, 0x35, 0xE6, 0x80, 0xD1, 0x59, 0xCE, 0x70, 0xD2, 0x3B, 0x3E, 0xF0, 0xD5, 0x32, 0xBB, 0x10, 0xE4, 0x51, 0x61, 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x00, -0x00, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, -0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x00, 0x00, 0x62, -0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, -0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, -0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x47, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, -0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, -0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD5, 0x32, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x51, 0x61, 0x00, 0x01, 0x02, 0x03, 0x04, -0x02, 0x03, 0x02, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, -0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, -0x11, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, -0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0xA4, 0xBE, 0x7A, 0x01, 0xAF, 0x36, 0xA0, 0x00, 0x00, 0x00, -0x00, +0x00, 0x60, 0x30, 0x00, 0x01, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, +0x05, 0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0D, 0x00, 0x00, 0x62, +0x70, 0x00, 0x05, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, +0x2B, 0x30, 0x39, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, +0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x47, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, +0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x51, 0x61, 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x00, +0x00, 0x60, 0x30, 0x00, 0x01, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, +0x05, 0x00, 0x00, 0x70, 0x80, 0x00, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x0D, 0x00, 0x00, 0x62, +0x70, 0x00, 0x05, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, +0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0xA4, 0xBE, +0x7A, 0x01, 0xAF, 0x36, 0xA0, 0x00, 0x00, 0x00, 0x00, /* Asia/Vladivostok */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -52909,8 +52660,8 @@ /* Canada/Mountain */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 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, 0x96, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x88, 0xDE, 0xCE, 0xE0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x88, 0xDE, 0xCE, 0xE0, 0x9E, 0xB8, 0xAF, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x98, 0x91, 0x90, 0xA0, 0xD2, 0x85, 0x80, 0xA2, 0x8A, 0xE8, 0x90, 0xA3, 0x84, 0x06, 0x00, 0xA4, 0x6A, 0xCA, 0x90, 0xA5, 0x35, 0xC3, 0x80, 0xA6, 0x53, 0xE7, 0x10, 0xA7, 0x15, 0xA5, 0x80, 0xA8, 0x33, 0xC9, 0x10, 0xA8, 0xFE, 0xC2, 0x00, @@ -52942,119 +52693,100 @@ 0x5D, 0xBE, 0x89, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x5F, 0x9E, 0x6B, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x61, 0x87, 0x87, 0x80, 0x62, 0x2D, 0xB2, 0x90, 0x63, 0x67, 0x69, 0x80, 0x64, 0x0D, 0x94, 0x90, 0x65, 0x47, 0x4B, 0x80, 0x65, 0xED, 0x76, 0x90, 0x67, 0x27, 0x2D, 0x80, 0x67, 0xCD, 0x58, 0x90, -0x69, 0x07, 0x0F, 0x80, 0x69, 0xAD, 0x3A, 0x90, 0x6A, 0xE6, 0xF1, 0x80, 0x6B, 0x96, 0x57, 0x10, -0x6C, 0xD0, 0x0E, 0x00, 0x6D, 0x76, 0x39, 0x10, 0x6E, 0xAF, 0xF0, 0x00, 0x6F, 0x56, 0x1B, 0x10, -0x70, 0x8F, 0xD2, 0x00, 0x71, 0x35, 0xFD, 0x10, 0x72, 0x6F, 0xB4, 0x00, 0x73, 0x15, 0xDF, 0x10, -0x74, 0x4F, 0x96, 0x00, 0x74, 0xFE, 0xFB, 0x90, 0x76, 0x38, 0xB2, 0x80, 0x76, 0xDE, 0xDD, 0x90, -0x78, 0x18, 0x94, 0x80, 0x78, 0xBE, 0xBF, 0x90, 0x79, 0xF8, 0x76, 0x80, 0x7A, 0x9E, 0xA1, 0x90, -0x7B, 0xD8, 0x58, 0x80, 0x7C, 0x7E, 0x83, 0x90, 0x7D, 0xB8, 0x3A, 0x80, 0x7E, 0x5E, 0x65, 0x90, -0x7F, 0x98, 0x1C, 0x80, 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, +0x69, 0x07, 0x0F, 0x80, 0x69, 0xAD, 0x3A, 0x90, 0x6A, 0xE6, 0xF1, 0x80, 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, 0xFF, 0xFF, 0x95, 0xA0, 0x00, 0x00, -0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, -0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, -0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x96, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, -0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0xDE, 0xCE, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, -0xAF, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x98, -0x91, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xD2, 0x85, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x8A, -0xE8, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x84, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, -0xCA, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xC3, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, -0xE7, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0xA5, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, -0xC9, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xC2, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, -0x0C, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, -0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xE3, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, -0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x19, 0x90, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, -0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, -0xDE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xDD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, -0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, -0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, -0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, -0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0xA0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, -0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, -0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x64, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, -0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, -0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, -0x45, 0x80, 0x00, 0x00, 0x00, 0x00, 0x19, 0x09, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, -0x27, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x26, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, -0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD2, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, -0xEB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, -0xCD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x1D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, -0xAF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, -0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xE1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, -0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xC3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, -0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xDF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, -0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xC1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, -0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0xA3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, -0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x85, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, -0x52, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x67, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, -0x34, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x73, -0x16, 0x80, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x66, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, -0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x48, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, -0xDA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, -0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE7, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, -0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xEE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, -0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, -0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, -0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, -0x9B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, -0x7D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, -0x5F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, -0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, -0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, -0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xA5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, -0x5C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x87, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, -0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x69, 0x90, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, -0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, -0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, -0xE4, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, -0xC6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, -0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, -0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xF0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, -0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, -0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, -0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, -0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, -0x69, 0x80, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, -0x4B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, -0x2D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, -0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, -0xF1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x57, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xD0, -0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x56, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, -0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, -0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, -0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, -0xB2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xDD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, -0x94, 0x80, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, -0x76, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, -0x58, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, -0x3A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, -0x1C, 0x80, 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, 0x05, 0xFF, 0xFF, 0x95, 0xA0, +0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, +0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x14, +0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, +0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 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, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, +0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0xDE, 0xCE, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xAF, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x98, 0x91, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xD2, 0x85, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x8A, 0xE8, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x84, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, 0xCA, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xC3, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, 0xE7, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0xA5, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, 0xC9, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xC2, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x0C, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x18, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xE3, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xDC, 0x00, +0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x19, 0x90, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xFC, 0x80, +0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xFB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xDE, 0x80, +0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xDD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xC0, 0x80, +0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0xA2, 0x80, +0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xBF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0xA1, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0xA0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x83, 0x00, +0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x65, 0x00, +0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x64, 0x10, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x47, 0x00, +0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x29, 0x00, +0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x45, 0x80, +0x00, 0x00, 0x00, 0x00, 0x19, 0x09, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x27, 0x80, +0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x26, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, 0x09, 0x80, +0x00, 0x00, 0x00, 0x00, 0x1C, 0xD2, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xEB, 0x80, +0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xCD, 0x80, +0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x1D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0xAF, 0x80, +0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xCC, 0x00, +0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xE1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0xAE, 0x00, +0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xC3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x90, 0x00, +0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xDF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x72, 0x00, +0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xC1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0xA3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x70, 0x80, +0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x85, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x52, 0x80, +0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x67, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x34, 0x80, +0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x73, 0x16, 0x80, +0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x66, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xF8, 0x80, +0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x48, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xDA, 0x80, +0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xF7, 0x00, +0x00, 0x00, 0x00, 0x00, 0x38, 0xE7, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xD9, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xEE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0xBB, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x9D, 0x00, +0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x7F, 0x00, +0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x9B, 0x80, +0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x7D, 0x80, +0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x5F, 0x80, +0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xC5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x7C, 0x00, +0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x5E, 0x00, +0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x40, 0x00, +0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xA5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x5C, 0x80, +0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x87, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x3E, 0x80, +0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x69, 0x90, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x20, 0x80, +0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x02, 0x80, +0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xE4, 0x80, +0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xC6, 0x80, +0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xE3, 0x00, +0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xC5, 0x00, +0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xF0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xA7, 0x00, +0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xD2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x89, 0x00, +0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x6B, 0x00, +0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xD0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x87, 0x80, +0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xB2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x69, 0x80, +0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x4B, 0x80, +0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x2D, 0x80, +0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x0F, 0x80, +0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xF1, 0x80, +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, 0xFF, 0xFF, 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, -0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, -0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, -0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x4D, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x05, +0xFF, 0xFF, 0x95, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, +0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x10, 0xFF, 0xFF, +0xAB, 0xA0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, +0x4D, 0x57, 0x54, 0x00, 0x4D, 0x50, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x43, 0x53, 0x54, 0x36, 0x0A, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Canada/Newfoundland */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -53290,8 +53022,8 @@ /* Canada/Pacific */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 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, 0xBE, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x9E, 0xB8, 0xBD, 0xA0, 0x9F, 0xBB, 0x15, 0x90, 0xCB, 0x89, 0x1A, 0xA0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x26, 0x10, 0xD3, 0x76, 0x0F, 0x20, 0xD4, 0x41, 0x08, 0x10, 0xD5, 0x55, 0xF1, 0x20, 0xD6, 0x20, 0xEA, 0x10, 0xD7, 0x35, 0xD3, 0x20, 0xD8, 0x00, 0xCC, 0x10, 0xD9, 0x15, 0xB5, 0x20, @@ -53333,16 +53065,8 @@ 0x5D, 0xBE, 0x97, 0x10, 0x5E, 0x64, 0xC2, 0x20, 0x5F, 0x9E, 0x79, 0x10, 0x60, 0x4D, 0xDE, 0xA0, 0x61, 0x87, 0x95, 0x90, 0x62, 0x2D, 0xC0, 0xA0, 0x63, 0x67, 0x77, 0x90, 0x64, 0x0D, 0xA2, 0xA0, 0x65, 0x47, 0x59, 0x90, 0x65, 0xED, 0x84, 0xA0, 0x67, 0x27, 0x3B, 0x90, 0x67, 0xCD, 0x66, 0xA0, -0x69, 0x07, 0x1D, 0x90, 0x69, 0xAD, 0x48, 0xA0, 0x6A, 0xE6, 0xFF, 0x90, 0x6B, 0x96, 0x65, 0x20, -0x6C, 0xD0, 0x1C, 0x10, 0x6D, 0x76, 0x47, 0x20, 0x6E, 0xAF, 0xFE, 0x10, 0x6F, 0x56, 0x29, 0x20, -0x70, 0x8F, 0xE0, 0x10, 0x71, 0x36, 0x0B, 0x20, 0x72, 0x6F, 0xC2, 0x10, 0x73, 0x15, 0xED, 0x20, -0x74, 0x4F, 0xA4, 0x10, 0x74, 0xFF, 0x09, 0xA0, 0x76, 0x38, 0xC0, 0x90, 0x76, 0xDE, 0xEB, 0xA0, -0x78, 0x18, 0xA2, 0x90, 0x78, 0xBE, 0xCD, 0xA0, 0x79, 0xF8, 0x84, 0x90, 0x7A, 0x9E, 0xAF, 0xA0, -0x7B, 0xD8, 0x66, 0x90, 0x7C, 0x7E, 0x91, 0xA0, 0x7D, 0xB8, 0x48, 0x90, 0x7E, 0x5E, 0x73, 0xA0, -0x7F, 0x98, 0x2A, 0x90, 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, +0x69, 0x07, 0x1D, 0x90, 0x69, 0xAD, 0x48, 0xA0, 0x6A, 0xE6, 0xFF, 0x90, 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, @@ -53351,110 +53075,99 @@ 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, 0x8C, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, -0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, -0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, -0x50, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x5A, -0x69, 0x66, 0x32, 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, 0xBE, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3D, -0x76, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xBD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, -0x15, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, -0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x76, -0x0F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x41, 0x08, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, -0xF1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xEA, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, -0xD3, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xCC, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, -0xB5, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0xAE, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, -0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x90, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, -0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0xAC, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, -0x95, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x8E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, -0x77, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x70, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, -0x59, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x52, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, -0x3B, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x29, 0x34, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, -0x58, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x12, 0x51, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, -0x3A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xF2, 0x33, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x07, -0x1C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xD2, 0x15, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, -0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xB1, 0xF7, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, -0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x91, 0xD9, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xAF, -0xFC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x71, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8F, -0xDE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0xC1, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, -0xC0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0xA3, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x4F, -0xA2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x85, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2F, -0x84, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0xA2, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, -0x66, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x84, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, -0x83, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x66, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, -0x65, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x48, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, -0x47, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, -0x29, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x88, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x78, -0x0B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x71, 0x28, 0x90, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, -0x27, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x05, 0x51, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x06, 0x41, -0x09, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, -0xEB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, -0xCD, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, -0xAF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xCD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, -0x91, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0xAF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, -0xAE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x91, 0x10, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, -0x90, 0x20, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x73, 0x10, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, -0x72, 0x20, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x55, 0x10, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, -0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x37, 0x10, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, -0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x53, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0x09, -0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x35, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, -0x34, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, 0x17, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD2, -0x16, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xF9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, -0xF8, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xDB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, -0x2B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0xBD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x22, 0x56, -0x0D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xDA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, -0xEF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0xBC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, -0xD1, 0x20, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x9E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, -0xED, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, -0xCF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, -0xB1, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, -0x93, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x60, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, -0x75, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, -0x92, 0x20, 0x00, 0x00, 0x00, 0x00, 0x32, 0x73, 0x24, 0x90, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, -0x74, 0x20, 0x00, 0x00, 0x00, 0x00, 0x34, 0x53, 0x06, 0x90, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, -0x56, 0x20, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xE8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, -0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1C, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE7, -0x1A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xE7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, -0xFC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0xC9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0, -0x18, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0xAB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, -0xFA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x8D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, -0xDC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0xA9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, -0xBE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x8B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, -0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x6D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, -0xD3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x8A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, -0xB5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x6C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, -0x97, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x4E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, -0xB3, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x6A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, -0x95, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x4C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, -0x77, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x2E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, -0x59, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x10, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, -0x3B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xF2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, -0x1D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xD4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, -0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xF1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, -0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xD3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, -0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xB5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, -0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x97, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, -0xC2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x79, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, -0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x95, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, -0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x77, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, -0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x59, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, -0x84, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x3B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, -0x66, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x1D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, -0x48, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, -0x65, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xD0, 0x1C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, -0x47, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xFE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x56, -0x29, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xE0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x36, -0x0B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0xC2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, -0xED, 0x20, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0xA4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFF, -0x09, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0xC0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, -0xEB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0xA2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, -0xCD, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x84, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, -0xAF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x66, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, -0x91, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x48, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, -0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x2A, 0x90, 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, 0x05, 0xFF, 0xFF, 0x8C, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x04, +0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, +0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, +0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, +0x32, 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, 0xA8, +0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3D, 0x76, 0xEC, +0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xBD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x15, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x76, 0x0F, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x41, 0x08, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xF1, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xEA, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xD3, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xCC, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0xB5, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0xAE, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xD1, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x90, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0xB3, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0xAC, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x95, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x8E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x77, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x70, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x59, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x52, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x3B, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x29, 0x34, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x58, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x12, 0x51, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x3A, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xF2, 0x33, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x07, 0x1C, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xD2, 0x15, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xFE, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xB1, 0xF7, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xE0, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x91, 0xD9, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xFC, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x71, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xDE, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0xC1, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0xC0, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0xA3, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0xA2, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x85, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x84, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0xA2, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x66, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x84, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x83, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x66, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x65, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x48, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x47, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x29, 0x20, +0x00, 0x00, 0x00, 0x00, 0x01, 0x88, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x78, 0x0B, 0x20, +0x00, 0x00, 0x00, 0x00, 0x03, 0x71, 0x28, 0x90, 0x00, 0x00, 0x00, 0x00, 0x04, 0x61, 0x27, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x05, 0x51, 0x0A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x06, 0x41, 0x09, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xEB, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xCE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xCD, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0xAF, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xCD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x91, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0xAF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0xAE, 0x20, +0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x91, 0x10, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x90, 0x20, +0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x73, 0x10, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x72, 0x20, +0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x55, 0x10, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x54, 0x20, +0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x37, 0x10, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x36, 0x20, +0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x53, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0x09, 0x18, 0x20, +0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x35, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x34, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x1B, 0xE2, 0x17, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD2, 0x16, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xF9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xF8, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xDB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x2B, 0x20, +0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0xBD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x22, 0x56, 0x0D, 0x20, +0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xDA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xEF, 0x20, +0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0xBC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xD1, 0x20, +0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x9E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xED, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xCF, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0xB1, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x93, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x60, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x75, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x42, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x92, 0x20, +0x00, 0x00, 0x00, 0x00, 0x32, 0x73, 0x24, 0x90, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x74, 0x20, +0x00, 0x00, 0x00, 0x00, 0x34, 0x53, 0x06, 0x90, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x56, 0x20, +0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xE8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x38, 0x20, +0x00, 0x00, 0x00, 0x00, 0x38, 0x1C, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE7, 0x1A, 0x20, +0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xE7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xFC, 0x20, +0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0xC9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0, 0x18, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0xAB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xFA, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x8D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xDC, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0xA9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0xBE, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x8B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0xA0, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x6D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xD3, 0x20, +0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x8A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0xB5, 0x20, +0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x6C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x97, 0x20, +0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x4E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0xB3, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x6A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x95, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x4C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x77, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x2E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x59, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x10, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x3B, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xF2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFC, 0x1D, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xD4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x3A, 0x20, +0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xF1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x1C, 0x20, +0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xD3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xFE, 0x20, +0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xB5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xE0, 0x20, +0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x97, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xC2, 0x20, +0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x79, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xDE, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x95, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xC0, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x77, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0xA2, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x59, 0x90, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x84, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x3B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x66, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x1D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x48, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xFF, 0x90, 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, @@ -53464,13 +53177,13 @@ 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, 0x8C, 0x94, 0x00, 0x00, 0xFF, 0xFF, -0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, -0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, -0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x0A, 0x50, 0x53, 0x54, 0x38, 0x50, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x05, +0xFF, 0xFF, 0x8C, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, +0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, +0x9D, 0x90, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, +0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x0A, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Canada/Saskatchewan */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -71315,4 +71028,4 @@ }; #endif -const timelib_tzdb timezonedb_builtin = { "2026.1", 598, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; +const timelib_tzdb timezonedb_builtin = { "2026.3", 598, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; diff -Nru php8.4-8.4.23/ext/date/lib/tm2unixtime.c php8.4-8.4.24/ext/date/lib/tm2unixtime.c --- php8.4-8.4.23/ext/date/lib/tm2unixtime.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/date/lib/tm2unixtime.c 2026-07-29 05:29:50.000000000 +0000 @@ -197,32 +197,6 @@ do_range_limit(0, 12, 12, &rt->m, &rt->y); } -static void magic_date_calc(timelib_time *time) -{ - timelib_sll y, ddd, mi, mm, dd, g; - - /* The algorithm doesn't work before the year 1 */ - if (time->d < -719498) { - return; - } - - g = time->d + HINNANT_EPOCH_SHIFT - 1; - - y = (10000 * g + 14780) / 3652425; - ddd = g - ((365*y) + (y/4) - (y/100) + (y/400)); - if (ddd < 0) { - y--; - ddd = g - ((365*y) + (y/4) - (y/100) + (y/400)); - } - mi = (100 * ddd + 52) / 3060; - mm = ((mi + 2) % 12) + 1; - y = y + (mi + 2) / 12; - dd = ddd - ((mi * 306 + 5) / 10) + 1; - time->y = y; - time->m = mm; - time->d = dd; -} - void timelib_do_normalize(timelib_time* time) { if (time->us != TIMELIB_UNSET) do_range_limit(0, 1000000, 1000000, &time->us, &time->s); @@ -232,8 +206,9 @@ do_range_limit(1, 13, 12, &time->m, &time->y); /* Short cut if we're doing things against the Epoch */ - if (time->y == 1970 && time->m == 1 && time->d != 1) { - magic_date_calc(time); + if (time->y == 1970 && time->m == 1) { + timelib_date_from_epoch_days(time->d - 1, &time->y, &time->m, &time->d); + return; } do {} while (do_range_limit_days(&time->y, &time->m, &time->d)); diff -Nru php8.4-8.4.23/ext/date/lib/unixtime2tm.c php8.4-8.4.24/ext/date/lib/unixtime2tm.c --- php8.4-8.4.23/ext/date/lib/unixtime2tm.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/date/lib/unixtime2tm.c 2026-07-29 05:29:50.000000000 +0000 @@ -26,20 +26,16 @@ #include "timelib.h" #include "timelib_private.h" -void timelib_unixtime2date(timelib_sll ts, timelib_sll *y, timelib_sll *m, timelib_sll *d) +/* Converts Unix epoch days (days since 1970-01-01) to a date. Algorithm from: + * http://howardhinnant.github.io/date_algorithms.html#civil_from_days */ +void timelib_date_from_epoch_days(timelib_sll epoch_days, timelib_sll *y, timelib_sll *m, timelib_sll *d) { - timelib_sll days, era, t; + timelib_sll days, era; timelib_ull day_of_era, year_of_era, day_of_year, month_portion; /* Calculate days since algorithm's epoch (0000-03-01) */ - days = ts / SECS_PER_DAY + HINNANT_EPOCH_SHIFT; - - /* Adjustment for a negative time portion */ - t = ts % SECS_PER_DAY; - days += (t < 0) ? -1 : 0; + days = epoch_days + HINNANT_EPOCH_SHIFT; - /* Calculate year, month, and day. Algorithm from: - * http://howardhinnant.github.io/date_algorithms.html#civil_from_days */ era = (days >= 0 ? days : days - DAYS_PER_ERA + 1) / DAYS_PER_ERA; day_of_era = days - era * DAYS_PER_ERA; year_of_era = (day_of_era - day_of_era / 1460 + day_of_era / 36524 - day_of_era / 146096) / DAYS_PER_YEAR; @@ -49,6 +45,19 @@ *d = day_of_year - (153 * month_portion + 2) / 5 + 1; *m = month_portion + (month_portion < 10 ? 3 : -9); *y += (*m <= 2); +} + +void timelib_unixtime2date(timelib_sll ts, timelib_sll *y, timelib_sll *m, timelib_sll *d) +{ + timelib_sll epoch_days, t; + + epoch_days = ts / SECS_PER_DAY; + + /* Adjustment for a negative time portion */ + t = ts % SECS_PER_DAY; + epoch_days += (t < 0) ? -1 : 0; + + timelib_date_from_epoch_days(epoch_days, y, m, d); TIMELIB_DEBUG(printf("A: ts=%lld, year=%lld, month=%lld, day=%lld,", ts, *y, *m, *d);); } diff -Nru php8.4-8.4.23/ext/date/php_date.c php8.4-8.4.24/ext/date/php_date.c --- php8.4-8.4.23/ext/date/php_date.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/date/php_date.c 2026-07-29 05:29:50.000000000 +0000 @@ -1995,12 +1995,22 @@ php_date_obj *dateobj; switch (purpose) { - case ZEND_PROP_PURPOSE_DEBUG: case ZEND_PROP_PURPOSE_SERIALIZE: case ZEND_PROP_PURPOSE_VAR_EXPORT: case ZEND_PROP_PURPOSE_JSON: case ZEND_PROP_PURPOSE_ARRAY_CAST: break; + case ZEND_PROP_PURPOSE_DEBUG: { + if (object->ce->__debugInfo) { + int is_temp = 0; + HashTable *ht = zend_std_get_debug_info(object, &is_temp); + if (ht && !is_temp) { + GC_TRY_ADDREF(ht); + } + return ht; + } + break; + } default: return zend_std_get_properties_for(object, purpose); } @@ -2117,12 +2127,22 @@ php_timezone_obj *tzobj; switch (purpose) { - case ZEND_PROP_PURPOSE_DEBUG: case ZEND_PROP_PURPOSE_SERIALIZE: case ZEND_PROP_PURPOSE_VAR_EXPORT: case ZEND_PROP_PURPOSE_JSON: case ZEND_PROP_PURPOSE_ARRAY_CAST: break; + case ZEND_PROP_PURPOSE_DEBUG: { + if (object->ce->__debugInfo) { + int is_temp = 0; + HashTable *ht = zend_std_get_debug_info(object, &is_temp); + if (ht && !is_temp) { + GC_TRY_ADDREF(ht); + } + return ht; + } + break; + } default: return zend_std_get_properties_for(object, purpose); } diff -Nru php8.4-8.4.23/ext/date/tests/bug-gh11310-1.phpt php8.4-8.4.24/ext/date/tests/bug-gh11310-1.phpt --- php8.4-8.4.23/ext/date/tests/bug-gh11310-1.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/date/tests/bug-gh11310-1.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,37 @@ +--TEST-- +Bug GH-11310: __debugInfo does nothing on userland classes extending Date classes +--FILE-- + 'zzz']; } } +class UDateTimeImmutable extends DateTimeImmutable { public function __debugInfo(): array { return ['value' => 'zzz']; } } +class UDateTimeZone extends DateTimeZone { public function __debugInfo(): array { return ['value' => 'zzz']; } } +class UDateInterval extends DateInterval { public function __debugInfo(): array { return ['value' => 'zzz']; } } +class UDatePeriod extends DatePeriod { public function __debugInfo(): array { return ['value' => 'zzz']; } } + +$d = new UDateTime(); var_dump($d); +$d = new UDateTimeImmutable(); var_dump($d); +$d = new UDateTimeZone("Europe/Kyiv"); var_dump($d); +$d = new UDateInterval("P3D"); var_dump($d); +$d = UDatePeriod::createFromISO8601String("2026-07-09T17:23:06Z/P3D/R5"); var_dump($d); +?> +--EXPECTF-- +object(UDateTime)#%d (1) { + ["value"]=> + string(3) "zzz" +} +object(UDateTimeImmutable)#%d (1) { + ["value"]=> + string(3) "zzz" +} +object(UDateTimeZone)#%d (1) { + ["value"]=> + string(3) "zzz" +} +object(UDateInterval)#%d (1) { + ["value"]=> + string(3) "zzz" +} +object(UDatePeriod)#%d (1) { + ["value"]=> + string(3) "zzz" +} diff -Nru php8.4-8.4.23/ext/date/tests/bug-gh11310-2.phpt php8.4-8.4.24/ext/date/tests/bug-gh11310-2.phpt --- php8.4-8.4.23/ext/date/tests/bug-gh11310-2.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/date/tests/bug-gh11310-2.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,37 @@ +--TEST-- +Bug GH-11310: __debugInfo does nothing on userland classes extending Date classes +--FILE-- + 'zzz']; } } +class UDateTimeImmutable extends DateTimeImmutable { public function __construct() {} public function __debugInfo(): array { return ['value' => 'zzz']; } } +class UDateTimeZone extends DateTimeZone { public function __construct() {} public function __debugInfo(): array { return ['value' => 'zzz']; } } +class UDateInterval extends DateInterval { public function __construct() {} public function __debugInfo(): array { return ['value' => 'zzz']; } } +class UDatePeriod extends DatePeriod { public function __construct() {} public function __debugInfo(): array { return ['value' => 'zzz']; } } + +$d = new UDateTime(); var_dump($d); +$d = new UDateTimeImmutable(); var_dump($d); +$d = new UDateTimeZone("Europe/Kyiv"); var_dump($d); +$d = new UDateInterval("P3D"); var_dump($d); +$d = UDatePeriod::createFromISO8601String("2026-07-09T17:23:06Z/P3D/R5"); var_dump($d); +?> +--EXPECTF-- +object(UDateTime)#%d (1) { + ["value"]=> + string(3) "zzz" +} +object(UDateTimeImmutable)#%d (1) { + ["value"]=> + string(3) "zzz" +} +object(UDateTimeZone)#%d (1) { + ["value"]=> + string(3) "zzz" +} +object(UDateInterval)#%d (1) { + ["value"]=> + string(3) "zzz" +} +object(UDatePeriod)#%d (1) { + ["value"]=> + string(3) "zzz" +} diff -Nru php8.4-8.4.23/ext/dba/libflatfile/flatfile.c php8.4-8.4.24/ext/dba/libflatfile/flatfile.c --- php8.4-8.4.23/ext/dba/libflatfile/flatfile.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dba/libflatfile/flatfile.c 2026-07-29 05:29:50.000000000 +0000 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: bd76ecfdd0aefe633c7f7cbdcce7aaf0e0263575 $ */ +/* $Id: a68fed7e38c4318d938b19f5644d9962fe0beb49 $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -37,6 +37,18 @@ #define FLATFILE_BLOCK_SIZE 1024 +/* Parse the length prefix in `buf` into `num` and grow `buf` to hold it. + * atoi() narrows a malformed (e.g. negative) length to a huge size_t whose + * `+ FLATFILE_BLOCK_SIZE` would overflow erealloc(); the macro yields true in + * that case so the caller stops reading and the read stays within `buf_size`. */ +#define FLATFILE_GROW_BUF(num, buf, buf_size) ( \ + (num) = atoi(buf), \ + (num) >= (buf_size) && ( \ + (num) > SIZE_MAX - FLATFILE_BLOCK_SIZE \ + || ((buf) = erealloc((buf), (buf_size) = (num) + FLATFILE_BLOCK_SIZE), 0) \ + ) \ +) + /* * ret = -1 means that database was opened for read-only * ret = 0 success @@ -112,10 +124,8 @@ if (!php_stream_gets(dba->fp, buf, 15)) { break; } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); + if (FLATFILE_GROW_BUF(num, buf, buf_size)) { + break; } pos = php_stream_tell(dba->fp); @@ -135,10 +145,8 @@ if (!php_stream_gets(dba->fp, buf, 15)) { break; } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); + if (FLATFILE_GROW_BUF(num, buf, buf_size)) { + break; } /* read in the value */ num = php_stream_read(dba->fp, buf, num); @@ -162,10 +170,8 @@ if (!php_stream_gets(dba->fp, buf, 15)) { break; } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); + if (FLATFILE_GROW_BUF(num, buf, buf_size)) { + break; } num = php_stream_read(dba->fp, buf, num); @@ -178,10 +184,8 @@ if (!php_stream_gets(dba->fp, buf, 15)) { break; } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); + if (FLATFILE_GROW_BUF(num, buf, buf_size)) { + break; } num = php_stream_read(dba->fp, buf, num); } @@ -202,10 +206,8 @@ if (!php_stream_gets(dba->fp, buf, 15)) { break; } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); + if (FLATFILE_GROW_BUF(num, buf, buf_size)) { + break; } num = php_stream_read(dba->fp, buf, num); @@ -218,10 +220,8 @@ if (!php_stream_gets(dba->fp, buf, 15)) { break; } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); + if (FLATFILE_GROW_BUF(num, buf, buf_size)) { + break; } num = php_stream_read(dba->fp, buf, num); } @@ -244,20 +244,16 @@ if (!php_stream_gets(dba->fp, buf, 15)) { break; } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); + if (FLATFILE_GROW_BUF(num, buf, buf_size)) { + break; } num = php_stream_read(dba->fp, buf, num); if (!php_stream_gets(dba->fp, buf, 15)) { break; } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); + if (FLATFILE_GROW_BUF(num, buf, buf_size)) { + break; } num = php_stream_read(dba->fp, buf, num); @@ -278,6 +274,6 @@ /* {{{ flatfile_version */ const char *flatfile_version(void) { - return "1.0, $Id: bd76ecfdd0aefe633c7f7cbdcce7aaf0e0263575 $"; + return "1.0, $Id: a68fed7e38c4318d938b19f5644d9962fe0beb49 $"; } /* }}} */ diff -Nru php8.4-8.4.23/ext/dba/tests/dba_flatfile_oob.phpt php8.4-8.4.24/ext/dba/tests/dba_flatfile_oob.phpt --- php8.4-8.4.23/ext/dba/tests/dba_flatfile_oob.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/dba/tests/dba_flatfile_oob.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,31 @@ +--TEST-- +DBA FlatFile handler bounds with a malformed (negative) length field +--EXTENSIONS-- +dba +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECT-- +bool(false) +bool(false) +bool(false) +done diff -Nru php8.4-8.4.23/ext/dom/document.c php8.4-8.4.24/ext/dom/document.c --- php8.4-8.4.23/ext/dom/document.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/document.c 2026-07-29 05:29:50.000000000 +0000 @@ -1678,7 +1678,9 @@ } if (!res) { - php_error_docref(NULL, E_WARNING, "Could not save document"); + if (!EG(exception)) { + php_error_docref(NULL, E_WARNING, "Could not save document"); + } RETURN_FALSE; } else { RETURN_NEW_STR(res); diff -Nru php8.4-8.4.23/ext/dom/html5_parser.c php8.4-8.4.24/ext/dom/html5_parser.c --- php8.4-8.4.23/ext/dom/html5_parser.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/html5_parser.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/html5_parser.h php8.4-8.4.24/ext/dom/html5_parser.h --- php8.4-8.4.23/ext/dom/html5_parser.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/html5_parser.h 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/html5_serializer.c php8.4-8.4.24/ext/dom/html5_serializer.c --- php8.4-8.4.23/ext/dom/html5_serializer.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/html5_serializer.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/html5_serializer.h php8.4-8.4.24/ext/dom/html5_serializer.h --- php8.4-8.4.23/ext/dom/html5_serializer.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/html5_serializer.h 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/html_collection.c php8.4-8.4.24/ext/dom/html_collection.c --- php8.4-8.4.23/ext/dom/html_collection.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/html_collection.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/html_collection.h php8.4-8.4.24/ext/dom/html_collection.h --- php8.4-8.4.23/ext/dom/html_collection.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/html_collection.h 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/html_document.c php8.4-8.4.24/ext/dom/html_document.c --- php8.4-8.4.23/ext/dom/html_document.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/html_document.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/infra.c php8.4-8.4.24/ext/dom/infra.c --- php8.4-8.4.23/ext/dom/infra.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/infra.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/infra.h php8.4-8.4.24/ext/dom/infra.h --- php8.4-8.4.23/ext/dom/infra.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/infra.h 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/inner_html_mixin.c php8.4-8.4.24/ext/dom/inner_html_mixin.c --- php8.4-8.4.23/ext/dom/inner_html_mixin.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/inner_html_mixin.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ @@ -103,7 +103,9 @@ } if (UNEXPECTED(status < 0)) { smart_str_free_ex(&str, false); - php_dom_throw_error_with_message(SYNTAX_ERR, "The resulting XML serialization is not well-formed", true); + if (!EG(exception)) { + php_dom_throw_error_with_message(SYNTAX_ERR, "The resulting XML serialization is not well-formed", true); + } return FAILURE; } ZVAL_STR(retval, smart_str_extract(&str)); diff -Nru php8.4-8.4.23/ext/dom/internal_helpers.h php8.4-8.4.24/ext/dom/internal_helpers.h --- php8.4-8.4.23/ext/dom/internal_helpers.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/internal_helpers.h 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/lexbor/lexbor/selectors-adapted/selectors.c php8.4-8.4.24/ext/dom/lexbor/lexbor/selectors-adapted/selectors.c --- php8.4-8.4.23/ext/dom/lexbor/lexbor/selectors-adapted/selectors.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/lexbor/lexbor/selectors-adapted/selectors.c 2026-07-29 05:29:50.000000000 +0000 @@ -2,7 +2,7 @@ * Copyright (C) 2021-2026 Alexander Borisov * * Author: Alexander Borisov - * Adapted for PHP + libxml2 by: Niels Dossche + * Adapted for PHP + libxml2 by: Nora Dossche * Based on Lexbor (upstream commit 5291cde0d40f77e7c4ea364b7cd726269e0bf1f9) */ diff -Nru php8.4-8.4.23/ext/dom/lexbor/lexbor/selectors-adapted/selectors.h php8.4-8.4.24/ext/dom/lexbor/lexbor/selectors-adapted/selectors.h --- php8.4-8.4.23/ext/dom/lexbor/lexbor/selectors-adapted/selectors.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/lexbor/lexbor/selectors-adapted/selectors.h 2026-07-29 05:29:50.000000000 +0000 @@ -2,7 +2,7 @@ * Copyright (C) 2021-2025 Alexander Borisov * * Author: Alexander Borisov - * Adapted for PHP libxml2 by: Niels Dossche + * Adapted for PHP libxml2 by: Nora Dossche */ diff -Nru php8.4-8.4.23/ext/dom/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch php8.4-8.4.24/ext/dom/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch --- php8.4-8.4.23/ext/dom/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/lexbor/patches/0001-Expose-line-and-column-information-for-use-in-PHP.patch 2026-07-29 05:29:50.000000000 +0000 @@ -1,4 +1,4 @@ -From 0cd2add6c46400b808329442f81451b369863983 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sat, 26 Aug 2023 15:08:59 +0200 Subject: [PATCH 1/6] Expose line and column information for use in PHP @@ -183,6 +183,3 @@ } lxb_html_tree_error_t; --- -2.51.2 - diff -Nru php8.4-8.4.23/ext/dom/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch php8.4-8.4.24/ext/dom/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch --- php8.4-8.4.23/ext/dom/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/lexbor/patches/0002-Track-implied-added-nodes-for-options-use-in-PHP.patch 2026-07-29 05:29:50.000000000 +0000 @@ -1,4 +1,4 @@ -From a4c29ba8d1ea1065ce6bd4a34382d53140cf1924 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Mon, 14 Aug 2023 20:18:51 +0200 Subject: [PATCH 2/6] Track implied added nodes for options use in PHP @@ -62,6 +62,3 @@ tree->mode = lxb_html_tree_insertion_mode_before_head; break; --- -2.51.2 - diff -Nru php8.4-8.4.23/ext/dom/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch php8.4-8.4.24/ext/dom/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch --- php8.4-8.4.23/ext/dom/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/lexbor/patches/0003-Patch-utilities-and-data-structure-to-be-able-to-gen.patch 2026-07-29 05:29:50.000000000 +0000 @@ -1,4 +1,4 @@ -From 46fc776449252e74795569759a19d13857a59069 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Thu, 24 Aug 2023 22:57:48 +0200 Subject: [PATCH 3/6] Patch utilities and data structure to be able to generate @@ -92,6 +92,3 @@ result.append("};") --- -2.51.2 - diff -Nru php8.4-8.4.23/ext/dom/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch php8.4-8.4.24/ext/dom/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch --- php8.4-8.4.23/ext/dom/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/lexbor/patches/0004-Remove-unused-upper-case-tag-static-data.patch 2026-07-29 05:29:50.000000000 +0000 @@ -1,4 +1,4 @@ -From ae9d7254ac129cc3be34de6fd34af27baf3bb396 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Wed, 29 Nov 2023 21:26:47 +0100 Subject: [PATCH 4/6] Remove unused upper case tag static data @@ -48,6 +48,3 @@ /* * No inline functions for ABI. --- -2.51.2 - diff -Nru php8.4-8.4.23/ext/dom/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch php8.4-8.4.24/ext/dom/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch --- php8.4-8.4.23/ext/dom/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch 2026-07-29 05:29:50.000000000 +0000 @@ -1,4 +1,4 @@ -From 19cf6183813e013dfe0eb2303c15eaf6e01b9faf Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Wed, 29 Nov 2023 21:29:31 +0100 Subject: [PATCH 5/6] Shrink size of static binary search tree @@ -111,6 +111,3 @@ self.buffer.append(line) fh.close() --- -2.51.2 - diff -Nru php8.4-8.4.23/ext/dom/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch php8.4-8.4.24/ext/dom/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch --- php8.4-8.4.23/ext/dom/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/lexbor/patches/0006-Patch-out-unused-CSS-style-code.patch 2026-07-29 05:29:50.000000000 +0000 @@ -1,4 +1,4 @@ -From 54399ee441d922d89c32909e2028f899f6091cd6 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sun, 7 Jan 2024 21:59:28 +0100 Subject: [PATCH 6/6] Patch out unused CSS style code @@ -27,6 +27,3 @@ } lxb_inline void --- -2.51.2 - diff -Nru php8.4-8.4.23/ext/dom/lexbor/patches/update-lexbor.sh php8.4-8.4.24/ext/dom/lexbor/patches/update-lexbor.sh --- php8.4-8.4.23/ext/dom/lexbor/patches/update-lexbor.sh 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/lexbor/patches/update-lexbor.sh 2026-07-29 05:29:50.000000000 +0000 @@ -19,7 +19,10 @@ (cd "$LEXBOR_TMP_DIR" && git checkout "$LEXBOR_REF") # Apply patches -mapfile -t patches < <(ls "$PATCHES_DIR"/*.patch) +patches=() +for f in "$PATCHES_DIR"/*.patch; do + [ -e "$f" ] && patches+=("$f") +done cd "$LEXBOR_TMP_DIR" for patch in "${patches[@]}"; do if ! git am -3 "$patch"; then @@ -29,8 +32,9 @@ done # Refresh patches +rm "$PATCHES_DIR"/*.patch NUM_PATCHES=${#patches[@]} -git format-patch "HEAD~$NUM_PATCHES" -o "$PATCHES_DIR" +git format-patch --no-signature --zero-commit "HEAD~$NUM_PATCHES" -o "$PATCHES_DIR" # Run code-generation tools (cd "$LEXBOR_TMP_DIR/utils/lexbor/encoding" && python3 single-byte.py) diff -Nru php8.4-8.4.23/ext/dom/namespace_compat.c php8.4-8.4.24/ext/dom/namespace_compat.c --- php8.4-8.4.23/ext/dom/namespace_compat.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/namespace_compat.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/namespace_compat.h php8.4-8.4.24/ext/dom/namespace_compat.h --- php8.4-8.4.23/ext/dom/namespace_compat.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/namespace_compat.h 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/nodelist.h php8.4-8.4.24/ext/dom/nodelist.h --- php8.4-8.4.23/ext/dom/nodelist.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/nodelist.h 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/parentnode/css_selectors.c php8.4-8.4.24/ext/dom/parentnode/css_selectors.c --- php8.4-8.4.23/ext/dom/parentnode/css_selectors.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/parentnode/css_selectors.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/parentnode/tree.c php8.4-8.4.24/ext/dom/parentnode/tree.c --- php8.4-8.4.23/ext/dom/parentnode/tree.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/parentnode/tree.c 2026-07-29 05:29:50.000000000 +0000 @@ -11,7 +11,7 @@ | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Benjamin Eberlei | - | Niels Dossche | + | Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/private_data.c php8.4-8.4.24/ext/dom/private_data.c --- php8.4-8.4.23/ext/dom/private_data.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/private_data.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/private_data.h php8.4-8.4.24/ext/dom/private_data.h --- php8.4-8.4.23/ext/dom/private_data.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/private_data.h 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/serialize_common.h php8.4-8.4.24/ext/dom/serialize_common.h --- php8.4-8.4.23/ext/dom/serialize_common.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/serialize_common.h 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/tests/modern/html/encoding/HTMLDocument_createFromFile_http_header.phpt php8.4-8.4.24/ext/dom/tests/modern/html/encoding/HTMLDocument_createFromFile_http_header.phpt --- php8.4-8.4.23/ext/dom/tests/modern/html/encoding/HTMLDocument_createFromFile_http_header.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/tests/modern/html/encoding/HTMLDocument_createFromFile_http_header.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -46,6 +46,7 @@ "text/html; ;; ; ;; Charset=\"ISO-8859-1\"", "text/html;Charset=\"ISO-8859-1", "tex.t/h#\$%!&'*%2B-.^_`|~tml;Charset=\"ISO-8859-1\"", // Note: have to encode + as 2B because of implementation details of http_server() + "text/html; abcd=ef;charset=ISO-8859-1", ], "Valid input, but invalid encoding name" => [ "text/html;Charset=\"ISO-8859-1\\", @@ -91,6 +92,7 @@ äöü äöü äöü +äöü äöü äöü äöü diff -Nru php8.4-8.4.23/ext/dom/tests/modern/xml/gh22570.phpt php8.4-8.4.24/ext/dom/tests/modern/xml/gh22570.phpt --- php8.4-8.4.23/ext/dom/tests/modern/xml/gh22570.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/tests/modern/xml/gh22570.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,42 @@ +--TEST-- +GH-22570 (Stack overflow when serializing a deeply nested Dom\XMLDocument) +--EXTENSIONS-- +dom +--SKIPIF-- + +--INI-- +zend.max_allowed_stack_size=512K +--FILE-- +createElement('a'); +for ($i = 0; $i < 100000; $i++) { + $parent = $doc->createElement('a'); + $parent->appendChild($node); + $node = $parent; +} +$doc->appendChild($node); + +try { + $doc->saveXml(); +} catch (\Error $e) { + echo "saveXml: ", $e::class, ": ", $e->getMessage(), "\n"; +} + +try { + $doc->documentElement->innerHTML; +} catch (\Error $e) { + echo "innerHTML: ", $e::class, ": ", $e->getMessage(), "\n"; +} +?> +--EXPECT-- +saveXml: Error: Maximum call stack size reached. Infinite recursion? +innerHTML: Error: Maximum call stack size reached. Infinite recursion? diff -Nru php8.4-8.4.23/ext/dom/tests/xpath_php_function_removes_argument_node.phpt php8.4-8.4.24/ext/dom/tests/xpath_php_function_removes_argument_node.phpt --- php8.4-8.4.23/ext/dom/tests/xpath_php_function_removes_argument_node.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/tests/xpath_php_function_removes_argument_node.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,33 @@ +--TEST-- +DOMXPath: a php:function callback that removes its argument node must not free it mid-evaluation +--EXTENSIONS-- +dom +--FILE-- +loadXML('1234'); +$xp = new DOMXPath($doc); +$xp->registerNamespace('php', 'http://php.net/xpath'); +$xp->registerPhpFunctions(); + +function cb($nodes) { + foreach ($nodes as $n) { + if ($n->parentNode) { + $n->parentNode->removeChild($n); + } + } + return true; +} + +$res = $xp->query('//a[php:function("cb", .)]'); +foreach ($res as $r) { + var_dump($r->nodeName); +} +echo "done\n"; +?> +--EXPECT-- +string(1) "a" +string(1) "a" +string(1) "a" +string(1) "a" +done diff -Nru php8.4-8.4.23/ext/dom/token_list.c php8.4-8.4.24/ext/dom/token_list.c --- php8.4-8.4.23/ext/dom/token_list.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/token_list.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/token_list.h php8.4-8.4.24/ext/dom/token_list.h --- php8.4-8.4.23/ext/dom/token_list.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/token_list.h 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/xml_document.c php8.4-8.4.24/ext/dom/xml_document.c --- php8.4-8.4.23/ext/dom/xml_document.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/xml_document.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/xml_serializer.c php8.4-8.4.24/ext/dom/xml_serializer.c --- php8.4-8.4.23/ext/dom/xml_serializer.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/xml_serializer.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ @@ -1250,6 +1250,15 @@ return 0; } +static zend_always_inline bool dom_xml_serialize_check_stack_limit(void) +{ +#ifdef ZEND_CHECK_STACK_LIMIT + return zend_call_stack_overflowed(EG(stack_limit)); +#else + return false; +#endif +} + /* https://w3c.github.io/DOM-Parsing/#dfn-xml-serialization-algorithm */ static int dom_xml_serialization_algorithm( dom_xml_serialize_ctx *ctx, @@ -1261,6 +1270,11 @@ bool require_well_formed ) { + if (UNEXPECTED(dom_xml_serialize_check_stack_limit())) { + zend_throw_error(NULL, "Maximum call stack size reached. Infinite recursion?"); + return -1; + } + /* If node's interface is: */ switch (node->type) { case XML_ELEMENT_NODE: diff -Nru php8.4-8.4.23/ext/dom/xml_serializer.h php8.4-8.4.24/ext/dom/xml_serializer.h --- php8.4-8.4.23/ext/dom/xml_serializer.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/xml_serializer.h 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/dom/xpath_callbacks.c php8.4-8.4.24/ext/dom/xpath_callbacks.c --- php8.4-8.4.23/ext/dom/xpath_callbacks.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/xpath_callbacks.c 2026-07-29 05:29:50.000000000 +0000 @@ -12,7 +12,7 @@ +----------------------------------------------------------------------+ | Authors: Christian Stocker | | Rob Richards | - | Niels Dossche | + | Nora Dossche | +----------------------------------------------------------------------+ */ @@ -381,11 +381,19 @@ return params; } -static void php_dom_xpath_callback_cleanup_args(zval *params, uint32_t param_count) +static void php_dom_xpath_callback_cleanup_args(php_dom_xpath_callbacks *xpath_callbacks, zval *params, uint32_t param_count) { if (params) { for (uint32_t i = 0; i < param_count; i++) { - zval_ptr_dtor(¶ms[i]); + zval *param = ¶ms[i]; + if (Z_TYPE_P(param) == IS_OBJECT || Z_TYPE_P(param) == IS_ARRAY) { + if (xpath_callbacks->node_list == NULL) { + xpath_callbacks->node_list = zend_new_array(0); + } + zend_hash_next_index_insert_new(xpath_callbacks->node_list, param); + } else { + zval_ptr_dtor(param); + } } efree(params); } @@ -483,7 +491,7 @@ cleanup: xmlXPathFreeObject(obj); - php_dom_xpath_callback_cleanup_args(params, param_count); + php_dom_xpath_callback_cleanup_args(xpath_callbacks, params, param_count); cleanup_no_obj: if (UNEXPECTED(result != SUCCESS)) { /* Push sentinel value */ @@ -511,7 +519,7 @@ zend_result result = php_dom_xpath_callback_dispatch(xpath_callbacks, ns, ctxt, params, param_count, function_name, function_name_length); - php_dom_xpath_callback_cleanup_args(params, param_count); + php_dom_xpath_callback_cleanup_args(xpath_callbacks, params, param_count); if (UNEXPECTED(result != SUCCESS)) { /* Push sentinel value */ valuePush(ctxt, xmlXPathNewString((const xmlChar *) "")); diff -Nru php8.4-8.4.23/ext/dom/xpath_callbacks.h php8.4-8.4.24/ext/dom/xpath_callbacks.h --- php8.4-8.4.23/ext/dom/xpath_callbacks.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/dom/xpath_callbacks.h 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ diff -Nru php8.4-8.4.23/ext/exif/exif.c php8.4-8.4.24/ext/exif/exif.c --- php8.4-8.4.23/ext/exif/exif.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/exif/exif.c 2026-07-29 05:29:50.000000000 +0000 @@ -3642,8 +3642,14 @@ * There are 2 IDFs, the second one holds the keys (0x0201 and 0x0202) to the thumbnail */ if (!exif_offset_info_contains(info, dir_start+2+NumDirEntries*12, 4)) { - exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "Illegal IFD size"); - return false; + /* + * A TIFF/EXIF IFD ends with a 4-byte offset to the next IFD (IFD1 here, + * which links the thumbnail), or zero when there is none. Some files end + * the EXIF segment right after the entries and omit those 4 bytes. A + * missing offset is valid and just means there is no next IFD, so stop + * here instead of reporting the size as illegal. + */ + return true; } if (tag != TAG_EXIF_IFD_POINTER && tag != TAG_GPS_IFD_POINTER) { diff -Nru php8.4-8.4.23/ext/exif/tests/bug72094.phpt php8.4-8.4.24/ext/exif/tests/bug72094.phpt --- php8.4-8.4.23/ext/exif/tests/bug72094.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/exif/tests/bug72094.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -47,8 +47,6 @@ Warning: exif_read_data(bug72094_3.jpg): Process tag(x3030=UndefinedTag): Illegal format code 0x3030, suppose BYTE in %s%ebug72094.php on line %d -Warning: exif_read_data(bug72094_3.jpg): Illegal IFD size in %s%ebug72094.php on line %d - Warning: exif_read_data(bug72094_3.jpg): File structure corrupted in %s%ebug72094.php on line %d Warning: exif_read_data(bug72094_3.jpg): Invalid JPEG file in %s%ebug72094.php on line %d Binary files /srv/release.debian.org/tmp/TXEvuHJsP_/php8.4-8.4.23/ext/exif/tests/gh11020.jpg and /srv/release.debian.org/tmp/cVq9930oF0/php8.4-8.4.24/ext/exif/tests/gh11020.jpg differ diff -Nru php8.4-8.4.23/ext/exif/tests/gh11020.phpt php8.4-8.4.24/ext/exif/tests/gh11020.phpt --- php8.4-8.4.23/ext/exif/tests/gh11020.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/exif/tests/gh11020.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,12 @@ +--TEST-- +GH-11020 (exif_read_data() emits a spurious "Illegal IFD size" warning when an IFD is not followed by a next-IFD offset) +--EXTENSIONS-- +exif +--FILE-- + +--EXPECT-- +bool(true) +int(1) diff -Nru php8.4-8.4.23/ext/ftp/ftp.c php8.4-8.4.24/ext/ftp/ftp.c --- php8.4-8.4.23/ext/ftp/ftp.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/ftp/ftp.c 2026-07-29 05:29:50.000000000 +0000 @@ -892,6 +892,11 @@ if (ftp == NULL) { return 0; } + if (ftp->in_use) { + php_error_docref(NULL, E_WARNING, "FTP\\Connection is already in use"); + return 0; + } + ftp->in_use = true; if (!ftp_type(ftp, type)) { goto bail; } @@ -946,7 +951,7 @@ #else while (e > ptr && (s = memchr(ptr, '\r', (e - ptr)))) { php_stream_write(outstream, ptr, (s - ptr)); - if (*(s + 1) == '\n') { + if (s + 1 < e && *(s + 1) == '\n') { s++; php_stream_putc(outstream, '\n'); } @@ -967,9 +972,11 @@ goto bail; } + ftp->in_use = false; return 1; bail: data_close(ftp); + ftp->in_use = false; return 0; } /* }}} */ @@ -1057,6 +1064,11 @@ if (ftp == NULL) { return 0; } + if (ftp->in_use) { + php_error_docref(NULL, E_WARNING, "FTP\\Connection is already in use"); + return 0; + } + ftp->in_use = true; if (!ftp_type(ftp, type)) { goto bail; } @@ -1097,9 +1109,11 @@ if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250 && ftp->resp != 200)) { goto bail; } + ftp->in_use = false; return 1; bail: data_close(ftp); + ftp->in_use = false; return 0; } /* }}} */ @@ -1114,6 +1128,11 @@ if (ftp == NULL) { return 0; } + if (ftp->in_use) { + php_error_docref(NULL, E_WARNING, "FTP\\Connection is already in use"); + return 0; + } + ftp->in_use = true; if (!ftp_type(ftp, type)) { goto bail; } @@ -1141,9 +1160,11 @@ if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250 && ftp->resp != 200)) { goto bail; } + ftp->in_use = false; return 1; bail: data_close(ftp); + ftp->in_use = false; return 0; } /* }}} */ @@ -1359,7 +1380,7 @@ } data = eol; - if ((rcvd = my_recv(ftp, ftp->fd, data, size)) < 1) { + if (size < 2 || (rcvd = my_recv(ftp, ftp->fd, data, size - 1)) < 1) { *data = 0; return 0; } @@ -2055,6 +2076,10 @@ char **entry; char *text; + if (ftp->in_use) { + php_error_docref(NULL, E_WARNING, "FTP\\Connection is already in use"); + return NULL; + } if ((tmpstream = php_stream_fopen_tmpfile()) == NULL) { php_error_docref(NULL, E_WARNING, "Unable to create temporary file. Check permissions in temporary files directory."); @@ -2156,6 +2181,11 @@ return PHP_FTP_FAILED; } + if (ftp->in_use) { + php_error_docref(NULL, E_WARNING, "FTP\\Connection is already in use"); + return PHP_FTP_FAILED; + } + if (ftp->data != NULL) { /* If there is a transfer in action, abort it. * If we don't, we get an invalid state and memory leaks when the new connection gets opened. */ @@ -2223,11 +2253,17 @@ data = ftp->data; + if (ftp->in_use) { + php_error_docref(NULL, E_WARNING, "FTP\\Connection is already in use"); + return PHP_FTP_FAILED; + } + /* check if there is already more data */ if (!data_available(ftp, data->fd, false)) { return PHP_FTP_MOREDATA; } + ftp->in_use = true; type = ftp->type; lastch = ftp->lastch; @@ -2251,6 +2287,7 @@ } ftp->lastch = lastch; + ftp->in_use = false; return PHP_FTP_MOREDATA; } @@ -2265,9 +2302,11 @@ } ftp->nb = 0; + ftp->in_use = false; return PHP_FTP_FINISHED; bail: ftp->nb = 0; + ftp->in_use = false; data_close(ftp); return PHP_FTP_FAILED; } @@ -2283,6 +2322,10 @@ if (ftp == NULL) { return 0; } + if (ftp->in_use) { + php_error_docref(NULL, E_WARNING, "FTP\\Connection is already in use"); + return PHP_FTP_FAILED; + } if (!ftp_type(ftp, type)) { goto bail; } @@ -2330,16 +2373,24 @@ int ftp_nb_continue_write(ftpbuf_t *ftp) { + if (ftp->in_use) { + php_error_docref(NULL, E_WARNING, "FTP\\Connection is already in use"); + return PHP_FTP_FAILED; + } + /* check if we can write more data */ if (!data_writeable(ftp, ftp->data->fd)) { return PHP_FTP_MOREDATA; } + ftp->in_use = true; + if (ftp_send_stream_to_data_socket(ftp, ftp->data, ftp->stream, ftp->type, true) != SUCCESS) { goto bail; } if (!php_stream_eof(ftp->stream)) { + ftp->in_use = false; return PHP_FTP_MOREDATA; } @@ -2349,10 +2400,12 @@ goto bail; } ftp->nb = 0; + ftp->in_use = false; return PHP_FTP_FINISHED; bail: data_close(ftp); ftp->nb = 0; + ftp->in_use = false; return PHP_FTP_FAILED; } /* }}} */ diff -Nru php8.4-8.4.23/ext/ftp/ftp.h php8.4-8.4.24/ext/ftp/ftp.h --- php8.4-8.4.23/ext/ftp/ftp.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/ftp/ftp.h 2026-07-29 05:29:50.000000000 +0000 @@ -73,6 +73,7 @@ databuf_t *data; /* Data connection for "nonblocking" transfers */ php_stream *stream; /* output stream for "nonblocking" transfers */ bool nb; /* "nonblocking" transfer in progress */ + bool in_use; /* engine transfer in progress; blocks re-entrant ftp_close */ char lastch; /* last char of previous call */ bool direction; /* recv = 0 / send = 1 */ bool closestream;/* close or not close stream */ diff -Nru php8.4-8.4.23/ext/ftp/php_ftp.c php8.4-8.4.24/ext/ftp/php_ftp.c --- php8.4-8.4.23/ext/ftp/php_ftp.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/ftp/php_ftp.c 2026-07-29 05:29:50.000000000 +0000 @@ -648,6 +648,11 @@ } /* configuration */ + if (ftp->in_use) { + php_error_docref(NULL, E_WARNING, "FTP\\Connection is already in use"); + RETURN_FALSE; + } + ftp->direction = 0; /* recv */ ftp->closestream = 0; /* do not close */ @@ -761,6 +766,10 @@ RETURN_THROWS(); } GET_FTPBUF(ftp, z_ftp); + if (ftp->in_use) { + php_error_docref(NULL, E_WARNING, "FTP\\Connection is already in use"); + RETURN_FALSE; + } XTYPE(xtype, mode); /* ignore autoresume if autoseek is switched off */ @@ -798,8 +807,8 @@ ftp->closestream = 1; /* do close */ if ((ret = ftp_nb_get(ftp, outstream, remote, remote_len, xtype, resumepos)) == PHP_FTP_FAILED) { - php_stream_close(outstream); ftp->stream = NULL; + php_stream_close(outstream); VCWD_UNLINK(local); if (*ftp->inbuf) { php_error_docref(NULL, E_WARNING, "%s", ftp->inbuf); @@ -808,8 +817,8 @@ } if (ret == PHP_FTP_FINISHED){ - php_stream_close(outstream); ftp->stream = NULL; + php_stream_close(outstream); } RETURN_LONG(ret); @@ -937,6 +946,11 @@ } /* configuration */ + if (ftp->in_use) { + php_error_docref(NULL, E_WARNING, "FTP\\Connection is already in use"); + RETURN_FALSE; + } + ftp->direction = 1; /* send */ ftp->closestream = 0; /* do not close */ @@ -1077,6 +1091,12 @@ } } + if (ftp->in_use) { + php_stream_close(instream); + php_error_docref(NULL, E_WARNING, "FTP\\Connection is already in use"); + RETURN_FALSE; + } + /* configuration */ ftp->direction = 1; /* send */ ftp->closestream = 1; /* do close */ @@ -1084,8 +1104,8 @@ ret = ftp_nb_put(ftp, remote, remote_len, instream, xtype, startpos); if (ret != PHP_FTP_MOREDATA) { - php_stream_close(instream); ftp->stream = NULL; + php_stream_close(instream); } if (ret == PHP_FTP_FAILED) { @@ -1220,6 +1240,10 @@ obj = ftp_object_from_zend_object(Z_OBJ_P(z_ftp)); if (obj->ftp) { + if (obj->ftp->in_use) { + zend_throw_error(NULL, "Cannot close FTP\\Connection while a transfer is in progress"); + RETURN_THROWS(); + } success = ftp_quit(obj->ftp); ftp_close(obj->ftp); obj->ftp = NULL; diff -Nru php8.4-8.4.23/ext/ftp/tests/bug80901.phpt php8.4-8.4.24/ext/ftp/tests/bug80901.phpt --- php8.4-8.4.23/ext/ftp/tests/bug80901.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/ftp/tests/bug80901.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -16,4 +16,4 @@ --EXPECTF-- bool(true) -Warning: ftp_systype(): **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** in %s on line %d +Warning: ftp_systype(): *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** in %s on line %d diff -Nru php8.4-8.4.23/ext/ftp/tests/ftp_close_during_transfer.phpt php8.4-8.4.24/ext/ftp/tests/ftp_close_during_transfer.phpt --- php8.4-8.4.23/ext/ftp/tests/ftp_close_during_transfer.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/ftp/tests/ftp_close_during_transfer.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,44 @@ +--TEST-- +ftp_close() from a stream wrapper during a transfer throws instead of freeing the connection +--EXTENSIONS-- +ftp +pcntl +--FILE-- +getMessage(), "\n"; +} + +ftp_close($ftp); +echo "closed\n"; +?> +--EXPECT-- +bool(true) +Cannot close FTP\Connection while a transfer is in progress +closed diff -Nru php8.4-8.4.23/ext/ftp/tests/ftp_get_ascii_crlf_boundary.phpt php8.4-8.4.24/ext/ftp/tests/ftp_get_ascii_crlf_boundary.phpt --- php8.4-8.4.23/ext/ftp/tests/ftp_get_ascii_crlf_boundary.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/ftp/tests/ftp_get_ascii_crlf_boundary.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,25 @@ +--TEST-- +ftp_get() ASCII mode: CRLF straddling the FTP_BUFSIZE read boundary +--EXTENSIONS-- +ftp +pcntl +--FILE-- + +--CLEAN-- + +--EXPECT-- +bool(true) +bool(true) diff -Nru php8.4-8.4.23/ext/ftp/tests/ftp_nb_close_during_transfer.phpt php8.4-8.4.24/ext/ftp/tests/ftp_nb_close_during_transfer.phpt --- php8.4-8.4.23/ext/ftp/tests/ftp_nb_close_during_transfer.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/ftp/tests/ftp_nb_close_during_transfer.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,44 @@ +--TEST-- +ftp_close() from a stream wrapper during a non-blocking transfer throws instead of freeing the connection +--EXTENSIONS-- +ftp +pcntl +--FILE-- +getMessage(), "\n"; +} + +ftp_close($ftp); +echo "closed\n"; +?> +--EXPECT-- +bool(true) +Cannot close FTP\Connection while a transfer is in progress +closed diff -Nru php8.4-8.4.23/ext/ftp/tests/ftp_nb_get_during_nb_transfer.phpt php8.4-8.4.24/ext/ftp/tests/ftp_nb_get_during_nb_transfer.phpt --- php8.4-8.4.23/ext/ftp/tests/ftp_nb_get_during_nb_transfer.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/ftp/tests/ftp_nb_get_during_nb_transfer.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,44 @@ +--TEST-- +Re-entrant ftp_nb_get() from a stream wrapper during an active non-blocking ftp_nb_get() must not corrupt the outer transfer +--EXTENSIONS-- +ftp +pcntl +--FILE-- + +--EXPECT-- +bool(true) +bool(true) +closed diff -Nru php8.4-8.4.23/ext/ftp/tests/ftp_nb_get_during_transfer.phpt php8.4-8.4.24/ext/ftp/tests/ftp_nb_get_during_transfer.phpt --- php8.4-8.4.23/ext/ftp/tests/ftp_nb_get_during_transfer.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/ftp/tests/ftp_nb_get_during_transfer.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,40 @@ +--TEST-- +Re-entrant ftp_nb_get() from a stream wrapper during a blocking ftp_get() must not free the active data connection +--EXTENSIONS-- +ftp +pcntl +--FILE-- + +--EXPECT-- +bool(true) +bool(true) +closed diff -Nru php8.4-8.4.23/ext/ftp/tests/server.inc php8.4-8.4.24/ext/ftp/tests/server.inc --- php8.4-8.4.23/ext/ftp/tests/server.inc 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/ftp/tests/server.inc 2026-07-29 05:29:50.000000000 +0000 @@ -391,6 +391,13 @@ // Just a side channel for getting the received file size. fputs($s, "425 Can't open data connection (".$GLOBALS['rest_pos'].").\r\n"); break; + case "crlf_boundary": + // A CRLF whose CR lands on the final byte of the first + // FTP_BUFSIZE (4096) read, so the LF arrives in the next read. + fputs($s, "150 File status okay; about to open data connection.\r\n"); + fputs($fs, str_repeat("A", 4095) . "\r\n" . str_repeat("B", 10)); + fputs($s, "226 Closing data Connection.\r\n"); + break; default: fputs($s, "550 {$matches[1]}: No such file or directory \r\n"); diff -Nru php8.4-8.4.23/ext/gd/gd.c php8.4-8.4.24/ext/gd/gd.c --- php8.4-8.4.23/ext/gd/gd.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/gd/gd.c 2026-07-29 05:29:50.000000000 +0000 @@ -556,7 +556,7 @@ */ font = (gdFontPtr) emalloc(sizeof(gdFont)); b = 0; - while (b < hdr_size && (n = php_stream_read(stream, (char*)&font[b], hdr_size - b)) > 0) { + while (b < hdr_size && (n = php_stream_read(stream, (char *) font + b, hdr_size - b)) > 0) { b += n; } diff -Nru php8.4-8.4.23/ext/gd/libgd/gd_gif_in.c php8.4-8.4.24/ext/gd/libgd/gd_gif_in.c --- php8.4-8.4.23/ext/gd/libgd/gd_gif_in.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/gd/libgd/gd_gif_in.c 2026-07-29 05:29:50.000000000 +0000 @@ -452,7 +452,7 @@ sd->table[1][i] = i; } for (; i < (1<table[0][i] = sd->table[1][0] = 0; + sd->table[0][i] = sd->table[1][i] = 0; sd->sp = sd->stack; @@ -496,6 +496,8 @@ if (count != 0) return -2; + + return -2; } incode = code; @@ -562,7 +564,7 @@ int v; int xpos = 0, ypos = 0, pass = 0; int i; - LZW_STATIC_DATA sd; + LZW_STATIC_DATA sd = {0}; /* diff -Nru php8.4-8.4.23/ext/gd/tests/gh19666.phpt php8.4-8.4.24/ext/gd/tests/gh19666.phpt --- php8.4-8.4.23/ext/gd/tests/gh19666.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/gd/tests/gh19666.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -2,6 +2,10 @@ GH-19666 (Unexpected nan value in imageconvolution) --EXTENSIONS-- gd +--SKIPIF-- + --FILE-- --FILE-- data = pack('i4', 1, 32, 1, 1) . "\x00"; + return true; + } + + public function stream_read($count): string + { + return $this->pos < strlen($this->data) ? $this->data[$this->pos++] : ''; + } + + public function stream_eof(): bool + { + return $this->pos >= strlen($this->data); + } + + public function stream_stat() + { + return []; + } + + public function stream_tell(): int + { + return $this->pos; + } + + public function stream_seek($offset, $whence): bool + { + if ($whence === SEEK_CUR) { + $this->pos += $offset; + } elseif ($whence === SEEK_END) { + $this->pos = strlen($this->data) + $offset; + } else { + $this->pos = $offset; + } + return true; + } + + public function stream_set_option($option, $arg1, $arg2): bool + { + return false; + } +} + +stream_wrapper_register('drip', drip::class); +var_dump(imageloadfont('drip://font') instanceof GdFont); +?> +--EXPECT-- +bool(true) diff -Nru php8.4-8.4.23/ext/hash/hash.c php8.4-8.4.24/ext/hash/hash.c --- php8.4-8.4.23/ext/hash/hash.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash.c 2026-07-29 05:29:50.000000000 +0000 @@ -392,7 +392,7 @@ } php_stream_close(stream); if (n < 0) { - efree(context); + php_hash_free_context(ops, context); RETURN_FALSE; } } else { @@ -401,7 +401,7 @@ digest = zend_string_alloc(ops->digest_size, 0); ops->hash_final((unsigned char *) ZSTR_VAL(digest), context); - efree(context); + php_hash_free_context(ops, context); if (raw_output) { ZSTR_VAL(digest)[ops->digest_size] = 0; @@ -540,7 +540,7 @@ } php_stream_close(stream); if (n < 0) { - efree(context); + php_hash_free_context(ops, context); efree(K); zend_string_release(digest); RETURN_FALSE; @@ -558,7 +558,7 @@ /* Zero the key */ ZEND_SECURE_ZERO(K, ops->block_size); efree(K); - efree(context); + php_hash_free_context(ops, context); if (raw_output) { ZSTR_VAL(digest)[ops->digest_size] = 0; @@ -817,7 +817,7 @@ ZSTR_VAL(digest)[digest_len] = 0; /* Invalidate the object from further use */ - efree(hash->context); + php_hash_free_context(hash->ops, hash->context); hash->context = NULL; if (raw_output) { @@ -975,7 +975,7 @@ ZEND_SECURE_ZERO(digest, ops->digest_size); ZEND_SECURE_ZERO(prk, ops->digest_size); efree(K); - efree(context); + php_hash_free_context(ops, context); efree(prk); efree(digest); ZSTR_VAL(returnval)[length] = 0; @@ -1091,7 +1091,7 @@ efree(K1); efree(K2); efree(computed_salt); - efree(context); + php_hash_free_context(ops, context); efree(digest); efree(temp); @@ -1347,7 +1347,7 @@ RETVAL_STRINGL(key, bytes); ZEND_SECURE_ZERO(key, bytes); efree(digest); - efree(context); + php_hash_free_context(ops, context); efree(key); } } @@ -1377,7 +1377,7 @@ php_hashcontext_object *hash = php_hashcontext_from_object(obj); if (hash->context) { - efree(hash->context); + php_hash_free_context(hash->ops, hash->context); hash->context = NULL; } @@ -1413,7 +1413,7 @@ newobj->ops->hash_init(newobj->context, NULL); if (SUCCESS != newobj->ops->hash_copy(newobj->ops, oldobj->context, newobj->context)) { - efree(newobj->context); + php_hash_free_context(newobj->ops, newobj->context); newobj->context = NULL; return znew; } diff -Nru php8.4-8.4.23/ext/hash/hash_adler32.c php8.4-8.4.24/ext/hash/hash_adler32.c --- php8.4-8.4.23/ext/hash/hash_adler32.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_adler32.c 2026-07-29 05:29:50.000000000 +0000 @@ -70,5 +70,6 @@ 4, /* what to say here? */ 4, sizeof(PHP_ADLER32_CTX), + 0, 0 }; diff -Nru php8.4-8.4.23/ext/hash/hash_crc32.c php8.4-8.4.24/ext/hash/hash_crc32.c --- php8.4-8.4.23/ext/hash/hash_crc32.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_crc32.c 2026-07-29 05:29:50.000000000 +0000 @@ -102,6 +102,7 @@ 4, /* what to say here? */ 4, sizeof(PHP_CRC32_CTX), + 0, 0 }; @@ -117,6 +118,7 @@ 4, /* what to say here? */ 4, sizeof(PHP_CRC32_CTX), + 0, 0 }; @@ -132,5 +134,6 @@ 4, /* what to say here? */ 4, sizeof(PHP_CRC32_CTX), + 0, 0 }; diff -Nru php8.4-8.4.23/ext/hash/hash_fnv.c php8.4-8.4.24/ext/hash/hash_fnv.c --- php8.4-8.4.23/ext/hash/hash_fnv.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_fnv.c 2026-07-29 05:29:50.000000000 +0000 @@ -32,6 +32,7 @@ 4, 4, sizeof(PHP_FNV132_CTX), + 0, 0 }; @@ -47,6 +48,7 @@ 4, 4, sizeof(PHP_FNV132_CTX), + 0, 0 }; @@ -62,6 +64,7 @@ 8, 4, sizeof(PHP_FNV164_CTX), + 0, 0 }; @@ -77,6 +80,7 @@ 8, 4, sizeof(PHP_FNV164_CTX), + 0, 0 }; diff -Nru php8.4-8.4.23/ext/hash/hash_gost.c php8.4-8.4.24/ext/hash/hash_gost.c --- php8.4-8.4.23/ext/hash/hash_gost.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_gost.c 2026-07-29 05:29:50.000000000 +0000 @@ -329,7 +329,8 @@ 32, 32, sizeof(PHP_GOST_CTX), - 1 + 1, + 0 }; const php_hash_ops php_hash_gost_crypto_ops = { @@ -344,5 +345,6 @@ 32, 32, sizeof(PHP_GOST_CTX), - 1 + 1, + 0 }; diff -Nru php8.4-8.4.23/ext/hash/hash_haval.c php8.4-8.4.24/ext/hash/hash_haval.c --- php8.4-8.4.23/ext/hash/hash_haval.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_haval.c 2026-07-29 05:29:50.000000000 +0000 @@ -252,7 +252,7 @@ php_hash_serialize, \ php_hash_unserialize, \ PHP_HAVAL_SPEC, \ - ((b) / 8), 128, sizeof(PHP_HAVAL_CTX), 1 }; \ + ((b) / 8), 128, sizeof(PHP_HAVAL_CTX), 1, 0 }; \ PHP_HASH_API void PHP_##p##HAVAL##b##Init(PHP_HAVAL_CTX *context, ZEND_ATTRIBUTE_UNUSED HashTable *args) \ { int i; context->count[0] = context->count[1] = 0; \ for(i = 0; i < 8; i++) context->state[i] = D0[i]; \ diff -Nru php8.4-8.4.23/ext/hash/hash_joaat.c php8.4-8.4.24/ext/hash/hash_joaat.c --- php8.4-8.4.23/ext/hash/hash_joaat.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_joaat.c 2026-07-29 05:29:50.000000000 +0000 @@ -33,6 +33,7 @@ 4, 4, sizeof(PHP_JOAAT_CTX), + 0, 0 }; diff -Nru php8.4-8.4.23/ext/hash/hash_md.c php8.4-8.4.24/ext/hash/hash_md.c --- php8.4-8.4.23/ext/hash/hash_md.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_md.c 2026-07-29 05:29:50.000000000 +0000 @@ -29,7 +29,8 @@ 16, 64, sizeof(PHP_MD5_CTX), - 1 + 1, + 0 }; const php_hash_ops php_hash_md4_ops = { @@ -44,7 +45,8 @@ 16, 64, sizeof(PHP_MD4_CTX), - 1 + 1, + 0 }; static int php_md2_unserialize(php_hashcontext_object *hash, zend_long magic, const zval *zv); @@ -61,7 +63,8 @@ 16, 16, sizeof(PHP_MD2_CTX), - 1 + 1, + 0 }; /* MD common stuff */ diff -Nru php8.4-8.4.23/ext/hash/hash_murmur.c php8.4-8.4.24/ext/hash/hash_murmur.c --- php8.4-8.4.23/ext/hash/hash_murmur.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_murmur.c 2026-07-29 05:29:50.000000000 +0000 @@ -33,6 +33,7 @@ 4, 4, sizeof(PHP_MURMUR3A_CTX), + 0, 0 }; @@ -95,6 +96,7 @@ 16, 4, sizeof(PHP_MURMUR3C_CTX), + 0, 0 }; @@ -174,6 +176,7 @@ 16, 8, sizeof(PHP_MURMUR3F_CTX), + 0, 0 }; diff -Nru php8.4-8.4.23/ext/hash/hash_ripemd.c php8.4-8.4.24/ext/hash/hash_ripemd.c --- php8.4-8.4.23/ext/hash/hash_ripemd.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_ripemd.c 2026-07-29 05:29:50.000000000 +0000 @@ -33,7 +33,8 @@ 16, 64, sizeof(PHP_RIPEMD128_CTX), - 1 + 1, + 0 }; const php_hash_ops php_hash_ripemd160_ops = { @@ -48,7 +49,8 @@ 20, 64, sizeof(PHP_RIPEMD160_CTX), - 1 + 1, + 0 }; const php_hash_ops php_hash_ripemd256_ops = { @@ -63,7 +65,8 @@ 32, 64, sizeof(PHP_RIPEMD256_CTX), - 1 + 1, + 0 }; const php_hash_ops php_hash_ripemd320_ops = { @@ -78,7 +81,8 @@ 40, 64, sizeof(PHP_RIPEMD320_CTX), - 1 + 1, + 0 }; /* {{{ PHP_RIPEMD128Init diff -Nru php8.4-8.4.23/ext/hash/hash_sha.c php8.4-8.4.24/ext/hash/hash_sha.c --- php8.4-8.4.23/ext/hash/hash_sha.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_sha.c 2026-07-29 05:29:50.000000000 +0000 @@ -75,7 +75,8 @@ 20, 64, sizeof(PHP_SHA1_CTX), - 1 + 1, + 0 }; /* sha224/sha256 */ @@ -92,7 +93,8 @@ 32, 64, sizeof(PHP_SHA256_CTX), - 1 + 1, + 0 }; const php_hash_ops php_hash_sha224_ops = { @@ -107,7 +109,8 @@ 28, 64, sizeof(PHP_SHA224_CTX), - 1 + 1, + 0 }; #define ROTR32(b,x) ((x >> b) | (x << (32 - b))) @@ -624,7 +627,8 @@ 48, 128, sizeof(PHP_SHA384_CTX), - 1 + 1, + 0 }; /* {{{ PHP_SHA512InitArgs @@ -803,7 +807,8 @@ 64, 128, sizeof(PHP_SHA512_CTX), - 1 + 1, + 0 }; const php_hash_ops php_hash_sha512_256_ops = { @@ -818,7 +823,8 @@ 32, 128, sizeof(PHP_SHA512_CTX), - 1 + 1, + 0 }; const php_hash_ops php_hash_sha512_224_ops = { @@ -833,5 +839,6 @@ 28, 128, sizeof(PHP_SHA512_CTX), - 1 + 1, + 0 }; diff -Nru php8.4-8.4.23/ext/hash/hash_sha3.c php8.4-8.4.24/ext/hash/hash_sha3.c --- php8.4-8.4.23/ext/hash/hash_sha3.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_sha3.c 2026-07-29 05:29:50.000000000 +0000 @@ -251,7 +251,8 @@ bits >> 3, \ (1600 - (2 * bits)) >> 3, \ sizeof(PHP_SHA3_##bits##_CTX), \ - 1 \ + 1, \ + 0 \ } #else @@ -339,7 +340,8 @@ bits >> 3, \ (1600 - (2 * bits)) >> 3, \ sizeof(PHP_SHA3_CTX), \ - 1 \ + 1, \ + 0 \ } #endif diff -Nru php8.4-8.4.23/ext/hash/hash_snefru.c php8.4-8.4.24/ext/hash/hash_snefru.c --- php8.4-8.4.23/ext/hash/hash_snefru.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_snefru.c 2026-07-29 05:29:50.000000000 +0000 @@ -214,5 +214,6 @@ 32, 32, sizeof(PHP_SNEFRU_CTX), - 1 + 1, + 0 }; diff -Nru php8.4-8.4.23/ext/hash/hash_tiger.c php8.4-8.4.24/ext/hash/hash_tiger.c --- php8.4-8.4.23/ext/hash/hash_tiger.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_tiger.c 2026-07-29 05:29:50.000000000 +0000 @@ -265,7 +265,8 @@ b/8, \ 64, \ sizeof(PHP_TIGER_CTX), \ - 1 \ + 1, \ + 0 \ } PHP_HASH_TIGER_OPS(3, 128); diff -Nru php8.4-8.4.23/ext/hash/hash_whirlpool.c php8.4-8.4.24/ext/hash/hash_whirlpool.c --- php8.4-8.4.23/ext/hash/hash_whirlpool.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_whirlpool.c 2026-07-29 05:29:50.000000000 +0000 @@ -457,5 +457,6 @@ 64, 64, sizeof(PHP_WHIRLPOOL_CTX), - 1 + 1, + 0 }; diff -Nru php8.4-8.4.23/ext/hash/hash_xxhash.c php8.4-8.4.24/ext/hash/hash_xxhash.c --- php8.4-8.4.23/ext/hash/hash_xxhash.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/hash_xxhash.c 2026-07-29 05:29:50.000000000 +0000 @@ -34,6 +34,7 @@ 4, 4, sizeof(PHP_XXH32_CTX), + 0, 0 }; @@ -101,6 +102,7 @@ 8, 8, sizeof(PHP_XXH64_CTX), + 0, 0 }; @@ -152,7 +154,8 @@ 8, 8, sizeof(PHP_XXH3_64_CTX), - 0 + 0, + 64 }; typedef XXH_errorcode (*xxh3_reset_with_secret_func_t)(XXH3_state_t*, const void*, size_t); @@ -257,7 +260,8 @@ 16, 8, sizeof(PHP_XXH3_128_CTX), - 0 + 0, + 64 }; PHP_HASH_API void PHP_XXH3_128_Init(PHP_XXH3_128_CTX *ctx, HashTable *args) diff -Nru php8.4-8.4.23/ext/hash/php_hash.h php8.4-8.4.24/ext/hash/php_hash.h --- php8.4-8.4.23/ext/hash/php_hash.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/hash/php_hash.h 2026-07-29 05:29:50.000000000 +0000 @@ -52,6 +52,7 @@ size_t block_size; size_t context_size; unsigned is_crypto: 1; + size_t context_align; } php_hash_ops; struct _php_hashcontext_object { @@ -155,9 +156,26 @@ static inline void *php_hash_alloc_context(const php_hash_ops *ops) { /* Zero out context memory so serialization doesn't expose internals */ + if (ops->context_align > 0) { + size_t align = ops->context_align; + char *base = ecalloc(1, ops->context_size + align); + size_t offset = align - ((uintptr_t)base & (align - 1)); + char *ptr = base + offset; + ptr[-1] = (char)offset; + return ptr; + } return ecalloc(1, ops->context_size); } +static inline void php_hash_free_context(const php_hash_ops *ops, void *ctx) { + if (ops->context_align > 0) { + unsigned char offset = ((unsigned char *)ctx)[-1]; + efree((char *)ctx - offset); + return; + } + efree(ctx); +} + static inline void php_hash_bin2hex(char *out, const unsigned char *in, size_t in_len) { static const char hexits[17] = "0123456789abcdef"; diff -Nru php8.4-8.4.23/ext/iconv/tests/bug48147.phpt php8.4-8.4.24/ext/iconv/tests/bug48147.phpt --- php8.4-8.4.23/ext/iconv/tests/bug48147.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/iconv/tests/bug48147.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -2,17 +2,41 @@ Bug #48147 (iconv with //IGNORE cuts the string) --EXTENSIONS-- iconv +--SKIPIF-- + --FILE-- --EXPECTF-- Notice: iconv(): Detected an illegal character in input string in %s on line %d @@ -20,8 +44,8 @@ string(10) "aa%C3%B8aa" Notice: iconv(): Detected an incomplete multibyte character in input string in %s on line %d -string(0) "" +bool(false) string(8) "%C3%B8aa" Notice: iconv(): Detected an incomplete multibyte character in input string in %s on line %d -string(0) "" +bool(false) diff -Nru php8.4-8.4.23/ext/iconv/tests/bug52211.phpt php8.4-8.4.24/ext/iconv/tests/bug52211.phpt --- php8.4-8.4.23/ext/iconv/tests/bug52211.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/iconv/tests/bug52211.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -5,8 +5,22 @@ --FILE-- diff -Nru php8.4-8.4.23/ext/iconv/tests/bug76249.phpt php8.4-8.4.24/ext/iconv/tests/bug76249.phpt --- php8.4-8.4.23/ext/iconv/tests/bug76249.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/iconv/tests/bug76249.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -4,16 +4,27 @@ iconv --FILE-- DONE ---EXPECTF-- -Warning: stream_get_contents(): iconv stream filter ("ucs-2"=>"utf%A8//IGNORE"): invalid multibyte sequence in %sbug76249.php on line %d -string(0) "" +--EXPECTREGEX-- +Warning: stream_get_contents\(\): iconv stream filter \("ucs-2"=>"utf-?8(\/\/IGNORE)?"\): invalid multibyte sequence in .*bug76249\.php on line \d+ +string\(0\) "" DONE diff -Nru php8.4-8.4.23/ext/iconv/tests/eucjp2iso2022jp.phpt php8.4-8.4.24/ext/iconv/tests/eucjp2iso2022jp.phpt --- php8.4-8.4.23/ext/iconv/tests/eucjp2iso2022jp.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/iconv/tests/eucjp2iso2022jp.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -2,6 +2,16 @@ EUC-JP to ISO-2022-JP --EXTENSIONS-- iconv +--SKIPIF-- + --INI-- error_reporting=2039 --FILE-- diff -Nru php8.4-8.4.23/ext/iconv/tests/iconv_mime_encode.phpt php8.4-8.4.24/ext/iconv/tests/iconv_mime_encode.phpt --- php8.4-8.4.23/ext/iconv/tests/iconv_mime_encode.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/iconv/tests/iconv_mime_encode.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -2,6 +2,16 @@ iconv_mime_encode() --EXTENSIONS-- iconv +--SKIPIF-- + --INI-- iconv.internal_charset=iso-8859-1 --FILE-- diff -Nru php8.4-8.4.23/ext/intl/collator/collator_create.c php8.4-8.4.24/ext/intl/collator/collator_create.c --- php8.4-8.4.23/ext/intl/collator/collator_create.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/intl/collator/collator_create.c 2026-07-29 05:29:50.000000000 +0000 @@ -42,6 +42,10 @@ INTL_CHECK_LOCALE_LEN_OR_FAILURE(locale_len); COLLATOR_METHOD_FETCH_OBJECT; + if (co->ucoll) { + zend_throw_error(NULL, "Collator object is already constructed"); + return FAILURE; + } if(locale_len == 0) { locale = (char *)intl_locale_get_default(); diff -Nru php8.4-8.4.23/ext/intl/collator/collator_sort.c php8.4-8.4.24/ext/intl/collator/collator_sort.c --- php8.4-8.4.23/ext/intl/collator/collator_sort.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/intl/collator/collator_sort.c 2026-07-29 05:29:50.000000000 +0000 @@ -259,12 +259,13 @@ UCollator* saved_collator; zval* array = NULL; HashTable* hash = NULL; + zend_array* sorted = NULL; zend_long sort_flags = COLLATOR_SORT_REGULAR; COLLATOR_METHOD_INIT_VARS /* Parse parameters. */ - if( zend_parse_method_parameters( ZEND_NUM_ARGS(), getThis(), "Oa/|l", + if( zend_parse_method_parameters( ZEND_NUM_ARGS(), getThis(), "Oa|l", &object, Collator_ce_ptr, &array, &sort_flags ) == FAILURE ) { RETURN_THROWS(); @@ -283,8 +284,14 @@ hash = Z_ARRVAL_P( array ); + /* Copy array, so the in-place modifications will not be visible to the callback function */ + sorted = zend_array_dup( hash ); + /* Convert strings in the specified array from UTF-8 to UTF-16. */ - collator_convert_hash_from_utf8_to_utf16( hash, COLLATOR_ERROR_CODE_P( co ) ); + collator_convert_hash_from_utf8_to_utf16( sorted, COLLATOR_ERROR_CODE_P( co ) ); + if( U_FAILURE( COLLATOR_ERROR_CODE( co ) ) ) { + zend_array_destroy( sorted ); + } COLLATOR_CHECK_STATUS( co, "Error converting hash from UTF-8 to UTF-16" ); /* Save specified collator in the request-global (?) variable. */ @@ -292,15 +299,23 @@ INTL_G( current_collator ) = co->ucoll; /* Sort specified array. */ - zend_hash_sort(hash, collator_compare_func, renumber); + zend_hash_sort( sorted, collator_compare_func, renumber ); /* Restore saved collator. */ INTL_G( current_collator ) = saved_collator; /* Convert strings in the specified array back to UTF-8. */ - collator_convert_hash_from_utf16_to_utf8( hash, COLLATOR_ERROR_CODE_P( co ) ); + collator_convert_hash_from_utf16_to_utf8( sorted, COLLATOR_ERROR_CODE_P( co ) ); + if( U_FAILURE( COLLATOR_ERROR_CODE( co ) ) ) { + zend_array_destroy( sorted ); + } COLLATOR_CHECK_STATUS( co, "Error converting hash from UTF-16 to UTF-8" ); + zval garbage; + ZVAL_COPY_VALUE( &garbage, array ); + ZVAL_ARR( array, sorted ); + zval_ptr_dtor( &garbage ); + RETURN_TRUE; } /* }}} */ diff -Nru php8.4-8.4.23/ext/intl/intl_convertcpp.cpp php8.4-8.4.24/ext/intl/intl_convertcpp.cpp --- php8.4-8.4.23/ext/intl/intl_convertcpp.cpp 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/intl/intl_convertcpp.cpp 2026-07-29 05:29:50.000000000 +0000 @@ -62,6 +62,10 @@ //the number of UTF-8 code units is not larger than that of UTF-16 code //units * 3 + if (UNEXPECTED(from.length() > INT32_MAX / 3)) { + *status = U_BUFFER_OVERFLOW_ERROR; + return NULL; + } int32_t capacity = from.length() * 3; if (from.isEmpty()) { diff -Nru php8.4-8.4.23/ext/intl/locale/locale_methods.c php8.4-8.4.24/ext/intl/locale/locale_methods.c --- php8.4-8.4.23/ext/intl/locale/locale_methods.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/intl/locale/locale_methods.c 2026-07-29 05:29:50.000000000 +0000 @@ -1435,14 +1435,15 @@ zend_argument_type_error(2, "must only contain string values"); LOOKUP_CLEAN_RETURN(NULL); } - cur_arr[cur_arr_len*2] = estrndup(Z_STRVAL_P(ele_value), Z_STRLEN_P(ele_value)); - result = strToMatch(Z_STRVAL_P(ele_value), cur_arr[cur_arr_len*2]); + i = cur_arr_len*2; + cur_arr[i] = estrndup(Z_STRVAL_P(ele_value), Z_STRLEN_P(ele_value)); + cur_arr_len++; + result = strToMatch(Z_STRVAL_P(ele_value), cur_arr[i]); if(result == 0) { intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR, "lookup_loc_range: unable to canonicalize lang_tag", 0); LOOKUP_CLEAN_RETURN(NULL); } - cur_arr[cur_arr_len*2+1] = Z_STRVAL_P(ele_value); - cur_arr_len++ ; + cur_arr[i+1] = Z_STRVAL_P(ele_value); } ZEND_HASH_FOREACH_END(); /* end of for */ /* Canonicalize array elements */ @@ -1562,6 +1563,15 @@ } result_str = lookup_loc_range(loc_range, hash_arr, boolCanonical); + if (EG(exception)) { + RETURN_THROWS(); + } + if (U_FAILURE(intl_error_get_code(NULL))) { + if (result_str) { + zend_string_release_ex(result_str, 0); + } + RETURN_NULL(); + } if(result_str == NULL || ZSTR_VAL(result_str)[0] == '\0') { if( fallback_loc_str ) { result_str = zend_string_copy(fallback_loc_str); diff -Nru php8.4-8.4.23/ext/intl/spoofchecker/spoofchecker_create.c php8.4-8.4.24/ext/intl/spoofchecker/spoofchecker_create.c --- php8.4-8.4.23/ext/intl/spoofchecker/spoofchecker_create.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/intl/spoofchecker/spoofchecker_create.c 2026-07-29 05:29:50.000000000 +0000 @@ -31,9 +31,13 @@ ZEND_PARSE_PARAMETERS_NONE(); - zend_replace_error_handling(EH_THROW, IntlException_ce_ptr, &error_handling); - SPOOFCHECKER_METHOD_FETCH_OBJECT_NO_CHECK; + if (co->uspoof) { + zend_throw_error(NULL, "Spoofchecker object is already constructed"); + RETURN_THROWS(); + } + + zend_replace_error_handling(EH_THROW, IntlException_ce_ptr, &error_handling); co->uspoof = uspoof_open(SPOOFCHECKER_ERROR_CODE_P(co)); INTL_METHOD_CHECK_STATUS(co, "spoofchecker: unable to open ICU Spoof Checker"); diff -Nru php8.4-8.4.23/ext/intl/tests/collator_double_ctor.phpt php8.4-8.4.24/ext/intl/tests/collator_double_ctor.phpt --- php8.4-8.4.23/ext/intl/tests/collator_double_ctor.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/intl/tests/collator_double_ctor.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,16 @@ +--TEST-- +Collator double construction should not be allowed +--EXTENSIONS-- +intl +--FILE-- +__construct('en_US'); +} catch (Error $e) { + echo $e->getMessage(), "\n"; +} +?> +--EXPECT-- +Collator object is already constructed diff -Nru php8.4-8.4.23/ext/intl/tests/collator_sort_modify_during_compare.phpt php8.4-8.4.24/ext/intl/tests/collator_sort_modify_during_compare.phpt --- php8.4-8.4.23/ext/intl/tests/collator_sort_modify_during_compare.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/intl/tests/collator_sort_modify_during_compare.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +Collator::sort(): mutating the array from __toString() during comparison must not corrupt the sort +--EXTENSIONS-- +intl +--FILE-- +sort($arr)); +var_dump($arr); +?> +--EXPECT-- +bool(true) +array(4) { + [0]=> + string(1) "a" + [1]=> + string(1) "b" + [2]=> + object(Grow)#2 (0) { + } + [3]=> + string(1) "z" +} diff -Nru php8.4-8.4.23/ext/intl/tests/intlchar_reset_error.phpt php8.4-8.4.24/ext/intl/tests/intlchar_reset_error.phpt --- php8.4-8.4.23/ext/intl/tests/intlchar_reset_error.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/intl/tests/intlchar_reset_error.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,19 @@ +--TEST-- +IntlChar methods reset intl error on success +--EXTENSIONS-- +intl +--FILE-- + +--EXPECT-- +bool(false) +bool(true) +bool(true) +bool(true) +bool(true) diff -Nru php8.4-8.4.23/ext/intl/tests/locale_lookup_invalid_language_tag.phpt php8.4-8.4.24/ext/intl/tests/locale_lookup_invalid_language_tag.phpt --- php8.4-8.4.23/ext/intl/tests/locale_lookup_invalid_language_tag.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/intl/tests/locale_lookup_invalid_language_tag.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,35 @@ +--TEST-- +Locale::lookup() returns null for invalid language tags +--EXTENSIONS-- +intl +--FILE-- +getMessage(), PHP_EOL; +} + +try { + locale_lookup([''], 'de-DE', false, 'en-US'); +} catch (IntlException $e) { + echo $e->getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +NULL +string(75) "lookup_loc_range: unable to canonicalize lang_tag: U_ILLEGAL_ARGUMENT_ERROR" +NULL +string(75) "lookup_loc_range: unable to canonicalize lang_tag: U_ILLEGAL_ARGUMENT_ERROR" +lookup_loc_range: unable to canonicalize lang_tag +lookup_loc_range: unable to canonicalize lang_tag diff -Nru php8.4-8.4.23/ext/intl/tests/spoofchecker_double_ctor.phpt php8.4-8.4.24/ext/intl/tests/spoofchecker_double_ctor.phpt --- php8.4-8.4.23/ext/intl/tests/spoofchecker_double_ctor.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/intl/tests/spoofchecker_double_ctor.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +Spoofchecker double construction should not be allowed +--EXTENSIONS-- +intl +--SKIPIF-- + +--FILE-- +__construct(); +} catch (Error $e) { + echo $e->getMessage(), "\n"; +} +?> +--EXPECT-- +Spoofchecker object is already constructed diff -Nru php8.4-8.4.23/ext/intl/uchar/uchar.c php8.4-8.4.24/ext/intl/uchar/uchar.c --- php8.4-8.4.23/ext/intl/uchar/uchar.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/intl/uchar/uchar.c 2026-07-29 05:29:50.000000000 +0000 @@ -54,6 +54,8 @@ char buffer[5]; int buffer_len = 0; + intl_error_reset(NULL); + if (parse_code_point_param(INTERNAL_FUNCTION_PARAM_PASSTHRU, &cp) == FAILURE) { RETURN_NULL(); } @@ -73,6 +75,8 @@ IC_METHOD(ord) { UChar32 cp; + intl_error_reset(NULL); + if (parse_code_point_param(INTERNAL_FUNCTION_PARAM_PASSTHRU, &cp) == FAILURE) { RETURN_NULL(); } @@ -88,6 +92,8 @@ zend_string *string_codepoint; zend_long int_codepoint = 0; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(2, 2) Z_PARAM_STR_OR_LONG(string_codepoint, int_codepoint) Z_PARAM_LONG(prop) @@ -108,6 +114,8 @@ zend_string *string_codepoint; zend_long int_codepoint = 0; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(2, 2) Z_PARAM_STR_OR_LONG(string_codepoint, int_codepoint) Z_PARAM_LONG(prop) @@ -125,6 +133,8 @@ IC_METHOD(getIntPropertyMinValue) { zend_long prop; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(1, 1) Z_PARAM_LONG(prop) ZEND_PARSE_PARAMETERS_END(); @@ -137,6 +147,8 @@ IC_METHOD(getIntPropertyMaxValue) { zend_long prop; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(1, 1) Z_PARAM_LONG(prop) ZEND_PARSE_PARAMETERS_END(); @@ -149,6 +161,8 @@ IC_METHOD(getNumericValue) { UChar32 cp; + intl_error_reset(NULL); + if (parse_code_point_param(INTERNAL_FUNCTION_PARAM_PASSTHRU, &cp) == FAILURE) { RETURN_NULL(); } @@ -191,6 +205,8 @@ IC_METHOD(enumCharTypes) { enumCharType_data context; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(1, 1) Z_PARAM_FUNC(context.fci, context.fci_cache) ZEND_PARSE_PARAMETERS_END(); @@ -202,6 +218,8 @@ IC_METHOD(getBlockCode) { UChar32 cp; + intl_error_reset(NULL); + if (parse_code_point_param(INTERNAL_FUNCTION_PARAM_PASSTHRU, &cp) == FAILURE) { RETURN_NULL(); } @@ -220,6 +238,8 @@ zend_string *buffer = NULL; int32_t buffer_len; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(1, 2) Z_PARAM_STR_OR_LONG(string_codepoint, int_codepoint) Z_PARAM_OPTIONAL @@ -250,6 +270,8 @@ UChar32 ret; UErrorCode error = U_ZERO_ERROR; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(1, 2) Z_PARAM_STRING(name, name_len) Z_PARAM_OPTIONAL @@ -301,6 +323,7 @@ zend_long nameChoice = U_UNICODE_CHAR_NAME; UErrorCode error = U_ZERO_ERROR; + intl_error_reset(NULL); ZEND_PARSE_PARAMETERS_START(3, 4) Z_PARAM_STR_OR_LONG(string_start, int_start) @@ -326,6 +349,8 @@ zend_long nameChoice = U_LONG_PROPERTY_NAME; const char *ret; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(1, 2) Z_PARAM_LONG(property) Z_PARAM_OPTIONAL @@ -348,6 +373,8 @@ char *alias; size_t alias_len; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(1, 1) Z_PARAM_STRING(alias, alias_len) ZEND_PARSE_PARAMETERS_END(); @@ -361,6 +388,8 @@ zend_long property, value, nameChoice = U_LONG_PROPERTY_NAME; const char *ret; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(2, 3) Z_PARAM_LONG(property) Z_PARAM_LONG(value) @@ -385,6 +414,8 @@ char *name; size_t name_len; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(2, 2) Z_PARAM_LONG(property) Z_PARAM_STRING(name, name_len) @@ -401,6 +432,8 @@ zend_string *string_codepoint; zend_long int_codepoint = 0; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(1, 2) Z_PARAM_STR_OR_LONG(string_codepoint, int_codepoint) Z_PARAM_OPTIONAL @@ -432,6 +465,8 @@ zend_string *string_codepoint; zend_long int_codepoint = 0; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(1, 2) Z_PARAM_STR_OR_LONG(string_codepoint, int_codepoint) Z_PARAM_OPTIONAL @@ -456,6 +491,8 @@ IC_METHOD(forDigit) { zend_long digit, radix = 10; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_START(1, 2) Z_PARAM_LONG(digit) Z_PARAM_OPTIONAL @@ -472,6 +509,8 @@ UVersionInfo version; int i; + intl_error_reset(NULL); + if (parse_code_point_param(INTERNAL_FUNCTION_PARAM_PASSTHRU, &cp) == FAILURE) { RETURN_NULL(); } @@ -489,6 +528,8 @@ UVersionInfo version; int i; + intl_error_reset(NULL); + ZEND_PARSE_PARAMETERS_NONE(); u_getUnicodeVersion(version); @@ -507,6 +548,8 @@ int32_t closure_len; UErrorCode error = U_ZERO_ERROR; + intl_error_reset(NULL); + if (parse_code_point_param(INTERNAL_FUNCTION_PARAM_PASSTHRU, &cp) == FAILURE) { RETURN_NULL(); } @@ -535,6 +578,7 @@ #define IC_BOOL_METHOD_CHAR(name) \ IC_METHOD(name) { \ UChar32 cp; \ + intl_error_reset(NULL); \ if (parse_code_point_param(INTERNAL_FUNCTION_PARAM_PASSTHRU, &cp) == FAILURE) { \ RETURN_NULL(); \ } \ @@ -575,6 +619,7 @@ #define IC_INT_METHOD_CHAR(name) \ IC_METHOD(name) { \ UChar32 cp; \ + intl_error_reset(NULL); \ if (parse_code_point_param(INTERNAL_FUNCTION_PARAM_PASSTHRU, &cp) == FAILURE) { \ RETURN_NULL(); \ } \ @@ -595,6 +640,7 @@ UChar32 cp, ret; \ zend_string *string_codepoint; \ zend_long int_codepoint = -1; \ + intl_error_reset(NULL); \ ZEND_PARSE_PARAMETERS_START(1, 1) \ Z_PARAM_STR_OR_LONG(string_codepoint, int_codepoint) \ ZEND_PARSE_PARAMETERS_END(); \ diff -Nru php8.4-8.4.23/ext/ldap/ldap.c php8.4-8.4.24/ext/ldap/ldap.c --- php8.4-8.4.23/ext/ldap/ldap.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/ldap/ldap.c 2026-07-29 05:29:50.000000000 +0000 @@ -564,6 +564,7 @@ num_keys = zend_hash_num_elements(Z_ARRVAL_P(val)); sort_keys = safe_emalloc((num_keys+1), sizeof(LDAPSortKey*), 0); + memset(sort_keys, 0, (num_keys+1) * sizeof(LDAPSortKey*)); tmpstrings1 = safe_emalloc(num_keys, sizeof(zend_string*), 0); tmpstrings2 = safe_emalloc(num_keys, sizeof(zend_string*), 0); num_tmpstrings1 = 0; diff -Nru php8.4-8.4.23/ext/ldap/tests/ldap_sort_control_missing_attr.phpt php8.4-8.4.24/ext/ldap/tests/ldap_sort_control_missing_attr.phpt --- php8.4-8.4.23/ext/ldap/tests/ldap_sort_control_missing_attr.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/ldap/tests/ldap_sort_control_missing_attr.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,30 @@ +--TEST-- +ldap_search(): malformed sort control (sort key missing "attr") must not free uninitialized memory +--EXTENSIONS-- +ldap +--FILE-- + LDAP_CONTROL_SORTREQUEST, + 'value' => [ + ['attr' => 'cn'], + ['reverse' => true], + ], + ], + ]); +} catch (\ValueError $e) { + echo $e->getMessage(), "\n"; +} + +echo "ok\n"; +?> +--EXPECT-- +ldap_search(): Sort key list must have an "attr" key +ok diff -Nru php8.4-8.4.23/ext/libxml/mime_sniff.c php8.4-8.4.24/ext/libxml/mime_sniff.c --- php8.4-8.4.23/ext/libxml/mime_sniff.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/libxml/mime_sniff.c 2026-07-29 05:29:50.000000000 +0000 @@ -10,7 +10,7 @@ | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ - | Authors: Niels Dossche | + | Authors: Nora Dossche | +----------------------------------------------------------------------+ */ @@ -273,7 +273,7 @@ /* 11.9.1. Set parameterValue to the result of collecting a sequence of code points that are not ';' */ size_t parameter_value_length = collect_a_sequence_of_code_points(start, end, is_not_semicolon); parameter_value = zend_string_init(start, parameter_value_length, false); - start += parameter_name_length; + start += parameter_value_length; /* 11.9.2. Remove trailing HTTP whitespace from parameterValue */ while (ZSTR_LEN(parameter_value) > 0 && is_http_whitespace(ZSTR_VAL(parameter_value)[ZSTR_LEN(parameter_value) - 1])) { diff -Nru php8.4-8.4.23/ext/odbc/php_odbc.c php8.4-8.4.24/ext/odbc/php_odbc.c --- php8.4-8.4.23/ext/odbc/php_odbc.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/odbc/php_odbc.c 2026-07-29 05:29:50.000000000 +0000 @@ -680,6 +680,7 @@ for(i = 0; i < result->numcols; i++) { charextraalloc = 0; + result->values[i].value_max_len = 0; colfieldid = SQL_COLUMN_DISPLAY_SIZE; rc = PHP_ODBC_SQLCOLATTRIBUTE(result->stmt, (SQLUSMALLINT)(i+1), PHP_ODBC_SQL_DESC_NAME, @@ -706,6 +707,7 @@ #ifdef HAVE_ADABAS case SQL_TIMESTAMP: result->values[i].value = (char *)emalloc(27); + result->values[i].value_max_len = 26; SQLBindCol(result->stmt, (SQLUSMALLINT)(i+1), SQL_C_CHAR, result->values[i].value, 27, &result->values[i].vallen); break; @@ -775,6 +777,7 @@ displaysize *= 4; } result->values[i].value = (char *)emalloc(displaysize + 1); + result->values[i].value_max_len = displaysize; rc = SQLBindCol(result->stmt, (SQLUSMALLINT)(i+1), SQL_C_CHAR, result->values[i].value, displaysize + 1, &result->values[i].vallen); break; @@ -1492,7 +1495,11 @@ ZVAL_FALSE(&tmp); break; } - ZVAL_STRINGL(&tmp, result->values[i].value, result->values[i].vallen); + SQLLEN str_len = result->values[i].vallen; + if (str_len > result->values[i].value_max_len) { + str_len = result->values[i].value_max_len; + } + ZVAL_STRINGL(&tmp, result->values[i].value, str_len); break; } @@ -1660,7 +1667,11 @@ ZVAL_FALSE(&tmp); break; } - ZVAL_STRINGL(&tmp, result->values[i].value, result->values[i].vallen); + SQLLEN str_len = result->values[i].vallen; + if (str_len > result->values[i].value_max_len) { + str_len = result->values[i].value_max_len; + } + ZVAL_STRINGL(&tmp, result->values[i].value, str_len); break; } zend_hash_index_update(Z_ARRVAL_P(pv_res_arr), i, &tmp); @@ -1910,7 +1921,11 @@ php_error_docref(NULL, E_WARNING, "Cannot get data of column #%d (driver cannot determine length)", field_ind + 1); RETURN_FALSE; } else { - RETURN_STRINGL(result->values[field_ind].value, result->values[field_ind].vallen); + SQLLEN str_len = result->values[field_ind].vallen; + if (str_len > result->values[field_ind].value_max_len) { + str_len = result->values[field_ind].value_max_len; + } + RETURN_STRINGL(result->values[field_ind].value, str_len); } break; } diff -Nru php8.4-8.4.23/ext/odbc/php_odbc_includes.h php8.4-8.4.24/ext/odbc/php_odbc_includes.h --- php8.4-8.4.23/ext/odbc/php_odbc_includes.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/odbc/php_odbc_includes.h 2026-07-29 05:29:50.000000000 +0000 @@ -205,6 +205,7 @@ char name[256]; char *value; SQLLEN vallen; + SQLLEN value_max_len; SQLLEN coltype; } odbc_result_value; diff -Nru php8.4-8.4.23/ext/odbc/tests/config.inc php8.4-8.4.24/ext/odbc/tests/config.inc --- php8.4-8.4.23/ext/odbc/tests/config.inc 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/odbc/tests/config.inc 2026-07-29 05:29:50.000000000 +0000 @@ -1,5 +1,7 @@ +--FILE-- + +--EXPECT-- +clamped to buffer: bool(true) +only value bytes: bool(true) diff -Nru php8.4-8.4.23/ext/opcache/ZendAccelerator.c php8.4-8.4.24/ext/opcache/ZendAccelerator.c --- php8.4-8.4.23/ext/opcache/ZendAccelerator.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/opcache/ZendAccelerator.c 2026-07-29 05:29:50.000000000 +0000 @@ -4290,12 +4290,14 @@ uint32_t fn_flags = op_array->fn_flags; zend_function *prototype = op_array->prototype; HashTable *ht = op_array->static_variables; + const zend_property_info *prop_info = op_array->prop_info; *op_array = *orig_op_array; op_array->function_name = function_name; op_array->scope = scope; op_array->fn_flags = fn_flags; op_array->prototype = prototype; op_array->static_variables = ht; + op_array->prop_info = prop_info; } static void preload_fix_trait_methods(zend_class_entry *ce) diff -Nru php8.4-8.4.23/ext/opcache/jit/zend_jit_ir.c php8.4-8.4.24/ext/opcache/jit/zend_jit_ir.c --- php8.4-8.4.23/ext/opcache/jit/zend_jit_ir.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/opcache/jit/zend_jit_ir.c 2026-07-29 05:29:50.000000000 +0000 @@ -4815,7 +4815,7 @@ ir_ref observer_handler_user = ir_ADD_OFFSET(run_time_cache, zend_observer_fcall_op_array_extension * sizeof(void *)); ir_MERGE_WITH(if_internal_func_end); - *observer_handler = ir_PHI_2(IR_ADDR, observer_handler_internal, observer_handler_user); + *observer_handler = ir_PHI_2(IR_ADDR, observer_handler_user, observer_handler_internal); } // JIT: if (*observer_handler == ZEND_OBSERVER_NONE_OBSERVED) { diff -Nru php8.4-8.4.23/ext/opcache/tests/gh21770.phpt php8.4-8.4.24/ext/opcache/tests/gh21770.phpt --- php8.4-8.4.23/ext/opcache/tests/gh21770.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/opcache/tests/gh21770.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,25 @@ +--TEST-- +GH-21770 (Infinite recursion in property hook getter in opcache preloaded trait) +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +opcache.preload={PWD}/preload_gh21770.inc +--EXTENSIONS-- +opcache +--SKIPIF-- + +--FILE-- +a, "\n"; + +$c = new C(); +$c->x = 42; +var_dump($c->x); +?> +--EXPECT-- +a +int(42) diff -Nru php8.4-8.4.23/ext/opcache/tests/jit/gh22158.phpt php8.4-8.4.24/ext/opcache/tests/jit/gh22158.phpt --- php8.4-8.4.23/ext/opcache/tests/jit/gh22158.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/opcache/tests/jit/gh22158.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,33 @@ +--TEST-- +GH-22158 (Tracing JIT dispatches observer begin handler through the wrong run_time_cache slot on megamorphic calls) +--EXTENSIONS-- +opcache +zend_test +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.jit=tracing +opcache.jit_buffer_size=32M +opcache.jit_max_polymorphic_calls=0 +zend_test.observer.enabled=1 +zend_test.observer.observe_all=1 +zend_test.observer.show_output=0 +zend_test.observer.reserve_op_array_handle=1 +--FILE-- +f(); +} +echo $t, "\n"; +?> +--EXPECT-- +600000 diff -Nru php8.4-8.4.23/ext/opcache/tests/preload_gh21770.inc php8.4-8.4.24/ext/opcache/tests/preload_gh21770.inc --- php8.4-8.4.23/ext/opcache/tests/preload_gh21770.inc 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/opcache/tests/preload_gh21770.inc 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,20 @@ + $this->a; + } +} + +trait X { + public int $x = 0 { + set(int $value) => $value; + } +} + +class B { + use A; +} + +class C { + use X; +} diff -Nru php8.4-8.4.23/ext/openssl/openssl.c php8.4-8.4.24/ext/openssl/openssl.c --- php8.4-8.4.23/ext/openssl/openssl.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/openssl/openssl.c 2026-07-29 05:29:50.000000000 +0000 @@ -2169,6 +2169,7 @@ str_serial = i2s_ASN1_INTEGER(NULL, asn1_serial); /* Can return NULL on error or memory allocation failure */ if (!str_serial) { + OPENSSL_free(hex_serial); php_openssl_store_errors(); goto err; } @@ -2517,9 +2518,20 @@ RETURN_FALSE; } + X509 *obj_x509; + if (cert_obj) { + obj_x509 = X509_dup(cert); + if (!obj_x509) { + php_error_docref(NULL, E_WARNING, "X.509 Certificate could not be duplicated"); + RETURN_FALSE; + } + } else { + obj_x509 = cert; + } + object_init_ex(return_value, php_openssl_certificate_ce); x509_cert_obj = Z_OPENSSL_CERTIFICATE_P(return_value); - x509_cert_obj->x509 = cert_obj ? X509_dup(cert) : cert; + x509_cert_obj->x509 = obj_x509; } /* }}} */ @@ -2847,6 +2859,7 @@ zout = zend_try_array_init(zout); if (!zout) { + sk_X509_pop_free(ca, X509_free); goto cleanup; } diff -Nru php8.4-8.4.23/ext/openssl/tests/openssl_pkcs12_read_array_init.phpt php8.4-8.4.24/ext/openssl/tests/openssl_pkcs12_read_array_init.phpt --- php8.4-8.4.23/ext/openssl/tests/openssl_pkcs12_read_array_init.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/openssl/tests/openssl_pkcs12_read_array_init.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,23 @@ +--TEST-- +Memory leak when array initialization in openssl_pkcs12_read() fails +--EXTENSIONS-- +openssl +--FILE-- +foo, "csos"); +} catch (TypeError $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} +?> +--EXPECT-- +TypeError: Cannot assign array to reference held by property Typed::$foo of type string diff -Nru php8.4-8.4.23/ext/openssl/tests/stream_supplemental_read_timeout.phpt php8.4-8.4.24/ext/openssl/tests/stream_supplemental_read_timeout.phpt --- php8.4-8.4.23/ext/openssl/tests/stream_supplemental_read_timeout.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/openssl/tests/stream_supplemental_read_timeout.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,90 @@ +--TEST-- +Timeout for supplemental read at end of a blocking stream in SSL stream wrapper +--EXTENSIONS-- +openssl +--SKIPIF-- + +--FILE-- + ['local_cert' => '%s']]); + $flags = STREAM_SERVER_BIND|STREAM_SERVER_LISTEN; + $server = stream_socket_server("tls://127.0.0.1:0", $errno, $errstr, $flags, $ctx); + phpt_notify_server_start($server); + + $conn = stream_socket_accept($server, 30); + + fwrite($conn, "hello\n"); + + phpt_wait(); + fclose($conn); +CODE; +$serverCode = sprintf($serverCode, $certFile); + +$clientCode = <<<'CODE' + $ctx = stream_context_create(['ssl' => [ + 'verify_peer' => false, + 'verify_peer_name' => false, + 'peer_name' => '%s', + ]]); + + $client = stream_socket_client("tls://{{ ADDR }}", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $ctx); + stream_set_blocking($client, true); + stream_set_timeout($client, 5); + $start = hrtime(true); + + $buf = ''; + $read = [$client]; + $write = $except = null; + while (true) { + if (!stream_select($read, $write, $except, 5)) { + break; + } + + // Initially, read only the first char, then request more than is stored + // in the buffer, triggering a supplemental read. + $chunk = fread($client, strlen($buf) === 0 ? 1 : 10); + if ($chunk === '' || $chunk === false) { + /* A non-application record (e.g. a TLS 1.3 session ticket) may arrive first. */ + if (feof($client)) { + break; + } + } else { + $buf .= $chunk; + if (strlen($buf) >= 6) { + break; + } + } + $read = [$client]; + $write = $except = null; + } + + echo trim($buf), "\n"; + + $diff = (hrtime(true) - $start) / 1e9; + var_dump($diff < 4.0); + + phpt_notify(); + fclose($client); +CODE; +$clientCode = sprintf($clientCode, $peerName); + +include 'CertificateGenerator.inc'; +$certificateGenerator = new CertificateGenerator(); +$certificateGenerator->saveNewCertAsFileWithKey($peerName, $certFile); + +include 'ServerClientTestCase.inc'; +ServerClientTestCase::getInstance()->run($clientCode, $serverCode); +?> +--CLEAN-- + +--EXPECT-- +hello +bool(true) diff -Nru php8.4-8.4.23/ext/openssl/xp_ssl.c php8.4-8.4.24/ext/openssl/xp_ssl.c --- php8.4-8.4.23/ext/openssl/xp_ssl.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/openssl/xp_ssl.c 2026-07-29 05:29:50.000000000 +0000 @@ -2069,7 +2069,11 @@ /* Only do this if SSL is active. */ if (sslsock->ssl_active) { - int retry = 1; + /* We have already returned some buffered data. Don't retry and don't + * block. We're just trying to fill the buffer more, but the stream might + * be empty, so we don't want to wait in vain. */ + bool supplemental = stream->has_buffered_data; + int retry = !supplemental; struct timeval start_time; struct timeval *timeout = NULL; int began_blocked = sslsock->s.is_blocked; @@ -2082,11 +2086,11 @@ } /* never use a timeout with non-blocking sockets */ - if (began_blocked) { + if (began_blocked && !supplemental) { timeout = &sslsock->s.timeout; } - if (timeout) { + if (timeout || supplemental) { php_openssl_set_blocking(sslsock, 0); } @@ -2160,7 +2164,7 @@ } /* Don't loop indefinitely in non-blocking mode if no data is available */ - if (began_blocked == 0) { + if (began_blocked == 0 || supplemental) { break; } diff -Nru php8.4-8.4.23/ext/pdo_dblib/dblib_driver.c php8.4-8.4.24/ext/pdo_dblib/dblib_driver.c --- php8.4-8.4.23/ext/pdo_dblib/dblib_driver.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/pdo_dblib/dblib_driver.c 2026-07-29 05:29:50.000000000 +0000 @@ -234,7 +234,7 @@ RETCODE ret; char *id = NULL; - size_t len; + DBINT len; zend_string *ret_id; /* @@ -267,10 +267,15 @@ return NULL; } - id = emalloc(32); - len = dbconvert(NULL, (dbcoltype(H->link, 1)) , (dbdata(H->link, 1)) , (dbdatlen(H->link, 1)), SQLCHAR, (BYTE *)id, (DBINT)-1); + id = emalloc(40); + len = dbconvert(NULL, (dbcoltype(H->link, 1)) , (dbdata(H->link, 1)) , (dbdatlen(H->link, 1)), SQLCHAR, (BYTE *)id, (DBINT)40); dbcancel(H->link); + if (len < 0) { + efree(id); + return NULL; + } + ret_id = zend_string_init(id, len, 0); efree(id); return ret_id; @@ -539,7 +544,6 @@ } if (i==nvers) { - printf("Invalid version '%s'\n", vars[5].optval); pdo_raise_impl_error(dbh, NULL, "HY000", "PDO_DBLIB: Invalid version specified in connection string."); goto cleanup; /* unknown version specified */ } diff -Nru php8.4-8.4.23/ext/pdo_firebird/firebird_driver.c php8.4-8.4.24/ext/pdo_firebird/firebird_driver.c --- php8.4-8.4.23/ext/pdo_firebird/firebird_driver.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/pdo_firebird/firebird_driver.c 2026-07-29 05:29:50.000000000 +0000 @@ -1410,6 +1410,10 @@ char const *dpb_values[] = { dbh->username, dbh->password, vars[1].optval, vars[2].optval }; char dpb_buffer[256] = { isc_dpb_version1 }, *dpb; + if (EG(exception)) { + break; + } + dpb = dpb_buffer + 1; /* loop through all the provided arguments and set dpb fields accordingly */ @@ -1446,7 +1450,7 @@ } } - if (!dbh->methods) { + if (!dbh->methods && !EG(exception)) { char errmsg[512]; const ISC_STATUS *s = H->isc_status; fb_interpret(errmsg, sizeof(errmsg),&s); diff -Nru php8.4-8.4.23/ext/pdo_odbc/odbc_driver.c php8.4-8.4.24/ext/pdo_odbc/odbc_driver.c --- php8.4-8.4.23/ext/pdo_odbc/odbc_driver.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/pdo_odbc/odbc_driver.c 2026-07-29 05:29:50.000000000 +0000 @@ -90,6 +90,8 @@ if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { errmsgsize = 0; + } else if ((size_t) errmsgsize >= sizeof(einfo->last_err_msg)) { + errmsgsize = sizeof(einfo->last_err_msg) - 1; } einfo->last_err_msg[errmsgsize] = '\0'; @@ -601,7 +603,11 @@ dsnbuf, sizeof(dsnbuf)-1, &dsnbuflen, SQL_DRIVER_NOPROMPT); } if (!use_direct) { - rc = SQLConnect(H->dbc, (SQLCHAR *) dbh->data_source, SQL_NTS, (SQLCHAR *) dbh->username, SQL_NTS, (SQLCHAR *) dbh->password, SQL_NTS); + /* unixODBC pooling strcmp()s the credentials when matching a cached + * connection and crashes on a NULL username/password, so pass "". */ + rc = SQLConnect(H->dbc, (SQLCHAR *) dbh->data_source, SQL_NTS, + (SQLCHAR *) (dbh->username ? dbh->username : ""), SQL_NTS, + (SQLCHAR *) (dbh->password ? dbh->password : ""), SQL_NTS); } if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { diff -Nru php8.4-8.4.23/ext/pdo_odbc/odbc_stmt.c php8.4-8.4.24/ext/pdo_odbc/odbc_stmt.c --- php8.4-8.4.23/ext/pdo_odbc/odbc_stmt.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/pdo_odbc/odbc_stmt.c 2026-07-29 05:29:50.000000000 +0000 @@ -360,6 +360,7 @@ param->driver_data = P; P->len = 0; /* is re-populated each EXEC_PRE */ + P->outbuflen = 0; P->outbuf = NULL; P->is_unicode = pdo_odbc_sqltype_is_unicode(S, sqltype); @@ -384,6 +385,7 @@ P->len *= 2; } P->outbuf = emalloc(P->len + (P->is_unicode ? 2:1)); + P->outbuflen = P->len; } } @@ -481,10 +483,16 @@ case PDO_ODBC_CONV_FAIL: case PDO_ODBC_CONV_NOT_REQUIRED: P->len = Z_STRLEN_P(parameter); + if (P->len > P->outbuflen) { + P->len = P->outbuflen; + } memcpy(P->outbuf, Z_STRVAL_P(parameter), P->len); break; case PDO_ODBC_CONV_OK: P->len = ulen; + if (P->len > P->outbuflen) { + P->len = P->outbuflen; + } memcpy(P->outbuf, S->convbuf, P->len); break; } @@ -506,6 +514,9 @@ zval_ptr_dtor(parameter); if (P->len >= 0) { + if (P->len > P->outbuflen) { + P->len = P->outbuflen; + } ZVAL_STRINGL(parameter, P->outbuf, P->len); switch (pdo_odbc_ucs22utf8(stmt, P->is_unicode, parameter)) { case PDO_ODBC_CONV_FAIL: @@ -744,7 +755,14 @@ return 1; } else if (C->fetched_len >= 0) { /* it was stored perfectly */ - ZVAL_STRINGL_FAST(result, C->data, C->fetched_len); + SQLLEN data_len = C->fetched_len; + if (!C->is_long) { + SQLLEN max_len = C->is_unicode ? (SQLLEN)C->datalen + 1 : (SQLLEN)C->datalen; + if (data_len > max_len) { + data_len = max_len; + } + } + ZVAL_STRINGL_FAST(result, C->data, data_len); if (C->is_unicode) { goto unicode_conv; } diff -Nru php8.4-8.4.23/ext/pdo_odbc/php_pdo_odbc_int.h php8.4-8.4.24/ext/pdo_odbc/php_pdo_odbc_int.h --- php8.4-8.4.23/ext/pdo_odbc/php_pdo_odbc_int.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/pdo_odbc/php_pdo_odbc_int.h 2026-07-29 05:29:50.000000000 +0000 @@ -153,6 +153,7 @@ typedef struct { SQLLEN len; + SQLLEN outbuflen; SQLSMALLINT paramtype; char *outbuf; unsigned is_unicode:1; diff -Nru php8.4-8.4.23/ext/pdo_odbc/tests/config.inc php8.4-8.4.24/ext/pdo_odbc/tests/config.inc --- php8.4-8.4.23/ext/pdo_odbc/tests/config.inc 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/pdo_odbc/tests/config.inc 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,3 @@ + +--FILE-- + PDO::ERRMODE_SILENT, +]); + +// A failing query with a long identifier makes the driver report a diagnostic +// message length >= the fixed last_err_msg buffer. The terminator write must +// stay inside the buffer. +$pdo->query('SELECT * FROM "' . str_repeat('A', 4096) . '"'); +$info = $pdo->errorInfo(); + +echo "sqlstate: ", $info[0], "\n"; +echo "done\n"; +?> +--EXPECT-- +sqlstate: HY000 +done diff -Nru php8.4-8.4.23/ext/pdo_odbc/tests/gh22666.phpt php8.4-8.4.24/ext/pdo_odbc/tests/gh22666.phpt --- php8.4-8.4.23/ext/pdo_odbc/tests/gh22666.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/pdo_odbc/tests/gh22666.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,30 @@ +--TEST-- +GH-22666 (Heap buffer overflow when an output param value exceeds its maxlen) +--EXTENSIONS-- +pdo_odbc +--SKIPIF-- + +--FILE-- +prepare('SELECT ?'); +$stmt->bindParam(1, $value, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 4); +$stmt->execute(); + +echo "bounded to maxlen: "; var_dump($value); +?> +--EXPECT-- +bounded to maxlen: string(4) "AAAA" diff -Nru php8.4-8.4.23/ext/pdo_odbc/tests/gh22667.phpt php8.4-8.4.24/ext/pdo_odbc/tests/gh22667.phpt --- php8.4-8.4.23/ext/pdo_odbc/tests/gh22667.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/pdo_odbc/tests/gh22667.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,32 @@ +--TEST-- +GH-22667 (Heap buffer over-read when a column value exceeds the bound buffer) +--EXTENSIONS-- +pdo_odbc +--SKIPIF-- + +--FILE-- +query("SELECT printf('%.*c', 4096, 'A') AS data"); +$row = $stmt->fetch(PDO::FETCH_ASSOC); +$s = $row['data']; + +echo "clamped to buffer: "; var_dump(strlen($s) < 4096); +echo "only value bytes: "; var_dump(strlen($s) === substr_count($s, 'A')); +?> +--EXPECT-- +clamped to buffer: bool(true) +only value bytes: bool(true) diff -Nru php8.4-8.4.23/ext/pgsql/pgsql.c php8.4-8.4.24/ext/pgsql/pgsql.c --- php8.4-8.4.23/ext/pgsql/pgsql.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/pgsql/pgsql.c 2026-07-29 05:29:50.000000000 +0000 @@ -4841,7 +4841,7 @@ */ static zend_string *php_pgsql_add_quotes(zend_string *src) { - return zend_string_concat3("E'", strlen("E'"), ZSTR_VAL(src), ZSTR_LEN(src), "'", strlen("'")); + return zend_string_concat3("'", strlen("'"), ZSTR_VAL(src), ZSTR_LEN(src), "'", strlen("'")); } /* }}} */ @@ -5112,7 +5112,6 @@ zend_string *str; /* PostgreSQL ignores \0 */ str = zend_string_alloc(Z_STRLEN_P(val) * 2, 0); - /* better to use PGSQLescapeLiteral since PGescapeStringConn does not handle special \ */ ZSTR_LEN(str) = PQescapeStringConn(pg_link, ZSTR_VAL(str), Z_STRVAL_P(val), Z_STRLEN_P(val), &escape_err); if (escape_err) { diff -Nru php8.4-8.4.23/ext/pgsql/tests/10pg_convert_9.phpt php8.4-8.4.24/ext/pgsql/tests/10pg_convert_9.phpt --- php8.4-8.4.23/ext/pgsql/tests/10pg_convert_9.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/pgsql/tests/10pg_convert_9.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -24,6 +24,8 @@ var_dump($converted); +var_dump(pg_convert($db, $table_name, ['str' => "\\' OR 1=1"])); + /* Invalid values */ try { $converted = pg_convert($db, $table_name, [5 => 'AAA']); @@ -51,6 +53,10 @@ } catch (\TypeError $e) { echo $e->getMessage(), \PHP_EOL; } + +/* standard_conforming_strings = 1 */ +pg_query($db, "SET standard_conforming_strings = 1"); +var_dump(pg_convert($db, $table_name, ['str' => "\\' OR 1=1"])); ?> --CLEAN-- string(4) "1234" [""str""]=> - string(6) "E'AAA'" + string(5) "'AAA'" [""bin""]=> - string(12) "E'\\x424242'" + string(11) "'\\x424242'" +} +array(1) { + [""str""]=> + string(13) "'\\'' OR 1=1'" } Array of values must be an associative array with string keys Array of values must be an associative array with string keys Values must be of type string|int|float|bool|null, array given Values must be of type string|int|float|bool|null, stdClass given Values must be of type string|int|float|bool|null, PgSql\Connection given +array(1) { + [""str""]=> + string(12) "'\'' OR 1=1'" +} diff -Nru php8.4-8.4.23/ext/pgsql/tests/10pg_convert_json_array.phpt php8.4-8.4.24/ext/pgsql/tests/10pg_convert_json_array.phpt --- php8.4-8.4.23/ext/pgsql/tests/10pg_convert_json_array.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/pgsql/tests/10pg_convert_json_array.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -42,8 +42,8 @@ --EXPECT-- array(2) { [""textary""]=> - string(51) "E'{"meeting", "lunch", "training", "presentation"}'" + string(50) "'{"meeting", "lunch", "training", "presentation"}'" [""jsn""]=> - string(22) "E'{"f1":1,"f2":"foo"}'" + string(21) "'{"f1":1,"f2":"foo"}'" } OK diff -Nru php8.4-8.4.23/ext/pgsql/tests/12pg_insert_9.phpt php8.4-8.4.24/ext/pgsql/tests/12pg_insert_9.phpt --- php8.4-8.4.23/ext/pgsql/tests/12pg_insert_9.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/pgsql/tests/12pg_insert_9.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -65,7 +65,7 @@ pg_query($db, "DROP TABLE IF EXISTS {$table_name}"); ?> --EXPECTF-- -INSERT INTO "table_12pg_insert_9" ("num","str","bin") VALUES (1234,E'AAA',E'\\x424242'); +INSERT INTO "table_12pg_insert_9" ("num","str","bin") VALUES (1234,'AAA','\\x424242'); INSERT INTO "table_12pg_insert_9" ("num","str","bin") VALUES ('1234','AAA','BBB'); object(PgSql\Result)#%d (0) { } diff -Nru php8.4-8.4.23/ext/pgsql/tests/14pg_update_9.phpt php8.4-8.4.24/ext/pgsql/tests/14pg_update_9.phpt --- php8.4-8.4.23/ext/pgsql/tests/14pg_update_9.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/pgsql/tests/14pg_update_9.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -39,6 +39,6 @@ pg_query($db, "DROP TABLE IF EXISTS {$table_name}"); ?> --EXPECT-- -UPDATE "table_14pg_update_9" SET "num"=1234,"str"=E'ABC',"bin"=E'\\x58595a' WHERE "num"=1234; +UPDATE "table_14pg_update_9" SET "num"=1234,"str"='ABC',"bin"='\\x58595a' WHERE "num"=1234; UPDATE "table_14pg_update_9" SET "num"='1234',"str"='ABC',"bin"='XYZ' WHERE "num"='1234'; Ok diff -Nru php8.4-8.4.23/ext/pgsql/tests/GHSA-7qpv-r5mr-78m4.phpt php8.4-8.4.24/ext/pgsql/tests/GHSA-7qpv-r5mr-78m4.phpt --- php8.4-8.4.23/ext/pgsql/tests/GHSA-7qpv-r5mr-78m4.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/pgsql/tests/GHSA-7qpv-r5mr-78m4.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,58 @@ +--TEST-- +GHSA-7qpv-r5mr-78m4: SQL injection via E'...' backslash breakout +--CREDITS-- +expatch.llc +--EXTENSIONS-- +pgsql +--SKIPIF-- + +--FILE-- + "zzz' OR 1=1 --"]; +echo pg_select($db, 'ghsa_7qpv_r5mr_78m4', $params, PGSQL_DML_STRING) . "\n"; +printf("returned: %d\n\n", count(pg_select($db, 'ghsa_7qpv_r5mr_78m4', $params))); + +$params = ['name' => "zzz\\' OR 1=1 --"]; +echo pg_select($db, 'ghsa_7qpv_r5mr_78m4', $params, PGSQL_DML_STRING) . "\n"; +printf("returned: %d\n\n", count(pg_select($db, 'ghsa_7qpv_r5mr_78m4', $params))); + +$params = ['name' => "john\\', true) --", 'admin' => 'false']; +echo pg_insert($db, 'ghsa_7qpv_r5mr_78m4', $params, PGSQL_DML_STRING) . "\n"; +pg_insert($db, 'ghsa_7qpv_r5mr_78m4', $params); +var_dump(pg_select($db, 'ghsa_7qpv_r5mr_78m4', ['id' => 3])[0]['admin']); +echo "\n"; + +$params = ['name' => "jake\\', true) --", 'admin' => 'f']; +echo pg_insert($db, 'ghsa_7qpv_r5mr_78m4', $params, PGSQL_DML_ESCAPE|PGSQL_DML_STRING) . "\n"; +pg_insert($db, 'ghsa_7qpv_r5mr_78m4', $params, PGSQL_DML_EXEC|PGSQL_DML_ESCAPE); +var_dump(pg_select($db, 'ghsa_7qpv_r5mr_78m4', ['id' => 4])[0]['admin']); + +?> +--EXPECT-- +SELECT * FROM "ghsa_7qpv_r5mr_78m4" WHERE "name"='zzz'' OR 1=1 --'; +returned: 0 + +SELECT * FROM "ghsa_7qpv_r5mr_78m4" WHERE "name"='zzz\'' OR 1=1 --'; +returned: 0 + +INSERT INTO "ghsa_7qpv_r5mr_78m4" ("name","admin") VALUES ('john\'', true) --','f'); +string(1) "f" + +INSERT INTO "ghsa_7qpv_r5mr_78m4" ("name","admin") VALUES ('jake\'', true) --','f'); +string(1) "f" +--CLEAN-- + diff -Nru php8.4-8.4.23/ext/pgsql/tests/bug64609.phpt php8.4-8.4.24/ext/pgsql/tests/bug64609.phpt --- php8.4-8.4.23/ext/pgsql/tests/bug64609.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/pgsql/tests/bug64609.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -30,5 +30,5 @@ --EXPECT-- array(1) { [""a""]=> - string(5) "E'ok'" + string(4) "'ok'" } diff -Nru php8.4-8.4.23/ext/pgsql/tests/bug68638.phpt php8.4-8.4.24/ext/pgsql/tests/bug68638.phpt --- php8.4-8.4.23/ext/pgsql/tests/bug68638.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/pgsql/tests/bug68638.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -41,7 +41,7 @@ pg_query($conn, "DROP TABLE IF EXISTS $table"); ?> --EXPECT-- -string(52) "UPDATE "test_68638" SET "value"=E'inf' WHERE "id"=1;" +string(51) "UPDATE "test_68638" SET "value"='inf' WHERE "id"=1;" array(2) { ["id"]=> string(1) "1" diff -Nru php8.4-8.4.23/ext/phar/dirstream.c php8.4-8.4.24/ext/phar/dirstream.c --- php8.4-8.4.23/ext/phar/dirstream.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/phar/dirstream.c 2026-07-29 05:29:50.000000000 +0000 @@ -178,7 +178,7 @@ ALLOC_HASHTABLE(data); zend_hash_init(data, 64, NULL, NULL, 0); - if ((*dir == '/' && dirlen == 1 && (manifest->nNumOfElements == 0)) || (dirlen >= sizeof(".phar")-1 && !memcmp(dir, ".phar", sizeof(".phar")-1))) { + if ((*dir == '/' && dirlen == 1 && (manifest->nNumOfElements == 0)) || phar_path_is_magic_phar_ex(dir, dirlen)) { /* make empty root directory for empty phar */ /* make empty directory for .phar magic directory */ efree(dir); @@ -204,7 +204,7 @@ if (*dir == '/') { /* root directory */ - if (keylen >= sizeof(".phar")-1 && !memcmp(ZSTR_VAL(str_key), ".phar", sizeof(".phar")-1)) { + if (phar_is_magic_phar(str_key)) { /* do not add any magic entries to this directory */ if (SUCCESS != zend_hash_move_forward(manifest)) { break; diff -Nru php8.4-8.4.23/ext/phar/phar_internal.h php8.4-8.4.24/ext/phar/phar_internal.h --- php8.4-8.4.23/ext/phar/phar_internal.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/phar/phar_internal.h 2026-07-29 05:29:50.000000000 +0000 @@ -381,6 +381,31 @@ } /* }}} */ +static inline bool phar_path_is_magic_phar_ex(const char *path, size_t path_len) /* {{{ */ +{ + if (path_len > 0 && path[0] == '/') { + path++; + path_len--; + } + + if (path_len < sizeof(".phar") - 1 || memcmp(path, ".phar", sizeof(".phar") - 1) != 0) { + return false; + } + + if (path_len == sizeof(".phar") - 1) { + return true; + } + + return path[sizeof(".phar") - 1] == '/' || path[sizeof(".phar") - 1] == '\\'; +} +/* }}} */ + +static inline bool phar_is_magic_phar(const zend_string *path) /* {{{ */ +{ + return phar_path_is_magic_phar_ex(ZSTR_VAL(path), ZSTR_LEN(path)); +} +/* }}} */ + static inline void phar_set_inode(phar_entry_info *entry) /* {{{ */ { char tmp[MAXPATHLEN]; diff -Nru php8.4-8.4.23/ext/phar/phar_object.c php8.4-8.4.24/ext/phar/phar_object.c --- php8.4-8.4.23/ext/phar/phar_object.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/phar/phar_object.c 2026-07-29 05:29:50.000000000 +0000 @@ -1619,7 +1619,7 @@ return ZEND_HASH_APPLY_STOP; } after_open_fp: - if (str_key_len >= sizeof(".phar")-1 && !memcmp(str_key, ".phar", sizeof(".phar")-1)) { + if (phar_path_is_magic_phar_ex(str_key, str_key_len)) { /* silently skip any files that would be added to the magic .phar directory */ if (save) { efree(save); @@ -3468,14 +3468,14 @@ RETURN_THROWS(); } - if (zend_string_starts_with_literal(old_file, ".phar")) { + if (phar_is_magic_phar(old_file)) { /* can't copy a meta file */ zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0, "file \"%s\" cannot be copied to file \"%s\", cannot copy Phar meta-file in %s", ZSTR_VAL(old_file), ZSTR_VAL(new_file), phar_obj->archive->fname); RETURN_THROWS(); } - if (zend_string_starts_with_literal(new_file, ".phar")) { + if (phar_is_magic_phar(new_file)) { /* can't copy a meta file */ zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0, "file \"%s\" cannot be copied to file \"%s\", cannot copy to Phar meta-file in %s", ZSTR_VAL(old_file), ZSTR_VAL(new_file), phar_obj->archive->fname); @@ -3562,11 +3562,8 @@ } } - if (zend_string_starts_with_literal(file_name, ".phar")) { - /* none of these are real files, so they don't exist */ - RETURN_FALSE; - } - RETURN_TRUE; + /* none of these are real files, so they don't exist */ + RETURN_BOOL(!phar_is_magic_phar(file_name)); } else { /* If the info class is not based on PharFileInfo, directories are not directly instantiable */ if (UNEXPECTED(!instanceof_function(phar_obj->spl.info_class, phar_ce_entry))) { @@ -3609,7 +3606,7 @@ RETURN_THROWS(); } - if (zend_string_starts_with_literal(file_name, ".phar")) { + if (phar_is_magic_phar(file_name)) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Cannot directly get any files or directories in magic \".phar\" directory"); RETURN_THROWS(); } @@ -3640,16 +3637,9 @@ ALLOCA_FLAG(filename_use_heap) #endif - if ( - zend_string_starts_with_literal(file_name, ".phar") - || zend_string_starts_with_literal(file_name, "/.phar") - ) { - size_t prefix_len = (ZSTR_VAL(file_name)[0] == '/') + sizeof(".phar")-1; - char next_char = ZSTR_VAL(file_name)[prefix_len]; - if (next_char == '/' || next_char == '\\' || next_char == '\0') { - zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Cannot create any files in magic \".phar\" directory"); - return; - } + if (phar_is_magic_phar(file_name)) { + zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Cannot create any files in magic \".phar\" directory"); + return; } /* TODO How to handle Windows path normalisation with zend_string ? */ @@ -3796,7 +3786,7 @@ RETURN_THROWS(); } - if (zend_string_starts_with_literal(file_name, ".phar")) { + if (phar_is_magic_phar(file_name)) { zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Cannot set any files or directories in magic \".phar\" directory"); RETURN_THROWS(); } @@ -3863,16 +3853,9 @@ PHAR_ARCHIVE_OBJECT(); - if ( - zend_string_starts_with_literal(dir_name, ".phar") - || zend_string_starts_with_literal(dir_name, "/.phar") - ) { - size_t prefix_len = (ZSTR_VAL(dir_name)[0] == '/') + sizeof(".phar")-1; - char next_char = ZSTR_VAL(dir_name)[prefix_len]; - if (next_char == '/' || next_char == '\\' || next_char == '\0') { - zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Cannot create a directory in magic \".phar\" directory"); - RETURN_THROWS(); - } + if (phar_is_magic_phar(dir_name)) { + zend_throw_exception_ex(spl_ce_BadMethodCallException, 0, "Cannot create a directory in magic \".phar\" directory"); + RETURN_THROWS(); } phar_mkdir(&phar_obj->archive, dir_name); @@ -4178,7 +4161,7 @@ return SUCCESS; } - if (entry->filename_len >= sizeof(".phar")-1 && !memcmp(entry->filename, ".phar", sizeof(".phar")-1)) { + if (phar_path_is_magic_phar_ex(entry->filename, entry->filename_len)) { return SUCCESS; } /* strip .. from path and restrict it to be under dest directory */ diff -Nru php8.4-8.4.23/ext/phar/tests/phar_magic_dir_prefix.phpt php8.4-8.4.24/ext/phar/tests/phar_magic_dir_prefix.phpt --- php8.4-8.4.23/ext/phar/tests/phar_magic_dir_prefix.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/phar/tests/phar_magic_dir_prefix.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,80 @@ +--TEST-- +Phar: .phar-prefixed non-magic directories are accessible +--EXTENSIONS-- +phar +--INI-- +phar.readonly=0 +phar.require_hash=0 +--FILE-- +addFromString('.pharx/from-string.txt', 'from-string'); +$phar->addFromString('/.phary/leading.txt', 'leading'); +$phar->copy('.pharx/array.txt', '.pharx/copy.txt'); + +var_dump(isset($phar['.pharx/array.txt'])); +echo $phar['.pharx/array.txt']->getContent(), "\n"; +echo file_get_contents($pname . '/.pharx/from-string.txt'), "\n"; +echo file_get_contents($pname . '/.phary/leading.txt'), "\n"; +echo file_get_contents($pname . '/.pharx/copy.txt'), "\n"; + +$root = []; +$dh = opendir($pname . '/'); +while (false !== ($entry = readdir($dh))) { + $root[] = $entry; +} +closedir($dh); +sort($root); +var_dump($root); + +$subdir = []; +$dh = opendir($pname . '/.pharx'); +while (false !== ($entry = readdir($dh))) { + $subdir[] = $entry; +} +closedir($dh); +sort($subdir); +var_dump($subdir); + +try { + $phar->addFromString('.phar/still-magic.txt', 'no'); +} catch (Throwable $e) { + echo $e->getMessage(), "\n"; +} + +try { + $phar->addEmptyDir('/.phar'); +} catch (Throwable $e) { + echo $e->getMessage(), "\n"; +} +?> +--CLEAN-- + +--EXPECT-- +bool(true) +array +from-string +leading +array +array(2) { + [0]=> + string(6) ".pharx" + [1]=> + string(6) ".phary" +} +array(3) { + [0]=> + string(9) "array.txt" + [1]=> + string(8) "copy.txt" + [2]=> + string(15) "from-string.txt" +} +Cannot create any files in magic ".phar" directory +Cannot create a directory in magic ".phar" directory Binary files /srv/release.debian.org/tmp/TXEvuHJsP_/php8.4-8.4.23/ext/phar/tests/tar/files/circular_symlinks.tar and /srv/release.debian.org/tmp/cVq9930oF0/php8.4-8.4.24/ext/phar/tests/tar/files/circular_symlinks.tar differ Binary files /srv/release.debian.org/tmp/TXEvuHJsP_/php8.4-8.4.23/ext/phar/tests/tar/files/circular_symlinks_long.tar and /srv/release.debian.org/tmp/cVq9930oF0/php8.4-8.4.24/ext/phar/tests/tar/files/circular_symlinks_long.tar differ Binary files /srv/release.debian.org/tmp/TXEvuHJsP_/php8.4-8.4.23/ext/phar/tests/tar/files/circular_symlinks_rho.tar and /srv/release.debian.org/tmp/cVq9930oF0/php8.4-8.4.24/ext/phar/tests/tar/files/circular_symlinks_rho.tar differ diff -Nru php8.4-8.4.23/ext/phar/tests/tar/ghsa-vc5h-9ppw-p5f3-symlink-circular.phpt php8.4-8.4.24/ext/phar/tests/tar/ghsa-vc5h-9ppw-p5f3-symlink-circular.phpt --- php8.4-8.4.23/ext/phar/tests/tar/ghsa-vc5h-9ppw-p5f3-symlink-circular.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/phar/tests/tar/ghsa-vc5h-9ppw-p5f3-symlink-circular.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +GHSA-vc5h-9ppw-p5f3 (circular symlinks in tar should not cause stack overflow) +--CREDITS-- +Calvin Young - eWalker Consulting (HK) Limited +Enoch Chow - Isomorph Cyber +--EXTENSIONS-- +phar +--FILE-- +getContent() === ''); + +// rho-shaped cycle (tail leading into a loop) +$phar = new PharData($base . '/files/circular_symlinks_rho.tar'); +var_dump($phar['file_a']->getContent() === ''); + +// long cycle (400 entries) +$phar = new PharData($base . '/files/circular_symlinks_long.tar'); +var_dump($phar['link_0']->getContent() === ''); +?> +--EXPECT-- +bool(true) +bool(true) +bool(true) diff -Nru php8.4-8.4.23/ext/phar/tests/zip/zip_extra_underflow.phpt php8.4-8.4.24/ext/phar/tests/zip/zip_extra_underflow.phpt --- php8.4-8.4.23/ext/phar/tests/zip/zip_extra_underflow.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/phar/tests/zip/zip_extra_underflow.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,91 @@ +--TEST-- +Phar: ZIP extra field length must not underflow +--EXTENSIONS-- +phar +--FILE-- +getMTime(), "\n"; +} catch (Exception $e) { + echo $e->getMessage(), "\n"; +} +?> +--CLEAN-- + +--EXPECTF-- +phar error: Unable to process extra field header for file in central directory in zip-based phar "%szip_extra_underflow.zip" diff -Nru php8.4-8.4.23/ext/phar/util.c php8.4-8.4.24/ext/phar/util.c --- php8.4-8.4.23/ext/phar/util.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/phar/util.c 2026-07-29 05:29:50.000000000 +0000 @@ -60,40 +60,59 @@ } /* }}} */ -phar_entry_info *phar_get_link_source(phar_entry_info *entry) /* {{{ */ +static phar_entry_info *phar_follow_one_link(phar_entry_info *entry) { phar_entry_info *link_entry; char *link; - uint32_t depth = 0, max_depth; + + link = phar_get_link_location(entry); + if (NULL != (link_entry = zend_hash_str_find_ptr(&(entry->phar->manifest), entry->link, strlen(entry->link))) || + NULL != (link_entry = zend_hash_str_find_ptr(&(entry->phar->manifest), link, strlen(link)))) { + if (link != entry->link) { + efree(link); + } + return link_entry; + } + + if (link != entry->link) { + efree(link); + } + return NULL; +} + +phar_entry_info *phar_get_link_source(phar_entry_info *entry) +{ + phar_entry_info *slow, *fast; if (!entry->link) { return entry; } - max_depth = zend_hash_num_elements(&(entry->phar->manifest)); - - while (entry->link) { - if (UNEXPECTED(++depth > max_depth)) { - return NULL; + /* + * Use Floyd's cycle detection algorithm to follow the symlink chain without unbounded + * recursion. Each entry has at most one outgoing link, so if a cycle exists the fast pointer + * will eventually meet the slow one. Otherwise the fast pointer reaches the end first. + */ + slow = fast = entry; + while (1) { + fast = phar_follow_one_link(fast); + if (!fast || !fast->link) { + return fast; + } + fast = phar_follow_one_link(fast); + if (!fast || !fast->link) { + return fast; } - link = phar_get_link_location(entry); - if (NULL != (link_entry = zend_hash_str_find_ptr(&(entry->phar->manifest), entry->link, strlen(entry->link))) || - NULL != (link_entry = zend_hash_str_find_ptr(&(entry->phar->manifest), link, strlen(link)))) { - if (link != entry->link) { - efree(link); - } - entry = link_entry; - } else { - if (link != entry->link) { - efree(link); - } + /* no need to check slow as it's always behind */ + slow = phar_follow_one_link(slow); + + if (slow == fast) { + /* circular symlink chain */ return NULL; } } - return entry; } -/* }}} */ static php_stream *phar_get_entrypufp(const phar_entry_info *entry) { @@ -208,7 +227,7 @@ return FAILURE; } - if (path_len >= sizeof(".phar")-1 && !memcmp(path, ".phar", sizeof(".phar")-1)) { + if (phar_path_is_magic_phar_ex(path, path_len)) { /* no creating magic phar files by mounting them */ return FAILURE; } @@ -1290,7 +1309,7 @@ *error = NULL; } - if (security && path_len >= sizeof(".phar")-1 && !memcmp(path, ".phar", sizeof(".phar")-1)) { + if (security && phar_path_is_magic_phar_ex(path, path_len)) { if (error) { spprintf(error, 4096, "phar error: cannot directly access magic \".phar\" directory or files within it"); } diff -Nru php8.4-8.4.23/ext/phar/zip.c php8.4-8.4.24/ext/phar/zip.c --- php8.4-8.4.23/ext/phar/zip.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/phar/zip.c 2026-07-29 05:29:50.000000000 +0000 @@ -41,19 +41,30 @@ # define PHAR_SET_32(var, value) phar_write_32(var, (uint32_t) (value)); # define PHAR_SET_16(var, value) phar_write_16(var, (uint16_t) (value)); -static int phar_zip_process_extra(php_stream *fp, phar_entry_info *entry, uint16_t len) /* {{{ */ +static int phar_zip_process_extra(php_stream *fp, phar_entry_info *entry, uint16_t extra_len) /* {{{ */ { union { phar_zip_extra_field_header header; phar_zip_unix3 unix3; phar_zip_unix_time time; } h; + size_t len = extra_len; size_t read; - do { + while (len) { + size_t header_size; + + if (len < sizeof(h.header)) { + return FAILURE; + } if (sizeof(h.header) != php_stream_read(fp, (char *) &h.header, sizeof(h.header))) { return FAILURE; } + len -= sizeof(h.header); + header_size = PHAR_GET_16(h.header.size); + if (header_size > len) { + return FAILURE; + } if (h.header.tag[0] == 'U' && h.header.tag[1] == 'T') { /* Unix timestamp header found. @@ -62,7 +73,6 @@ * We only store the modification time in the entry, so only read that. */ const size_t min_size = 5; - uint16_t header_size = PHAR_GET_16(h.header.size); if (header_size >= min_size) { read = php_stream_read(fp, &h.time.flags, min_size); if (read != min_size) { @@ -73,12 +83,11 @@ entry->timestamp = PHAR_GET_32(h.time.time); } - len -= header_size + 4; - /* Consume remaining bytes */ - if (header_size != read) { - php_stream_seek(fp, header_size - read, SEEK_CUR); + if (header_size != read && -1 == php_stream_seek(fp, header_size - read, SEEK_CUR)) { + return FAILURE; } + len -= header_size; continue; } /* Fallthrough to next if to skip header */ @@ -86,23 +95,36 @@ if (h.header.tag[0] != 'n' || h.header.tag[1] != 'u') { /* skip to next header */ - php_stream_seek(fp, PHAR_GET_16(h.header.size), SEEK_CUR); - len -= PHAR_GET_16(h.header.size) + 4; + if (header_size && -1 == php_stream_seek(fp, header_size, SEEK_CUR)) { + return FAILURE; + } + len -= header_size; continue; } /* unix3 header found */ - read = php_stream_read(fp, (char *) &(h.unix3.crc32), sizeof(h.unix3) - sizeof(h.header)); - len -= read + 4; + size_t unix3_size = sizeof(h.unix3) - sizeof(h.header); + size_t field_size = header_size; + if (field_size == unix3_size - sizeof(h.unix3.crc32)) { + /* Some archives omit the CRC32 from the unix3 size field. */ + field_size = unix3_size; + } + if (field_size < unix3_size || field_size > len) { + return FAILURE; + } - if (sizeof(h.unix3) - sizeof(h.header) != read) { + read = php_stream_read(fp, (char *) &(h.unix3.crc32), unix3_size); + if (unix3_size != read) { return FAILURE; } - if (PHAR_GET_16(h.unix3.size) > sizeof(h.unix3) - 4) { + if (field_size > unix3_size) { /* skip symlink filename - we may add this support in later */ - php_stream_seek(fp, PHAR_GET_16(h.unix3.size) - sizeof(h.unix3.size), SEEK_CUR); + if (-1 == php_stream_seek(fp, field_size - unix3_size, SEEK_CUR)) { + return FAILURE; + } } + len -= field_size; /* set permissions */ entry->flags &= PHAR_ENT_COMPRESSION_MASK; @@ -113,7 +135,7 @@ entry->flags |= PHAR_GET_16(h.unix3.perms) & PHAR_ENT_PERM_MASK; } - } while (len); + } return SUCCESS; } diff -Nru php8.4-8.4.23/ext/posix/posix.c php8.4-8.4.24/ext/posix/posix.c --- php8.4-8.4.23/ext/posix/posix.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/posix/posix.c 2026-07-29 05:29:50.000000000 +0000 @@ -669,7 +669,11 @@ array_init(&array_members); - add_assoc_string(array_group, "name", g->gr_name); + if (g->gr_name) { + add_assoc_string(array_group, "name", g->gr_name); + } else { + add_assoc_null(array_group, "name"); + } if (g->gr_passwd) { add_assoc_string(array_group, "passwd", g->gr_passwd); } else { @@ -910,13 +914,33 @@ if (NULL == return_value || Z_TYPE_P(return_value) != IS_ARRAY) return 0; - add_assoc_string(return_value, "name", pw->pw_name); - add_assoc_string(return_value, "passwd", pw->pw_passwd); - add_assoc_long (return_value, "uid", pw->pw_uid); - add_assoc_long (return_value, "gid", pw->pw_gid); - add_assoc_string(return_value, "gecos", pw->pw_gecos); - add_assoc_string(return_value, "dir", pw->pw_dir); - add_assoc_string(return_value, "shell", pw->pw_shell); + if (pw->pw_name) { + add_assoc_string(return_value, "name", pw->pw_name); + } else { + add_assoc_null(return_value, "name"); + } + if (pw->pw_passwd) { + add_assoc_string(return_value, "passwd", pw->pw_passwd); + } else { + add_assoc_null(return_value, "passwd"); + } + add_assoc_long(return_value, "uid", pw->pw_uid); + add_assoc_long(return_value, "gid", pw->pw_gid); + if (pw->pw_gecos) { + add_assoc_string(return_value, "gecos", pw->pw_gecos); + } else { + add_assoc_null(return_value, "gecos"); + } + if (pw->pw_dir) { + add_assoc_string(return_value, "dir", pw->pw_dir); + } else { + add_assoc_null(return_value, "dir"); + } + if (pw->pw_shell) { + add_assoc_string(return_value, "shell", pw->pw_shell); + } else { + add_assoc_null(return_value, "shell"); + } return 1; } /* }}} */ diff -Nru php8.4-8.4.23/ext/reflection/php_reflection.c php8.4-8.4.24/ext/reflection/php_reflection.c --- php8.4-8.4.23/ext/reflection/php_reflection.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/reflection/php_reflection.c 2026-07-29 05:29:50.000000000 +0000 @@ -308,9 +308,9 @@ } /* }}} */ -static void _const_string(smart_str *str, const char *name, zval *value, const char *indent); +static void _const_string(smart_str *str, const zend_string *name, zval *value, const char *indent); static void _function_string(smart_str *str, zend_function *fptr, zend_class_entry *scope, const char* indent); -static void _property_string(smart_str *str, zend_property_info *prop, const char *prop_name, const char* indent); +static void _property_string(smart_str *str, zend_property_info *prop, const zend_string *prop_name, const char* indent); static void _class_const_string(smart_str *str, const zend_string *name, zend_class_constant *c, const char* indent); static void _class_string(smart_str *str, zend_class_entry *ce, zval *obj, const char *indent); static void _extension_string(smart_str *str, const zend_module_entry *module, const char *indent); @@ -324,7 +324,8 @@ /* TBD: Repair indenting of doc comment (or is this to be done in the parser?) */ if (ce->doc_comment) { - smart_str_append_printf(str, "%s%s", indent, ZSTR_VAL(ce->doc_comment)); + smart_str_appends(str, indent); + smart_str_append(str, ce->doc_comment); smart_str_appendc(str, '\n'); } @@ -494,7 +495,7 @@ if (prop_name && ZSTR_LEN(prop_name) && ZSTR_VAL(prop_name)[0]) { /* skip all private and protected properties */ if (!zend_hash_exists(&ce->properties_info, prop_name)) { count++; - _property_string(&prop_str, NULL, ZSTR_VAL(prop_name), ZSTR_VAL(sub_indent)); + _property_string(&prop_str, NULL, prop_name, ZSTR_VAL(sub_indent)); } } } ZEND_HASH_FOREACH_END(); @@ -549,7 +550,7 @@ /* }}} */ /* {{{ _const_string */ -static void _const_string(smart_str *str, const char *name, zval *value, const char *indent) +static void _const_string(smart_str *str, const zend_string *name, zval *value, const char *indent) { const char *type = zend_zval_type_name(value); uint32_t flags = Z_CONSTANT_FLAGS_P(value); @@ -579,13 +580,13 @@ smart_str_appends(str, type); smart_str_appendc(str, ' '); - smart_str_appends(str, name); + smart_str_append(str, name); smart_str_appends(str, " ] { "); if (Z_TYPE_P(value) == IS_ARRAY) { smart_str_append(str, ZSTR_KNOWN(ZEND_STR_ARRAY_CAPITALIZED)); } else if (Z_TYPE_P(value) == IS_STRING) { - smart_str_appends(str, Z_STRVAL_P(value)); + smart_str_append(str, Z_STR_P(value)); } else { zend_string *tmp_value_str; zend_string *value_str = zval_get_tmp_string(value, &tmp_value_str); @@ -610,7 +611,9 @@ const char *type = type_str ? ZSTR_VAL(type_str) : zend_zval_type_name(&c->value); if (c->doc_comment) { - smart_str_append_printf(str, "%s%s\n", indent, ZSTR_VAL(c->doc_comment)); + smart_str_appends(str, indent); + smart_str_append(str, c->doc_comment); + smart_str_appendc(str, '\n'); } smart_str_append_printf(str, "%sConstant [ %s%s %s %s ] { ", indent, final, visibility, type, ZSTR_VAL(name)); @@ -827,9 +830,13 @@ * swallowed, leading to an unaligned comment. */ if (fptr->type == ZEND_USER_FUNCTION && fptr->op_array.doc_comment) { - smart_str_append_printf(str, "%s%s\n", indent, ZSTR_VAL(fptr->op_array.doc_comment)); + smart_str_appends(str, indent); + smart_str_append(str, fptr->op_array.doc_comment); + smart_str_appendc(str, '\n'); } else if (fptr->type == ZEND_INTERNAL_FUNCTION && fptr->internal_function.doc_comment) { - smart_str_append_printf(str, "%s%s\n", indent, ZSTR_VAL(fptr->internal_function.doc_comment)); + smart_str_appends(str, indent); + smart_str_append(str, fptr->internal_function.doc_comment); + smart_str_appendc(str, '\n'); } smart_str_appendl(str, indent, strlen(indent)); @@ -939,14 +946,18 @@ } /* {{{ _property_string */ -static void _property_string(smart_str *str, zend_property_info *prop, const char *prop_name, const char* indent) +static void _property_string(smart_str *str, zend_property_info *prop, const zend_string *prop_name, const char* indent) { if (prop && prop->doc_comment) { - smart_str_append_printf(str, "%s%s\n", indent, ZSTR_VAL(prop->doc_comment)); + smart_str_appends(str, indent); + smart_str_append(str, prop->doc_comment); + smart_str_appendc(str, '\n'); } smart_str_append_printf(str, "%sProperty [ ", indent); if (!prop) { - smart_str_append_printf(str, " public $%s", prop_name); + ZEND_ASSERT(prop_name && "Properties without info must have a name provided"); + smart_str_appends(str, " public $"); + smart_str_append(str, prop_name); } else { if (prop->flags & ZEND_ACC_ABSTRACT) { smart_str_appends(str, "abstract "); @@ -989,11 +1000,15 @@ smart_str_appendc(str, ' '); zend_string_release(type_str); } + smart_str_appendc(str, '$'); if (!prop_name) { const char *class_name; - zend_unmangle_property_name(prop->name, &class_name, &prop_name); + const char *prop_name_cstr; + zend_unmangle_property_name(prop->name, &class_name, &prop_name_cstr); + smart_str_appends(str, prop_name_cstr); + } else { + smart_str_append(str, prop_name); } - smart_str_append_printf(str, "$%s", prop_name); zval *default_value = property_get_default(prop); if (default_value && !Z_ISUNDEF_P(default_value)) { @@ -1031,9 +1046,21 @@ } smart_str_appends(str, "> ]\n"); - smart_str_append_printf(str, " %s Current = '%s'\n", indent, ini_entry->value ? ZSTR_VAL(ini_entry->value) : ""); + if (ini_entry->value) { + smart_str_append_printf(str, " %s Current = '", indent); + smart_str_append(str, ini_entry->value); + smart_str_appends(str, "'\n"); + } else { + smart_str_append_printf(str, " %s Current = ''\n", indent); + } if (ini_entry->modified) { - smart_str_append_printf(str, " %s Default = '%s'\n", indent, ini_entry->orig_value ? ZSTR_VAL(ini_entry->orig_value) : ""); + if (ini_entry->orig_value) { + smart_str_append_printf(str, " %s Default = '", indent); + smart_str_append(str, ini_entry->orig_value); + smart_str_appends(str, "'\n"); + } else { + smart_str_append_printf(str, " %s Default = ''\n", indent); + } } smart_str_append_printf(str, " %s}\n", indent); } @@ -1122,7 +1149,7 @@ ZEND_HASH_MAP_FOREACH_PTR(EG(zend_constants), constant) { if (ZEND_CONSTANT_MODULE_NUMBER(constant) == module->module_number) { - _const_string(&str_constants, ZSTR_VAL(constant->name), &constant->value, " "); + _const_string(&str_constants, constant->name, &constant->value, " "); num_constants++; } } ZEND_HASH_FOREACH_END(); @@ -2480,9 +2507,20 @@ switch (Z_TYPE_P(reference)) { case IS_STRING: { - zend_string *lcname = zend_string_tolower(Z_STR_P(reference)); - fptr = zend_hash_find_ptr(EG(function_table), lcname); - zend_string_release(lcname); + zend_string *fname = Z_STR_P(reference); + zend_string *lcname; + if (UNEXPECTED(ZSTR_VAL(fname)[0] == '\\')) { + /* Ignore leading "\" */ + ALLOCA_FLAG(use_heap) + ZSTR_ALLOCA_ALLOC(lcname, ZSTR_LEN(fname) - 1, use_heap); + zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(fname) + 1, ZSTR_LEN(fname) - 1); + fptr = zend_fetch_function(lcname); + ZSTR_ALLOCA_FREE(lcname, use_heap); + } else { + lcname = zend_string_tolower(fname); + fptr = zend_fetch_function(lcname); + zend_string_release(lcname); + } if (!fptr) { zend_throw_exception_ex(reflection_exception_ptr, 0, "Function %s() does not exist", Z_STRVAL_P(reference)); @@ -4688,19 +4726,17 @@ } GET_REFLECTION_OBJECT_PTR(ce); - if ((property_info = zend_hash_find_ptr(&ce->properties_info, name)) != NULL) { - if ((property_info->flags & ZEND_ACC_PRIVATE) && property_info->ce != ce) { - RETURN_FALSE; - } + if ((property_info = zend_hash_find_ptr(&ce->properties_info, name)) != NULL + && (!(property_info->flags & ZEND_ACC_PRIVATE) + || property_info->ce == ce)) { RETURN_TRUE; - } else { - if (Z_TYPE(intern->obj) != IS_UNDEF) { - if (Z_OBJ_HANDLER(intern->obj, has_property)(Z_OBJ(intern->obj), name, 2, NULL)) { - RETURN_TRUE; - } + } + if (Z_TYPE(intern->obj) != IS_UNDEF) { + if (Z_OBJ_HANDLER(intern->obj, has_property)(Z_OBJ(intern->obj), name, 2, NULL)) { + RETURN_TRUE; } - RETURN_FALSE; } + RETURN_FALSE; } /* }}} */ @@ -4719,12 +4755,13 @@ } GET_REFLECTION_OBJECT_PTR(ce); - if ((property_info = zend_hash_find_ptr(&ce->properties_info, name)) != NULL) { - if (!(property_info->flags & ZEND_ACC_PRIVATE) || property_info->ce == ce) { - reflection_property_factory(ce, name, property_info, return_value); - return; - } - } else if (Z_TYPE(intern->obj) != IS_UNDEF) { + if ((property_info = zend_hash_find_ptr(&ce->properties_info, name)) != NULL + && (!(property_info->flags & ZEND_ACC_PRIVATE) + || property_info->ce == ce)) { + reflection_property_factory(ce, name, property_info, return_value); + return; + } + if (Z_TYPE(intern->obj) != IS_UNDEF) { /* Check for dynamic properties */ if (zend_hash_exists(Z_OBJ_HT(intern->obj)->get_properties(Z_OBJ(intern->obj)), name)) { reflection_property_factory(ce, name, NULL, return_value); @@ -5884,7 +5921,7 @@ RETURN_THROWS(); } GET_REFLECTION_OBJECT_PTR(ref); - _property_string(&str, ref->prop, ZSTR_VAL(ref->unmangled_name), ""); + _property_string(&str, ref->prop, ref->unmangled_name, ""); RETURN_STR(smart_str_extract(&str)); } /* }}} */ @@ -7945,7 +7982,7 @@ } GET_REFLECTION_OBJECT_PTR(const_); - _const_string(&str, ZSTR_VAL(const_->name), &const_->value, ""); + _const_string(&str, const_->name, &const_->value, ""); RETURN_STR(smart_str_extract(&str)); } diff -Nru php8.4-8.4.23/ext/reflection/tests/ReflectionConstant_null_byte_value.phpt php8.4-8.4.24/ext/reflection/tests/ReflectionConstant_null_byte_value.phpt --- php8.4-8.4.23/ext/reflection/tests/ReflectionConstant_null_byte_value.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/reflection/tests/ReflectionConstant_null_byte_value.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +GH-22658: ReflectionConstant with a string value with a null byte +--FILE-- +getValue() ); + +?> +--EXPECTF-- +Constant [ string DEMO ] { f%0oo } +string(4) "f%0oo" diff -Nru php8.4-8.4.23/ext/reflection/tests/ReflectionParameter_leading_backslash.phpt php8.4-8.4.24/ext/reflection/tests/ReflectionParameter_leading_backslash.phpt --- php8.4-8.4.23/ext/reflection/tests/ReflectionParameter_leading_backslash.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/reflection/tests/ReflectionParameter_leading_backslash.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +ReflectionParameter::__construct(): a leading "\" in the function name is ignored +--FILE-- +getName()); + +$p = new ReflectionParameter("demo", 0); +var_dump($p->getName()); + +?> +--EXPECT-- +string(3) "arg" +string(3) "arg" diff -Nru php8.4-8.4.23/ext/reflection/tests/gh22441.phpt php8.4-8.4.24/ext/reflection/tests/gh22441.phpt --- php8.4-8.4.23/ext/reflection/tests/gh22441.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/reflection/tests/gh22441.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,44 @@ +--TEST-- +GH-22441 (ReflectionClass::hasProperty()/getProperty() ignore dynamic properties shadowing a private parent property) +--FILE-- +shadow = true; +$o->noShadow = true; + +$r = new ReflectionObject($o); + +echo "hasProperty:\n"; +echo "shadow (dynamic over private parent): "; var_dump($r->hasProperty('shadow')); +echo "noShadow (plain dynamic): "; var_dump($r->hasProperty('noShadow')); +echo "onlyBase (private parent, no dynamic): "; var_dump($r->hasProperty('onlyBase')); + +echo "\ngetProperty:\n"; +foreach (['shadow', 'noShadow', 'onlyBase'] as $name) { + try { + $p = $r->getProperty($name); + printf("%s: %s::\$%s\n", $name, $p->getDeclaringClass()->getName(), $p->getName()); + } catch (ReflectionException $e) { + printf("%s: %s\n", $name, $e->getMessage()); + } +} +?> +--EXPECT-- +hasProperty: +shadow (dynamic over private parent): bool(true) +noShadow (plain dynamic): bool(true) +onlyBase (private parent, no dynamic): bool(false) + +getProperty: +shadow: Child::$shadow +noShadow: Child::$noShadow +onlyBase: Property Child::$onlyBase does not exist diff -Nru php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionClassConstant_doc_comment.phpt php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionClassConstant_doc_comment.phpt --- php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionClassConstant_doc_comment.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionClassConstant_doc_comment.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,44 @@ +--TEST-- +GH-22681: null bytes in doc comment truncate ReflectionClassConstant::__toString() +--FILE-- +getDocComment() ); + +echo new ReflectionClass(Demo::class); + +?> +--EXPECTF-- +/** F%0oo */ +Constant [ public bool DEMO ] { 1 } +string(11) "/** F%0oo */" +Class [ class Demo ] { + @@ %s(%d) : eval()'d code %d-%d + + - Constants [1] { + /** F%0oo */ + Constant [ public bool DEMO ] { 1 } + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [0] { + } +} diff -Nru php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionClass_doc_comment.phpt php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionClass_doc_comment.phpt --- php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionClass_doc_comment.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionClass_doc_comment.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,37 @@ +--TEST-- +GH-22681: null bytes in doc comment truncate ReflectionClass::__toString() +--FILE-- +getDocComment() ); + +?> +--EXPECTF-- +/** F%0oo */ +Class [ class Demo ] { + @@ %s(%d) : eval()'d code %d-%d + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [0] { + } +} +string(11) "/** F%0oo */" diff -Nru php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionConstant_name.phpt php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionConstant_name.phpt --- php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionConstant_name.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionConstant_name.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,15 @@ +--TEST-- +GH-22681: null bytes in name truncate ReflectionConstant::__toString() +--FILE-- +getName() ); + +?> +--EXPECTF-- +Constant [ bool F%0oo ] { 1 } +string(4) "F%0oo" diff -Nru php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionEnum_case_doc_comment.phpt php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionEnum_case_doc_comment.phpt --- php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionEnum_case_doc_comment.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionEnum_case_doc_comment.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,46 @@ +--TEST-- +GH-22681: null bytes in doc comment truncate ReflectionEnum::__toString() +--FILE-- +getDocComment() ); +?> +--EXPECTF-- +Class [ final class Demo implements UnitEnum ] { + @@ %s(%d) : eval()'d code %d-%d + + - Constants [1] { + /** F%0oo */ + Constant [ public Demo C ] { Object } + } + + - Static properties [0] { + } + + - Static methods [1] { + Method [ static public method cases ] { + + - Parameters [0] { + } + - Return [ array ] + } + } + + - Properties [1] { + Property [ public protected(set) readonly string $name ] + } + + - Methods [0] { + } +} +string(11) "/** F%0oo */" diff -Nru php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionExtension_ini_value.phpt php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionExtension_ini_value.phpt --- php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionExtension_ini_value.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionExtension_ini_value.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,23 @@ +--TEST-- +GH-22681: null bytes in INI values truncate ReflectionExtension::__toString() +--FILE-- +getINIEntries()['arg_separator.output'] ); + +?> +--EXPECTF-- +Entry [ arg_separator.output ] + Current = 'f%0oo' + Default = '&' + } + +string(4) "f%0oo" diff -Nru php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionFunctionAbstract_doc_comment.phpt php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionFunctionAbstract_doc_comment.phpt --- php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionFunctionAbstract_doc_comment.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionFunctionAbstract_doc_comment.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +GH-22681: null bytes in doc comment truncate ReflectionFunctionAbstract::__toString() +--FILE-- +getDocComment() ); + +$r = new ReflectionMethod(Demo::class, 'demo'); +echo $r; +var_dump( $r->getDocComment() ); + +?> +--EXPECTF-- +/** F%0oo */ +Function [ function demo ] { + @@ %s(%d) : eval()'d code %d - %d +} +string(11) "/** F%0oo */" +/** B%0ar */ +Method [ public method demo ] { + @@ %s(%d) : eval()'d code %d - %d +} +string(11) "/** B%0ar */" diff -Nru php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionProperty_doc_comment.phpt php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionProperty_doc_comment.phpt --- php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionProperty_doc_comment.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionProperty_doc_comment.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,44 @@ +--TEST-- +GH-22681: null bytes in doc comment truncate ReflectionProperty::__toString() +--FILE-- +getDocComment() ); + +echo new ReflectionClass(Demo::class); + +?> +--EXPECTF-- +/** F%0oo */ +Property [ public $prop = NULL ] +string(11) "/** F%0oo */" +Class [ class Demo ] { + @@ %s(%d) : eval()'d code %d-%d + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [1] { + /** F%0oo */ + Property [ public $prop = NULL ] + } + + - Methods [0] { + } +} diff -Nru php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionProperty_dynamic_name.phpt php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionProperty_dynamic_name.phpt --- php8.4-8.4.23/ext/reflection/tests/gh22681/ReflectionProperty_dynamic_name.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/reflection/tests/gh22681/ReflectionProperty_dynamic_name.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,37 @@ +--TEST-- +GH-22681: null bytes in name truncate ReflectionProperty::__toString() +--FILE-- + true]; +$r = new ReflectionProperty($obj, "F\0oo"); +echo $r; +var_dump( $r->getDocComment() ); + +echo new ReflectionObject($obj); + +?> +--EXPECTF-- +Property [ public $F%0oo ] +bool(false) +Object of class [ class stdClass ] { + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Dynamic properties [1] { + Property [ public $F%0oo ] + } + + - Methods [0] { + } +} diff -Nru php8.4-8.4.23/ext/session/mod_user.c php8.4-8.4.24/ext/session/mod_user.c --- php8.4-8.4.23/ext/session/mod_user.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/session/mod_user.c 2026-07-29 05:29:50.000000000 +0000 @@ -30,16 +30,16 @@ PS(in_save_handler) = 0; ZVAL_UNDEF(retval); php_error_docref(NULL, E_WARNING, "Cannot call session save handler in a recursive manner"); - return; - } - PS(in_save_handler) = 1; - if (call_user_function(NULL, NULL, func, retval, argc, argv) == FAILURE) { - zval_ptr_dtor(retval); - ZVAL_UNDEF(retval); - } else if (Z_ISUNDEF_P(retval)) { - ZVAL_NULL(retval); + } else { + PS(in_save_handler) = 1; + if (call_user_function(NULL, NULL, func, retval, argc, argv) == FAILURE) { + zval_ptr_dtor(retval); + ZVAL_UNDEF(retval); + } else if (Z_ISUNDEF_P(retval)) { + ZVAL_NULL(retval); + } + PS(in_save_handler) = 0; } - PS(in_save_handler) = 0; for (i = 0; i < argc; i++) { zval_ptr_dtor(&argv[i]); } diff -Nru php8.4-8.4.23/ext/session/php_session.h php8.4-8.4.24/ext/session/php_session.h --- php8.4-8.4.23/ext/session/php_session.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/session/php_session.h 2026-07-29 05:29:50.000000000 +0000 @@ -202,6 +202,7 @@ bool lazy_write; /* omit session write when it is possible */ bool in_save_handler; /* state if session is in save handler or not */ bool set_handler; /* state if session module i setting handler or not */ + bool random_seeded; zend_string *session_vars; /* serialized original session data */ } php_ps_globals; diff -Nru php8.4-8.4.23/ext/session/session.c php8.4-8.4.24/ext/session/session.c --- php8.4-8.4.23/ext/session/session.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/session/session.c 2026-07-29 05:29:50.000000000 +0000 @@ -394,6 +394,18 @@ /* GC must be done before reading session data. */ if ((PS(mod_data) || PS(mod_user_implemented))) { if (!collect && PS(gc_probability) > 0) { + /* Seed lazily on first GC draw per process. */ + if (UNEXPECTED(!PS(random_seeded))) { + php_random_uint128_t seed; + if (php_random_bytes_silent(&seed, sizeof(seed)) == FAILURE) { + seed = php_random_uint128_constant( + php_random_generate_fallback_seed(), + php_random_generate_fallback_seed() + ); + } + php_random_pcgoneseq128xslrr64_seed128(PS(random).state, seed); + PS(random_seeded) = true; + } collect = php_random_range(PS(random), 0, PS(gc_divisor) - 1) < PS(gc_probability); } @@ -2984,14 +2996,7 @@ .algo = &php_random_algo_pcgoneseq128xslrr64, .state = &ps_globals->random_state, }; - php_random_uint128_t seed; - if (php_random_bytes_silent(&seed, sizeof(seed)) == FAILURE) { - seed = php_random_uint128_constant( - php_random_generate_fallback_seed(), - php_random_generate_fallback_seed() - ); - } - php_random_pcgoneseq128xslrr64_seed128(ps_globals->random.state, seed); + ps_globals->random_seeded = false; } /* }}} */ diff -Nru php8.4-8.4.23/ext/session/tests/user_session_module/recursive_handler_argv_leak.phpt php8.4-8.4.24/ext/session/tests/user_session_module/recursive_handler_argv_leak.phpt --- php8.4-8.4.23/ext/session/tests/user_session_module/recursive_handler_argv_leak.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/session/tests/user_session_module/recursive_handler_argv_leak.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,31 @@ +--TEST-- +ps_call_handler() releases argv when a recursive save-handler call is rejected +--INI-- +session.save_path= +session.name=PHPSESSID +--EXTENSIONS-- +session +--FILE-- +tripped) { + $this->tripped = true; + session_destroy(); + } + return true; + } +} + +session_set_save_handler(new H, true); +session_start(); +$_SESSION['x'] = 1; +session_write_close(); +echo "done\n"; +?> +--EXPECTF-- +Warning: session_destroy(): Cannot call session save handler in a recursive manner in %s on line %d + +Warning: session_destroy(): Session object destruction failed in %s on line %d +done diff -Nru php8.4-8.4.23/ext/shmop/shmop.c php8.4-8.4.24/ext/shmop/shmop.c --- php8.4-8.4.23/ext/shmop/shmop.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/shmop/shmop.c 2026-07-29 05:29:50.000000000 +0000 @@ -224,7 +224,6 @@ zend_long start, count; php_shmop *shmop; char *startaddr; - int bytes; zend_string *return_string; if (zend_parse_parameters(ZEND_NUM_ARGS(), "Oll", &shmid, shmop_ce, &start, &count) == FAILURE) { @@ -244,7 +243,7 @@ } startaddr = shmop->addr + start; - bytes = count ? count : shmop->size - start; + zend_long bytes = count ? count : shmop->size - start; return_string = zend_string_init(startaddr, bytes, 0); diff -Nru php8.4-8.4.23/ext/snmp/snmp.c php8.4-8.4.24/ext/snmp/snmp.c --- php8.4-8.4.23/ext/snmp/snmp.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/snmp/snmp.c 2026-07-29 05:29:50.000000000 +0000 @@ -910,6 +910,7 @@ if (strlen(session->peername) == 0) { php_error_docref(NULL, E_WARNING, "Unknown failure while resolving '%s'", ZSTR_VAL(hostname)); + php_network_freeaddresses(psal); return false; } /* XXX FIXME diff -Nru php8.4-8.4.23/ext/snmp/tests/snmp_resolve_fail_leak.phpt php8.4-8.4.24/ext/snmp/tests/snmp_resolve_fail_leak.phpt --- php8.4-8.4.23/ext/snmp/tests/snmp_resolve_fail_leak.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/snmp/tests/snmp_resolve_fail_leak.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,16 @@ +--TEST-- +snmp: resolved address list is freed when peername resolution drains empty +--EXTENSIONS-- +snmp +--FILE-- + +--EXPECTF-- +Warning: snmpget(): Unknown failure while resolving '[127.0.0.1]' in %s on line %d +bool(false) diff -Nru php8.4-8.4.23/ext/soap/php_http.c php8.4-8.4.24/ext/soap/php_http.c --- php8.4-8.4.23/ext/soap/php_http.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/soap/php_http.c 2026-07-29 05:29:50.000000000 +0000 @@ -1151,8 +1151,10 @@ zend_string_release_ex(http_body, 0); if (new_url->scheme == NULL && new_url->path != NULL) { new_url->scheme = phpurl->scheme ? zend_string_copy(phpurl->scheme) : NULL; - new_url->host = phpurl->host ? zend_string_copy(phpurl->host) : NULL; - new_url->port = phpurl->port; + if (new_url->host == NULL) { + new_url->host = phpurl->host ? zend_string_copy(phpurl->host) : NULL; + new_url->port = phpurl->port; + } if (new_url->path && ZSTR_VAL(new_url->path)[0] != '/') { if (phpurl->path) { char *t = ZSTR_VAL(phpurl->path); diff -Nru php8.4-8.4.23/ext/soap/soap.c php8.4-8.4.24/ext/soap/soap.c --- php8.4-8.4.23/ext/soap/soap.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/soap/soap.c 2026-07-29 05:29:50.000000000 +0000 @@ -2235,6 +2235,10 @@ return false; } + ZVAL_UNDEF(¶ms[0]); + ZVAL_UNDEF(¶ms[1]); + ZVAL_UNDEF(¶ms[2]); + zend_try { zval *trace = Z_CLIENT_TRACE_P(this_ptr); if (Z_TYPE_P(trace) == IS_TRUE) { diff -Nru php8.4-8.4.23/ext/soap/tests/bugs/protocol_relative_redirect.phpt php8.4-8.4.24/ext/soap/tests/bugs/protocol_relative_redirect.phpt --- php8.4-8.4.23/ext/soap/tests/bugs/protocol_relative_redirect.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/soap/tests/bugs/protocol_relative_redirect.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,49 @@ +--TEST-- +SOAP client follows a protocol-relative (//host/path) redirect Location without leaking the host +--EXTENSIONS-- +soap +--SKIPIF-- + +--FILE-- +', + '', + 'ok', + ''; +} else { + http_response_code(302); + header("Location: //" . $_SERVER["HTTP_HOST"] . "/redirected"); +} +PHP; + +php_cli_server_start($code, null, $args); + +$client = new SoapClient(null, [ + 'location' => 'http://' . PHP_CLI_SERVER_ADDRESS . '/start', + 'uri' => 'test-uri', +]); + +try { + $client->__soapCall("foo", []); + echo "redirect followed\n"; +} catch (SoapFault $e) { + echo "SoapFault: " . $e->getMessage() . "\n"; +} +?> +--EXPECT-- +redirect followed diff -Nru php8.4-8.4.23/ext/sockets/conversions.c php8.4-8.4.24/ext/sockets/conversions.c --- php8.4-8.4.23/ext/sockets/conversions.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/sockets/conversions.c 2026-07-29 05:29:50.000000000 +0000 @@ -1385,7 +1385,7 @@ return; } - iarr[i] = sock->bsd_socket; + iarr[i - 1] = sock->bsd_socket; return; } diff -Nru php8.4-8.4.23/ext/sockets/tests/gh21161.phpt php8.4-8.4.24/ext/sockets/tests/gh21161.phpt --- php8.4-8.4.23/ext/sockets/tests/gh21161.phpt 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/sockets/tests/gh21161.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -7,6 +7,7 @@ if (substr(PHP_OS, 0, 3) == 'WIN') { die('skip.. Not valid for Windows'); } +require 'ipv6_skipif.inc'; ?> --FILE-- +--FILE-- + ['x'], + 'control' => [[ + 'level' => SOL_SOCKET, + 'type' => SCM_RIGHTS, + 'data' => [$payload1, $payload2], + ]], +], 0); + +$data = [ + 'name' => [], + 'buffer_size' => 64, + 'controllen' => socket_cmsg_space(SOL_SOCKET, SCM_RIGHTS, 2), +]; +socket_recvmsg($recv, $data, 0); + +$got = $data['control'][0]['data']; +var_dump(count($got)); +var_dump($got[0] instanceof Socket); +var_dump($got[1] instanceof Socket); +socket_getsockname($got[0], $addr0); +socket_getsockname($got[1], $addr1); +var_dump($addr0 === $ppath1); +var_dump($addr1 === $ppath2); +?> +--CLEAN-- + +--EXPECT-- +int(2) +bool(true) +bool(true) +bool(true) +bool(true) diff -Nru php8.4-8.4.23/ext/sodium/libsodium.c php8.4-8.4.24/ext/sodium/libsodium.c --- php8.4-8.4.23/ext/sodium/libsodium.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/sodium/libsodium.c 2026-07-29 05:29:50.000000000 +0000 @@ -1473,6 +1473,7 @@ } if (memlimit < crypto_pwhash_MEMLIMIT_MIN) { zend_argument_error(sodium_exception_ce, 5, "must be greater than or equal to %d", crypto_pwhash_MEMLIMIT_MIN); + RETURN_THROWS(); } hash = zend_string_alloc((size_t) hash_len, 0); ret = -1; @@ -1532,9 +1533,11 @@ } if (opslimit < crypto_pwhash_OPSLIMIT_MIN) { zend_argument_error(sodium_exception_ce, 2, "must be greater than or equal to %d", crypto_pwhash_OPSLIMIT_MIN); + RETURN_THROWS(); } if (memlimit < crypto_pwhash_MEMLIMIT_MIN) { zend_argument_error(sodium_exception_ce, 3, "must be greater than or equal to %d", crypto_pwhash_MEMLIMIT_MIN); + RETURN_THROWS(); } hash_str = zend_string_alloc(crypto_pwhash_STRBYTES - 1, 0); if (crypto_pwhash_str @@ -1640,9 +1643,11 @@ } if (opslimit < crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE) { zend_argument_error(sodium_exception_ce, 4, "must be greater than or equal to %d", crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE); + RETURN_THROWS(); } if (memlimit < crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE) { zend_argument_error(sodium_exception_ce, 5, "must be greater than or equal to %d", crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE); + RETURN_THROWS(); } hash = zend_string_alloc((size_t) hash_len, 0); if (crypto_pwhash_scryptsalsa208sha256 @@ -1685,9 +1690,11 @@ } if (opslimit < crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE) { zend_argument_error(sodium_exception_ce, 2, "must be greater than or equal to %d", crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE); + RETURN_THROWS(); } if (memlimit < crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE) { zend_argument_error(sodium_exception_ce, 3, "must be greater than or equal to %d", crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE); + RETURN_THROWS(); } hash_str = zend_string_alloc (crypto_pwhash_scryptsalsa208sha256_STRBYTES - 1, 0); diff -Nru php8.4-8.4.23/ext/sodium/tests/pwhash_memlimit_below_min.phpt php8.4-8.4.24/ext/sodium/tests/pwhash_memlimit_below_min.phpt --- php8.4-8.4.23/ext/sodium/tests/pwhash_memlimit_below_min.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/sodium/tests/pwhash_memlimit_below_min.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +sodium_crypto_pwhash(): a below-minimum memlimit reports a precise argument error +--EXTENSIONS-- +sodium +--SKIPIF-- + +--FILE-- +getMessage(), "\n"; +} + +try { + sodium_crypto_pwhash_str("password", SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE, 1); +} catch (SodiumException $e) { + echo $e->getMessage(), "\n"; +} +?> +--EXPECTF-- +sodium_crypto_pwhash(): Argument #5 ($memlimit) must be greater than or equal to %d +sodium_crypto_pwhash_str(): Argument #3 ($memlimit) must be greater than or equal to %d diff -Nru php8.4-8.4.23/ext/spl/php_spl.c php8.4-8.4.24/ext/spl/php_spl.c --- php8.4-8.4.23/ext/spl/php_spl.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/spl/php_spl.c 2026-07-29 05:29:50.000000000 +0000 @@ -43,16 +43,7 @@ static zend_class_entry * spl_find_ce_by_name(zend_string *name, bool autoload) { - zend_class_entry *ce; - - if (!autoload) { - zend_string *lc_name = zend_string_tolower(name); - - ce = zend_hash_find_ptr(EG(class_table), lc_name); - zend_string_release(lc_name); - } else { - ce = zend_lookup_class(name); - } + zend_class_entry *ce = zend_lookup_class_ex(name, NULL, autoload ? 0 : ZEND_FETCH_CLASS_NO_AUTOLOAD); if (ce == NULL) { php_error_docref(NULL, E_WARNING, "Class %s does not exist%s", ZSTR_VAL(name), autoload ? " and could not be loaded" : ""); return NULL; @@ -310,7 +301,12 @@ pos_len = (int)ZSTR_LEN(file_exts); } - lc_name = zend_string_tolower(class_name); + if (ZSTR_VAL(class_name)[0] == '\\') { + lc_name = zend_string_alloc(ZSTR_LEN(class_name) - 1, 0); + zend_str_tolower_copy(ZSTR_VAL(lc_name), ZSTR_VAL(class_name) + 1, ZSTR_LEN(class_name) - 1); + } else { + lc_name = zend_string_tolower(class_name); + } while (pos && *pos && !EG(exception)) { pos1 = strchr(pos, ','); if (pos1) { diff -Nru php8.4-8.4.23/ext/spl/spl_directory.c php8.4-8.4.24/ext/spl/spl_directory.c --- php8.4-8.4.23/ext/spl/spl_directory.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/spl/spl_directory.c 2026-07-29 05:29:50.000000000 +0000 @@ -2224,6 +2224,8 @@ RETURN_THROWS(); } + CHECK_SPL_FILE_OBJECT_IS_INITIALIZED(intern); + spl_filesystem_file_free_line(intern); if (SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_READ_AHEAD)) { spl_filesystem_file_read_line(ZEND_THIS, intern, true); @@ -2376,6 +2378,8 @@ RETURN_THROWS(); } + CHECK_SPL_FILE_OBJECT_IS_INITIALIZED(intern); + if (delim) { if (d_len != 1) { zend_argument_value_error(2, "must be a single character"); diff -Nru php8.4-8.4.23/ext/spl/spl_iterators.c php8.4-8.4.24/ext/spl/spl_iterators.c --- php8.4-8.4.23/ext/spl/spl_iterators.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/spl/spl_iterators.c 2026-07-29 05:29:50.000000000 +0000 @@ -257,6 +257,10 @@ zend_class_entry *ce; zval retval, child; zend_object_iterator *sub_iter; + zend_object *sub_object; + uint32_t prev_level; + zend_result valid_result; + bool reentered; SPL_FETCH_SUB_ITERATOR(iterator, object); @@ -273,9 +277,20 @@ zend_clear_exception(); } } + iterator = object->iterators[object->level].iterator; ZEND_FALLTHROUGH; case RS_START: - if (iterator->funcs->valid(iterator) == FAILURE) { + sub_object = Z_OBJ(object->iterators[object->level].zobject); + prev_level = object->level; + GC_ADDREF(sub_object); + valid_result = iterator->funcs->valid(iterator); + reentered = object->level != prev_level + || object->iterators[object->level].iterator != iterator; + OBJ_RELEASE(sub_object); + if (reentered) { + return; + } + if (valid_result == FAILURE) { break; } object->iterators[object->level].state = RS_TEST; @@ -423,7 +438,7 @@ } } } - if (object->level > 0) { + if (object->level > 0 && object->iterators[object->level].iterator == iterator) { zval garbage; ZVAL_COPY_VALUE(&garbage, &object->iterators[object->level].zobject); ZVAL_UNDEF(&object->iterators[object->level].zobject); diff -Nru php8.4-8.4.23/ext/spl/tests/class_parents_leading_backslash.phpt php8.4-8.4.24/ext/spl/tests/class_parents_leading_backslash.phpt --- php8.4-8.4.23/ext/spl/tests/class_parents_leading_backslash.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/spl/tests/class_parents_leading_backslash.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,72 @@ +--TEST-- +class_parents()/class_implements()/class_uses() accept a leading backslash regardless of $autoload +--FILE-- + +--EXPECT-- +array(1) { + ["ParentC"]=> + string(7) "ParentC" +} +array(1) { + ["ParentC"]=> + string(7) "ParentC" +} +array(1) { + ["Iface"]=> + string(5) "Iface" +} +array(1) { + ["Tr"]=> + string(2) "Tr" +} +array(1) { + ["MyNS\NSParentC"]=> + string(14) "MyNS\NSParentC" +} +array(1) { + ["MyNS\NSParentC"]=> + string(14) "MyNS\NSParentC" +} +array(1) { + ["MyNS\NSIface"]=> + string(12) "MyNS\NSIface" +} +array(1) { + ["MyNS\NSTr"]=> + string(9) "MyNS\NSTr" +} diff -Nru php8.4-8.4.23/ext/spl/tests/gh16217.phpt php8.4-8.4.24/ext/spl/tests/gh16217.phpt --- php8.4-8.4.23/ext/spl/tests/gh16217.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/spl/tests/gh16217.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,35 @@ +--TEST-- +GH-16217 (SplFileObject methods on an uninitialized object segfault) +--FILE-- +newInstanceWithoutConstructor(); +} + +try { + (new ReflectionMethod(SplFileObject::class, "fputcsv"))->invoke(uninitialized(), []); +} catch (Error $e) { + echo "fputcsv: ", $e->getMessage(), "\n"; +} + +try { + (new ReflectionMethod(SplFileObject::class, "next"))->invoke(uninitialized()); +} catch (Error $e) { + echo "next: ", $e->getMessage(), "\n"; +} + +$obj = uninitialized(); +(new ReflectionMethod(SplFileObject::class, "setFlags"))->invoke($obj, SplFileObject::READ_AHEAD); +try { + (new ReflectionMethod(SplFileObject::class, "next"))->invoke($obj); +} catch (Error $e) { + echo "next (READ_AHEAD): ", $e->getMessage(), "\n"; +} + +echo "Done\n"; +?> +--EXPECT-- +fputcsv: Object not initialized +next: Object not initialized +next (READ_AHEAD): Object not initialized +Done diff -Nru php8.4-8.4.23/ext/spl/tests/recursiveiteratoriterator_next_during_endchildren.phpt php8.4-8.4.24/ext/spl/tests/recursiveiteratoriterator_next_during_endchildren.phpt --- php8.4-8.4.23/ext/spl/tests/recursiveiteratoriterator_next_during_endchildren.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/spl/tests/recursiveiteratoriterator_next_during_endchildren.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,42 @@ +--TEST-- +RecursiveIteratorIterator: next() re-entered from endChildren() must not use-after-free +--FILE-- +data = $d; } + function current(): mixed { return $this->data[$this->pos] ?? null; } + function key(): mixed { return $this->pos; } + function next(): void { $this->pos++; } + function rewind(): void { $this->pos = 0; } + function valid(): bool { return $this->pos < count($this->data); } + function hasChildren(): bool { return is_array($this->current()); } + function getChildren(): RecursiveIterator { return new RIt($this->current()); } +} + +class ReenterRII extends RecursiveIteratorIterator { + public static int $fired = 0; + function endChildren(): void { + if (self::$fired++ === 0) { + $this->next(); + } + } +} + +$tree = [[[1, 2], 3], 4]; +$it = new ReenterRII(new RIt($tree), RecursiveIteratorIterator::SELF_FIRST); +$seen = []; +foreach ($it as $v) { + $seen[] = is_array($v) ? 'array' : $v; + if (count($seen) > 20) { + $seen[] = '...'; + break; + } +} +echo implode(' ', $seen), "\n"; +echo "done\n"; +?> +--EXPECT-- +array array 1 2 4 +done diff -Nru php8.4-8.4.23/ext/spl/tests/recursiveiteratoriterator_next_during_valid.phpt php8.4-8.4.24/ext/spl/tests/recursiveiteratoriterator_next_during_valid.phpt --- php8.4-8.4.23/ext/spl/tests/recursiveiteratoriterator_next_during_valid.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/spl/tests/recursiveiteratoriterator_next_during_valid.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,47 @@ +--TEST-- +RecursiveIteratorIterator: next() re-entered from a sub-iterator valid() must not use-after-free +--FILE-- +data = $d; $this->depth = $depth; } + function current(): mixed { return $this->data[$this->pos] ?? null; } + function key(): mixed { return $this->pos; } + function next(): void { $this->pos++; } + function rewind(): void { $this->pos = 0; } + function valid(): bool { + if ($this->rii && $this->depth === 2 && $this->pos === count($this->data) && !self::$fired) { + self::$fired = true; + $this->rii->next(); + } + return $this->pos < count($this->data); + } + function hasChildren(): bool { return is_array($this->current()); } + function getChildren(): RecursiveIterator { + $c = new RIt($this->current(), $this->depth + 1); + $c->rii = $this->rii; + return $c; + } +} + +$root = new RIt([[[1, 2], 3], 4]); +$rii = new RecursiveIteratorIterator($root, RecursiveIteratorIterator::SELF_FIRST); +$root->rii = $rii; +$seen = []; +foreach ($rii as $v) { + $seen[] = is_array($v) ? 'array' : $v; + if (count($seen) > 20) { + $seen[] = '...'; + break; + } +} +echo implode(' ', $seen), "\n"; +echo "done\n"; +?> +--EXPECT-- +array array 1 2 3 4 +done diff -Nru php8.4-8.4.23/ext/spl/tests/recursiveiteratoriterator_rewind_during_next.phpt php8.4-8.4.24/ext/spl/tests/recursiveiteratoriterator_rewind_during_next.phpt --- php8.4-8.4.23/ext/spl/tests/recursiveiteratoriterator_rewind_during_next.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/spl/tests/recursiveiteratoriterator_rewind_during_next.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,41 @@ +--TEST-- +RecursiveIteratorIterator: rewind() re-entered from an inner next() must not use-after-free +--FILE-- +data = $d; $this->depth = $depth; } + function current(): mixed { return $this->data[$this->pos] ?? null; } + function key(): mixed { return $this->pos; } + function next(): void { + $this->pos++; + if ($this->rii && $this->depth === 1 && $this->pos === 1 && !self::$fired) { + self::$fired = true; + $this->rii->rewind(); + } + } + function rewind(): void { $this->pos = 0; } + function valid(): bool { return $this->pos < count($this->data); } + function hasChildren(): bool { return is_array($this->current()); } + function getChildren(): RecursiveIterator { + $c = new Reenter($this->current(), $this->depth + 1); + $c->rii = $this->rii; + return $c; + } +} +$root = new Reenter([[10, 11], [20, 21]]); +$rii = new RecursiveIteratorIterator($root, RecursiveIteratorIterator::SELF_FIRST); +$root->rii = $rii; +$seen = []; +foreach ($rii as $v) { + if (is_array($v)) { $v = '[' . implode(',', $v) . ']'; } + $seen[] = $v; + if (count($seen) > 20) { $seen[] = '...'; break; } +} +echo implode(' ', $seen), "\n"; +echo "done\n"; +?> +--EXPECT-- +[10,11] 10 [10,11] 10 11 [20,21] 20 21 +done diff -Nru php8.4-8.4.23/ext/spl/tests/spl_autoload_leading_backslash.phpt php8.4-8.4.24/ext/spl/tests/spl_autoload_leading_backslash.phpt --- php8.4-8.4.23/ext/spl/tests/spl_autoload_leading_backslash.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/spl/tests/spl_autoload_leading_backslash.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,18 @@ +--TEST-- +spl_autoload(): a leading "\" in the class name is ignored +--FILE-- + +--EXPECT-- +bool(true) +bool(true) diff -Nru php8.4-8.4.23/ext/standard/array.c php8.4-8.4.24/ext/standard/array.c --- php8.4-8.4.23/ext/standard/array.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/array.c 2026-07-29 05:29:50.000000000 +0000 @@ -6046,6 +6046,7 @@ { zval* args; zval** arrays; + HashTable** hashes; Bucket** indirect; uint32_t idx; HashTable* hash; @@ -6167,11 +6168,17 @@ for (i = 0; i < array_size; i++) { indirect[i] = indirects + (i * (num_arrays + 1)); } + hashes = safe_emalloc(num_arrays, sizeof(HashTable *), 0); + for (i = 0; i < num_arrays; i++) { + hashes[i] = Z_ARRVAL_P(arrays[i]); + GC_ADDREF(hashes[i]); + HT_ALLOW_COW_VIOLATION(hashes[i]); + } for (i = 0; i < num_arrays; i++) { k = 0; - if (HT_IS_PACKED(Z_ARRVAL_P(arrays[i]))) { - zval *zv = Z_ARRVAL_P(arrays[i])->arPacked; - for (idx = 0; idx < Z_ARRVAL_P(arrays[i])->nNumUsed; idx++, zv++) { + if (HT_IS_PACKED(hashes[i])) { + zval *zv = hashes[i]->arPacked; + for (idx = 0; idx < hashes[i]->nNumUsed; idx++, zv++) { if (Z_TYPE_P(zv) == IS_UNDEF) continue; ZVAL_COPY_VALUE(&indirect[k][i].val, zv); indirect[k][i].h = idx; @@ -6179,8 +6186,8 @@ k++; } } else { - Bucket *p = Z_ARRVAL_P(arrays[i])->arData; - for (idx = 0; idx < Z_ARRVAL_P(arrays[i])->nNumUsed; idx++, p++) { + Bucket *p = hashes[i]->arData; + for (idx = 0; idx < hashes[i]->nNumUsed; idx++, p++) { if (Z_TYPE(p->val) == IS_UNDEF) continue; indirect[k][i] = *p; k++; @@ -6200,7 +6207,7 @@ /* Restructure the arrays based on sorted indirect - this is mostly taken from zend_hash_sort() function. */ for (i = 0; i < num_arrays; i++) { - hash = Z_ARRVAL_P(arrays[i]); + hash = hashes[i]; hash->nNumUsed = array_size; hash->nNextFreeElement = array_size; hash->nInternalPointer = 0; @@ -6229,6 +6236,14 @@ RETVAL_TRUE; clean_up: + for (i = 0; i < num_arrays; i++) { + if (UNEXPECTED(GC_DELREF(hashes[i]) == 0)) { + zend_array_destroy(hashes[i]); + } else { + gc_check_possible_root((zend_refcounted *)hashes[i]); + } + } + efree(hashes); efree(indirects); efree(indirect); efree(func); diff -Nru php8.4-8.4.23/ext/standard/filters.c php8.4-8.4.24/ext/standard/filters.c --- php8.4-8.4.23/ext/standard/filters.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/filters.c 2026-07-29 05:29:50.000000000 +0000 @@ -1519,7 +1519,7 @@ php_stream_bucket_delref(bucket); } - if (flags != PSFS_FLAG_NORMAL) { + if (flags & PSFS_FLAG_FLUSH_CLOSE) { if (strfilter_convert_append_bucket(inst, stream, thisfilter, buckets_out, NULL, 0, &consumed, php_stream_is_persistent(stream)) != SUCCESS) { diff -Nru php8.4-8.4.23/ext/standard/fsock.c php8.4-8.4.24/ext/standard/fsock.c --- php8.4-8.4.23/ext/standard/fsock.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/fsock.c 2026-07-29 05:29:50.000000000 +0000 @@ -22,6 +22,7 @@ #include #include "php_network.h" #include "file.h" +#include "streams/php_streams_int.h" static size_t php_fsockopen_format_host_port(char **message, const char *prefix, size_t prefix_len, const char *host, size_t host_len, zend_long port) @@ -84,8 +85,9 @@ } if (persistent) { - php_fsockopen_format_host_port(&hashkey, "pfsockopen__", strlen("pfsockopen__"), host, - host_len, port); + zend_string *escaped = php_stream_escape_persistent_key(host, host_len); + spprintf(&hashkey, 0, "pfsockopen__%s:" ZEND_LONG_FMT, ZSTR_VAL(escaped), port); + zend_string_release_ex(escaped, false); } if (port > 0) { diff -Nru php8.4-8.4.23/ext/standard/image.c php8.4-8.4.24/ext/standard/image.c --- php8.4-8.4.23/ext/standard/image.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/image.c 2026-07-29 05:29:50.000000000 +0000 @@ -875,6 +875,9 @@ return NULL; } if ((size & 1) == 1) { + if (size == INT_MAX) { + return NULL; + } size++; } if (chunkId == 0x424d4844) { /* BMHD chunk */ diff -Nru php8.4-8.4.23/ext/standard/math.c php8.4-8.4.24/ext/standard/math.c --- php8.4-8.4.23/ext/standard/math.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/math.c 2026-07-29 05:29:50.000000000 +0000 @@ -24,6 +24,7 @@ #include "zend_exceptions.h" #include "zend_multiply.h" #include "zend_portability.h" +#include "zend_strtod.h" #include #include @@ -949,7 +950,7 @@ if (Z_TYPE_P(arg) == IS_DOUBLE) { double fvalue = floor(Z_DVAL_P(arg)); /* floor it just in case */ char *ptr, *end; - char buf[(sizeof(double) << 3) + 1]; + char buf[ZEND_DOUBLE_MAX_LENGTH]; /* Don't try to convert +/- infinity */ if (fvalue == ZEND_INFINITY || fvalue == -ZEND_INFINITY) { diff -Nru php8.4-8.4.23/ext/standard/proc_open.c php8.4-8.4.24/ext/standard/proc_open.c --- php8.4-8.4.23/ext/standard/proc_open.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/proc_open.c 2026-07-29 05:29:50.000000000 +0000 @@ -1371,7 +1371,6 @@ if (newprocok == FALSE) { DWORD dw = GetLastError(); - close_all_descriptors(descriptors, ndesc); char *msg = php_win32_error_to_msg(dw); php_error_docref(NULL, E_WARNING, "CreateProcess failed: %s", msg); php_win32_error_msg_free(msg); @@ -1388,7 +1387,6 @@ if (close_parentends_of_pipes(&factions, descriptors, ndesc) == FAILURE) { posix_spawn_file_actions_destroy(&factions); - close_all_descriptors(descriptors, ndesc); goto exit_fail; } @@ -1408,7 +1406,6 @@ } posix_spawn_file_actions_destroy(&factions); if (r != 0) { - close_all_descriptors(descriptors, ndesc); php_error_docref(NULL, E_WARNING, "posix_spawn() failed: %s", strerror(r)); goto exit_fail; } @@ -1450,7 +1447,6 @@ _exit(127); } else if (child < 0) { /* Failed to fork() */ - close_all_descriptors(descriptors, ndesc); php_error_docref(NULL, E_WARNING, "Fork failed: %s", strerror(errno)); goto exit_fail; } @@ -1540,6 +1536,9 @@ } else { exit_fail: _php_free_envp(env); + if (descriptors) { + close_all_descriptors(descriptors, ndesc); + } RETVAL_FALSE; } diff -Nru php8.4-8.4.23/ext/standard/streamsfuncs.c php8.4-8.4.24/ext/standard/streamsfuncs.c --- php8.4-8.4.23/ext/standard/streamsfuncs.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/streamsfuncs.c 2026-07-29 05:29:50.000000000 +0000 @@ -23,6 +23,7 @@ #include "streamsfuncs.h" #include "php_network.h" #include "php_string.h" +#include "streams/php_streams_int.h" #ifdef HAVE_UNISTD_H #include #endif @@ -130,7 +131,9 @@ context = php_stream_context_from_zval(zcontext, flags & PHP_FILE_NO_DEFAULT_CONTEXT); if (flags & PHP_STREAM_CLIENT_PERSISTENT) { - spprintf(&hashkey, 0, "stream_socket_client__%s", ZSTR_VAL(host)); + zend_string *escaped = php_stream_escape_persistent_key(ZSTR_VAL(host), ZSTR_LEN(host)); + spprintf(&hashkey, 0, "stream_socket_client__%s", ZSTR_VAL(escaped)); + zend_string_release_ex(escaped, false); } /* prepare the timeout value for use */ diff -Nru php8.4-8.4.23/ext/standard/tests/array/gh22678.phpt php8.4-8.4.24/ext/standard/tests/array/gh22678.phpt --- php8.4-8.4.23/ext/standard/tests/array/gh22678.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/tests/array/gh22678.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,48 @@ +--TEST-- +GH-22678 (Use-after-free in array_multisort() when the comparator mutates the array) +--FILE-- + 'c', 3 => 'a', 1 => 'b']; +array_multisort($b, SORT_STRING); +echo "repacked: ", implode(',', $b), "\n"; + +class Boom { + public function __toString(): string { + throw new Exception("boom"); + } +} + +$c = [new Boom(), new Boom()]; +try { + array_multisort($c, SORT_STRING); +} catch (Exception $e) { + echo $e::class, ": ", $e->getMessage(), "\n"; +} +?> +--EXPECT-- +freed mid-sort: bool(true) +repacked: a,b,c +Exception: boom diff -Nru php8.4-8.4.23/ext/standard/tests/assert/gh22290.phpt php8.4-8.4.24/ext/standard/tests/assert/gh22290.phpt --- php8.4-8.4.23/ext/standard/tests/assert/gh22290.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/tests/assert/gh22290.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,39 @@ +--TEST-- +GH-22290: AST pretty printing does not correctly handle strings containing NUL +--INI-- +zend.assertions=1 +assert.exception=1 +--FILE-- +getMessage(), PHP_EOL; +} + +try { + assert(["a\x00b" => 1] === []); +} catch (AssertionError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + assert("tab\there" === ""); +} catch (AssertionError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + assert(str_contains("plain", "zzz")); +} catch (AssertionError $e) { + echo $e->getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +assert(!str_contains($string, "\000")) +assert(["a\000b" => 1] === []) +assert("tab\there" === '') +assert(str_contains('plain', 'zzz')) diff -Nru php8.4-8.4.23/ext/standard/tests/filters/gh22360.phpt php8.4-8.4.24/ext/standard/tests/filters/gh22360.phpt --- php8.4-8.4.23/ext/standard/tests/filters/gh22360.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/tests/filters/gh22360.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,24 @@ +--TEST-- +GH-22360 (convert.base64-encode emits padding on incremental flush) +--FILE-- + +--CLEAN-- + +--EXPECT-- +string(4) "YWJj" +YWJj diff -Nru php8.4-8.4.23/ext/standard/tests/general_functions/proc_open_fd_leak_on_setup_failure.phpt php8.4-8.4.24/ext/standard/tests/general_functions/proc_open_fd_leak_on_setup_failure.phpt --- php8.4-8.4.23/ext/standard/tests/general_functions/proc_open_fd_leak_on_setup_failure.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/tests/general_functions/proc_open_fd_leak_on_setup_failure.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,20 @@ +--TEST-- +proc_open() does not leak file descriptors when descriptor setup fails mid-spec +--SKIPIF-- + +--FILE-- + ["pipe", "r"], 1 => ["bogus_type"]], $pipes); +} +$after = count(scandir("/proc/self/fd")); +var_dump($after <= $before + 2); +?> +--EXPECT-- +bool(true) diff -Nru php8.4-8.4.23/ext/standard/tests/image/getimagesizefromstring_iff_overflow.phpt php8.4-8.4.24/ext/standard/tests/image/getimagesizefromstring_iff_overflow.phpt --- php8.4-8.4.23/ext/standard/tests/image/getimagesizefromstring_iff_overflow.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/tests/image/getimagesizefromstring_iff_overflow.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,24 @@ +--TEST-- +getimagesizefromstring() IFF chunk size integer overflow (GH-getimagesize_oflow) +--CREDITS-- +Alexandre Daubois +--FILE-- + +--CLEAN-- + +--EXPECT-- +bool(false) +bool(false) diff -Nru php8.4-8.4.23/ext/standard/tests/math/gh22395.phpt php8.4-8.4.24/ext/standard/tests/math/gh22395.phpt --- php8.4-8.4.23/ext/standard/tests/math/gh22395.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/tests/math/gh22395.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,11 @@ +--TEST-- +GH-22395 (base_convert outputs at most 64 characters) +--FILE-- + +--EXPECT-- +int(78) +string(13) "4b61b5e0639ff" diff -Nru php8.4-8.4.23/ext/standard/tests/streams/gh22617.phpt php8.4-8.4.24/ext/standard/tests/streams/gh22617.phpt --- php8.4-8.4.23/ext/standard/tests/streams/gh22617.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/standard/tests/streams/gh22617.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,45 @@ +--TEST-- +GH-22617: Persistent abstract unix domain sockets resolved to wrong resource +--CREDITS-- +Roysten +--SKIPIF-- + +--FILE-- + +--EXPECT-- +bool(true) +bool(true) +bool(true) +string(17) "persistent stream" +bool(true) +string(17) "persistent stream" +bool(true) diff -Nru php8.4-8.4.23/ext/zend_test/observer.c php8.4-8.4.24/ext/zend_test/observer.c --- php8.4-8.4.23/ext/zend_test/observer.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/zend_test/observer.c 2026-07-29 05:29:50.000000000 +0000 @@ -18,6 +18,7 @@ #include "php_test.h" #include "observer.h" #include "zend_observer.h" +#include "zend_extensions.h" #include "zend_smart_str.h" #include "ext/standard/php_var.h" #include "zend_generators.h" @@ -378,6 +379,7 @@ STD_PHP_INI_BOOLEAN("zend_test.observer.fiber_switch", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_fiber_switch, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_BOOLEAN("zend_test.observer.fiber_destroy", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_fiber_destroy, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_BOOLEAN("zend_test.observer.execute_internal", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_execute_internal, zend_zend_test_globals, zend_test_globals) + STD_PHP_INI_BOOLEAN("zend_test.observer.reserve_op_array_handle", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_reserve_op_array_handle, zend_zend_test_globals, zend_test_globals) PHP_INI_END() void zend_test_observer_init(INIT_FUNC_ARGS) @@ -386,6 +388,9 @@ if (type != MODULE_TEMPORARY) { REGISTER_INI_ENTRIES(); if (ZT_G(observer_enabled)) { + if (ZT_G(observer_reserve_op_array_handle)) { + zend_get_op_array_extension_handle("zend_test"); + } zend_observer_fcall_register(observer_fcall_init); } } else { diff -Nru php8.4-8.4.23/ext/zend_test/php_test.h php8.4-8.4.24/ext/zend_test/php_test.h --- php8.4-8.4.23/ext/zend_test/php_test.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/zend_test/php_test.h 2026-07-29 05:29:50.000000000 +0000 @@ -51,6 +51,7 @@ int observer_fiber_switch; int observer_fiber_destroy; int observer_execute_internal; + int observer_reserve_op_array_handle; HashTable *global_weakmap; int replace_zend_execute_ex; int register_passes; diff -Nru php8.4-8.4.23/ext/zip/php_zip.c php8.4-8.4.24/ext/zip/php_zip.c --- php8.4-8.4.23/ext/zip/php_zip.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/ext/zip/php_zip.c 2026-07-29 05:29:50.000000000 +0000 @@ -64,17 +64,26 @@ } /* }}} */ -/* {{{ PHP_ZIP_SET_FILE_COMMENT(za, index, comment, comment_len) */ -#define PHP_ZIP_SET_FILE_COMMENT(za, index, comment, comment_len) \ - if (comment_len == 0) { \ - /* Passing NULL remove the existing comment */ \ - if (zip_file_set_comment(za, index, NULL, 0, 0) < 0) { \ - RETURN_FALSE; \ - } \ - } else if (zip_file_set_comment(za, index, comment, comment_len, 0) < 0) { \ - RETURN_FALSE; \ - } \ - RETURN_TRUE; +/* {{{ php_zip_set_file_comment */ +static bool php_zip_set_file_comment(struct zip *za, zip_uint64_t index, const char *comment, size_t comment_len) +{ + zip_uint32_t current_comment_len; + const char *current_comment = zip_file_get_comment(za, index, ¤t_comment_len, ZIP_FL_ENC_RAW); + + /* Avoid a libzip use-after-free when resetting an unchanged inherited comment. */ + if (current_comment && current_comment_len == comment_len + && memcmp(current_comment, comment, comment_len) == 0) { + return true; + } + + if (comment_len == 0) { + /* Passing NULL removes the existing comment. */ + return zip_file_set_comment(za, index, NULL, 0, 0) == 0; + } + + ZEND_ASSERT(comment_len <= 0xffff); + return zip_file_set_comment(za, index, comment, (zip_uint16_t) comment_len, 0) == 0; +} /* }}} */ # define add_ascii_assoc_string add_assoc_string @@ -2185,7 +2194,7 @@ zval *self = ZEND_THIS; size_t comment_len, name_len; char * comment, *name; - int idx; + zip_int64_t idx; if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss", &name, &name_len, &comment, &comment_len) == FAILURE) { @@ -2208,7 +2217,7 @@ if (idx < 0) { RETURN_FALSE; } - PHP_ZIP_SET_FILE_COMMENT(intern, idx, comment, comment_len); + RETURN_BOOL(php_zip_set_file_comment(intern, (zip_uint64_t) idx, comment, comment_len)); } /* }}} */ @@ -2221,6 +2230,7 @@ size_t comment_len; char * comment; struct zip_stat sb; + zip_uint64_t idx; if (zend_parse_parameters(ZEND_NUM_ARGS(), "ls", &index, &comment, &comment_len) == FAILURE) { @@ -2235,7 +2245,9 @@ } PHP_ZIP_STAT_INDEX(intern, index, 0, sb); - PHP_ZIP_SET_FILE_COMMENT(intern, index, comment, comment_len); + idx = (zip_uint64_t) index; + + RETURN_BOOL(php_zip_set_file_comment(intern, idx, comment, comment_len)); } /* }}} */ @@ -2939,7 +2951,7 @@ ZIP_FROM_OBJECT(intern, self); - PHP_ZIP_STAT_INDEX(intern, index, 0, sb); + PHP_ZIP_STAT_INDEX(intern, index, flags, sb); } if (sb.size < 1) { diff -Nru php8.4-8.4.23/ext/zip/tests/bug_gh21705.phpt php8.4-8.4.24/ext/zip/tests/bug_gh21705.phpt --- php8.4-8.4.23/ext/zip/tests/bug_gh21705.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/zip/tests/bug_gh21705.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,33 @@ +--TEST-- +ZipArchive::getFromIndex() honors FL_UNCHANGED for deleted entries +--EXTENSIONS-- +zip +--FILE-- +open($name, ZipArchive::CREATE); +$zip->addFromString('foo.txt', 'foo'); +$zip->addFromString('bar.txt', 'bar'); +$zip->close(); + +$zip = new ZipArchive; +$zip->open($name); + +$index = $zip->locateName('bar.txt'); +$zip->deleteName('bar.txt'); + +var_dump($zip->getFromName('bar.txt', 0, ZipArchive::FL_UNCHANGED)); +var_dump($zip->getFromIndex($index, 0, ZipArchive::FL_UNCHANGED)); + +$zip->close(); +?> +--CLEAN-- + +--EXPECT-- +string(3) "bar" +string(3) "bar" diff -Nru php8.4-8.4.23/ext/zip/tests/gh22649.phpt php8.4-8.4.24/ext/zip/tests/gh22649.phpt --- php8.4-8.4.23/ext/zip/tests/gh22649.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/ext/zip/tests/gh22649.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,55 @@ +--TEST-- +GH-22649 (setCommentName/Index after addFromString should not segfault) +--EXTENSIONS-- +zip +--FILE-- +open($file, ZipArchive::CREATE)) { + exit('failed'); +} + +$zip->addFromString('dir/entry2d.txt', 'entry #2'); +var_dump($zip->setCommentName('dir/entry2d.txt', 'dir/entry2d.txt')); + +$zip->addFromString('dir/entry3d.txt', 'entry #3'); +var_dump($zip->setCommentIndex($zip->lastId, 'dir/entry3d.txt')); + +$zip->close(); + +if (!$zip->open($file, ZipArchive::CREATE)) { + exit('failed'); +} + +$zip->addFromString('dir/entry2d.txt', 'updated entry #2'); +var_dump($zip->setCommentName('dir/entry2d.txt', 'dir/entry2d.txt')); + +$zip->addFromString('dir/entry3d.txt', 'updated entry #3'); +var_dump($zip->setCommentIndex($zip->lastId, 'dir/entry3d.txt')); + +$zip->close(); + +if (!$zip->open($file)) { + exit('failed'); +} + +var_dump($zip->getCommentName('dir/entry2d.txt')); +var_dump($zip->getCommentName('dir/entry3d.txt')); + +$zip->close(); +?> +--EXPECT-- +bool(true) +bool(true) +bool(true) +bool(true) +string(15) "dir/entry2d.txt" +string(15) "dir/entry3d.txt" +--CLEAN-- + diff -Nru php8.4-8.4.23/main/php_version.h php8.4-8.4.24/main/php_version.h --- php8.4-8.4.23/main/php_version.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/main/php_version.h 2026-07-29 05:29:50.000000000 +0000 @@ -2,7 +2,7 @@ /* edit configure.ac to change version number */ #define PHP_MAJOR_VERSION 8 #define PHP_MINOR_VERSION 4 -#define PHP_RELEASE_VERSION 23 +#define PHP_RELEASE_VERSION 24 #define PHP_EXTRA_VERSION "" -#define PHP_VERSION "8.4.23" -#define PHP_VERSION_ID 80423 +#define PHP_VERSION "8.4.24" +#define PHP_VERSION_ID 80424 diff -Nru php8.4-8.4.23/main/streams/php_streams_int.h php8.4-8.4.24/main/streams/php_streams_int.h --- php8.4-8.4.23/main/streams/php_streams_int.h 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/main/streams/php_streams_int.h 2026-07-29 05:29:50.000000000 +0000 @@ -62,3 +62,7 @@ * any other function that expects standard modes and you allow non-standard * ones. result should be a char[5]. */ void php_stream_mode_sanitize_fdopen_fopencookie(php_stream *stream, char *result); + +/* Escapes NUL and backslash bytes so a host containing them cannot truncate or + * collide the persistent stream hash key. */ +zend_string *php_stream_escape_persistent_key(const char *host, size_t hostlen); diff -Nru php8.4-8.4.23/main/streams/streams.c php8.4-8.4.24/main/streams/streams.c --- php8.4-8.4.23/main/streams/streams.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/main/streams/streams.c 2026-07-29 05:29:50.000000000 +0000 @@ -140,6 +140,27 @@ /* }}} */ +zend_string *php_stream_escape_persistent_key(const char *host, size_t hostlen) +{ + zend_string *escaped = zend_string_safe_alloc(hostlen, 2, 0, 0); + char *ptr = ZSTR_VAL(escaped); + for (size_t i = 0; i < hostlen; i++) { + if (host[i] == '\0') { + *ptr++ = '\\'; + *ptr++ = '0'; + } else if (host[i] == '\\') { + *ptr++ = '\\'; + *ptr++ = '\\'; + } else { + *ptr++ = host[i]; + } + } + *ptr = '\0'; + ZSTR_LEN(escaped) = ptr - ZSTR_VAL(escaped); + + return escaped; +} + static zend_llist *php_get_wrapper_errors_list(php_stream_wrapper *wrapper) { if (!FG(wrapper_errors)) { diff -Nru php8.4-8.4.23/sapi/phpdbg/phpdbg_bp.c php8.4-8.4.24/sapi/phpdbg/phpdbg_bp.c --- php8.4-8.4.23/sapi/phpdbg/phpdbg_bp.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/sapi/phpdbg/phpdbg_bp.c 2026-07-29 05:29:50.000000000 +0000 @@ -604,13 +604,13 @@ if (new_break->class_name != NULL) { zend_class_entry *ce; - if (!(ce = zend_hash_str_find_ptr(EG(class_table), zend_str_tolower_dup(new_break->class_name, new_break->class_len), new_break->class_len))) { + if (!(ce = zend_hash_str_find_ptr_lc(EG(class_table), new_break->class_name, new_break->class_len))) { return FAILURE; } func_table = &ce->function_table; } - if (!(func = zend_hash_str_find_ptr(func_table, zend_str_tolower_dup(new_break->func_name, new_break->func_len), new_break->func_len))) { + if (!(func = zend_hash_str_find_ptr_lc(func_table, new_break->func_name, new_break->func_len))) { if (new_break->class_name != NULL && new_break->func_name != NULL) { phpdbg_error("Method %s doesn't exist in class %s", new_break->func_name, new_break->class_name); return 2; diff -Nru php8.4-8.4.23/sapi/phpdbg/phpdbg_lexer.c php8.4-8.4.24/sapi/phpdbg/phpdbg_lexer.c --- php8.4-8.4.23/sapi/phpdbg/phpdbg_lexer.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/sapi/phpdbg/phpdbg_lexer.c 2026-07-29 05:29:50.000000000 +0000 @@ -306,7 +306,7 @@ if (yych <= ' ') goto yy4; if (yych == '#') goto yy4; if (yych <= '\'') goto yy26; - goto yy28; + goto yy29; yy4: YYDEBUG(4, yych); yyleng = (size_t) YYCURSOR - (size_t) yytext; @@ -331,45 +331,41 @@ } yy6: YYDEBUG(6, yych); - yych = *++YYCURSOR; - if (yych == '"') goto yy26; - goto yy30; -yy7: - YYDEBUG(7, yych); - YYCURSOR = YYMARKER; - if (yyaccept <= 3) { - if (yyaccept <= 1) { - if (yyaccept == 0) goto yy4; - else goto yy9; - } else { - if (yyaccept == 2) goto yy13; - else goto yy71; - } + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '\n') { + if (yych <= 0x00) goto yy7; + if (yych <= '\t') goto yy31; } else { - if (yyaccept <= 5) { - if (yyaccept == 4) goto yy73; - else goto yy85; - } else { - goto yy100; - } + if (yych == '"') goto yy26; + goto yy31; } +yy7: + YYDEBUG(7, yych); + yyleng = (size_t) YYCURSOR - (size_t) yytext; + { + phpdbg_init_param(yylval, STR_PARAM); + yylval->str = estrndup(yytext, yyleng); + yylval->len = yyleng; + return T_ID; +} yy8: YYDEBUG(8, yych); - yyaccept = 1; + yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= ',') goto yy9; if (yych <= '-') { YYCTXMARKER = YYCURSOR; - goto yy35; + goto yy36; } YYCTXMARKER = YYCURSOR; - goto yy36; + goto yy37; } else { if (yych <= '/') goto yy9; if (yych <= '9') { YYCTXMARKER = YYCURSOR; - goto yy36; + goto yy37; } } yy9: @@ -381,19 +377,26 @@ } yy10: YYDEBUG(10, yych); - yych = *++YYCURSOR; - if (yych == '\'') goto yy26; - goto yy39; + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '\n') { + if (yych <= 0x00) goto yy7; + if (yych <= '\t') goto yy40; + goto yy7; + } else { + if (yych == '\'') goto yy26; + goto yy40; + } yy11: YYDEBUG(11, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yybm_NORMAL[0+yych] & 1) goto yy12; - if (yych == 'r') goto yy44; + if (yych == 'r') goto yy45; goto yy3; yy12: YYDEBUG(12, yych); - yyaccept = 2; + yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; @@ -414,7 +417,7 @@ } else { if (yych <= '\'') goto yy26; if (yych <= '/') goto yy2; - if (yych <= ':') goto yy28; + if (yych <= ':') goto yy29; goto yy2; } } @@ -428,7 +431,7 @@ } yy14: YYDEBUG(14, yych); - yyaccept = 2; + yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); if (yybm_NORMAL[0+yych] & 1) goto yy12; if (yych <= 0x1F) { @@ -446,65 +449,65 @@ if (yych <= '"') goto yy3; goto yy13; } else { - if (yych == 'x') goto yy45; + if (yych == 'x') goto yy46; goto yy3; } } yy15: YYDEBUG(15, yych); yych = *++YYCURSOR; - if (yych == ':') goto yy47; - if (yych == '\\') goto yy48; - goto yy46; + if (yych == ':') goto yy48; + if (yych == '\\') goto yy49; + goto yy47; yy16: YYDEBUG(16, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'I') goto yy49; - if (yych == 'i') goto yy49; + if (yych == 'I') goto yy50; + if (yych == 'i') goto yy50; goto yy3; yy17: YYDEBUG(17, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'N') goto yy50; - if (yych == 'n') goto yy50; + if (yych == 'N') goto yy51; + if (yych == 'n') goto yy51; goto yy3; yy18: YYDEBUG(18, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'A') goto yy51; - if (yych == 'a') goto yy51; + if (yych == 'A') goto yy52; + if (yych == 'a') goto yy52; goto yy3; yy19: YYDEBUG(19, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'F') goto yy52; - if (yych == 'f') goto yy52; + if (yych == 'F') goto yy53; + if (yych == 'f') goto yy53; goto yy3; yy20: YYDEBUG(20, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'O') goto yy53; - if (yych == 'o') goto yy53; + if (yych == 'O') goto yy54; + if (yych == 'o') goto yy54; goto yy3; yy21: YYDEBUG(21, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { - if (yych == 'F') goto yy54; + if (yych == 'F') goto yy55; if (yych <= 'M') goto yy3; - goto yy55; + goto yy56; } else { if (yych <= 'f') { if (yych <= 'e') goto yy3; - goto yy54; + goto yy55; } else { - if (yych == 'n') goto yy55; + if (yych == 'n') goto yy56; goto yy3; } } @@ -512,27 +515,27 @@ YYDEBUG(22, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'R') goto yy56; - if (yych == 'r') goto yy56; + if (yych == 'R') goto yy57; + if (yych == 'r') goto yy57; goto yy3; yy23: YYDEBUG(23, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy57; - if (yych == 'e') goto yy57; + if (yych == 'E') goto yy58; + if (yych == 'e') goto yy58; goto yy3; yy24: YYDEBUG(24, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy58; + if (yych == 'E') goto yy59; goto yy3; yy25: YYDEBUG(25, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'e') goto yy59; + if (yych == 'e') goto yy60; goto yy3; yy26: YYDEBUG(26, yych); @@ -542,202 +545,221 @@ yy27: YYDEBUG(27, yych); if (yybm_NORMAL[0+yych] & 2) goto yy26; - if (yych <= '#') goto yy7; - goto yy60; + if (yych >= '$') goto yy61; yy28: YYDEBUG(28, yych); - yych = *++YYCURSOR; - if (yych == '/') goto yy61; - if (yych == '\\') goto yy48; - goto yy7; + YYCURSOR = YYMARKER; + if (yyaccept <= 3) { + if (yyaccept <= 1) { + if (yyaccept == 0) goto yy4; + else goto yy7; + } else { + if (yyaccept == 2) goto yy9; + else goto yy13; + } + } else { + if (yyaccept <= 5) { + if (yyaccept == 4) goto yy72; + else goto yy74; + } else { + if (yyaccept == 6) goto yy86; + else goto yy101; + } + } yy29: YYDEBUG(29, yych); + yych = *++YYCURSOR; + if (yych == '/') goto yy62; + if (yych == '\\') goto yy49; + goto yy28; +yy30: + YYDEBUG(30, yych); ++YYCURSOR; YYFILL(4); yych = *YYCURSOR; -yy30: - YYDEBUG(30, yych); - if (yybm_NORMAL[0+yych] & 4) goto yy29; +yy31: + YYDEBUG(31, yych); + if (yybm_NORMAL[0+yych] & 4) goto yy30; if (yych <= ' ') { - if (yych <= 0x00) goto yy7; - if (yych == '\n') goto yy7; + if (yych <= 0x00) goto yy28; + if (yych == '\n') goto yy28; } else { - if (yych <= '"') goto yy62; - if (yych <= '#') goto yy31; - if (yych <= ':') goto yy33; - goto yy34; + if (yych <= '"') goto yy63; + if (yych <= '#') goto yy32; + if (yych <= ':') goto yy34; + goto yy35; } -yy31: - YYDEBUG(31, yych); +yy32: + YYDEBUG(32, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy32: - YYDEBUG(32, yych); - if (yybm_NORMAL[0+yych] & 8) goto yy31; - if (yych <= '\n') goto yy7; - if (yych <= '"') goto yy63; - goto yy64; yy33: YYDEBUG(33, yych); - yych = *++YYCURSOR; - if (yych == '/') goto yy65; - goto yy32; + if (yybm_NORMAL[0+yych] & 8) goto yy32; + if (yych <= '\n') goto yy28; + if (yych <= '"') goto yy64; + goto yy65; yy34: YYDEBUG(34, yych); + yych = *++YYCURSOR; + if (yych == '/') goto yy66; + goto yy33; +yy35: + YYDEBUG(35, yych); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; if (yych <= ' ') { if (yych <= '\n') { - if (yych <= 0x00) goto yy7; + if (yych <= 0x00) goto yy28; if (yych <= 0x08) goto yy26; - goto yy7; + goto yy28; } else { - if (yych == '\r') goto yy7; + if (yych == '\r') goto yy28; if (yych <= 0x1F) goto yy26; - goto yy7; + goto yy28; } } else { if (yych <= '9') { if (yych <= '!') goto yy26; - if (yych <= '"') goto yy29; - if (yych <= '#') goto yy7; + if (yych <= '"') goto yy30; + if (yych <= '#') goto yy28; goto yy26; } else { - if (yych <= ':') goto yy60; - if (yych == '\\') goto yy29; + if (yych <= ':') goto yy61; + if (yych == '\\') goto yy30; goto yy26; } } -yy35: - YYDEBUG(35, yych); - yych = *++YYCURSOR; - if (yych == '.') goto yy36; - if (yych <= '/') goto yy7; - if (yych >= ':') goto yy7; yy36: YYDEBUG(36, yych); + yych = *++YYCURSOR; + if (yych == '.') goto yy37; + if (yych <= '/') goto yy28; + if (yych >= ':') goto yy28; +yy37: + YYDEBUG(37, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yych == '.') goto yy36; - if (yych <= '/') goto yy37; - if (yych <= '9') goto yy36; -yy37: - YYDEBUG(37, yych); + if (yych == '.') goto yy37; + if (yych <= '/') goto yy38; + if (yych <= '9') goto yy37; +yy38: + YYDEBUG(38, yych); YYCURSOR = YYCTXMARKER; yyleng = (size_t) YYCURSOR - (size_t) yytext; { return T_POUND; } -yy38: - YYDEBUG(38, yych); +yy39: + YYDEBUG(39, yych); ++YYCURSOR; YYFILL(4); yych = *YYCURSOR; -yy39: - YYDEBUG(39, yych); - if (yybm_NORMAL[0+yych] & 16) goto yy38; +yy40: + YYDEBUG(40, yych); + if (yybm_NORMAL[0+yych] & 16) goto yy39; if (yych <= '\n') { - if (yych <= 0x00) goto yy7; - if (yych >= '\n') goto yy7; + if (yych <= 0x00) goto yy28; + if (yych >= '\n') goto yy28; } else { - if (yych <= '#') goto yy40; - if (yych <= '\'') goto yy62; - if (yych <= ':') goto yy42; - goto yy43; + if (yych <= '#') goto yy41; + if (yych <= '\'') goto yy63; + if (yych <= ':') goto yy43; + goto yy44; } -yy40: - YYDEBUG(40, yych); +yy41: + YYDEBUG(41, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy41: - YYDEBUG(41, yych); - if (yybm_NORMAL[0+yych] & 32) goto yy40; - if (yych <= '\n') goto yy7; - if (yych <= '\'') goto yy63; - goto yy66; yy42: YYDEBUG(42, yych); - yych = *++YYCURSOR; - if (yych == '/') goto yy67; - goto yy41; + if (yybm_NORMAL[0+yych] & 32) goto yy41; + if (yych <= '\n') goto yy28; + if (yych <= '\'') goto yy64; + goto yy67; yy43: YYDEBUG(43, yych); + yych = *++YYCURSOR; + if (yych == '/') goto yy68; + goto yy42; +yy44: + YYDEBUG(44, yych); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; if (yych <= '"') { if (yych <= '\f') { - if (yych <= 0x00) goto yy7; + if (yych <= 0x00) goto yy28; if (yych <= 0x08) goto yy26; - if (yych <= '\n') goto yy7; + if (yych <= '\n') goto yy28; goto yy26; } else { - if (yych <= '\r') goto yy7; - if (yych == ' ') goto yy7; + if (yych <= '\r') goto yy28; + if (yych == ' ') goto yy28; goto yy26; } } else { if (yych <= '9') { - if (yych <= '#') goto yy7; - if (yych == '\'') goto yy38; + if (yych <= '#') goto yy28; + if (yych == '\'') goto yy39; goto yy26; } else { - if (yych <= ':') goto yy60; - if (yych == '\\') goto yy38; + if (yych <= ':') goto yy61; + if (yych == '\\') goto yy39; goto yy26; } } -yy44: - YYDEBUG(44, yych); +yy45: + YYDEBUG(45, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { if (yych <= '\f') { - if (yych == '\t') goto yy68; + if (yych == '\t') goto yy69; goto yy3; } else { - if (yych <= '\r') goto yy68; + if (yych <= '\r') goto yy69; if (yych <= 0x1F) goto yy3; - goto yy68; + goto yy69; } } else { if (yych <= '.') { if (yych <= ',') goto yy3; - if (yych <= '-') goto yy69; - goto yy70; + if (yych <= '-') goto yy70; + goto yy71; } else { if (yych <= '/') goto yy3; - if (yych <= '9') goto yy70; + if (yych <= '9') goto yy71; goto yy3; } } -yy45: - YYDEBUG(45, yych); +yy46: + YYDEBUG(46, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yybm_NORMAL[0+yych] & 64) goto yy72; + if (yybm_NORMAL[0+yych] & 64) goto yy73; goto yy3; -yy46: - YYDEBUG(46, yych); +yy47: + YYDEBUG(47, yych); ++YYCURSOR; YYCURSOR -= 1; yyleng = (size_t) YYCURSOR - (size_t) yytext; { return T_COLON; } -yy47: - YYDEBUG(47, yych); +yy48: + YYDEBUG(48, yych); ++YYCURSOR; yyleng = (size_t) YYCURSOR - (size_t) yytext; { return T_DCOLON; } -yy48: - YYDEBUG(48, yych); +yy49: + YYDEBUG(49, yych); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(1); @@ -745,65 +767,51 @@ if (yych <= ' ') { if (yych <= '\n') { if (yych <= 0x00) goto yy4; - if (yych <= 0x08) goto yy48; + if (yych <= 0x08) goto yy49; goto yy4; } else { if (yych == '\r') goto yy4; - if (yych <= 0x1F) goto yy48; + if (yych <= 0x1F) goto yy49; goto yy4; } } else { if (yych <= '&') { - if (yych <= '!') goto yy48; + if (yych <= '!') goto yy49; if (yych <= '#') goto yy4; - goto yy48; + goto yy49; } else { if (yych <= '\'') goto yy4; - if (yych == ':') goto yy74; - goto yy48; + if (yych == ':') goto yy75; + goto yy49; } } -yy49: - YYDEBUG(49, yych); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'S') goto yy75; - if (yych == 's') goto yy75; - goto yy3; yy50: YYDEBUG(50, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'A') goto yy76; - if (yych == 'a') goto yy76; + if (yych == 'S') goto yy76; + if (yych == 's') goto yy76; goto yy3; yy51: YYDEBUG(51, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'L') goto yy77; - if (yych == 'l') goto yy77; + if (yych == 'A') goto yy77; + if (yych == 'a') goto yy77; goto yy3; yy52: YYDEBUG(52, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '\f') { - if (yych == '\t') goto yy78; - goto yy3; - } else { - if (yych <= '\r') goto yy78; - if (yych == ' ') goto yy78; - goto yy3; - } + if (yych == 'L') goto yy78; + if (yych == 'l') goto yy78; + goto yy3; yy53: YYDEBUG(53, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '\f') { - if (yych <= 0x00) goto yy79; - if (yych <= 0x08) goto yy3; - if (yych <= '\n') goto yy79; + if (yych == '\t') goto yy79; goto yy3; } else { if (yych <= '\r') goto yy79; @@ -814,13 +822,6 @@ YYDEBUG(54, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'F') goto yy53; - if (yych == 'f') goto yy53; - goto yy3; -yy55: - YYDEBUG(55, yych); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); if (yych <= '\f') { if (yych <= 0x00) goto yy80; if (yych <= 0x08) goto yy3; @@ -831,43 +832,64 @@ if (yych == ' ') goto yy80; goto yy3; } +yy55: + YYDEBUG(55, yych); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'F') goto yy54; + if (yych == 'f') goto yy54; + goto yy3; yy56: YYDEBUG(56, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'U') goto yy81; - if (yych == 'u') goto yy81; - goto yy3; + if (yych <= '\f') { + if (yych <= 0x00) goto yy81; + if (yych <= 0x08) goto yy3; + if (yych <= '\n') goto yy81; + goto yy3; + } else { + if (yych <= '\r') goto yy81; + if (yych == ' ') goto yy81; + goto yy3; + } yy57: YYDEBUG(57, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'S') goto yy55; - if (yych == 's') goto yy55; + if (yych == 'U') goto yy82; + if (yych == 'u') goto yy82; goto yy3; yy58: YYDEBUG(58, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'N') goto yy82; + if (yych == 'S') goto yy56; + if (yych == 's') goto yy56; goto yy3; yy59: YYDEBUG(59, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'n') goto yy83; + if (yych == 'N') goto yy83; goto yy3; yy60: YYDEBUG(60, yych); - yych = *++YYCURSOR; - if (yych != '/') goto yy7; + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'n') goto yy84; + goto yy3; yy61: YYDEBUG(61, yych); yych = *++YYCURSOR; - if (yych == '/') goto yy84; - goto yy7; + if (yych != '/') goto yy28; yy62: YYDEBUG(62, yych); + yych = *++YYCURSOR; + if (yych == '/') goto yy85; + goto yy28; +yy63: + YYDEBUG(63, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '\r') { @@ -888,106 +910,106 @@ goto yy27; } } -yy63: - YYDEBUG(63, yych); - ++YYCURSOR; - goto yy4; yy64: YYDEBUG(64, yych); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yych == '"') goto yy31; - if (yych == '\\') goto yy31; - goto yy7; + goto yy4; yy65: YYDEBUG(65, yych); - yych = *++YYCURSOR; - if (yych == '/') goto yy86; - goto yy32; -yy66: - YYDEBUG(66, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yych == '\'') goto yy40; - if (yych == '\\') goto yy40; - goto yy7; -yy67: - YYDEBUG(67, yych); + if (yych == '"') goto yy32; + if (yych == '\\') goto yy32; + goto yy28; +yy66: + YYDEBUG(66, yych); yych = *++YYCURSOR; if (yych == '/') goto yy87; - goto yy41; + goto yy33; +yy67: + YYDEBUG(67, yych); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + if (yych == '\'') goto yy41; + if (yych == '\\') goto yy41; + goto yy28; yy68: YYDEBUG(68, yych); + yych = *++YYCURSOR; + if (yych == '/') goto yy88; + goto yy42; +yy69: + YYDEBUG(69, yych); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; if (yych <= ' ') { if (yych <= '\f') { - if (yych == '\t') goto yy68; - goto yy7; + if (yych == '\t') goto yy69; + goto yy28; } else { - if (yych <= '\r') goto yy68; - if (yych <= 0x1F) goto yy7; - goto yy68; + if (yych <= '\r') goto yy69; + if (yych <= 0x1F) goto yy28; + goto yy69; } } else { if (yych <= '.') { - if (yych <= ',') goto yy7; - if (yych <= '-') goto yy88; - goto yy89; - } else { - if (yych <= '/') goto yy7; - if (yych <= '9') goto yy89; - goto yy7; + if (yych <= ',') goto yy28; + if (yych <= '-') goto yy89; + goto yy90; + } else { + if (yych <= '/') goto yy28; + if (yych <= '9') goto yy90; + goto yy28; } } -yy69: - YYDEBUG(69, yych); +yy70: + YYDEBUG(70, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy70; + if (yych == '.') goto yy71; if (yych <= '/') goto yy3; if (yych >= ':') goto yy3; -yy70: - YYDEBUG(70, yych); - yyaccept = 3; +yy71: + YYDEBUG(71, yych); + yyaccept = 4; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; if (yych <= '"') { if (yych <= '\f') { - if (yych <= 0x00) goto yy71; + if (yych <= 0x00) goto yy72; if (yych <= 0x08) goto yy2; if (yych >= '\v') goto yy2; } else { if (yych <= 0x1F) { if (yych >= 0x0E) goto yy2; } else { - if (yych <= ' ') goto yy71; + if (yych <= ' ') goto yy72; if (yych <= '!') goto yy2; goto yy26; } } } else { if (yych <= '-') { - if (yych <= '#') goto yy71; + if (yych <= '#') goto yy72; if (yych == '\'') goto yy26; goto yy2; } else { if (yych <= '/') { - if (yych <= '.') goto yy70; + if (yych <= '.') goto yy71; goto yy2; } else { - if (yych <= '9') goto yy70; - if (yych <= ':') goto yy28; + if (yych <= '9') goto yy71; + if (yych <= ':') goto yy29; goto yy2; } } } -yy71: - YYDEBUG(71, yych); +yy72: + YYDEBUG(72, yych); yyleng = (size_t) YYCURSOR - (size_t) yytext; { char *text = yytext + 2; @@ -995,19 +1017,19 @@ yylval->num = atoi(text); return T_REQ_ID; } -yy72: - YYDEBUG(72, yych); - yyaccept = 4; +yy73: + YYDEBUG(73, yych); + yyaccept = 5; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - if (yybm_NORMAL[0+yych] & 64) goto yy72; + if (yybm_NORMAL[0+yych] & 64) goto yy73; if (yych <= ' ') { if (yych <= '\n') { - if (yych <= 0x00) goto yy73; + if (yych <= 0x00) goto yy74; if (yych <= 0x08) goto yy2; } else { - if (yych == '\r') goto yy73; + if (yych == '\r') goto yy74; if (yych <= 0x1F) goto yy2; } } else { @@ -1018,56 +1040,56 @@ } else { if (yych <= '\'') goto yy26; if (yych <= '/') goto yy2; - if (yych <= ':') goto yy28; + if (yych <= ':') goto yy29; goto yy2; } } -yy73: - YYDEBUG(73, yych); +yy74: + YYDEBUG(74, yych); yyleng = (size_t) YYCURSOR - (size_t) yytext; { phpdbg_init_param(yylval, ADDR_PARAM); yylval->addr = strtoul(yytext, 0, 16); return T_ADDR; } -yy74: - YYDEBUG(74, yych); +yy75: + YYDEBUG(75, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yych == '\\') goto yy48; - goto yy7; -yy75: - YYDEBUG(75, yych); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'A') goto yy90; - if (yych == 'a') goto yy90; - goto yy3; + if (yych == '\\') goto yy49; + goto yy28; yy76: YYDEBUG(76, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'B') goto yy91; - if (yych == 'b') goto yy91; + if (yych == 'A') goto yy91; + if (yych == 'a') goto yy91; goto yy3; yy77: YYDEBUG(77, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'S') goto yy92; - if (yych == 's') goto yy92; + if (yych == 'B') goto yy92; + if (yych == 'b') goto yy92; goto yy3; yy78: YYDEBUG(78, yych); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'S') goto yy93; + if (yych == 's') goto yy93; + goto yy3; +yy79: + YYDEBUG(79, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yych <= '\f') { - if (yych == '\t') goto yy78; + if (yych == '\t') goto yy79; } else { - if (yych <= '\r') goto yy78; - if (yych == ' ') goto yy78; + if (yych <= '\r') goto yy79; + if (yych == ' ') goto yy79; } yyleng = (size_t) YYCURSOR - (size_t) yytext; { @@ -1075,8 +1097,8 @@ phpdbg_init_param(yylval, EMPTY_PARAM); return T_IF; } -yy79: - YYDEBUG(79, yych); +yy80: + YYDEBUG(80, yych); ++YYCURSOR; YYCURSOR -= 1; yyleng = (size_t) YYCURSOR - (size_t) yytext; @@ -1085,8 +1107,8 @@ yylval->num = 0; return T_FALSY; } -yy80: - YYDEBUG(80, yych); +yy81: + YYDEBUG(81, yych); ++YYCURSOR; YYCURSOR -= 1; yyleng = (size_t) YYCURSOR - (size_t) yytext; @@ -1095,30 +1117,30 @@ yylval->num = 1; return T_TRUTHY; } -yy81: - YYDEBUG(81, yych); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy55; - if (yych == 'e') goto yy55; - goto yy3; yy82: YYDEBUG(82, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'D') goto yy93; + if (yych == 'E') goto yy56; + if (yych == 'e') goto yy56; goto yy3; yy83: YYDEBUG(83, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'd') goto yy93; + if (yych == 'D') goto yy94; goto yy3; yy84: YYDEBUG(84, yych); - ++YYCURSOR; + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'd') goto yy94; + goto yy3; yy85: YYDEBUG(85, yych); + ++YYCURSOR; +yy86: + YYDEBUG(86, yych); yyleng = (size_t) YYCURSOR - (size_t) yytext; { phpdbg_init_param(yylval, STR_PARAM); @@ -1126,109 +1148,109 @@ yylval->len = yyleng; return T_PROTO; } -yy86: - YYDEBUG(86, yych); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x00) goto yy85; - if (yych == '\n') goto yy85; - goto yy32; yy87: YYDEBUG(87, yych); - yyaccept = 5; + yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x00) goto yy85; - if (yych == '\n') goto yy85; - goto yy41; + if (yych <= 0x00) goto yy86; + if (yych == '\n') goto yy86; + goto yy33; yy88: YYDEBUG(88, yych); - yych = *++YYCURSOR; - if (yych == '.') goto yy89; - if (yych <= '/') goto yy7; - if (yych >= ':') goto yy7; + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x00) goto yy86; + if (yych == '\n') goto yy86; + goto yy42; yy89: YYDEBUG(89, yych); + yych = *++YYCURSOR; + if (yych == '.') goto yy90; + if (yych <= '/') goto yy28; + if (yych >= ':') goto yy28; +yy90: + YYDEBUG(90, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yych == '.') goto yy89; - if (yych <= '/') goto yy71; - if (yych <= '9') goto yy89; - goto yy71; -yy90: - YYDEBUG(90, yych); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'B') goto yy94; - if (yych == 'b') goto yy94; - goto yy3; + if (yych == '.') goto yy90; + if (yych <= '/') goto yy72; + if (yych <= '9') goto yy90; + goto yy72; yy91: YYDEBUG(91, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'L') goto yy95; - if (yych == 'l') goto yy95; + if (yych == 'B') goto yy95; + if (yych == 'b') goto yy95; goto yy3; yy92: YYDEBUG(92, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy53; - if (yych == 'e') goto yy53; + if (yych == 'L') goto yy96; + if (yych == 'l') goto yy96; goto yy3; yy93: YYDEBUG(93, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '_') goto yy96; + if (yych == 'E') goto yy54; + if (yych == 'e') goto yy54; goto yy3; yy94: YYDEBUG(94, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'L') goto yy97; - if (yych == 'l') goto yy97; + if (yych == '_') goto yy97; goto yy3; yy95: YYDEBUG(95, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy98; - if (yych == 'e') goto yy98; + if (yych == 'L') goto yy98; + if (yych == 'l') goto yy98; goto yy3; yy96: YYDEBUG(96, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yybm_NORMAL[0+yych] & 128) goto yy99; + if (yych == 'E') goto yy99; + if (yych == 'e') goto yy99; goto yy3; yy97: YYDEBUG(97, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy101; - if (yych == 'e') goto yy101; + if (yybm_NORMAL[0+yych] & 128) goto yy100; goto yy3; yy98: YYDEBUG(98, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'D') goto yy55; - if (yych == 'd') goto yy55; + if (yych == 'E') goto yy102; + if (yych == 'e') goto yy102; goto yy3; yy99: YYDEBUG(99, yych); - yyaccept = 6; + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'D') goto yy56; + if (yych == 'd') goto yy56; + goto yy3; +yy100: + YYDEBUG(100, yych); + yyaccept = 7; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - if (yybm_NORMAL[0+yych] & 128) goto yy99; + if (yybm_NORMAL[0+yych] & 128) goto yy100; if (yych <= ' ') { if (yych <= '\n') { - if (yych <= 0x00) goto yy100; + if (yych <= 0x00) goto yy101; if (yych <= 0x08) goto yy2; } else { - if (yych == '\r') goto yy100; + if (yych == '\r') goto yy101; if (yych <= 0x1F) goto yy2; } } else { @@ -1238,12 +1260,12 @@ if (yych >= '$') goto yy2; } else { if (yych <= '\'') goto yy26; - if (yych == ':') goto yy28; + if (yych == ':') goto yy29; goto yy2; } } -yy100: - YYDEBUG(100, yych); +yy101: + YYDEBUG(101, yych); yyleng = (size_t) YYCURSOR - (size_t) yytext; { phpdbg_init_param(yylval, OP_PARAM); @@ -1251,31 +1273,31 @@ yylval->len = yyleng; return T_OPCODE; } -yy101: - YYDEBUG(101, yych); +yy102: + YYDEBUG(102, yych); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'D') goto yy53; - if (yych == 'd') goto yy53; + if (yych == 'D') goto yy54; + if (yych == 'd') goto yy54; goto yy3; /* *********************************** */ yyc_PRE_RAW: YYFILL(2); yych = *YYCURSOR; - YYDEBUG(102, yych); + YYDEBUG(103, yych); if (yych <= '\r') { - if (yych == '\t') goto yy104; - if (yych >= '\r') goto yy104; + if (yych == '\t') goto yy105; + if (yych >= '\r') goto yy105; } else { if (yych <= ' ') { - if (yych >= ' ') goto yy105; + if (yych >= ' ') goto yy106; } else { - if (yych == '-') goto yy106; + if (yych == '-') goto yy107; } } ++YYCURSOR; -yy103: - YYDEBUG(103, yych); +yy104: + YYDEBUG(104, yych); yyleng = (size_t) YYCURSOR - (size_t) yytext; { YYSETCONDITION(RAW); @@ -1283,58 +1305,58 @@ YYCURSOR = LEX(text); goto restart; } -yy104: - YYDEBUG(104, yych); - yych = *++YYCURSOR; - if (yybm_PRE_RAW[0+yych] & 64) goto yy105; - goto yy103; yy105: YYDEBUG(105, yych); + yych = *++YYCURSOR; + if (yybm_PRE_RAW[0+yych] & 64) goto yy106; + goto yy104; +yy106: + YYDEBUG(106, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yybm_PRE_RAW[0+yych] & 64) goto yy105; + if (yybm_PRE_RAW[0+yych] & 64) goto yy106; yyleng = (size_t) YYCURSOR - (size_t) yytext; { /* ignore whitespace */ goto restart; } -yy106: - YYDEBUG(106, yych); - yych = *(YYMARKER = ++YYCURSOR); - if (yych != 'r') goto yy103; yy107: YYDEBUG(107, yych); + yych = *(YYMARKER = ++YYCURSOR); + if (yych != 'r') goto yy104; +yy108: + YYDEBUG(108, yych); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - if (yybm_PRE_RAW[0+yych] & 128) goto yy110; + if (yybm_PRE_RAW[0+yych] & 128) goto yy111; if (yych <= '\r') { - if (yych == '\t') goto yy107; - if (yych >= '\r') goto yy107; + if (yych == '\t') goto yy108; + if (yych >= '\r') goto yy108; } else { if (yych <= ' ') { - if (yych >= ' ') goto yy107; + if (yych >= ' ') goto yy108; } else { - if (yych == '-') goto yy109; + if (yych == '-') goto yy110; } } -yy108: - YYDEBUG(108, yych); - YYCURSOR = YYMARKER; - goto yy103; yy109: YYDEBUG(109, yych); - yych = *++YYCURSOR; - if (yybm_PRE_RAW[0+yych] & 128) goto yy110; - goto yy108; + YYCURSOR = YYMARKER; + goto yy104; yy110: YYDEBUG(110, yych); + yych = *++YYCURSOR; + if (yybm_PRE_RAW[0+yych] & 128) goto yy111; + goto yy109; +yy111: + YYDEBUG(111, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yybm_PRE_RAW[0+yych] & 128) goto yy110; + if (yybm_PRE_RAW[0+yych] & 128) goto yy111; yyleng = (size_t) YYCURSOR - (size_t) yytext; { char *text = yytext + 2; @@ -1346,33 +1368,33 @@ yyc_RAW: YYFILL(1); yych = *YYCURSOR; - YYDEBUG(111, yych); - if (yybm_RAW[0+yych] & 1) goto yy113; - if (yych <= '\n') goto yy112; - if (yych <= '"') goto yy115; - if (yych <= '#') goto yy117; - if (yych <= '\'') goto yy118; - goto yy119; -yy112: YYDEBUG(112, yych); + if (yybm_RAW[0+yych] & 1) goto yy114; + if (yych <= '\n') goto yy113; + if (yych <= '"') goto yy116; + if (yych <= '#') goto yy118; + if (yych <= '\'') goto yy119; + goto yy120; +yy113: + YYDEBUG(113, yych); ++YYCURSOR; yyleng = (size_t) YYCURSOR - (size_t) yytext; { return 0; } -yy113: - YYDEBUG(113, yych); +yy114: + YYDEBUG(114, yych); YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yybm_RAW[0+yych] & 1) goto yy113; - if (yych <= '\n') goto yy114; - if (yych <= '"') goto yy115; - if (yych <= '#') goto yy114; - if (yych <= '\'') goto yy118; - goto yy119; -yy114: - YYDEBUG(114, yych); + if (yybm_RAW[0+yych] & 1) goto yy114; + if (yych <= '\n') goto yy115; + if (yych <= '"') goto yy116; + if (yych <= '#') goto yy115; + if (yych <= '\'') goto yy119; + goto yy120; +yy115: + YYDEBUG(115, yych); yyleng = (size_t) YYCURSOR - (size_t) yytext; { phpdbg_init_param(yylval, STR_PARAM); @@ -1380,124 +1402,110 @@ yylval->len = yyleng; return T_INPUT; } -yy115: - YYDEBUG(115, yych); +yy116: + YYDEBUG(116, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yybm_RAW[0+yych] & 2) goto yy115; - if (yych <= '\n') goto yy116; - if (yych <= '"') goto yy113; - goto yy120; -yy116: - YYDEBUG(116, yych); - YYCURSOR = YYMARKER; - goto yy114; + if (yybm_RAW[0+yych] & 2) goto yy116; + if (yych <= '\n') goto yy117; + if (yych <= '"') goto yy114; + goto yy121; yy117: YYDEBUG(117, yych); + YYCURSOR = YYMARKER; + goto yy115; +yy118: + YYDEBUG(118, yych); ++YYCURSOR; yyleng = (size_t) YYCURSOR - (size_t) yytext; { YYSETCONDITION(INITIAL); return T_SEPARATOR; } -yy118: - YYDEBUG(118, yych); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yybm_RAW[0+yych] & 4) goto yy118; - if (yych <= '\n') goto yy116; - if (yych <= '\'') goto yy113; - goto yy121; yy119: YYDEBUG(119, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yybm_RAW[0+yych] & 8) goto yy119; - if (yych <= '!') { - if (yych <= 0x00) goto yy114; - if (yych == '\n') goto yy114; - goto yy113; - } else { - if (yych <= '"') goto yy122; - if (yych == '\'') goto yy123; - goto yy113; - } + if (yybm_RAW[0+yych] & 4) goto yy119; + if (yych <= '\n') goto yy117; + if (yych <= '\'') goto yy114; + goto yy122; yy120: YYDEBUG(120, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yybm_RAW[0+yych] & 2) goto yy115; - if (yych <= '\n') goto yy116; - if (yych <= '"') goto yy122; - goto yy120; + if (yybm_RAW[0+yych] & 8) goto yy120; + if (yych <= '!') { + if (yych <= 0x00) goto yy115; + if (yych == '\n') goto yy115; + goto yy114; + } else { + if (yych <= '"') goto yy123; + if (yych == '\'') goto yy124; + goto yy114; + } yy121: YYDEBUG(121, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yybm_RAW[0+yych] & 4) goto yy118; - if (yych <= '\n') goto yy116; - if (yych <= '\'') goto yy123; + if (yybm_RAW[0+yych] & 2) goto yy116; + if (yych <= '\n') goto yy117; + if (yych <= '"') goto yy123; goto yy121; yy122: YYDEBUG(122, yych); - YYMARKER = ++YYCURSOR; + ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yybm_RAW[0+yych] & 16) goto yy122; - if (yych <= '\n') goto yy114; - if (yych <= '#') goto yy115; + if (yybm_RAW[0+yych] & 4) goto yy119; + if (yych <= '\n') goto yy117; if (yych <= '\'') goto yy124; - goto yy125; + goto yy122; yy123: YYDEBUG(123, yych); YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yybm_RAW[0+yych] & 32) goto yy123; - if (yych <= '\n') goto yy114; - if (yych <= '"') goto yy124; - if (yych <= '#') goto yy118; + if (yybm_RAW[0+yych] & 16) goto yy123; + if (yych <= '\n') goto yy115; + if (yych <= '#') goto yy116; + if (yych <= '\'') goto yy125; goto yy126; yy124: YYDEBUG(124, yych); - ++YYCURSOR; + YYMARKER = ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yybm_RAW[0+yych] & 64) goto yy124; - if (yych <= '\n') goto yy116; - if (yych <= '"') goto yy123; - if (yych <= '\'') goto yy122; + if (yybm_RAW[0+yych] & 32) goto yy124; + if (yych <= '\n') goto yy115; + if (yych <= '"') goto yy125; + if (yych <= '#') goto yy119; goto yy127; yy125: YYDEBUG(125, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yych <= '&') { - if (yych <= 0x00) goto yy114; - if (yych == '\n') goto yy114; - goto yy122; - } else { - if (yych <= '\'') goto yy128; - if (yych == '\\') goto yy125; - goto yy122; - } + if (yybm_RAW[0+yych] & 64) goto yy125; + if (yych <= '\n') goto yy117; + if (yych <= '"') goto yy124; + if (yych <= '\'') goto yy123; + goto yy128; yy126: YYDEBUG(126, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yych <= '!') { - if (yych <= 0x00) goto yy114; - if (yych == '\n') goto yy114; + if (yych <= '&') { + if (yych <= 0x00) goto yy115; + if (yych == '\n') goto yy115; goto yy123; } else { - if (yych <= '"') goto yy128; + if (yych <= '\'') goto yy129; if (yych == '\\') goto yy126; goto yy123; } @@ -1506,62 +1514,76 @@ ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yybm_RAW[0+yych] & 64) goto yy124; - if (yych <= '\n') goto yy116; - if (yych >= '(') goto yy127; + if (yych <= '!') { + if (yych <= 0x00) goto yy115; + if (yych == '\n') goto yy115; + goto yy124; + } else { + if (yych <= '"') goto yy129; + if (yych == '\\') goto yy127; + goto yy124; + } yy128: YYDEBUG(128, yych); - YYMARKER = ++YYCURSOR; + ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yybm_RAW[0+yych] & 128) goto yy128; - if (yych <= '\n') goto yy114; - if (yych <= '#') goto yy124; + if (yybm_RAW[0+yych] & 64) goto yy125; + if (yych <= '\n') goto yy117; + if (yych >= '(') goto yy128; yy129: YYDEBUG(129, yych); + YYMARKER = ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + if (yybm_RAW[0+yych] & 128) goto yy129; + if (yych <= '\n') goto yy115; + if (yych <= '#') goto yy125; +yy130: + YYDEBUG(130, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yych <= '\n') { - if (yych <= 0x00) goto yy114; - if (yych <= '\t') goto yy128; - goto yy114; + if (yych <= 0x00) goto yy115; + if (yych <= '\t') goto yy129; + goto yy115; } else { - if (yych == '\\') goto yy129; - goto yy128; + if (yych == '\\') goto yy130; + goto yy129; } /* *********************************** */ yyc_INITIAL: YYFILL(4); yych = *YYCURSOR; - YYDEBUG(130, yych); + YYDEBUG(131, yych); if (yych <= 'E') { if (yych <= '\r') { - if (yych == '\t') goto yy133; - if (yych >= '\r') goto yy133; + if (yych == '\t') goto yy134; + if (yych >= '\r') goto yy134; } else { - if (yych == ' ') goto yy134; - if (yych >= 'E') goto yy135; + if (yych == ' ') goto yy135; + if (yych >= 'E') goto yy136; } } else { if (yych <= 'd') { - if (yych <= 'Q') goto yy131; - if (yych <= 'R') goto yy136; - if (yych <= 'S') goto yy137; + if (yych <= 'Q') goto yy132; + if (yych <= 'R') goto yy137; + if (yych <= 'S') goto yy138; } else { if (yych <= 'q') { - if (yych <= 'e') goto yy135; + if (yych <= 'e') goto yy136; } else { - if (yych <= 'r') goto yy138; - if (yych <= 's') goto yy137; + if (yych <= 'r') goto yy139; + if (yych <= 's') goto yy138; } } } -yy131: - YYDEBUG(131, yych); - ++YYCURSOR; yy132: YYDEBUG(132, yych); + ++YYCURSOR; +yy133: + YYDEBUG(133, yych); yyleng = (size_t) YYCURSOR - (size_t) yytext; { YYSETCONDITION(NORMAL); @@ -1569,102 +1591,102 @@ YYCURSOR = LEX(text); goto restart; } -yy133: - YYDEBUG(133, yych); - yych = *++YYCURSOR; - if (yybm_INITIAL[0+yych] & 128) goto yy134; - goto yy132; yy134: YYDEBUG(134, yych); + yych = *++YYCURSOR; + if (yybm_INITIAL[0+yych] & 128) goto yy135; + goto yy133; +yy135: + YYDEBUG(135, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - if (yybm_INITIAL[0+yych] & 128) goto yy134; + if (yybm_INITIAL[0+yych] & 128) goto yy135; yyleng = (size_t) YYCURSOR - (size_t) yytext; { /* ignore whitespace */ goto restart; } -yy135: - YYDEBUG(135, yych); - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'V') goto yy139; - if (yych == 'v') goto yy139; - goto yy132; yy136: YYDEBUG(136, yych); yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'U') goto yy141; - if (yych == 'u') goto yy141; - goto yy132; + if (yych == 'V') goto yy140; + if (yych == 'v') goto yy140; + goto yy133; yy137: YYDEBUG(137, yych); yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'H') goto yy142; - if (yych == 'h') goto yy142; - goto yy132; + if (yych == 'U') goto yy142; + if (yych == 'u') goto yy142; + goto yy133; yy138: YYDEBUG(138, yych); yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'H') goto yy143; + if (yych == 'h') goto yy143; + goto yy133; +yy139: + YYDEBUG(139, yych); + yych = *(YYMARKER = ++YYCURSOR); if (yych <= 0x1F) { if (yych <= '\t') { - if (yych <= 0x08) goto yy132; - goto yy143; + if (yych <= 0x08) goto yy133; + goto yy144; } else { - if (yych == '\r') goto yy143; - goto yy132; + if (yych == '\r') goto yy144; + goto yy133; } } else { if (yych <= 'U') { - if (yych <= ' ') goto yy143; - if (yych <= 'T') goto yy132; - goto yy141; + if (yych <= ' ') goto yy144; + if (yych <= 'T') goto yy133; + goto yy142; } else { - if (yych == 'u') goto yy141; - goto yy132; + if (yych == 'u') goto yy142; + goto yy133; } } -yy139: - YYDEBUG(139, yych); +yy140: + YYDEBUG(140, yych); yych = *++YYCURSOR; if (yych <= '\f') { - if (yych == '\t') goto yy144; + if (yych == '\t') goto yy145; } else { - if (yych <= '\r') goto yy144; - if (yych == ' ') goto yy144; + if (yych <= '\r') goto yy145; + if (yych == ' ') goto yy145; } -yy140: - YYDEBUG(140, yych); - YYCURSOR = YYMARKER; - goto yy132; yy141: YYDEBUG(141, yych); - yych = *++YYCURSOR; - if (yych == 'N') goto yy145; - if (yych == 'n') goto yy145; - goto yy140; + YYCURSOR = YYMARKER; + goto yy133; yy142: YYDEBUG(142, yych); yych = *++YYCURSOR; + if (yych == 'N') goto yy146; + if (yych == 'n') goto yy146; + goto yy141; +yy143: + YYDEBUG(143, yych); + yych = *++YYCURSOR; if (yych <= '\f') { - if (yych == '\t') goto yy146; - goto yy140; + if (yych == '\t') goto yy147; + goto yy141; } else { - if (yych <= '\r') goto yy146; - if (yych == ' ') goto yy146; - goto yy140; + if (yych <= '\r') goto yy147; + if (yych == ' ') goto yy147; + goto yy141; } -yy143: - YYDEBUG(143, yych); +yy144: + YYDEBUG(144, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yych <= '\f') { - if (yych == '\t') goto yy143; + if (yych == '\t') goto yy144; } else { - if (yych <= '\r') goto yy143; - if (yych == ' ') goto yy143; + if (yych <= '\r') goto yy144; + if (yych == ' ') goto yy144; } yyleng = (size_t) YYCURSOR - (size_t) yytext; { @@ -1672,16 +1694,16 @@ phpdbg_init_param(yylval, EMPTY_PARAM); return T_RUN; } -yy144: - YYDEBUG(144, yych); +yy145: + YYDEBUG(145, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yych <= '\f') { - if (yych == '\t') goto yy144; + if (yych == '\t') goto yy145; } else { - if (yych <= '\r') goto yy144; - if (yych == ' ') goto yy144; + if (yych <= '\r') goto yy145; + if (yych == ' ') goto yy145; } yyleng = (size_t) YYCURSOR - (size_t) yytext; { @@ -1689,27 +1711,27 @@ phpdbg_init_param(yylval, EMPTY_PARAM); return T_EVAL; } -yy145: - YYDEBUG(145, yych); +yy146: + YYDEBUG(146, yych); yych = *++YYCURSOR; if (yych <= '\f') { - if (yych == '\t') goto yy143; - goto yy140; + if (yych == '\t') goto yy144; + goto yy141; } else { - if (yych <= '\r') goto yy143; - if (yych == ' ') goto yy143; - goto yy140; + if (yych <= '\r') goto yy144; + if (yych == ' ') goto yy144; + goto yy141; } -yy146: - YYDEBUG(146, yych); +yy147: + YYDEBUG(147, yych); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yych <= '\f') { - if (yych == '\t') goto yy146; + if (yych == '\t') goto yy147; } else { - if (yych <= '\r') goto yy146; - if (yych == ' ') goto yy146; + if (yych <= '\r') goto yy147; + if (yych == ' ') goto yy147; } yyleng = (size_t) YYCURSOR - (size_t) yytext; { diff -Nru php8.4-8.4.23/sapi/phpdbg/phpdbg_lexer.l php8.4-8.4.24/sapi/phpdbg/phpdbg_lexer.l --- php8.4-8.4.23/sapi/phpdbg/phpdbg_lexer.l 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/sapi/phpdbg/phpdbg_lexer.l 2026-07-29 05:29:50.000000000 +0000 @@ -166,6 +166,13 @@ return T_ID; } +["'] { + phpdbg_init_param(yylval, STR_PARAM); + yylval->str = estrndup(yytext, yyleng); + yylval->len = yyleng; + return T_ID; +} + {INPUT} { phpdbg_init_param(yylval, STR_PARAM); yylval->str = estrdup(yytext); diff -Nru php8.4-8.4.23/sapi/phpdbg/phpdbg_utils.c php8.4-8.4.24/sapi/phpdbg/phpdbg_utils.c --- php8.4-8.4.23/sapi/phpdbg/phpdbg_utils.c 2026-07-01 04:28:00.000000000 +0000 +++ php8.4-8.4.24/sapi/phpdbg/phpdbg_utils.c 2026-07-29 05:29:50.000000000 +0000 @@ -397,29 +397,20 @@ int phpdbg_safe_class_lookup(const char *name, int name_length, zend_class_entry **ce) { if (PHPDBG_G(flags) & PHPDBG_IN_SIGNAL_HANDLER) { - char *lc_name, *lc_free; - int lc_length; - if (name == NULL || !name_length) { return FAILURE; } - lc_free = lc_name = emalloc(name_length + 1); - zend_str_tolower_copy(lc_name, name, name_length); - lc_length = name_length + 1; - - if (lc_name[0] == '\\') { - lc_name += 1; - lc_length -= 1; + if (name[0] == '\\') { + name += 1; + name_length -= 1; } phpdbg_try_access { - *ce = zend_hash_str_find_ptr(EG(class_table), lc_name, lc_length); + *ce = zend_hash_str_find_ptr_lc(EG(class_table), name, name_length); } phpdbg_catch_access { phpdbg_error("Could not fetch class %.*s, invalid data source", name_length, name); } phpdbg_end_try_access(); - - efree(lc_free); } else { zend_string *str_name = zend_string_init(name, name_length, 0); *ce = zend_lookup_class(str_name); diff -Nru php8.4-8.4.23/sapi/phpdbg/tests/gh17387.phpt php8.4-8.4.24/sapi/phpdbg/tests/gh17387.phpt --- php8.4-8.4.23/sapi/phpdbg/tests/gh17387.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/sapi/phpdbg/tests/gh17387.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,8 @@ +--TEST-- +GH-17387 (Trivial crash in phpdbg lexer) +--PHPDBG-- +a'; +q +--EXPECT-- +prompt> [The command "a" could not be found] +prompt> diff -Nru php8.4-8.4.23/sapi/phpdbg/tests/phpdbg_resolve_opline_break_leak.phpt php8.4-8.4.24/sapi/phpdbg/tests/phpdbg_resolve_opline_break_leak.phpt --- php8.4-8.4.23/sapi/phpdbg/tests/phpdbg_resolve_opline_break_leak.phpt 1970-01-01 00:00:00.000000000 +0000 +++ php8.4-8.4.24/sapi/phpdbg/tests/phpdbg_resolve_opline_break_leak.phpt 2026-07-29 05:29:50.000000000 +0000 @@ -0,0 +1,26 @@ +--TEST-- +Resolving method/function opline breakpoints must not leak the lookup keys +--PHPDBG-- +b Foo::bar#0 +b baz#0 +b Foo::nope#0 +b Nope::bar#0 +q +--EXPECTF-- +[Successful compilation of %s] +prompt> [Breakpoint #0 added at Foo::bar#0] +prompt> [Breakpoint #1 added at baz#0] +prompt> [Method nope doesn't exist in class Foo] +prompt> [Pending breakpoint #3 at Nope::bar#0] +prompt> +--FILE-- +