From 04a4864b655b6ace1150e512179f23ec0d47566f Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 24 Mar 2022 15:03:53 +0100 Subject: [PATCH 01/63] ext/opcache: merge redundant code and "bool" refactoring (#8237) * ext/opcache/ZendAccelerator: make check_persistent_script_access() static * ext/opcache/ZendAccelerator: convert "int" to "bool" * ext/opcache/zend_file_cache: convert "int" to "bool" * ext/opcache: use true/false for zend_persistent_script.corrupted * ext/opcache/ZendAccelerator: move duplicate code to zend_accel_discard_script() * ext/opcache/ZendAccelerator: convert accel_deactivate_now() to function Simplify the #iddef ZEND_WIN32. * ext/opcache/zend_file_cache: simplify iovec initializer * ext/opcache/zend_file_cache: add local zend_string* variables Eliminates lots of redundant casts and avoids reloading the variable from RAM into registers. * ext/opcache/zend_file_cache: use ZSTR_VAL() * ext/opcache/zend_file_cache: move code to zend_file_cache_script_write() This eliminates duplicate error handling code. --- ext/opcache/ZendAccelerator.c | 342 ++++++++++++++++---------------- ext/opcache/ZendAccelerator.h | 6 +- ext/opcache/zend_file_cache.c | 90 +++++---- ext/opcache/zend_file_cache.h | 2 +- ext/opcache/zend_persist.c | 6 +- ext/opcache/zend_persist_calc.c | 6 +- 6 files changed, 228 insertions(+), 224 deletions(-) diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index a533a074a2603..e17fc16a947b7 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -109,12 +109,12 @@ zend_accel_shared_globals *accel_shared_globals = NULL; #ifdef ZEND_WIN32 char accel_uname_id[32]; #endif -bool accel_startup_ok = 0; +bool accel_startup_ok = false; static char *zps_failure_reason = NULL; char *zps_api_failure_reason = NULL; -bool file_cache_only = 0; /* process uses file cache only */ +bool file_cache_only = false; /* process uses file cache only */ #if ENABLE_FILE_CACHE_FALLBACK -bool fallback_process = 0; /* process uses file cache fallback */ +bool fallback_process = false; /* process uses file cache fallback */ #endif static zend_op_array *(*accelerator_orig_compile_file)(zend_file_handle *file_handle, int type); @@ -185,7 +185,7 @@ static time_t zend_accel_get_time(void) # define zend_accel_get_time() time(NULL) #endif -static inline int is_stream_path(const char *filename) +static inline bool is_stream_path(const char *filename) { const char *p; @@ -198,7 +198,7 @@ static inline int is_stream_path(const char *filename) return ((p != filename) && (p[0] == ':') && (p[1] == '/') && (p[2] == '/')); } -static inline int is_cacheable_stream_path(const char *filename) +static inline bool is_cacheable_stream_path(const char *filename) { return memcmp(filename, "file://", sizeof("file://") - 1) == 0 || memcmp(filename, "phar://", sizeof("phar://") - 1) == 0; @@ -225,7 +225,7 @@ static ZEND_FUNCTION(accel_chdir) } } ZCG(cwd_key_len) = 0; - ZCG(cwd_check) = 1; + ZCG(cwd_check) = true; } static inline zend_string* accel_getcwd(void) @@ -240,7 +240,7 @@ static inline zend_string* accel_getcwd(void) } ZCG(cwd) = zend_string_init(cwd, strlen(cwd), 0); ZCG(cwd_key_len) = 0; - ZCG(cwd_check) = 1; + ZCG(cwd_check) = true; return ZCG(cwd); } } @@ -264,7 +264,7 @@ static ZEND_INI_MH(accel_include_path_on_modify) if (ret == SUCCESS) { ZCG(include_path) = new_value; ZCG(include_path_key_len) = 0; - ZCG(include_path_check) = 1; + ZCG(include_path_check) = true; } return ret; } @@ -285,13 +285,13 @@ static inline void accel_restart_enter(void) zend_accel_error(ACCEL_LOG_DEBUG, "RestartC(+1): %s (%d)", strerror(errno), errno); } #endif - ZCSG(restart_in_progress) = 1; + ZCSG(restart_in_progress) = true; } static inline void accel_restart_leave(void) { #ifdef ZEND_WIN32 - ZCSG(restart_in_progress) = 0; + ZCSG(restart_in_progress) = false; DECREMENT(restart_in); #else struct flock restart_finished; @@ -301,7 +301,7 @@ static inline void accel_restart_leave(void) restart_finished.l_start = 2; restart_finished.l_len = 1; - ZCSG(restart_in_progress) = 0; + ZCSG(restart_in_progress) = false; if (fcntl(lock_file, F_SETLK, &restart_finished) == -1) { zend_accel_error(ACCEL_LOG_DEBUG, "RestartC(-1): %s (%d)", strerror(errno), errno); } @@ -324,7 +324,7 @@ static inline int accel_restart_is_active(void) return FAILURE; } if (restart_check.l_type == F_UNLCK) { - ZCSG(restart_in_progress) = 0; + ZCSG(restart_in_progress) = false; return 0; } else { return 1; @@ -366,7 +366,7 @@ static inline void accel_deactivate_sub(void) if (ZCG(counted)) { SHM_UNPROTECT(); DECREMENT(mem_usage); - ZCG(counted) = 0; + ZCG(counted) = false; SHM_PROTECT(); } #else @@ -484,7 +484,7 @@ static zend_always_inline zend_string *accel_find_interned_string(zend_string *s if (!ZCG(accelerator_enabled) || accel_activate_add() == FAILURE) { return NULL; } - ZCG(counted) = 1; + ZCG(counted) = true; } h = zend_string_hash_val(str); @@ -802,9 +802,9 @@ static void accel_use_shm_interned_strings(void) if (ZCSG(interned_strings).saved_top == NULL) { accel_copy_permanent_strings(accel_new_interned_string); } else { - ZCG(counted) = 1; + ZCG(counted) = true; accel_copy_permanent_strings(accel_replace_string_by_shm_permanent); - ZCG(counted) = 0; + ZCG(counted) = false; } accel_interned_strings_save_state(); @@ -816,14 +816,14 @@ static void accel_use_shm_interned_strings(void) #ifndef ZEND_WIN32 static inline void kill_all_lockers(struct flock *mem_usage_check) { - int success, tries; + int tries; /* so that other process won't try to force while we are busy cleaning up */ ZCSG(force_restart_time) = 0; while (mem_usage_check->l_pid > 0) { /* Try SIGTERM first, switch to SIGKILL if not successful. */ int signal = SIGTERM; errno = 0; - success = 0; + bool success = false; tries = 10; while (tries--) { @@ -831,7 +831,7 @@ static inline void kill_all_lockers(struct flock *mem_usage_check) if (kill(mem_usage_check->l_pid, signal)) { if (errno == ESRCH) { /* Process died before the signal was sent */ - success = 1; + success = true; zend_accel_error(ACCEL_LOG_WARNING, "Process %d died before SIGKILL was sent", mem_usage_check->l_pid); } else if (errno != 0) { zend_accel_error(ACCEL_LOG_WARNING, "Failed to send SIGKILL to locker %d: %s", mem_usage_check->l_pid, strerror(errno)); @@ -843,7 +843,7 @@ static inline void kill_all_lockers(struct flock *mem_usage_check) if (kill(mem_usage_check->l_pid, 0)) { if (errno == ESRCH) { /* successfully killed locker, process no longer exists */ - success = 1; + success = true; zend_accel_error(ACCEL_LOG_WARNING, "Killed locker %d", mem_usage_check->l_pid); } else if (errno != 0) { zend_accel_error(ACCEL_LOG_WARNING, "Failed to check locker %d: %s", mem_usage_check->l_pid, strerror(errno)); @@ -1211,7 +1211,7 @@ zend_string *accel_make_persistent_key(zend_string *str) cwd = ZSTR_VAL(cwd_str); cwd_len = ZSTR_LEN(cwd_str); if (ZCG(cwd_check)) { - ZCG(cwd_check) = 0; + ZCG(cwd_check) = false; if (ZCG(accelerator_enabled)) { zend_string *str = accel_find_interned_string(cwd_str); @@ -1255,7 +1255,7 @@ zend_string *accel_make_persistent_key(zend_string *str) include_path_len = ZSTR_LEN(ZCG(include_path)); if (ZCG(include_path_check)) { - ZCG(include_path_check) = 0; + ZCG(include_path_check) = false; if (ZCG(accelerator_enabled)) { zend_string *str = accel_find_interned_string(ZCG(include_path)); @@ -1342,6 +1342,40 @@ zend_string *accel_make_persistent_key(zend_string *str) return str; } +/** + * Discard a #zend_persistent_script currently stored in shared + * memory. + * + * Caller must lock shared memory via zend_shared_alloc_lock(). + */ +static void zend_accel_discard_script(zend_persistent_script *persistent_script) +{ + if (persistent_script->corrupted) { + /* already discarded */ + return; + } + + persistent_script->corrupted = true; + persistent_script->timestamp = 0; + ZSMMG(wasted_shared_memory) += persistent_script->dynamic_members.memory_consumption; + if (ZSMMG(memory_exhausted)) { + zend_accel_restart_reason reason = + zend_accel_hash_is_full(&ZCSG(hash)) ? ACCEL_RESTART_HASH : ACCEL_RESTART_OOM; + zend_accel_schedule_restart_if_necessary(reason); + } +} + +/** + * Wrapper for zend_accel_discard_script() which locks shared memory + * via zend_shared_alloc_lock(). + */ +static void zend_accel_lock_discard_script(zend_persistent_script *persistent_script) +{ + zend_shared_alloc_lock(); + zend_accel_discard_script(persistent_script); + zend_shared_alloc_unlock(); +} + int zend_accel_invalidate(zend_string *filename, bool force) { zend_string *realpath; @@ -1372,18 +1406,7 @@ int zend_accel_invalidate(zend_string *filename, bool force) do_validate_timestamps(persistent_script, &file_handle) == FAILURE) { HANDLE_BLOCK_INTERRUPTIONS(); SHM_UNPROTECT(); - zend_shared_alloc_lock(); - if (!persistent_script->corrupted) { - persistent_script->corrupted = 1; - persistent_script->timestamp = 0; - ZSMMG(wasted_shared_memory) += persistent_script->dynamic_members.memory_consumption; - if (ZSMMG(memory_exhausted)) { - zend_accel_restart_reason reason = - zend_accel_hash_is_full(&ZCSG(hash)) ? ACCEL_RESTART_HASH : ACCEL_RESTART_OOM; - zend_accel_schedule_restart_if_necessary(reason); - } - } - zend_shared_alloc_unlock(); + zend_accel_lock_discard_script(persistent_script); SHM_PROTECT(); HANDLE_UNBLOCK_INTERRUPTIONS(); } @@ -1427,7 +1450,7 @@ static void zend_accel_add_key(zend_string *key, zend_accel_hash_entry *bucket) if (!zend_accel_hash_find(&ZCSG(hash), key)) { if (zend_accel_hash_is_full(&ZCSG(hash))) { zend_accel_error(ACCEL_LOG_DEBUG, "No more entries in hash table!"); - ZSMMG(memory_exhausted) = 1; + ZSMMG(memory_exhausted) = true; zend_accel_schedule_restart_if_necessary(ACCEL_RESTART_HASH); } else { zend_string *new_key = accel_new_interned_key(key); @@ -1493,12 +1516,12 @@ static zend_persistent_script *store_script_in_file_cache(zend_persistent_script new_persistent_script->dynamic_members.checksum = zend_accel_script_checksum(new_persistent_script); - zend_file_cache_script_store(new_persistent_script, 0); + zend_file_cache_script_store(new_persistent_script, /* is_shm */ false); return new_persistent_script; } -static zend_persistent_script *cache_script_in_file_cache(zend_persistent_script *new_persistent_script, int *from_shared_memory) +static zend_persistent_script *cache_script_in_file_cache(zend_persistent_script *new_persistent_script, bool *from_shared_memory) { uint32_t orig_compiler_options; @@ -1508,11 +1531,11 @@ static zend_persistent_script *cache_script_in_file_cache(zend_persistent_script zend_accel_finalize_delayed_early_binding_list(new_persistent_script); CG(compiler_options) = orig_compiler_options; - *from_shared_memory = 1; + *from_shared_memory = true; return store_script_in_file_cache(new_persistent_script); } -static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_script *new_persistent_script, zend_string *key, int *from_shared_memory) +static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_script *new_persistent_script, zend_string *key, bool *from_shared_memory) { zend_accel_hash_entry *bucket; uint32_t memory_used; @@ -1546,7 +1569,7 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr #if 1 /* prefer the script already stored in SHM */ free_persistent_script(new_persistent_script, 1); - *from_shared_memory = 1; + *from_shared_memory = true; return existing_persistent_script; #else return new_persistent_script; @@ -1556,12 +1579,12 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr if (zend_accel_hash_is_full(&ZCSG(hash))) { zend_accel_error(ACCEL_LOG_DEBUG, "No more entries in hash table!"); - ZSMMG(memory_exhausted) = 1; + ZSMMG(memory_exhausted) = true; zend_accel_schedule_restart_if_necessary(ACCEL_RESTART_HASH); zend_shared_alloc_unlock(); if (ZCG(accel_directives).file_cache) { new_persistent_script = store_script_in_file_cache(new_persistent_script); - *from_shared_memory = 1; + *from_shared_memory = true; } return new_persistent_script; } @@ -1579,7 +1602,7 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr zend_shared_alloc_unlock(); if (ZCG(accel_directives).file_cache) { new_persistent_script = store_script_in_file_cache(new_persistent_script); - *from_shared_memory = 1; + *from_shared_memory = true; } return new_persistent_script; } @@ -1624,7 +1647,7 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr zend_accel_error(ACCEL_LOG_INFO, "Added key '%s'", ZSTR_VAL(key)); } else { zend_accel_error(ACCEL_LOG_DEBUG, "No more entries in hash table!"); - ZSMMG(memory_exhausted) = 1; + ZSMMG(memory_exhausted) = true; zend_accel_schedule_restart_if_necessary(ACCEL_RESTART_HASH); } } else { @@ -1639,11 +1662,11 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr if (ZCG(accel_directives).file_cache) { SHM_PROTECT(); - zend_file_cache_script_store(new_persistent_script, 1); + zend_file_cache_script_store(new_persistent_script, /* is_shm */ true); SHM_UNPROTECT(); } - *from_shared_memory = 1; + *from_shared_memory = true; return new_persistent_script; } @@ -1694,7 +1717,7 @@ static zend_persistent_script *opcache_compile_file(zend_file_handle *file_handl zend_op_array *orig_active_op_array; zval orig_user_error_handler; zend_op_array *op_array; - int do_bailout = 0; + bool do_bailout = false; accel_time_t timestamp = 0; uint32_t orig_compiler_options = 0; @@ -1782,7 +1805,7 @@ static zend_persistent_script *opcache_compile_file(zend_file_handle *file_handl CG(compiler_options) = orig_compiler_options; } zend_catch { op_array = NULL; - do_bailout = 1; + do_bailout = true; CG(compiler_options) = orig_compiler_options; } zend_end_try(); @@ -1845,7 +1868,7 @@ zend_op_array *file_cache_compile_file(zend_file_handle *file_handle, int type) { zend_persistent_script *persistent_script; zend_op_array *op_array = NULL; - int from_memory; /* if the script we've got is stored in SHM */ + bool from_memory; /* if the script we've got is stored in SHM */ if (is_stream_path(ZSTR_VAL(file_handle->filename)) && !is_cacheable_stream_path(ZSTR_VAL(file_handle->filename))) { @@ -1906,7 +1929,7 @@ zend_op_array *file_cache_compile_file(zend_file_handle *file_handle, int type) persistent_script = opcache_compile_file(file_handle, type, &op_array); if (persistent_script) { - from_memory = 0; + from_memory = false; persistent_script = cache_script_in_file_cache(persistent_script, &from_memory); return zend_accel_load_script(persistent_script, from_memory); } @@ -1914,10 +1937,9 @@ zend_op_array *file_cache_compile_file(zend_file_handle *file_handle, int type) return op_array; } -int check_persistent_script_access(zend_persistent_script *persistent_script) +static int check_persistent_script_access(zend_persistent_script *persistent_script) { char *phar_path, *ptr; - int ret; if ((ZSTR_LEN(persistent_script->script.filename)script.filename), "phar://", sizeof("phar://")-1)) { @@ -1930,7 +1952,7 @@ int check_persistent_script_access(zend_persistent_script *persistent_script) { *(ptr+sizeof(".phar/")-2) = 0; /* strip path inside .phar file */ } - ret = access(phar_path, R_OK) != 0; + bool ret = access(phar_path, R_OK) != 0; efree(phar_path); return ret; } @@ -1941,7 +1963,7 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type) { zend_persistent_script *persistent_script = NULL; zend_string *key = NULL; - int from_shared_memory; /* if the script we've got is stored in SHM */ + bool from_shared_memory; /* if the script we've got is stored in SHM */ if (!file_handle->filename || !ZCG(accelerator_enabled)) { /* The Accelerator is disabled, act as if without the Accelerator */ @@ -2055,7 +2077,7 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type) } return accelerator_orig_compile_file(file_handle, type); } - ZCG(counted) = 1; + ZCG(counted) = true; } /* Revalidate accessibility of cached file */ @@ -2079,18 +2101,7 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type) /* If script is found then validate_timestamps if option is enabled */ if (persistent_script && ZCG(accel_directives).validate_timestamps) { if (validate_timestamp_and_record(persistent_script, file_handle) == FAILURE) { - zend_shared_alloc_lock(); - if (!persistent_script->corrupted) { - persistent_script->corrupted = 1; - persistent_script->timestamp = 0; - ZSMMG(wasted_shared_memory) += persistent_script->dynamic_members.memory_consumption; - if (ZSMMG(memory_exhausted)) { - zend_accel_restart_reason reason = - zend_accel_hash_is_full(&ZCSG(hash)) ? ACCEL_RESTART_HASH : ACCEL_RESTART_OOM; - zend_accel_schedule_restart_if_necessary(reason); - } - } - zend_shared_alloc_unlock(); + zend_accel_lock_discard_script(persistent_script); persistent_script = NULL; } } @@ -2104,18 +2115,7 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type) /* The checksum is wrong */ zend_accel_error(ACCEL_LOG_INFO, "Checksum failed for '%s': expected=0x%08x, found=0x%08x", ZSTR_VAL(persistent_script->script.filename), persistent_script->dynamic_members.checksum, checksum); - zend_shared_alloc_lock(); - if (!persistent_script->corrupted) { - persistent_script->corrupted = 1; - persistent_script->timestamp = 0; - ZSMMG(wasted_shared_memory) += persistent_script->dynamic_members.memory_consumption; - if (ZSMMG(memory_exhausted)) { - zend_accel_restart_reason reason = - zend_accel_hash_is_full(&ZCSG(hash)) ? ACCEL_RESTART_HASH : ACCEL_RESTART_OOM; - zend_accel_schedule_restart_if_necessary(reason); - } - } - zend_shared_alloc_unlock(); + zend_accel_lock_discard_script(persistent_script); persistent_script = NULL; } } @@ -2152,7 +2152,7 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type) /* Try and cache the script and assume that it is returned from_shared_memory. * If it isn't compile_and_cache_file() changes the flag to 0 */ - from_shared_memory = 0; + from_shared_memory = false; if (persistent_script) { persistent_script = cache_script_in_shared_memory(persistent_script, key, &from_shared_memory); } @@ -2217,7 +2217,7 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type) HANDLE_UNBLOCK_INTERRUPTIONS(); replay_warnings(persistent_script->num_warnings, persistent_script->warnings); - from_shared_memory = 1; + from_shared_memory = true; } /* Fetch jit auto globals used in the script before execution */ @@ -2236,15 +2236,15 @@ static zend_always_inline zend_inheritance_cache_entry* zend_accel_inheritance_c ZEND_ASSERT(!(ce->ce_flags & ZEND_ACC_LINKED)); while (entry) { - bool found = 1; - bool needs_autoload = 0; + bool found = true; + bool needs_autoload = false; if (entry->parent != parent) { - found = 0; + found = false; } else { for (i = 0; i < ce->num_traits + ce->num_interfaces; i++) { if (entry->traits_and_interfaces[i] != traits_and_interfaces[i]) { - found = 0; + found = false; break; } } @@ -2254,9 +2254,9 @@ static zend_always_inline zend_inheritance_cache_entry* zend_accel_inheritance_c if (ce != entry->dependencies[i].ce) { if (!ce) { - needs_autoload = 1; + needs_autoload = true; } else { - found = 0; + found = false; break; } } @@ -2572,12 +2572,12 @@ static zend_string* persistent_zend_resolve_path(zend_string *filename) static void zend_reset_cache_vars(void) { - ZSMMG(memory_exhausted) = 0; + ZSMMG(memory_exhausted) = false; ZCSG(hits) = 0; ZCSG(misses) = 0; ZCSG(blacklist_misses) = 0; ZSMMG(wasted_shared_memory) = 0; - ZCSG(restart_pending) = 0; + ZCSG(restart_pending) = false; ZCSG(force_restart_time) = 0; ZCSG(map_ptr_last) = CG(map_ptr_last); } @@ -2602,7 +2602,7 @@ static void accel_reset_pcre_cache(void) zend_result accel_activate(INIT_FUNC_ARGS) { if (!ZCG(enabled) || !accel_startup_ok) { - ZCG(accelerator_enabled) = 0; + ZCG(accelerator_enabled) = false; return SUCCESS; } @@ -2612,14 +2612,14 @@ zend_result accel_activate(INIT_FUNC_ARGS) ZCG(cache_opline) = NULL; ZCG(cache_persistent_script) = NULL; ZCG(include_path_key_len) = 0; - ZCG(include_path_check) = 1; + ZCG(include_path_check) = true; ZCG(cwd) = NULL; ZCG(cwd_key_len) = 0; - ZCG(cwd_check) = 1; + ZCG(cwd_check) = true; if (file_cache_only) { - ZCG(accelerator_enabled) = 0; + ZCG(accelerator_enabled) = false; return SUCCESS; } @@ -2656,15 +2656,15 @@ zend_result accel_activate(INIT_FUNC_ARGS) zend_accel_error(ACCEL_LOG_WARNING, "Stuck count for pid %d", getpid()); #endif accel_unlock_all(); - ZCG(counted) = 0; + ZCG(counted) = false; } if (ZCSG(restart_pending)) { zend_shared_alloc_lock(); - if (ZCSG(restart_pending) != 0) { /* check again, to ensure that the cache wasn't already cleaned by another process */ + if (ZCSG(restart_pending)) { /* check again, to ensure that the cache wasn't already cleaned by another process */ if (accel_is_inactive() == SUCCESS) { zend_accel_error(ACCEL_LOG_DEBUG, "Restarting!"); - ZCSG(restart_pending) = 0; + ZCSG(restart_pending) = false; switch ZCSG(restart_reason) { case ACCEL_RESTART_OOM: ZCSG(oom_restarts)++; @@ -2720,10 +2720,10 @@ zend_result accel_activate(INIT_FUNC_ARGS) realpath_cache_clean(); accel_reset_pcre_cache(); - ZCG(pcre_reseted) = 0; + ZCG(pcre_reseted) = false; } else if (!ZCG(accelerator_enabled) && !ZCG(pcre_reseted)) { accel_reset_pcre_cache(); - ZCG(pcre_reseted) = 1; + ZCG(pcre_reseted) = true; } @@ -2758,7 +2758,7 @@ zend_result accel_post_deactivate(void) zend_shared_alloc_safe_unlock(); /* be sure we didn't leave cache locked */ accel_unlock_all(); - ZCG(counted) = 0; + ZCG(counted) = false; return SUCCESS; } @@ -2788,7 +2788,7 @@ static int accelerator_remove_cb(zend_extension *element1, zend_extension *eleme static void zps_startup_failure(char *reason, char *api_reason, int (*cb)(zend_extension *, zend_extension *)) { - accel_startup_ok = 0; + accel_startup_ok = false; zps_failure_reason = reason; zps_api_failure_reason = api_reason?api_reason:reason; zend_llist_del_element(&zend_extensions, NULL, (int (*)(void *, void *))cb); @@ -2896,10 +2896,10 @@ static int zend_accel_init_shm(void) ZCSG(hash_restarts) = 0; ZCSG(manual_restarts) = 0; - ZCSG(accelerator_enabled) = 1; + ZCSG(accelerator_enabled) = true; ZCSG(start_time) = zend_accel_get_time(); ZCSG(last_restart_time) = 0; - ZCSG(restart_in_progress) = 0; + ZCSG(restart_in_progress) = false; for (i = 0; i < -HT_MIN_MASK; i++) { ZCSG(uninitialized_bucket)[i] = HT_INVALID_IDX; @@ -3103,7 +3103,7 @@ static int accel_startup(zend_extension *extension) #endif if (start_accel_module() == FAILURE) { - accel_startup_ok = 0; + accel_startup_ok = false; zend_error(E_WARNING, ACCELERATOR_PRODUCT_NAME ": module registration failed!"); return FAILURE; } @@ -3127,7 +3127,7 @@ static int accel_startup(zend_extension *extension) /* no supported SAPI found - disable acceleration and stop initialization */ if (accel_find_sapi() == FAILURE) { - accel_startup_ok = 0; + accel_startup_ok = false; if (!ZCG(accel_directives).enable_cli && strcmp(sapi_module.name, "cli") == 0) { zps_startup_failure("Opcode Caching is disabled for CLI", NULL, accelerator_remove_cb); @@ -3172,7 +3172,7 @@ static zend_result accel_post_startup(void) size_t shm_size = ZCG(accel_directives).memory_consumption; #ifdef HAVE_JIT size_t jit_size = 0; - bool reattached = 0; + bool reattached = false; if (JIT_G(enabled) && JIT_G(buffer_size) && zend_jit_check_support() == SUCCESS) { @@ -3194,17 +3194,17 @@ static zend_result accel_post_startup(void) #endif case ALLOC_SUCCESS: if (zend_accel_init_shm() == FAILURE) { - accel_startup_ok = 0; + accel_startup_ok = false; return FAILURE; } break; case ALLOC_FAILURE: - accel_startup_ok = 0; + accel_startup_ok = false; zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Failure to initialize shared memory structures - probably not enough shared memory."); return SUCCESS; case SUCCESSFULLY_REATTACHED: #ifdef HAVE_JIT - reattached = 1; + reattached = true; #endif zend_shared_alloc_lock(); accel_shared_globals = (zend_accel_shared_globals *) ZSMMG(app_shared_globals); @@ -3215,15 +3215,15 @@ static zend_result accel_post_startup(void) zend_shared_alloc_unlock(); break; case FAILED_REATTACHED: - accel_startup_ok = 0; + accel_startup_ok = false; zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Failure to initialize shared memory structures - cannot reattach to exiting shared memory."); return SUCCESS; break; #if ENABLE_FILE_CACHE_FALLBACK case ALLOC_FALLBACK: zend_shared_alloc_lock(); - file_cache_only = 1; - fallback_process = 1; + file_cache_only = true; + fallback_process = true; zend_shared_alloc_unlock(); goto file_cache_fallback; break; @@ -3241,8 +3241,8 @@ static zend_result accel_post_startup(void) if (JIT_G(buffer_size) == 0 || !ZSMMG(reserved) || zend_jit_startup(ZSMMG(reserved), jit_size, reattached) != SUCCESS) { - JIT_G(enabled) = 0; - JIT_G(on) = 0; + JIT_G(enabled) = false; + JIT_G(on) = false; } } #endif @@ -3251,13 +3251,13 @@ static zend_result accel_post_startup(void) SHM_PROTECT(); } else if (!ZCG(accel_directives).file_cache) { - accel_startup_ok = 0; + accel_startup_ok = false; zend_accel_error_noreturn(ACCEL_LOG_FATAL, "opcache.file_cache_only is set without a proper setting of opcache.file_cache"); return SUCCESS; } else { #ifdef HAVE_JIT - JIT_G(enabled) = 0; - JIT_G(on) = 0; + JIT_G(enabled) = false; + JIT_G(on) = false; #endif accel_shared_globals = calloc(1, sizeof(zend_accel_shared_globals)); } @@ -3295,7 +3295,7 @@ static zend_result accel_post_startup(void) ini_entry->on_modify = accel_include_path_on_modify; } - accel_startup_ok = 1; + accel_startup_ok = true; /* Override file_exists(), is_file() and is_readable() */ zend_accel_override_file_functions(); @@ -3338,7 +3338,7 @@ static void accel_post_shutdown(void) void accel_shutdown(void) { zend_ini_entry *ini_entry; - bool _file_cache_only = 0; + bool _file_cache_only = false; #ifdef HAVE_JIT zend_jit_shutdown(); @@ -3397,10 +3397,10 @@ void zend_accel_schedule_restart(zend_accel_restart_reason reason) HANDLE_BLOCK_INTERRUPTIONS(); SHM_UNPROTECT(); - ZCSG(restart_pending) = 1; + ZCSG(restart_pending) = true; ZCSG(restart_reason) = reason; ZCSG(cache_status_before_restart) = ZCSG(accelerator_enabled); - ZCSG(accelerator_enabled) = 0; + ZCSG(accelerator_enabled) = false; if (ZCG(accel_directives).force_restart_timeout) { ZCSG(force_restart_time) = zend_accel_get_time() + ZCG(accel_directives).force_restart_timeout; @@ -3411,12 +3411,14 @@ void zend_accel_schedule_restart(zend_accel_restart_reason reason) HANDLE_UNBLOCK_INTERRUPTIONS(); } -/* this is needed because on WIN32 lock is not decreased unless ZCG(counted) is set */ +static void accel_deactivate_now() +{ + /* this is needed because on WIN32 lock is not decreased unless ZCG(counted) is set */ #ifdef ZEND_WIN32 -#define accel_deactivate_now() ZCG(counted) = 1; accel_deactivate_sub() -#else -#define accel_deactivate_now() accel_deactivate_sub() + ZCG(counted) = true; #endif + accel_deactivate_sub(); +} /* ensures it is OK to read SHM if it's not OK (restart in progress) returns FAILURE @@ -3440,7 +3442,7 @@ int accelerator_shm_read_lock(void) accel_deactivate_now(); /* drop usage lock */ return FAILURE; } - ZCG(counted) = 1; + ZCG(counted) = true; } return SUCCESS; } @@ -3449,7 +3451,7 @@ int accelerator_shm_read_lock(void) void accelerator_shm_read_unlock(void) { if (!ZCG(counted)) { - /* counted is 0 - meaning we had to readlock manually, release readlock now */ + /* counted is false - meaning we had to readlock manually, release readlock now */ accel_deactivate_now(); } } @@ -3528,7 +3530,7 @@ static void preload_move_user_functions(HashTable *src, HashTable *dst) Bucket *p; dtor_func_t orig_dtor = src->pDestructor; zend_string *filename = NULL; - int copy = 0; + bool copy = false; src->pDestructor = NULL; zend_hash_extend(dst, dst->nNumUsed + src->nNumUsed, 0); @@ -3546,7 +3548,7 @@ static void preload_move_user_functions(HashTable *src, HashTable *dst) } } } else { - copy = 0; + copy = false; } } if (copy) { @@ -3567,7 +3569,7 @@ static void preload_move_user_classes(HashTable *src, HashTable *dst) Bucket *p; dtor_func_t orig_dtor = src->pDestructor; zend_string *filename = NULL; - int copy = 0; + bool copy = false; src->pDestructor = NULL; zend_hash_extend(dst, dst->nNumUsed + src->nNumUsed, 0); @@ -3584,7 +3586,7 @@ static void preload_move_user_classes(HashTable *src, HashTable *dst) } } } else { - copy = 0; + copy = false; } } if (copy) { @@ -3728,21 +3730,21 @@ static zend_result preload_update_constant(zval *val, zend_class_entry *scope) static bool preload_try_resolve_constants(zend_class_entry *ce) { - bool ok, changed, was_changed = 0; + bool ok, changed, was_changed = false; zend_class_constant *c; zval *val; EG(exception) = (void*)(uintptr_t)-1; /* prevent error reporting */ do { - ok = 1; - changed = 0; + ok = true; + changed = false; ZEND_HASH_MAP_FOREACH_PTR(&ce->constants_table, c) { val = &c->value; if (Z_TYPE_P(val) == IS_CONSTANT_AST) { if (EXPECTED(preload_update_constant(val, c->ce) == SUCCESS)) { - was_changed = changed = 1; + was_changed = changed = true; } else { - ok = 0; + ok = false; } } } ZEND_HASH_FOREACH_END(); @@ -3751,14 +3753,14 @@ static bool preload_try_resolve_constants(zend_class_entry *ce) } if (ce->default_properties_count) { uint32_t i; - bool resolved = 1; + bool resolved = true; for (i = 0; i < ce->default_properties_count; i++) { val = &ce->default_properties_table[i]; if (Z_TYPE_P(val) == IS_CONSTANT_AST) { zend_property_info *prop = ce->properties_info_table[i]; if (UNEXPECTED(preload_update_constant(val, prop->ce) != SUCCESS)) { - resolved = ok = 0; + resolved = ok = false; } } } @@ -3768,13 +3770,13 @@ static bool preload_try_resolve_constants(zend_class_entry *ce) } if (ce->default_static_members_count) { uint32_t count = ce->parent ? ce->default_static_members_count - ce->parent->default_static_members_count : ce->default_static_members_count; - bool resolved = 1; + bool resolved = true; val = ce->default_static_members_table + ce->default_static_members_count - 1; while (count) { if (Z_TYPE_P(val) == IS_CONSTANT_AST) { if (UNEXPECTED(preload_update_constant(val, ce) != SUCCESS)) { - resolved = ok = 0; + resolved = ok = false; } } val--; @@ -3786,7 +3788,7 @@ static bool preload_try_resolve_constants(zend_class_entry *ce) } } while (changed && !ok); EG(exception) = NULL; - CG(in_compilation) = 0; + CG(in_compilation) = false; if (ok) { ce->ce_flags |= ZEND_ACC_CONSTANTS_UPDATED; @@ -3875,7 +3877,7 @@ static void preload_link(void) /* Resolve class dependencies */ do { - changed = 0; + changed = false; ZEND_HASH_MAP_FOREACH_STR_KEY_VAL_FROM(EG(class_table), key, zv, EG(persistent_classes_count)) { ce = Z_PTR_P(zv); @@ -3919,7 +3921,7 @@ static void preload_link(void) zend_begin_record_errors(); /* Set filename & lineno information for inheritance errors */ - CG(in_compilation) = 1; + CG(in_compilation) = true; CG(compiled_filename) = ce->info.user.filename; CG(zend_lineno) = ce->info.user.line_start; zend_try { @@ -3958,7 +3960,7 @@ static void preload_link(void) zend_hash_update_ptr(&errors, key, EG(errors)[EG(num_errors)-1]); EG(num_errors)--; } zend_end_try(); - CG(in_compilation) = 0; + CG(in_compilation) = false; CG(compiled_filename) = NULL; zend_free_recorded_errors(); zend_string_release(lcname); @@ -3966,7 +3968,7 @@ static void preload_link(void) } while (changed); do { - changed = 0; + changed = false; ZEND_HASH_MAP_REVERSE_FOREACH_VAL(EG(class_table), zv) { ce = Z_PTR_P(zv); @@ -3975,11 +3977,11 @@ static void preload_link(void) } if (!(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) { if (!(ce->ce_flags & ZEND_ACC_TRAIT)) { /* don't update traits */ - CG(in_compilation) = 1; /* prevent autoloading */ + CG(in_compilation) = true; /* prevent autoloading */ if (preload_try_resolve_constants(ce)) { - changed = 1; + changed = true; } - CG(in_compilation) = 0; + CG(in_compilation) = false; } } } ZEND_HASH_FOREACH_END(); @@ -4060,15 +4062,15 @@ static void preload_remove_empty_includes(void) /* mark all as empty */ ZEND_HASH_MAP_FOREACH_PTR(preload_scripts, script) { - script->empty = 1; + script->empty = true; } ZEND_HASH_FOREACH_END(); /* find non empty scripts */ do { - changed = 0; + changed = false; ZEND_HASH_MAP_FOREACH_PTR(preload_scripts, script) { if (script->empty) { - int empty = 1; + bool empty = true; zend_op *opline = script->script.main_op_array.opcodes; zend_op *end = opline + script->script.main_op_array.last; @@ -4085,24 +4087,24 @@ static void preload_remove_empty_includes(void) zend_persistent_script *incl = zend_hash_find_ptr(preload_scripts, resolved_path); zend_string_release(resolved_path); if (!incl || !incl->empty) { - empty = 0; + empty = false; break; } } else { - empty = 0; + empty = false; break; } } else if (opline->opcode != ZEND_NOP && opline->opcode != ZEND_RETURN && opline->opcode != ZEND_HANDLE_EXCEPTION) { - empty = 0; + empty = false; break; } opline++; } if (!empty) { - script->empty = 0; - changed = 1; + script->empty = false; + changed = true; } } } ZEND_HASH_FOREACH_END(); @@ -4326,8 +4328,8 @@ static int accel_preload(const char *config, bool in_child) size_t orig_map_ptr_last; uint32_t orig_compiler_options; - ZCG(enabled) = 0; - ZCG(accelerator_enabled) = 0; + ZCG(enabled) = false; + ZCG(accelerator_enabled) = false; orig_open_basedir = PG(open_basedir); PG(open_basedir) = NULL; preload_orig_compile_file = accelerator_orig_compile_file; @@ -4350,7 +4352,7 @@ static int accel_preload(const char *config, bool in_child) CG(compiler_options) |= ZEND_COMPILE_DELAYED_BINDING; CG(compiler_options) |= ZEND_COMPILE_NO_CONSTANT_SUBSTITUTION; CG(compiler_options) |= ZEND_COMPILE_IGNORE_OTHER_FILES; - CG(skip_shebang) = 1; + CG(skip_shebang) = true; zend_try { zend_op_array *op_array; @@ -4371,7 +4373,7 @@ static int accel_preload(const char *config, bool in_child) if (EG(exception)) { ret = zend_exception_error(EG(exception), E_ERROR); if (ret == FAILURE) { - CG(unclean_shutdown) = 1; + CG(unclean_shutdown) = true; } } } @@ -4382,7 +4384,7 @@ static int accel_preload(const char *config, bool in_child) zend_exception_error(EG(exception), E_ERROR); } - CG(unclean_shutdown) = 1; + CG(unclean_shutdown) = true; ret = FAILURE; } } zend_catch { @@ -4391,7 +4393,7 @@ static int accel_preload(const char *config, bool in_child) PG(open_basedir) = orig_open_basedir; accelerator_orig_compile_file = preload_orig_compile_file; - ZCG(enabled) = 1; + ZCG(enabled) = true; zend_destroy_file_handle(&file_handle); @@ -4575,7 +4577,7 @@ static int accel_finish_startup(void) zend_accel_error_noreturn(ACCEL_LOG_ERROR, "Preloading is not supported on Windows"); return FAILURE; #else - int in_child = 0; + bool in_child = false; int ret = SUCCESS; int rc; int orig_error_reporting; @@ -4644,7 +4646,7 @@ static int accel_finish_startup(void) zend_accel_error(ACCEL_LOG_WARNING, "Preloading failed to setuid(%d)", pw->pw_uid); exit(1); } - in_child = 1; + in_child = true; } else { /* parent */ int status; @@ -4685,7 +4687,7 @@ static int accel_finish_startup(void) zend_interned_strings_switch_storage(1); #ifdef ZEND_SIGNALS - SIGG(reset) = 0; + SIGG(reset) = false; #endif orig_error_reporting = EG(error_reporting); @@ -4699,8 +4701,8 @@ static int accel_finish_startup(void) bool orig_report_memleaks; /* don't send headers */ - SG(headers_sent) = 1; - SG(request_info).no_headers = 1; + SG(headers_sent) = true; + SG(request_info).no_headers = true; php_output_set_status(0); ZCG(auto_globals_mask) = 0; @@ -4708,11 +4710,11 @@ static int accel_finish_startup(void) ZCG(cache_opline) = NULL; ZCG(cache_persistent_script) = NULL; ZCG(include_path_key_len) = 0; - ZCG(include_path_check) = 1; + ZCG(include_path_check) = true; ZCG(cwd) = NULL; ZCG(cwd_key_len) = 0; - ZCG(cwd_check) = 1; + ZCG(cwd_check) = true; if (accel_preload(ZCG(accel_directives).preload, in_child) != SUCCESS) { ret = FAILURE; @@ -4720,11 +4722,11 @@ static int accel_finish_startup(void) preload_flush(NULL); orig_report_memleaks = PG(report_memleaks); - PG(report_memleaks) = 0; + PG(report_memleaks) = false; #ifdef ZEND_SIGNALS /* We may not have registered signal handlers due to SIGG(reset)=0, so * also disable the check that they are registered. */ - SIGG(check) = 0; + SIGG(check) = false; #endif php_request_shutdown(NULL); /* calls zend_shared_alloc_unlock(); */ PG(report_memleaks) = orig_report_memleaks; diff --git a/ext/opcache/ZendAccelerator.h b/ext/opcache/ZendAccelerator.h index bd692495a5282..bc7236fbdb3fa 100644 --- a/ext/opcache/ZendAccelerator.h +++ b/ext/opcache/ZendAccelerator.h @@ -204,7 +204,7 @@ typedef struct _zend_accel_directives { } zend_accel_directives; typedef struct _zend_accel_globals { - int counted; /* the process uses shared memory */ + bool counted; /* the process uses shared memory */ bool enabled; bool locked; /* thread obtained exclusive lock */ bool accelerator_enabled; /* accelerator enabled for current request */ @@ -215,9 +215,9 @@ typedef struct _zend_accel_globals { char include_path_key[32]; /* key of current "include_path" */ char cwd_key[32]; /* key of current working directory */ int include_path_key_len; - int include_path_check; + bool include_path_check; int cwd_key_len; - int cwd_check; + bool cwd_check; int auto_globals_mask; time_t request_time; time_t last_restart_time; /* used to synchronize SHM and in-process caches */ diff --git a/ext/opcache/zend_file_cache.c b/ext/opcache/zend_file_cache.c index bbfe3771afac6..e3300d1ebb381 100644 --- a/ext/opcache/zend_file_cache.c +++ b/ext/opcache/zend_file_cache.c @@ -253,15 +253,18 @@ static void *zend_file_cache_serialize_interned(zend_string *str, len = ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(ZSTR_LEN(str))); ret = (void*)(info->str_size | Z_UL(1)); zend_shared_alloc_register_xlat_entry(str, ret); - if (info->str_size + len > ZSTR_LEN((zend_string*)ZCG(mem))) { + + zend_string *s = (zend_string*)ZCG(mem); + if (info->str_size + len > ZSTR_LEN(s)) { size_t new_len = info->str_size + len; - ZCG(mem) = (void*)zend_string_realloc( - (zend_string*)ZCG(mem), + s = zend_string_realloc( + s, ((_ZSTR_HEADER_SIZE + 1 + new_len + 4095) & ~0xfff) - (_ZSTR_HEADER_SIZE + 1), 0); + ZCG(mem) = (void*)s; } - zend_string *new_str = (zend_string *) (ZSTR_VAL((zend_string*)ZCG(mem)) + info->str_size); + zend_string *new_str = (zend_string *) (ZSTR_VAL(s) + info->str_size); memcpy(new_str, str, len); GC_ADD_FLAGS(new_str, IS_STR_INTERNED); GC_DEL_FLAGS(new_str, IS_STR_PERMANENT|IS_STR_CLASS_NAME_MAP_PTR); @@ -269,7 +272,7 @@ static void *zend_file_cache_serialize_interned(zend_string *str, return ret; } -static void *zend_file_cache_unserialize_interned(zend_string *str, int in_shm) +static void *zend_file_cache_unserialize_interned(zend_string *str, bool in_shm) { str = (zend_string*)((char*)ZCG(mem) + ((size_t)(str) & ~Z_UL(1))); if (!in_shm) { @@ -1006,14 +1009,34 @@ static char *zend_file_cache_get_bin_file_path(zend_string *script_path) return filename; } -int zend_file_cache_script_store(zend_persistent_script *script, int in_shm) +/** + * Helper function for zend_file_cache_script_store(). + * + * @return true on success, false on error + */ +static bool zend_file_cache_script_write(int fd, const zend_persistent_script *script, const zend_file_cache_metainfo *info, const void *buf, const zend_string *s) +{ +#ifdef HAVE_SYS_UIO_H + const struct iovec vec[] = { + { .iov_base = (void *)info, .iov_len = sizeof(*info) }, + { .iov_base = (void *)buf, .iov_len = script->size }, + { .iov_base = (void *)ZSTR_VAL(s), .iov_len = info->str_size }, + }; + + return writev(fd, vec, sizeof(vec) / sizeof(vec[0])) == (ssize_t)(sizeof(*info) + script->size + info->str_size); +#else + return ZEND_LONG_MAX >= (zend_long)(sizeof(*info) + script->size + info->str_size) && + write(fd, info, sizeof(*info)) == sizeof(*info) && + write(fd, buf, script->size) == script->size && + write(fd, ZSTR_VAL(s), info->str_size) == info->str_size; +#endif +} + +int zend_file_cache_script_store(zend_persistent_script *script, bool in_shm) { int fd; char *filename; zend_file_cache_metainfo info; -#ifdef HAVE_SYS_UIO_H - struct iovec vec[3]; -#endif void *mem, *buf; #ifdef HAVE_JIT @@ -1058,16 +1081,18 @@ int zend_file_cache_script_store(zend_persistent_script *script, int in_shm) zend_shared_alloc_init_xlat_table(); if (!in_shm) { - script->corrupted = 1; /* used to check if script restored to SHM or process memory */ + script->corrupted = true; /* used to check if script restored to SHM or process memory */ } zend_file_cache_serialize(script, &info, buf); if (!in_shm) { - script->corrupted = 0; + script->corrupted = false; } zend_shared_alloc_destroy_xlat_table(); + zend_string *const s = (zend_string*)ZCG(mem); + info.checksum = zend_adler32(ADLER32_INIT, buf, script->size); - info.checksum = zend_adler32(info.checksum, (unsigned char*)ZSTR_VAL((zend_string*)ZCG(mem)), info.str_size); + info.checksum = zend_adler32(info.checksum, (unsigned char*)ZSTR_VAL(s), info.str_size); #if __has_feature(memory_sanitizer) /* The buffer may contain uninitialized regions. However, the uninitialized parts will not be @@ -1077,40 +1102,17 @@ int zend_file_cache_script_store(zend_persistent_script *script, int in_shm) __msan_unpoison(buf, script->size); #endif -#ifdef HAVE_SYS_UIO_H - vec[0].iov_base = (void *)&info; - vec[0].iov_len = sizeof(info); - vec[1].iov_base = buf; - vec[1].iov_len = script->size; - vec[2].iov_base = ZSTR_VAL((zend_string*)ZCG(mem)); - vec[2].iov_len = info.str_size; - - if (writev(fd, vec, 3) != (ssize_t)(sizeof(info) + script->size + info.str_size)) { - zend_accel_error(ACCEL_LOG_WARNING, "opcache cannot write to file '%s'\n", filename); - zend_string_release_ex((zend_string*)ZCG(mem), 0); - close(fd); - efree(mem); - zend_file_cache_unlink(filename); - efree(filename); - return FAILURE; - } -#else - if (ZEND_LONG_MAX < (zend_long)(sizeof(info) + script->size + info.str_size) || - write(fd, &info, sizeof(info)) != sizeof(info) || - write(fd, buf, script->size) != script->size || - write(fd, ((zend_string*)ZCG(mem))->val, info.str_size) != info.str_size - ) { + if (!zend_file_cache_script_write(fd, script, &info, buf, s)) { zend_accel_error(ACCEL_LOG_WARNING, "opcache cannot write to file '%s'\n", filename); - zend_string_release_ex((zend_string*)ZCG(mem), 0); + zend_string_release_ex(s, 0); close(fd); efree(mem); zend_file_cache_unlink(filename); efree(filename); return FAILURE; } -#endif - zend_string_release_ex((zend_string*)ZCG(mem), 0); + zend_string_release_ex(s, 0); efree(mem); if (zend_file_cache_flock(fd, LOCK_UN) != 0) { zend_accel_error(ACCEL_LOG_WARNING, "opcache cannot unlock file '%s'\n", filename); @@ -1744,9 +1746,9 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl zend_file_cache_metainfo info; zend_accel_hash_entry *bucket; void *mem, *checkpoint, *buf; - int cache_it = 1; + bool cache_it = true; unsigned int actual_checksum; - int ok; + bool ok; if (!full_path) { return NULL; @@ -1878,18 +1880,18 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl } else { use_process_mem: buf = mem; - cache_it = 0; + cache_it = false; } ZCG(mem) = ((char*)mem + info.mem_size); script = (zend_persistent_script*)((char*)buf + info.script_offset); script->corrupted = !cache_it; /* used to check if script restored to SHM or process memory */ - ok = 1; + ok = true; zend_try { zend_file_cache_unserialize(script, buf); } zend_catch { - ok = 0; + ok = false; } zend_end_try(); if (!ok) { if (cache_it) { @@ -1902,7 +1904,7 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl } } - script->corrupted = 0; + script->corrupted = false; if (cache_it) { ZCSG(map_ptr_last) = CG(map_ptr_last); diff --git a/ext/opcache/zend_file_cache.h b/ext/opcache/zend_file_cache.h index a6e87197b4caa..8f067f5f37abb 100644 --- a/ext/opcache/zend_file_cache.h +++ b/ext/opcache/zend_file_cache.h @@ -19,7 +19,7 @@ #ifndef ZEND_FILE_CACHE_H #define ZEND_FILE_CACHE_H -int zend_file_cache_script_store(zend_persistent_script *script, int in_shm); +int zend_file_cache_script_store(zend_persistent_script *script, bool in_shm); zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handle); void zend_file_cache_invalidate(zend_string *full_path); diff --git a/ext/opcache/zend_persist.c b/ext/opcache/zend_persist.c index e21fa4cb9af2b..82dd4ccf434aa 100644 --- a/ext/opcache/zend_persist.c +++ b/ext/opcache/zend_persist.c @@ -1331,12 +1331,12 @@ zend_persistent_script *zend_accel_script_persist(zend_persistent_script *script ZEND_ASSERT(((zend_uintptr_t)ZCG(mem) & 0x7) == 0); /* should be 8 byte aligned */ script = zend_shared_memdup_free(script, sizeof(zend_persistent_script)); - script->corrupted = 0; + script->corrupted = false; ZCG(current_persistent_script) = script; if (!for_shm) { /* script is not going to be saved in SHM */ - script->corrupted = 1; + script->corrupted = true; } zend_accel_store_interned_string(script->script.filename); @@ -1392,7 +1392,7 @@ zend_persistent_script *zend_accel_script_persist(zend_persistent_script *script } #endif - script->corrupted = 0; + script->corrupted = false; ZCG(current_persistent_script) = NULL; return script; diff --git a/ext/opcache/zend_persist_calc.c b/ext/opcache/zend_persist_calc.c index 06d746218d2ec..b79158e7294af 100644 --- a/ext/opcache/zend_persist_calc.c +++ b/ext/opcache/zend_persist_calc.c @@ -610,12 +610,12 @@ uint32_t zend_accel_script_persist_calc(zend_persistent_script *new_persistent_s new_persistent_script->mem = NULL; new_persistent_script->size = 0; - new_persistent_script->corrupted = 0; + new_persistent_script->corrupted = false; ZCG(current_persistent_script) = new_persistent_script; if (!for_shm) { /* script is not going to be saved in SHM */ - new_persistent_script->corrupted = 1; + new_persistent_script->corrupted = true; } ADD_SIZE(sizeof(zend_persistent_script)); @@ -645,7 +645,7 @@ uint32_t zend_accel_script_persist_calc(zend_persistent_script *new_persistent_s zend_persist_early_bindings_calc( new_persistent_script->num_early_bindings, new_persistent_script->early_bindings); - new_persistent_script->corrupted = 0; + new_persistent_script->corrupted = false; ZCG(current_persistent_script) = NULL; From e706d024b2ce704699f31c5d5b0fab32bf340331 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Fri, 4 Mar 2022 10:59:52 +0100 Subject: [PATCH 02/63] Fix IntlPartsIterator key off-by-one error Closes GH-7734 Closes GH-8172 --- NEWS | 2 + .../breakiterator/breakiterator_iterators.cpp | 15 ++++++- ext/intl/common/common_enum.cpp | 1 + .../breakiter_getPartsIterator_var1.phpt | 16 +++---- ext/intl/tests/gh7734.phpt | 42 +++++++++++++++++++ 5 files changed, 66 insertions(+), 10 deletions(-) create mode 100644 ext/intl/tests/gh7734.phpt diff --git a/NEWS b/NEWS index 931dbb127a4bf..7a23a3b885b0c 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,8 @@ PHP NEWS . Fixed bug GH-8115 (Can't catch arg type deprecation when instantiating Intl classes). (ilutov) . Fixed bug GH-8142 (Compilation error on cygwin). (David Carlier) + . Fixed bug GH-7734 (Fix IntlPartsIterator key off-by-one error and first + key). (ilutov) - MBString: . Fixed bug GH-8208 (mb_encode_mimeheader: $indent functionality broken). diff --git a/ext/intl/breakiterator/breakiterator_iterators.cpp b/ext/intl/breakiterator/breakiterator_iterators.cpp index 2027fb45c5c44..4513b9405f99c 100644 --- a/ext/intl/breakiterator/breakiterator_iterators.cpp +++ b/ext/intl/breakiterator/breakiterator_iterators.cpp @@ -127,6 +127,7 @@ typedef struct zoi_break_iter_parts { zoi_with_current zoi_cur; parts_iter_key_type key_type; BreakIterator_object *bio; /* so we don't have to fetch it all the time */ + zend_ulong index_right; } zoi_break_iter_parts; static void _breakiterator_parts_destroy_it(zend_object_iterator *iter) @@ -136,8 +137,16 @@ static void _breakiterator_parts_destroy_it(zend_object_iterator *iter) static void _breakiterator_parts_get_current_key(zend_object_iterator *iter, zval *key) { - /* the actual work is done in move_forward and rewind */ - ZVAL_LONG(key, iter->index); + // The engine resets the iterator index to -1 after rewinding. When using + // PARTS_ITERATOR_KEY_RIGHT we store it in zoi_break_iter_parts.index_right + // so it doesn't get lost. + zoi_break_iter_parts *zoi_bit = (zoi_break_iter_parts*)iter; + + if (zoi_bit->key_type == PARTS_ITERATOR_KEY_RIGHT && iter->index == 0) { + ZVAL_LONG(key, zoi_bit->index_right); + } else { + ZVAL_LONG(key, iter->index); + } } static void _breakiterator_parts_move_forward(zend_object_iterator *iter) @@ -163,6 +172,7 @@ static void _breakiterator_parts_move_forward(zend_object_iterator *iter) iter->index = cur; } else if (zoi_bit->key_type == PARTS_ITERATOR_KEY_RIGHT) { iter->index = next; + zoi_bit->index_right = next; } /* else zoi_bit->key_type == PARTS_ITERATOR_KEY_SEQUENTIAL * No need to do anything, the engine increments ->index */ @@ -229,6 +239,7 @@ void IntlIterator_from_BreakIterator_parts(zval *break_iter_zv, assert(((zoi_break_iter_parts*)ii->iterator)->bio->biter != NULL); ((zoi_break_iter_parts*)ii->iterator)->key_type = key_type; + ((zoi_break_iter_parts*)ii->iterator)->index_right = 0; } U_CFUNC PHP_METHOD(IntlPartsIterator, getBreakIterator) diff --git a/ext/intl/common/common_enum.cpp b/ext/intl/common/common_enum.cpp index a6eead5e25cb1..e59db9c224193 100644 --- a/ext/intl/common/common_enum.cpp +++ b/ext/intl/common/common_enum.cpp @@ -291,6 +291,7 @@ U_CFUNC void intl_register_IntlIterator_class(void) IntlIterator_ce_ptr = register_class_IntlIterator(zend_ce_iterator); IntlIterator_ce_ptr->create_object = IntlIterator_object_create; IntlIterator_ce_ptr->get_iterator = IntlIterator_get_iterator; + IntlIterator_ce_ptr->ce_flags |= ZEND_ACC_REUSE_GET_ITERATOR; memcpy(&IntlIterator_handlers, &std_object_handlers, sizeof IntlIterator_handlers); diff --git a/ext/intl/tests/breakiter_getPartsIterator_var1.phpt b/ext/intl/tests/breakiter_getPartsIterator_var1.phpt index dd6fff8045172..26e91f68a2513 100644 --- a/ext/intl/tests/breakiter_getPartsIterator_var1.phpt +++ b/ext/intl/tests/breakiter_getPartsIterator_var1.phpt @@ -33,24 +33,24 @@ array(5) { array(5) { [0]=> string(3) "foo" - [4]=> + [3]=> string(1) " " - [5]=> + [4]=> string(3) "bar" - [8]=> + [7]=> string(1) " " - [9]=> + [8]=> string(3) "tao" } array(5) { [3]=> string(3) "foo" - [5]=> + [4]=> string(1) " " - [8]=> + [7]=> string(3) "bar" - [9]=> + [8]=> string(1) " " - [12]=> + [11]=> string(3) "tao" } diff --git a/ext/intl/tests/gh7734.phpt b/ext/intl/tests/gh7734.phpt new file mode 100644 index 0000000000000..a8ba1aa8df07d --- /dev/null +++ b/ext/intl/tests/gh7734.phpt @@ -0,0 +1,42 @@ +--TEST-- +GH-7734 (IntlPartsIterator key is wrong for KEY_LEFT/KEY_RIGHT) +--EXTENSIONS-- +intl +--FILE-- +setText('ABC'); + +foreach ($iter->getPartsIterator(\IntlPartsIterator::KEY_SEQUENTIAL) as $key => $value) { + var_dump($key, $value); +} + +foreach ($iter->getPartsIterator(\IntlPartsIterator::KEY_LEFT) as $key => $value) { + var_dump($key, $value); +} + +foreach ($iter->getPartsIterator(\IntlPartsIterator::KEY_RIGHT) as $key => $value) { + var_dump($key, $value); +} + +?> +--EXPECT-- +int(0) +string(1) "A" +int(1) +string(1) "B" +int(2) +string(1) "C" +int(0) +string(1) "A" +int(1) +string(1) "B" +int(2) +string(1) "C" +int(1) +string(1) "A" +int(2) +string(1) "B" +int(3) +string(1) "C" From aa352c2c540cfa0ddd3ddb369d4beb4963d3b2b6 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Fri, 25 Mar 2022 16:54:50 +0300 Subject: [PATCH 03/63] JIT: Fixed memory leak Fixes oss-fuzz #45981 --- ext/opcache/jit/zend_jit_helpers.c | 3 +++ ext/opcache/tests/jit/inc_obj_005.phpt | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 ext/opcache/tests/jit/inc_obj_005.phpt diff --git a/ext/opcache/jit/zend_jit_helpers.c b/ext/opcache/jit/zend_jit_helpers.c index 713ee5ff64b05..6e62231af5189 100644 --- a/ext/opcache/jit/zend_jit_helpers.c +++ b/ext/opcache/jit/zend_jit_helpers.c @@ -2316,6 +2316,9 @@ static void ZEND_FASTCALL zend_jit_invalid_property_incdec(zval *container, cons zend_throw_error(NULL, "Attempt to increment/decrement property \"%s\" on %s", property_name, zend_zval_type_name(container)); + if (opline->op1_type == IS_VAR) { + zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); + } } static void ZEND_FASTCALL zend_jit_invalid_property_assign(zval *container, const char *property_name) diff --git a/ext/opcache/tests/jit/inc_obj_005.phpt b/ext/opcache/tests/jit/inc_obj_005.phpt new file mode 100644 index 0000000000000..fe559218871c3 --- /dev/null +++ b/ext/opcache/tests/jit/inc_obj_005.phpt @@ -0,0 +1,19 @@ +--TEST-- +PRE_INC_OBJ: 005 +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_update_protection=0 +opcache.jit_buffer_size=1M +opcache.protect_memory=1 +--FILE-- +y++; +?> +--EXPECTF-- +Warning: Undefined variable $y in %sinc_obj_005.php on line 2 + +Fatal error: Uncaught Error: Attempt to increment/decrement property "y" on string in %sinc_obj_005.php:2 +Stack trace: +#0 {main} + thrown in %sinc_obj_005.php on line 2 From 2fc1ddc0f18fde218cf905486b57270e081bbb44 Mon Sep 17 00:00:00 2001 From: Martin Kealey Date: Fri, 25 Mar 2022 01:56:04 +1000 Subject: [PATCH 04/63] line break before --prefix in php-fpm man page --- sapi/fpm/php-fpm.8.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sapi/fpm/php-fpm.8.in b/sapi/fpm/php-fpm.8.in index 6525c1eadad64..6a42412440193 100644 --- a/sapi/fpm/php-fpm.8.in +++ b/sapi/fpm/php-fpm.8.in @@ -77,6 +77,8 @@ Show compiled in modules .PD 1 .B \-v Version number +.TP +.PD 0 .B \-\-prefix \fIpath\fP .TP .PD 1 From 771dbdb319fa7f90584f6b2cc2c54ccff570492d Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Mon, 28 Mar 2022 11:26:17 +0200 Subject: [PATCH 05/63] Fix signedness confusion in php_filter_validate_domain() As is, there is the possibility that integer underflow occurs, making `_php_filter_validate_domain()` succeed for very long domain names. Cf. . --- NEWS | 3 +++ ext/filter/logical_filters.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index c6af44051a431..359d099b04ab2 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,9 @@ PHP NEWS (Tim Düsterhus) . Fixed bug GH-8160 (ZTS support on Alpine is broken). (Michael Voříšek) +- Filter: + . Fixed signedness confusion in php_filter_validate_domain(). (cmb) + - Intl: . Fixed bug GH-8142 (Compilation error on cygwin). (David Carlier) diff --git a/ext/filter/logical_filters.c b/ext/filter/logical_filters.c index 95f7a99e34b14..b57473676282f 100644 --- a/ext/filter/logical_filters.c +++ b/ext/filter/logical_filters.c @@ -496,7 +496,7 @@ void php_filter_validate_regexp(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ } } -static int _php_filter_validate_domain(char * domain, int len, zend_long flags) /* {{{ */ +static int _php_filter_validate_domain(char * domain, size_t len, zend_long flags) /* {{{ */ { char *e, *s, *t; size_t l; From 5a8622fe783c7230a21376c331a8467601a483d1 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Mon, 28 Mar 2022 15:04:57 +0200 Subject: [PATCH 06/63] Fix result_type related stack corruption on LLP64 architectures Integer parameters are stored in `zend_long` values, which have 64 bits on LLP64, but `long` has only 32 bits there. Adding a test might be overkill, because the broken behavior could already be observed when running pg_select_001.phpt on Windows debug builds, which report the stack corruption. Closes GH-8263. --- NEWS | 3 +++ ext/pgsql/pgsql.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 359d099b04ab2..bba955f1f228c 100644 --- a/NEWS +++ b/NEWS @@ -25,6 +25,9 @@ PHP NEWS - Pcntl: . Fixed bug GH-8142 (Compilation error on cygwin). (David Carlier) +- PgSQL: + . Fixed result_type related stack corruption on LLP64 architectures. (cmb) + - Sockets: . Fixed Solaris builds. (David Carlier) diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index 70a78643fa54a..98e4e2af4a0e3 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -2000,7 +2000,7 @@ PHP_FUNCTION(pg_fetch_object) PHP_FUNCTION(pg_fetch_all) { zval *result; - long result_type = PGSQL_ASSOC; + zend_long result_type = PGSQL_ASSOC; PGresult *pgsql_result; pgsql_result_handle *pg_result; @@ -5896,7 +5896,7 @@ PHP_FUNCTION(pg_select) char *table; size_t table_len; zend_ulong option = PGSQL_DML_EXEC; - long result_type = PGSQL_ASSOC; + zend_long result_type = PGSQL_ASSOC; PGconn *pg_link; zend_string *sql = NULL; From 2119ba215aacf0b3964694a34aa39037e032abf6 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 28 Mar 2022 10:52:34 -0600 Subject: [PATCH 07/63] Don't try to access memory outside string --- ext/filter/logical_filters.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/filter/logical_filters.c b/ext/filter/logical_filters.c index b57473676282f..ad011568aaca8 100644 --- a/ext/filter/logical_filters.c +++ b/ext/filter/logical_filters.c @@ -509,7 +509,7 @@ static int _php_filter_validate_domain(char * domain, size_t len, zend_long flag t = e - 1; /* Ignore trailing dot */ - if (*t == '.') { + if (l > 0 && *t == '.') { e = t; l--; } From 23cce68d24871f33221f8088716d2ec7c0f6f7d0 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 24 Mar 2022 15:41:03 +0100 Subject: [PATCH 08/63] run-tests.php: fix TypeError: Unsupported operand types: string * int is mandatory for --show-slow and --set-timeout use in help message instead of confusing [n] --- run-tests.php | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/run-tests.php b/run-tests.php index 709c657c2f0fe..ea2cc07c8b219 100755 --- a/run-tests.php +++ b/run-tests.php @@ -97,12 +97,12 @@ function show_usage(): void Do not delete 'all' files, 'php' test file, 'skip' or 'clean' file. - --set-timeout [n] + --set-timeout Set timeout for individual tests, where [n] is the number of seconds. The default value is 60 seconds, or 300 seconds when testing for memory leaks. - --context [n] + --context Sets the number of lines of surrounding context to print for diffs. The default value is 3. @@ -113,7 +113,7 @@ function show_usage(): void 'mem'. The result types get written independent of the log format, however 'diff' only exists when a test fails. - --show-slow [n] + --show-slow Show all tests that took longer than [n] milliseconds to run. --no-clean Do not execute clean section if any. @@ -571,7 +571,11 @@ function main(): void $just_save_results = true; break; case '--set-timeout': - $environment['TEST_TIMEOUT'] = $argv[++$i]; + $timeout = $argv[++$i] ?? ''; + if (!preg_match('/^\d+$/', $timeout)) { + error("'$timeout' is not a valid number of seconds, try e.g. --set-timeout 60 for 1 minute"); + } + $environment['TEST_TIMEOUT'] = intval($timeout, 10); break; case '--context': $context_line_count = $argv[++$i] ?? ''; @@ -586,7 +590,11 @@ function main(): void } break; case '--show-slow': - $slow_min_ms = $argv[++$i]; + $slow_min_ms = $argv[++$i] ?? ''; + if (!preg_match('/^\d+$/', $slow_min_ms)) { + error("'$slow_min_ms' is not a valid number of milliseconds, try e.g. --show-slow 1000 for 1 second"); + } + $slow_min_ms = intval($slow_min_ms, 10); break; case '--temp-source': $temp_source = $argv[++$i]; From fe4aba6588c64e94194449e4f55367f347e962f5 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 29 Mar 2022 10:20:21 +0200 Subject: [PATCH 09/63] typo --- run-tests.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run-tests.php b/run-tests.php index ea2cc07c8b219..2c93f53ab453f 100755 --- a/run-tests.php +++ b/run-tests.php @@ -98,7 +98,7 @@ function show_usage(): void file. --set-timeout - Set timeout for individual tests, where [n] is the number of + Set timeout for individual tests, where is the number of seconds. The default value is 60 seconds, or 300 seconds when testing for memory leaks. @@ -114,7 +114,7 @@ function show_usage(): void however 'diff' only exists when a test fails. --show-slow - Show all tests that took longer than [n] milliseconds to run. + Show all tests that took longer than milliseconds to run. --no-clean Do not execute clean section if any. From 0e6d6f83cc9ee22f9427a43d37f27b9f511674cf Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Mon, 28 Mar 2022 14:37:22 +0200 Subject: [PATCH 10/63] Fix GH-8253: pg_insert() fails for references We need to deref the values. Closes GH-8262. --- NEWS | 1 + ext/pgsql/pgsql.c | 1 + ext/pgsql/tests/gh8253.phpt | 29 +++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 ext/pgsql/tests/gh8253.phpt diff --git a/NEWS b/NEWS index bba955f1f228c..9ee38ddb2bcc3 100644 --- a/NEWS +++ b/NEWS @@ -27,6 +27,7 @@ PHP NEWS - PgSQL: . Fixed result_type related stack corruption on LLP64 architectures. (cmb) + . Fixed bug GH-8253 (pg_insert() fails for references). (cmb) - Sockets: . Fixed Solaris builds. (David Carlier) diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index 98e4e2af4a0e3..ce3d86697a433 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -4595,6 +4595,7 @@ PHP_PGSQL_API int php_pgsql_convert(PGconn *pg_link, const char *table_name, con ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(values), field, val) { skip_field = 0; + ZVAL_DEREF(val); ZVAL_NULL(&new_val); /* TODO: Check when meta data can be broken and see if can use assertions instead */ diff --git a/ext/pgsql/tests/gh8253.phpt b/ext/pgsql/tests/gh8253.phpt new file mode 100644 index 0000000000000..24a4b96295837 --- /dev/null +++ b/ext/pgsql/tests/gh8253.phpt @@ -0,0 +1,29 @@ +--TEST-- +pg_insert() fails for references +--SKIPIF-- + +--FILE-- + "testing"]; +fee($a["bar"]); + +$db = pg_connect($conn_str); +pg_query($db, "DROP TABLE IF EXISTS gh8253"); +pg_query($db, "CREATE TABLE gh8253 (bar text);"); +pg_insert($db, "gh8253", $a); +$res = pg_query($db, "SELECT * FROM gh8253"); +var_dump(pg_fetch_all($res)); +?> +--EXPECT-- +array(1) { + [0]=> + array(1) { + ["bar"]=> + string(7) "testing" + } +} From 48e07076209c6163ecb4a756f73f511f1f09200e Mon Sep 17 00:00:00 2001 From: Zhou Qingyang Date: Tue, 29 Mar 2022 23:37:18 +0800 Subject: [PATCH 11/63] spl_ptr_llist_offset() is not supposed to return NULL here This issue has found by a static analyzer. Closes GH-8272. --- ext/spl/spl_dllist.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ext/spl/spl_dllist.c b/ext/spl/spl_dllist.c index f82a3ffe91e97..0daf486e40b60 100644 --- a/ext/spl/spl_dllist.c +++ b/ext/spl/spl_dllist.c @@ -1191,6 +1191,7 @@ PHP_METHOD(SplDoublyLinkedList, add) /* Get the element we want to insert before */ element = spl_ptr_llist_offset(intern->llist, index, intern->flags & SPL_DLLIST_IT_LIFO); + ZEND_ASSERT(element != NULL); ZVAL_COPY(&elem->data, value); SPL_LLIST_RC(elem) = 1; From 06e383b2f4dda460ee422e31ae3d78a06048d473 Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Mon, 7 Mar 2022 12:39:57 +0000 Subject: [PATCH 12/63] Fix regression from #8058 Closes GH-8181 --- ext/mysqlnd/mysqlnd_ps.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c index 1eac55a03fc89..cdbffbe2f54a2 100644 --- a/ext/mysqlnd/mysqlnd_ps.c +++ b/ext/mysqlnd/mysqlnd_ps.c @@ -391,7 +391,7 @@ mysqlnd_stmt_prepare_read_eof(MYSQLND_STMT * s) /* {{{ mysqlnd_stmt::prepare */ static enum_func_status -MYSQLND_METHOD(mysqlnd_stmt, prepare)(MYSQLND_STMT * s, const char * const query, const size_t query_len) +MYSQLND_METHOD(mysqlnd_stmt, prepare)(MYSQLND_STMT * const s, const char * const query, const size_t query_len) { MYSQLND_STMT_DATA * stmt = s? s->data : NULL; MYSQLND_CONN_DATA * conn = stmt? stmt->conn : NULL; @@ -413,12 +413,25 @@ MYSQLND_METHOD(mysqlnd_stmt, prepare)(MYSQLND_STMT * s, const char * const query /* Create a new prepared statement and destroy the previous one. */ - s->m->dtor(s, TRUE); - s = conn->m->stmt_init(conn); - if (!s) { + MYSQLND_STMT * s_to_prepare = conn->m->stmt_init(conn); + if (!s_to_prepare) { goto fail; } - stmt = s->data; + MYSQLND_STMT_DATA * stmt_to_prepare = s_to_prepare->data; + + /* swap */ + size_t real_size = sizeof(MYSQLND_STMT) + mysqlnd_plugin_count() * sizeof(void *); + char * tmp_swap = mnd_malloc(real_size); + memcpy(tmp_swap, s, real_size); + memcpy(s, s_to_prepare, real_size); + memcpy(s_to_prepare, tmp_swap, real_size); + mnd_free(tmp_swap); + { + MYSQLND_STMT_DATA * tmp_swap_data = stmt_to_prepare; + stmt_to_prepare = stmt; + stmt = tmp_swap_data; + } + s_to_prepare->m->dtor(s_to_prepare, TRUE); } { From ced5581ecacdd9f0bd0869a0d5b0d56057b2f71d Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Thu, 31 Mar 2022 10:53:58 +0100 Subject: [PATCH 13/63] Fix mnd_malloc -> mnd_emalloc from previous merge --- ext/mysqlnd/mysqlnd_ps.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c index 665946df2a2bf..15ccec4522beb 100644 --- a/ext/mysqlnd/mysqlnd_ps.c +++ b/ext/mysqlnd/mysqlnd_ps.c @@ -399,11 +399,11 @@ MYSQLND_METHOD(mysqlnd_stmt, prepare)(MYSQLND_STMT * const s, const char * const /* swap */ size_t real_size = sizeof(MYSQLND_STMT) + mysqlnd_plugin_count() * sizeof(void *); - char * tmp_swap = mnd_malloc(real_size); + char * tmp_swap = mnd_emalloc(real_size); memcpy(tmp_swap, s, real_size); memcpy(s, s_to_prepare, real_size); memcpy(s_to_prepare, tmp_swap, real_size); - mnd_free(tmp_swap); + mnd_efree(tmp_swap); { MYSQLND_STMT_DATA * tmp_swap_data = stmt_to_prepare; stmt_to_prepare = stmt; From 2145f80d4bb76c3fe9739671300091265b6e20d6 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Thu, 31 Mar 2022 14:31:17 +0200 Subject: [PATCH 14/63] Register JSON_ERROR_NON_BACKED_ENUM constant (#8285) Fixes GH-8238 --- NEWS | 1 + Zend/tests/enum/json_encode.phpt | 6 ++++++ ext/json/json.c | 1 + 3 files changed, 8 insertions(+) diff --git a/NEWS b/NEWS index 92ac43c98542d..cb1e237533251 100644 --- a/NEWS +++ b/NEWS @@ -347,6 +347,7 @@ PHP NEWS - JSON: . Fixed bug #81532 (Change of $depth behaviour in json_encode() on PHP 8.1). (Nikita) + . Fixed bug GH-8238 (Register JSON_ERROR_NON_BACKED_ENUM constant). (ilutov) - LDAP: . Convert resource to object \LDAP\Connection. (Máté) diff --git a/Zend/tests/enum/json_encode.phpt b/Zend/tests/enum/json_encode.phpt index 12ed0d3d445ab..f1174db7ae8ee 100644 --- a/Zend/tests/enum/json_encode.phpt +++ b/Zend/tests/enum/json_encode.phpt @@ -26,6 +26,10 @@ enum CustomFoo implements JsonSerializable { function test($value) { var_dump(json_encode($value)); echo json_last_error_msg() . "\n"; + if (json_last_error() !== JSON_ERROR_NONE) { + echo json_last_error() . ' === ' . JSON_ERROR_NON_BACKED_ENUM . ":\n"; + var_dump(json_last_error() === JSON_ERROR_NON_BACKED_ENUM); + } try { var_dump(json_encode($value, JSON_THROW_ON_ERROR)); @@ -44,6 +48,8 @@ test(CustomFoo::Bar); --EXPECT-- bool(false) Non-backed enums have no default serialization +11 === 11: +bool(true) JsonException: Non-backed enums have no default serialization string(1) "0" No error diff --git a/ext/json/json.c b/ext/json/json.c index 2d7846a5dbed9..c8f0ed5e93a3d 100644 --- a/ext/json/json.c +++ b/ext/json/json.c @@ -83,6 +83,7 @@ static PHP_MINIT_FUNCTION(json) PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_UNSUPPORTED_TYPE", PHP_JSON_ERROR_UNSUPPORTED_TYPE); PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_INVALID_PROPERTY_NAME", PHP_JSON_ERROR_INVALID_PROPERTY_NAME); PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_UTF16", PHP_JSON_ERROR_UTF16); + PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_NON_BACKED_ENUM", PHP_JSON_ERROR_NON_BACKED_ENUM); return SUCCESS; } From b9e895bca0a479cfebc63c782f556b016ea07f19 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 31 Mar 2022 16:27:58 +0200 Subject: [PATCH 15/63] Replace memcmp() with zend_string functions (#8216) * ext/oci8: use zend_string_equals() Eliminate duplicate code. * main/php_variables: use zend_string_equals_literal() Eliminate duplicate code. * Zend/zend_string: add zend_string_equals_cstr() Allows eliminating duplicate code. * Zend, ext/{opcache,standard}, main/output: use zend_string_equals_cstr() Eliminate duplicate code. * Zend/zend_string: add zend_string_starts_with() * ext/{opcache,phar,spl,standard}: use zend_string_starts_with() This adds missing length checks to several callers, e.g. in cache_script_in_shared_memory(). This is important when the zend_string is shorter than the string parameter, when memcmp() happens to check backwards; this can result in an out-of-bounds memory access. --- Zend/zend_attributes.c | 6 ++---- Zend/zend_compile.c | 6 ++---- Zend/zend_execute.c | 2 +- Zend/zend_execute_API.c | 3 +-- Zend/zend_hash.c | 9 +++------ Zend/zend_string.c | 6 ++---- Zend/zend_string.h | 20 +++++++++++++++++++- ext/oci8/oci8.c | 7 ++----- ext/opcache/ZendAccelerator.c | 8 +++----- ext/phar/stream.c | 6 ++---- ext/spl/spl_directory.c | 2 +- ext/standard/proc_open.c | 2 +- ext/standard/string.c | 10 +++------- main/output.c | 2 +- main/php_variables.c | 3 +-- 15 files changed, 44 insertions(+), 48 deletions(-) diff --git a/Zend/zend_attributes.c b/Zend/zend_attributes.c index 8a37375247269..0d27d1bcaa216 100644 --- a/Zend/zend_attributes.c +++ b/Zend/zend_attributes.c @@ -112,10 +112,8 @@ static zend_attribute *get_attribute_str(HashTable *attributes, const char *str, zend_attribute *attr; ZEND_HASH_PACKED_FOREACH_PTR(attributes, attr) { - if (attr->offset == offset && ZSTR_LEN(attr->lcname) == len) { - if (0 == memcmp(ZSTR_VAL(attr->lcname), str, len)) { - return attr; - } + if (attr->offset == offset && zend_string_equals_cstr(attr->lcname, str, len)) { + return attr; } } ZEND_HASH_FOREACH_END(); } diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 039e95913f6d3..cfe44d3f3766f 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -266,9 +266,7 @@ static zend_always_inline bool zend_is_confusable_type(const zend_string *name, /* Intentionally using case-sensitive comparison here, because "integer" is likely intended * as a scalar type, while "Integer" is likely a class type. */ for (; info->name; ++info) { - if (ZSTR_LEN(name) == info->name_len - && memcmp(ZSTR_VAL(name), info->name, info->name_len) == 0 - ) { + if (zend_string_equals_cstr(name, info->name, info->name_len)) { *correct_name = info->correct_name; return 1; } @@ -3379,7 +3377,7 @@ static uint32_t zend_get_arg_num(zend_function *fn, zend_string *arg_name) { for (uint32_t i = 0; i < fn->common.num_args; i++) { zend_internal_arg_info *arg_info = &fn->internal_function.arg_info[i]; size_t len = strlen(arg_info->name); - if (len == ZSTR_LEN(arg_name) && !memcmp(arg_info->name, ZSTR_VAL(arg_name), len)) { + if (zend_string_equals_cstr(arg_name, arg_info->name, len)) { return i + 1; } } diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 5b2ce68ffb3b7..c176696f3f236 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -4675,7 +4675,7 @@ static zend_always_inline uint32_t zend_get_arg_offset_by_name( for (uint32_t i = 0; i < num_args; i++) { zend_internal_arg_info *arg_info = &fbc->internal_function.arg_info[i]; size_t len = strlen(arg_info->name); - if (len == ZSTR_LEN(arg_name) && !memcmp(arg_info->name, ZSTR_VAL(arg_name), len)) { + if (zend_string_equals_cstr(arg_name, arg_info->name, len)) { *cache_slot = fbc; *(uintptr_t *)(cache_slot + 1) = i; return i; diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index e791f986f8e74..e9ecc5d6697d6 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -1817,8 +1817,7 @@ ZEND_API zend_result zend_set_local_var_str(const char *name, size_t len, zval * do { if (ZSTR_H(*str) == h && - ZSTR_LEN(*str) == len && - memcmp(ZSTR_VAL(*str), name, len) == 0) { + zend_string_equals_cstr(*str, name, len)) { zval *var = EX_VAR_NUM(str - op_array->vars); zval_ptr_dtor(var); ZVAL_COPY_VALUE(var, value); diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 6e809c873417a..0bfe1271ea3c3 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -711,8 +711,7 @@ static zend_always_inline Bucket *zend_hash_str_find_bucket(const HashTable *ht, p = HT_HASH_TO_BUCKET_EX(arData, idx); if ((p->h == h) && p->key - && (ZSTR_LEN(p->key) == len) - && !memcmp(ZSTR_VAL(p->key), str, len)) { + && zend_string_equals_cstr(p->key, str, len)) { return p; } idx = Z_NEXT(p->val); @@ -1556,8 +1555,7 @@ ZEND_API zend_result ZEND_FASTCALL zend_hash_str_del_ind(HashTable *ht, const ch p = HT_HASH_TO_BUCKET(ht, idx); if ((p->h == h) && p->key - && (ZSTR_LEN(p->key) == len) - && !memcmp(ZSTR_VAL(p->key), str, len)) { + && zend_string_equals_cstr(p->key, str, len)) { if (Z_TYPE(p->val) == IS_INDIRECT) { zval *data = Z_INDIRECT(p->val); @@ -1602,8 +1600,7 @@ ZEND_API zend_result ZEND_FASTCALL zend_hash_str_del(HashTable *ht, const char * p = HT_HASH_TO_BUCKET(ht, idx); if ((p->h == h) && p->key - && (ZSTR_LEN(p->key) == len) - && !memcmp(ZSTR_VAL(p->key), str, len)) { + && zend_string_equals_cstr(p->key, str, len)) { zend_string_release(p->key); p->key = NULL; _zend_hash_del_el_ex(ht, idx, p, prev); diff --git a/Zend/zend_string.c b/Zend/zend_string.c index c24d5dfcdb478..1284e908a55b1 100644 --- a/Zend/zend_string.c +++ b/Zend/zend_string.c @@ -135,10 +135,8 @@ static zend_always_inline zend_string *zend_interned_string_ht_lookup_ex(zend_ul idx = HT_HASH(interned_strings, nIndex); while (idx != HT_INVALID_IDX) { p = HT_HASH_TO_BUCKET(interned_strings, idx); - if ((p->h == h) && (ZSTR_LEN(p->key) == size)) { - if (!memcmp(ZSTR_VAL(p->key), str, size)) { - return p->key; - } + if ((p->h == h) && zend_string_equals_cstr(p->key, str, size)) { + return p->key; } idx = Z_NEXT(p->val); } diff --git a/Zend/zend_string.h b/Zend/zend_string.h index 19cd926eff7be..06a4edc01ae51 100644 --- a/Zend/zend_string.h +++ b/Zend/zend_string.h @@ -339,6 +339,11 @@ static zend_always_inline void zend_string_release_ex(zend_string *s, bool persi } } +static zend_always_inline bool zend_string_equals_cstr(const zend_string *s1, const char *s2, size_t s2_length) +{ + return ZSTR_LEN(s1) == s2_length && !memcmp(ZSTR_VAL(s1), s2, s2_length); +} + #if defined(__GNUC__) && (defined(__i386__) || (defined(__x86_64__) && !defined(__ILP32__))) BEGIN_EXTERN_C() ZEND_API bool ZEND_FASTCALL zend_string_equal_val(zend_string *s1, zend_string *s2); @@ -367,7 +372,20 @@ static zend_always_inline bool zend_string_equals(zend_string *s1, zend_string * (ZSTR_LEN(str) == sizeof(c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1)) #define zend_string_equals_literal(str, literal) \ - (ZSTR_LEN(str) == sizeof(literal)-1 && !memcmp(ZSTR_VAL(str), literal, sizeof(literal) - 1)) + zend_string_equals_cstr(str, literal, strlen(literal)) + +static zend_always_inline bool zend_string_starts_with_cstr(const zend_string *str, const char *prefix, size_t prefix_length) +{ + return ZSTR_LEN(str) >= prefix_length && !memcmp(ZSTR_VAL(str), prefix, prefix_length); +} + +static zend_always_inline bool zend_string_starts_with(const zend_string *str, const zend_string *prefix) +{ + return zend_string_starts_with_cstr(str, ZSTR_VAL(prefix), ZSTR_LEN(prefix)); +} + +#define zend_string_starts_with_literal(str, prefix) \ + zend_string_starts_with_cstr(str, prefix, strlen(prefix)) /* * DJBX33A (Daniel J. Bernstein, Times 33 with Addition) diff --git a/ext/oci8/oci8.c b/ext/oci8/oci8.c index ac79c57f2b2a9..f75a3a89187c7 100644 --- a/ext/oci8/oci8.c +++ b/ext/oci8/oci8.c @@ -1096,9 +1096,7 @@ php_oci_connection *php_oci_do_connect_ex(char *username, int username_len, char } if ((tmp_val != NULL) && (tmp != NULL) && - (ZSTR_LEN(tmp->hash_key) == ZSTR_LEN(hashed_details.s)) && - (memcmp(ZSTR_VAL(tmp->hash_key), ZSTR_VAL(hashed_details.s), - ZSTR_LEN(tmp->hash_key)) == 0)) { + zend_string_equals(tmp->hash_key, hashed_details.s)) { connection = tmp; GC_ADDREF(connection->id); } @@ -2120,8 +2118,7 @@ static php_oci_spool *php_oci_get_spool(char *username, int username_len, char * } zend_register_persistent_resource_ex(session_pool->spool_hash_key, session_pool, le_psessionpool); } else if (spool_out_le->type == le_psessionpool && - ZSTR_LEN(((php_oci_spool *)(spool_out_le->ptr))->spool_hash_key) == ZSTR_LEN(spool_hashed_details.s) && - memcmp(ZSTR_VAL(((php_oci_spool *)(spool_out_le->ptr))->spool_hash_key), ZSTR_VAL(spool_hashed_details.s), ZSTR_LEN(spool_hashed_details.s)) == 0) { + zend_string_equals(((php_oci_spool *)(spool_out_le->ptr))->spool_hash_key, spool_hashed_details.s)) { /* retrieve the cached session pool */ session_pool = (php_oci_spool *)(spool_out_le->ptr); } diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index e17fc16a947b7..362126db23d2d 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -590,10 +590,8 @@ static zend_always_inline zend_string *accel_find_interned_string_ex(zend_ulong if (EXPECTED(pos != STRTAB_INVALID_POS)) { do { s = STRTAB_POS_TO_STR(&ZCSG(interned_strings), pos); - if (EXPECTED(ZSTR_H(s) == h) && EXPECTED(ZSTR_LEN(s) == size)) { - if (!memcmp(ZSTR_VAL(s), str, size)) { - return s; - } + if (EXPECTED(ZSTR_H(s) == h) && zend_string_equals_cstr(s, str, size)) { + return s; } pos = STRTAB_COLLISION(s); } while (pos != STRTAB_INVALID_POS); @@ -1637,7 +1635,7 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr zend_accel_error(ACCEL_LOG_INFO, "Cached script '%s'", ZSTR_VAL(new_persistent_script->script.filename)); if (key && /* key may contain non-persistent PHAR aliases (see issues #115 and #149) */ - memcmp(ZSTR_VAL(key), "phar://", sizeof("phar://") - 1) != 0 && + !zend_string_starts_with_literal(key, "phar://") && !zend_string_equals(new_persistent_script->script.filename, key)) { /* link key to the same persistent script in hash table */ zend_string *new_key = accel_new_interned_key(key); diff --git a/ext/phar/stream.c b/ext/phar/stream.c index 9bba67c6fc963..b45b662398c79 100644 --- a/ext/phar/stream.c +++ b/ext/phar/stream.c @@ -912,8 +912,7 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from ZEND_HASH_MAP_FOREACH_BUCKET(&phar->virtual_dirs, b) { str_key = b->key; - if (ZSTR_LEN(str_key) >= from_len && - memcmp(ZSTR_VAL(str_key), ZSTR_VAL(resource_from->path)+1, from_len) == 0 && + if (zend_string_starts_with_cstr(str_key, ZSTR_VAL(resource_from->path)+1, from_len) && (ZSTR_LEN(str_key) == from_len || IS_SLASH(ZSTR_VAL(str_key)[from_len]))) { new_str_key = zend_string_alloc(ZSTR_LEN(str_key) + to_len - from_len, 0); @@ -930,8 +929,7 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from ZEND_HASH_MAP_FOREACH_BUCKET(&phar->mounted_dirs, b) { str_key = b->key; - if (ZSTR_LEN(str_key) >= from_len && - memcmp(ZSTR_VAL(str_key), ZSTR_VAL(resource_from->path)+1, from_len) == 0 && + if (zend_string_starts_with_cstr(str_key, ZSTR_VAL(resource_from->path)+1, from_len) && (ZSTR_LEN(str_key) == from_len || IS_SLASH(ZSTR_VAL(str_key)[from_len]))) { new_str_key = zend_string_alloc(ZSTR_LEN(str_key) + to_len - from_len, 0); diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index b6e53c2921b7d..f752593c92351 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -740,7 +740,7 @@ void spl_filesystem_object_construct(INTERNAL_FUNCTION_PARAMETERS, zend_long cto /* spl_filesystem_dir_open() may emit an E_WARNING */ zend_replace_error_handling(EH_THROW, spl_ce_UnexpectedValueException, &error_handling); #ifdef HAVE_GLOB - if (SPL_HAS_FLAG(ctor_flags, DIT_CTOR_GLOB) && memcmp(ZSTR_VAL(path), "glob://", sizeof("glob://")-1) != 0) { + if (SPL_HAS_FLAG(ctor_flags, DIT_CTOR_GLOB) && !zend_string_starts_with_literal(path, "glob://")) { path = zend_strpprintf(0, "glob://%s", ZSTR_VAL(path)); spl_filesystem_dir_open(intern, path); zend_string_release(path); diff --git a/ext/standard/proc_open.c b/ext/standard/proc_open.c index a57e66bd97954..28420b4f803aa 100644 --- a/ext/standard/proc_open.c +++ b/ext/standard/proc_open.c @@ -728,7 +728,7 @@ static zend_result set_proc_descriptor_to_pipe(descriptorspec_item *desc, zend_s desc->type = DESCRIPTOR_TYPE_PIPE; - if (strncmp(ZSTR_VAL(zmode), "w", 1) != 0) { + if (!zend_string_starts_with_literal(zmode, "w")) { desc->parentend = newpipe[1]; desc->childend = newpipe[0]; desc->mode_flags = O_WRONLY; diff --git a/ext/standard/string.c b/ext/standard/string.c index 593c67cb32248..00d422fb18564 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -1810,11 +1810,7 @@ PHP_FUNCTION(str_starts_with) Z_PARAM_STR(needle) ZEND_PARSE_PARAMETERS_END(); - if (ZSTR_LEN(needle) > ZSTR_LEN(haystack)) { - RETURN_FALSE; - } - - RETURN_BOOL(memcmp(ZSTR_VAL(haystack), ZSTR_VAL(needle), ZSTR_LEN(needle)) == 0); + RETURN_BOOL(zend_string_starts_with(haystack, needle)); } /* }}} */ @@ -4738,14 +4734,14 @@ static zend_string *try_setlocale_str(zend_long cat, zend_string *loc) { /* C locale is represented as NULL. */ BG(ctype_string) = NULL; return ZSTR_CHAR('C'); - } else if (len == ZSTR_LEN(loc) && !memcmp(ZSTR_VAL(loc), retval, len)) { + } else if (zend_string_equals_cstr(loc, retval, len)) { BG(ctype_string) = zend_string_copy(loc); return zend_string_copy(BG(ctype_string)); } else { BG(ctype_string) = zend_string_init(retval, len, 0); return zend_string_copy(BG(ctype_string)); } - } else if (len == ZSTR_LEN(loc) && !memcmp(ZSTR_VAL(loc), retval, len)) { + } else if (zend_string_equals_cstr(loc, retval, len)) { return zend_string_copy(loc); } } diff --git a/main/output.c b/main/output.c index 3e29f8f152673..7b5bc49dab87e 100644 --- a/main/output.c +++ b/main/output.c @@ -584,7 +584,7 @@ PHPAPI int php_output_handler_started(const char *name, size_t name_len) handlers = (php_output_handler **) zend_stack_base(&OG(handlers)); for (i = 0; i < count; ++i) { - if (name_len == ZSTR_LEN(handlers[i]->name) && !memcmp(ZSTR_VAL(handlers[i]->name), name, name_len)) { + if (zend_string_equals_cstr(handlers[i]->name, name, name_len)) { return 1; } } diff --git a/main/php_variables.c b/main/php_variables.c index 0261cf0098ee4..812b46bc9c73a 100644 --- a/main/php_variables.c +++ b/main/php_variables.c @@ -702,8 +702,7 @@ static void php_autoglobal_merge(HashTable *dest, HashTable *src) || Z_TYPE_P(dest_entry) != IS_ARRAY) { Z_TRY_ADDREF_P(src_entry); if (string_key) { - if (!globals_check || ZSTR_LEN(string_key) != sizeof("GLOBALS") - 1 - || memcmp(ZSTR_VAL(string_key), "GLOBALS", sizeof("GLOBALS") - 1)) { + if (!globals_check || !zend_string_equals_literal(string_key, "GLOBALS")) { zend_hash_update(dest, string_key, src_entry); } else { Z_TRY_DELREF_P(src_entry); From 5a899563ccfe657610aff899c42435c6491a4142 Mon Sep 17 00:00:00 2001 From: Patrick Allaert Date: Thu, 31 Mar 2022 17:37:41 +0200 Subject: [PATCH 16/63] Bump for 8.1.6-dev --- NEWS | 5 ++++- Zend/zend.h | 2 +- configure.ac | 2 +- main/php_version.h | 6 +++--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index cb1e237533251..48a8cfd68801c 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,9 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -?? ??? ????, PHP 8.1.5 +?? ??? ????, PHP 8.1.6 + + +31 Mar 2022, PHP 8.1.5 - Core: . Fixed bug GH-8176 (Enum values in property initializers leak). (Bob) diff --git a/Zend/zend.h b/Zend/zend.h index 7dc686cc104f9..568f42de2a828 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -20,7 +20,7 @@ #ifndef ZEND_H #define ZEND_H -#define ZEND_VERSION "4.1.5-dev" +#define ZEND_VERSION "4.1.6-dev" #define ZEND_ENGINE_3 diff --git a/configure.ac b/configure.ac index 3df524a50a745..8e5f67e232597 100644 --- a/configure.ac +++ b/configure.ac @@ -17,7 +17,7 @@ dnl Basic autoconf initialization, generation of config.nice. dnl ---------------------------------------------------------------------------- AC_PREREQ([2.68]) -AC_INIT([PHP],[8.1.5-dev],[https://bugs.php.net],[php],[https://www.php.net]) +AC_INIT([PHP],[8.1.6-dev],[https://bugs.php.net],[php],[https://www.php.net]) AC_CONFIG_SRCDIR([main/php_version.h]) AC_CONFIG_AUX_DIR([build]) AC_PRESERVE_HELP_ORDER diff --git a/main/php_version.h b/main/php_version.h index a879ae407415d..7c86754855360 100644 --- a/main/php_version.h +++ b/main/php_version.h @@ -2,7 +2,7 @@ /* edit configure.ac to change version number */ #define PHP_MAJOR_VERSION 8 #define PHP_MINOR_VERSION 1 -#define PHP_RELEASE_VERSION 5 +#define PHP_RELEASE_VERSION 6 #define PHP_EXTRA_VERSION "-dev" -#define PHP_VERSION "8.1.5-dev" -#define PHP_VERSION_ID 80105 +#define PHP_VERSION "8.1.6-dev" +#define PHP_VERSION_ID 80106 From d82d62c237bbab34c0a3195ae9eff19d04448338 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Fri, 1 Apr 2022 12:54:46 +0200 Subject: [PATCH 17/63] Re-enable i386 tests on Azure Pipelines --- azure-pipelines.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a8fc6bcbb70bc..a633ceae01cbf 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -22,11 +22,10 @@ schedules: - master jobs: - # Azure pipelines don't work atm - # - template: azure/i386/job.yml - # parameters: - # configurationName: I386_DEBUG_ZTS - # configurationParameters: '--enable-debug --enable-zts' + - template: azure/i386/job.yml + parameters: + configurationName: I386_DEBUG_ZTS + configurationParameters: '--enable-debug --enable-zts' - ${{ if eq(variables['Build.Reason'], 'Schedule') }}: - template: azure/job.yml parameters: From e6c498818717217c0af7699d9b9ce5fc8b903011 Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Fri, 1 Apr 2022 13:28:05 +0100 Subject: [PATCH 18/63] Fixed #7752, #8101, #81660: DateTimeZone::getTransitions() returns insufficient data --- NEWS | 6 ++ ext/date/php_date.c | 58 ++++++++++++------- .../DateTimeZone_getTransitions_bug1.phpt | 58 +++++++++++++++++++ 3 files changed, 102 insertions(+), 20 deletions(-) create mode 100644 ext/date/tests/DateTimeZone_getTransitions_bug1.phpt diff --git a/NEWS b/NEWS index 48a8cfd68801c..030de087fca9d 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,12 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? ????, PHP 8.1.6 +- Date: + . Fixed bug GH-7752 (DateTimeZone::getTransitions() returns insufficient + data). (Derick) + . Fixed bug GH-8108 (Timezone doesn't work as intended). (Derick) + . Fixed bug #81660 (DateTimeZone::getTransitions() returns invalid data). + (Derick) 31 Mar 2022, PHP 8.1.5 diff --git a/ext/date/php_date.c b/ext/date/php_date.c index cf4a11b8a2243..c604b936ba0d9 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -3629,6 +3629,15 @@ PHP_FUNCTION(timezone_transitions_get) add_assoc_string(&element, "abbr", &tzobj->tzi.tz->timezone_abbr[tzobj->tzi.tz->type[i].abbr_idx]); \ add_next_index_zval(return_value, &element); +#define add_from_tto(to,ts) \ + array_init(&element); \ + add_assoc_long(&element, "ts", ts); \ + add_assoc_str(&element, "time", php_format_date(DATE_FORMAT_ISO8601, 13, ts, 0)); \ + add_assoc_long(&element, "offset", (to)->offset); \ + add_assoc_bool(&element, "isdst", (to)->is_dst); \ + add_assoc_string(&element, "abbr", (to)->abbr); \ + add_next_index_zval(return_value, &element); + #define add_last() add(tzobj->tzi.tz->bit64.timecnt - 1, timestamp_begin) array_init(return_value); @@ -3658,7 +3667,13 @@ PHP_FUNCTION(timezone_transitions_get) if (!found) { if (tzobj->tzi.tz->bit64.timecnt > 0) { - add_last(); + if (tzobj->tzi.tz->posix_info && tzobj->tzi.tz->posix_info->dst_end) { + timelib_time_offset *tto = timelib_get_time_zone_info(timestamp_begin, tzobj->tzi.tz); + add_from_tto(tto, timestamp_begin); + timelib_time_offset_dtor(tto); + } else { + add_last(); + } } else { add_nominal(); } @@ -3671,31 +3686,34 @@ PHP_FUNCTION(timezone_transitions_get) return; } } - if (tzobj->tzi.tz->posix_info && tzobj->tzi.tz->posix_info->dst_end) { - int i, j; - timelib_sll start_y, end_y, dummy_m, dummy_d; - timelib_sll last_transition_ts = tzobj->tzi.tz->trans[tzobj->tzi.tz->bit64.timecnt - 1]; + } + if (tzobj->tzi.tz->posix_info && tzobj->tzi.tz->posix_info->dst_end) { + int i, j; + timelib_sll start_y, end_y, dummy_m, dummy_d; + timelib_sll last_transition_ts = tzobj->tzi.tz->trans[tzobj->tzi.tz->bit64.timecnt - 1]; - /* Find out year for last transition */ - timelib_unixtime2date(last_transition_ts, &start_y, &dummy_m, &dummy_d); + /* Find out year for last transition */ + timelib_unixtime2date(last_transition_ts, &start_y, &dummy_m, &dummy_d); - /* Find out year for final boundary timestamp */ - timelib_unixtime2date(timestamp_end, &end_y, &dummy_m, &dummy_d); + /* Find out year for final boundary timestamp */ + timelib_unixtime2date(timestamp_end, &end_y, &dummy_m, &dummy_d); - for (i = start_y; i <= end_y; i++) { - timelib_posix_transitions transitions = { 0 }; + for (i = start_y; i <= end_y; i++) { + timelib_posix_transitions transitions = { 0 }; - timelib_get_transitions_for_year(tzobj->tzi.tz, i, &transitions); + timelib_get_transitions_for_year(tzobj->tzi.tz, i, &transitions); - for (j = 0; j < transitions.count; j++) { - if (transitions.times[j] <= last_transition_ts) { - continue; - } - if (transitions.times[j] > timestamp_end) { - return; - } - add_by_index(transitions.types[j], transitions.times[j]); + for (j = 0; j < transitions.count; j++) { + if (transitions.times[j] <= last_transition_ts) { + continue; + } + if (transitions.times[j] < timestamp_begin) { + continue; + } + if (transitions.times[j] > timestamp_end) { + return; } + add_by_index(transitions.types[j], transitions.times[j]); } } } diff --git a/ext/date/tests/DateTimeZone_getTransitions_bug1.phpt b/ext/date/tests/DateTimeZone_getTransitions_bug1.phpt new file mode 100644 index 0000000000000..7ac2c065219f1 --- /dev/null +++ b/ext/date/tests/DateTimeZone_getTransitions_bug1.phpt @@ -0,0 +1,58 @@ +--TEST-- +GH-7752: DateTimeZone::getTransitions() does not return enough information +--FILE-- +getTransitions($from, $to) as $t) { + printf("%12d %s %6d %s %s\n", $t['ts'], $t['time'], $t['offset'], $t['isdst'] ? "DST" : " x ", $t['abbr']); + } + echo "\n"; +} + + +showTransitions('Europe/London', 1648342200); +showTransitions('America/Los_Angeles', 1648557596); // GH Issue 7752 +showTransitions('America/Chicago', 1293861600); // PHP Bug 81660 +showTransitions('Europe/Paris', 1645095600); // GH Issue 8108 +?> +--EXPECT-- +Europe/London from @1648342200-@1727398200: + + 1648342200 2022-03-27T00:50:00+0000 0 x GMT + 1648342800 2022-03-27T01:00:00+0000 3600 DST BST + 1667091600 2022-10-30T01:00:00+0000 0 x GMT + 1679792400 2023-03-26T01:00:00+0000 3600 DST BST + 1698541200 2023-10-29T01:00:00+0000 0 x GMT + 1711846800 2024-03-31T01:00:00+0000 3600 DST BST + +America/Los_Angeles from @1648557596-@1727613596: + + 1648557596 2022-03-29T12:39:56+0000 -25200 DST PDT + 1667725200 2022-11-06T09:00:00+0000 -28800 x PST + 1678615200 2023-03-12T10:00:00+0000 -25200 DST PDT + 1699174800 2023-11-05T09:00:00+0000 -28800 x PST + 1710064800 2024-03-10T10:00:00+0000 -25200 DST PDT + +America/Chicago from @1293861600-@1372917600: + + 1293861600 2011-01-01T06:00:00+0000 -21600 x CST + 1300003200 2011-03-13T08:00:00+0000 -18000 DST CDT + 1320562800 2011-11-06T07:00:00+0000 -21600 x CST + 1331452800 2012-03-11T08:00:00+0000 -18000 DST CDT + 1352012400 2012-11-04T07:00:00+0000 -21600 x CST + 1362902400 2013-03-10T08:00:00+0000 -18000 DST CDT + +Europe/Paris from @1645095600-@1724151600: + + 1645095600 2022-02-17T11:00:00+0000 3600 x CET + 1648342800 2022-03-27T01:00:00+0000 7200 DST CEST + 1667091600 2022-10-30T01:00:00+0000 3600 x CET + 1679792400 2023-03-26T01:00:00+0000 7200 DST CEST + 1698541200 2023-10-29T01:00:00+0000 3600 x CET + 1711846800 2024-03-31T01:00:00+0000 7200 DST CEST From 738adce79fd345d5f9dd604641084588f8adf6d9 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Fri, 7 Aug 2020 20:15:38 +0200 Subject: [PATCH 19/63] Fix [-Wundef] warnings in DBA extension --- ext/dba/dba.c | 52 +++++++++++++++++++++--------------------- ext/dba/dba_cdb.c | 2 +- ext/dba/dba_db1.c | 2 +- ext/dba/dba_db2.c | 2 +- ext/dba/dba_db3.c | 2 +- ext/dba/dba_db4.c | 2 +- ext/dba/dba_dbm.c | 4 ++-- ext/dba/dba_flatfile.c | 2 +- ext/dba/dba_gdbm.c | 2 +- ext/dba/dba_inifile.c | 2 +- ext/dba/dba_lmdb.c | 2 +- ext/dba/dba_ndbm.c | 2 +- ext/dba/dba_qdbm.c | 2 +- ext/dba/dba_tcadb.c | 2 +- ext/dba/php_cdb.h | 2 +- ext/dba/php_db1.h | 2 +- ext/dba/php_db2.h | 2 +- ext/dba/php_db3.h | 2 +- ext/dba/php_db4.h | 2 +- ext/dba/php_dba.h | 2 +- ext/dba/php_dbm.h | 2 +- ext/dba/php_flatfile.h | 2 +- ext/dba/php_gdbm.h | 2 +- ext/dba/php_inifile.h | 2 +- ext/dba/php_lmdb.h | 2 +- ext/dba/php_ndbm.h | 2 +- ext/dba/php_qdbm.h | 2 +- ext/dba/php_tcadb.h | 2 +- 28 files changed, 54 insertions(+), 54 deletions(-) diff --git a/ext/dba/dba.c b/ext/dba/dba.c index b01d11e165f61..842f85d73dcdb 100644 --- a/ext/dba/dba.c +++ b/ext/dba/dba.c @@ -21,7 +21,7 @@ #include "php.h" -#if HAVE_DBA +#ifdef HAVE_DBA #include "php_ini.h" #include @@ -160,72 +160,72 @@ static zend_string* php_dba_make_key(HashTable *key) /* {{{ globals */ static dba_handler handler[] = { -#if DBA_GDBM +#ifdef DBA_GDBM DBA_HND(gdbm, DBA_LOCK_EXT) /* Locking done in library if set */ #endif -#if DBA_DBM +#ifdef DBA_DBM DBA_HND(dbm, DBA_LOCK_ALL) /* No lock in lib */ #endif -#if DBA_NDBM +#ifdef DBA_NDBM DBA_HND(ndbm, DBA_LOCK_ALL) /* Could be done in library: filemode = 0644 + S_ENFMT */ #endif -#if DBA_CDB +#ifdef DBA_CDB DBA_HND(cdb, DBA_STREAM_OPEN|DBA_LOCK_ALL) /* No lock in lib */ #endif -#if DBA_CDB_BUILTIN +#ifdef DBA_CDB_BUILTIN DBA_NAMED_HND(cdb_make, cdb, DBA_STREAM_OPEN|DBA_LOCK_ALL) /* No lock in lib */ #endif -#if DBA_DB1 +#ifdef DBA_DB1 DBA_HND(db1, DBA_LOCK_ALL) /* No lock in lib */ #endif -#if DBA_DB2 +#ifdef DBA_DB2 DBA_HND(db2, DBA_LOCK_ALL) /* No lock in lib */ #endif -#if DBA_DB3 +#ifdef DBA_DB3 DBA_HND(db3, DBA_LOCK_ALL) /* No lock in lib */ #endif -#if DBA_DB4 +#ifdef DBA_DB4 DBA_HND(db4, DBA_LOCK_ALL) /* No lock in lib */ #endif -#if DBA_INIFILE +#ifdef DBA_INIFILE DBA_HND(inifile, DBA_STREAM_OPEN|DBA_LOCK_ALL|DBA_CAST_AS_FD) /* No lock in lib */ #endif -#if DBA_FLATFILE +#ifdef DBA_FLATFILE DBA_HND(flatfile, DBA_STREAM_OPEN|DBA_LOCK_ALL|DBA_NO_APPEND) /* No lock in lib */ #endif -#if DBA_QDBM +#ifdef DBA_QDBM DBA_HND(qdbm, DBA_LOCK_EXT) #endif -#if DBA_TCADB +#ifdef DBA_TCADB DBA_HND(tcadb, DBA_LOCK_ALL) #endif -#if DBA_LMDB +#ifdef DBA_LMDB DBA_HND(lmdb, DBA_LOCK_EXT) #endif { NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } }; -#if DBA_FLATFILE +#ifdef DBA_FLATFILE #define DBA_DEFAULT "flatfile" -#elif DBA_DB4 +#elif defined(DBA_DB4) #define DBA_DEFAULT "db4" -#elif DBA_DB3 +#elif defined(DBA_DB3) #define DBA_DEFAULT "db3" -#elif DBA_DB2 +#elif defined(DBA_DB2) #define DBA_DEFAULT "db2" -#elif DBA_DB1 +#elif defined(DBA_DB1) #define DBA_DEFAULT "db1" -#elif DBA_GDBM +#elif defined(DBA_GDBM) #define DBA_DEFAULT "gdbm" -#elif DBA_NBBM +#elif defined(DBA_NBBM) #define DBA_DEFAULT "ndbm" -#elif DBA_DBM +#elif defined(DBA_DBM) #define DBA_DEFAULT "dbm" -#elif DBA_QDBM +#elif defined(DBA_QDBM) #define DBA_DEFAULT "qdbm" -#elif DBA_TCADB +#elif defined(DBA_TCADB) #define DBA_DEFAULT "tcadb" -#elif DBA_LMDB +#elif defined(DBA_LMDB) #define DBA_DEFAULT "lmdb" #else #define DBA_DEFAULT "" diff --git a/ext/dba/dba_cdb.c b/ext/dba/dba_cdb.c index 6b5013961f760..5af9121b565a6 100644 --- a/ext/dba/dba_cdb.c +++ b/ext/dba/dba_cdb.c @@ -21,7 +21,7 @@ #include "php.h" -#if DBA_CDB +#ifdef DBA_CDB #include "php_cdb.h" #include diff --git a/ext/dba/dba_db1.c b/ext/dba/dba_db1.c index 6f0f402b8d350..3a95cea460c14 100644 --- a/ext/dba/dba_db1.c +++ b/ext/dba/dba_db1.c @@ -20,7 +20,7 @@ #include "php.h" -#if DBA_DB1 +#ifdef DBA_DB1 #include "php_db1.h" #ifdef DB1_INCLUDE_FILE diff --git a/ext/dba/dba_db2.c b/ext/dba/dba_db2.c index 373464f80ec9b..8f6d47a9239c9 100644 --- a/ext/dba/dba_db2.c +++ b/ext/dba/dba_db2.c @@ -20,7 +20,7 @@ #include "php.h" -#if DBA_DB2 +#ifdef DBA_DB2 #include "php_db2.h" #include diff --git a/ext/dba/dba_db3.c b/ext/dba/dba_db3.c index 8d25c7463ac84..d9e948a623f50 100644 --- a/ext/dba/dba_db3.c +++ b/ext/dba/dba_db3.c @@ -20,7 +20,7 @@ #include "php.h" -#if DBA_DB3 +#ifdef DBA_DB3 #include "php_db3.h" #include diff --git a/ext/dba/dba_db4.c b/ext/dba/dba_db4.c index 3e9aaa13d4300..3de66a4274432 100644 --- a/ext/dba/dba_db4.c +++ b/ext/dba/dba_db4.c @@ -21,7 +21,7 @@ #include "php.h" -#if DBA_DB4 +#ifdef DBA_DB4 #include "php_db4.h" #include diff --git a/ext/dba/dba_dbm.c b/ext/dba/dba_dbm.c index 316398e6ac736..afa645cb2fe70 100644 --- a/ext/dba/dba_dbm.c +++ b/ext/dba/dba_dbm.c @@ -20,13 +20,13 @@ #include "php.h" -#if DBA_DBM +#ifdef DBA_DBM #include "php_dbm.h" #ifdef DBM_INCLUDE_FILE #include DBM_INCLUDE_FILE #endif -#if DBA_GDBM +#ifdef DBA_GDBM #include "php_gdbm.h" #endif diff --git a/ext/dba/dba_flatfile.c b/ext/dba/dba_flatfile.c index b631fe9352baa..9d5b31128c076 100644 --- a/ext/dba/dba_flatfile.c +++ b/ext/dba/dba_flatfile.c @@ -20,7 +20,7 @@ #include "php.h" -#if DBA_FLATFILE +#ifdef DBA_FLATFILE #include "php_flatfile.h" #include "libflatfile/flatfile.h" diff --git a/ext/dba/dba_gdbm.c b/ext/dba/dba_gdbm.c index 1a47d1d708aa4..ec968f3f203e7 100644 --- a/ext/dba/dba_gdbm.c +++ b/ext/dba/dba_gdbm.c @@ -20,7 +20,7 @@ #include "php.h" -#if DBA_GDBM +#ifdef DBA_GDBM #include "php_gdbm.h" #ifdef GDBM_INCLUDE_FILE diff --git a/ext/dba/dba_inifile.c b/ext/dba/dba_inifile.c index dd0bc30f3d349..fe0adbccbfe9c 100644 --- a/ext/dba/dba_inifile.c +++ b/ext/dba/dba_inifile.c @@ -20,7 +20,7 @@ #include "php.h" -#if DBA_INIFILE +#ifdef DBA_INIFILE #include "php_inifile.h" #include "libinifile/inifile.h" diff --git a/ext/dba/dba_lmdb.c b/ext/dba/dba_lmdb.c index b7c8151204d5c..e8fb99b569827 100644 --- a/ext/dba/dba_lmdb.c +++ b/ext/dba/dba_lmdb.c @@ -20,7 +20,7 @@ #include "php.h" -#if DBA_LMDB +#ifdef DBA_LMDB #include "php_lmdb.h" #ifdef LMDB_INCLUDE_FILE diff --git a/ext/dba/dba_ndbm.c b/ext/dba/dba_ndbm.c index a97d3595a0cda..d872add48e6ab 100644 --- a/ext/dba/dba_ndbm.c +++ b/ext/dba/dba_ndbm.c @@ -20,7 +20,7 @@ #include "php.h" -#if DBA_NDBM +#ifdef DBA_NDBM #include "php_ndbm.h" #include diff --git a/ext/dba/dba_qdbm.c b/ext/dba/dba_qdbm.c index 129b40915fab3..d06af20659909 100644 --- a/ext/dba/dba_qdbm.c +++ b/ext/dba/dba_qdbm.c @@ -20,7 +20,7 @@ #include "php.h" -#if DBA_QDBM +#ifdef DBA_QDBM #include "php_qdbm.h" #ifdef QDBM_INCLUDE_FILE diff --git a/ext/dba/dba_tcadb.c b/ext/dba/dba_tcadb.c index 4d0d65bf91529..23c9e2d1d363d 100644 --- a/ext/dba/dba_tcadb.c +++ b/ext/dba/dba_tcadb.c @@ -20,7 +20,7 @@ #include "php.h" -#if DBA_TCADB +#ifdef DBA_TCADB #include "php_tcadb.h" #ifdef TCADB_INCLUDE_FILE diff --git a/ext/dba/php_cdb.h b/ext/dba/php_cdb.h index a046f0796b378..9e6ebff9c6ba2 100644 --- a/ext/dba/php_cdb.h +++ b/ext/dba/php_cdb.h @@ -1,7 +1,7 @@ #ifndef PHP_CDB_H #define PHP_CDB_H -#if DBA_CDB +#ifdef DBA_CDB #include "php_dba.h" diff --git a/ext/dba/php_db1.h b/ext/dba/php_db1.h index c0bb5f08b4b6c..f8a97e6b83adf 100644 --- a/ext/dba/php_db1.h +++ b/ext/dba/php_db1.h @@ -1,7 +1,7 @@ #ifndef PHP_DB1_H #define PHP_DB1_H -#if DBA_DB1 +#ifdef DBA_DB1 #include "php_dba.h" diff --git a/ext/dba/php_db2.h b/ext/dba/php_db2.h index 2a95223a85442..b54dcdeec02bd 100644 --- a/ext/dba/php_db2.h +++ b/ext/dba/php_db2.h @@ -1,7 +1,7 @@ #ifndef PHP_DB2_H #define PHP_DB2_H -#if DBA_DB2 +#ifdef DBA_DB2 #include "php_dba.h" diff --git a/ext/dba/php_db3.h b/ext/dba/php_db3.h index 58bb0b62a08f7..f27380bbb1dc2 100644 --- a/ext/dba/php_db3.h +++ b/ext/dba/php_db3.h @@ -1,7 +1,7 @@ #ifndef PHP_DB3_H #define PHP_DB3_H -#if DBA_DB3 +#ifdef DBA_DB3 #include "php_dba.h" diff --git a/ext/dba/php_db4.h b/ext/dba/php_db4.h index fa814c3f5ec4b..1eb8067e820fb 100644 --- a/ext/dba/php_db4.h +++ b/ext/dba/php_db4.h @@ -1,7 +1,7 @@ #ifndef PHP_DB4_H #define PHP_DB4_H -#if DBA_DB4 +#ifdef DBA_DB4 #include "php_dba.h" diff --git a/ext/dba/php_dba.h b/ext/dba/php_dba.h index a2ad7fad60466..28ca887222f9c 100644 --- a/ext/dba/php_dba.h +++ b/ext/dba/php_dba.h @@ -20,7 +20,7 @@ #include "php_version.h" #define PHP_DBA_VERSION PHP_VERSION -#if HAVE_DBA +#ifdef HAVE_DBA typedef enum { /* do not allow 0 here */ diff --git a/ext/dba/php_dbm.h b/ext/dba/php_dbm.h index 4c963d18ed91f..d53c09fcb2bfd 100644 --- a/ext/dba/php_dbm.h +++ b/ext/dba/php_dbm.h @@ -1,7 +1,7 @@ #ifndef PHP_DBM_H #define PHP_DBM_H -#if DBA_DBM +#ifdef DBA_DBM #include "php_dba.h" diff --git a/ext/dba/php_flatfile.h b/ext/dba/php_flatfile.h index afa9f6d5d3920..71c46a95eaaf5 100644 --- a/ext/dba/php_flatfile.h +++ b/ext/dba/php_flatfile.h @@ -1,7 +1,7 @@ #ifndef PHP_FLATFILE_H #define PHP_FLATFILE_H -#if DBA_FLATFILE +#ifdef DBA_FLATFILE #include "php_dba.h" diff --git a/ext/dba/php_gdbm.h b/ext/dba/php_gdbm.h index 3068404cfe265..0657c424a1ada 100644 --- a/ext/dba/php_gdbm.h +++ b/ext/dba/php_gdbm.h @@ -1,7 +1,7 @@ #ifndef PHP_GDBM_H #define PHP_GDBM_H -#if DBA_GDBM +#ifdef DBA_GDBM #include "php_dba.h" diff --git a/ext/dba/php_inifile.h b/ext/dba/php_inifile.h index 69444df3c6d48..eef58acfa6723 100644 --- a/ext/dba/php_inifile.h +++ b/ext/dba/php_inifile.h @@ -1,7 +1,7 @@ #ifndef PHP_INIFILE_H #define PHP_INIFILE_H -#if DBA_INIFILE +#ifdef DBA_INIFILE #include "php_dba.h" diff --git a/ext/dba/php_lmdb.h b/ext/dba/php_lmdb.h index 1b4928f49bffa..421f6a0094958 100644 --- a/ext/dba/php_lmdb.h +++ b/ext/dba/php_lmdb.h @@ -1,7 +1,7 @@ #ifndef PHP_LMDB_H #define PHP_LMDB_H -#if DBA_LMDB +#ifdef DBA_LMDB #include "php_dba.h" diff --git a/ext/dba/php_ndbm.h b/ext/dba/php_ndbm.h index b1ebf15af32d7..68c04c680cfe1 100644 --- a/ext/dba/php_ndbm.h +++ b/ext/dba/php_ndbm.h @@ -1,7 +1,7 @@ #ifndef PHP_NDBM_H #define PHP_NDBM_H -#if DBA_NDBM +#ifdef DBA_NDBM #include "php_dba.h" diff --git a/ext/dba/php_qdbm.h b/ext/dba/php_qdbm.h index c88efcff4cfa1..bec4e8c50b3b8 100644 --- a/ext/dba/php_qdbm.h +++ b/ext/dba/php_qdbm.h @@ -1,7 +1,7 @@ #ifndef PHP_QDBM_H #define PHP_QDBM_H -#if DBA_QDBM +#ifdef DBA_QDBM #include "php_dba.h" diff --git a/ext/dba/php_tcadb.h b/ext/dba/php_tcadb.h index 8b145f3ea5c37..6bfecf7d6d96f 100644 --- a/ext/dba/php_tcadb.h +++ b/ext/dba/php_tcadb.h @@ -17,7 +17,7 @@ #ifndef PHP_TCADB_H #define PHP_TCADB_H -#if DBA_TCADB +#ifdef DBA_TCADB #include "php_dba.h" From 2c2ecba063faf70cbceed3bc780182a238deee95 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Fri, 1 Apr 2022 15:43:42 +0100 Subject: [PATCH 20/63] Determine value of ZEND_MM_* during config and fix sign conversion (#6981) Also add a new ZEND_MM_NEED_EIGHT_BYTE_REALIGNMENT definition. This fixes many [-Wsign-conversion] warnings. Co-authored-by: Guillaume Charifi Co-authored-by: Bob Weinand --- Zend/Zend.m4 | 11 +++++++---- Zend/zend_alloc.h | 8 +------- ext/opcache/ZendAccelerator.c | 6 +++--- win32/build/config.w32.h.in | 4 ++++ 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/Zend/Zend.m4 b/Zend/Zend.m4 index d4dcd5459078b..fe28134dd92d6 100644 --- a/Zend/Zend.m4 +++ b/Zend/Zend.m4 @@ -256,7 +256,7 @@ typedef union _mm_align_test { int main() { - int i = ZEND_MM_ALIGNMENT; + size_t i = ZEND_MM_ALIGNMENT; int zeros = 0; FILE *fp; @@ -266,7 +266,7 @@ int main() } fp = fopen("conftest.zend", "w"); - fprintf(fp, "%d %d\n", ZEND_MM_ALIGNMENT, zeros); + fprintf(fp, "(size_t)%zu (size_t)%d %d\n", ZEND_MM_ALIGNMENT, zeros, ZEND_MM_ALIGNMENT < 4); fclose(fp); return 0; @@ -274,12 +274,15 @@ int main() ]])], [ LIBZEND_MM_ALIGN=`cat conftest.zend | cut -d ' ' -f 1` LIBZEND_MM_ALIGN_LOG2=`cat conftest.zend | cut -d ' ' -f 2` + LIBZEND_MM_NEED_EIGHT_BYTE_REALIGNMENT=`cat conftest.zend | cut -d ' ' -f 3` AC_DEFINE_UNQUOTED(ZEND_MM_ALIGNMENT, $LIBZEND_MM_ALIGN, [ ]) AC_DEFINE_UNQUOTED(ZEND_MM_ALIGNMENT_LOG2, $LIBZEND_MM_ALIGN_LOG2, [ ]) + AC_DEFINE_UNQUOTED(ZEND_MM_NEED_EIGHT_BYTE_REALIGNMENT, $LIBZEND_MM_NEED_EIGHT_BYTE_REALIGNMENT, [ ]) ], [], [ dnl Cross compilation needs something here. - AC_DEFINE_UNQUOTED(ZEND_MM_ALIGNMENT, 8, [ ]) - AC_DEFINE_UNQUOTED(ZEND_MM_ALIGNMENT_LOG2, 3, [ ]) + AC_DEFINE(ZEND_MM_ALIGNMENT, 8, [ ]) + AC_DEFINE(ZEND_MM_ALIGNMENT_LOG2, 3, [ ]) + AC_DEFINE(ZEND_MM_NEED_EIGHT_BYTE_REALIGNMENT, 0, [ ]) ]) AC_MSG_RESULT(done) diff --git a/Zend/zend_alloc.h b/Zend/zend_alloc.h index f517b1231d1d2..9e10e6971f810 100644 --- a/Zend/zend_alloc.h +++ b/Zend/zend_alloc.h @@ -27,13 +27,7 @@ #include "zend.h" #ifndef ZEND_MM_ALIGNMENT -# define ZEND_MM_ALIGNMENT Z_UL(8) -# define ZEND_MM_ALIGNMENT_LOG2 Z_L(3) -#elif ZEND_MM_ALIGNMENT < 4 -# undef ZEND_MM_ALIGNMENT -# undef ZEND_MM_ALIGNMENT_LOG2 -# define ZEND_MM_ALIGNMENT Z_UL(4) -# define ZEND_MM_ALIGNMENT_LOG2 Z_L(2) +# error "ZEND_MM_ALIGNMENT was not defined during configure" #endif #define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT - 1) diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index 362126db23d2d..af040eba9ca93 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -1484,7 +1484,7 @@ static zend_persistent_script *store_script_in_file_cache(zend_persistent_script /* Align to 64-byte boundary */ ZCG(mem) = zend_arena_alloc(&CG(arena), memory_used + 64); ZCG(mem) = (void*)(((zend_uintptr_t)ZCG(mem) + 63L) & ~63L); -#elif ZEND_MM_ALIGNMENT < 8 +#elif ZEND_MM_NEED_EIGHT_BYTE_REALIGNMENT /* Align to 8-byte boundary */ ZCG(mem) = zend_arena_alloc(&CG(arena), memory_used + 8); ZCG(mem) = (void*)(((zend_uintptr_t)ZCG(mem) + 7L) & ~7L); @@ -2365,7 +2365,7 @@ static zend_class_entry* zend_accel_inheritance_cache_add(zend_class_entry *ce, zend_shared_alloc_clear_xlat_table(); -#if ZEND_MM_ALIGNMENT < 8 +#if ZEND_MM_NEED_EIGHT_BYTE_REALIGNMENT /* Align to 8-byte boundary */ ZCG(mem) = zend_shared_alloc(size + 8); #else @@ -2381,7 +2381,7 @@ static zend_class_entry* zend_accel_inheritance_cache_add(zend_class_entry *ce, zend_map_ptr_extend(ZCSG(map_ptr_last)); -#if ZEND_MM_ALIGNMENT < 8 +#if ZEND_MM_NEED_EIGHT_BYTE_REALIGNMENT /* Align to 8-byte boundary */ ZCG(mem) = (void*)(((zend_uintptr_t)ZCG(mem) + 7L) & ~7L); #endif diff --git a/win32/build/config.w32.h.in b/win32/build/config.w32.h.in index ce4b71282e7a0..7686fb83a4a32 100644 --- a/win32/build/config.w32.h.in +++ b/win32/build/config.w32.h.in @@ -27,6 +27,10 @@ #define DEFAULT_SHORT_OPEN_TAG "1" /* Platform-Specific Configuration. Should not be changed. */ +/* Alignment for Zend memory allocator */ +#define ZEND_MM_ALIGNMENT (size_t)8 +#define ZEND_MM_ALIGNMENT_LOG2 (size_t)3 +#define ZEND_MM_NEED_EIGHT_BYTE_REALIGNMENT 0 #define PHP_SIGCHILD 0 #define HAVE_GETSERVBYNAME 1 #define HAVE_GETSERVBYPORT 1 From 62ab9293ae3281cc0ccc526bb35bebfa4c8f8a28 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 20 May 2020 14:47:11 +0200 Subject: [PATCH 21/63] Fix [-Wundef] warnings in SNMP extension --- ext/snmp/php_snmp.h | 2 +- ext/snmp/snmp.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ext/snmp/php_snmp.h b/ext/snmp/php_snmp.h index 4a9f89abba6ef..0615d6a3e9a0d 100644 --- a/ext/snmp/php_snmp.h +++ b/ext/snmp/php_snmp.h @@ -24,7 +24,7 @@ #define PHP_SNMP_VERSION PHP_VERSION -#if HAVE_SNMP +#ifdef HAVE_SNMP #ifndef DLEXPORT #define DLEXPORT diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c index 035b0f846f7bd..a14bf2aed34c6 100644 --- a/ext/snmp/snmp.c +++ b/ext/snmp/snmp.c @@ -33,7 +33,7 @@ #include "ext/spl/spl_exceptions.h" #include "snmp_arginfo.h" -#if HAVE_SNMP +#ifdef HAVE_SNMP #include #include @@ -865,7 +865,7 @@ static bool netsnmp_session_init(php_snmp_session **session_p, int version, zend res = psal; while (n-- > 0) { pptr = session->peername; -#if HAVE_GETADDRINFO && HAVE_IPV6 && HAVE_INET_NTOP +#if defined(HAVE_GETADDRINFO) && defined(HAVE_IPV6) && defined(HAVE_INET_NTOP) if (force_ipv6 && (*res)->sa_family != AF_INET6) { res++; continue; From 5171cb435a69c418231acc487819ce47b52711df Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 20 May 2020 18:34:20 +0200 Subject: [PATCH 22/63] Fix [-Wundef] warnings in standard extension --- ext/standard/basic_functions.c | 66 +- ext/standard/basic_functions.stub.php | 29 +- ext/standard/basic_functions_arginfo.h | 1315 +++++++++++++++++++++--- ext/standard/crc32.c | 4 +- ext/standard/crypt.c | 4 +- ext/standard/crypt_sha512.c | 2 +- ext/standard/datetime.c | 2 +- ext/standard/dir.c | 8 +- ext/standard/dl.c | 4 +- ext/standard/dns.c | 20 +- ext/standard/exec.c | 10 +- ext/standard/file.c | 4 +- ext/standard/file.h | 2 +- ext/standard/filestat.c | 28 +- ext/standard/flock_compat.c | 4 +- ext/standard/flock_compat.h | 21 +- ext/standard/ftok.c | 2 +- ext/standard/ftp_fopen_wrapper.c | 4 +- ext/standard/hrtime.c | 2 +- ext/standard/html.c | 2 +- ext/standard/http_fopen_wrapper.c | 4 +- ext/standard/image.c | 14 +- ext/standard/info.c | 4 +- ext/standard/lcg.c | 2 +- ext/standard/link.c | 4 +- ext/standard/mail.c | 12 +- ext/standard/net.c | 10 +- ext/standard/pack.c | 4 +- ext/standard/pageinfo.c | 4 +- ext/standard/password.c | 10 +- ext/standard/php_dns.h | 8 +- ext/standard/php_fopen_wrapper.c | 6 +- ext/standard/php_password.h | 4 +- ext/standard/php_string.h | 8 +- ext/standard/proc_open.c | 12 +- ext/standard/random.c | 2 +- ext/standard/streamsfuncs.c | 6 +- ext/standard/string.c | 40 +- ext/standard/syslog.c | 2 +- ext/standard/uniqid.c | 2 +- ext/standard/url_scanner_ex.re | 2 +- 41 files changed, 1352 insertions(+), 341 deletions(-) diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 09f67b2e3f60b..15a0f83b9af8a 100755 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -67,22 +67,22 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; #include "win32/inet.h" #endif -#if HAVE_ARPA_INET_H +#ifdef HAVE_ARPA_INET_H # include #endif -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H # include #endif #include #include -#if HAVE_SYS_MMAN_H +#ifdef HAVE_SYS_MMAN_H # include #endif -#if HAVE_SYS_LOADAVG_H +#ifdef HAVE_SYS_LOADAVG_H # include #endif @@ -91,7 +91,7 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef INADDR_NONE -#define INADDR_NONE ((zend_ulong) -1) +# define INADDR_NONE ((zend_ulong) -1) #endif #include "zend_globals.h" @@ -149,13 +149,13 @@ zend_module_entry basic_functions_module = { /* {{{ */ }; /* }}} */ -#if defined(HAVE_PUTENV) +#ifdef HAVE_PUTENV static void php_putenv_destructor(zval *zv) /* {{{ */ { putenv_entry *pe = Z_PTR_P(zv); if (pe->previous_value) { -# if defined(PHP_WIN32) +# ifdef PHP_WIN32 /* MSVCRT has a bug in putenv() when setting a variable that * is already set; if the SetEnvironmentVariable() API call * fails, the Crt will double free() a string. @@ -163,11 +163,11 @@ static void php_putenv_destructor(zval *zv) /* {{{ */ SetEnvironmentVariable(ZSTR_VAL(pe->key), "bugbug"); # endif putenv(pe->previous_value); -# if defined(PHP_WIN32) +# ifdef PHP_WIN32 efree(pe->previous_value); # endif } else { -# if HAVE_UNSETENV +# ifdef HAVE_UNSETENV unsetenv(ZSTR_VAL(pe->key)); # elif defined(PHP_WIN32) SetEnvironmentVariable(ZSTR_VAL(pe->key), NULL); @@ -282,14 +282,14 @@ PHP_MINIT_FUNCTION(basic) /* {{{ */ { #ifdef ZTS ts_allocate_id(&basic_globals_id, sizeof(php_basic_globals), (ts_allocate_ctor) basic_globals_ctor, (ts_allocate_dtor) basic_globals_dtor); -#ifdef PHP_WIN32 +# ifdef PHP_WIN32 ts_allocate_id(&php_win32_core_globals_id, sizeof(php_win32_core_globals), (ts_allocate_ctor)php_win32_core_globals_ctor, (ts_allocate_dtor)php_win32_core_globals_dtor ); -#endif +# endif #else basic_globals_ctor(&basic_globals); -#ifdef PHP_WIN32 +# ifdef PHP_WIN32 php_win32_core_globals_ctor(&the_php_win32_core_globals); -#endif +# endif #endif php_ce_incomplete_class = register_class___PHP_Incomplete_Class(); @@ -347,7 +347,7 @@ PHP_MINIT_FUNCTION(basic) /* {{{ */ REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_EVEN", PHP_ROUND_HALF_EVEN, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_ODD", PHP_ROUND_HALF_ODD, CONST_CS | CONST_PERSISTENT); -#if ENABLE_TEST_CLASS +#ifdef ENABLE_TEST_CLASS test_class_startup(); #endif @@ -364,23 +364,23 @@ PHP_MINIT_FUNCTION(basic) /* {{{ */ BASIC_MINIT_SUBMODULE(password) BASIC_MINIT_SUBMODULE(mt_rand) -#if defined(ZTS) +#ifdef ZTS BASIC_MINIT_SUBMODULE(localeconv) #endif -#if defined(HAVE_NL_LANGINFO) +#ifdef HAVE_NL_LANGINFO BASIC_MINIT_SUBMODULE(nl_langinfo) #endif -#if ZEND_INTRIN_SSE4_2_FUNC_PTR +#ifdef ZEND_INTRIN_SSE4_2_FUNC_PTR BASIC_MINIT_SUBMODULE(string_intrin) #endif -#if ZEND_INTRIN_SSE4_2_PCLMUL_FUNC_PTR +#ifdef ZEND_INTRIN_SSE4_2_PCLMUL_FUNC_PTR BASIC_MINIT_SUBMODULE(crc32_x86_intrin) #endif -#if ZEND_INTRIN_AVX2_FUNC_PTR || ZEND_INTRIN_SSSE3_FUNC_PTR +#if defined(ZEND_INTRIN_AVX2_FUNC_PTR) || defined(ZEND_INTRIN_SSSE3_FUNC_PTR) BASIC_MINIT_SUBMODULE(base64_intrin) #endif @@ -411,8 +411,8 @@ PHP_MINIT_FUNCTION(basic) /* {{{ */ php_register_url_stream_wrapper("http", &php_stream_http_wrapper); php_register_url_stream_wrapper("ftp", &php_stream_ftp_wrapper); -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC -# if defined(PHP_WIN32) || HAVE_FULL_DNS_FUNCS +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +# if defined(PHP_WIN32) || defined(HAVE_FULL_DNS_FUNCS) BASIC_MINIT_SUBMODULE(dns) # endif #endif @@ -452,7 +452,7 @@ PHP_MSHUTDOWN_FUNCTION(basic) /* {{{ */ BASIC_MSHUTDOWN_SUBMODULE(url_scanner_ex) BASIC_MSHUTDOWN_SUBMODULE(file) BASIC_MSHUTDOWN_SUBMODULE(standard_filters) -#if defined(ZTS) +#ifdef ZTS BASIC_MSHUTDOWN_SUBMODULE(localeconv) #endif BASIC_MSHUTDOWN_SUBMODULE(crypt) @@ -876,7 +876,7 @@ PHP_FUNCTION(putenv) for (env = environ; env != NULL && *env != NULL; env++) { if (!strncmp(*env, ZSTR_VAL(pe.key), ZSTR_LEN(pe.key)) && (*env)[ZSTR_LEN(pe.key)] == '=') { /* found it */ -#if defined(PHP_WIN32) +#ifdef PHP_WIN32 /* must copy previous value because MSVCRT's putenv can free the string without notice */ pe.previous_value = estrdup(*env); #else @@ -886,7 +886,7 @@ PHP_FUNCTION(putenv) } } -#if HAVE_UNSETENV +#ifdef HAVE_UNSETENV if (!p) { /* no '=' means we want to unset it */ unsetenv(pe.putenv_string); } @@ -932,7 +932,7 @@ PHP_FUNCTION(putenv) } #endif tsrm_env_unlock(); -#if defined(PHP_WIN32) +#ifdef PHP_WIN32 free(keyw); free(valw); #endif @@ -940,7 +940,7 @@ PHP_FUNCTION(putenv) } else { free(pe.putenv_string); zend_string_release(pe.key); -#if defined(PHP_WIN32) +#ifdef PHP_WIN32 free(keyw); free(valw); #endif @@ -1245,13 +1245,13 @@ PHP_FUNCTION(usleep) RETURN_THROWS(); } -#if HAVE_USLEEP +#ifdef HAVE_USLEEP usleep((unsigned int)num); #endif } /* }}} */ -#if HAVE_NANOSLEEP +#ifdef HAVE_NANOSLEEP /* {{{ Delay for a number of seconds and nano seconds */ PHP_FUNCTION(time_nanosleep) { @@ -2245,7 +2245,7 @@ PHP_FUNCTION(ignore_user_abort) } /* }}} */ -#if HAVE_GETSERVBYNAME +#ifdef HAVE_GETSERVBYNAME /* {{{ Returns port associated with service. Protocol must be "tcp" or "udp" */ PHP_FUNCTION(getservbyname) { @@ -2270,7 +2270,7 @@ PHP_FUNCTION(getservbyname) serv = getservbyname(ZSTR_VAL(name), proto); -#if defined(_AIX) +#ifdef _AIX /* On AIX, imap is only known as imap2 in /etc/services, while on Linux imap is an alias for imap2. If a request for imap gives no result, we try again with imap2. @@ -2288,7 +2288,7 @@ PHP_FUNCTION(getservbyname) /* }}} */ #endif -#if HAVE_GETSERVBYPORT +#ifdef HAVE_GETSERVBYPORT /* {{{ Returns service name associated with port. Protocol must be "tcp" or "udp" */ PHP_FUNCTION(getservbyport) { @@ -2313,7 +2313,7 @@ PHP_FUNCTION(getservbyport) /* }}} */ #endif -#if HAVE_GETPROTOBYNAME +#ifdef HAVE_GETPROTOBYNAME /* {{{ Returns protocol number associated with name as per /etc/protocols */ PHP_FUNCTION(getprotobyname) { @@ -2336,7 +2336,7 @@ PHP_FUNCTION(getprotobyname) /* }}} */ #endif -#if HAVE_GETPROTOBYNUMBER +#ifdef HAVE_GETPROTOBYNUMBER /* {{{ Returns protocol name associated with protocol number proto */ PHP_FUNCTION(getprotobynumber) { diff --git a/ext/standard/basic_functions.stub.php b/ext/standard/basic_functions.stub.php index 5a6e611e8778a..9ab3d3512dadb 100755 --- a/ext/standard/basic_functions.stub.php +++ b/ext/standard/basic_functions.stub.php @@ -430,7 +430,7 @@ function sleep(int $seconds): int {} function usleep(int $microseconds): void {} -#if HAVE_NANOSLEEP +#ifdef HAVE_NANOSLEEP /** * @return array|bool * @refcount 1 @@ -509,20 +509,20 @@ function connection_status(): int {} function ignore_user_abort(?bool $enable = null): int {} -#if HAVE_GETSERVBYNAME +#ifdef HAVE_GETSERVBYNAME function getservbyname(string $service, string $protocol): int|false {} #endif -#if HAVE_GETSERVBYPORT +#ifdef HAVE_GETSERVBYPORT /** @refcount 1 */ function getservbyport(int $port, string $protocol): string|false {} #endif -#if HAVE_GETPROTOBYNAME +#ifdef HAVE_GETPROTOBYNAME function getprotobyname(string $protocol): int|false {} #endif -#if HAVE_GETPROTOBYNUMBER +#ifdef HAVE_GETPROTOBYNUMBER /** @refcount 1 */ function getprotobynumber(int $protocol): string|false {} #endif @@ -583,7 +583,7 @@ function crypt(string $string, string $salt): string {} /* datetime.c */ -#if HAVE_STRPTIME +#ifdef HAVE_STRPTIME /** * @return array|false * @deprecated @@ -611,7 +611,7 @@ function gethostbyname(string $hostname): string {} */ function gethostbynamel(string $hostname): array|false {} -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) function dns_check_record(string $hostname, string $type = "MX"): bool {} /** @alias dns_check_record */ @@ -647,7 +647,7 @@ function net_get_interfaces(): array|false {} /* ftok.c */ -#if HAVE_FTOK +#ifdef HAVE_FTOK function ftok(string $filename, string $project_id): int {} #endif @@ -781,7 +781,7 @@ function strspn(string $string, string $characters, int $offset = 0, ?int $lengt function strcspn(string $string, string $characters, int $offset = 0, ?int $length = null): int {} -#if HAVE_NL_LANGINFO +#ifdef HAVE_NL_LANGINFO /** @refcount 1 */ function nl_langinfo(int $item): string|false {} #endif @@ -1041,7 +1041,7 @@ function closedir($dir_handle = null): void {} function chdir(string $directory): bool {} -#if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC +#if defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC) function chroot(string $directory): bool {} #endif @@ -1323,7 +1323,7 @@ function chown(string $filename, string|int $user): bool {} function chgrp(string $filename, string|int $group): bool {} -#if HAVE_LCHOWN +#ifdef HAVE_LCHOWN function lchown(string $filename, string|int $user): bool {} function lchgrp(string $filename, string|int $group): bool {} @@ -1331,9 +1331,8 @@ function lchgrp(string $filename, string|int $group): bool {} function chmod(string $filename, int $permissions): bool {} -#if HAVE_UTIME +#ifdef HAVE_UTIME function touch(string $filename, ?int $mtime = null, ?int $atime = null): bool {} -#endif function clearstatcache(bool $clear_realpath_cache = false, string $filename = ""): void {} @@ -1796,7 +1795,7 @@ function stream_socket_enable_crypto($stream, bool $enable, ?int $crypto_method function stream_socket_shutdown($stream, int $mode): bool {} #endif -#if HAVE_SOCKETPAIR +#ifdef HAVE_SOCKETPAIR /** * @return array|false * @refcount 1 @@ -1888,7 +1887,7 @@ function sapi_windows_vt100_support($stream, ?bool $enable = null): bool {} /** @param resource $stream */ function stream_set_chunk_size($stream, int $size): int {} -#if HAVE_SYS_TIME_H || defined(PHP_WIN32) +#if defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) /** @param resource $stream */ function stream_set_timeout($stream, int $seconds, int $microseconds = 0): bool {} diff --git a/ext/standard/basic_functions_arginfo.h b/ext/standard/basic_functions_arginfo.h index 10a6cfd7f2af0..1162315157f88 100644 --- a/ext/standard/basic_functions_arginfo.h +++ b/ext/standard/basic_functions_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: ed5328c35c17c591847feba6cb00f5badb2b446c */ + * Stub hash: f9668ae68c1f7d0336b974f83c2552fbf9bf898a */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_time_limit, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0) @@ -413,14 +413,14 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_usleep, 0, 1, IS_VOID, 0) ZEND_ARG_TYPE_INFO(0, microseconds, IS_LONG, 0) ZEND_END_ARG_INFO() -#if HAVE_NANOSLEEP +#if defined(HAVE_NANOSLEEP) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_time_nanosleep, 0, 2, MAY_BE_ARRAY|MAY_BE_BOOL) ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, nanoseconds, IS_LONG, 0) ZEND_END_ARG_INFO() #endif -#if HAVE_NANOSLEEP +#if defined(HAVE_NANOSLEEP) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_time_sleep_until, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, timestamp, IS_DOUBLE, 0) ZEND_END_ARG_INFO() @@ -519,27 +519,27 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ignore_user_abort, 0, 0, IS_LONG ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, enable, _IS_BOOL, 1, "null") ZEND_END_ARG_INFO() -#if HAVE_GETSERVBYNAME +#if defined(HAVE_GETSERVBYNAME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getservbyname, 0, 2, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, service, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, protocol, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if HAVE_GETSERVBYPORT +#if defined(HAVE_GETSERVBYPORT) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getservbyport, 0, 2, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, port, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, protocol, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if HAVE_GETPROTOBYNAME +#if defined(HAVE_GETPROTOBYNAME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getprotobyname, 0, 1, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, protocol, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if HAVE_GETPROTOBYNUMBER +#if defined(HAVE_GETPROTOBYNUMBER) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getprotobynumber, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, protocol, IS_LONG, 0) ZEND_END_ARG_INFO() @@ -599,7 +599,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_crypt, 0, 2, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, salt, IS_STRING, 0) ZEND_END_ARG_INFO() -#if HAVE_STRPTIME +#if defined(HAVE_STRPTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_strptime, 0, 2, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, timestamp, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) @@ -623,18 +623,18 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_gethostbynamel, 0, 1, MAY_BE_ARR ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) ZEND_END_ARG_INFO() -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dns_check_record, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_STRING, 0, "\"MX\"") ZEND_END_ARG_INFO() #endif -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) #define arginfo_checkdnsrr arginfo_dns_check_record #endif -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_dns_get_record, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "DNS_ANY") @@ -644,7 +644,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_dns_get_record, 0, 1, MAY_BE_ARR ZEND_END_ARG_INFO() #endif -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dns_get_mx, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) ZEND_ARG_INFO(1, hosts) @@ -652,7 +652,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dns_get_mx, 0, 2, _IS_BOOL, 0) ZEND_END_ARG_INFO() #endif -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) #define arginfo_getmxrr arginfo_dns_get_mx #endif @@ -661,7 +661,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_net_get_interfaces, 0, 0, MAY_BE ZEND_END_ARG_INFO() #endif -#if HAVE_FTOK +#if defined(HAVE_FTOK) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ftok, 0, 2, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, project_id, IS_STRING, 0) @@ -820,7 +820,7 @@ ZEND_END_ARG_INFO() #define arginfo_strcspn arginfo_strspn -#if HAVE_NL_LANGINFO +#if defined(HAVE_NL_LANGINFO) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_nl_langinfo, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, item, IS_LONG, 0) ZEND_END_ARG_INFO() @@ -1113,7 +1113,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chdir, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, directory, IS_STRING, 0) ZEND_END_ARG_INFO() -#if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC +#if defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chroot, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, directory, IS_STRING, 0) ZEND_END_ARG_INFO() @@ -1415,14 +1415,14 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chgrp, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_MASK(0, group, MAY_BE_STRING|MAY_BE_LONG, NULL) ZEND_END_ARG_INFO() -#if HAVE_LCHOWN +#if defined(HAVE_LCHOWN) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_lchown, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) ZEND_ARG_TYPE_MASK(0, user, MAY_BE_STRING|MAY_BE_LONG, NULL) ZEND_END_ARG_INFO() #endif -#if HAVE_LCHOWN +#if defined(HAVE_LCHOWN) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_lchgrp, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) ZEND_ARG_TYPE_MASK(0, group, MAY_BE_STRING|MAY_BE_LONG, NULL) @@ -1434,7 +1434,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chmod, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, permissions, IS_LONG, 0) ZEND_END_ARG_INFO() -#if HAVE_UTIME +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_touch, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mtime, IS_LONG, 1, "null") @@ -1442,55 +1442,82 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_touch, 0, 1, _IS_BOOL, 0) ZEND_END_ARG_INFO() #endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_clearstatcache, 0, 0, IS_VOID, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, clear_realpath_cache, _IS_BOOL, 0, "false") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, filename, IS_STRING, 0, "\"\"") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_disk_total_space, 0, 1, MAY_BE_DOUBLE|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, directory, IS_STRING, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_disk_free_space arginfo_disk_total_space +#endif +#if defined(HAVE_UTIME) #define arginfo_diskfreespace arginfo_disk_total_space +#endif -#define arginfo_realpath_cache_get arginfo_ob_list_handlers +#if defined(HAVE_UTIME) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_realpath_cache_get, 0, 0, IS_ARRAY, 0) +ZEND_END_ARG_INFO() +#endif -#define arginfo_realpath_cache_size arginfo_ob_get_level +#if defined(HAVE_UTIME) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_realpath_cache_size, 0, 0, IS_LONG, 0) +ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sprintf, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_VARIADIC_TYPE_INFO(0, values, IS_MIXED, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_printf, 0, 1, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_VARIADIC_TYPE_INFO(0, values, IS_MIXED, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_vprintf, 0, 2, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, values, IS_ARRAY, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_vsprintf, 0, 2, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, values, IS_ARRAY, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_fprintf, 0, 2, IS_LONG, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_VARIADIC_TYPE_INFO(0, values, IS_MIXED, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_vfprintf, 0, 3, IS_LONG, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, values, IS_ARRAY, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_fsockopen, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, port, IS_LONG, 0, "-1") @@ -1498,67 +1525,100 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_fsockopen, 0, 0, 1) ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, error_message, "null") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, timeout, IS_DOUBLE, 1, "null") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_pfsockopen arginfo_fsockopen +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_http_build_query, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_MASK(0, data, MAY_BE_ARRAY|MAY_BE_OBJECT, NULL) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, numeric_prefix, IS_STRING, 0, "\"\"") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, arg_separator, IS_STRING, 1, "null") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, encoding_type, IS_LONG, 0, "PHP_QUERY_RFC1738") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_image_type_to_mime_type, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, image_type, IS_LONG, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_image_type_to_extension, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, image_type, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, include_dot, _IS_BOOL, 0, "true") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getimagesize, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, image_info, "null") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getimagesizefromstring, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, image_info, "null") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_phpinfo, 0, 0, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "INFO_ALL") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_phpversion, 0, 0, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, extension, IS_STRING, 1, "null") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_phpcredits, 0, 0, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "CREDITS_ALL") ZEND_END_ARG_INFO() +#endif -#define arginfo_php_sapi_name arginfo_ob_get_flush +#if defined(HAVE_UTIME) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_php_sapi_name, 0, 0, MAY_BE_STRING|MAY_BE_FALSE) +ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_php_uname, 0, 0, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_STRING, 0, "\"a\"") ZEND_END_ARG_INFO() +#endif -#define arginfo_php_ini_scanned_files arginfo_ob_get_flush +#if defined(HAVE_UTIME) +#define arginfo_php_ini_scanned_files arginfo_php_sapi_name +#endif -#define arginfo_php_ini_loaded_file arginfo_ob_get_flush +#if defined(HAVE_UTIME) +#define arginfo_php_ini_loaded_file arginfo_php_sapi_name +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_iptcembed, 0, 2, MAY_BE_STRING|MAY_BE_BOOL) ZEND_ARG_TYPE_INFO(0, iptc_data, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, spool, IS_LONG, 0, "0") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_iptcparse, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, iptc_block, IS_STRING, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_levenshtein, 0, 2, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, string1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, string2, IS_STRING, 0) @@ -1566,30 +1626,32 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_levenshtein, 0, 2, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, replacement_cost, IS_LONG, 0, "1") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, deletion_cost, IS_LONG, 0, "1") ZEND_END_ARG_INFO() +#endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_readlink, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_linkinfo, 0, 1, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_symlink, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, target, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, link, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) #define arginfo_link arginfo_symlink #endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mail, 0, 3, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, to, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, subject, IS_STRING, 0) @@ -1597,188 +1659,288 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mail, 0, 3, _IS_BOOL, 0) ZEND_ARG_TYPE_MASK(0, additional_headers, MAY_BE_ARRAY|MAY_BE_STRING, "[]") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, additional_params, IS_STRING, 0, "\"\"") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_abs, 0, 1, MAY_BE_LONG|MAY_BE_DOUBLE) ZEND_ARG_TYPE_MASK(0, num, MAY_BE_LONG|MAY_BE_DOUBLE, NULL) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ceil, 0, 1, IS_DOUBLE, 0) ZEND_ARG_TYPE_MASK(0, num, MAY_BE_LONG|MAY_BE_DOUBLE, NULL) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_floor arginfo_ceil +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_round, 0, 1, IS_DOUBLE, 0) ZEND_ARG_TYPE_MASK(0, num, MAY_BE_LONG|MAY_BE_DOUBLE, NULL) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, precision, IS_LONG, 0, "0") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "PHP_ROUND_HALF_UP") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sin, 0, 1, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, num, IS_DOUBLE, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_cos arginfo_sin +#endif +#if defined(HAVE_UTIME) #define arginfo_tan arginfo_sin +#endif +#if defined(HAVE_UTIME) #define arginfo_asin arginfo_sin +#endif +#if defined(HAVE_UTIME) #define arginfo_acos arginfo_sin +#endif +#if defined(HAVE_UTIME) #define arginfo_atan arginfo_sin +#endif +#if defined(HAVE_UTIME) #define arginfo_atanh arginfo_sin +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_atan2, 0, 2, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, y, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, x, IS_DOUBLE, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_sinh arginfo_sin +#endif +#if defined(HAVE_UTIME) #define arginfo_cosh arginfo_sin +#endif +#if defined(HAVE_UTIME) #define arginfo_tanh arginfo_sin +#endif +#if defined(HAVE_UTIME) #define arginfo_asinh arginfo_sin +#endif +#if defined(HAVE_UTIME) #define arginfo_acosh arginfo_sin +#endif +#if defined(HAVE_UTIME) #define arginfo_expm1 arginfo_sin +#endif +#if defined(HAVE_UTIME) #define arginfo_log1p arginfo_sin +#endif -#define arginfo_pi arginfo_lcg_value +#if defined(HAVE_UTIME) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pi, 0, 0, IS_DOUBLE, 0) +ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_is_finite, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, num, IS_DOUBLE, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_is_nan arginfo_is_finite +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_intdiv, 0, 2, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, num1, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, num2, IS_LONG, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_is_infinite arginfo_is_finite +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_pow, 0, 2, MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_OBJECT) ZEND_ARG_TYPE_INFO(0, num, IS_MIXED, 0) ZEND_ARG_TYPE_INFO(0, exponent, IS_MIXED, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_exp arginfo_sin +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_log, 0, 1, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, num, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, base, IS_DOUBLE, 0, "M_E") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_log10 arginfo_sin +#endif +#if defined(HAVE_UTIME) #define arginfo_sqrt arginfo_sin +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hypot, 0, 2, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, x, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, y, IS_DOUBLE, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_deg2rad arginfo_sin +#endif +#if defined(HAVE_UTIME) #define arginfo_rad2deg arginfo_sin +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_bindec, 0, 1, MAY_BE_LONG|MAY_BE_DOUBLE) ZEND_ARG_TYPE_INFO(0, binary_string, IS_STRING, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_hexdec, 0, 1, MAY_BE_LONG|MAY_BE_DOUBLE) ZEND_ARG_TYPE_INFO(0, hex_string, IS_STRING, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_octdec, 0, 1, MAY_BE_LONG|MAY_BE_DOUBLE) ZEND_ARG_TYPE_INFO(0, octal_string, IS_STRING, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_decbin, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, num, IS_LONG, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_decoct arginfo_decbin +#endif +#if defined(HAVE_UTIME) #define arginfo_dechex arginfo_decbin +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_base_convert, 0, 3, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, num, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, from_base, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, to_base, IS_LONG, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_number_format, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, num, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, decimals, IS_LONG, 0, "0") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, decimal_separator, IS_STRING, 1, "\".\"") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, thousands_separator, IS_STRING, 1, "\",\"") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_fmod, 0, 2, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, num1, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, num2, IS_DOUBLE, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_fdiv arginfo_fmod +#endif -#if defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_microtime, 0, 0, MAY_BE_STRING|MAY_BE_DOUBLE) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, as_float, _IS_BOOL, 0, "false") ZEND_END_ARG_INFO() #endif -#if defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_gettimeofday, 0, 0, MAY_BE_ARRAY|MAY_BE_DOUBLE) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, as_float, _IS_BOOL, 0, "false") ZEND_END_ARG_INFO() #endif -#if defined(HAVE_GETRUSAGE) +#if defined(HAVE_UTIME) && defined(HAVE_GETRUSAGE) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getrusage, 0, 0, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "0") ZEND_END_ARG_INFO() #endif +#if defined(HAVE_UTIME) #define arginfo_pack arginfo_sprintf +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_unpack, 0, 2, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, offset, IS_LONG, 0, "0") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_password_get_info, 0, 1, IS_ARRAY, 0) ZEND_ARG_TYPE_INFO(0, hash, IS_STRING, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_password_hash, 0, 2, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0) ZEND_ARG_TYPE_MASK(0, algo, MAY_BE_STRING|MAY_BE_LONG|MAY_BE_NULL, NULL) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 0, "[]") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_password_needs_rehash, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, hash, IS_STRING, 0) ZEND_ARG_TYPE_MASK(0, algo, MAY_BE_STRING|MAY_BE_LONG|MAY_BE_NULL, NULL) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 0, "[]") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_password_verify, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, hash, IS_STRING, 0) ZEND_END_ARG_INFO() +#endif -#define arginfo_password_algos arginfo_ob_list_handlers +#if defined(HAVE_UTIME) +#define arginfo_password_algos arginfo_realpath_cache_get +#endif -#if defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_BEGIN_ARG_INFO_EX(arginfo_proc_open, 0, 0, 3) ZEND_ARG_TYPE_MASK(0, command, MAY_BE_ARRAY|MAY_BE_STRING, NULL) ZEND_ARG_TYPE_INFO(0, descriptor_spec, IS_ARRAY, 0) @@ -1789,58 +1951,83 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_proc_open, 0, 0, 3) ZEND_END_ARG_INFO() #endif -#if defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_proc_close, 0, 1, IS_LONG, 0) ZEND_ARG_INFO(0, process) ZEND_END_ARG_INFO() #endif -#if defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_proc_terminate, 0, 1, _IS_BOOL, 0) ZEND_ARG_INFO(0, process) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, signal, IS_LONG, 0, "15") ZEND_END_ARG_INFO() #endif -#if defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_proc_get_status, 0, 1, IS_ARRAY, 0) ZEND_ARG_INFO(0, process) ZEND_END_ARG_INFO() #endif -#define arginfo_quoted_printable_decode arginfo_base64_encode +#if defined(HAVE_UTIME) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_quoted_printable_decode, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) +ZEND_END_ARG_INFO() +#endif -#define arginfo_quoted_printable_encode arginfo_base64_encode +#if defined(HAVE_UTIME) +#define arginfo_quoted_printable_encode arginfo_quoted_printable_decode +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mt_srand, 0, 0, IS_VOID, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, seed, IS_LONG, 0, "0") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "MT_RAND_MT19937") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_srand arginfo_mt_srand +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_rand, 0, 0, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, min, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, max, IS_LONG, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_mt_rand arginfo_rand +#endif -#define arginfo_mt_getrandmax arginfo_ob_get_level +#if defined(HAVE_UTIME) +#define arginfo_mt_getrandmax arginfo_realpath_cache_size +#endif -#define arginfo_getrandmax arginfo_ob_get_level +#if defined(HAVE_UTIME) +#define arginfo_getrandmax arginfo_realpath_cache_size +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_random_bytes, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_random_int, 0, 2, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, min, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, max, IS_LONG, 0) ZEND_END_ARG_INFO() +#endif -#define arginfo_soundex arginfo_base64_encode +#if defined(HAVE_UTIME) +#define arginfo_soundex arginfo_quoted_printable_decode +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_select, 0, 4, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(1, read, IS_ARRAY, 1) ZEND_ARG_TYPE_INFO(1, write, IS_ARRAY, 1) @@ -1848,53 +2035,75 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_select, 0, 4, MAY_BE_LONG ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 1) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, microseconds, IS_LONG, 1, "null") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_context_create, 0, 0, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 1, "null") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, params, IS_ARRAY, 1, "null") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_context_set_params, 0, 2, _IS_BOOL, 0) ZEND_ARG_INFO(0, context) ZEND_ARG_TYPE_INFO(0, params, IS_ARRAY, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_context_get_params, 0, 1, IS_ARRAY, 0) ZEND_ARG_INFO(0, context) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_context_set_option, 0, 2, _IS_BOOL, 0) ZEND_ARG_INFO(0, context) ZEND_ARG_TYPE_MASK(0, wrapper_or_options, MAY_BE_ARRAY|MAY_BE_STRING, NULL) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, option_name, IS_STRING, 1, "null") ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_context_get_options, 0, 1, IS_ARRAY, 0) ZEND_ARG_INFO(0, stream_or_context) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_context_get_default, 0, 0, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 1, "null") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_context_set_default, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, options, IS_ARRAY, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_filter_prepend, 0, 0, 2) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, filter_name, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "0") ZEND_ARG_TYPE_INFO(0, params, IS_MIXED, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_stream_filter_append arginfo_stream_filter_prepend +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_filter_remove, 0, 1, _IS_BOOL, 0) ZEND_ARG_INFO(0, stream_filter) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_client, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, address, IS_STRING, 0) ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, error_code, "null") @@ -1903,7 +2112,9 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_client, 0, 0, 1) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "STREAM_CLIENT_CONNECT") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, context, "null") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_server, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, address, IS_STRING, 0) ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, error_code, "null") @@ -1911,47 +2122,58 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_server, 0, 0, 1) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "STREAM_SERVER_BIND | STREAM_SERVER_LISTEN") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, context, "null") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_accept, 0, 0, 1) ZEND_ARG_INFO(0, socket) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, timeout, IS_DOUBLE, 1, "null") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, peer_name, "null") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_socket_get_name, 0, 2, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_INFO(0, socket) ZEND_ARG_TYPE_INFO(0, remote, _IS_BOOL, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_socket_recvfrom, 0, 2, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_INFO(0, socket) ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "0") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, address, "null") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_socket_sendto, 0, 2, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_INFO(0, socket) ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "0") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, address, IS_STRING, 0, "\"\"") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_socket_enable_crypto, 0, 2, MAY_BE_LONG|MAY_BE_BOOL) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, enable, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, crypto_method, IS_LONG, 1, "null") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, session_stream, "null") ZEND_END_ARG_INFO() +#endif -#if defined(HAVE_SHUTDOWN) +#if defined(HAVE_UTIME) && defined(HAVE_SHUTDOWN) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_socket_shutdown, 0, 2, _IS_BOOL, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0) ZEND_END_ARG_INFO() #endif -#if HAVE_SOCKETPAIR +#if defined(HAVE_UTIME) && defined(HAVE_SOCKETPAIR) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_socket_pair, 0, 3, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, domain, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0) @@ -1959,69 +2181,107 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_socket_pair, 0, 3, MAY_BE ZEND_END_ARG_INFO() #endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_copy_to_stream, 0, 2, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_INFO(0, from) ZEND_ARG_INFO(0, to) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, length, IS_LONG, 1, "null") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, offset, IS_LONG, 0, "0") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_get_contents, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, length, IS_LONG, 1, "null") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, offset, IS_LONG, 0, "-1") ZEND_END_ARG_INFO() +#endif -#define arginfo_stream_supports_lock arginfo_rewind +#if defined(HAVE_UTIME) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_supports_lock, 0, 1, _IS_BOOL, 0) + ZEND_ARG_INFO(0, stream) +ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_set_write_buffer, 0, 2, IS_LONG, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, size, IS_LONG, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_set_file_buffer arginfo_stream_set_write_buffer +#endif +#if defined(HAVE_UTIME) #define arginfo_stream_set_read_buffer arginfo_stream_set_write_buffer +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_set_blocking, 0, 2, _IS_BOOL, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, enable, _IS_BOOL, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_socket_set_blocking arginfo_stream_set_blocking +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_get_meta_data, 0, 1, IS_ARRAY, 0) ZEND_ARG_INFO(0, stream) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_socket_get_status arginfo_stream_get_meta_data +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_get_line, 0, 2, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, ending, IS_STRING, 0, "\"\"") ZEND_END_ARG_INFO() +#endif -#define arginfo_stream_resolve_include_path arginfo_filetype +#if defined(HAVE_UTIME) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_resolve_include_path, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) + ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) +ZEND_END_ARG_INFO() +#endif -#define arginfo_stream_get_wrappers arginfo_ob_list_handlers +#if defined(HAVE_UTIME) +#define arginfo_stream_get_wrappers arginfo_realpath_cache_get +#endif -#define arginfo_stream_get_transports arginfo_ob_list_handlers +#if defined(HAVE_UTIME) +#define arginfo_stream_get_transports arginfo_realpath_cache_get +#endif -#define arginfo_stream_is_local arginfo_rewind +#if defined(HAVE_UTIME) +#define arginfo_stream_is_local arginfo_stream_supports_lock +#endif -#define arginfo_stream_isatty arginfo_rewind +#if defined(HAVE_UTIME) +#define arginfo_stream_isatty arginfo_stream_supports_lock +#endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_vt100_support, 0, 1, _IS_BOOL, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, enable, _IS_BOOL, 1, "null") ZEND_END_ARG_INFO() #endif +#if defined(HAVE_UTIME) #define arginfo_stream_set_chunk_size arginfo_stream_set_write_buffer +#endif -#if HAVE_SYS_TIME_H || defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_set_timeout, 0, 2, _IS_BOOL, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0) @@ -2029,174 +2289,265 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_set_timeout, 0, 2, _IS_BO ZEND_END_ARG_INFO() #endif -#if HAVE_SYS_TIME_H || defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) #define arginfo_socket_set_timeout arginfo_stream_set_timeout #endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gettype, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_get_debug_type arginfo_gettype +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_settype, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(1, var, IS_MIXED, 0) ZEND_ARG_TYPE_INFO(0, type, IS_STRING, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_intval, 0, 1, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, base, IS_LONG, 0, "10") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_floatval, 0, 1, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_doubleval arginfo_floatval +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_boolval, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_strval arginfo_gettype +#endif +#if defined(HAVE_UTIME) #define arginfo_is_null arginfo_boolval +#endif +#if defined(HAVE_UTIME) #define arginfo_is_resource arginfo_boolval +#endif +#if defined(HAVE_UTIME) #define arginfo_is_bool arginfo_boolval +#endif +#if defined(HAVE_UTIME) #define arginfo_is_int arginfo_boolval +#endif +#if defined(HAVE_UTIME) #define arginfo_is_integer arginfo_boolval +#endif +#if defined(HAVE_UTIME) #define arginfo_is_long arginfo_boolval +#endif +#if defined(HAVE_UTIME) #define arginfo_is_float arginfo_boolval +#endif +#if defined(HAVE_UTIME) #define arginfo_is_double arginfo_boolval +#endif +#if defined(HAVE_UTIME) #define arginfo_is_numeric arginfo_boolval +#endif +#if defined(HAVE_UTIME) #define arginfo_is_string arginfo_boolval +#endif +#if defined(HAVE_UTIME) #define arginfo_is_array arginfo_boolval +#endif +#if defined(HAVE_UTIME) #define arginfo_is_object arginfo_boolval +#endif +#if defined(HAVE_UTIME) #define arginfo_is_scalar arginfo_boolval +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_is_callable, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, syntax_only, _IS_BOOL, 0, "false") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, callable_name, "null") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_is_iterable arginfo_boolval +#endif +#if defined(HAVE_UTIME) #define arginfo_is_countable arginfo_boolval +#endif -#if defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_uniqid, 0, 0, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, prefix, IS_STRING, 0, "\"\"") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, more_entropy, _IS_BOOL, 0, "false") ZEND_END_ARG_INFO() #endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_parse_url, 0, 1, MAY_BE_LONG|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_NULL|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, url, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, component, IS_LONG, 0, "-1") ZEND_END_ARG_INFO() +#endif -#define arginfo_urlencode arginfo_base64_encode +#if defined(HAVE_UTIME) +#define arginfo_urlencode arginfo_quoted_printable_decode +#endif -#define arginfo_urldecode arginfo_base64_encode +#if defined(HAVE_UTIME) +#define arginfo_urldecode arginfo_quoted_printable_decode +#endif -#define arginfo_rawurlencode arginfo_base64_encode +#if defined(HAVE_UTIME) +#define arginfo_rawurlencode arginfo_quoted_printable_decode +#endif -#define arginfo_rawurldecode arginfo_base64_encode +#if defined(HAVE_UTIME) +#define arginfo_rawurldecode arginfo_quoted_printable_decode +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_get_headers, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, url, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, associative, _IS_BOOL, 0, "false") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, context, "null") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_bucket_make_writeable, 0, 1, IS_OBJECT, 1) ZEND_ARG_INFO(0, brigade) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_bucket_prepend, 0, 2, IS_VOID, 0) ZEND_ARG_INFO(0, brigade) ZEND_ARG_TYPE_INFO(0, bucket, IS_OBJECT, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_stream_bucket_append arginfo_stream_bucket_prepend +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_bucket_new, 0, 2, IS_OBJECT, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, buffer, IS_STRING, 0) ZEND_END_ARG_INFO() +#endif -#define arginfo_stream_get_filters arginfo_ob_list_handlers +#if defined(HAVE_UTIME) +#define arginfo_stream_get_filters arginfo_realpath_cache_get +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_filter_register, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, filter_name, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, class, IS_STRING, 0) ZEND_END_ARG_INFO() +#endif -#define arginfo_convert_uuencode arginfo_base64_encode +#if defined(HAVE_UTIME) +#define arginfo_convert_uuencode arginfo_quoted_printable_decode +#endif -#define arginfo_convert_uudecode arginfo_hex2bin +#if defined(HAVE_UTIME) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_convert_uudecode, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) + ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) +ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_var_dump, 0, 1, IS_VOID, 0) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_ARG_VARIADIC_TYPE_INFO(0, values, IS_MIXED, 0) ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_var_export, 0, 1, IS_STRING, 1) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, return, _IS_BOOL, 0, "false") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_debug_zval_dump arginfo_var_dump +#endif +#if defined(HAVE_UTIME) #define arginfo_serialize arginfo_gettype +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_unserialize, 0, 1, IS_MIXED, 0) ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 0, "[]") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_memory_get_usage, 0, 0, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, real_usage, _IS_BOOL, 0, "false") ZEND_END_ARG_INFO() +#endif +#if defined(HAVE_UTIME) #define arginfo_memory_get_peak_usage arginfo_memory_get_usage +#endif -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_memory_reset_peak_usage, 0, 0, IS_VOID, 0) -ZEND_END_ARG_INFO() - +#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_version_compare, 0, 2, MAY_BE_LONG|MAY_BE_BOOL) ZEND_ARG_TYPE_INFO(0, version1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, version2, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, operator, IS_STRING, 1, "null") ZEND_END_ARG_INFO() +#endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_cp_set, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, codepage, IS_LONG, 0) ZEND_END_ARG_INFO() #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_cp_get, 0, 0, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, kind, IS_STRING, 0, "\"\"") ZEND_END_ARG_INFO() #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_cp_conv, 0, 3, IS_STRING, 1) ZEND_ARG_TYPE_MASK(0, in_codepage, MAY_BE_LONG|MAY_BE_STRING, NULL) ZEND_ARG_TYPE_MASK(0, out_codepage, MAY_BE_LONG|MAY_BE_STRING, NULL) @@ -2204,19 +2555,19 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_cp_conv, 0, 3, IS_S ZEND_END_ARG_INFO() #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_cp_is_utf8, 0, 0, _IS_BOOL, 0) ZEND_END_ARG_INFO() #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_set_ctrl_handler, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, handler, IS_CALLABLE, 1) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, add, _IS_BOOL, 0, "true") ZEND_END_ARG_INFO() #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_generate_ctrl_event, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, event, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, pid, IS_LONG, 0, "0") @@ -2335,10 +2686,10 @@ ZEND_FUNCTION(getopt); ZEND_FUNCTION(flush); ZEND_FUNCTION(sleep); ZEND_FUNCTION(usleep); -#if HAVE_NANOSLEEP +#if defined(HAVE_NANOSLEEP) ZEND_FUNCTION(time_nanosleep); #endif -#if HAVE_NANOSLEEP +#if defined(HAVE_NANOSLEEP) ZEND_FUNCTION(time_sleep_until); #endif ZEND_FUNCTION(get_current_user); @@ -2364,16 +2715,16 @@ ZEND_FUNCTION(print_r); ZEND_FUNCTION(connection_aborted); ZEND_FUNCTION(connection_status); ZEND_FUNCTION(ignore_user_abort); -#if HAVE_GETSERVBYNAME +#if defined(HAVE_GETSERVBYNAME) ZEND_FUNCTION(getservbyname); #endif -#if HAVE_GETSERVBYPORT +#if defined(HAVE_GETSERVBYPORT) ZEND_FUNCTION(getservbyport); #endif -#if HAVE_GETPROTOBYNAME +#if defined(HAVE_GETPROTOBYNAME) ZEND_FUNCTION(getprotobyname); #endif -#if HAVE_GETPROTOBYNUMBER +#if defined(HAVE_GETPROTOBYNUMBER) ZEND_FUNCTION(getprotobynumber); #endif ZEND_FUNCTION(register_tick_function); @@ -2391,7 +2742,7 @@ ZEND_FUNCTION(sys_getloadavg); ZEND_FUNCTION(get_browser); ZEND_FUNCTION(crc32); ZEND_FUNCTION(crypt); -#if HAVE_STRPTIME +#if defined(HAVE_STRPTIME) ZEND_FUNCTION(strptime); #endif #if defined(HAVE_GETHOSTNAME) @@ -2400,19 +2751,19 @@ ZEND_FUNCTION(gethostname); ZEND_FUNCTION(gethostbyaddr); ZEND_FUNCTION(gethostbyname); ZEND_FUNCTION(gethostbynamel); -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) ZEND_FUNCTION(dns_check_record); #endif -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) ZEND_FUNCTION(dns_get_record); #endif -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) ZEND_FUNCTION(dns_get_mx); #endif #if defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__) ZEND_FUNCTION(net_get_interfaces); #endif -#if HAVE_FTOK +#if defined(HAVE_FTOK) ZEND_FUNCTION(ftok); #endif ZEND_FUNCTION(hrtime); @@ -2460,7 +2811,7 @@ ZEND_FUNCTION(bin2hex); ZEND_FUNCTION(hex2bin); ZEND_FUNCTION(strspn); ZEND_FUNCTION(strcspn); -#if HAVE_NL_LANGINFO +#if defined(HAVE_NL_LANGINFO) ZEND_FUNCTION(nl_langinfo); #endif ZEND_FUNCTION(strcoll); @@ -2530,7 +2881,7 @@ ZEND_FUNCTION(opendir); ZEND_FUNCTION(dir); ZEND_FUNCTION(closedir); ZEND_FUNCTION(chdir); -#if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC +#if defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC) ZEND_FUNCTION(chroot); #endif ZEND_FUNCTION(getcwd); @@ -2609,242 +2960,563 @@ ZEND_FUNCTION(stat); ZEND_FUNCTION(lstat); ZEND_FUNCTION(chown); ZEND_FUNCTION(chgrp); -#if HAVE_LCHOWN +#if defined(HAVE_LCHOWN) ZEND_FUNCTION(lchown); #endif -#if HAVE_LCHOWN +#if defined(HAVE_LCHOWN) ZEND_FUNCTION(lchgrp); #endif ZEND_FUNCTION(chmod); -#if HAVE_UTIME +#if defined(HAVE_UTIME) ZEND_FUNCTION(touch); #endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(clearstatcache); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(disk_total_space); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(disk_free_space); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(realpath_cache_get); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(realpath_cache_size); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(sprintf); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(printf); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(vprintf); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(vsprintf); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(fprintf); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(vfprintf); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(fsockopen); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(pfsockopen); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(http_build_query); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(image_type_to_mime_type); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(image_type_to_extension); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(getimagesize); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(getimagesizefromstring); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(phpinfo); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(phpversion); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(phpcredits); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(php_sapi_name); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(php_uname); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(php_ini_scanned_files); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(php_ini_loaded_file); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(iptcembed); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(iptcparse); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(levenshtein); -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#endif +#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FUNCTION(readlink); #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FUNCTION(linkinfo); #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FUNCTION(symlink); #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FUNCTION(link); #endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(mail); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(abs); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(ceil); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(floor); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(round); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(sin); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(cos); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(tan); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(asin); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(acos); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(atan); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(atanh); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(atan2); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(sinh); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(cosh); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(tanh); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(asinh); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(acosh); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(expm1); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(log1p); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(pi); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_finite); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_nan); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(intdiv); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_infinite); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(pow); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(exp); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(log); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(log10); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(sqrt); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(hypot); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(deg2rad); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(rad2deg); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(bindec); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(hexdec); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(octdec); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(decbin); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(decoct); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(dechex); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(base_convert); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(number_format); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(fmod); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(fdiv); -#if defined(HAVE_GETTIMEOFDAY) +#endif +#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) ZEND_FUNCTION(microtime); #endif -#if defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) ZEND_FUNCTION(gettimeofday); #endif -#if defined(HAVE_GETRUSAGE) +#if defined(HAVE_UTIME) && defined(HAVE_GETRUSAGE) ZEND_FUNCTION(getrusage); #endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(pack); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(unpack); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(password_get_info); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(password_hash); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(password_needs_rehash); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(password_verify); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(password_algos); -#if defined(PHP_CAN_SUPPORT_PROC_OPEN) +#endif +#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FUNCTION(proc_open); #endif -#if defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FUNCTION(proc_close); #endif -#if defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FUNCTION(proc_terminate); #endif -#if defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FUNCTION(proc_get_status); #endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(quoted_printable_decode); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(quoted_printable_encode); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(mt_srand); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(rand); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(mt_rand); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(mt_getrandmax); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(random_bytes); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(random_int); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(soundex); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_select); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_create); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_set_params); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_get_params); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_set_option); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_get_options); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_get_default); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_set_default); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_filter_prepend); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_filter_append); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_filter_remove); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_client); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_server); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_accept); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_get_name); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_recvfrom); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_sendto); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_enable_crypto); -#if defined(HAVE_SHUTDOWN) +#endif +#if defined(HAVE_UTIME) && defined(HAVE_SHUTDOWN) ZEND_FUNCTION(stream_socket_shutdown); #endif -#if HAVE_SOCKETPAIR +#if defined(HAVE_UTIME) && defined(HAVE_SOCKETPAIR) ZEND_FUNCTION(stream_socket_pair); #endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_copy_to_stream); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_get_contents); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_supports_lock); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_set_write_buffer); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_set_read_buffer); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_set_blocking); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_get_meta_data); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_get_line); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_resolve_include_path); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_get_wrappers); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_get_transports); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_is_local); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_isatty); -#if defined(PHP_WIN32) +#endif +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_vt100_support); #endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_set_chunk_size); -#if HAVE_SYS_TIME_H || defined(PHP_WIN32) +#endif +#if defined(HAVE_UTIME) && defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) ZEND_FUNCTION(stream_set_timeout); #endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(gettype); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(get_debug_type); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(settype); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(intval); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(floatval); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(boolval); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(strval); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_null); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_resource); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_bool); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_int); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_float); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_numeric); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_string); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_array); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_object); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_scalar); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_callable); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_iterable); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(is_countable); -#if defined(HAVE_GETTIMEOFDAY) +#endif +#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) ZEND_FUNCTION(uniqid); #endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(parse_url); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(urlencode); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(urldecode); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(rawurlencode); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(rawurldecode); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(get_headers); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_bucket_make_writeable); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_bucket_prepend); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_bucket_append); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_bucket_new); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_get_filters); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_filter_register); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(convert_uuencode); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(convert_uudecode); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(var_dump); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(var_export); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(debug_zval_dump); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(serialize); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(unserialize); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(memory_get_usage); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(memory_get_peak_usage); -ZEND_FUNCTION(memory_reset_peak_usage); +#endif +#if defined(HAVE_UTIME) ZEND_FUNCTION(version_compare); -#if defined(PHP_WIN32) +#endif +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_cp_set); #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_cp_get); #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_cp_conv); #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_cp_is_utf8); #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_set_ctrl_handler); #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_generate_ctrl_event); #endif @@ -2965,10 +3637,10 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(flush, arginfo_flush) ZEND_FE(sleep, arginfo_sleep) ZEND_FE(usleep, arginfo_usleep) -#if HAVE_NANOSLEEP +#if defined(HAVE_NANOSLEEP) ZEND_FE(time_nanosleep, arginfo_time_nanosleep) #endif -#if HAVE_NANOSLEEP +#if defined(HAVE_NANOSLEEP) ZEND_FE(time_sleep_until, arginfo_time_sleep_until) #endif ZEND_FE(get_current_user, arginfo_get_current_user) @@ -2996,16 +3668,16 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(connection_aborted, arginfo_connection_aborted) ZEND_FE(connection_status, arginfo_connection_status) ZEND_FE(ignore_user_abort, arginfo_ignore_user_abort) -#if HAVE_GETSERVBYNAME +#if defined(HAVE_GETSERVBYNAME) ZEND_FE(getservbyname, arginfo_getservbyname) #endif -#if HAVE_GETSERVBYPORT +#if defined(HAVE_GETSERVBYPORT) ZEND_FE(getservbyport, arginfo_getservbyport) #endif -#if HAVE_GETPROTOBYNAME +#if defined(HAVE_GETPROTOBYNAME) ZEND_FE(getprotobyname, arginfo_getprotobyname) #endif -#if HAVE_GETPROTOBYNUMBER +#if defined(HAVE_GETPROTOBYNUMBER) ZEND_FE(getprotobynumber, arginfo_getprotobynumber) #endif ZEND_FE(register_tick_function, arginfo_register_tick_function) @@ -3023,7 +3695,7 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(get_browser, arginfo_get_browser) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(crc32, arginfo_crc32) ZEND_FE(crypt, arginfo_crypt) -#if HAVE_STRPTIME +#if defined(HAVE_STRPTIME) ZEND_DEP_FE(strptime, arginfo_strptime) #endif #if defined(HAVE_GETHOSTNAME) @@ -3032,25 +3704,25 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(gethostbyaddr, arginfo_gethostbyaddr) ZEND_FE(gethostbyname, arginfo_gethostbyname) ZEND_FE(gethostbynamel, arginfo_gethostbynamel) -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) ZEND_FE(dns_check_record, arginfo_dns_check_record) #endif -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) ZEND_FALIAS(checkdnsrr, dns_check_record, arginfo_checkdnsrr) #endif -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) ZEND_FE(dns_get_record, arginfo_dns_get_record) #endif -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) ZEND_FE(dns_get_mx, arginfo_dns_get_mx) #endif -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) ZEND_FALIAS(getmxrr, dns_get_mx, arginfo_getmxrr) #endif #if defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__) ZEND_FE(net_get_interfaces, arginfo_net_get_interfaces) #endif -#if HAVE_FTOK +#if defined(HAVE_FTOK) ZEND_FE(ftok, arginfo_ftok) #endif ZEND_FE(hrtime, arginfo_hrtime) @@ -3098,7 +3770,7 @@ static const zend_function_entry ext_functions[] = { ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(hex2bin, arginfo_hex2bin) ZEND_FE(strspn, arginfo_strspn) ZEND_FE(strcspn, arginfo_strcspn) -#if HAVE_NL_LANGINFO +#if defined(HAVE_NL_LANGINFO) ZEND_FE(nl_langinfo, arginfo_nl_langinfo) #endif ZEND_FE(strcoll, arginfo_strcoll) @@ -3171,7 +3843,7 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(dir, arginfo_dir) ZEND_FE(closedir, arginfo_closedir) ZEND_FE(chdir, arginfo_chdir) -#if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC +#if defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC) ZEND_FE(chroot, arginfo_chroot) #endif ZEND_FE(getcwd, arginfo_getcwd) @@ -3252,255 +3924,596 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(lstat, arginfo_lstat) ZEND_FE(chown, arginfo_chown) ZEND_FE(chgrp, arginfo_chgrp) -#if HAVE_LCHOWN +#if defined(HAVE_LCHOWN) ZEND_FE(lchown, arginfo_lchown) #endif -#if HAVE_LCHOWN +#if defined(HAVE_LCHOWN) ZEND_FE(lchgrp, arginfo_lchgrp) #endif ZEND_FE(chmod, arginfo_chmod) -#if HAVE_UTIME +#if defined(HAVE_UTIME) ZEND_FE(touch, arginfo_touch) #endif +#if defined(HAVE_UTIME) ZEND_FE(clearstatcache, arginfo_clearstatcache) +#endif +#if defined(HAVE_UTIME) ZEND_FE(disk_total_space, arginfo_disk_total_space) +#endif +#if defined(HAVE_UTIME) ZEND_FE(disk_free_space, arginfo_disk_free_space) +#endif +#if defined(HAVE_UTIME) ZEND_FALIAS(diskfreespace, disk_free_space, arginfo_diskfreespace) +#endif +#if defined(HAVE_UTIME) ZEND_FE(realpath_cache_get, arginfo_realpath_cache_get) +#endif +#if defined(HAVE_UTIME) ZEND_FE(realpath_cache_size, arginfo_realpath_cache_size) +#endif +#if defined(HAVE_UTIME) ZEND_FE(sprintf, arginfo_sprintf) +#endif +#if defined(HAVE_UTIME) ZEND_FE(printf, arginfo_printf) +#endif +#if defined(HAVE_UTIME) ZEND_FE(vprintf, arginfo_vprintf) +#endif +#if defined(HAVE_UTIME) ZEND_FE(vsprintf, arginfo_vsprintf) +#endif +#if defined(HAVE_UTIME) ZEND_FE(fprintf, arginfo_fprintf) +#endif +#if defined(HAVE_UTIME) ZEND_FE(vfprintf, arginfo_vfprintf) +#endif +#if defined(HAVE_UTIME) ZEND_FE(fsockopen, arginfo_fsockopen) +#endif +#if defined(HAVE_UTIME) ZEND_FE(pfsockopen, arginfo_pfsockopen) +#endif +#if defined(HAVE_UTIME) ZEND_FE(http_build_query, arginfo_http_build_query) +#endif +#if defined(HAVE_UTIME) ZEND_FE(image_type_to_mime_type, arginfo_image_type_to_mime_type) +#endif +#if defined(HAVE_UTIME) ZEND_FE(image_type_to_extension, arginfo_image_type_to_extension) +#endif +#if defined(HAVE_UTIME) ZEND_FE(getimagesize, arginfo_getimagesize) +#endif +#if defined(HAVE_UTIME) ZEND_FE(getimagesizefromstring, arginfo_getimagesizefromstring) +#endif +#if defined(HAVE_UTIME) ZEND_FE(phpinfo, arginfo_phpinfo) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(phpversion, arginfo_phpversion) +#endif +#if defined(HAVE_UTIME) ZEND_FE(phpcredits, arginfo_phpcredits) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(php_sapi_name, arginfo_php_sapi_name) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(php_uname, arginfo_php_uname) +#endif +#if defined(HAVE_UTIME) ZEND_FE(php_ini_scanned_files, arginfo_php_ini_scanned_files) +#endif +#if defined(HAVE_UTIME) ZEND_FE(php_ini_loaded_file, arginfo_php_ini_loaded_file) +#endif +#if defined(HAVE_UTIME) ZEND_FE(iptcembed, arginfo_iptcembed) +#endif +#if defined(HAVE_UTIME) ZEND_FE(iptcparse, arginfo_iptcparse) +#endif +#if defined(HAVE_UTIME) ZEND_FE(levenshtein, arginfo_levenshtein) -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#endif +#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FE(readlink, arginfo_readlink) #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FE(linkinfo, arginfo_linkinfo) #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FE(symlink, arginfo_symlink) #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FE(link, arginfo_link) #endif +#if defined(HAVE_UTIME) ZEND_FE(mail, arginfo_mail) +#endif +#if defined(HAVE_UTIME) ZEND_FE(abs, arginfo_abs) +#endif +#if defined(HAVE_UTIME) ZEND_FE(ceil, arginfo_ceil) +#endif +#if defined(HAVE_UTIME) ZEND_FE(floor, arginfo_floor) +#endif +#if defined(HAVE_UTIME) ZEND_FE(round, arginfo_round) +#endif +#if defined(HAVE_UTIME) ZEND_FE(sin, arginfo_sin) +#endif +#if defined(HAVE_UTIME) ZEND_FE(cos, arginfo_cos) +#endif +#if defined(HAVE_UTIME) ZEND_FE(tan, arginfo_tan) +#endif +#if defined(HAVE_UTIME) ZEND_FE(asin, arginfo_asin) +#endif +#if defined(HAVE_UTIME) ZEND_FE(acos, arginfo_acos) +#endif +#if defined(HAVE_UTIME) ZEND_FE(atan, arginfo_atan) +#endif +#if defined(HAVE_UTIME) ZEND_FE(atanh, arginfo_atanh) +#endif +#if defined(HAVE_UTIME) ZEND_FE(atan2, arginfo_atan2) +#endif +#if defined(HAVE_UTIME) ZEND_FE(sinh, arginfo_sinh) +#endif +#if defined(HAVE_UTIME) ZEND_FE(cosh, arginfo_cosh) +#endif +#if defined(HAVE_UTIME) ZEND_FE(tanh, arginfo_tanh) +#endif +#if defined(HAVE_UTIME) ZEND_FE(asinh, arginfo_asinh) +#endif +#if defined(HAVE_UTIME) ZEND_FE(acosh, arginfo_acosh) +#endif +#if defined(HAVE_UTIME) ZEND_FE(expm1, arginfo_expm1) +#endif +#if defined(HAVE_UTIME) ZEND_FE(log1p, arginfo_log1p) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(pi, arginfo_pi) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(is_finite, arginfo_is_finite) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(is_nan, arginfo_is_nan) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(intdiv, arginfo_intdiv) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(is_infinite, arginfo_is_infinite) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(pow, arginfo_pow) +#endif +#if defined(HAVE_UTIME) ZEND_FE(exp, arginfo_exp) +#endif +#if defined(HAVE_UTIME) ZEND_FE(log, arginfo_log) +#endif +#if defined(HAVE_UTIME) ZEND_FE(log10, arginfo_log10) +#endif +#if defined(HAVE_UTIME) ZEND_FE(sqrt, arginfo_sqrt) +#endif +#if defined(HAVE_UTIME) ZEND_FE(hypot, arginfo_hypot) +#endif +#if defined(HAVE_UTIME) ZEND_FE(deg2rad, arginfo_deg2rad) +#endif +#if defined(HAVE_UTIME) ZEND_FE(rad2deg, arginfo_rad2deg) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(bindec, arginfo_bindec) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(hexdec, arginfo_hexdec) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(octdec, arginfo_octdec) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(decbin, arginfo_decbin) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(decoct, arginfo_decoct) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(dechex, arginfo_dechex) +#endif +#if defined(HAVE_UTIME) ZEND_FE(base_convert, arginfo_base_convert) +#endif +#if defined(HAVE_UTIME) ZEND_FE(number_format, arginfo_number_format) +#endif +#if defined(HAVE_UTIME) ZEND_FE(fmod, arginfo_fmod) +#endif +#if defined(HAVE_UTIME) ZEND_FE(fdiv, arginfo_fdiv) -#if defined(HAVE_GETTIMEOFDAY) +#endif +#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) ZEND_FE(microtime, arginfo_microtime) #endif -#if defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) ZEND_FE(gettimeofday, arginfo_gettimeofday) #endif -#if defined(HAVE_GETRUSAGE) +#if defined(HAVE_UTIME) && defined(HAVE_GETRUSAGE) ZEND_FE(getrusage, arginfo_getrusage) #endif +#if defined(HAVE_UTIME) ZEND_FE(pack, arginfo_pack) +#endif +#if defined(HAVE_UTIME) ZEND_FE(unpack, arginfo_unpack) +#endif +#if defined(HAVE_UTIME) ZEND_FE(password_get_info, arginfo_password_get_info) +#endif +#if defined(HAVE_UTIME) ZEND_FE(password_hash, arginfo_password_hash) +#endif +#if defined(HAVE_UTIME) ZEND_FE(password_needs_rehash, arginfo_password_needs_rehash) +#endif +#if defined(HAVE_UTIME) ZEND_FE(password_verify, arginfo_password_verify) +#endif +#if defined(HAVE_UTIME) ZEND_FE(password_algos, arginfo_password_algos) -#if defined(PHP_CAN_SUPPORT_PROC_OPEN) +#endif +#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FE(proc_open, arginfo_proc_open) #endif -#if defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FE(proc_close, arginfo_proc_close) #endif -#if defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FE(proc_terminate, arginfo_proc_terminate) #endif -#if defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FE(proc_get_status, arginfo_proc_get_status) #endif +#if defined(HAVE_UTIME) ZEND_FE(quoted_printable_decode, arginfo_quoted_printable_decode) +#endif +#if defined(HAVE_UTIME) ZEND_FE(quoted_printable_encode, arginfo_quoted_printable_encode) +#endif +#if defined(HAVE_UTIME) ZEND_FE(mt_srand, arginfo_mt_srand) +#endif +#if defined(HAVE_UTIME) ZEND_FALIAS(srand, mt_srand, arginfo_srand) +#endif +#if defined(HAVE_UTIME) ZEND_FE(rand, arginfo_rand) +#endif +#if defined(HAVE_UTIME) ZEND_FE(mt_rand, arginfo_mt_rand) +#endif +#if defined(HAVE_UTIME) ZEND_FE(mt_getrandmax, arginfo_mt_getrandmax) +#endif +#if defined(HAVE_UTIME) ZEND_FALIAS(getrandmax, mt_getrandmax, arginfo_getrandmax) +#endif +#if defined(HAVE_UTIME) ZEND_FE(random_bytes, arginfo_random_bytes) +#endif +#if defined(HAVE_UTIME) ZEND_FE(random_int, arginfo_random_int) +#endif +#if defined(HAVE_UTIME) ZEND_FE(soundex, arginfo_soundex) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_select, arginfo_stream_select) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_context_create, arginfo_stream_context_create) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_context_set_params, arginfo_stream_context_set_params) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_context_get_params, arginfo_stream_context_get_params) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_context_set_option, arginfo_stream_context_set_option) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_context_get_options, arginfo_stream_context_get_options) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_context_get_default, arginfo_stream_context_get_default) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_context_set_default, arginfo_stream_context_set_default) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_filter_prepend, arginfo_stream_filter_prepend) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_filter_append, arginfo_stream_filter_append) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_filter_remove, arginfo_stream_filter_remove) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_socket_client, arginfo_stream_socket_client) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_socket_server, arginfo_stream_socket_server) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_socket_accept, arginfo_stream_socket_accept) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_socket_get_name, arginfo_stream_socket_get_name) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_socket_recvfrom, arginfo_stream_socket_recvfrom) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_socket_sendto, arginfo_stream_socket_sendto) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_socket_enable_crypto, arginfo_stream_socket_enable_crypto) -#if defined(HAVE_SHUTDOWN) +#endif +#if defined(HAVE_UTIME) && defined(HAVE_SHUTDOWN) ZEND_FE(stream_socket_shutdown, arginfo_stream_socket_shutdown) #endif -#if HAVE_SOCKETPAIR +#if defined(HAVE_UTIME) && defined(HAVE_SOCKETPAIR) ZEND_FE(stream_socket_pair, arginfo_stream_socket_pair) #endif +#if defined(HAVE_UTIME) ZEND_FE(stream_copy_to_stream, arginfo_stream_copy_to_stream) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_get_contents, arginfo_stream_get_contents) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_supports_lock, arginfo_stream_supports_lock) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_set_write_buffer, arginfo_stream_set_write_buffer) +#endif +#if defined(HAVE_UTIME) ZEND_FALIAS(set_file_buffer, stream_set_write_buffer, arginfo_set_file_buffer) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_set_read_buffer, arginfo_stream_set_read_buffer) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_set_blocking, arginfo_stream_set_blocking) +#endif +#if defined(HAVE_UTIME) ZEND_FALIAS(socket_set_blocking, stream_set_blocking, arginfo_socket_set_blocking) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_get_meta_data, arginfo_stream_get_meta_data) +#endif +#if defined(HAVE_UTIME) ZEND_FALIAS(socket_get_status, stream_get_meta_data, arginfo_socket_get_status) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_get_line, arginfo_stream_get_line) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_resolve_include_path, arginfo_stream_resolve_include_path) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_get_wrappers, arginfo_stream_get_wrappers) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_get_transports, arginfo_stream_get_transports) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_is_local, arginfo_stream_is_local) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_isatty, arginfo_stream_isatty) -#if defined(PHP_WIN32) +#endif +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FE(sapi_windows_vt100_support, arginfo_sapi_windows_vt100_support) #endif +#if defined(HAVE_UTIME) ZEND_FE(stream_set_chunk_size, arginfo_stream_set_chunk_size) -#if HAVE_SYS_TIME_H || defined(PHP_WIN32) +#endif +#if defined(HAVE_UTIME) && defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) ZEND_FE(stream_set_timeout, arginfo_stream_set_timeout) #endif -#if HAVE_SYS_TIME_H || defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) ZEND_FALIAS(socket_set_timeout, stream_set_timeout, arginfo_socket_set_timeout) #endif +#if defined(HAVE_UTIME) ZEND_FE(gettype, arginfo_gettype) +#endif +#if defined(HAVE_UTIME) ZEND_FE(get_debug_type, arginfo_get_debug_type) +#endif +#if defined(HAVE_UTIME) ZEND_FE(settype, arginfo_settype) +#endif +#if defined(HAVE_UTIME) ZEND_FE(intval, arginfo_intval) +#endif +#if defined(HAVE_UTIME) ZEND_FE(floatval, arginfo_floatval) +#endif +#if defined(HAVE_UTIME) ZEND_FALIAS(doubleval, floatval, arginfo_doubleval) +#endif +#if defined(HAVE_UTIME) ZEND_FE(boolval, arginfo_boolval) +#endif +#if defined(HAVE_UTIME) ZEND_FE(strval, arginfo_strval) +#endif +#if defined(HAVE_UTIME) ZEND_FE(is_null, arginfo_is_null) +#endif +#if defined(HAVE_UTIME) ZEND_FE(is_resource, arginfo_is_resource) +#endif +#if defined(HAVE_UTIME) ZEND_FE(is_bool, arginfo_is_bool) +#endif +#if defined(HAVE_UTIME) ZEND_FE(is_int, arginfo_is_int) +#endif +#if defined(HAVE_UTIME) ZEND_FALIAS(is_integer, is_int, arginfo_is_integer) +#endif +#if defined(HAVE_UTIME) ZEND_FALIAS(is_long, is_int, arginfo_is_long) +#endif +#if defined(HAVE_UTIME) ZEND_FE(is_float, arginfo_is_float) +#endif +#if defined(HAVE_UTIME) ZEND_FALIAS(is_double, is_float, arginfo_is_double) +#endif +#if defined(HAVE_UTIME) ZEND_FE(is_numeric, arginfo_is_numeric) +#endif +#if defined(HAVE_UTIME) ZEND_FE(is_string, arginfo_is_string) +#endif +#if defined(HAVE_UTIME) ZEND_FE(is_array, arginfo_is_array) +#endif +#if defined(HAVE_UTIME) ZEND_FE(is_object, arginfo_is_object) +#endif +#if defined(HAVE_UTIME) ZEND_FE(is_scalar, arginfo_is_scalar) +#endif +#if defined(HAVE_UTIME) ZEND_FE(is_callable, arginfo_is_callable) +#endif +#if defined(HAVE_UTIME) ZEND_FE(is_iterable, arginfo_is_iterable) +#endif +#if defined(HAVE_UTIME) ZEND_FE(is_countable, arginfo_is_countable) -#if defined(HAVE_GETTIMEOFDAY) +#endif +#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) ZEND_FE(uniqid, arginfo_uniqid) #endif +#if defined(HAVE_UTIME) ZEND_FE(parse_url, arginfo_parse_url) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(urlencode, arginfo_urlencode) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(urldecode, arginfo_urldecode) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(rawurlencode, arginfo_rawurlencode) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(rawurldecode, arginfo_rawurldecode) +#endif +#if defined(HAVE_UTIME) ZEND_FE(get_headers, arginfo_get_headers) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_bucket_make_writeable, arginfo_stream_bucket_make_writeable) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_bucket_prepend, arginfo_stream_bucket_prepend) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_bucket_append, arginfo_stream_bucket_append) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_bucket_new, arginfo_stream_bucket_new) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_get_filters, arginfo_stream_get_filters) +#endif +#if defined(HAVE_UTIME) ZEND_FE(stream_filter_register, arginfo_stream_filter_register) +#endif +#if defined(HAVE_UTIME) ZEND_FE(convert_uuencode, arginfo_convert_uuencode) +#endif +#if defined(HAVE_UTIME) ZEND_FE(convert_uudecode, arginfo_convert_uudecode) +#endif +#if defined(HAVE_UTIME) ZEND_FE(var_dump, arginfo_var_dump) +#endif +#if defined(HAVE_UTIME) ZEND_FE(var_export, arginfo_var_export) +#endif +#if defined(HAVE_UTIME) ZEND_FE(debug_zval_dump, arginfo_debug_zval_dump) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(serialize, arginfo_serialize) +#endif +#if defined(HAVE_UTIME) ZEND_FE(unserialize, arginfo_unserialize) +#endif +#if defined(HAVE_UTIME) ZEND_FE(memory_get_usage, arginfo_memory_get_usage) +#endif +#if defined(HAVE_UTIME) ZEND_FE(memory_get_peak_usage, arginfo_memory_get_peak_usage) - ZEND_FE(memory_reset_peak_usage, arginfo_memory_reset_peak_usage) +#endif +#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(version_compare, arginfo_version_compare) -#if defined(PHP_WIN32) +#endif +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FE(sapi_windows_cp_set, arginfo_sapi_windows_cp_set) #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FE(sapi_windows_cp_get, arginfo_sapi_windows_cp_get) #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FE(sapi_windows_cp_conv, arginfo_sapi_windows_cp_conv) #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FE(sapi_windows_cp_is_utf8, arginfo_sapi_windows_cp_is_utf8) #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FE(sapi_windows_set_ctrl_handler, arginfo_sapi_windows_set_ctrl_handler) #endif -#if defined(PHP_WIN32) +#if defined(HAVE_UTIME) && defined(PHP_WIN32) ZEND_FE(sapi_windows_generate_ctrl_event, arginfo_sapi_windows_generate_ctrl_event) #endif ZEND_FE_END diff --git a/ext/standard/crc32.c b/ext/standard/crc32.c index 221b864ba58d5..d13eee14fbe9d 100644 --- a/ext/standard/crc32.c +++ b/ext/standard/crc32.c @@ -19,7 +19,7 @@ #include "crc32.h" #include "crc32_x86.h" -#if HAVE_AARCH64_CRC32 +#ifdef HAVE_AARCH64_CRC32 # include # if defined(__linux__) # include @@ -91,7 +91,7 @@ static uint32_t crc32_aarch64(uint32_t crc, const char *p, size_t nr) { PHPAPI uint32_t php_crc32_bulk_update(uint32_t crc, const char *p, size_t nr) { -#if HAVE_AARCH64_CRC32 +#ifdef HAVE_AARCH64_CRC32 if (has_crc32_insn()) { crc = crc32_aarch64(crc, p, nr); return crc; diff --git a/ext/standard/crypt.c b/ext/standard/crypt.c index 117071bffc235..fa18dd316e889 100644 --- a/ext/standard/crypt.c +++ b/ext/standard/crypt.c @@ -21,14 +21,14 @@ #include "php.h" -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif #if PHP_USE_PHP_CRYPT_R # include "php_crypt_r.h" # include "crypt_freesec.h" #else -# if HAVE_CRYPT_H +# ifdef HAVE_CRYPT_H # if defined(CRYPT_R_GNU_SOURCE) && !defined(_GNU_SOURCE) # define _GNU_SOURCE # endif diff --git a/ext/standard/crypt_sha512.c b/ext/standard/crypt_sha512.c index f896dad5a8142..a7696d63f7e84 100644 --- a/ext/standard/crypt_sha512.c +++ b/ext/standard/crypt_sha512.c @@ -296,7 +296,7 @@ sha512_process_bytes(const void *buffer, size_t len, struct sha512_ctx *ctx) { /* Process available complete blocks. */ if (len >= 128) { -#if !_STRING_ARCH_unaligned +#ifndef _STRING_ARCH_unaligned /* To check alignment gcc has an appropriate operator. Other compilers don't. */ # if __GNUC__ >= 2 diff --git a/ext/standard/datetime.c b/ext/standard/datetime.c index d8054336bffc6..5308a0e249487 100644 --- a/ext/standard/datetime.c +++ b/ext/standard/datetime.c @@ -62,7 +62,7 @@ PHPAPI char *php_std_date(time_t t) } /* }}} */ -#if HAVE_STRPTIME +#ifdef HAVE_STRPTIME #ifndef HAVE_STRPTIME_DECL_FAILS char *strptime(const char *s, const char *format, struct tm *tm); #endif diff --git a/ext/standard/dir.c b/ext/standard/dir.c index 7c9012cb6b198..8f2ddf742b679 100644 --- a/ext/standard/dir.c +++ b/ext/standard/dir.c @@ -25,7 +25,7 @@ #include "basic_functions.h" #include "dir_arginfo.h" -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif @@ -268,7 +268,7 @@ PHP_FUNCTION(closedir) } /* }}} */ -#if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC +#if defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC) /* {{{ Change root directory */ PHP_FUNCTION(chroot) { @@ -342,9 +342,9 @@ PHP_FUNCTION(getcwd) ZEND_PARSE_PARAMETERS_NONE(); -#if HAVE_GETCWD +#ifdef HAVE_GETCWD ret = VCWD_GETCWD(path, MAXPATHLEN); -#elif HAVE_GETWD +#elif defined(HAVE_GETWD) ret = VCWD_GETWD(path); #endif diff --git a/ext/standard/dl.c b/ext/standard/dl.c index 77d296ced77a9..15755962f410f 100644 --- a/ext/standard/dl.c +++ b/ext/standard/dl.c @@ -24,7 +24,7 @@ #include "SAPI.h" -#if defined(HAVE_LIBDL) +#ifdef HAVE_LIBDL #include #include #include @@ -65,7 +65,7 @@ PHPAPI PHP_FUNCTION(dl) } /* }}} */ -#if defined(HAVE_LIBDL) +#ifdef HAVE_LIBDL /* {{{ php_load_shlib */ PHPAPI void *php_load_shlib(const char *path, char **errp) diff --git a/ext/standard/dns.c b/ext/standard/dns.c index 6d22e644a8eff..01d97ce0c4e7b 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -20,7 +20,7 @@ #include "php.h" #include "php_network.h" -#if HAVE_SYS_SOCKET_H +#ifdef HAVE_SYS_SOCKET_H #include #endif @@ -31,7 +31,7 @@ # include #else #include -#if HAVE_ARPA_INET_H +#ifdef HAVE_ARPA_INET_H #include #endif #include @@ -39,13 +39,13 @@ #undef STATUS #undef T_UNSPEC #endif -#if HAVE_ARPA_NAMESER_H +#ifdef HAVE_ARPA_NAMESER_H #ifdef DARWIN # define BIND_8_COMPAT 1 #endif #include #endif -#if HAVE_RESOLV_H +#ifdef HAVE_RESOLV_H #include #if defined(__HAIKU__) extern void __res_ndestroy(res_state statp); @@ -157,7 +157,7 @@ PHP_FUNCTION(gethostbyaddr) hostname = php_gethostbyaddr(addr); if (hostname == NULL) { -#if HAVE_IPV6 && HAVE_INET_PTON +#if defined(HAVE_IPV6) && defined(HAVE_INET_PTON) php_error_docref(NULL, E_WARNING, "Address is not a valid IPv4 or IPv6 address"); #else php_error_docref(NULL, E_WARNING, "Address is not in a.b.c.d form"); @@ -172,7 +172,7 @@ PHP_FUNCTION(gethostbyaddr) /* {{{ php_gethostbyaddr */ static zend_string *php_gethostbyaddr(char *ip) { -#if HAVE_IPV6 && HAVE_INET_PTON +#if defined(HAVE_IPV6) && defined(HAVE_INET_PTON) struct sockaddr_in sa4; struct sockaddr_in6 sa6; char out[NI_MAXHOST]; @@ -316,7 +316,7 @@ static zend_string *php_gethostbyname(char *name) } /* }}} */ -#if HAVE_FULL_DNS_FUNCS || defined(PHP_WIN32) +#if defined(HAVE_FULL_DNS_FUNCS) || defined(PHP_WIN32) # define PHP_DNS_NUM_TYPES 13 /* Number of DNS Types Supported by PHP currently */ # define PHP_DNS_A 0x00000001 @@ -337,7 +337,7 @@ static zend_string *php_gethostbyname(char *name) #endif /* HAVE_FULL_DNS_FUNCS || defined(PHP_WIN32) */ /* Note: These functions are defined in ext/standard/dns_win32.c for Windows! */ -#if !defined(PHP_WIN32) && HAVE_DNS_SEARCH_FUNC +#if !defined(PHP_WIN32) && defined(HAVE_DNS_SEARCH_FUNC) #ifndef HFIXEDSZ #define HFIXEDSZ 12 /* fixed data in header */ @@ -454,7 +454,7 @@ PHP_FUNCTION(dns_check_record) } /* }}} */ -#if HAVE_FULL_DNS_FUNCS +#ifdef HAVE_FULL_DNS_FUNCS #define CHECKCP(n) do { \ if (cp + n > end) { \ @@ -1162,7 +1162,7 @@ PHP_FUNCTION(dns_get_mx) #endif /* HAVE_FULL_DNS_FUNCS */ #endif /* !defined(PHP_WIN32) && HAVE_DNS_SEARCH_FUNC */ -#if HAVE_FULL_DNS_FUNCS && !defined(PHP_WIN32) +#if defined(HAVE_FULL_DNS_FUNCS) && !defined(PHP_WIN32) PHP_MINIT_FUNCTION(dns) { REGISTER_LONG_CONSTANT("DNS_A", PHP_DNS_A, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("DNS_NS", PHP_DNS_NS, CONST_CS | CONST_PERSISTENT); diff --git a/ext/standard/exec.c b/ext/standard/exec.c index 1831b8eaa54d7..1b1b0ab9e9ce1 100644 --- a/ext/standard/exec.c +++ b/ext/standard/exec.c @@ -26,23 +26,23 @@ #include "php_globals.h" #include "SAPI.h" -#if HAVE_SYS_WAIT_H +#ifdef HAVE_SYS_WAIT_H #include #endif #include -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H #include #endif -#if HAVE_SYS_STAT_H +#ifdef HAVE_SYS_STAT_H #include #endif -#if HAVE_FCNTL_H +#ifdef HAVE_FCNTL_H #include #endif -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif diff --git a/ext/standard/file.c b/ext/standard/file.c index 4c31ee0eae661..628b8dc8f0fe1 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -65,7 +65,7 @@ #include "php_string.h" #include "file.h" -#if HAVE_PWD_H +#ifdef HAVE_PWD_H # ifdef PHP_WIN32 # include "win32/pwd.h" # else @@ -246,7 +246,7 @@ PHP_MINIT_FUNCTION(file) REGISTER_LONG_CONSTANT("STREAM_PF_INET", AF_INET, CONST_CS|CONST_PERSISTENT); #endif -#if HAVE_IPV6 +#ifdef HAVE_IPV6 # ifdef PF_INET6 REGISTER_LONG_CONSTANT("STREAM_PF_INET6", PF_INET6, CONST_CS|CONST_PERSISTENT); # elif defined(AF_INET6) diff --git a/ext/standard/file.h b/ext/standard/file.h index be7e3cf8e6d02..7fe9c4738faa6 100644 --- a/ext/standard/file.h +++ b/ext/standard/file.h @@ -96,7 +96,7 @@ typedef struct { HashTable *stream_filters; /* per-request copy of stream_filters_hash */ HashTable *wrapper_errors; /* key: wrapper address; value: linked list of char* */ int pclose_wait; -#if defined(HAVE_GETHOSTBYNAME_R) +#ifdef HAVE_GETHOSTBYNAME_R struct hostent tmp_host_info; char *tmp_host_buf; size_t tmp_host_buf_len; diff --git a/ext/standard/filestat.c b/ext/standard/filestat.c index 2937f6a6da18a..a11ecf09f8f13 100644 --- a/ext/standard/filestat.c +++ b/ext/standard/filestat.c @@ -25,15 +25,15 @@ #include #include -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H # include #endif -#if HAVE_SYS_PARAM_H +#ifdef HAVE_SYS_PARAM_H # include #endif -#if HAVE_SYS_VFS_H +#ifdef HAVE_SYS_VFS_H # include #endif @@ -60,7 +60,7 @@ # include #endif -#if HAVE_PWD_H +#ifdef HAVE_PWD_H # ifdef PHP_WIN32 # include "win32/pwd.h" # else @@ -72,7 +72,7 @@ # include #endif -#if HAVE_UTIME +#ifdef HAVE_UTIME # ifdef PHP_WIN32 # include # else @@ -373,7 +373,7 @@ static void php_do_chgrp(INTERNAL_FUNCTION_PARAMETERS, int do_lchgrp) /* {{{ */ RETURN_FALSE; } } else { -#if !defined(WINDOWS) +#ifndef WINDOWS /* On Windows, we expect regular chgrp to fail silently by default */ php_error_docref(NULL, E_WARNING, "Cannot call chgrp() for a non-standard stream"); #endif @@ -381,7 +381,7 @@ static void php_do_chgrp(INTERNAL_FUNCTION_PARAMETERS, int do_lchgrp) /* {{{ */ } } -#if defined(WINDOWS) +#ifdef WINDOWS /* We have no native chgrp on Windows, nothing left to do if stream doesn't have own implementation */ RETURN_FALSE; #else @@ -400,7 +400,7 @@ static void php_do_chgrp(INTERNAL_FUNCTION_PARAMETERS, int do_lchgrp) /* {{{ */ } if (do_lchgrp) { -#if HAVE_LCHOWN +#ifdef HAVE_LCHOWN ret = VCWD_LCHOWN(filename, -1, gid); #endif } else { @@ -423,7 +423,7 @@ PHP_FUNCTION(chgrp) /* }}} */ /* {{{ Change symlink group */ -#if HAVE_LCHOWN +#ifdef HAVE_LCHOWN PHP_FUNCTION(lchgrp) { php_do_chgrp(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1); @@ -499,7 +499,7 @@ static void php_do_chown(INTERNAL_FUNCTION_PARAMETERS, int do_lchown) /* {{{ */ RETURN_FALSE; } } else { -#if !defined(WINDOWS) +#ifndef WINDOWS /* On Windows, we expect regular chown to fail silently by default */ php_error_docref(NULL, E_WARNING, "Cannot call chown() for a non-standard stream"); #endif @@ -507,7 +507,7 @@ static void php_do_chown(INTERNAL_FUNCTION_PARAMETERS, int do_lchown) /* {{{ */ } } -#if defined(WINDOWS) +#ifdef WINDOWS /* We have no native chown on Windows, nothing left to do if stream doesn't have own implementation */ RETURN_FALSE; #else @@ -527,7 +527,7 @@ static void php_do_chown(INTERNAL_FUNCTION_PARAMETERS, int do_lchown) /* {{{ */ } if (do_lchown) { -#if HAVE_LCHOWN +#ifdef HAVE_LCHOWN ret = VCWD_LCHOWN(filename, uid, -1); #endif } else { @@ -551,7 +551,7 @@ PHP_FUNCTION(chown) /* }}} */ /* {{{ Change file owner */ -#if HAVE_LCHOWN +#ifdef HAVE_LCHOWN PHP_FUNCTION(lchown) { RETVAL_TRUE; @@ -605,7 +605,7 @@ PHP_FUNCTION(chmod) } /* }}} */ -#if HAVE_UTIME +#ifdef HAVE_UTIME /* {{{ Set modification time of file */ PHP_FUNCTION(touch) { diff --git a/ext/standard/flock_compat.c b/ext/standard/flock_compat.c index 6b4fa3dcedb0a..8622ec1aeca98 100644 --- a/ext/standard/flock_compat.c +++ b/ext/standard/flock_compat.c @@ -26,7 +26,7 @@ PHPAPI int flock(int fd, int operation) #endif /* !defined(HAVE_FLOCK) */ PHPAPI int php_flock(int fd, int operation) -#if HAVE_STRUCT_FLOCK /* {{{ */ +#ifdef HAVE_STRUCT_FLOCK /* {{{ */ { struct flock flck; int ret; @@ -151,7 +151,7 @@ PHPAPI int php_flock(int fd, int operation) #endif #ifndef PHP_WIN32 -#if !(HAVE_INET_ATON) +#ifndef HAVE_INET_ATON /* {{{ inet_aton * Check whether "cp" is a valid ascii representation * of an Internet address and convert to a binary address. diff --git a/ext/standard/flock_compat.h b/ext/standard/flock_compat.h index 983b36a8457fd..a55c3af9ca8f7 100644 --- a/ext/standard/flock_compat.h +++ b/ext/standard/flock_compat.h @@ -17,7 +17,7 @@ #ifndef FLOCK_COMPAT_H #define FLOCK_COMPAT_H -#if HAVE_STRUCT_FLOCK +#ifdef HAVE_STRUCT_FLOCK #include #include #include @@ -57,17 +57,16 @@ PHPAPI int flock(int fd, int operation); # define ftruncate(a, b) chsize(a, b) #endif /* defined(PHP_WIN32) */ -#if !HAVE_INET_ATON -#if HAVE_NETINET_IN_H -#include -#endif -#if HAVE_ARPA_INET_H -#include -#endif - -#ifndef PHP_WIN32 +#ifndef HAVE_INET_ATON +# ifdef HAVE_NETINET_IN_H +# include +# endif +# ifdef HAVE_ARPA_INET_H +# include +# endif +# ifndef PHP_WIN32 extern int inet_aton(const char *, struct in_addr *); -#endif +# endif #endif #endif /* FLOCK_COMPAT_H */ diff --git a/ext/standard/ftok.c b/ext/standard/ftok.c index 171e54f499e87..1a046b3de6979 100644 --- a/ext/standard/ftok.c +++ b/ext/standard/ftok.c @@ -26,7 +26,7 @@ #include "win32/ipc.h" #endif -#if HAVE_FTOK +#ifdef HAVE_FTOK /* {{{ Convert a pathname and a project identifier to a System V IPC key */ PHP_FUNCTION(ftok) { diff --git a/ext/standard/ftp_fopen_wrapper.c b/ext/standard/ftp_fopen_wrapper.c index f20f4245bd469..0be729a59fddb 100644 --- a/ext/standard/ftp_fopen_wrapper.c +++ b/ext/standard/ftp_fopen_wrapper.c @@ -40,7 +40,7 @@ #include "php_standard.h" #include -#if HAVE_SYS_SOCKET_H +#ifdef HAVE_SYS_SOCKET_H #include #endif @@ -49,7 +49,7 @@ #else #include #include -#if HAVE_ARPA_INET_H +#ifdef HAVE_ARPA_INET_H #include #endif #endif diff --git a/ext/standard/hrtime.c b/ext/standard/hrtime.c index 5d72e021c12c6..7dca135c920aa 100644 --- a/ext/standard/hrtime.c +++ b/ext/standard/hrtime.c @@ -134,7 +134,7 @@ static zend_always_inline php_hrtime_t _timer_current(void) #endif }/*}}}*/ -#if ZEND_ENABLE_ZVAL_LONG64 +#ifdef ZEND_ENABLE_ZVAL_LONG64 #define PHP_RETURN_HRTIME(t) RETURN_LONG((zend_long)t) #else #ifdef _WIN32 diff --git a/ext/standard/html.c b/ext/standard/html.c index 779fe549599bf..d3736daf3bd61 100644 --- a/ext/standard/html.c +++ b/ext/standard/html.c @@ -44,7 +44,7 @@ #include "php_string.h" #include "SAPI.h" #include -#if HAVE_LANGINFO_H +#ifdef HAVE_LANGINFO_H #include #endif diff --git a/ext/standard/http_fopen_wrapper.c b/ext/standard/http_fopen_wrapper.c index b5132d9e005a3..099a5241ab58e 100644 --- a/ext/standard/http_fopen_wrapper.c +++ b/ext/standard/http_fopen_wrapper.c @@ -43,7 +43,7 @@ #include "php_standard.h" #include -#if HAVE_SYS_SOCKET_H +#ifdef HAVE_SYS_SOCKET_H #include #endif @@ -52,7 +52,7 @@ #else #include #include -#if HAVE_ARPA_INET_H +#ifdef HAVE_ARPA_INET_H #include #endif #endif diff --git a/ext/standard/image.c b/ext/standard/image.c index a614521ae1091..831cd8a28bc1f 100644 --- a/ext/standard/image.c +++ b/ext/standard/image.c @@ -17,18 +17,18 @@ #include "php.h" #include -#if HAVE_FCNTL_H +#ifdef HAVE_FCNTL_H #include #endif #include "fopen_wrappers.h" #include "ext/standard/fsock.h" #include "libavifinfo/avifinfo.h" -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif #include "php_image.h" -#if HAVE_ZLIB && !defined(COMPILE_DL_ZLIB) +#if defined(HAVE_ZLIB) && !defined(COMPILE_DL_ZLIB) #include "zlib.h" #endif @@ -80,7 +80,7 @@ PHP_MINIT_FUNCTION(imagetypes) REGISTER_LONG_CONSTANT("IMAGETYPE_JP2", IMAGE_FILETYPE_JP2, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("IMAGETYPE_JPX", IMAGE_FILETYPE_JPX, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("IMAGETYPE_JB2", IMAGE_FILETYPE_JB2, CONST_CS | CONST_PERSISTENT); -#if HAVE_ZLIB && !defined(COMPILE_DL_ZLIB) +#if defined(HAVE_ZLIB) && !defined(COMPILE_DL_ZLIB) REGISTER_LONG_CONSTANT("IMAGETYPE_SWC", IMAGE_FILETYPE_SWC, CONST_CS | CONST_PERSISTENT); #endif REGISTER_LONG_CONSTANT("IMAGETYPE_IFF", IMAGE_FILETYPE_IFF, CONST_CS | CONST_PERSISTENT); @@ -188,7 +188,7 @@ static unsigned long int php_swf_get_bits (unsigned char* buffer, unsigned int p } /* }}} */ -#if HAVE_ZLIB && !defined(COMPILE_DL_ZLIB) +#if defined(HAVE_ZLIB) && !defined(COMPILE_DL_ZLIB) /* {{{ php_handle_swc */ static struct gfxinfo *php_handle_swc(php_stream * stream) { @@ -619,7 +619,7 @@ static struct gfxinfo *php_handle_jpc(php_stream * stream) result->width = php_read4(stream); /* Xsiz */ result->height = php_read4(stream); /* Ysiz */ -#if MBO_0 +#ifdef MBO_0 php_read4(stream); /* XOsiz */ php_read4(stream); /* YOsiz */ php_read4(stream); /* XTsiz */ @@ -1486,7 +1486,7 @@ static void php_getimagesize_from_stream(php_stream *stream, char *input, zval * result = php_handle_swf(stream); break; case IMAGE_FILETYPE_SWC: -#if HAVE_ZLIB && !defined(COMPILE_DL_ZLIB) +#if defined(HAVE_ZLIB) && !defined(COMPILE_DL_ZLIB) result = php_handle_swc(stream); #else php_error_docref(NULL, E_NOTICE, "The image is a compressed SWF file, but you do not have a static version of the zlib extension enabled"); diff --git a/ext/standard/info.c b/ext/standard/info.c index 5ac6ccb00ee96..acd1a1b36cfce 100644 --- a/ext/standard/info.c +++ b/ext/standard/info.c @@ -893,13 +893,13 @@ PHPAPI ZEND_COLD void php_print_info(int flag) efree(descr); } -#if HAVE_IPV6 +#ifdef HAVE_IPV6 php_info_print_table_row(2, "IPv6 Support", "enabled" ); #else php_info_print_table_row(2, "IPv6 Support", "disabled" ); #endif -#if HAVE_DTRACE +#ifdef HAVE_DTRACE php_info_print_table_row(2, "DTrace Support", (zend_dtrace_enabled ? "enabled" : "available, disabled")); #else php_info_print_table_row(2, "DTrace Support", "disabled" ); diff --git a/ext/standard/lcg.c b/ext/standard/lcg.c index 9030b360ae85e..397844844e345 100644 --- a/ext/standard/lcg.c +++ b/ext/standard/lcg.c @@ -17,7 +17,7 @@ #include "php.h" #include "php_lcg.h" -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif diff --git a/ext/standard/link.c b/ext/standard/link.c index eae0929af0037..2f29b5bcc0288 100644 --- a/ext/standard/link.c +++ b/ext/standard/link.c @@ -25,14 +25,14 @@ #endif #include -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif #ifndef PHP_WIN32 #include #endif #include -#if HAVE_PWD_H +#ifdef HAVE_PWD_H #ifdef PHP_WIN32 #include "win32/pwd.h" #else diff --git a/ext/standard/mail.c b/ext/standard/mail.c index 003fad3ea18c5..55790e6100fce 100644 --- a/ext/standard/mail.c +++ b/ext/standard/mail.c @@ -25,15 +25,15 @@ #include "ext/date/php_date.h" #include "zend_smart_str.h" -#if HAVE_SYSEXITS_H -#include +#ifdef HAVE_SYSEXITS_H +# include #endif -#if HAVE_SYS_SYSEXITS_H -#include +#ifdef HAVE_SYS_SYSEXITS_H +# include #endif #if PHP_SIGCHILD -#include +# include #endif #include "php_syslog.h" @@ -43,7 +43,7 @@ #include "exec.h" #ifdef PHP_WIN32 -#include "win32/sendmail.h" +# include "win32/sendmail.h" #endif #define SKIP_LONG_HEADER_SEP(str, pos) \ diff --git a/ext/standard/net.c b/ext/standard/net.c index f8e934d5393cc..b22f304c8eb33 100644 --- a/ext/standard/net.c +++ b/ext/standard/net.c @@ -17,15 +17,15 @@ #include "php.h" #include "php_network.h" -#if HAVE_ARPA_INET_H +#ifdef HAVE_ARPA_INET_H # include #endif -#if HAVE_NET_IF_H +#ifdef HAVE_NET_IF_H # include #endif -#if HAVE_GETIFADDRS +#ifdef HAVE_GETIFADDRS # include #elif defined(__PASE__) /* IBM i implements getifaddrs, but under its own name */ @@ -53,7 +53,7 @@ PHPAPI zend_string* php_inet_ntop(const struct sockaddr *addr) { if (!addr) { return NULL; } /* Prefer inet_ntop() as it's more task-specific and doesn't have to be demangled */ -#if HAVE_INET_NTOP +#ifdef HAVE_INET_NTOP switch (addr->sa_family) { #ifdef AF_INET6 case AF_INET6: { @@ -102,7 +102,7 @@ PHPAPI zend_string* php_inet_ntop(const struct sockaddr *addr) { return NULL; } -#if defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__) +#if defined(PHP_WIN32) || defined(HAVE_GETIFADDRS) || defined(__PASE__) static void iface_append_unicast(zval *unicast, zend_long flags, struct sockaddr *addr, struct sockaddr *netmask, struct sockaddr *broadcast, struct sockaddr *ptp) { diff --git a/ext/standard/pack.c b/ext/standard/pack.c index 8736d291fb246..a58925219482e 100644 --- a/ext/standard/pack.c +++ b/ext/standard/pack.c @@ -31,7 +31,7 @@ #include "ext/standard/head.h" #include "php_string.h" #include "pack.h" -#if HAVE_PWD_H +#ifdef HAVE_PWD_H #ifdef PHP_WIN32 #include "win32/pwd.h" #else @@ -39,7 +39,7 @@ #endif #endif #include "fsock.h" -#if HAVE_NETINET_IN_H +#ifdef HAVE_NETINET_IN_H #include #endif diff --git a/ext/standard/pageinfo.c b/ext/standard/pageinfo.c index 06867fbda5ab7..8e15d2b06c35e 100644 --- a/ext/standard/pageinfo.c +++ b/ext/standard/pageinfo.c @@ -20,7 +20,7 @@ #include #include -#if HAVE_PWD_H +#ifdef HAVE_PWD_H #ifdef PHP_WIN32 #include "win32/pwd.h" #else @@ -36,7 +36,7 @@ #define getgid() 1 #define getuid() 1 #endif -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif #include diff --git a/ext/standard/password.c b/ext/standard/password.c index 98b27ff34bd0c..96b74aa39554f 100644 --- a/ext/standard/password.c +++ b/ext/standard/password.c @@ -27,7 +27,7 @@ #include "zend_interfaces.h" #include "info.h" #include "php_random.h" -#if HAVE_ARGON2LIB +#ifdef HAVE_ARGON2LIB #include "argon2.h" #endif @@ -231,7 +231,7 @@ const php_password_algo php_password_algo_bcrypt = { }; -#if HAVE_ARGON2LIB +#ifdef HAVE_ARGON2LIB /* argon2i/argon2id shared implementation */ static int extract_argon2_parameters(const zend_string *hash, @@ -427,7 +427,7 @@ PHP_MINIT_FUNCTION(password) /* {{{ */ } REGISTER_STRING_CONSTANT("PASSWORD_BCRYPT", "2y", CONST_CS | CONST_PERSISTENT); -#if HAVE_ARGON2LIB +#ifdef HAVE_ARGON2LIB if (FAILURE == php_password_algo_register("argon2i", &php_password_algo_argon2i)) { return FAILURE; } @@ -440,7 +440,7 @@ PHP_MINIT_FUNCTION(password) /* {{{ */ #endif REGISTER_LONG_CONSTANT("PASSWORD_BCRYPT_DEFAULT_COST", PHP_PASSWORD_BCRYPT_COST, CONST_CS | CONST_PERSISTENT); -#if HAVE_ARGON2LIB +#ifdef HAVE_ARGON2LIB REGISTER_LONG_CONSTANT("PASSWORD_ARGON2_DEFAULT_MEMORY_COST", PHP_PASSWORD_ARGON2_MEMORY_COST, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PASSWORD_ARGON2_DEFAULT_TIME_COST", PHP_PASSWORD_ARGON2_TIME_COST, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PASSWORD_ARGON2_DEFAULT_THREADS", PHP_PASSWORD_ARGON2_THREADS, CONST_CS | CONST_PERSISTENT); @@ -495,7 +495,7 @@ static const php_password_algo* php_password_algo_find_zval(zend_string *arg_str switch (arg_long) { case 0: return php_password_algo_default(); case 1: return &php_password_algo_bcrypt; -#if HAVE_ARGON2LIB +#ifdef HAVE_ARGON2LIB case 2: return &php_password_algo_argon2i; case 3: return &php_password_algo_argon2id; #else diff --git a/ext/standard/php_dns.h b/ext/standard/php_dns.h index 0d56633530bd2..53fbc76514f53 100644 --- a/ext/standard/php_dns.h +++ b/ext/standard/php_dns.h @@ -29,7 +29,7 @@ #elif defined(HAVE_RES_NSEARCH) #define php_dns_search(res, dname, class, type, answer, anslen) \ res_nsearch(res, dname, class, type, answer, anslen); -#if HAVE_RES_NDESTROY +#ifdef HAVE_RES_NDESTROY #define php_dns_free_handle(res) \ res_ndestroy(res); \ php_dns_free_res(res) @@ -52,12 +52,12 @@ #define HAVE_DNS_SEARCH_FUNC 1 #endif -#if HAVE_DNS_SEARCH_FUNC && HAVE_DN_EXPAND && HAVE_DN_SKIPNAME +#if defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_DN_EXPAND) && defined(HAVE_DN_SKIPNAME) #define HAVE_FULL_DNS_FUNCS 1 #endif -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC -# if defined(PHP_WIN32) || HAVE_FULL_DNS_FUNCS +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +# if defined(PHP_WIN32) || defined(HAVE_FULL_DNS_FUNCS) PHP_MINIT_FUNCTION(dns); # endif #endif /* defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC */ diff --git a/ext/standard/php_fopen_wrapper.c b/ext/standard/php_fopen_wrapper.c index 4287045511e86..0353c8efae674 100644 --- a/ext/standard/php_fopen_wrapper.c +++ b/ext/standard/php_fopen_wrapper.c @@ -18,8 +18,8 @@ #include #include -#if HAVE_UNISTD_H -#include +#ifdef HAVE_UNISTD_H +# include #endif #include "php.h" @@ -317,7 +317,7 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, const char *pa return NULL; } -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H dtablesize = getdtablesize(); #else dtablesize = INT_MAX; diff --git a/ext/standard/php_password.h b/ext/standard/php_password.h index 600086cc5a2d7..50f330d3d6ce8 100644 --- a/ext/standard/php_password.h +++ b/ext/standard/php_password.h @@ -24,7 +24,7 @@ PHP_MSHUTDOWN_FUNCTION(password); #define PHP_PASSWORD_DEFAULT PHP_PASSWORD_BCRYPT #define PHP_PASSWORD_BCRYPT_COST 10 -#if HAVE_ARGON2LIB +#ifdef HAVE_ARGON2LIB /** * When updating these values, synchronize ext/sodium/sodium_pwhash.c values. * Note that libargon expresses memlimit in KB, while libsoidum uses bytes. @@ -44,7 +44,7 @@ typedef struct _php_password_algo { } php_password_algo; extern const php_password_algo php_password_algo_bcrypt; -#if HAVE_ARGON2LIB +#ifdef HAVE_ARGON2LIB extern const php_password_algo php_password_algo_argon2i; extern const php_password_algo php_password_algo_argon2id; #endif diff --git a/ext/standard/php_string.h b/ext/standard/php_string.h index 0f31ff1e42827..d0c40817fa33f 100644 --- a/ext/standard/php_string.h +++ b/ext/standard/php_string.h @@ -18,14 +18,14 @@ #ifndef PHP_STRING_H #define PHP_STRING_H -#if defined(ZTS) +#ifdef ZTS PHP_MINIT_FUNCTION(localeconv); PHP_MSHUTDOWN_FUNCTION(localeconv); #endif -#if HAVE_NL_LANGINFO +#ifdef HAVE_NL_LANGINFO PHP_MINIT_FUNCTION(nl_langinfo); #endif -#if ZEND_INTRIN_SSE4_2_FUNC_PTR +#ifdef ZEND_INTRIN_SSE4_2_FUNC_PTR PHP_MINIT_FUNCTION(string_intrin); #endif @@ -59,7 +59,7 @@ PHPAPI void php_explode(const zend_string *delim, zend_string *str, zval *return PHPAPI size_t php_strspn(const char *s1, const char *s2, const char *s1_end, const char *s2_end); PHPAPI size_t php_strcspn(const char *s1, const char *s2, const char *s1_end, const char *s2_end); -#if defined(_REENTRANT) +#ifdef _REENTRANT # ifdef PHP_WIN32 # include # endif diff --git a/ext/standard/proc_open.c b/ext/standard/proc_open.c index 28420b4f803aa..53ec6faa1019e 100644 --- a/ext/standard/proc_open.c +++ b/ext/standard/proc_open.c @@ -28,11 +28,11 @@ #include "main/php_network.h" #include "zend_smart_str.h" -#if HAVE_SYS_WAIT_H +#ifdef HAVE_SYS_WAIT_H #include #endif -#if HAVE_FCNTL_H +#ifdef HAVE_FCNTL_H #include #endif @@ -42,8 +42,8 @@ * around the alternate code. */ #ifdef PHP_CAN_SUPPORT_PROC_OPEN -#if HAVE_OPENPTY -# if HAVE_PTY_H +#ifdef HAVE_OPENPTY +# ifdef HAVE_PTY_H # include # elif defined(__FreeBSD__) /* FreeBSD defines `openpty` in */ @@ -680,7 +680,7 @@ static zend_result set_proc_descriptor_to_blackhole(descriptorspec_item *desc) static zend_result set_proc_descriptor_to_pty(descriptorspec_item *desc, int *master_fd, int *slave_fd) { -#if HAVE_OPENPTY +#ifdef HAVE_OPENPTY /* All FDs set to PTY in the child process will go to the slave end of the same PTY. * Likewise, all the corresponding entries in `$pipes` in the parent will all go to the master * end of the same PTY. @@ -1318,7 +1318,7 @@ PHP_FUNCTION(proc_open) #else efree_argv(argv); #endif -#if HAVE_OPENPTY +#ifdef HAVE_OPENPTY if (pty_master_fd != -1) { close(pty_master_fd); } diff --git a/ext/standard/random.c b/ext/standard/random.c index d6140ffd2ae25..bea2a474d4408 100644 --- a/ext/standard/random.c +++ b/ext/standard/random.c @@ -147,7 +147,7 @@ PHPAPI int php_random_bytes(void *bytes, size_t size, bool should_throw) struct stat st; if (fd < 0) { -#if HAVE_DEV_URANDOM +#ifdef HAVE_DEV_URANDOM fd = open("/dev/urandom", O_RDONLY); #endif if (fd < 0) { diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index 419b49e586f71..49daae56b5ea6 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -26,7 +26,7 @@ #include "streamsfuncs.h" #include "php_network.h" #include "php_string.h" -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif @@ -46,7 +46,7 @@ static php_stream_context *decode_context_param(zval *contextresource); /* Streams based network functions */ -#if HAVE_SOCKETPAIR +#ifdef HAVE_SOCKETPAIR /* {{{ Creates a pair of connected, indistinguishable socket streams */ PHP_FUNCTION(stream_socket_pair) { @@ -1343,7 +1343,7 @@ PHP_FUNCTION(stream_set_blocking) /* }}} */ /* {{{ Set timeout on stream read to seconds + microseonds */ -#if HAVE_SYS_TIME_H || defined(PHP_WIN32) +#if defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) PHP_FUNCTION(stream_set_timeout) { zval *socket; diff --git a/ext/standard/string.c b/ext/standard/string.c index 00d422fb18564..59f633fd18587 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -320,7 +320,7 @@ PHP_FUNCTION(strcspn) /* }}} */ /* {{{ PHP_MINIT_FUNCTION(nl_langinfo) */ -#if HAVE_NL_LANGINFO +#ifdef HAVE_NL_LANGINFO PHP_MINIT_FUNCTION(nl_langinfo) { #define REGISTER_NL_LANGINFO_CONSTANT(x) REGISTER_LONG_CONSTANT(#x, x, CONST_CS | CONST_PERSISTENT) @@ -1429,7 +1429,7 @@ PHPAPI zend_string *php_basename(const char *s, size_t len, const char *suffix, /* Strip trailing slashes */ while (basename_end >= s -#if defined(PHP_WIN32) +#ifdef PHP_WIN32 && (*basename_end == '/' || *basename_end == '\\' || (*basename_end == ':' @@ -1447,7 +1447,7 @@ PHPAPI zend_string *php_basename(const char *s, size_t len, const char *suffix, basename_start = basename_end; basename_end++; while (basename_start > s -#if defined(PHP_WIN32) +#ifdef PHP_WIN32 && *(basename_start-1) != '/' && *(basename_start-1) != '\\') { @@ -1474,7 +1474,7 @@ PHPAPI zend_string *php_basename(const char *s, size_t len, const char *suffix, case 0: goto quit_loop; case 1: -#if defined(PHP_WIN32) +#ifdef PHP_WIN32 if (*s == '/' || *s == '\\') { #else if (*s == '/') { @@ -1483,7 +1483,7 @@ PHPAPI zend_string *php_basename(const char *s, size_t len, const char *suffix, state = 0; basename_end = s; } -#if defined(PHP_WIN32) +#ifdef PHP_WIN32 /* Catch relative paths in c:file.txt style. They're not to confuse with the NTFS streams. This part ensures also, that no drive letter traversing happens. */ @@ -3344,7 +3344,7 @@ PHP_FUNCTION(strtr) /* }}} */ /* {{{ Reverse a string */ -#if ZEND_INTRIN_SSSE3_NATIVE +#ifdef ZEND_INTRIN_SSSE3_NATIVE #include #elif defined(__aarch64__) #include @@ -3366,7 +3366,7 @@ PHP_FUNCTION(strrev) s = ZSTR_VAL(str); e = s + ZSTR_LEN(str); --e; -#if ZEND_INTRIN_SSSE3_NATIVE +#ifdef ZEND_INTRIN_SSSE3_NATIVE if (e - s > 15) { const __m128i map = _mm_set_epi8( 0, 1, 2, 3, @@ -3664,10 +3664,10 @@ PHPAPI zend_string *php_addcslashes(zend_string *str, const char *what, size_t w /* {{{ php_addslashes */ -#if ZEND_INTRIN_SSE4_2_NATIVE +#ifdef ZEND_INTRIN_SSE4_2_NATIVE # include # include "Zend/zend_bitset.h" -#elif ZEND_INTRIN_SSE4_2_RESOLVER +#elif defined(ZEND_INTRIN_SSE4_2_RESOLVER) # include # include "Zend/zend_bitset.h" # include "Zend/zend_cpuinfo.h" @@ -3678,7 +3678,7 @@ zend_string *php_addslashes_default(zend_string *str); ZEND_INTRIN_SSE4_2_FUNC_DECL(void php_stripslashes_sse42(zend_string *str)); void php_stripslashes_default(zend_string *str); -# if ZEND_INTRIN_SSE4_2_FUNC_PROTO +# ifdef ZEND_INTRIN_SSE4_2_FUNC_PROTO PHPAPI zend_string *php_addslashes(zend_string *str) __attribute__((ifunc("resolve_addslashes"))); PHPAPI void php_stripslashes(zend_string *str) __attribute__((ifunc("resolve_stripslashes"))); @@ -3730,10 +3730,10 @@ PHP_MINIT_FUNCTION(string_intrin) # endif #endif -#if ZEND_INTRIN_SSE4_2_NATIVE || ZEND_INTRIN_SSE4_2_RESOLVER -# if ZEND_INTRIN_SSE4_2_NATIVE +#if defined(ZEND_INTRIN_SSE4_2_NATIVE) || defined(ZEND_INTRIN_SSE4_2_RESOLVER) +# ifdef ZEND_INTRIN_SSE4_2_NATIVE PHPAPI zend_string *php_addslashes(zend_string *str) /* {{{ */ -# elif ZEND_INTRIN_SSE4_2_RESOLVER +# elif defined(ZEND_INTRIN_SSE4_2_RESOLVER) zend_string *php_addslashes_sse42(zend_string *str) # endif { @@ -3910,8 +3910,8 @@ static zend_always_inline char *aarch64_add_slashes(quad_word res, const char *s } #endif /* __aarch64__ */ -#if !ZEND_INTRIN_SSE4_2_NATIVE -# if ZEND_INTRIN_SSE4_2_RESOLVER +#ifndef ZEND_INTRIN_SSE4_2_NATIVE +# ifdef ZEND_INTRIN_SSE4_2_RESOLVER zend_string *php_addslashes_default(zend_string *str) /* {{{ */ # else PHPAPI zend_string *php_addslashes(zend_string *str) @@ -4072,10 +4072,10 @@ static zend_always_inline char *php_stripslashes_impl(const char *str, char *out return out; } -#if ZEND_INTRIN_SSE4_2_NATIVE || ZEND_INTRIN_SSE4_2_RESOLVER -# if ZEND_INTRIN_SSE4_2_NATIVE +#if defined(ZEND_INTRIN_SSE4_2_NATIVE) || defined(ZEND_INTRIN_SSE4_2_RESOLVER) +# ifdef ZEND_INTRIN_SSE4_2_NATIVE PHPAPI void php_stripslashes(zend_string *str) -# elif ZEND_INTRIN_SSE4_2_RESOLVER +# elif defined(ZEND_INTRIN_SSE4_2_RESOLVER) void php_stripslashes_sse42(zend_string *str) # endif { @@ -4130,8 +4130,8 @@ void php_stripslashes_sse42(zend_string *str) } #endif -#if !ZEND_INTRIN_SSE4_2_NATIVE -# if ZEND_INTRIN_SSE4_2_RESOLVER +#ifndef ZEND_INTRIN_SSE4_2_NATIVE +# ifdef ZEND_INTRIN_SSE4_2_RESOLVER void php_stripslashes_default(zend_string *str) /* {{{ */ # else PHPAPI void php_stripslashes(zend_string *str) diff --git a/ext/standard/syslog.c b/ext/standard/syslog.c index d2cfcab9deda0..d16a3c90bb8ab 100644 --- a/ext/standard/syslog.c +++ b/ext/standard/syslog.c @@ -21,7 +21,7 @@ #include "zend_globals.h" #include -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif diff --git a/ext/standard/uniqid.c b/ext/standard/uniqid.c index 04f81deeb2d91..a28f30e969a14 100644 --- a/ext/standard/uniqid.c +++ b/ext/standard/uniqid.c @@ -17,7 +17,7 @@ #include "php.h" #include -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif diff --git a/ext/standard/url_scanner_ex.re b/ext/standard/url_scanner_ex.re index bac49206e63e8..8e5b43467fc88 100644 --- a/ext/standard/url_scanner_ex.re +++ b/ext/standard/url_scanner_ex.re @@ -333,7 +333,7 @@ enum { #define STD_PARA url_adapt_state_ex_t *ctx, char *start, char *YYCURSOR #define STD_ARGS ctx, start, xp -#if SCANNER_DEBUG +#ifdef SCANNER_DEBUG #define scdebug(x) printf x #else #define scdebug(x) From 083b64efb53a4d9621a27b95b44acbceb94a0869 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Fri, 1 Apr 2022 16:26:38 +0100 Subject: [PATCH 23/63] Add missing #endif in stubs This slipped away during the rebase of 5171cb435a69c418231acc487819ce47b52711df --- ext/standard/basic_functions.stub.php | 1 + ext/standard/basic_functions_arginfo.h | 1206 ++---------------------- 2 files changed, 95 insertions(+), 1112 deletions(-) diff --git a/ext/standard/basic_functions.stub.php b/ext/standard/basic_functions.stub.php index 9ab3d3512dadb..972963430c694 100755 --- a/ext/standard/basic_functions.stub.php +++ b/ext/standard/basic_functions.stub.php @@ -1333,6 +1333,7 @@ function chmod(string $filename, int $permissions): bool {} #ifdef HAVE_UTIME function touch(string $filename, ?int $mtime = null, ?int $atime = null): bool {} +#endif function clearstatcache(bool $clear_realpath_cache = false, string $filename = ""): void {} diff --git a/ext/standard/basic_functions_arginfo.h b/ext/standard/basic_functions_arginfo.h index 1162315157f88..b3ea9968461d4 100644 --- a/ext/standard/basic_functions_arginfo.h +++ b/ext/standard/basic_functions_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: f9668ae68c1f7d0336b974f83c2552fbf9bf898a */ + * Stub hash: e53bcb20eb22fd198019ca24ebbf10a0decde13a */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_time_limit, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0) @@ -1442,82 +1442,55 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_touch, 0, 1, _IS_BOOL, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_clearstatcache, 0, 0, IS_VOID, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, clear_realpath_cache, _IS_BOOL, 0, "false") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, filename, IS_STRING, 0, "\"\"") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_disk_total_space, 0, 1, MAY_BE_DOUBLE|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, directory, IS_STRING, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_disk_free_space arginfo_disk_total_space -#endif -#if defined(HAVE_UTIME) #define arginfo_diskfreespace arginfo_disk_total_space -#endif -#if defined(HAVE_UTIME) -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_realpath_cache_get, 0, 0, IS_ARRAY, 0) -ZEND_END_ARG_INFO() -#endif +#define arginfo_realpath_cache_get arginfo_ob_list_handlers -#if defined(HAVE_UTIME) -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_realpath_cache_size, 0, 0, IS_LONG, 0) -ZEND_END_ARG_INFO() -#endif +#define arginfo_realpath_cache_size arginfo_ob_get_level -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sprintf, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_VARIADIC_TYPE_INFO(0, values, IS_MIXED, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_printf, 0, 1, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_VARIADIC_TYPE_INFO(0, values, IS_MIXED, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_vprintf, 0, 2, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, values, IS_ARRAY, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_vsprintf, 0, 2, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, values, IS_ARRAY, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_fprintf, 0, 2, IS_LONG, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_VARIADIC_TYPE_INFO(0, values, IS_MIXED, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_vfprintf, 0, 3, IS_LONG, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, values, IS_ARRAY, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_fsockopen, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, port, IS_LONG, 0, "-1") @@ -1525,100 +1498,67 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_fsockopen, 0, 0, 1) ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, error_message, "null") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, timeout, IS_DOUBLE, 1, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_pfsockopen arginfo_fsockopen -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_http_build_query, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_MASK(0, data, MAY_BE_ARRAY|MAY_BE_OBJECT, NULL) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, numeric_prefix, IS_STRING, 0, "\"\"") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, arg_separator, IS_STRING, 1, "null") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, encoding_type, IS_LONG, 0, "PHP_QUERY_RFC1738") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_image_type_to_mime_type, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, image_type, IS_LONG, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_image_type_to_extension, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, image_type, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, include_dot, _IS_BOOL, 0, "true") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getimagesize, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, image_info, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getimagesizefromstring, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, image_info, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_phpinfo, 0, 0, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "INFO_ALL") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_phpversion, 0, 0, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, extension, IS_STRING, 1, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_phpcredits, 0, 0, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "CREDITS_ALL") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_php_sapi_name, 0, 0, MAY_BE_STRING|MAY_BE_FALSE) -ZEND_END_ARG_INFO() -#endif +#define arginfo_php_sapi_name arginfo_ob_get_flush -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_php_uname, 0, 0, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_STRING, 0, "\"a\"") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) -#define arginfo_php_ini_scanned_files arginfo_php_sapi_name -#endif +#define arginfo_php_ini_scanned_files arginfo_ob_get_flush -#if defined(HAVE_UTIME) -#define arginfo_php_ini_loaded_file arginfo_php_sapi_name -#endif +#define arginfo_php_ini_loaded_file arginfo_ob_get_flush -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_iptcembed, 0, 2, MAY_BE_STRING|MAY_BE_BOOL) ZEND_ARG_TYPE_INFO(0, iptc_data, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, spool, IS_LONG, 0, "0") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_iptcparse, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, iptc_block, IS_STRING, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_levenshtein, 0, 2, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, string1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, string2, IS_STRING, 0) @@ -1626,32 +1566,30 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_levenshtein, 0, 2, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, replacement_cost, IS_LONG, 0, "1") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, deletion_cost, IS_LONG, 0, "1") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_readlink, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_linkinfo, 0, 1, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_symlink, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, target, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, link, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) #define arginfo_link arginfo_symlink #endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mail, 0, 3, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, to, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, subject, IS_STRING, 0) @@ -1659,288 +1597,188 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mail, 0, 3, _IS_BOOL, 0) ZEND_ARG_TYPE_MASK(0, additional_headers, MAY_BE_ARRAY|MAY_BE_STRING, "[]") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, additional_params, IS_STRING, 0, "\"\"") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_abs, 0, 1, MAY_BE_LONG|MAY_BE_DOUBLE) ZEND_ARG_TYPE_MASK(0, num, MAY_BE_LONG|MAY_BE_DOUBLE, NULL) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ceil, 0, 1, IS_DOUBLE, 0) ZEND_ARG_TYPE_MASK(0, num, MAY_BE_LONG|MAY_BE_DOUBLE, NULL) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_floor arginfo_ceil -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_round, 0, 1, IS_DOUBLE, 0) ZEND_ARG_TYPE_MASK(0, num, MAY_BE_LONG|MAY_BE_DOUBLE, NULL) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, precision, IS_LONG, 0, "0") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "PHP_ROUND_HALF_UP") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sin, 0, 1, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, num, IS_DOUBLE, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_cos arginfo_sin -#endif -#if defined(HAVE_UTIME) #define arginfo_tan arginfo_sin -#endif -#if defined(HAVE_UTIME) #define arginfo_asin arginfo_sin -#endif -#if defined(HAVE_UTIME) #define arginfo_acos arginfo_sin -#endif -#if defined(HAVE_UTIME) #define arginfo_atan arginfo_sin -#endif -#if defined(HAVE_UTIME) #define arginfo_atanh arginfo_sin -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_atan2, 0, 2, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, y, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, x, IS_DOUBLE, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_sinh arginfo_sin -#endif -#if defined(HAVE_UTIME) #define arginfo_cosh arginfo_sin -#endif -#if defined(HAVE_UTIME) #define arginfo_tanh arginfo_sin -#endif -#if defined(HAVE_UTIME) #define arginfo_asinh arginfo_sin -#endif -#if defined(HAVE_UTIME) #define arginfo_acosh arginfo_sin -#endif -#if defined(HAVE_UTIME) #define arginfo_expm1 arginfo_sin -#endif -#if defined(HAVE_UTIME) #define arginfo_log1p arginfo_sin -#endif -#if defined(HAVE_UTIME) -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pi, 0, 0, IS_DOUBLE, 0) -ZEND_END_ARG_INFO() -#endif +#define arginfo_pi arginfo_lcg_value -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_is_finite, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, num, IS_DOUBLE, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_is_nan arginfo_is_finite -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_intdiv, 0, 2, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, num1, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, num2, IS_LONG, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_is_infinite arginfo_is_finite -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_pow, 0, 2, MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_OBJECT) ZEND_ARG_TYPE_INFO(0, num, IS_MIXED, 0) ZEND_ARG_TYPE_INFO(0, exponent, IS_MIXED, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_exp arginfo_sin -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_log, 0, 1, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, num, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, base, IS_DOUBLE, 0, "M_E") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_log10 arginfo_sin -#endif -#if defined(HAVE_UTIME) #define arginfo_sqrt arginfo_sin -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hypot, 0, 2, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, x, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, y, IS_DOUBLE, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_deg2rad arginfo_sin -#endif -#if defined(HAVE_UTIME) #define arginfo_rad2deg arginfo_sin -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_bindec, 0, 1, MAY_BE_LONG|MAY_BE_DOUBLE) ZEND_ARG_TYPE_INFO(0, binary_string, IS_STRING, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_hexdec, 0, 1, MAY_BE_LONG|MAY_BE_DOUBLE) ZEND_ARG_TYPE_INFO(0, hex_string, IS_STRING, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_octdec, 0, 1, MAY_BE_LONG|MAY_BE_DOUBLE) ZEND_ARG_TYPE_INFO(0, octal_string, IS_STRING, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_decbin, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, num, IS_LONG, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_decoct arginfo_decbin -#endif -#if defined(HAVE_UTIME) #define arginfo_dechex arginfo_decbin -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_base_convert, 0, 3, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, num, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, from_base, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, to_base, IS_LONG, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_number_format, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, num, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, decimals, IS_LONG, 0, "0") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, decimal_separator, IS_STRING, 1, "\".\"") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, thousands_separator, IS_STRING, 1, "\",\"") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_fmod, 0, 2, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, num1, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, num2, IS_DOUBLE, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_fdiv arginfo_fmod -#endif -#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_GETTIMEOFDAY) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_microtime, 0, 0, MAY_BE_STRING|MAY_BE_DOUBLE) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, as_float, _IS_BOOL, 0, "false") ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_GETTIMEOFDAY) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_gettimeofday, 0, 0, MAY_BE_ARRAY|MAY_BE_DOUBLE) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, as_float, _IS_BOOL, 0, "false") ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(HAVE_GETRUSAGE) +#if defined(HAVE_GETRUSAGE) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_getrusage, 0, 0, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "0") ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) #define arginfo_pack arginfo_sprintf -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_unpack, 0, 2, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, offset, IS_LONG, 0, "0") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_password_get_info, 0, 1, IS_ARRAY, 0) ZEND_ARG_TYPE_INFO(0, hash, IS_STRING, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_password_hash, 0, 2, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0) ZEND_ARG_TYPE_MASK(0, algo, MAY_BE_STRING|MAY_BE_LONG|MAY_BE_NULL, NULL) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 0, "[]") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_password_needs_rehash, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, hash, IS_STRING, 0) ZEND_ARG_TYPE_MASK(0, algo, MAY_BE_STRING|MAY_BE_LONG|MAY_BE_NULL, NULL) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 0, "[]") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_password_verify, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, hash, IS_STRING, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) -#define arginfo_password_algos arginfo_realpath_cache_get -#endif +#define arginfo_password_algos arginfo_ob_list_handlers -#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_BEGIN_ARG_INFO_EX(arginfo_proc_open, 0, 0, 3) ZEND_ARG_TYPE_MASK(0, command, MAY_BE_ARRAY|MAY_BE_STRING, NULL) ZEND_ARG_TYPE_INFO(0, descriptor_spec, IS_ARRAY, 0) @@ -1951,83 +1789,58 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_proc_open, 0, 0, 3) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_proc_close, 0, 1, IS_LONG, 0) ZEND_ARG_INFO(0, process) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_proc_terminate, 0, 1, _IS_BOOL, 0) ZEND_ARG_INFO(0, process) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, signal, IS_LONG, 0, "15") ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_proc_get_status, 0, 1, IS_ARRAY, 0) ZEND_ARG_INFO(0, process) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_quoted_printable_decode, 0, 1, IS_STRING, 0) - ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) -ZEND_END_ARG_INFO() -#endif +#define arginfo_quoted_printable_decode arginfo_base64_encode -#if defined(HAVE_UTIME) -#define arginfo_quoted_printable_encode arginfo_quoted_printable_decode -#endif +#define arginfo_quoted_printable_encode arginfo_base64_encode -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mt_srand, 0, 0, IS_VOID, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, seed, IS_LONG, 0, "0") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "MT_RAND_MT19937") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_srand arginfo_mt_srand -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_rand, 0, 0, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, min, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, max, IS_LONG, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_mt_rand arginfo_rand -#endif -#if defined(HAVE_UTIME) -#define arginfo_mt_getrandmax arginfo_realpath_cache_size -#endif +#define arginfo_mt_getrandmax arginfo_ob_get_level -#if defined(HAVE_UTIME) -#define arginfo_getrandmax arginfo_realpath_cache_size -#endif +#define arginfo_getrandmax arginfo_ob_get_level -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_random_bytes, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_random_int, 0, 2, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, min, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, max, IS_LONG, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) -#define arginfo_soundex arginfo_quoted_printable_decode -#endif +#define arginfo_soundex arginfo_base64_encode -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_select, 0, 4, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(1, read, IS_ARRAY, 1) ZEND_ARG_TYPE_INFO(1, write, IS_ARRAY, 1) @@ -2035,75 +1848,53 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_select, 0, 4, MAY_BE_LONG ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 1) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, microseconds, IS_LONG, 1, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_context_create, 0, 0, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 1, "null") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, params, IS_ARRAY, 1, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_context_set_params, 0, 2, _IS_BOOL, 0) ZEND_ARG_INFO(0, context) ZEND_ARG_TYPE_INFO(0, params, IS_ARRAY, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_context_get_params, 0, 1, IS_ARRAY, 0) ZEND_ARG_INFO(0, context) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_context_set_option, 0, 2, _IS_BOOL, 0) ZEND_ARG_INFO(0, context) ZEND_ARG_TYPE_MASK(0, wrapper_or_options, MAY_BE_ARRAY|MAY_BE_STRING, NULL) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, option_name, IS_STRING, 1, "null") ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_context_get_options, 0, 1, IS_ARRAY, 0) ZEND_ARG_INFO(0, stream_or_context) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_context_get_default, 0, 0, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 1, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_context_set_default, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, options, IS_ARRAY, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_filter_prepend, 0, 0, 2) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, filter_name, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "0") ZEND_ARG_TYPE_INFO(0, params, IS_MIXED, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_stream_filter_append arginfo_stream_filter_prepend -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_filter_remove, 0, 1, _IS_BOOL, 0) ZEND_ARG_INFO(0, stream_filter) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_client, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, address, IS_STRING, 0) ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, error_code, "null") @@ -2112,9 +1903,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_client, 0, 0, 1) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "STREAM_CLIENT_CONNECT") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, context, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_server, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, address, IS_STRING, 0) ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, error_code, "null") @@ -2122,58 +1911,47 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_server, 0, 0, 1) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "STREAM_SERVER_BIND | STREAM_SERVER_LISTEN") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, context, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_accept, 0, 0, 1) ZEND_ARG_INFO(0, socket) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, timeout, IS_DOUBLE, 1, "null") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, peer_name, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_socket_get_name, 0, 2, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_INFO(0, socket) ZEND_ARG_TYPE_INFO(0, remote, _IS_BOOL, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_socket_recvfrom, 0, 2, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_INFO(0, socket) ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "0") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, address, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_socket_sendto, 0, 2, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_INFO(0, socket) ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "0") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, address, IS_STRING, 0, "\"\"") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_socket_enable_crypto, 0, 2, MAY_BE_LONG|MAY_BE_BOOL) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, enable, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, crypto_method, IS_LONG, 1, "null") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, session_stream, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) && defined(HAVE_SHUTDOWN) +#if defined(HAVE_SHUTDOWN) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_socket_shutdown, 0, 2, _IS_BOOL, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(HAVE_SOCKETPAIR) +#if defined(HAVE_SOCKETPAIR) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_socket_pair, 0, 3, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, domain, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0) @@ -2181,107 +1959,69 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_socket_pair, 0, 3, MAY_BE ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_copy_to_stream, 0, 2, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_INFO(0, from) ZEND_ARG_INFO(0, to) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, length, IS_LONG, 1, "null") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, offset, IS_LONG, 0, "0") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_get_contents, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, length, IS_LONG, 1, "null") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, offset, IS_LONG, 0, "-1") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_supports_lock, 0, 1, _IS_BOOL, 0) - ZEND_ARG_INFO(0, stream) -ZEND_END_ARG_INFO() -#endif +#define arginfo_stream_supports_lock arginfo_rewind -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_set_write_buffer, 0, 2, IS_LONG, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, size, IS_LONG, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_set_file_buffer arginfo_stream_set_write_buffer -#endif -#if defined(HAVE_UTIME) #define arginfo_stream_set_read_buffer arginfo_stream_set_write_buffer -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_set_blocking, 0, 2, _IS_BOOL, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, enable, _IS_BOOL, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_socket_set_blocking arginfo_stream_set_blocking -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_get_meta_data, 0, 1, IS_ARRAY, 0) ZEND_ARG_INFO(0, stream) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_socket_get_status arginfo_stream_get_meta_data -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_get_line, 0, 2, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, ending, IS_STRING, 0, "\"\"") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_stream_resolve_include_path, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) - ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) -ZEND_END_ARG_INFO() -#endif +#define arginfo_stream_resolve_include_path arginfo_filetype -#if defined(HAVE_UTIME) -#define arginfo_stream_get_wrappers arginfo_realpath_cache_get -#endif +#define arginfo_stream_get_wrappers arginfo_ob_list_handlers -#if defined(HAVE_UTIME) -#define arginfo_stream_get_transports arginfo_realpath_cache_get -#endif +#define arginfo_stream_get_transports arginfo_ob_list_handlers -#if defined(HAVE_UTIME) -#define arginfo_stream_is_local arginfo_stream_supports_lock -#endif +#define arginfo_stream_is_local arginfo_rewind -#if defined(HAVE_UTIME) -#define arginfo_stream_isatty arginfo_stream_supports_lock -#endif +#define arginfo_stream_isatty arginfo_rewind -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_vt100_support, 0, 1, _IS_BOOL, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, enable, _IS_BOOL, 1, "null") ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) #define arginfo_stream_set_chunk_size arginfo_stream_set_write_buffer -#endif -#if defined(HAVE_UTIME) && defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) +#if defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_set_timeout, 0, 2, _IS_BOOL, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0) @@ -2289,265 +2029,171 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_set_timeout, 0, 2, _IS_BO ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) +#if defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) #define arginfo_socket_set_timeout arginfo_stream_set_timeout #endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gettype, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_get_debug_type arginfo_gettype -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_settype, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(1, var, IS_MIXED, 0) ZEND_ARG_TYPE_INFO(0, type, IS_STRING, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_intval, 0, 1, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, base, IS_LONG, 0, "10") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_floatval, 0, 1, IS_DOUBLE, 0) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_doubleval arginfo_floatval -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_boolval, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_strval arginfo_gettype -#endif -#if defined(HAVE_UTIME) #define arginfo_is_null arginfo_boolval -#endif -#if defined(HAVE_UTIME) #define arginfo_is_resource arginfo_boolval -#endif -#if defined(HAVE_UTIME) #define arginfo_is_bool arginfo_boolval -#endif -#if defined(HAVE_UTIME) #define arginfo_is_int arginfo_boolval -#endif -#if defined(HAVE_UTIME) #define arginfo_is_integer arginfo_boolval -#endif -#if defined(HAVE_UTIME) #define arginfo_is_long arginfo_boolval -#endif -#if defined(HAVE_UTIME) #define arginfo_is_float arginfo_boolval -#endif -#if defined(HAVE_UTIME) #define arginfo_is_double arginfo_boolval -#endif -#if defined(HAVE_UTIME) #define arginfo_is_numeric arginfo_boolval -#endif -#if defined(HAVE_UTIME) #define arginfo_is_string arginfo_boolval -#endif -#if defined(HAVE_UTIME) #define arginfo_is_array arginfo_boolval -#endif -#if defined(HAVE_UTIME) #define arginfo_is_object arginfo_boolval -#endif -#if defined(HAVE_UTIME) #define arginfo_is_scalar arginfo_boolval -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_is_callable, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, syntax_only, _IS_BOOL, 0, "false") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(1, callable_name, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_is_iterable arginfo_boolval -#endif -#if defined(HAVE_UTIME) #define arginfo_is_countable arginfo_boolval -#endif -#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_GETTIMEOFDAY) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_uniqid, 0, 0, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, prefix, IS_STRING, 0, "\"\"") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, more_entropy, _IS_BOOL, 0, "false") ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_parse_url, 0, 1, MAY_BE_LONG|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_NULL|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, url, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, component, IS_LONG, 0, "-1") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) -#define arginfo_urlencode arginfo_quoted_printable_decode -#endif +#define arginfo_urlencode arginfo_base64_encode -#if defined(HAVE_UTIME) -#define arginfo_urldecode arginfo_quoted_printable_decode -#endif +#define arginfo_urldecode arginfo_base64_encode -#if defined(HAVE_UTIME) -#define arginfo_rawurlencode arginfo_quoted_printable_decode -#endif +#define arginfo_rawurlencode arginfo_base64_encode -#if defined(HAVE_UTIME) -#define arginfo_rawurldecode arginfo_quoted_printable_decode -#endif +#define arginfo_rawurldecode arginfo_base64_encode -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_get_headers, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, url, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, associative, _IS_BOOL, 0, "false") ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, context, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_bucket_make_writeable, 0, 1, IS_OBJECT, 1) ZEND_ARG_INFO(0, brigade) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_bucket_prepend, 0, 2, IS_VOID, 0) ZEND_ARG_INFO(0, brigade) ZEND_ARG_TYPE_INFO(0, bucket, IS_OBJECT, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_stream_bucket_append arginfo_stream_bucket_prepend -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_bucket_new, 0, 2, IS_OBJECT, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, buffer, IS_STRING, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) -#define arginfo_stream_get_filters arginfo_realpath_cache_get -#endif +#define arginfo_stream_get_filters arginfo_ob_list_handlers -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_filter_register, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, filter_name, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, class, IS_STRING, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) -#define arginfo_convert_uuencode arginfo_quoted_printable_decode -#endif +#define arginfo_convert_uuencode arginfo_base64_encode -#if defined(HAVE_UTIME) -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_convert_uudecode, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) - ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) -ZEND_END_ARG_INFO() -#endif +#define arginfo_convert_uudecode arginfo_hex2bin -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_var_dump, 0, 1, IS_VOID, 0) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_ARG_VARIADIC_TYPE_INFO(0, values, IS_MIXED, 0) ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_var_export, 0, 1, IS_STRING, 1) ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, return, _IS_BOOL, 0, "false") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_debug_zval_dump arginfo_var_dump -#endif -#if defined(HAVE_UTIME) #define arginfo_serialize arginfo_gettype -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_unserialize, 0, 1, IS_MIXED, 0) ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 0, "[]") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_memory_get_usage, 0, 0, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, real_usage, _IS_BOOL, 0, "false") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) #define arginfo_memory_get_peak_usage arginfo_memory_get_usage -#endif -#if defined(HAVE_UTIME) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_version_compare, 0, 2, MAY_BE_LONG|MAY_BE_BOOL) ZEND_ARG_TYPE_INFO(0, version1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, version2, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, operator, IS_STRING, 1, "null") ZEND_END_ARG_INFO() -#endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_cp_set, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, codepage, IS_LONG, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_cp_get, 0, 0, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, kind, IS_STRING, 0, "\"\"") ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_cp_conv, 0, 3, IS_STRING, 1) ZEND_ARG_TYPE_MASK(0, in_codepage, MAY_BE_LONG|MAY_BE_STRING, NULL) ZEND_ARG_TYPE_MASK(0, out_codepage, MAY_BE_LONG|MAY_BE_STRING, NULL) @@ -2555,19 +2201,19 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_cp_conv, 0, 3, IS_S ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_cp_is_utf8, 0, 0, _IS_BOOL, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_set_ctrl_handler, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, handler, IS_CALLABLE, 1) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, add, _IS_BOOL, 0, "true") ZEND_END_ARG_INFO() #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sapi_windows_generate_ctrl_event, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, event, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, pid, IS_LONG, 0, "0") @@ -2970,553 +2616,231 @@ ZEND_FUNCTION(chmod); #if defined(HAVE_UTIME) ZEND_FUNCTION(touch); #endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(clearstatcache); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(disk_total_space); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(disk_free_space); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(realpath_cache_get); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(realpath_cache_size); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(sprintf); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(printf); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(vprintf); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(vsprintf); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(fprintf); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(vfprintf); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(fsockopen); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(pfsockopen); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(http_build_query); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(image_type_to_mime_type); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(image_type_to_extension); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(getimagesize); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(getimagesizefromstring); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(phpinfo); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(phpversion); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(phpcredits); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(php_sapi_name); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(php_uname); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(php_ini_scanned_files); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(php_ini_loaded_file); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(iptcembed); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(iptcparse); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(levenshtein); -#endif -#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FUNCTION(readlink); #endif -#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FUNCTION(linkinfo); #endif -#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FUNCTION(symlink); #endif -#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FUNCTION(link); #endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(mail); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(abs); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(ceil); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(floor); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(round); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(sin); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(cos); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(tan); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(asin); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(acos); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(atan); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(atanh); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(atan2); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(sinh); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(cosh); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(tanh); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(asinh); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(acosh); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(expm1); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(log1p); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(pi); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_finite); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_nan); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(intdiv); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_infinite); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(pow); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(exp); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(log); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(log10); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(sqrt); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(hypot); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(deg2rad); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(rad2deg); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(bindec); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(hexdec); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(octdec); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(decbin); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(decoct); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(dechex); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(base_convert); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(number_format); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(fmod); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(fdiv); -#endif -#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_GETTIMEOFDAY) ZEND_FUNCTION(microtime); #endif -#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_GETTIMEOFDAY) ZEND_FUNCTION(gettimeofday); #endif -#if defined(HAVE_UTIME) && defined(HAVE_GETRUSAGE) +#if defined(HAVE_GETRUSAGE) ZEND_FUNCTION(getrusage); #endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(pack); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(unpack); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(password_get_info); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(password_hash); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(password_needs_rehash); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(password_verify); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(password_algos); -#endif -#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FUNCTION(proc_open); #endif -#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FUNCTION(proc_close); #endif -#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FUNCTION(proc_terminate); #endif -#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FUNCTION(proc_get_status); #endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(quoted_printable_decode); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(quoted_printable_encode); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(mt_srand); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(rand); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(mt_rand); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(mt_getrandmax); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(random_bytes); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(random_int); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(soundex); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_select); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_create); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_set_params); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_get_params); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_set_option); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_get_options); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_get_default); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_context_set_default); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_filter_prepend); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_filter_append); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_filter_remove); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_client); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_server); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_accept); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_get_name); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_recvfrom); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_sendto); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_socket_enable_crypto); -#endif -#if defined(HAVE_UTIME) && defined(HAVE_SHUTDOWN) +#if defined(HAVE_SHUTDOWN) ZEND_FUNCTION(stream_socket_shutdown); #endif -#if defined(HAVE_UTIME) && defined(HAVE_SOCKETPAIR) +#if defined(HAVE_SOCKETPAIR) ZEND_FUNCTION(stream_socket_pair); #endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_copy_to_stream); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_get_contents); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_supports_lock); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_set_write_buffer); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_set_read_buffer); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_set_blocking); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_get_meta_data); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_get_line); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_resolve_include_path); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_get_wrappers); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_get_transports); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_is_local); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_isatty); -#endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_vt100_support); #endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_set_chunk_size); -#endif -#if defined(HAVE_UTIME) && defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) +#if defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) ZEND_FUNCTION(stream_set_timeout); #endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(gettype); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(get_debug_type); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(settype); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(intval); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(floatval); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(boolval); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(strval); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_null); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_resource); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_bool); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_int); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_float); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_numeric); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_string); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_array); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_object); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_scalar); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_callable); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_iterable); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(is_countable); -#endif -#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_GETTIMEOFDAY) ZEND_FUNCTION(uniqid); #endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(parse_url); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(urlencode); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(urldecode); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(rawurlencode); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(rawurldecode); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(get_headers); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_bucket_make_writeable); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_bucket_prepend); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_bucket_append); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_bucket_new); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_get_filters); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(stream_filter_register); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(convert_uuencode); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(convert_uudecode); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(var_dump); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(var_export); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(debug_zval_dump); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(serialize); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(unserialize); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(memory_get_usage); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(memory_get_peak_usage); -#endif -#if defined(HAVE_UTIME) ZEND_FUNCTION(version_compare); -#endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_cp_set); #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_cp_get); #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_cp_conv); #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_cp_is_utf8); #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_set_ctrl_handler); #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_generate_ctrl_event); #endif @@ -3934,586 +3258,244 @@ static const zend_function_entry ext_functions[] = { #if defined(HAVE_UTIME) ZEND_FE(touch, arginfo_touch) #endif -#if defined(HAVE_UTIME) ZEND_FE(clearstatcache, arginfo_clearstatcache) -#endif -#if defined(HAVE_UTIME) ZEND_FE(disk_total_space, arginfo_disk_total_space) -#endif -#if defined(HAVE_UTIME) ZEND_FE(disk_free_space, arginfo_disk_free_space) -#endif -#if defined(HAVE_UTIME) ZEND_FALIAS(diskfreespace, disk_free_space, arginfo_diskfreespace) -#endif -#if defined(HAVE_UTIME) ZEND_FE(realpath_cache_get, arginfo_realpath_cache_get) -#endif -#if defined(HAVE_UTIME) ZEND_FE(realpath_cache_size, arginfo_realpath_cache_size) -#endif -#if defined(HAVE_UTIME) ZEND_FE(sprintf, arginfo_sprintf) -#endif -#if defined(HAVE_UTIME) ZEND_FE(printf, arginfo_printf) -#endif -#if defined(HAVE_UTIME) ZEND_FE(vprintf, arginfo_vprintf) -#endif -#if defined(HAVE_UTIME) ZEND_FE(vsprintf, arginfo_vsprintf) -#endif -#if defined(HAVE_UTIME) ZEND_FE(fprintf, arginfo_fprintf) -#endif -#if defined(HAVE_UTIME) ZEND_FE(vfprintf, arginfo_vfprintf) -#endif -#if defined(HAVE_UTIME) ZEND_FE(fsockopen, arginfo_fsockopen) -#endif -#if defined(HAVE_UTIME) ZEND_FE(pfsockopen, arginfo_pfsockopen) -#endif -#if defined(HAVE_UTIME) ZEND_FE(http_build_query, arginfo_http_build_query) -#endif -#if defined(HAVE_UTIME) ZEND_FE(image_type_to_mime_type, arginfo_image_type_to_mime_type) -#endif -#if defined(HAVE_UTIME) ZEND_FE(image_type_to_extension, arginfo_image_type_to_extension) -#endif -#if defined(HAVE_UTIME) ZEND_FE(getimagesize, arginfo_getimagesize) -#endif -#if defined(HAVE_UTIME) ZEND_FE(getimagesizefromstring, arginfo_getimagesizefromstring) -#endif -#if defined(HAVE_UTIME) ZEND_FE(phpinfo, arginfo_phpinfo) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(phpversion, arginfo_phpversion) -#endif -#if defined(HAVE_UTIME) ZEND_FE(phpcredits, arginfo_phpcredits) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(php_sapi_name, arginfo_php_sapi_name) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(php_uname, arginfo_php_uname) -#endif -#if defined(HAVE_UTIME) ZEND_FE(php_ini_scanned_files, arginfo_php_ini_scanned_files) -#endif -#if defined(HAVE_UTIME) ZEND_FE(php_ini_loaded_file, arginfo_php_ini_loaded_file) -#endif -#if defined(HAVE_UTIME) ZEND_FE(iptcembed, arginfo_iptcembed) -#endif -#if defined(HAVE_UTIME) ZEND_FE(iptcparse, arginfo_iptcparse) -#endif -#if defined(HAVE_UTIME) ZEND_FE(levenshtein, arginfo_levenshtein) -#endif -#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FE(readlink, arginfo_readlink) #endif -#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FE(linkinfo, arginfo_linkinfo) #endif -#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FE(symlink, arginfo_symlink) #endif -#if defined(HAVE_UTIME) && defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) ZEND_FE(link, arginfo_link) #endif -#if defined(HAVE_UTIME) ZEND_FE(mail, arginfo_mail) -#endif -#if defined(HAVE_UTIME) ZEND_FE(abs, arginfo_abs) -#endif -#if defined(HAVE_UTIME) ZEND_FE(ceil, arginfo_ceil) -#endif -#if defined(HAVE_UTIME) ZEND_FE(floor, arginfo_floor) -#endif -#if defined(HAVE_UTIME) ZEND_FE(round, arginfo_round) -#endif -#if defined(HAVE_UTIME) ZEND_FE(sin, arginfo_sin) -#endif -#if defined(HAVE_UTIME) ZEND_FE(cos, arginfo_cos) -#endif -#if defined(HAVE_UTIME) ZEND_FE(tan, arginfo_tan) -#endif -#if defined(HAVE_UTIME) ZEND_FE(asin, arginfo_asin) -#endif -#if defined(HAVE_UTIME) ZEND_FE(acos, arginfo_acos) -#endif -#if defined(HAVE_UTIME) ZEND_FE(atan, arginfo_atan) -#endif -#if defined(HAVE_UTIME) ZEND_FE(atanh, arginfo_atanh) -#endif -#if defined(HAVE_UTIME) ZEND_FE(atan2, arginfo_atan2) -#endif -#if defined(HAVE_UTIME) ZEND_FE(sinh, arginfo_sinh) -#endif -#if defined(HAVE_UTIME) ZEND_FE(cosh, arginfo_cosh) -#endif -#if defined(HAVE_UTIME) ZEND_FE(tanh, arginfo_tanh) -#endif -#if defined(HAVE_UTIME) ZEND_FE(asinh, arginfo_asinh) -#endif -#if defined(HAVE_UTIME) ZEND_FE(acosh, arginfo_acosh) -#endif -#if defined(HAVE_UTIME) ZEND_FE(expm1, arginfo_expm1) -#endif -#if defined(HAVE_UTIME) ZEND_FE(log1p, arginfo_log1p) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(pi, arginfo_pi) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(is_finite, arginfo_is_finite) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(is_nan, arginfo_is_nan) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(intdiv, arginfo_intdiv) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(is_infinite, arginfo_is_infinite) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(pow, arginfo_pow) -#endif -#if defined(HAVE_UTIME) ZEND_FE(exp, arginfo_exp) -#endif -#if defined(HAVE_UTIME) ZEND_FE(log, arginfo_log) -#endif -#if defined(HAVE_UTIME) ZEND_FE(log10, arginfo_log10) -#endif -#if defined(HAVE_UTIME) ZEND_FE(sqrt, arginfo_sqrt) -#endif -#if defined(HAVE_UTIME) ZEND_FE(hypot, arginfo_hypot) -#endif -#if defined(HAVE_UTIME) ZEND_FE(deg2rad, arginfo_deg2rad) -#endif -#if defined(HAVE_UTIME) ZEND_FE(rad2deg, arginfo_rad2deg) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(bindec, arginfo_bindec) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(hexdec, arginfo_hexdec) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(octdec, arginfo_octdec) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(decbin, arginfo_decbin) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(decoct, arginfo_decoct) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(dechex, arginfo_dechex) -#endif -#if defined(HAVE_UTIME) ZEND_FE(base_convert, arginfo_base_convert) -#endif -#if defined(HAVE_UTIME) ZEND_FE(number_format, arginfo_number_format) -#endif -#if defined(HAVE_UTIME) ZEND_FE(fmod, arginfo_fmod) -#endif -#if defined(HAVE_UTIME) ZEND_FE(fdiv, arginfo_fdiv) -#endif -#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_GETTIMEOFDAY) ZEND_FE(microtime, arginfo_microtime) #endif -#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_GETTIMEOFDAY) ZEND_FE(gettimeofday, arginfo_gettimeofday) #endif -#if defined(HAVE_UTIME) && defined(HAVE_GETRUSAGE) +#if defined(HAVE_GETRUSAGE) ZEND_FE(getrusage, arginfo_getrusage) #endif -#if defined(HAVE_UTIME) ZEND_FE(pack, arginfo_pack) -#endif -#if defined(HAVE_UTIME) ZEND_FE(unpack, arginfo_unpack) -#endif -#if defined(HAVE_UTIME) ZEND_FE(password_get_info, arginfo_password_get_info) -#endif -#if defined(HAVE_UTIME) ZEND_FE(password_hash, arginfo_password_hash) -#endif -#if defined(HAVE_UTIME) ZEND_FE(password_needs_rehash, arginfo_password_needs_rehash) -#endif -#if defined(HAVE_UTIME) ZEND_FE(password_verify, arginfo_password_verify) -#endif -#if defined(HAVE_UTIME) ZEND_FE(password_algos, arginfo_password_algos) -#endif -#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FE(proc_open, arginfo_proc_open) #endif -#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FE(proc_close, arginfo_proc_close) #endif -#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FE(proc_terminate, arginfo_proc_terminate) #endif -#if defined(HAVE_UTIME) && defined(PHP_CAN_SUPPORT_PROC_OPEN) +#if defined(PHP_CAN_SUPPORT_PROC_OPEN) ZEND_FE(proc_get_status, arginfo_proc_get_status) #endif -#if defined(HAVE_UTIME) ZEND_FE(quoted_printable_decode, arginfo_quoted_printable_decode) -#endif -#if defined(HAVE_UTIME) ZEND_FE(quoted_printable_encode, arginfo_quoted_printable_encode) -#endif -#if defined(HAVE_UTIME) ZEND_FE(mt_srand, arginfo_mt_srand) -#endif -#if defined(HAVE_UTIME) ZEND_FALIAS(srand, mt_srand, arginfo_srand) -#endif -#if defined(HAVE_UTIME) ZEND_FE(rand, arginfo_rand) -#endif -#if defined(HAVE_UTIME) ZEND_FE(mt_rand, arginfo_mt_rand) -#endif -#if defined(HAVE_UTIME) ZEND_FE(mt_getrandmax, arginfo_mt_getrandmax) -#endif -#if defined(HAVE_UTIME) ZEND_FALIAS(getrandmax, mt_getrandmax, arginfo_getrandmax) -#endif -#if defined(HAVE_UTIME) ZEND_FE(random_bytes, arginfo_random_bytes) -#endif -#if defined(HAVE_UTIME) ZEND_FE(random_int, arginfo_random_int) -#endif -#if defined(HAVE_UTIME) ZEND_FE(soundex, arginfo_soundex) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_select, arginfo_stream_select) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_context_create, arginfo_stream_context_create) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_context_set_params, arginfo_stream_context_set_params) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_context_get_params, arginfo_stream_context_get_params) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_context_set_option, arginfo_stream_context_set_option) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_context_get_options, arginfo_stream_context_get_options) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_context_get_default, arginfo_stream_context_get_default) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_context_set_default, arginfo_stream_context_set_default) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_filter_prepend, arginfo_stream_filter_prepend) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_filter_append, arginfo_stream_filter_append) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_filter_remove, arginfo_stream_filter_remove) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_socket_client, arginfo_stream_socket_client) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_socket_server, arginfo_stream_socket_server) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_socket_accept, arginfo_stream_socket_accept) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_socket_get_name, arginfo_stream_socket_get_name) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_socket_recvfrom, arginfo_stream_socket_recvfrom) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_socket_sendto, arginfo_stream_socket_sendto) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_socket_enable_crypto, arginfo_stream_socket_enable_crypto) -#endif -#if defined(HAVE_UTIME) && defined(HAVE_SHUTDOWN) +#if defined(HAVE_SHUTDOWN) ZEND_FE(stream_socket_shutdown, arginfo_stream_socket_shutdown) #endif -#if defined(HAVE_UTIME) && defined(HAVE_SOCKETPAIR) +#if defined(HAVE_SOCKETPAIR) ZEND_FE(stream_socket_pair, arginfo_stream_socket_pair) #endif -#if defined(HAVE_UTIME) ZEND_FE(stream_copy_to_stream, arginfo_stream_copy_to_stream) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_get_contents, arginfo_stream_get_contents) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_supports_lock, arginfo_stream_supports_lock) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_set_write_buffer, arginfo_stream_set_write_buffer) -#endif -#if defined(HAVE_UTIME) ZEND_FALIAS(set_file_buffer, stream_set_write_buffer, arginfo_set_file_buffer) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_set_read_buffer, arginfo_stream_set_read_buffer) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_set_blocking, arginfo_stream_set_blocking) -#endif -#if defined(HAVE_UTIME) ZEND_FALIAS(socket_set_blocking, stream_set_blocking, arginfo_socket_set_blocking) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_get_meta_data, arginfo_stream_get_meta_data) -#endif -#if defined(HAVE_UTIME) ZEND_FALIAS(socket_get_status, stream_get_meta_data, arginfo_socket_get_status) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_get_line, arginfo_stream_get_line) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_resolve_include_path, arginfo_stream_resolve_include_path) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_get_wrappers, arginfo_stream_get_wrappers) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_get_transports, arginfo_stream_get_transports) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_is_local, arginfo_stream_is_local) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_isatty, arginfo_stream_isatty) -#endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FE(sapi_windows_vt100_support, arginfo_sapi_windows_vt100_support) #endif -#if defined(HAVE_UTIME) ZEND_FE(stream_set_chunk_size, arginfo_stream_set_chunk_size) -#endif -#if defined(HAVE_UTIME) && defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) +#if defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) ZEND_FE(stream_set_timeout, arginfo_stream_set_timeout) #endif -#if defined(HAVE_UTIME) && defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) +#if defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) ZEND_FALIAS(socket_set_timeout, stream_set_timeout, arginfo_socket_set_timeout) #endif -#if defined(HAVE_UTIME) ZEND_FE(gettype, arginfo_gettype) -#endif -#if defined(HAVE_UTIME) ZEND_FE(get_debug_type, arginfo_get_debug_type) -#endif -#if defined(HAVE_UTIME) ZEND_FE(settype, arginfo_settype) -#endif -#if defined(HAVE_UTIME) ZEND_FE(intval, arginfo_intval) -#endif -#if defined(HAVE_UTIME) ZEND_FE(floatval, arginfo_floatval) -#endif -#if defined(HAVE_UTIME) ZEND_FALIAS(doubleval, floatval, arginfo_doubleval) -#endif -#if defined(HAVE_UTIME) ZEND_FE(boolval, arginfo_boolval) -#endif -#if defined(HAVE_UTIME) ZEND_FE(strval, arginfo_strval) -#endif -#if defined(HAVE_UTIME) ZEND_FE(is_null, arginfo_is_null) -#endif -#if defined(HAVE_UTIME) ZEND_FE(is_resource, arginfo_is_resource) -#endif -#if defined(HAVE_UTIME) ZEND_FE(is_bool, arginfo_is_bool) -#endif -#if defined(HAVE_UTIME) ZEND_FE(is_int, arginfo_is_int) -#endif -#if defined(HAVE_UTIME) ZEND_FALIAS(is_integer, is_int, arginfo_is_integer) -#endif -#if defined(HAVE_UTIME) ZEND_FALIAS(is_long, is_int, arginfo_is_long) -#endif -#if defined(HAVE_UTIME) ZEND_FE(is_float, arginfo_is_float) -#endif -#if defined(HAVE_UTIME) ZEND_FALIAS(is_double, is_float, arginfo_is_double) -#endif -#if defined(HAVE_UTIME) ZEND_FE(is_numeric, arginfo_is_numeric) -#endif -#if defined(HAVE_UTIME) ZEND_FE(is_string, arginfo_is_string) -#endif -#if defined(HAVE_UTIME) ZEND_FE(is_array, arginfo_is_array) -#endif -#if defined(HAVE_UTIME) ZEND_FE(is_object, arginfo_is_object) -#endif -#if defined(HAVE_UTIME) ZEND_FE(is_scalar, arginfo_is_scalar) -#endif -#if defined(HAVE_UTIME) ZEND_FE(is_callable, arginfo_is_callable) -#endif -#if defined(HAVE_UTIME) ZEND_FE(is_iterable, arginfo_is_iterable) -#endif -#if defined(HAVE_UTIME) ZEND_FE(is_countable, arginfo_is_countable) -#endif -#if defined(HAVE_UTIME) && defined(HAVE_GETTIMEOFDAY) +#if defined(HAVE_GETTIMEOFDAY) ZEND_FE(uniqid, arginfo_uniqid) #endif -#if defined(HAVE_UTIME) ZEND_FE(parse_url, arginfo_parse_url) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(urlencode, arginfo_urlencode) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(urldecode, arginfo_urldecode) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(rawurlencode, arginfo_rawurlencode) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(rawurldecode, arginfo_rawurldecode) -#endif -#if defined(HAVE_UTIME) ZEND_FE(get_headers, arginfo_get_headers) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_bucket_make_writeable, arginfo_stream_bucket_make_writeable) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_bucket_prepend, arginfo_stream_bucket_prepend) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_bucket_append, arginfo_stream_bucket_append) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_bucket_new, arginfo_stream_bucket_new) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_get_filters, arginfo_stream_get_filters) -#endif -#if defined(HAVE_UTIME) ZEND_FE(stream_filter_register, arginfo_stream_filter_register) -#endif -#if defined(HAVE_UTIME) ZEND_FE(convert_uuencode, arginfo_convert_uuencode) -#endif -#if defined(HAVE_UTIME) ZEND_FE(convert_uudecode, arginfo_convert_uudecode) -#endif -#if defined(HAVE_UTIME) ZEND_FE(var_dump, arginfo_var_dump) -#endif -#if defined(HAVE_UTIME) ZEND_FE(var_export, arginfo_var_export) -#endif -#if defined(HAVE_UTIME) ZEND_FE(debug_zval_dump, arginfo_debug_zval_dump) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(serialize, arginfo_serialize) -#endif -#if defined(HAVE_UTIME) ZEND_FE(unserialize, arginfo_unserialize) -#endif -#if defined(HAVE_UTIME) ZEND_FE(memory_get_usage, arginfo_memory_get_usage) -#endif -#if defined(HAVE_UTIME) ZEND_FE(memory_get_peak_usage, arginfo_memory_get_peak_usage) -#endif -#if defined(HAVE_UTIME) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(version_compare, arginfo_version_compare) -#endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FE(sapi_windows_cp_set, arginfo_sapi_windows_cp_set) #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FE(sapi_windows_cp_get, arginfo_sapi_windows_cp_get) #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FE(sapi_windows_cp_conv, arginfo_sapi_windows_cp_conv) #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FE(sapi_windows_cp_is_utf8, arginfo_sapi_windows_cp_is_utf8) #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FE(sapi_windows_set_ctrl_handler, arginfo_sapi_windows_set_ctrl_handler) #endif -#if defined(HAVE_UTIME) && defined(PHP_WIN32) +#if defined(PHP_WIN32) ZEND_FE(sapi_windows_generate_ctrl_event, arginfo_sapi_windows_generate_ctrl_event) #endif ZEND_FE_END From 13649451c201361b438ca0f762cfb33dfc3fca39 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Fri, 1 Apr 2022 17:32:48 +0200 Subject: [PATCH 24/63] Fix GH-8289: Exceptions thrown within a yielded from iterator are not rethrown into the generator This also fixes the fact that exception traces were not including the generator frame when thrown in a yielded from iterator. --- NEWS | 4 +- Zend/tests/generators/gh8289.phpt | 34 +++++++ Zend/zend_generators.c | 153 +++++++++++++++--------------- 3 files changed, 110 insertions(+), 81 deletions(-) create mode 100644 Zend/tests/generators/gh8289.phpt diff --git a/NEWS b/NEWS index 9ee38ddb2bcc3..19d46c3a1414e 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,8 @@ PHP NEWS . Fixed bug GH-8070 (memory leak of internal function attribute hash). (Tim Düsterhus) . Fixed bug GH-8160 (ZTS support on Alpine is broken). (Michael Voříšek) + . Fixed bug GH-8289 (Exceptions thrown within a yielded from iterator are + not rethrown into the generator). (Bob) - Filter: . Fixed signedness confusion in php_filter_validate_domain(). (cmb) @@ -43,8 +45,6 @@ PHP NEWS - Core: . Fixed Haiku ZTS build. (David Carlier) - . Fixed bug GH-8082 (op_arrays with temporary run_time_cache leak memory - when observed). (Bob) - GD: . Fixed libpng warning when loading interlaced images. (Brett) diff --git a/Zend/tests/generators/gh8289.phpt b/Zend/tests/generators/gh8289.phpt new file mode 100644 index 0000000000000..6329da896c623 --- /dev/null +++ b/Zend/tests/generators/gh8289.phpt @@ -0,0 +1,34 @@ +--TEST-- +GH-8289 (Exceptions thrown within a yielded from iterator are not rethrown into the generator) +--FILE-- + $v) { + var_dump($v); +} + +?> +--EXPECTF-- +int(1) +Exception in %s:%d +Stack trace: +#0 %s(%d): IteratorIterator@anonymous->key() +#1 %s(%d): yieldFromIteratorGeneratorThrows() +#2 {main} +int(2) \ No newline at end of file diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index 66d3bb3b62424..cf09e9e379ef1 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -637,22 +637,17 @@ static zend_result zend_generator_get_next_delegated_value(zend_generator *gener if (iter->index++ > 0) { iter->funcs->move_forward(iter); if (UNEXPECTED(EG(exception) != NULL)) { - goto exception; + goto failure; } } if (iter->funcs->valid(iter) == FAILURE) { - if (UNEXPECTED(EG(exception) != NULL)) { - goto exception; - } /* reached end of iteration */ goto failure; } value = iter->funcs->get_current_data(iter); - if (UNEXPECTED(EG(exception) != NULL)) { - goto exception; - } else if (UNEXPECTED(!value)) { + if (UNEXPECTED(EG(exception) != NULL) || UNEXPECTED(!value)) { goto failure; } @@ -664,7 +659,7 @@ static zend_result zend_generator_get_next_delegated_value(zend_generator *gener iter->funcs->get_current_key(iter, &generator->key); if (UNEXPECTED(EG(exception) != NULL)) { ZVAL_UNDEF(&generator->key); - goto exception; + goto failure; } } else { ZVAL_LONG(&generator->key, iter->index); @@ -672,9 +667,6 @@ static zend_result zend_generator_get_next_delegated_value(zend_generator *gener } return SUCCESS; -exception: - zend_generator_throw_exception(generator, NULL); - failure: zval_ptr_dtor(&generator->values); ZVAL_UNDEF(&generator->values); @@ -706,8 +698,33 @@ ZEND_API void zend_generator_resume(zend_generator *orig_generator) /* {{{ */ /* Drop the AT_FIRST_YIELD flag */ orig_generator->flags &= ~ZEND_GENERATOR_AT_FIRST_YIELD; + /* Backup executor globals */ + zend_execute_data *original_execute_data = EG(current_execute_data); + uint32_t original_jit_trace_num = EG(jit_trace_num); + + /* Set executor globals */ + EG(current_execute_data) = generator->execute_data; + EG(jit_trace_num) = 0; + + /* We want the backtrace to look as if the generator function was + * called from whatever method we are current running (e.g. next()). + * So we have to link generator call frame with caller call frame. */ + if (generator == orig_generator) { + generator->execute_data->prev_execute_data = original_execute_data; + } else { + /* We need some execute_data placeholder in stacktrace to be replaced + * by the real stack trace when needed */ + generator->execute_data->prev_execute_data = &orig_generator->execute_fake; + orig_generator->execute_fake.prev_execute_data = original_execute_data; + } + + /* Ensure this is run after executor_data swap to have a proper stack trace */ if (UNEXPECTED(!Z_ISUNDEF(generator->values))) { if (EXPECTED(zend_generator_get_next_delegated_value(generator) == SUCCESS)) { + /* Restore executor globals */ + EG(current_execute_data) = original_execute_data; + EG(jit_trace_num) = original_jit_trace_num; + orig_generator->flags &= ~ZEND_GENERATOR_DO_INIT; return; } @@ -715,85 +732,63 @@ ZEND_API void zend_generator_resume(zend_generator *orig_generator) /* {{{ */ * after the "yield from" expression. */ } - { - /* Backup executor globals */ - zend_execute_data *original_execute_data = EG(current_execute_data); - uint32_t original_jit_trace_num = EG(jit_trace_num); - - /* Set executor globals */ - EG(current_execute_data) = generator->execute_data; - EG(jit_trace_num) = 0; - - /* We want the backtrace to look as if the generator function was - * called from whatever method we are current running (e.g. next()). - * So we have to link generator call frame with caller call frame. */ - if (generator == orig_generator) { - generator->execute_data->prev_execute_data = original_execute_data; - } else { - /* We need some execute_data placeholder in stacktrace to be replaced - * by the real stack trace when needed */ - generator->execute_data->prev_execute_data = &orig_generator->execute_fake; - orig_generator->execute_fake.prev_execute_data = original_execute_data; - } + if (UNEXPECTED(generator->frozen_call_stack)) { + /* Restore frozen call-stack */ + zend_generator_restore_call_stack(generator); + } - if (UNEXPECTED(generator->frozen_call_stack)) { - /* Restore frozen call-stack */ - zend_generator_restore_call_stack(generator); + /* Resume execution */ + generator->flags |= ZEND_GENERATOR_CURRENTLY_RUNNING; + if (!ZEND_OBSERVER_ENABLED) { + zend_execute_ex(generator->execute_data); + } else { + zend_observer_generator_resume(generator->execute_data); + zend_execute_ex(generator->execute_data); + if (generator->execute_data) { + /* On the final return, this will be called from ZEND_GENERATOR_RETURN */ + zend_observer_fcall_end(generator->execute_data, &generator->value); } + } + generator->flags &= ~ZEND_GENERATOR_CURRENTLY_RUNNING; - /* Resume execution */ - generator->flags |= ZEND_GENERATOR_CURRENTLY_RUNNING; - if (!ZEND_OBSERVER_ENABLED) { - zend_execute_ex(generator->execute_data); - } else { - zend_observer_generator_resume(generator->execute_data); - zend_execute_ex(generator->execute_data); - if (generator->execute_data) { - /* On the final return, this will be called from ZEND_GENERATOR_RETURN */ - zend_observer_fcall_end(generator->execute_data, &generator->value); - } - } - generator->flags &= ~ZEND_GENERATOR_CURRENTLY_RUNNING; + generator->frozen_call_stack = NULL; + if (EXPECTED(generator->execute_data) && + UNEXPECTED(generator->execute_data->call)) { + /* Frize call-stack */ + generator->frozen_call_stack = zend_generator_freeze_call_stack(generator->execute_data); + } - generator->frozen_call_stack = NULL; - if (EXPECTED(generator->execute_data) && - UNEXPECTED(generator->execute_data->call)) { - /* Frize call-stack */ - generator->frozen_call_stack = zend_generator_freeze_call_stack(generator->execute_data); - } + /* Restore executor globals */ + EG(current_execute_data) = original_execute_data; + EG(jit_trace_num) = original_jit_trace_num; - /* Restore executor globals */ - EG(current_execute_data) = original_execute_data; - EG(jit_trace_num) = original_jit_trace_num; - - /* If an exception was thrown in the generator we have to internally - * rethrow it in the parent scope. - * In case we did yield from, the Exception must be rethrown into - * its calling frame (see above in if (check_yield_from). */ - if (UNEXPECTED(EG(exception) != NULL)) { - if (generator == orig_generator) { - zend_generator_close(generator, 0); - if (!EG(current_execute_data)) { - zend_throw_exception_internal(NULL); - } else if (EG(current_execute_data)->func && - ZEND_USER_CODE(EG(current_execute_data)->func->common.type)) { - zend_rethrow_exception(EG(current_execute_data)); - } - } else { - generator = zend_generator_get_current(orig_generator); - zend_generator_throw_exception(generator, NULL); - orig_generator->flags &= ~ZEND_GENERATOR_DO_INIT; - goto try_again; + /* If an exception was thrown in the generator we have to internally + * rethrow it in the parent scope. + * In case we did yield from, the Exception must be rethrown into + * its calling frame (see above in if (check_yield_from). */ + if (UNEXPECTED(EG(exception) != NULL)) { + if (generator == orig_generator) { + zend_generator_close(generator, 0); + if (!EG(current_execute_data)) { + zend_throw_exception_internal(NULL); + } else if (EG(current_execute_data)->func && + ZEND_USER_CODE(EG(current_execute_data)->func->common.type)) { + zend_rethrow_exception(EG(current_execute_data)); } - } - - /* yield from was used, try another resume. */ - if (UNEXPECTED((generator != orig_generator && !Z_ISUNDEF(generator->retval)) || (generator->execute_data && (generator->execute_data->opline - 1)->opcode == ZEND_YIELD_FROM))) { + } else { generator = zend_generator_get_current(orig_generator); + zend_generator_throw_exception(generator, NULL); + orig_generator->flags &= ~ZEND_GENERATOR_DO_INIT; goto try_again; } } + /* yield from was used, try another resume. */ + if (UNEXPECTED((generator != orig_generator && !Z_ISUNDEF(generator->retval)) || (generator->execute_data && (generator->execute_data->opline - 1)->opcode == ZEND_YIELD_FROM))) { + generator = zend_generator_get_current(orig_generator); + goto try_again; + } + orig_generator->flags &= ~ZEND_GENERATOR_DO_INIT; } /* }}} */ From e4c7ffc1524d34e14337469e13f5c85857aab60b Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Fri, 1 Apr 2022 17:51:18 +0200 Subject: [PATCH 25/63] Fix deprecated warning in new gh8289.phpt test --- Zend/tests/generators/gh8289.phpt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Zend/tests/generators/gh8289.phpt b/Zend/tests/generators/gh8289.phpt index 6329da896c623..f5bb1fc64be0b 100644 --- a/Zend/tests/generators/gh8289.phpt +++ b/Zend/tests/generators/gh8289.phpt @@ -6,7 +6,7 @@ GH-8289 (Exceptions thrown within a yielded from iterator are not rethrown into function yieldFromIteratorGeneratorThrows() { try { yield from new class(new ArrayIterator([1, -2])) extends IteratorIterator { - public function key() { + public function key(): mixed { if ($k = parent::key()) { throw new Exception; } @@ -31,4 +31,4 @@ Stack trace: #0 %s(%d): IteratorIterator@anonymous->key() #1 %s(%d): yieldFromIteratorGeneratorThrows() #2 {main} -int(2) \ No newline at end of file +int(2) From 53c6619bdaa3bc46b9f89fc9a0e52ed3b9b7a1e4 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Fri, 1 Apr 2022 18:11:36 +0200 Subject: [PATCH 26/63] Restore memory_reset_peak_usage() declaration Cf. . --- ext/standard/basic_functions.stub.php | 2 ++ ext/standard/basic_functions_arginfo.h | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ext/standard/basic_functions.stub.php b/ext/standard/basic_functions.stub.php index 972963430c694..8239b6d14dba3 100755 --- a/ext/standard/basic_functions.stub.php +++ b/ext/standard/basic_functions.stub.php @@ -2057,6 +2057,8 @@ function memory_get_usage(bool $real_usage = false): int {} function memory_get_peak_usage(bool $real_usage = false): int {} +function memory_reset_peak_usage(): void {} + /* versioning.c */ /** @compile-time-eval */ diff --git a/ext/standard/basic_functions_arginfo.h b/ext/standard/basic_functions_arginfo.h index b3ea9968461d4..b912e503bbe44 100644 --- a/ext/standard/basic_functions_arginfo.h +++ b/ext/standard/basic_functions_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: e53bcb20eb22fd198019ca24ebbf10a0decde13a */ + * Stub hash: bbcebdb57572133d5f442f220f1e98a1320ed0f6 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_time_limit, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0) @@ -2175,6 +2175,8 @@ ZEND_END_ARG_INFO() #define arginfo_memory_get_peak_usage arginfo_memory_get_usage +#define arginfo_memory_reset_peak_usage arginfo_flush + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_version_compare, 0, 2, MAY_BE_LONG|MAY_BE_BOOL) ZEND_ARG_TYPE_INFO(0, version1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, version2, IS_STRING, 0) @@ -2824,6 +2826,7 @@ ZEND_FUNCTION(serialize); ZEND_FUNCTION(unserialize); ZEND_FUNCTION(memory_get_usage); ZEND_FUNCTION(memory_get_peak_usage); +ZEND_FUNCTION(memory_reset_peak_usage); ZEND_FUNCTION(version_compare); #if defined(PHP_WIN32) ZEND_FUNCTION(sapi_windows_cp_set); @@ -3479,6 +3482,7 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(unserialize, arginfo_unserialize) ZEND_FE(memory_get_usage, arginfo_memory_get_usage) ZEND_FE(memory_get_peak_usage, arginfo_memory_get_peak_usage) + ZEND_FE(memory_reset_peak_usage, arginfo_memory_reset_peak_usage) ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(version_compare, arginfo_version_compare) #if defined(PHP_WIN32) ZEND_FE(sapi_windows_cp_set, arginfo_sapi_windows_cp_set) From 8620788c2afd1ff2fb165b3eb178a350eb89b6a1 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 30 Mar 2022 16:02:57 +0200 Subject: [PATCH 27/63] Zend/zend_execute: remove duplicate deinitialization code This code duplication was introduced by commit 85f35a8fc1e ("Separate unspecializeble code of INCLIDE_OR_EVAL into helper functions") for no obvious reason. --- Zend/zend_execute.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index c176696f3f236..436a5a2fd2a94 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -4516,11 +4516,7 @@ static zend_never_inline zend_op_array* ZEND_FASTCALL zend_include_or_eval(zval } if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path)) { - zend_op_array *op_array = zend_compile_file(&file_handle, (type==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE)); - zend_destroy_file_handle(&file_handle); - zend_string_release_ex(resolved_path, 0); - zend_tmp_string_release(tmp_inc_filename); - return op_array; + new_op_array = zend_compile_file(&file_handle, (type==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE)); } else { new_op_array = ZEND_FAKE_OP_ARRAY; } From 2874e5fa052d54affd31ed5eaf3e0d53c9116c93 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Sat, 19 Mar 2022 15:16:07 +0000 Subject: [PATCH 28/63] FPM: Emit error for invalid port setting --- NEWS | 3 +++ sapi/fpm/fpm/fpm_sockets.c | 2 +- sapi/fpm/tests/log-invalid-port.phpt | 36 ++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 sapi/fpm/tests/log-invalid-port.phpt diff --git a/NEWS b/NEWS index 75e3600f5480a..c06858ea657e6 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,9 @@ PHP NEWS . Fixed bug GH-7771 (Fix filename/lineno of constant expressions). (ilutov) . Fixed bug GH-7792 (Improve class type in error messages). (ilutov) +- FPM: + . Emit error for invalid port setting. (David Carlier) + - Intl: . Update all grandfathered language tags with preferred values . Fixed GH-7939 (Cannot unserialize IntlTimeZone objects). (cmb) diff --git a/sapi/fpm/fpm/fpm_sockets.c b/sapi/fpm/fpm/fpm_sockets.c index 9514979ac1ce2..003c62b7d05df 100644 --- a/sapi/fpm/fpm/fpm_sockets.c +++ b/sapi/fpm/fpm/fpm_sockets.c @@ -334,7 +334,7 @@ static int fpm_socket_af_inet_listening_socket(struct fpm_worker_pool_s *wp) /* port_str = dup_address; } - if (port == 0) { + if (port < 1 || port > 65535) { zlog(ZLOG_ERROR, "invalid port value '%s'", port_str); free(dup_address); return -1; diff --git a/sapi/fpm/tests/log-invalid-port.phpt b/sapi/fpm/tests/log-invalid-port.phpt new file mode 100644 index 0000000000000..361700378eb1a --- /dev/null +++ b/sapi/fpm/tests/log-invalid-port.phpt @@ -0,0 +1,36 @@ +--TEST-- +FPM: test invalid port value +--SKIPIF-- + +--FILE-- +start(); +$tester->expectLogError("invalid port value '69002'"); +$tester->terminate(); +$tester->close(); + +?> +Done +--EXPECT-- +Done +--CLEAN-- + From 14fddd17df97c6f16faf593b7f224c9891ef27dc Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 4 Apr 2022 12:03:39 +0300 Subject: [PATCH 29/63] Fix arsort() crash on recursion Fixes oss-fuzz #46315 --- Zend/tests/bug63882_2.phpt | 23 +++++++++++++++++++++++ Zend/zend_hash.c | 10 ++++++++++ 2 files changed, 33 insertions(+) create mode 100644 Zend/tests/bug63882_2.phpt diff --git a/Zend/tests/bug63882_2.phpt b/Zend/tests/bug63882_2.phpt new file mode 100644 index 0000000000000..c457a7ad4542e --- /dev/null +++ b/Zend/tests/bug63882_2.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #63882_2 (arsort crash on recursion) +--FILE-- + +DONE +--EXPECT-- +DONE diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 5f878b2154bad..cf0f9e5b332c4 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -2551,6 +2551,16 @@ ZEND_API void ZEND_FASTCALL zend_hash_sort_ex(HashTable *ht, sort_func_t sort, b ht->nNumUsed = i; } + if (!(HT_FLAGS(ht) & HASH_FLAG_PACKED)) { + /* We broke the hash colisions chains overriding Z_NEXT() by Z_EXTRA(). + * Reset the hash headers table as well to avoid possilbe inconsistent + * access on recursive data structures. + * + * See Zend/tests/bug63882_2.phpt + */ + HT_HASH_RESET(ht); + } + sort((void *)ht->arData, ht->nNumUsed, sizeof(Bucket), (compare_func_t) compar, (swap_func_t)(renumber? zend_hash_bucket_renum_swap : ((HT_FLAGS(ht) & HASH_FLAG_PACKED) ? zend_hash_bucket_packed_swap : zend_hash_bucket_swap))); From 0d44bbd212c34f57fad3429d0ecdf43c8d98d2d9 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 4 Apr 2022 14:20:45 +0300 Subject: [PATCH 30/63] JIT: Fixed incorrect code generation Fixes oss-fuzz #46328 --- ext/opcache/jit/zend_jit_x86.dasc | 9 ++++++ ext/opcache/tests/jit/assign_obj_003.phpt | 37 +++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 ext/opcache/tests/jit/assign_obj_003.phpt diff --git a/ext/opcache/jit/zend_jit_x86.dasc b/ext/opcache/jit/zend_jit_x86.dasc index b30a9952ca34b..3430baf0a0737 100644 --- a/ext/opcache/jit/zend_jit_x86.dasc +++ b/ext/opcache/jit/zend_jit_x86.dasc @@ -14186,6 +14186,7 @@ static int zend_jit_assign_obj(dasm_State **Dst, zend_jit_addr this_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, offsetof(zend_execute_data, This)); zend_jit_addr prop_addr; zend_bool needs_slow_path = 0; + zend_bool needs_val_dtor = 0; if (RETURN_VALUE_USED(opline)) { res_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var); @@ -14242,6 +14243,7 @@ static int zend_jit_assign_obj(dasm_State **Dst, } if (((opline+1)->op1_type & (IS_VAR|IS_TMP_VAR)) && (val_info & (MAY_BE_REF|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) { + needs_val_dtor = 1; | jmp >7 } else { | jmp >9 @@ -14459,6 +14461,13 @@ static int zend_jit_assign_obj(dasm_State **Dst, val_info |= MAY_BE_RC1|MAY_BE_RCN; } + |7: + | // FREE_OP_DATA(); + | FREE_OP (opline+1)->op1_type, (opline+1)->op1, val_info, 0, opline + | jmp >9 + |.code + } else if (needs_val_dtor) { + |.cold_code |7: | // FREE_OP_DATA(); | FREE_OP (opline+1)->op1_type, (opline+1)->op1, val_info, 0, opline diff --git a/ext/opcache/tests/jit/assign_obj_003.phpt b/ext/opcache/tests/jit/assign_obj_003.phpt new file mode 100644 index 0000000000000..61159d62189dc --- /dev/null +++ b/ext/opcache/tests/jit/assign_obj_003.phpt @@ -0,0 +1,37 @@ +--TEST-- +JIT ASSIGN_OBJ: Assign undefined vatiable to property +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_update_protection=0 +opcache.jit_buffer_size=1M +--FILE-- +previous = $firstNode; + $firstNode->next = $firstNode; + $circularDoublyLinkedList = null; + for ($i = 0; $i < 2; $i++) { + $currentNode = $circularDoublyLinkedList; + $nextNode = $circularDoublyLinkedList->next; + $newNode->next = $undef1->next; // <- ??? + $newNode = new Node(); + $currentNode->undef2 = new Node(); + $circularDoublyLinkedList = $nextNode; + } +} + +try { + @xxx(); +} catch (Throwable $e) { + echo "Exception: " . $e->getMessage() . "\n"; +} +?> +--EXPECT-- +Exception: Attempt to assign property "next" on null From 33704be5f2a4c96ab711e49ca9fb580b6bdacdc4 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 4 Apr 2022 15:06:35 +0300 Subject: [PATCH 31/63] Trcing JIT: remove unchecked type guards om ROPE_* instructions Fixes oss-fuzz #46209 --- ext/opcache/jit/zend_jit_trace.c | 4 +++- ext/opcache/tests/jit/rope_002.phpt | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 ext/opcache/tests/jit/rope_002.phpt diff --git a/ext/opcache/jit/zend_jit_trace.c b/ext/opcache/jit/zend_jit_trace.c index a53ac0aefea16..6a1286c58aacb 100644 --- a/ext/opcache/jit/zend_jit_trace.c +++ b/ext/opcache/jit/zend_jit_trace.c @@ -2062,7 +2062,9 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin case ZEND_ROPE_INIT: case ZEND_ROPE_ADD: case ZEND_ROPE_END: - ADD_OP2_TRACE_GUARD(); + if (op2_type == IS_STRING) { + ADD_OP2_TRACE_GUARD(); + } break; default: break; diff --git a/ext/opcache/tests/jit/rope_002.phpt b/ext/opcache/tests/jit/rope_002.phpt new file mode 100644 index 0000000000000..7aa7e54801fde --- /dev/null +++ b/ext/opcache/tests/jit/rope_002.phpt @@ -0,0 +1,21 @@ +--TEST-- +JIT ROPE: 002 type guards are only checked for strings +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_update_protection=0 +opcache.jit_buffer_size=1M +--FILE-- + +DONE +--EXPECT-- +DONE From 9cb512ecc12aafc9b4428c76288997e069193652 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Mon, 4 Apr 2022 12:20:28 +0200 Subject: [PATCH 32/63] Ensure correct target opline for exceptions thrown during yield from Also appends the exception during a yield from values dtor instead of prepending it Fixing regression introduced in 13649451c201361b438ca0f762cfb33dfc3fca39. --- ...ld_from_throw_with_throwing_exception.phpt | 28 +++++++++++++++++++ Zend/zend_generators.c | 20 +++++++++---- 2 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 Zend/tests/generators/yield_from_throw_with_throwing_exception.phpt diff --git a/Zend/tests/generators/yield_from_throw_with_throwing_exception.phpt b/Zend/tests/generators/yield_from_throw_with_throwing_exception.phpt new file mode 100644 index 0000000000000..2217670f31f84 --- /dev/null +++ b/Zend/tests/generators/yield_from_throw_with_throwing_exception.phpt @@ -0,0 +1,28 @@ +--TEST-- +Exceptions are properly appended when thrown from yield from values destruction +--FILE-- +throw(new Exception("outer")); + +?> +--EXPECTF-- +Fatal error: Uncaught Exception: outer in %s:%d +Stack trace: +#0 {main} + +Next Exception: dtor in %s:%d +Stack trace: +#0 %s(%d): class@anonymous->__destruct() +#1 [internal function]: gen() +#2 %s(%d): Generator->throw(Object(Exception)) +#3 {main} + thrown %s on line %d diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index cf09e9e379ef1..43385231fbef9 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -455,21 +455,23 @@ static void zend_generator_throw_exception(zend_generator *generator, zval *exce { zend_execute_data *original_execute_data = EG(current_execute_data); - /* if we don't stop an array/iterator yield from, the exception will only reach the generator after the values were all iterated over */ - if (UNEXPECTED(Z_TYPE(generator->values) != IS_UNDEF)) { - zval_ptr_dtor(&generator->values); - ZVAL_UNDEF(&generator->values); - } - /* Throw the exception in the context of the generator. Decrementing the opline * to pretend the exception happened during the YIELD opcode. */ EG(current_execute_data) = generator->execute_data; generator->execute_data->opline--; + if (exception) { zend_throw_exception_object(exception); } else { zend_rethrow_exception(EG(current_execute_data)); } + + /* if we don't stop an array/iterator yield from, the exception will only reach the generator after the values were all iterated over */ + if (UNEXPECTED(Z_TYPE(generator->values) != IS_UNDEF)) { + zval_ptr_dtor(&generator->values); + ZVAL_UNDEF(&generator->values); + } + generator->execute_data->opline++; EG(current_execute_data) = original_execute_data; } @@ -600,6 +602,8 @@ ZEND_API zend_generator *zend_generator_update_current(zend_generator *generator static zend_result zend_generator_get_next_delegated_value(zend_generator *generator) /* {{{ */ { + --generator->execute_data->opline; + zval *value; if (Z_TYPE(generator->values) == IS_ARRAY) { HashTable *ht = Z_ARR(generator->values); @@ -665,11 +669,15 @@ static zend_result zend_generator_get_next_delegated_value(zend_generator *gener ZVAL_LONG(&generator->key, iter->index); } } + + ++generator->execute_data->opline; return SUCCESS; failure: zval_ptr_dtor(&generator->values); ZVAL_UNDEF(&generator->values); + + ++generator->execute_data->opline; return FAILURE; } /* }}} */ From c0bb238483229fd08282a124074a5cef09b52a6c Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 4 Apr 2022 15:34:02 +0300 Subject: [PATCH 33/63] Fixed reference counting inference Fixes oss-fuzz #46084 --- ext/opcache/Optimizer/zend_inference.c | 14 ++++++++++++++ ext/opcache/tests/jit/fetch_dim_r_013.phpt | 20 ++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 ext/opcache/tests/jit/fetch_dim_r_013.phpt diff --git a/ext/opcache/Optimizer/zend_inference.c b/ext/opcache/Optimizer/zend_inference.c index c7514f55e2480..ca3b7dc2401b0 100644 --- a/ext/opcache/Optimizer/zend_inference.c +++ b/ext/opcache/Optimizer/zend_inference.c @@ -3311,6 +3311,20 @@ static zend_always_inline int _zend_update_type_info( if (opline->opcode == ZEND_FETCH_DIM_IS && (t1 & MAY_BE_STRING)) { tmp |= MAY_BE_NULL; } + if ((tmp & (MAY_BE_RC1|MAY_BE_RCN)) == MAY_BE_RCN && opline->result_type == IS_TMP_VAR) { + /* refcount may be indirectly decremented. Make an exception if the result is used in the next instruction */ + if (!ssa_opcodes) { + if (ssa->vars[ssa_op->result_def].use_chain < 0 + || opline + 1 != op_array->opcodes + ssa->vars[ssa_op->result_def].use_chain) { + tmp |= MAY_BE_RC1; + } + } else { + if (ssa->vars[ssa_op->result_def].use_chain < 0 + || opline + 1 != ssa_opcodes[ssa->vars[ssa_op->result_def].use_chain]) { + tmp |= MAY_BE_RC1; + } + } + } UPDATE_SSA_TYPE(tmp, ssa_op->result_def); break; case ZEND_FETCH_THIS: diff --git a/ext/opcache/tests/jit/fetch_dim_r_013.phpt b/ext/opcache/tests/jit/fetch_dim_r_013.phpt new file mode 100644 index 0000000000000..ff2402694de2b --- /dev/null +++ b/ext/opcache/tests/jit/fetch_dim_r_013.phpt @@ -0,0 +1,20 @@ +--TEST-- +JIT FETCH_DIM_R: 013 +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_update_protection=0 +opcache.jit_buffer_size=1M +--FILE-- + $tokens[$y][] = $y; + } +} +@foo(); +?> +DONE +--EXPECT-- +DONE From c489e360a67e8d523b001be3140195c2e4bc7473 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 4 Apr 2022 16:36:25 +0300 Subject: [PATCH 34/63] JIT: Fix array clobbering by user error handler Fixes oss-fuzz #46336 --- Zend/zend_vm_def.h | 13 +- Zend/zend_vm_execute.h | 368 +++++++++++++++++++++- ext/opcache/tests/jit/assign_dim_015.phpt | 19 ++ 3 files changed, 391 insertions(+), 9 deletions(-) create mode 100644 ext/opcache/tests/jit/assign_dim_015.phpt diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index e0687a23fd082..1b4ef0d084652 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2534,7 +2534,18 @@ ZEND_VM_HANDLER(23, ZEND_ASSIGN_DIM, VAR|CV, CONST|TMPVAR|UNUSED|NEXT|CV, SPEC(O ZEND_VM_C_LABEL(try_assign_dim_array): SEPARATE_ARRAY(object_ptr); if (OP2_TYPE == IS_UNUSED) { - value = GET_OP_DATA_ZVAL_PTR(BP_VAR_R); + value = GET_OP_DATA_ZVAL_PTR_UNDEF(BP_VAR_R); + if (OP_DATA_TYPE == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + ZEND_VM_C_GOTO(assign_dim_error); + } + } if (OP_DATA_TYPE == IS_CV || OP_DATA_TYPE == IS_VAR) { ZVAL_DEREF(value); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 922ed92e560f2..0daa7b9e507f0 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -23245,6 +23245,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_D SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -23371,6 +23382,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_D SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -23498,6 +23520,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_D SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -23624,7 +23657,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_D try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -25821,6 +25865,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_ SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -25947,6 +26002,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_ SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -26074,6 +26140,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_ SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -26200,7 +26277,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_ try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -27253,6 +27341,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_ SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -27379,6 +27478,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_ SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -27506,6 +27616,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_ SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -27632,7 +27753,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_ try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -29844,6 +29976,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -29970,6 +30113,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -30097,6 +30251,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -30223,7 +30388,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -40799,6 +40975,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DA SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -40925,6 +41112,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DA SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -41052,6 +41250,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DA SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -41178,7 +41387,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DA try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -44449,6 +44669,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_D SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -44575,6 +44806,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_D SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -44702,6 +44944,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_D SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -44828,7 +45081,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_D try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -46327,6 +46591,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_D SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -46453,6 +46728,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_D SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -46580,6 +46866,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_D SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -46706,7 +47003,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_D try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -49586,6 +49894,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_ SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -49712,6 +50031,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_ SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -49839,6 +50169,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_ SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -49965,7 +50306,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_ try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } diff --git a/ext/opcache/tests/jit/assign_dim_015.phpt b/ext/opcache/tests/jit/assign_dim_015.phpt new file mode 100644 index 0000000000000..fd37d84764d0a --- /dev/null +++ b/ext/opcache/tests/jit/assign_dim_015.phpt @@ -0,0 +1,19 @@ +--TEST-- +JIT ASSIGN_DIM: 015 +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_update_protection=0 +opcache.jit_buffer_size=1M +--FILE-- + +DONE +--EXPECT-- +Error: Undefined variable $y +DONE From afd8f84c1a17ad4735af2b68a4a8b5f6add998de Mon Sep 17 00:00:00 2001 From: Paragon Initiative Enterprises Date: Wed, 30 Mar 2022 03:45:47 -0400 Subject: [PATCH 35/63] Add sodium_crypto_stream_xchacha20_xor_ic() There are many use-cases where a PHP user is currently using sodium_compat's implementation of this low-level XChaCha20 API. For example, multi-part message processing (in low-memory settings) for a ciphertext that was encrypted with XChaCha20-Poly1305 (rather than the secretstream API). Adding this function to ext/sodium offers better performance and lowers users' memory usage with the polyfill, and ensures that users coming from other languages that provide libsodium bindings have a more consistent experience with our bindings. This is a win-win. This patch follows the libsodium precedent of adding functions instead of optional parameters to existing functions. The parameter order is also consistent with the C API. https://doc.libsodium.org/advanced/stream_ciphers/xchacha20#usage Closes GH-8276. --- NEWS | 3 ++ UPGRADING | 3 ++ ext/sodium/libsodium.c | 43 +++++++++++++++++++ ext/sodium/libsodium.stub.php | 2 + ext/sodium/libsodium_arginfo.h | 15 +++++++ ext/sodium/tests/crypto_stream_xchacha20.phpt | 18 ++++++++ 6 files changed, 84 insertions(+) diff --git a/NEWS b/NEWS index c06858ea657e6..906b9c1fa5c4d 100644 --- a/NEWS +++ b/NEWS @@ -26,6 +26,9 @@ PHP NEWS . Fixed bug #80909 (crash with persistent connections in PDO_ODBC). (Calvin Buckley) +- Sodium: + . Added sodium_crypto_stream_xchacha20_xor_ic(). (Scott) + - Standard: . net_get_interfaces() also reports wireless network interfaces on Windows. (Yurun) diff --git a/UPGRADING b/UPGRADING index b91229ec627ea..b99bb790445c3 100644 --- a/UPGRADING +++ b/UPGRADING @@ -114,6 +114,9 @@ PHP 8.2 UPGRADE NOTES 6. New Functions ======================================== +- Sodium: + . sodium_crypto_stream_xchacha20_xor_ic() + - Standard: . The peak memory usage can now be reset to the current usage thanks to memory_reset_peak_usage(). diff --git a/ext/sodium/libsodium.c b/ext/sodium/libsodium.c index 53d7f116652de..54d687cd736c0 100644 --- a/ext/sodium/libsodium.c +++ b/ext/sodium/libsodium.c @@ -1578,6 +1578,49 @@ PHP_FUNCTION(sodium_crypto_stream_xchacha20_xor) RETURN_NEW_STR(ciphertext); } + +PHP_FUNCTION(sodium_crypto_stream_xchacha20_xor_ic) +{ + zend_string *ciphertext; + unsigned char *key; + unsigned char *msg; + unsigned char *nonce; + zend_long *ic; + + size_t ciphertext_len; + size_t key_len; + size_t msg_len; + size_t nonce_len; + + if (zend_parse_parameters(ZEND_NUM_ARGS(), "ssls", + &msg, &msg_len, + &nonce, &nonce_len, + &ic, + &key, &key_len) == FAILURE) { + sodium_remove_param_values_from_backtrace(EG(exception)); + RETURN_THROWS(); + } + if (nonce_len != crypto_stream_xchacha20_NONCEBYTES) { + zend_argument_error(sodium_exception_ce, 2, "must be SODIUM_CRYPTO_STREAM_XCHACHA20_NONCEBYTES bytes long"); + RETURN_THROWS(); + } + if (key_len != crypto_stream_xchacha20_KEYBYTES) { + zend_argument_error(sodium_exception_ce, 3, "must be SODIUM_CRYPTO_STREAM_XCHACHA20_KEYBYTES bytes long"); + RETURN_THROWS(); + } + ciphertext_len = msg_len; + ciphertext = zend_string_checked_alloc((size_t) ciphertext_len, 0); + if (crypto_stream_xchacha20_xor_ic((unsigned char *) ZSTR_VAL(ciphertext), msg, + (unsigned long long) msg_len, nonce, + (unsigned long long) ic, key) != 0) { + zend_string_free(ciphertext); + zend_throw_exception(sodium_exception_ce, "internal error", 0); + RETURN_THROWS(); + } + ZSTR_VAL(ciphertext)[ciphertext_len] = 0; + + RETURN_NEW_STR(ciphertext); +} #endif #ifdef crypto_pwhash_SALTBYTES diff --git a/ext/sodium/libsodium.stub.php b/ext/sodium/libsodium.stub.php index af859c58fe963..55d3e0a5161bc 100644 --- a/ext/sodium/libsodium.stub.php +++ b/ext/sodium/libsodium.stub.php @@ -205,6 +205,8 @@ function sodium_crypto_stream_xchacha20(int $length, string $nonce, string $key) function sodium_crypto_stream_xchacha20_keygen(): string {} function sodium_crypto_stream_xchacha20_xor(string $message, string $nonce, string $key): string {} + +function sodium_crypto_stream_xchacha20_xor_ic(string $message, string $nonce, int $counter, string $key): string {} #endif function sodium_add(string &$string1, string $string2): void {} diff --git a/ext/sodium/libsodium_arginfo.h b/ext/sodium/libsodium_arginfo.h index f0e7aed85e258..a45bd5f59ea03 100644 --- a/ext/sodium/libsodium_arginfo.h +++ b/ext/sodium/libsodium_arginfo.h @@ -445,6 +445,15 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_stream_xchacha20_x ZEND_END_ARG_INFO() #endif +#if defined(crypto_stream_xchacha20_KEYBYTES) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_stream_xchacha20_xor_ic, 0, 4, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, nonce, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, counter, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0) +ZEND_END_ARG_INFO() +#endif + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_add, 0, 2, IS_VOID, 0) ZEND_ARG_TYPE_INFO(1, string1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, string2, IS_STRING, 0) @@ -662,6 +671,9 @@ ZEND_FUNCTION(sodium_crypto_stream_xchacha20_keygen); #if defined(crypto_stream_xchacha20_KEYBYTES) ZEND_FUNCTION(sodium_crypto_stream_xchacha20_xor); #endif +#if defined(crypto_stream_xchacha20_KEYBYTES) +ZEND_FUNCTION(sodium_crypto_stream_xchacha20_xor_ic); +#endif ZEND_FUNCTION(sodium_add); ZEND_FUNCTION(sodium_compare); ZEND_FUNCTION(sodium_increment); @@ -844,6 +856,9 @@ static const zend_function_entry ext_functions[] = { #endif #if defined(crypto_stream_xchacha20_KEYBYTES) ZEND_FE(sodium_crypto_stream_xchacha20_xor, arginfo_sodium_crypto_stream_xchacha20_xor) +#endif +#if defined(crypto_stream_xchacha20_KEYBYTES) + ZEND_FE(sodium_crypto_stream_xchacha20_xor_ic, arginfo_sodium_crypto_stream_xchacha20_xor_ic) #endif ZEND_FE(sodium_add, arginfo_sodium_add) ZEND_FE(sodium_compare, arginfo_sodium_compare) diff --git a/ext/sodium/tests/crypto_stream_xchacha20.phpt b/ext/sodium/tests/crypto_stream_xchacha20.phpt index 275e195a29281..466734853d705 100644 --- a/ext/sodium/tests/crypto_stream_xchacha20.phpt +++ b/ext/sodium/tests/crypto_stream_xchacha20.phpt @@ -34,6 +34,22 @@ $stream6 = sodium_crypto_stream_xchacha20_xor($stream5, $nonce, $key); var_dump($stream6 === $stream); +// New test (with Initial Counter feature): +$n2 = random_bytes(SODIUM_CRYPTO_STREAM_XCHACHA20_NONCEBYTES); +$left = str_repeat("\x01", 64); +$right = str_repeat("\xfe", 64); + +// All at once: +$stream7_unified = sodium_crypto_stream_xchacha20_xor($left . $right, $n2, $key); + +// Piecewise, with initial counter: +$stream7_left = sodium_crypto_stream_xchacha20_xor_ic($left, $n2, 0, $key); +$stream7_right = sodium_crypto_stream_xchacha20_xor_ic($right, $n2, 1, $key); +$stream7_concat = $stream7_left . $stream7_right; + +var_dump(strlen($stream7_concat)); +var_dump($stream7_unified === $stream7_concat); + try { sodium_crypto_stream_xchacha20(-1, $nonce, $key); } catch (SodiumException $ex) { @@ -71,6 +87,8 @@ bool(true) bool(true) bool(true) bool(true) +int(128) +bool(true) sodium_crypto_stream_xchacha20(): Argument #1 ($length) must be greater than 0 sodium_crypto_stream_xchacha20(): Argument #2 ($nonce) must be SODIUM_CRYPTO_STREAM_XCHACHA20_NONCEBYTES bytes long sodium_crypto_stream_xchacha20(): Argument #3 ($key) must be SODIUM_CRYPTO_STREAM_XCHACHA20_KEYBYTES bytes long From df0c8aaee99bf7361420bca85db67d3f434bdccc Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 4 Apr 2022 16:36:25 +0300 Subject: [PATCH 36/63] JIT: Fix array clobbering by user error handler Fixes oss-fuzz #46336 --- Zend/zend_vm_def.h | 13 +- Zend/zend_vm_execute.h | 368 +++++++++++++++++++++- ext/opcache/tests/jit/assign_dim_015.phpt | 19 ++ 3 files changed, 391 insertions(+), 9 deletions(-) create mode 100644 ext/opcache/tests/jit/assign_dim_015.phpt diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 5207a09d34dea..bbba2ca0dfc97 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2548,7 +2548,18 @@ ZEND_VM_HANDLER(23, ZEND_ASSIGN_DIM, VAR|CV, CONST|TMPVAR|UNUSED|NEXT|CV, SPEC(O ZEND_VM_C_LABEL(try_assign_dim_array): SEPARATE_ARRAY(object_ptr); if (OP2_TYPE == IS_UNUSED) { - value = GET_OP_DATA_ZVAL_PTR(BP_VAR_R); + value = GET_OP_DATA_ZVAL_PTR_UNDEF(BP_VAR_R); + if (OP_DATA_TYPE == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + ZEND_VM_C_GOTO(assign_dim_error); + } + } if (OP_DATA_TYPE == IS_CV || OP_DATA_TYPE == IS_VAR) { ZVAL_DEREF(value); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index cb9654688e919..1b27785470062 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -23443,6 +23443,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_D SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -23580,6 +23591,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_D SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -23718,6 +23740,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_D SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -23855,7 +23888,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_D try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -26098,6 +26142,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_ SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -26235,6 +26290,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_ SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -26373,6 +26439,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_ SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -26510,7 +26587,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_ try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -27585,6 +27673,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_ SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -27722,6 +27821,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_ SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -27860,6 +27970,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_ SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -27997,7 +28118,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_ try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -30217,6 +30349,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -30354,6 +30497,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -30492,6 +30646,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -30629,7 +30794,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -41262,6 +41438,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DA SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -41399,6 +41586,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DA SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -41537,6 +41735,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DA SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -41674,7 +41883,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DA try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if (IS_CONST == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -45002,6 +45222,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_D SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -45139,6 +45370,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_D SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -45277,6 +45519,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_D SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -45414,7 +45667,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_D try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -46936,6 +47200,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_D SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -47073,6 +47348,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_D SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -47211,6 +47497,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_D SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -47348,7 +47645,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_D try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if (IS_UNUSED == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } @@ -50237,6 +50545,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_ SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { value = RT_CONSTANT((opline+1), (opline+1)->op1); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CONST == IS_CV || IS_CONST == IS_VAR) { ZVAL_DEREF(value); } @@ -50374,6 +50693,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_ SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { value = _get_zval_ptr_tmp((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -50512,6 +50842,17 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_ SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { value = _get_zval_ptr_var((opline+1)->op1.var EXECUTE_DATA_CC); + if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { ZVAL_DEREF(value); } @@ -50649,7 +50990,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_ try_assign_dim_array: SEPARATE_ARRAY(object_ptr); if (IS_CV == IS_UNUSED) { - value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC); + value = EX_VAR((opline+1)->op1.var); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) { + HashTable *ht = Z_ARRVAL_P(object_ptr); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { + GC_ADDREF(ht); + } + value = zval_undefined_cv((opline+1)->op1.var EXECUTE_DATA_CC); + if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) && !GC_DELREF(ht)) { + zend_array_destroy(ht); + goto assign_dim_error; + } + } if (IS_CV == IS_CV || IS_CV == IS_VAR) { ZVAL_DEREF(value); } diff --git a/ext/opcache/tests/jit/assign_dim_015.phpt b/ext/opcache/tests/jit/assign_dim_015.phpt new file mode 100644 index 0000000000000..fd37d84764d0a --- /dev/null +++ b/ext/opcache/tests/jit/assign_dim_015.phpt @@ -0,0 +1,19 @@ +--TEST-- +JIT ASSIGN_DIM: 015 +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_update_protection=0 +opcache.jit_buffer_size=1M +--FILE-- + +DONE +--EXPECT-- +Error: Undefined variable $y +DONE From 43f3745abb3392e72c67199cce654d0f29d336e7 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Tue, 5 Apr 2022 13:19:02 +0200 Subject: [PATCH 37/63] Bump version Apparently, this has been forgotten when PHP 8.0.17RC1 and 8.0.18RC1 had been tagged. We also fix the version of the fix for GH-8253, which didn't make it into PHP 8.0.18RC1. --- NEWS | 11 ++++++++--- Zend/zend.h | 2 +- configure.ac | 2 +- main/php_version.h | 6 +++--- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/NEWS b/NEWS index 19d46c3a1414e..a969cf485b4b5 100644 --- a/NEWS +++ b/NEWS @@ -1,14 +1,19 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -?? ??? 2022, PHP 8.0.18 +?? ??? 2022, PHP 8.0.19 + +- Core: + + . Fixed bug GH-8289 (Exceptions thrown within a yielded from iterator are + not rethrown into the generator). (Bob) + +14 Apr 2022, PHP 8.0.18 - Core: . Fixed freeing of internal attribute arguments. (Bob) . Fixed bug GH-8070 (memory leak of internal function attribute hash). (Tim Düsterhus) . Fixed bug GH-8160 (ZTS support on Alpine is broken). (Michael Voříšek) - . Fixed bug GH-8289 (Exceptions thrown within a yielded from iterator are - not rethrown into the generator). (Bob) - Filter: . Fixed signedness confusion in php_filter_validate_domain(). (cmb) diff --git a/Zend/zend.h b/Zend/zend.h index b1222625d552f..a9900c66d53d2 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -20,7 +20,7 @@ #ifndef ZEND_H #define ZEND_H -#define ZEND_VERSION "4.0.17-dev" +#define ZEND_VERSION "4.0.19-dev" #define ZEND_ENGINE_3 diff --git a/configure.ac b/configure.ac index a60c3533897ca..415a2f59b16cd 100644 --- a/configure.ac +++ b/configure.ac @@ -17,7 +17,7 @@ dnl Basic autoconf initialization, generation of config.nice. dnl ---------------------------------------------------------------------------- AC_PREREQ([2.68]) -AC_INIT([PHP],[8.0.17-dev],[https://bugs.php.net],[php],[https://www.php.net]) +AC_INIT([PHP],[8.0.19-dev],[https://bugs.php.net],[php],[https://www.php.net]) AC_CONFIG_SRCDIR([main/php_version.h]) AC_CONFIG_AUX_DIR([build]) AC_PRESERVE_HELP_ORDER diff --git a/main/php_version.h b/main/php_version.h index d01736081da01..9e674b2ef6059 100644 --- a/main/php_version.h +++ b/main/php_version.h @@ -2,7 +2,7 @@ /* edit configure.ac to change version number */ #define PHP_MAJOR_VERSION 8 #define PHP_MINOR_VERSION 0 -#define PHP_RELEASE_VERSION 17 +#define PHP_RELEASE_VERSION 19 #define PHP_EXTRA_VERSION "-dev" -#define PHP_VERSION "8.0.17-dev" -#define PHP_VERSION_ID 80017 +#define PHP_VERSION "8.0.19-dev" +#define PHP_VERSION_ID 80019 From 2b4fee03affbb1d6a428da568bbff3d30d34a78f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Fri, 1 Apr 2022 08:37:17 +0200 Subject: [PATCH 38/63] Mark ext/mysqli properties as readonly for documentation purposes --- ext/mysqli/mysqli.stub.php | 155 ++++++++++++++++++++++++++++-------- ext/mysqli/mysqli_arginfo.h | 2 +- 2 files changed, 125 insertions(+), 32 deletions(-) diff --git a/ext/mysqli/mysqli.stub.php b/ext/mysqli/mysqli.stub.php index 5add2523c54b9..46d101125aa43 100644 --- a/ext/mysqli/mysqli.stub.php +++ b/ext/mysqli/mysqli.stub.php @@ -20,58 +20,112 @@ final class mysqli_driver class mysqli { - /** @link mysqli.affected-rows */ + /** + * @readonly + * @link mysqli.affected-rows + */ public int|string $affected_rows; - /** @link mysqli.get-client-info */ + /** + * @readonly + * @link mysqli.get-client-info + */ public string $client_info; - /** @link mysqli.get-client-version */ + /** + * @readonly + * @link mysqli.get-client-version + */ public int $client_version; - /** @link mysqli.connect-errno */ + /** + * @readonly + * @link mysqli.connect-errno + */ public int $connect_errno; - /** @link mysqli.connect-error */ + /** + * @readonly + * @link mysqli.connect-error + */ public ?string $connect_error; - /** @link mysqli.errno */ + /** + * @readonly + * @link mysqli.errno + */ public int $errno; - /** @link mysqli.error */ + /** + * @readonly + * @link mysqli.error + */ public string $error; - /** @link mysqli.error-list */ + /** + * @readonly + * @link mysqli.error-list + */ public array $error_list; - /** @link mysqli.field-count */ + /** + * @readonly + * @link mysqli.field-count + */ public int $field_count; - /** @link mysqli.get-host-info */ + /** + * @readonly + * @link mysqli.get-host-info + */ public string $host_info; - /** @link mysqli.info */ + /** + * @readonly + * @link mysqli.info + */ public ?string $info; - /** @link mysqli.insert-id */ + /** + * @readonly + * @link mysqli.insert-id + */ public int|string $insert_id; - /** @link mysqli.get-server-info */ + /** + * @readonly + * @link mysqli.get-server-info + */ public string $server_info; - /** @link mysqli.get-server-version */ + /** + * @readonly + * @link mysqli.get-server-version + */ public int $server_version; - /** @link mysqli.sqlstate */ + /** + * @readonly + * @link mysqli.sqlstate + */ public string $sqlstate; - /** @link mysqli.get-proto-info */ + /** + * @readonly + * @link mysqli.get-proto-info + */ public int $protocol_version; - /** @link mysqli.thread-id */ + /** + * @readonly + * @link mysqli.thread-id + */ public int $thread_id; - /** @link mysqli.warning-count */ + /** + * @readonly + * @link mysqli.warning-count + */ public int $warning_count; public function __construct( @@ -373,16 +427,28 @@ public function refresh(int $flags): bool {} class mysqli_result implements IteratorAggregate { - /** @link mysqli-result.current-field */ + /** + * @readonly + * @link mysqli-result.current-field + */ public int $current_field; - /** @link mysqli-result.field-count */ + /** + * @readonly + * @link mysqli-result.field-count + */ public int $field_count; - /** @link mysqli-result.lengths */ + /** + * @readonly + * @link mysqli-result.lengths + */ public ?array $lengths; - /** @link mysqli-result.num-rows */ + /** + * @readonly + * @link mysqli-result.num-rows + */ public int|string $num_rows; public int $type; @@ -480,31 +546,58 @@ public function getIterator(): Iterator {} class mysqli_stmt { - /** @link mysqli-stmt.affected-rows */ + /** + * @readonly + * @link mysqli-stmt.affected-rows + */ public int|string $affected_rows; - /** @link mysqli-stmt.insert-id */ + /** + * @readonly + * @link mysqli-stmt.insert-id + */ public int|string $insert_id; - /** @link mysqli-stmt.num-rows */ + /** + * @readonly + * @link mysqli-stmt.num-rows + */ public int|string $num_rows; - /** @link mysqli-stmt.param-count */ + /** + * @readonly + * @link mysqli-stmt.param-count + */ public int $param_count; - /** @link mysqli-stmt.field-count */ + /** + * @readonly + * @link mysqli-stmt.field-count + */ public int $field_count; - /** @link mysqli-stmt.errno */ + /** + * @readonly + * @link mysqli-stmt.errno + */ public int $errno; - /** @link mysqli-stmt.error */ + /** + * @readonly + * @link mysqli-stmt.error + */ public string $error; - /** @link mysqli-stmt.error-list */ + /** + * @readonly + * @link mysqli-stmt.error-list + */ public array $error_list; - /** @link mysqli-stmt.sqlstate */ + /** + * @readonly + * @link mysqli-stmt.sqlstate + */ public string $sqlstate; public int $id; diff --git a/ext/mysqli/mysqli_arginfo.h b/ext/mysqli/mysqli_arginfo.h index b01179089a507..7dd1c6b0ce886 100644 --- a/ext/mysqli/mysqli_arginfo.h +++ b/ext/mysqli/mysqli_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 7901d2cbbf9663f2c0cc140870baed0fe04c2bd1 */ + * Stub hash: 9ef8917aa1b4fe7420fe12c5629ef00f36df3256 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mysqli_affected_rows, 0, 1, MAY_BE_LONG|MAY_BE_STRING) ZEND_ARG_OBJ_INFO(0, mysql, mysqli, 0) From c2eafc29f5ecf49c86e5a3cb5ba9d6beda6c5ba9 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Tue, 29 Mar 2022 11:48:40 +0200 Subject: [PATCH 39/63] Fix #81714: segfault when serializing finalized HashContext We must not allow to serialize already finalized `HashContext`s, since the internal context is already freed. Since there is not much point in serializing finalized `HashContext`s, we just bail out in that case. Closes GH-8265. --- NEWS | 3 +++ ext/hash/hash.c | 3 +++ ext/hash/tests/bug81714.phpt | 14 ++++++++++++++ 3 files changed, 20 insertions(+) create mode 100644 ext/hash/tests/bug81714.phpt diff --git a/NEWS b/NEWS index a969cf485b4b5..c26dfd03a1988 100644 --- a/NEWS +++ b/NEWS @@ -18,6 +18,9 @@ PHP NEWS - Filter: . Fixed signedness confusion in php_filter_validate_domain(). (cmb) +- Hash: + . Fixed bug #81714 (segfault when serializing finalized HashContext). (cmb) + - Intl: . Fixed bug GH-8142 (Compilation error on cygwin). (David Carlier) diff --git a/ext/hash/hash.c b/ext/hash/hash.c index 4e3820f35e6b4..a1ce4ffd17063 100644 --- a/ext/hash/hash.c +++ b/ext/hash/hash.c @@ -227,6 +227,9 @@ PHP_HASH_API int php_hash_serialize_spec(const php_hashcontext_object *hash, zva size_t pos = 0, max_alignment = 1; unsigned char *buf = (unsigned char *) hash->context; zval tmp; + if (buf == NULL) { + return FAILURE; + } array_init(zv); while (*spec != '\0' && *spec != '.') { char spec_ch = *spec; diff --git a/ext/hash/tests/bug81714.phpt b/ext/hash/tests/bug81714.phpt new file mode 100644 index 0000000000000..a151bda6884e1 --- /dev/null +++ b/ext/hash/tests/bug81714.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #81714 (segfault when serializing finalized HashContext) +--FILE-- +getMessage()); +} +?> +--EXPECTF-- +string(52) "HashContext for algorithm "md5" cannot be serialized" From 2fe35cf8078cbb2da3e57200b007588988dbdd2a Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Tue, 5 Apr 2022 13:35:59 +0100 Subject: [PATCH 40/63] Regenerate optimized func infos Using the --generate-optimizer-info option for ./build/gen_stubs.php --- Zend/Optimizer/zend_func_infos.h | 14 +++++++------- ext/sodium/libsodium_arginfo.h | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Zend/Optimizer/zend_func_infos.h b/Zend/Optimizer/zend_func_infos.h index d0d54989dc71d..ff89312fb3f4b 100644 --- a/Zend/Optimizer/zend_func_infos.h +++ b/Zend/Optimizer/zend_func_infos.h @@ -508,7 +508,7 @@ static const func_info_t func_infos[] = { F1("long2ip", MAY_BE_STRING|MAY_BE_FALSE), F1("getenv", MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_FALSE), F1("getopt", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_ARRAY_OF_FALSE|MAY_BE_FALSE), -#if HAVE_NANOSLEEP +#if defined(HAVE_NANOSLEEP) F1("time_nanosleep", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_LONG|MAY_BE_BOOL), #endif F1("get_current_user", MAY_BE_STRING), @@ -522,10 +522,10 @@ static const func_info_t func_infos[] = { F1("set_include_path", MAY_BE_STRING|MAY_BE_FALSE), F1("get_include_path", MAY_BE_STRING|MAY_BE_FALSE), F1("print_r", MAY_BE_STRING|MAY_BE_BOOL), -#if HAVE_GETSERVBYPORT +#if defined(HAVE_GETSERVBYPORT) F1("getservbyport", MAY_BE_STRING|MAY_BE_FALSE), #endif -#if HAVE_GETPROTOBYNUMBER +#if defined(HAVE_GETPROTOBYNUMBER) F1("getprotobynumber", MAY_BE_STRING|MAY_BE_FALSE), #endif F1("parse_ini_file", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_FALSE|MAY_BE_ARRAY_OF_TRUE|MAY_BE_ARRAY_OF_LONG|MAY_BE_ARRAY_OF_DOUBLE|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_ARRAY_OF_NULL|MAY_BE_FALSE), @@ -538,7 +538,7 @@ static const func_info_t func_infos[] = { #endif F1("get_browser", MAY_BE_OBJECT|MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_FALSE), F1("crypt", MAY_BE_STRING), -#if HAVE_STRPTIME +#if defined(HAVE_STRPTIME) F1("strptime", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_FALSE), #endif #if defined(HAVE_GETHOSTNAME) @@ -547,7 +547,7 @@ static const func_info_t func_infos[] = { F1("gethostbyaddr", MAY_BE_STRING|MAY_BE_FALSE), F1("gethostbyname", MAY_BE_STRING), F1("gethostbynamel", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_FALSE), -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) F1("dns_get_record", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_FALSE), #endif F1("md5", MAY_BE_STRING), @@ -573,7 +573,7 @@ static const func_info_t func_infos[] = { F1("get_html_translation_table", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING), F1("bin2hex", MAY_BE_STRING), F1("hex2bin", MAY_BE_STRING|MAY_BE_FALSE), -#if HAVE_NL_LANGINFO +#if defined(HAVE_NL_LANGINFO) F1("nl_langinfo", MAY_BE_STRING|MAY_BE_FALSE), #endif F1("wordwrap", MAY_BE_STRING), @@ -701,7 +701,7 @@ static const func_info_t func_infos[] = { F1("stream_socket_server", MAY_BE_RESOURCE|MAY_BE_FALSE), F1("stream_socket_accept", MAY_BE_RESOURCE|MAY_BE_FALSE), F1("stream_socket_recvfrom", MAY_BE_STRING|MAY_BE_FALSE), -#if HAVE_SOCKETPAIR +#if defined(HAVE_SOCKETPAIR) F1("stream_socket_pair", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_RESOURCE|MAY_BE_FALSE), #endif F1("stream_get_contents", MAY_BE_STRING|MAY_BE_FALSE), diff --git a/ext/sodium/libsodium_arginfo.h b/ext/sodium/libsodium_arginfo.h index a45bd5f59ea03..a7351c9bef165 100644 --- a/ext/sodium/libsodium_arginfo.h +++ b/ext/sodium/libsodium_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: e172b900040a9d9ac98207c638fdeb3a0c6a13e6 */ + * Stub hash: 7ccd5115d292690c0cfcfeeb2ff5adf7ac7a616a */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sodium_crypto_aead_aes256gcm_is_available, 0, 0, _IS_BOOL, 0) ZEND_END_ARG_INFO() From d03a94a0a6f81c8255b012e9e8f1226467ea3b53 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Tue, 5 Apr 2022 14:56:49 +0200 Subject: [PATCH 41/63] Use proper types in sodium_crypto_stream_xchacha20_xor_ic() Most importantly, `ic` needs to be of type `zend_long`, not `zend_long*`. Closes GH-8302. --- ext/sodium/libsodium.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/sodium/libsodium.c b/ext/sodium/libsodium.c index 54d687cd736c0..edd807cbe9864 100644 --- a/ext/sodium/libsodium.c +++ b/ext/sodium/libsodium.c @@ -1585,7 +1585,7 @@ PHP_FUNCTION(sodium_crypto_stream_xchacha20_xor_ic) unsigned char *key; unsigned char *msg; unsigned char *nonce; - zend_long *ic; + zend_long ic; size_t ciphertext_len; size_t key_len; @@ -1612,7 +1612,7 @@ PHP_FUNCTION(sodium_crypto_stream_xchacha20_xor_ic) ciphertext = zend_string_checked_alloc((size_t) ciphertext_len, 0); if (crypto_stream_xchacha20_xor_ic((unsigned char *) ZSTR_VAL(ciphertext), msg, (unsigned long long) msg_len, nonce, - (unsigned long long) ic, key) != 0) { + (uint64_t) ic, key) != 0) { zend_string_free(ciphertext); zend_throw_exception(sodium_exception_ce, "internal error", 0); RETURN_THROWS(); From 1bd9890b20fddbcc8b251210175ddb722bce926c Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Wed, 6 Apr 2022 15:25:14 +0200 Subject: [PATCH 42/63] Fix GH-8310: Registry settings are no longer recognized `zend_file_handle->filename` is a `zend_string*` pointer now, so we must not cast to `char*` but rather pass the underlying `char*`. Closes GH-8313. --- NEWS | 3 +++ main/main.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 3cef887680da0..01271caff937e 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,9 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? ????, PHP 8.1.6 +- Core: + . Fixed bug GH-8310 (Registry settings are no longer recognized). (cmb) + - Date: . Fixed bug GH-7752 (DateTimeZone::getTransitions() returns insufficient data). (Derick) diff --git a/main/main.c b/main/main.c index 2a417987f3148..dc705fcdbdfe9 100644 --- a/main/main.c +++ b/main/main.c @@ -2489,7 +2489,7 @@ PHPAPI int php_execute_script(zend_file_handle *primary_file) #ifdef PHP_WIN32 if(primary_file->filename) { - UpdateIniFromRegistry((char*)primary_file->filename); + UpdateIniFromRegistry(ZSTR_VAL(primary_file->filename)); } #endif @@ -2581,7 +2581,7 @@ PHPAPI int php_execute_simple_script(zend_file_handle *primary_file, zval *ret) zend_try { #ifdef PHP_WIN32 if(primary_file->filename) { - UpdateIniFromRegistry((char*)primary_file->filename); + UpdateIniFromRegistry(ZSTR_VAL(primary_file->filename)); } #endif From 8093ed61683e50bc0d9e2e854c6e8327a259461b Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Fri, 1 Apr 2022 16:43:35 +0100 Subject: [PATCH 43/63] Implemented FR #51634: Can't post multiple fields with the same name This PR allows for multiple values with the same field name to be sent to an HTTP server. This server can't be PHP, because PHP's POST processing does not allow for two the same field names. But sending multiple fields with the same name is required for some operations by RFC 7578. This PR allows you to attach an array of values to a field name, and each of these will then be sent as its own distinct multipart/form-data field. --- ext/curl/interface.c | 85 ++++++++++++++++------- ext/curl/tests/curl_postfields_array.phpt | 63 +++++++++++++++++ 2 files changed, 121 insertions(+), 27 deletions(-) create mode 100644 ext/curl/tests/curl_postfields_array.phpt diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 3292458d63554..0062586c64ec9 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -1991,6 +1991,54 @@ static void free_cb(void *arg) /* {{{ */ /* }}} */ #endif +static inline CURLcode add_simple_field(curl_mime *mime, zend_string *string_key, zval *current) +{ + CURLcode error = CURLE_OK; +#if LIBCURL_VERSION_NUM >= 0x073800 /* 7.56.0 */ + curl_mimepart *part; + CURLcode form_error; +#else + struct HttpPost *first = NULL; + struct HttpPost *last = NULL; + CURLFORMcode form_error; +#endif + zend_string *postval, *tmp_postval; + + postval = zval_get_tmp_string(current, &tmp_postval); + +#if LIBCURL_VERSION_NUM >= 0x073800 /* 7.56.0 */ + part = curl_mime_addpart(mime); + if (part == NULL) { + zend_tmp_string_release(tmp_postval); + zend_string_release_ex(string_key, 0); + return CURLE_OUT_OF_MEMORY; + } + if ((form_error = curl_mime_name(part, ZSTR_VAL(string_key))) != CURLE_OK + || (form_error = curl_mime_data(part, ZSTR_VAL(postval), ZSTR_LEN(postval))) != CURLE_OK) { + error = form_error; + } +#else + /* The arguments after _NAMELENGTH and _CONTENTSLENGTH + * must be explicitly cast to long in curl_formadd + * use since curl needs a long not an int. */ + form_error = curl_formadd(&first, &last, + CURLFORM_COPYNAME, ZSTR_VAL(string_key), + CURLFORM_NAMELENGTH, ZSTR_LEN(string_key), + CURLFORM_COPYCONTENTS, ZSTR_VAL(postval), + CURLFORM_CONTENTSLENGTH, ZSTR_LEN(postval), + CURLFORM_END + ); + + if (form_error != CURL_FORMADD_OK) { + /* Not nice to convert between enums but we only have place for one error type */ + error = (CURLcode)form_error; + } +#endif + zend_tmp_string_release(tmp_postval); + + return error; +} + static inline zend_result build_mime_structure_from_hash(php_curl *ch, zval *zpostfields) /* {{{ */ { HashTable *postfields = Z_ARRVAL_P(zpostfields); @@ -2018,7 +2066,7 @@ static inline zend_result build_mime_structure_from_hash(php_curl *ch, zval *zpo #endif ZEND_HASH_FOREACH_KEY_VAL(postfields, num_key, string_key, current) { - zend_string *postval, *tmp_postval; + zend_string *postval; /* Pretend we have a string_key here */ if (!string_key) { string_key = zend_long_to_str(num_key); @@ -2181,36 +2229,19 @@ static inline zend_result build_mime_structure_from_hash(php_curl *ch, zval *zpo continue; } - postval = zval_get_tmp_string(current, &tmp_postval); + if (Z_TYPE_P(current) == IS_ARRAY) { + zval *current_element; + + ZEND_HASH_FOREACH_VAL(HASH_OF(current), current_element) { + add_simple_field(mime, string_key, current_element); + } ZEND_HASH_FOREACH_END(); -#if LIBCURL_VERSION_NUM >= 0x073800 /* 7.56.0 */ - part = curl_mime_addpart(mime); - if (part == NULL) { - zend_tmp_string_release(tmp_postval); zend_string_release_ex(string_key, 0); - return FAILURE; - } - if ((form_error = curl_mime_name(part, ZSTR_VAL(string_key))) != CURLE_OK - || (form_error = curl_mime_data(part, ZSTR_VAL(postval), ZSTR_LEN(postval))) != CURLE_OK) { - error = form_error; + continue; } -#else - /* The arguments after _NAMELENGTH and _CONTENTSLENGTH - * must be explicitly cast to long in curl_formadd - * use since curl needs a long not an int. */ - form_error = curl_formadd(&first, &last, - CURLFORM_COPYNAME, ZSTR_VAL(string_key), - CURLFORM_NAMELENGTH, ZSTR_LEN(string_key), - CURLFORM_COPYCONTENTS, ZSTR_VAL(postval), - CURLFORM_CONTENTSLENGTH, ZSTR_LEN(postval), - CURLFORM_END); - if (form_error != CURL_FORMADD_OK) { - /* Not nice to convert between enums but we only have place for one error type */ - error = (CURLcode)form_error; - } -#endif - zend_tmp_string_release(tmp_postval); + add_simple_field(mime, string_key, current); + zend_string_release_ex(string_key, 0); } ZEND_HASH_FOREACH_END(); diff --git a/ext/curl/tests/curl_postfields_array.phpt b/ext/curl/tests/curl_postfields_array.phpt new file mode 100644 index 0000000000000..079675cf08f78 --- /dev/null +++ b/ext/curl/tests/curl_postfields_array.phpt @@ -0,0 +1,63 @@ +--TEST-- +CURLOPT_POSTFIELDS with multi-value fields +--EXTENSIONS-- +sockets +--FILE-- +\n"; + return; +} + +$url = "http://127.0.0.1:29999/get.inc?test=raw"; + +$fields = [ + 'single' => 'SingleValue', + 'multi' => [ + 'Multi1', + 'Multi2', + ] +]; + +$options = [ + CURLOPT_POST => 1, + CURLOPT_HEADER => 0, + CURLOPT_URL => $url, + CURLOPT_FRESH_CONNECT => 1, + CURLOPT_RETURNTRANSFER => 1, + CURLOPT_FORBID_REUSE => 1, + CURLOPT_TIMEOUT => 1, + CURLOPT_POSTFIELDS => $fields, +]; + +$ch = curl_init(); +curl_setopt_array($ch, $options); + +$curl_content = curl_exec($ch); +curl_close($ch); + +$conn = stream_socket_accept($socket); +echo stream_get_contents($conn); +?> +--EXPECTF-- +POST /get.inc?test=raw HTTP/1.1 +Host: %s +Accept: */* +Content-Length: %d +Content-Type: multipart/form-data; boundary=------------------------%s + +--------------------------%s +Content-Disposition: form-data; name="single" + +SingleValue +--------------------------%s +Content-Disposition: form-data; name="multi" + +Multi1 +--------------------------%s +Content-Disposition: form-data; name="multi" + +Multi2 +--------------------------%s-- From 341bea37e875472e419a3c07abbfe6de22441b19 Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Thu, 7 Apr 2022 10:45:17 +0100 Subject: [PATCH 44/63] Updated to version 2022.1 (2022a) --- ext/date/lib/timezonedb.h | 2136 +++++++++++++++++++------------------ 1 file changed, 1072 insertions(+), 1064 deletions(-) diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h index 411ef5b44254e..60cc4b3ab6cc9 100644 --- a/ext/date/lib/timezonedb.h +++ b/ext/date/lib/timezonedb.h @@ -270,340 +270,340 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[595] = { { "Asia/Dushanbe" , 0x0247C2 }, { "Asia/Famagusta" , 0x02493C }, { "Asia/Gaza" , 0x024D03 }, - { "Asia/Harbin" , 0x0251E7 }, - { "Asia/Hebron" , 0x02537C }, - { "Asia/Ho_Chi_Minh" , 0x025871 }, - { "Asia/Hong_Kong" , 0x025969 }, - { "Asia/Hovd" , 0x025C7C }, - { "Asia/Irkutsk" , 0x025F05 }, - { "Asia/Istanbul" , 0x026223 }, - { "Asia/Jakarta" , 0x0266DF }, - { "Asia/Jayapura" , 0x0267F0 }, - { "Asia/Jerusalem" , 0x0268DD }, - { "Asia/Kabul" , 0x026D1B }, - { "Asia/Kamchatka" , 0x026DC6 }, - { "Asia/Karachi" , 0x0270BB }, - { "Asia/Kashgar" , 0x0271D1 }, - { "Asia/Kathmandu" , 0x027262 }, - { "Asia/Katmandu" , 0x02730F }, - { "Asia/Khandyga" , 0x0273BC }, - { "Asia/Kolkata" , 0x0276ED }, - { "Asia/Krasnoyarsk" , 0x0277D5 }, - { "Asia/Kuala_Lumpur" , 0x027ADF }, - { "Asia/Kuching" , 0x027BFF }, - { "Asia/Kuwait" , 0x027D59 }, - { "Asia/Macao" , 0x027DEA }, - { "Asia/Macau" , 0x02810D }, - { "Asia/Magadan" , 0x028430 }, - { "Asia/Makassar" , 0x02873B }, - { "Asia/Manila" , 0x02884E }, - { "Asia/Muscat" , 0x028948 }, - { "Asia/Nicosia" , 0x0289D9 }, - { "Asia/Novokuznetsk" , 0x028C4D }, - { "Asia/Novosibirsk" , 0x028F40 }, - { "Asia/Omsk" , 0x029251 }, - { "Asia/Oral" , 0x02954F }, - { "Asia/Phnom_Penh" , 0x0297DB }, - { "Asia/Pontianak" , 0x02987F }, - { "Asia/Pyongyang" , 0x029998 }, - { "Asia/Qatar" , 0x029A5B }, - { "Asia/Qostanay" , 0x029AFF }, - { "Asia/Qyzylorda" , 0x029D8C }, - { "Asia/Rangoon" , 0x02A025 }, - { "Asia/Riyadh" , 0x02A0EC }, - { "Asia/Saigon" , 0x02A17D }, - { "Asia/Sakhalin" , 0x02A275 }, - { "Asia/Samarkand" , 0x02A58C }, - { "Asia/Seoul" , 0x02A717 }, - { "Asia/Shanghai" , 0x02A8C2 }, - { "Asia/Singapore" , 0x02AA63 }, - { "Asia/Srednekolymsk" , 0x02AB6F }, - { "Asia/Taipei" , 0x02AE83 }, - { "Asia/Tashkent" , 0x02B08E }, - { "Asia/Tbilisi" , 0x02B219 }, - { "Asia/Tehran" , 0x02B49A }, - { "Asia/Tel_Aviv" , 0x02BC7A }, - { "Asia/Thimbu" , 0x02C0B8 }, - { "Asia/Thimphu" , 0x02C15E }, - { "Asia/Tokyo" , 0x02C204 }, - { "Asia/Tomsk" , 0x02C2E5 }, - { "Asia/Ujung_Pandang" , 0x02C5F0 }, - { "Asia/Ulaanbaatar" , 0x02C6BA }, - { "Asia/Ulan_Bator" , 0x02C92D }, - { "Asia/Urumqi" , 0x02CB8B }, - { "Asia/Ust-Nera" , 0x02CC29 }, - { "Asia/Vientiane" , 0x02CF4C }, - { "Asia/Vladivostok" , 0x02CFF0 }, - { "Asia/Yakutsk" , 0x02D2F5 }, - { "Asia/Yangon" , 0x02D5F9 }, - { "Asia/Yekaterinburg" , 0x02D6C0 }, - { "Asia/Yerevan" , 0x02D9D2 }, - { "Atlantic/Azores" , 0x02DCA2 }, - { "Atlantic/Bermuda" , 0x02E261 }, - { "Atlantic/Canary" , 0x02E66D }, - { "Atlantic/Cape_Verde" , 0x02E865 }, - { "Atlantic/Faeroe" , 0x02E920 }, - { "Atlantic/Faroe" , 0x02EAE5 }, - { "Atlantic/Jan_Mayen" , 0x02ECAA }, - { "Atlantic/Madeira" , 0x02EF5A }, - { "Atlantic/Reykjavik" , 0x02F522 }, - { "Atlantic/South_Georgia" , 0x02F81F }, - { "Atlantic/St_Helena" , 0x02F8AF }, - { "Atlantic/Stanley" , 0x02F93D }, - { "Australia/ACT" , 0x02FC5E }, - { "Australia/Adelaide" , 0x02FFF2 }, - { "Australia/Brisbane" , 0x0303A6 }, - { "Australia/Broken_Hill" , 0x0304EA }, - { "Australia/Canberra" , 0x0308BF }, - { "Australia/Currie" , 0x030C53 }, - { "Australia/Darwin" , 0x03104A }, - { "Australia/Eucla" , 0x031152 }, - { "Australia/Hobart" , 0x0312B1 }, - { "Australia/LHI" , 0x0316B0 }, - { "Australia/Lindeman" , 0x031970 }, - { "Australia/Lord_Howe" , 0x031AE0 }, - { "Australia/Melbourne" , 0x031DB0 }, - { "Australia/North" , 0x03214C }, - { "Australia/NSW" , 0x032242 }, - { "Australia/Perth" , 0x0325D6 }, - { "Australia/Queensland" , 0x032732 }, - { "Australia/South" , 0x03285F }, - { "Australia/Sydney" , 0x032C04 }, - { "Australia/Tasmania" , 0x032FB4 }, - { "Australia/Victoria" , 0x0333AB }, - { "Australia/West" , 0x03373F }, - { "Australia/Yancowinna" , 0x03387D }, - { "Brazil/Acre" , 0x033C36 }, - { "Brazil/DeNoronha" , 0x033DE4 }, - { "Brazil/East" , 0x033FD4 }, - { "Brazil/West" , 0x034398 }, - { "Canada/Atlantic" , 0x034540 }, - { "Canada/Central" , 0x034BD4 }, - { "Canada/Eastern" , 0x0350EE }, - { "Canada/Mountain" , 0x0357AF }, - { "Canada/Newfoundland" , 0x035B85 }, - { "Canada/Pacific" , 0x0362E7 }, - { "Canada/Saskatchewan" , 0x036825 }, - { "Canada/Yukon" , 0x036AAF }, - { "CET" , 0x036EC0 }, - { "Chile/Continental" , 0x037139 }, - { "Chile/EasterIsland" , 0x037647 }, - { "CST6CDT" , 0x037AA1 }, - { "Cuba" , 0x037E64 }, - { "EET" , 0x0382CD }, - { "Egypt" , 0x0384CA }, - { "Eire" , 0x0389D2 }, - { "EST" , 0x038FB6 }, - { "EST5EDT" , 0x039031 }, - { "Etc/GMT" , 0x0393F4 }, - { "Etc/GMT+0" , 0x03946F }, - { "Etc/GMT+1" , 0x0394EA }, - { "Etc/GMT+10" , 0x039567 }, - { "Etc/GMT+11" , 0x0395E5 }, - { "Etc/GMT+12" , 0x039663 }, - { "Etc/GMT+2" , 0x0396E1 }, - { "Etc/GMT+3" , 0x03975E }, - { "Etc/GMT+4" , 0x0397DB }, - { "Etc/GMT+5" , 0x039858 }, - { "Etc/GMT+6" , 0x0398D5 }, - { "Etc/GMT+7" , 0x039952 }, - { "Etc/GMT+8" , 0x0399CF }, - { "Etc/GMT+9" , 0x039A4C }, - { "Etc/GMT-0" , 0x039AC9 }, - { "Etc/GMT-1" , 0x039B44 }, - { "Etc/GMT-10" , 0x039BC2 }, - { "Etc/GMT-11" , 0x039C41 }, - { "Etc/GMT-12" , 0x039CC0 }, - { "Etc/GMT-13" , 0x039D3F }, - { "Etc/GMT-14" , 0x039DBE }, - { "Etc/GMT-2" , 0x039E3D }, - { "Etc/GMT-3" , 0x039EBB }, - { "Etc/GMT-4" , 0x039F39 }, - { "Etc/GMT-5" , 0x039FB7 }, - { "Etc/GMT-6" , 0x03A035 }, - { "Etc/GMT-7" , 0x03A0B3 }, - { "Etc/GMT-8" , 0x03A131 }, - { "Etc/GMT-9" , 0x03A1AF }, - { "Etc/GMT0" , 0x03A22D }, - { "Etc/Greenwich" , 0x03A2A8 }, - { "Etc/UCT" , 0x03A323 }, - { "Etc/Universal" , 0x03A39E }, - { "Etc/UTC" , 0x03A419 }, - { "Etc/Zulu" , 0x03A494 }, - { "Europe/Amsterdam" , 0x03A50F }, - { "Europe/Andorra" , 0x03A94A }, - { "Europe/Astrakhan" , 0x03AADB }, - { "Europe/Athens" , 0x03ADCF }, - { "Europe/Belfast" , 0x03B085 }, - { "Europe/Belgrade" , 0x03B6D0 }, - { "Europe/Berlin" , 0x03B8BA }, - { "Europe/Bratislava" , 0x03BB9B }, - { "Europe/Brussels" , 0x03BE7A }, - { "Europe/Bucharest" , 0x03C2D5 }, - { "Europe/Budapest" , 0x03C576 }, - { "Europe/Busingen" , 0x03C880 }, - { "Europe/Chisinau" , 0x03CA85 }, - { "Europe/Copenhagen" , 0x03CD84 }, - { "Europe/Dublin" , 0x03CFFF }, - { "Europe/Gibraltar" , 0x03D5E3 }, - { "Europe/Guernsey" , 0x03DAB3 }, - { "Europe/Helsinki" , 0x03E0FE }, - { "Europe/Isle_of_Man" , 0x03E2EB }, - { "Europe/Istanbul" , 0x03E936 }, - { "Europe/Jersey" , 0x03EDF2 }, - { "Europe/Kaliningrad" , 0x03F43D }, - { "Europe/Kiev" , 0x03F7E5 }, - { "Europe/Kirov" , 0x03FA2A }, - { "Europe/Lisbon" , 0x03FD11 }, - { "Europe/Ljubljana" , 0x0402DE }, - { "Europe/London" , 0x0404C8 }, - { "Europe/Luxembourg" , 0x040B13 }, - { "Europe/Madrid" , 0x040F5E }, - { "Europe/Malta" , 0x0412FB }, - { "Europe/Mariehamn" , 0x0416A7 }, - { "Europe/Minsk" , 0x041894 }, - { "Europe/Monaco" , 0x041BC8 }, - { "Europe/Moscow" , 0x04202E }, - { "Europe/Nicosia" , 0x0423DA }, - { "Europe/Oslo" , 0x04263B }, - { "Europe/Paris" , 0x0428EB }, - { "Europe/Podgorica" , 0x042D48 }, - { "Europe/Prague" , 0x042F32 }, - { "Europe/Riga" , 0x043211 }, - { "Europe/Rome" , 0x0434D3 }, - { "Europe/Samara" , 0x043892 }, - { "Europe/San_Marino" , 0x043B93 }, - { "Europe/Sarajevo" , 0x043F52 }, - { "Europe/Saratov" , 0x04413C }, - { "Europe/Simferopol" , 0x04442E }, - { "Europe/Skopje" , 0x0447A1 }, - { "Europe/Sofia" , 0x04498B }, - { "Europe/Stockholm" , 0x044BE7 }, - { "Europe/Tallinn" , 0x044DE4 }, - { "Europe/Tirane" , 0x045093 }, - { "Europe/Tiraspol" , 0x0452FB }, - { "Europe/Ulyanovsk" , 0x0455FA }, - { "Europe/Uzhgorod" , 0x045910 }, - { "Europe/Vaduz" , 0x045B3C }, - { "Europe/Vatican" , 0x045D39 }, - { "Europe/Vienna" , 0x0460F8 }, - { "Europe/Vilnius" , 0x046396 }, - { "Europe/Volgograd" , 0x046646 }, - { "Europe/Warsaw" , 0x046943 }, - { "Europe/Zagreb" , 0x046CEA }, - { "Europe/Zaporozhye" , 0x046ED4 }, - { "Europe/Zurich" , 0x04712B }, - { "Factory" , 0x047328 }, - { "GB" , 0x0473A5 }, - { "GB-Eire" , 0x0479F0 }, - { "GMT" , 0x04803B }, - { "GMT+0" , 0x0480B6 }, - { "GMT-0" , 0x048131 }, - { "GMT0" , 0x0481AC }, - { "Greenwich" , 0x048227 }, - { "Hongkong" , 0x0482A2 }, - { "HST" , 0x0485B5 }, - { "Iceland" , 0x048631 }, - { "Indian/Antananarivo" , 0x04892E }, - { "Indian/Chagos" , 0x0489F9 }, - { "Indian/Christmas" , 0x048A9D }, - { "Indian/Cocos" , 0x048B2E }, - { "Indian/Comoro" , 0x048BC6 }, - { "Indian/Kerguelen" , 0x048C91 }, - { "Indian/Mahe" , 0x048D22 }, - { "Indian/Maldives" , 0x048DB3 }, - { "Indian/Mauritius" , 0x048E57 }, - { "Indian/Mayotte" , 0x048F16 }, - { "Indian/Reunion" , 0x048FE1 }, - { "Iran" , 0x049072 }, - { "Israel" , 0x049852 }, - { "Jamaica" , 0x049C90 }, - { "Japan" , 0x049DEF }, - { "Kwajalein" , 0x049ED0 }, - { "Libya" , 0x049FB7 }, - { "MET" , 0x04A172 }, - { "Mexico/BajaNorte" , 0x04A3EB }, - { "Mexico/BajaSur" , 0x04A7F8 }, - { "Mexico/General" , 0x04A973 }, - { "MST" , 0x04AB1B }, - { "MST7MDT" , 0x04AB96 }, - { "Navajo" , 0x04AF59 }, - { "NZ" , 0x04B377 }, - { "NZ-CHAT" , 0x04B796 }, - { "Pacific/Apia" , 0x04BACA }, - { "Pacific/Auckland" , 0x04BC6D }, - { "Pacific/Bougainville" , 0x04C0A4 }, - { "Pacific/Chatham" , 0x04C185 }, - { "Pacific/Chuuk" , 0x04C4C8 }, - { "Pacific/Easter" , 0x04C5A6 }, - { "Pacific/Efate" , 0x04CA0D }, - { "Pacific/Enderbury" , 0x04CB6F }, - { "Pacific/Fakaofo" , 0x04CC27 }, - { "Pacific/Fiji" , 0x04CCCC }, - { "Pacific/Funafuti" , 0x04CE84 }, - { "Pacific/Galapagos" , 0x04CF16 }, - { "Pacific/Gambier" , 0x04CFE2 }, - { "Pacific/Guadalcanal" , 0x04D081 }, - { "Pacific/Guam" , 0x04D113 }, - { "Pacific/Honolulu" , 0x04D27D }, - { "Pacific/Johnston" , 0x04D36C }, - { "Pacific/Kanton" , 0x04D455 }, - { "Pacific/Kiritimati" , 0x04D51C }, - { "Pacific/Kosrae" , 0x04D5E2 }, - { "Pacific/Kwajalein" , 0x04D6E6 }, - { "Pacific/Majuro" , 0x04D7D6 }, - { "Pacific/Marquesas" , 0x04D8D9 }, - { "Pacific/Midway" , 0x04D981 }, - { "Pacific/Nauru" , 0x04DA2D }, - { "Pacific/Niue" , 0x04DAF0 }, - { "Pacific/Norfolk" , 0x04DB96 }, - { "Pacific/Noumea" , 0x04DC99 }, - { "Pacific/Pago_Pago" , 0x04DD6B }, - { "Pacific/Palau" , 0x04DE09 }, - { "Pacific/Pitcairn" , 0x04DEA9 }, - { "Pacific/Pohnpei" , 0x04DF4E }, - { "Pacific/Ponape" , 0x04E03E }, - { "Pacific/Port_Moresby" , 0x04E120 }, - { "Pacific/Rarotonga" , 0x04E1E3 }, - { "Pacific/Saipan" , 0x04E385 }, - { "Pacific/Samoa" , 0x04E4EF }, - { "Pacific/Tahiti" , 0x04E58D }, - { "Pacific/Tarawa" , 0x04E62D }, - { "Pacific/Tongatapu" , 0x04E6CE }, - { "Pacific/Truk" , 0x04E7C7 }, - { "Pacific/Wake" , 0x04E896 }, - { "Pacific/Wallis" , 0x04E933 }, - { "Pacific/Yap" , 0x04E9C5 }, - { "Poland" , 0x04EA94 }, - { "Portugal" , 0x04EE3B }, - { "PRC" , 0x04F3F5 }, - { "PST8PDT" , 0x04F58A }, - { "ROC" , 0x04F94D }, - { "ROK" , 0x04FB58 }, - { "Singapore" , 0x04FD03 }, - { "Turkey" , 0x04FE0F }, - { "UCT" , 0x0502CB }, - { "Universal" , 0x050346 }, - { "US/Alaska" , 0x0503C1 }, - { "US/Aleutian" , 0x05079E }, - { "US/Arizona" , 0x050B73 }, - { "US/Central" , 0x050C6F }, - { "US/East-Indiana" , 0x051355 }, - { "US/Eastern" , 0x051574 }, - { "US/Hawaii" , 0x051C50 }, - { "US/Indiana-Starke" , 0x051D39 }, - { "US/Michigan" , 0x05213D }, - { "US/Mountain" , 0x0524CC }, - { "US/Pacific" , 0x0528EA }, - { "US/Samoa" , 0x052E04 }, - { "UTC" , 0x052EA2 }, - { "W-SU" , 0x052F1D }, - { "WET" , 0x0532B5 }, - { "Zulu" , 0x0534AF }, + { "Asia/Harbin" , 0x0251F1 }, + { "Asia/Hebron" , 0x025386 }, + { "Asia/Ho_Chi_Minh" , 0x025885 }, + { "Asia/Hong_Kong" , 0x02597D }, + { "Asia/Hovd" , 0x025C90 }, + { "Asia/Irkutsk" , 0x025F19 }, + { "Asia/Istanbul" , 0x026237 }, + { "Asia/Jakarta" , 0x0266F3 }, + { "Asia/Jayapura" , 0x026804 }, + { "Asia/Jerusalem" , 0x0268F1 }, + { "Asia/Kabul" , 0x026D2F }, + { "Asia/Kamchatka" , 0x026DDA }, + { "Asia/Karachi" , 0x0270CF }, + { "Asia/Kashgar" , 0x0271E5 }, + { "Asia/Kathmandu" , 0x027276 }, + { "Asia/Katmandu" , 0x027323 }, + { "Asia/Khandyga" , 0x0273D0 }, + { "Asia/Kolkata" , 0x027701 }, + { "Asia/Krasnoyarsk" , 0x0277E9 }, + { "Asia/Kuala_Lumpur" , 0x027AF3 }, + { "Asia/Kuching" , 0x027C13 }, + { "Asia/Kuwait" , 0x027D6D }, + { "Asia/Macao" , 0x027DFE }, + { "Asia/Macau" , 0x028121 }, + { "Asia/Magadan" , 0x028444 }, + { "Asia/Makassar" , 0x02874F }, + { "Asia/Manila" , 0x028862 }, + { "Asia/Muscat" , 0x02895C }, + { "Asia/Nicosia" , 0x0289ED }, + { "Asia/Novokuznetsk" , 0x028C61 }, + { "Asia/Novosibirsk" , 0x028F54 }, + { "Asia/Omsk" , 0x029265 }, + { "Asia/Oral" , 0x029563 }, + { "Asia/Phnom_Penh" , 0x0297EF }, + { "Asia/Pontianak" , 0x029893 }, + { "Asia/Pyongyang" , 0x0299AC }, + { "Asia/Qatar" , 0x029A6F }, + { "Asia/Qostanay" , 0x029B13 }, + { "Asia/Qyzylorda" , 0x029DA0 }, + { "Asia/Rangoon" , 0x02A039 }, + { "Asia/Riyadh" , 0x02A100 }, + { "Asia/Saigon" , 0x02A191 }, + { "Asia/Sakhalin" , 0x02A289 }, + { "Asia/Samarkand" , 0x02A5A0 }, + { "Asia/Seoul" , 0x02A72B }, + { "Asia/Shanghai" , 0x02A8D6 }, + { "Asia/Singapore" , 0x02AA77 }, + { "Asia/Srednekolymsk" , 0x02AB83 }, + { "Asia/Taipei" , 0x02AE97 }, + { "Asia/Tashkent" , 0x02B0A2 }, + { "Asia/Tbilisi" , 0x02B22D }, + { "Asia/Tehran" , 0x02B4AE }, + { "Asia/Tel_Aviv" , 0x02BC8E }, + { "Asia/Thimbu" , 0x02C0CC }, + { "Asia/Thimphu" , 0x02C172 }, + { "Asia/Tokyo" , 0x02C218 }, + { "Asia/Tomsk" , 0x02C2F9 }, + { "Asia/Ujung_Pandang" , 0x02C604 }, + { "Asia/Ulaanbaatar" , 0x02C6CE }, + { "Asia/Ulan_Bator" , 0x02C941 }, + { "Asia/Urumqi" , 0x02CB9F }, + { "Asia/Ust-Nera" , 0x02CC3D }, + { "Asia/Vientiane" , 0x02CF60 }, + { "Asia/Vladivostok" , 0x02D004 }, + { "Asia/Yakutsk" , 0x02D309 }, + { "Asia/Yangon" , 0x02D60D }, + { "Asia/Yekaterinburg" , 0x02D6D4 }, + { "Asia/Yerevan" , 0x02D9E6 }, + { "Atlantic/Azores" , 0x02DCB6 }, + { "Atlantic/Bermuda" , 0x02E275 }, + { "Atlantic/Canary" , 0x02E681 }, + { "Atlantic/Cape_Verde" , 0x02E879 }, + { "Atlantic/Faeroe" , 0x02E934 }, + { "Atlantic/Faroe" , 0x02EAF9 }, + { "Atlantic/Jan_Mayen" , 0x02ECBE }, + { "Atlantic/Madeira" , 0x02EF6E }, + { "Atlantic/Reykjavik" , 0x02F536 }, + { "Atlantic/South_Georgia" , 0x02F833 }, + { "Atlantic/St_Helena" , 0x02F8C3 }, + { "Atlantic/Stanley" , 0x02F951 }, + { "Australia/ACT" , 0x02FC72 }, + { "Australia/Adelaide" , 0x030006 }, + { "Australia/Brisbane" , 0x0303BA }, + { "Australia/Broken_Hill" , 0x0304FE }, + { "Australia/Canberra" , 0x0308D3 }, + { "Australia/Currie" , 0x030C67 }, + { "Australia/Darwin" , 0x03105E }, + { "Australia/Eucla" , 0x031166 }, + { "Australia/Hobart" , 0x0312C5 }, + { "Australia/LHI" , 0x0316C4 }, + { "Australia/Lindeman" , 0x031984 }, + { "Australia/Lord_Howe" , 0x031AF4 }, + { "Australia/Melbourne" , 0x031DC4 }, + { "Australia/North" , 0x032160 }, + { "Australia/NSW" , 0x032256 }, + { "Australia/Perth" , 0x0325EA }, + { "Australia/Queensland" , 0x032746 }, + { "Australia/South" , 0x032873 }, + { "Australia/Sydney" , 0x032C18 }, + { "Australia/Tasmania" , 0x032FC8 }, + { "Australia/Victoria" , 0x0333BF }, + { "Australia/West" , 0x033753 }, + { "Australia/Yancowinna" , 0x033891 }, + { "Brazil/Acre" , 0x033C4A }, + { "Brazil/DeNoronha" , 0x033DF8 }, + { "Brazil/East" , 0x033FE8 }, + { "Brazil/West" , 0x0343AC }, + { "Canada/Atlantic" , 0x034554 }, + { "Canada/Central" , 0x034BE8 }, + { "Canada/Eastern" , 0x035102 }, + { "Canada/Mountain" , 0x0357C3 }, + { "Canada/Newfoundland" , 0x035B99 }, + { "Canada/Pacific" , 0x0362FB }, + { "Canada/Saskatchewan" , 0x036839 }, + { "Canada/Yukon" , 0x036AC3 }, + { "CET" , 0x036ED4 }, + { "Chile/Continental" , 0x03714D }, + { "Chile/EasterIsland" , 0x03765B }, + { "CST6CDT" , 0x037AB5 }, + { "Cuba" , 0x037E78 }, + { "EET" , 0x0382E1 }, + { "Egypt" , 0x0384DE }, + { "Eire" , 0x0389E6 }, + { "EST" , 0x038FCA }, + { "EST5EDT" , 0x039045 }, + { "Etc/GMT" , 0x039408 }, + { "Etc/GMT+0" , 0x039483 }, + { "Etc/GMT+1" , 0x0394FE }, + { "Etc/GMT+10" , 0x03957B }, + { "Etc/GMT+11" , 0x0395F9 }, + { "Etc/GMT+12" , 0x039677 }, + { "Etc/GMT+2" , 0x0396F5 }, + { "Etc/GMT+3" , 0x039772 }, + { "Etc/GMT+4" , 0x0397EF }, + { "Etc/GMT+5" , 0x03986C }, + { "Etc/GMT+6" , 0x0398E9 }, + { "Etc/GMT+7" , 0x039966 }, + { "Etc/GMT+8" , 0x0399E3 }, + { "Etc/GMT+9" , 0x039A60 }, + { "Etc/GMT-0" , 0x039ADD }, + { "Etc/GMT-1" , 0x039B58 }, + { "Etc/GMT-10" , 0x039BD6 }, + { "Etc/GMT-11" , 0x039C55 }, + { "Etc/GMT-12" , 0x039CD4 }, + { "Etc/GMT-13" , 0x039D53 }, + { "Etc/GMT-14" , 0x039DD2 }, + { "Etc/GMT-2" , 0x039E51 }, + { "Etc/GMT-3" , 0x039ECF }, + { "Etc/GMT-4" , 0x039F4D }, + { "Etc/GMT-5" , 0x039FCB }, + { "Etc/GMT-6" , 0x03A049 }, + { "Etc/GMT-7" , 0x03A0C7 }, + { "Etc/GMT-8" , 0x03A145 }, + { "Etc/GMT-9" , 0x03A1C3 }, + { "Etc/GMT0" , 0x03A241 }, + { "Etc/Greenwich" , 0x03A2BC }, + { "Etc/UCT" , 0x03A337 }, + { "Etc/Universal" , 0x03A3B2 }, + { "Etc/UTC" , 0x03A42D }, + { "Etc/Zulu" , 0x03A4A8 }, + { "Europe/Amsterdam" , 0x03A523 }, + { "Europe/Andorra" , 0x03A95E }, + { "Europe/Astrakhan" , 0x03AAEF }, + { "Europe/Athens" , 0x03ADE3 }, + { "Europe/Belfast" , 0x03B099 }, + { "Europe/Belgrade" , 0x03B6E4 }, + { "Europe/Berlin" , 0x03B8CE }, + { "Europe/Bratislava" , 0x03BBAF }, + { "Europe/Brussels" , 0x03BE8E }, + { "Europe/Bucharest" , 0x03C2E9 }, + { "Europe/Budapest" , 0x03C58A }, + { "Europe/Busingen" , 0x03C894 }, + { "Europe/Chisinau" , 0x03CA99 }, + { "Europe/Copenhagen" , 0x03CD98 }, + { "Europe/Dublin" , 0x03D013 }, + { "Europe/Gibraltar" , 0x03D5F7 }, + { "Europe/Guernsey" , 0x03DAC7 }, + { "Europe/Helsinki" , 0x03E112 }, + { "Europe/Isle_of_Man" , 0x03E2FF }, + { "Europe/Istanbul" , 0x03E94A }, + { "Europe/Jersey" , 0x03EE06 }, + { "Europe/Kaliningrad" , 0x03F451 }, + { "Europe/Kiev" , 0x03F7F9 }, + { "Europe/Kirov" , 0x03FA47 }, + { "Europe/Lisbon" , 0x03FD2E }, + { "Europe/Ljubljana" , 0x0402FB }, + { "Europe/London" , 0x0404E5 }, + { "Europe/Luxembourg" , 0x040B30 }, + { "Europe/Madrid" , 0x040F7B }, + { "Europe/Malta" , 0x041318 }, + { "Europe/Mariehamn" , 0x0416C4 }, + { "Europe/Minsk" , 0x0418B1 }, + { "Europe/Monaco" , 0x041BE5 }, + { "Europe/Moscow" , 0x04204B }, + { "Europe/Nicosia" , 0x0423F7 }, + { "Europe/Oslo" , 0x042658 }, + { "Europe/Paris" , 0x042908 }, + { "Europe/Podgorica" , 0x042D65 }, + { "Europe/Prague" , 0x042F4F }, + { "Europe/Riga" , 0x04322E }, + { "Europe/Rome" , 0x0434F0 }, + { "Europe/Samara" , 0x0438AF }, + { "Europe/San_Marino" , 0x043BB0 }, + { "Europe/Sarajevo" , 0x043F6F }, + { "Europe/Saratov" , 0x044159 }, + { "Europe/Simferopol" , 0x04444B }, + { "Europe/Skopje" , 0x0447BE }, + { "Europe/Sofia" , 0x0449A8 }, + { "Europe/Stockholm" , 0x044C04 }, + { "Europe/Tallinn" , 0x044E01 }, + { "Europe/Tirane" , 0x0450B0 }, + { "Europe/Tiraspol" , 0x045318 }, + { "Europe/Ulyanovsk" , 0x045617 }, + { "Europe/Uzhgorod" , 0x04592D }, + { "Europe/Vaduz" , 0x045B62 }, + { "Europe/Vatican" , 0x045D5F }, + { "Europe/Vienna" , 0x04611E }, + { "Europe/Vilnius" , 0x0463BC }, + { "Europe/Volgograd" , 0x04666C }, + { "Europe/Warsaw" , 0x046969 }, + { "Europe/Zagreb" , 0x046D10 }, + { "Europe/Zaporozhye" , 0x046EFA }, + { "Europe/Zurich" , 0x04715A }, + { "Factory" , 0x047357 }, + { "GB" , 0x0473D4 }, + { "GB-Eire" , 0x047A1F }, + { "GMT" , 0x04806A }, + { "GMT+0" , 0x0480E5 }, + { "GMT-0" , 0x048160 }, + { "GMT0" , 0x0481DB }, + { "Greenwich" , 0x048256 }, + { "Hongkong" , 0x0482D1 }, + { "HST" , 0x0485E4 }, + { "Iceland" , 0x048660 }, + { "Indian/Antananarivo" , 0x04895D }, + { "Indian/Chagos" , 0x048A28 }, + { "Indian/Christmas" , 0x048ACC }, + { "Indian/Cocos" , 0x048B5D }, + { "Indian/Comoro" , 0x048BF5 }, + { "Indian/Kerguelen" , 0x048CC0 }, + { "Indian/Mahe" , 0x048D51 }, + { "Indian/Maldives" , 0x048DE2 }, + { "Indian/Mauritius" , 0x048E86 }, + { "Indian/Mayotte" , 0x048F45 }, + { "Indian/Reunion" , 0x049010 }, + { "Iran" , 0x0490A1 }, + { "Israel" , 0x049881 }, + { "Jamaica" , 0x049CBF }, + { "Japan" , 0x049E1E }, + { "Kwajalein" , 0x049EFF }, + { "Libya" , 0x049FE6 }, + { "MET" , 0x04A1A1 }, + { "Mexico/BajaNorte" , 0x04A41A }, + { "Mexico/BajaSur" , 0x04A827 }, + { "Mexico/General" , 0x04A9A2 }, + { "MST" , 0x04AB4A }, + { "MST7MDT" , 0x04ABC5 }, + { "Navajo" , 0x04AF88 }, + { "NZ" , 0x04B3A6 }, + { "NZ-CHAT" , 0x04B7C5 }, + { "Pacific/Apia" , 0x04BAF9 }, + { "Pacific/Auckland" , 0x04BC9C }, + { "Pacific/Bougainville" , 0x04C0D3 }, + { "Pacific/Chatham" , 0x04C1B4 }, + { "Pacific/Chuuk" , 0x04C4F7 }, + { "Pacific/Easter" , 0x04C5D5 }, + { "Pacific/Efate" , 0x04CA3C }, + { "Pacific/Enderbury" , 0x04CB9E }, + { "Pacific/Fakaofo" , 0x04CC56 }, + { "Pacific/Fiji" , 0x04CCFB }, + { "Pacific/Funafuti" , 0x04CEB3 }, + { "Pacific/Galapagos" , 0x04CF45 }, + { "Pacific/Gambier" , 0x04D011 }, + { "Pacific/Guadalcanal" , 0x04D0B0 }, + { "Pacific/Guam" , 0x04D142 }, + { "Pacific/Honolulu" , 0x04D2AC }, + { "Pacific/Johnston" , 0x04D39B }, + { "Pacific/Kanton" , 0x04D484 }, + { "Pacific/Kiritimati" , 0x04D54B }, + { "Pacific/Kosrae" , 0x04D611 }, + { "Pacific/Kwajalein" , 0x04D715 }, + { "Pacific/Majuro" , 0x04D805 }, + { "Pacific/Marquesas" , 0x04D908 }, + { "Pacific/Midway" , 0x04D9B0 }, + { "Pacific/Nauru" , 0x04DA5C }, + { "Pacific/Niue" , 0x04DB1F }, + { "Pacific/Norfolk" , 0x04DBC5 }, + { "Pacific/Noumea" , 0x04DCC8 }, + { "Pacific/Pago_Pago" , 0x04DD9A }, + { "Pacific/Palau" , 0x04DE38 }, + { "Pacific/Pitcairn" , 0x04DED8 }, + { "Pacific/Pohnpei" , 0x04DF7D }, + { "Pacific/Ponape" , 0x04E06D }, + { "Pacific/Port_Moresby" , 0x04E14F }, + { "Pacific/Rarotonga" , 0x04E212 }, + { "Pacific/Saipan" , 0x04E3B4 }, + { "Pacific/Samoa" , 0x04E51E }, + { "Pacific/Tahiti" , 0x04E5BC }, + { "Pacific/Tarawa" , 0x04E65C }, + { "Pacific/Tongatapu" , 0x04E6FD }, + { "Pacific/Truk" , 0x04E7F6 }, + { "Pacific/Wake" , 0x04E8C5 }, + { "Pacific/Wallis" , 0x04E962 }, + { "Pacific/Yap" , 0x04E9F4 }, + { "Poland" , 0x04EAC3 }, + { "Portugal" , 0x04EE6A }, + { "PRC" , 0x04F424 }, + { "PST8PDT" , 0x04F5B9 }, + { "ROC" , 0x04F97C }, + { "ROK" , 0x04FB87 }, + { "Singapore" , 0x04FD32 }, + { "Turkey" , 0x04FE3E }, + { "UCT" , 0x0502FA }, + { "Universal" , 0x050375 }, + { "US/Alaska" , 0x0503F0 }, + { "US/Aleutian" , 0x0507CD }, + { "US/Arizona" , 0x050BA2 }, + { "US/Central" , 0x050C9E }, + { "US/East-Indiana" , 0x051384 }, + { "US/Eastern" , 0x0515A3 }, + { "US/Hawaii" , 0x051C7F }, + { "US/Indiana-Starke" , 0x051D68 }, + { "US/Michigan" , 0x05216C }, + { "US/Mountain" , 0x0524FB }, + { "US/Pacific" , 0x052919 }, + { "US/Samoa" , 0x052E33 }, + { "UTC" , 0x052ED1 }, + { "W-SU" , 0x052F4C }, + { "WET" , 0x0532E4 }, + { "Zulu" , 0x0534DE }, }; -const unsigned char timelib_timezone_db_data_builtin[341290] = { +const unsigned char timelib_timezone_db_data_builtin[341337] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7531,9 +7531,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x74, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, -0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, @@ -7596,7 +7596,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x06, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, +0x03, 0x05, 0x06, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, @@ -8018,9 +8018,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x7A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, -0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, @@ -8086,8 +8086,8 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x00, 0xFF, -0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, +0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x00, 0xFF, +0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x34, 0x3E, 0x34, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x2C, 0x4D, 0x39, @@ -10702,7 +10702,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0xBD, 0x4A, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x59, 0xCF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xFA, 0xA6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x38, 0x9C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE5, 0xEB, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xAC, 0xFE, 0x00, 0xFF, @@ -10761,21 +10761,21 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x5A, 0xB5, 0x86, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD3, 0x8E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, -0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7B, 0x1D, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 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, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x20, 0x50, -0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, -0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, -0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, -0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, -0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x35, 0x2F, 0x31, 0x0A, 0x00, 0xB9, -0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, -0x74, 0x72, 0x69, 0x70, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x20, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, +0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, +0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, +0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, +0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, 0x31, 0x30, +0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x32, 0x35, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, +0x00, 0x00, 0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70, /* Asia/Harbin */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10811,7 +10811,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x77, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0xBD, 0x4A, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x59, 0xCF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xFA, 0xA6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x38, 0x9C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE5, 0xEB, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xAC, 0xFE, 0x00, 0xFF, @@ -10871,21 +10871,21 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x5A, 0xB5, 0x86, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD3, 0x8E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, -0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7B, 0x1D, 0x60, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x01, 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, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, -0x20, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, -0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, -0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, -0x2E, 0x34, 0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x35, 0x2F, 0x31, 0x0A, -0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, 0x74, -0x20, 0x42, 0x61, 0x6E, 0x6B, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x20, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x2A, +0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, +0x00, 0x1C, 0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, +0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, +0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, +0x31, 0x30, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x32, 0x35, 0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, +0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, 0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B, /* Asia/Ho_Chi_Minh */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -15680,9 +15680,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x7A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, -0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, @@ -15748,8 +15748,8 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x00, 0xFF, -0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, +0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x00, 0xFF, +0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x34, 0x3E, 0x34, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x2C, 0x4D, 0x39, @@ -17987,7 +17987,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x26, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x22, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xCD, 0x2E, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, @@ -18002,23 +18002,23 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x20, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, -0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, -0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, -0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, -0x07, 0x02, 0x07, 0x02, 0x07, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, -0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, -0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, -0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, -0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, -0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, -0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, 0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, 0x00, 0x00, 0x00, -0x14, 0x55, 0x6B, 0x72, 0x61, 0x69, 0x6E, 0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, -0x72, 0x65, 0x61, 0x73, 0x29, +0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, +0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, +0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, +0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, +0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x00, 0x00, +0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, +0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, +0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, +0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, +0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, +0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, +0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, +0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, 0x00, 0x00, 0x00, 0x14, 0x55, 0x6B, 0x72, 0x61, 0x69, 0x6E, +0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, /* Europe/Kirov */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -19279,9 +19279,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, 0xD0, 0x00, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, 0x50, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x67, 0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, @@ -19617,7 +19617,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x25, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0x6A, 0xEE, 0xB0, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x09, 0x71, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, @@ -19632,21 +19632,22 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x42, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, -0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x01, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, 0x00, 0x14, 0xE8, -0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, -0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, -0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, -0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, -0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, -0x34, 0x0A, 0x00, 0xD3, 0x83, 0x22, 0x01, 0x34, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x54, 0x72, -0x61, 0x6E, 0x73, 0x63, 0x61, 0x72, 0x70, 0x61, 0x74, 0x68, 0x69, 0x61, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, +0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x01, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x4C, +0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, +0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, +0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD3, 0x83, 0x22, 0x01, +0x34, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x63, 0x61, 0x72, 0x70, +0x61, 0x74, 0x68, 0x69, 0x61, /* Europe/Vaduz */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4C, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -19984,7 +19985,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x27, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC3, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA3, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xAA, 0xE7, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, @@ -20000,23 +20001,24 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x27, 0x70, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE4, 0xED, 0x50, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, -0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, -0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, -0x03, 0x06, 0x03, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x00, 0x00, -0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, -0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, -0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, -0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, -0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, -0x00, 0xD2, 0x51, 0x25, 0x01, 0x48, 0x51, 0x7A, 0x00, 0x00, 0x00, 0x1B, 0x5A, 0x61, 0x70, 0x6F, -0x72, 0x6F, 0x7A, 0x68, 0x79, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x73, 0x74, 0x20, -0x4C, 0x75, 0x67, 0x61, 0x6E, 0x73, 0x6B, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, +0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, +0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, +0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x07, 0x02, 0x07, 0x02, 0x07, +0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, +0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, +0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, +0x1B, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, 0x30, +0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, +0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, +0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, +0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD2, 0x51, 0x25, 0x01, 0x48, 0x51, +0x7A, 0x00, 0x00, 0x00, 0x1B, 0x5A, 0x61, 0x70, 0x6F, 0x72, 0x6F, 0x7A, 0x68, 0x79, 0x65, 0x20, +0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x73, 0x74, 0x20, 0x4C, 0x75, 0x67, 0x61, 0x6E, 0x73, 0x6B, + /* Europe/Zurich */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -23690,340 +23692,340 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[595] = { { "Asia/Dushanbe" , 0x0476ED }, { "Asia/Famagusta" , 0x047948 }, { "Asia/Gaza" , 0x04814F }, - { "Asia/Harbin" , 0x048ADA }, - { "Asia/Hebron" , 0x048D17 }, - { "Asia/Ho_Chi_Minh" , 0x0496BD }, - { "Asia/Hong_Kong" , 0x049828 }, - { "Asia/Hovd" , 0x049CE7 }, - { "Asia/Irkutsk" , 0x04A099 }, - { "Asia/Istanbul" , 0x04A59A }, - { "Asia/Jakarta" , 0x04AD41 }, - { "Asia/Jayapura" , 0x04AEBD }, - { "Asia/Jerusalem" , 0x04AFDC }, - { "Asia/Kabul" , 0x04B93C }, - { "Asia/Kamchatka" , 0x04BA18 }, - { "Asia/Karachi" , 0x04BEC4 }, - { "Asia/Kashgar" , 0x04C04B }, - { "Asia/Kathmandu" , 0x04C0FC }, - { "Asia/Katmandu" , 0x04C1DC }, - { "Asia/Khandyga" , 0x04C2BC }, - { "Asia/Kolkata" , 0x04C7DD }, - { "Asia/Krasnoyarsk" , 0x04C906 }, - { "Asia/Kuala_Lumpur" , 0x04CDE2 }, - { "Asia/Kuching" , 0x04CF81 }, - { "Asia/Kuwait" , 0x04D17E }, - { "Asia/Macao" , 0x04D22F }, - { "Asia/Macau" , 0x04D706 }, - { "Asia/Magadan" , 0x04DBDD }, - { "Asia/Makassar" , 0x04E0BF }, - { "Asia/Manila" , 0x04E212 }, - { "Asia/Muscat" , 0x04E366 }, - { "Asia/Nicosia" , 0x04E417 }, - { "Asia/Novokuznetsk" , 0x04EC08 }, - { "Asia/Novosibirsk" , 0x04F0B2 }, - { "Asia/Omsk" , 0x04F597 }, - { "Asia/Oral" , 0x04FA67 }, - { "Asia/Phnom_Penh" , 0x04FE6F }, - { "Asia/Pontianak" , 0x04FF42 }, - { "Asia/Pyongyang" , 0x0500C5 }, - { "Asia/Qatar" , 0x0501BE }, - { "Asia/Qostanay" , 0x050291 }, - { "Asia/Qyzylorda" , 0x0506AA }, - { "Asia/Rangoon" , 0x050AD4 }, - { "Asia/Riyadh" , 0x050BEC }, - { "Asia/Saigon" , 0x050C9D }, - { "Asia/Sakhalin" , 0x050E08 }, - { "Asia/Samarkand" , 0x0512DE }, - { "Asia/Seoul" , 0x05153C }, - { "Asia/Shanghai" , 0x0517B1 }, - { "Asia/Singapore" , 0x0519FA }, - { "Asia/Srednekolymsk" , 0x051B85 }, - { "Asia/Taipei" , 0x05206B }, - { "Asia/Tashkent" , 0x052370 }, - { "Asia/Tbilisi" , 0x0525DC }, - { "Asia/Tehran" , 0x0529F3 }, - { "Asia/Tel_Aviv" , 0x053415 }, - { "Asia/Thimbu" , 0x053D75 }, - { "Asia/Thimphu" , 0x053E4C }, - { "Asia/Tokyo" , 0x053F23 }, - { "Asia/Tomsk" , 0x054064 }, - { "Asia/Ujung_Pandang" , 0x054543 }, - { "Asia/Ulaanbaatar" , 0x05464D }, - { "Asia/Ulan_Bator" , 0x0549E9 }, - { "Asia/Urumqi" , 0x054D70 }, - { "Asia/Ust-Nera" , 0x054E2E }, - { "Asia/Vientiane" , 0x055332 }, - { "Asia/Vladivostok" , 0x055405 }, - { "Asia/Yakutsk" , 0x0558DC }, - { "Asia/Yangon" , 0x055DB2 }, - { "Asia/Yekaterinburg" , 0x055ECA }, - { "Asia/Yerevan" , 0x0563BF }, - { "Atlantic/Azores" , 0x05684A }, - { "Atlantic/Bermuda" , 0x057614 }, - { "Atlantic/Canary" , 0x057F7C }, - { "Atlantic/Cape_Verde" , 0x0586FF }, - { "Atlantic/Faeroe" , 0x058819 }, - { "Atlantic/Faroe" , 0x058F3C }, - { "Atlantic/Jan_Mayen" , 0x05965F }, - { "Atlantic/Madeira" , 0x059F1F }, - { "Atlantic/Reykjavik" , 0x05ACE9 }, - { "Atlantic/South_Georgia" , 0x05B17F }, - { "Atlantic/St_Helena" , 0x05B22F }, - { "Atlantic/Stanley" , 0x05B2CF }, - { "Australia/ACT" , 0x05B799 }, - { "Australia/Adelaide" , 0x05C033 }, - { "Australia/Brisbane" , 0x05C8EE }, - { "Australia/Broken_Hill" , 0x05CAB4 }, - { "Australia/Canberra" , 0x05D391 }, - { "Australia/Currie" , 0x05DC2B }, - { "Australia/Darwin" , 0x05E56D }, - { "Australia/Eucla" , 0x05E6D0 }, - { "Australia/Hobart" , 0x05E8CB }, - { "Australia/LHI" , 0x05F215 }, - { "Australia/Lindeman" , 0x05F965 }, - { "Australia/Lord_Howe" , 0x05FB6B }, - { "Australia/Melbourne" , 0x0602CB }, - { "Australia/North" , 0x060B6D }, - { "Australia/NSW" , 0x060CBE }, - { "Australia/Perth" , 0x061558 }, - { "Australia/Queensland" , 0x061740 }, - { "Australia/South" , 0x0618EF }, - { "Australia/Sydney" , 0x06219B }, - { "Australia/Tasmania" , 0x062A51 }, - { "Australia/Victoria" , 0x063393 }, - { "Australia/West" , 0x063C2D }, - { "Australia/Yancowinna" , 0x063DF7 }, - { "Brazil/Acre" , 0x0646B8 }, - { "Brazil/DeNoronha" , 0x064938 }, - { "Brazil/East" , 0x064C10 }, - { "Brazil/West" , 0x0651C0 }, - { "Canada/Atlantic" , 0x065428 }, - { "Canada/Central" , 0x066194 }, - { "Canada/Eastern" , 0x066CD4 }, - { "Canada/Mountain" , 0x067A86 }, - { "Canada/Newfoundland" , 0x0683AE }, - { "Canada/Pacific" , 0x069201 }, - { "Canada/Saskatchewan" , 0x069D59 }, - { "Canada/Yukon" , 0x06A139 }, - { "CET" , 0x06A793 }, - { "Chile/Continental" , 0x06AFCD }, - { "Chile/EasterIsland" , 0x06B9BA }, - { "CST6CDT" , 0x06C27F }, - { "Cuba" , 0x06CB91 }, - { "EET" , 0x06D50D }, - { "Egypt" , 0x06DC8D }, - { "Eire" , 0x06E43C }, - { "EST" , 0x06F1EC }, - { "EST5EDT" , 0x06F26A }, - { "Etc/GMT" , 0x06FB7C }, - { "Etc/GMT+0" , 0x06FBFA }, - { "Etc/GMT+1" , 0x06FC78 }, - { "Etc/GMT+10" , 0x06FCF8 }, - { "Etc/GMT+11" , 0x06FD79 }, - { "Etc/GMT+12" , 0x06FDFA }, - { "Etc/GMT+2" , 0x06FE7B }, - { "Etc/GMT+3" , 0x06FEFB }, - { "Etc/GMT+4" , 0x06FF7B }, - { "Etc/GMT+5" , 0x06FFFB }, - { "Etc/GMT+6" , 0x07007B }, - { "Etc/GMT+7" , 0x0700FB }, - { "Etc/GMT+8" , 0x07017B }, - { "Etc/GMT+9" , 0x0701FB }, - { "Etc/GMT-0" , 0x07027B }, - { "Etc/GMT-1" , 0x0702F9 }, - { "Etc/GMT-10" , 0x07037A }, - { "Etc/GMT-11" , 0x0703FC }, - { "Etc/GMT-12" , 0x07047E }, - { "Etc/GMT-13" , 0x070500 }, - { "Etc/GMT-14" , 0x070582 }, - { "Etc/GMT-2" , 0x070604 }, - { "Etc/GMT-3" , 0x070685 }, - { "Etc/GMT-4" , 0x070706 }, - { "Etc/GMT-5" , 0x070787 }, - { "Etc/GMT-6" , 0x070808 }, - { "Etc/GMT-7" , 0x070889 }, - { "Etc/GMT-8" , 0x07090A }, - { "Etc/GMT-9" , 0x07098B }, - { "Etc/GMT0" , 0x070A0C }, - { "Etc/Greenwich" , 0x070A8A }, - { "Etc/UCT" , 0x070B08 }, - { "Etc/Universal" , 0x070B86 }, - { "Etc/UTC" , 0x070C04 }, - { "Etc/Zulu" , 0x070C82 }, - { "Europe/Amsterdam" , 0x070D00 }, - { "Europe/Andorra" , 0x07186A }, - { "Europe/Astrakhan" , 0x071F44 }, - { "Europe/Athens" , 0x0723EF }, - { "Europe/Belfast" , 0x072CD1 }, - { "Europe/Belgrade" , 0x073B1D }, - { "Europe/Berlin" , 0x0742A9 }, - { "Europe/Bratislava" , 0x074BC3 }, - { "Europe/Brussels" , 0x0754CC }, - { "Europe/Bucharest" , 0x07604D }, - { "Europe/Budapest" , 0x0768E1 }, - { "Europe/Busingen" , 0x07722D }, - { "Europe/Chisinau" , 0x0779B6 }, - { "Europe/Copenhagen" , 0x078318 }, - { "Europe/Dublin" , 0x078B7D }, - { "Europe/Gibraltar" , 0x07992D }, - { "Europe/Guernsey" , 0x07A525 }, - { "Europe/Helsinki" , 0x07B371 }, - { "Europe/Isle_of_Man" , 0x07BAE9 }, - { "Europe/Istanbul" , 0x07C935 }, - { "Europe/Jersey" , 0x07D0DC }, - { "Europe/Kaliningrad" , 0x07DF28 }, - { "Europe/Kiev" , 0x07E51D }, - { "Europe/Kirov" , 0x07ED65 }, - { "Europe/Lisbon" , 0x07F200 }, - { "Europe/Ljubljana" , 0x07FFC8 }, - { "Europe/London" , 0x080754 }, - { "Europe/Luxembourg" , 0x0815A0 }, - { "Europe/Madrid" , 0x08212E }, - { "Europe/Malta" , 0x082B80 }, - { "Europe/Mariehamn" , 0x0835C8 }, - { "Europe/Minsk" , 0x083D40 }, - { "Europe/Monaco" , 0x084275 }, - { "Europe/Moscow" , 0x084E01 }, - { "Europe/Nicosia" , 0x085420 }, - { "Europe/Oslo" , 0x085BFE }, - { "Europe/Paris" , 0x0864BE }, - { "Europe/Podgorica" , 0x08705C }, - { "Europe/Prague" , 0x0877E8 }, - { "Europe/Riga" , 0x0880F1 }, - { "Europe/Rome" , 0x088993 }, - { "Europe/Samara" , 0x0893F0 }, - { "Europe/San_Marino" , 0x0898D4 }, - { "Europe/Sarajevo" , 0x08A331 }, - { "Europe/Saratov" , 0x08AABD }, - { "Europe/Simferopol" , 0x08AF78 }, - { "Europe/Skopje" , 0x08B537 }, - { "Europe/Sofia" , 0x08BCC3 }, - { "Europe/Stockholm" , 0x08C4EC }, - { "Europe/Tallinn" , 0x08CC6D }, - { "Europe/Tirane" , 0x08D4DD }, - { "Europe/Tiraspol" , 0x08DD0D }, - { "Europe/Ulyanovsk" , 0x08E66F }, - { "Europe/Uzhgorod" , 0x08EB80 }, - { "Europe/Vaduz" , 0x08F39C }, - { "Europe/Vatican" , 0x08FB1D }, - { "Europe/Vienna" , 0x09057A }, - { "Europe/Vilnius" , 0x090E1E }, - { "Europe/Volgograd" , 0x09169C }, - { "Europe/Warsaw" , 0x091B47 }, - { "Europe/Zagreb" , 0x0925B1 }, - { "Europe/Zaporozhye" , 0x092D3D }, - { "Europe/Zurich" , 0x09359E }, - { "Factory" , 0x093D1F }, - { "GB" , 0x093D9F }, - { "GB-Eire" , 0x094BEB }, - { "GMT" , 0x095A37 }, - { "GMT+0" , 0x095AB5 }, - { "GMT-0" , 0x095B33 }, - { "GMT0" , 0x095BB1 }, - { "Greenwich" , 0x095C2F }, - { "Hongkong" , 0x095CAD }, - { "HST" , 0x09616C }, - { "Iceland" , 0x0961EB }, - { "Indian/Antananarivo" , 0x096681 }, - { "Indian/Chagos" , 0x096796 }, - { "Indian/Christmas" , 0x096869 }, - { "Indian/Cocos" , 0x09691A }, - { "Indian/Comoro" , 0x0969D4 }, - { "Indian/Kerguelen" , 0x096AE9 }, - { "Indian/Mahe" , 0x096B9A }, - { "Indian/Maldives" , 0x096C4B }, - { "Indian/Mauritius" , 0x096D1E }, - { "Indian/Mayotte" , 0x096E1B }, - { "Indian/Reunion" , 0x096F30 }, - { "Iran" , 0x096FE1 }, - { "Israel" , 0x097A03 }, - { "Jamaica" , 0x098363 }, - { "Japan" , 0x098551 }, - { "Kwajalein" , 0x098692 }, - { "Libya" , 0x0987DA }, - { "MET" , 0x098A57 }, - { "Mexico/BajaNorte" , 0x099291 }, - { "Mexico/BajaSur" , 0x099BC3 }, - { "Mexico/General" , 0x09A1C5 }, - { "MST" , 0x09A801 }, - { "MST7MDT" , 0x09A87F }, - { "Navajo" , 0x09B191 }, - { "NZ" , 0x09BB29 }, - { "NZ-CHAT" , 0x09C4BA }, - { "Pacific/Apia" , 0x09CCDA }, - { "Pacific/Auckland" , 0x09CF4A }, - { "Pacific/Bougainville" , 0x09D8F3 }, - { "Pacific/Chatham" , 0x09DA17 }, - { "Pacific/Chuuk" , 0x09E246 }, - { "Pacific/Easter" , 0x09E36E }, - { "Pacific/Efate" , 0x09EC40 }, - { "Pacific/Enderbury" , 0x09EE66 }, - { "Pacific/Fakaofo" , 0x09EF5C }, - { "Pacific/Fiji" , 0x09F030 }, - { "Pacific/Funafuti" , 0x09F455 }, - { "Pacific/Galapagos" , 0x09F507 }, - { "Pacific/Gambier" , 0x09F612 }, - { "Pacific/Guadalcanal" , 0x09F6D1 }, - { "Pacific/Guam" , 0x09F783 }, - { "Pacific/Honolulu" , 0x09F97D }, - { "Pacific/Johnston" , 0x09FAD8 }, - { "Pacific/Kanton" , 0x09FC2D }, - { "Pacific/Kiritimati" , 0x09FD32 }, - { "Pacific/Kosrae" , 0x09FE38 }, - { "Pacific/Kwajalein" , 0x09FFA9 }, - { "Pacific/Majuro" , 0x0A00FA }, - { "Pacific/Marquesas" , 0x0A0259 }, - { "Pacific/Midway" , 0x0A0323 }, - { "Pacific/Nauru" , 0x0A03EC }, - { "Pacific/Niue" , 0x0A04F4 }, - { "Pacific/Norfolk" , 0x0A05CB }, - { "Pacific/Noumea" , 0x0A0947 }, - { "Pacific/Pago_Pago" , 0x0A0A83 }, - { "Pacific/Palau" , 0x0A0B3E }, - { "Pacific/Pitcairn" , 0x0A0BFE }, - { "Pacific/Pohnpei" , 0x0A0CD4 }, - { "Pacific/Ponape" , 0x0A0E1D }, - { "Pacific/Port_Moresby" , 0x0A0F58 }, - { "Pacific/Rarotonga" , 0x0A103B }, - { "Pacific/Saipan" , 0x0A12A2 }, - { "Pacific/Samoa" , 0x0A149C }, - { "Pacific/Tahiti" , 0x0A1557 }, - { "Pacific/Tarawa" , 0x0A1617 }, - { "Pacific/Tongatapu" , 0x0A16D8 }, - { "Pacific/Truk" , 0x0A1858 }, - { "Pacific/Wake" , 0x0A1971 }, - { "Pacific/Wallis" , 0x0A1A2E }, - { "Pacific/Yap" , 0x0A1AE0 }, - { "Poland" , 0x0A1BF9 }, - { "Portugal" , 0x0A2663 }, - { "PRC" , 0x0A3418 }, - { "PST8PDT" , 0x0A3655 }, - { "ROC" , 0x0A3F67 }, - { "ROK" , 0x0A426C }, - { "Singapore" , 0x0A44E1 }, - { "Turkey" , 0x0A466C }, - { "UCT" , 0x0A4E13 }, - { "Universal" , 0x0A4E91 }, - { "US/Alaska" , 0x0A4F0F }, - { "US/Aleutian" , 0x0A585E }, - { "US/Arizona" , 0x0A619E }, - { "US/Central" , 0x0A62F2 }, - { "US/East-Indiana" , 0x0A70F6 }, - { "US/Eastern" , 0x0A7784 }, - { "US/Hawaii" , 0x0A8560 }, - { "US/Indiana-Starke" , 0x0A86B5 }, - { "US/Michigan" , 0x0A903D }, - { "US/Mountain" , 0x0A98FF }, - { "US/Pacific" , 0x0AA297 }, - { "US/Samoa" , 0x0AADB7 }, - { "UTC" , 0x0AAE72 }, - { "W-SU" , 0x0AAEF0 }, - { "WET" , 0x0AB4FB }, - { "Zulu" , 0x0ABC78 }, + { "Asia/Harbin" , 0x048ADB }, + { "Asia/Hebron" , 0x048D18 }, + { "Asia/Ho_Chi_Minh" , 0x0496BF }, + { "Asia/Hong_Kong" , 0x04982A }, + { "Asia/Hovd" , 0x049CE9 }, + { "Asia/Irkutsk" , 0x04A09B }, + { "Asia/Istanbul" , 0x04A59C }, + { "Asia/Jakarta" , 0x04AD43 }, + { "Asia/Jayapura" , 0x04AEBF }, + { "Asia/Jerusalem" , 0x04AFDE }, + { "Asia/Kabul" , 0x04B93E }, + { "Asia/Kamchatka" , 0x04BA1A }, + { "Asia/Karachi" , 0x04BEC6 }, + { "Asia/Kashgar" , 0x04C04D }, + { "Asia/Kathmandu" , 0x04C0FE }, + { "Asia/Katmandu" , 0x04C1DE }, + { "Asia/Khandyga" , 0x04C2BE }, + { "Asia/Kolkata" , 0x04C7DF }, + { "Asia/Krasnoyarsk" , 0x04C908 }, + { "Asia/Kuala_Lumpur" , 0x04CDE4 }, + { "Asia/Kuching" , 0x04CF83 }, + { "Asia/Kuwait" , 0x04D180 }, + { "Asia/Macao" , 0x04D231 }, + { "Asia/Macau" , 0x04D708 }, + { "Asia/Magadan" , 0x04DBDF }, + { "Asia/Makassar" , 0x04E0C1 }, + { "Asia/Manila" , 0x04E214 }, + { "Asia/Muscat" , 0x04E368 }, + { "Asia/Nicosia" , 0x04E419 }, + { "Asia/Novokuznetsk" , 0x04EC0A }, + { "Asia/Novosibirsk" , 0x04F0B4 }, + { "Asia/Omsk" , 0x04F599 }, + { "Asia/Oral" , 0x04FA69 }, + { "Asia/Phnom_Penh" , 0x04FE71 }, + { "Asia/Pontianak" , 0x04FF44 }, + { "Asia/Pyongyang" , 0x0500C7 }, + { "Asia/Qatar" , 0x0501C0 }, + { "Asia/Qostanay" , 0x050293 }, + { "Asia/Qyzylorda" , 0x0506AC }, + { "Asia/Rangoon" , 0x050AD6 }, + { "Asia/Riyadh" , 0x050BEE }, + { "Asia/Saigon" , 0x050C9F }, + { "Asia/Sakhalin" , 0x050E0A }, + { "Asia/Samarkand" , 0x0512E0 }, + { "Asia/Seoul" , 0x05153E }, + { "Asia/Shanghai" , 0x0517B3 }, + { "Asia/Singapore" , 0x0519FC }, + { "Asia/Srednekolymsk" , 0x051B87 }, + { "Asia/Taipei" , 0x05206D }, + { "Asia/Tashkent" , 0x052372 }, + { "Asia/Tbilisi" , 0x0525DE }, + { "Asia/Tehran" , 0x0529F5 }, + { "Asia/Tel_Aviv" , 0x053417 }, + { "Asia/Thimbu" , 0x053D77 }, + { "Asia/Thimphu" , 0x053E4E }, + { "Asia/Tokyo" , 0x053F25 }, + { "Asia/Tomsk" , 0x054066 }, + { "Asia/Ujung_Pandang" , 0x054545 }, + { "Asia/Ulaanbaatar" , 0x05464F }, + { "Asia/Ulan_Bator" , 0x0549EB }, + { "Asia/Urumqi" , 0x054D72 }, + { "Asia/Ust-Nera" , 0x054E30 }, + { "Asia/Vientiane" , 0x055334 }, + { "Asia/Vladivostok" , 0x055407 }, + { "Asia/Yakutsk" , 0x0558DE }, + { "Asia/Yangon" , 0x055DB4 }, + { "Asia/Yekaterinburg" , 0x055ECC }, + { "Asia/Yerevan" , 0x0563C1 }, + { "Atlantic/Azores" , 0x05684C }, + { "Atlantic/Bermuda" , 0x057616 }, + { "Atlantic/Canary" , 0x057F7E }, + { "Atlantic/Cape_Verde" , 0x058701 }, + { "Atlantic/Faeroe" , 0x05881B }, + { "Atlantic/Faroe" , 0x058F3E }, + { "Atlantic/Jan_Mayen" , 0x059661 }, + { "Atlantic/Madeira" , 0x059F21 }, + { "Atlantic/Reykjavik" , 0x05ACEB }, + { "Atlantic/South_Georgia" , 0x05B181 }, + { "Atlantic/St_Helena" , 0x05B231 }, + { "Atlantic/Stanley" , 0x05B2D1 }, + { "Australia/ACT" , 0x05B79B }, + { "Australia/Adelaide" , 0x05C035 }, + { "Australia/Brisbane" , 0x05C8F0 }, + { "Australia/Broken_Hill" , 0x05CAB6 }, + { "Australia/Canberra" , 0x05D393 }, + { "Australia/Currie" , 0x05DC2D }, + { "Australia/Darwin" , 0x05E56F }, + { "Australia/Eucla" , 0x05E6D2 }, + { "Australia/Hobart" , 0x05E8CD }, + { "Australia/LHI" , 0x05F217 }, + { "Australia/Lindeman" , 0x05F967 }, + { "Australia/Lord_Howe" , 0x05FB6D }, + { "Australia/Melbourne" , 0x0602CD }, + { "Australia/North" , 0x060B6F }, + { "Australia/NSW" , 0x060CC0 }, + { "Australia/Perth" , 0x06155A }, + { "Australia/Queensland" , 0x061742 }, + { "Australia/South" , 0x0618F1 }, + { "Australia/Sydney" , 0x06219D }, + { "Australia/Tasmania" , 0x062A53 }, + { "Australia/Victoria" , 0x063395 }, + { "Australia/West" , 0x063C2F }, + { "Australia/Yancowinna" , 0x063DF9 }, + { "Brazil/Acre" , 0x0646BA }, + { "Brazil/DeNoronha" , 0x06493A }, + { "Brazil/East" , 0x064C12 }, + { "Brazil/West" , 0x0651C2 }, + { "Canada/Atlantic" , 0x06542A }, + { "Canada/Central" , 0x066196 }, + { "Canada/Eastern" , 0x066CD6 }, + { "Canada/Mountain" , 0x067A88 }, + { "Canada/Newfoundland" , 0x0683B0 }, + { "Canada/Pacific" , 0x069203 }, + { "Canada/Saskatchewan" , 0x069D5B }, + { "Canada/Yukon" , 0x06A13B }, + { "CET" , 0x06A795 }, + { "Chile/Continental" , 0x06AFCF }, + { "Chile/EasterIsland" , 0x06B9BC }, + { "CST6CDT" , 0x06C281 }, + { "Cuba" , 0x06CB93 }, + { "EET" , 0x06D50F }, + { "Egypt" , 0x06DC8F }, + { "Eire" , 0x06E43E }, + { "EST" , 0x06F1EE }, + { "EST5EDT" , 0x06F26C }, + { "Etc/GMT" , 0x06FB7E }, + { "Etc/GMT+0" , 0x06FBFC }, + { "Etc/GMT+1" , 0x06FC7A }, + { "Etc/GMT+10" , 0x06FCFA }, + { "Etc/GMT+11" , 0x06FD7B }, + { "Etc/GMT+12" , 0x06FDFC }, + { "Etc/GMT+2" , 0x06FE7D }, + { "Etc/GMT+3" , 0x06FEFD }, + { "Etc/GMT+4" , 0x06FF7D }, + { "Etc/GMT+5" , 0x06FFFD }, + { "Etc/GMT+6" , 0x07007D }, + { "Etc/GMT+7" , 0x0700FD }, + { "Etc/GMT+8" , 0x07017D }, + { "Etc/GMT+9" , 0x0701FD }, + { "Etc/GMT-0" , 0x07027D }, + { "Etc/GMT-1" , 0x0702FB }, + { "Etc/GMT-10" , 0x07037C }, + { "Etc/GMT-11" , 0x0703FE }, + { "Etc/GMT-12" , 0x070480 }, + { "Etc/GMT-13" , 0x070502 }, + { "Etc/GMT-14" , 0x070584 }, + { "Etc/GMT-2" , 0x070606 }, + { "Etc/GMT-3" , 0x070687 }, + { "Etc/GMT-4" , 0x070708 }, + { "Etc/GMT-5" , 0x070789 }, + { "Etc/GMT-6" , 0x07080A }, + { "Etc/GMT-7" , 0x07088B }, + { "Etc/GMT-8" , 0x07090C }, + { "Etc/GMT-9" , 0x07098D }, + { "Etc/GMT0" , 0x070A0E }, + { "Etc/Greenwich" , 0x070A8C }, + { "Etc/UCT" , 0x070B0A }, + { "Etc/Universal" , 0x070B88 }, + { "Etc/UTC" , 0x070C06 }, + { "Etc/Zulu" , 0x070C84 }, + { "Europe/Amsterdam" , 0x070D02 }, + { "Europe/Andorra" , 0x07186C }, + { "Europe/Astrakhan" , 0x071F46 }, + { "Europe/Athens" , 0x0723F1 }, + { "Europe/Belfast" , 0x072CD3 }, + { "Europe/Belgrade" , 0x073B1F }, + { "Europe/Berlin" , 0x0742AB }, + { "Europe/Bratislava" , 0x074BC5 }, + { "Europe/Brussels" , 0x0754CE }, + { "Europe/Bucharest" , 0x07604F }, + { "Europe/Budapest" , 0x0768E3 }, + { "Europe/Busingen" , 0x07722F }, + { "Europe/Chisinau" , 0x0779B8 }, + { "Europe/Copenhagen" , 0x07831A }, + { "Europe/Dublin" , 0x078B7F }, + { "Europe/Gibraltar" , 0x07992F }, + { "Europe/Guernsey" , 0x07A527 }, + { "Europe/Helsinki" , 0x07B373 }, + { "Europe/Isle_of_Man" , 0x07BAEB }, + { "Europe/Istanbul" , 0x07C937 }, + { "Europe/Jersey" , 0x07D0DE }, + { "Europe/Kaliningrad" , 0x07DF2A }, + { "Europe/Kiev" , 0x07E51F }, + { "Europe/Kirov" , 0x07ED87 }, + { "Europe/Lisbon" , 0x07F222 }, + { "Europe/Ljubljana" , 0x07FFEA }, + { "Europe/London" , 0x080776 }, + { "Europe/Luxembourg" , 0x0815C2 }, + { "Europe/Madrid" , 0x082150 }, + { "Europe/Malta" , 0x082BA2 }, + { "Europe/Mariehamn" , 0x0835EA }, + { "Europe/Minsk" , 0x083D62 }, + { "Europe/Monaco" , 0x084297 }, + { "Europe/Moscow" , 0x084E23 }, + { "Europe/Nicosia" , 0x085442 }, + { "Europe/Oslo" , 0x085C20 }, + { "Europe/Paris" , 0x0864E0 }, + { "Europe/Podgorica" , 0x08707E }, + { "Europe/Prague" , 0x08780A }, + { "Europe/Riga" , 0x088113 }, + { "Europe/Rome" , 0x0889B5 }, + { "Europe/Samara" , 0x089412 }, + { "Europe/San_Marino" , 0x0898F6 }, + { "Europe/Sarajevo" , 0x08A353 }, + { "Europe/Saratov" , 0x08AADF }, + { "Europe/Simferopol" , 0x08AF9A }, + { "Europe/Skopje" , 0x08B569 }, + { "Europe/Sofia" , 0x08BCF5 }, + { "Europe/Stockholm" , 0x08C51E }, + { "Europe/Tallinn" , 0x08CC9F }, + { "Europe/Tirane" , 0x08D50F }, + { "Europe/Tiraspol" , 0x08DD3F }, + { "Europe/Ulyanovsk" , 0x08E6A1 }, + { "Europe/Uzhgorod" , 0x08EBB2 }, + { "Europe/Vaduz" , 0x08F3DE }, + { "Europe/Vatican" , 0x08FB5F }, + { "Europe/Vienna" , 0x0905BC }, + { "Europe/Vilnius" , 0x090E60 }, + { "Europe/Volgograd" , 0x0916DE }, + { "Europe/Warsaw" , 0x091B89 }, + { "Europe/Zagreb" , 0x0925F3 }, + { "Europe/Zaporozhye" , 0x092D7F }, + { "Europe/Zurich" , 0x093600 }, + { "Factory" , 0x093D81 }, + { "GB" , 0x093E01 }, + { "GB-Eire" , 0x094C4D }, + { "GMT" , 0x095A99 }, + { "GMT+0" , 0x095B17 }, + { "GMT-0" , 0x095B95 }, + { "GMT0" , 0x095C13 }, + { "Greenwich" , 0x095C91 }, + { "Hongkong" , 0x095D0F }, + { "HST" , 0x0961CE }, + { "Iceland" , 0x09624D }, + { "Indian/Antananarivo" , 0x0966E3 }, + { "Indian/Chagos" , 0x0967F8 }, + { "Indian/Christmas" , 0x0968CB }, + { "Indian/Cocos" , 0x09697C }, + { "Indian/Comoro" , 0x096A36 }, + { "Indian/Kerguelen" , 0x096B4B }, + { "Indian/Mahe" , 0x096BFC }, + { "Indian/Maldives" , 0x096CAD }, + { "Indian/Mauritius" , 0x096D80 }, + { "Indian/Mayotte" , 0x096E7D }, + { "Indian/Reunion" , 0x096F92 }, + { "Iran" , 0x097043 }, + { "Israel" , 0x097A65 }, + { "Jamaica" , 0x0983C5 }, + { "Japan" , 0x0985B3 }, + { "Kwajalein" , 0x0986F4 }, + { "Libya" , 0x09883C }, + { "MET" , 0x098AB9 }, + { "Mexico/BajaNorte" , 0x0992F3 }, + { "Mexico/BajaSur" , 0x099C25 }, + { "Mexico/General" , 0x09A227 }, + { "MST" , 0x09A863 }, + { "MST7MDT" , 0x09A8E1 }, + { "Navajo" , 0x09B1F3 }, + { "NZ" , 0x09BB8B }, + { "NZ-CHAT" , 0x09C51C }, + { "Pacific/Apia" , 0x09CD3C }, + { "Pacific/Auckland" , 0x09CFAC }, + { "Pacific/Bougainville" , 0x09D955 }, + { "Pacific/Chatham" , 0x09DA79 }, + { "Pacific/Chuuk" , 0x09E2A8 }, + { "Pacific/Easter" , 0x09E3D0 }, + { "Pacific/Efate" , 0x09ECA2 }, + { "Pacific/Enderbury" , 0x09EEC8 }, + { "Pacific/Fakaofo" , 0x09EFBE }, + { "Pacific/Fiji" , 0x09F092 }, + { "Pacific/Funafuti" , 0x09F4B7 }, + { "Pacific/Galapagos" , 0x09F569 }, + { "Pacific/Gambier" , 0x09F674 }, + { "Pacific/Guadalcanal" , 0x09F733 }, + { "Pacific/Guam" , 0x09F7E5 }, + { "Pacific/Honolulu" , 0x09F9DF }, + { "Pacific/Johnston" , 0x09FB3A }, + { "Pacific/Kanton" , 0x09FC8F }, + { "Pacific/Kiritimati" , 0x09FD94 }, + { "Pacific/Kosrae" , 0x09FE9A }, + { "Pacific/Kwajalein" , 0x0A000B }, + { "Pacific/Majuro" , 0x0A015C }, + { "Pacific/Marquesas" , 0x0A02BB }, + { "Pacific/Midway" , 0x0A0385 }, + { "Pacific/Nauru" , 0x0A044E }, + { "Pacific/Niue" , 0x0A0556 }, + { "Pacific/Norfolk" , 0x0A062D }, + { "Pacific/Noumea" , 0x0A09A9 }, + { "Pacific/Pago_Pago" , 0x0A0AE5 }, + { "Pacific/Palau" , 0x0A0BA0 }, + { "Pacific/Pitcairn" , 0x0A0C60 }, + { "Pacific/Pohnpei" , 0x0A0D36 }, + { "Pacific/Ponape" , 0x0A0E7F }, + { "Pacific/Port_Moresby" , 0x0A0FBA }, + { "Pacific/Rarotonga" , 0x0A109D }, + { "Pacific/Saipan" , 0x0A1304 }, + { "Pacific/Samoa" , 0x0A14FE }, + { "Pacific/Tahiti" , 0x0A15B9 }, + { "Pacific/Tarawa" , 0x0A1679 }, + { "Pacific/Tongatapu" , 0x0A173A }, + { "Pacific/Truk" , 0x0A18BA }, + { "Pacific/Wake" , 0x0A19D3 }, + { "Pacific/Wallis" , 0x0A1A90 }, + { "Pacific/Yap" , 0x0A1B42 }, + { "Poland" , 0x0A1C5B }, + { "Portugal" , 0x0A26C5 }, + { "PRC" , 0x0A347A }, + { "PST8PDT" , 0x0A36B7 }, + { "ROC" , 0x0A3FC9 }, + { "ROK" , 0x0A42CE }, + { "Singapore" , 0x0A4543 }, + { "Turkey" , 0x0A46CE }, + { "UCT" , 0x0A4E75 }, + { "Universal" , 0x0A4EF3 }, + { "US/Alaska" , 0x0A4F71 }, + { "US/Aleutian" , 0x0A58C0 }, + { "US/Arizona" , 0x0A6200 }, + { "US/Central" , 0x0A6354 }, + { "US/East-Indiana" , 0x0A7158 }, + { "US/Eastern" , 0x0A77E6 }, + { "US/Hawaii" , 0x0A85C2 }, + { "US/Indiana-Starke" , 0x0A8717 }, + { "US/Michigan" , 0x0A909F }, + { "US/Mountain" , 0x0A9961 }, + { "US/Pacific" , 0x0AA2F9 }, + { "US/Samoa" , 0x0AAE19 }, + { "UTC" , 0x0AAED4 }, + { "W-SU" , 0x0AAF52 }, + { "WET" , 0x0AB55D }, + { "Zulu" , 0x0ABCDA }, }; -const unsigned char timelib_timezone_db_data_builtin[703734] = { +const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -37134,8 +37136,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x8F, 0x30, 0x47, 0x46, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC6, 0xA1, 0x00, 0x71, 0xC0, -0xB0, 0x5E, 0x77, 0xC6, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, +0x8F, 0x30, 0x47, 0x45, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC5, 0xA1, 0x00, 0x71, 0xC0, +0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD5, 0x33, 0x55, 0xC0, 0xD5, 0x76, 0x92, 0x40, 0xFD, 0xD1, 0x3C, 0x40, @@ -37170,7 +37172,7 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, +0x05, 0x06, 0x05, 0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, @@ -37179,9 +37181,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, -0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, -0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, +0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, +0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x1A, 0xD7, 0xC0, 0xFF, 0xFF, 0xFF, @@ -37244,7 +37246,7 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, +0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, @@ -38062,8 +38064,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x8F, 0x30, 0x47, 0x46, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC6, 0xA1, 0x00, 0x71, 0xC0, -0xB0, 0x5E, 0x77, 0xC6, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, +0x8F, 0x30, 0x47, 0x45, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC5, 0xA1, 0x00, 0x71, 0xC0, +0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD3, 0xDC, 0x8F, 0xC0, 0xD4, 0x1B, 0xC9, 0xB0, 0xD5, 0x33, 0x55, 0xC0, @@ -38111,8 +38113,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -38120,9 +38122,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, -0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, -0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, -0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, +0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, +0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, +0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, @@ -38209,8 +38211,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -43205,15 +43207,15 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x56, 0x29, 0x5C, 0x60, 0x56, 0xF5, 0xC2, 0xF0, 0x58, 0x13, 0xCA, 0x60, 0x58, 0xD5, 0xA4, 0xF0, 0x59, 0xF3, 0xAC, 0x60, 0x5A, 0xB5, 0x86, 0xF0, 0x5B, 0xD3, 0x8E, 0x60, 0x5C, 0x9D, 0x43, 0xE0, 0x5D, 0xB3, 0x62, 0x50, 0x5E, 0x7E, 0x77, 0x60, 0x5F, 0x93, 0x52, 0x60, 0x60, 0x5E, 0x59, 0x60, -0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3E, 0x3B, 0x60, 0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1E, 0x1D, 0x60, -0x65, 0x3A, 0xE1, 0x60, 0x66, 0x07, 0x39, 0xE0, 0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE7, 0x1B, 0xE0, -0x69, 0x03, 0xDF, 0xE0, 0x69, 0xC6, 0xFD, 0xE0, 0x6A, 0xE3, 0xC1, 0xE0, 0x6B, 0xA6, 0xDF, 0xE0, -0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x86, 0xC1, 0xE0, 0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x66, 0xA3, 0xE0, -0x70, 0x83, 0x67, 0xE0, 0x71, 0x4F, 0xC0, 0x60, 0x72, 0x63, 0x49, 0xE0, 0x73, 0x2F, 0xA2, 0x60, -0x74, 0x4C, 0x66, 0x60, 0x75, 0x0F, 0x84, 0x60, 0x76, 0x2C, 0x48, 0x60, 0x76, 0xEF, 0x66, 0x60, -0x78, 0x0C, 0x2A, 0x60, 0x78, 0xCF, 0x48, 0x60, 0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xAF, 0x2A, 0x60, -0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x98, 0x46, 0xE0, 0x7D, 0xB5, 0x0A, 0xE0, 0x7E, 0x78, 0x28, 0xE0, -0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3F, 0x8C, 0xE0, 0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1F, 0x6E, 0xE0, +0x65, 0x3A, 0xE1, 0x60, 0x66, 0x08, 0x8B, 0x60, 0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE8, 0x6D, 0x60, +0x68, 0xFA, 0xA5, 0x60, 0x69, 0xC8, 0x4F, 0x60, 0x6A, 0xDA, 0x87, 0x60, 0x6B, 0xA8, 0x31, 0x60, +0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x88, 0x13, 0x60, 0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x67, 0xF5, 0x60, +0x70, 0x83, 0x67, 0xE0, 0x71, 0x51, 0x11, 0xE0, 0x72, 0x63, 0x49, 0xE0, 0x73, 0x30, 0xF3, 0xE0, +0x74, 0x43, 0x2B, 0xE0, 0x75, 0x10, 0xD5, 0xE0, 0x76, 0x2C, 0x48, 0x60, 0x76, 0xF0, 0xB7, 0xE0, +0x78, 0x0C, 0x2A, 0x60, 0x78, 0xD0, 0x99, 0xE0, 0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xB0, 0x7B, 0xE0, +0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x99, 0x98, 0x60, 0x7D, 0xAB, 0xD0, 0x60, 0x7E, 0x79, 0x7A, 0x60, +0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, @@ -43291,22 +43293,22 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7B, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, -0x3E, 0x3B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, -0x1E, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, -0x07, 0x39, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, -0xE7, 0x1B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, 0x03, 0xDF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, -0xC6, 0xFD, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE3, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6B, -0xA6, 0xDF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, -0x86, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, -0x66, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, -0x4F, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, -0x2F, 0xA2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4C, 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x75, -0x0F, 0x84, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, -0xEF, 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, -0xCF, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, -0xAF, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, -0x98, 0x46, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB5, 0x0A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, -0x78, 0x28, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, +0x3F, 0x8C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, +0x1F, 0x6E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, +0x08, 0x8B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, +0xE8, 0x6D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFA, 0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, +0xC8, 0x4F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDA, 0x87, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, +0xA8, 0x31, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, +0x88, 0x13, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, +0x67, 0xF5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, +0x51, 0x11, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, +0x30, 0xF3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x43, 0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x75, +0x10, 0xD5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, +0xF0, 0xB7, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, +0xD0, 0x99, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, +0xB0, 0x7B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, +0x99, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAB, 0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, +0x79, 0x7A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, @@ -43323,9 +43325,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, -0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, -0x2E, 0x35, 0x2F, 0x31, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, 0x00, -0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70, +0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x34, +0x2E, 0x34, 0x2F, 0x32, 0x35, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, +0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70, /* Asia/Harbin */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -43398,15 +43400,15 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x49, 0x6C, 0x50, 0x55, 0x15, 0xD2, 0xE0, 0x56, 0x29, 0x5C, 0x60, 0x56, 0xF5, 0xC2, 0xF0, 0x58, 0x13, 0xCA, 0x60, 0x58, 0xD5, 0xA4, 0xF0, 0x59, 0xF3, 0xAC, 0x60, 0x5A, 0xB5, 0x86, 0xF0, 0x5B, 0xD3, 0x8E, 0x60, 0x5C, 0x9D, 0x43, 0xE0, 0x5D, 0xB3, 0x62, 0x50, 0x5E, 0x7E, 0x77, 0x60, -0x5F, 0x93, 0x52, 0x60, 0x60, 0x5E, 0x59, 0x60, 0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3E, 0x3B, 0x60, -0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1E, 0x1D, 0x60, 0x65, 0x3A, 0xE1, 0x60, 0x66, 0x07, 0x39, 0xE0, -0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE7, 0x1B, 0xE0, 0x69, 0x03, 0xDF, 0xE0, 0x69, 0xC6, 0xFD, 0xE0, -0x6A, 0xE3, 0xC1, 0xE0, 0x6B, 0xA6, 0xDF, 0xE0, 0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x86, 0xC1, 0xE0, -0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x66, 0xA3, 0xE0, 0x70, 0x83, 0x67, 0xE0, 0x71, 0x4F, 0xC0, 0x60, -0x72, 0x63, 0x49, 0xE0, 0x73, 0x2F, 0xA2, 0x60, 0x74, 0x4C, 0x66, 0x60, 0x75, 0x0F, 0x84, 0x60, -0x76, 0x2C, 0x48, 0x60, 0x76, 0xEF, 0x66, 0x60, 0x78, 0x0C, 0x2A, 0x60, 0x78, 0xCF, 0x48, 0x60, -0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xAF, 0x2A, 0x60, 0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x98, 0x46, 0xE0, -0x7D, 0xB5, 0x0A, 0xE0, 0x7E, 0x78, 0x28, 0xE0, 0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, +0x5F, 0x93, 0x52, 0x60, 0x60, 0x5E, 0x59, 0x60, 0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3F, 0x8C, 0xE0, +0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1F, 0x6E, 0xE0, 0x65, 0x3A, 0xE1, 0x60, 0x66, 0x08, 0x8B, 0x60, +0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE8, 0x6D, 0x60, 0x68, 0xFA, 0xA5, 0x60, 0x69, 0xC8, 0x4F, 0x60, +0x6A, 0xDA, 0x87, 0x60, 0x6B, 0xA8, 0x31, 0x60, 0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x88, 0x13, 0x60, +0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x67, 0xF5, 0x60, 0x70, 0x83, 0x67, 0xE0, 0x71, 0x51, 0x11, 0xE0, +0x72, 0x63, 0x49, 0xE0, 0x73, 0x30, 0xF3, 0xE0, 0x74, 0x43, 0x2B, 0xE0, 0x75, 0x10, 0xD5, 0xE0, +0x76, 0x2C, 0x48, 0x60, 0x76, 0xF0, 0xB7, 0xE0, 0x78, 0x0C, 0x2A, 0x60, 0x78, 0xD0, 0x99, 0xE0, +0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xB0, 0x7B, 0xE0, 0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x99, 0x98, 0x60, +0x7D, 0xAB, 0xD0, 0x60, 0x7E, 0x79, 0x7A, 0x60, 0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, @@ -43485,23 +43487,23 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x5B, 0xD3, 0x8E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, -0x00, 0x61, 0x7B, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3E, 0x3B, 0x60, 0x00, 0x00, 0x00, -0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1E, 0x1D, 0x60, 0x00, 0x00, 0x00, -0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0x07, 0x39, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE7, 0x1B, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x69, 0x03, 0xDF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC6, 0xFD, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x6A, 0xE3, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA6, 0xDF, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x86, 0xC1, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x66, 0xA3, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x4F, 0xC0, 0x60, 0x00, 0x00, 0x00, -0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x2F, 0xA2, 0x60, 0x00, 0x00, 0x00, -0x00, 0x74, 0x4C, 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x75, 0x0F, 0x84, 0x60, 0x00, 0x00, 0x00, -0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xEF, 0x66, 0x60, 0x00, 0x00, 0x00, -0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xCF, 0x48, 0x60, 0x00, 0x00, 0x00, -0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xAF, 0x2A, 0x60, 0x00, 0x00, 0x00, -0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x98, 0x46, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x7D, 0xB5, 0x0A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x78, 0x28, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x61, 0x7B, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0x8C, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x6E, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0x8B, 0x60, 0x00, 0x00, 0x00, +0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x6D, 0x60, 0x00, 0x00, 0x00, +0x00, 0x68, 0xFA, 0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x4F, 0x60, 0x00, 0x00, 0x00, +0x00, 0x6A, 0xDA, 0x87, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x31, 0x60, 0x00, 0x00, 0x00, +0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x13, 0x60, 0x00, 0x00, 0x00, +0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x67, 0xF5, 0x60, 0x00, 0x00, 0x00, +0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x11, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x30, 0xF3, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x74, 0x43, 0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x75, 0x10, 0xD5, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xB7, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0x99, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0x7B, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0x98, 0x60, 0x00, 0x00, 0x00, +0x00, 0x7D, 0xAB, 0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0x7A, 0x60, 0x00, 0x00, 0x00, +0x00, 0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, @@ -43518,9 +43520,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x34, 0x2E, 0x34, 0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x35, 0x2F, 0x31, -0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, -0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B, +0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x32, +0x35, 0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, +0x73, 0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B, /* Asia/Ho_Chi_Minh */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -52415,8 +52417,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x8F, 0x30, 0x47, 0x46, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC6, 0xA1, 0x00, 0x71, 0xC0, -0xB0, 0x5E, 0x77, 0xC6, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, +0x8F, 0x30, 0x47, 0x45, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC5, 0xA1, 0x00, 0x71, 0xC0, +0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD3, 0xDC, 0x8F, 0xC0, 0xD4, 0x1B, 0xC9, 0xB0, 0xD5, 0x33, 0x55, 0xC0, @@ -52464,8 +52466,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -52473,9 +52475,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, -0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, -0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, -0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, +0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, +0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, +0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, @@ -52562,8 +52564,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -57536,8 +57538,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Kiev */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, 0xAA, 0x19, 0xA7, 0x64, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0xCD, 0x2E, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCE, 0xCD, 0xA8, 0x70, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, @@ -57545,9 +57547,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x0B, 0xFB, 0xF0, 0x26, 0x8D, 0x20, 0xE0, 0x28, 0xE5, 0x17, 0x80, -0x29, 0xD4, 0xEC, 0x60, 0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, 0x2C, 0xA4, 0xB1, 0x50, -0x2D, 0x94, 0xB0, 0x60, 0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, -0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, +0x29, 0xD5, 0x08, 0x80, 0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, +0x2D, 0x94, 0xCC, 0x80, 0x2E, 0x84, 0xBD, 0x80, 0x2F, 0x74, 0xAE, 0x80, 0x30, 0x64, 0x9F, 0x80, +0x31, 0x5D, 0xCB, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, @@ -57569,24 +57571,25 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, -0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x0A, 0x02, 0x0A, 0x02, 0x0A, -0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, +0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0B, 0x0C, +0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, -0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30, 0x01, -0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, -0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, -0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, +0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, +0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, +0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, +0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xCD, 0x2E, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, @@ -57601,11 +57604,11 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x20, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, -0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, +0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, +0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, @@ -57649,20 +57652,21 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, -0x08, 0x09, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, +0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x4C, 0x4D, -0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, -0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, +0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, +0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, +0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, 0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, @@ -60829,16 +60833,16 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Simferopol */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, 0xAA, 0x19, 0xA4, 0x20, 0xB5, 0xA4, 0x19, 0x60, 0xCB, 0x04, 0x8D, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xCF, 0x9F, 0x38, 0xE0, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, 0x19, 0xDB, 0x43, 0x40, 0x1A, 0xCC, 0x93, 0xD0, 0x1B, 0xBC, 0xA0, 0xF0, 0x1C, 0xAC, 0x91, 0xF0, 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, -0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x29, 0xD4, 0xEC, 0x60, -0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, 0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xB0, 0x60, +0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x29, 0xD5, 0x08, 0x80, +0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, 0x2D, 0x94, 0xCC, 0x80, 0x2D, 0xC2, 0xC6, 0xD0, 0x2E, 0x84, 0x85, 0x40, 0x2F, 0x74, 0x84, 0x50, 0x30, 0x64, 0x67, 0x40, 0x31, 0x5D, 0xA0, 0xD0, 0x32, 0x72, 0xA6, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, @@ -60851,73 +60855,74 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x5E, 0x80, 0x54, 0x4C, 0x1D, 0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, -0x08, 0x09, 0x08, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0D, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x00, +0x08, 0x09, 0x08, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, 0x0C, +0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, +0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, +0x0D, 0x0E, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, -0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, -0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, -0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, -0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x4B, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC4, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA4, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, -0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x04, 0x8D, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, -0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, -0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x9F, 0x38, -0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, -0x40, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, -0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, -0x40, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, -0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, -0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, -0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, -0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, 0x50, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x67, -0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, -0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, -0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, -0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, -0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, -0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, -0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, -0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, -0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, -0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, -0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, -0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, -0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, -0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, -0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, -0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, -0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, -0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, -0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x5E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x1D, -0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, -0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x02, 0x0A, 0x02, 0x0A, -0x02, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x08, 0x00, 0x00, 0x1F, 0xF8, -0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, -0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, -0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, -0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, -0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, -0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, -0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, +0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, +0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x01, 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, 0x10, 0x00, 0x00, 0x00, +0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, +0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC4, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA4, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x04, 0x8D, +0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, +0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, +0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x9F, 0x38, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, +0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, +0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, +0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, +0x50, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x67, 0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, +0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, +0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, +0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, +0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, +0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, +0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, +0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, +0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, +0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, +0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, +0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, +0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, +0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, +0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, +0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, +0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, +0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x5E, +0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x1D, 0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, +0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x09, 0x08, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, +0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, +0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, +0x0C, 0x0D, 0x0E, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, +0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, +0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, +0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, +0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, +0x2A, 0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, +0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, +0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x0A, 0x4D, 0x53, 0x4B, 0x2D, 0x33, 0x0A, 0x00, 0xCD, 0xEA, 0xD7, 0x01, 0x46, 0xB0, 0xD0, 0x00, 0x00, 0x00, 0x06, 0x43, 0x72, 0x69, 0x6D, 0x65, 0x61, @@ -61811,17 +61816,17 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Uzhgorod */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x00, 0xC8, 0x09, 0x71, 0x90, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0xA1, 0x9E, 0xE0, 0xD1, 0xE5, 0xFD, 0xF0, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, 0x19, 0xDB, 0x43, 0x40, 0x1A, 0xCC, 0x93, 0xD0, 0x1B, 0xBC, 0xA0, 0xF0, 0x1C, 0xAC, 0x91, 0xF0, 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, -0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x27, 0xF5, 0x42, 0xA0, 0x29, 0xD4, 0xEC, 0x60, -0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, 0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xB0, 0x60, -0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x27, 0xF5, 0x42, 0xA0, 0x29, 0xD5, 0x08, 0x80, +0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, 0x2D, 0x94, 0xCC, 0x80, +0x2E, 0x84, 0xBD, 0x80, 0x2F, 0x74, 0xAE, 0x80, 0x30, 0x64, 0x9F, 0x80, 0x31, 0x5D, 0xCB, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, @@ -61844,98 +61849,99 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x01, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x01, 0x08, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, +0x09, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x4C, 0x4D, 0x54, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, +0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, +0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, +0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0x6A, 0xEE, 0xB0, 0x18, 0xFF, 0xFF, +0xFF, 0xFF, 0xC8, 0x09, 0x71, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, +0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, +0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0xA1, 0x9E, 0xE0, 0xFF, 0xFF, +0xFF, 0xFF, 0xD1, 0xE5, 0xFD, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, +0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x27, 0xF5, 0x42, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, +0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, +0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, +0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, +0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, +0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, +0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, +0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, +0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, +0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, +0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, +0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, +0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, +0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, +0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, +0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, +0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, +0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, +0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, +0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, +0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, +0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, +0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, +0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, +0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, +0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, +0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, +0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, +0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, +0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, +0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, +0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, +0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, +0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, +0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, +0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, +0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, +0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, +0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, +0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, +0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, +0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x05, 0x04, 0x05, +0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x01, 0x08, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x00, 0x00, +0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, +0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, +0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFF, -0xFF, 0xFF, 0x6A, 0xEE, 0xB0, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x09, 0x71, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xD0, 0xA1, 0x9E, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xE5, 0xFD, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, 0x00, -0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, 0x00, -0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, 0x00, -0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x42, 0xA0, 0x00, 0x00, -0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, -0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, -0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, -0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, -0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, -0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, -0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, -0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, -0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, -0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, -0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, -0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, -0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, -0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, -0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, -0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, -0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, -0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, -0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, -0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, -0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, -0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, -0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, -0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, -0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, -0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, -0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, -0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, -0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, -0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, -0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, -0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, -0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, -0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, -0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, -0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, -0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, -0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, -0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, -0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, -0x03, 0x02, 0x03, 0x02, 0x01, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x01, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, -0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, -0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x4C, 0x4D, -0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, -0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, -0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD3, 0x83, 0x22, 0x01, 0x34, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x54, 0x72, @@ -62882,8 +62888,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Zaporozhye */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x24, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x24, 0x80, 0x00, 0x00, 0x00, 0xAA, 0x19, 0xA3, 0x30, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0xAA, 0xE7, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCE, 0xBD, 0xD6, 0x70, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, @@ -62891,9 +62897,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x0B, 0xFB, 0xF0, 0x27, 0x05, 0x27, 0x70, 0x27, 0xF5, 0x18, 0x70, -0x28, 0xE4, 0xED, 0x50, 0x29, 0xD4, 0xEC, 0x60, 0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, -0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xB0, 0x60, 0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0xBC, 0x90, -0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, +0x28, 0xE4, 0xED, 0x50, 0x29, 0xD5, 0x08, 0x80, 0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, +0x2C, 0xA4, 0xDB, 0x80, 0x2D, 0x94, 0xCC, 0x80, 0x2E, 0x84, 0xBD, 0x80, 0x2F, 0x74, 0xAE, 0x80, +0x30, 0x64, 0x9F, 0x80, 0x31, 0x5D, 0xCB, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, @@ -62916,24 +62922,25 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x00, 0x00, +0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, -0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x1C, 0x20, +0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, +0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, +0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, -0x00, 0x0D, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC3, 0x08, 0xFF, 0xFF, +0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, +0x00, 0x0F, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC3, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA3, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xAA, 0xE7, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, @@ -62948,11 +62955,11 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x27, 0x70, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x18, 0x70, 0x00, 0x00, -0x00, 0x00, 0x28, 0xE4, 0xED, 0x50, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, -0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, -0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, -0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, -0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, +0x00, 0x00, 0x28, 0xE4, 0xED, 0x50, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, +0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, @@ -62996,20 +63003,21 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, +0x09, 0x08, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x1F, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, -0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, -0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, +0x01, 0x1F, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, +0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, +0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD2, 0x51, 0x25, 0x01, 0x48, @@ -69555,4 +69563,4 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { }; #endif -const timelib_tzdb timezonedb_builtin = { "2021.5", 595, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; +const timelib_tzdb timezonedb_builtin = { "2022.1", 595, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; From 7aefee161329c78e4bb24695517cdcfe4a96c438 Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Thu, 7 Apr 2022 10:45:19 +0100 Subject: [PATCH 45/63] Updated to version 2022.1 (2022a) --- ext/date/lib/timezonedb.h | 2136 +++++++++++++++++++------------------ 1 file changed, 1072 insertions(+), 1064 deletions(-) diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h index 411ef5b44254e..60cc4b3ab6cc9 100644 --- a/ext/date/lib/timezonedb.h +++ b/ext/date/lib/timezonedb.h @@ -270,340 +270,340 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[595] = { { "Asia/Dushanbe" , 0x0247C2 }, { "Asia/Famagusta" , 0x02493C }, { "Asia/Gaza" , 0x024D03 }, - { "Asia/Harbin" , 0x0251E7 }, - { "Asia/Hebron" , 0x02537C }, - { "Asia/Ho_Chi_Minh" , 0x025871 }, - { "Asia/Hong_Kong" , 0x025969 }, - { "Asia/Hovd" , 0x025C7C }, - { "Asia/Irkutsk" , 0x025F05 }, - { "Asia/Istanbul" , 0x026223 }, - { "Asia/Jakarta" , 0x0266DF }, - { "Asia/Jayapura" , 0x0267F0 }, - { "Asia/Jerusalem" , 0x0268DD }, - { "Asia/Kabul" , 0x026D1B }, - { "Asia/Kamchatka" , 0x026DC6 }, - { "Asia/Karachi" , 0x0270BB }, - { "Asia/Kashgar" , 0x0271D1 }, - { "Asia/Kathmandu" , 0x027262 }, - { "Asia/Katmandu" , 0x02730F }, - { "Asia/Khandyga" , 0x0273BC }, - { "Asia/Kolkata" , 0x0276ED }, - { "Asia/Krasnoyarsk" , 0x0277D5 }, - { "Asia/Kuala_Lumpur" , 0x027ADF }, - { "Asia/Kuching" , 0x027BFF }, - { "Asia/Kuwait" , 0x027D59 }, - { "Asia/Macao" , 0x027DEA }, - { "Asia/Macau" , 0x02810D }, - { "Asia/Magadan" , 0x028430 }, - { "Asia/Makassar" , 0x02873B }, - { "Asia/Manila" , 0x02884E }, - { "Asia/Muscat" , 0x028948 }, - { "Asia/Nicosia" , 0x0289D9 }, - { "Asia/Novokuznetsk" , 0x028C4D }, - { "Asia/Novosibirsk" , 0x028F40 }, - { "Asia/Omsk" , 0x029251 }, - { "Asia/Oral" , 0x02954F }, - { "Asia/Phnom_Penh" , 0x0297DB }, - { "Asia/Pontianak" , 0x02987F }, - { "Asia/Pyongyang" , 0x029998 }, - { "Asia/Qatar" , 0x029A5B }, - { "Asia/Qostanay" , 0x029AFF }, - { "Asia/Qyzylorda" , 0x029D8C }, - { "Asia/Rangoon" , 0x02A025 }, - { "Asia/Riyadh" , 0x02A0EC }, - { "Asia/Saigon" , 0x02A17D }, - { "Asia/Sakhalin" , 0x02A275 }, - { "Asia/Samarkand" , 0x02A58C }, - { "Asia/Seoul" , 0x02A717 }, - { "Asia/Shanghai" , 0x02A8C2 }, - { "Asia/Singapore" , 0x02AA63 }, - { "Asia/Srednekolymsk" , 0x02AB6F }, - { "Asia/Taipei" , 0x02AE83 }, - { "Asia/Tashkent" , 0x02B08E }, - { "Asia/Tbilisi" , 0x02B219 }, - { "Asia/Tehran" , 0x02B49A }, - { "Asia/Tel_Aviv" , 0x02BC7A }, - { "Asia/Thimbu" , 0x02C0B8 }, - { "Asia/Thimphu" , 0x02C15E }, - { "Asia/Tokyo" , 0x02C204 }, - { "Asia/Tomsk" , 0x02C2E5 }, - { "Asia/Ujung_Pandang" , 0x02C5F0 }, - { "Asia/Ulaanbaatar" , 0x02C6BA }, - { "Asia/Ulan_Bator" , 0x02C92D }, - { "Asia/Urumqi" , 0x02CB8B }, - { "Asia/Ust-Nera" , 0x02CC29 }, - { "Asia/Vientiane" , 0x02CF4C }, - { "Asia/Vladivostok" , 0x02CFF0 }, - { "Asia/Yakutsk" , 0x02D2F5 }, - { "Asia/Yangon" , 0x02D5F9 }, - { "Asia/Yekaterinburg" , 0x02D6C0 }, - { "Asia/Yerevan" , 0x02D9D2 }, - { "Atlantic/Azores" , 0x02DCA2 }, - { "Atlantic/Bermuda" , 0x02E261 }, - { "Atlantic/Canary" , 0x02E66D }, - { "Atlantic/Cape_Verde" , 0x02E865 }, - { "Atlantic/Faeroe" , 0x02E920 }, - { "Atlantic/Faroe" , 0x02EAE5 }, - { "Atlantic/Jan_Mayen" , 0x02ECAA }, - { "Atlantic/Madeira" , 0x02EF5A }, - { "Atlantic/Reykjavik" , 0x02F522 }, - { "Atlantic/South_Georgia" , 0x02F81F }, - { "Atlantic/St_Helena" , 0x02F8AF }, - { "Atlantic/Stanley" , 0x02F93D }, - { "Australia/ACT" , 0x02FC5E }, - { "Australia/Adelaide" , 0x02FFF2 }, - { "Australia/Brisbane" , 0x0303A6 }, - { "Australia/Broken_Hill" , 0x0304EA }, - { "Australia/Canberra" , 0x0308BF }, - { "Australia/Currie" , 0x030C53 }, - { "Australia/Darwin" , 0x03104A }, - { "Australia/Eucla" , 0x031152 }, - { "Australia/Hobart" , 0x0312B1 }, - { "Australia/LHI" , 0x0316B0 }, - { "Australia/Lindeman" , 0x031970 }, - { "Australia/Lord_Howe" , 0x031AE0 }, - { "Australia/Melbourne" , 0x031DB0 }, - { "Australia/North" , 0x03214C }, - { "Australia/NSW" , 0x032242 }, - { "Australia/Perth" , 0x0325D6 }, - { "Australia/Queensland" , 0x032732 }, - { "Australia/South" , 0x03285F }, - { "Australia/Sydney" , 0x032C04 }, - { "Australia/Tasmania" , 0x032FB4 }, - { "Australia/Victoria" , 0x0333AB }, - { "Australia/West" , 0x03373F }, - { "Australia/Yancowinna" , 0x03387D }, - { "Brazil/Acre" , 0x033C36 }, - { "Brazil/DeNoronha" , 0x033DE4 }, - { "Brazil/East" , 0x033FD4 }, - { "Brazil/West" , 0x034398 }, - { "Canada/Atlantic" , 0x034540 }, - { "Canada/Central" , 0x034BD4 }, - { "Canada/Eastern" , 0x0350EE }, - { "Canada/Mountain" , 0x0357AF }, - { "Canada/Newfoundland" , 0x035B85 }, - { "Canada/Pacific" , 0x0362E7 }, - { "Canada/Saskatchewan" , 0x036825 }, - { "Canada/Yukon" , 0x036AAF }, - { "CET" , 0x036EC0 }, - { "Chile/Continental" , 0x037139 }, - { "Chile/EasterIsland" , 0x037647 }, - { "CST6CDT" , 0x037AA1 }, - { "Cuba" , 0x037E64 }, - { "EET" , 0x0382CD }, - { "Egypt" , 0x0384CA }, - { "Eire" , 0x0389D2 }, - { "EST" , 0x038FB6 }, - { "EST5EDT" , 0x039031 }, - { "Etc/GMT" , 0x0393F4 }, - { "Etc/GMT+0" , 0x03946F }, - { "Etc/GMT+1" , 0x0394EA }, - { "Etc/GMT+10" , 0x039567 }, - { "Etc/GMT+11" , 0x0395E5 }, - { "Etc/GMT+12" , 0x039663 }, - { "Etc/GMT+2" , 0x0396E1 }, - { "Etc/GMT+3" , 0x03975E }, - { "Etc/GMT+4" , 0x0397DB }, - { "Etc/GMT+5" , 0x039858 }, - { "Etc/GMT+6" , 0x0398D5 }, - { "Etc/GMT+7" , 0x039952 }, - { "Etc/GMT+8" , 0x0399CF }, - { "Etc/GMT+9" , 0x039A4C }, - { "Etc/GMT-0" , 0x039AC9 }, - { "Etc/GMT-1" , 0x039B44 }, - { "Etc/GMT-10" , 0x039BC2 }, - { "Etc/GMT-11" , 0x039C41 }, - { "Etc/GMT-12" , 0x039CC0 }, - { "Etc/GMT-13" , 0x039D3F }, - { "Etc/GMT-14" , 0x039DBE }, - { "Etc/GMT-2" , 0x039E3D }, - { "Etc/GMT-3" , 0x039EBB }, - { "Etc/GMT-4" , 0x039F39 }, - { "Etc/GMT-5" , 0x039FB7 }, - { "Etc/GMT-6" , 0x03A035 }, - { "Etc/GMT-7" , 0x03A0B3 }, - { "Etc/GMT-8" , 0x03A131 }, - { "Etc/GMT-9" , 0x03A1AF }, - { "Etc/GMT0" , 0x03A22D }, - { "Etc/Greenwich" , 0x03A2A8 }, - { "Etc/UCT" , 0x03A323 }, - { "Etc/Universal" , 0x03A39E }, - { "Etc/UTC" , 0x03A419 }, - { "Etc/Zulu" , 0x03A494 }, - { "Europe/Amsterdam" , 0x03A50F }, - { "Europe/Andorra" , 0x03A94A }, - { "Europe/Astrakhan" , 0x03AADB }, - { "Europe/Athens" , 0x03ADCF }, - { "Europe/Belfast" , 0x03B085 }, - { "Europe/Belgrade" , 0x03B6D0 }, - { "Europe/Berlin" , 0x03B8BA }, - { "Europe/Bratislava" , 0x03BB9B }, - { "Europe/Brussels" , 0x03BE7A }, - { "Europe/Bucharest" , 0x03C2D5 }, - { "Europe/Budapest" , 0x03C576 }, - { "Europe/Busingen" , 0x03C880 }, - { "Europe/Chisinau" , 0x03CA85 }, - { "Europe/Copenhagen" , 0x03CD84 }, - { "Europe/Dublin" , 0x03CFFF }, - { "Europe/Gibraltar" , 0x03D5E3 }, - { "Europe/Guernsey" , 0x03DAB3 }, - { "Europe/Helsinki" , 0x03E0FE }, - { "Europe/Isle_of_Man" , 0x03E2EB }, - { "Europe/Istanbul" , 0x03E936 }, - { "Europe/Jersey" , 0x03EDF2 }, - { "Europe/Kaliningrad" , 0x03F43D }, - { "Europe/Kiev" , 0x03F7E5 }, - { "Europe/Kirov" , 0x03FA2A }, - { "Europe/Lisbon" , 0x03FD11 }, - { "Europe/Ljubljana" , 0x0402DE }, - { "Europe/London" , 0x0404C8 }, - { "Europe/Luxembourg" , 0x040B13 }, - { "Europe/Madrid" , 0x040F5E }, - { "Europe/Malta" , 0x0412FB }, - { "Europe/Mariehamn" , 0x0416A7 }, - { "Europe/Minsk" , 0x041894 }, - { "Europe/Monaco" , 0x041BC8 }, - { "Europe/Moscow" , 0x04202E }, - { "Europe/Nicosia" , 0x0423DA }, - { "Europe/Oslo" , 0x04263B }, - { "Europe/Paris" , 0x0428EB }, - { "Europe/Podgorica" , 0x042D48 }, - { "Europe/Prague" , 0x042F32 }, - { "Europe/Riga" , 0x043211 }, - { "Europe/Rome" , 0x0434D3 }, - { "Europe/Samara" , 0x043892 }, - { "Europe/San_Marino" , 0x043B93 }, - { "Europe/Sarajevo" , 0x043F52 }, - { "Europe/Saratov" , 0x04413C }, - { "Europe/Simferopol" , 0x04442E }, - { "Europe/Skopje" , 0x0447A1 }, - { "Europe/Sofia" , 0x04498B }, - { "Europe/Stockholm" , 0x044BE7 }, - { "Europe/Tallinn" , 0x044DE4 }, - { "Europe/Tirane" , 0x045093 }, - { "Europe/Tiraspol" , 0x0452FB }, - { "Europe/Ulyanovsk" , 0x0455FA }, - { "Europe/Uzhgorod" , 0x045910 }, - { "Europe/Vaduz" , 0x045B3C }, - { "Europe/Vatican" , 0x045D39 }, - { "Europe/Vienna" , 0x0460F8 }, - { "Europe/Vilnius" , 0x046396 }, - { "Europe/Volgograd" , 0x046646 }, - { "Europe/Warsaw" , 0x046943 }, - { "Europe/Zagreb" , 0x046CEA }, - { "Europe/Zaporozhye" , 0x046ED4 }, - { "Europe/Zurich" , 0x04712B }, - { "Factory" , 0x047328 }, - { "GB" , 0x0473A5 }, - { "GB-Eire" , 0x0479F0 }, - { "GMT" , 0x04803B }, - { "GMT+0" , 0x0480B6 }, - { "GMT-0" , 0x048131 }, - { "GMT0" , 0x0481AC }, - { "Greenwich" , 0x048227 }, - { "Hongkong" , 0x0482A2 }, - { "HST" , 0x0485B5 }, - { "Iceland" , 0x048631 }, - { "Indian/Antananarivo" , 0x04892E }, - { "Indian/Chagos" , 0x0489F9 }, - { "Indian/Christmas" , 0x048A9D }, - { "Indian/Cocos" , 0x048B2E }, - { "Indian/Comoro" , 0x048BC6 }, - { "Indian/Kerguelen" , 0x048C91 }, - { "Indian/Mahe" , 0x048D22 }, - { "Indian/Maldives" , 0x048DB3 }, - { "Indian/Mauritius" , 0x048E57 }, - { "Indian/Mayotte" , 0x048F16 }, - { "Indian/Reunion" , 0x048FE1 }, - { "Iran" , 0x049072 }, - { "Israel" , 0x049852 }, - { "Jamaica" , 0x049C90 }, - { "Japan" , 0x049DEF }, - { "Kwajalein" , 0x049ED0 }, - { "Libya" , 0x049FB7 }, - { "MET" , 0x04A172 }, - { "Mexico/BajaNorte" , 0x04A3EB }, - { "Mexico/BajaSur" , 0x04A7F8 }, - { "Mexico/General" , 0x04A973 }, - { "MST" , 0x04AB1B }, - { "MST7MDT" , 0x04AB96 }, - { "Navajo" , 0x04AF59 }, - { "NZ" , 0x04B377 }, - { "NZ-CHAT" , 0x04B796 }, - { "Pacific/Apia" , 0x04BACA }, - { "Pacific/Auckland" , 0x04BC6D }, - { "Pacific/Bougainville" , 0x04C0A4 }, - { "Pacific/Chatham" , 0x04C185 }, - { "Pacific/Chuuk" , 0x04C4C8 }, - { "Pacific/Easter" , 0x04C5A6 }, - { "Pacific/Efate" , 0x04CA0D }, - { "Pacific/Enderbury" , 0x04CB6F }, - { "Pacific/Fakaofo" , 0x04CC27 }, - { "Pacific/Fiji" , 0x04CCCC }, - { "Pacific/Funafuti" , 0x04CE84 }, - { "Pacific/Galapagos" , 0x04CF16 }, - { "Pacific/Gambier" , 0x04CFE2 }, - { "Pacific/Guadalcanal" , 0x04D081 }, - { "Pacific/Guam" , 0x04D113 }, - { "Pacific/Honolulu" , 0x04D27D }, - { "Pacific/Johnston" , 0x04D36C }, - { "Pacific/Kanton" , 0x04D455 }, - { "Pacific/Kiritimati" , 0x04D51C }, - { "Pacific/Kosrae" , 0x04D5E2 }, - { "Pacific/Kwajalein" , 0x04D6E6 }, - { "Pacific/Majuro" , 0x04D7D6 }, - { "Pacific/Marquesas" , 0x04D8D9 }, - { "Pacific/Midway" , 0x04D981 }, - { "Pacific/Nauru" , 0x04DA2D }, - { "Pacific/Niue" , 0x04DAF0 }, - { "Pacific/Norfolk" , 0x04DB96 }, - { "Pacific/Noumea" , 0x04DC99 }, - { "Pacific/Pago_Pago" , 0x04DD6B }, - { "Pacific/Palau" , 0x04DE09 }, - { "Pacific/Pitcairn" , 0x04DEA9 }, - { "Pacific/Pohnpei" , 0x04DF4E }, - { "Pacific/Ponape" , 0x04E03E }, - { "Pacific/Port_Moresby" , 0x04E120 }, - { "Pacific/Rarotonga" , 0x04E1E3 }, - { "Pacific/Saipan" , 0x04E385 }, - { "Pacific/Samoa" , 0x04E4EF }, - { "Pacific/Tahiti" , 0x04E58D }, - { "Pacific/Tarawa" , 0x04E62D }, - { "Pacific/Tongatapu" , 0x04E6CE }, - { "Pacific/Truk" , 0x04E7C7 }, - { "Pacific/Wake" , 0x04E896 }, - { "Pacific/Wallis" , 0x04E933 }, - { "Pacific/Yap" , 0x04E9C5 }, - { "Poland" , 0x04EA94 }, - { "Portugal" , 0x04EE3B }, - { "PRC" , 0x04F3F5 }, - { "PST8PDT" , 0x04F58A }, - { "ROC" , 0x04F94D }, - { "ROK" , 0x04FB58 }, - { "Singapore" , 0x04FD03 }, - { "Turkey" , 0x04FE0F }, - { "UCT" , 0x0502CB }, - { "Universal" , 0x050346 }, - { "US/Alaska" , 0x0503C1 }, - { "US/Aleutian" , 0x05079E }, - { "US/Arizona" , 0x050B73 }, - { "US/Central" , 0x050C6F }, - { "US/East-Indiana" , 0x051355 }, - { "US/Eastern" , 0x051574 }, - { "US/Hawaii" , 0x051C50 }, - { "US/Indiana-Starke" , 0x051D39 }, - { "US/Michigan" , 0x05213D }, - { "US/Mountain" , 0x0524CC }, - { "US/Pacific" , 0x0528EA }, - { "US/Samoa" , 0x052E04 }, - { "UTC" , 0x052EA2 }, - { "W-SU" , 0x052F1D }, - { "WET" , 0x0532B5 }, - { "Zulu" , 0x0534AF }, + { "Asia/Harbin" , 0x0251F1 }, + { "Asia/Hebron" , 0x025386 }, + { "Asia/Ho_Chi_Minh" , 0x025885 }, + { "Asia/Hong_Kong" , 0x02597D }, + { "Asia/Hovd" , 0x025C90 }, + { "Asia/Irkutsk" , 0x025F19 }, + { "Asia/Istanbul" , 0x026237 }, + { "Asia/Jakarta" , 0x0266F3 }, + { "Asia/Jayapura" , 0x026804 }, + { "Asia/Jerusalem" , 0x0268F1 }, + { "Asia/Kabul" , 0x026D2F }, + { "Asia/Kamchatka" , 0x026DDA }, + { "Asia/Karachi" , 0x0270CF }, + { "Asia/Kashgar" , 0x0271E5 }, + { "Asia/Kathmandu" , 0x027276 }, + { "Asia/Katmandu" , 0x027323 }, + { "Asia/Khandyga" , 0x0273D0 }, + { "Asia/Kolkata" , 0x027701 }, + { "Asia/Krasnoyarsk" , 0x0277E9 }, + { "Asia/Kuala_Lumpur" , 0x027AF3 }, + { "Asia/Kuching" , 0x027C13 }, + { "Asia/Kuwait" , 0x027D6D }, + { "Asia/Macao" , 0x027DFE }, + { "Asia/Macau" , 0x028121 }, + { "Asia/Magadan" , 0x028444 }, + { "Asia/Makassar" , 0x02874F }, + { "Asia/Manila" , 0x028862 }, + { "Asia/Muscat" , 0x02895C }, + { "Asia/Nicosia" , 0x0289ED }, + { "Asia/Novokuznetsk" , 0x028C61 }, + { "Asia/Novosibirsk" , 0x028F54 }, + { "Asia/Omsk" , 0x029265 }, + { "Asia/Oral" , 0x029563 }, + { "Asia/Phnom_Penh" , 0x0297EF }, + { "Asia/Pontianak" , 0x029893 }, + { "Asia/Pyongyang" , 0x0299AC }, + { "Asia/Qatar" , 0x029A6F }, + { "Asia/Qostanay" , 0x029B13 }, + { "Asia/Qyzylorda" , 0x029DA0 }, + { "Asia/Rangoon" , 0x02A039 }, + { "Asia/Riyadh" , 0x02A100 }, + { "Asia/Saigon" , 0x02A191 }, + { "Asia/Sakhalin" , 0x02A289 }, + { "Asia/Samarkand" , 0x02A5A0 }, + { "Asia/Seoul" , 0x02A72B }, + { "Asia/Shanghai" , 0x02A8D6 }, + { "Asia/Singapore" , 0x02AA77 }, + { "Asia/Srednekolymsk" , 0x02AB83 }, + { "Asia/Taipei" , 0x02AE97 }, + { "Asia/Tashkent" , 0x02B0A2 }, + { "Asia/Tbilisi" , 0x02B22D }, + { "Asia/Tehran" , 0x02B4AE }, + { "Asia/Tel_Aviv" , 0x02BC8E }, + { "Asia/Thimbu" , 0x02C0CC }, + { "Asia/Thimphu" , 0x02C172 }, + { "Asia/Tokyo" , 0x02C218 }, + { "Asia/Tomsk" , 0x02C2F9 }, + { "Asia/Ujung_Pandang" , 0x02C604 }, + { "Asia/Ulaanbaatar" , 0x02C6CE }, + { "Asia/Ulan_Bator" , 0x02C941 }, + { "Asia/Urumqi" , 0x02CB9F }, + { "Asia/Ust-Nera" , 0x02CC3D }, + { "Asia/Vientiane" , 0x02CF60 }, + { "Asia/Vladivostok" , 0x02D004 }, + { "Asia/Yakutsk" , 0x02D309 }, + { "Asia/Yangon" , 0x02D60D }, + { "Asia/Yekaterinburg" , 0x02D6D4 }, + { "Asia/Yerevan" , 0x02D9E6 }, + { "Atlantic/Azores" , 0x02DCB6 }, + { "Atlantic/Bermuda" , 0x02E275 }, + { "Atlantic/Canary" , 0x02E681 }, + { "Atlantic/Cape_Verde" , 0x02E879 }, + { "Atlantic/Faeroe" , 0x02E934 }, + { "Atlantic/Faroe" , 0x02EAF9 }, + { "Atlantic/Jan_Mayen" , 0x02ECBE }, + { "Atlantic/Madeira" , 0x02EF6E }, + { "Atlantic/Reykjavik" , 0x02F536 }, + { "Atlantic/South_Georgia" , 0x02F833 }, + { "Atlantic/St_Helena" , 0x02F8C3 }, + { "Atlantic/Stanley" , 0x02F951 }, + { "Australia/ACT" , 0x02FC72 }, + { "Australia/Adelaide" , 0x030006 }, + { "Australia/Brisbane" , 0x0303BA }, + { "Australia/Broken_Hill" , 0x0304FE }, + { "Australia/Canberra" , 0x0308D3 }, + { "Australia/Currie" , 0x030C67 }, + { "Australia/Darwin" , 0x03105E }, + { "Australia/Eucla" , 0x031166 }, + { "Australia/Hobart" , 0x0312C5 }, + { "Australia/LHI" , 0x0316C4 }, + { "Australia/Lindeman" , 0x031984 }, + { "Australia/Lord_Howe" , 0x031AF4 }, + { "Australia/Melbourne" , 0x031DC4 }, + { "Australia/North" , 0x032160 }, + { "Australia/NSW" , 0x032256 }, + { "Australia/Perth" , 0x0325EA }, + { "Australia/Queensland" , 0x032746 }, + { "Australia/South" , 0x032873 }, + { "Australia/Sydney" , 0x032C18 }, + { "Australia/Tasmania" , 0x032FC8 }, + { "Australia/Victoria" , 0x0333BF }, + { "Australia/West" , 0x033753 }, + { "Australia/Yancowinna" , 0x033891 }, + { "Brazil/Acre" , 0x033C4A }, + { "Brazil/DeNoronha" , 0x033DF8 }, + { "Brazil/East" , 0x033FE8 }, + { "Brazil/West" , 0x0343AC }, + { "Canada/Atlantic" , 0x034554 }, + { "Canada/Central" , 0x034BE8 }, + { "Canada/Eastern" , 0x035102 }, + { "Canada/Mountain" , 0x0357C3 }, + { "Canada/Newfoundland" , 0x035B99 }, + { "Canada/Pacific" , 0x0362FB }, + { "Canada/Saskatchewan" , 0x036839 }, + { "Canada/Yukon" , 0x036AC3 }, + { "CET" , 0x036ED4 }, + { "Chile/Continental" , 0x03714D }, + { "Chile/EasterIsland" , 0x03765B }, + { "CST6CDT" , 0x037AB5 }, + { "Cuba" , 0x037E78 }, + { "EET" , 0x0382E1 }, + { "Egypt" , 0x0384DE }, + { "Eire" , 0x0389E6 }, + { "EST" , 0x038FCA }, + { "EST5EDT" , 0x039045 }, + { "Etc/GMT" , 0x039408 }, + { "Etc/GMT+0" , 0x039483 }, + { "Etc/GMT+1" , 0x0394FE }, + { "Etc/GMT+10" , 0x03957B }, + { "Etc/GMT+11" , 0x0395F9 }, + { "Etc/GMT+12" , 0x039677 }, + { "Etc/GMT+2" , 0x0396F5 }, + { "Etc/GMT+3" , 0x039772 }, + { "Etc/GMT+4" , 0x0397EF }, + { "Etc/GMT+5" , 0x03986C }, + { "Etc/GMT+6" , 0x0398E9 }, + { "Etc/GMT+7" , 0x039966 }, + { "Etc/GMT+8" , 0x0399E3 }, + { "Etc/GMT+9" , 0x039A60 }, + { "Etc/GMT-0" , 0x039ADD }, + { "Etc/GMT-1" , 0x039B58 }, + { "Etc/GMT-10" , 0x039BD6 }, + { "Etc/GMT-11" , 0x039C55 }, + { "Etc/GMT-12" , 0x039CD4 }, + { "Etc/GMT-13" , 0x039D53 }, + { "Etc/GMT-14" , 0x039DD2 }, + { "Etc/GMT-2" , 0x039E51 }, + { "Etc/GMT-3" , 0x039ECF }, + { "Etc/GMT-4" , 0x039F4D }, + { "Etc/GMT-5" , 0x039FCB }, + { "Etc/GMT-6" , 0x03A049 }, + { "Etc/GMT-7" , 0x03A0C7 }, + { "Etc/GMT-8" , 0x03A145 }, + { "Etc/GMT-9" , 0x03A1C3 }, + { "Etc/GMT0" , 0x03A241 }, + { "Etc/Greenwich" , 0x03A2BC }, + { "Etc/UCT" , 0x03A337 }, + { "Etc/Universal" , 0x03A3B2 }, + { "Etc/UTC" , 0x03A42D }, + { "Etc/Zulu" , 0x03A4A8 }, + { "Europe/Amsterdam" , 0x03A523 }, + { "Europe/Andorra" , 0x03A95E }, + { "Europe/Astrakhan" , 0x03AAEF }, + { "Europe/Athens" , 0x03ADE3 }, + { "Europe/Belfast" , 0x03B099 }, + { "Europe/Belgrade" , 0x03B6E4 }, + { "Europe/Berlin" , 0x03B8CE }, + { "Europe/Bratislava" , 0x03BBAF }, + { "Europe/Brussels" , 0x03BE8E }, + { "Europe/Bucharest" , 0x03C2E9 }, + { "Europe/Budapest" , 0x03C58A }, + { "Europe/Busingen" , 0x03C894 }, + { "Europe/Chisinau" , 0x03CA99 }, + { "Europe/Copenhagen" , 0x03CD98 }, + { "Europe/Dublin" , 0x03D013 }, + { "Europe/Gibraltar" , 0x03D5F7 }, + { "Europe/Guernsey" , 0x03DAC7 }, + { "Europe/Helsinki" , 0x03E112 }, + { "Europe/Isle_of_Man" , 0x03E2FF }, + { "Europe/Istanbul" , 0x03E94A }, + { "Europe/Jersey" , 0x03EE06 }, + { "Europe/Kaliningrad" , 0x03F451 }, + { "Europe/Kiev" , 0x03F7F9 }, + { "Europe/Kirov" , 0x03FA47 }, + { "Europe/Lisbon" , 0x03FD2E }, + { "Europe/Ljubljana" , 0x0402FB }, + { "Europe/London" , 0x0404E5 }, + { "Europe/Luxembourg" , 0x040B30 }, + { "Europe/Madrid" , 0x040F7B }, + { "Europe/Malta" , 0x041318 }, + { "Europe/Mariehamn" , 0x0416C4 }, + { "Europe/Minsk" , 0x0418B1 }, + { "Europe/Monaco" , 0x041BE5 }, + { "Europe/Moscow" , 0x04204B }, + { "Europe/Nicosia" , 0x0423F7 }, + { "Europe/Oslo" , 0x042658 }, + { "Europe/Paris" , 0x042908 }, + { "Europe/Podgorica" , 0x042D65 }, + { "Europe/Prague" , 0x042F4F }, + { "Europe/Riga" , 0x04322E }, + { "Europe/Rome" , 0x0434F0 }, + { "Europe/Samara" , 0x0438AF }, + { "Europe/San_Marino" , 0x043BB0 }, + { "Europe/Sarajevo" , 0x043F6F }, + { "Europe/Saratov" , 0x044159 }, + { "Europe/Simferopol" , 0x04444B }, + { "Europe/Skopje" , 0x0447BE }, + { "Europe/Sofia" , 0x0449A8 }, + { "Europe/Stockholm" , 0x044C04 }, + { "Europe/Tallinn" , 0x044E01 }, + { "Europe/Tirane" , 0x0450B0 }, + { "Europe/Tiraspol" , 0x045318 }, + { "Europe/Ulyanovsk" , 0x045617 }, + { "Europe/Uzhgorod" , 0x04592D }, + { "Europe/Vaduz" , 0x045B62 }, + { "Europe/Vatican" , 0x045D5F }, + { "Europe/Vienna" , 0x04611E }, + { "Europe/Vilnius" , 0x0463BC }, + { "Europe/Volgograd" , 0x04666C }, + { "Europe/Warsaw" , 0x046969 }, + { "Europe/Zagreb" , 0x046D10 }, + { "Europe/Zaporozhye" , 0x046EFA }, + { "Europe/Zurich" , 0x04715A }, + { "Factory" , 0x047357 }, + { "GB" , 0x0473D4 }, + { "GB-Eire" , 0x047A1F }, + { "GMT" , 0x04806A }, + { "GMT+0" , 0x0480E5 }, + { "GMT-0" , 0x048160 }, + { "GMT0" , 0x0481DB }, + { "Greenwich" , 0x048256 }, + { "Hongkong" , 0x0482D1 }, + { "HST" , 0x0485E4 }, + { "Iceland" , 0x048660 }, + { "Indian/Antananarivo" , 0x04895D }, + { "Indian/Chagos" , 0x048A28 }, + { "Indian/Christmas" , 0x048ACC }, + { "Indian/Cocos" , 0x048B5D }, + { "Indian/Comoro" , 0x048BF5 }, + { "Indian/Kerguelen" , 0x048CC0 }, + { "Indian/Mahe" , 0x048D51 }, + { "Indian/Maldives" , 0x048DE2 }, + { "Indian/Mauritius" , 0x048E86 }, + { "Indian/Mayotte" , 0x048F45 }, + { "Indian/Reunion" , 0x049010 }, + { "Iran" , 0x0490A1 }, + { "Israel" , 0x049881 }, + { "Jamaica" , 0x049CBF }, + { "Japan" , 0x049E1E }, + { "Kwajalein" , 0x049EFF }, + { "Libya" , 0x049FE6 }, + { "MET" , 0x04A1A1 }, + { "Mexico/BajaNorte" , 0x04A41A }, + { "Mexico/BajaSur" , 0x04A827 }, + { "Mexico/General" , 0x04A9A2 }, + { "MST" , 0x04AB4A }, + { "MST7MDT" , 0x04ABC5 }, + { "Navajo" , 0x04AF88 }, + { "NZ" , 0x04B3A6 }, + { "NZ-CHAT" , 0x04B7C5 }, + { "Pacific/Apia" , 0x04BAF9 }, + { "Pacific/Auckland" , 0x04BC9C }, + { "Pacific/Bougainville" , 0x04C0D3 }, + { "Pacific/Chatham" , 0x04C1B4 }, + { "Pacific/Chuuk" , 0x04C4F7 }, + { "Pacific/Easter" , 0x04C5D5 }, + { "Pacific/Efate" , 0x04CA3C }, + { "Pacific/Enderbury" , 0x04CB9E }, + { "Pacific/Fakaofo" , 0x04CC56 }, + { "Pacific/Fiji" , 0x04CCFB }, + { "Pacific/Funafuti" , 0x04CEB3 }, + { "Pacific/Galapagos" , 0x04CF45 }, + { "Pacific/Gambier" , 0x04D011 }, + { "Pacific/Guadalcanal" , 0x04D0B0 }, + { "Pacific/Guam" , 0x04D142 }, + { "Pacific/Honolulu" , 0x04D2AC }, + { "Pacific/Johnston" , 0x04D39B }, + { "Pacific/Kanton" , 0x04D484 }, + { "Pacific/Kiritimati" , 0x04D54B }, + { "Pacific/Kosrae" , 0x04D611 }, + { "Pacific/Kwajalein" , 0x04D715 }, + { "Pacific/Majuro" , 0x04D805 }, + { "Pacific/Marquesas" , 0x04D908 }, + { "Pacific/Midway" , 0x04D9B0 }, + { "Pacific/Nauru" , 0x04DA5C }, + { "Pacific/Niue" , 0x04DB1F }, + { "Pacific/Norfolk" , 0x04DBC5 }, + { "Pacific/Noumea" , 0x04DCC8 }, + { "Pacific/Pago_Pago" , 0x04DD9A }, + { "Pacific/Palau" , 0x04DE38 }, + { "Pacific/Pitcairn" , 0x04DED8 }, + { "Pacific/Pohnpei" , 0x04DF7D }, + { "Pacific/Ponape" , 0x04E06D }, + { "Pacific/Port_Moresby" , 0x04E14F }, + { "Pacific/Rarotonga" , 0x04E212 }, + { "Pacific/Saipan" , 0x04E3B4 }, + { "Pacific/Samoa" , 0x04E51E }, + { "Pacific/Tahiti" , 0x04E5BC }, + { "Pacific/Tarawa" , 0x04E65C }, + { "Pacific/Tongatapu" , 0x04E6FD }, + { "Pacific/Truk" , 0x04E7F6 }, + { "Pacific/Wake" , 0x04E8C5 }, + { "Pacific/Wallis" , 0x04E962 }, + { "Pacific/Yap" , 0x04E9F4 }, + { "Poland" , 0x04EAC3 }, + { "Portugal" , 0x04EE6A }, + { "PRC" , 0x04F424 }, + { "PST8PDT" , 0x04F5B9 }, + { "ROC" , 0x04F97C }, + { "ROK" , 0x04FB87 }, + { "Singapore" , 0x04FD32 }, + { "Turkey" , 0x04FE3E }, + { "UCT" , 0x0502FA }, + { "Universal" , 0x050375 }, + { "US/Alaska" , 0x0503F0 }, + { "US/Aleutian" , 0x0507CD }, + { "US/Arizona" , 0x050BA2 }, + { "US/Central" , 0x050C9E }, + { "US/East-Indiana" , 0x051384 }, + { "US/Eastern" , 0x0515A3 }, + { "US/Hawaii" , 0x051C7F }, + { "US/Indiana-Starke" , 0x051D68 }, + { "US/Michigan" , 0x05216C }, + { "US/Mountain" , 0x0524FB }, + { "US/Pacific" , 0x052919 }, + { "US/Samoa" , 0x052E33 }, + { "UTC" , 0x052ED1 }, + { "W-SU" , 0x052F4C }, + { "WET" , 0x0532E4 }, + { "Zulu" , 0x0534DE }, }; -const unsigned char timelib_timezone_db_data_builtin[341290] = { +const unsigned char timelib_timezone_db_data_builtin[341337] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7531,9 +7531,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x74, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, -0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, @@ -7596,7 +7596,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x06, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, +0x03, 0x05, 0x06, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, @@ -8018,9 +8018,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x7A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, -0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, @@ -8086,8 +8086,8 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x00, 0xFF, -0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, +0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x00, 0xFF, +0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x34, 0x3E, 0x34, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x2C, 0x4D, 0x39, @@ -10702,7 +10702,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0xBD, 0x4A, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x59, 0xCF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xFA, 0xA6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x38, 0x9C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE5, 0xEB, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xAC, 0xFE, 0x00, 0xFF, @@ -10761,21 +10761,21 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x5A, 0xB5, 0x86, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD3, 0x8E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, -0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7B, 0x1D, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 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, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x20, 0x50, -0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, -0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, -0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, -0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, -0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x35, 0x2F, 0x31, 0x0A, 0x00, 0xB9, -0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, -0x74, 0x72, 0x69, 0x70, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x20, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, +0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, +0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, +0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, +0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, 0x31, 0x30, +0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x32, 0x35, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, +0x00, 0x00, 0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70, /* Asia/Harbin */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10811,7 +10811,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x77, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0xBD, 0x4A, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x59, 0xCF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xFA, 0xA6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x38, 0x9C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE5, 0xEB, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xAC, 0xFE, 0x00, 0xFF, @@ -10871,21 +10871,21 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x5A, 0xB5, 0x86, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD3, 0x8E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, -0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7B, 0x1D, 0x60, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x01, 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, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, -0x20, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, -0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, -0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, -0x2E, 0x34, 0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x35, 0x2F, 0x31, 0x0A, -0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, 0x74, -0x20, 0x42, 0x61, 0x6E, 0x6B, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x20, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x2A, +0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, +0x00, 0x1C, 0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, +0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, +0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, +0x31, 0x30, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x32, 0x35, 0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, +0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, 0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B, /* Asia/Ho_Chi_Minh */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -15680,9 +15680,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x7A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, -0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, @@ -15748,8 +15748,8 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x00, 0xFF, -0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, +0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x00, 0xFF, +0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x34, 0x3E, 0x34, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x2C, 0x4D, 0x39, @@ -17987,7 +17987,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x26, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x22, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xCD, 0x2E, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, @@ -18002,23 +18002,23 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x20, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, -0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, -0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, -0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, -0x07, 0x02, 0x07, 0x02, 0x07, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, -0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, -0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, -0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, -0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, -0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, -0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, 0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, 0x00, 0x00, 0x00, -0x14, 0x55, 0x6B, 0x72, 0x61, 0x69, 0x6E, 0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, -0x72, 0x65, 0x61, 0x73, 0x29, +0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, +0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, +0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, +0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, +0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x00, 0x00, +0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, +0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, +0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, +0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, +0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, +0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, +0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, +0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, 0x00, 0x00, 0x00, 0x14, 0x55, 0x6B, 0x72, 0x61, 0x69, 0x6E, +0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, /* Europe/Kirov */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -19279,9 +19279,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, 0xD0, 0x00, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, 0x50, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x67, 0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, @@ -19617,7 +19617,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x25, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0x6A, 0xEE, 0xB0, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x09, 0x71, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, @@ -19632,21 +19632,22 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x42, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, -0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x01, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, 0x00, 0x14, 0xE8, -0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, -0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, -0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, -0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, -0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, -0x34, 0x0A, 0x00, 0xD3, 0x83, 0x22, 0x01, 0x34, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x54, 0x72, -0x61, 0x6E, 0x73, 0x63, 0x61, 0x72, 0x70, 0x61, 0x74, 0x68, 0x69, 0x61, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, +0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x01, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x4C, +0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, +0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, +0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD3, 0x83, 0x22, 0x01, +0x34, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x63, 0x61, 0x72, 0x70, +0x61, 0x74, 0x68, 0x69, 0x61, /* Europe/Vaduz */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4C, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -19984,7 +19985,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x27, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC3, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA3, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xAA, 0xE7, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, @@ -20000,23 +20001,24 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x27, 0x70, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE4, 0xED, 0x50, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, -0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, -0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, -0x03, 0x06, 0x03, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x00, 0x00, -0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, -0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, -0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, -0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, -0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, -0x00, 0xD2, 0x51, 0x25, 0x01, 0x48, 0x51, 0x7A, 0x00, 0x00, 0x00, 0x1B, 0x5A, 0x61, 0x70, 0x6F, -0x72, 0x6F, 0x7A, 0x68, 0x79, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x73, 0x74, 0x20, -0x4C, 0x75, 0x67, 0x61, 0x6E, 0x73, 0x6B, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, +0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, +0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, +0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x07, 0x02, 0x07, 0x02, 0x07, +0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, +0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, +0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, +0x1B, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, 0x30, +0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, +0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, +0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, +0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD2, 0x51, 0x25, 0x01, 0x48, 0x51, +0x7A, 0x00, 0x00, 0x00, 0x1B, 0x5A, 0x61, 0x70, 0x6F, 0x72, 0x6F, 0x7A, 0x68, 0x79, 0x65, 0x20, +0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x73, 0x74, 0x20, 0x4C, 0x75, 0x67, 0x61, 0x6E, 0x73, 0x6B, + /* Europe/Zurich */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -23690,340 +23692,340 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[595] = { { "Asia/Dushanbe" , 0x0476ED }, { "Asia/Famagusta" , 0x047948 }, { "Asia/Gaza" , 0x04814F }, - { "Asia/Harbin" , 0x048ADA }, - { "Asia/Hebron" , 0x048D17 }, - { "Asia/Ho_Chi_Minh" , 0x0496BD }, - { "Asia/Hong_Kong" , 0x049828 }, - { "Asia/Hovd" , 0x049CE7 }, - { "Asia/Irkutsk" , 0x04A099 }, - { "Asia/Istanbul" , 0x04A59A }, - { "Asia/Jakarta" , 0x04AD41 }, - { "Asia/Jayapura" , 0x04AEBD }, - { "Asia/Jerusalem" , 0x04AFDC }, - { "Asia/Kabul" , 0x04B93C }, - { "Asia/Kamchatka" , 0x04BA18 }, - { "Asia/Karachi" , 0x04BEC4 }, - { "Asia/Kashgar" , 0x04C04B }, - { "Asia/Kathmandu" , 0x04C0FC }, - { "Asia/Katmandu" , 0x04C1DC }, - { "Asia/Khandyga" , 0x04C2BC }, - { "Asia/Kolkata" , 0x04C7DD }, - { "Asia/Krasnoyarsk" , 0x04C906 }, - { "Asia/Kuala_Lumpur" , 0x04CDE2 }, - { "Asia/Kuching" , 0x04CF81 }, - { "Asia/Kuwait" , 0x04D17E }, - { "Asia/Macao" , 0x04D22F }, - { "Asia/Macau" , 0x04D706 }, - { "Asia/Magadan" , 0x04DBDD }, - { "Asia/Makassar" , 0x04E0BF }, - { "Asia/Manila" , 0x04E212 }, - { "Asia/Muscat" , 0x04E366 }, - { "Asia/Nicosia" , 0x04E417 }, - { "Asia/Novokuznetsk" , 0x04EC08 }, - { "Asia/Novosibirsk" , 0x04F0B2 }, - { "Asia/Omsk" , 0x04F597 }, - { "Asia/Oral" , 0x04FA67 }, - { "Asia/Phnom_Penh" , 0x04FE6F }, - { "Asia/Pontianak" , 0x04FF42 }, - { "Asia/Pyongyang" , 0x0500C5 }, - { "Asia/Qatar" , 0x0501BE }, - { "Asia/Qostanay" , 0x050291 }, - { "Asia/Qyzylorda" , 0x0506AA }, - { "Asia/Rangoon" , 0x050AD4 }, - { "Asia/Riyadh" , 0x050BEC }, - { "Asia/Saigon" , 0x050C9D }, - { "Asia/Sakhalin" , 0x050E08 }, - { "Asia/Samarkand" , 0x0512DE }, - { "Asia/Seoul" , 0x05153C }, - { "Asia/Shanghai" , 0x0517B1 }, - { "Asia/Singapore" , 0x0519FA }, - { "Asia/Srednekolymsk" , 0x051B85 }, - { "Asia/Taipei" , 0x05206B }, - { "Asia/Tashkent" , 0x052370 }, - { "Asia/Tbilisi" , 0x0525DC }, - { "Asia/Tehran" , 0x0529F3 }, - { "Asia/Tel_Aviv" , 0x053415 }, - { "Asia/Thimbu" , 0x053D75 }, - { "Asia/Thimphu" , 0x053E4C }, - { "Asia/Tokyo" , 0x053F23 }, - { "Asia/Tomsk" , 0x054064 }, - { "Asia/Ujung_Pandang" , 0x054543 }, - { "Asia/Ulaanbaatar" , 0x05464D }, - { "Asia/Ulan_Bator" , 0x0549E9 }, - { "Asia/Urumqi" , 0x054D70 }, - { "Asia/Ust-Nera" , 0x054E2E }, - { "Asia/Vientiane" , 0x055332 }, - { "Asia/Vladivostok" , 0x055405 }, - { "Asia/Yakutsk" , 0x0558DC }, - { "Asia/Yangon" , 0x055DB2 }, - { "Asia/Yekaterinburg" , 0x055ECA }, - { "Asia/Yerevan" , 0x0563BF }, - { "Atlantic/Azores" , 0x05684A }, - { "Atlantic/Bermuda" , 0x057614 }, - { "Atlantic/Canary" , 0x057F7C }, - { "Atlantic/Cape_Verde" , 0x0586FF }, - { "Atlantic/Faeroe" , 0x058819 }, - { "Atlantic/Faroe" , 0x058F3C }, - { "Atlantic/Jan_Mayen" , 0x05965F }, - { "Atlantic/Madeira" , 0x059F1F }, - { "Atlantic/Reykjavik" , 0x05ACE9 }, - { "Atlantic/South_Georgia" , 0x05B17F }, - { "Atlantic/St_Helena" , 0x05B22F }, - { "Atlantic/Stanley" , 0x05B2CF }, - { "Australia/ACT" , 0x05B799 }, - { "Australia/Adelaide" , 0x05C033 }, - { "Australia/Brisbane" , 0x05C8EE }, - { "Australia/Broken_Hill" , 0x05CAB4 }, - { "Australia/Canberra" , 0x05D391 }, - { "Australia/Currie" , 0x05DC2B }, - { "Australia/Darwin" , 0x05E56D }, - { "Australia/Eucla" , 0x05E6D0 }, - { "Australia/Hobart" , 0x05E8CB }, - { "Australia/LHI" , 0x05F215 }, - { "Australia/Lindeman" , 0x05F965 }, - { "Australia/Lord_Howe" , 0x05FB6B }, - { "Australia/Melbourne" , 0x0602CB }, - { "Australia/North" , 0x060B6D }, - { "Australia/NSW" , 0x060CBE }, - { "Australia/Perth" , 0x061558 }, - { "Australia/Queensland" , 0x061740 }, - { "Australia/South" , 0x0618EF }, - { "Australia/Sydney" , 0x06219B }, - { "Australia/Tasmania" , 0x062A51 }, - { "Australia/Victoria" , 0x063393 }, - { "Australia/West" , 0x063C2D }, - { "Australia/Yancowinna" , 0x063DF7 }, - { "Brazil/Acre" , 0x0646B8 }, - { "Brazil/DeNoronha" , 0x064938 }, - { "Brazil/East" , 0x064C10 }, - { "Brazil/West" , 0x0651C0 }, - { "Canada/Atlantic" , 0x065428 }, - { "Canada/Central" , 0x066194 }, - { "Canada/Eastern" , 0x066CD4 }, - { "Canada/Mountain" , 0x067A86 }, - { "Canada/Newfoundland" , 0x0683AE }, - { "Canada/Pacific" , 0x069201 }, - { "Canada/Saskatchewan" , 0x069D59 }, - { "Canada/Yukon" , 0x06A139 }, - { "CET" , 0x06A793 }, - { "Chile/Continental" , 0x06AFCD }, - { "Chile/EasterIsland" , 0x06B9BA }, - { "CST6CDT" , 0x06C27F }, - { "Cuba" , 0x06CB91 }, - { "EET" , 0x06D50D }, - { "Egypt" , 0x06DC8D }, - { "Eire" , 0x06E43C }, - { "EST" , 0x06F1EC }, - { "EST5EDT" , 0x06F26A }, - { "Etc/GMT" , 0x06FB7C }, - { "Etc/GMT+0" , 0x06FBFA }, - { "Etc/GMT+1" , 0x06FC78 }, - { "Etc/GMT+10" , 0x06FCF8 }, - { "Etc/GMT+11" , 0x06FD79 }, - { "Etc/GMT+12" , 0x06FDFA }, - { "Etc/GMT+2" , 0x06FE7B }, - { "Etc/GMT+3" , 0x06FEFB }, - { "Etc/GMT+4" , 0x06FF7B }, - { "Etc/GMT+5" , 0x06FFFB }, - { "Etc/GMT+6" , 0x07007B }, - { "Etc/GMT+7" , 0x0700FB }, - { "Etc/GMT+8" , 0x07017B }, - { "Etc/GMT+9" , 0x0701FB }, - { "Etc/GMT-0" , 0x07027B }, - { "Etc/GMT-1" , 0x0702F9 }, - { "Etc/GMT-10" , 0x07037A }, - { "Etc/GMT-11" , 0x0703FC }, - { "Etc/GMT-12" , 0x07047E }, - { "Etc/GMT-13" , 0x070500 }, - { "Etc/GMT-14" , 0x070582 }, - { "Etc/GMT-2" , 0x070604 }, - { "Etc/GMT-3" , 0x070685 }, - { "Etc/GMT-4" , 0x070706 }, - { "Etc/GMT-5" , 0x070787 }, - { "Etc/GMT-6" , 0x070808 }, - { "Etc/GMT-7" , 0x070889 }, - { "Etc/GMT-8" , 0x07090A }, - { "Etc/GMT-9" , 0x07098B }, - { "Etc/GMT0" , 0x070A0C }, - { "Etc/Greenwich" , 0x070A8A }, - { "Etc/UCT" , 0x070B08 }, - { "Etc/Universal" , 0x070B86 }, - { "Etc/UTC" , 0x070C04 }, - { "Etc/Zulu" , 0x070C82 }, - { "Europe/Amsterdam" , 0x070D00 }, - { "Europe/Andorra" , 0x07186A }, - { "Europe/Astrakhan" , 0x071F44 }, - { "Europe/Athens" , 0x0723EF }, - { "Europe/Belfast" , 0x072CD1 }, - { "Europe/Belgrade" , 0x073B1D }, - { "Europe/Berlin" , 0x0742A9 }, - { "Europe/Bratislava" , 0x074BC3 }, - { "Europe/Brussels" , 0x0754CC }, - { "Europe/Bucharest" , 0x07604D }, - { "Europe/Budapest" , 0x0768E1 }, - { "Europe/Busingen" , 0x07722D }, - { "Europe/Chisinau" , 0x0779B6 }, - { "Europe/Copenhagen" , 0x078318 }, - { "Europe/Dublin" , 0x078B7D }, - { "Europe/Gibraltar" , 0x07992D }, - { "Europe/Guernsey" , 0x07A525 }, - { "Europe/Helsinki" , 0x07B371 }, - { "Europe/Isle_of_Man" , 0x07BAE9 }, - { "Europe/Istanbul" , 0x07C935 }, - { "Europe/Jersey" , 0x07D0DC }, - { "Europe/Kaliningrad" , 0x07DF28 }, - { "Europe/Kiev" , 0x07E51D }, - { "Europe/Kirov" , 0x07ED65 }, - { "Europe/Lisbon" , 0x07F200 }, - { "Europe/Ljubljana" , 0x07FFC8 }, - { "Europe/London" , 0x080754 }, - { "Europe/Luxembourg" , 0x0815A0 }, - { "Europe/Madrid" , 0x08212E }, - { "Europe/Malta" , 0x082B80 }, - { "Europe/Mariehamn" , 0x0835C8 }, - { "Europe/Minsk" , 0x083D40 }, - { "Europe/Monaco" , 0x084275 }, - { "Europe/Moscow" , 0x084E01 }, - { "Europe/Nicosia" , 0x085420 }, - { "Europe/Oslo" , 0x085BFE }, - { "Europe/Paris" , 0x0864BE }, - { "Europe/Podgorica" , 0x08705C }, - { "Europe/Prague" , 0x0877E8 }, - { "Europe/Riga" , 0x0880F1 }, - { "Europe/Rome" , 0x088993 }, - { "Europe/Samara" , 0x0893F0 }, - { "Europe/San_Marino" , 0x0898D4 }, - { "Europe/Sarajevo" , 0x08A331 }, - { "Europe/Saratov" , 0x08AABD }, - { "Europe/Simferopol" , 0x08AF78 }, - { "Europe/Skopje" , 0x08B537 }, - { "Europe/Sofia" , 0x08BCC3 }, - { "Europe/Stockholm" , 0x08C4EC }, - { "Europe/Tallinn" , 0x08CC6D }, - { "Europe/Tirane" , 0x08D4DD }, - { "Europe/Tiraspol" , 0x08DD0D }, - { "Europe/Ulyanovsk" , 0x08E66F }, - { "Europe/Uzhgorod" , 0x08EB80 }, - { "Europe/Vaduz" , 0x08F39C }, - { "Europe/Vatican" , 0x08FB1D }, - { "Europe/Vienna" , 0x09057A }, - { "Europe/Vilnius" , 0x090E1E }, - { "Europe/Volgograd" , 0x09169C }, - { "Europe/Warsaw" , 0x091B47 }, - { "Europe/Zagreb" , 0x0925B1 }, - { "Europe/Zaporozhye" , 0x092D3D }, - { "Europe/Zurich" , 0x09359E }, - { "Factory" , 0x093D1F }, - { "GB" , 0x093D9F }, - { "GB-Eire" , 0x094BEB }, - { "GMT" , 0x095A37 }, - { "GMT+0" , 0x095AB5 }, - { "GMT-0" , 0x095B33 }, - { "GMT0" , 0x095BB1 }, - { "Greenwich" , 0x095C2F }, - { "Hongkong" , 0x095CAD }, - { "HST" , 0x09616C }, - { "Iceland" , 0x0961EB }, - { "Indian/Antananarivo" , 0x096681 }, - { "Indian/Chagos" , 0x096796 }, - { "Indian/Christmas" , 0x096869 }, - { "Indian/Cocos" , 0x09691A }, - { "Indian/Comoro" , 0x0969D4 }, - { "Indian/Kerguelen" , 0x096AE9 }, - { "Indian/Mahe" , 0x096B9A }, - { "Indian/Maldives" , 0x096C4B }, - { "Indian/Mauritius" , 0x096D1E }, - { "Indian/Mayotte" , 0x096E1B }, - { "Indian/Reunion" , 0x096F30 }, - { "Iran" , 0x096FE1 }, - { "Israel" , 0x097A03 }, - { "Jamaica" , 0x098363 }, - { "Japan" , 0x098551 }, - { "Kwajalein" , 0x098692 }, - { "Libya" , 0x0987DA }, - { "MET" , 0x098A57 }, - { "Mexico/BajaNorte" , 0x099291 }, - { "Mexico/BajaSur" , 0x099BC3 }, - { "Mexico/General" , 0x09A1C5 }, - { "MST" , 0x09A801 }, - { "MST7MDT" , 0x09A87F }, - { "Navajo" , 0x09B191 }, - { "NZ" , 0x09BB29 }, - { "NZ-CHAT" , 0x09C4BA }, - { "Pacific/Apia" , 0x09CCDA }, - { "Pacific/Auckland" , 0x09CF4A }, - { "Pacific/Bougainville" , 0x09D8F3 }, - { "Pacific/Chatham" , 0x09DA17 }, - { "Pacific/Chuuk" , 0x09E246 }, - { "Pacific/Easter" , 0x09E36E }, - { "Pacific/Efate" , 0x09EC40 }, - { "Pacific/Enderbury" , 0x09EE66 }, - { "Pacific/Fakaofo" , 0x09EF5C }, - { "Pacific/Fiji" , 0x09F030 }, - { "Pacific/Funafuti" , 0x09F455 }, - { "Pacific/Galapagos" , 0x09F507 }, - { "Pacific/Gambier" , 0x09F612 }, - { "Pacific/Guadalcanal" , 0x09F6D1 }, - { "Pacific/Guam" , 0x09F783 }, - { "Pacific/Honolulu" , 0x09F97D }, - { "Pacific/Johnston" , 0x09FAD8 }, - { "Pacific/Kanton" , 0x09FC2D }, - { "Pacific/Kiritimati" , 0x09FD32 }, - { "Pacific/Kosrae" , 0x09FE38 }, - { "Pacific/Kwajalein" , 0x09FFA9 }, - { "Pacific/Majuro" , 0x0A00FA }, - { "Pacific/Marquesas" , 0x0A0259 }, - { "Pacific/Midway" , 0x0A0323 }, - { "Pacific/Nauru" , 0x0A03EC }, - { "Pacific/Niue" , 0x0A04F4 }, - { "Pacific/Norfolk" , 0x0A05CB }, - { "Pacific/Noumea" , 0x0A0947 }, - { "Pacific/Pago_Pago" , 0x0A0A83 }, - { "Pacific/Palau" , 0x0A0B3E }, - { "Pacific/Pitcairn" , 0x0A0BFE }, - { "Pacific/Pohnpei" , 0x0A0CD4 }, - { "Pacific/Ponape" , 0x0A0E1D }, - { "Pacific/Port_Moresby" , 0x0A0F58 }, - { "Pacific/Rarotonga" , 0x0A103B }, - { "Pacific/Saipan" , 0x0A12A2 }, - { "Pacific/Samoa" , 0x0A149C }, - { "Pacific/Tahiti" , 0x0A1557 }, - { "Pacific/Tarawa" , 0x0A1617 }, - { "Pacific/Tongatapu" , 0x0A16D8 }, - { "Pacific/Truk" , 0x0A1858 }, - { "Pacific/Wake" , 0x0A1971 }, - { "Pacific/Wallis" , 0x0A1A2E }, - { "Pacific/Yap" , 0x0A1AE0 }, - { "Poland" , 0x0A1BF9 }, - { "Portugal" , 0x0A2663 }, - { "PRC" , 0x0A3418 }, - { "PST8PDT" , 0x0A3655 }, - { "ROC" , 0x0A3F67 }, - { "ROK" , 0x0A426C }, - { "Singapore" , 0x0A44E1 }, - { "Turkey" , 0x0A466C }, - { "UCT" , 0x0A4E13 }, - { "Universal" , 0x0A4E91 }, - { "US/Alaska" , 0x0A4F0F }, - { "US/Aleutian" , 0x0A585E }, - { "US/Arizona" , 0x0A619E }, - { "US/Central" , 0x0A62F2 }, - { "US/East-Indiana" , 0x0A70F6 }, - { "US/Eastern" , 0x0A7784 }, - { "US/Hawaii" , 0x0A8560 }, - { "US/Indiana-Starke" , 0x0A86B5 }, - { "US/Michigan" , 0x0A903D }, - { "US/Mountain" , 0x0A98FF }, - { "US/Pacific" , 0x0AA297 }, - { "US/Samoa" , 0x0AADB7 }, - { "UTC" , 0x0AAE72 }, - { "W-SU" , 0x0AAEF0 }, - { "WET" , 0x0AB4FB }, - { "Zulu" , 0x0ABC78 }, + { "Asia/Harbin" , 0x048ADB }, + { "Asia/Hebron" , 0x048D18 }, + { "Asia/Ho_Chi_Minh" , 0x0496BF }, + { "Asia/Hong_Kong" , 0x04982A }, + { "Asia/Hovd" , 0x049CE9 }, + { "Asia/Irkutsk" , 0x04A09B }, + { "Asia/Istanbul" , 0x04A59C }, + { "Asia/Jakarta" , 0x04AD43 }, + { "Asia/Jayapura" , 0x04AEBF }, + { "Asia/Jerusalem" , 0x04AFDE }, + { "Asia/Kabul" , 0x04B93E }, + { "Asia/Kamchatka" , 0x04BA1A }, + { "Asia/Karachi" , 0x04BEC6 }, + { "Asia/Kashgar" , 0x04C04D }, + { "Asia/Kathmandu" , 0x04C0FE }, + { "Asia/Katmandu" , 0x04C1DE }, + { "Asia/Khandyga" , 0x04C2BE }, + { "Asia/Kolkata" , 0x04C7DF }, + { "Asia/Krasnoyarsk" , 0x04C908 }, + { "Asia/Kuala_Lumpur" , 0x04CDE4 }, + { "Asia/Kuching" , 0x04CF83 }, + { "Asia/Kuwait" , 0x04D180 }, + { "Asia/Macao" , 0x04D231 }, + { "Asia/Macau" , 0x04D708 }, + { "Asia/Magadan" , 0x04DBDF }, + { "Asia/Makassar" , 0x04E0C1 }, + { "Asia/Manila" , 0x04E214 }, + { "Asia/Muscat" , 0x04E368 }, + { "Asia/Nicosia" , 0x04E419 }, + { "Asia/Novokuznetsk" , 0x04EC0A }, + { "Asia/Novosibirsk" , 0x04F0B4 }, + { "Asia/Omsk" , 0x04F599 }, + { "Asia/Oral" , 0x04FA69 }, + { "Asia/Phnom_Penh" , 0x04FE71 }, + { "Asia/Pontianak" , 0x04FF44 }, + { "Asia/Pyongyang" , 0x0500C7 }, + { "Asia/Qatar" , 0x0501C0 }, + { "Asia/Qostanay" , 0x050293 }, + { "Asia/Qyzylorda" , 0x0506AC }, + { "Asia/Rangoon" , 0x050AD6 }, + { "Asia/Riyadh" , 0x050BEE }, + { "Asia/Saigon" , 0x050C9F }, + { "Asia/Sakhalin" , 0x050E0A }, + { "Asia/Samarkand" , 0x0512E0 }, + { "Asia/Seoul" , 0x05153E }, + { "Asia/Shanghai" , 0x0517B3 }, + { "Asia/Singapore" , 0x0519FC }, + { "Asia/Srednekolymsk" , 0x051B87 }, + { "Asia/Taipei" , 0x05206D }, + { "Asia/Tashkent" , 0x052372 }, + { "Asia/Tbilisi" , 0x0525DE }, + { "Asia/Tehran" , 0x0529F5 }, + { "Asia/Tel_Aviv" , 0x053417 }, + { "Asia/Thimbu" , 0x053D77 }, + { "Asia/Thimphu" , 0x053E4E }, + { "Asia/Tokyo" , 0x053F25 }, + { "Asia/Tomsk" , 0x054066 }, + { "Asia/Ujung_Pandang" , 0x054545 }, + { "Asia/Ulaanbaatar" , 0x05464F }, + { "Asia/Ulan_Bator" , 0x0549EB }, + { "Asia/Urumqi" , 0x054D72 }, + { "Asia/Ust-Nera" , 0x054E30 }, + { "Asia/Vientiane" , 0x055334 }, + { "Asia/Vladivostok" , 0x055407 }, + { "Asia/Yakutsk" , 0x0558DE }, + { "Asia/Yangon" , 0x055DB4 }, + { "Asia/Yekaterinburg" , 0x055ECC }, + { "Asia/Yerevan" , 0x0563C1 }, + { "Atlantic/Azores" , 0x05684C }, + { "Atlantic/Bermuda" , 0x057616 }, + { "Atlantic/Canary" , 0x057F7E }, + { "Atlantic/Cape_Verde" , 0x058701 }, + { "Atlantic/Faeroe" , 0x05881B }, + { "Atlantic/Faroe" , 0x058F3E }, + { "Atlantic/Jan_Mayen" , 0x059661 }, + { "Atlantic/Madeira" , 0x059F21 }, + { "Atlantic/Reykjavik" , 0x05ACEB }, + { "Atlantic/South_Georgia" , 0x05B181 }, + { "Atlantic/St_Helena" , 0x05B231 }, + { "Atlantic/Stanley" , 0x05B2D1 }, + { "Australia/ACT" , 0x05B79B }, + { "Australia/Adelaide" , 0x05C035 }, + { "Australia/Brisbane" , 0x05C8F0 }, + { "Australia/Broken_Hill" , 0x05CAB6 }, + { "Australia/Canberra" , 0x05D393 }, + { "Australia/Currie" , 0x05DC2D }, + { "Australia/Darwin" , 0x05E56F }, + { "Australia/Eucla" , 0x05E6D2 }, + { "Australia/Hobart" , 0x05E8CD }, + { "Australia/LHI" , 0x05F217 }, + { "Australia/Lindeman" , 0x05F967 }, + { "Australia/Lord_Howe" , 0x05FB6D }, + { "Australia/Melbourne" , 0x0602CD }, + { "Australia/North" , 0x060B6F }, + { "Australia/NSW" , 0x060CC0 }, + { "Australia/Perth" , 0x06155A }, + { "Australia/Queensland" , 0x061742 }, + { "Australia/South" , 0x0618F1 }, + { "Australia/Sydney" , 0x06219D }, + { "Australia/Tasmania" , 0x062A53 }, + { "Australia/Victoria" , 0x063395 }, + { "Australia/West" , 0x063C2F }, + { "Australia/Yancowinna" , 0x063DF9 }, + { "Brazil/Acre" , 0x0646BA }, + { "Brazil/DeNoronha" , 0x06493A }, + { "Brazil/East" , 0x064C12 }, + { "Brazil/West" , 0x0651C2 }, + { "Canada/Atlantic" , 0x06542A }, + { "Canada/Central" , 0x066196 }, + { "Canada/Eastern" , 0x066CD6 }, + { "Canada/Mountain" , 0x067A88 }, + { "Canada/Newfoundland" , 0x0683B0 }, + { "Canada/Pacific" , 0x069203 }, + { "Canada/Saskatchewan" , 0x069D5B }, + { "Canada/Yukon" , 0x06A13B }, + { "CET" , 0x06A795 }, + { "Chile/Continental" , 0x06AFCF }, + { "Chile/EasterIsland" , 0x06B9BC }, + { "CST6CDT" , 0x06C281 }, + { "Cuba" , 0x06CB93 }, + { "EET" , 0x06D50F }, + { "Egypt" , 0x06DC8F }, + { "Eire" , 0x06E43E }, + { "EST" , 0x06F1EE }, + { "EST5EDT" , 0x06F26C }, + { "Etc/GMT" , 0x06FB7E }, + { "Etc/GMT+0" , 0x06FBFC }, + { "Etc/GMT+1" , 0x06FC7A }, + { "Etc/GMT+10" , 0x06FCFA }, + { "Etc/GMT+11" , 0x06FD7B }, + { "Etc/GMT+12" , 0x06FDFC }, + { "Etc/GMT+2" , 0x06FE7D }, + { "Etc/GMT+3" , 0x06FEFD }, + { "Etc/GMT+4" , 0x06FF7D }, + { "Etc/GMT+5" , 0x06FFFD }, + { "Etc/GMT+6" , 0x07007D }, + { "Etc/GMT+7" , 0x0700FD }, + { "Etc/GMT+8" , 0x07017D }, + { "Etc/GMT+9" , 0x0701FD }, + { "Etc/GMT-0" , 0x07027D }, + { "Etc/GMT-1" , 0x0702FB }, + { "Etc/GMT-10" , 0x07037C }, + { "Etc/GMT-11" , 0x0703FE }, + { "Etc/GMT-12" , 0x070480 }, + { "Etc/GMT-13" , 0x070502 }, + { "Etc/GMT-14" , 0x070584 }, + { "Etc/GMT-2" , 0x070606 }, + { "Etc/GMT-3" , 0x070687 }, + { "Etc/GMT-4" , 0x070708 }, + { "Etc/GMT-5" , 0x070789 }, + { "Etc/GMT-6" , 0x07080A }, + { "Etc/GMT-7" , 0x07088B }, + { "Etc/GMT-8" , 0x07090C }, + { "Etc/GMT-9" , 0x07098D }, + { "Etc/GMT0" , 0x070A0E }, + { "Etc/Greenwich" , 0x070A8C }, + { "Etc/UCT" , 0x070B0A }, + { "Etc/Universal" , 0x070B88 }, + { "Etc/UTC" , 0x070C06 }, + { "Etc/Zulu" , 0x070C84 }, + { "Europe/Amsterdam" , 0x070D02 }, + { "Europe/Andorra" , 0x07186C }, + { "Europe/Astrakhan" , 0x071F46 }, + { "Europe/Athens" , 0x0723F1 }, + { "Europe/Belfast" , 0x072CD3 }, + { "Europe/Belgrade" , 0x073B1F }, + { "Europe/Berlin" , 0x0742AB }, + { "Europe/Bratislava" , 0x074BC5 }, + { "Europe/Brussels" , 0x0754CE }, + { "Europe/Bucharest" , 0x07604F }, + { "Europe/Budapest" , 0x0768E3 }, + { "Europe/Busingen" , 0x07722F }, + { "Europe/Chisinau" , 0x0779B8 }, + { "Europe/Copenhagen" , 0x07831A }, + { "Europe/Dublin" , 0x078B7F }, + { "Europe/Gibraltar" , 0x07992F }, + { "Europe/Guernsey" , 0x07A527 }, + { "Europe/Helsinki" , 0x07B373 }, + { "Europe/Isle_of_Man" , 0x07BAEB }, + { "Europe/Istanbul" , 0x07C937 }, + { "Europe/Jersey" , 0x07D0DE }, + { "Europe/Kaliningrad" , 0x07DF2A }, + { "Europe/Kiev" , 0x07E51F }, + { "Europe/Kirov" , 0x07ED87 }, + { "Europe/Lisbon" , 0x07F222 }, + { "Europe/Ljubljana" , 0x07FFEA }, + { "Europe/London" , 0x080776 }, + { "Europe/Luxembourg" , 0x0815C2 }, + { "Europe/Madrid" , 0x082150 }, + { "Europe/Malta" , 0x082BA2 }, + { "Europe/Mariehamn" , 0x0835EA }, + { "Europe/Minsk" , 0x083D62 }, + { "Europe/Monaco" , 0x084297 }, + { "Europe/Moscow" , 0x084E23 }, + { "Europe/Nicosia" , 0x085442 }, + { "Europe/Oslo" , 0x085C20 }, + { "Europe/Paris" , 0x0864E0 }, + { "Europe/Podgorica" , 0x08707E }, + { "Europe/Prague" , 0x08780A }, + { "Europe/Riga" , 0x088113 }, + { "Europe/Rome" , 0x0889B5 }, + { "Europe/Samara" , 0x089412 }, + { "Europe/San_Marino" , 0x0898F6 }, + { "Europe/Sarajevo" , 0x08A353 }, + { "Europe/Saratov" , 0x08AADF }, + { "Europe/Simferopol" , 0x08AF9A }, + { "Europe/Skopje" , 0x08B569 }, + { "Europe/Sofia" , 0x08BCF5 }, + { "Europe/Stockholm" , 0x08C51E }, + { "Europe/Tallinn" , 0x08CC9F }, + { "Europe/Tirane" , 0x08D50F }, + { "Europe/Tiraspol" , 0x08DD3F }, + { "Europe/Ulyanovsk" , 0x08E6A1 }, + { "Europe/Uzhgorod" , 0x08EBB2 }, + { "Europe/Vaduz" , 0x08F3DE }, + { "Europe/Vatican" , 0x08FB5F }, + { "Europe/Vienna" , 0x0905BC }, + { "Europe/Vilnius" , 0x090E60 }, + { "Europe/Volgograd" , 0x0916DE }, + { "Europe/Warsaw" , 0x091B89 }, + { "Europe/Zagreb" , 0x0925F3 }, + { "Europe/Zaporozhye" , 0x092D7F }, + { "Europe/Zurich" , 0x093600 }, + { "Factory" , 0x093D81 }, + { "GB" , 0x093E01 }, + { "GB-Eire" , 0x094C4D }, + { "GMT" , 0x095A99 }, + { "GMT+0" , 0x095B17 }, + { "GMT-0" , 0x095B95 }, + { "GMT0" , 0x095C13 }, + { "Greenwich" , 0x095C91 }, + { "Hongkong" , 0x095D0F }, + { "HST" , 0x0961CE }, + { "Iceland" , 0x09624D }, + { "Indian/Antananarivo" , 0x0966E3 }, + { "Indian/Chagos" , 0x0967F8 }, + { "Indian/Christmas" , 0x0968CB }, + { "Indian/Cocos" , 0x09697C }, + { "Indian/Comoro" , 0x096A36 }, + { "Indian/Kerguelen" , 0x096B4B }, + { "Indian/Mahe" , 0x096BFC }, + { "Indian/Maldives" , 0x096CAD }, + { "Indian/Mauritius" , 0x096D80 }, + { "Indian/Mayotte" , 0x096E7D }, + { "Indian/Reunion" , 0x096F92 }, + { "Iran" , 0x097043 }, + { "Israel" , 0x097A65 }, + { "Jamaica" , 0x0983C5 }, + { "Japan" , 0x0985B3 }, + { "Kwajalein" , 0x0986F4 }, + { "Libya" , 0x09883C }, + { "MET" , 0x098AB9 }, + { "Mexico/BajaNorte" , 0x0992F3 }, + { "Mexico/BajaSur" , 0x099C25 }, + { "Mexico/General" , 0x09A227 }, + { "MST" , 0x09A863 }, + { "MST7MDT" , 0x09A8E1 }, + { "Navajo" , 0x09B1F3 }, + { "NZ" , 0x09BB8B }, + { "NZ-CHAT" , 0x09C51C }, + { "Pacific/Apia" , 0x09CD3C }, + { "Pacific/Auckland" , 0x09CFAC }, + { "Pacific/Bougainville" , 0x09D955 }, + { "Pacific/Chatham" , 0x09DA79 }, + { "Pacific/Chuuk" , 0x09E2A8 }, + { "Pacific/Easter" , 0x09E3D0 }, + { "Pacific/Efate" , 0x09ECA2 }, + { "Pacific/Enderbury" , 0x09EEC8 }, + { "Pacific/Fakaofo" , 0x09EFBE }, + { "Pacific/Fiji" , 0x09F092 }, + { "Pacific/Funafuti" , 0x09F4B7 }, + { "Pacific/Galapagos" , 0x09F569 }, + { "Pacific/Gambier" , 0x09F674 }, + { "Pacific/Guadalcanal" , 0x09F733 }, + { "Pacific/Guam" , 0x09F7E5 }, + { "Pacific/Honolulu" , 0x09F9DF }, + { "Pacific/Johnston" , 0x09FB3A }, + { "Pacific/Kanton" , 0x09FC8F }, + { "Pacific/Kiritimati" , 0x09FD94 }, + { "Pacific/Kosrae" , 0x09FE9A }, + { "Pacific/Kwajalein" , 0x0A000B }, + { "Pacific/Majuro" , 0x0A015C }, + { "Pacific/Marquesas" , 0x0A02BB }, + { "Pacific/Midway" , 0x0A0385 }, + { "Pacific/Nauru" , 0x0A044E }, + { "Pacific/Niue" , 0x0A0556 }, + { "Pacific/Norfolk" , 0x0A062D }, + { "Pacific/Noumea" , 0x0A09A9 }, + { "Pacific/Pago_Pago" , 0x0A0AE5 }, + { "Pacific/Palau" , 0x0A0BA0 }, + { "Pacific/Pitcairn" , 0x0A0C60 }, + { "Pacific/Pohnpei" , 0x0A0D36 }, + { "Pacific/Ponape" , 0x0A0E7F }, + { "Pacific/Port_Moresby" , 0x0A0FBA }, + { "Pacific/Rarotonga" , 0x0A109D }, + { "Pacific/Saipan" , 0x0A1304 }, + { "Pacific/Samoa" , 0x0A14FE }, + { "Pacific/Tahiti" , 0x0A15B9 }, + { "Pacific/Tarawa" , 0x0A1679 }, + { "Pacific/Tongatapu" , 0x0A173A }, + { "Pacific/Truk" , 0x0A18BA }, + { "Pacific/Wake" , 0x0A19D3 }, + { "Pacific/Wallis" , 0x0A1A90 }, + { "Pacific/Yap" , 0x0A1B42 }, + { "Poland" , 0x0A1C5B }, + { "Portugal" , 0x0A26C5 }, + { "PRC" , 0x0A347A }, + { "PST8PDT" , 0x0A36B7 }, + { "ROC" , 0x0A3FC9 }, + { "ROK" , 0x0A42CE }, + { "Singapore" , 0x0A4543 }, + { "Turkey" , 0x0A46CE }, + { "UCT" , 0x0A4E75 }, + { "Universal" , 0x0A4EF3 }, + { "US/Alaska" , 0x0A4F71 }, + { "US/Aleutian" , 0x0A58C0 }, + { "US/Arizona" , 0x0A6200 }, + { "US/Central" , 0x0A6354 }, + { "US/East-Indiana" , 0x0A7158 }, + { "US/Eastern" , 0x0A77E6 }, + { "US/Hawaii" , 0x0A85C2 }, + { "US/Indiana-Starke" , 0x0A8717 }, + { "US/Michigan" , 0x0A909F }, + { "US/Mountain" , 0x0A9961 }, + { "US/Pacific" , 0x0AA2F9 }, + { "US/Samoa" , 0x0AAE19 }, + { "UTC" , 0x0AAED4 }, + { "W-SU" , 0x0AAF52 }, + { "WET" , 0x0AB55D }, + { "Zulu" , 0x0ABCDA }, }; -const unsigned char timelib_timezone_db_data_builtin[703734] = { +const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -37134,8 +37136,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x8F, 0x30, 0x47, 0x46, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC6, 0xA1, 0x00, 0x71, 0xC0, -0xB0, 0x5E, 0x77, 0xC6, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, +0x8F, 0x30, 0x47, 0x45, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC5, 0xA1, 0x00, 0x71, 0xC0, +0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD5, 0x33, 0x55, 0xC0, 0xD5, 0x76, 0x92, 0x40, 0xFD, 0xD1, 0x3C, 0x40, @@ -37170,7 +37172,7 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, +0x05, 0x06, 0x05, 0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, @@ -37179,9 +37181,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, -0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, -0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, +0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, +0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x1A, 0xD7, 0xC0, 0xFF, 0xFF, 0xFF, @@ -37244,7 +37246,7 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, +0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, @@ -38062,8 +38064,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x8F, 0x30, 0x47, 0x46, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC6, 0xA1, 0x00, 0x71, 0xC0, -0xB0, 0x5E, 0x77, 0xC6, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, +0x8F, 0x30, 0x47, 0x45, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC5, 0xA1, 0x00, 0x71, 0xC0, +0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD3, 0xDC, 0x8F, 0xC0, 0xD4, 0x1B, 0xC9, 0xB0, 0xD5, 0x33, 0x55, 0xC0, @@ -38111,8 +38113,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -38120,9 +38122,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, -0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, -0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, -0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, +0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, +0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, +0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, @@ -38209,8 +38211,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -43205,15 +43207,15 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x56, 0x29, 0x5C, 0x60, 0x56, 0xF5, 0xC2, 0xF0, 0x58, 0x13, 0xCA, 0x60, 0x58, 0xD5, 0xA4, 0xF0, 0x59, 0xF3, 0xAC, 0x60, 0x5A, 0xB5, 0x86, 0xF0, 0x5B, 0xD3, 0x8E, 0x60, 0x5C, 0x9D, 0x43, 0xE0, 0x5D, 0xB3, 0x62, 0x50, 0x5E, 0x7E, 0x77, 0x60, 0x5F, 0x93, 0x52, 0x60, 0x60, 0x5E, 0x59, 0x60, -0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3E, 0x3B, 0x60, 0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1E, 0x1D, 0x60, -0x65, 0x3A, 0xE1, 0x60, 0x66, 0x07, 0x39, 0xE0, 0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE7, 0x1B, 0xE0, -0x69, 0x03, 0xDF, 0xE0, 0x69, 0xC6, 0xFD, 0xE0, 0x6A, 0xE3, 0xC1, 0xE0, 0x6B, 0xA6, 0xDF, 0xE0, -0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x86, 0xC1, 0xE0, 0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x66, 0xA3, 0xE0, -0x70, 0x83, 0x67, 0xE0, 0x71, 0x4F, 0xC0, 0x60, 0x72, 0x63, 0x49, 0xE0, 0x73, 0x2F, 0xA2, 0x60, -0x74, 0x4C, 0x66, 0x60, 0x75, 0x0F, 0x84, 0x60, 0x76, 0x2C, 0x48, 0x60, 0x76, 0xEF, 0x66, 0x60, -0x78, 0x0C, 0x2A, 0x60, 0x78, 0xCF, 0x48, 0x60, 0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xAF, 0x2A, 0x60, -0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x98, 0x46, 0xE0, 0x7D, 0xB5, 0x0A, 0xE0, 0x7E, 0x78, 0x28, 0xE0, -0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3F, 0x8C, 0xE0, 0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1F, 0x6E, 0xE0, +0x65, 0x3A, 0xE1, 0x60, 0x66, 0x08, 0x8B, 0x60, 0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE8, 0x6D, 0x60, +0x68, 0xFA, 0xA5, 0x60, 0x69, 0xC8, 0x4F, 0x60, 0x6A, 0xDA, 0x87, 0x60, 0x6B, 0xA8, 0x31, 0x60, +0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x88, 0x13, 0x60, 0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x67, 0xF5, 0x60, +0x70, 0x83, 0x67, 0xE0, 0x71, 0x51, 0x11, 0xE0, 0x72, 0x63, 0x49, 0xE0, 0x73, 0x30, 0xF3, 0xE0, +0x74, 0x43, 0x2B, 0xE0, 0x75, 0x10, 0xD5, 0xE0, 0x76, 0x2C, 0x48, 0x60, 0x76, 0xF0, 0xB7, 0xE0, +0x78, 0x0C, 0x2A, 0x60, 0x78, 0xD0, 0x99, 0xE0, 0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xB0, 0x7B, 0xE0, +0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x99, 0x98, 0x60, 0x7D, 0xAB, 0xD0, 0x60, 0x7E, 0x79, 0x7A, 0x60, +0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, @@ -43291,22 +43293,22 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7B, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, -0x3E, 0x3B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, -0x1E, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, -0x07, 0x39, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, -0xE7, 0x1B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, 0x03, 0xDF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, -0xC6, 0xFD, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE3, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6B, -0xA6, 0xDF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, -0x86, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, -0x66, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, -0x4F, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, -0x2F, 0xA2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4C, 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x75, -0x0F, 0x84, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, -0xEF, 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, -0xCF, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, -0xAF, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, -0x98, 0x46, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB5, 0x0A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, -0x78, 0x28, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, +0x3F, 0x8C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, +0x1F, 0x6E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, +0x08, 0x8B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, +0xE8, 0x6D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFA, 0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, +0xC8, 0x4F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDA, 0x87, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, +0xA8, 0x31, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, +0x88, 0x13, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, +0x67, 0xF5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, +0x51, 0x11, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, +0x30, 0xF3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x43, 0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x75, +0x10, 0xD5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, +0xF0, 0xB7, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, +0xD0, 0x99, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, +0xB0, 0x7B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, +0x99, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAB, 0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, +0x79, 0x7A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, @@ -43323,9 +43325,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, -0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, -0x2E, 0x35, 0x2F, 0x31, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, 0x00, -0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70, +0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x34, +0x2E, 0x34, 0x2F, 0x32, 0x35, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, +0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70, /* Asia/Harbin */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -43398,15 +43400,15 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x49, 0x6C, 0x50, 0x55, 0x15, 0xD2, 0xE0, 0x56, 0x29, 0x5C, 0x60, 0x56, 0xF5, 0xC2, 0xF0, 0x58, 0x13, 0xCA, 0x60, 0x58, 0xD5, 0xA4, 0xF0, 0x59, 0xF3, 0xAC, 0x60, 0x5A, 0xB5, 0x86, 0xF0, 0x5B, 0xD3, 0x8E, 0x60, 0x5C, 0x9D, 0x43, 0xE0, 0x5D, 0xB3, 0x62, 0x50, 0x5E, 0x7E, 0x77, 0x60, -0x5F, 0x93, 0x52, 0x60, 0x60, 0x5E, 0x59, 0x60, 0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3E, 0x3B, 0x60, -0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1E, 0x1D, 0x60, 0x65, 0x3A, 0xE1, 0x60, 0x66, 0x07, 0x39, 0xE0, -0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE7, 0x1B, 0xE0, 0x69, 0x03, 0xDF, 0xE0, 0x69, 0xC6, 0xFD, 0xE0, -0x6A, 0xE3, 0xC1, 0xE0, 0x6B, 0xA6, 0xDF, 0xE0, 0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x86, 0xC1, 0xE0, -0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x66, 0xA3, 0xE0, 0x70, 0x83, 0x67, 0xE0, 0x71, 0x4F, 0xC0, 0x60, -0x72, 0x63, 0x49, 0xE0, 0x73, 0x2F, 0xA2, 0x60, 0x74, 0x4C, 0x66, 0x60, 0x75, 0x0F, 0x84, 0x60, -0x76, 0x2C, 0x48, 0x60, 0x76, 0xEF, 0x66, 0x60, 0x78, 0x0C, 0x2A, 0x60, 0x78, 0xCF, 0x48, 0x60, -0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xAF, 0x2A, 0x60, 0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x98, 0x46, 0xE0, -0x7D, 0xB5, 0x0A, 0xE0, 0x7E, 0x78, 0x28, 0xE0, 0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, +0x5F, 0x93, 0x52, 0x60, 0x60, 0x5E, 0x59, 0x60, 0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3F, 0x8C, 0xE0, +0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1F, 0x6E, 0xE0, 0x65, 0x3A, 0xE1, 0x60, 0x66, 0x08, 0x8B, 0x60, +0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE8, 0x6D, 0x60, 0x68, 0xFA, 0xA5, 0x60, 0x69, 0xC8, 0x4F, 0x60, +0x6A, 0xDA, 0x87, 0x60, 0x6B, 0xA8, 0x31, 0x60, 0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x88, 0x13, 0x60, +0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x67, 0xF5, 0x60, 0x70, 0x83, 0x67, 0xE0, 0x71, 0x51, 0x11, 0xE0, +0x72, 0x63, 0x49, 0xE0, 0x73, 0x30, 0xF3, 0xE0, 0x74, 0x43, 0x2B, 0xE0, 0x75, 0x10, 0xD5, 0xE0, +0x76, 0x2C, 0x48, 0x60, 0x76, 0xF0, 0xB7, 0xE0, 0x78, 0x0C, 0x2A, 0x60, 0x78, 0xD0, 0x99, 0xE0, +0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xB0, 0x7B, 0xE0, 0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x99, 0x98, 0x60, +0x7D, 0xAB, 0xD0, 0x60, 0x7E, 0x79, 0x7A, 0x60, 0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, @@ -43485,23 +43487,23 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x5B, 0xD3, 0x8E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, -0x00, 0x61, 0x7B, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3E, 0x3B, 0x60, 0x00, 0x00, 0x00, -0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1E, 0x1D, 0x60, 0x00, 0x00, 0x00, -0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0x07, 0x39, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE7, 0x1B, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x69, 0x03, 0xDF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC6, 0xFD, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x6A, 0xE3, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA6, 0xDF, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x86, 0xC1, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x66, 0xA3, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x4F, 0xC0, 0x60, 0x00, 0x00, 0x00, -0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x2F, 0xA2, 0x60, 0x00, 0x00, 0x00, -0x00, 0x74, 0x4C, 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x75, 0x0F, 0x84, 0x60, 0x00, 0x00, 0x00, -0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xEF, 0x66, 0x60, 0x00, 0x00, 0x00, -0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xCF, 0x48, 0x60, 0x00, 0x00, 0x00, -0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xAF, 0x2A, 0x60, 0x00, 0x00, 0x00, -0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x98, 0x46, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x7D, 0xB5, 0x0A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x78, 0x28, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x61, 0x7B, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0x8C, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x6E, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0x8B, 0x60, 0x00, 0x00, 0x00, +0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x6D, 0x60, 0x00, 0x00, 0x00, +0x00, 0x68, 0xFA, 0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x4F, 0x60, 0x00, 0x00, 0x00, +0x00, 0x6A, 0xDA, 0x87, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x31, 0x60, 0x00, 0x00, 0x00, +0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x13, 0x60, 0x00, 0x00, 0x00, +0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x67, 0xF5, 0x60, 0x00, 0x00, 0x00, +0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x11, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x30, 0xF3, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x74, 0x43, 0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x75, 0x10, 0xD5, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xB7, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0x99, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0x7B, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0x98, 0x60, 0x00, 0x00, 0x00, +0x00, 0x7D, 0xAB, 0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0x7A, 0x60, 0x00, 0x00, 0x00, +0x00, 0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, @@ -43518,9 +43520,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x34, 0x2E, 0x34, 0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x35, 0x2F, 0x31, -0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, -0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B, +0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x32, +0x35, 0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, +0x73, 0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B, /* Asia/Ho_Chi_Minh */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -52415,8 +52417,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x8F, 0x30, 0x47, 0x46, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC6, 0xA1, 0x00, 0x71, 0xC0, -0xB0, 0x5E, 0x77, 0xC6, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, +0x8F, 0x30, 0x47, 0x45, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC5, 0xA1, 0x00, 0x71, 0xC0, +0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD3, 0xDC, 0x8F, 0xC0, 0xD4, 0x1B, 0xC9, 0xB0, 0xD5, 0x33, 0x55, 0xC0, @@ -52464,8 +52466,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -52473,9 +52475,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, -0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, -0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, -0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, +0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, +0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, +0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, @@ -52562,8 +52564,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -57536,8 +57538,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Kiev */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, 0xAA, 0x19, 0xA7, 0x64, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0xCD, 0x2E, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCE, 0xCD, 0xA8, 0x70, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, @@ -57545,9 +57547,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x0B, 0xFB, 0xF0, 0x26, 0x8D, 0x20, 0xE0, 0x28, 0xE5, 0x17, 0x80, -0x29, 0xD4, 0xEC, 0x60, 0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, 0x2C, 0xA4, 0xB1, 0x50, -0x2D, 0x94, 0xB0, 0x60, 0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, -0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, +0x29, 0xD5, 0x08, 0x80, 0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, +0x2D, 0x94, 0xCC, 0x80, 0x2E, 0x84, 0xBD, 0x80, 0x2F, 0x74, 0xAE, 0x80, 0x30, 0x64, 0x9F, 0x80, +0x31, 0x5D, 0xCB, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, @@ -57569,24 +57571,25 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, -0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x0A, 0x02, 0x0A, 0x02, 0x0A, -0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, +0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0B, 0x0C, +0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, -0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30, 0x01, -0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, -0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, -0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, +0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, +0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, +0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, +0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xCD, 0x2E, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, @@ -57601,11 +57604,11 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x20, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, -0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, +0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, +0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, @@ -57649,20 +57652,21 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, -0x08, 0x09, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, +0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x4C, 0x4D, -0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, -0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, +0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, +0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, +0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, 0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, @@ -60829,16 +60833,16 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Simferopol */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, 0xAA, 0x19, 0xA4, 0x20, 0xB5, 0xA4, 0x19, 0x60, 0xCB, 0x04, 0x8D, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xCF, 0x9F, 0x38, 0xE0, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, 0x19, 0xDB, 0x43, 0x40, 0x1A, 0xCC, 0x93, 0xD0, 0x1B, 0xBC, 0xA0, 0xF0, 0x1C, 0xAC, 0x91, 0xF0, 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, -0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x29, 0xD4, 0xEC, 0x60, -0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, 0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xB0, 0x60, +0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x29, 0xD5, 0x08, 0x80, +0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, 0x2D, 0x94, 0xCC, 0x80, 0x2D, 0xC2, 0xC6, 0xD0, 0x2E, 0x84, 0x85, 0x40, 0x2F, 0x74, 0x84, 0x50, 0x30, 0x64, 0x67, 0x40, 0x31, 0x5D, 0xA0, 0xD0, 0x32, 0x72, 0xA6, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, @@ -60851,73 +60855,74 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x5E, 0x80, 0x54, 0x4C, 0x1D, 0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, -0x08, 0x09, 0x08, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0D, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x00, +0x08, 0x09, 0x08, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, 0x0C, +0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, +0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, +0x0D, 0x0E, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, -0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, -0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, -0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, -0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x4B, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC4, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA4, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, -0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x04, 0x8D, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, -0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, -0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x9F, 0x38, -0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, -0x40, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, -0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, -0x40, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, -0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, -0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, -0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, -0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, 0x50, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x67, -0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, -0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, -0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, -0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, -0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, -0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, -0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, -0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, -0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, -0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, -0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, -0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, -0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, -0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, -0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, -0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, -0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, -0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, -0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x5E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x1D, -0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, -0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x02, 0x0A, 0x02, 0x0A, -0x02, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x08, 0x00, 0x00, 0x1F, 0xF8, -0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, -0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, -0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, -0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, -0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, -0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, -0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, +0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, +0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x01, 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, 0x10, 0x00, 0x00, 0x00, +0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, +0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC4, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA4, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x04, 0x8D, +0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, +0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, +0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x9F, 0x38, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, +0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, +0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, +0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, +0x50, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x67, 0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, +0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, +0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, +0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, +0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, +0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, +0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, +0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, +0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, +0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, +0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, +0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, +0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, +0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, +0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, +0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, +0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, +0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x5E, +0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x1D, 0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, +0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x09, 0x08, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, +0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, +0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, +0x0C, 0x0D, 0x0E, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, +0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, +0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, +0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, +0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, +0x2A, 0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, +0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, +0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x0A, 0x4D, 0x53, 0x4B, 0x2D, 0x33, 0x0A, 0x00, 0xCD, 0xEA, 0xD7, 0x01, 0x46, 0xB0, 0xD0, 0x00, 0x00, 0x00, 0x06, 0x43, 0x72, 0x69, 0x6D, 0x65, 0x61, @@ -61811,17 +61816,17 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Uzhgorod */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x00, 0xC8, 0x09, 0x71, 0x90, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0xA1, 0x9E, 0xE0, 0xD1, 0xE5, 0xFD, 0xF0, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, 0x19, 0xDB, 0x43, 0x40, 0x1A, 0xCC, 0x93, 0xD0, 0x1B, 0xBC, 0xA0, 0xF0, 0x1C, 0xAC, 0x91, 0xF0, 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, -0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x27, 0xF5, 0x42, 0xA0, 0x29, 0xD4, 0xEC, 0x60, -0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, 0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xB0, 0x60, -0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x27, 0xF5, 0x42, 0xA0, 0x29, 0xD5, 0x08, 0x80, +0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, 0x2D, 0x94, 0xCC, 0x80, +0x2E, 0x84, 0xBD, 0x80, 0x2F, 0x74, 0xAE, 0x80, 0x30, 0x64, 0x9F, 0x80, 0x31, 0x5D, 0xCB, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, @@ -61844,98 +61849,99 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x01, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x01, 0x08, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, +0x09, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x4C, 0x4D, 0x54, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, +0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, +0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, +0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0x6A, 0xEE, 0xB0, 0x18, 0xFF, 0xFF, +0xFF, 0xFF, 0xC8, 0x09, 0x71, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, +0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, +0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0xA1, 0x9E, 0xE0, 0xFF, 0xFF, +0xFF, 0xFF, 0xD1, 0xE5, 0xFD, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, +0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x27, 0xF5, 0x42, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, +0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, +0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, +0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, +0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, +0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, +0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, +0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, +0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, +0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, +0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, +0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, +0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, +0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, +0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, +0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, +0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, +0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, +0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, +0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, +0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, +0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, +0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, +0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, +0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, +0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, +0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, +0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, +0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, +0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, +0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, +0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, +0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, +0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, +0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, +0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, +0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, +0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, +0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, +0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, +0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, +0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x05, 0x04, 0x05, +0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x01, 0x08, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x00, 0x00, +0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, +0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, +0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFF, -0xFF, 0xFF, 0x6A, 0xEE, 0xB0, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x09, 0x71, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xD0, 0xA1, 0x9E, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xE5, 0xFD, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, 0x00, -0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, 0x00, -0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, 0x00, -0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x42, 0xA0, 0x00, 0x00, -0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, -0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, -0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, -0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, -0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, -0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, -0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, -0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, -0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, -0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, -0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, -0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, -0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, -0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, -0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, -0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, -0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, -0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, -0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, -0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, -0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, -0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, -0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, -0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, -0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, -0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, -0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, -0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, -0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, -0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, -0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, -0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, -0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, -0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, -0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, -0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, -0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, -0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, -0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, -0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, -0x03, 0x02, 0x03, 0x02, 0x01, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x01, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, -0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, -0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x4C, 0x4D, -0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, -0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, -0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD3, 0x83, 0x22, 0x01, 0x34, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x54, 0x72, @@ -62882,8 +62888,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Zaporozhye */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x24, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x24, 0x80, 0x00, 0x00, 0x00, 0xAA, 0x19, 0xA3, 0x30, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0xAA, 0xE7, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCE, 0xBD, 0xD6, 0x70, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, @@ -62891,9 +62897,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x0B, 0xFB, 0xF0, 0x27, 0x05, 0x27, 0x70, 0x27, 0xF5, 0x18, 0x70, -0x28, 0xE4, 0xED, 0x50, 0x29, 0xD4, 0xEC, 0x60, 0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, -0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xB0, 0x60, 0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0xBC, 0x90, -0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, +0x28, 0xE4, 0xED, 0x50, 0x29, 0xD5, 0x08, 0x80, 0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, +0x2C, 0xA4, 0xDB, 0x80, 0x2D, 0x94, 0xCC, 0x80, 0x2E, 0x84, 0xBD, 0x80, 0x2F, 0x74, 0xAE, 0x80, +0x30, 0x64, 0x9F, 0x80, 0x31, 0x5D, 0xCB, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, @@ -62916,24 +62922,25 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x00, 0x00, +0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, -0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x1C, 0x20, +0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, +0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, +0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, -0x00, 0x0D, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC3, 0x08, 0xFF, 0xFF, +0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, +0x00, 0x0F, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC3, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA3, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xAA, 0xE7, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, @@ -62948,11 +62955,11 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x27, 0x70, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x18, 0x70, 0x00, 0x00, -0x00, 0x00, 0x28, 0xE4, 0xED, 0x50, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, -0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, -0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, -0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, -0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, +0x00, 0x00, 0x28, 0xE4, 0xED, 0x50, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, +0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, @@ -62996,20 +63003,21 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, +0x09, 0x08, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x1F, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, -0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, -0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, +0x01, 0x1F, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, +0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, +0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD2, 0x51, 0x25, 0x01, 0x48, @@ -69555,4 +69563,4 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { }; #endif -const timelib_tzdb timezonedb_builtin = { "2021.5", 595, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; +const timelib_tzdb timezonedb_builtin = { "2022.1", 595, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; From 7e829d15369ef0225fab417f9e3a0ee8327b19e3 Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Thu, 7 Apr 2022 10:45:20 +0100 Subject: [PATCH 46/63] Updated to version 2022.1 (2022a) --- ext/date/lib/timezonedb.h | 2136 +++++++++++++++++++------------------ 1 file changed, 1072 insertions(+), 1064 deletions(-) diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h index 411ef5b44254e..60cc4b3ab6cc9 100644 --- a/ext/date/lib/timezonedb.h +++ b/ext/date/lib/timezonedb.h @@ -270,340 +270,340 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[595] = { { "Asia/Dushanbe" , 0x0247C2 }, { "Asia/Famagusta" , 0x02493C }, { "Asia/Gaza" , 0x024D03 }, - { "Asia/Harbin" , 0x0251E7 }, - { "Asia/Hebron" , 0x02537C }, - { "Asia/Ho_Chi_Minh" , 0x025871 }, - { "Asia/Hong_Kong" , 0x025969 }, - { "Asia/Hovd" , 0x025C7C }, - { "Asia/Irkutsk" , 0x025F05 }, - { "Asia/Istanbul" , 0x026223 }, - { "Asia/Jakarta" , 0x0266DF }, - { "Asia/Jayapura" , 0x0267F0 }, - { "Asia/Jerusalem" , 0x0268DD }, - { "Asia/Kabul" , 0x026D1B }, - { "Asia/Kamchatka" , 0x026DC6 }, - { "Asia/Karachi" , 0x0270BB }, - { "Asia/Kashgar" , 0x0271D1 }, - { "Asia/Kathmandu" , 0x027262 }, - { "Asia/Katmandu" , 0x02730F }, - { "Asia/Khandyga" , 0x0273BC }, - { "Asia/Kolkata" , 0x0276ED }, - { "Asia/Krasnoyarsk" , 0x0277D5 }, - { "Asia/Kuala_Lumpur" , 0x027ADF }, - { "Asia/Kuching" , 0x027BFF }, - { "Asia/Kuwait" , 0x027D59 }, - { "Asia/Macao" , 0x027DEA }, - { "Asia/Macau" , 0x02810D }, - { "Asia/Magadan" , 0x028430 }, - { "Asia/Makassar" , 0x02873B }, - { "Asia/Manila" , 0x02884E }, - { "Asia/Muscat" , 0x028948 }, - { "Asia/Nicosia" , 0x0289D9 }, - { "Asia/Novokuznetsk" , 0x028C4D }, - { "Asia/Novosibirsk" , 0x028F40 }, - { "Asia/Omsk" , 0x029251 }, - { "Asia/Oral" , 0x02954F }, - { "Asia/Phnom_Penh" , 0x0297DB }, - { "Asia/Pontianak" , 0x02987F }, - { "Asia/Pyongyang" , 0x029998 }, - { "Asia/Qatar" , 0x029A5B }, - { "Asia/Qostanay" , 0x029AFF }, - { "Asia/Qyzylorda" , 0x029D8C }, - { "Asia/Rangoon" , 0x02A025 }, - { "Asia/Riyadh" , 0x02A0EC }, - { "Asia/Saigon" , 0x02A17D }, - { "Asia/Sakhalin" , 0x02A275 }, - { "Asia/Samarkand" , 0x02A58C }, - { "Asia/Seoul" , 0x02A717 }, - { "Asia/Shanghai" , 0x02A8C2 }, - { "Asia/Singapore" , 0x02AA63 }, - { "Asia/Srednekolymsk" , 0x02AB6F }, - { "Asia/Taipei" , 0x02AE83 }, - { "Asia/Tashkent" , 0x02B08E }, - { "Asia/Tbilisi" , 0x02B219 }, - { "Asia/Tehran" , 0x02B49A }, - { "Asia/Tel_Aviv" , 0x02BC7A }, - { "Asia/Thimbu" , 0x02C0B8 }, - { "Asia/Thimphu" , 0x02C15E }, - { "Asia/Tokyo" , 0x02C204 }, - { "Asia/Tomsk" , 0x02C2E5 }, - { "Asia/Ujung_Pandang" , 0x02C5F0 }, - { "Asia/Ulaanbaatar" , 0x02C6BA }, - { "Asia/Ulan_Bator" , 0x02C92D }, - { "Asia/Urumqi" , 0x02CB8B }, - { "Asia/Ust-Nera" , 0x02CC29 }, - { "Asia/Vientiane" , 0x02CF4C }, - { "Asia/Vladivostok" , 0x02CFF0 }, - { "Asia/Yakutsk" , 0x02D2F5 }, - { "Asia/Yangon" , 0x02D5F9 }, - { "Asia/Yekaterinburg" , 0x02D6C0 }, - { "Asia/Yerevan" , 0x02D9D2 }, - { "Atlantic/Azores" , 0x02DCA2 }, - { "Atlantic/Bermuda" , 0x02E261 }, - { "Atlantic/Canary" , 0x02E66D }, - { "Atlantic/Cape_Verde" , 0x02E865 }, - { "Atlantic/Faeroe" , 0x02E920 }, - { "Atlantic/Faroe" , 0x02EAE5 }, - { "Atlantic/Jan_Mayen" , 0x02ECAA }, - { "Atlantic/Madeira" , 0x02EF5A }, - { "Atlantic/Reykjavik" , 0x02F522 }, - { "Atlantic/South_Georgia" , 0x02F81F }, - { "Atlantic/St_Helena" , 0x02F8AF }, - { "Atlantic/Stanley" , 0x02F93D }, - { "Australia/ACT" , 0x02FC5E }, - { "Australia/Adelaide" , 0x02FFF2 }, - { "Australia/Brisbane" , 0x0303A6 }, - { "Australia/Broken_Hill" , 0x0304EA }, - { "Australia/Canberra" , 0x0308BF }, - { "Australia/Currie" , 0x030C53 }, - { "Australia/Darwin" , 0x03104A }, - { "Australia/Eucla" , 0x031152 }, - { "Australia/Hobart" , 0x0312B1 }, - { "Australia/LHI" , 0x0316B0 }, - { "Australia/Lindeman" , 0x031970 }, - { "Australia/Lord_Howe" , 0x031AE0 }, - { "Australia/Melbourne" , 0x031DB0 }, - { "Australia/North" , 0x03214C }, - { "Australia/NSW" , 0x032242 }, - { "Australia/Perth" , 0x0325D6 }, - { "Australia/Queensland" , 0x032732 }, - { "Australia/South" , 0x03285F }, - { "Australia/Sydney" , 0x032C04 }, - { "Australia/Tasmania" , 0x032FB4 }, - { "Australia/Victoria" , 0x0333AB }, - { "Australia/West" , 0x03373F }, - { "Australia/Yancowinna" , 0x03387D }, - { "Brazil/Acre" , 0x033C36 }, - { "Brazil/DeNoronha" , 0x033DE4 }, - { "Brazil/East" , 0x033FD4 }, - { "Brazil/West" , 0x034398 }, - { "Canada/Atlantic" , 0x034540 }, - { "Canada/Central" , 0x034BD4 }, - { "Canada/Eastern" , 0x0350EE }, - { "Canada/Mountain" , 0x0357AF }, - { "Canada/Newfoundland" , 0x035B85 }, - { "Canada/Pacific" , 0x0362E7 }, - { "Canada/Saskatchewan" , 0x036825 }, - { "Canada/Yukon" , 0x036AAF }, - { "CET" , 0x036EC0 }, - { "Chile/Continental" , 0x037139 }, - { "Chile/EasterIsland" , 0x037647 }, - { "CST6CDT" , 0x037AA1 }, - { "Cuba" , 0x037E64 }, - { "EET" , 0x0382CD }, - { "Egypt" , 0x0384CA }, - { "Eire" , 0x0389D2 }, - { "EST" , 0x038FB6 }, - { "EST5EDT" , 0x039031 }, - { "Etc/GMT" , 0x0393F4 }, - { "Etc/GMT+0" , 0x03946F }, - { "Etc/GMT+1" , 0x0394EA }, - { "Etc/GMT+10" , 0x039567 }, - { "Etc/GMT+11" , 0x0395E5 }, - { "Etc/GMT+12" , 0x039663 }, - { "Etc/GMT+2" , 0x0396E1 }, - { "Etc/GMT+3" , 0x03975E }, - { "Etc/GMT+4" , 0x0397DB }, - { "Etc/GMT+5" , 0x039858 }, - { "Etc/GMT+6" , 0x0398D5 }, - { "Etc/GMT+7" , 0x039952 }, - { "Etc/GMT+8" , 0x0399CF }, - { "Etc/GMT+9" , 0x039A4C }, - { "Etc/GMT-0" , 0x039AC9 }, - { "Etc/GMT-1" , 0x039B44 }, - { "Etc/GMT-10" , 0x039BC2 }, - { "Etc/GMT-11" , 0x039C41 }, - { "Etc/GMT-12" , 0x039CC0 }, - { "Etc/GMT-13" , 0x039D3F }, - { "Etc/GMT-14" , 0x039DBE }, - { "Etc/GMT-2" , 0x039E3D }, - { "Etc/GMT-3" , 0x039EBB }, - { "Etc/GMT-4" , 0x039F39 }, - { "Etc/GMT-5" , 0x039FB7 }, - { "Etc/GMT-6" , 0x03A035 }, - { "Etc/GMT-7" , 0x03A0B3 }, - { "Etc/GMT-8" , 0x03A131 }, - { "Etc/GMT-9" , 0x03A1AF }, - { "Etc/GMT0" , 0x03A22D }, - { "Etc/Greenwich" , 0x03A2A8 }, - { "Etc/UCT" , 0x03A323 }, - { "Etc/Universal" , 0x03A39E }, - { "Etc/UTC" , 0x03A419 }, - { "Etc/Zulu" , 0x03A494 }, - { "Europe/Amsterdam" , 0x03A50F }, - { "Europe/Andorra" , 0x03A94A }, - { "Europe/Astrakhan" , 0x03AADB }, - { "Europe/Athens" , 0x03ADCF }, - { "Europe/Belfast" , 0x03B085 }, - { "Europe/Belgrade" , 0x03B6D0 }, - { "Europe/Berlin" , 0x03B8BA }, - { "Europe/Bratislava" , 0x03BB9B }, - { "Europe/Brussels" , 0x03BE7A }, - { "Europe/Bucharest" , 0x03C2D5 }, - { "Europe/Budapest" , 0x03C576 }, - { "Europe/Busingen" , 0x03C880 }, - { "Europe/Chisinau" , 0x03CA85 }, - { "Europe/Copenhagen" , 0x03CD84 }, - { "Europe/Dublin" , 0x03CFFF }, - { "Europe/Gibraltar" , 0x03D5E3 }, - { "Europe/Guernsey" , 0x03DAB3 }, - { "Europe/Helsinki" , 0x03E0FE }, - { "Europe/Isle_of_Man" , 0x03E2EB }, - { "Europe/Istanbul" , 0x03E936 }, - { "Europe/Jersey" , 0x03EDF2 }, - { "Europe/Kaliningrad" , 0x03F43D }, - { "Europe/Kiev" , 0x03F7E5 }, - { "Europe/Kirov" , 0x03FA2A }, - { "Europe/Lisbon" , 0x03FD11 }, - { "Europe/Ljubljana" , 0x0402DE }, - { "Europe/London" , 0x0404C8 }, - { "Europe/Luxembourg" , 0x040B13 }, - { "Europe/Madrid" , 0x040F5E }, - { "Europe/Malta" , 0x0412FB }, - { "Europe/Mariehamn" , 0x0416A7 }, - { "Europe/Minsk" , 0x041894 }, - { "Europe/Monaco" , 0x041BC8 }, - { "Europe/Moscow" , 0x04202E }, - { "Europe/Nicosia" , 0x0423DA }, - { "Europe/Oslo" , 0x04263B }, - { "Europe/Paris" , 0x0428EB }, - { "Europe/Podgorica" , 0x042D48 }, - { "Europe/Prague" , 0x042F32 }, - { "Europe/Riga" , 0x043211 }, - { "Europe/Rome" , 0x0434D3 }, - { "Europe/Samara" , 0x043892 }, - { "Europe/San_Marino" , 0x043B93 }, - { "Europe/Sarajevo" , 0x043F52 }, - { "Europe/Saratov" , 0x04413C }, - { "Europe/Simferopol" , 0x04442E }, - { "Europe/Skopje" , 0x0447A1 }, - { "Europe/Sofia" , 0x04498B }, - { "Europe/Stockholm" , 0x044BE7 }, - { "Europe/Tallinn" , 0x044DE4 }, - { "Europe/Tirane" , 0x045093 }, - { "Europe/Tiraspol" , 0x0452FB }, - { "Europe/Ulyanovsk" , 0x0455FA }, - { "Europe/Uzhgorod" , 0x045910 }, - { "Europe/Vaduz" , 0x045B3C }, - { "Europe/Vatican" , 0x045D39 }, - { "Europe/Vienna" , 0x0460F8 }, - { "Europe/Vilnius" , 0x046396 }, - { "Europe/Volgograd" , 0x046646 }, - { "Europe/Warsaw" , 0x046943 }, - { "Europe/Zagreb" , 0x046CEA }, - { "Europe/Zaporozhye" , 0x046ED4 }, - { "Europe/Zurich" , 0x04712B }, - { "Factory" , 0x047328 }, - { "GB" , 0x0473A5 }, - { "GB-Eire" , 0x0479F0 }, - { "GMT" , 0x04803B }, - { "GMT+0" , 0x0480B6 }, - { "GMT-0" , 0x048131 }, - { "GMT0" , 0x0481AC }, - { "Greenwich" , 0x048227 }, - { "Hongkong" , 0x0482A2 }, - { "HST" , 0x0485B5 }, - { "Iceland" , 0x048631 }, - { "Indian/Antananarivo" , 0x04892E }, - { "Indian/Chagos" , 0x0489F9 }, - { "Indian/Christmas" , 0x048A9D }, - { "Indian/Cocos" , 0x048B2E }, - { "Indian/Comoro" , 0x048BC6 }, - { "Indian/Kerguelen" , 0x048C91 }, - { "Indian/Mahe" , 0x048D22 }, - { "Indian/Maldives" , 0x048DB3 }, - { "Indian/Mauritius" , 0x048E57 }, - { "Indian/Mayotte" , 0x048F16 }, - { "Indian/Reunion" , 0x048FE1 }, - { "Iran" , 0x049072 }, - { "Israel" , 0x049852 }, - { "Jamaica" , 0x049C90 }, - { "Japan" , 0x049DEF }, - { "Kwajalein" , 0x049ED0 }, - { "Libya" , 0x049FB7 }, - { "MET" , 0x04A172 }, - { "Mexico/BajaNorte" , 0x04A3EB }, - { "Mexico/BajaSur" , 0x04A7F8 }, - { "Mexico/General" , 0x04A973 }, - { "MST" , 0x04AB1B }, - { "MST7MDT" , 0x04AB96 }, - { "Navajo" , 0x04AF59 }, - { "NZ" , 0x04B377 }, - { "NZ-CHAT" , 0x04B796 }, - { "Pacific/Apia" , 0x04BACA }, - { "Pacific/Auckland" , 0x04BC6D }, - { "Pacific/Bougainville" , 0x04C0A4 }, - { "Pacific/Chatham" , 0x04C185 }, - { "Pacific/Chuuk" , 0x04C4C8 }, - { "Pacific/Easter" , 0x04C5A6 }, - { "Pacific/Efate" , 0x04CA0D }, - { "Pacific/Enderbury" , 0x04CB6F }, - { "Pacific/Fakaofo" , 0x04CC27 }, - { "Pacific/Fiji" , 0x04CCCC }, - { "Pacific/Funafuti" , 0x04CE84 }, - { "Pacific/Galapagos" , 0x04CF16 }, - { "Pacific/Gambier" , 0x04CFE2 }, - { "Pacific/Guadalcanal" , 0x04D081 }, - { "Pacific/Guam" , 0x04D113 }, - { "Pacific/Honolulu" , 0x04D27D }, - { "Pacific/Johnston" , 0x04D36C }, - { "Pacific/Kanton" , 0x04D455 }, - { "Pacific/Kiritimati" , 0x04D51C }, - { "Pacific/Kosrae" , 0x04D5E2 }, - { "Pacific/Kwajalein" , 0x04D6E6 }, - { "Pacific/Majuro" , 0x04D7D6 }, - { "Pacific/Marquesas" , 0x04D8D9 }, - { "Pacific/Midway" , 0x04D981 }, - { "Pacific/Nauru" , 0x04DA2D }, - { "Pacific/Niue" , 0x04DAF0 }, - { "Pacific/Norfolk" , 0x04DB96 }, - { "Pacific/Noumea" , 0x04DC99 }, - { "Pacific/Pago_Pago" , 0x04DD6B }, - { "Pacific/Palau" , 0x04DE09 }, - { "Pacific/Pitcairn" , 0x04DEA9 }, - { "Pacific/Pohnpei" , 0x04DF4E }, - { "Pacific/Ponape" , 0x04E03E }, - { "Pacific/Port_Moresby" , 0x04E120 }, - { "Pacific/Rarotonga" , 0x04E1E3 }, - { "Pacific/Saipan" , 0x04E385 }, - { "Pacific/Samoa" , 0x04E4EF }, - { "Pacific/Tahiti" , 0x04E58D }, - { "Pacific/Tarawa" , 0x04E62D }, - { "Pacific/Tongatapu" , 0x04E6CE }, - { "Pacific/Truk" , 0x04E7C7 }, - { "Pacific/Wake" , 0x04E896 }, - { "Pacific/Wallis" , 0x04E933 }, - { "Pacific/Yap" , 0x04E9C5 }, - { "Poland" , 0x04EA94 }, - { "Portugal" , 0x04EE3B }, - { "PRC" , 0x04F3F5 }, - { "PST8PDT" , 0x04F58A }, - { "ROC" , 0x04F94D }, - { "ROK" , 0x04FB58 }, - { "Singapore" , 0x04FD03 }, - { "Turkey" , 0x04FE0F }, - { "UCT" , 0x0502CB }, - { "Universal" , 0x050346 }, - { "US/Alaska" , 0x0503C1 }, - { "US/Aleutian" , 0x05079E }, - { "US/Arizona" , 0x050B73 }, - { "US/Central" , 0x050C6F }, - { "US/East-Indiana" , 0x051355 }, - { "US/Eastern" , 0x051574 }, - { "US/Hawaii" , 0x051C50 }, - { "US/Indiana-Starke" , 0x051D39 }, - { "US/Michigan" , 0x05213D }, - { "US/Mountain" , 0x0524CC }, - { "US/Pacific" , 0x0528EA }, - { "US/Samoa" , 0x052E04 }, - { "UTC" , 0x052EA2 }, - { "W-SU" , 0x052F1D }, - { "WET" , 0x0532B5 }, - { "Zulu" , 0x0534AF }, + { "Asia/Harbin" , 0x0251F1 }, + { "Asia/Hebron" , 0x025386 }, + { "Asia/Ho_Chi_Minh" , 0x025885 }, + { "Asia/Hong_Kong" , 0x02597D }, + { "Asia/Hovd" , 0x025C90 }, + { "Asia/Irkutsk" , 0x025F19 }, + { "Asia/Istanbul" , 0x026237 }, + { "Asia/Jakarta" , 0x0266F3 }, + { "Asia/Jayapura" , 0x026804 }, + { "Asia/Jerusalem" , 0x0268F1 }, + { "Asia/Kabul" , 0x026D2F }, + { "Asia/Kamchatka" , 0x026DDA }, + { "Asia/Karachi" , 0x0270CF }, + { "Asia/Kashgar" , 0x0271E5 }, + { "Asia/Kathmandu" , 0x027276 }, + { "Asia/Katmandu" , 0x027323 }, + { "Asia/Khandyga" , 0x0273D0 }, + { "Asia/Kolkata" , 0x027701 }, + { "Asia/Krasnoyarsk" , 0x0277E9 }, + { "Asia/Kuala_Lumpur" , 0x027AF3 }, + { "Asia/Kuching" , 0x027C13 }, + { "Asia/Kuwait" , 0x027D6D }, + { "Asia/Macao" , 0x027DFE }, + { "Asia/Macau" , 0x028121 }, + { "Asia/Magadan" , 0x028444 }, + { "Asia/Makassar" , 0x02874F }, + { "Asia/Manila" , 0x028862 }, + { "Asia/Muscat" , 0x02895C }, + { "Asia/Nicosia" , 0x0289ED }, + { "Asia/Novokuznetsk" , 0x028C61 }, + { "Asia/Novosibirsk" , 0x028F54 }, + { "Asia/Omsk" , 0x029265 }, + { "Asia/Oral" , 0x029563 }, + { "Asia/Phnom_Penh" , 0x0297EF }, + { "Asia/Pontianak" , 0x029893 }, + { "Asia/Pyongyang" , 0x0299AC }, + { "Asia/Qatar" , 0x029A6F }, + { "Asia/Qostanay" , 0x029B13 }, + { "Asia/Qyzylorda" , 0x029DA0 }, + { "Asia/Rangoon" , 0x02A039 }, + { "Asia/Riyadh" , 0x02A100 }, + { "Asia/Saigon" , 0x02A191 }, + { "Asia/Sakhalin" , 0x02A289 }, + { "Asia/Samarkand" , 0x02A5A0 }, + { "Asia/Seoul" , 0x02A72B }, + { "Asia/Shanghai" , 0x02A8D6 }, + { "Asia/Singapore" , 0x02AA77 }, + { "Asia/Srednekolymsk" , 0x02AB83 }, + { "Asia/Taipei" , 0x02AE97 }, + { "Asia/Tashkent" , 0x02B0A2 }, + { "Asia/Tbilisi" , 0x02B22D }, + { "Asia/Tehran" , 0x02B4AE }, + { "Asia/Tel_Aviv" , 0x02BC8E }, + { "Asia/Thimbu" , 0x02C0CC }, + { "Asia/Thimphu" , 0x02C172 }, + { "Asia/Tokyo" , 0x02C218 }, + { "Asia/Tomsk" , 0x02C2F9 }, + { "Asia/Ujung_Pandang" , 0x02C604 }, + { "Asia/Ulaanbaatar" , 0x02C6CE }, + { "Asia/Ulan_Bator" , 0x02C941 }, + { "Asia/Urumqi" , 0x02CB9F }, + { "Asia/Ust-Nera" , 0x02CC3D }, + { "Asia/Vientiane" , 0x02CF60 }, + { "Asia/Vladivostok" , 0x02D004 }, + { "Asia/Yakutsk" , 0x02D309 }, + { "Asia/Yangon" , 0x02D60D }, + { "Asia/Yekaterinburg" , 0x02D6D4 }, + { "Asia/Yerevan" , 0x02D9E6 }, + { "Atlantic/Azores" , 0x02DCB6 }, + { "Atlantic/Bermuda" , 0x02E275 }, + { "Atlantic/Canary" , 0x02E681 }, + { "Atlantic/Cape_Verde" , 0x02E879 }, + { "Atlantic/Faeroe" , 0x02E934 }, + { "Atlantic/Faroe" , 0x02EAF9 }, + { "Atlantic/Jan_Mayen" , 0x02ECBE }, + { "Atlantic/Madeira" , 0x02EF6E }, + { "Atlantic/Reykjavik" , 0x02F536 }, + { "Atlantic/South_Georgia" , 0x02F833 }, + { "Atlantic/St_Helena" , 0x02F8C3 }, + { "Atlantic/Stanley" , 0x02F951 }, + { "Australia/ACT" , 0x02FC72 }, + { "Australia/Adelaide" , 0x030006 }, + { "Australia/Brisbane" , 0x0303BA }, + { "Australia/Broken_Hill" , 0x0304FE }, + { "Australia/Canberra" , 0x0308D3 }, + { "Australia/Currie" , 0x030C67 }, + { "Australia/Darwin" , 0x03105E }, + { "Australia/Eucla" , 0x031166 }, + { "Australia/Hobart" , 0x0312C5 }, + { "Australia/LHI" , 0x0316C4 }, + { "Australia/Lindeman" , 0x031984 }, + { "Australia/Lord_Howe" , 0x031AF4 }, + { "Australia/Melbourne" , 0x031DC4 }, + { "Australia/North" , 0x032160 }, + { "Australia/NSW" , 0x032256 }, + { "Australia/Perth" , 0x0325EA }, + { "Australia/Queensland" , 0x032746 }, + { "Australia/South" , 0x032873 }, + { "Australia/Sydney" , 0x032C18 }, + { "Australia/Tasmania" , 0x032FC8 }, + { "Australia/Victoria" , 0x0333BF }, + { "Australia/West" , 0x033753 }, + { "Australia/Yancowinna" , 0x033891 }, + { "Brazil/Acre" , 0x033C4A }, + { "Brazil/DeNoronha" , 0x033DF8 }, + { "Brazil/East" , 0x033FE8 }, + { "Brazil/West" , 0x0343AC }, + { "Canada/Atlantic" , 0x034554 }, + { "Canada/Central" , 0x034BE8 }, + { "Canada/Eastern" , 0x035102 }, + { "Canada/Mountain" , 0x0357C3 }, + { "Canada/Newfoundland" , 0x035B99 }, + { "Canada/Pacific" , 0x0362FB }, + { "Canada/Saskatchewan" , 0x036839 }, + { "Canada/Yukon" , 0x036AC3 }, + { "CET" , 0x036ED4 }, + { "Chile/Continental" , 0x03714D }, + { "Chile/EasterIsland" , 0x03765B }, + { "CST6CDT" , 0x037AB5 }, + { "Cuba" , 0x037E78 }, + { "EET" , 0x0382E1 }, + { "Egypt" , 0x0384DE }, + { "Eire" , 0x0389E6 }, + { "EST" , 0x038FCA }, + { "EST5EDT" , 0x039045 }, + { "Etc/GMT" , 0x039408 }, + { "Etc/GMT+0" , 0x039483 }, + { "Etc/GMT+1" , 0x0394FE }, + { "Etc/GMT+10" , 0x03957B }, + { "Etc/GMT+11" , 0x0395F9 }, + { "Etc/GMT+12" , 0x039677 }, + { "Etc/GMT+2" , 0x0396F5 }, + { "Etc/GMT+3" , 0x039772 }, + { "Etc/GMT+4" , 0x0397EF }, + { "Etc/GMT+5" , 0x03986C }, + { "Etc/GMT+6" , 0x0398E9 }, + { "Etc/GMT+7" , 0x039966 }, + { "Etc/GMT+8" , 0x0399E3 }, + { "Etc/GMT+9" , 0x039A60 }, + { "Etc/GMT-0" , 0x039ADD }, + { "Etc/GMT-1" , 0x039B58 }, + { "Etc/GMT-10" , 0x039BD6 }, + { "Etc/GMT-11" , 0x039C55 }, + { "Etc/GMT-12" , 0x039CD4 }, + { "Etc/GMT-13" , 0x039D53 }, + { "Etc/GMT-14" , 0x039DD2 }, + { "Etc/GMT-2" , 0x039E51 }, + { "Etc/GMT-3" , 0x039ECF }, + { "Etc/GMT-4" , 0x039F4D }, + { "Etc/GMT-5" , 0x039FCB }, + { "Etc/GMT-6" , 0x03A049 }, + { "Etc/GMT-7" , 0x03A0C7 }, + { "Etc/GMT-8" , 0x03A145 }, + { "Etc/GMT-9" , 0x03A1C3 }, + { "Etc/GMT0" , 0x03A241 }, + { "Etc/Greenwich" , 0x03A2BC }, + { "Etc/UCT" , 0x03A337 }, + { "Etc/Universal" , 0x03A3B2 }, + { "Etc/UTC" , 0x03A42D }, + { "Etc/Zulu" , 0x03A4A8 }, + { "Europe/Amsterdam" , 0x03A523 }, + { "Europe/Andorra" , 0x03A95E }, + { "Europe/Astrakhan" , 0x03AAEF }, + { "Europe/Athens" , 0x03ADE3 }, + { "Europe/Belfast" , 0x03B099 }, + { "Europe/Belgrade" , 0x03B6E4 }, + { "Europe/Berlin" , 0x03B8CE }, + { "Europe/Bratislava" , 0x03BBAF }, + { "Europe/Brussels" , 0x03BE8E }, + { "Europe/Bucharest" , 0x03C2E9 }, + { "Europe/Budapest" , 0x03C58A }, + { "Europe/Busingen" , 0x03C894 }, + { "Europe/Chisinau" , 0x03CA99 }, + { "Europe/Copenhagen" , 0x03CD98 }, + { "Europe/Dublin" , 0x03D013 }, + { "Europe/Gibraltar" , 0x03D5F7 }, + { "Europe/Guernsey" , 0x03DAC7 }, + { "Europe/Helsinki" , 0x03E112 }, + { "Europe/Isle_of_Man" , 0x03E2FF }, + { "Europe/Istanbul" , 0x03E94A }, + { "Europe/Jersey" , 0x03EE06 }, + { "Europe/Kaliningrad" , 0x03F451 }, + { "Europe/Kiev" , 0x03F7F9 }, + { "Europe/Kirov" , 0x03FA47 }, + { "Europe/Lisbon" , 0x03FD2E }, + { "Europe/Ljubljana" , 0x0402FB }, + { "Europe/London" , 0x0404E5 }, + { "Europe/Luxembourg" , 0x040B30 }, + { "Europe/Madrid" , 0x040F7B }, + { "Europe/Malta" , 0x041318 }, + { "Europe/Mariehamn" , 0x0416C4 }, + { "Europe/Minsk" , 0x0418B1 }, + { "Europe/Monaco" , 0x041BE5 }, + { "Europe/Moscow" , 0x04204B }, + { "Europe/Nicosia" , 0x0423F7 }, + { "Europe/Oslo" , 0x042658 }, + { "Europe/Paris" , 0x042908 }, + { "Europe/Podgorica" , 0x042D65 }, + { "Europe/Prague" , 0x042F4F }, + { "Europe/Riga" , 0x04322E }, + { "Europe/Rome" , 0x0434F0 }, + { "Europe/Samara" , 0x0438AF }, + { "Europe/San_Marino" , 0x043BB0 }, + { "Europe/Sarajevo" , 0x043F6F }, + { "Europe/Saratov" , 0x044159 }, + { "Europe/Simferopol" , 0x04444B }, + { "Europe/Skopje" , 0x0447BE }, + { "Europe/Sofia" , 0x0449A8 }, + { "Europe/Stockholm" , 0x044C04 }, + { "Europe/Tallinn" , 0x044E01 }, + { "Europe/Tirane" , 0x0450B0 }, + { "Europe/Tiraspol" , 0x045318 }, + { "Europe/Ulyanovsk" , 0x045617 }, + { "Europe/Uzhgorod" , 0x04592D }, + { "Europe/Vaduz" , 0x045B62 }, + { "Europe/Vatican" , 0x045D5F }, + { "Europe/Vienna" , 0x04611E }, + { "Europe/Vilnius" , 0x0463BC }, + { "Europe/Volgograd" , 0x04666C }, + { "Europe/Warsaw" , 0x046969 }, + { "Europe/Zagreb" , 0x046D10 }, + { "Europe/Zaporozhye" , 0x046EFA }, + { "Europe/Zurich" , 0x04715A }, + { "Factory" , 0x047357 }, + { "GB" , 0x0473D4 }, + { "GB-Eire" , 0x047A1F }, + { "GMT" , 0x04806A }, + { "GMT+0" , 0x0480E5 }, + { "GMT-0" , 0x048160 }, + { "GMT0" , 0x0481DB }, + { "Greenwich" , 0x048256 }, + { "Hongkong" , 0x0482D1 }, + { "HST" , 0x0485E4 }, + { "Iceland" , 0x048660 }, + { "Indian/Antananarivo" , 0x04895D }, + { "Indian/Chagos" , 0x048A28 }, + { "Indian/Christmas" , 0x048ACC }, + { "Indian/Cocos" , 0x048B5D }, + { "Indian/Comoro" , 0x048BF5 }, + { "Indian/Kerguelen" , 0x048CC0 }, + { "Indian/Mahe" , 0x048D51 }, + { "Indian/Maldives" , 0x048DE2 }, + { "Indian/Mauritius" , 0x048E86 }, + { "Indian/Mayotte" , 0x048F45 }, + { "Indian/Reunion" , 0x049010 }, + { "Iran" , 0x0490A1 }, + { "Israel" , 0x049881 }, + { "Jamaica" , 0x049CBF }, + { "Japan" , 0x049E1E }, + { "Kwajalein" , 0x049EFF }, + { "Libya" , 0x049FE6 }, + { "MET" , 0x04A1A1 }, + { "Mexico/BajaNorte" , 0x04A41A }, + { "Mexico/BajaSur" , 0x04A827 }, + { "Mexico/General" , 0x04A9A2 }, + { "MST" , 0x04AB4A }, + { "MST7MDT" , 0x04ABC5 }, + { "Navajo" , 0x04AF88 }, + { "NZ" , 0x04B3A6 }, + { "NZ-CHAT" , 0x04B7C5 }, + { "Pacific/Apia" , 0x04BAF9 }, + { "Pacific/Auckland" , 0x04BC9C }, + { "Pacific/Bougainville" , 0x04C0D3 }, + { "Pacific/Chatham" , 0x04C1B4 }, + { "Pacific/Chuuk" , 0x04C4F7 }, + { "Pacific/Easter" , 0x04C5D5 }, + { "Pacific/Efate" , 0x04CA3C }, + { "Pacific/Enderbury" , 0x04CB9E }, + { "Pacific/Fakaofo" , 0x04CC56 }, + { "Pacific/Fiji" , 0x04CCFB }, + { "Pacific/Funafuti" , 0x04CEB3 }, + { "Pacific/Galapagos" , 0x04CF45 }, + { "Pacific/Gambier" , 0x04D011 }, + { "Pacific/Guadalcanal" , 0x04D0B0 }, + { "Pacific/Guam" , 0x04D142 }, + { "Pacific/Honolulu" , 0x04D2AC }, + { "Pacific/Johnston" , 0x04D39B }, + { "Pacific/Kanton" , 0x04D484 }, + { "Pacific/Kiritimati" , 0x04D54B }, + { "Pacific/Kosrae" , 0x04D611 }, + { "Pacific/Kwajalein" , 0x04D715 }, + { "Pacific/Majuro" , 0x04D805 }, + { "Pacific/Marquesas" , 0x04D908 }, + { "Pacific/Midway" , 0x04D9B0 }, + { "Pacific/Nauru" , 0x04DA5C }, + { "Pacific/Niue" , 0x04DB1F }, + { "Pacific/Norfolk" , 0x04DBC5 }, + { "Pacific/Noumea" , 0x04DCC8 }, + { "Pacific/Pago_Pago" , 0x04DD9A }, + { "Pacific/Palau" , 0x04DE38 }, + { "Pacific/Pitcairn" , 0x04DED8 }, + { "Pacific/Pohnpei" , 0x04DF7D }, + { "Pacific/Ponape" , 0x04E06D }, + { "Pacific/Port_Moresby" , 0x04E14F }, + { "Pacific/Rarotonga" , 0x04E212 }, + { "Pacific/Saipan" , 0x04E3B4 }, + { "Pacific/Samoa" , 0x04E51E }, + { "Pacific/Tahiti" , 0x04E5BC }, + { "Pacific/Tarawa" , 0x04E65C }, + { "Pacific/Tongatapu" , 0x04E6FD }, + { "Pacific/Truk" , 0x04E7F6 }, + { "Pacific/Wake" , 0x04E8C5 }, + { "Pacific/Wallis" , 0x04E962 }, + { "Pacific/Yap" , 0x04E9F4 }, + { "Poland" , 0x04EAC3 }, + { "Portugal" , 0x04EE6A }, + { "PRC" , 0x04F424 }, + { "PST8PDT" , 0x04F5B9 }, + { "ROC" , 0x04F97C }, + { "ROK" , 0x04FB87 }, + { "Singapore" , 0x04FD32 }, + { "Turkey" , 0x04FE3E }, + { "UCT" , 0x0502FA }, + { "Universal" , 0x050375 }, + { "US/Alaska" , 0x0503F0 }, + { "US/Aleutian" , 0x0507CD }, + { "US/Arizona" , 0x050BA2 }, + { "US/Central" , 0x050C9E }, + { "US/East-Indiana" , 0x051384 }, + { "US/Eastern" , 0x0515A3 }, + { "US/Hawaii" , 0x051C7F }, + { "US/Indiana-Starke" , 0x051D68 }, + { "US/Michigan" , 0x05216C }, + { "US/Mountain" , 0x0524FB }, + { "US/Pacific" , 0x052919 }, + { "US/Samoa" , 0x052E33 }, + { "UTC" , 0x052ED1 }, + { "W-SU" , 0x052F4C }, + { "WET" , 0x0532E4 }, + { "Zulu" , 0x0534DE }, }; -const unsigned char timelib_timezone_db_data_builtin[341290] = { +const unsigned char timelib_timezone_db_data_builtin[341337] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7531,9 +7531,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x74, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, -0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, @@ -7596,7 +7596,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x06, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, +0x03, 0x05, 0x06, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, @@ -8018,9 +8018,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x7A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, -0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, @@ -8086,8 +8086,8 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x00, 0xFF, -0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, +0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x00, 0xFF, +0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x34, 0x3E, 0x34, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x2C, 0x4D, 0x39, @@ -10702,7 +10702,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0xBD, 0x4A, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x59, 0xCF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xFA, 0xA6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x38, 0x9C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE5, 0xEB, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xAC, 0xFE, 0x00, 0xFF, @@ -10761,21 +10761,21 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x5A, 0xB5, 0x86, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD3, 0x8E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, -0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7B, 0x1D, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 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, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x20, 0x50, -0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, -0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, -0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, -0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, -0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x35, 0x2F, 0x31, 0x0A, 0x00, 0xB9, -0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, -0x74, 0x72, 0x69, 0x70, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x20, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, +0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, +0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, +0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, +0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, 0x31, 0x30, +0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x32, 0x35, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, +0x00, 0x00, 0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70, /* Asia/Harbin */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10811,7 +10811,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x77, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0xBD, 0x4A, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x59, 0xCF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xFA, 0xA6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x38, 0x9C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE5, 0xEB, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xAC, 0xFE, 0x00, 0xFF, @@ -10871,21 +10871,21 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x5A, 0xB5, 0x86, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD3, 0x8E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, -0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7B, 0x1D, 0x60, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x01, 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, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, -0x20, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, -0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, -0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, -0x2E, 0x34, 0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x35, 0x2F, 0x31, 0x0A, -0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, 0x74, -0x20, 0x42, 0x61, 0x6E, 0x6B, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x20, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x2A, +0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, +0x00, 0x1C, 0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, +0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, +0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, +0x31, 0x30, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x32, 0x35, 0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, +0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, 0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B, /* Asia/Ho_Chi_Minh */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -15680,9 +15680,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x7A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, -0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, @@ -15748,8 +15748,8 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x00, 0xFF, -0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, +0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x00, 0xFF, +0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x34, 0x3E, 0x34, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x2C, 0x4D, 0x39, @@ -17987,7 +17987,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x26, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x22, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xCD, 0x2E, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, @@ -18002,23 +18002,23 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x20, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, -0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, -0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, -0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, -0x07, 0x02, 0x07, 0x02, 0x07, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, -0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, -0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, -0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, -0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, -0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, -0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, 0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, 0x00, 0x00, 0x00, -0x14, 0x55, 0x6B, 0x72, 0x61, 0x69, 0x6E, 0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, -0x72, 0x65, 0x61, 0x73, 0x29, +0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, +0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, +0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, +0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, +0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x00, 0x00, +0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, +0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, +0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, +0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, +0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, +0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, +0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, +0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, 0x00, 0x00, 0x00, 0x14, 0x55, 0x6B, 0x72, 0x61, 0x69, 0x6E, +0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, /* Europe/Kirov */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -19279,9 +19279,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, 0xD0, 0x00, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, 0x50, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x67, 0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, @@ -19617,7 +19617,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x25, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0x6A, 0xEE, 0xB0, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x09, 0x71, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, @@ -19632,21 +19632,22 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x42, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, -0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x01, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, 0x00, 0x14, 0xE8, -0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, -0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, -0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, -0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, -0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, -0x34, 0x0A, 0x00, 0xD3, 0x83, 0x22, 0x01, 0x34, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x54, 0x72, -0x61, 0x6E, 0x73, 0x63, 0x61, 0x72, 0x70, 0x61, 0x74, 0x68, 0x69, 0x61, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, +0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x01, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x4C, +0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, +0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, +0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD3, 0x83, 0x22, 0x01, +0x34, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x63, 0x61, 0x72, 0x70, +0x61, 0x74, 0x68, 0x69, 0x61, /* Europe/Vaduz */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4C, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -19984,7 +19985,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x27, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC3, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA3, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xAA, 0xE7, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, @@ -20000,23 +20001,24 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x27, 0x70, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE4, 0xED, 0x50, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, -0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, -0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, -0x03, 0x06, 0x03, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x00, 0x00, -0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, -0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, -0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, -0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, -0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, -0x00, 0xD2, 0x51, 0x25, 0x01, 0x48, 0x51, 0x7A, 0x00, 0x00, 0x00, 0x1B, 0x5A, 0x61, 0x70, 0x6F, -0x72, 0x6F, 0x7A, 0x68, 0x79, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x73, 0x74, 0x20, -0x4C, 0x75, 0x67, 0x61, 0x6E, 0x73, 0x6B, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, +0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, +0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, +0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x07, 0x02, 0x07, 0x02, 0x07, +0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, +0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, +0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, +0x1B, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, 0x30, +0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, +0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, +0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, +0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD2, 0x51, 0x25, 0x01, 0x48, 0x51, +0x7A, 0x00, 0x00, 0x00, 0x1B, 0x5A, 0x61, 0x70, 0x6F, 0x72, 0x6F, 0x7A, 0x68, 0x79, 0x65, 0x20, +0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x73, 0x74, 0x20, 0x4C, 0x75, 0x67, 0x61, 0x6E, 0x73, 0x6B, + /* Europe/Zurich */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -23690,340 +23692,340 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[595] = { { "Asia/Dushanbe" , 0x0476ED }, { "Asia/Famagusta" , 0x047948 }, { "Asia/Gaza" , 0x04814F }, - { "Asia/Harbin" , 0x048ADA }, - { "Asia/Hebron" , 0x048D17 }, - { "Asia/Ho_Chi_Minh" , 0x0496BD }, - { "Asia/Hong_Kong" , 0x049828 }, - { "Asia/Hovd" , 0x049CE7 }, - { "Asia/Irkutsk" , 0x04A099 }, - { "Asia/Istanbul" , 0x04A59A }, - { "Asia/Jakarta" , 0x04AD41 }, - { "Asia/Jayapura" , 0x04AEBD }, - { "Asia/Jerusalem" , 0x04AFDC }, - { "Asia/Kabul" , 0x04B93C }, - { "Asia/Kamchatka" , 0x04BA18 }, - { "Asia/Karachi" , 0x04BEC4 }, - { "Asia/Kashgar" , 0x04C04B }, - { "Asia/Kathmandu" , 0x04C0FC }, - { "Asia/Katmandu" , 0x04C1DC }, - { "Asia/Khandyga" , 0x04C2BC }, - { "Asia/Kolkata" , 0x04C7DD }, - { "Asia/Krasnoyarsk" , 0x04C906 }, - { "Asia/Kuala_Lumpur" , 0x04CDE2 }, - { "Asia/Kuching" , 0x04CF81 }, - { "Asia/Kuwait" , 0x04D17E }, - { "Asia/Macao" , 0x04D22F }, - { "Asia/Macau" , 0x04D706 }, - { "Asia/Magadan" , 0x04DBDD }, - { "Asia/Makassar" , 0x04E0BF }, - { "Asia/Manila" , 0x04E212 }, - { "Asia/Muscat" , 0x04E366 }, - { "Asia/Nicosia" , 0x04E417 }, - { "Asia/Novokuznetsk" , 0x04EC08 }, - { "Asia/Novosibirsk" , 0x04F0B2 }, - { "Asia/Omsk" , 0x04F597 }, - { "Asia/Oral" , 0x04FA67 }, - { "Asia/Phnom_Penh" , 0x04FE6F }, - { "Asia/Pontianak" , 0x04FF42 }, - { "Asia/Pyongyang" , 0x0500C5 }, - { "Asia/Qatar" , 0x0501BE }, - { "Asia/Qostanay" , 0x050291 }, - { "Asia/Qyzylorda" , 0x0506AA }, - { "Asia/Rangoon" , 0x050AD4 }, - { "Asia/Riyadh" , 0x050BEC }, - { "Asia/Saigon" , 0x050C9D }, - { "Asia/Sakhalin" , 0x050E08 }, - { "Asia/Samarkand" , 0x0512DE }, - { "Asia/Seoul" , 0x05153C }, - { "Asia/Shanghai" , 0x0517B1 }, - { "Asia/Singapore" , 0x0519FA }, - { "Asia/Srednekolymsk" , 0x051B85 }, - { "Asia/Taipei" , 0x05206B }, - { "Asia/Tashkent" , 0x052370 }, - { "Asia/Tbilisi" , 0x0525DC }, - { "Asia/Tehran" , 0x0529F3 }, - { "Asia/Tel_Aviv" , 0x053415 }, - { "Asia/Thimbu" , 0x053D75 }, - { "Asia/Thimphu" , 0x053E4C }, - { "Asia/Tokyo" , 0x053F23 }, - { "Asia/Tomsk" , 0x054064 }, - { "Asia/Ujung_Pandang" , 0x054543 }, - { "Asia/Ulaanbaatar" , 0x05464D }, - { "Asia/Ulan_Bator" , 0x0549E9 }, - { "Asia/Urumqi" , 0x054D70 }, - { "Asia/Ust-Nera" , 0x054E2E }, - { "Asia/Vientiane" , 0x055332 }, - { "Asia/Vladivostok" , 0x055405 }, - { "Asia/Yakutsk" , 0x0558DC }, - { "Asia/Yangon" , 0x055DB2 }, - { "Asia/Yekaterinburg" , 0x055ECA }, - { "Asia/Yerevan" , 0x0563BF }, - { "Atlantic/Azores" , 0x05684A }, - { "Atlantic/Bermuda" , 0x057614 }, - { "Atlantic/Canary" , 0x057F7C }, - { "Atlantic/Cape_Verde" , 0x0586FF }, - { "Atlantic/Faeroe" , 0x058819 }, - { "Atlantic/Faroe" , 0x058F3C }, - { "Atlantic/Jan_Mayen" , 0x05965F }, - { "Atlantic/Madeira" , 0x059F1F }, - { "Atlantic/Reykjavik" , 0x05ACE9 }, - { "Atlantic/South_Georgia" , 0x05B17F }, - { "Atlantic/St_Helena" , 0x05B22F }, - { "Atlantic/Stanley" , 0x05B2CF }, - { "Australia/ACT" , 0x05B799 }, - { "Australia/Adelaide" , 0x05C033 }, - { "Australia/Brisbane" , 0x05C8EE }, - { "Australia/Broken_Hill" , 0x05CAB4 }, - { "Australia/Canberra" , 0x05D391 }, - { "Australia/Currie" , 0x05DC2B }, - { "Australia/Darwin" , 0x05E56D }, - { "Australia/Eucla" , 0x05E6D0 }, - { "Australia/Hobart" , 0x05E8CB }, - { "Australia/LHI" , 0x05F215 }, - { "Australia/Lindeman" , 0x05F965 }, - { "Australia/Lord_Howe" , 0x05FB6B }, - { "Australia/Melbourne" , 0x0602CB }, - { "Australia/North" , 0x060B6D }, - { "Australia/NSW" , 0x060CBE }, - { "Australia/Perth" , 0x061558 }, - { "Australia/Queensland" , 0x061740 }, - { "Australia/South" , 0x0618EF }, - { "Australia/Sydney" , 0x06219B }, - { "Australia/Tasmania" , 0x062A51 }, - { "Australia/Victoria" , 0x063393 }, - { "Australia/West" , 0x063C2D }, - { "Australia/Yancowinna" , 0x063DF7 }, - { "Brazil/Acre" , 0x0646B8 }, - { "Brazil/DeNoronha" , 0x064938 }, - { "Brazil/East" , 0x064C10 }, - { "Brazil/West" , 0x0651C0 }, - { "Canada/Atlantic" , 0x065428 }, - { "Canada/Central" , 0x066194 }, - { "Canada/Eastern" , 0x066CD4 }, - { "Canada/Mountain" , 0x067A86 }, - { "Canada/Newfoundland" , 0x0683AE }, - { "Canada/Pacific" , 0x069201 }, - { "Canada/Saskatchewan" , 0x069D59 }, - { "Canada/Yukon" , 0x06A139 }, - { "CET" , 0x06A793 }, - { "Chile/Continental" , 0x06AFCD }, - { "Chile/EasterIsland" , 0x06B9BA }, - { "CST6CDT" , 0x06C27F }, - { "Cuba" , 0x06CB91 }, - { "EET" , 0x06D50D }, - { "Egypt" , 0x06DC8D }, - { "Eire" , 0x06E43C }, - { "EST" , 0x06F1EC }, - { "EST5EDT" , 0x06F26A }, - { "Etc/GMT" , 0x06FB7C }, - { "Etc/GMT+0" , 0x06FBFA }, - { "Etc/GMT+1" , 0x06FC78 }, - { "Etc/GMT+10" , 0x06FCF8 }, - { "Etc/GMT+11" , 0x06FD79 }, - { "Etc/GMT+12" , 0x06FDFA }, - { "Etc/GMT+2" , 0x06FE7B }, - { "Etc/GMT+3" , 0x06FEFB }, - { "Etc/GMT+4" , 0x06FF7B }, - { "Etc/GMT+5" , 0x06FFFB }, - { "Etc/GMT+6" , 0x07007B }, - { "Etc/GMT+7" , 0x0700FB }, - { "Etc/GMT+8" , 0x07017B }, - { "Etc/GMT+9" , 0x0701FB }, - { "Etc/GMT-0" , 0x07027B }, - { "Etc/GMT-1" , 0x0702F9 }, - { "Etc/GMT-10" , 0x07037A }, - { "Etc/GMT-11" , 0x0703FC }, - { "Etc/GMT-12" , 0x07047E }, - { "Etc/GMT-13" , 0x070500 }, - { "Etc/GMT-14" , 0x070582 }, - { "Etc/GMT-2" , 0x070604 }, - { "Etc/GMT-3" , 0x070685 }, - { "Etc/GMT-4" , 0x070706 }, - { "Etc/GMT-5" , 0x070787 }, - { "Etc/GMT-6" , 0x070808 }, - { "Etc/GMT-7" , 0x070889 }, - { "Etc/GMT-8" , 0x07090A }, - { "Etc/GMT-9" , 0x07098B }, - { "Etc/GMT0" , 0x070A0C }, - { "Etc/Greenwich" , 0x070A8A }, - { "Etc/UCT" , 0x070B08 }, - { "Etc/Universal" , 0x070B86 }, - { "Etc/UTC" , 0x070C04 }, - { "Etc/Zulu" , 0x070C82 }, - { "Europe/Amsterdam" , 0x070D00 }, - { "Europe/Andorra" , 0x07186A }, - { "Europe/Astrakhan" , 0x071F44 }, - { "Europe/Athens" , 0x0723EF }, - { "Europe/Belfast" , 0x072CD1 }, - { "Europe/Belgrade" , 0x073B1D }, - { "Europe/Berlin" , 0x0742A9 }, - { "Europe/Bratislava" , 0x074BC3 }, - { "Europe/Brussels" , 0x0754CC }, - { "Europe/Bucharest" , 0x07604D }, - { "Europe/Budapest" , 0x0768E1 }, - { "Europe/Busingen" , 0x07722D }, - { "Europe/Chisinau" , 0x0779B6 }, - { "Europe/Copenhagen" , 0x078318 }, - { "Europe/Dublin" , 0x078B7D }, - { "Europe/Gibraltar" , 0x07992D }, - { "Europe/Guernsey" , 0x07A525 }, - { "Europe/Helsinki" , 0x07B371 }, - { "Europe/Isle_of_Man" , 0x07BAE9 }, - { "Europe/Istanbul" , 0x07C935 }, - { "Europe/Jersey" , 0x07D0DC }, - { "Europe/Kaliningrad" , 0x07DF28 }, - { "Europe/Kiev" , 0x07E51D }, - { "Europe/Kirov" , 0x07ED65 }, - { "Europe/Lisbon" , 0x07F200 }, - { "Europe/Ljubljana" , 0x07FFC8 }, - { "Europe/London" , 0x080754 }, - { "Europe/Luxembourg" , 0x0815A0 }, - { "Europe/Madrid" , 0x08212E }, - { "Europe/Malta" , 0x082B80 }, - { "Europe/Mariehamn" , 0x0835C8 }, - { "Europe/Minsk" , 0x083D40 }, - { "Europe/Monaco" , 0x084275 }, - { "Europe/Moscow" , 0x084E01 }, - { "Europe/Nicosia" , 0x085420 }, - { "Europe/Oslo" , 0x085BFE }, - { "Europe/Paris" , 0x0864BE }, - { "Europe/Podgorica" , 0x08705C }, - { "Europe/Prague" , 0x0877E8 }, - { "Europe/Riga" , 0x0880F1 }, - { "Europe/Rome" , 0x088993 }, - { "Europe/Samara" , 0x0893F0 }, - { "Europe/San_Marino" , 0x0898D4 }, - { "Europe/Sarajevo" , 0x08A331 }, - { "Europe/Saratov" , 0x08AABD }, - { "Europe/Simferopol" , 0x08AF78 }, - { "Europe/Skopje" , 0x08B537 }, - { "Europe/Sofia" , 0x08BCC3 }, - { "Europe/Stockholm" , 0x08C4EC }, - { "Europe/Tallinn" , 0x08CC6D }, - { "Europe/Tirane" , 0x08D4DD }, - { "Europe/Tiraspol" , 0x08DD0D }, - { "Europe/Ulyanovsk" , 0x08E66F }, - { "Europe/Uzhgorod" , 0x08EB80 }, - { "Europe/Vaduz" , 0x08F39C }, - { "Europe/Vatican" , 0x08FB1D }, - { "Europe/Vienna" , 0x09057A }, - { "Europe/Vilnius" , 0x090E1E }, - { "Europe/Volgograd" , 0x09169C }, - { "Europe/Warsaw" , 0x091B47 }, - { "Europe/Zagreb" , 0x0925B1 }, - { "Europe/Zaporozhye" , 0x092D3D }, - { "Europe/Zurich" , 0x09359E }, - { "Factory" , 0x093D1F }, - { "GB" , 0x093D9F }, - { "GB-Eire" , 0x094BEB }, - { "GMT" , 0x095A37 }, - { "GMT+0" , 0x095AB5 }, - { "GMT-0" , 0x095B33 }, - { "GMT0" , 0x095BB1 }, - { "Greenwich" , 0x095C2F }, - { "Hongkong" , 0x095CAD }, - { "HST" , 0x09616C }, - { "Iceland" , 0x0961EB }, - { "Indian/Antananarivo" , 0x096681 }, - { "Indian/Chagos" , 0x096796 }, - { "Indian/Christmas" , 0x096869 }, - { "Indian/Cocos" , 0x09691A }, - { "Indian/Comoro" , 0x0969D4 }, - { "Indian/Kerguelen" , 0x096AE9 }, - { "Indian/Mahe" , 0x096B9A }, - { "Indian/Maldives" , 0x096C4B }, - { "Indian/Mauritius" , 0x096D1E }, - { "Indian/Mayotte" , 0x096E1B }, - { "Indian/Reunion" , 0x096F30 }, - { "Iran" , 0x096FE1 }, - { "Israel" , 0x097A03 }, - { "Jamaica" , 0x098363 }, - { "Japan" , 0x098551 }, - { "Kwajalein" , 0x098692 }, - { "Libya" , 0x0987DA }, - { "MET" , 0x098A57 }, - { "Mexico/BajaNorte" , 0x099291 }, - { "Mexico/BajaSur" , 0x099BC3 }, - { "Mexico/General" , 0x09A1C5 }, - { "MST" , 0x09A801 }, - { "MST7MDT" , 0x09A87F }, - { "Navajo" , 0x09B191 }, - { "NZ" , 0x09BB29 }, - { "NZ-CHAT" , 0x09C4BA }, - { "Pacific/Apia" , 0x09CCDA }, - { "Pacific/Auckland" , 0x09CF4A }, - { "Pacific/Bougainville" , 0x09D8F3 }, - { "Pacific/Chatham" , 0x09DA17 }, - { "Pacific/Chuuk" , 0x09E246 }, - { "Pacific/Easter" , 0x09E36E }, - { "Pacific/Efate" , 0x09EC40 }, - { "Pacific/Enderbury" , 0x09EE66 }, - { "Pacific/Fakaofo" , 0x09EF5C }, - { "Pacific/Fiji" , 0x09F030 }, - { "Pacific/Funafuti" , 0x09F455 }, - { "Pacific/Galapagos" , 0x09F507 }, - { "Pacific/Gambier" , 0x09F612 }, - { "Pacific/Guadalcanal" , 0x09F6D1 }, - { "Pacific/Guam" , 0x09F783 }, - { "Pacific/Honolulu" , 0x09F97D }, - { "Pacific/Johnston" , 0x09FAD8 }, - { "Pacific/Kanton" , 0x09FC2D }, - { "Pacific/Kiritimati" , 0x09FD32 }, - { "Pacific/Kosrae" , 0x09FE38 }, - { "Pacific/Kwajalein" , 0x09FFA9 }, - { "Pacific/Majuro" , 0x0A00FA }, - { "Pacific/Marquesas" , 0x0A0259 }, - { "Pacific/Midway" , 0x0A0323 }, - { "Pacific/Nauru" , 0x0A03EC }, - { "Pacific/Niue" , 0x0A04F4 }, - { "Pacific/Norfolk" , 0x0A05CB }, - { "Pacific/Noumea" , 0x0A0947 }, - { "Pacific/Pago_Pago" , 0x0A0A83 }, - { "Pacific/Palau" , 0x0A0B3E }, - { "Pacific/Pitcairn" , 0x0A0BFE }, - { "Pacific/Pohnpei" , 0x0A0CD4 }, - { "Pacific/Ponape" , 0x0A0E1D }, - { "Pacific/Port_Moresby" , 0x0A0F58 }, - { "Pacific/Rarotonga" , 0x0A103B }, - { "Pacific/Saipan" , 0x0A12A2 }, - { "Pacific/Samoa" , 0x0A149C }, - { "Pacific/Tahiti" , 0x0A1557 }, - { "Pacific/Tarawa" , 0x0A1617 }, - { "Pacific/Tongatapu" , 0x0A16D8 }, - { "Pacific/Truk" , 0x0A1858 }, - { "Pacific/Wake" , 0x0A1971 }, - { "Pacific/Wallis" , 0x0A1A2E }, - { "Pacific/Yap" , 0x0A1AE0 }, - { "Poland" , 0x0A1BF9 }, - { "Portugal" , 0x0A2663 }, - { "PRC" , 0x0A3418 }, - { "PST8PDT" , 0x0A3655 }, - { "ROC" , 0x0A3F67 }, - { "ROK" , 0x0A426C }, - { "Singapore" , 0x0A44E1 }, - { "Turkey" , 0x0A466C }, - { "UCT" , 0x0A4E13 }, - { "Universal" , 0x0A4E91 }, - { "US/Alaska" , 0x0A4F0F }, - { "US/Aleutian" , 0x0A585E }, - { "US/Arizona" , 0x0A619E }, - { "US/Central" , 0x0A62F2 }, - { "US/East-Indiana" , 0x0A70F6 }, - { "US/Eastern" , 0x0A7784 }, - { "US/Hawaii" , 0x0A8560 }, - { "US/Indiana-Starke" , 0x0A86B5 }, - { "US/Michigan" , 0x0A903D }, - { "US/Mountain" , 0x0A98FF }, - { "US/Pacific" , 0x0AA297 }, - { "US/Samoa" , 0x0AADB7 }, - { "UTC" , 0x0AAE72 }, - { "W-SU" , 0x0AAEF0 }, - { "WET" , 0x0AB4FB }, - { "Zulu" , 0x0ABC78 }, + { "Asia/Harbin" , 0x048ADB }, + { "Asia/Hebron" , 0x048D18 }, + { "Asia/Ho_Chi_Minh" , 0x0496BF }, + { "Asia/Hong_Kong" , 0x04982A }, + { "Asia/Hovd" , 0x049CE9 }, + { "Asia/Irkutsk" , 0x04A09B }, + { "Asia/Istanbul" , 0x04A59C }, + { "Asia/Jakarta" , 0x04AD43 }, + { "Asia/Jayapura" , 0x04AEBF }, + { "Asia/Jerusalem" , 0x04AFDE }, + { "Asia/Kabul" , 0x04B93E }, + { "Asia/Kamchatka" , 0x04BA1A }, + { "Asia/Karachi" , 0x04BEC6 }, + { "Asia/Kashgar" , 0x04C04D }, + { "Asia/Kathmandu" , 0x04C0FE }, + { "Asia/Katmandu" , 0x04C1DE }, + { "Asia/Khandyga" , 0x04C2BE }, + { "Asia/Kolkata" , 0x04C7DF }, + { "Asia/Krasnoyarsk" , 0x04C908 }, + { "Asia/Kuala_Lumpur" , 0x04CDE4 }, + { "Asia/Kuching" , 0x04CF83 }, + { "Asia/Kuwait" , 0x04D180 }, + { "Asia/Macao" , 0x04D231 }, + { "Asia/Macau" , 0x04D708 }, + { "Asia/Magadan" , 0x04DBDF }, + { "Asia/Makassar" , 0x04E0C1 }, + { "Asia/Manila" , 0x04E214 }, + { "Asia/Muscat" , 0x04E368 }, + { "Asia/Nicosia" , 0x04E419 }, + { "Asia/Novokuznetsk" , 0x04EC0A }, + { "Asia/Novosibirsk" , 0x04F0B4 }, + { "Asia/Omsk" , 0x04F599 }, + { "Asia/Oral" , 0x04FA69 }, + { "Asia/Phnom_Penh" , 0x04FE71 }, + { "Asia/Pontianak" , 0x04FF44 }, + { "Asia/Pyongyang" , 0x0500C7 }, + { "Asia/Qatar" , 0x0501C0 }, + { "Asia/Qostanay" , 0x050293 }, + { "Asia/Qyzylorda" , 0x0506AC }, + { "Asia/Rangoon" , 0x050AD6 }, + { "Asia/Riyadh" , 0x050BEE }, + { "Asia/Saigon" , 0x050C9F }, + { "Asia/Sakhalin" , 0x050E0A }, + { "Asia/Samarkand" , 0x0512E0 }, + { "Asia/Seoul" , 0x05153E }, + { "Asia/Shanghai" , 0x0517B3 }, + { "Asia/Singapore" , 0x0519FC }, + { "Asia/Srednekolymsk" , 0x051B87 }, + { "Asia/Taipei" , 0x05206D }, + { "Asia/Tashkent" , 0x052372 }, + { "Asia/Tbilisi" , 0x0525DE }, + { "Asia/Tehran" , 0x0529F5 }, + { "Asia/Tel_Aviv" , 0x053417 }, + { "Asia/Thimbu" , 0x053D77 }, + { "Asia/Thimphu" , 0x053E4E }, + { "Asia/Tokyo" , 0x053F25 }, + { "Asia/Tomsk" , 0x054066 }, + { "Asia/Ujung_Pandang" , 0x054545 }, + { "Asia/Ulaanbaatar" , 0x05464F }, + { "Asia/Ulan_Bator" , 0x0549EB }, + { "Asia/Urumqi" , 0x054D72 }, + { "Asia/Ust-Nera" , 0x054E30 }, + { "Asia/Vientiane" , 0x055334 }, + { "Asia/Vladivostok" , 0x055407 }, + { "Asia/Yakutsk" , 0x0558DE }, + { "Asia/Yangon" , 0x055DB4 }, + { "Asia/Yekaterinburg" , 0x055ECC }, + { "Asia/Yerevan" , 0x0563C1 }, + { "Atlantic/Azores" , 0x05684C }, + { "Atlantic/Bermuda" , 0x057616 }, + { "Atlantic/Canary" , 0x057F7E }, + { "Atlantic/Cape_Verde" , 0x058701 }, + { "Atlantic/Faeroe" , 0x05881B }, + { "Atlantic/Faroe" , 0x058F3E }, + { "Atlantic/Jan_Mayen" , 0x059661 }, + { "Atlantic/Madeira" , 0x059F21 }, + { "Atlantic/Reykjavik" , 0x05ACEB }, + { "Atlantic/South_Georgia" , 0x05B181 }, + { "Atlantic/St_Helena" , 0x05B231 }, + { "Atlantic/Stanley" , 0x05B2D1 }, + { "Australia/ACT" , 0x05B79B }, + { "Australia/Adelaide" , 0x05C035 }, + { "Australia/Brisbane" , 0x05C8F0 }, + { "Australia/Broken_Hill" , 0x05CAB6 }, + { "Australia/Canberra" , 0x05D393 }, + { "Australia/Currie" , 0x05DC2D }, + { "Australia/Darwin" , 0x05E56F }, + { "Australia/Eucla" , 0x05E6D2 }, + { "Australia/Hobart" , 0x05E8CD }, + { "Australia/LHI" , 0x05F217 }, + { "Australia/Lindeman" , 0x05F967 }, + { "Australia/Lord_Howe" , 0x05FB6D }, + { "Australia/Melbourne" , 0x0602CD }, + { "Australia/North" , 0x060B6F }, + { "Australia/NSW" , 0x060CC0 }, + { "Australia/Perth" , 0x06155A }, + { "Australia/Queensland" , 0x061742 }, + { "Australia/South" , 0x0618F1 }, + { "Australia/Sydney" , 0x06219D }, + { "Australia/Tasmania" , 0x062A53 }, + { "Australia/Victoria" , 0x063395 }, + { "Australia/West" , 0x063C2F }, + { "Australia/Yancowinna" , 0x063DF9 }, + { "Brazil/Acre" , 0x0646BA }, + { "Brazil/DeNoronha" , 0x06493A }, + { "Brazil/East" , 0x064C12 }, + { "Brazil/West" , 0x0651C2 }, + { "Canada/Atlantic" , 0x06542A }, + { "Canada/Central" , 0x066196 }, + { "Canada/Eastern" , 0x066CD6 }, + { "Canada/Mountain" , 0x067A88 }, + { "Canada/Newfoundland" , 0x0683B0 }, + { "Canada/Pacific" , 0x069203 }, + { "Canada/Saskatchewan" , 0x069D5B }, + { "Canada/Yukon" , 0x06A13B }, + { "CET" , 0x06A795 }, + { "Chile/Continental" , 0x06AFCF }, + { "Chile/EasterIsland" , 0x06B9BC }, + { "CST6CDT" , 0x06C281 }, + { "Cuba" , 0x06CB93 }, + { "EET" , 0x06D50F }, + { "Egypt" , 0x06DC8F }, + { "Eire" , 0x06E43E }, + { "EST" , 0x06F1EE }, + { "EST5EDT" , 0x06F26C }, + { "Etc/GMT" , 0x06FB7E }, + { "Etc/GMT+0" , 0x06FBFC }, + { "Etc/GMT+1" , 0x06FC7A }, + { "Etc/GMT+10" , 0x06FCFA }, + { "Etc/GMT+11" , 0x06FD7B }, + { "Etc/GMT+12" , 0x06FDFC }, + { "Etc/GMT+2" , 0x06FE7D }, + { "Etc/GMT+3" , 0x06FEFD }, + { "Etc/GMT+4" , 0x06FF7D }, + { "Etc/GMT+5" , 0x06FFFD }, + { "Etc/GMT+6" , 0x07007D }, + { "Etc/GMT+7" , 0x0700FD }, + { "Etc/GMT+8" , 0x07017D }, + { "Etc/GMT+9" , 0x0701FD }, + { "Etc/GMT-0" , 0x07027D }, + { "Etc/GMT-1" , 0x0702FB }, + { "Etc/GMT-10" , 0x07037C }, + { "Etc/GMT-11" , 0x0703FE }, + { "Etc/GMT-12" , 0x070480 }, + { "Etc/GMT-13" , 0x070502 }, + { "Etc/GMT-14" , 0x070584 }, + { "Etc/GMT-2" , 0x070606 }, + { "Etc/GMT-3" , 0x070687 }, + { "Etc/GMT-4" , 0x070708 }, + { "Etc/GMT-5" , 0x070789 }, + { "Etc/GMT-6" , 0x07080A }, + { "Etc/GMT-7" , 0x07088B }, + { "Etc/GMT-8" , 0x07090C }, + { "Etc/GMT-9" , 0x07098D }, + { "Etc/GMT0" , 0x070A0E }, + { "Etc/Greenwich" , 0x070A8C }, + { "Etc/UCT" , 0x070B0A }, + { "Etc/Universal" , 0x070B88 }, + { "Etc/UTC" , 0x070C06 }, + { "Etc/Zulu" , 0x070C84 }, + { "Europe/Amsterdam" , 0x070D02 }, + { "Europe/Andorra" , 0x07186C }, + { "Europe/Astrakhan" , 0x071F46 }, + { "Europe/Athens" , 0x0723F1 }, + { "Europe/Belfast" , 0x072CD3 }, + { "Europe/Belgrade" , 0x073B1F }, + { "Europe/Berlin" , 0x0742AB }, + { "Europe/Bratislava" , 0x074BC5 }, + { "Europe/Brussels" , 0x0754CE }, + { "Europe/Bucharest" , 0x07604F }, + { "Europe/Budapest" , 0x0768E3 }, + { "Europe/Busingen" , 0x07722F }, + { "Europe/Chisinau" , 0x0779B8 }, + { "Europe/Copenhagen" , 0x07831A }, + { "Europe/Dublin" , 0x078B7F }, + { "Europe/Gibraltar" , 0x07992F }, + { "Europe/Guernsey" , 0x07A527 }, + { "Europe/Helsinki" , 0x07B373 }, + { "Europe/Isle_of_Man" , 0x07BAEB }, + { "Europe/Istanbul" , 0x07C937 }, + { "Europe/Jersey" , 0x07D0DE }, + { "Europe/Kaliningrad" , 0x07DF2A }, + { "Europe/Kiev" , 0x07E51F }, + { "Europe/Kirov" , 0x07ED87 }, + { "Europe/Lisbon" , 0x07F222 }, + { "Europe/Ljubljana" , 0x07FFEA }, + { "Europe/London" , 0x080776 }, + { "Europe/Luxembourg" , 0x0815C2 }, + { "Europe/Madrid" , 0x082150 }, + { "Europe/Malta" , 0x082BA2 }, + { "Europe/Mariehamn" , 0x0835EA }, + { "Europe/Minsk" , 0x083D62 }, + { "Europe/Monaco" , 0x084297 }, + { "Europe/Moscow" , 0x084E23 }, + { "Europe/Nicosia" , 0x085442 }, + { "Europe/Oslo" , 0x085C20 }, + { "Europe/Paris" , 0x0864E0 }, + { "Europe/Podgorica" , 0x08707E }, + { "Europe/Prague" , 0x08780A }, + { "Europe/Riga" , 0x088113 }, + { "Europe/Rome" , 0x0889B5 }, + { "Europe/Samara" , 0x089412 }, + { "Europe/San_Marino" , 0x0898F6 }, + { "Europe/Sarajevo" , 0x08A353 }, + { "Europe/Saratov" , 0x08AADF }, + { "Europe/Simferopol" , 0x08AF9A }, + { "Europe/Skopje" , 0x08B569 }, + { "Europe/Sofia" , 0x08BCF5 }, + { "Europe/Stockholm" , 0x08C51E }, + { "Europe/Tallinn" , 0x08CC9F }, + { "Europe/Tirane" , 0x08D50F }, + { "Europe/Tiraspol" , 0x08DD3F }, + { "Europe/Ulyanovsk" , 0x08E6A1 }, + { "Europe/Uzhgorod" , 0x08EBB2 }, + { "Europe/Vaduz" , 0x08F3DE }, + { "Europe/Vatican" , 0x08FB5F }, + { "Europe/Vienna" , 0x0905BC }, + { "Europe/Vilnius" , 0x090E60 }, + { "Europe/Volgograd" , 0x0916DE }, + { "Europe/Warsaw" , 0x091B89 }, + { "Europe/Zagreb" , 0x0925F3 }, + { "Europe/Zaporozhye" , 0x092D7F }, + { "Europe/Zurich" , 0x093600 }, + { "Factory" , 0x093D81 }, + { "GB" , 0x093E01 }, + { "GB-Eire" , 0x094C4D }, + { "GMT" , 0x095A99 }, + { "GMT+0" , 0x095B17 }, + { "GMT-0" , 0x095B95 }, + { "GMT0" , 0x095C13 }, + { "Greenwich" , 0x095C91 }, + { "Hongkong" , 0x095D0F }, + { "HST" , 0x0961CE }, + { "Iceland" , 0x09624D }, + { "Indian/Antananarivo" , 0x0966E3 }, + { "Indian/Chagos" , 0x0967F8 }, + { "Indian/Christmas" , 0x0968CB }, + { "Indian/Cocos" , 0x09697C }, + { "Indian/Comoro" , 0x096A36 }, + { "Indian/Kerguelen" , 0x096B4B }, + { "Indian/Mahe" , 0x096BFC }, + { "Indian/Maldives" , 0x096CAD }, + { "Indian/Mauritius" , 0x096D80 }, + { "Indian/Mayotte" , 0x096E7D }, + { "Indian/Reunion" , 0x096F92 }, + { "Iran" , 0x097043 }, + { "Israel" , 0x097A65 }, + { "Jamaica" , 0x0983C5 }, + { "Japan" , 0x0985B3 }, + { "Kwajalein" , 0x0986F4 }, + { "Libya" , 0x09883C }, + { "MET" , 0x098AB9 }, + { "Mexico/BajaNorte" , 0x0992F3 }, + { "Mexico/BajaSur" , 0x099C25 }, + { "Mexico/General" , 0x09A227 }, + { "MST" , 0x09A863 }, + { "MST7MDT" , 0x09A8E1 }, + { "Navajo" , 0x09B1F3 }, + { "NZ" , 0x09BB8B }, + { "NZ-CHAT" , 0x09C51C }, + { "Pacific/Apia" , 0x09CD3C }, + { "Pacific/Auckland" , 0x09CFAC }, + { "Pacific/Bougainville" , 0x09D955 }, + { "Pacific/Chatham" , 0x09DA79 }, + { "Pacific/Chuuk" , 0x09E2A8 }, + { "Pacific/Easter" , 0x09E3D0 }, + { "Pacific/Efate" , 0x09ECA2 }, + { "Pacific/Enderbury" , 0x09EEC8 }, + { "Pacific/Fakaofo" , 0x09EFBE }, + { "Pacific/Fiji" , 0x09F092 }, + { "Pacific/Funafuti" , 0x09F4B7 }, + { "Pacific/Galapagos" , 0x09F569 }, + { "Pacific/Gambier" , 0x09F674 }, + { "Pacific/Guadalcanal" , 0x09F733 }, + { "Pacific/Guam" , 0x09F7E5 }, + { "Pacific/Honolulu" , 0x09F9DF }, + { "Pacific/Johnston" , 0x09FB3A }, + { "Pacific/Kanton" , 0x09FC8F }, + { "Pacific/Kiritimati" , 0x09FD94 }, + { "Pacific/Kosrae" , 0x09FE9A }, + { "Pacific/Kwajalein" , 0x0A000B }, + { "Pacific/Majuro" , 0x0A015C }, + { "Pacific/Marquesas" , 0x0A02BB }, + { "Pacific/Midway" , 0x0A0385 }, + { "Pacific/Nauru" , 0x0A044E }, + { "Pacific/Niue" , 0x0A0556 }, + { "Pacific/Norfolk" , 0x0A062D }, + { "Pacific/Noumea" , 0x0A09A9 }, + { "Pacific/Pago_Pago" , 0x0A0AE5 }, + { "Pacific/Palau" , 0x0A0BA0 }, + { "Pacific/Pitcairn" , 0x0A0C60 }, + { "Pacific/Pohnpei" , 0x0A0D36 }, + { "Pacific/Ponape" , 0x0A0E7F }, + { "Pacific/Port_Moresby" , 0x0A0FBA }, + { "Pacific/Rarotonga" , 0x0A109D }, + { "Pacific/Saipan" , 0x0A1304 }, + { "Pacific/Samoa" , 0x0A14FE }, + { "Pacific/Tahiti" , 0x0A15B9 }, + { "Pacific/Tarawa" , 0x0A1679 }, + { "Pacific/Tongatapu" , 0x0A173A }, + { "Pacific/Truk" , 0x0A18BA }, + { "Pacific/Wake" , 0x0A19D3 }, + { "Pacific/Wallis" , 0x0A1A90 }, + { "Pacific/Yap" , 0x0A1B42 }, + { "Poland" , 0x0A1C5B }, + { "Portugal" , 0x0A26C5 }, + { "PRC" , 0x0A347A }, + { "PST8PDT" , 0x0A36B7 }, + { "ROC" , 0x0A3FC9 }, + { "ROK" , 0x0A42CE }, + { "Singapore" , 0x0A4543 }, + { "Turkey" , 0x0A46CE }, + { "UCT" , 0x0A4E75 }, + { "Universal" , 0x0A4EF3 }, + { "US/Alaska" , 0x0A4F71 }, + { "US/Aleutian" , 0x0A58C0 }, + { "US/Arizona" , 0x0A6200 }, + { "US/Central" , 0x0A6354 }, + { "US/East-Indiana" , 0x0A7158 }, + { "US/Eastern" , 0x0A77E6 }, + { "US/Hawaii" , 0x0A85C2 }, + { "US/Indiana-Starke" , 0x0A8717 }, + { "US/Michigan" , 0x0A909F }, + { "US/Mountain" , 0x0A9961 }, + { "US/Pacific" , 0x0AA2F9 }, + { "US/Samoa" , 0x0AAE19 }, + { "UTC" , 0x0AAED4 }, + { "W-SU" , 0x0AAF52 }, + { "WET" , 0x0AB55D }, + { "Zulu" , 0x0ABCDA }, }; -const unsigned char timelib_timezone_db_data_builtin[703734] = { +const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -37134,8 +37136,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x8F, 0x30, 0x47, 0x46, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC6, 0xA1, 0x00, 0x71, 0xC0, -0xB0, 0x5E, 0x77, 0xC6, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, +0x8F, 0x30, 0x47, 0x45, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC5, 0xA1, 0x00, 0x71, 0xC0, +0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD5, 0x33, 0x55, 0xC0, 0xD5, 0x76, 0x92, 0x40, 0xFD, 0xD1, 0x3C, 0x40, @@ -37170,7 +37172,7 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, +0x05, 0x06, 0x05, 0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, @@ -37179,9 +37181,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, -0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, -0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, +0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, +0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x1A, 0xD7, 0xC0, 0xFF, 0xFF, 0xFF, @@ -37244,7 +37246,7 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, +0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, @@ -38062,8 +38064,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x8F, 0x30, 0x47, 0x46, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC6, 0xA1, 0x00, 0x71, 0xC0, -0xB0, 0x5E, 0x77, 0xC6, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, +0x8F, 0x30, 0x47, 0x45, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC5, 0xA1, 0x00, 0x71, 0xC0, +0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD3, 0xDC, 0x8F, 0xC0, 0xD4, 0x1B, 0xC9, 0xB0, 0xD5, 0x33, 0x55, 0xC0, @@ -38111,8 +38113,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -38120,9 +38122,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, -0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, -0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, -0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, +0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, +0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, +0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, @@ -38209,8 +38211,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -43205,15 +43207,15 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x56, 0x29, 0x5C, 0x60, 0x56, 0xF5, 0xC2, 0xF0, 0x58, 0x13, 0xCA, 0x60, 0x58, 0xD5, 0xA4, 0xF0, 0x59, 0xF3, 0xAC, 0x60, 0x5A, 0xB5, 0x86, 0xF0, 0x5B, 0xD3, 0x8E, 0x60, 0x5C, 0x9D, 0x43, 0xE0, 0x5D, 0xB3, 0x62, 0x50, 0x5E, 0x7E, 0x77, 0x60, 0x5F, 0x93, 0x52, 0x60, 0x60, 0x5E, 0x59, 0x60, -0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3E, 0x3B, 0x60, 0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1E, 0x1D, 0x60, -0x65, 0x3A, 0xE1, 0x60, 0x66, 0x07, 0x39, 0xE0, 0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE7, 0x1B, 0xE0, -0x69, 0x03, 0xDF, 0xE0, 0x69, 0xC6, 0xFD, 0xE0, 0x6A, 0xE3, 0xC1, 0xE0, 0x6B, 0xA6, 0xDF, 0xE0, -0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x86, 0xC1, 0xE0, 0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x66, 0xA3, 0xE0, -0x70, 0x83, 0x67, 0xE0, 0x71, 0x4F, 0xC0, 0x60, 0x72, 0x63, 0x49, 0xE0, 0x73, 0x2F, 0xA2, 0x60, -0x74, 0x4C, 0x66, 0x60, 0x75, 0x0F, 0x84, 0x60, 0x76, 0x2C, 0x48, 0x60, 0x76, 0xEF, 0x66, 0x60, -0x78, 0x0C, 0x2A, 0x60, 0x78, 0xCF, 0x48, 0x60, 0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xAF, 0x2A, 0x60, -0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x98, 0x46, 0xE0, 0x7D, 0xB5, 0x0A, 0xE0, 0x7E, 0x78, 0x28, 0xE0, -0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3F, 0x8C, 0xE0, 0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1F, 0x6E, 0xE0, +0x65, 0x3A, 0xE1, 0x60, 0x66, 0x08, 0x8B, 0x60, 0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE8, 0x6D, 0x60, +0x68, 0xFA, 0xA5, 0x60, 0x69, 0xC8, 0x4F, 0x60, 0x6A, 0xDA, 0x87, 0x60, 0x6B, 0xA8, 0x31, 0x60, +0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x88, 0x13, 0x60, 0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x67, 0xF5, 0x60, +0x70, 0x83, 0x67, 0xE0, 0x71, 0x51, 0x11, 0xE0, 0x72, 0x63, 0x49, 0xE0, 0x73, 0x30, 0xF3, 0xE0, +0x74, 0x43, 0x2B, 0xE0, 0x75, 0x10, 0xD5, 0xE0, 0x76, 0x2C, 0x48, 0x60, 0x76, 0xF0, 0xB7, 0xE0, +0x78, 0x0C, 0x2A, 0x60, 0x78, 0xD0, 0x99, 0xE0, 0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xB0, 0x7B, 0xE0, +0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x99, 0x98, 0x60, 0x7D, 0xAB, 0xD0, 0x60, 0x7E, 0x79, 0x7A, 0x60, +0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, @@ -43291,22 +43293,22 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7B, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, -0x3E, 0x3B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, -0x1E, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, -0x07, 0x39, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, -0xE7, 0x1B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, 0x03, 0xDF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, -0xC6, 0xFD, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE3, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6B, -0xA6, 0xDF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, -0x86, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, -0x66, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, -0x4F, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, -0x2F, 0xA2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4C, 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x75, -0x0F, 0x84, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, -0xEF, 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, -0xCF, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, -0xAF, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, -0x98, 0x46, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB5, 0x0A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, -0x78, 0x28, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, +0x3F, 0x8C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, +0x1F, 0x6E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, +0x08, 0x8B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, +0xE8, 0x6D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFA, 0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, +0xC8, 0x4F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDA, 0x87, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, +0xA8, 0x31, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, +0x88, 0x13, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, +0x67, 0xF5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, +0x51, 0x11, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, +0x30, 0xF3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x43, 0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x75, +0x10, 0xD5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, +0xF0, 0xB7, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, +0xD0, 0x99, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, +0xB0, 0x7B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, +0x99, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAB, 0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, +0x79, 0x7A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, @@ -43323,9 +43325,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, -0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, -0x2E, 0x35, 0x2F, 0x31, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, 0x00, -0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70, +0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x34, +0x2E, 0x34, 0x2F, 0x32, 0x35, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, +0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70, /* Asia/Harbin */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -43398,15 +43400,15 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x49, 0x6C, 0x50, 0x55, 0x15, 0xD2, 0xE0, 0x56, 0x29, 0x5C, 0x60, 0x56, 0xF5, 0xC2, 0xF0, 0x58, 0x13, 0xCA, 0x60, 0x58, 0xD5, 0xA4, 0xF0, 0x59, 0xF3, 0xAC, 0x60, 0x5A, 0xB5, 0x86, 0xF0, 0x5B, 0xD3, 0x8E, 0x60, 0x5C, 0x9D, 0x43, 0xE0, 0x5D, 0xB3, 0x62, 0x50, 0x5E, 0x7E, 0x77, 0x60, -0x5F, 0x93, 0x52, 0x60, 0x60, 0x5E, 0x59, 0x60, 0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3E, 0x3B, 0x60, -0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1E, 0x1D, 0x60, 0x65, 0x3A, 0xE1, 0x60, 0x66, 0x07, 0x39, 0xE0, -0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE7, 0x1B, 0xE0, 0x69, 0x03, 0xDF, 0xE0, 0x69, 0xC6, 0xFD, 0xE0, -0x6A, 0xE3, 0xC1, 0xE0, 0x6B, 0xA6, 0xDF, 0xE0, 0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x86, 0xC1, 0xE0, -0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x66, 0xA3, 0xE0, 0x70, 0x83, 0x67, 0xE0, 0x71, 0x4F, 0xC0, 0x60, -0x72, 0x63, 0x49, 0xE0, 0x73, 0x2F, 0xA2, 0x60, 0x74, 0x4C, 0x66, 0x60, 0x75, 0x0F, 0x84, 0x60, -0x76, 0x2C, 0x48, 0x60, 0x76, 0xEF, 0x66, 0x60, 0x78, 0x0C, 0x2A, 0x60, 0x78, 0xCF, 0x48, 0x60, -0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xAF, 0x2A, 0x60, 0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x98, 0x46, 0xE0, -0x7D, 0xB5, 0x0A, 0xE0, 0x7E, 0x78, 0x28, 0xE0, 0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, +0x5F, 0x93, 0x52, 0x60, 0x60, 0x5E, 0x59, 0x60, 0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3F, 0x8C, 0xE0, +0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1F, 0x6E, 0xE0, 0x65, 0x3A, 0xE1, 0x60, 0x66, 0x08, 0x8B, 0x60, +0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE8, 0x6D, 0x60, 0x68, 0xFA, 0xA5, 0x60, 0x69, 0xC8, 0x4F, 0x60, +0x6A, 0xDA, 0x87, 0x60, 0x6B, 0xA8, 0x31, 0x60, 0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x88, 0x13, 0x60, +0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x67, 0xF5, 0x60, 0x70, 0x83, 0x67, 0xE0, 0x71, 0x51, 0x11, 0xE0, +0x72, 0x63, 0x49, 0xE0, 0x73, 0x30, 0xF3, 0xE0, 0x74, 0x43, 0x2B, 0xE0, 0x75, 0x10, 0xD5, 0xE0, +0x76, 0x2C, 0x48, 0x60, 0x76, 0xF0, 0xB7, 0xE0, 0x78, 0x0C, 0x2A, 0x60, 0x78, 0xD0, 0x99, 0xE0, +0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xB0, 0x7B, 0xE0, 0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x99, 0x98, 0x60, +0x7D, 0xAB, 0xD0, 0x60, 0x7E, 0x79, 0x7A, 0x60, 0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, @@ -43485,23 +43487,23 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x5B, 0xD3, 0x8E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, -0x00, 0x61, 0x7B, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3E, 0x3B, 0x60, 0x00, 0x00, 0x00, -0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1E, 0x1D, 0x60, 0x00, 0x00, 0x00, -0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0x07, 0x39, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE7, 0x1B, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x69, 0x03, 0xDF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC6, 0xFD, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x6A, 0xE3, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA6, 0xDF, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x86, 0xC1, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x66, 0xA3, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x4F, 0xC0, 0x60, 0x00, 0x00, 0x00, -0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x2F, 0xA2, 0x60, 0x00, 0x00, 0x00, -0x00, 0x74, 0x4C, 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x75, 0x0F, 0x84, 0x60, 0x00, 0x00, 0x00, -0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xEF, 0x66, 0x60, 0x00, 0x00, 0x00, -0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xCF, 0x48, 0x60, 0x00, 0x00, 0x00, -0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xAF, 0x2A, 0x60, 0x00, 0x00, 0x00, -0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x98, 0x46, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x7D, 0xB5, 0x0A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x78, 0x28, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x61, 0x7B, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0x8C, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x6E, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0x8B, 0x60, 0x00, 0x00, 0x00, +0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x6D, 0x60, 0x00, 0x00, 0x00, +0x00, 0x68, 0xFA, 0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x4F, 0x60, 0x00, 0x00, 0x00, +0x00, 0x6A, 0xDA, 0x87, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x31, 0x60, 0x00, 0x00, 0x00, +0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x13, 0x60, 0x00, 0x00, 0x00, +0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x67, 0xF5, 0x60, 0x00, 0x00, 0x00, +0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x11, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x30, 0xF3, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x74, 0x43, 0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x75, 0x10, 0xD5, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xB7, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0x99, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0x7B, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0x98, 0x60, 0x00, 0x00, 0x00, +0x00, 0x7D, 0xAB, 0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0x7A, 0x60, 0x00, 0x00, 0x00, +0x00, 0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, @@ -43518,9 +43520,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x34, 0x2E, 0x34, 0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x35, 0x2F, 0x31, -0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, -0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B, +0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x32, +0x35, 0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, +0x73, 0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B, /* Asia/Ho_Chi_Minh */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -52415,8 +52417,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x8F, 0x30, 0x47, 0x46, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC6, 0xA1, 0x00, 0x71, 0xC0, -0xB0, 0x5E, 0x77, 0xC6, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, +0x8F, 0x30, 0x47, 0x45, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC5, 0xA1, 0x00, 0x71, 0xC0, +0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD3, 0xDC, 0x8F, 0xC0, 0xD4, 0x1B, 0xC9, 0xB0, 0xD5, 0x33, 0x55, 0xC0, @@ -52464,8 +52466,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -52473,9 +52475,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, -0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, -0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, -0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, +0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, +0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, +0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, @@ -52562,8 +52564,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -57536,8 +57538,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Kiev */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, 0xAA, 0x19, 0xA7, 0x64, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0xCD, 0x2E, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCE, 0xCD, 0xA8, 0x70, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, @@ -57545,9 +57547,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x0B, 0xFB, 0xF0, 0x26, 0x8D, 0x20, 0xE0, 0x28, 0xE5, 0x17, 0x80, -0x29, 0xD4, 0xEC, 0x60, 0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, 0x2C, 0xA4, 0xB1, 0x50, -0x2D, 0x94, 0xB0, 0x60, 0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, -0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, +0x29, 0xD5, 0x08, 0x80, 0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, +0x2D, 0x94, 0xCC, 0x80, 0x2E, 0x84, 0xBD, 0x80, 0x2F, 0x74, 0xAE, 0x80, 0x30, 0x64, 0x9F, 0x80, +0x31, 0x5D, 0xCB, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, @@ -57569,24 +57571,25 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, -0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x0A, 0x02, 0x0A, 0x02, 0x0A, -0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, +0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0B, 0x0C, +0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, -0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30, 0x01, -0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, -0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, -0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, +0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, +0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, +0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, +0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xCD, 0x2E, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, @@ -57601,11 +57604,11 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x20, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, -0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, +0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, +0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, @@ -57649,20 +57652,21 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, -0x08, 0x09, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, +0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x4C, 0x4D, -0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, -0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, +0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, +0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, +0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, 0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, @@ -60829,16 +60833,16 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Simferopol */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, 0xAA, 0x19, 0xA4, 0x20, 0xB5, 0xA4, 0x19, 0x60, 0xCB, 0x04, 0x8D, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xCF, 0x9F, 0x38, 0xE0, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, 0x19, 0xDB, 0x43, 0x40, 0x1A, 0xCC, 0x93, 0xD0, 0x1B, 0xBC, 0xA0, 0xF0, 0x1C, 0xAC, 0x91, 0xF0, 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, -0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x29, 0xD4, 0xEC, 0x60, -0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, 0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xB0, 0x60, +0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x29, 0xD5, 0x08, 0x80, +0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, 0x2D, 0x94, 0xCC, 0x80, 0x2D, 0xC2, 0xC6, 0xD0, 0x2E, 0x84, 0x85, 0x40, 0x2F, 0x74, 0x84, 0x50, 0x30, 0x64, 0x67, 0x40, 0x31, 0x5D, 0xA0, 0xD0, 0x32, 0x72, 0xA6, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, @@ -60851,73 +60855,74 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x5E, 0x80, 0x54, 0x4C, 0x1D, 0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, -0x08, 0x09, 0x08, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0D, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x00, +0x08, 0x09, 0x08, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, 0x0C, +0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, +0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, +0x0D, 0x0E, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, -0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, -0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, -0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, -0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x4B, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC4, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA4, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, -0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x04, 0x8D, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, -0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, -0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x9F, 0x38, -0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, -0x40, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, -0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, -0x40, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, -0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, -0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, -0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, -0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, 0x50, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x67, -0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, -0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, -0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, -0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, -0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, -0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, -0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, -0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, -0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, -0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, -0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, -0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, -0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, -0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, -0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, -0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, -0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, -0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, -0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x5E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x1D, -0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, -0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x02, 0x0A, 0x02, 0x0A, -0x02, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x08, 0x00, 0x00, 0x1F, 0xF8, -0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, -0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, -0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, -0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, -0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, -0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, -0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, +0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, +0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x01, 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, 0x10, 0x00, 0x00, 0x00, +0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, +0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC4, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA4, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x04, 0x8D, +0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, +0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, +0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x9F, 0x38, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, +0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, +0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, +0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, +0x50, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x67, 0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, +0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, +0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, +0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, +0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, +0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, +0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, +0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, +0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, +0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, +0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, +0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, +0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, +0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, +0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, +0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, +0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, +0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x5E, +0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x1D, 0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, +0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x09, 0x08, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, +0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, +0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, +0x0C, 0x0D, 0x0E, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, +0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, +0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, +0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, +0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, +0x2A, 0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, +0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, +0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x0A, 0x4D, 0x53, 0x4B, 0x2D, 0x33, 0x0A, 0x00, 0xCD, 0xEA, 0xD7, 0x01, 0x46, 0xB0, 0xD0, 0x00, 0x00, 0x00, 0x06, 0x43, 0x72, 0x69, 0x6D, 0x65, 0x61, @@ -61811,17 +61816,17 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Uzhgorod */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x00, 0xC8, 0x09, 0x71, 0x90, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0xA1, 0x9E, 0xE0, 0xD1, 0xE5, 0xFD, 0xF0, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, 0x19, 0xDB, 0x43, 0x40, 0x1A, 0xCC, 0x93, 0xD0, 0x1B, 0xBC, 0xA0, 0xF0, 0x1C, 0xAC, 0x91, 0xF0, 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, -0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x27, 0xF5, 0x42, 0xA0, 0x29, 0xD4, 0xEC, 0x60, -0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, 0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xB0, 0x60, -0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x27, 0xF5, 0x42, 0xA0, 0x29, 0xD5, 0x08, 0x80, +0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, 0x2D, 0x94, 0xCC, 0x80, +0x2E, 0x84, 0xBD, 0x80, 0x2F, 0x74, 0xAE, 0x80, 0x30, 0x64, 0x9F, 0x80, 0x31, 0x5D, 0xCB, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, @@ -61844,98 +61849,99 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x01, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x01, 0x08, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, +0x09, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x4C, 0x4D, 0x54, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, +0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, +0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, +0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0x6A, 0xEE, 0xB0, 0x18, 0xFF, 0xFF, +0xFF, 0xFF, 0xC8, 0x09, 0x71, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, +0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, +0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0xA1, 0x9E, 0xE0, 0xFF, 0xFF, +0xFF, 0xFF, 0xD1, 0xE5, 0xFD, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, +0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x27, 0xF5, 0x42, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, +0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, +0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, +0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, +0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, +0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, +0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, +0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, +0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, +0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, +0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, +0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, +0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, +0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, +0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, +0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, +0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, +0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, +0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, +0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, +0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, +0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, +0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, +0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, +0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, +0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, +0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, +0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, +0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, +0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, +0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, +0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, +0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, +0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, +0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, +0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, +0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, +0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, +0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, +0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, +0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, +0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x05, 0x04, 0x05, +0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x01, 0x08, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x00, 0x00, +0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, +0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, +0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFF, -0xFF, 0xFF, 0x6A, 0xEE, 0xB0, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x09, 0x71, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xD0, 0xA1, 0x9E, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xE5, 0xFD, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, 0x00, -0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, 0x00, -0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, 0x00, -0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x42, 0xA0, 0x00, 0x00, -0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, -0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, -0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, -0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, -0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, -0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, -0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, -0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, -0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, -0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, -0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, -0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, -0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, -0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, -0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, -0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, -0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, -0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, -0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, -0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, -0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, -0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, -0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, -0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, -0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, -0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, -0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, -0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, -0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, -0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, -0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, -0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, -0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, -0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, -0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, -0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, -0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, -0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, -0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, -0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, -0x03, 0x02, 0x03, 0x02, 0x01, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x01, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, -0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, -0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x4C, 0x4D, -0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, -0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, -0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD3, 0x83, 0x22, 0x01, 0x34, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x54, 0x72, @@ -62882,8 +62888,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Zaporozhye */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x24, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x24, 0x80, 0x00, 0x00, 0x00, 0xAA, 0x19, 0xA3, 0x30, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0xAA, 0xE7, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCE, 0xBD, 0xD6, 0x70, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, @@ -62891,9 +62897,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x0B, 0xFB, 0xF0, 0x27, 0x05, 0x27, 0x70, 0x27, 0xF5, 0x18, 0x70, -0x28, 0xE4, 0xED, 0x50, 0x29, 0xD4, 0xEC, 0x60, 0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, -0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xB0, 0x60, 0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0xBC, 0x90, -0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, +0x28, 0xE4, 0xED, 0x50, 0x29, 0xD5, 0x08, 0x80, 0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, +0x2C, 0xA4, 0xDB, 0x80, 0x2D, 0x94, 0xCC, 0x80, 0x2E, 0x84, 0xBD, 0x80, 0x2F, 0x74, 0xAE, 0x80, +0x30, 0x64, 0x9F, 0x80, 0x31, 0x5D, 0xCB, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, @@ -62916,24 +62922,25 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x00, 0x00, +0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, -0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x1C, 0x20, +0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, +0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, +0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, -0x00, 0x0D, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC3, 0x08, 0xFF, 0xFF, +0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, +0x00, 0x0F, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC3, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA3, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xAA, 0xE7, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, @@ -62948,11 +62955,11 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x27, 0x70, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x18, 0x70, 0x00, 0x00, -0x00, 0x00, 0x28, 0xE4, 0xED, 0x50, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, -0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, -0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, -0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, -0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, +0x00, 0x00, 0x28, 0xE4, 0xED, 0x50, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, +0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, @@ -62996,20 +63003,21 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, +0x09, 0x08, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x1F, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, -0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, -0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, +0x01, 0x1F, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, +0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, +0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD2, 0x51, 0x25, 0x01, 0x48, @@ -69555,4 +69563,4 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { }; #endif -const timelib_tzdb timezonedb_builtin = { "2021.5", 595, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; +const timelib_tzdb timezonedb_builtin = { "2022.1", 595, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; From a4f4b96c9177d712b86e3aa6da1b0e91a91e5275 Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Thu, 7 Apr 2022 10:45:21 +0100 Subject: [PATCH 47/63] Updated to version 2022.1 (2022a) --- ext/date/lib/timezonedb.h | 2136 +++++++++++++++++++------------------ 1 file changed, 1072 insertions(+), 1064 deletions(-) diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h index 411ef5b44254e..60cc4b3ab6cc9 100644 --- a/ext/date/lib/timezonedb.h +++ b/ext/date/lib/timezonedb.h @@ -270,340 +270,340 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[595] = { { "Asia/Dushanbe" , 0x0247C2 }, { "Asia/Famagusta" , 0x02493C }, { "Asia/Gaza" , 0x024D03 }, - { "Asia/Harbin" , 0x0251E7 }, - { "Asia/Hebron" , 0x02537C }, - { "Asia/Ho_Chi_Minh" , 0x025871 }, - { "Asia/Hong_Kong" , 0x025969 }, - { "Asia/Hovd" , 0x025C7C }, - { "Asia/Irkutsk" , 0x025F05 }, - { "Asia/Istanbul" , 0x026223 }, - { "Asia/Jakarta" , 0x0266DF }, - { "Asia/Jayapura" , 0x0267F0 }, - { "Asia/Jerusalem" , 0x0268DD }, - { "Asia/Kabul" , 0x026D1B }, - { "Asia/Kamchatka" , 0x026DC6 }, - { "Asia/Karachi" , 0x0270BB }, - { "Asia/Kashgar" , 0x0271D1 }, - { "Asia/Kathmandu" , 0x027262 }, - { "Asia/Katmandu" , 0x02730F }, - { "Asia/Khandyga" , 0x0273BC }, - { "Asia/Kolkata" , 0x0276ED }, - { "Asia/Krasnoyarsk" , 0x0277D5 }, - { "Asia/Kuala_Lumpur" , 0x027ADF }, - { "Asia/Kuching" , 0x027BFF }, - { "Asia/Kuwait" , 0x027D59 }, - { "Asia/Macao" , 0x027DEA }, - { "Asia/Macau" , 0x02810D }, - { "Asia/Magadan" , 0x028430 }, - { "Asia/Makassar" , 0x02873B }, - { "Asia/Manila" , 0x02884E }, - { "Asia/Muscat" , 0x028948 }, - { "Asia/Nicosia" , 0x0289D9 }, - { "Asia/Novokuznetsk" , 0x028C4D }, - { "Asia/Novosibirsk" , 0x028F40 }, - { "Asia/Omsk" , 0x029251 }, - { "Asia/Oral" , 0x02954F }, - { "Asia/Phnom_Penh" , 0x0297DB }, - { "Asia/Pontianak" , 0x02987F }, - { "Asia/Pyongyang" , 0x029998 }, - { "Asia/Qatar" , 0x029A5B }, - { "Asia/Qostanay" , 0x029AFF }, - { "Asia/Qyzylorda" , 0x029D8C }, - { "Asia/Rangoon" , 0x02A025 }, - { "Asia/Riyadh" , 0x02A0EC }, - { "Asia/Saigon" , 0x02A17D }, - { "Asia/Sakhalin" , 0x02A275 }, - { "Asia/Samarkand" , 0x02A58C }, - { "Asia/Seoul" , 0x02A717 }, - { "Asia/Shanghai" , 0x02A8C2 }, - { "Asia/Singapore" , 0x02AA63 }, - { "Asia/Srednekolymsk" , 0x02AB6F }, - { "Asia/Taipei" , 0x02AE83 }, - { "Asia/Tashkent" , 0x02B08E }, - { "Asia/Tbilisi" , 0x02B219 }, - { "Asia/Tehran" , 0x02B49A }, - { "Asia/Tel_Aviv" , 0x02BC7A }, - { "Asia/Thimbu" , 0x02C0B8 }, - { "Asia/Thimphu" , 0x02C15E }, - { "Asia/Tokyo" , 0x02C204 }, - { "Asia/Tomsk" , 0x02C2E5 }, - { "Asia/Ujung_Pandang" , 0x02C5F0 }, - { "Asia/Ulaanbaatar" , 0x02C6BA }, - { "Asia/Ulan_Bator" , 0x02C92D }, - { "Asia/Urumqi" , 0x02CB8B }, - { "Asia/Ust-Nera" , 0x02CC29 }, - { "Asia/Vientiane" , 0x02CF4C }, - { "Asia/Vladivostok" , 0x02CFF0 }, - { "Asia/Yakutsk" , 0x02D2F5 }, - { "Asia/Yangon" , 0x02D5F9 }, - { "Asia/Yekaterinburg" , 0x02D6C0 }, - { "Asia/Yerevan" , 0x02D9D2 }, - { "Atlantic/Azores" , 0x02DCA2 }, - { "Atlantic/Bermuda" , 0x02E261 }, - { "Atlantic/Canary" , 0x02E66D }, - { "Atlantic/Cape_Verde" , 0x02E865 }, - { "Atlantic/Faeroe" , 0x02E920 }, - { "Atlantic/Faroe" , 0x02EAE5 }, - { "Atlantic/Jan_Mayen" , 0x02ECAA }, - { "Atlantic/Madeira" , 0x02EF5A }, - { "Atlantic/Reykjavik" , 0x02F522 }, - { "Atlantic/South_Georgia" , 0x02F81F }, - { "Atlantic/St_Helena" , 0x02F8AF }, - { "Atlantic/Stanley" , 0x02F93D }, - { "Australia/ACT" , 0x02FC5E }, - { "Australia/Adelaide" , 0x02FFF2 }, - { "Australia/Brisbane" , 0x0303A6 }, - { "Australia/Broken_Hill" , 0x0304EA }, - { "Australia/Canberra" , 0x0308BF }, - { "Australia/Currie" , 0x030C53 }, - { "Australia/Darwin" , 0x03104A }, - { "Australia/Eucla" , 0x031152 }, - { "Australia/Hobart" , 0x0312B1 }, - { "Australia/LHI" , 0x0316B0 }, - { "Australia/Lindeman" , 0x031970 }, - { "Australia/Lord_Howe" , 0x031AE0 }, - { "Australia/Melbourne" , 0x031DB0 }, - { "Australia/North" , 0x03214C }, - { "Australia/NSW" , 0x032242 }, - { "Australia/Perth" , 0x0325D6 }, - { "Australia/Queensland" , 0x032732 }, - { "Australia/South" , 0x03285F }, - { "Australia/Sydney" , 0x032C04 }, - { "Australia/Tasmania" , 0x032FB4 }, - { "Australia/Victoria" , 0x0333AB }, - { "Australia/West" , 0x03373F }, - { "Australia/Yancowinna" , 0x03387D }, - { "Brazil/Acre" , 0x033C36 }, - { "Brazil/DeNoronha" , 0x033DE4 }, - { "Brazil/East" , 0x033FD4 }, - { "Brazil/West" , 0x034398 }, - { "Canada/Atlantic" , 0x034540 }, - { "Canada/Central" , 0x034BD4 }, - { "Canada/Eastern" , 0x0350EE }, - { "Canada/Mountain" , 0x0357AF }, - { "Canada/Newfoundland" , 0x035B85 }, - { "Canada/Pacific" , 0x0362E7 }, - { "Canada/Saskatchewan" , 0x036825 }, - { "Canada/Yukon" , 0x036AAF }, - { "CET" , 0x036EC0 }, - { "Chile/Continental" , 0x037139 }, - { "Chile/EasterIsland" , 0x037647 }, - { "CST6CDT" , 0x037AA1 }, - { "Cuba" , 0x037E64 }, - { "EET" , 0x0382CD }, - { "Egypt" , 0x0384CA }, - { "Eire" , 0x0389D2 }, - { "EST" , 0x038FB6 }, - { "EST5EDT" , 0x039031 }, - { "Etc/GMT" , 0x0393F4 }, - { "Etc/GMT+0" , 0x03946F }, - { "Etc/GMT+1" , 0x0394EA }, - { "Etc/GMT+10" , 0x039567 }, - { "Etc/GMT+11" , 0x0395E5 }, - { "Etc/GMT+12" , 0x039663 }, - { "Etc/GMT+2" , 0x0396E1 }, - { "Etc/GMT+3" , 0x03975E }, - { "Etc/GMT+4" , 0x0397DB }, - { "Etc/GMT+5" , 0x039858 }, - { "Etc/GMT+6" , 0x0398D5 }, - { "Etc/GMT+7" , 0x039952 }, - { "Etc/GMT+8" , 0x0399CF }, - { "Etc/GMT+9" , 0x039A4C }, - { "Etc/GMT-0" , 0x039AC9 }, - { "Etc/GMT-1" , 0x039B44 }, - { "Etc/GMT-10" , 0x039BC2 }, - { "Etc/GMT-11" , 0x039C41 }, - { "Etc/GMT-12" , 0x039CC0 }, - { "Etc/GMT-13" , 0x039D3F }, - { "Etc/GMT-14" , 0x039DBE }, - { "Etc/GMT-2" , 0x039E3D }, - { "Etc/GMT-3" , 0x039EBB }, - { "Etc/GMT-4" , 0x039F39 }, - { "Etc/GMT-5" , 0x039FB7 }, - { "Etc/GMT-6" , 0x03A035 }, - { "Etc/GMT-7" , 0x03A0B3 }, - { "Etc/GMT-8" , 0x03A131 }, - { "Etc/GMT-9" , 0x03A1AF }, - { "Etc/GMT0" , 0x03A22D }, - { "Etc/Greenwich" , 0x03A2A8 }, - { "Etc/UCT" , 0x03A323 }, - { "Etc/Universal" , 0x03A39E }, - { "Etc/UTC" , 0x03A419 }, - { "Etc/Zulu" , 0x03A494 }, - { "Europe/Amsterdam" , 0x03A50F }, - { "Europe/Andorra" , 0x03A94A }, - { "Europe/Astrakhan" , 0x03AADB }, - { "Europe/Athens" , 0x03ADCF }, - { "Europe/Belfast" , 0x03B085 }, - { "Europe/Belgrade" , 0x03B6D0 }, - { "Europe/Berlin" , 0x03B8BA }, - { "Europe/Bratislava" , 0x03BB9B }, - { "Europe/Brussels" , 0x03BE7A }, - { "Europe/Bucharest" , 0x03C2D5 }, - { "Europe/Budapest" , 0x03C576 }, - { "Europe/Busingen" , 0x03C880 }, - { "Europe/Chisinau" , 0x03CA85 }, - { "Europe/Copenhagen" , 0x03CD84 }, - { "Europe/Dublin" , 0x03CFFF }, - { "Europe/Gibraltar" , 0x03D5E3 }, - { "Europe/Guernsey" , 0x03DAB3 }, - { "Europe/Helsinki" , 0x03E0FE }, - { "Europe/Isle_of_Man" , 0x03E2EB }, - { "Europe/Istanbul" , 0x03E936 }, - { "Europe/Jersey" , 0x03EDF2 }, - { "Europe/Kaliningrad" , 0x03F43D }, - { "Europe/Kiev" , 0x03F7E5 }, - { "Europe/Kirov" , 0x03FA2A }, - { "Europe/Lisbon" , 0x03FD11 }, - { "Europe/Ljubljana" , 0x0402DE }, - { "Europe/London" , 0x0404C8 }, - { "Europe/Luxembourg" , 0x040B13 }, - { "Europe/Madrid" , 0x040F5E }, - { "Europe/Malta" , 0x0412FB }, - { "Europe/Mariehamn" , 0x0416A7 }, - { "Europe/Minsk" , 0x041894 }, - { "Europe/Monaco" , 0x041BC8 }, - { "Europe/Moscow" , 0x04202E }, - { "Europe/Nicosia" , 0x0423DA }, - { "Europe/Oslo" , 0x04263B }, - { "Europe/Paris" , 0x0428EB }, - { "Europe/Podgorica" , 0x042D48 }, - { "Europe/Prague" , 0x042F32 }, - { "Europe/Riga" , 0x043211 }, - { "Europe/Rome" , 0x0434D3 }, - { "Europe/Samara" , 0x043892 }, - { "Europe/San_Marino" , 0x043B93 }, - { "Europe/Sarajevo" , 0x043F52 }, - { "Europe/Saratov" , 0x04413C }, - { "Europe/Simferopol" , 0x04442E }, - { "Europe/Skopje" , 0x0447A1 }, - { "Europe/Sofia" , 0x04498B }, - { "Europe/Stockholm" , 0x044BE7 }, - { "Europe/Tallinn" , 0x044DE4 }, - { "Europe/Tirane" , 0x045093 }, - { "Europe/Tiraspol" , 0x0452FB }, - { "Europe/Ulyanovsk" , 0x0455FA }, - { "Europe/Uzhgorod" , 0x045910 }, - { "Europe/Vaduz" , 0x045B3C }, - { "Europe/Vatican" , 0x045D39 }, - { "Europe/Vienna" , 0x0460F8 }, - { "Europe/Vilnius" , 0x046396 }, - { "Europe/Volgograd" , 0x046646 }, - { "Europe/Warsaw" , 0x046943 }, - { "Europe/Zagreb" , 0x046CEA }, - { "Europe/Zaporozhye" , 0x046ED4 }, - { "Europe/Zurich" , 0x04712B }, - { "Factory" , 0x047328 }, - { "GB" , 0x0473A5 }, - { "GB-Eire" , 0x0479F0 }, - { "GMT" , 0x04803B }, - { "GMT+0" , 0x0480B6 }, - { "GMT-0" , 0x048131 }, - { "GMT0" , 0x0481AC }, - { "Greenwich" , 0x048227 }, - { "Hongkong" , 0x0482A2 }, - { "HST" , 0x0485B5 }, - { "Iceland" , 0x048631 }, - { "Indian/Antananarivo" , 0x04892E }, - { "Indian/Chagos" , 0x0489F9 }, - { "Indian/Christmas" , 0x048A9D }, - { "Indian/Cocos" , 0x048B2E }, - { "Indian/Comoro" , 0x048BC6 }, - { "Indian/Kerguelen" , 0x048C91 }, - { "Indian/Mahe" , 0x048D22 }, - { "Indian/Maldives" , 0x048DB3 }, - { "Indian/Mauritius" , 0x048E57 }, - { "Indian/Mayotte" , 0x048F16 }, - { "Indian/Reunion" , 0x048FE1 }, - { "Iran" , 0x049072 }, - { "Israel" , 0x049852 }, - { "Jamaica" , 0x049C90 }, - { "Japan" , 0x049DEF }, - { "Kwajalein" , 0x049ED0 }, - { "Libya" , 0x049FB7 }, - { "MET" , 0x04A172 }, - { "Mexico/BajaNorte" , 0x04A3EB }, - { "Mexico/BajaSur" , 0x04A7F8 }, - { "Mexico/General" , 0x04A973 }, - { "MST" , 0x04AB1B }, - { "MST7MDT" , 0x04AB96 }, - { "Navajo" , 0x04AF59 }, - { "NZ" , 0x04B377 }, - { "NZ-CHAT" , 0x04B796 }, - { "Pacific/Apia" , 0x04BACA }, - { "Pacific/Auckland" , 0x04BC6D }, - { "Pacific/Bougainville" , 0x04C0A4 }, - { "Pacific/Chatham" , 0x04C185 }, - { "Pacific/Chuuk" , 0x04C4C8 }, - { "Pacific/Easter" , 0x04C5A6 }, - { "Pacific/Efate" , 0x04CA0D }, - { "Pacific/Enderbury" , 0x04CB6F }, - { "Pacific/Fakaofo" , 0x04CC27 }, - { "Pacific/Fiji" , 0x04CCCC }, - { "Pacific/Funafuti" , 0x04CE84 }, - { "Pacific/Galapagos" , 0x04CF16 }, - { "Pacific/Gambier" , 0x04CFE2 }, - { "Pacific/Guadalcanal" , 0x04D081 }, - { "Pacific/Guam" , 0x04D113 }, - { "Pacific/Honolulu" , 0x04D27D }, - { "Pacific/Johnston" , 0x04D36C }, - { "Pacific/Kanton" , 0x04D455 }, - { "Pacific/Kiritimati" , 0x04D51C }, - { "Pacific/Kosrae" , 0x04D5E2 }, - { "Pacific/Kwajalein" , 0x04D6E6 }, - { "Pacific/Majuro" , 0x04D7D6 }, - { "Pacific/Marquesas" , 0x04D8D9 }, - { "Pacific/Midway" , 0x04D981 }, - { "Pacific/Nauru" , 0x04DA2D }, - { "Pacific/Niue" , 0x04DAF0 }, - { "Pacific/Norfolk" , 0x04DB96 }, - { "Pacific/Noumea" , 0x04DC99 }, - { "Pacific/Pago_Pago" , 0x04DD6B }, - { "Pacific/Palau" , 0x04DE09 }, - { "Pacific/Pitcairn" , 0x04DEA9 }, - { "Pacific/Pohnpei" , 0x04DF4E }, - { "Pacific/Ponape" , 0x04E03E }, - { "Pacific/Port_Moresby" , 0x04E120 }, - { "Pacific/Rarotonga" , 0x04E1E3 }, - { "Pacific/Saipan" , 0x04E385 }, - { "Pacific/Samoa" , 0x04E4EF }, - { "Pacific/Tahiti" , 0x04E58D }, - { "Pacific/Tarawa" , 0x04E62D }, - { "Pacific/Tongatapu" , 0x04E6CE }, - { "Pacific/Truk" , 0x04E7C7 }, - { "Pacific/Wake" , 0x04E896 }, - { "Pacific/Wallis" , 0x04E933 }, - { "Pacific/Yap" , 0x04E9C5 }, - { "Poland" , 0x04EA94 }, - { "Portugal" , 0x04EE3B }, - { "PRC" , 0x04F3F5 }, - { "PST8PDT" , 0x04F58A }, - { "ROC" , 0x04F94D }, - { "ROK" , 0x04FB58 }, - { "Singapore" , 0x04FD03 }, - { "Turkey" , 0x04FE0F }, - { "UCT" , 0x0502CB }, - { "Universal" , 0x050346 }, - { "US/Alaska" , 0x0503C1 }, - { "US/Aleutian" , 0x05079E }, - { "US/Arizona" , 0x050B73 }, - { "US/Central" , 0x050C6F }, - { "US/East-Indiana" , 0x051355 }, - { "US/Eastern" , 0x051574 }, - { "US/Hawaii" , 0x051C50 }, - { "US/Indiana-Starke" , 0x051D39 }, - { "US/Michigan" , 0x05213D }, - { "US/Mountain" , 0x0524CC }, - { "US/Pacific" , 0x0528EA }, - { "US/Samoa" , 0x052E04 }, - { "UTC" , 0x052EA2 }, - { "W-SU" , 0x052F1D }, - { "WET" , 0x0532B5 }, - { "Zulu" , 0x0534AF }, + { "Asia/Harbin" , 0x0251F1 }, + { "Asia/Hebron" , 0x025386 }, + { "Asia/Ho_Chi_Minh" , 0x025885 }, + { "Asia/Hong_Kong" , 0x02597D }, + { "Asia/Hovd" , 0x025C90 }, + { "Asia/Irkutsk" , 0x025F19 }, + { "Asia/Istanbul" , 0x026237 }, + { "Asia/Jakarta" , 0x0266F3 }, + { "Asia/Jayapura" , 0x026804 }, + { "Asia/Jerusalem" , 0x0268F1 }, + { "Asia/Kabul" , 0x026D2F }, + { "Asia/Kamchatka" , 0x026DDA }, + { "Asia/Karachi" , 0x0270CF }, + { "Asia/Kashgar" , 0x0271E5 }, + { "Asia/Kathmandu" , 0x027276 }, + { "Asia/Katmandu" , 0x027323 }, + { "Asia/Khandyga" , 0x0273D0 }, + { "Asia/Kolkata" , 0x027701 }, + { "Asia/Krasnoyarsk" , 0x0277E9 }, + { "Asia/Kuala_Lumpur" , 0x027AF3 }, + { "Asia/Kuching" , 0x027C13 }, + { "Asia/Kuwait" , 0x027D6D }, + { "Asia/Macao" , 0x027DFE }, + { "Asia/Macau" , 0x028121 }, + { "Asia/Magadan" , 0x028444 }, + { "Asia/Makassar" , 0x02874F }, + { "Asia/Manila" , 0x028862 }, + { "Asia/Muscat" , 0x02895C }, + { "Asia/Nicosia" , 0x0289ED }, + { "Asia/Novokuznetsk" , 0x028C61 }, + { "Asia/Novosibirsk" , 0x028F54 }, + { "Asia/Omsk" , 0x029265 }, + { "Asia/Oral" , 0x029563 }, + { "Asia/Phnom_Penh" , 0x0297EF }, + { "Asia/Pontianak" , 0x029893 }, + { "Asia/Pyongyang" , 0x0299AC }, + { "Asia/Qatar" , 0x029A6F }, + { "Asia/Qostanay" , 0x029B13 }, + { "Asia/Qyzylorda" , 0x029DA0 }, + { "Asia/Rangoon" , 0x02A039 }, + { "Asia/Riyadh" , 0x02A100 }, + { "Asia/Saigon" , 0x02A191 }, + { "Asia/Sakhalin" , 0x02A289 }, + { "Asia/Samarkand" , 0x02A5A0 }, + { "Asia/Seoul" , 0x02A72B }, + { "Asia/Shanghai" , 0x02A8D6 }, + { "Asia/Singapore" , 0x02AA77 }, + { "Asia/Srednekolymsk" , 0x02AB83 }, + { "Asia/Taipei" , 0x02AE97 }, + { "Asia/Tashkent" , 0x02B0A2 }, + { "Asia/Tbilisi" , 0x02B22D }, + { "Asia/Tehran" , 0x02B4AE }, + { "Asia/Tel_Aviv" , 0x02BC8E }, + { "Asia/Thimbu" , 0x02C0CC }, + { "Asia/Thimphu" , 0x02C172 }, + { "Asia/Tokyo" , 0x02C218 }, + { "Asia/Tomsk" , 0x02C2F9 }, + { "Asia/Ujung_Pandang" , 0x02C604 }, + { "Asia/Ulaanbaatar" , 0x02C6CE }, + { "Asia/Ulan_Bator" , 0x02C941 }, + { "Asia/Urumqi" , 0x02CB9F }, + { "Asia/Ust-Nera" , 0x02CC3D }, + { "Asia/Vientiane" , 0x02CF60 }, + { "Asia/Vladivostok" , 0x02D004 }, + { "Asia/Yakutsk" , 0x02D309 }, + { "Asia/Yangon" , 0x02D60D }, + { "Asia/Yekaterinburg" , 0x02D6D4 }, + { "Asia/Yerevan" , 0x02D9E6 }, + { "Atlantic/Azores" , 0x02DCB6 }, + { "Atlantic/Bermuda" , 0x02E275 }, + { "Atlantic/Canary" , 0x02E681 }, + { "Atlantic/Cape_Verde" , 0x02E879 }, + { "Atlantic/Faeroe" , 0x02E934 }, + { "Atlantic/Faroe" , 0x02EAF9 }, + { "Atlantic/Jan_Mayen" , 0x02ECBE }, + { "Atlantic/Madeira" , 0x02EF6E }, + { "Atlantic/Reykjavik" , 0x02F536 }, + { "Atlantic/South_Georgia" , 0x02F833 }, + { "Atlantic/St_Helena" , 0x02F8C3 }, + { "Atlantic/Stanley" , 0x02F951 }, + { "Australia/ACT" , 0x02FC72 }, + { "Australia/Adelaide" , 0x030006 }, + { "Australia/Brisbane" , 0x0303BA }, + { "Australia/Broken_Hill" , 0x0304FE }, + { "Australia/Canberra" , 0x0308D3 }, + { "Australia/Currie" , 0x030C67 }, + { "Australia/Darwin" , 0x03105E }, + { "Australia/Eucla" , 0x031166 }, + { "Australia/Hobart" , 0x0312C5 }, + { "Australia/LHI" , 0x0316C4 }, + { "Australia/Lindeman" , 0x031984 }, + { "Australia/Lord_Howe" , 0x031AF4 }, + { "Australia/Melbourne" , 0x031DC4 }, + { "Australia/North" , 0x032160 }, + { "Australia/NSW" , 0x032256 }, + { "Australia/Perth" , 0x0325EA }, + { "Australia/Queensland" , 0x032746 }, + { "Australia/South" , 0x032873 }, + { "Australia/Sydney" , 0x032C18 }, + { "Australia/Tasmania" , 0x032FC8 }, + { "Australia/Victoria" , 0x0333BF }, + { "Australia/West" , 0x033753 }, + { "Australia/Yancowinna" , 0x033891 }, + { "Brazil/Acre" , 0x033C4A }, + { "Brazil/DeNoronha" , 0x033DF8 }, + { "Brazil/East" , 0x033FE8 }, + { "Brazil/West" , 0x0343AC }, + { "Canada/Atlantic" , 0x034554 }, + { "Canada/Central" , 0x034BE8 }, + { "Canada/Eastern" , 0x035102 }, + { "Canada/Mountain" , 0x0357C3 }, + { "Canada/Newfoundland" , 0x035B99 }, + { "Canada/Pacific" , 0x0362FB }, + { "Canada/Saskatchewan" , 0x036839 }, + { "Canada/Yukon" , 0x036AC3 }, + { "CET" , 0x036ED4 }, + { "Chile/Continental" , 0x03714D }, + { "Chile/EasterIsland" , 0x03765B }, + { "CST6CDT" , 0x037AB5 }, + { "Cuba" , 0x037E78 }, + { "EET" , 0x0382E1 }, + { "Egypt" , 0x0384DE }, + { "Eire" , 0x0389E6 }, + { "EST" , 0x038FCA }, + { "EST5EDT" , 0x039045 }, + { "Etc/GMT" , 0x039408 }, + { "Etc/GMT+0" , 0x039483 }, + { "Etc/GMT+1" , 0x0394FE }, + { "Etc/GMT+10" , 0x03957B }, + { "Etc/GMT+11" , 0x0395F9 }, + { "Etc/GMT+12" , 0x039677 }, + { "Etc/GMT+2" , 0x0396F5 }, + { "Etc/GMT+3" , 0x039772 }, + { "Etc/GMT+4" , 0x0397EF }, + { "Etc/GMT+5" , 0x03986C }, + { "Etc/GMT+6" , 0x0398E9 }, + { "Etc/GMT+7" , 0x039966 }, + { "Etc/GMT+8" , 0x0399E3 }, + { "Etc/GMT+9" , 0x039A60 }, + { "Etc/GMT-0" , 0x039ADD }, + { "Etc/GMT-1" , 0x039B58 }, + { "Etc/GMT-10" , 0x039BD6 }, + { "Etc/GMT-11" , 0x039C55 }, + { "Etc/GMT-12" , 0x039CD4 }, + { "Etc/GMT-13" , 0x039D53 }, + { "Etc/GMT-14" , 0x039DD2 }, + { "Etc/GMT-2" , 0x039E51 }, + { "Etc/GMT-3" , 0x039ECF }, + { "Etc/GMT-4" , 0x039F4D }, + { "Etc/GMT-5" , 0x039FCB }, + { "Etc/GMT-6" , 0x03A049 }, + { "Etc/GMT-7" , 0x03A0C7 }, + { "Etc/GMT-8" , 0x03A145 }, + { "Etc/GMT-9" , 0x03A1C3 }, + { "Etc/GMT0" , 0x03A241 }, + { "Etc/Greenwich" , 0x03A2BC }, + { "Etc/UCT" , 0x03A337 }, + { "Etc/Universal" , 0x03A3B2 }, + { "Etc/UTC" , 0x03A42D }, + { "Etc/Zulu" , 0x03A4A8 }, + { "Europe/Amsterdam" , 0x03A523 }, + { "Europe/Andorra" , 0x03A95E }, + { "Europe/Astrakhan" , 0x03AAEF }, + { "Europe/Athens" , 0x03ADE3 }, + { "Europe/Belfast" , 0x03B099 }, + { "Europe/Belgrade" , 0x03B6E4 }, + { "Europe/Berlin" , 0x03B8CE }, + { "Europe/Bratislava" , 0x03BBAF }, + { "Europe/Brussels" , 0x03BE8E }, + { "Europe/Bucharest" , 0x03C2E9 }, + { "Europe/Budapest" , 0x03C58A }, + { "Europe/Busingen" , 0x03C894 }, + { "Europe/Chisinau" , 0x03CA99 }, + { "Europe/Copenhagen" , 0x03CD98 }, + { "Europe/Dublin" , 0x03D013 }, + { "Europe/Gibraltar" , 0x03D5F7 }, + { "Europe/Guernsey" , 0x03DAC7 }, + { "Europe/Helsinki" , 0x03E112 }, + { "Europe/Isle_of_Man" , 0x03E2FF }, + { "Europe/Istanbul" , 0x03E94A }, + { "Europe/Jersey" , 0x03EE06 }, + { "Europe/Kaliningrad" , 0x03F451 }, + { "Europe/Kiev" , 0x03F7F9 }, + { "Europe/Kirov" , 0x03FA47 }, + { "Europe/Lisbon" , 0x03FD2E }, + { "Europe/Ljubljana" , 0x0402FB }, + { "Europe/London" , 0x0404E5 }, + { "Europe/Luxembourg" , 0x040B30 }, + { "Europe/Madrid" , 0x040F7B }, + { "Europe/Malta" , 0x041318 }, + { "Europe/Mariehamn" , 0x0416C4 }, + { "Europe/Minsk" , 0x0418B1 }, + { "Europe/Monaco" , 0x041BE5 }, + { "Europe/Moscow" , 0x04204B }, + { "Europe/Nicosia" , 0x0423F7 }, + { "Europe/Oslo" , 0x042658 }, + { "Europe/Paris" , 0x042908 }, + { "Europe/Podgorica" , 0x042D65 }, + { "Europe/Prague" , 0x042F4F }, + { "Europe/Riga" , 0x04322E }, + { "Europe/Rome" , 0x0434F0 }, + { "Europe/Samara" , 0x0438AF }, + { "Europe/San_Marino" , 0x043BB0 }, + { "Europe/Sarajevo" , 0x043F6F }, + { "Europe/Saratov" , 0x044159 }, + { "Europe/Simferopol" , 0x04444B }, + { "Europe/Skopje" , 0x0447BE }, + { "Europe/Sofia" , 0x0449A8 }, + { "Europe/Stockholm" , 0x044C04 }, + { "Europe/Tallinn" , 0x044E01 }, + { "Europe/Tirane" , 0x0450B0 }, + { "Europe/Tiraspol" , 0x045318 }, + { "Europe/Ulyanovsk" , 0x045617 }, + { "Europe/Uzhgorod" , 0x04592D }, + { "Europe/Vaduz" , 0x045B62 }, + { "Europe/Vatican" , 0x045D5F }, + { "Europe/Vienna" , 0x04611E }, + { "Europe/Vilnius" , 0x0463BC }, + { "Europe/Volgograd" , 0x04666C }, + { "Europe/Warsaw" , 0x046969 }, + { "Europe/Zagreb" , 0x046D10 }, + { "Europe/Zaporozhye" , 0x046EFA }, + { "Europe/Zurich" , 0x04715A }, + { "Factory" , 0x047357 }, + { "GB" , 0x0473D4 }, + { "GB-Eire" , 0x047A1F }, + { "GMT" , 0x04806A }, + { "GMT+0" , 0x0480E5 }, + { "GMT-0" , 0x048160 }, + { "GMT0" , 0x0481DB }, + { "Greenwich" , 0x048256 }, + { "Hongkong" , 0x0482D1 }, + { "HST" , 0x0485E4 }, + { "Iceland" , 0x048660 }, + { "Indian/Antananarivo" , 0x04895D }, + { "Indian/Chagos" , 0x048A28 }, + { "Indian/Christmas" , 0x048ACC }, + { "Indian/Cocos" , 0x048B5D }, + { "Indian/Comoro" , 0x048BF5 }, + { "Indian/Kerguelen" , 0x048CC0 }, + { "Indian/Mahe" , 0x048D51 }, + { "Indian/Maldives" , 0x048DE2 }, + { "Indian/Mauritius" , 0x048E86 }, + { "Indian/Mayotte" , 0x048F45 }, + { "Indian/Reunion" , 0x049010 }, + { "Iran" , 0x0490A1 }, + { "Israel" , 0x049881 }, + { "Jamaica" , 0x049CBF }, + { "Japan" , 0x049E1E }, + { "Kwajalein" , 0x049EFF }, + { "Libya" , 0x049FE6 }, + { "MET" , 0x04A1A1 }, + { "Mexico/BajaNorte" , 0x04A41A }, + { "Mexico/BajaSur" , 0x04A827 }, + { "Mexico/General" , 0x04A9A2 }, + { "MST" , 0x04AB4A }, + { "MST7MDT" , 0x04ABC5 }, + { "Navajo" , 0x04AF88 }, + { "NZ" , 0x04B3A6 }, + { "NZ-CHAT" , 0x04B7C5 }, + { "Pacific/Apia" , 0x04BAF9 }, + { "Pacific/Auckland" , 0x04BC9C }, + { "Pacific/Bougainville" , 0x04C0D3 }, + { "Pacific/Chatham" , 0x04C1B4 }, + { "Pacific/Chuuk" , 0x04C4F7 }, + { "Pacific/Easter" , 0x04C5D5 }, + { "Pacific/Efate" , 0x04CA3C }, + { "Pacific/Enderbury" , 0x04CB9E }, + { "Pacific/Fakaofo" , 0x04CC56 }, + { "Pacific/Fiji" , 0x04CCFB }, + { "Pacific/Funafuti" , 0x04CEB3 }, + { "Pacific/Galapagos" , 0x04CF45 }, + { "Pacific/Gambier" , 0x04D011 }, + { "Pacific/Guadalcanal" , 0x04D0B0 }, + { "Pacific/Guam" , 0x04D142 }, + { "Pacific/Honolulu" , 0x04D2AC }, + { "Pacific/Johnston" , 0x04D39B }, + { "Pacific/Kanton" , 0x04D484 }, + { "Pacific/Kiritimati" , 0x04D54B }, + { "Pacific/Kosrae" , 0x04D611 }, + { "Pacific/Kwajalein" , 0x04D715 }, + { "Pacific/Majuro" , 0x04D805 }, + { "Pacific/Marquesas" , 0x04D908 }, + { "Pacific/Midway" , 0x04D9B0 }, + { "Pacific/Nauru" , 0x04DA5C }, + { "Pacific/Niue" , 0x04DB1F }, + { "Pacific/Norfolk" , 0x04DBC5 }, + { "Pacific/Noumea" , 0x04DCC8 }, + { "Pacific/Pago_Pago" , 0x04DD9A }, + { "Pacific/Palau" , 0x04DE38 }, + { "Pacific/Pitcairn" , 0x04DED8 }, + { "Pacific/Pohnpei" , 0x04DF7D }, + { "Pacific/Ponape" , 0x04E06D }, + { "Pacific/Port_Moresby" , 0x04E14F }, + { "Pacific/Rarotonga" , 0x04E212 }, + { "Pacific/Saipan" , 0x04E3B4 }, + { "Pacific/Samoa" , 0x04E51E }, + { "Pacific/Tahiti" , 0x04E5BC }, + { "Pacific/Tarawa" , 0x04E65C }, + { "Pacific/Tongatapu" , 0x04E6FD }, + { "Pacific/Truk" , 0x04E7F6 }, + { "Pacific/Wake" , 0x04E8C5 }, + { "Pacific/Wallis" , 0x04E962 }, + { "Pacific/Yap" , 0x04E9F4 }, + { "Poland" , 0x04EAC3 }, + { "Portugal" , 0x04EE6A }, + { "PRC" , 0x04F424 }, + { "PST8PDT" , 0x04F5B9 }, + { "ROC" , 0x04F97C }, + { "ROK" , 0x04FB87 }, + { "Singapore" , 0x04FD32 }, + { "Turkey" , 0x04FE3E }, + { "UCT" , 0x0502FA }, + { "Universal" , 0x050375 }, + { "US/Alaska" , 0x0503F0 }, + { "US/Aleutian" , 0x0507CD }, + { "US/Arizona" , 0x050BA2 }, + { "US/Central" , 0x050C9E }, + { "US/East-Indiana" , 0x051384 }, + { "US/Eastern" , 0x0515A3 }, + { "US/Hawaii" , 0x051C7F }, + { "US/Indiana-Starke" , 0x051D68 }, + { "US/Michigan" , 0x05216C }, + { "US/Mountain" , 0x0524FB }, + { "US/Pacific" , 0x052919 }, + { "US/Samoa" , 0x052E33 }, + { "UTC" , 0x052ED1 }, + { "W-SU" , 0x052F4C }, + { "WET" , 0x0532E4 }, + { "Zulu" , 0x0534DE }, }; -const unsigned char timelib_timezone_db_data_builtin[341290] = { +const unsigned char timelib_timezone_db_data_builtin[341337] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7531,9 +7531,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x74, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, -0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, @@ -7596,7 +7596,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x06, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, +0x03, 0x05, 0x06, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, @@ -8018,9 +8018,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x7A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, -0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, @@ -8086,8 +8086,8 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x00, 0xFF, -0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, +0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x00, 0xFF, +0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x34, 0x3E, 0x34, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x2C, 0x4D, 0x39, @@ -10702,7 +10702,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0xBD, 0x4A, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x59, 0xCF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xFA, 0xA6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x38, 0x9C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE5, 0xEB, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xAC, 0xFE, 0x00, 0xFF, @@ -10761,21 +10761,21 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x5A, 0xB5, 0x86, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD3, 0x8E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, -0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7B, 0x1D, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 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, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x20, 0x50, -0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, -0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, -0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, -0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, -0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x35, 0x2F, 0x31, 0x0A, 0x00, 0xB9, -0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, -0x74, 0x72, 0x69, 0x70, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x20, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, +0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, +0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, +0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, +0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, 0x31, 0x30, +0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x32, 0x35, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, +0x00, 0x00, 0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70, /* Asia/Harbin */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10811,7 +10811,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x77, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0xBD, 0x4A, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x59, 0xCF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xFA, 0xA6, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x38, 0x9C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE5, 0xEB, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xAC, 0xFE, 0x00, 0xFF, @@ -10871,21 +10871,21 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x5A, 0xB5, 0x86, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD3, 0x8E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, -0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7B, 0x1D, 0x60, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, +0x01, 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, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, -0x20, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, -0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, -0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, -0x2E, 0x34, 0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x35, 0x2F, 0x31, 0x0A, -0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, 0x74, -0x20, 0x42, 0x61, 0x6E, 0x6B, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x20, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x2A, +0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x00, +0x00, 0x1C, 0x20, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, +0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, +0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, +0x31, 0x30, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x32, 0x35, 0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, +0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, 0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B, /* Asia/Ho_Chi_Minh */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -15680,9 +15680,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 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, 0x7A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, -0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, @@ -15748,8 +15748,8 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x00, 0xFF, -0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, +0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x00, 0xFF, +0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x34, 0x3E, 0x34, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x2C, 0x4D, 0x39, @@ -17987,7 +17987,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x26, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x22, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xCD, 0x2E, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, @@ -18002,23 +18002,23 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x20, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, -0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, -0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, -0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, -0x07, 0x02, 0x07, 0x02, 0x07, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, -0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, -0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, -0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, -0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, -0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, -0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, 0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, 0x00, 0x00, 0x00, -0x14, 0x55, 0x6B, 0x72, 0x61, 0x69, 0x6E, 0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, -0x72, 0x65, 0x61, 0x73, 0x29, +0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, +0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, +0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, +0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, +0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x00, 0x00, +0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, +0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, +0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, +0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, +0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, +0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, +0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, +0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, 0x00, 0x00, 0x00, 0x14, 0x55, 0x6B, 0x72, 0x61, 0x69, 0x6E, +0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, /* Europe/Kirov */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -19279,9 +19279,9 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, 0xD0, 0x00, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, 0x50, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x67, 0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, @@ -19617,7 +19617,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x25, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0x6A, 0xEE, 0xB0, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x09, 0x71, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, @@ -19632,21 +19632,22 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x42, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, -0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x01, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, 0x00, 0x14, 0xE8, -0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, -0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, -0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, -0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, -0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, -0x34, 0x0A, 0x00, 0xD3, 0x83, 0x22, 0x01, 0x34, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x54, 0x72, -0x61, 0x6E, 0x73, 0x63, 0x61, 0x72, 0x70, 0x61, 0x74, 0x68, 0x69, 0x61, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, +0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x01, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x4C, +0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, +0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, +0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD3, 0x83, 0x22, 0x01, +0x34, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x63, 0x61, 0x72, 0x70, +0x61, 0x74, 0x68, 0x69, 0x61, /* Europe/Vaduz */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4C, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -19984,7 +19985,7 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 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, 0x27, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC3, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA3, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xAA, 0xE7, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, @@ -20000,23 +20001,24 @@ const unsigned char timelib_timezone_db_data_builtin[341290] = { 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x27, 0x70, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE4, 0xED, 0x50, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, -0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, -0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, -0x03, 0x06, 0x03, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x00, 0x00, -0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, -0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, -0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, -0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, -0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, -0x00, 0xD2, 0x51, 0x25, 0x01, 0x48, 0x51, 0x7A, 0x00, 0x00, 0x00, 0x1B, 0x5A, 0x61, 0x70, 0x6F, -0x72, 0x6F, 0x7A, 0x68, 0x79, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x73, 0x74, 0x20, -0x4C, 0x75, 0x67, 0x61, 0x6E, 0x73, 0x6B, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, +0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, +0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, +0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x07, 0x02, 0x07, 0x02, 0x07, +0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, +0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, +0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, +0x1B, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, 0x30, +0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, +0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, +0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, +0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD2, 0x51, 0x25, 0x01, 0x48, 0x51, +0x7A, 0x00, 0x00, 0x00, 0x1B, 0x5A, 0x61, 0x70, 0x6F, 0x72, 0x6F, 0x7A, 0x68, 0x79, 0x65, 0x20, +0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x73, 0x74, 0x20, 0x4C, 0x75, 0x67, 0x61, 0x6E, 0x73, 0x6B, + /* Europe/Zurich */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -23690,340 +23692,340 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[595] = { { "Asia/Dushanbe" , 0x0476ED }, { "Asia/Famagusta" , 0x047948 }, { "Asia/Gaza" , 0x04814F }, - { "Asia/Harbin" , 0x048ADA }, - { "Asia/Hebron" , 0x048D17 }, - { "Asia/Ho_Chi_Minh" , 0x0496BD }, - { "Asia/Hong_Kong" , 0x049828 }, - { "Asia/Hovd" , 0x049CE7 }, - { "Asia/Irkutsk" , 0x04A099 }, - { "Asia/Istanbul" , 0x04A59A }, - { "Asia/Jakarta" , 0x04AD41 }, - { "Asia/Jayapura" , 0x04AEBD }, - { "Asia/Jerusalem" , 0x04AFDC }, - { "Asia/Kabul" , 0x04B93C }, - { "Asia/Kamchatka" , 0x04BA18 }, - { "Asia/Karachi" , 0x04BEC4 }, - { "Asia/Kashgar" , 0x04C04B }, - { "Asia/Kathmandu" , 0x04C0FC }, - { "Asia/Katmandu" , 0x04C1DC }, - { "Asia/Khandyga" , 0x04C2BC }, - { "Asia/Kolkata" , 0x04C7DD }, - { "Asia/Krasnoyarsk" , 0x04C906 }, - { "Asia/Kuala_Lumpur" , 0x04CDE2 }, - { "Asia/Kuching" , 0x04CF81 }, - { "Asia/Kuwait" , 0x04D17E }, - { "Asia/Macao" , 0x04D22F }, - { "Asia/Macau" , 0x04D706 }, - { "Asia/Magadan" , 0x04DBDD }, - { "Asia/Makassar" , 0x04E0BF }, - { "Asia/Manila" , 0x04E212 }, - { "Asia/Muscat" , 0x04E366 }, - { "Asia/Nicosia" , 0x04E417 }, - { "Asia/Novokuznetsk" , 0x04EC08 }, - { "Asia/Novosibirsk" , 0x04F0B2 }, - { "Asia/Omsk" , 0x04F597 }, - { "Asia/Oral" , 0x04FA67 }, - { "Asia/Phnom_Penh" , 0x04FE6F }, - { "Asia/Pontianak" , 0x04FF42 }, - { "Asia/Pyongyang" , 0x0500C5 }, - { "Asia/Qatar" , 0x0501BE }, - { "Asia/Qostanay" , 0x050291 }, - { "Asia/Qyzylorda" , 0x0506AA }, - { "Asia/Rangoon" , 0x050AD4 }, - { "Asia/Riyadh" , 0x050BEC }, - { "Asia/Saigon" , 0x050C9D }, - { "Asia/Sakhalin" , 0x050E08 }, - { "Asia/Samarkand" , 0x0512DE }, - { "Asia/Seoul" , 0x05153C }, - { "Asia/Shanghai" , 0x0517B1 }, - { "Asia/Singapore" , 0x0519FA }, - { "Asia/Srednekolymsk" , 0x051B85 }, - { "Asia/Taipei" , 0x05206B }, - { "Asia/Tashkent" , 0x052370 }, - { "Asia/Tbilisi" , 0x0525DC }, - { "Asia/Tehran" , 0x0529F3 }, - { "Asia/Tel_Aviv" , 0x053415 }, - { "Asia/Thimbu" , 0x053D75 }, - { "Asia/Thimphu" , 0x053E4C }, - { "Asia/Tokyo" , 0x053F23 }, - { "Asia/Tomsk" , 0x054064 }, - { "Asia/Ujung_Pandang" , 0x054543 }, - { "Asia/Ulaanbaatar" , 0x05464D }, - { "Asia/Ulan_Bator" , 0x0549E9 }, - { "Asia/Urumqi" , 0x054D70 }, - { "Asia/Ust-Nera" , 0x054E2E }, - { "Asia/Vientiane" , 0x055332 }, - { "Asia/Vladivostok" , 0x055405 }, - { "Asia/Yakutsk" , 0x0558DC }, - { "Asia/Yangon" , 0x055DB2 }, - { "Asia/Yekaterinburg" , 0x055ECA }, - { "Asia/Yerevan" , 0x0563BF }, - { "Atlantic/Azores" , 0x05684A }, - { "Atlantic/Bermuda" , 0x057614 }, - { "Atlantic/Canary" , 0x057F7C }, - { "Atlantic/Cape_Verde" , 0x0586FF }, - { "Atlantic/Faeroe" , 0x058819 }, - { "Atlantic/Faroe" , 0x058F3C }, - { "Atlantic/Jan_Mayen" , 0x05965F }, - { "Atlantic/Madeira" , 0x059F1F }, - { "Atlantic/Reykjavik" , 0x05ACE9 }, - { "Atlantic/South_Georgia" , 0x05B17F }, - { "Atlantic/St_Helena" , 0x05B22F }, - { "Atlantic/Stanley" , 0x05B2CF }, - { "Australia/ACT" , 0x05B799 }, - { "Australia/Adelaide" , 0x05C033 }, - { "Australia/Brisbane" , 0x05C8EE }, - { "Australia/Broken_Hill" , 0x05CAB4 }, - { "Australia/Canberra" , 0x05D391 }, - { "Australia/Currie" , 0x05DC2B }, - { "Australia/Darwin" , 0x05E56D }, - { "Australia/Eucla" , 0x05E6D0 }, - { "Australia/Hobart" , 0x05E8CB }, - { "Australia/LHI" , 0x05F215 }, - { "Australia/Lindeman" , 0x05F965 }, - { "Australia/Lord_Howe" , 0x05FB6B }, - { "Australia/Melbourne" , 0x0602CB }, - { "Australia/North" , 0x060B6D }, - { "Australia/NSW" , 0x060CBE }, - { "Australia/Perth" , 0x061558 }, - { "Australia/Queensland" , 0x061740 }, - { "Australia/South" , 0x0618EF }, - { "Australia/Sydney" , 0x06219B }, - { "Australia/Tasmania" , 0x062A51 }, - { "Australia/Victoria" , 0x063393 }, - { "Australia/West" , 0x063C2D }, - { "Australia/Yancowinna" , 0x063DF7 }, - { "Brazil/Acre" , 0x0646B8 }, - { "Brazil/DeNoronha" , 0x064938 }, - { "Brazil/East" , 0x064C10 }, - { "Brazil/West" , 0x0651C0 }, - { "Canada/Atlantic" , 0x065428 }, - { "Canada/Central" , 0x066194 }, - { "Canada/Eastern" , 0x066CD4 }, - { "Canada/Mountain" , 0x067A86 }, - { "Canada/Newfoundland" , 0x0683AE }, - { "Canada/Pacific" , 0x069201 }, - { "Canada/Saskatchewan" , 0x069D59 }, - { "Canada/Yukon" , 0x06A139 }, - { "CET" , 0x06A793 }, - { "Chile/Continental" , 0x06AFCD }, - { "Chile/EasterIsland" , 0x06B9BA }, - { "CST6CDT" , 0x06C27F }, - { "Cuba" , 0x06CB91 }, - { "EET" , 0x06D50D }, - { "Egypt" , 0x06DC8D }, - { "Eire" , 0x06E43C }, - { "EST" , 0x06F1EC }, - { "EST5EDT" , 0x06F26A }, - { "Etc/GMT" , 0x06FB7C }, - { "Etc/GMT+0" , 0x06FBFA }, - { "Etc/GMT+1" , 0x06FC78 }, - { "Etc/GMT+10" , 0x06FCF8 }, - { "Etc/GMT+11" , 0x06FD79 }, - { "Etc/GMT+12" , 0x06FDFA }, - { "Etc/GMT+2" , 0x06FE7B }, - { "Etc/GMT+3" , 0x06FEFB }, - { "Etc/GMT+4" , 0x06FF7B }, - { "Etc/GMT+5" , 0x06FFFB }, - { "Etc/GMT+6" , 0x07007B }, - { "Etc/GMT+7" , 0x0700FB }, - { "Etc/GMT+8" , 0x07017B }, - { "Etc/GMT+9" , 0x0701FB }, - { "Etc/GMT-0" , 0x07027B }, - { "Etc/GMT-1" , 0x0702F9 }, - { "Etc/GMT-10" , 0x07037A }, - { "Etc/GMT-11" , 0x0703FC }, - { "Etc/GMT-12" , 0x07047E }, - { "Etc/GMT-13" , 0x070500 }, - { "Etc/GMT-14" , 0x070582 }, - { "Etc/GMT-2" , 0x070604 }, - { "Etc/GMT-3" , 0x070685 }, - { "Etc/GMT-4" , 0x070706 }, - { "Etc/GMT-5" , 0x070787 }, - { "Etc/GMT-6" , 0x070808 }, - { "Etc/GMT-7" , 0x070889 }, - { "Etc/GMT-8" , 0x07090A }, - { "Etc/GMT-9" , 0x07098B }, - { "Etc/GMT0" , 0x070A0C }, - { "Etc/Greenwich" , 0x070A8A }, - { "Etc/UCT" , 0x070B08 }, - { "Etc/Universal" , 0x070B86 }, - { "Etc/UTC" , 0x070C04 }, - { "Etc/Zulu" , 0x070C82 }, - { "Europe/Amsterdam" , 0x070D00 }, - { "Europe/Andorra" , 0x07186A }, - { "Europe/Astrakhan" , 0x071F44 }, - { "Europe/Athens" , 0x0723EF }, - { "Europe/Belfast" , 0x072CD1 }, - { "Europe/Belgrade" , 0x073B1D }, - { "Europe/Berlin" , 0x0742A9 }, - { "Europe/Bratislava" , 0x074BC3 }, - { "Europe/Brussels" , 0x0754CC }, - { "Europe/Bucharest" , 0x07604D }, - { "Europe/Budapest" , 0x0768E1 }, - { "Europe/Busingen" , 0x07722D }, - { "Europe/Chisinau" , 0x0779B6 }, - { "Europe/Copenhagen" , 0x078318 }, - { "Europe/Dublin" , 0x078B7D }, - { "Europe/Gibraltar" , 0x07992D }, - { "Europe/Guernsey" , 0x07A525 }, - { "Europe/Helsinki" , 0x07B371 }, - { "Europe/Isle_of_Man" , 0x07BAE9 }, - { "Europe/Istanbul" , 0x07C935 }, - { "Europe/Jersey" , 0x07D0DC }, - { "Europe/Kaliningrad" , 0x07DF28 }, - { "Europe/Kiev" , 0x07E51D }, - { "Europe/Kirov" , 0x07ED65 }, - { "Europe/Lisbon" , 0x07F200 }, - { "Europe/Ljubljana" , 0x07FFC8 }, - { "Europe/London" , 0x080754 }, - { "Europe/Luxembourg" , 0x0815A0 }, - { "Europe/Madrid" , 0x08212E }, - { "Europe/Malta" , 0x082B80 }, - { "Europe/Mariehamn" , 0x0835C8 }, - { "Europe/Minsk" , 0x083D40 }, - { "Europe/Monaco" , 0x084275 }, - { "Europe/Moscow" , 0x084E01 }, - { "Europe/Nicosia" , 0x085420 }, - { "Europe/Oslo" , 0x085BFE }, - { "Europe/Paris" , 0x0864BE }, - { "Europe/Podgorica" , 0x08705C }, - { "Europe/Prague" , 0x0877E8 }, - { "Europe/Riga" , 0x0880F1 }, - { "Europe/Rome" , 0x088993 }, - { "Europe/Samara" , 0x0893F0 }, - { "Europe/San_Marino" , 0x0898D4 }, - { "Europe/Sarajevo" , 0x08A331 }, - { "Europe/Saratov" , 0x08AABD }, - { "Europe/Simferopol" , 0x08AF78 }, - { "Europe/Skopje" , 0x08B537 }, - { "Europe/Sofia" , 0x08BCC3 }, - { "Europe/Stockholm" , 0x08C4EC }, - { "Europe/Tallinn" , 0x08CC6D }, - { "Europe/Tirane" , 0x08D4DD }, - { "Europe/Tiraspol" , 0x08DD0D }, - { "Europe/Ulyanovsk" , 0x08E66F }, - { "Europe/Uzhgorod" , 0x08EB80 }, - { "Europe/Vaduz" , 0x08F39C }, - { "Europe/Vatican" , 0x08FB1D }, - { "Europe/Vienna" , 0x09057A }, - { "Europe/Vilnius" , 0x090E1E }, - { "Europe/Volgograd" , 0x09169C }, - { "Europe/Warsaw" , 0x091B47 }, - { "Europe/Zagreb" , 0x0925B1 }, - { "Europe/Zaporozhye" , 0x092D3D }, - { "Europe/Zurich" , 0x09359E }, - { "Factory" , 0x093D1F }, - { "GB" , 0x093D9F }, - { "GB-Eire" , 0x094BEB }, - { "GMT" , 0x095A37 }, - { "GMT+0" , 0x095AB5 }, - { "GMT-0" , 0x095B33 }, - { "GMT0" , 0x095BB1 }, - { "Greenwich" , 0x095C2F }, - { "Hongkong" , 0x095CAD }, - { "HST" , 0x09616C }, - { "Iceland" , 0x0961EB }, - { "Indian/Antananarivo" , 0x096681 }, - { "Indian/Chagos" , 0x096796 }, - { "Indian/Christmas" , 0x096869 }, - { "Indian/Cocos" , 0x09691A }, - { "Indian/Comoro" , 0x0969D4 }, - { "Indian/Kerguelen" , 0x096AE9 }, - { "Indian/Mahe" , 0x096B9A }, - { "Indian/Maldives" , 0x096C4B }, - { "Indian/Mauritius" , 0x096D1E }, - { "Indian/Mayotte" , 0x096E1B }, - { "Indian/Reunion" , 0x096F30 }, - { "Iran" , 0x096FE1 }, - { "Israel" , 0x097A03 }, - { "Jamaica" , 0x098363 }, - { "Japan" , 0x098551 }, - { "Kwajalein" , 0x098692 }, - { "Libya" , 0x0987DA }, - { "MET" , 0x098A57 }, - { "Mexico/BajaNorte" , 0x099291 }, - { "Mexico/BajaSur" , 0x099BC3 }, - { "Mexico/General" , 0x09A1C5 }, - { "MST" , 0x09A801 }, - { "MST7MDT" , 0x09A87F }, - { "Navajo" , 0x09B191 }, - { "NZ" , 0x09BB29 }, - { "NZ-CHAT" , 0x09C4BA }, - { "Pacific/Apia" , 0x09CCDA }, - { "Pacific/Auckland" , 0x09CF4A }, - { "Pacific/Bougainville" , 0x09D8F3 }, - { "Pacific/Chatham" , 0x09DA17 }, - { "Pacific/Chuuk" , 0x09E246 }, - { "Pacific/Easter" , 0x09E36E }, - { "Pacific/Efate" , 0x09EC40 }, - { "Pacific/Enderbury" , 0x09EE66 }, - { "Pacific/Fakaofo" , 0x09EF5C }, - { "Pacific/Fiji" , 0x09F030 }, - { "Pacific/Funafuti" , 0x09F455 }, - { "Pacific/Galapagos" , 0x09F507 }, - { "Pacific/Gambier" , 0x09F612 }, - { "Pacific/Guadalcanal" , 0x09F6D1 }, - { "Pacific/Guam" , 0x09F783 }, - { "Pacific/Honolulu" , 0x09F97D }, - { "Pacific/Johnston" , 0x09FAD8 }, - { "Pacific/Kanton" , 0x09FC2D }, - { "Pacific/Kiritimati" , 0x09FD32 }, - { "Pacific/Kosrae" , 0x09FE38 }, - { "Pacific/Kwajalein" , 0x09FFA9 }, - { "Pacific/Majuro" , 0x0A00FA }, - { "Pacific/Marquesas" , 0x0A0259 }, - { "Pacific/Midway" , 0x0A0323 }, - { "Pacific/Nauru" , 0x0A03EC }, - { "Pacific/Niue" , 0x0A04F4 }, - { "Pacific/Norfolk" , 0x0A05CB }, - { "Pacific/Noumea" , 0x0A0947 }, - { "Pacific/Pago_Pago" , 0x0A0A83 }, - { "Pacific/Palau" , 0x0A0B3E }, - { "Pacific/Pitcairn" , 0x0A0BFE }, - { "Pacific/Pohnpei" , 0x0A0CD4 }, - { "Pacific/Ponape" , 0x0A0E1D }, - { "Pacific/Port_Moresby" , 0x0A0F58 }, - { "Pacific/Rarotonga" , 0x0A103B }, - { "Pacific/Saipan" , 0x0A12A2 }, - { "Pacific/Samoa" , 0x0A149C }, - { "Pacific/Tahiti" , 0x0A1557 }, - { "Pacific/Tarawa" , 0x0A1617 }, - { "Pacific/Tongatapu" , 0x0A16D8 }, - { "Pacific/Truk" , 0x0A1858 }, - { "Pacific/Wake" , 0x0A1971 }, - { "Pacific/Wallis" , 0x0A1A2E }, - { "Pacific/Yap" , 0x0A1AE0 }, - { "Poland" , 0x0A1BF9 }, - { "Portugal" , 0x0A2663 }, - { "PRC" , 0x0A3418 }, - { "PST8PDT" , 0x0A3655 }, - { "ROC" , 0x0A3F67 }, - { "ROK" , 0x0A426C }, - { "Singapore" , 0x0A44E1 }, - { "Turkey" , 0x0A466C }, - { "UCT" , 0x0A4E13 }, - { "Universal" , 0x0A4E91 }, - { "US/Alaska" , 0x0A4F0F }, - { "US/Aleutian" , 0x0A585E }, - { "US/Arizona" , 0x0A619E }, - { "US/Central" , 0x0A62F2 }, - { "US/East-Indiana" , 0x0A70F6 }, - { "US/Eastern" , 0x0A7784 }, - { "US/Hawaii" , 0x0A8560 }, - { "US/Indiana-Starke" , 0x0A86B5 }, - { "US/Michigan" , 0x0A903D }, - { "US/Mountain" , 0x0A98FF }, - { "US/Pacific" , 0x0AA297 }, - { "US/Samoa" , 0x0AADB7 }, - { "UTC" , 0x0AAE72 }, - { "W-SU" , 0x0AAEF0 }, - { "WET" , 0x0AB4FB }, - { "Zulu" , 0x0ABC78 }, + { "Asia/Harbin" , 0x048ADB }, + { "Asia/Hebron" , 0x048D18 }, + { "Asia/Ho_Chi_Minh" , 0x0496BF }, + { "Asia/Hong_Kong" , 0x04982A }, + { "Asia/Hovd" , 0x049CE9 }, + { "Asia/Irkutsk" , 0x04A09B }, + { "Asia/Istanbul" , 0x04A59C }, + { "Asia/Jakarta" , 0x04AD43 }, + { "Asia/Jayapura" , 0x04AEBF }, + { "Asia/Jerusalem" , 0x04AFDE }, + { "Asia/Kabul" , 0x04B93E }, + { "Asia/Kamchatka" , 0x04BA1A }, + { "Asia/Karachi" , 0x04BEC6 }, + { "Asia/Kashgar" , 0x04C04D }, + { "Asia/Kathmandu" , 0x04C0FE }, + { "Asia/Katmandu" , 0x04C1DE }, + { "Asia/Khandyga" , 0x04C2BE }, + { "Asia/Kolkata" , 0x04C7DF }, + { "Asia/Krasnoyarsk" , 0x04C908 }, + { "Asia/Kuala_Lumpur" , 0x04CDE4 }, + { "Asia/Kuching" , 0x04CF83 }, + { "Asia/Kuwait" , 0x04D180 }, + { "Asia/Macao" , 0x04D231 }, + { "Asia/Macau" , 0x04D708 }, + { "Asia/Magadan" , 0x04DBDF }, + { "Asia/Makassar" , 0x04E0C1 }, + { "Asia/Manila" , 0x04E214 }, + { "Asia/Muscat" , 0x04E368 }, + { "Asia/Nicosia" , 0x04E419 }, + { "Asia/Novokuznetsk" , 0x04EC0A }, + { "Asia/Novosibirsk" , 0x04F0B4 }, + { "Asia/Omsk" , 0x04F599 }, + { "Asia/Oral" , 0x04FA69 }, + { "Asia/Phnom_Penh" , 0x04FE71 }, + { "Asia/Pontianak" , 0x04FF44 }, + { "Asia/Pyongyang" , 0x0500C7 }, + { "Asia/Qatar" , 0x0501C0 }, + { "Asia/Qostanay" , 0x050293 }, + { "Asia/Qyzylorda" , 0x0506AC }, + { "Asia/Rangoon" , 0x050AD6 }, + { "Asia/Riyadh" , 0x050BEE }, + { "Asia/Saigon" , 0x050C9F }, + { "Asia/Sakhalin" , 0x050E0A }, + { "Asia/Samarkand" , 0x0512E0 }, + { "Asia/Seoul" , 0x05153E }, + { "Asia/Shanghai" , 0x0517B3 }, + { "Asia/Singapore" , 0x0519FC }, + { "Asia/Srednekolymsk" , 0x051B87 }, + { "Asia/Taipei" , 0x05206D }, + { "Asia/Tashkent" , 0x052372 }, + { "Asia/Tbilisi" , 0x0525DE }, + { "Asia/Tehran" , 0x0529F5 }, + { "Asia/Tel_Aviv" , 0x053417 }, + { "Asia/Thimbu" , 0x053D77 }, + { "Asia/Thimphu" , 0x053E4E }, + { "Asia/Tokyo" , 0x053F25 }, + { "Asia/Tomsk" , 0x054066 }, + { "Asia/Ujung_Pandang" , 0x054545 }, + { "Asia/Ulaanbaatar" , 0x05464F }, + { "Asia/Ulan_Bator" , 0x0549EB }, + { "Asia/Urumqi" , 0x054D72 }, + { "Asia/Ust-Nera" , 0x054E30 }, + { "Asia/Vientiane" , 0x055334 }, + { "Asia/Vladivostok" , 0x055407 }, + { "Asia/Yakutsk" , 0x0558DE }, + { "Asia/Yangon" , 0x055DB4 }, + { "Asia/Yekaterinburg" , 0x055ECC }, + { "Asia/Yerevan" , 0x0563C1 }, + { "Atlantic/Azores" , 0x05684C }, + { "Atlantic/Bermuda" , 0x057616 }, + { "Atlantic/Canary" , 0x057F7E }, + { "Atlantic/Cape_Verde" , 0x058701 }, + { "Atlantic/Faeroe" , 0x05881B }, + { "Atlantic/Faroe" , 0x058F3E }, + { "Atlantic/Jan_Mayen" , 0x059661 }, + { "Atlantic/Madeira" , 0x059F21 }, + { "Atlantic/Reykjavik" , 0x05ACEB }, + { "Atlantic/South_Georgia" , 0x05B181 }, + { "Atlantic/St_Helena" , 0x05B231 }, + { "Atlantic/Stanley" , 0x05B2D1 }, + { "Australia/ACT" , 0x05B79B }, + { "Australia/Adelaide" , 0x05C035 }, + { "Australia/Brisbane" , 0x05C8F0 }, + { "Australia/Broken_Hill" , 0x05CAB6 }, + { "Australia/Canberra" , 0x05D393 }, + { "Australia/Currie" , 0x05DC2D }, + { "Australia/Darwin" , 0x05E56F }, + { "Australia/Eucla" , 0x05E6D2 }, + { "Australia/Hobart" , 0x05E8CD }, + { "Australia/LHI" , 0x05F217 }, + { "Australia/Lindeman" , 0x05F967 }, + { "Australia/Lord_Howe" , 0x05FB6D }, + { "Australia/Melbourne" , 0x0602CD }, + { "Australia/North" , 0x060B6F }, + { "Australia/NSW" , 0x060CC0 }, + { "Australia/Perth" , 0x06155A }, + { "Australia/Queensland" , 0x061742 }, + { "Australia/South" , 0x0618F1 }, + { "Australia/Sydney" , 0x06219D }, + { "Australia/Tasmania" , 0x062A53 }, + { "Australia/Victoria" , 0x063395 }, + { "Australia/West" , 0x063C2F }, + { "Australia/Yancowinna" , 0x063DF9 }, + { "Brazil/Acre" , 0x0646BA }, + { "Brazil/DeNoronha" , 0x06493A }, + { "Brazil/East" , 0x064C12 }, + { "Brazil/West" , 0x0651C2 }, + { "Canada/Atlantic" , 0x06542A }, + { "Canada/Central" , 0x066196 }, + { "Canada/Eastern" , 0x066CD6 }, + { "Canada/Mountain" , 0x067A88 }, + { "Canada/Newfoundland" , 0x0683B0 }, + { "Canada/Pacific" , 0x069203 }, + { "Canada/Saskatchewan" , 0x069D5B }, + { "Canada/Yukon" , 0x06A13B }, + { "CET" , 0x06A795 }, + { "Chile/Continental" , 0x06AFCF }, + { "Chile/EasterIsland" , 0x06B9BC }, + { "CST6CDT" , 0x06C281 }, + { "Cuba" , 0x06CB93 }, + { "EET" , 0x06D50F }, + { "Egypt" , 0x06DC8F }, + { "Eire" , 0x06E43E }, + { "EST" , 0x06F1EE }, + { "EST5EDT" , 0x06F26C }, + { "Etc/GMT" , 0x06FB7E }, + { "Etc/GMT+0" , 0x06FBFC }, + { "Etc/GMT+1" , 0x06FC7A }, + { "Etc/GMT+10" , 0x06FCFA }, + { "Etc/GMT+11" , 0x06FD7B }, + { "Etc/GMT+12" , 0x06FDFC }, + { "Etc/GMT+2" , 0x06FE7D }, + { "Etc/GMT+3" , 0x06FEFD }, + { "Etc/GMT+4" , 0x06FF7D }, + { "Etc/GMT+5" , 0x06FFFD }, + { "Etc/GMT+6" , 0x07007D }, + { "Etc/GMT+7" , 0x0700FD }, + { "Etc/GMT+8" , 0x07017D }, + { "Etc/GMT+9" , 0x0701FD }, + { "Etc/GMT-0" , 0x07027D }, + { "Etc/GMT-1" , 0x0702FB }, + { "Etc/GMT-10" , 0x07037C }, + { "Etc/GMT-11" , 0x0703FE }, + { "Etc/GMT-12" , 0x070480 }, + { "Etc/GMT-13" , 0x070502 }, + { "Etc/GMT-14" , 0x070584 }, + { "Etc/GMT-2" , 0x070606 }, + { "Etc/GMT-3" , 0x070687 }, + { "Etc/GMT-4" , 0x070708 }, + { "Etc/GMT-5" , 0x070789 }, + { "Etc/GMT-6" , 0x07080A }, + { "Etc/GMT-7" , 0x07088B }, + { "Etc/GMT-8" , 0x07090C }, + { "Etc/GMT-9" , 0x07098D }, + { "Etc/GMT0" , 0x070A0E }, + { "Etc/Greenwich" , 0x070A8C }, + { "Etc/UCT" , 0x070B0A }, + { "Etc/Universal" , 0x070B88 }, + { "Etc/UTC" , 0x070C06 }, + { "Etc/Zulu" , 0x070C84 }, + { "Europe/Amsterdam" , 0x070D02 }, + { "Europe/Andorra" , 0x07186C }, + { "Europe/Astrakhan" , 0x071F46 }, + { "Europe/Athens" , 0x0723F1 }, + { "Europe/Belfast" , 0x072CD3 }, + { "Europe/Belgrade" , 0x073B1F }, + { "Europe/Berlin" , 0x0742AB }, + { "Europe/Bratislava" , 0x074BC5 }, + { "Europe/Brussels" , 0x0754CE }, + { "Europe/Bucharest" , 0x07604F }, + { "Europe/Budapest" , 0x0768E3 }, + { "Europe/Busingen" , 0x07722F }, + { "Europe/Chisinau" , 0x0779B8 }, + { "Europe/Copenhagen" , 0x07831A }, + { "Europe/Dublin" , 0x078B7F }, + { "Europe/Gibraltar" , 0x07992F }, + { "Europe/Guernsey" , 0x07A527 }, + { "Europe/Helsinki" , 0x07B373 }, + { "Europe/Isle_of_Man" , 0x07BAEB }, + { "Europe/Istanbul" , 0x07C937 }, + { "Europe/Jersey" , 0x07D0DE }, + { "Europe/Kaliningrad" , 0x07DF2A }, + { "Europe/Kiev" , 0x07E51F }, + { "Europe/Kirov" , 0x07ED87 }, + { "Europe/Lisbon" , 0x07F222 }, + { "Europe/Ljubljana" , 0x07FFEA }, + { "Europe/London" , 0x080776 }, + { "Europe/Luxembourg" , 0x0815C2 }, + { "Europe/Madrid" , 0x082150 }, + { "Europe/Malta" , 0x082BA2 }, + { "Europe/Mariehamn" , 0x0835EA }, + { "Europe/Minsk" , 0x083D62 }, + { "Europe/Monaco" , 0x084297 }, + { "Europe/Moscow" , 0x084E23 }, + { "Europe/Nicosia" , 0x085442 }, + { "Europe/Oslo" , 0x085C20 }, + { "Europe/Paris" , 0x0864E0 }, + { "Europe/Podgorica" , 0x08707E }, + { "Europe/Prague" , 0x08780A }, + { "Europe/Riga" , 0x088113 }, + { "Europe/Rome" , 0x0889B5 }, + { "Europe/Samara" , 0x089412 }, + { "Europe/San_Marino" , 0x0898F6 }, + { "Europe/Sarajevo" , 0x08A353 }, + { "Europe/Saratov" , 0x08AADF }, + { "Europe/Simferopol" , 0x08AF9A }, + { "Europe/Skopje" , 0x08B569 }, + { "Europe/Sofia" , 0x08BCF5 }, + { "Europe/Stockholm" , 0x08C51E }, + { "Europe/Tallinn" , 0x08CC9F }, + { "Europe/Tirane" , 0x08D50F }, + { "Europe/Tiraspol" , 0x08DD3F }, + { "Europe/Ulyanovsk" , 0x08E6A1 }, + { "Europe/Uzhgorod" , 0x08EBB2 }, + { "Europe/Vaduz" , 0x08F3DE }, + { "Europe/Vatican" , 0x08FB5F }, + { "Europe/Vienna" , 0x0905BC }, + { "Europe/Vilnius" , 0x090E60 }, + { "Europe/Volgograd" , 0x0916DE }, + { "Europe/Warsaw" , 0x091B89 }, + { "Europe/Zagreb" , 0x0925F3 }, + { "Europe/Zaporozhye" , 0x092D7F }, + { "Europe/Zurich" , 0x093600 }, + { "Factory" , 0x093D81 }, + { "GB" , 0x093E01 }, + { "GB-Eire" , 0x094C4D }, + { "GMT" , 0x095A99 }, + { "GMT+0" , 0x095B17 }, + { "GMT-0" , 0x095B95 }, + { "GMT0" , 0x095C13 }, + { "Greenwich" , 0x095C91 }, + { "Hongkong" , 0x095D0F }, + { "HST" , 0x0961CE }, + { "Iceland" , 0x09624D }, + { "Indian/Antananarivo" , 0x0966E3 }, + { "Indian/Chagos" , 0x0967F8 }, + { "Indian/Christmas" , 0x0968CB }, + { "Indian/Cocos" , 0x09697C }, + { "Indian/Comoro" , 0x096A36 }, + { "Indian/Kerguelen" , 0x096B4B }, + { "Indian/Mahe" , 0x096BFC }, + { "Indian/Maldives" , 0x096CAD }, + { "Indian/Mauritius" , 0x096D80 }, + { "Indian/Mayotte" , 0x096E7D }, + { "Indian/Reunion" , 0x096F92 }, + { "Iran" , 0x097043 }, + { "Israel" , 0x097A65 }, + { "Jamaica" , 0x0983C5 }, + { "Japan" , 0x0985B3 }, + { "Kwajalein" , 0x0986F4 }, + { "Libya" , 0x09883C }, + { "MET" , 0x098AB9 }, + { "Mexico/BajaNorte" , 0x0992F3 }, + { "Mexico/BajaSur" , 0x099C25 }, + { "Mexico/General" , 0x09A227 }, + { "MST" , 0x09A863 }, + { "MST7MDT" , 0x09A8E1 }, + { "Navajo" , 0x09B1F3 }, + { "NZ" , 0x09BB8B }, + { "NZ-CHAT" , 0x09C51C }, + { "Pacific/Apia" , 0x09CD3C }, + { "Pacific/Auckland" , 0x09CFAC }, + { "Pacific/Bougainville" , 0x09D955 }, + { "Pacific/Chatham" , 0x09DA79 }, + { "Pacific/Chuuk" , 0x09E2A8 }, + { "Pacific/Easter" , 0x09E3D0 }, + { "Pacific/Efate" , 0x09ECA2 }, + { "Pacific/Enderbury" , 0x09EEC8 }, + { "Pacific/Fakaofo" , 0x09EFBE }, + { "Pacific/Fiji" , 0x09F092 }, + { "Pacific/Funafuti" , 0x09F4B7 }, + { "Pacific/Galapagos" , 0x09F569 }, + { "Pacific/Gambier" , 0x09F674 }, + { "Pacific/Guadalcanal" , 0x09F733 }, + { "Pacific/Guam" , 0x09F7E5 }, + { "Pacific/Honolulu" , 0x09F9DF }, + { "Pacific/Johnston" , 0x09FB3A }, + { "Pacific/Kanton" , 0x09FC8F }, + { "Pacific/Kiritimati" , 0x09FD94 }, + { "Pacific/Kosrae" , 0x09FE9A }, + { "Pacific/Kwajalein" , 0x0A000B }, + { "Pacific/Majuro" , 0x0A015C }, + { "Pacific/Marquesas" , 0x0A02BB }, + { "Pacific/Midway" , 0x0A0385 }, + { "Pacific/Nauru" , 0x0A044E }, + { "Pacific/Niue" , 0x0A0556 }, + { "Pacific/Norfolk" , 0x0A062D }, + { "Pacific/Noumea" , 0x0A09A9 }, + { "Pacific/Pago_Pago" , 0x0A0AE5 }, + { "Pacific/Palau" , 0x0A0BA0 }, + { "Pacific/Pitcairn" , 0x0A0C60 }, + { "Pacific/Pohnpei" , 0x0A0D36 }, + { "Pacific/Ponape" , 0x0A0E7F }, + { "Pacific/Port_Moresby" , 0x0A0FBA }, + { "Pacific/Rarotonga" , 0x0A109D }, + { "Pacific/Saipan" , 0x0A1304 }, + { "Pacific/Samoa" , 0x0A14FE }, + { "Pacific/Tahiti" , 0x0A15B9 }, + { "Pacific/Tarawa" , 0x0A1679 }, + { "Pacific/Tongatapu" , 0x0A173A }, + { "Pacific/Truk" , 0x0A18BA }, + { "Pacific/Wake" , 0x0A19D3 }, + { "Pacific/Wallis" , 0x0A1A90 }, + { "Pacific/Yap" , 0x0A1B42 }, + { "Poland" , 0x0A1C5B }, + { "Portugal" , 0x0A26C5 }, + { "PRC" , 0x0A347A }, + { "PST8PDT" , 0x0A36B7 }, + { "ROC" , 0x0A3FC9 }, + { "ROK" , 0x0A42CE }, + { "Singapore" , 0x0A4543 }, + { "Turkey" , 0x0A46CE }, + { "UCT" , 0x0A4E75 }, + { "Universal" , 0x0A4EF3 }, + { "US/Alaska" , 0x0A4F71 }, + { "US/Aleutian" , 0x0A58C0 }, + { "US/Arizona" , 0x0A6200 }, + { "US/Central" , 0x0A6354 }, + { "US/East-Indiana" , 0x0A7158 }, + { "US/Eastern" , 0x0A77E6 }, + { "US/Hawaii" , 0x0A85C2 }, + { "US/Indiana-Starke" , 0x0A8717 }, + { "US/Michigan" , 0x0A909F }, + { "US/Mountain" , 0x0A9961 }, + { "US/Pacific" , 0x0AA2F9 }, + { "US/Samoa" , 0x0AAE19 }, + { "UTC" , 0x0AAED4 }, + { "W-SU" , 0x0AAF52 }, + { "WET" , 0x0AB55D }, + { "Zulu" , 0x0ABCDA }, }; -const unsigned char timelib_timezone_db_data_builtin[703734] = { +const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -37134,8 +37136,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x8F, 0x30, 0x47, 0x46, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC6, 0xA1, 0x00, 0x71, 0xC0, -0xB0, 0x5E, 0x77, 0xC6, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, +0x8F, 0x30, 0x47, 0x45, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC5, 0xA1, 0x00, 0x71, 0xC0, +0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD5, 0x33, 0x55, 0xC0, 0xD5, 0x76, 0x92, 0x40, 0xFD, 0xD1, 0x3C, 0x40, @@ -37170,7 +37172,7 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, +0x05, 0x06, 0x05, 0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, @@ -37179,9 +37181,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, -0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, -0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, +0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, +0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x1A, 0xD7, 0xC0, 0xFF, 0xFF, 0xFF, @@ -37244,7 +37246,7 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, +0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, @@ -38062,8 +38064,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x8F, 0x30, 0x47, 0x46, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC6, 0xA1, 0x00, 0x71, 0xC0, -0xB0, 0x5E, 0x77, 0xC6, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, +0x8F, 0x30, 0x47, 0x45, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC5, 0xA1, 0x00, 0x71, 0xC0, +0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD3, 0xDC, 0x8F, 0xC0, 0xD4, 0x1B, 0xC9, 0xB0, 0xD5, 0x33, 0x55, 0xC0, @@ -38111,8 +38113,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -38120,9 +38122,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, -0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, -0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, -0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, +0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, +0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, +0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, @@ -38209,8 +38211,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -43205,15 +43207,15 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x56, 0x29, 0x5C, 0x60, 0x56, 0xF5, 0xC2, 0xF0, 0x58, 0x13, 0xCA, 0x60, 0x58, 0xD5, 0xA4, 0xF0, 0x59, 0xF3, 0xAC, 0x60, 0x5A, 0xB5, 0x86, 0xF0, 0x5B, 0xD3, 0x8E, 0x60, 0x5C, 0x9D, 0x43, 0xE0, 0x5D, 0xB3, 0x62, 0x50, 0x5E, 0x7E, 0x77, 0x60, 0x5F, 0x93, 0x52, 0x60, 0x60, 0x5E, 0x59, 0x60, -0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3E, 0x3B, 0x60, 0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1E, 0x1D, 0x60, -0x65, 0x3A, 0xE1, 0x60, 0x66, 0x07, 0x39, 0xE0, 0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE7, 0x1B, 0xE0, -0x69, 0x03, 0xDF, 0xE0, 0x69, 0xC6, 0xFD, 0xE0, 0x6A, 0xE3, 0xC1, 0xE0, 0x6B, 0xA6, 0xDF, 0xE0, -0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x86, 0xC1, 0xE0, 0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x66, 0xA3, 0xE0, -0x70, 0x83, 0x67, 0xE0, 0x71, 0x4F, 0xC0, 0x60, 0x72, 0x63, 0x49, 0xE0, 0x73, 0x2F, 0xA2, 0x60, -0x74, 0x4C, 0x66, 0x60, 0x75, 0x0F, 0x84, 0x60, 0x76, 0x2C, 0x48, 0x60, 0x76, 0xEF, 0x66, 0x60, -0x78, 0x0C, 0x2A, 0x60, 0x78, 0xCF, 0x48, 0x60, 0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xAF, 0x2A, 0x60, -0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x98, 0x46, 0xE0, 0x7D, 0xB5, 0x0A, 0xE0, 0x7E, 0x78, 0x28, 0xE0, -0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3F, 0x8C, 0xE0, 0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1F, 0x6E, 0xE0, +0x65, 0x3A, 0xE1, 0x60, 0x66, 0x08, 0x8B, 0x60, 0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE8, 0x6D, 0x60, +0x68, 0xFA, 0xA5, 0x60, 0x69, 0xC8, 0x4F, 0x60, 0x6A, 0xDA, 0x87, 0x60, 0x6B, 0xA8, 0x31, 0x60, +0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x88, 0x13, 0x60, 0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x67, 0xF5, 0x60, +0x70, 0x83, 0x67, 0xE0, 0x71, 0x51, 0x11, 0xE0, 0x72, 0x63, 0x49, 0xE0, 0x73, 0x30, 0xF3, 0xE0, +0x74, 0x43, 0x2B, 0xE0, 0x75, 0x10, 0xD5, 0xE0, 0x76, 0x2C, 0x48, 0x60, 0x76, 0xF0, 0xB7, 0xE0, +0x78, 0x0C, 0x2A, 0x60, 0x78, 0xD0, 0x99, 0xE0, 0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xB0, 0x7B, 0xE0, +0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x99, 0x98, 0x60, 0x7D, 0xAB, 0xD0, 0x60, 0x7E, 0x79, 0x7A, 0x60, +0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, @@ -43291,22 +43293,22 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7B, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, -0x3E, 0x3B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, -0x1E, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, -0x07, 0x39, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, -0xE7, 0x1B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, 0x03, 0xDF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, -0xC6, 0xFD, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE3, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6B, -0xA6, 0xDF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, -0x86, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, -0x66, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, -0x4F, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, -0x2F, 0xA2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4C, 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x75, -0x0F, 0x84, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, -0xEF, 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, -0xCF, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, -0xAF, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, -0x98, 0x46, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB5, 0x0A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, -0x78, 0x28, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, +0x3F, 0x8C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, +0x1F, 0x6E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, +0x08, 0x8B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, +0xE8, 0x6D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFA, 0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, +0xC8, 0x4F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDA, 0x87, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, +0xA8, 0x31, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, +0x88, 0x13, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, +0x67, 0xF5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, +0x51, 0x11, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, +0x30, 0xF3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x43, 0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x75, +0x10, 0xD5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, +0xF0, 0xB7, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, +0xD0, 0x99, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, +0xB0, 0x7B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, +0x99, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAB, 0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, +0x79, 0x7A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, @@ -43323,9 +43325,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, -0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, -0x2E, 0x35, 0x2F, 0x31, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, 0x00, -0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70, +0x2C, 0x4D, 0x33, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x34, +0x2E, 0x34, 0x2F, 0x32, 0x35, 0x0A, 0x00, 0xB9, 0x64, 0xF0, 0x01, 0x47, 0x40, 0x0A, 0x00, 0x00, +0x00, 0x0A, 0x47, 0x61, 0x7A, 0x61, 0x20, 0x53, 0x74, 0x72, 0x69, 0x70, /* Asia/Harbin */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -43398,15 +43400,15 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x49, 0x6C, 0x50, 0x55, 0x15, 0xD2, 0xE0, 0x56, 0x29, 0x5C, 0x60, 0x56, 0xF5, 0xC2, 0xF0, 0x58, 0x13, 0xCA, 0x60, 0x58, 0xD5, 0xA4, 0xF0, 0x59, 0xF3, 0xAC, 0x60, 0x5A, 0xB5, 0x86, 0xF0, 0x5B, 0xD3, 0x8E, 0x60, 0x5C, 0x9D, 0x43, 0xE0, 0x5D, 0xB3, 0x62, 0x50, 0x5E, 0x7E, 0x77, 0x60, -0x5F, 0x93, 0x52, 0x60, 0x60, 0x5E, 0x59, 0x60, 0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3E, 0x3B, 0x60, -0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1E, 0x1D, 0x60, 0x65, 0x3A, 0xE1, 0x60, 0x66, 0x07, 0x39, 0xE0, -0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE7, 0x1B, 0xE0, 0x69, 0x03, 0xDF, 0xE0, 0x69, 0xC6, 0xFD, 0xE0, -0x6A, 0xE3, 0xC1, 0xE0, 0x6B, 0xA6, 0xDF, 0xE0, 0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x86, 0xC1, 0xE0, -0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x66, 0xA3, 0xE0, 0x70, 0x83, 0x67, 0xE0, 0x71, 0x4F, 0xC0, 0x60, -0x72, 0x63, 0x49, 0xE0, 0x73, 0x2F, 0xA2, 0x60, 0x74, 0x4C, 0x66, 0x60, 0x75, 0x0F, 0x84, 0x60, -0x76, 0x2C, 0x48, 0x60, 0x76, 0xEF, 0x66, 0x60, 0x78, 0x0C, 0x2A, 0x60, 0x78, 0xCF, 0x48, 0x60, -0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xAF, 0x2A, 0x60, 0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x98, 0x46, 0xE0, -0x7D, 0xB5, 0x0A, 0xE0, 0x7E, 0x78, 0x28, 0xE0, 0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, +0x5F, 0x93, 0x52, 0x60, 0x60, 0x5E, 0x59, 0x60, 0x61, 0x7B, 0x1D, 0x60, 0x62, 0x3F, 0x8C, 0xE0, +0x63, 0x5A, 0xFF, 0x60, 0x64, 0x1F, 0x6E, 0xE0, 0x65, 0x3A, 0xE1, 0x60, 0x66, 0x08, 0x8B, 0x60, +0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE8, 0x6D, 0x60, 0x68, 0xFA, 0xA5, 0x60, 0x69, 0xC8, 0x4F, 0x60, +0x6A, 0xDA, 0x87, 0x60, 0x6B, 0xA8, 0x31, 0x60, 0x6C, 0xC3, 0xA3, 0xE0, 0x6D, 0x88, 0x13, 0x60, +0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x67, 0xF5, 0x60, 0x70, 0x83, 0x67, 0xE0, 0x71, 0x51, 0x11, 0xE0, +0x72, 0x63, 0x49, 0xE0, 0x73, 0x30, 0xF3, 0xE0, 0x74, 0x43, 0x2B, 0xE0, 0x75, 0x10, 0xD5, 0xE0, +0x76, 0x2C, 0x48, 0x60, 0x76, 0xF0, 0xB7, 0xE0, 0x78, 0x0C, 0x2A, 0x60, 0x78, 0xD0, 0x99, 0xE0, +0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xB0, 0x7B, 0xE0, 0x7B, 0xCB, 0xEE, 0x60, 0x7C, 0x99, 0x98, 0x60, +0x7D, 0xAB, 0xD0, 0x60, 0x7E, 0x79, 0x7A, 0x60, 0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, @@ -43485,23 +43487,23 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x5B, 0xD3, 0x8E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x9D, 0x43, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB3, 0x62, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7E, 0x77, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x93, 0x52, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5E, 0x59, 0x60, 0x00, 0x00, 0x00, -0x00, 0x61, 0x7B, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3E, 0x3B, 0x60, 0x00, 0x00, 0x00, -0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1E, 0x1D, 0x60, 0x00, 0x00, 0x00, -0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0x07, 0x39, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE7, 0x1B, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x69, 0x03, 0xDF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC6, 0xFD, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x6A, 0xE3, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA6, 0xDF, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x86, 0xC1, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x66, 0xA3, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x4F, 0xC0, 0x60, 0x00, 0x00, 0x00, -0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x2F, 0xA2, 0x60, 0x00, 0x00, 0x00, -0x00, 0x74, 0x4C, 0x66, 0x60, 0x00, 0x00, 0x00, 0x00, 0x75, 0x0F, 0x84, 0x60, 0x00, 0x00, 0x00, -0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xEF, 0x66, 0x60, 0x00, 0x00, 0x00, -0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xCF, 0x48, 0x60, 0x00, 0x00, 0x00, -0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xAF, 0x2A, 0x60, 0x00, 0x00, 0x00, -0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x98, 0x46, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x7D, 0xB5, 0x0A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x78, 0x28, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x7F, 0x94, 0xEC, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x61, 0x7B, 0x1D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0x8C, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x63, 0x5A, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x6E, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x65, 0x3A, 0xE1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0x8B, 0x60, 0x00, 0x00, 0x00, +0x00, 0x67, 0x1A, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x6D, 0x60, 0x00, 0x00, 0x00, +0x00, 0x68, 0xFA, 0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x4F, 0x60, 0x00, 0x00, 0x00, +0x00, 0x6A, 0xDA, 0x87, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x31, 0x60, 0x00, 0x00, 0x00, +0x00, 0x6C, 0xC3, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x13, 0x60, 0x00, 0x00, 0x00, +0x00, 0x6E, 0xA3, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x67, 0xF5, 0x60, 0x00, 0x00, 0x00, +0x00, 0x70, 0x83, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x11, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x72, 0x63, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x30, 0xF3, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x74, 0x43, 0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x75, 0x10, 0xD5, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x76, 0x2C, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xB7, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x78, 0x0C, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0x99, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x79, 0xEC, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0x7B, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x7B, 0xCB, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0x98, 0x60, 0x00, 0x00, 0x00, +0x00, 0x7D, 0xAB, 0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0x7A, 0x60, 0x00, 0x00, 0x00, +0x00, 0x7F, 0x8B, 0xB2, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, 0x06, 0x07, 0x08, 0x07, 0x08, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, @@ -43518,9 +43520,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x49, 0x44, 0x54, 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, -0x34, 0x2E, 0x34, 0x2F, 0x34, 0x38, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x35, 0x2F, 0x31, -0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, 0x73, -0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B, +0x34, 0x2E, 0x34, 0x2F, 0x37, 0x32, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x34, 0x2E, 0x34, 0x2F, 0x32, +0x35, 0x0A, 0x00, 0xB9, 0x71, 0xF5, 0x01, 0x48, 0x35, 0x7C, 0x00, 0x00, 0x00, 0x09, 0x57, 0x65, +0x73, 0x74, 0x20, 0x42, 0x61, 0x6E, 0x6B, /* Asia/Ho_Chi_Minh */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -52415,8 +52417,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x8F, 0x30, 0x47, 0x46, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC6, 0xA1, 0x00, 0x71, 0xC0, -0xB0, 0x5E, 0x77, 0xC6, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, +0x8F, 0x30, 0x47, 0x45, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC5, 0xA1, 0x00, 0x71, 0xC0, +0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, 0xCC, 0x6C, 0xE7, 0xD0, 0xD3, 0xDC, 0x8F, 0xC0, 0xD4, 0x1B, 0xC9, 0xB0, 0xD5, 0x33, 0x55, 0xC0, @@ -52464,8 +52466,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -52473,9 +52475,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, -0x69, 0x87, 0x1D, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, -0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, -0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, +0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, +0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, +0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, @@ -52562,8 +52564,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBA, -0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBA, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x06, 0xFF, 0xFF, 0xBD, 0xBB, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, @@ -57536,8 +57538,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Kiev */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, 0xAA, 0x19, 0xA7, 0x64, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0xCD, 0x2E, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCE, 0xCD, 0xA8, 0x70, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, @@ -57545,9 +57547,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x0B, 0xFB, 0xF0, 0x26, 0x8D, 0x20, 0xE0, 0x28, 0xE5, 0x17, 0x80, -0x29, 0xD4, 0xEC, 0x60, 0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, 0x2C, 0xA4, 0xB1, 0x50, -0x2D, 0x94, 0xB0, 0x60, 0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, -0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, +0x29, 0xD5, 0x08, 0x80, 0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, +0x2D, 0x94, 0xCC, 0x80, 0x2E, 0x84, 0xBD, 0x80, 0x2F, 0x74, 0xAE, 0x80, 0x30, 0x64, 0x9F, 0x80, +0x31, 0x5D, 0xCB, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, @@ -57569,24 +57571,25 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, -0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x0A, 0x02, 0x0A, 0x02, 0x0A, -0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, +0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0B, 0x0C, +0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, -0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30, 0x01, -0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, -0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, -0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, +0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, +0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, +0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, +0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xCD, 0x2E, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, @@ -57601,11 +57604,11 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x20, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, -0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, +0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, +0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, @@ -57649,20 +57652,21 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, -0x08, 0x09, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, +0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x4C, 0x4D, -0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, -0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, +0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, +0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, +0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, 0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, @@ -60829,16 +60833,16 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Simferopol */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, 0xAA, 0x19, 0xA4, 0x20, 0xB5, 0xA4, 0x19, 0x60, 0xCB, 0x04, 0x8D, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xCF, 0x9F, 0x38, 0xE0, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, 0x19, 0xDB, 0x43, 0x40, 0x1A, 0xCC, 0x93, 0xD0, 0x1B, 0xBC, 0xA0, 0xF0, 0x1C, 0xAC, 0x91, 0xF0, 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, -0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x29, 0xD4, 0xEC, 0x60, -0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, 0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xB0, 0x60, +0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x29, 0xD5, 0x08, 0x80, +0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, 0x2D, 0x94, 0xCC, 0x80, 0x2D, 0xC2, 0xC6, 0xD0, 0x2E, 0x84, 0x85, 0x40, 0x2F, 0x74, 0x84, 0x50, 0x30, 0x64, 0x67, 0x40, 0x31, 0x5D, 0xA0, 0xD0, 0x32, 0x72, 0xA6, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, @@ -60851,73 +60855,74 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x5E, 0x80, 0x54, 0x4C, 0x1D, 0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, -0x08, 0x09, 0x08, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, -0x0C, 0x0D, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x00, +0x08, 0x09, 0x08, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, 0x0C, +0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, +0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, +0x0D, 0x0E, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, -0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, -0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, -0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, -0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 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, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x4B, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC4, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA4, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, -0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x04, 0x8D, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, -0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, -0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x9F, 0x38, -0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, -0x40, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, -0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, -0x40, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, -0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, -0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, -0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, -0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, 0x50, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x67, -0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, -0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, -0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, -0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, -0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, -0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, -0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, -0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, -0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, -0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, -0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, -0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, -0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, -0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, -0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, -0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, -0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, -0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, -0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x5E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x1D, -0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, -0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x02, 0x0A, 0x02, 0x0A, -0x02, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x08, 0x00, 0x00, 0x1F, 0xF8, -0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, -0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, -0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, -0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, -0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, -0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, -0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, +0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, +0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x01, 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, 0x10, 0x00, 0x00, 0x00, +0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, +0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC4, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA4, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x04, 0x8D, +0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, +0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, +0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x9F, 0x38, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, +0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, +0xF0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, +0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, +0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, +0x50, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x67, 0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, +0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, +0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, +0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, +0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, +0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, +0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, +0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, +0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, +0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, +0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, +0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, +0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, +0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, +0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, +0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, +0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, +0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x5E, +0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x1D, 0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, +0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x09, 0x08, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, +0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, +0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, +0x0C, 0x0D, 0x0E, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, +0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, +0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, +0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, +0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0C, 0x00, 0x00, +0x2A, 0x30, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, +0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, +0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x0A, 0x4D, 0x53, 0x4B, 0x2D, 0x33, 0x0A, 0x00, 0xCD, 0xEA, 0xD7, 0x01, 0x46, 0xB0, 0xD0, 0x00, 0x00, 0x00, 0x06, 0x43, 0x72, 0x69, 0x6D, 0x65, 0x61, @@ -61811,17 +61816,17 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Uzhgorod */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x00, 0xC8, 0x09, 0x71, 0x90, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0xA1, 0x9E, 0xE0, 0xD1, 0xE5, 0xFD, 0xF0, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, 0x19, 0xDB, 0x43, 0x40, 0x1A, 0xCC, 0x93, 0xD0, 0x1B, 0xBC, 0xA0, 0xF0, 0x1C, 0xAC, 0x91, 0xF0, 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, -0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x27, 0xF5, 0x42, 0xA0, 0x29, 0xD4, 0xEC, 0x60, -0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, 0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xB0, 0x60, -0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x27, 0xF5, 0x42, 0xA0, 0x29, 0xD5, 0x08, 0x80, +0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, 0x2D, 0x94, 0xCC, 0x80, +0x2E, 0x84, 0xBD, 0x80, 0x2F, 0x74, 0xAE, 0x80, 0x30, 0x64, 0x9F, 0x80, 0x31, 0x5D, 0xCB, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, @@ -61844,98 +61849,99 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x01, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x01, 0x08, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, +0x09, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x4C, 0x4D, 0x54, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, +0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, +0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, +0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0x6A, 0xEE, 0xB0, 0x18, 0xFF, 0xFF, +0xFF, 0xFF, 0xC8, 0x09, 0x71, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, +0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, +0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0xA1, 0x9E, 0xE0, 0xFF, 0xFF, +0xFF, 0xFF, 0xD1, 0xE5, 0xFD, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, +0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x27, 0xF5, 0x42, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, +0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, +0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, +0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, +0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, +0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, +0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, +0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, +0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, +0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, +0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, +0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, +0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, +0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, +0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, +0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, +0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, +0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, +0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, +0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, +0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, +0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, +0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, +0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, +0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, +0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, +0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, +0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, +0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, +0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, +0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, +0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, +0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, +0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, +0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, +0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, +0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, +0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, +0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, +0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, +0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, +0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, +0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x05, 0x04, 0x05, +0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x01, 0x08, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0A, 0x09, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x00, 0x00, +0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, +0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, +0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFF, -0xFF, 0xFF, 0x6A, 0xEE, 0xB0, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x09, 0x71, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, -0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, -0xFF, 0xFF, 0xD0, 0xA1, 0x9E, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xE5, 0xFD, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, 0x00, -0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, 0x00, -0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, 0x00, -0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, -0x00, 0x00, 0x26, 0x8D, 0x2E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x42, 0xA0, 0x00, 0x00, -0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, -0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, -0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, -0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, -0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, -0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, -0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, -0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, -0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, -0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, -0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, -0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, -0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, -0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, -0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, -0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, -0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, -0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, -0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, -0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, -0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, -0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, -0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, -0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, -0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, -0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, -0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, -0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, -0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, -0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, -0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, -0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, -0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, -0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, -0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, -0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, -0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, -0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, -0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, -0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, -0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, -0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, -0x03, 0x02, 0x03, 0x02, 0x01, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x01, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x00, 0x00, 0x14, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, -0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, -0x00, 0x00, 0x38, 0x40, 0x01, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x15, 0x4C, 0x4D, -0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, -0x53, 0x4B, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, -0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD3, 0x83, 0x22, 0x01, 0x34, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x54, 0x72, @@ -62882,8 +62888,8 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { /* Europe/Zaporozhye */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x24, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x24, 0x80, 0x00, 0x00, 0x00, 0xAA, 0x19, 0xA3, 0x30, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0xAA, 0xE7, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCE, 0xBD, 0xD6, 0x70, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, @@ -62891,9 +62897,9 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x0B, 0xFB, 0xF0, 0x27, 0x05, 0x27, 0x70, 0x27, 0xF5, 0x18, 0x70, -0x28, 0xE4, 0xED, 0x50, 0x29, 0xD4, 0xEC, 0x60, 0x2A, 0xC4, 0xCF, 0x50, 0x2B, 0xB4, 0xCE, 0x60, -0x2C, 0xA4, 0xB1, 0x50, 0x2D, 0x94, 0xB0, 0x60, 0x2E, 0x84, 0x93, 0x50, 0x2F, 0x74, 0xBC, 0x90, -0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, +0x28, 0xE4, 0xED, 0x50, 0x29, 0xD5, 0x08, 0x80, 0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, +0x2C, 0xA4, 0xDB, 0x80, 0x2D, 0x94, 0xCC, 0x80, 0x2E, 0x84, 0xBD, 0x80, 0x2F, 0x74, 0xAE, 0x80, +0x30, 0x64, 0x9F, 0x80, 0x31, 0x5D, 0xCB, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, @@ -62916,24 +62922,25 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x00, 0x00, +0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, -0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x1C, 0x20, +0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, +0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, +0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, -0x00, 0x0D, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC3, 0x08, 0xFF, 0xFF, +0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, +0x00, 0x0F, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC3, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA3, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xAA, 0xE7, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, @@ -62948,11 +62955,11 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x27, 0x70, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x18, 0x70, 0x00, 0x00, -0x00, 0x00, 0x28, 0xE4, 0xED, 0x50, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xEC, 0x60, 0x00, 0x00, -0x00, 0x00, 0x2A, 0xC4, 0xCF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xCE, 0x60, 0x00, 0x00, -0x00, 0x00, 0x2C, 0xA4, 0xB1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xB0, 0x60, 0x00, 0x00, -0x00, 0x00, 0x2E, 0x84, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, -0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, +0x00, 0x00, 0x28, 0xE4, 0xED, 0x50, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, +0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, 0x00, +0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, @@ -62996,20 +63003,21 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, -0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, +0x09, 0x08, 0x0A, 0x02, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x20, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x12, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x16, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x01, 0x1B, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x1F, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, -0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, -0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, +0x01, 0x1F, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1F, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, +0x32, 0x32, 0x30, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, +0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD2, 0x51, 0x25, 0x01, 0x48, @@ -69555,4 +69563,4 @@ const unsigned char timelib_timezone_db_data_builtin[703734] = { }; #endif -const timelib_tzdb timezonedb_builtin = { "2021.5", 595, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; +const timelib_tzdb timezonedb_builtin = { "2022.1", 595, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; From 6828f9d1af7faa18a563d370d84a0182460f5605 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Thu, 7 Apr 2022 11:59:29 +0200 Subject: [PATCH 48/63] Fix newly introduced test We need to tell the test runner that ext/curl is required to run the test. --- ext/curl/tests/curl_postfields_array.phpt | 1 + 1 file changed, 1 insertion(+) diff --git a/ext/curl/tests/curl_postfields_array.phpt b/ext/curl/tests/curl_postfields_array.phpt index 079675cf08f78..05aa91a3f06df 100644 --- a/ext/curl/tests/curl_postfields_array.phpt +++ b/ext/curl/tests/curl_postfields_array.phpt @@ -1,6 +1,7 @@ --TEST-- CURLOPT_POSTFIELDS with multi-value fields --EXTENSIONS-- +curl sockets --FILE-- Date: Thu, 7 Apr 2022 15:12:40 +0100 Subject: [PATCH 49/63] Minor refactoring of spl_directory.c Using more appropriate types Fix comments Early returns --- ext/spl/spl_directory.c | 114 ++++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 58 deletions(-) diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index f752593c92351..f3d4fa2b92f7a 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -209,7 +209,7 @@ PHPAPI char* spl_filesystem_object_get_path(spl_filesystem_object *intern, size_ return intern->path ? ZSTR_VAL(intern->path) : NULL; } /* }}} */ -static inline int spl_filesystem_object_get_file_name(spl_filesystem_object *intern) /* {{{ */ +static inline zend_result spl_filesystem_object_get_file_name(spl_filesystem_object *intern) /* {{{ */ { if (intern->file_name) { /* already known */ @@ -248,7 +248,8 @@ static inline int spl_filesystem_object_get_file_name(spl_filesystem_object *int return SUCCESS; } /* }}} */ -static int spl_filesystem_dir_read(spl_filesystem_object *intern) /* {{{ */ +/* TODO Make void or have callers check return value */ +static bool spl_filesystem_dir_read(spl_filesystem_object *intern) /* {{{ */ { if (intern->file_name) { /* invalidate */ @@ -266,7 +267,7 @@ static int spl_filesystem_dir_read(spl_filesystem_object *intern) /* {{{ */ #define IS_SLASH_AT(zs, pos) (IS_SLASH(zs[pos])) -static inline int spl_filesystem_is_dot(const char * d_name) /* {{{ */ +static inline bool spl_filesystem_is_dot(const char * d_name) /* {{{ */ { return !strcmp(d_name, ".") || !strcmp(d_name, ".."); } @@ -277,7 +278,7 @@ static inline int spl_filesystem_is_dot(const char * d_name) /* {{{ */ * Can emit an E_WARNING as it reports errors from php_stream_opendir() */ static void spl_filesystem_dir_open(spl_filesystem_object* intern, zend_string *path) { - int skip_dots = SPL_HAS_FLAG(intern->flags, SPL_FILE_DIR_SKIPDOTS); + bool skip_dots = SPL_HAS_FLAG(intern->flags, SPL_FILE_DIR_SKIPDOTS); intern->type = SPL_FS_DIR; intern->u.dir.dirp = php_stream_opendir(ZSTR_VAL(path), REPORT_ERRORS, FG(default_context)); @@ -375,7 +376,6 @@ static zend_object *spl_filesystem_object_clone(zend_object *old_object) zend_object *new_object; spl_filesystem_object *intern; spl_filesystem_object *source; - int index, skip_dots; source = spl_filesystem_from_obj(old_object); new_object = spl_filesystem_object_new_ex(old_object->ce); @@ -392,17 +392,19 @@ static zend_object *spl_filesystem_object_clone(zend_object *old_object) intern->file_name = zend_string_copy(source->file_name); } break; - case SPL_FS_DIR: + case SPL_FS_DIR: { spl_filesystem_dir_open(intern, source->path); /* read until we hit the position in which we were before */ - skip_dots = SPL_HAS_FLAG(source->flags, SPL_FILE_DIR_SKIPDOTS); - for(index = 0; index < source->u.dir.index; ++index) { + bool skip_dots = SPL_HAS_FLAG(source->flags, SPL_FILE_DIR_SKIPDOTS); + int index; + for (index = 0; index < source->u.dir.index; ++index) { do { spl_filesystem_dir_read(intern); } while (skip_dots && spl_filesystem_is_dot(intern->u.dir.entry.d_name)); } intern->u.dir.index = index; break; + } case SPL_FS_FILE: ZEND_UNREACHABLE(); } @@ -503,7 +505,7 @@ static spl_filesystem_object *spl_filesystem_object_create_type(int num_args, sp intern = spl_filesystem_from_obj(spl_filesystem_object_new_ex(ce)); RETVAL_OBJ(&intern->std); - if (spl_filesystem_object_get_file_name(source) != SUCCESS) { + if (spl_filesystem_object_get_file_name(source) == FAILURE) { return NULL; } @@ -540,7 +542,7 @@ static spl_filesystem_object *spl_filesystem_object_create_type(int num_args, sp intern = spl_filesystem_from_obj(spl_filesystem_object_new_ex(ce)); RETVAL_OBJ(&intern->std); - if (spl_filesystem_object_get_file_name(source) != SUCCESS) { + if (spl_filesystem_object_get_file_name(source) == FAILURE) { return NULL; } @@ -584,7 +586,7 @@ static spl_filesystem_object *spl_filesystem_object_create_type(int num_args, sp return NULL; } /* }}} */ -static int spl_filesystem_is_invalid_or_dot(const char * d_name) /* {{{ */ +static bool spl_filesystem_is_invalid_or_dot(const char * d_name) /* {{{ */ { return d_name[0] == '\0' || spl_filesystem_is_dot(d_name); } @@ -709,7 +711,7 @@ void spl_filesystem_object_construct(INTERNAL_FUNCTION_PARAMETERS, zend_long cto { spl_filesystem_object *intern; zend_string *path; - int parsed; + zend_result parsed; zend_long flags = (ctor_flags & ~DIT_CTOR_FLAGS); zend_error_handling error_handling; @@ -809,7 +811,7 @@ PHP_METHOD(DirectoryIterator, current) PHP_METHOD(DirectoryIterator, next) { spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(ZEND_THIS); - int skip_dots = SPL_HAS_FLAG(intern->flags, SPL_FILE_DIR_SKIPDOTS); + bool skip_dots = SPL_HAS_FLAG(intern->flags, SPL_FILE_DIR_SKIPDOTS); if (zend_parse_parameters_none() == FAILURE) { RETURN_THROWS(); @@ -845,7 +847,7 @@ PHP_METHOD(DirectoryIterator, seek) } while (intern->u.dir.index < pos) { - int valid = 0; + bool valid = 0; zend_call_method_with_0_params(Z_OBJ_P(ZEND_THIS), Z_OBJCE_P(ZEND_THIS), &intern->u.dir.func_valid, "valid", &retval); valid = zend_is_true(&retval); zval_ptr_dtor(&retval); @@ -1048,7 +1050,7 @@ PHP_METHOD(DirectoryIterator, getBasename) CHECK_DIRECTORY_ITERATOR_IS_INITIALIZED(intern); fname = php_basename(intern->u.dir.entry.d_name, strlen(intern->u.dir.entry.d_name), suffix, slen); - RETVAL_STR(fname); + RETURN_STR(fname); } /* }}} */ @@ -1082,7 +1084,7 @@ PHP_METHOD(FilesystemIterator, key) if (SPL_FILE_DIR_KEY(intern, SPL_FILE_DIR_KEY_AS_FILENAME)) { RETURN_STRING(intern->u.dir.entry.d_name); } else { - if (spl_filesystem_object_get_file_name(intern) != SUCCESS) { + if (spl_filesystem_object_get_file_name(intern) == FAILURE) { RETURN_THROWS(); } RETURN_STR_COPY(intern->file_name); @@ -1100,12 +1102,12 @@ PHP_METHOD(FilesystemIterator, current) } if (SPL_FILE_DIR_CURRENT(intern, SPL_FILE_DIR_CURRENT_AS_PATHNAME)) { - if (spl_filesystem_object_get_file_name(intern) != SUCCESS) { + if (spl_filesystem_object_get_file_name(intern) == FAILURE) { RETURN_THROWS(); } RETURN_STR_COPY(intern->file_name); } else if (SPL_FILE_DIR_CURRENT(intern, SPL_FILE_DIR_CURRENT_AS_FILEINFO)) { - if (spl_filesystem_object_get_file_name(intern) != SUCCESS) { + if (spl_filesystem_object_get_file_name(intern) == FAILURE) { RETURN_THROWS(); } spl_filesystem_object_create_type(0, intern, SPL_FS_INFO, NULL, return_value); @@ -1129,7 +1131,7 @@ PHP_METHOD(DirectoryIterator, isDot) } /* }}} */ -/* {{{ Cronstructs a new SplFileInfo from a path. */ +/* {{{ Constructs a new SplFileInfo from a path. */ /* When the constructor gets called the object is already created by the engine, so we must only call 'additional' initializations. */ @@ -1159,7 +1161,7 @@ PHP_METHOD(SplFileInfo, func_name) \ if (zend_parse_parameters_none() == FAILURE) { \ RETURN_THROWS(); \ } \ - if (spl_filesystem_object_get_file_name(intern) != SUCCESS) { \ + if (spl_filesystem_object_get_file_name(intern) == FAILURE) { \ RETURN_THROWS(); \ } \ zend_replace_error_handling(EH_THROW, spl_ce_RuntimeException, &error_handling);\ @@ -1240,7 +1242,7 @@ PHP_METHOD(SplFileInfo, getLinkTarget) } if (intern->file_name == NULL) { - if (spl_filesystem_object_get_file_name(intern) != SUCCESS) { + if (spl_filesystem_object_get_file_name(intern) == FAILURE) { RETURN_THROWS(); } } @@ -1287,7 +1289,7 @@ PHP_METHOD(SplFileInfo, getRealPath) } if (intern->type == SPL_FS_DIR && !intern->file_name && intern->u.dir.entry.d_name[0]) { - if (spl_filesystem_object_get_file_name(intern) != SUCCESS) { + if (spl_filesystem_object_get_file_name(intern) == FAILURE) { RETURN_THROWS(); } } @@ -1302,12 +1304,12 @@ PHP_METHOD(SplFileInfo, getRealPath) if (filename && VCWD_REALPATH(filename, buff)) { #ifdef ZTS if (VCWD_ACCESS(buff, F_OK)) { - RETVAL_FALSE; + RETURN_FALSE; } else #endif - RETVAL_STRING(buff); + RETURN_STRING(buff); } else { - RETVAL_FALSE; + RETURN_FALSE; } } /* }}} */ @@ -1388,7 +1390,7 @@ PHP_METHOD(SplFileInfo, getPathInfo) PHP_METHOD(SplFileInfo, __debugInfo) { if (zend_parse_parameters_none() == FAILURE) { - return; + RETURN_THROWS(); } RETURN_ARR(spl_filesystem_object_get_debug_info(Z_OBJ_P(ZEND_THIS))); @@ -1401,7 +1403,7 @@ PHP_METHOD(SplFileInfo, _bad_state_ex) } /* }}} */ -/* {{{ Cronstructs a new dir iterator from a path. */ +/* {{{ Constructs a new dir iterator from a path. */ PHP_METHOD(FilesystemIterator, __construct) { spl_filesystem_object_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, DIT_CTOR_FLAGS | SPL_FILE_DIR_SKIPDOTS); @@ -1412,7 +1414,7 @@ PHP_METHOD(FilesystemIterator, __construct) PHP_METHOD(FilesystemIterator, rewind) { spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(ZEND_THIS); - int skip_dots = SPL_HAS_FLAG(intern->flags, SPL_FILE_DIR_SKIPDOTS); + bool skip_dots = SPL_HAS_FLAG(intern->flags, SPL_FILE_DIR_SKIPDOTS); if (zend_parse_parameters_none() == FAILURE) { RETURN_THROWS(); @@ -1468,7 +1470,7 @@ PHP_METHOD(RecursiveDirectoryIterator, hasChildren) if (spl_filesystem_is_invalid_or_dot(intern->u.dir.entry.d_name)) { RETURN_FALSE; } else { - if (spl_filesystem_object_get_file_name(intern) != SUCCESS) { + if (spl_filesystem_object_get_file_name(intern) == FAILURE) { RETURN_THROWS(); } php_stat(intern->file_name, FS_LPERMS, return_value); @@ -1499,7 +1501,7 @@ PHP_METHOD(RecursiveDirectoryIterator, getChildren) RETURN_THROWS(); } - if (spl_filesystem_object_get_file_name(intern) != SUCCESS) { + if (spl_filesystem_object_get_file_name(intern) == FAILURE) { RETURN_THROWS(); } @@ -1720,7 +1722,7 @@ static zval *spl_filesystem_tree_it_current_data(zend_object_iterator *iter) if (SPL_FILE_DIR_CURRENT(object, SPL_FILE_DIR_CURRENT_AS_PATHNAME)) { if (Z_ISUNDEF(iterator->current)) { - if (spl_filesystem_object_get_file_name(object) != SUCCESS) { + if (spl_filesystem_object_get_file_name(object) == FAILURE) { return NULL; } ZVAL_STR_COPY(&iterator->current, object->file_name); @@ -1728,7 +1730,7 @@ static zval *spl_filesystem_tree_it_current_data(zend_object_iterator *iter) return &iterator->current; } else if (SPL_FILE_DIR_CURRENT(object, SPL_FILE_DIR_CURRENT_AS_FILEINFO)) { if (Z_ISUNDEF(iterator->current)) { - if (spl_filesystem_object_get_file_name(object) != SUCCESS) { + if (spl_filesystem_object_get_file_name(object) == FAILURE) { return NULL; } spl_filesystem_object_create_type(0, object, SPL_FS_INFO, NULL, &iterator->current); @@ -1748,7 +1750,7 @@ static void spl_filesystem_tree_it_current_key(zend_object_iterator *iter, zval if (SPL_FILE_DIR_KEY(object, SPL_FILE_DIR_KEY_AS_FILENAME)) { ZVAL_STRING(key, object->u.dir.entry.d_name); } else { - if (spl_filesystem_object_get_file_name(object) != SUCCESS) { + if (spl_filesystem_object_get_file_name(object) == FAILURE) { return; } ZVAL_STR_COPY(key, object->file_name); @@ -1860,7 +1862,7 @@ static int spl_filesystem_object_cast(zend_object *readobj, zval *writeobj, int } /* }}} */ -static int spl_filesystem_file_read(spl_filesystem_object *intern, int silent) /* {{{ */ +static zend_result spl_filesystem_file_read(spl_filesystem_object *intern, bool silent) /* {{{ */ { char *buf; size_t line_len = 0; @@ -1909,10 +1911,10 @@ static int spl_filesystem_file_read(spl_filesystem_object *intern, int silent) / return SUCCESS; } /* }}} */ -static int spl_filesystem_file_read_csv(spl_filesystem_object *intern, char delimiter, char enclosure, int escape, zval *return_value) /* {{{ */ +static zend_result spl_filesystem_file_read_csv(spl_filesystem_object *intern, char delimiter, char enclosure, int escape, zval *return_value) /* {{{ */ { do { - int ret = spl_filesystem_file_read(intern, 1); + zend_result ret = spl_filesystem_file_read(intern, 1); if (ret != SUCCESS) { return ret; } @@ -1934,7 +1936,7 @@ static int spl_filesystem_file_read_csv(spl_filesystem_object *intern, char deli } /* }}} */ -static int spl_filesystem_file_read_line_ex(zval * this_ptr, spl_filesystem_object *intern, int silent) /* {{{ */ +static zend_result spl_filesystem_file_read_line_ex(zval * this_ptr, spl_filesystem_object *intern, int silent) /* {{{ */ { zval retval; @@ -1977,7 +1979,7 @@ static int spl_filesystem_file_read_line_ex(zval * this_ptr, spl_filesystem_obje } } /* }}} */ -static int spl_filesystem_file_is_empty_line(spl_filesystem_object *intern) /* {{{ */ +static bool spl_filesystem_file_is_empty_line(spl_filesystem_object *intern) /* {{{ */ { if (intern->u.file.current_line) { return intern->u.file.current_line_len == 0; @@ -2016,9 +2018,9 @@ static int spl_filesystem_file_is_empty_line(spl_filesystem_object *intern) /* { } /* }}} */ -static int spl_filesystem_file_read_line(zval * this_ptr, spl_filesystem_object *intern, int silent) /* {{{ */ +static zend_result spl_filesystem_file_read_line(zval * this_ptr, spl_filesystem_object *intern, int silent) /* {{{ */ { - int ret = spl_filesystem_file_read_line_ex(this_ptr, intern, silent); + zend_result ret = spl_filesystem_file_read_line_ex(this_ptr, intern, silent); while (SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_SKIP_EMPTY) && ret == SUCCESS && spl_filesystem_file_is_empty_line(intern)) { spl_filesystem_file_free_line(intern); @@ -2160,12 +2162,11 @@ PHP_METHOD(SplFileObject, valid) if (SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_READ_AHEAD)) { RETURN_BOOL(intern->u.file.current_line || !Z_ISUNDEF(intern->u.file.current_zval)); - } else { - if(!intern->u.file.stream) { - RETURN_FALSE; - } - RETVAL_BOOL(!php_stream_eof(intern->u.file.stream)); } + if (!intern->u.file.stream) { + RETURN_FALSE; + } + RETURN_BOOL(!php_stream_eof(intern->u.file.stream)); } /* }}} */ /* {{{ Return next line from file */ @@ -2568,16 +2569,15 @@ PHP_METHOD(SplFileObject, fgetc) result = php_stream_getc(intern->u.file.stream); if (result == EOF) { - RETVAL_FALSE; - } else { - if (result == '\n') { - intern->u.file.current_line_num++; - } - buf[0] = result; - buf[1] = '\0'; - - RETURN_STRINGL(buf, 1); + RETURN_FALSE; + } + if (result == '\n') { + intern->u.file.current_line_num++; } + buf[0] = result; + buf[1] = '\0'; + + RETURN_STRINGL(buf, 1); } /* }}} */ /* {{{ Output all remaining data from a file pointer */ @@ -2734,11 +2734,9 @@ PHP_METHOD(SplFileObject, seek) return; } } - if (line_pos > 0) { - if (!SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_READ_AHEAD)) { + if (line_pos > 0 && !SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_READ_AHEAD)) { intern->u.file.current_line_num++; - spl_filesystem_file_free_line(intern); - } + spl_filesystem_file_free_line(intern); } } /* }}} */ From 7c702b72f28d2b47540f98dc3fed1efad771b09c Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Tue, 29 Mar 2022 13:53:15 +0200 Subject: [PATCH 50/63] Fix GH-8267: MySQLi uses unsupported format specifier on Windows Instead of using the unsupported `%I64u` and `%I64d` format specifiers on Windows, we use the portable `PRIu64` and `PRId64` specifiers. The `L64()` macro and the `my_longlong` typedef should be adapted as well, as the `i64` literal suffix is still supported by MSVC, but using `LL` or `ll` is recommended[1], and the standard `int64_t` is available there anyway. This is not urgent, though. [1] Closes GH-8268. --- NEWS | 5 ++++- ext/mysqli/php_mysqli_structs.h | 11 +++++------ ext/mysqli/tests/gh8267.phpt | 22 ++++++++++++++++++++++ 3 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 ext/mysqli/tests/gh8267.phpt diff --git a/NEWS b/NEWS index c26dfd03a1988..a28ed64e8c4d7 100644 --- a/NEWS +++ b/NEWS @@ -3,10 +3,13 @@ PHP NEWS ?? ??? 2022, PHP 8.0.19 - Core: - . Fixed bug GH-8289 (Exceptions thrown within a yielded from iterator are not rethrown into the generator). (Bob) +- MySQLi: + . Fixed bug GH-8267 (MySQLi uses unsupported format specifier on Windows). + (cmb) + 14 Apr 2022, PHP 8.0.18 - Core: diff --git a/ext/mysqli/php_mysqli_structs.h b/ext/mysqli/php_mysqli_structs.h index 16ed9ddefce5c..eb74a35697a04 100644 --- a/ext/mysqli/php_mysqli_structs.h +++ b/ext/mysqli/php_mysqli_structs.h @@ -134,8 +134,6 @@ typedef struct { #ifdef PHP_WIN32 #define PHP_MYSQLI_API __declspec(dllexport) -#define MYSQLI_LLU_SPEC "%I64u" -#define MYSQLI_LL_SPEC "%I64d" #ifndef L64 #define L64(x) x##i64 #endif @@ -146,16 +144,17 @@ typedef __int64 my_longlong; # else # define PHP_MYSQLI_API # endif -/* we need this for PRIu64 and PRId64 */ -#include -#define MYSQLI_LLU_SPEC "%" PRIu64 -#define MYSQLI_LL_SPEC "%" PRId64 #ifndef L64 #define L64(x) x##LL #endif typedef int64_t my_longlong; #endif +/* we need this for PRIu64 and PRId64 */ +#include +#define MYSQLI_LLU_SPEC "%" PRIu64 +#define MYSQLI_LL_SPEC "%" PRId64 + #ifdef ZTS #include "TSRM.h" #endif diff --git a/ext/mysqli/tests/gh8267.phpt b/ext/mysqli/tests/gh8267.phpt new file mode 100644 index 0000000000000..204bfbb79caf9 --- /dev/null +++ b/ext/mysqli/tests/gh8267.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug GH-8267 (MySQLi uses unsupported format specifier on Windows) +--SKIPIF-- + +--FILE-- +query("DROP TABLE IF EXISTS foo"); +$mysqli->query("CREATE TABLE foo (id BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY (id))"); +$mysqli->query("INSERT INTO foo VALUES (9223372036854775807)"); +var_dump($mysqli->insert_id); +$mysqli->query("INSERT INTO foo VALUES (0)"); +var_dump($mysqli->insert_id); +?> +--EXPECT-- +string(19) "9223372036854775807" +string(19) "9223372036854775808" From c68591fa1681dd63b34a429a3378c37f4a657d8d Mon Sep 17 00:00:00 2001 From: Levi Morrison Date: Thu, 7 Apr 2022 14:49:24 -0600 Subject: [PATCH 51/63] Use AS_ECHO([]) instead of obsolete $as_echo (#8321) --- build/php.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/php.m4 b/build/php.m4 index 94e824f6cc263..fb28f462396fc 100644 --- a/build/php.m4 +++ b/build/php.m4 @@ -2152,7 +2152,7 @@ EOF else break fi - $as_echo "$CURRENT_ARG \\" >>$1 + AS_ECHO(["$CURRENT_ARG \\"]) >>$1 CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS $CURRENT_ARG" done echo '"[$]@"' >> $1 From 90851977348cbb8c65fce19a1670868422414fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20D=C3=BCsterhus?= Date: Tue, 21 Dec 2021 12:21:24 +0100 Subject: [PATCH 52/63] Implement the "Redacting parameters in back traces" RFC https://wiki.php.net/rfc/redact_parameters_in_back_traces --- UPGRADING | 5 + .../sensitive_parameter.phpt | 51 ++++++++ .../sensitive_parameter_arrow_function.phpt | 28 +++++ .../sensitive_parameter_closure.phpt | 51 ++++++++ ...parameter_correctly_captures_original.phpt | 70 +++++++++++ .../sensitive_parameter_eval_call.phpt | 72 +++++++++++ .../sensitive_parameter_eval_define.phpt | 53 ++++++++ .../sensitive_parameter_extra_arguments.phpt | 62 ++++++++++ ...ensitive_parameter_multiple_arguments.phpt | 65 ++++++++++ .../sensitive_parameter_named_arguments.phpt | 65 ++++++++++ .../sensitive_parameter_nested_calls.phpt | 115 ++++++++++++++++++ .../sensitive_parameter_value.phpt | 43 +++++++ .../sensitive_parameter_value_clone.phpt | 15 +++ ...ve_parameter_value_keeps_object_alive.phpt | 74 +++++++++++ ...e_parameter_value_no_dynamic_property.phpt | 15 +++ .../sensitive_parameter_value_reflection.phpt | 15 +++ .../sensitive_parameter_value_serialize.phpt | 16 +++ .../sensitive_parameter_value_to_string.phpt | 15 +++ ...ensitive_parameter_variadic_arguments.phpt | 65 ++++++++++ Zend/zend_attributes.c | 62 ++++++++++ Zend/zend_attributes.h | 2 + Zend/zend_attributes.stub.php | 23 ++++ Zend/zend_attributes_arginfo.h | 60 ++++++++- Zend/zend_builtin_functions.c | 81 ++++++++++-- 24 files changed, 1113 insertions(+), 10 deletions(-) create mode 100644 Zend/tests/function_arguments/sensitive_parameter.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_arrow_function.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_closure.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_correctly_captures_original.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_eval_call.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_eval_define.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_extra_arguments.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_multiple_arguments.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_named_arguments.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_nested_calls.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_value.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_value_clone.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_value_keeps_object_alive.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_value_no_dynamic_property.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_value_reflection.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_value_serialize.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_value_to_string.phpt create mode 100644 Zend/tests/function_arguments/sensitive_parameter_variadic_arguments.phpt diff --git a/UPGRADING b/UPGRADING index b99bb790445c3..159858c997e86 100644 --- a/UPGRADING +++ b/UPGRADING @@ -31,6 +31,11 @@ PHP 8.2 UPGRADE NOTES 2. New Features ======================================== +- Core: + . Added the #\[\SensitiveParameter] attribute to redact sensitive data in + backtraces. + RFC: https://wiki.php.net/rfc/redact_parameters_in_back_traces + - Curl: . Added CURLINFO_EFFECTIVE_METHOD option and returning the effective HTTP method in curl_getinfo() return value. diff --git a/Zend/tests/function_arguments/sensitive_parameter.phpt b/Zend/tests/function_arguments/sensitive_parameter.phpt new file mode 100644 index 0000000000000..8a76db6626de0 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter.phpt @@ -0,0 +1,51 @@ +--TEST-- +The SensitiveParameter attribute suppresses the single sensitive argument. +--FILE-- +getTrace()); +} + +test('sensitive'); + +?> +--EXPECTF-- +#0 %ssensitive_parameter.php(10): test(Object(SensitiveParameterValue)) +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter.php" + ["line"]=> + int(10) + ["function"]=> + string(4) "test" + ["args"]=> + array(1) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter.php" + ["line"]=> + int(10) + ["function"]=> + string(4) "test" + ["args"]=> + array(1) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} diff --git a/Zend/tests/function_arguments/sensitive_parameter_arrow_function.phpt b/Zend/tests/function_arguments/sensitive_parameter_arrow_function.phpt new file mode 100644 index 0000000000000..da57bc55e7f46 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_arrow_function.phpt @@ -0,0 +1,28 @@ +--TEST-- +The SensitiveParameter attribute suppresses the single sensitive argument for arrow functions. +--FILE-- + (new Exception)->getTrace(); + +var_dump($test('sensitive')); + +?> +--EXPECTF-- +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_arrow_function.php" + ["line"]=> + int(5) + ["function"]=> + string(9) "{closure}" + ["args"]=> + array(1) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} diff --git a/Zend/tests/function_arguments/sensitive_parameter_closure.phpt b/Zend/tests/function_arguments/sensitive_parameter_closure.phpt new file mode 100644 index 0000000000000..f2b038ceab953 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_closure.phpt @@ -0,0 +1,51 @@ +--TEST-- +The SensitiveParameter attribute suppresses the single sensitive argument for closures. +--FILE-- +getTrace()); +}; + +$test('sensitive'); + +?> +--EXPECTF-- +#0 %ssensitive_parameter_closure.php(10): {closure}(Object(SensitiveParameterValue)) +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_closure.php" + ["line"]=> + int(10) + ["function"]=> + string(9) "{closure}" + ["args"]=> + array(1) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_closure.php" + ["line"]=> + int(10) + ["function"]=> + string(9) "{closure}" + ["args"]=> + array(1) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} diff --git a/Zend/tests/function_arguments/sensitive_parameter_correctly_captures_original.phpt b/Zend/tests/function_arguments/sensitive_parameter_correctly_captures_original.phpt new file mode 100644 index 0000000000000..1a6dc97dd2e43 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_correctly_captures_original.phpt @@ -0,0 +1,70 @@ +--TEST-- +The SensitiveParameterValue replacement value correctly captures the original value. +--FILE-- +getMessage(), PHP_EOL; + $testFrame = $e->getTrace()[0]; + var_dump($testFrame['function']); + var_dump(count($testFrame['args'])); + var_dump($testFrame['args'][0]); + assert($testFrame['args'][1] instanceof SensitiveParameterValue); + var_dump($testFrame['args'][1]->getValue()); + var_dump($testFrame['args'][2]); + echo "Success", PHP_EOL; +} + +function test2( + $foo, + #[SensitiveParameter] ...$variadic, +) { + throw new Exception('Error 2'); +} + +try { + test2('foo', 'variadic1', 'variadic2', 'variadic3'); + echo 'Not reached'; +} catch (Exception $e) { + echo $e->getMessage(), PHP_EOL; + $testFrame = $e->getTrace()[0]; + var_dump($testFrame['function']); + var_dump(count($testFrame['args'])); + var_dump($testFrame['args'][0]); + assert($testFrame['args'][1] instanceof SensitiveParameterValue); + var_dump($testFrame['args'][1]->getValue()); + assert($testFrame['args'][2] instanceof SensitiveParameterValue); + var_dump($testFrame['args'][2]->getValue()); + assert($testFrame['args'][3] instanceof SensitiveParameterValue); + var_dump($testFrame['args'][3]->getValue()); + echo "Success", PHP_EOL; +} + +?> +--EXPECTF-- +Error +string(4) "test" +int(3) +string(3) "foo" +string(3) "bar" +string(3) "baz" +Success +Error 2 +string(5) "test2" +int(4) +string(3) "foo" +string(9) "variadic1" +string(9) "variadic2" +string(9) "variadic3" +Success diff --git a/Zend/tests/function_arguments/sensitive_parameter_eval_call.phpt b/Zend/tests/function_arguments/sensitive_parameter_eval_call.phpt new file mode 100644 index 0000000000000..8bb8bc736f477 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_eval_call.phpt @@ -0,0 +1,72 @@ +--TEST-- +The SensitiveParameter attribute suppresses the single sensitive argument in a function called in eval(). +--FILE-- +getTrace()); +} + +eval(<<<'EOT' +test('sensitive'); +EOT); + +?> +--EXPECTF-- +#0 %ssensitive_parameter_eval_call.php(11) : eval()'d code(1): test(Object(SensitiveParameterValue)) +#1 %ssensitive_parameter_eval_call.php(11): eval() +array(2) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_eval_call.php(11) : eval()'d code" + ["line"]=> + int(1) + ["function"]=> + string(4) "test" + ["args"]=> + array(1) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } + [1]=> + array(3) { + ["file"]=> + string(%d) "%ssensitive_parameter_eval_call.php" + ["line"]=> + int(11) + ["function"]=> + string(4) "eval" + } +} +array(2) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_eval_call.php(11) : eval()'d code" + ["line"]=> + int(1) + ["function"]=> + string(4) "test" + ["args"]=> + array(1) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } + [1]=> + array(3) { + ["file"]=> + string(%d) "%ssensitive_parameter_eval_call.php" + ["line"]=> + int(11) + ["function"]=> + string(4) "eval" + } +} diff --git a/Zend/tests/function_arguments/sensitive_parameter_eval_define.phpt b/Zend/tests/function_arguments/sensitive_parameter_eval_define.phpt new file mode 100644 index 0000000000000..29fdbc95a9ca9 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_eval_define.phpt @@ -0,0 +1,53 @@ +--TEST-- +The SensitiveParameter attribute suppresses the single sensitive argument in a function created in eval(). +--FILE-- +getTrace()); +} +EOT); + +test('sensitive'); + +?> +--EXPECTF-- +#0 %ssensitive_parameter_eval_define.php(12): test(Object(SensitiveParameterValue)) +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_eval_define.php" + ["line"]=> + int(12) + ["function"]=> + string(4) "test" + ["args"]=> + array(1) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_eval_define.php" + ["line"]=> + int(12) + ["function"]=> + string(4) "test" + ["args"]=> + array(1) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} diff --git a/Zend/tests/function_arguments/sensitive_parameter_extra_arguments.phpt b/Zend/tests/function_arguments/sensitive_parameter_extra_arguments.phpt new file mode 100644 index 0000000000000..823e13f2ea790 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_extra_arguments.phpt @@ -0,0 +1,62 @@ +--TEST-- +The SensitiveParameter attribute does not suppress superfluous arguments if the last parameter is sensitive. +--FILE-- +getTrace()); +} + +test('foo', 'bar', 'baz'); + +?> +--EXPECTF-- +#0 %ssensitive_parameter_extra_arguments.php(13): test('foo', Object(SensitiveParameterValue), 'baz') +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_extra_arguments.php" + ["line"]=> + int(13) + ["function"]=> + string(4) "test" + ["args"]=> + array(3) { + [0]=> + string(3) "foo" + [1]=> + object(SensitiveParameterValue)#%d (0) { + } + [2]=> + string(3) "baz" + } + } +} +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_extra_arguments.php" + ["line"]=> + int(13) + ["function"]=> + string(4) "test" + ["args"]=> + array(3) { + [0]=> + string(3) "foo" + [1]=> + object(SensitiveParameterValue)#%d (0) { + } + [2]=> + string(3) "baz" + } + } +} diff --git a/Zend/tests/function_arguments/sensitive_parameter_multiple_arguments.phpt b/Zend/tests/function_arguments/sensitive_parameter_multiple_arguments.phpt new file mode 100644 index 0000000000000..f0962d88829f8 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_multiple_arguments.phpt @@ -0,0 +1,65 @@ +--TEST-- +The SensitiveParameter attribute suppresses the correct sensitive arguments. +--FILE-- +getTrace()); +} + +test('sensitive1', 'non_sensitive', 'sensitive2'); + +?> +--EXPECTF-- +#0 %ssensitive_parameter_multiple_arguments.php(14): test(Object(SensitiveParameterValue), 'non_sensitive', Object(SensitiveParameterValue)) +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_multiple_arguments.php" + ["line"]=> + int(14) + ["function"]=> + string(4) "test" + ["args"]=> + array(3) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + [1]=> + string(13) "non_sensitive" + [2]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_multiple_arguments.php" + ["line"]=> + int(14) + ["function"]=> + string(4) "test" + ["args"]=> + array(3) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + [1]=> + string(13) "non_sensitive" + [2]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} diff --git a/Zend/tests/function_arguments/sensitive_parameter_named_arguments.phpt b/Zend/tests/function_arguments/sensitive_parameter_named_arguments.phpt new file mode 100644 index 0000000000000..24e2268e8d956 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_named_arguments.phpt @@ -0,0 +1,65 @@ +--TEST-- +The SensitiveParameter attribute handles named arguments. +--FILE-- +getTrace()); +} + +test(non_sensitive: 'non_sensitive', sensitive2: 'sensitive2'); + +?> +--EXPECTF-- +#0 %ssensitive_parameter_named_arguments.php(14): test(Object(SensitiveParameterValue), 'non_sensitive', Object(SensitiveParameterValue)) +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_named_arguments.php" + ["line"]=> + int(14) + ["function"]=> + string(4) "test" + ["args"]=> + array(3) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + [1]=> + string(13) "non_sensitive" + [2]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_named_arguments.php" + ["line"]=> + int(14) + ["function"]=> + string(4) "test" + ["args"]=> + array(3) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + [1]=> + string(13) "non_sensitive" + [2]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} diff --git a/Zend/tests/function_arguments/sensitive_parameter_nested_calls.phpt b/Zend/tests/function_arguments/sensitive_parameter_nested_calls.phpt new file mode 100644 index 0000000000000..6f481b72cbe71 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_nested_calls.phpt @@ -0,0 +1,115 @@ +--TEST-- +The SensitiveParameter attribute handles nested function calls correctly. +--FILE-- +getTrace()); +} + +function wrapper( + $non_sensitive = null, + #[SensitiveParameter] $sensitive1 = null, + #[SensitiveParameter] $sensitive2 = null, +) +{ + test($non_sensitive, $sensitive1, $sensitive2); +} + +wrapper('foo', 'bar', 'baz'); + +?> +--EXPECTF-- +#0 %ssensitive_parameter_nested_calls.php(20): test(Object(SensitiveParameterValue), 'bar', Object(SensitiveParameterValue)) +#1 %ssensitive_parameter_nested_calls.php(23): wrapper('foo', Object(SensitiveParameterValue), Object(SensitiveParameterValue)) +array(2) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_nested_calls.php" + ["line"]=> + int(20) + ["function"]=> + string(4) "test" + ["args"]=> + array(3) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + [1]=> + string(3) "bar" + [2]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } + [1]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_nested_calls.php" + ["line"]=> + int(23) + ["function"]=> + string(7) "wrapper" + ["args"]=> + array(3) { + [0]=> + string(3) "foo" + [1]=> + object(SensitiveParameterValue)#%d (0) { + } + [2]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} +array(2) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_nested_calls.php" + ["line"]=> + int(20) + ["function"]=> + string(4) "test" + ["args"]=> + array(3) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + [1]=> + string(3) "bar" + [2]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } + [1]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_nested_calls.php" + ["line"]=> + int(23) + ["function"]=> + string(7) "wrapper" + ["args"]=> + array(3) { + [0]=> + string(3) "foo" + [1]=> + object(SensitiveParameterValue)#%d (0) { + } + [2]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} diff --git a/Zend/tests/function_arguments/sensitive_parameter_value.phpt b/Zend/tests/function_arguments/sensitive_parameter_value.phpt new file mode 100644 index 0000000000000..2949b0b18de61 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_value.phpt @@ -0,0 +1,43 @@ +--TEST-- +A SensitiveParameterValue keeps the inner value secret. +--FILE-- +getValue()", PHP_EOL; +var_dump($v->getValue()); + +?> +--EXPECTF-- +# var_dump() / debug_zval_dump() +object(SensitiveParameterValue)#%d (0) { +} +object(SensitiveParameterValue)#%d (%d) refcount(%d){ +} + +# var_export() +SensitiveParameterValue::__set_state(array( +)) + +# (array) / json_encode() +array(0) { +} +string(2) "{}" + +# ->getValue() +string(6) "secret" diff --git a/Zend/tests/function_arguments/sensitive_parameter_value_clone.phpt b/Zend/tests/function_arguments/sensitive_parameter_value_clone.phpt new file mode 100644 index 0000000000000..5170e62ebe3d4 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_value_clone.phpt @@ -0,0 +1,15 @@ +--TEST-- +A SensitiveParameterValue is clonable. +--FILE-- +getValue()); +var_dump($v2->getValue()); + +?> +--EXPECTF-- +string(6) "secret" +string(6) "secret" diff --git a/Zend/tests/function_arguments/sensitive_parameter_value_keeps_object_alive.phpt b/Zend/tests/function_arguments/sensitive_parameter_value_keeps_object_alive.phpt new file mode 100644 index 0000000000000..e7b0de51b969e --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_value_keeps_object_alive.phpt @@ -0,0 +1,74 @@ +--TEST-- +A SensitiveParameterValue keeps inner objects alive. +--FILE-- +id, PHP_EOL; + } + + public function __destruct() + { + echo __METHOD__, " - ", $this->id, PHP_EOL; + } + + public function getId(): int + { + return $this->id; + } +} + +function test(#[SensitiveParameter] CustomDestructor $o, bool $throw) +{ + if ($throw) { + throw new Exception('Error'); + } +} + +function wrapper(int $id, bool $throw) +{ + $o = new CustomDestructor($id); + test($o, $throw); +} + +function main(): SensitiveParameterValue +{ + try { + echo "Before 1", PHP_EOL; + wrapper(1, false); + echo "After 1", PHP_EOL; + echo "Before 2", PHP_EOL; + wrapper(2, true); + echo "Not Reached: After 2", PHP_EOL; + } catch (Exception $e) { + echo "catch", PHP_EOL; + return $e->getTrace()[0]['args'][0]; + } +} + +$v = main(); + +var_dump($v->getValue()->getId()); + +echo "Before unset", PHP_EOL; + +unset($v); + +echo "After unset", PHP_EOL; + +?> +--EXPECT-- +Before 1 +CustomDestructor::__construct - 1 +CustomDestructor::__destruct - 1 +After 1 +Before 2 +CustomDestructor::__construct - 2 +catch +int(2) +Before unset +CustomDestructor::__destruct - 2 +After unset diff --git a/Zend/tests/function_arguments/sensitive_parameter_value_no_dynamic_property.phpt b/Zend/tests/function_arguments/sensitive_parameter_value_no_dynamic_property.phpt new file mode 100644 index 0000000000000..86cbc2a1ae3e5 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_value_no_dynamic_property.phpt @@ -0,0 +1,15 @@ +--TEST-- +A SensitiveParameterValue does not allow dynamic properties. +--FILE-- +foo = 'bar'; + +?> +--EXPECTF-- +Fatal error: Uncaught Error: Cannot create dynamic property SensitiveParameterValue::$foo in %ssensitive_parameter_value_no_dynamic_property.php:5 +Stack trace: +#0 {main} + thrown in %ssensitive_parameter_value_no_dynamic_property.php on line 5 diff --git a/Zend/tests/function_arguments/sensitive_parameter_value_reflection.phpt b/Zend/tests/function_arguments/sensitive_parameter_value_reflection.phpt new file mode 100644 index 0000000000000..020cbef38d269 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_value_reflection.phpt @@ -0,0 +1,15 @@ +--TEST-- +A SensitiveParameterValue's value is accessible using reflection. +--FILE-- +getProperty('value'); + +var_dump($p->getValue($v)); + +?> +--EXPECTF-- +string(6) "secret" diff --git a/Zend/tests/function_arguments/sensitive_parameter_value_serialize.phpt b/Zend/tests/function_arguments/sensitive_parameter_value_serialize.phpt new file mode 100644 index 0000000000000..79a2e359cd8cb --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_value_serialize.phpt @@ -0,0 +1,16 @@ +--TEST-- +A SensitiveParameterValue may not be serialized. +--FILE-- + +--EXPECTF-- +Fatal error: Uncaught Exception: Serialization of 'SensitiveParameterValue' is not allowed in %ssensitive_parameter_value_serialize.php:5 +Stack trace: +#0 %ssensitive_parameter_value_serialize.php(5): serialize(Object(SensitiveParameterValue)) +#1 {main} + thrown in %ssensitive_parameter_value_serialize.php on line 5 diff --git a/Zend/tests/function_arguments/sensitive_parameter_value_to_string.phpt b/Zend/tests/function_arguments/sensitive_parameter_value_to_string.phpt new file mode 100644 index 0000000000000..5945259224ab8 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_value_to_string.phpt @@ -0,0 +1,15 @@ +--TEST-- +A SensitiveParameterValue may not be converted to a string. +--FILE-- + +--EXPECTF-- +Fatal error: Uncaught Error: Object of class SensitiveParameterValue could not be converted to string in %ssensitive_parameter_value_to_string.php:5 +Stack trace: +#0 {main} + thrown in %ssensitive_parameter_value_to_string.php on line 5 diff --git a/Zend/tests/function_arguments/sensitive_parameter_variadic_arguments.phpt b/Zend/tests/function_arguments/sensitive_parameter_variadic_arguments.phpt new file mode 100644 index 0000000000000..3d9bf20a978c2 --- /dev/null +++ b/Zend/tests/function_arguments/sensitive_parameter_variadic_arguments.phpt @@ -0,0 +1,65 @@ +--TEST-- +The SensitiveParameter attribute suppresses all variadic arguments. +--FILE-- +getTrace()); +} + +test('foo', 'bar', 'baz'); + +?> +--EXPECTF-- +#0 %ssensitive_parameter_variadic_arguments.php(12): test(Object(SensitiveParameterValue), Object(SensitiveParameterValue), Object(SensitiveParameterValue)) +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_variadic_arguments.php" + ["line"]=> + int(12) + ["function"]=> + string(4) "test" + ["args"]=> + array(3) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + [1]=> + object(SensitiveParameterValue)#%d (0) { + } + [2]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} +array(1) { + [0]=> + array(4) { + ["file"]=> + string(%d) "%ssensitive_parameter_variadic_arguments.php" + ["line"]=> + int(12) + ["function"]=> + string(4) "test" + ["args"]=> + array(3) { + [0]=> + object(SensitiveParameterValue)#%d (0) { + } + [1]=> + object(SensitiveParameterValue)#%d (0) { + } + [2]=> + object(SensitiveParameterValue)#%d (0) { + } + } + } +} diff --git a/Zend/zend_attributes.c b/Zend/zend_attributes.c index 0d27d1bcaa216..9f7b8f01448b5 100644 --- a/Zend/zend_attributes.c +++ b/Zend/zend_attributes.c @@ -21,11 +21,16 @@ #include "zend_API.h" #include "zend_attributes.h" #include "zend_attributes_arginfo.h" +#include "zend_exceptions.h" #include "zend_smart_str.h" ZEND_API zend_class_entry *zend_ce_attribute; ZEND_API zend_class_entry *zend_ce_return_type_will_change_attribute; ZEND_API zend_class_entry *zend_ce_allow_dynamic_properties; +ZEND_API zend_class_entry *zend_ce_sensitive_parameter; +ZEND_API zend_class_entry *zend_ce_sensitive_parameter_value; + +static zend_object_handlers attributes_object_handlers_sensitive_parameter_value; static HashTable internal_attributes; @@ -91,6 +96,53 @@ ZEND_METHOD(AllowDynamicProperties, __construct) ZEND_PARSE_PARAMETERS_NONE(); } +ZEND_METHOD(SensitiveParameter, __construct) +{ + ZEND_PARSE_PARAMETERS_NONE(); +} + +ZEND_METHOD(SensitiveParameterValue, __construct) +{ + zval *value; + + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(value) + ZEND_PARSE_PARAMETERS_END(); + + ZVAL_COPY(OBJ_PROP_NUM(Z_OBJ_P(ZEND_THIS), 0), value); +} + +ZEND_METHOD(SensitiveParameterValue, getValue) +{ + ZEND_PARSE_PARAMETERS_NONE(); + + ZVAL_COPY(return_value, OBJ_PROP_NUM(Z_OBJ_P(ZEND_THIS), 0)); +} + +ZEND_METHOD(SensitiveParameterValue, __debugInfo) +{ + ZEND_PARSE_PARAMETERS_NONE(); + + RETURN_EMPTY_ARRAY(); +} + +static zend_object *attributes_sensitive_parameter_value_new(zend_class_entry *ce) +{ + zend_object *object; + + object = zend_objects_new(ce); + object->handlers = &attributes_object_handlers_sensitive_parameter_value; + + object_properties_init(object, ce); + + return object; +} + +static HashTable *attributes_sensitive_parameter_value_get_properties_for(zend_object *zobj, zend_prop_purpose purpose) +{ + return NULL; +} + static zend_attribute *get_attribute(HashTable *attributes, zend_string *lcname, uint32_t offset) { if (attributes) { @@ -313,6 +365,16 @@ void zend_register_attribute_ce(void) zend_ce_allow_dynamic_properties = register_class_AllowDynamicProperties(); attr = zend_internal_attribute_register(zend_ce_allow_dynamic_properties, ZEND_ATTRIBUTE_TARGET_CLASS); attr->validator = validate_allow_dynamic_properties; + + zend_ce_sensitive_parameter = register_class_SensitiveParameter(); + attr = zend_internal_attribute_register(zend_ce_sensitive_parameter, ZEND_ATTRIBUTE_TARGET_PARAMETER); + + memcpy(&attributes_object_handlers_sensitive_parameter_value, &std_object_handlers, sizeof(zend_object_handlers)); + attributes_object_handlers_sensitive_parameter_value.get_properties_for = attributes_sensitive_parameter_value_get_properties_for; + + /* This is not an actual attribute, thus the zend_internal_attribute_register() call is missing. */ + zend_ce_sensitive_parameter_value = register_class_SensitiveParameterValue(); + zend_ce_sensitive_parameter_value->create_object = attributes_sensitive_parameter_value_new; } void zend_attributes_shutdown(void) diff --git a/Zend/zend_attributes.h b/Zend/zend_attributes.h index a55dc562450d2..7b6c919527d34 100644 --- a/Zend/zend_attributes.h +++ b/Zend/zend_attributes.h @@ -41,6 +41,8 @@ BEGIN_EXTERN_C() extern ZEND_API zend_class_entry *zend_ce_attribute; extern ZEND_API zend_class_entry *zend_ce_allow_dynamic_properties; +extern ZEND_API zend_class_entry *zend_ce_sensitive_parameter; +extern ZEND_API zend_class_entry *zend_ce_sensitive_parameter_value; typedef struct { zend_string *name; diff --git a/Zend/zend_attributes.stub.php b/Zend/zend_attributes.stub.php index 0469016704b16..842ed9229cd6e 100644 --- a/Zend/zend_attributes.stub.php +++ b/Zend/zend_attributes.stub.php @@ -18,3 +18,26 @@ final class AllowDynamicProperties { public function __construct() {} } + +/** + * @strict-properties + */ +final class SensitiveParameter +{ + public function __construct() {} +} + +/** + * @strict-properties + * @not-serializable + */ +final class SensitiveParameterValue +{ + private readonly mixed $value; + + public function __construct(mixed $value) {} + + public function getValue(): mixed {} + + public function __debugInfo(): array {} +} diff --git a/Zend/zend_attributes_arginfo.h b/Zend/zend_attributes_arginfo.h index 657ab924c745a..7c624949bf24b 100644 --- a/Zend/zend_attributes_arginfo.h +++ b/Zend/zend_attributes_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 024e849a9dfa8789f13dd1d2ac222a48e4b017f1 */ + * Stub hash: 5d9a092c1f0da5f32d9a161cc5166ed794ffe8e9 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Attribute___construct, 0, 0, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "Attribute::TARGET_ALL") @@ -10,10 +10,26 @@ ZEND_END_ARG_INFO() #define arginfo_class_AllowDynamicProperties___construct arginfo_class_ReturnTypeWillChange___construct +#define arginfo_class_SensitiveParameter___construct arginfo_class_ReturnTypeWillChange___construct + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SensitiveParameterValue___construct, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_SensitiveParameterValue_getValue, 0, 0, IS_MIXED, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_SensitiveParameterValue___debugInfo, 0, 0, IS_ARRAY, 0) +ZEND_END_ARG_INFO() + ZEND_METHOD(Attribute, __construct); ZEND_METHOD(ReturnTypeWillChange, __construct); ZEND_METHOD(AllowDynamicProperties, __construct); +ZEND_METHOD(SensitiveParameter, __construct); +ZEND_METHOD(SensitiveParameterValue, __construct); +ZEND_METHOD(SensitiveParameterValue, getValue); +ZEND_METHOD(SensitiveParameterValue, __debugInfo); static const zend_function_entry class_Attribute_methods[] = { @@ -33,6 +49,20 @@ static const zend_function_entry class_AllowDynamicProperties_methods[] = { ZEND_FE_END }; + +static const zend_function_entry class_SensitiveParameter_methods[] = { + ZEND_ME(SensitiveParameter, __construct, arginfo_class_SensitiveParameter___construct, ZEND_ACC_PUBLIC) + ZEND_FE_END +}; + + +static const zend_function_entry class_SensitiveParameterValue_methods[] = { + ZEND_ME(SensitiveParameterValue, __construct, arginfo_class_SensitiveParameterValue___construct, ZEND_ACC_PUBLIC) + ZEND_ME(SensitiveParameterValue, getValue, arginfo_class_SensitiveParameterValue_getValue, ZEND_ACC_PUBLIC) + ZEND_ME(SensitiveParameterValue, __debugInfo, arginfo_class_SensitiveParameterValue___debugInfo, ZEND_ACC_PUBLIC) + ZEND_FE_END +}; + static zend_class_entry *register_class_Attribute(void) { zend_class_entry ce, *class_entry; @@ -71,3 +101,31 @@ static zend_class_entry *register_class_AllowDynamicProperties(void) return class_entry; } + +static zend_class_entry *register_class_SensitiveParameter(void) +{ + zend_class_entry ce, *class_entry; + + INIT_CLASS_ENTRY(ce, "SensitiveParameter", class_SensitiveParameter_methods); + class_entry = zend_register_internal_class_ex(&ce, NULL); + class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES; + + return class_entry; +} + +static zend_class_entry *register_class_SensitiveParameterValue(void) +{ + zend_class_entry ce, *class_entry; + + INIT_CLASS_ENTRY(ce, "SensitiveParameterValue", class_SensitiveParameterValue_methods); + class_entry = zend_register_internal_class_ex(&ce, NULL); + class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE; + + zval property_value_default_value; + ZVAL_UNDEF(&property_value_default_value); + zend_string *property_value_name = zend_string_init("value", sizeof("value") - 1, 1); + zend_declare_typed_property(class_entry, property_value_name, &property_value_default_value, ZEND_ACC_PRIVATE|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_ANY)); + zend_string_release(property_value_name); + + return class_entry; +} diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 529ade072aa24..963332e0f7ed8 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -24,6 +24,7 @@ #include "zend_builtin_functions.h" #include "zend_constants.h" #include "zend_ini.h" +#include "zend_interfaces.h" #include "zend_exceptions.h" #include "zend_extensions.h" #include "zend_closures.h" @@ -1557,27 +1558,66 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) / */ while (i < first_extra_arg) { zend_string *arg_name = call->func->op_array.vars[i]; + zval original_arg; zval *arg = zend_hash_find_ex_ind(call->symbol_table, arg_name, 1); + zend_attribute *attribute = zend_get_parameter_attribute_str( + call->func->common.attributes, + "sensitiveparameter", + sizeof("sensitiveparameter") - 1, + i + ); + + bool is_sensitive = attribute != NULL; + if (arg) { ZVAL_DEREF(arg); - Z_TRY_ADDREF_P(arg); - ZEND_HASH_FILL_SET(arg); + ZVAL_COPY_VALUE(&original_arg, arg); + } else { + ZVAL_NULL(&original_arg); + } + + if (is_sensitive) { + zval redacted_arg; + object_init_ex(&redacted_arg, zend_ce_sensitive_parameter_value); + zend_call_method_with_1_params(Z_OBJ_P(&redacted_arg), zend_ce_sensitive_parameter_value, &zend_ce_sensitive_parameter_value->constructor, "__construct", NULL, &original_arg); + ZEND_HASH_FILL_SET(&redacted_arg); } else { - ZEND_HASH_FILL_SET_NULL(); + Z_TRY_ADDREF_P(&original_arg); + ZEND_HASH_FILL_SET(&original_arg); } + ZEND_HASH_FILL_NEXT(); i++; } } else { while (i < first_extra_arg) { + zval original_arg; + zend_attribute *attribute = zend_get_parameter_attribute_str( + call->func->common.attributes, + "sensitiveparameter", + sizeof("sensitiveparameter") - 1, + i + ); + bool is_sensitive = attribute != NULL; + if (EXPECTED(Z_TYPE_INFO_P(p) != IS_UNDEF)) { zval *arg = p; ZVAL_DEREF(arg); - Z_TRY_ADDREF_P(arg); - ZEND_HASH_FILL_SET(arg); + ZVAL_COPY_VALUE(&original_arg, arg); + } else { + ZVAL_NULL(&original_arg); + } + + if (is_sensitive) { + zval redacted_arg; + object_init_ex(&redacted_arg, zend_ce_sensitive_parameter_value); + zend_call_method_with_1_params(Z_OBJ_P(&redacted_arg), zend_ce_sensitive_parameter_value, &zend_ce_sensitive_parameter_value->constructor, "__construct", NULL, &original_arg); + ZEND_HASH_FILL_SET(&redacted_arg); } else { - ZEND_HASH_FILL_SET_NULL(); + Z_TRY_ADDREF_P(&original_arg); + ZEND_HASH_FILL_SET(&original_arg); } + ZEND_HASH_FILL_NEXT(); p++; i++; @@ -1587,14 +1627,37 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) / } while (i < num_args) { + zval original_arg; + bool is_sensitive = 0; + + if (i < call->func->common.num_args || call->func->common.fn_flags & ZEND_ACC_VARIADIC) { + zend_attribute *attribute = zend_get_parameter_attribute_str( + call->func->common.attributes, + "sensitiveparameter", + sizeof("sensitiveparameter") - 1, + MIN(i, call->func->common.num_args) + ); + is_sensitive = attribute != NULL; + } + if (EXPECTED(Z_TYPE_INFO_P(p) != IS_UNDEF)) { zval *arg = p; ZVAL_DEREF(arg); - Z_TRY_ADDREF_P(arg); - ZEND_HASH_FILL_SET(arg); + ZVAL_COPY_VALUE(&original_arg, arg); } else { - ZEND_HASH_FILL_SET_NULL(); + ZVAL_NULL(&original_arg); } + + if (is_sensitive) { + zval redacted_arg; + object_init_ex(&redacted_arg, zend_ce_sensitive_parameter_value); + zend_call_method_with_1_params(Z_OBJ_P(&redacted_arg), zend_ce_sensitive_parameter_value, &zend_ce_sensitive_parameter_value->constructor, "__construct", NULL, &original_arg); + ZEND_HASH_FILL_SET(&redacted_arg); + } else { + Z_TRY_ADDREF_P(&original_arg); + ZEND_HASH_FILL_SET(&original_arg); + } + ZEND_HASH_FILL_NEXT(); p++; i++; From 72fb511d0c30bbd7925c0efd3cbe49cb1d5baf98 Mon Sep 17 00:00:00 2001 From: Arnaud Le Blanc Date: Fri, 1 Apr 2022 17:11:33 +0200 Subject: [PATCH 53/63] Stop including php_pcre.h from spl_iterators.h This fixes GH-7774. spl_iterators.h was including php_pcre.h so that one object intern struct could reference a pcre_cache_entry. These object interns should not be public, so they can be moved out of the header file. This change moves the object interns ouf of spl_iterators.h so that php_pcre.h doesn't need to be included from there. --- ext/spl/spl_iterators.c | 54 +++++++++++++++++++++++++++++++++++++++++ ext/spl/spl_iterators.h | 54 ----------------------------------------- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index 3b1da6d98c536..217f3aa19c038 100644 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -23,6 +23,7 @@ #include "ext/standard/info.h" #include "zend_exceptions.h" #include "zend_interfaces.h" +#include "ext/pcre/php_pcre.h" #include "php_spl.h" #include "spl_functions.h" @@ -113,6 +114,53 @@ typedef struct _spl_recursive_it_iterator { zend_object_iterator intern; } spl_recursive_it_iterator; +typedef struct _spl_cbfilter_it_intern { + zend_fcall_info fci; + zend_fcall_info_cache fcc; + zend_object *object; +} _spl_cbfilter_it_intern; + +typedef struct _spl_dual_it_object { + struct { + zval zobject; + zend_class_entry *ce; + zend_object *object; + zend_object_iterator *iterator; + } inner; + struct { + zval data; + zval key; + zend_long pos; + } current; + dual_it_type dit_type; + union { + struct { + zend_long offset; + zend_long count; + } limit; + struct { + zend_long flags; /* CIT_* */ + zend_string *zstr; + zval zchildren; + zval zcache; + } caching; + struct { + zval zarrayit; + zend_object_iterator *iterator; + } append; + struct { + zend_long flags; + zend_long preg_flags; + pcre_cache_entry *pce; + zend_string *regex; + regex_mode mode; + int use_flags; + } regex; + _spl_cbfilter_it_intern *cbfilter; + } u; + zend_object std; +} spl_dual_it_object; + static zend_object_handlers spl_handlers_rec_it_it; static zend_object_handlers spl_handlers_dual_it; @@ -123,6 +171,12 @@ static inline spl_recursive_it_object *spl_recursive_it_from_obj(zend_object *ob #define Z_SPLRECURSIVE_IT_P(zv) spl_recursive_it_from_obj(Z_OBJ_P((zv))) +static inline spl_dual_it_object *spl_dual_it_from_obj(zend_object *obj) /* {{{ */ { + return (spl_dual_it_object*)((char*)(obj) - XtOffsetOf(spl_dual_it_object, std)); +} /* }}} */ + +#define Z_SPLDUAL_IT_P(zv) spl_dual_it_from_obj(Z_OBJ_P((zv))) + #define SPL_FETCH_AND_CHECK_DUAL_IT(var, objzval) \ do { \ spl_dual_it_object *it = Z_SPLDUAL_IT_P(objzval); \ diff --git a/ext/spl/spl_iterators.h b/ext/spl/spl_iterators.h index 1f42201b769cf..61e899de34f2b 100644 --- a/ext/spl/spl_iterators.h +++ b/ext/spl/spl_iterators.h @@ -19,7 +19,6 @@ #include "php.h" #include "php_spl.h" -#include "ext/pcre/php_pcre.h" extern PHPAPI zend_class_entry *spl_ce_AppendIterator; extern PHPAPI zend_class_entry *spl_ce_CachingIterator; @@ -99,59 +98,6 @@ typedef enum { REGIT_MODE_MAX } regex_mode; -typedef struct _spl_cbfilter_it_intern { - zend_fcall_info fci; - zend_fcall_info_cache fcc; - zend_object *object; -} _spl_cbfilter_it_intern; - -typedef struct _spl_dual_it_object { - struct { - zval zobject; - zend_class_entry *ce; - zend_object *object; - zend_object_iterator *iterator; - } inner; - struct { - zval data; - zval key; - zend_long pos; - } current; - dual_it_type dit_type; - union { - struct { - zend_long offset; - zend_long count; - } limit; - struct { - zend_long flags; /* CIT_* */ - zend_string *zstr; - zval zchildren; - zval zcache; - } caching; - struct { - zval zarrayit; - zend_object_iterator *iterator; - } append; - struct { - zend_long flags; - zend_long preg_flags; - pcre_cache_entry *pce; - zend_string *regex; - regex_mode mode; - int use_flags; - } regex; - _spl_cbfilter_it_intern *cbfilter; - } u; - zend_object std; -} spl_dual_it_object; - -static inline spl_dual_it_object *spl_dual_it_from_obj(zend_object *obj) /* {{{ */ { - return (spl_dual_it_object*)((char*)(obj) - XtOffsetOf(spl_dual_it_object, std)); -} /* }}} */ - -#define Z_SPLDUAL_IT_P(zv) spl_dual_it_from_obj(Z_OBJ_P((zv))) - typedef int (*spl_iterator_apply_func_t)(zend_object_iterator *iter, void *puser); PHPAPI int spl_iterator_apply(zval *obj, spl_iterator_apply_func_t apply_func, void *puser); From cdf7240f7547b093aaee52e4fd0a2336f77e3374 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Fri, 8 Apr 2022 11:00:28 +0200 Subject: [PATCH 54/63] [skip ci] Remove superfluous backslash in UPGRADING --- UPGRADING | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UPGRADING b/UPGRADING index 159858c997e86..2d76009808b07 100644 --- a/UPGRADING +++ b/UPGRADING @@ -32,7 +32,7 @@ PHP 8.2 UPGRADE NOTES ======================================== - Core: - . Added the #\[\SensitiveParameter] attribute to redact sensitive data in + . Added the #[\SensitiveParameter] attribute to redact sensitive data in backtraces. RFC: https://wiki.php.net/rfc/redact_parameters_in_back_traces From 7bb2a9ff38b739d2143134b6ce0d9cc3dd9b78fe Mon Sep 17 00:00:00 2001 From: David Carlier Date: Fri, 12 Nov 2021 18:38:55 +0000 Subject: [PATCH 55/63] Add extra check for FPM proc dumpable on SELinux based systems The deny_ptrace is a OS runtime setting and is off by default, at least on workstations flavors (fedora) however it might be different on production servers. --- NEWS | 2 ++ sapi/fpm/config.m4 | 14 ++++++++++++++ sapi/fpm/fpm/fpm_unix.c | 17 +++++++++++++++-- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 906b9c1fa5c4d..4178005c7b733 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,8 @@ PHP NEWS - FPM: . Emit error for invalid port setting. (David Carlier) + . Added extra check for FPM proc dumpable on SELinux based systems. + (David Carlier) - Intl: . Update all grandfathered language tags with preferred values diff --git a/sapi/fpm/config.m4 b/sapi/fpm/config.m4 index e2e4d3660be42..4e3815ffc2543 100644 --- a/sapi/fpm/config.m4 +++ b/sapi/fpm/config.m4 @@ -563,6 +563,12 @@ if test "$PHP_FPM" != "no"; then [no], [no]) + PHP_ARG_WITH([fpm-selinux],, + [AS_HELP_STRING([--with-fpm-selinux], + [Support SELinux policy library])], + [no], + [no]) + if test "$PHP_FPM_SYSTEMD" != "no" ; then PKG_CHECK_MODULES([SYSTEMD], [libsystemd >= 209]) @@ -605,6 +611,14 @@ if test "$PHP_FPM" != "no"; then ]) fi + if test "x$PHP_FPM_SELINUX" != "xno" ; then + AC_CHECK_HEADERS([selinux/selinux.h]) + AC_CHECK_LIB(selinux, security_setenforce, [ + PHP_ADD_LIBRARY(selinux) + AC_DEFINE(HAVE_SELINUX, 1, [ SElinux available ]) + ],[]) + fi + PHP_SUBST_OLD(php_fpm_systemd) AC_DEFINE_UNQUOTED(PHP_FPM_SYSTEMD, "$php_fpm_systemd", [fpm systemd service type]) diff --git a/sapi/fpm/fpm/fpm_unix.c b/sapi/fpm/fpm/fpm_unix.c index 2f6eef339c493..9c94fa1eae038 100644 --- a/sapi/fpm/fpm/fpm_unix.c +++ b/sapi/fpm/fpm/fpm_unix.c @@ -31,6 +31,10 @@ #include #endif +#ifdef HAVE_SELINUX +#include +#endif + #include "fpm.h" #include "fpm_conf.h" #include "fpm_cleanup.h" @@ -412,8 +416,17 @@ int fpm_unix_init_child(struct fpm_worker_pool_s *wp) /* {{{ */ } #ifdef HAVE_PRCTL - if (wp->config->process_dumpable && 0 > prctl(PR_SET_DUMPABLE, 1, 0, 0, 0)) { - zlog(ZLOG_SYSERROR, "[pool %s] failed to prctl(PR_SET_DUMPABLE)", wp->config->name); + if (wp->config->process_dumpable) { + int dumpable = 1; +#ifdef HAVE_SELINUX + if (security_get_boolean_active("deny_ptrace") == 1) { + zlog(ZLOG_SYSERROR, "[pool %s] ptrace is denied", wp->config->name); + dumpable = 0; + } +#endif + if (dumpable && 0 > prctl(PR_SET_DUMPABLE, 1, 0, 0, 0)) { + zlog(ZLOG_SYSERROR, "[pool %s] failed to prctl(PR_SET_DUMPABLE)", wp->config->name); + } } #endif From 6039c07a3afd64a42c9b9f1ed994ca971db67a1e Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Fri, 8 Apr 2022 17:23:52 +0100 Subject: [PATCH 56/63] Allow ``null`` and ``false`` as standalone types (#7546) RFC: https://wiki.php.net/rfc/null-standalone-type Also a drive-by consistency fix for error messages. --- .../type_declarations/standalone_null.phpt | 14 +++++++++ .../typed_properties_110.phpt | 20 +++++++++++++ .../typed_properties_111.phpt | 20 +++++++++++++ ...typed_return_null_false_without_value.phpt | 14 +++++++++ .../typed_return_null_without_value.phpt | 14 +++++++++ .../union_types/null_false_union.phpt | 12 ++++++++ .../redundant_types/nullable_null.phpt | 2 +- .../union_types/standalone_false.phpt | 7 +++-- ...standalone_false_implicit_nullability.phpt | 11 +++++++ .../union_types/standalone_null.phpt | 7 +++-- .../standalone_nullable_false.phpt | 7 +++-- Zend/zend_compile.c | 30 ++++++++----------- ext/reflection/php_reflection.c | 3 +- .../tests/ReflectionType_possible_types.phpt | 4 +++ ext/reflection/tests/union_types.phpt | 19 ++++++++++++ 15 files changed, 156 insertions(+), 28 deletions(-) create mode 100644 Zend/tests/type_declarations/standalone_null.phpt create mode 100644 Zend/tests/type_declarations/typed_properties_110.phpt create mode 100644 Zend/tests/type_declarations/typed_properties_111.phpt create mode 100644 Zend/tests/type_declarations/typed_return_null_false_without_value.phpt create mode 100644 Zend/tests/type_declarations/typed_return_null_without_value.phpt create mode 100644 Zend/tests/type_declarations/union_types/null_false_union.phpt create mode 100644 Zend/tests/type_declarations/union_types/standalone_false_implicit_nullability.phpt diff --git a/Zend/tests/type_declarations/standalone_null.phpt b/Zend/tests/type_declarations/standalone_null.phpt new file mode 100644 index 0000000000000..d96a1f471e483 --- /dev/null +++ b/Zend/tests/type_declarations/standalone_null.phpt @@ -0,0 +1,14 @@ +--TEST-- +Null can be used as a standalone type +--FILE-- + +--EXPECT-- +NULL diff --git a/Zend/tests/type_declarations/typed_properties_110.phpt b/Zend/tests/type_declarations/typed_properties_110.phpt new file mode 100644 index 0000000000000..6a108b4529c66 --- /dev/null +++ b/Zend/tests/type_declarations/typed_properties_110.phpt @@ -0,0 +1,20 @@ +--TEST-- +Test typed properties allow null +--FILE-- +value = null; + +try { + $foo->value = 1; +} catch (\TypeError $e) { + echo $e->getMessage(); +} + +?> +--EXPECT-- +Cannot assign int to property Foo::$value of type null diff --git a/Zend/tests/type_declarations/typed_properties_111.phpt b/Zend/tests/type_declarations/typed_properties_111.phpt new file mode 100644 index 0000000000000..c23fb72e5d657 --- /dev/null +++ b/Zend/tests/type_declarations/typed_properties_111.phpt @@ -0,0 +1,20 @@ +--TEST-- +Test typed properties allow false +--FILE-- +value = false; + +try { + $foo->value = true; +} catch (\TypeError $e) { + echo $e->getMessage(); +} + +?> +--EXPECT-- +Cannot assign bool to property Foo::$value of type false diff --git a/Zend/tests/type_declarations/typed_return_null_false_without_value.phpt b/Zend/tests/type_declarations/typed_return_null_false_without_value.phpt new file mode 100644 index 0000000000000..ae785c9a126d3 --- /dev/null +++ b/Zend/tests/type_declarations/typed_return_null_false_without_value.phpt @@ -0,0 +1,14 @@ +--TEST-- +Typed null|false return without value generates compile-time error +--FILE-- + +--EXPECTF-- +Fatal error: A function with return type must return a value (did you mean "return null;" instead of "return;"?) in %s on line %d diff --git a/Zend/tests/type_declarations/typed_return_null_without_value.phpt b/Zend/tests/type_declarations/typed_return_null_without_value.phpt new file mode 100644 index 0000000000000..9152622a4a338 --- /dev/null +++ b/Zend/tests/type_declarations/typed_return_null_without_value.phpt @@ -0,0 +1,14 @@ +--TEST-- +Typed null return without value generates compile-time error +--FILE-- + +--EXPECTF-- +Fatal error: A function with return type must return a value (did you mean "return null;" instead of "return;"?) in %s on line %d diff --git a/Zend/tests/type_declarations/union_types/null_false_union.phpt b/Zend/tests/type_declarations/union_types/null_false_union.phpt new file mode 100644 index 0000000000000..1cf6b46066189 --- /dev/null +++ b/Zend/tests/type_declarations/union_types/null_false_union.phpt @@ -0,0 +1,12 @@ +--TEST-- +Null and false can be used in a union type +--FILE-- + +===DONE=== +--EXPECT-- +===DONE=== diff --git a/Zend/tests/type_declarations/union_types/redundant_types/nullable_null.phpt b/Zend/tests/type_declarations/union_types/redundant_types/nullable_null.phpt index 0e0e915bdd223..9c35978576237 100644 --- a/Zend/tests/type_declarations/union_types/redundant_types/nullable_null.phpt +++ b/Zend/tests/type_declarations/union_types/redundant_types/nullable_null.phpt @@ -8,4 +8,4 @@ function test(): ?null { ?> --EXPECTF-- -Fatal error: Null cannot be used as a standalone type in %s on line %d +Fatal error: null cannot be marked as nullable in %s on line %d diff --git a/Zend/tests/type_declarations/union_types/standalone_false.phpt b/Zend/tests/type_declarations/union_types/standalone_false.phpt index 76d8c9b7a1ede..1a31e23d22988 100644 --- a/Zend/tests/type_declarations/union_types/standalone_false.phpt +++ b/Zend/tests/type_declarations/union_types/standalone_false.phpt @@ -1,10 +1,11 @@ --TEST-- -False cannot be used as a standalone type +False can be used as a standalone type --FILE-- ---EXPECTF-- -Fatal error: False cannot be used as a standalone type in %s on line %d +===DONE=== +--EXPECT-- +===DONE=== diff --git a/Zend/tests/type_declarations/union_types/standalone_false_implicit_nullability.phpt b/Zend/tests/type_declarations/union_types/standalone_false_implicit_nullability.phpt new file mode 100644 index 0000000000000..3baac82f7e905 --- /dev/null +++ b/Zend/tests/type_declarations/union_types/standalone_false_implicit_nullability.phpt @@ -0,0 +1,11 @@ +--TEST-- +False can be used as a standalone type even with implicit nullability +--FILE-- + +===DONE=== +--EXPECT-- +===DONE=== diff --git a/Zend/tests/type_declarations/union_types/standalone_null.phpt b/Zend/tests/type_declarations/union_types/standalone_null.phpt index d66f27c117a75..a18375d68cb4e 100644 --- a/Zend/tests/type_declarations/union_types/standalone_null.phpt +++ b/Zend/tests/type_declarations/union_types/standalone_null.phpt @@ -1,10 +1,11 @@ --TEST-- -Null cannot be used as a standalone type +Null can be used as a standalone type --FILE-- ---EXPECTF-- -Fatal error: Null cannot be used as a standalone type in %s on line %d +===DONE=== +--EXPECT-- +===DONE=== diff --git a/Zend/tests/type_declarations/union_types/standalone_nullable_false.phpt b/Zend/tests/type_declarations/union_types/standalone_nullable_false.phpt index aa1bf34db1eb9..b4a3f88451ae0 100644 --- a/Zend/tests/type_declarations/union_types/standalone_nullable_false.phpt +++ b/Zend/tests/type_declarations/union_types/standalone_nullable_false.phpt @@ -1,10 +1,11 @@ --TEST-- -Nullable false cannot be used as a standalone type +Nullable false can be used as a standalone type --FILE-- ---EXPECTF-- -Fatal error: False cannot be used as a standalone type in %s on line %d +===DONE=== +--EXPECT-- +===DONE=== diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index cfe44d3f3766f..444dee5b0d7d4 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -6186,11 +6186,11 @@ static bool zend_type_contains_traversable(zend_type type) { static zend_type zend_compile_typename( zend_ast *ast, bool force_allow_null) /* {{{ */ { - bool allow_null = force_allow_null; + bool is_marked_nullable = ast->attr & ZEND_TYPE_NULLABLE; zend_ast_attr orig_ast_attr = ast->attr; zend_type type = ZEND_TYPE_INIT_NONE(0); - if (ast->attr & ZEND_TYPE_NULLABLE) { - allow_null = 1; + + if (is_marked_nullable) { ast->attr &= ~ZEND_TYPE_NULLABLE; } @@ -6314,10 +6314,6 @@ static zend_type zend_compile_typename( type = zend_compile_single_typename(ast); } - if (allow_null) { - ZEND_TYPE_FULL_MASK(type) |= MAY_BE_NULL; - } - uint32_t type_mask = ZEND_TYPE_PURE_MASK(type); if ((type_mask & (MAY_BE_ARRAY|MAY_BE_ITERABLE)) == (MAY_BE_ARRAY|MAY_BE_ITERABLE)) { zend_string *type_str = zend_type_to_string(type); @@ -6332,7 +6328,7 @@ static zend_type zend_compile_typename( ZSTR_VAL(type_str)); } - if (type_mask == MAY_BE_ANY && (orig_ast_attr & ZEND_TYPE_NULLABLE)) { + if (type_mask == MAY_BE_ANY && is_marked_nullable) { zend_error_noreturn(E_COMPILE_ERROR, "Type mixed cannot be marked as nullable since mixed already includes null"); } @@ -6343,6 +6339,15 @@ static zend_type zend_compile_typename( ZSTR_VAL(type_str)); } + if ((type_mask & MAY_BE_NULL) && is_marked_nullable) { + zend_error_noreturn(E_COMPILE_ERROR, "null cannot be marked as nullable"); + } + + if (is_marked_nullable || force_allow_null) { + ZEND_TYPE_FULL_MASK(type) |= MAY_BE_NULL; + type_mask = ZEND_TYPE_PURE_MASK(type); + } + if ((type_mask & MAY_BE_VOID) && (ZEND_TYPE_IS_COMPLEX(type) || type_mask != MAY_BE_VOID)) { zend_error_noreturn(E_COMPILE_ERROR, "Void can only be used as a standalone type"); } @@ -6351,15 +6356,6 @@ static zend_type zend_compile_typename( zend_error_noreturn(E_COMPILE_ERROR, "never can only be used as a standalone type"); } - if ((type_mask & (MAY_BE_NULL|MAY_BE_FALSE)) - && !ZEND_TYPE_IS_COMPLEX(type) && !(type_mask & ~(MAY_BE_NULL|MAY_BE_FALSE))) { - if (type_mask == MAY_BE_NULL) { - zend_error_noreturn(E_COMPILE_ERROR, "Null cannot be used as a standalone type"); - } else { - zend_error_noreturn(E_COMPILE_ERROR, "False cannot be used as a standalone type"); - } - } - ast->attr = orig_ast_attr; return type; } diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 84ef8bdfbb450..4f30cc2fca700 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -1356,6 +1356,7 @@ static void reflection_type_factory(zend_type type, zval *object, bool legacy_be type_reference *reference; reflection_type_kind type_kind = get_type_kind(type); bool is_mixed = ZEND_TYPE_PURE_MASK(type) == MAY_BE_ANY; + bool is_only_null = (ZEND_TYPE_PURE_MASK(type) == MAY_BE_NULL && !ZEND_TYPE_IS_COMPLEX(type)); switch (type_kind) { case INTERSECTION_TYPE: @@ -1373,7 +1374,7 @@ static void reflection_type_factory(zend_type type, zval *object, bool legacy_be intern = Z_REFLECTION_P(object); reference = (type_reference*) emalloc(sizeof(type_reference)); reference->type = type; - reference->legacy_behavior = legacy_behavior && type_kind == NAMED_TYPE && !is_mixed; + reference->legacy_behavior = legacy_behavior && type_kind == NAMED_TYPE && !is_mixed && !is_only_null; intern->ptr = reference; intern->ref_type = REF_TYPE_TYPE; diff --git a/ext/reflection/tests/ReflectionType_possible_types.phpt b/ext/reflection/tests/ReflectionType_possible_types.phpt index ccb87254663d3..dd6d39300b590 100644 --- a/ext/reflection/tests/ReflectionType_possible_types.phpt +++ b/ext/reflection/tests/ReflectionType_possible_types.phpt @@ -12,6 +12,8 @@ $functions = [ function(): array {}, function(): callable {}, function(): iterable {}, + function(): null {}, + function(): false {}, function(): StdClass {} ]; @@ -30,4 +32,6 @@ string(4) "bool" string(5) "array" string(8) "callable" string(8) "iterable" +string(4) "null" +string(5) "false" string(8) "StdClass" diff --git a/ext/reflection/tests/union_types.phpt b/ext/reflection/tests/union_types.phpt index 8dbbbdab854a3..a3ac53b54ab29 100644 --- a/ext/reflection/tests/union_types.phpt +++ b/ext/reflection/tests/union_types.phpt @@ -13,8 +13,17 @@ function dumpType(ReflectionUnionType $rt) { } } +function dumpBCType(ReflectionNamedType $rt) { + echo "Type $rt:\n"; + echo " Name: " . $rt->getName() . "\n"; + echo " String: " . (string) $rt . "\n"; + echo " Allows Null: " . ($rt->allowsNull() ? "true" : "false") . "\n"; +} + function test1(): X|Y|int|float|false|null { } function test2(): X|iterable|bool { } +function test3(): null|false { } +function test4(): ?false { } class Test { public X|Y|int $prop; @@ -22,6 +31,8 @@ class Test { dumpType((new ReflectionFunction('test1'))->getReturnType()); dumpType((new ReflectionFunction('test2'))->getReturnType()); +dumpBCType((new ReflectionFunction('test3'))->getReturnType()); +dumpBCType((new ReflectionFunction('test4'))->getReturnType()); $rc = new ReflectionClass(Test::class); $rp = $rc->getProperty('prop'); @@ -75,6 +86,14 @@ Allows null: false Name: bool String: bool Allows Null: false +Type ?false: + Name: false + String: ?false + Allows Null: true +Type ?false: + Name: false + String: ?false + Allows Null: true Type X|Y|int: Allows null: false Name: X From 3931d726c436e2f72184cbe1ad315d4cc46bb20a Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Fri, 8 Apr 2022 17:58:10 +0100 Subject: [PATCH 57/63] Add missing ZPP checks in SPL Directory (#8325) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Máté Kocsis --- UPGRADING | 9 +++++++++ ext/spl/spl_directory.c | 23 +++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/UPGRADING b/UPGRADING index 2d76009808b07..12cffeb9127e5 100644 --- a/UPGRADING +++ b/UPGRADING @@ -27,6 +27,15 @@ PHP 8.2 UPGRADE NOTES array_change_key_case and sorting with SORT_FLAG_CASE use ASCII case conversion. +- SPL: + . The following methods now enforce their signature: + * SplFileInfo::_bad_state_ex() + * SplFileObject::getCsvControl() + * SplFileObject::fflush() + * SplFileObject::ftell() + * SplFileObject::fgetc() + * SplFileObject::fpassthru() + ======================================== 2. New Features ======================================== diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index f3d4fa2b92f7a..396440aeab57c 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -1399,6 +1399,9 @@ PHP_METHOD(SplFileInfo, __debugInfo) /* {{{ */ PHP_METHOD(SplFileInfo, _bad_state_ex) { + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } zend_throw_error(NULL, "The parent constructor was not called: the object is in an invalid state"); } /* }}} */ @@ -2476,6 +2479,10 @@ PHP_METHOD(SplFileObject, getCsvControl) spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(ZEND_THIS); char delimiter[2], enclosure[2], escape[2]; + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } + array_init(return_value); delimiter[0] = intern->u.file.delimiter; @@ -2517,6 +2524,10 @@ PHP_METHOD(SplFileObject, fflush) { spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(ZEND_THIS); + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } + CHECK_SPL_FILE_OBJECT_IS_INITIALIZED(intern); RETURN_BOOL(!php_stream_flush(intern->u.file.stream)); @@ -2528,6 +2539,10 @@ PHP_METHOD(SplFileObject, ftell) spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(ZEND_THIS); zend_long ret; + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } + CHECK_SPL_FILE_OBJECT_IS_INITIALIZED(intern); ret = php_stream_tell(intern->u.file.stream); @@ -2562,6 +2577,10 @@ PHP_METHOD(SplFileObject, fgetc) char buf[2]; int result; + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } + CHECK_SPL_FILE_OBJECT_IS_INITIALIZED(intern); spl_filesystem_file_free_line(intern); @@ -2585,6 +2604,10 @@ PHP_METHOD(SplFileObject, fpassthru) { spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(ZEND_THIS); + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } + CHECK_SPL_FILE_OBJECT_IS_INITIALIZED(intern); RETURN_LONG(php_stream_passthru(intern->u.file.stream)); From 2ac5948f5cbaf3351fe18ab1068422487c9c215f Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Fri, 8 Apr 2022 20:16:26 +0100 Subject: [PATCH 58/63] Refactor SplFileObject CSV methods (#8317) Use early returns, which fixes ValueError order of arguments and flattens the code --- ext/spl/spl_directory.c | 171 ++++++++---------- .../SplFileObject_fputcsv_variation14.phpt | 6 + 2 files changed, 84 insertions(+), 93 deletions(-) diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index 396440aeab57c..8e89b86048750 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -2331,35 +2331,32 @@ PHP_METHOD(SplFileObject, fgetcsv) CHECK_SPL_FILE_OBJECT_IS_INITIALIZED(intern); - switch (ZEND_NUM_ARGS()) { - case 3: - if (esc_len > 1) { - zend_argument_value_error(3, "must be empty or a single character"); + if (delim) { + if (d_len != 1) { + zend_argument_value_error(1, "must be a single character"); RETURN_THROWS(); } - if (esc_len == 0) { - escape = PHP_CSV_NO_ESCAPE; - } else { - escape = (unsigned char) esc[0]; - } - ZEND_FALLTHROUGH; - case 2: + delimiter = delim[0]; + } + if (enclo) { if (e_len != 1) { zend_argument_value_error(2, "must be a single character"); RETURN_THROWS(); } enclosure = enclo[0]; - ZEND_FALLTHROUGH; - case 1: - if (d_len != 1) { - zend_argument_value_error(1, "must be a single character"); + } + if (esc) { + if (esc_len > 1) { + zend_argument_value_error(3, "must be empty or a single character"); RETURN_THROWS(); } - delimiter = delim[0]; - ZEND_FALLTHROUGH; - case 0: - break; + if (esc_len == 0) { + escape = PHP_CSV_NO_ESCAPE; + } else { + escape = (unsigned char) esc[0]; + } } + if (spl_filesystem_file_read_csv(intern, delimiter, enclosure, escape, return_value) == FAILURE) { RETURN_FALSE; } @@ -2378,49 +2375,41 @@ PHP_METHOD(SplFileObject, fputcsv) zval *fields = NULL; zend_string *eol = NULL; - if (zend_parse_parameters(ZEND_NUM_ARGS(), "a|sssS", &fields, &delim, &d_len, &enclo, &e_len, &esc, &esc_len, &eol) == SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "a|sssS", &fields, &delim, &d_len, &enclo, &e_len, &esc, &esc_len, &eol) == FAILURE) { + RETURN_THROWS(); + } - switch(ZEND_NUM_ARGS()) - { - case 5: - case 4: - switch (esc_len) { - case 0: - escape = PHP_CSV_NO_ESCAPE; - break; - case 1: - escape = (unsigned char) esc[0]; - break; - default: - zend_argument_value_error(4, "must be empty or a single character"); - RETURN_THROWS(); - } - ZEND_FALLTHROUGH; - case 3: - if (e_len != 1) { - zend_argument_value_error(3, "must be a single character"); - RETURN_THROWS(); - } - enclosure = enclo[0]; - ZEND_FALLTHROUGH; - case 2: - if (d_len != 1) { - zend_argument_value_error(2, "must be a single character"); - RETURN_THROWS(); - } - delimiter = delim[0]; - ZEND_FALLTHROUGH; - case 1: - case 0: - break; + if (delim) { + if (d_len != 1) { + zend_argument_value_error(2, "must be a single character"); + RETURN_THROWS(); } - - ret = php_fputcsv(intern->u.file.stream, fields, delimiter, enclosure, escape, eol); - if (ret < 0) { - RETURN_FALSE; + delimiter = delim[0]; + } + if (enclo) { + if (e_len != 1) { + zend_argument_value_error(3, "must be a single character"); + RETURN_THROWS(); } - RETURN_LONG(ret); + enclosure = enclo[0]; } + if (esc) { + if (esc_len > 1) { + zend_argument_value_error(4, "must be empty or a single character"); + RETURN_THROWS(); + } + if (esc_len == 0) { + escape = PHP_CSV_NO_ESCAPE; + } else { + escape = (unsigned char) esc[0]; + } + } + + ret = php_fputcsv(intern->u.file.stream, fields, delimiter, enclosure, escape, eol); + if (ret < 0) { + RETURN_FALSE; + } + RETURN_LONG(ret); } /* }}} */ @@ -2433,43 +2422,39 @@ PHP_METHOD(SplFileObject, setCsvControl) char *delim = NULL, *enclo = NULL, *esc = NULL; size_t d_len = 0, e_len = 0, esc_len = 0; - if (zend_parse_parameters(ZEND_NUM_ARGS(), "|sss", &delim, &d_len, &enclo, &e_len, &esc, &esc_len) == SUCCESS) { - switch(ZEND_NUM_ARGS()) - { - case 3: - switch (esc_len) { - case 0: - escape = PHP_CSV_NO_ESCAPE; - break; - case 1: - escape = (unsigned char) esc[0]; - break; - default: - zend_argument_value_error(3, "must be empty or a single character"); - RETURN_THROWS(); - } - ZEND_FALLTHROUGH; - case 2: - if (e_len != 1) { - zend_argument_value_error(2, "must be a single character"); - RETURN_THROWS(); - } - enclosure = enclo[0]; - ZEND_FALLTHROUGH; - case 1: - if (d_len != 1) { - zend_argument_value_error(1, "must be a single character"); - RETURN_THROWS(); - } - delimiter = delim[0]; - ZEND_FALLTHROUGH; - case 0: - break; + if (zend_parse_parameters(ZEND_NUM_ARGS(), "|sss", &delim, &d_len, &enclo, &e_len, &esc, &esc_len) == FAILURE) { + RETURN_THROWS(); + } + + if (delim) { + if (d_len != 1) { + zend_argument_value_error(1, "must be a single character"); + RETURN_THROWS(); } - intern->u.file.delimiter = delimiter; - intern->u.file.enclosure = enclosure; - intern->u.file.escape = escape; + delimiter = delim[0]; } + if (enclo) { + if (e_len != 1) { + zend_argument_value_error(2, "must be a single character"); + RETURN_THROWS(); + } + enclosure = enclo[0]; + } + if (esc) { + if (esc_len > 1) { + zend_argument_value_error(3, "must be empty or a single character"); + RETURN_THROWS(); + } + if (esc_len == 0) { + escape = PHP_CSV_NO_ESCAPE; + } else { + escape = (unsigned char) esc[0]; + } + } + + intern->u.file.delimiter = delimiter; + intern->u.file.enclosure = enclosure; + intern->u.file.escape = escape; } /* }}} */ diff --git a/ext/spl/tests/SplFileObject_fputcsv_variation14.phpt b/ext/spl/tests/SplFileObject_fputcsv_variation14.phpt index 60efae632dae2..c660d217acb55 100644 --- a/ext/spl/tests/SplFileObject_fputcsv_variation14.phpt +++ b/ext/spl/tests/SplFileObject_fputcsv_variation14.phpt @@ -15,6 +15,11 @@ try { } catch (ValueError $e) { echo $e->getMessage(), "\n"; } +try { + var_dump($fo->fputcsv(array('water', 'fruit'), ',', '""')); +} catch (ValueError $e) { + echo $e->getMessage(), "\n"; +} unset($fo); @@ -27,5 +32,6 @@ unlink($file); ?> --EXPECT-- *** Testing fputcsv() : with enclosure & delimiter of two chars and file opened in read mode *** +SplFileObject::fputcsv(): Argument #2 ($separator) must be a single character SplFileObject::fputcsv(): Argument #3 ($enclosure) must be a single character Done From 5de1cd9e48fb7ce658bff260b4a4f72cfc0af191 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Fri, 1 Apr 2022 17:15:33 +0200 Subject: [PATCH 59/63] Add nightly for GitHub actions --- .github/nightly_matrix.php | 71 +++++++++++++++++ .github/workflows/nightly.yml | 146 ++++++++++++++++++++++++++++++++++ .gitignore | 5 ++ azure-pipelines.yml | 37 +-------- azure/macos/brew.yml | 33 -------- azure/macos/job.yml | 99 ----------------------- azure/macos/test.yml | 29 ------- 7 files changed, 224 insertions(+), 196 deletions(-) create mode 100644 .github/nightly_matrix.php create mode 100644 .github/workflows/nightly.yml delete mode 100644 azure/macos/brew.yml delete mode 100644 azure/macos/job.yml delete mode 100644 azure/macos/test.yml diff --git a/.github/nightly_matrix.php b/.github/nightly_matrix.php new file mode 100644 index 0000000000000..a099a3ba2ad67 --- /dev/null +++ b/.github/nightly_matrix.php @@ -0,0 +1,71 @@ + $branch_key, + 'ref' => $branch, + ]; + }, $branches); + + return $result; +} + +function get_branches() { + $branch_commit_cache_file = get_branch_commit_cache_file_path(); + $branch_commit_map = []; + if (file_exists($branch_commit_cache_file)) { + $branch_commit_map = json_decode(file_get_contents($branch_commit_cache_file), JSON_THROW_ON_ERROR); + } + + $changed_branches = []; + foreach (BRANCHES as $branch) { + $previous_commit_hash = $branch_commit_map[$branch] ?? null; + $current_commit_hash = trim(shell_exec('git rev-parse origin/' . $branch)); + + if ($previous_commit_hash !== $current_commit_hash) { + $changed_branches[] = $branch; + } + + $branch_commit_map[$branch] = $current_commit_hash; + } + + file_put_contents($branch_commit_cache_file, json_encode($branch_commit_map)); + + return get_branch_matrix($changed_branches); +} + +function get_asan_matrix(array $branches) { + $jobs = []; + foreach ($branches as $branch) { + $jobs[] = [ + 'name' => '_ASAN_UBSAN', + 'branch' => $branch, + 'debug' => true, + 'zts' => true, + 'configuration_parameters' => "CFLAGS='-fsanitize=undefined,address -DZEND_TRACK_ARENA_ALLOC' LDFLAGS='-fsanitize=undefined,address'", + 'run_tests_parameters' => '--asan', + ]; + } + return $jobs; +} + +$trigger = $argv[1] ?? 'schedule'; +$attempt = (int) ($argv[2] ?? 1); +$discard_cache = ($trigger === 'schedule' && $attempt !== 1) || $trigger === 'workflow_dispatch'; +if ($discard_cache) { + @unlink(get_branch_commit_cache_file_path()); +} + +$branches = get_branches(); +$asan_matrix = get_asan_matrix($branches); + +echo '::set-output name=branches::' . json_encode($branches, JSON_UNESCAPED_SLASHES) . "\n"; +echo '::set-output name=asan-matrix::' . json_encode($asan_matrix, JSON_UNESCAPED_SLASHES) . "\n"; diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 0000000000000..121308be6c551 --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,146 @@ +name: Nightly +on: + schedule: + - cron: "0 1 * * *" + workflow_dispatch: ~ + issue_comment: + types: [created] +jobs: + GENERATE_MATRIX: + name: Generate Matrix + runs-on: ubuntu-latest + outputs: + branches: ${{ steps.set-matrix.outputs.branches }} + asan-matrix: ${{ steps.set-matrix.outputs.asan-matrix }} + steps: + - uses: actions/checkout@v2 + with: + # Set fetch-depth to 0 to clone the full repository + # including all branches. This is required to find + # the correct commit hashes. + fetch-depth: 0 + - name: Grab the commit mapping + uses: actions/cache@v3 + with: + path: branch-commit-cache.json + # The cache key needs to change every time for the + # cache to be updated after this job finishes. + key: nightly-${{ github.run_id }}-${{ github.run_attempt }} + restore-keys: | + nightly- + - name: Generate Matrix + id: set-matrix + run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" + LINUX_X64: + needs: GENERATE_MATRIX + if: ${{ needs.GENERATE_MATRIX.outputs.branches != '[]' }} + strategy: + fail-fast: false + matrix: + branch: ${{ fromJson(needs.GENERATE_MATRIX.outputs.branches) }} + debug: [true, false] + zts: [true, false] + include: ${{ fromJson(needs.GENERATE_MATRIX.outputs.asan-matrix) }} + name: "${{ matrix.branch.name }}_LINUX_X64${{ matrix.name }}_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}" + runs-on: ubuntu-20.04 + steps: + - name: git checkout + uses: actions/checkout@v2 + with: + ref: ${{ matrix.branch.ref }} + - name: Create mssql container + uses: ./.github/actions/mssql + - name: apt + uses: ./.github/actions/apt-x64 + - name: ./configure + uses: ./.github/actions/configure-x64 + with: + configurationParameters: >- + ${{ matrix.configuration_parameters }} + --${{ matrix.debug && 'enable' || 'disable' }}-debug + --${{ matrix.zts && 'enable' || 'disable' }}-zts + - name: make + run: make -j$(/usr/bin/nproc) >/dev/null + - name: make install + uses: ./.github/actions/install-linux + - name: Setup + uses: ./.github/actions/setup-x64 + - name: Test + uses: ./.github/actions/test-linux + with: + runTestsParameters: >- + ${{ matrix.run_tests_parameters }} + - name: Test Tracing JIT + uses: ./.github/actions/test-linux + with: + runTestsParameters: >- + ${{ matrix.run_tests_parameters }} + -d zend_extension=opcache.so + -d opcache.jit_buffer_size=16M + - name: Test OpCache + uses: ./.github/actions/test-linux + with: + runTestsParameters: >- + ${{ matrix.run_tests_parameters }} + -d zend_extension=opcache.so + - name: Test Function JIT + uses: ./.github/actions/test-linux + with: + runTestsParameters: >- + ${{ matrix.run_tests_parameters }} + -d zend_extension=opcache.so + -d opcache.jit_buffer_size=16M + -d opcache.jit=1205 + MACOS: + needs: GENERATE_MATRIX + if: ${{ needs.GENERATE_MATRIX.outputs.branches != '[]' }} + strategy: + fail-fast: false + matrix: + branch: ${{ fromJson(needs.GENERATE_MATRIX.outputs.branches) }} + debug: [true, false] + zts: [true, false] + name: "${{ matrix.branch.name }}_MACOS_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}" + runs-on: macos-10.15 + steps: + - name: git checkout + uses: actions/checkout@v2 + with: + ref: ${{ matrix.branch.ref }} + - name: brew + uses: ./.github/actions/brew + - name: ./configure + uses: ./.github/actions/configure-macos + with: + configurationParameters: >- + --${{ matrix.debug && 'enable' || 'disable' }}-debug + --${{ matrix.zts && 'enable' || 'disable' }}-zts + - name: make + run: |- + export PATH="/usr/local/opt/bison/bin:$PATH" + make -j$(sysctl -n hw.logicalcpu) >/dev/null + - name: make install + run: sudo make install + - name: Test + uses: ./.github/actions/test-macos + - name: Test Tracing JIT + uses: ./.github/actions/test-macos + with: + runTestsParameters: >- + -d zend_extension=opcache.so + -d opcache.protect_memory=1 + -d opcache.jit_buffer_size=16M + - name: Test OpCache + uses: ./.github/actions/test-macos + with: + runTestsParameters: >- + -d zend_extension=opcache.so + -d opcache.protect_memory=1 + - name: Test Function JIT + uses: ./.github/actions/test-macos + with: + runTestsParameters: >- + -d zend_extension=opcache.so + -d opcache.protect_memory=1 + -d opcache.jit_buffer_size=16M + -d opcache.jit=1205 diff --git a/.gitignore b/.gitignore index 1eab1d32ac417..362de559b3240 100644 --- a/.gitignore +++ b/.gitignore @@ -274,6 +274,11 @@ tmp-php.ini /Zend/zend_dtrace_gen.h /Zend/zend_dtrace_gen.h.bak +# ------------------------------------------------------------------------------ +# GitHub actions cache +# ------------------------------------------------------------------------------ +/branch-commit-cache.json + # ------------------------------------------------------------------------------ # Special cases to invert previous ignore patterns # ------------------------------------------------------------------------------ diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a633ceae01cbf..e896c993896de 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -4,6 +4,7 @@ trigger: include: - PHP-7.4 - PHP-8.0 + - PHP-8.1 - master paths: exclude: @@ -19,6 +20,7 @@ schedules: include: - PHP-7.4 - PHP-8.0 + - PHP-8.1 - master jobs: @@ -27,14 +29,6 @@ jobs: configurationName: I386_DEBUG_ZTS configurationParameters: '--enable-debug --enable-zts' - ${{ if eq(variables['Build.Reason'], 'Schedule') }}: - - template: azure/job.yml - parameters: - configurationName: DEBUG_ZTS - configurationParameters: '--enable-debug --enable-zts' - - template: azure/job.yml - parameters: - configurationName: RELEASE_NTS - configurationParameters: '--disable-debug --disable-zts' - template: azure/i386/job.yml parameters: configurationName: I386_DEBUG_NTS @@ -47,33 +41,6 @@ jobs: parameters: configurationName: I386_RELEASE_ZTS configurationParameters: '--disable-debug --enable-zts' - - template: azure/macos/job.yml - parameters: - configurationName: MACOS_DEBUG_ZTS - configurationParameters: '--enable-debug --enable-zts' - - template: azure/macos/job.yml - parameters: - configurationName: MACOS_RELEASE_NTS - configurationParameters: '--disable-debug --disable-zts' - - template: azure/macos/job.yml - parameters: - configurationName: MACOS_RELEASE_ZTS - configurationParameters: '--disable-debug --enable-zts' - - template: azure/job.yml - parameters: - configurationName: DEBUG_ZTS_ASAN_UBSAN - configurationParameters: >- - --enable-debug --enable-zts - CFLAGS='-fsanitize=undefined,address -DZEND_TRACK_ARENA_ALLOC' - LDFLAGS='-fsanitize=undefined,address' - runTestsParameters: --asan - timeoutInMinutes: 360 - - template: azure/msan_job.yml - parameters: - configurationName: DEBUG_ZTS_MSAN - configurationParameters: '--enable-debug --enable-zts' - runTestsParameters: --msan - timeoutInMinutes: 90 - template: azure/community_job.yml parameters: configurationName: COMMUNITY diff --git a/azure/macos/brew.yml b/azure/macos/brew.yml deleted file mode 100644 index df4c5a532d740..0000000000000 --- a/azure/macos/brew.yml +++ /dev/null @@ -1,33 +0,0 @@ -parameters: - packages: '' - -steps: - - script: | - brew install pkg-config \ - autoconf \ - bison \ - re2c - displayName: 'Install Build Tools' - - script: | - brew install openssl@1.1 \ - krb5 \ - bzip2 \ - enchant \ - libffi \ - libpng \ - webp \ - freetype \ - intltool \ - icu4c \ - libiconv \ - zlib \ - t1lib \ - gd \ - libzip \ - gmp \ - tidyp \ - libxml2 \ - libxslt \ - postgresql - brew link icu4c gettext --force - displayName: 'Install Build Dependencies' diff --git a/azure/macos/job.yml b/azure/macos/job.yml deleted file mode 100644 index 39fe19268b9fd..0000000000000 --- a/azure/macos/job.yml +++ /dev/null @@ -1,99 +0,0 @@ -parameters: - configurationName: '' - configurationParameters: '' - -jobs: - - job: ${{ parameters.configurationName }} - pool: - vmImage: 'macOS-10.15' - steps: - - template: brew.yml - - script: | - export PATH="/usr/local/opt/bison/bin:$PATH" - export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/openssl@1.1/lib/pkgconfig" - export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/krb5/lib/pkgconfig" - export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/libffi/lib/pkgconfig" - export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/libxml2/lib/pkgconfig" - export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/libxslt/lib/pkgconfig" - export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/zlib/lib/pkgconfig" - export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/icu4c/lib/pkgconfig" - ./buildconf --force - ./configure ${{ parameters.configurationParameters }} \ - --enable-option-checking=fatal \ - --prefix=/usr/local \ - --disable-phpdbg \ - --enable-fpm \ - --with-pdo-mysql=mysqlnd \ - --with-mysqli=mysqlnd \ - --with-pgsql=/usr/local/opt/libpq \ - --with-pdo-pgsql=/usr/local/opt/libpq \ - --with-pdo-sqlite \ - --without-pear \ - --enable-gd \ - --with-jpeg \ - --with-webp \ - --with-freetype \ - --enable-exif \ - --with-zip \ - --with-zlib \ - --enable-soap \ - --enable-xmlreader \ - --with-xsl \ - --with-tidy=/usr/local/opt/tidyp \ - --with-libxml \ - --enable-sysvsem \ - --enable-sysvshm \ - --enable-shmop \ - --enable-pcntl \ - --with-readline=/usr/local/opt/readline \ - --enable-mbstring \ - --with-curl \ - --with-gettext=/usr/local/opt/gettext \ - --enable-sockets \ - --with-bz2=/usr/local/opt/bzip2 \ - --with-openssl \ - --with-gmp=/usr/local/opt/gmp \ - --with-iconv=/usr/local/opt/libiconv \ - --enable-bcmath \ - --enable-calendar \ - --enable-ftp \ - --with-pspell=/usr/local/opt/aspell \ - --with-kerberos \ - --enable-sysvmsg \ - --with-ffi \ - --enable-zend-test \ - --enable-intl \ - --with-mhash \ - --with-sodium \ - --enable-dba \ - --enable-werror \ - --with-config-file-path=/etc \ - --with-config-file-scan-dir=/etc/php.d - displayName: 'Configure Build' - - script: | - export PATH="/usr/local/opt/bison/bin:$PATH" - make -j$(sysctl -n hw.ncpu) >/dev/null - displayName: 'Make Build' - - script: | - sudo make install - displayName: 'Install Build' - - template: test.yml - parameters: - configurationName: ${{ parameters.configurationName }} - - ${{ if eq(variables['Build.Reason'], 'Schedule') }}: - - template: test.yml - parameters: - configurationName: ${{ parameters.configurationName }} - runTestsName: 'OpCache' - runTestsParameters: -d zend_extension=opcache.so -d opcache.enable_cli=1 -d opcache.protect_memory=1 - - ${{ if eq(variables['Build.Reason'], 'Schedule') }}: - - template: test.yml - parameters: - configurationName: ${{ parameters.configurationName }} - runTestsName: 'Function JIT' - runTestsParameters: -d zend_extension=opcache.so -d opcache.enable_cli=1 -d opcache.protect_memory=1 -d opcache.jit_buffer_size=16M -d opcache.jit=1205 - - template: test.yml - parameters: - configurationName: ${{ parameters.configurationName }} - runTestsName: 'Tracing JIT' - runTestsParameters: -d zend_extension=opcache.so -d opcache.enable_cli=1 -d opcache.protect_memory=1 -d opcache.jit_buffer_size=16M diff --git a/azure/macos/test.yml b/azure/macos/test.yml deleted file mode 100644 index f139e53e404bf..0000000000000 --- a/azure/macos/test.yml +++ /dev/null @@ -1,29 +0,0 @@ -parameters: - runTestsName: '' - runTestsParameters: '' - -steps: - - script: | - export TEST_PHP_JUNIT=junit.xml - export REPORT_EXIT_STATUS=no - export SKIP_IO_CAPTURE_TESTS=1 - export CI_NO_IPV6=1 - rm -rf junit.xml | true - /usr/local/bin/php run-tests.php -P -q \ - -j$(sysctl -n hw.ncpu) \ - -g FAIL,XFAIL,BORK,WARN,LEAK,XLEAK,SKIP \ - --offline \ - --show-diff \ - --show-slow 1000 \ - --set-timeout 120 \ - ${{ parameters.runTestsParameters }} - displayName: 'Test ${{ parameters.configurationName }} ${{ parameters.runTestsName }}' - condition: or(succeeded(), failed()) - - task: PublishTestResults@2 - inputs: - testResultsFormat: 'JUnit' - testResultsFiles: junit.xml - testRunTitle: '${{ parameters.configurationName }} ${{ parameters.runTestsName }}' - failTaskOnFailedTests: true - displayName: 'Export ${{ parameters.configurationName }} ${{ parameters.runTestsName }} Results' - condition: or(succeeded(), failed()) From 9af3759987d66a9af9c62f0709ea62acb67d6af6 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Sun, 10 Apr 2022 01:10:25 +0200 Subject: [PATCH 60/63] Remove issue_comment trigger on nightly This was a left-over from the attept to trigger nightly via comment. --- .github/workflows/nightly.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 121308be6c551..1b847554afe9a 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -3,8 +3,6 @@ on: schedule: - cron: "0 1 * * *" workflow_dispatch: ~ - issue_comment: - types: [created] jobs: GENERATE_MATRIX: name: Generate Matrix From 323f3c6914da3fda8658eb7452117370846b1426 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sun, 10 Apr 2022 10:41:20 +0200 Subject: [PATCH 61/63] Improve file/line information for narrowing warning Report the file/line of the opline rather than the include location. This should make issues like #8251 easier to debug. --- Zend/Optimizer/zend_inference.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Zend/Optimizer/zend_inference.c b/Zend/Optimizer/zend_inference.c index 4c75cf330a3b9..abb8bdfa50d55 100644 --- a/Zend/Optimizer/zend_inference.c +++ b/Zend/Optimizer/zend_inference.c @@ -1864,7 +1864,10 @@ static void emit_type_narrowing_warning(const zend_op_array *op_array, zend_ssa int def_op_num = ssa->vars[var].definition; const zend_op *def_opline = def_op_num >= 0 ? &op_array->opcodes[def_op_num] : NULL; const char *def_op_name = def_opline ? zend_get_opcode_name(def_opline->opcode) : "PHI"; - zend_error(E_WARNING, "Narrowing occurred during type inference of %s. Please file a bug report on bugs.php.net", def_op_name); + uint32_t lineno = def_opline ? def_opline->lineno : 0; + zend_error_at( + E_WARNING, op_array->filename, lineno, + "Narrowing occurred during type inference of %s. Please file a bug report on https://github.com/php/php-src/issues", def_op_name); } ZEND_API uint32_t zend_array_element_type(uint32_t t1, zend_uchar op_type, int write, int insert) From 8e58828e89d3978773544085999f6aaab2d41e46 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sun, 10 Apr 2022 10:45:52 +0200 Subject: [PATCH 62/63] Add debug assertion on type narrowing This ensures that this will show up as a fuzzing failure. --- Zend/Optimizer/zend_inference.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Zend/Optimizer/zend_inference.c b/Zend/Optimizer/zend_inference.c index 3cc5e3f505fc7..a498926f41d2c 100644 --- a/Zend/Optimizer/zend_inference.c +++ b/Zend/Optimizer/zend_inference.c @@ -1862,6 +1862,9 @@ static void emit_type_narrowing_warning(const zend_op_array *op_array, zend_ssa zend_error_at( E_WARNING, op_array->filename, lineno, "Narrowing occurred during type inference of %s. Please file a bug report on https://github.com/php/php-src/issues", def_op_name); +#if ZEND_DEBUG + ZEND_ASSERT(0 && "Narrowing during type inference"); +#endif } ZEND_API uint32_t ZEND_FASTCALL zend_array_type_info(const zval *zv) From c72e9621ce3095e9de1cd6fdfec777ab27c05a06 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sun, 10 Apr 2022 11:13:55 +0200 Subject: [PATCH 63/63] Improve type narrowing fix We need to explicitly model the null return type for property accesses on non-objects. --- Zend/Optimizer/zend_inference.c | 62 ++++----- ext/opcache/tests/opt/inference_001.phpt | 163 +++-------------------- 2 files changed, 52 insertions(+), 173 deletions(-) diff --git a/Zend/Optimizer/zend_inference.c b/Zend/Optimizer/zend_inference.c index abb8bdfa50d55..5f56342ed48f9 100644 --- a/Zend/Optimizer/zend_inference.c +++ b/Zend/Optimizer/zend_inference.c @@ -1764,11 +1764,6 @@ static uint32_t get_ssa_alias_types(zend_ssa_alias_kind alias) { (ssa_var_info[__var].type & MAY_BE_REF) \ == (__type & MAY_BE_REF)); \ if (ssa_var_info[__var].type & ~__type) { \ - if ((ssa_var_info[__var].type & ~__type & \ - ~(MAY_BE_RC1|MAY_BE_RCN)) == 0) { \ - ssa_var_info[__var].type |= __type; \ - break; \ - } \ emit_type_narrowing_warning(op_array, ssa, __var); \ return FAILURE; \ } \ @@ -3375,33 +3370,40 @@ static zend_always_inline int _zend_update_type_info( case ZEND_FETCH_OBJ_UNSET: case ZEND_FETCH_OBJ_FUNC_ARG: if (ssa_op->result_def >= 0) { - zend_property_info *prop_info = zend_fetch_prop_info(op_array, ssa, opline, ssa_op); - - tmp = zend_fetch_prop_type(script, prop_info, &ce); - if (opline->result_type == IS_VAR) { - tmp |= MAY_BE_REF | MAY_BE_INDIRECT; - } else if (!(opline->op1_type & (IS_VAR|IS_TMP_VAR)) || !(t1 & MAY_BE_RC1)) { - zend_class_entry *ce = NULL; - - if (opline->op1_type == IS_UNUSED) { - ce = op_array->scope; - } else if (ssa_op->op1_use >= 0 && !ssa->var_info[ssa_op->op1_use].is_instanceof) { - ce = ssa->var_info[ssa_op->op1_use].ce; - } - if (prop_info) { - /* FETCH_OBJ_R/IS for plain property increments reference counter, - so it can't be 1 */ - if (ce && !ce->create_object && !result_may_be_separated(ssa, ssa_op)) { - tmp &= ~MAY_BE_RC1; + uint32_t tmp = 0; + ce = NULL; + if (opline->op1_type != IS_UNUSED + && (t1 & (MAY_BE_ANY | MAY_BE_UNDEF) & ~MAY_BE_OBJECT)) { + tmp |= MAY_BE_NULL; + } + if (opline->op1_type == IS_UNUSED || (t1 & MAY_BE_OBJECT)) { + zend_property_info *prop_info = zend_fetch_prop_info(op_array, ssa, opline, ssa_op); + tmp |= zend_fetch_prop_type(script, prop_info, &ce); + if (opline->result_type == IS_VAR) { + tmp |= MAY_BE_REF | MAY_BE_INDIRECT; + } else if (!(opline->op1_type & (IS_VAR|IS_TMP_VAR)) || !(t1 & MAY_BE_RC1)) { + zend_class_entry *ce = NULL; + + if (opline->op1_type == IS_UNUSED) { + ce = op_array->scope; + } else if (ssa_op->op1_use >= 0 && !ssa->var_info[ssa_op->op1_use].is_instanceof) { + ce = ssa->var_info[ssa_op->op1_use].ce; } - } else { - if (ce && !ce->create_object && !ce->__get && !result_may_be_separated(ssa, ssa_op)) { - tmp &= ~MAY_BE_RC1; + if (prop_info) { + /* FETCH_OBJ_R/IS for plain property increments reference counter, + so it can't be 1 */ + if (ce && !ce->create_object && !result_may_be_separated(ssa, ssa_op)) { + tmp &= ~MAY_BE_RC1; + } + } else { + if (ce && !ce->create_object && !ce->__get && !result_may_be_separated(ssa, ssa_op)) { + tmp &= ~MAY_BE_RC1; + } + } + if (opline->opcode == ZEND_FETCH_OBJ_IS) { + /* IS check may return null for uninitialized typed property. */ + tmp |= MAY_BE_NULL; } - } - if (opline->opcode == ZEND_FETCH_OBJ_IS) { - /* IS check may return null for uninitialized typed property. */ - tmp |= MAY_BE_NULL; } } UPDATE_SSA_TYPE(tmp, ssa_op->result_def); diff --git a/ext/opcache/tests/opt/inference_001.phpt b/ext/opcache/tests/opt/inference_001.phpt index 2c7389573462f..1005d28408f9e 100644 --- a/ext/opcache/tests/opt/inference_001.phpt +++ b/ext/opcache/tests/opt/inference_001.phpt @@ -7,157 +7,34 @@ opcache.optimization_level=-1 --FILE-- $e; - $i += $a; - $j++; - $e; - $a == $Z + $a .= $i+= $a; - $j++; - $e; - $a == $Z + $j++; - $e; - $a == $Z + $a = $a + $b = $i += $a; + for ($i = 0; $i < 2; $i++) { + $obj->x; $obj = new stdClass; - $obj->prop1 = set_error_handler(function () { - $$GLOBALS['a'] = null; - }); - $obj->$a .= $i += $a; - $obj = new stdClass; - $obj->prop1 = $j++; - $e; - $a == $Z + $a = $a + $j++; - $e; - $a == $Z + $a = $a + $b = $aa = $a; } } test(); + +class Test { + public int $x = 1; +} + +function test2() { + for ($i = 0; $i < 2; $i++) { + $obj->x; + $obj = new Test; + } +} +test2(); ?> DONE --EXPECTF-- -Warning: Undefined variable $a in %sinference_001.php on line 6 - -Warning: Undefined variable $obj in %sinference_001.php on line 7 - -Warning: Undefined variable $e in %sinference_001.php on line 7 - -Warning: Attempt to read property "" on null in %sinference_001.php on line 7 - -Warning: Undefined variable $Z in %sinference_001.php on line 11 - -Warning: Undefined variable $Z in %sinference_001.php on line 14 - -Warning: Undefined variable $Z in %sinference_001.php on line 16 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 +Warning: Undefined variable $obj in %s on line %d -Warning: Array to string conversion in %sinference_001.php on line 19 +Warning: Attempt to read property "x" on null in %s on line %d -Warning: Array to string conversion in %sinference_001.php on line 19 +Warning: Undefined property: stdClass::$x in %s on line %d -Warning: Array to string conversion in %sinference_001.php on line 19 +Warning: Undefined variable $obj in %s on line %d -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Warning: Array to string conversion in %sinference_001.php on line 19 - -Fatal error: Uncaught TypeError: Unsupported operand types: null + string in %sinference_001.php:11 -Stack trace: -#0 %sinference_001.php(30): test() -#1 {main} - thrown in %sinference_001.php on line 11 +Warning: Attempt to read property "x" on null in %s on line %d +DONE