From b887d4471274b5c58231e53a0dbe593148b1db90 Mon Sep 17 00:00:00 2001 From: He Guimin Date: Thu, 7 Mar 2019 18:31:36 +0800 Subject: [PATCH] Add Alibaba Cloud backend OSS with lock --- backend/init/init.go | 2 + backend/remote-state/oss/backend.go | 297 +++ backend/remote-state/oss/backend_state.go | 194 ++ backend/remote-state/oss/backend_test.go | 134 ++ backend/remote-state/oss/client.go | 226 ++ backend/remote-state/oss/client_test.go | 112 + go.mod | 5 + go.sum | 10 + .../aliyun/alibaba-cloud-sdk-go/LICENSE | 201 ++ .../sdk/auth/credential.go | 18 + .../auth/credentials/access_key_credential.go | 34 + .../sdk/auth/credentials/ecs_ram_role.go | 29 + .../credentials/rsa_key_pair_credential.go | 15 + .../sdk/auth/credentials/sts_credential.go | 15 + .../credentials/sts_role_arn_credential.go | 49 + .../sdk/auth/roa_signature_composer.go | 133 ++ .../sdk/auth/rpc_signature_composer.go | 94 + .../alibaba-cloud-sdk-go/sdk/auth/signer.go | 94 + .../sdk/auth/signers/algorithms.go | 56 + .../sdk/auth/signers/credential_updater.go | 54 + .../sdk/auth/signers/session_credential.go | 7 + .../sdk/auth/signers/signer_access_key.go | 54 + .../sdk/auth/signers/signer_ecs_ram_role.go | 167 ++ .../sdk/auth/signers/signer_key_pair.go | 147 ++ .../sdk/auth/signers/signer_ram_role_arn.go | 172 ++ .../sdk/auth/signers/signer_sts_token.go | 54 + .../sdk/auth/signers/signer_v2.go | 54 + .../aliyun/alibaba-cloud-sdk-go/sdk/client.go | 442 ++++ .../alibaba-cloud-sdk-go/sdk/client_test.go | 409 ++++ .../aliyun/alibaba-cloud-sdk-go/sdk/config.go | 91 + .../alibaba-cloud-sdk-go/sdk/config_test.go | 52 + .../sdk/endpoints/endpoints_config.go | 505 +++++ .../sdk/endpoints/local_global_resolver.go | 43 + .../sdk/endpoints/local_regional_resolver.go | 48 + .../sdk/endpoints/location_resolver.go | 176 ++ .../sdk/endpoints/mapping_resolver.go | 48 + .../sdk/endpoints/resolver.go | 98 + .../sdk/endpoints/simple_host_resolver.go | 33 + .../sdk/errors/client_error.go | 92 + .../alibaba-cloud-sdk-go/sdk/errors/error.go | 23 + .../sdk/errors/server_error.go | 123 ++ .../signature_does_not_match_wrapper.go | 43 + .../sdk/requests/acs_request.go | 334 +++ .../sdk/requests/acs_request_test.go | 148 ++ .../sdk/requests/common_request.go | 106 + .../sdk/requests/common_request_test.go | 82 + .../sdk/requests/roa_request.go | 152 ++ .../sdk/requests/roa_request_test.go | 116 ++ .../sdk/requests/rpc_request.go | 79 + .../sdk/requests/rpc_request_test.go | 70 + .../sdk/requests/types.go | 53 + .../sdk/requests/types_test.go | 51 + .../sdk/resource/tzdata.go | 6 + .../sdk/resource/zoneinfo.go | 1190 +++++++++++ .../sdk/responses/json_parser.go | 327 +++ .../sdk/responses/response.go | 145 ++ .../alibaba-cloud-sdk-go/sdk/utils/debug.go | 36 + .../alibaba-cloud-sdk-go/sdk/utils/utils.go | 105 + .../services/location/client.go | 81 + .../services/location/describe_endpoint.go | 111 + .../services/location/describe_endpoints.go | 107 + .../services/location/describe_regions.go | 105 + .../services/location/describe_services.go | 105 + .../services/location/list_endpoints.go | 107 + .../services/location/list_endpoints_by_ip.go | 105 + .../services/location/struct_endpoint.go | 26 + .../struct_endpoint_list_in_list_endpoints.go | 21 + ...t_endpoint_list_in_list_endpoints_by_ip.go | 21 + .../services/location/struct_endpoints.go | 21 + .../services/location/struct_item_endpoint.go | 26 + .../struct_protocols_in_describe_endpoint.go | 21 + .../struct_protocols_in_describe_endpoints.go | 21 + .../struct_protocols_in_list_endpoints.go | 21 + ...truct_protocols_in_list_endpoints_by_ip.go | 21 + .../services/location/struct_region_ids.go | 21 + .../services/location/struct_services.go | 21 + .../aliyun/aliyun-oss-go-sdk/oss/auth.go | 97 + .../aliyun/aliyun-oss-go-sdk/oss/bucket.go | 973 +++++++++ .../aliyun/aliyun-oss-go-sdk/oss/client.go | 775 +++++++ .../aliyun/aliyun-oss-go-sdk/oss/conf.go | 77 + .../aliyun/aliyun-oss-go-sdk/oss/conn.go | 620 ++++++ .../aliyun/aliyun-oss-go-sdk/oss/const.go | 145 ++ .../aliyun/aliyun-oss-go-sdk/oss/crc.go | 123 ++ .../aliyun/aliyun-oss-go-sdk/oss/download.go | 568 +++++ .../aliyun/aliyun-oss-go-sdk/oss/error.go | 94 + .../aliyun/aliyun-oss-go-sdk/oss/mime.go | 245 +++ .../aliyun/aliyun-oss-go-sdk/oss/model.go | 68 + .../aliyun/aliyun-oss-go-sdk/oss/multicopy.go | 468 +++++ .../aliyun/aliyun-oss-go-sdk/oss/multipart.go | 290 +++ .../aliyun/aliyun-oss-go-sdk/oss/option.go | 433 ++++ .../aliyun/aliyun-oss-go-sdk/oss/progress.go | 112 + .../aliyun-oss-go-sdk/oss/transport_1_6.go | 26 + .../aliyun-oss-go-sdk/oss/transport_1_7.go | 28 + .../aliyun/aliyun-oss-go-sdk/oss/type.go | 468 +++++ .../aliyun/aliyun-oss-go-sdk/oss/upload.go | 526 +++++ .../aliyun/aliyun-oss-go-sdk/oss/utils.go | 265 +++ .../github.com/json-iterator/go/.codecov.yml | 3 + vendor/github.com/json-iterator/go/.gitignore | 4 + .../github.com/json-iterator/go/.travis.yml | 14 + vendor/github.com/json-iterator/go/Gopkg.lock | 21 + vendor/github.com/json-iterator/go/Gopkg.toml | 26 + vendor/github.com/json-iterator/go/LICENSE | 21 + vendor/github.com/json-iterator/go/README.md | 91 + vendor/github.com/json-iterator/go/adapter.go | 150 ++ vendor/github.com/json-iterator/go/any.go | 321 +++ .../github.com/json-iterator/go/any_array.go | 278 +++ .../github.com/json-iterator/go/any_bool.go | 137 ++ .../github.com/json-iterator/go/any_float.go | 83 + .../github.com/json-iterator/go/any_int32.go | 74 + .../github.com/json-iterator/go/any_int64.go | 74 + .../json-iterator/go/any_invalid.go | 82 + vendor/github.com/json-iterator/go/any_nil.go | 69 + .../github.com/json-iterator/go/any_number.go | 123 ++ .../github.com/json-iterator/go/any_object.go | 374 ++++ vendor/github.com/json-iterator/go/any_str.go | 166 ++ .../github.com/json-iterator/go/any_uint32.go | 74 + .../github.com/json-iterator/go/any_uint64.go | 74 + vendor/github.com/json-iterator/go/build.sh | 12 + vendor/github.com/json-iterator/go/config.go | 375 ++++ .../go/fuzzy_mode_convert_table.md | 7 + vendor/github.com/json-iterator/go/iter.go | 322 +++ .../github.com/json-iterator/go/iter_array.go | 58 + .../github.com/json-iterator/go/iter_float.go | 347 ++++ .../github.com/json-iterator/go/iter_int.go | 345 ++++ .../json-iterator/go/iter_object.go | 251 +++ .../github.com/json-iterator/go/iter_skip.go | 129 ++ .../json-iterator/go/iter_skip_sloppy.go | 144 ++ .../json-iterator/go/iter_skip_strict.go | 89 + .../github.com/json-iterator/go/iter_str.go | 215 ++ .../github.com/json-iterator/go/jsoniter.go | 18 + vendor/github.com/json-iterator/go/pool.go | 42 + vendor/github.com/json-iterator/go/reflect.go | 332 +++ .../json-iterator/go/reflect_array.go | 104 + .../json-iterator/go/reflect_dynamic.go | 70 + .../json-iterator/go/reflect_extension.go | 483 +++++ .../json-iterator/go/reflect_json_number.go | 112 + .../go/reflect_json_raw_message.go | 60 + .../json-iterator/go/reflect_map.go | 326 +++ .../json-iterator/go/reflect_marshaler.go | 218 ++ .../json-iterator/go/reflect_native.go | 451 ++++ .../json-iterator/go/reflect_optional.go | 133 ++ .../json-iterator/go/reflect_slice.go | 99 + .../go/reflect_struct_decoder.go | 1048 ++++++++++ .../go/reflect_struct_encoder.go | 210 ++ vendor/github.com/json-iterator/go/stream.go | 211 ++ .../json-iterator/go/stream_float.go | 94 + .../github.com/json-iterator/go/stream_int.go | 190 ++ .../github.com/json-iterator/go/stream_str.go | 372 ++++ vendor/github.com/json-iterator/go/test.sh | 12 + .../modern-go/concurrent/.gitignore | 1 + .../modern-go/concurrent/.travis.yml | 14 + .../github.com/modern-go/concurrent/LICENSE | 201 ++ .../github.com/modern-go/concurrent/README.md | 49 + .../modern-go/concurrent/executor.go | 14 + .../modern-go/concurrent/go_above_19.go | 15 + .../modern-go/concurrent/go_below_19.go | 33 + vendor/github.com/modern-go/concurrent/log.go | 13 + .../github.com/modern-go/concurrent/test.sh | 12 + .../concurrent/unbounded_executor.go | 119 ++ .../github.com/modern-go/reflect2/.gitignore | 2 + .../github.com/modern-go/reflect2/.travis.yml | 15 + .../github.com/modern-go/reflect2/Gopkg.lock | 15 + .../github.com/modern-go/reflect2/Gopkg.toml | 35 + vendor/github.com/modern-go/reflect2/LICENSE | 201 ++ .../github.com/modern-go/reflect2/README.md | 71 + .../modern-go/reflect2/go_above_17.go | 8 + .../modern-go/reflect2/go_above_19.go | 14 + .../modern-go/reflect2/go_below_17.go | 9 + .../modern-go/reflect2/go_below_19.go | 14 + .../github.com/modern-go/reflect2/reflect2.go | 298 +++ .../modern-go/reflect2/reflect2_amd64.s | 0 .../modern-go/reflect2/reflect2_kind.go | 30 + .../modern-go/reflect2/relfect2_386.s | 0 .../modern-go/reflect2/relfect2_amd64p32.s | 0 .../modern-go/reflect2/relfect2_arm.s | 0 .../modern-go/reflect2/relfect2_arm64.s | 0 .../modern-go/reflect2/relfect2_mips64x.s | 0 .../modern-go/reflect2/relfect2_mipsx.s | 0 .../modern-go/reflect2/relfect2_ppc64x.s | 0 .../modern-go/reflect2/relfect2_s390x.s | 0 .../modern-go/reflect2/safe_field.go | 58 + .../github.com/modern-go/reflect2/safe_map.go | 101 + .../modern-go/reflect2/safe_slice.go | 92 + .../modern-go/reflect2/safe_struct.go | 29 + .../modern-go/reflect2/safe_type.go | 78 + vendor/github.com/modern-go/reflect2/test.sh | 12 + .../github.com/modern-go/reflect2/type_map.go | 113 + .../modern-go/reflect2/unsafe_array.go | 65 + .../modern-go/reflect2/unsafe_eface.go | 59 + .../modern-go/reflect2/unsafe_field.go | 74 + .../modern-go/reflect2/unsafe_iface.go | 64 + .../modern-go/reflect2/unsafe_link.go | 70 + .../modern-go/reflect2/unsafe_map.go | 138 ++ .../modern-go/reflect2/unsafe_ptr.go | 46 + .../modern-go/reflect2/unsafe_slice.go | 177 ++ .../modern-go/reflect2/unsafe_struct.go | 59 + .../modern-go/reflect2/unsafe_type.go | 85 + vendor/github.com/pmezard/go-difflib/LICENSE | 27 + .../pmezard/go-difflib/difflib/difflib.go | 772 +++++++ .../go-difflib/difflib/difflib_test.go | 426 ++++ vendor/github.com/stretchr/testify/LICENSE | 21 + .../testify/assert/assertion_format.go | 484 +++++ .../testify/assert/assertion_format.go.tmpl | 5 + .../testify/assert/assertion_forward.go | 956 +++++++++ .../testify/assert/assertion_forward.go.tmpl | 5 + .../testify/assert/assertion_order.go | 309 +++ .../testify/assert/assertion_order_test.go | 118 ++ .../stretchr/testify/assert/assertions.go | 1448 +++++++++++++ .../testify/assert/assertions_test.go | 1826 +++++++++++++++++ .../github.com/stretchr/testify/assert/doc.go | 45 + .../stretchr/testify/assert/errors.go | 10 + .../testify/assert/forward_assertions.go | 16 + .../testify/assert/forward_assertions_test.go | 611 ++++++ .../testify/assert/http_assertions.go | 143 ++ .../testify/assert/http_assertions_test.go | 146 ++ vendor/modules.txt | 20 + vendor/vendor.json | 31 + website/docs/backends/types/oss.html.md | 87 + 218 files changed, 34163 insertions(+) create mode 100644 backend/remote-state/oss/backend.go create mode 100644 backend/remote-state/oss/backend_state.go create mode 100644 backend/remote-state/oss/backend_test.go create mode 100644 backend/remote-state/oss/client.go create mode 100644 backend/remote-state/oss/client_test.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/LICENSE create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credential.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/access_key_credential.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/ecs_ram_role.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/rsa_key_pair_credential.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/sts_credential.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/sts_role_arn_credential.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/roa_signature_composer.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/rpc_signature_composer.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signer.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/algorithms.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/credential_updater.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/session_credential.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_access_key.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_ecs_ram_role.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_key_pair.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_ram_role_arn.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_sts_token.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_v2.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/client.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/client_test.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/config.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/config_test.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/endpoints_config.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/local_global_resolver.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/local_regional_resolver.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/location_resolver.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/mapping_resolver.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/resolver.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/simple_host_resolver.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/client_error.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/error.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/server_error.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/signature_does_not_match_wrapper.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/acs_request.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/acs_request_test.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/common_request.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/common_request_test.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/roa_request.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/roa_request_test.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/rpc_request.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/rpc_request_test.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/types.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/types_test.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/resource/tzdata.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/resource/zoneinfo.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses/json_parser.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses/response.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils/debug.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils/utils.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/client.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_endpoint.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_endpoints.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_regions.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_services.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/list_endpoints.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/list_endpoints_by_ip.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoint.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoint_list_in_list_endpoints.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoint_list_in_list_endpoints_by_ip.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoints.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_item_endpoint.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_describe_endpoint.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_describe_endpoints.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_list_endpoints.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_list_endpoints_by_ip.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_region_ids.go create mode 100644 vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_services.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/auth.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/bucket.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/client.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/conf.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/conn.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/const.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/crc.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/download.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/error.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/mime.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/model.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/multicopy.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/multipart.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/option.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/progress.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/transport_1_6.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/transport_1_7.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/type.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/upload.go create mode 100644 vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/utils.go create mode 100644 vendor/github.com/json-iterator/go/.codecov.yml create mode 100644 vendor/github.com/json-iterator/go/.gitignore create mode 100644 vendor/github.com/json-iterator/go/.travis.yml create mode 100644 vendor/github.com/json-iterator/go/Gopkg.lock create mode 100644 vendor/github.com/json-iterator/go/Gopkg.toml create mode 100644 vendor/github.com/json-iterator/go/LICENSE create mode 100644 vendor/github.com/json-iterator/go/README.md create mode 100644 vendor/github.com/json-iterator/go/adapter.go create mode 100644 vendor/github.com/json-iterator/go/any.go create mode 100644 vendor/github.com/json-iterator/go/any_array.go create mode 100644 vendor/github.com/json-iterator/go/any_bool.go create mode 100644 vendor/github.com/json-iterator/go/any_float.go create mode 100644 vendor/github.com/json-iterator/go/any_int32.go create mode 100644 vendor/github.com/json-iterator/go/any_int64.go create mode 100644 vendor/github.com/json-iterator/go/any_invalid.go create mode 100644 vendor/github.com/json-iterator/go/any_nil.go create mode 100644 vendor/github.com/json-iterator/go/any_number.go create mode 100644 vendor/github.com/json-iterator/go/any_object.go create mode 100644 vendor/github.com/json-iterator/go/any_str.go create mode 100644 vendor/github.com/json-iterator/go/any_uint32.go create mode 100644 vendor/github.com/json-iterator/go/any_uint64.go create mode 100644 vendor/github.com/json-iterator/go/build.sh create mode 100644 vendor/github.com/json-iterator/go/config.go create mode 100644 vendor/github.com/json-iterator/go/fuzzy_mode_convert_table.md create mode 100644 vendor/github.com/json-iterator/go/iter.go create mode 100644 vendor/github.com/json-iterator/go/iter_array.go create mode 100644 vendor/github.com/json-iterator/go/iter_float.go create mode 100644 vendor/github.com/json-iterator/go/iter_int.go create mode 100644 vendor/github.com/json-iterator/go/iter_object.go create mode 100644 vendor/github.com/json-iterator/go/iter_skip.go create mode 100644 vendor/github.com/json-iterator/go/iter_skip_sloppy.go create mode 100644 vendor/github.com/json-iterator/go/iter_skip_strict.go create mode 100644 vendor/github.com/json-iterator/go/iter_str.go create mode 100644 vendor/github.com/json-iterator/go/jsoniter.go create mode 100644 vendor/github.com/json-iterator/go/pool.go create mode 100644 vendor/github.com/json-iterator/go/reflect.go create mode 100644 vendor/github.com/json-iterator/go/reflect_array.go create mode 100644 vendor/github.com/json-iterator/go/reflect_dynamic.go create mode 100644 vendor/github.com/json-iterator/go/reflect_extension.go create mode 100644 vendor/github.com/json-iterator/go/reflect_json_number.go create mode 100644 vendor/github.com/json-iterator/go/reflect_json_raw_message.go create mode 100644 vendor/github.com/json-iterator/go/reflect_map.go create mode 100644 vendor/github.com/json-iterator/go/reflect_marshaler.go create mode 100644 vendor/github.com/json-iterator/go/reflect_native.go create mode 100644 vendor/github.com/json-iterator/go/reflect_optional.go create mode 100644 vendor/github.com/json-iterator/go/reflect_slice.go create mode 100644 vendor/github.com/json-iterator/go/reflect_struct_decoder.go create mode 100644 vendor/github.com/json-iterator/go/reflect_struct_encoder.go create mode 100644 vendor/github.com/json-iterator/go/stream.go create mode 100644 vendor/github.com/json-iterator/go/stream_float.go create mode 100644 vendor/github.com/json-iterator/go/stream_int.go create mode 100644 vendor/github.com/json-iterator/go/stream_str.go create mode 100644 vendor/github.com/json-iterator/go/test.sh create mode 100644 vendor/github.com/modern-go/concurrent/.gitignore create mode 100644 vendor/github.com/modern-go/concurrent/.travis.yml create mode 100644 vendor/github.com/modern-go/concurrent/LICENSE create mode 100644 vendor/github.com/modern-go/concurrent/README.md create mode 100644 vendor/github.com/modern-go/concurrent/executor.go create mode 100644 vendor/github.com/modern-go/concurrent/go_above_19.go create mode 100644 vendor/github.com/modern-go/concurrent/go_below_19.go create mode 100644 vendor/github.com/modern-go/concurrent/log.go create mode 100644 vendor/github.com/modern-go/concurrent/test.sh create mode 100644 vendor/github.com/modern-go/concurrent/unbounded_executor.go create mode 100644 vendor/github.com/modern-go/reflect2/.gitignore create mode 100644 vendor/github.com/modern-go/reflect2/.travis.yml create mode 100644 vendor/github.com/modern-go/reflect2/Gopkg.lock create mode 100644 vendor/github.com/modern-go/reflect2/Gopkg.toml create mode 100644 vendor/github.com/modern-go/reflect2/LICENSE create mode 100644 vendor/github.com/modern-go/reflect2/README.md create mode 100644 vendor/github.com/modern-go/reflect2/go_above_17.go create mode 100644 vendor/github.com/modern-go/reflect2/go_above_19.go create mode 100644 vendor/github.com/modern-go/reflect2/go_below_17.go create mode 100644 vendor/github.com/modern-go/reflect2/go_below_19.go create mode 100644 vendor/github.com/modern-go/reflect2/reflect2.go create mode 100644 vendor/github.com/modern-go/reflect2/reflect2_amd64.s create mode 100644 vendor/github.com/modern-go/reflect2/reflect2_kind.go create mode 100644 vendor/github.com/modern-go/reflect2/relfect2_386.s create mode 100644 vendor/github.com/modern-go/reflect2/relfect2_amd64p32.s create mode 100644 vendor/github.com/modern-go/reflect2/relfect2_arm.s create mode 100644 vendor/github.com/modern-go/reflect2/relfect2_arm64.s create mode 100644 vendor/github.com/modern-go/reflect2/relfect2_mips64x.s create mode 100644 vendor/github.com/modern-go/reflect2/relfect2_mipsx.s create mode 100644 vendor/github.com/modern-go/reflect2/relfect2_ppc64x.s create mode 100644 vendor/github.com/modern-go/reflect2/relfect2_s390x.s create mode 100644 vendor/github.com/modern-go/reflect2/safe_field.go create mode 100644 vendor/github.com/modern-go/reflect2/safe_map.go create mode 100644 vendor/github.com/modern-go/reflect2/safe_slice.go create mode 100644 vendor/github.com/modern-go/reflect2/safe_struct.go create mode 100644 vendor/github.com/modern-go/reflect2/safe_type.go create mode 100644 vendor/github.com/modern-go/reflect2/test.sh create mode 100644 vendor/github.com/modern-go/reflect2/type_map.go create mode 100644 vendor/github.com/modern-go/reflect2/unsafe_array.go create mode 100644 vendor/github.com/modern-go/reflect2/unsafe_eface.go create mode 100644 vendor/github.com/modern-go/reflect2/unsafe_field.go create mode 100644 vendor/github.com/modern-go/reflect2/unsafe_iface.go create mode 100644 vendor/github.com/modern-go/reflect2/unsafe_link.go create mode 100644 vendor/github.com/modern-go/reflect2/unsafe_map.go create mode 100644 vendor/github.com/modern-go/reflect2/unsafe_ptr.go create mode 100644 vendor/github.com/modern-go/reflect2/unsafe_slice.go create mode 100644 vendor/github.com/modern-go/reflect2/unsafe_struct.go create mode 100644 vendor/github.com/modern-go/reflect2/unsafe_type.go create mode 100644 vendor/github.com/pmezard/go-difflib/LICENSE create mode 100644 vendor/github.com/pmezard/go-difflib/difflib/difflib.go create mode 100644 vendor/github.com/pmezard/go-difflib/difflib/difflib_test.go create mode 100644 vendor/github.com/stretchr/testify/LICENSE create mode 100644 vendor/github.com/stretchr/testify/assert/assertion_format.go create mode 100644 vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl create mode 100644 vendor/github.com/stretchr/testify/assert/assertion_forward.go create mode 100644 vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl create mode 100644 vendor/github.com/stretchr/testify/assert/assertion_order.go create mode 100644 vendor/github.com/stretchr/testify/assert/assertion_order_test.go create mode 100644 vendor/github.com/stretchr/testify/assert/assertions.go create mode 100644 vendor/github.com/stretchr/testify/assert/assertions_test.go create mode 100644 vendor/github.com/stretchr/testify/assert/doc.go create mode 100644 vendor/github.com/stretchr/testify/assert/errors.go create mode 100644 vendor/github.com/stretchr/testify/assert/forward_assertions.go create mode 100644 vendor/github.com/stretchr/testify/assert/forward_assertions_test.go create mode 100644 vendor/github.com/stretchr/testify/assert/http_assertions.go create mode 100644 vendor/github.com/stretchr/testify/assert/http_assertions_test.go create mode 100644 vendor/vendor.json create mode 100644 website/docs/backends/types/oss.html.md diff --git a/backend/init/init.go b/backend/init/init.go index 3853fbea0..8f70a1f81 100644 --- a/backend/init/init.go +++ b/backend/init/init.go @@ -22,6 +22,7 @@ import ( backendHTTP "github.com/hashicorp/terraform/backend/remote-state/http" backendInmem "github.com/hashicorp/terraform/backend/remote-state/inmem" backendManta "github.com/hashicorp/terraform/backend/remote-state/manta" + backendOSS "github.com/hashicorp/terraform/backend/remote-state/oss" backendPg "github.com/hashicorp/terraform/backend/remote-state/pg" backendS3 "github.com/hashicorp/terraform/backend/remote-state/s3" backendSwift "github.com/hashicorp/terraform/backend/remote-state/swift" @@ -62,6 +63,7 @@ func Init(services *disco.Disco) { "http": func() backend.Backend { return backendHTTP.New() }, "inmem": func() backend.Backend { return backendInmem.New() }, "manta": func() backend.Backend { return backendManta.New() }, + "oss": func() backend.Backend { return backendOSS.New() }, "pg": func() backend.Backend { return backendPg.New() }, "s3": func() backend.Backend { return backendS3.New() }, "swift": func() backend.Backend { return backendSwift.New() }, diff --git a/backend/remote-state/oss/backend.go b/backend/remote-state/oss/backend.go new file mode 100644 index 000000000..4b865543a --- /dev/null +++ b/backend/remote-state/oss/backend.go @@ -0,0 +1,297 @@ +package oss + +import ( + "context" + "fmt" + "github.com/aliyun/aliyun-oss-go-sdk/oss" + "github.com/hashicorp/terraform/backend" + "github.com/hashicorp/terraform/helper/schema" + "os" + "strings" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/resource" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils" + "github.com/aliyun/alibaba-cloud-sdk-go/services/location" + "github.com/hashicorp/go-cleanhttp" + "github.com/hashicorp/terraform/version" + "log" + "net/http" + "strconv" + "time" +) + +// New creates a new backend for OSS remote state. +func New() backend.Backend { + s := &schema.Backend{ + Schema: map[string]*schema.Schema{ + "access_key": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "Alibaba Cloud Access Key ID", + DefaultFunc: schema.EnvDefaultFunc("ALICLOUD_ACCESS_KEY", os.Getenv("ALICLOUD_ACCESS_KEY_ID")), + }, + + "secret_key": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "Alibaba Cloud Access Secret Key", + DefaultFunc: schema.EnvDefaultFunc("ALICLOUD_SECRET_KEY", os.Getenv("ALICLOUD_ACCESS_KEY_SECRET")), + }, + + "security_token": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "Alibaba Cloud Security Token", + DefaultFunc: schema.EnvDefaultFunc("ALICLOUD_SECURITY_TOKEN", os.Getenv("SECURITY_TOKEN")), + }, + + "region": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The region of the OSS bucket.", + DefaultFunc: schema.EnvDefaultFunc("ALICLOUD_REGION", os.Getenv("ALICLOUD_DEFAULT_REGION")), + }, + + "endpoint": { + Type: schema.TypeString, + Optional: true, + Description: "A custom endpoint for the OSS API", + DefaultFunc: schema.EnvDefaultFunc("ALICLOUD_OSS_ENDPOINT", os.Getenv("OSS_ENDPOINT")), + }, + + "bucket": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "The name of the OSS bucket", + }, + + "path": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "The path relative to your object storage directory where the state file will be stored.", + }, + + "name": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The name of the state file inside the bucket", + ValidateFunc: func(v interface{}, s string) ([]string, []error) { + if strings.HasPrefix(v.(string), "/") || strings.HasSuffix(v.(string), "/") { + return nil, []error{fmt.Errorf("name can not start and end with '/'")} + } + return nil, nil + }, + Default: "terraform.tfstate", + }, + + "lock": &schema.Schema{ + Type: schema.TypeBool, + Optional: true, + Description: "Whether to lock state access. Defaults to true", + Default: true, + }, + + "encrypt": &schema.Schema{ + Type: schema.TypeBool, + Optional: true, + Description: "Whether to enable server side encryption of the state file", + Default: false, + }, + + "acl": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "Object ACL to be applied to the state file", + Default: "", + ValidateFunc: func(v interface{}, k string) ([]string, []error) { + if value := v.(string); value != "" { + acls := oss.ACLType(value) + if acls != oss.ACLPrivate && acls != oss.ACLPublicRead && acls != oss.ACLPublicReadWrite { + return nil, []error{fmt.Errorf( + "%q must be a valid ACL value , expected %s, %s or %s, got %q", + k, oss.ACLPrivate, oss.ACLPublicRead, oss.ACLPublicReadWrite, acls)} + } + } + return nil, nil + }, + }, + }, + } + + result := &Backend{Backend: s} + result.Backend.ConfigureFunc = result.configure + return result +} + +type Backend struct { + *schema.Backend + + // The fields below are set from configure + ossClient *oss.Client + + bucketName string + statePath string + stateName string + serverSideEncryption bool + acl string + endpoint string + lock bool +} + +func (b *Backend) configure(ctx context.Context) error { + if b.ossClient != nil { + return nil + } + + // Grab the resource data + d := schema.FromContextBackendConfig(ctx) + + b.bucketName = d.Get("bucket").(string) + dir := strings.Trim(d.Get("path").(string), "/") + if strings.HasPrefix(dir, "./") { + dir = strings.TrimPrefix(dir, "./") + + } + + b.statePath = dir + b.stateName = d.Get("name").(string) + b.serverSideEncryption = d.Get("encrypt").(bool) + b.acl = d.Get("acl").(string) + b.lock = d.Get("lock").(bool) + + access_key := d.Get("access_key").(string) + secret_key := d.Get("secret_key").(string) + security_token := d.Get("security_token").(string) + region := d.Get("region").(string) + endpoint := d.Get("endpoint").(string) + schma := "https" + + if endpoint == "" { + endpointItem, _ := b.getOSSEndpointByRegion(access_key, secret_key, security_token, region) + if endpointItem != nil && len(endpointItem.Endpoint) > 0 { + if len(endpointItem.Protocols.Protocols) > 0 { + // HTTP or HTTPS + schma = strings.ToLower(endpointItem.Protocols.Protocols[0]) + for _, p := range endpointItem.Protocols.Protocols { + if strings.ToLower(p) == "https" { + schma = strings.ToLower(p) + break + } + } + } + endpoint = endpointItem.Endpoint + } else { + endpoint = fmt.Sprintf("oss-%s.aliyuncs.com", region) + } + } + if !strings.HasPrefix(endpoint, "http") { + endpoint = fmt.Sprintf("%s://%s", schma, endpoint) + } + log.Printf("[DEBUG] Instantiate OSS client using endpoint: %#v", endpoint) + var options []oss.ClientOption + if security_token != "" { + options = append(options, oss.SecurityToken(security_token)) + } + options = append(options, oss.UserAgent(fmt.Sprintf("%s/%s", TerraformUA, TerraformVersion))) + + client, err := oss.New(endpoint, access_key, secret_key, options...) + b.ossClient = client + + return err +} + +func (b *Backend) getOSSEndpointByRegion(access_key, secret_key, security_token, region string) (*location.DescribeEndpointResponse, error) { + args := location.CreateDescribeEndpointRequest() + args.ServiceCode = "oss" + args.Id = region + args.Domain = "location-readonly.aliyuncs.com" + + locationClient, err := location.NewClientWithOptions(region, getSdkConfig(), credentials.NewStsTokenCredential(access_key, secret_key, security_token)) + if err != nil { + return nil, fmt.Errorf("Unable to initialize the location client: %#v", err) + + } + locationClient.AppendUserAgent(TerraformUA, TerraformVersion) + endpointsResponse, err := locationClient.DescribeEndpoint(args) + if err != nil { + return nil, fmt.Errorf("Describe oss endpoint using region: %#v got an error: %#v.", region, err) + } + return endpointsResponse, nil +} + +func getSdkConfig() *sdk.Config { + // Fix bug "open /usr/local/go/lib/time/zoneinfo.zip: no such file or directory" which happened in windows. + if data, ok := resource.GetTZData("GMT"); ok { + utils.TZData = data + utils.LoadLocationFromTZData = time.LoadLocationFromTZData + } + return sdk.NewConfig(). + WithMaxRetryTime(5). + WithTimeout(time.Duration(30) * time.Second). + WithGoRoutinePoolSize(10). + WithDebug(false). + WithHttpTransport(getTransport()). + WithScheme("HTTPS") +} + +func getTransport() *http.Transport { + handshakeTimeout, err := strconv.Atoi(os.Getenv("TLSHandshakeTimeout")) + if err != nil { + handshakeTimeout = 120 + } + transport := cleanhttp.DefaultTransport() + transport.TLSHandshakeTimeout = time.Duration(handshakeTimeout) * time.Second + transport.Proxy = http.ProxyFromEnvironment + return transport +} + +type Invoker struct { + catchers []*Catcher +} + +type Catcher struct { + Reason string + RetryCount int + RetryWaitSeconds int +} + +const TerraformUA = "HashiCorp-Terraform" + +var TerraformVersion = strings.TrimSuffix(version.String(), "-dev") +var ClientErrorCatcher = Catcher{"AliyunGoClientFailure", 10, 3} +var ServiceBusyCatcher = Catcher{"ServiceUnavailable", 10, 3} + +func NewInvoker() Invoker { + i := Invoker{} + i.AddCatcher(ClientErrorCatcher) + i.AddCatcher(ServiceBusyCatcher) + return i +} + +func (a *Invoker) AddCatcher(catcher Catcher) { + a.catchers = append(a.catchers, &catcher) +} + +func (a *Invoker) Run(f func() error) error { + err := f() + + if err == nil { + return nil + } + + for _, catcher := range a.catchers { + if strings.Contains(err.Error(), catcher.Reason) { + catcher.RetryCount-- + + if catcher.RetryCount <= 0 { + return fmt.Errorf("Retry timeout and got an error: %#v.", err) + } else { + time.Sleep(time.Duration(catcher.RetryWaitSeconds) * time.Second) + return a.Run(f) + } + } + } + return err +} diff --git a/backend/remote-state/oss/backend_state.go b/backend/remote-state/oss/backend_state.go new file mode 100644 index 000000000..f9bd65575 --- /dev/null +++ b/backend/remote-state/oss/backend_state.go @@ -0,0 +1,194 @@ +package oss + +import ( + "errors" + "fmt" + "sort" + "strings" + + "github.com/aliyun/aliyun-oss-go-sdk/oss" + "github.com/hashicorp/terraform/backend" + "github.com/hashicorp/terraform/state" + "github.com/hashicorp/terraform/state/remote" + "github.com/hashicorp/terraform/states" + + "log" + "path" +) + +const ( + lockFileSuffix = ".tflock" +) + +// get a remote client configured for this state +func (b *Backend) remoteClient(name string) (*RemoteClient, error) { + if name == "" { + return nil, errors.New("missing state name") + } + + client := &RemoteClient{ + ossClient: b.ossClient, + bucketName: b.bucketName, + stateFile: b.stateFile(name), + lockFile: b.lockFile(name), + serverSideEncryption: b.serverSideEncryption, + acl: b.acl, + doLock: b.lock, + } + + return client, nil +} + +func (b *Backend) Workspaces() ([]string, error) { + bucket, err := b.ossClient.Bucket(b.bucketName) + if err != nil { + return []string{""}, fmt.Errorf("Error getting bucket: %#v", err) + } + + var options []oss.Option + options = append(options, oss.Prefix(b.statePath)) + resp, err := bucket.ListObjects(options...) + + if err != nil { + return nil, err + } + + result := []string{backend.DefaultStateName} + for _, obj := range resp.Objects { + if b.keyEnv(obj.Key) != "" { + result = append(result, b.keyEnv(obj.Key)) + } + } + + sort.Strings(result[1:]) + return result, nil +} + +func (b *Backend) DeleteWorkspace(name string) error { + if name == backend.DefaultStateName || name == "" { + return fmt.Errorf("can't delete default state") + } + + client, err := b.remoteClient(name) + if err != nil { + return err + } + return client.Delete() +} + +func (b *Backend) StateMgr(name string) (state.State, error) { + client, err := b.remoteClient(name) + if err != nil { + return nil, err + } + stateMgr := &remote.State{Client: client} + + if !b.lock { + stateMgr.DisableLocks() + } + // Check to see if this state already exists. + existing, err := b.Workspaces() + if err != nil { + return nil, err + } + + log.Printf("[DEBUG] Current state name: %s. All States:%#v", name, existing) + + exists := false + for _, s := range existing { + if s == name { + exists = true + break + } + } + // We need to create the object so it's listed by States. + if !exists { + // take a lock on this state while we write it + lockInfo := state.NewLockInfo() + lockInfo.Operation = "init" + lockId, err := client.Lock(lockInfo) + if err != nil { + return nil, fmt.Errorf("Failed to lock OSS state: %s", err) + } + + // Local helper function so we can call it multiple places + lockUnlock := func(e error) error { + if err := stateMgr.Unlock(lockId); err != nil { + return fmt.Errorf(strings.TrimSpace(stateUnlockError), lockId, err) + } + return e + } + + // Grab the value + if err := stateMgr.RefreshState(); err != nil { + err = lockUnlock(err) + return nil, err + } + + // If we have no state, we have to create an empty state + if v := stateMgr.State(); v == nil { + if err := stateMgr.WriteState(states.NewState()); err != nil { + err = lockUnlock(err) + return nil, err + } + if err := stateMgr.PersistState(); err != nil { + err = lockUnlock(err) + return nil, err + } + } + + // Unlock, the state should now be initialized + if err := lockUnlock(nil); err != nil { + return nil, err + } + + } + return stateMgr, nil +} + +// extract the object name from the OSS key +func (b *Backend) keyEnv(key string) string { + // we have 3 parts, the state path, the state name, and the state file + parts := strings.Split(key, "/") + length := len(parts) + if length < 3 { + // use default state + return "" + } + + // shouldn't happen since we listed by prefix + if strings.Join(parts[0:length-2], "/") != b.statePath { + return "" + } + + // not our key, so don't include it in our listing + if parts[length-1] != b.stateName { + return "" + } + + return parts[length-2] +} + +func (b *Backend) stateFile(name string) string { + if name == backend.DefaultStateName { + return path.Join(b.statePath, b.stateName) + } + return path.Join(b.statePath, name, b.stateName) +} + +func (b *Backend) lockFile(name string) string { + if name == backend.DefaultStateName { + return path.Join(b.statePath, b.stateName+lockFileSuffix) + } + return path.Join(b.statePath, name, b.stateName+lockFileSuffix) +} + +const stateUnlockError = ` +Error unlocking Alibaba Cloud OSS state file: + +Lock ID: %s +Error message: %#v + +You may have to force-unlock this state in order to use it again. +The Alibaba Cloud backend acquires a lock during initialization to ensure the initial state file is created. +` diff --git a/backend/remote-state/oss/backend_test.go b/backend/remote-state/oss/backend_test.go new file mode 100644 index 000000000..430b6d773 --- /dev/null +++ b/backend/remote-state/oss/backend_test.go @@ -0,0 +1,134 @@ +package oss + +import ( + "fmt" + "os" + "testing" + "time" + + "github.com/aliyun/aliyun-oss-go-sdk/oss" + "github.com/hashicorp/terraform/backend" + "github.com/hashicorp/terraform/config/hcl2shim" + "strings" +) + +// verify that we are doing ACC tests or the OSS tests specifically +func testACC(t *testing.T) { + skip := os.Getenv("TF_ACC") == "" && os.Getenv("TF_OSS_TEST") == "" + if skip { + t.Log("oss backend tests require setting TF_ACC or TF_OSS_TEST") + t.Skip() + } + if os.Getenv("ALICLOUD_REGION") == "" { + os.Setenv("ALICLOUD_REGION", "cn-beijing") + } +} + +func TestBackend_impl(t *testing.T) { + var _ backend.Backend = new(Backend) +} + +func TestBackendConfig(t *testing.T) { + testACC(t) + config := map[string]interface{}{ + "region": "cn-beijing", + "bucket": "terraform-backend-oss-test", + "path": "mystate", + "name": "first.tfstate", + } + + b := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(config)).(*Backend) + + if !strings.HasPrefix(b.ossClient.Config.Endpoint, "http://oss-cn-beijing") { + t.Fatalf("Incorrect region was provided") + } + if b.bucketName != "terraform-backend-oss-test" { + t.Fatalf("Incorrect bucketName was provided") + } + if b.statePath != "mystate" { + t.Fatalf("Incorrect state file path was provided") + } + if b.stateName != "first.tfstate" { + t.Fatalf("Incorrect keyName was provided") + } + + if b.ossClient.Config.AccessKeyID == "" { + t.Fatalf("No Access Key Id was provided") + } + if b.ossClient.Config.AccessKeySecret == "" { + t.Fatalf("No Secret Access Key was provided") + } +} + +func TestBackendConfig_invalidKey(t *testing.T) { + testACC(t) + cfg := hcl2shim.HCL2ValueFromConfigValue(map[string]interface{}{ + "region": "cn-beijing", + "bucket": "terraform-backend-oss-test", + "path": "/leading-slash", + "name": "/test.tfstate", + }) + + _, results := New().PrepareConfig(cfg) + if !results.HasErrors() { + t.Fatal("expected config validation error") + } +} + +func TestBackend(t *testing.T) { + testACC(t) + + bucketName := fmt.Sprintf("terraform-remote-oss-test-%x", time.Now().Unix()) + statePath := "multi/level/path/" + + b1 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ + "bucket": bucketName, + "path": statePath, + })).(*Backend) + + b2 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ + "bucket": bucketName, + "path": statePath, + })).(*Backend) + + createOSSBucket(t, b1.ossClient, bucketName) + defer deleteOSSBucket(t, b1.ossClient, bucketName) + + backend.TestBackendStates(t, b1) + backend.TestBackendStateLocks(t, b1, b2) + backend.TestBackendStateForceUnlock(t, b1, b2) +} + +func createOSSBucket(t *testing.T, ossClient *oss.Client, bucketName string) { + // Be clear about what we're doing in case the user needs to clean this up later. + if err := ossClient.CreateBucket(bucketName); err != nil { + t.Fatal("failed to create test OSS bucket:", err) + } +} + +func deleteOSSBucket(t *testing.T, ossClient *oss.Client, bucketName string) { + warning := "WARNING: Failed to delete the test OSS bucket. It may have been left in your Alicloud account and may incur storage charges. (error was %s)" + + // first we have to get rid of the env objects, or we can't delete the bucket + bucket, err := ossClient.Bucket(bucketName) + if err != nil { + t.Fatal("Error getting bucket:", err) + return + } + objects, err := bucket.ListObjects() + if err != nil { + t.Logf(warning, err) + return + } + for _, obj := range objects.Objects { + if err := bucket.DeleteObject(obj.Key); err != nil { + // this will need cleanup no matter what, so just warn and exit + t.Logf(warning, err) + return + } + } + + if err := ossClient.DeleteBucket(bucketName); err != nil { + t.Logf(warning, err) + } +} diff --git a/backend/remote-state/oss/client.go b/backend/remote-state/oss/client.go new file mode 100644 index 000000000..4403e36c3 --- /dev/null +++ b/backend/remote-state/oss/client.go @@ -0,0 +1,226 @@ +package oss + +import ( + "bytes" + "crypto/md5" + "encoding/json" + "fmt" + "io" + + "github.com/aliyun/aliyun-oss-go-sdk/oss" + uuid "github.com/hashicorp/go-uuid" + "github.com/hashicorp/terraform/state" + "github.com/hashicorp/terraform/state/remote" + "log" + "sync" +) + +type RemoteClient struct { + ossClient *oss.Client + bucketName string + stateFile string + lockFile string + serverSideEncryption bool + acl string + doLock bool + info *state.LockInfo + mu sync.Mutex +} + +func (c *RemoteClient) Get() (payload *remote.Payload, err error) { + c.mu.Lock() + defer c.mu.Unlock() + + buf, err := c.getObj(c.stateFile) + if err != nil { + return nil, err + } + + // If there was no data, then return nil + if buf == nil || len(buf.Bytes()) == 0 { + log.Printf("[DEBUG] State %s has no data.", c.stateFile) + return nil, nil + } + md5 := md5.Sum(buf.Bytes()) + + payload = &remote.Payload{ + Data: buf.Bytes(), + MD5: md5[:], + } + return payload, nil +} + +func (c *RemoteClient) Put(data []byte) error { + c.mu.Lock() + defer c.mu.Unlock() + + return c.putObj(c.stateFile, data) +} + +func (c *RemoteClient) Delete() error { + c.mu.Lock() + defer c.mu.Unlock() + + return c.deleteObj(c.stateFile) +} + +func (c *RemoteClient) Lock(info *state.LockInfo) (string, error) { + c.mu.Lock() + defer c.mu.Unlock() + + if !c.doLock { + return "", nil + } + + bucket, err := c.ossClient.Bucket(c.bucketName) + if err != nil { + return "", fmt.Errorf("Error getting bucket: %#v", err) + } + + infoJson, err := json.Marshal(info) + if err != nil { + return "", err + } + + if info.ID == "" { + lockID, err := uuid.GenerateUUID() + if err != nil { + return "", err + } + info.ID = lockID + } + + info.Path = c.lockFile + exist, err := bucket.IsObjectExist(info.Path) + if err != nil { + return "", fmt.Errorf("Error checking object %s: %#v", info.Path, err) + } + if !exist { + if err := c.putObj(info.Path, infoJson); err != nil { + return "", err + } + } else if _, err := c.validLock(info.ID); err != nil { + return "", err + } + + return info.ID, nil +} + +func (c *RemoteClient) Unlock(id string) error { + c.mu.Lock() + defer c.mu.Unlock() + + if !c.doLock { + return nil + } + + lockInfo, err := c.validLock(id) + if err != nil { + return err + } + + if err := c.deleteObj(c.lockFile); err != nil { + return &state.LockError{ + Info: lockInfo, + Err: err, + } + } + return nil +} + +func (c *RemoteClient) putObj(key string, data []byte) error { + bucket, err := c.ossClient.Bucket(c.bucketName) + if err != nil { + return fmt.Errorf("Error getting bucket: %#v", err) + } + body := bytes.NewReader(data) + + var options []oss.Option + if c.acl != "" { + options = append(options, oss.ACL(oss.ACLType(c.acl))) + } + options = append(options, oss.ContentType("application/json")) + if c.serverSideEncryption { + options = append(options, oss.ServerSideEncryption("AES256")) + } + options = append(options, oss.ContentLength(int64(len(data)))) + + if body != nil { + if err := bucket.PutObject(key, body, options...); err != nil { + return fmt.Errorf("failed to upload %s: %#v", key, err) + } + return nil + } + return nil +} + +func (c *RemoteClient) getObj(key string) (*bytes.Buffer, error) { + bucket, err := c.ossClient.Bucket(c.bucketName) + if err != nil { + return nil, fmt.Errorf("Error getting bucket: %#v", err) + } + + if exist, err := bucket.IsObjectExist(key); err != nil { + return nil, fmt.Errorf("Estimating object %s is exist got an error: %#v", key, err) + } else if !exist { + return nil, nil + } + + var options []oss.Option + output, err := bucket.GetObject(key, options...) + if err != nil { + return nil, fmt.Errorf("Error getting object: %#v", err) + } + + buf := bytes.NewBuffer(nil) + if _, err := io.Copy(buf, output); err != nil { + return nil, fmt.Errorf("Failed to read remote state: %s", err) + } + return buf, nil +} + +func (c *RemoteClient) deleteObj(key string) error { + bucket, err := c.ossClient.Bucket(c.bucketName) + if err != nil { + return fmt.Errorf("Error getting bucket: %#v", err) + } + + if err := bucket.DeleteObject(key); err != nil { + return fmt.Errorf("Error deleting object %s: %#v", key, err) + } + return nil +} + +// lockInfo reads the lock file, parses its contents and returns the parsed +// LockInfo struct. +func (c *RemoteClient) lockInfo() (*state.LockInfo, error) { + buf, err := c.getObj(c.lockFile) + if err != nil { + return nil, err + } + if buf == nil || len(buf.Bytes()) == 0 { + return nil, nil + } + info := &state.LockInfo{} + if err := json.Unmarshal(buf.Bytes(), info); err != nil { + return nil, err + } + + return info, nil +} + +func (c *RemoteClient) validLock(id string) (*state.LockInfo, *state.LockError) { + lockErr := &state.LockError{} + lockInfo, err := c.lockInfo() + if err != nil { + lockErr.Err = fmt.Errorf("failed to retrieve lock info: %s", err) + return nil, lockErr + } + lockErr.Info = lockInfo + + if lockInfo.ID != id { + lockErr.Err = fmt.Errorf("lock id %q does not match existing lock", id) + return nil, lockErr + } + return lockInfo, nil +} diff --git a/backend/remote-state/oss/client_test.go b/backend/remote-state/oss/client_test.go new file mode 100644 index 000000000..a24dd0216 --- /dev/null +++ b/backend/remote-state/oss/client_test.go @@ -0,0 +1,112 @@ +package oss + +import ( + "fmt" + "testing" + "time" + + "github.com/hashicorp/terraform/backend" + "github.com/hashicorp/terraform/state" + "github.com/hashicorp/terraform/state/remote" +) + +func TestRemoteClient_impl(t *testing.T) { + var _ remote.Client = new(RemoteClient) + var _ remote.ClientLocker = new(RemoteClient) +} + +func TestRemoteClient(t *testing.T) { + testACC(t) + bucketName := fmt.Sprintf("terraform-remote-oss-test-%x", time.Now().Unix()) + path := "testState" + + b := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ + "bucket": bucketName, + "path": path, + "encrypt": true, + })).(*Backend) + + createOSSBucket(t, b.ossClient, bucketName) + defer deleteOSSBucket(t, b.ossClient, bucketName) + + state, err := b.StateMgr(backend.DefaultStateName) + if err != nil { + t.Fatal(err) + } + + remote.TestClient(t, state.(*remote.State).Client) +} + +func TestOSS_stateLock(t *testing.T) { + testACC(t) + bucketName := fmt.Sprintf("terraform-remote-oss-test-%x", time.Now().Unix()) + path := "testState" + + b1 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ + "bucket": bucketName, + "path": path, + "encrypt": true, + })).(*Backend) + + b2 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ + "bucket": bucketName, + "path": path, + "encrypt": true, + })).(*Backend) + + createOSSBucket(t, b1.ossClient, bucketName) + defer deleteOSSBucket(t, b1.ossClient, bucketName) + + s1, err := b1.StateMgr(backend.DefaultStateName) + if err != nil { + t.Fatalf("err: %s", err) + } + + s2, err := b2.StateMgr(backend.DefaultStateName) + if err != nil { + t.Fatalf("err: %s", err) + } + + remote.TestRemoteLocks(t, s1.(*remote.State).Client, s2.(*remote.State).Client) +} + +// verify that we can unlock a state with an existing lock +func TestOSS_destroyLock(t *testing.T) { + testACC(t) + bucketName := fmt.Sprintf("terraform-remote-oss-test-%x", time.Now().Unix()) + path := "testState" + + b := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ + "bucket": bucketName, + "path": path, + "encrypt": true, + })).(*Backend) + + createOSSBucket(t, b.ossClient, bucketName) + defer deleteOSSBucket(t, b.ossClient, bucketName) + + s, err := b.StateMgr(backend.DefaultStateName) + if err != nil { + t.Fatalf("err: %s", err) + } + + c := s.(*remote.State).Client.(*RemoteClient) + + info := state.NewLockInfo() + id, err := c.Lock(info) + if err != nil { + t.Fatalf("err: %s", err) + } + + if err := c.Unlock(id); err != nil { + t.Fatalf("err: %s", err) + } + + res, err := c.getObj(c.lockFile) + if err != nil { + t.Fatalf("err: %s", err) + } + if res != nil && res.String() != "" { + t.Fatalf("lock key not cleaned up at: %s", string(c.stateFile)) + } +} diff --git a/go.mod b/go.mod index 4970ed1c4..8338c893e 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,8 @@ require ( github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af // indirect github.com/agext/levenshtein v1.2.2 github.com/agl/ed25519 v0.0.0-20150830182803-278e1ec8e8a6 // indirect + github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190104080739-ef2ef6084d8f + github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190103054945-8205d1f41e70 github.com/apparentlymart/go-cidr v1.0.0 github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2 @@ -69,6 +71,7 @@ require ( github.com/hashicorp/vault v0.10.4 github.com/jonboulle/clockwork v0.1.0 // indirect github.com/joyent/triton-go v0.0.0-20180313100802-d8f9c0314926 + github.com/json-iterator/go v1.1.5 // indirect github.com/jtolds/gls v4.2.1+incompatible // indirect github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba // indirect @@ -90,6 +93,8 @@ require ( github.com/mitchellh/panicwrap v0.0.0-20190213213626-17011010aaa4 github.com/mitchellh/prefixedio v0.0.0-20190213213902-5733675afd51 github.com/mitchellh/reflectwalk v1.0.0 + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.1 // indirect github.com/packer-community/winrmcp v0.0.0-20180102160824-81144009af58 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c // indirect github.com/pkg/errors v0.0.0-20170505043639-c605e284fe17 // indirect diff --git a/go.sum b/go.sum index 1aa5c9667..b236f55e8 100644 --- a/go.sum +++ b/go.sum @@ -28,6 +28,10 @@ github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXva github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agl/ed25519 v0.0.0-20150830182803-278e1ec8e8a6 h1:LoeFxdq5zUCBQPhbQKE6zvoGwHMxCBlqwbH9+9kHoHA= github.com/agl/ed25519 v0.0.0-20150830182803-278e1ec8e8a6/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= +github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190104080739-ef2ef6084d8f h1:pM8wn2zKfEVQkR9cj//GkywiJXMwtZ9feuNsEkHqBC8= +github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190104080739-ef2ef6084d8f/go.mod h1:T9M45xf79ahXVelWoOBmH0y4aC1t5kXO5BxwyakgIGA= +github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190103054945-8205d1f41e70 h1:FrF4uxA24DF3ARNXVbUin3wa5fDLaB1Cy8mKks/LRz4= +github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190103054945-8205d1f41e70/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antchfx/xpath v0.0.0-20190129040759-c8489ed3251e h1:ptBAamGVd6CfRsUtyHD+goy2JGhv1QC32v3gqM8mYAM= github.com/antchfx/xpath v0.0.0-20190129040759-c8489ed3251e/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk= @@ -228,6 +232,8 @@ github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0 github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/joyent/triton-go v0.0.0-20180313100802-d8f9c0314926 h1:kie3qOosvRKqwij2HGzXWffwpXvcqfPPXRUw8I4F/mg= github.com/joyent/triton-go v0.0.0-20180313100802-d8f9c0314926/go.mod h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA= +github.com/json-iterator/go v1.1.5 h1:gL2yXlmiIo4+t+y32d4WGwOjKGYcGOuyrg46vadswDE= +github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1 h1:PJPDf8OUfOK1bb/NeTKd4f1QXZItOX389VN3B6qC8ro= @@ -301,6 +307,10 @@ github.com/mitchellh/prefixedio v0.0.0-20190213213902-5733675afd51 h1:eD92Am0Qf3 github.com/mitchellh/prefixedio v0.0.0-20190213213902-5733675afd51/go.mod h1:kB1naBgV9ORnkiTVeyJOI1DavaJkG4oNIq0Af6ZVKUo= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ= diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/LICENSE b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credential.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credential.go new file mode 100644 index 000000000..7f20b7a40 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credential.go @@ -0,0 +1,18 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package auth + +type Credential interface { +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/access_key_credential.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/access_key_credential.go new file mode 100644 index 000000000..68f822633 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/access_key_credential.go @@ -0,0 +1,34 @@ +package credentials + +// Deprecated: Use AccessKeyCredential in this package instead. +type BaseCredential struct { + AccessKeyId string + AccessKeySecret string +} + +type AccessKeyCredential struct { + AccessKeyId string + AccessKeySecret string +} + +// Deprecated: Use NewAccessKeyCredential in this package instead. +func NewBaseCredential(accessKeyId, accessKeySecret string) *BaseCredential { + return &BaseCredential{ + AccessKeyId: accessKeyId, + AccessKeySecret: accessKeySecret, + } +} + +func (baseCred *BaseCredential) ToAccessKeyCredential() *AccessKeyCredential { + return &AccessKeyCredential{ + AccessKeyId: baseCred.AccessKeyId, + AccessKeySecret: baseCred.AccessKeySecret, + } +} + +func NewAccessKeyCredential(accessKeyId, accessKeySecret string) *AccessKeyCredential { + return &AccessKeyCredential{ + AccessKeyId: accessKeyId, + AccessKeySecret: accessKeySecret, + } +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/ecs_ram_role.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/ecs_ram_role.go new file mode 100644 index 000000000..1e1f73ae4 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/ecs_ram_role.go @@ -0,0 +1,29 @@ +package credentials + +// Deprecated: Use EcsRamRoleCredential in this package instead. +type StsRoleNameOnEcsCredential struct { + RoleName string +} + +// Deprecated: Use NewEcsRamRoleCredential in this package instead. +func NewStsRoleNameOnEcsCredential(roleName string) *StsRoleNameOnEcsCredential { + return &StsRoleNameOnEcsCredential{ + RoleName: roleName, + } +} + +func (oldCred *StsRoleNameOnEcsCredential) ToEcsRamRoleCredential() *EcsRamRoleCredential { + return &EcsRamRoleCredential{ + RoleName: oldCred.RoleName, + } +} + +type EcsRamRoleCredential struct { + RoleName string +} + +func NewEcsRamRoleCredential(roleName string) *EcsRamRoleCredential { + return &EcsRamRoleCredential{ + RoleName: roleName, + } +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/rsa_key_pair_credential.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/rsa_key_pair_credential.go new file mode 100644 index 000000000..00d688eb8 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/rsa_key_pair_credential.go @@ -0,0 +1,15 @@ +package credentials + +type RsaKeyPairCredential struct { + PrivateKey string + PublicKeyId string + SessionExpiration int +} + +func NewRsaKeyPairCredential(privateKey, publicKeyId string, sessionExpiration int) *RsaKeyPairCredential { + return &RsaKeyPairCredential{ + PrivateKey: privateKey, + PublicKeyId: publicKeyId, + SessionExpiration: sessionExpiration, + } +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/sts_credential.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/sts_credential.go new file mode 100644 index 000000000..554431ff0 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/sts_credential.go @@ -0,0 +1,15 @@ +package credentials + +type StsTokenCredential struct { + AccessKeyId string + AccessKeySecret string + AccessKeyStsToken string +} + +func NewStsTokenCredential(accessKeyId, accessKeySecret, accessKeyStsToken string) *StsTokenCredential { + return &StsTokenCredential{ + AccessKeyId: accessKeyId, + AccessKeySecret: accessKeySecret, + AccessKeyStsToken: accessKeyStsToken, + } +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/sts_role_arn_credential.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/sts_role_arn_credential.go new file mode 100644 index 000000000..7a9db75d2 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/sts_role_arn_credential.go @@ -0,0 +1,49 @@ +package credentials + +// Deprecated: Use RamRoleArnCredential in this package instead. +type StsRoleArnCredential struct { + AccessKeyId string + AccessKeySecret string + RoleArn string + RoleSessionName string + RoleSessionExpiration int +} + +type RamRoleArnCredential struct { + AccessKeyId string + AccessKeySecret string + RoleArn string + RoleSessionName string + RoleSessionExpiration int +} + +// Deprecated: Use RamRoleArnCredential in this package instead. +func NewStsRoleArnCredential(accessKeyId, accessKeySecret, roleArn, roleSessionName string, roleSessionExpiration int) *StsRoleArnCredential { + return &StsRoleArnCredential{ + AccessKeyId: accessKeyId, + AccessKeySecret: accessKeySecret, + RoleArn: roleArn, + RoleSessionName: roleSessionName, + RoleSessionExpiration: roleSessionExpiration, + } +} + +func (oldCred *StsRoleArnCredential) ToRamRoleArnCredential() *RamRoleArnCredential { + return &RamRoleArnCredential{ + AccessKeyId: oldCred.AccessKeyId, + AccessKeySecret: oldCred.AccessKeySecret, + RoleArn: oldCred.RoleArn, + RoleSessionName: oldCred.RoleSessionName, + RoleSessionExpiration: oldCred.RoleSessionExpiration, + } +} + +func NewRamRoleArnCredential(accessKeyId, accessKeySecret, roleArn, roleSessionName string, roleSessionExpiration int) *RamRoleArnCredential { + return &RamRoleArnCredential{ + AccessKeyId: accessKeyId, + AccessKeySecret: accessKeySecret, + RoleArn: roleArn, + RoleSessionName: roleSessionName, + RoleSessionExpiration: roleSessionExpiration, + } +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/roa_signature_composer.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/roa_signature_composer.go new file mode 100644 index 000000000..19498b13f --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/roa_signature_composer.go @@ -0,0 +1,133 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package auth + +import ( + "bytes" + "sort" + "strings" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils" +) + +var debug utils.Debug + +var hookGetDate = func(fn func() string) string { + return fn() +} + +func init() { + debug = utils.Init("sdk") +} + +func signRoaRequest(request requests.AcsRequest, signer Signer, regionId string) (err error) { + completeROASignParams(request, signer, regionId) + stringToSign := buildRoaStringToSign(request) + request.SetStringToSign(stringToSign) + signature := signer.Sign(stringToSign, "") + accessKeyId, err := signer.GetAccessKeyId() + if err != nil { + return nil + } + + request.GetHeaders()["Authorization"] = "acs " + accessKeyId + ":" + signature + + return +} + +func completeROASignParams(request requests.AcsRequest, signer Signer, regionId string) { + headerParams := request.GetHeaders() + + // complete query params + queryParams := request.GetQueryParams() + //if _, ok := queryParams["RegionId"]; !ok { + // queryParams["RegionId"] = regionId + //} + if extraParam := signer.GetExtraParam(); extraParam != nil { + for key, value := range extraParam { + if key == "SecurityToken" { + headerParams["x-acs-security-token"] = value + continue + } + + queryParams[key] = value + } + } + + // complete header params + headerParams["Date"] = hookGetDate(utils.GetTimeInFormatRFC2616) + headerParams["x-acs-signature-method"] = signer.GetName() + headerParams["x-acs-signature-version"] = signer.GetVersion() + if request.GetFormParams() != nil && len(request.GetFormParams()) > 0 { + formString := utils.GetUrlFormedMap(request.GetFormParams()) + request.SetContent([]byte(formString)) + headerParams["Content-Type"] = requests.Form + } + contentMD5 := utils.GetMD5Base64(request.GetContent()) + headerParams["Content-MD5"] = contentMD5 + if _, contains := headerParams["Content-Type"]; !contains { + headerParams["Content-Type"] = requests.Raw + } + switch format := request.GetAcceptFormat(); format { + case "JSON": + headerParams["Accept"] = requests.Json + case "XML": + headerParams["Accept"] = requests.Xml + default: + headerParams["Accept"] = requests.Raw + } +} + +func buildRoaStringToSign(request requests.AcsRequest) (stringToSign string) { + + headers := request.GetHeaders() + + stringToSignBuilder := bytes.Buffer{} + stringToSignBuilder.WriteString(request.GetMethod()) + stringToSignBuilder.WriteString(requests.HeaderSeparator) + + // append header keys for sign + appendIfContain(headers, &stringToSignBuilder, "Accept", requests.HeaderSeparator) + appendIfContain(headers, &stringToSignBuilder, "Content-MD5", requests.HeaderSeparator) + appendIfContain(headers, &stringToSignBuilder, "Content-Type", requests.HeaderSeparator) + appendIfContain(headers, &stringToSignBuilder, "Date", requests.HeaderSeparator) + + // sort and append headers witch starts with 'x-acs-' + var acsHeaders []string + for key := range headers { + if strings.HasPrefix(key, "x-acs-") { + acsHeaders = append(acsHeaders, key) + } + } + sort.Strings(acsHeaders) + for _, key := range acsHeaders { + stringToSignBuilder.WriteString(key + ":" + headers[key]) + stringToSignBuilder.WriteString(requests.HeaderSeparator) + } + + // append query params + stringToSignBuilder.WriteString(request.BuildQueries()) + stringToSign = stringToSignBuilder.String() + debug("stringToSign: %s", stringToSign) + return +} + +func appendIfContain(sourceMap map[string]string, target *bytes.Buffer, key, separator string) { + if value, contain := sourceMap[key]; contain && len(value) > 0 { + target.WriteString(sourceMap[key]) + target.WriteString(separator) + } +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/rpc_signature_composer.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/rpc_signature_composer.go new file mode 100644 index 000000000..14ea15ca4 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/rpc_signature_composer.go @@ -0,0 +1,94 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package auth + +import ( + "net/url" + "strings" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils" +) + +var hookGetUUIDV4 = func(fn func() string) string { + return fn() +} + +func signRpcRequest(request requests.AcsRequest, signer Signer, regionId string) (err error) { + err = completeRpcSignParams(request, signer, regionId) + if err != nil { + return + } + // remove while retry + if _, containsSign := request.GetQueryParams()["Signature"]; containsSign { + delete(request.GetQueryParams(), "Signature") + } + stringToSign := buildRpcStringToSign(request) + request.SetStringToSign(stringToSign) + signature := signer.Sign(stringToSign, "&") + request.GetQueryParams()["Signature"] = signature + + return +} + +func completeRpcSignParams(request requests.AcsRequest, signer Signer, regionId string) (err error) { + queryParams := request.GetQueryParams() + queryParams["Version"] = request.GetVersion() + queryParams["Action"] = request.GetActionName() + queryParams["Format"] = request.GetAcceptFormat() + queryParams["Timestamp"] = hookGetDate(utils.GetTimeInFormatISO8601) + queryParams["SignatureMethod"] = signer.GetName() + queryParams["SignatureType"] = signer.GetType() + queryParams["SignatureVersion"] = signer.GetVersion() + queryParams["SignatureNonce"] = hookGetUUIDV4(utils.GetUUIDV4) + queryParams["AccessKeyId"], err = signer.GetAccessKeyId() + + if err != nil { + return + } + + if _, contains := queryParams["RegionId"]; !contains { + queryParams["RegionId"] = regionId + } + if extraParam := signer.GetExtraParam(); extraParam != nil { + for key, value := range extraParam { + queryParams[key] = value + } + } + + request.GetHeaders()["Content-Type"] = requests.Form + formString := utils.GetUrlFormedMap(request.GetFormParams()) + request.SetContent([]byte(formString)) + + return +} + +func buildRpcStringToSign(request requests.AcsRequest) (stringToSign string) { + signParams := make(map[string]string) + for key, value := range request.GetQueryParams() { + signParams[key] = value + } + for key, value := range request.GetFormParams() { + signParams[key] = value + } + + stringToSign = utils.GetUrlFormedMap(signParams) + stringToSign = strings.Replace(stringToSign, "+", "%20", -1) + stringToSign = strings.Replace(stringToSign, "*", "%2A", -1) + stringToSign = strings.Replace(stringToSign, "%7E", "~", -1) + stringToSign = url.QueryEscape(stringToSign) + stringToSign = request.GetMethod() + "&%2F&" + stringToSign + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signer.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signer.go new file mode 100644 index 000000000..cbc5f5659 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signer.go @@ -0,0 +1,94 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package auth + +import ( + "fmt" + "reflect" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" +) + +type Signer interface { + GetName() string + GetType() string + GetVersion() string + GetAccessKeyId() (string, error) + GetExtraParam() map[string]string + Sign(stringToSign, secretSuffix string) string +} + +func NewSignerWithCredential(credential Credential, commonApi func(request *requests.CommonRequest, signer interface{}) (response *responses.CommonResponse, err error)) (signer Signer, err error) { + switch instance := credential.(type) { + case *credentials.AccessKeyCredential: + { + signer = signers.NewAccessKeySigner(instance) + } + case *credentials.StsTokenCredential: + { + signer = signers.NewStsTokenSigner(instance) + } + case *credentials.RamRoleArnCredential: + { + signer, err = signers.NewRamRoleArnSigner(instance, commonApi) + } + case *credentials.RsaKeyPairCredential: + { + signer, err = signers.NewSignerKeyPair(instance, commonApi) + } + case *credentials.EcsRamRoleCredential: + { + signer = signers.NewEcsRamRoleSigner(instance, commonApi) + } + case *credentials.BaseCredential: // deprecated user interface + { + signer = signers.NewAccessKeySigner(instance.ToAccessKeyCredential()) + } + case *credentials.StsRoleArnCredential: // deprecated user interface + { + signer, err = signers.NewRamRoleArnSigner(instance.ToRamRoleArnCredential(), commonApi) + } + case *credentials.StsRoleNameOnEcsCredential: // deprecated user interface + { + signer = signers.NewEcsRamRoleSigner(instance.ToEcsRamRoleCredential(), commonApi) + } + default: + message := fmt.Sprintf(errors.UnsupportedCredentialErrorMessage, reflect.TypeOf(credential)) + err = errors.NewClientError(errors.UnsupportedCredentialErrorCode, message, nil) + } + return +} + +func Sign(request requests.AcsRequest, signer Signer, regionId string) (err error) { + switch request.GetStyle() { + case requests.ROA: + { + err = signRoaRequest(request, signer, regionId) + } + case requests.RPC: + { + err = signRpcRequest(request, signer, regionId) + } + default: + message := fmt.Sprintf(errors.UnknownRequestTypeErrorMessage, reflect.TypeOf(request)) + err = errors.NewClientError(errors.UnknownRequestTypeErrorCode, message, nil) + } + + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/algorithms.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/algorithms.go new file mode 100644 index 000000000..404006c56 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/algorithms.go @@ -0,0 +1,56 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package signers + +import ( + "crypto" + "crypto/hmac" + "crypto/rand" + "crypto/rsa" + "crypto/sha1" + "crypto/x509" + "encoding/base64" +) + +func ShaHmac1(source, secret string) string { + key := []byte(secret) + hmac := hmac.New(sha1.New, key) + hmac.Write([]byte(source)) + signedBytes := hmac.Sum(nil) + signedString := base64.StdEncoding.EncodeToString(signedBytes) + return signedString +} + +func Sha256WithRsa(source, secret string) string { + decodeString, err := base64.StdEncoding.DecodeString(secret) + if err != nil { + panic(err) + } + private, err := x509.ParsePKCS8PrivateKey(decodeString) + if err != nil { + panic(err) + } + + h := crypto.Hash.New(crypto.SHA256) + h.Write([]byte(source)) + hashed := h.Sum(nil) + signature, err := rsa.SignPKCS1v15(rand.Reader, private.(*rsa.PrivateKey), + crypto.SHA256, hashed) + if err != nil { + panic(err) + } + + return base64.StdEncoding.EncodeToString(signature) +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/credential_updater.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/credential_updater.go new file mode 100644 index 000000000..e6da3b18a --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/credential_updater.go @@ -0,0 +1,54 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package signers + +import ( + "time" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" +) + +const defaultInAdvanceScale = 0.8 + +type credentialUpdater struct { + credentialExpiration int + lastUpdateTimestamp int64 + inAdvanceScale float64 + buildRequestMethod func() (*requests.CommonRequest, error) + responseCallBack func(response *responses.CommonResponse) error + refreshApi func(request *requests.CommonRequest) (response *responses.CommonResponse, err error) +} + +func (updater *credentialUpdater) needUpdateCredential() (result bool) { + if updater.inAdvanceScale == 0 { + updater.inAdvanceScale = defaultInAdvanceScale + } + return time.Now().Unix()-updater.lastUpdateTimestamp >= int64(float64(updater.credentialExpiration)*updater.inAdvanceScale) +} + +func (updater *credentialUpdater) updateCredential() (err error) { + request, err := updater.buildRequestMethod() + if err != nil { + return + } + response, err := updater.refreshApi(request) + if err != nil { + return + } + updater.lastUpdateTimestamp = time.Now().Unix() + err = updater.responseCallBack(response) + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/session_credential.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/session_credential.go new file mode 100644 index 000000000..99c624c88 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/session_credential.go @@ -0,0 +1,7 @@ +package signers + +type SessionCredential struct { + AccessKeyId string + AccessKeySecret string + StsToken string +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_access_key.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_access_key.go new file mode 100644 index 000000000..bc4f35b85 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_access_key.go @@ -0,0 +1,54 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package signers + +import ( + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials" +) + +type AccessKeySigner struct { + credential *credentials.AccessKeyCredential +} + +func (signer *AccessKeySigner) GetExtraParam() map[string]string { + return nil +} + +func NewAccessKeySigner(credential *credentials.AccessKeyCredential) *AccessKeySigner { + return &AccessKeySigner{ + credential: credential, + } +} + +func (*AccessKeySigner) GetName() string { + return "HMAC-SHA1" +} + +func (*AccessKeySigner) GetType() string { + return "" +} + +func (*AccessKeySigner) GetVersion() string { + return "1.0" +} + +func (signer *AccessKeySigner) GetAccessKeyId() (accessKeyId string, err error) { + return signer.credential.AccessKeyId, nil +} + +func (signer *AccessKeySigner) Sign(stringToSign, secretSuffix string) string { + secret := signer.credential.AccessKeySecret + secretSuffix + return ShaHmac1(stringToSign, secret) +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_ecs_ram_role.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_ecs_ram_role.go new file mode 100644 index 000000000..e37c65745 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_ecs_ram_role.go @@ -0,0 +1,167 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package signers + +import ( + "encoding/json" + "fmt" + "net/http" + "strings" + "time" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" + "github.com/jmespath/go-jmespath" +) + +var securityCredURL = "http://100.100.100.200/latest/meta-data/ram/security-credentials/" + +type EcsRamRoleSigner struct { + *credentialUpdater + sessionCredential *SessionCredential + credential *credentials.EcsRamRoleCredential + commonApi func(request *requests.CommonRequest, signer interface{}) (response *responses.CommonResponse, err error) +} + +func NewEcsRamRoleSigner(credential *credentials.EcsRamRoleCredential, commonApi func(*requests.CommonRequest, interface{}) (response *responses.CommonResponse, err error)) (signer *EcsRamRoleSigner) { + signer = &EcsRamRoleSigner{ + credential: credential, + commonApi: commonApi, + } + + signer.credentialUpdater = &credentialUpdater{ + credentialExpiration: defaultDurationSeconds / 60, + buildRequestMethod: signer.buildCommonRequest, + responseCallBack: signer.refreshCredential, + refreshApi: signer.refreshApi, + } + + return signer +} + +func (*EcsRamRoleSigner) GetName() string { + return "HMAC-SHA1" +} + +func (*EcsRamRoleSigner) GetType() string { + return "" +} + +func (*EcsRamRoleSigner) GetVersion() string { + return "1.0" +} + +func (signer *EcsRamRoleSigner) GetAccessKeyId() (accessKeyId string, err error) { + if signer.sessionCredential == nil || signer.needUpdateCredential() { + err = signer.updateCredential() + if err != nil { + return + } + } + if signer.sessionCredential == nil || len(signer.sessionCredential.AccessKeyId) <= 0 { + return "", nil + } + return signer.sessionCredential.AccessKeyId, nil +} + +func (signer *EcsRamRoleSigner) GetExtraParam() map[string]string { + if signer.sessionCredential == nil { + return make(map[string]string) + } + if len(signer.sessionCredential.StsToken) <= 0 { + return make(map[string]string) + } + return map[string]string{"SecurityToken": signer.sessionCredential.StsToken} +} + +func (signer *EcsRamRoleSigner) Sign(stringToSign, secretSuffix string) string { + secret := signer.sessionCredential.AccessKeyId + secretSuffix + return ShaHmac1(stringToSign, secret) +} + +func (signer *EcsRamRoleSigner) buildCommonRequest() (request *requests.CommonRequest, err error) { + return +} + +func (signer *EcsRamRoleSigner) refreshApi(request *requests.CommonRequest) (response *responses.CommonResponse, err error) { + requestUrl := securityCredURL + signer.credential.RoleName + httpRequest, err := http.NewRequest(requests.GET, requestUrl, strings.NewReader("")) + if err != nil { + err = fmt.Errorf("refresh Ecs sts token err: %s", err.Error()) + return + } + httpClient := &http.Client{} + httpResponse, err := httpClient.Do(httpRequest) + if err != nil { + err = fmt.Errorf("refresh Ecs sts token err: %s", err.Error()) + return + } + + response = responses.NewCommonResponse() + err = responses.Unmarshal(response, httpResponse, "") + return +} + +func (signer *EcsRamRoleSigner) refreshCredential(response *responses.CommonResponse) (err error) { + if response.GetHttpStatus() != http.StatusOK { + return fmt.Errorf("refresh Ecs sts token err, httpStatus: %d, message = %s", response.GetHttpStatus(), response.GetHttpContentString()) + } + var data interface{} + err = json.Unmarshal(response.GetHttpContentBytes(), &data) + if err != nil { + return fmt.Errorf("refresh Ecs sts token err, json.Unmarshal fail: %s", err.Error()) + } + code, err := jmespath.Search("Code", data) + if err != nil { + return fmt.Errorf("refresh Ecs sts token err, fail to get Code: %s", err.Error()) + } + if code.(string) != "Success" { + return fmt.Errorf("refresh Ecs sts token err, Code is not Success") + } + accessKeyId, err := jmespath.Search("AccessKeyId", data) + if err != nil { + return fmt.Errorf("refresh Ecs sts token err, fail to get AccessKeyId: %s", err.Error()) + } + accessKeySecret, err := jmespath.Search("AccessKeySecret", data) + if err != nil { + return fmt.Errorf("refresh Ecs sts token err, fail to get AccessKeySecret: %s", err.Error()) + } + securityToken, err := jmespath.Search("SecurityToken", data) + if err != nil { + return fmt.Errorf("refresh Ecs sts token err, fail to get SecurityToken: %s", err.Error()) + } + expiration, err := jmespath.Search("Expiration", data) + if err != nil { + return fmt.Errorf("refresh Ecs sts token err, fail to get Expiration: %s", err.Error()) + } + if accessKeyId == nil || accessKeySecret == nil || securityToken == nil || expiration == nil { + return + } + + expirationTime, err := time.Parse("2006-01-02T15:04:05Z", expiration.(string)) + signer.credentialExpiration = int(expirationTime.Unix() - time.Now().Unix()) + signer.sessionCredential = &SessionCredential{ + AccessKeyId: accessKeyId.(string), + AccessKeySecret: accessKeySecret.(string), + StsToken: securityToken.(string), + } + + return +} + +func (signer *EcsRamRoleSigner) GetSessionCredential() *SessionCredential { + return signer.sessionCredential +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_key_pair.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_key_pair.go new file mode 100644 index 000000000..8ed184fc0 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_key_pair.go @@ -0,0 +1,147 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package signers + +import ( + "encoding/json" + "fmt" + "net/http" + "strconv" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" + "github.com/jmespath/go-jmespath" +) + +type SignerKeyPair struct { + *credentialUpdater + sessionCredential *SessionCredential + credential *credentials.RsaKeyPairCredential + commonApi func(request *requests.CommonRequest, signer interface{}) (response *responses.CommonResponse, err error) +} + +func NewSignerKeyPair(credential *credentials.RsaKeyPairCredential, commonApi func(*requests.CommonRequest, interface{}) (response *responses.CommonResponse, err error)) (signer *SignerKeyPair, err error) { + signer = &SignerKeyPair{ + credential: credential, + commonApi: commonApi, + } + + signer.credentialUpdater = &credentialUpdater{ + credentialExpiration: credential.SessionExpiration, + buildRequestMethod: signer.buildCommonRequest, + responseCallBack: signer.refreshCredential, + refreshApi: signer.refreshApi, + } + + if credential.SessionExpiration > 0 { + if credential.SessionExpiration >= 900 && credential.SessionExpiration <= 3600 { + signer.credentialExpiration = credential.SessionExpiration + } else { + err = errors.NewClientError(errors.InvalidParamErrorCode, "Key Pair session duration should be in the range of 15min - 1Hr", nil) + } + } else { + signer.credentialExpiration = defaultDurationSeconds + } + return +} + +func (*SignerKeyPair) GetName() string { + return "HMAC-SHA1" +} + +func (*SignerKeyPair) GetType() string { + return "" +} + +func (*SignerKeyPair) GetVersion() string { + return "1.0" +} + +func (signer *SignerKeyPair) ensureCredential() error { + if signer.sessionCredential == nil || signer.needUpdateCredential() { + return signer.updateCredential() + } + return nil +} + +func (signer *SignerKeyPair) GetAccessKeyId() (accessKeyId string, err error) { + err = signer.ensureCredential() + if err != nil { + return + } + if signer.sessionCredential == nil || len(signer.sessionCredential.AccessKeyId) <= 0 { + accessKeyId = "" + return + } + + accessKeyId = signer.sessionCredential.AccessKeyId + return +} + +func (signer *SignerKeyPair) GetExtraParam() map[string]string { + return make(map[string]string) +} + +func (signer *SignerKeyPair) Sign(stringToSign, secretSuffix string) string { + secret := signer.sessionCredential.AccessKeyId + secretSuffix + return ShaHmac1(stringToSign, secret) +} + +func (signer *SignerKeyPair) buildCommonRequest() (request *requests.CommonRequest, err error) { + request = requests.NewCommonRequest() + request.Product = "Sts" + request.Version = "2015-04-01" + request.ApiName = "GenerateSessionAccessKey" + request.Scheme = requests.HTTPS + request.QueryParams["PublicKeyId"] = signer.credential.PublicKeyId + request.QueryParams["DurationSeconds"] = strconv.Itoa(signer.credentialExpiration) + return +} + +func (signer *SignerKeyPair) refreshApi(request *requests.CommonRequest) (response *responses.CommonResponse, err error) { + signerV2 := NewSignerV2(signer.credential) + return signer.commonApi(request, signerV2) +} + +func (signer *SignerKeyPair) refreshCredential(response *responses.CommonResponse) (err error) { + if response.GetHttpStatus() != http.StatusOK { + message := "refresh session AccessKey failed" + err = errors.NewServerError(response.GetHttpStatus(), response.GetHttpContentString(), message) + return + } + var data interface{} + err = json.Unmarshal(response.GetHttpContentBytes(), &data) + if err != nil { + return fmt.Errorf("refresh KeyPair err, json.Unmarshal fail: %s", err.Error()) + } + accessKeyId, err := jmespath.Search("SessionAccessKey.SessionAccessKeyId", data) + if err != nil { + return fmt.Errorf("refresh KeyPair err, fail to get SessionAccessKeyId: %s", err.Error()) + } + accessKeySecret, err := jmespath.Search("SessionAccessKey.SessionAccessKeySecret", data) + if err != nil { + return fmt.Errorf("refresh KeyPair err, fail to get SessionAccessKeySecret: %s", err.Error()) + } + if accessKeyId == nil || accessKeySecret == nil { + return + } + signer.sessionCredential = &SessionCredential{ + AccessKeyId: accessKeyId.(string), + AccessKeySecret: accessKeySecret.(string), + } + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_ram_role_arn.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_ram_role_arn.go new file mode 100644 index 000000000..8fd859a98 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_ram_role_arn.go @@ -0,0 +1,172 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package signers + +import ( + "encoding/json" + "fmt" + "net/http" + "strconv" + "time" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" + "github.com/jmespath/go-jmespath" +) + +const ( + defaultDurationSeconds = 3600 +) + +type RamRoleArnSigner struct { + *credentialUpdater + roleSessionName string + sessionCredential *SessionCredential + credential *credentials.RamRoleArnCredential + commonApi func(request *requests.CommonRequest, signer interface{}) (response *responses.CommonResponse, err error) +} + +func NewRamRoleArnSigner(credential *credentials.RamRoleArnCredential, commonApi func(request *requests.CommonRequest, signer interface{}) (response *responses.CommonResponse, err error)) (signer *RamRoleArnSigner, err error) { + signer = &RamRoleArnSigner{ + credential: credential, + commonApi: commonApi, + } + + signer.credentialUpdater = &credentialUpdater{ + credentialExpiration: credential.RoleSessionExpiration, + buildRequestMethod: signer.buildCommonRequest, + responseCallBack: signer.refreshCredential, + refreshApi: signer.refreshApi, + } + + if len(credential.RoleSessionName) > 0 { + signer.roleSessionName = credential.RoleSessionName + } else { + signer.roleSessionName = "aliyun-go-sdk-" + strconv.FormatInt(time.Now().UnixNano()/1000, 10) + } + if credential.RoleSessionExpiration > 0 { + if credential.RoleSessionExpiration >= 900 && credential.RoleSessionExpiration <= 3600 { + signer.credentialExpiration = credential.RoleSessionExpiration + } else { + err = errors.NewClientError(errors.InvalidParamErrorCode, "Assume Role session duration should be in the range of 15min - 1Hr", nil) + } + } else { + signer.credentialExpiration = defaultDurationSeconds + } + return +} + +func (*RamRoleArnSigner) GetName() string { + return "HMAC-SHA1" +} + +func (*RamRoleArnSigner) GetType() string { + return "" +} + +func (*RamRoleArnSigner) GetVersion() string { + return "1.0" +} + +func (signer *RamRoleArnSigner) GetAccessKeyId() (accessKeyId string, err error) { + if signer.sessionCredential == nil || signer.needUpdateCredential() { + err = signer.updateCredential() + if err != nil { + return + } + } + + if signer.sessionCredential == nil || len(signer.sessionCredential.AccessKeyId) <= 0 { + return "", err + } + + return signer.sessionCredential.AccessKeyId, nil +} + +func (signer *RamRoleArnSigner) GetExtraParam() map[string]string { + if signer.sessionCredential == nil || signer.needUpdateCredential() { + signer.updateCredential() + } + if signer.sessionCredential == nil || len(signer.sessionCredential.StsToken) <= 0 { + return make(map[string]string) + } + return map[string]string{"SecurityToken": signer.sessionCredential.StsToken} +} + +func (signer *RamRoleArnSigner) Sign(stringToSign, secretSuffix string) string { + secret := signer.sessionCredential.AccessKeySecret + secretSuffix + return ShaHmac1(stringToSign, secret) +} + +func (signer *RamRoleArnSigner) buildCommonRequest() (request *requests.CommonRequest, err error) { + request = requests.NewCommonRequest() + request.Product = "Sts" + request.Version = "2015-04-01" + request.ApiName = "AssumeRole" + request.Scheme = requests.HTTPS + request.QueryParams["RoleArn"] = signer.credential.RoleArn + request.QueryParams["RoleSessionName"] = signer.credential.RoleSessionName + request.QueryParams["DurationSeconds"] = strconv.Itoa(signer.credentialExpiration) + return +} + +func (signer *RamRoleArnSigner) refreshApi(request *requests.CommonRequest) (response *responses.CommonResponse, err error) { + credential := &credentials.AccessKeyCredential{ + AccessKeyId: signer.credential.AccessKeyId, + AccessKeySecret: signer.credential.AccessKeySecret, + } + signerV1 := NewAccessKeySigner(credential) + return signer.commonApi(request, signerV1) +} + +func (signer *RamRoleArnSigner) refreshCredential(response *responses.CommonResponse) (err error) { + if response.GetHttpStatus() != http.StatusOK { + message := "refresh session token failed" + err = errors.NewServerError(response.GetHttpStatus(), response.GetHttpContentString(), message) + return + } + var data interface{} + err = json.Unmarshal(response.GetHttpContentBytes(), &data) + if err != nil { + return fmt.Errorf("refresh RoleArn sts token err, json.Unmarshal fail: %s", err.Error()) + } + accessKeyId, err := jmespath.Search("Credentials.AccessKeyId", data) + if err != nil { + return fmt.Errorf("refresh RoleArn sts token err, fail to get AccessKeyId: %s", err.Error()) + } + accessKeySecret, err := jmespath.Search("Credentials.AccessKeySecret", data) + if err != nil { + return fmt.Errorf("refresh RoleArn sts token err, fail to get AccessKeySecret: %s", err.Error()) + } + securityToken, err := jmespath.Search("Credentials.SecurityToken", data) + if err != nil { + return fmt.Errorf("refresh RoleArn sts token err, fail to get SecurityToken: %s", err.Error()) + } + if accessKeyId == nil || accessKeySecret == nil || securityToken == nil { + return + } + signer.sessionCredential = &SessionCredential{ + AccessKeyId: accessKeyId.(string), + AccessKeySecret: accessKeySecret.(string), + StsToken: securityToken.(string), + } + return +} + +func (signer *RamRoleArnSigner) GetSessionCredential() *SessionCredential { + return signer.sessionCredential +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_sts_token.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_sts_token.go new file mode 100644 index 000000000..d0ce36c38 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_sts_token.go @@ -0,0 +1,54 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package signers + +import ( + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials" +) + +type StsTokenSigner struct { + credential *credentials.StsTokenCredential +} + +func NewStsTokenSigner(credential *credentials.StsTokenCredential) *StsTokenSigner { + return &StsTokenSigner{ + credential: credential, + } +} + +func (*StsTokenSigner) GetName() string { + return "HMAC-SHA1" +} + +func (*StsTokenSigner) GetType() string { + return "" +} + +func (*StsTokenSigner) GetVersion() string { + return "1.0" +} + +func (signer *StsTokenSigner) GetAccessKeyId() (accessKeyId string, err error) { + return signer.credential.AccessKeyId, nil +} + +func (signer *StsTokenSigner) GetExtraParam() map[string]string { + return map[string]string{"SecurityToken": signer.credential.AccessKeyStsToken} +} + +func (signer *StsTokenSigner) Sign(stringToSign, secretSuffix string) string { + secret := signer.credential.AccessKeySecret + secretSuffix + return ShaHmac1(stringToSign, secret) +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_v2.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_v2.go new file mode 100644 index 000000000..973485298 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers/signer_v2.go @@ -0,0 +1,54 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package signers + +import ( + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials" +) + +type SignerV2 struct { + credential *credentials.RsaKeyPairCredential +} + +func (signer *SignerV2) GetExtraParam() map[string]string { + return nil +} + +func NewSignerV2(credential *credentials.RsaKeyPairCredential) *SignerV2 { + return &SignerV2{ + credential: credential, + } +} + +func (*SignerV2) GetName() string { + return "SHA256withRSA" +} + +func (*SignerV2) GetType() string { + return "PRIVATEKEY" +} + +func (*SignerV2) GetVersion() string { + return "1.0" +} + +func (signer *SignerV2) GetAccessKeyId() (accessKeyId string, err error) { + return signer.credential.PublicKeyId, err +} + +func (signer *SignerV2) Sign(stringToSign, secretSuffix string) string { + secret := signer.credential.PrivateKey + return Sha256WithRsa(stringToSign, secret) +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/client.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/client.go new file mode 100644 index 000000000..bc88a8853 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/client.go @@ -0,0 +1,442 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package sdk + +import ( + "fmt" + "net/http" + "runtime" + "strconv" + "strings" + "sync" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils" +) + +var debug utils.Debug + +func init() { + debug = utils.Init("sdk") +} + +// Version this value will be replaced while build: -ldflags="-X sdk.version=x.x.x" +var Version = "0.0.1" + +var DefaultUserAgent = fmt.Sprintf("AlibabaCloud (%s; %s) Golang/%s Core/%s", runtime.GOOS, runtime.GOARCH, strings.Trim(runtime.Version(), "go"), Version) + +var hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) { + return fn +} + +// Client the type Client +type Client struct { + regionId string + config *Config + userAgent map[string]string + signer auth.Signer + httpClient *http.Client + asyncTaskQueue chan func() + + debug bool + isRunning bool + // void "panic(write to close channel)" cause of addAsync() after Shutdown() + asyncChanLock *sync.RWMutex +} + +func (client *Client) Init() (err error) { + panic("not support yet") +} + +func (client *Client) InitWithOptions(regionId string, config *Config, credential auth.Credential) (err error) { + client.isRunning = true + client.asyncChanLock = new(sync.RWMutex) + client.regionId = regionId + client.config = config + client.httpClient = &http.Client{} + + if config.HttpTransport != nil { + client.httpClient.Transport = config.HttpTransport + } + + if config.Timeout > 0 { + client.httpClient.Timeout = config.Timeout + } + + if config.EnableAsync { + client.EnableAsync(config.GoRoutinePoolSize, config.MaxTaskQueueSize) + } + + client.signer, err = auth.NewSignerWithCredential(credential, client.ProcessCommonRequestWithSigner) + + return +} + +// EnableAsync enable the async task queue +func (client *Client) EnableAsync(routinePoolSize, maxTaskQueueSize int) { + client.asyncTaskQueue = make(chan func(), maxTaskQueueSize) + for i := 0; i < routinePoolSize; i++ { + go func() { + for client.isRunning { + select { + case task, notClosed := <-client.asyncTaskQueue: + if notClosed { + task() + } + } + } + }() + } +} + +func (client *Client) InitWithAccessKey(regionId, accessKeyId, accessKeySecret string) (err error) { + config := client.InitClientConfig() + credential := &credentials.BaseCredential{ + AccessKeyId: accessKeyId, + AccessKeySecret: accessKeySecret, + } + return client.InitWithOptions(regionId, config, credential) +} + +func (client *Client) InitWithStsToken(regionId, accessKeyId, accessKeySecret, securityToken string) (err error) { + config := client.InitClientConfig() + credential := &credentials.StsTokenCredential{ + AccessKeyId: accessKeyId, + AccessKeySecret: accessKeySecret, + AccessKeyStsToken: securityToken, + } + return client.InitWithOptions(regionId, config, credential) +} + +func (client *Client) InitWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (err error) { + config := client.InitClientConfig() + credential := &credentials.RamRoleArnCredential{ + AccessKeyId: accessKeyId, + AccessKeySecret: accessKeySecret, + RoleArn: roleArn, + RoleSessionName: roleSessionName, + } + return client.InitWithOptions(regionId, config, credential) +} + +func (client *Client) InitWithRsaKeyPair(regionId, publicKeyId, privateKey string, sessionExpiration int) (err error) { + config := client.InitClientConfig() + credential := &credentials.RsaKeyPairCredential{ + PrivateKey: privateKey, + PublicKeyId: publicKeyId, + SessionExpiration: sessionExpiration, + } + return client.InitWithOptions(regionId, config, credential) +} + +func (client *Client) InitWithEcsRamRole(regionId, roleName string) (err error) { + config := client.InitClientConfig() + credential := &credentials.EcsRamRoleCredential{ + RoleName: roleName, + } + return client.InitWithOptions(regionId, config, credential) +} + +func (client *Client) InitClientConfig() (config *Config) { + if client.config != nil { + return client.config + } else { + return NewConfig() + } +} + +func (client *Client) DoAction(request requests.AcsRequest, response responses.AcsResponse) (err error) { + return client.DoActionWithSigner(request, response, nil) +} + +func (client *Client) buildRequestWithSigner(request requests.AcsRequest, signer auth.Signer) (httpRequest *http.Request, err error) { + // add clientVersion + request.GetHeaders()["x-sdk-core-version"] = Version + + regionId := client.regionId + if len(request.GetRegionId()) > 0 { + regionId = request.GetRegionId() + } + + // resolve endpoint + resolveParam := &endpoints.ResolveParam{ + Domain: request.GetDomain(), + Product: request.GetProduct(), + RegionId: regionId, + LocationProduct: request.GetLocationServiceCode(), + LocationEndpointType: request.GetLocationEndpointType(), + CommonApi: client.ProcessCommonRequest, + } + endpoint, err := endpoints.Resolve(resolveParam) + if err != nil { + return + } + request.SetDomain(endpoint) + if request.GetScheme() == "" { + request.SetScheme(client.config.Scheme) + } + // init request params + err = requests.InitParams(request) + if err != nil { + return + } + + // signature + var finalSigner auth.Signer + if signer != nil { + finalSigner = signer + } else { + finalSigner = client.signer + } + httpRequest, err = buildHttpRequest(request, finalSigner, regionId) + if err == nil { + userAgent := DefaultUserAgent + getSendUserAgent(client.config.UserAgent, client.userAgent, request.GetUserAgent()) + httpRequest.Header.Set("User-Agent", userAgent) + } + + return +} + +func getSendUserAgent(configUserAgent string, clientUserAgent, requestUserAgent map[string]string) string { + realUserAgent := "" + for key1, value1 := range clientUserAgent { + for key2, _ := range requestUserAgent { + if key1 == key2 { + key1 = "" + } + } + if key1 != "" { + realUserAgent += fmt.Sprintf(" %s/%s", key1, value1) + + } + } + for key, value := range requestUserAgent { + realUserAgent += fmt.Sprintf(" %s/%s", key, value) + } + if configUserAgent != "" { + return realUserAgent + fmt.Sprintf(" Extra/%s", configUserAgent) + } + return realUserAgent +} + +func (client *Client) AppendUserAgent(key, value string) { + newkey := true + + if client.userAgent == nil { + client.userAgent = make(map[string]string) + } + if strings.ToLower(key) != "core" && strings.ToLower(key) != "go" { + for tag, _ := range client.userAgent { + if tag == key { + client.userAgent[tag] = value + newkey = false + } + } + if newkey { + client.userAgent[key] = value + } + } +} + +func (client *Client) BuildRequestWithSigner(request requests.AcsRequest, signer auth.Signer) (err error) { + _, err = client.buildRequestWithSigner(request, signer) + return +} + +func (client *Client) DoActionWithSigner(request requests.AcsRequest, response responses.AcsResponse, signer auth.Signer) (err error) { + httpRequest, err := client.buildRequestWithSigner(request, signer) + if err != nil { + return + } + var httpResponse *http.Response + for retryTimes := 0; retryTimes <= client.config.MaxRetryTime; retryTimes++ { + debug("> %s %s %s", httpRequest.Method, httpRequest.URL.RequestURI(), httpRequest.Proto) + debug("> Host: %s", httpRequest.Host) + for key, value := range httpRequest.Header { + debug("> %s: %v", key, strings.Join(value, "")) + } + debug(">") + httpResponse, err = hookDo(client.httpClient.Do)(httpRequest) + if err == nil { + debug("< %s %s", httpResponse.Proto, httpResponse.Status) + for key, value := range httpResponse.Header { + debug("< %s: %v", key, strings.Join(value, "")) + } + } + debug("<") + // receive error + if err != nil { + if !client.config.AutoRetry { + return + } else if retryTimes >= client.config.MaxRetryTime { + // timeout but reached the max retry times, return + timeoutErrorMsg := fmt.Sprintf(errors.TimeoutErrorMessage, strconv.Itoa(retryTimes+1), strconv.Itoa(retryTimes+1)) + err = errors.NewClientError(errors.TimeoutErrorCode, timeoutErrorMsg, err) + return + } + } + // if status code >= 500 or timeout, will trigger retry + if client.config.AutoRetry && (err != nil || isServerError(httpResponse)) { + // rewrite signatureNonce and signature + httpRequest, err = client.buildRequestWithSigner(request, signer) + // buildHttpRequest(request, finalSigner, regionId) + if err != nil { + return + } + continue + } + break + } + err = responses.Unmarshal(response, httpResponse, request.GetAcceptFormat()) + // wrap server errors + if serverErr, ok := err.(*errors.ServerError); ok { + var wrapInfo = map[string]string{} + wrapInfo["StringToSign"] = request.GetStringToSign() + err = errors.WrapServerError(serverErr, wrapInfo) + } + return +} + +func buildHttpRequest(request requests.AcsRequest, singer auth.Signer, regionId string) (httpRequest *http.Request, err error) { + err = auth.Sign(request, singer, regionId) + if err != nil { + return + } + requestMethod := request.GetMethod() + requestUrl := request.BuildUrl() + body := request.GetBodyReader() + httpRequest, err = http.NewRequest(requestMethod, requestUrl, body) + if err != nil { + return + } + for key, value := range request.GetHeaders() { + httpRequest.Header[key] = []string{value} + } + // host is a special case + if host, containsHost := request.GetHeaders()["Host"]; containsHost { + httpRequest.Host = host + } + return +} + +func isServerError(httpResponse *http.Response) bool { + return httpResponse.StatusCode >= http.StatusInternalServerError +} + +/** +only block when any one of the following occurs: +1. the asyncTaskQueue is full, increase the queue size to avoid this +2. Shutdown() in progressing, the client is being closed +**/ +func (client *Client) AddAsyncTask(task func()) (err error) { + if client.asyncTaskQueue != nil { + client.asyncChanLock.RLock() + defer client.asyncChanLock.RUnlock() + if client.isRunning { + client.asyncTaskQueue <- task + } + } else { + err = errors.NewClientError(errors.AsyncFunctionNotEnabledCode, errors.AsyncFunctionNotEnabledMessage, nil) + } + return +} + +func (client *Client) GetConfig() *Config { + return client.config +} + +func NewClient() (client *Client, err error) { + client = &Client{} + err = client.Init() + return +} + +func NewClientWithOptions(regionId string, config *Config, credential auth.Credential) (client *Client, err error) { + client = &Client{} + err = client.InitWithOptions(regionId, config, credential) + return +} + +func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) { + client = &Client{} + err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret) + return +} + +func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken string) (client *Client, err error) { + client = &Client{} + err = client.InitWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken) + return +} + +func NewClientWithRamRoleArn(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (client *Client, err error) { + client = &Client{} + err = client.InitWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName) + return +} + +func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client, err error) { + client = &Client{} + err = client.InitWithEcsRamRole(regionId, roleName) + return +} + +func NewClientWithRsaKeyPair(regionId string, publicKeyId, privateKey string, sessionExpiration int) (client *Client, err error) { + client = &Client{} + err = client.InitWithRsaKeyPair(regionId, publicKeyId, privateKey, sessionExpiration) + return +} + +// Deprecated: Use NewClientWithRamRoleArn in this package instead. +func NewClientWithStsRoleArn(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (client *Client, err error) { + return NewClientWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName) +} + +// Deprecated: Use NewClientWithEcsRamRole in this package instead. +func NewClientWithStsRoleNameOnEcs(regionId string, roleName string) (client *Client, err error) { + return NewClientWithEcsRamRole(regionId, roleName) +} + +func (client *Client) ProcessCommonRequest(request *requests.CommonRequest) (response *responses.CommonResponse, err error) { + request.TransToAcsRequest() + response = responses.NewCommonResponse() + err = client.DoAction(request, response) + return +} + +func (client *Client) ProcessCommonRequestWithSigner(request *requests.CommonRequest, signerInterface interface{}) (response *responses.CommonResponse, err error) { + if signer, isSigner := signerInterface.(auth.Signer); isSigner { + request.TransToAcsRequest() + response = responses.NewCommonResponse() + err = client.DoActionWithSigner(request, response, signer) + return + } + panic("should not be here") +} + +func (client *Client) Shutdown() { + // lock the addAsync() + client.asyncChanLock.Lock() + defer client.asyncChanLock.Unlock() + if client.asyncTaskQueue != nil { + close(client.asyncTaskQueue) + } + client.isRunning = false +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/client_test.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/client_test.go new file mode 100644 index 000000000..361bcf64c --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/client_test.go @@ -0,0 +1,409 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package sdk + +import ( + "bytes" + "io/ioutil" + "net/http" + "strconv" + "testing" + "time" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + + "github.com/stretchr/testify/assert" +) + +type signertest struct { + name string +} + +func (s *signertest) GetName() string { + return "" +} + +func (s *signertest) GetType() string { + return "" +} + +func (s *signertest) GetVersion() string { + return "" +} + +func (s *signertest) GetAccessKeyId() (string, error) { + return "", nil +} + +func (s *signertest) GetExtraParam() map[string]string { + return nil +} + +func (s *signertest) Sign(stringToSign, secretSuffix string) string { + return "" +} + +func Test_Client(t *testing.T) { + defer func() { + err := recover() + assert.NotNil(t, err) + assert.Equal(t, "not support yet", err) + }() + NewClient() +} + +func Test_NewClientWithOptions(t *testing.T) { + c := NewConfig() + c.HttpTransport = &http.Transport{ + IdleConnTimeout: time.Duration(10 * time.Second), + } + c.EnableAsync = true + c.GoRoutinePoolSize = 1 + c.MaxTaskQueueSize = 1 + credential := credentials.NewAccessKeyCredential("acesskeyid", "accesskeysecret") + client, err := NewClientWithOptions("regionid", c, credential) + assert.Nil(t, err) + assert.NotNil(t, client) +} + +func Test_NewClientWithAccessKey(t *testing.T) { + client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret") + assert.Nil(t, err) + assert.NotNil(t, client) +} + +func Test_NewClientWithStsToken(t *testing.T) { + client, err := NewClientWithStsToken("regionid", "acesskeyid", "accesskeysecret", "token") + assert.Nil(t, err) + assert.NotNil(t, client) +} + +func Test_NewClientWithRamRoleArn(t *testing.T) { + client, err := NewClientWithRamRoleArn("regionid", "acesskeyid", "accesskeysecret", "roleArn", "roleSessionName") + assert.Nil(t, err) + assert.NotNil(t, client) + config := client.InitClientConfig() + assert.NotNil(t, config) +} + +func Test_NewClientWithEcsRamRole(t *testing.T) { + client, err := NewClientWithEcsRamRole("regionid", "roleName") + assert.Nil(t, err) + assert.NotNil(t, client) +} + +func Test_NewClientWithRsaKeyPair(t *testing.T) { + client, err := NewClientWithRsaKeyPair("regionid", "publicKey", "privateKey", 3600) + assert.Nil(t, err) + assert.NotNil(t, client) +} + +func mockResponse(statusCode int, content string) (res *http.Response, err error) { + status := strconv.Itoa(statusCode) + res = &http.Response{ + Proto: "HTTP/1.1", + ProtoMajor: 1, + Header: make(http.Header), + StatusCode: statusCode, + Status: status + " " + http.StatusText(statusCode), + } + res.Body = ioutil.NopCloser(bytes.NewReader([]byte(content))) + return +} + +func Test_DoAction(t *testing.T) { + client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret") + assert.Nil(t, err) + assert.NotNil(t, client) + assert.Equal(t, true, client.isRunning) + request := requests.NewCommonRequest() + request.Domain = "ecs.aliyuncs.com" + request.Version = "2014-05-26" + request.ApiName = "DescribeInstanceStatus" + + request.QueryParams["PageNumber"] = "1" + request.QueryParams["PageSize"] = "30" + request.TransToAcsRequest() + response := responses.NewCommonResponse() + origTestHookDo := hookDo + defer func() { hookDo = origTestHookDo }() + hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) { + return func(req *http.Request) (*http.Response, error) { + return mockResponse(200, "") + } + } + err = client.DoAction(request, response) + assert.Nil(t, err) + assert.Equal(t, 200, response.GetHttpStatus()) + assert.Equal(t, "", response.GetHttpContentString()) + client.Shutdown() + assert.Equal(t, false, client.isRunning) +} + +func Test_DoAction_Timeout(t *testing.T) { + client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret") + assert.Nil(t, err) + assert.NotNil(t, client) + assert.Equal(t, true, client.isRunning) + request := requests.NewCommonRequest() + request.Domain = "ecs.aliyuncs.com" + request.Version = "2014-05-26" + request.ApiName = "DescribeInstanceStatus" + + request.QueryParams["PageNumber"] = "1" + request.QueryParams["PageSize"] = "30" + request.TransToAcsRequest() + response := responses.NewCommonResponse() + origTestHookDo := hookDo + defer func() { hookDo = origTestHookDo }() + hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) { + return func(req *http.Request) (*http.Response, error) { + return mockResponse(200, "") + } + } + err = client.DoAction(request, response) + assert.Nil(t, err) + assert.Equal(t, 200, response.GetHttpStatus()) + assert.Equal(t, "", response.GetHttpContentString()) + client.Shutdown() + assert.Equal(t, false, client.isRunning) +} + +func Test_ProcessCommonRequest(t *testing.T) { + client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret") + assert.Nil(t, err) + assert.NotNil(t, client) + + request := requests.NewCommonRequest() + request.Domain = "ecs.aliyuncs.com" + request.Version = "2014-05-26" + request.ApiName = "DescribeInstanceStatus" + + request.QueryParams["PageNumber"] = "1" + request.QueryParams["PageSize"] = "30" + + origTestHookDo := hookDo + defer func() { hookDo = origTestHookDo }() + hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) { + return func(req *http.Request) (*http.Response, error) { + return mockResponse(200, "") + } + } + response, err := client.ProcessCommonRequest(request) + assert.Nil(t, err) + assert.Equal(t, 200, response.GetHttpStatus()) + assert.Equal(t, "", response.GetHttpContentString()) +} + +func Test_DoAction_With500(t *testing.T) { + client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret") + assert.Nil(t, err) + assert.NotNil(t, client) + assert.Equal(t, true, client.isRunning) + request := requests.NewCommonRequest() + request.Domain = "ecs.aliyuncs.com" + request.Version = "2014-05-26" + request.ApiName = "DescribeInstanceStatus" + + request.QueryParams["PageNumber"] = "1" + request.QueryParams["PageSize"] = "30" + request.TransToAcsRequest() + response := responses.NewCommonResponse() + origTestHookDo := hookDo + defer func() { hookDo = origTestHookDo }() + hookDo = func(fn func(req *http.Request) (*http.Response, error)) func(req *http.Request) (*http.Response, error) { + return func(req *http.Request) (*http.Response, error) { + return mockResponse(500, "Server Internel Error") + } + } + err = client.DoAction(request, response) + assert.NotNil(t, err) + assert.Equal(t, "SDK.ServerError\nErrorCode: \nRecommend: \nRequestId: \nMessage: Server Internel Error", err.Error()) + assert.Equal(t, 500, response.GetHttpStatus()) + assert.Equal(t, "Server Internel Error", response.GetHttpContentString()) +} + +func TestClient_BuildRequestWithSigner(t *testing.T) { + client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret") + assert.Nil(t, err) + assert.NotNil(t, client) + assert.Equal(t, true, client.isRunning) + request := requests.NewCommonRequest() + request.Domain = "ecs.aliyuncs.com" + request.Version = "2014-05-26" + request.ApiName = "DescribeInstanceStatus" + + request.QueryParams["PageNumber"] = "1" + request.QueryParams["PageSize"] = "30" + request.RegionId = "regionid" + request.TransToAcsRequest() + client.config.UserAgent = "user_agent" + err = client.BuildRequestWithSigner(request, nil) + assert.Nil(t, err) +} + +func TestClient_BuildRequestWithSigner1(t *testing.T) { + client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret") + assert.Nil(t, err) + assert.NotNil(t, client) + assert.Equal(t, true, client.isRunning) + request := requests.NewCommonRequest() + request.Domain = "ecs.aliyuncs.com" + request.Version = "2014-05-26" + request.ApiName = "DescribeInstanceStatus" + + request.QueryParams["PageNumber"] = "1" + request.QueryParams["PageSize"] = "30" + request.RegionId = "regionid" + request.TransToAcsRequest() + signer := &signertest{ + name: "signer", + } + err = client.BuildRequestWithSigner(request, signer) + assert.Nil(t, err) +} + +func TestClient_ProcessCommonRequestWithSigner(t *testing.T) { + client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret") + assert.Nil(t, err) + assert.NotNil(t, client) + assert.Equal(t, true, client.isRunning) + request := requests.NewCommonRequest() + request.Domain = "ecs.aliyuncs.com" + request.Version = "2014-05-26" + request.ApiName = "DescribeInstanceStatus" + + request.QueryParams["PageNumber"] = "1" + request.QueryParams["PageSize"] = "30" + request.RegionId = "regionid" + signer := &signertest{ + name: "signer", + } + _, err = client.ProcessCommonRequestWithSigner(request, signer) + assert.NotNil(t, err) +} + +func TestClient_AppendUserAgent(t *testing.T) { + client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret") + assert.Nil(t, err) + assert.NotNil(t, client) + assert.Equal(t, true, client.isRunning) + request := requests.NewCommonRequest() + request.Domain = "ecs.aliyuncs.com" + request.Version = "2014-05-26" + request.ApiName = "DescribeInstanceStatus" + + request.RegionId = "regionid" + signer := &signertest{ + name: "signer", + } + request.TransToAcsRequest() + httpRequest, err := client.buildRequestWithSigner(request, signer) + assert.Nil(t, err) + assert.Equal(t, DefaultUserAgent, httpRequest.Header.Get("User-Agent")) + + client.AppendUserAgent("test", "1.01") + httpRequest, err = client.buildRequestWithSigner(request, signer) + assert.Equal(t, DefaultUserAgent+" test/1.01", httpRequest.Header.Get("User-Agent")) + + request.AppendUserAgent("test", "2.01") + httpRequest, err = client.buildRequestWithSigner(request, signer) + assert.Equal(t, DefaultUserAgent+" test/2.01", httpRequest.Header.Get("User-Agent")) + + request.AppendUserAgent("test", "2.02") + httpRequest, err = client.buildRequestWithSigner(request, signer) + assert.Equal(t, DefaultUserAgent+" test/2.02", httpRequest.Header.Get("User-Agent")) + + client.AppendUserAgent("test", "2.01") + httpRequest, err = client.buildRequestWithSigner(request, signer) + assert.Equal(t, DefaultUserAgent+" test/2.02", httpRequest.Header.Get("User-Agent")) + + client.AppendUserAgent("core", "1.01") + httpRequest, err = client.buildRequestWithSigner(request, signer) + assert.Equal(t, DefaultUserAgent+" test/2.02", httpRequest.Header.Get("User-Agent")) + + request.AppendUserAgent("core", "1.01") + httpRequest, err = client.buildRequestWithSigner(request, signer) + assert.Equal(t, DefaultUserAgent+" test/2.02", httpRequest.Header.Get("User-Agent")) + + request1 := requests.NewCommonRequest() + request1.Domain = "ecs.aliyuncs.com" + request1.Version = "2014-05-26" + request1.ApiName = "DescribeRegions" + request1.RegionId = "regionid" + request1.AppendUserAgent("sys", "1.01") + request1.TransToAcsRequest() + httpRequest, err = client.buildRequestWithSigner(request1, signer) + assert.Nil(t, err) + assert.Equal(t, DefaultUserAgent+" test/2.01 sys/1.01", httpRequest.Header.Get("User-Agent")) +} + +func TestClient_ProcessCommonRequestWithSigner_Error(t *testing.T) { + client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret") + assert.Nil(t, err) + assert.NotNil(t, client) + assert.Equal(t, true, client.isRunning) + request := requests.NewCommonRequest() + request.Domain = "ecs.aliyuncs.com" + request.Version = "2014-05-26" + request.ApiName = "DescribeInstanceStatus" + + request.QueryParams["PageNumber"] = "1" + request.QueryParams["PageSize"] = "30" + request.RegionId = "regionid" + defer func() { + err := recover() + assert.NotNil(t, err) + }() + _, err = client.ProcessCommonRequestWithSigner(request, nil) + assert.NotNil(t, err) +} + +func TestClient_NewClientWithStsRoleNameOnEcs(t *testing.T) { + client, err := NewClientWithStsRoleNameOnEcs("regionid", "rolename") + assert.Nil(t, err) + assert.NotNil(t, client) + assert.Equal(t, true, client.isRunning) + config := client.GetConfig() + assert.NotNil(t, config) + err = client.AddAsyncTask(nil) + assert.NotNil(t, err) +} + +func TestClient_NewClientWithStsRoleArn(t *testing.T) { + client, err := NewClientWithStsRoleArn("regionid", "acesskeyid", "accesskeysecret", "rolearn", "rolesessionname") + assert.Nil(t, err) + assert.NotNil(t, client) + assert.Equal(t, true, client.isRunning) + task := func() {} + client.asyncTaskQueue = make(chan func(), 1) + err = client.AddAsyncTask(task) + assert.Nil(t, err) + client.Shutdown() + assert.Equal(t, false, client.isRunning) +} + +//func Test_EnableAsync(t *testing.T) { +// client, err := NewClientWithAccessKey("regionid", "acesskeyid", "accesskeysecret") +// assert.Nil(t, err) +// assert.NotNil(t, client) +// assert.Equal(t, true, client.isRunning) +// client.EnableAsync(2, 8) +// client.Shutdown() +// assert.Equal(t, false, client.isRunning) +//} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/config.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/config.go new file mode 100644 index 000000000..e8862e0c2 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/config.go @@ -0,0 +1,91 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package sdk + +import ( + "net/http" + "time" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils" +) + +type Config struct { + AutoRetry bool `default:"true"` + MaxRetryTime int `default:"3"` + UserAgent string `default:""` + Debug bool `default:"false"` + Timeout time.Duration `default:"10000000000"` + HttpTransport *http.Transport `default:""` + EnableAsync bool `default:"false"` + MaxTaskQueueSize int `default:"1000"` + GoRoutinePoolSize int `default:"5"` + Scheme string `default:"HTTP"` +} + +func NewConfig() (config *Config) { + config = &Config{} + utils.InitStructWithDefaultTag(config) + return +} + +func (c *Config) WithAutoRetry(isAutoRetry bool) *Config { + c.AutoRetry = isAutoRetry + return c +} + +func (c *Config) WithMaxRetryTime(maxRetryTime int) *Config { + c.MaxRetryTime = maxRetryTime + return c +} + +func (c *Config) WithUserAgent(userAgent string) *Config { + c.UserAgent = userAgent + return c +} + +func (c *Config) WithDebug(isDebug bool) *Config { + c.Debug = isDebug + return c +} + +func (c *Config) WithTimeout(timeout time.Duration) *Config { + c.Timeout = timeout + return c +} + +func (c *Config) WithHttpTransport(httpTransport *http.Transport) *Config { + c.HttpTransport = httpTransport + return c +} + +func (c *Config) WithEnableAsync(isEnableAsync bool) *Config { + c.EnableAsync = isEnableAsync + return c +} + +func (c *Config) WithMaxTaskQueueSize(maxTaskQueueSize int) *Config { + c.MaxTaskQueueSize = maxTaskQueueSize + return c +} + +func (c *Config) WithGoRoutinePoolSize(goRoutinePoolSize int) *Config { + c.GoRoutinePoolSize = goRoutinePoolSize + return c +} + +func (c *Config) WithScheme(scheme string) *Config { + c.Scheme = scheme + return c +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/config_test.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/config_test.go new file mode 100644 index 000000000..b613821e3 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/config_test.go @@ -0,0 +1,52 @@ +package sdk + +import ( + "net/http" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func Test_Config(t *testing.T) { + config := NewConfig() + assert.NotNil(t, config, "NewConfig failed") + assert.Equal(t, true, config.AutoRetry, "Default AutoRetry should be true") + assert.Equal(t, 3, config.MaxRetryTime, "Default MaxRetryTime should be 3") + assert.Equal(t, "", config.UserAgent, "Default UserAgent should be empty") + assert.Equal(t, false, config.Debug, "Default AutoRetry should be false") + assert.Equal(t, time.Duration(10000000000), config.Timeout, "Default Timeout should be 10000000000") + assert.Equal(t, (*http.Transport)(nil), config.HttpTransport, "Default HttpTransport should be nil") + assert.Equal(t, false, config.EnableAsync, "Default EnableAsync should be false") + assert.Equal(t, 1000, config.MaxTaskQueueSize, "Default MaxTaskQueueSize should be 1000") + assert.Equal(t, 5, config.GoRoutinePoolSize, "Default GoRoutinePoolSize should be 5") + assert.Equal(t, "HTTP", config.Scheme, "Default Scheme should be HTTP") + + transport := &http.Transport{ + MaxIdleConns: 10, + IdleConnTimeout: 30 * time.Second, + DisableCompression: true, + } + config. + WithAutoRetry(false). + WithMaxRetryTime(0). + WithUserAgent("new user agent"). + WithDebug(true). + WithTimeout(time.Duration(500000)). + WithHttpTransport(transport). + WithEnableAsync(true). + WithMaxTaskQueueSize(1). + WithGoRoutinePoolSize(10). + WithScheme("HTTPS") + + assert.Equal(t, 0, config.MaxRetryTime) + assert.Equal(t, false, config.AutoRetry) + assert.Equal(t, "new user agent", config.UserAgent) + assert.Equal(t, true, config.Debug) + assert.Equal(t, time.Duration(500000), config.Timeout) + assert.Equal(t, transport, config.HttpTransport) + assert.Equal(t, true, config.EnableAsync) + assert.Equal(t, 1, config.MaxTaskQueueSize) + assert.Equal(t, 10, config.GoRoutinePoolSize) + assert.Equal(t, "HTTPS", config.Scheme) +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/endpoints_config.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/endpoints_config.go new file mode 100644 index 000000000..6c0e49870 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/endpoints_config.go @@ -0,0 +1,505 @@ +package endpoints + +import ( + "encoding/json" + "fmt" + "sync" +) + +const endpointsJson = "{" + + " \"products\":[" + + " {" + + " \"code\": \"aegis\"," + + " \"document_id\": \"28449\"," + + " \"location_service_code\": \"vipaegis\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"aegis.cn-hangzhou.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"alidns\"," + + " \"document_id\": \"29739\"," + + " \"location_service_code\": \"alidns\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"alidns.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"arms\"," + + " \"document_id\": \"42924\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": [ {" + + " \"region\": \"ap-southeast-1\"," + + " \"endpoint\": \"arms.ap-southeast-1.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-beijing\"," + + " \"endpoint\": \"arms.cn-beijing.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-hangzhou\"," + + " \"endpoint\": \"arms.cn-hangzhou.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-hongkong\"," + + " \"endpoint\": \"arms.cn-hongkong.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-qingdao\"," + + " \"endpoint\": \"arms.cn-qingdao.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-shanghai\"," + + " \"endpoint\": \"arms.cn-shanghai.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-shenzhen\"," + + " \"endpoint\": \"arms.cn-shenzhen.aliyuncs.com\"" + + " }]," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"arms.[RegionId].aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"batchcompute\"," + + " \"document_id\": \"44717\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": [ {" + + " \"region\": \"ap-southeast-1\"," + + " \"endpoint\": \"batchcompute.ap-southeast-1.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-beijing\"," + + " \"endpoint\": \"batchcompute.cn-beijing.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-hangzhou\"," + + " \"endpoint\": \"batchcompute.cn-hangzhou.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-huhehaote\"," + + " \"endpoint\": \"batchcompute.cn-huhehaote.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-qingdao\"," + + " \"endpoint\": \"batchcompute.cn-qingdao.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-shanghai\"," + + " \"endpoint\": \"batchcompute.cn-shanghai.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-shenzhen\"," + + " \"endpoint\": \"batchcompute.cn-shenzhen.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-zhangjiakou\"," + + " \"endpoint\": \"batchcompute.cn-zhangjiakou.aliyuncs.com\"" + + " }, {" + + " \"region\": \"us-west-1\"," + + " \"endpoint\": \"batchcompute.us-west-1.aliyuncs.com\"" + + " }]," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"batchcompute.[RegionId].aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"ccc\"," + + " \"document_id\": \"63027\"," + + " \"location_service_code\": \"ccc\"," + + " \"regional_endpoints\": [ {" + + " \"region\": \"cn-hangzhou\"," + + " \"endpoint\": \"ccc.cn-hangzhou.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-shanghai\"," + + " \"endpoint\": \"ccc.cn-shanghai.aliyuncs.com\"" + + " }]," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"ccc.[RegionId].aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"cdn\"," + + " \"document_id\": \"27148\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"cdn.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"cds\"," + + " \"document_id\": \"62887\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"cds.cn-beijing.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"chatbot\"," + + " \"document_id\": \"60760\"," + + " \"location_service_code\": \"beebot\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"chatbot.[RegionId].aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"cloudapi\"," + + " \"document_id\": \"43590\"," + + " \"location_service_code\": \"apigateway\"," + + " \"regional_endpoints\": [ {" + + " \"region\": \"ap-northeast-1\"," + + " \"endpoint\": \"apigateway.ap-northeast-1.aliyuncs.com\"" + + " }, {" + + " \"region\": \"us-west-1\"," + + " \"endpoint\": \"apigateway.us-west-1.aliyuncs.com\"" + + " }]," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"apigateway.[RegionId].aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"cloudauth\"," + + " \"document_id\": \"60687\"," + + " \"location_service_code\": \"cloudauth\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"cloudauth.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"cloudphoto\"," + + " \"document_id\": \"59902\"," + + " \"location_service_code\": \"cloudphoto\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"cloudphoto.[RegionId].aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"cloudwf\"," + + " \"document_id\": \"58111\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"cloudwf.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"cms\"," + + " \"document_id\": \"28615\"," + + " \"location_service_code\": \"cms\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"cr\"," + + " \"document_id\": \"60716\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"cr.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"cs\"," + + " \"document_id\": \"26043\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"cs.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"csb\"," + + " \"document_id\": \"64837\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": [ {" + + " \"region\": \"cn-beijing\"," + + " \"endpoint\": \"csb.cn-beijing.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-hangzhou\"," + + " \"endpoint\": \"csb.cn-hangzhou.aliyuncs.com\"" + + " }]," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"csb.[RegionId].aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"dds\"," + + " \"document_id\": \"61715\"," + + " \"location_service_code\": \"dds\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"mongodb.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"mongodb.[RegionId].aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"dm\"," + + " \"document_id\": \"29434\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": [ {" + + " \"region\": \"ap-southeast-1\"," + + " \"endpoint\": \"dm.aliyuncs.com\"" + + " }, {" + + " \"region\": \"ap-southeast-2\"," + + " \"endpoint\": \"dm.ap-southeast-2.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-beijing\"," + + " \"endpoint\": \"dm.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-hangzhou\"," + + " \"endpoint\": \"dm.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-hongkong\"," + + " \"endpoint\": \"dm.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-qingdao\"," + + " \"endpoint\": \"dm.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-shanghai\"," + + " \"endpoint\": \"dm.aliyuncs.com\"" + + " }, {" + + " \"region\": \"cn-shenzhen\"," + + " \"endpoint\": \"dm.aliyuncs.com\"" + + " }, {" + + " \"region\": \"us-east-1\"," + + " \"endpoint\": \"dm.aliyuncs.com\"" + + " }, {" + + " \"region\": \"us-west-1\"," + + " \"endpoint\": \"dm.aliyuncs.com\"" + + " }]," + + " \"global_endpoint\": \"dm.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"dm.[RegionId].aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"domain\"," + + " \"document_id\": \"42875\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"domain.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"domain.aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"domain-intl\"," + + " \"document_id\": \"\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"domain-intl.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"domain-intl.aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"drds\"," + + " \"document_id\": \"51111\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"drds.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"drds.aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"ecs\"," + + " \"document_id\": \"25484\"," + + " \"location_service_code\": \"ecs\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"emr\"," + + " \"document_id\": \"28140\"," + + " \"location_service_code\": \"emr\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"emr.[RegionId].aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"ess\"," + + " \"document_id\": \"25925\"," + + " \"location_service_code\": \"ess\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"ess.[RegionId].aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"green\"," + + " \"document_id\": \"28427\"," + + " \"location_service_code\": \"green\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"green.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"hpc\"," + + " \"document_id\": \"35201\"," + + " \"location_service_code\": \"hpc\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"hpc.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"httpdns\"," + + " \"document_id\": \"52679\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"httpdns-api.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"iot\"," + + " \"document_id\": \"30557\"," + + " \"location_service_code\": \"iot\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"iot.[RegionId].aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"itaas\"," + + " \"document_id\": \"55759\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"itaas.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"jaq\"," + + " \"document_id\": \"35037\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"jaq.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"live\"," + + " \"document_id\": \"48207\"," + + " \"location_service_code\": \"live\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"live.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"mts\"," + + " \"document_id\": \"29212\"," + + " \"location_service_code\": \"mts\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"nas\"," + + " \"document_id\": \"62598\"," + + " \"location_service_code\": \"nas\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"ons\"," + + " \"document_id\": \"44416\"," + + " \"location_service_code\": \"ons\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"polardb\"," + + " \"document_id\": \"58764\"," + + " \"location_service_code\": \"polardb\"," + + " \"regional_endpoints\": [ {" + + " \"region\": \"ap-south-1\"," + + " \"endpoint\": \"polardb.ap-south-1.aliyuncs.com\"" + + " }, {" + + " \"region\": \"ap-southeast-5\"," + + " \"endpoint\": \"polardb.ap-southeast-5.aliyuncs.com\"" + + " }]," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"polardb.aliyuncs.com\"" + + " }," + + " {" + + " \"code\": \"push\"," + + " \"document_id\": \"30074\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"cloudpush.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"qualitycheck\"," + + " \"document_id\": \"50807\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": [ {" + + " \"region\": \"cn-hangzhou\"," + + " \"endpoint\": \"qualitycheck.cn-hangzhou.aliyuncs.com\"" + + " }]," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"r-kvstore\"," + + " \"document_id\": \"60831\"," + + " \"location_service_code\": \"redisa\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"ram\"," + + " \"document_id\": \"28672\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"ram.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"rds\"," + + " \"document_id\": \"26223\"," + + " \"location_service_code\": \"rds\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"ros\"," + + " \"document_id\": \"28899\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"ros.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"sas-api\"," + + " \"document_id\": \"28498\"," + + " \"location_service_code\": \"sas\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"slb\"," + + " \"document_id\": \"27565\"," + + " \"location_service_code\": \"slb\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"sts\"," + + " \"document_id\": \"28756\"," + + " \"location_service_code\": \"\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"sts.aliyuncs.com\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"vod\"," + + " \"document_id\": \"60574\"," + + " \"location_service_code\": \"vod\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"vpc\"," + + " \"document_id\": \"34962\"," + + " \"location_service_code\": \"vpc\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }," + + " {" + + " \"code\": \"waf\"," + + " \"document_id\": \"62847\"," + + " \"location_service_code\": \"waf\"," + + " \"regional_endpoints\": []," + + " \"global_endpoint\": \"\"," + + " \"regional_endpoint_pattern\": \"\"" + + " }]" + + "}" + +var initOnce sync.Once +var data interface{} + +func getEndpointConfigData() interface{} { + initOnce.Do(func() { + err := json.Unmarshal([]byte(endpointsJson), &data) + if err != nil { + panic(fmt.Sprintf("init endpoint config data failed. %s", err)) + } + }) + return data +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/local_global_resolver.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/local_global_resolver.go new file mode 100644 index 000000000..160e62cb6 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/local_global_resolver.go @@ -0,0 +1,43 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package endpoints + +import ( + "fmt" + "strings" + + "github.com/jmespath/go-jmespath" +) + +type LocalGlobalResolver struct { +} + +func (resolver *LocalGlobalResolver) GetName() (name string) { + name = "local global resolver" + return +} + +func (resolver *LocalGlobalResolver) TryResolve(param *ResolveParam) (endpoint string, support bool, err error) { + // get the global endpoints configs + endpointExpression := fmt.Sprintf("products[?code=='%s'].global_endpoint", strings.ToLower(param.Product)) + endpointData, err := jmespath.Search(endpointExpression, getEndpointConfigData()) + if err == nil && endpointData != nil && len(endpointData.([]interface{})) > 0 { + endpoint = endpointData.([]interface{})[0].(string) + support = len(endpoint) > 0 + return + } + support = false + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/local_regional_resolver.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/local_regional_resolver.go new file mode 100644 index 000000000..7fee64d42 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/local_regional_resolver.go @@ -0,0 +1,48 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package endpoints + +import ( + "fmt" + "strings" + + "github.com/jmespath/go-jmespath" +) + +type LocalRegionalResolver struct { +} + +func (resolver *LocalRegionalResolver) GetName() (name string) { + name = "local regional resolver" + return +} + +func (resolver *LocalRegionalResolver) TryResolve(param *ResolveParam) (endpoint string, support bool, err error) { + // get the regional endpoints configs + regionalExpression := fmt.Sprintf("products[?code=='%s'].regional_endpoints", strings.ToLower(param.Product)) + regionalData, err := jmespath.Search(regionalExpression, getEndpointConfigData()) + if err == nil && regionalData != nil && len(regionalData.([]interface{})) > 0 { + endpointExpression := fmt.Sprintf("[0][?region=='%s'].endpoint", strings.ToLower(param.RegionId)) + var endpointData interface{} + endpointData, err = jmespath.Search(endpointExpression, regionalData) + if err == nil && endpointData != nil && len(endpointData.([]interface{})) > 0 { + endpoint = endpointData.([]interface{})[0].(string) + support = len(endpoint) > 0 + return + } + } + support = false + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/location_resolver.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/location_resolver.go new file mode 100644 index 000000000..cc354cc4d --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/location_resolver.go @@ -0,0 +1,176 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package endpoints + +import ( + "encoding/json" + "sync" + "time" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" +) + +const ( + // EndpointCacheExpireTime ... + EndpointCacheExpireTime = 3600 //Seconds +) + +// Cache caches endpoint for specific product and region +type Cache struct { + sync.RWMutex + cache map[string]interface{} +} + +// Get ... +func (c *Cache) Get(k string) (v interface{}) { + c.RLock() + v = c.cache[k] + c.RUnlock() + return +} + +// Set ... +func (c *Cache) Set(k string, v interface{}) { + c.Lock() + c.cache[k] = v + c.Unlock() +} + +var lastClearTimePerProduct = &Cache{cache: make(map[string]interface{})} +var endpointCache = &Cache{cache: make(map[string]interface{})} + +// LocationResolver ... +type LocationResolver struct { +} + +func (resolver *LocationResolver) GetName() (name string) { + name = "location resolver" + return +} + +// TryResolve resolves endpoint giving product and region +func (resolver *LocationResolver) TryResolve(param *ResolveParam) (endpoint string, support bool, err error) { + if len(param.LocationProduct) <= 0 { + support = false + return + } + + //get from cache + cacheKey := param.Product + "#" + param.RegionId + var ok bool + endpoint, ok = endpointCache.Get(cacheKey).(string) + + if ok && len(endpoint) > 0 && !CheckCacheIsExpire(cacheKey) { + support = true + return + } + + //get from remote + getEndpointRequest := requests.NewCommonRequest() + + getEndpointRequest.Product = "Location" + getEndpointRequest.Version = "2015-06-12" + getEndpointRequest.ApiName = "DescribeEndpoints" + getEndpointRequest.Domain = "location-readonly.aliyuncs.com" + getEndpointRequest.Method = "GET" + getEndpointRequest.Scheme = requests.HTTPS + + getEndpointRequest.QueryParams["Id"] = param.RegionId + getEndpointRequest.QueryParams["ServiceCode"] = param.LocationProduct + if len(param.LocationEndpointType) > 0 { + getEndpointRequest.QueryParams["Type"] = param.LocationEndpointType + } else { + getEndpointRequest.QueryParams["Type"] = "openAPI" + } + + response, err := param.CommonApi(getEndpointRequest) + if err != nil { + support = false + return + } + + if !response.IsSuccess() { + support = false + return + } + + var getEndpointResponse GetEndpointResponse + err = json.Unmarshal([]byte(response.GetHttpContentString()), &getEndpointResponse) + if err != nil { + support = false + return + } + + if !getEndpointResponse.Success || getEndpointResponse.Endpoints == nil { + support = false + return + } + if len(getEndpointResponse.Endpoints.Endpoint) <= 0 { + support = false + return + } + if len(getEndpointResponse.Endpoints.Endpoint[0].Endpoint) > 0 { + endpoint = getEndpointResponse.Endpoints.Endpoint[0].Endpoint + endpointCache.Set(cacheKey, endpoint) + lastClearTimePerProduct.Set(cacheKey, time.Now().Unix()) + support = true + return + } + + support = false + return +} + +// CheckCacheIsExpire ... +func CheckCacheIsExpire(cacheKey string) bool { + lastClearTime, ok := lastClearTimePerProduct.Get(cacheKey).(int64) + if !ok { + return true + } + + if lastClearTime <= 0 { + lastClearTime = time.Now().Unix() + lastClearTimePerProduct.Set(cacheKey, lastClearTime) + } + + now := time.Now().Unix() + elapsedTime := now - lastClearTime + if elapsedTime > EndpointCacheExpireTime { + return true + } + + return false +} + +// GetEndpointResponse ... +type GetEndpointResponse struct { + Endpoints *EndpointsObj + RequestId string + Success bool +} + +// EndpointsObj ... +type EndpointsObj struct { + Endpoint []EndpointObj +} + +// EndpointObj ... +type EndpointObj struct { + // Protocols map[string]string + Type string + Namespace string + Id string + SerivceCode string + Endpoint string +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/mapping_resolver.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/mapping_resolver.go new file mode 100644 index 000000000..e39f53367 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/mapping_resolver.go @@ -0,0 +1,48 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package endpoints + +import ( + "fmt" + "strings" +) + +const keyFormatter = "%s::%s" + +var endpointMapping = make(map[string]string) + +// AddEndpointMapping Use product id and region id as key to store the endpoint into inner map +func AddEndpointMapping(regionId, productId, endpoint string) (err error) { + key := fmt.Sprintf(keyFormatter, strings.ToLower(regionId), strings.ToLower(productId)) + endpointMapping[key] = endpoint + return nil +} + +// MappingResolver the mapping resolver type +type MappingResolver struct { +} + +// GetName get the resolver name: "mapping resolver" +func (resolver *MappingResolver) GetName() (name string) { + name = "mapping resolver" + return +} + +// TryResolve use Product and RegionId as key to find endpoint from inner map +func (resolver *MappingResolver) TryResolve(param *ResolveParam) (endpoint string, support bool, err error) { + key := fmt.Sprintf(keyFormatter, strings.ToLower(param.RegionId), strings.ToLower(param.Product)) + endpoint, contains := endpointMapping[key] + return endpoint, contains, nil +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/resolver.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/resolver.go new file mode 100644 index 000000000..5e1e30530 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/resolver.go @@ -0,0 +1,98 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package endpoints + +import ( + "encoding/json" + "fmt" + "sync" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils" +) + +var debug utils.Debug + +func init() { + debug = utils.Init("sdk") +} + +const ( + ResolveEndpointUserGuideLink = "" +) + +var once sync.Once +var resolvers []Resolver + +type Resolver interface { + TryResolve(param *ResolveParam) (endpoint string, support bool, err error) + GetName() (name string) +} + +// Resolve resolve endpoint with params +// It will resolve with each supported resolver until anyone resolved +func Resolve(param *ResolveParam) (endpoint string, err error) { + supportedResolvers := getAllResolvers() + var lastErr error + for _, resolver := range supportedResolvers { + endpoint, supported, resolveErr := resolver.TryResolve(param) + if resolveErr != nil { + lastErr = resolveErr + } + + if supported { + debug("resolve endpoint with %s\n", param) + debug("\t%s by resolver(%s)\n", endpoint, resolver.GetName()) + return endpoint, nil + } + } + + // not support + errorMsg := fmt.Sprintf(errors.CanNotResolveEndpointErrorMessage, param, ResolveEndpointUserGuideLink) + err = errors.NewClientError(errors.CanNotResolveEndpointErrorCode, errorMsg, lastErr) + return +} + +func getAllResolvers() []Resolver { + once.Do(func() { + resolvers = []Resolver{ + &SimpleHostResolver{}, + &MappingResolver{}, + &LocationResolver{}, + &LocalRegionalResolver{}, + &LocalGlobalResolver{}, + } + }) + return resolvers +} + +type ResolveParam struct { + Domain string + Product string + RegionId string + LocationProduct string + LocationEndpointType string + CommonApi func(request *requests.CommonRequest) (response *responses.CommonResponse, err error) `json:"-"` +} + +func (param *ResolveParam) String() string { + jsonBytes, err := json.Marshal(param) + if err != nil { + return fmt.Sprint("ResolveParam.String() process error:", err) + } + return string(jsonBytes) +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/simple_host_resolver.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/simple_host_resolver.go new file mode 100644 index 000000000..9ba2346c6 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints/simple_host_resolver.go @@ -0,0 +1,33 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package endpoints + +// SimpleHostResolver the simple host resolver type +type SimpleHostResolver struct { +} + +// GetName get the resolver name: "simple host resolver" +func (resolver *SimpleHostResolver) GetName() (name string) { + name = "simple host resolver" + return +} + +// TryResolve if the Domain exist in param, use it as endpoint +func (resolver *SimpleHostResolver) TryResolve(param *ResolveParam) (endpoint string, support bool, err error) { + if support = len(param.Domain) > 0; support { + endpoint = param.Domain + } + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/client_error.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/client_error.go new file mode 100644 index 000000000..1e2d9c004 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/client_error.go @@ -0,0 +1,92 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package errors + +import "fmt" + +const ( + DefaultClientErrorStatus = 400 + DefaultClientErrorCode = "SDK.ClientError" + + UnsupportedCredentialErrorCode = "SDK.UnsupportedCredential" + UnsupportedCredentialErrorMessage = "Specified credential (type = %s) is not supported, please check" + + CanNotResolveEndpointErrorCode = "SDK.CanNotResolveEndpoint" + CanNotResolveEndpointErrorMessage = "Can not resolve endpoint(param = %s), please check your accessKey with secret, and read the user guide\n %s" + + UnsupportedParamPositionErrorCode = "SDK.UnsupportedParamPosition" + UnsupportedParamPositionErrorMessage = "Specified param position (%s) is not supported, please upgrade sdk and retry" + + AsyncFunctionNotEnabledCode = "SDK.AsyncFunctionNotEnabled" + AsyncFunctionNotEnabledMessage = "Async function is not enabled in client, please invoke 'client.EnableAsync' function" + + UnknownRequestTypeErrorCode = "SDK.UnknownRequestType" + UnknownRequestTypeErrorMessage = "Unknown Request Type: %s" + + MissingParamErrorCode = "SDK.MissingParam" + InvalidParamErrorCode = "SDK.InvalidParam" + + JsonUnmarshalErrorCode = "SDK.JsonUnmarshalError" + JsonUnmarshalErrorMessage = "Failed to unmarshal response, but you can get the data via response.GetHttpStatusCode() and response.GetHttpContentString()" + + TimeoutErrorCode = "SDK.TimeoutError" + TimeoutErrorMessage = "The request timed out %s times(%s for retry), perhaps we should have the threshold raised a little?" +) + +type ClientError struct { + errorCode string + message string + originError error +} + +func NewClientError(errorCode, message string, originErr error) Error { + return &ClientError{ + errorCode: errorCode, + message: message, + originError: originErr, + } +} + +func (err *ClientError) Error() string { + clientErrMsg := fmt.Sprintf("[%s] %s", err.ErrorCode(), err.message) + if err.originError != nil { + return clientErrMsg + "\ncaused by:\n" + err.originError.Error() + } + return clientErrMsg +} + +func (err *ClientError) OriginError() error { + return err.originError +} + +func (*ClientError) HttpStatus() int { + return DefaultClientErrorStatus +} + +func (err *ClientError) ErrorCode() string { + if err.errorCode == "" { + return DefaultClientErrorCode + } else { + return err.errorCode + } +} + +func (err *ClientError) Message() string { + return err.message +} + +func (err *ClientError) String() string { + return err.Error() +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/error.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/error.go new file mode 100644 index 000000000..49962f3b5 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/error.go @@ -0,0 +1,23 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package errors + +type Error interface { + error + HttpStatus() int + ErrorCode() string + Message() string + OriginError() error +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/server_error.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/server_error.go new file mode 100644 index 000000000..1b7810414 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/server_error.go @@ -0,0 +1,123 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package errors + +import ( + "encoding/json" + "fmt" + + "github.com/jmespath/go-jmespath" +) + +var wrapperList = []ServerErrorWrapper{ + &SignatureDostNotMatchWrapper{}, +} + +type ServerError struct { + httpStatus int + requestId string + hostId string + errorCode string + recommend string + message string + comment string +} + +type ServerErrorWrapper interface { + tryWrap(error *ServerError, wrapInfo map[string]string) bool +} + +func (err *ServerError) Error() string { + return fmt.Sprintf("SDK.ServerError\nErrorCode: %s\nRecommend: %s\nRequestId: %s\nMessage: %s", + err.errorCode, err.comment+err.recommend, err.requestId, err.message) +} + +func NewServerError(httpStatus int, responseContent, comment string) Error { + result := &ServerError{ + httpStatus: httpStatus, + message: responseContent, + comment: comment, + } + + var data interface{} + err := json.Unmarshal([]byte(responseContent), &data) + if err == nil { + requestId, _ := jmespath.Search("RequestId", data) + hostId, _ := jmespath.Search("HostId", data) + errorCode, _ := jmespath.Search("Code", data) + recommend, _ := jmespath.Search("Recommend", data) + message, _ := jmespath.Search("Message", data) + + if requestId != nil { + result.requestId = requestId.(string) + } + if hostId != nil { + result.hostId = hostId.(string) + } + if errorCode != nil { + result.errorCode = errorCode.(string) + } + if recommend != nil { + result.recommend = recommend.(string) + } + if message != nil { + result.message = message.(string) + } + } + + return result +} + +func WrapServerError(originError *ServerError, wrapInfo map[string]string) *ServerError { + for _, wrapper := range wrapperList { + ok := wrapper.tryWrap(originError, wrapInfo) + if ok { + return originError + } + } + return originError +} + +func (err *ServerError) HttpStatus() int { + return err.httpStatus +} + +func (err *ServerError) ErrorCode() string { + return err.errorCode +} + +func (err *ServerError) Message() string { + return err.message +} + +func (err *ServerError) OriginError() error { + return nil +} + +func (err *ServerError) HostId() string { + return err.hostId +} + +func (err *ServerError) RequestId() string { + return err.requestId +} + +func (err *ServerError) Recommend() string { + return err.recommend +} + +func (err *ServerError) Comment() string { + return err.comment +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/signature_does_not_match_wrapper.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/signature_does_not_match_wrapper.go new file mode 100644 index 000000000..c2f19e245 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors/signature_does_not_match_wrapper.go @@ -0,0 +1,43 @@ +package errors + +import ( + "strings" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils" +) + +const SignatureDostNotMatchErrorCode = "SignatureDoesNotMatch" +const MessagePrefix = "Specified signature is not matched with our calculation. server string to sign is:" + +var debug utils.Debug + +func init() { + debug = utils.Init("sdk") +} + +type SignatureDostNotMatchWrapper struct { +} + +func (*SignatureDostNotMatchWrapper) tryWrap(error *ServerError, wrapInfo map[string]string) (ok bool) { + clientStringToSign := wrapInfo["StringToSign"] + if error.errorCode == SignatureDostNotMatchErrorCode && clientStringToSign != "" { + message := error.message + if strings.HasPrefix(message, MessagePrefix) { + serverStringToSign := message[len(MessagePrefix):] + + if clientStringToSign == serverStringToSign { + // user secret is error + error.recommend = "Please check you AccessKeySecret" + } else { + debug("Client StringToSign: %s", clientStringToSign) + debug("Server StringToSign: %s", serverStringToSign) + error.recommend = "This may be a bug with the SDK and we hope you can submit this question in the " + + "github issue(https://github.com/aliyun/alibaba-cloud-sdk-go/issues), thanks very much" + } + } + ok = true + return + } + ok = false + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/acs_request.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/acs_request.go new file mode 100644 index 000000000..54aa3c962 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/acs_request.go @@ -0,0 +1,334 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package requests + +import ( + "fmt" + "io" + "reflect" + "strconv" + "strings" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors" +) + +const ( + RPC = "RPC" + ROA = "ROA" + + HTTP = "HTTP" + HTTPS = "HTTPS" + + DefaultHttpPort = "80" + + GET = "GET" + PUT = "PUT" + POST = "POST" + DELETE = "DELETE" + HEAD = "HEAD" + OPTIONS = "OPTIONS" + + Json = "application/json" + Xml = "application/xml" + Raw = "application/octet-stream" + Form = "application/x-www-form-urlencoded" + + Header = "Header" + Query = "Query" + Body = "Body" + Path = "Path" + + HeaderSeparator = "\n" +) + +// interface +type AcsRequest interface { + GetScheme() string + GetMethod() string + GetDomain() string + GetPort() string + GetRegionId() string + GetHeaders() map[string]string + GetQueryParams() map[string]string + GetFormParams() map[string]string + GetContent() []byte + GetBodyReader() io.Reader + GetStyle() string + GetProduct() string + GetVersion() string + GetActionName() string + GetAcceptFormat() string + GetLocationServiceCode() string + GetLocationEndpointType() string + + GetUserAgent() map[string]string + + SetStringToSign(stringToSign string) + GetStringToSign() string + + SetDomain(domain string) + SetContent(content []byte) + SetScheme(scheme string) + BuildUrl() string + BuildQueries() string + + addHeaderParam(key, value string) + addQueryParam(key, value string) + addFormParam(key, value string) + addPathParam(key, value string) +} + +// base class +type baseRequest struct { + Scheme string + Method string + Domain string + Port string + RegionId string + + userAgent map[string]string + product string + version string + + actionName string + + AcceptFormat string + + QueryParams map[string]string + Headers map[string]string + FormParams map[string]string + Content []byte + + locationServiceCode string + locationEndpointType string + + queries string + + stringToSign string +} + +func (request *baseRequest) GetQueryParams() map[string]string { + return request.QueryParams +} + +func (request *baseRequest) GetFormParams() map[string]string { + return request.FormParams +} + +func (request *baseRequest) GetContent() []byte { + return request.Content +} + +func (request *baseRequest) GetVersion() string { + return request.version +} + +func (request *baseRequest) GetActionName() string { + return request.actionName +} + +func (request *baseRequest) SetContent(content []byte) { + request.Content = content +} + +func (request *baseRequest) GetUserAgent() map[string]string { + return request.userAgent +} + +func (request *baseRequest) AppendUserAgent(key, value string) { + newkey := true + if request.userAgent == nil { + request.userAgent = make(map[string]string) + } + if strings.ToLower(key) != "core" && strings.ToLower(key) != "go" { + for tag, _ := range request.userAgent { + if tag == key { + request.userAgent[tag] = value + newkey = false + } + } + if newkey { + request.userAgent[key] = value + } + } +} + +func (request *baseRequest) addHeaderParam(key, value string) { + request.Headers[key] = value +} + +func (request *baseRequest) addQueryParam(key, value string) { + request.QueryParams[key] = value +} + +func (request *baseRequest) addFormParam(key, value string) { + request.FormParams[key] = value +} + +func (request *baseRequest) GetAcceptFormat() string { + return request.AcceptFormat +} + +func (request *baseRequest) GetLocationServiceCode() string { + return request.locationServiceCode +} + +func (request *baseRequest) GetLocationEndpointType() string { + return request.locationEndpointType +} + +func (request *baseRequest) GetProduct() string { + return request.product +} + +func (request *baseRequest) GetScheme() string { + return request.Scheme +} + +func (request *baseRequest) SetScheme(scheme string) { + request.Scheme = scheme +} + +func (request *baseRequest) GetMethod() string { + return request.Method +} + +func (request *baseRequest) GetDomain() string { + return request.Domain +} + +func (request *baseRequest) SetDomain(host string) { + request.Domain = host +} + +func (request *baseRequest) GetPort() string { + return request.Port +} + +func (request *baseRequest) GetRegionId() string { + return request.RegionId +} + +func (request *baseRequest) GetHeaders() map[string]string { + return request.Headers +} + +func (request *baseRequest) SetContentType(contentType string) { + request.addHeaderParam("Content-Type", contentType) +} + +func (request *baseRequest) GetContentType() (contentType string, contains bool) { + contentType, contains = request.Headers["Content-Type"] + return +} + +func (request *baseRequest) SetStringToSign(stringToSign string) { + request.stringToSign = stringToSign +} + +func (request *baseRequest) GetStringToSign() string { + return request.stringToSign +} + +func defaultBaseRequest() (request *baseRequest) { + request = &baseRequest{ + Scheme: "", + AcceptFormat: "JSON", + Method: GET, + QueryParams: make(map[string]string), + Headers: map[string]string{ + "x-sdk-client": "golang/1.0.0", + "x-sdk-invoke-type": "normal", + "Accept-Encoding": "identity", + }, + FormParams: make(map[string]string), + } + return +} + +func InitParams(request AcsRequest) (err error) { + requestValue := reflect.ValueOf(request).Elem() + err = flatRepeatedList(requestValue, request, "", "") + return +} + +func flatRepeatedList(dataValue reflect.Value, request AcsRequest, position, prefix string) (err error) { + dataType := dataValue.Type() + for i := 0; i < dataType.NumField(); i++ { + field := dataType.Field(i) + name, containsNameTag := field.Tag.Lookup("name") + fieldPosition := position + if fieldPosition == "" { + fieldPosition, _ = field.Tag.Lookup("position") + } + typeTag, containsTypeTag := field.Tag.Lookup("type") + if containsNameTag { + if !containsTypeTag { + // simple param + key := prefix + name + value := dataValue.Field(i).String() + err = addParam(request, fieldPosition, key, value) + if err != nil { + return + } + } else if typeTag == "Repeated" { + // repeated param + repeatedFieldValue := dataValue.Field(i) + if repeatedFieldValue.Kind() != reflect.Slice { + // possible value: {"[]string", "*[]struct"}, we must call Elem() in the last condition + repeatedFieldValue = repeatedFieldValue.Elem() + } + if repeatedFieldValue.IsValid() && !repeatedFieldValue.IsNil() { + for m := 0; m < repeatedFieldValue.Len(); m++ { + elementValue := repeatedFieldValue.Index(m) + key := prefix + name + "." + strconv.Itoa(m+1) + if elementValue.Type().String() == "string" { + value := elementValue.String() + err = addParam(request, fieldPosition, key, value) + if err != nil { + return + } + } else { + err = flatRepeatedList(elementValue, request, fieldPosition, key+".") + if err != nil { + return + } + } + } + } + } + } + } + return +} + +func addParam(request AcsRequest, position, name, value string) (err error) { + if len(value) > 0 { + switch position { + case Header: + request.addHeaderParam(name, value) + case Query: + request.addQueryParam(name, value) + case Path: + request.addPathParam(name, value) + case Body: + request.addFormParam(name, value) + default: + errMsg := fmt.Sprintf(errors.UnsupportedParamPositionErrorMessage, position) + err = errors.NewClientError(errors.UnsupportedParamPositionErrorCode, errMsg, nil) + } + } + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/acs_request_test.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/acs_request_test.go new file mode 100644 index 000000000..aeb9b8672 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/acs_request_test.go @@ -0,0 +1,148 @@ +package requests + +import ( + "bytes" + "io" + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_AcsRequest(t *testing.T) { + r := defaultBaseRequest() + assert.NotNil(t, r) + + // query params + query := r.GetQueryParams() + assert.Equal(t, 0, len(query)) + r.addQueryParam("key", "value") + assert.Equal(t, 1, len(query)) + assert.Equal(t, "value", query["key"]) + + // form params + form := r.GetFormParams() + assert.Equal(t, 0, len(form)) + r.addFormParam("key", "value") + assert.Equal(t, 1, len(form)) + assert.Equal(t, "value", form["key"]) + + // getter/setter for stringtosign + assert.Equal(t, "", r.GetStringToSign()) + r.SetStringToSign("s2s") + assert.Equal(t, "s2s", r.GetStringToSign()) + + // content type + _, contains := r.GetContentType() + assert.False(t, contains) + r.SetContentType("application/json") + ct, contains := r.GetContentType() + assert.Equal(t, "application/json", ct) + assert.True(t, contains) + + // default 3 headers & content-type + headers := r.GetHeaders() + assert.Equal(t, 4, len(headers)) + r.addHeaderParam("x-key", "x-key-value") + assert.Equal(t, 5, len(headers)) + assert.Equal(t, "x-key-value", headers["x-key"]) + + // GetVersion + assert.Equal(t, "", r.GetVersion()) + // GetActionName + assert.Equal(t, "", r.GetActionName()) + + // GetMethod + assert.Equal(t, "GET", r.GetMethod()) + r.Method = "POST" + assert.Equal(t, "POST", r.GetMethod()) + + // Domain + assert.Equal(t, "", r.GetDomain()) + r.SetDomain("ecs.aliyuncs.com") + assert.Equal(t, "ecs.aliyuncs.com", r.GetDomain()) + + // Region + assert.Equal(t, "", r.GetRegionId()) + r.RegionId = "cn-hangzhou" + assert.Equal(t, "cn-hangzhou", r.GetRegionId()) + + // AcceptFormat + assert.Equal(t, "JSON", r.GetAcceptFormat()) + r.AcceptFormat = "XML" + assert.Equal(t, "XML", r.GetAcceptFormat()) + + // GetLocationServiceCode + assert.Equal(t, "", r.GetLocationServiceCode()) + + // GetLocationEndpointType + assert.Equal(t, "", r.GetLocationEndpointType()) + + // GetProduct + assert.Equal(t, "", r.GetProduct()) + + // GetScheme + assert.Equal(t, "", r.GetScheme()) + r.SetScheme("HTTPS") + assert.Equal(t, "HTTPS", r.GetScheme()) + + // GetPort + assert.Equal(t, "", r.GetPort()) + + // GetUserAgent + r.AppendUserAgent("cli", "1.01") + assert.Equal(t, "1.01", r.GetUserAgent()["cli"]) + // Content + assert.Equal(t, []byte(nil), r.GetContent()) + r.SetContent([]byte("The Content")) + assert.True(t, bytes.Equal([]byte("The Content"), r.GetContent())) +} + +type AcsRequestTest struct { + *baseRequest + Ontology AcsRequest + Query string `position:"Query" name:"Query"` + Header string `position:"Header" name:"Header"` + Path string `position:"Path" name:"Path"` + Body string `position:"Body" name:"Body"` + TypeAcs *[]string `position:"type" name:"type" type:"Repeated"` +} + +func (r AcsRequestTest) BuildQueries() string { + return "" +} + +func (r AcsRequestTest) BuildUrl() string { + return "" +} + +func (r AcsRequestTest) GetBodyReader() io.Reader { + return nil +} + +func (r AcsRequestTest) GetStyle() string { + return "" +} + +func (r AcsRequestTest) addPathParam(key, value string) { + return +} + +func Test_AcsRequest_InitParams(t *testing.T) { + r := &AcsRequestTest{ + baseRequest: defaultBaseRequest(), + Query: "query value", + Header: "header value", + Path: "path value", + Body: "body value", + } + tmp := []string{r.Query, r.Header} + r.TypeAcs = &tmp + r.addQueryParam("qkey", "qvalue") + InitParams(r) + + queries := r.GetQueryParams() + assert.Equal(t, "query value", queries["Query"]) + headers := r.GetHeaders() + assert.Equal(t, "header value", headers["Header"]) + // TODO: check the body & path +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/common_request.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/common_request.go new file mode 100644 index 000000000..1fbfee1d7 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/common_request.go @@ -0,0 +1,106 @@ +package requests + +import ( + "bytes" + "fmt" + "io" + "sort" + "strings" +) + +type CommonRequest struct { + *baseRequest + + Version string + ApiName string + Product string + + // roa params + PathPattern string + PathParams map[string]string + + Ontology AcsRequest +} + +func NewCommonRequest() (request *CommonRequest) { + request = &CommonRequest{ + baseRequest: defaultBaseRequest(), + } + request.Headers["x-sdk-invoke-type"] = "common" + request.PathParams = make(map[string]string) + return +} + +func (request *CommonRequest) String() string { + request.TransToAcsRequest() + + resultBuilder := bytes.Buffer{} + + mapOutput := func(m map[string]string) { + if len(m) > 0 { + sortedKeys := make([]string, 0) + for k := range m { + sortedKeys = append(sortedKeys, k) + } + + // sort 'string' key in increasing order + sort.Strings(sortedKeys) + + for _, key := range sortedKeys { + resultBuilder.WriteString(key + ": " + m[key] + "\n") + } + } + } + + // Request Line + resultBuilder.WriteString(fmt.Sprintf("%s %s %s/1.1\n", request.Method, request.BuildQueries(), strings.ToUpper(request.Scheme))) + + // Headers + resultBuilder.WriteString("Host" + ": " + request.Domain + "\n") + mapOutput(request.Headers) + + resultBuilder.WriteString("\n") + // Body + if len(request.Content) > 0 { + resultBuilder.WriteString(string(request.Content) + "\n") + } else { + mapOutput(request.FormParams) + } + + return resultBuilder.String() +} + +func (request *CommonRequest) TransToAcsRequest() { + if len(request.PathPattern) > 0 { + roaRequest := &RoaRequest{} + roaRequest.initWithCommonRequest(request) + request.Ontology = roaRequest + } else { + rpcRequest := &RpcRequest{} + rpcRequest.baseRequest = request.baseRequest + rpcRequest.product = request.Product + rpcRequest.version = request.Version + rpcRequest.actionName = request.ApiName + request.Ontology = rpcRequest + } +} + +func (request *CommonRequest) BuildUrl() string { + return request.Ontology.BuildUrl() +} + +func (request *CommonRequest) BuildQueries() string { + return request.Ontology.BuildQueries() +} + +func (request *CommonRequest) GetBodyReader() io.Reader { + return request.Ontology.GetBodyReader() +} + +func (request *CommonRequest) GetStyle() string { + return request.Ontology.GetStyle() +} + +func (request *CommonRequest) addPathParam(key, value string) { + request.PathParams[key] = value +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/common_request_test.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/common_request_test.go new file mode 100644 index 000000000..7d3a13c78 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/common_request_test.go @@ -0,0 +1,82 @@ +package requests + +import ( + "io/ioutil" + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_NewCommonRequest(t *testing.T) { + r := NewCommonRequest() + assert.NotNil(t, r) + + assert.Equal(t, "common", r.GetHeaders()["x-sdk-invoke-type"]) + assert.Equal(t, 0, len(r.PathParams)) + + r.addPathParam("name", "value") + assert.Equal(t, "value", r.PathParams["name"]) +} + +func Test_CommonRequest_TransToAcsRequest(t *testing.T) { + r := NewCommonRequest() + assert.NotNil(t, r) + r.TransToAcsRequest() + + assert.Equal(t, "RPC", r.GetStyle()) + + r2 := NewCommonRequest() + assert.NotNil(t, r2) + r2.PathPattern = "/users/[user]" + r2.TransToAcsRequest() + + assert.Equal(t, "ROA", r2.GetStyle()) +} + +func Test_CommonRequest_String(t *testing.T) { + r := NewCommonRequest() + assert.NotNil(t, r) + r.SetDomain("domain") + + expected := `GET /? /1.1 +Host: domain +Accept-Encoding: identity +x-sdk-client: golang/1.0.0 +x-sdk-invoke-type: common + +` + assert.Equal(t, expected, r.String()) + + r.SetContent([]byte("content")) + + expected = `GET /? /1.1 +Host: domain +Accept-Encoding: identity +x-sdk-client: golang/1.0.0 +x-sdk-invoke-type: common + +content +` + assert.Equal(t, expected, r.String()) +} + +func Test_CommonRequest_BuildUrl(t *testing.T) { + r := NewCommonRequest() + assert.NotNil(t, r) + r.SetDomain("host") + r.SetScheme("http") + + r.TransToAcsRequest() + + assert.Equal(t, "http://host/?", r.BuildUrl()) + r.Port = "8080" + assert.Equal(t, "http://host:8080/?", r.BuildUrl()) +} + +func Test_CommonRequest_GetBodyReader(t *testing.T) { + r := NewCommonRequest() + r.TransToAcsRequest() + reader := r.GetBodyReader() + b, _ := ioutil.ReadAll(reader) + assert.Equal(t, "", string(b)) +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/roa_request.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/roa_request.go new file mode 100644 index 000000000..d03cbfa31 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/roa_request.go @@ -0,0 +1,152 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package requests + +import ( + "bytes" + "fmt" + "io" + "net/url" + "sort" + "strings" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils" +) + +type RoaRequest struct { + *baseRequest + pathPattern string + PathParams map[string]string +} + +func (*RoaRequest) GetStyle() string { + return ROA +} + +func (request *RoaRequest) GetBodyReader() io.Reader { + if request.FormParams != nil && len(request.FormParams) > 0 { + formString := utils.GetUrlFormedMap(request.FormParams) + return strings.NewReader(formString) + } else if len(request.Content) > 0 { + return bytes.NewReader(request.Content) + } else { + return nil + } +} + +// for sign method, need not url encoded +func (request *RoaRequest) BuildQueries() string { + return request.buildQueries() +} + +func (request *RoaRequest) buildPath() string { + path := request.pathPattern + for key, value := range request.PathParams { + path = strings.Replace(path, "["+key+"]", value, 1) + } + return path +} + +func (request *RoaRequest) buildQueries() string { + // replace path params with value + path := request.buildPath() + queryParams := request.QueryParams + // sort QueryParams by key + var queryKeys []string + for key := range queryParams { + queryKeys = append(queryKeys, key) + } + sort.Strings(queryKeys) + + // append urlBuilder + urlBuilder := bytes.Buffer{} + urlBuilder.WriteString(path) + if len(queryKeys) > 0 { + urlBuilder.WriteString("?") + } + for i := 0; i < len(queryKeys); i++ { + queryKey := queryKeys[i] + urlBuilder.WriteString(queryKey) + if value := queryParams[queryKey]; len(value) > 0 { + urlBuilder.WriteString("=") + urlBuilder.WriteString(value) + } + if i < len(queryKeys)-1 { + urlBuilder.WriteString("&") + } + } + result := urlBuilder.String() + result = popStandardUrlencode(result) + return result +} + +func (request *RoaRequest) buildQueryString() string { + queryParams := request.QueryParams + // sort QueryParams by key + q := url.Values{} + for key, value := range queryParams { + q.Add(key, value) + } + return q.Encode() +} + +func popStandardUrlencode(stringToSign string) (result string) { + result = strings.Replace(stringToSign, "+", "%20", -1) + result = strings.Replace(result, "*", "%2A", -1) + result = strings.Replace(result, "%7E", "~", -1) + return +} + +func (request *RoaRequest) BuildUrl() string { + // for network trans, need url encoded + scheme := strings.ToLower(request.Scheme) + domain := request.Domain + port := request.Port + path := request.buildPath() + url := fmt.Sprintf("%s://%s:%s%s", scheme, domain, port, path) + querystring := request.buildQueryString() + if len(querystring) > 0 { + url = fmt.Sprintf("%s?%s", url, querystring) + } + return url +} + +func (request *RoaRequest) addPathParam(key, value string) { + request.PathParams[key] = value +} + +func (request *RoaRequest) InitWithApiInfo(product, version, action, uriPattern, serviceCode, endpointType string) { + request.baseRequest = defaultBaseRequest() + request.PathParams = make(map[string]string) + request.Headers["x-acs-version"] = version + request.pathPattern = uriPattern + request.locationServiceCode = serviceCode + request.locationEndpointType = endpointType + //request.product = product + //request.version = version + //request.actionName = action +} + +func (request *RoaRequest) initWithCommonRequest(commonRequest *CommonRequest) { + request.baseRequest = commonRequest.baseRequest + request.PathParams = commonRequest.PathParams + //request.product = commonRequest.Product + //request.version = commonRequest.Version + request.Headers["x-acs-version"] = commonRequest.Version + //request.actionName = commonRequest.ApiName + request.pathPattern = commonRequest.PathPattern + request.locationServiceCode = "" + request.locationEndpointType = "" +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/roa_request_test.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/roa_request_test.go new file mode 100644 index 000000000..5ee21f83b --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/roa_request_test.go @@ -0,0 +1,116 @@ +package requests + +import ( + "io/ioutil" + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_RoaRequest(t *testing.T) { + r := &RoaRequest{} + r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType") + assert.NotNil(t, r) + + assert.Equal(t, "GET", r.GetMethod()) + assert.Equal(t, "ROA", r.GetStyle()) + // assert.Equal(t, "version", r.GetVersion()) + // assert.Equal(t, "action", r.GetActionName()) + assert.Equal(t, "serviceCode", r.GetLocationServiceCode()) + assert.Equal(t, "endpointType", r.GetLocationEndpointType()) +} + +func Test_RoaRequest_initWithCommonRequest(t *testing.T) { + r := &RoaRequest{} + common := NewCommonRequest() + r.initWithCommonRequest(common) + assert.NotNil(t, r) + + assert.Equal(t, "GET", r.GetMethod()) + assert.Equal(t, "ROA", r.GetStyle()) + assert.Equal(t, "common", r.Headers["x-sdk-invoke-type"]) + // assert.Equal(t, "version", r.GetVersion()) + // assert.Equal(t, "action", r.GetActionName()) +} + +func Test_RoaRequest_BuildQueries(t *testing.T) { + // url + r := &RoaRequest{} + r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType") + assert.Equal(t, "/", r.BuildQueries()) + r.addQueryParam("key", "value") + assert.Equal(t, "/?key=value", r.BuildQueries()) + r.addQueryParam("key2", "value2") + assert.Equal(t, "/?key=value&key2=value2", r.BuildQueries()) + // assert.Equal(t, "/?key=https%3A%2F%2Fdomain%2F%3Fq%3Dv", r.BuildQueries()) +} + +func Test_RoaRequest_BuildUrl(t *testing.T) { + r := &RoaRequest{} + r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType") + r.Domain = "domain.com" + r.Scheme = "http" + r.Port = "80" + assert.Equal(t, "http://domain.com:80/", r.BuildUrl()) + r.addQueryParam("key", "value") + assert.Equal(t, "http://domain.com:80/?key=value", r.BuildUrl()) + r.addQueryParam("key", "https://domain/?q=v") + assert.Equal(t, "http://domain.com:80/?key=https%3A%2F%2Fdomain%2F%3Fq%3Dv", r.BuildUrl()) + r.addQueryParam("url", "https://domain/?q1=v1&q2=v2") + assert.Equal(t, "http://domain.com:80/?key=https%3A%2F%2Fdomain%2F%3Fq%3Dv&url=https%3A%2F%2Fdomain%2F%3Fq1%3Dv1%26q2%3Dv2", r.BuildUrl()) +} + +func Test_RoaRequest_BuildUrl2(t *testing.T) { + r := &RoaRequest{} + r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType") + r.Domain = "domain.com" + r.Scheme = "http" + r.Port = "80" + assert.Equal(t, "http://domain.com:80/", r.BuildUrl()) + r.addPathParam("key", "value") + assert.Equal(t, "http://domain.com:80/", r.BuildUrl()) + + r = &RoaRequest{} + r.InitWithApiInfo("product", "version", "action", "/users/[user]", "serviceCode", "endpointType") + r.Domain = "domain.com" + r.Scheme = "http" + r.Port = "80" + r.addPathParam("user", "name") + assert.Equal(t, "http://domain.com:80/users/name", r.BuildUrl()) + r.addQueryParam("key", "value") + assert.Equal(t, "http://domain.com:80/users/name?key=value", r.BuildUrl()) +} + +func Test_RoaRequest_GetBodyReader_Nil(t *testing.T) { + r := &RoaRequest{} + r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType") + + reader := r.GetBodyReader() + assert.Nil(t, reader) +} + +func Test_RoaRequest_GetBodyReader_Form(t *testing.T) { + r := &RoaRequest{} + r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType") + + r.addFormParam("key", "value") + reader := r.GetBodyReader() + b, _ := ioutil.ReadAll(reader) + assert.Equal(t, "key=value", string(b)) +} + +func Test_RoaRequest_GetBodyReader_Content(t *testing.T) { + r := &RoaRequest{} + r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType") + + r.SetContent([]byte("Hello world")) + reader := r.GetBodyReader() + b, _ := ioutil.ReadAll(reader) + assert.Equal(t, "Hello world", string(b)) +} + +// func Test_RoaRequest_addPathParam(t *testing.T) { +// r := &RoaRequest{} +// r.InitWithApiInfo("product", "version", "action", "/", "serviceCode", "endpointType") +// r.addPathParam("key", "value") +// } diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/rpc_request.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/rpc_request.go new file mode 100644 index 000000000..01be6fd04 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/rpc_request.go @@ -0,0 +1,79 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package requests + +import ( + "fmt" + "io" + "strings" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils" +) + +type RpcRequest struct { + *baseRequest +} + +func (request *RpcRequest) init() { + request.baseRequest = defaultBaseRequest() + request.Method = POST +} + +func (*RpcRequest) GetStyle() string { + return RPC +} + +func (request *RpcRequest) GetBodyReader() io.Reader { + if request.FormParams != nil && len(request.FormParams) > 0 { + formString := utils.GetUrlFormedMap(request.FormParams) + return strings.NewReader(formString) + } else { + return strings.NewReader("") + } +} + +func (request *RpcRequest) BuildQueries() string { + request.queries = "/?" + utils.GetUrlFormedMap(request.QueryParams) + return request.queries +} + +func (request *RpcRequest) BuildUrl() string { + url := fmt.Sprintf("%s://%s", strings.ToLower(request.Scheme), request.Domain) + if len(request.Port) > 0 { + url = fmt.Sprintf("%s:%s", url, request.Port) + } + return url + request.BuildQueries() +} + +func (request *RpcRequest) GetVersion() string { + return request.version +} + +func (request *RpcRequest) GetActionName() string { + return request.actionName +} + +func (request *RpcRequest) addPathParam(key, value string) { + panic("not support") +} + +func (request *RpcRequest) InitWithApiInfo(product, version, action, serviceCode, endpointType string) { + request.init() + request.product = product + request.version = version + request.actionName = action + request.locationServiceCode = serviceCode + request.locationEndpointType = endpointType +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/rpc_request_test.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/rpc_request_test.go new file mode 100644 index 000000000..33ac0a0aa --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/rpc_request_test.go @@ -0,0 +1,70 @@ +package requests + +import ( + "io/ioutil" + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_RpcRequest(t *testing.T) { + r := &RpcRequest{} + r.InitWithApiInfo("product", "version", "action", "serviceCode", "endpointType") + assert.NotNil(t, r) + + assert.Equal(t, "POST", r.GetMethod()) + assert.Equal(t, "RPC", r.GetStyle()) + assert.Equal(t, "product", r.GetProduct()) + assert.Equal(t, "version", r.GetVersion()) + assert.Equal(t, "action", r.GetActionName()) + assert.Equal(t, "serviceCode", r.GetLocationServiceCode()) + assert.Equal(t, "endpointType", r.GetLocationEndpointType()) +} + +func Test_RpcRequest_BuildQueries(t *testing.T) { + // url + r := &RpcRequest{} + r.InitWithApiInfo("product", "version", "action", "serviceCode", "endpointType") + assert.Equal(t, "/?", r.BuildQueries()) + r.addQueryParam("key", "value") + assert.Equal(t, "/?key=value", r.BuildQueries()) + r.addQueryParam("key", "https://domain/?q=v") + assert.Equal(t, "/?key=https%3A%2F%2Fdomain%2F%3Fq%3Dv", r.BuildQueries()) +} + +func Test_RpcRequest_BuildUrl(t *testing.T) { + r := &RpcRequest{} + r.InitWithApiInfo("product", "version", "action", "serviceCode", "endpointType") + r.Domain = "domain.com" + r.Scheme = "http" + r.Port = "80" + assert.Equal(t, "http://domain.com:80/?", r.BuildUrl()) + r.addQueryParam("key", "value") + assert.Equal(t, "http://domain.com:80/?key=value", r.BuildUrl()) + r.addQueryParam("key", "https://domain/?q=v") + assert.Equal(t, "http://domain.com:80/?key=https%3A%2F%2Fdomain%2F%3Fq%3Dv", r.BuildUrl()) +} + +func Test_RpcRequest_GetBodyReader(t *testing.T) { + r := &RpcRequest{} + r.InitWithApiInfo("product", "version", "action", "serviceCode", "endpointType") + + reader := r.GetBodyReader() + b, _ := ioutil.ReadAll(reader) + assert.Equal(t, "", string(b)) + r.addFormParam("key", "value") + reader = r.GetBodyReader() + b, _ = ioutil.ReadAll(reader) + assert.Equal(t, "key=value", string(b)) +} + +func Test_RpcRequest_addPathParam(t *testing.T) { + defer func() { //进行异常捕捉 + err := recover() + assert.NotNil(t, err) + assert.Equal(t, "not support", err) + }() + r := &RpcRequest{} + r.InitWithApiInfo("product", "version", "action", "serviceCode", "endpointType") + r.addPathParam("key", "value") +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/types.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/types.go new file mode 100644 index 000000000..28af63ea1 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/types.go @@ -0,0 +1,53 @@ +package requests + +import "strconv" + +type Integer string + +func NewInteger(integer int) Integer { + return Integer(strconv.Itoa(integer)) +} + +func (integer Integer) HasValue() bool { + return integer != "" +} + +func (integer Integer) GetValue() (int, error) { + return strconv.Atoi(string(integer)) +} + +func NewInteger64(integer int64) Integer { + return Integer(strconv.FormatInt(integer, 10)) +} + +func (integer Integer) GetValue64() (int64, error) { + return strconv.ParseInt(string(integer), 10, 0) +} + +type Boolean string + +func NewBoolean(bool bool) Boolean { + return Boolean(strconv.FormatBool(bool)) +} + +func (boolean Boolean) HasValue() bool { + return boolean != "" +} + +func (boolean Boolean) GetValue() (bool, error) { + return strconv.ParseBool(string(boolean)) +} + +type Float string + +func NewFloat(f float64) Float { + return Float(strconv.FormatFloat(f, 'f', 6, 64)) +} + +func (float Float) HasValue() bool { + return float != "" +} + +func (float Float) GetValue() (float64, error) { + return strconv.ParseFloat(string(float), 64) +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/types_test.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/types_test.go new file mode 100644 index 000000000..0f0f05f26 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests/types_test.go @@ -0,0 +1,51 @@ +package requests + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewInteger(t *testing.T) { + integer := NewInteger(123123) + assert.True(t, integer.HasValue()) + value, err := integer.GetValue() + assert.Nil(t, err) + assert.Equal(t, 123123, value) + var expected Integer + expected = "123123" + assert.Equal(t, expected, integer) +} + +func TestNewInteger64(t *testing.T) { + long := NewInteger64(123123123123123123) + assert.True(t, long.HasValue()) + value, err := long.GetValue64() + assert.Nil(t, err) + assert.Equal(t, int64(123123123123123123), value) + var expected Integer + expected = "123123123123123123" + assert.Equal(t, expected, long) +} + +func TestNewBoolean(t *testing.T) { + boolean := NewBoolean(false) + assert.True(t, boolean.HasValue()) + value, err := boolean.GetValue() + assert.Nil(t, err) + assert.Equal(t, false, value) + var expected Boolean + expected = "false" + assert.Equal(t, expected, boolean) +} + +func TestNewFloat(t *testing.T) { + float := NewFloat(123123.123123) + assert.True(t, float.HasValue()) + value, err := float.GetValue() + assert.Nil(t, err) + assert.Equal(t, 123123.123123, value) + var expected Float + expected = "123123.123123" + assert.Equal(t, expected, float) +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/resource/tzdata.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/resource/tzdata.go new file mode 100644 index 000000000..58f353988 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/resource/tzdata.go @@ -0,0 +1,6 @@ +package resource + +func GetTZData(name string) ([]byte, bool) { + data, ok := files["zoneinfo/"+name] + return data, ok +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/resource/zoneinfo.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/resource/zoneinfo.go new file mode 100644 index 000000000..e0fe9d39b --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/resource/zoneinfo.go @@ -0,0 +1,1190 @@ +package resource + +var fileNames = []string{"zoneinfo/Africa/Abidjan", "zoneinfo/Africa/Accra", "zoneinfo/Africa/Addis_Ababa", "zoneinfo/Africa/Algiers", "zoneinfo/Africa/Asmara", "zoneinfo/Africa/Asmera", "zoneinfo/Africa/Bamako", "zoneinfo/Africa/Bangui", "zoneinfo/Africa/Banjul", "zoneinfo/Africa/Bissau", "zoneinfo/Africa/Blantyre", "zoneinfo/Africa/Brazzaville", "zoneinfo/Africa/Bujumbura", "zoneinfo/Africa/Cairo", "zoneinfo/Africa/Casablanca", "zoneinfo/Africa/Ceuta", "zoneinfo/Africa/Conakry", "zoneinfo/Africa/Dakar", "zoneinfo/Africa/Dar_es_Salaam", "zoneinfo/Africa/Djibouti", "zoneinfo/Africa/Douala", "zoneinfo/Africa/El_Aaiun", "zoneinfo/Africa/Freetown", "zoneinfo/Africa/Gaborone", "zoneinfo/Africa/Harare", "zoneinfo/Africa/Johannesburg", "zoneinfo/Africa/Juba", "zoneinfo/Africa/Kampala", "zoneinfo/Africa/Khartoum", "zoneinfo/Africa/Kigali", "zoneinfo/Africa/Kinshasa", "zoneinfo/Africa/Lagos", "zoneinfo/Africa/Libreville", "zoneinfo/Africa/Lome", "zoneinfo/Africa/Luanda", "zoneinfo/Africa/Lubumbashi", "zoneinfo/Africa/Lusaka", "zoneinfo/Africa/Malabo", "zoneinfo/Africa/Maputo", "zoneinfo/Africa/Maseru", "zoneinfo/Africa/Mbabane", "zoneinfo/Africa/Mogadishu", "zoneinfo/Africa/Monrovia", "zoneinfo/Africa/Nairobi", "zoneinfo/Africa/Ndjamena", "zoneinfo/Africa/Niamey", "zoneinfo/Africa/Nouakchott", "zoneinfo/Africa/Ouagadougou", "zoneinfo/Africa/Porto-Novo", "zoneinfo/Africa/Sao_Tome", "zoneinfo/Africa/Timbuktu", "zoneinfo/Africa/Tripoli", "zoneinfo/Africa/Tunis", "zoneinfo/Africa/Windhoek", "zoneinfo/America/Adak", "zoneinfo/America/Anchorage", "zoneinfo/America/Anguilla", "zoneinfo/America/Antigua", "zoneinfo/America/Araguaina", "zoneinfo/America/Argentina/Buenos_Aires", "zoneinfo/America/Argentina/Catamarca", "zoneinfo/America/Argentina/ComodRivadavia", "zoneinfo/America/Argentina/Cordoba", "zoneinfo/America/Argentina/Jujuy", "zoneinfo/America/Argentina/La_Rioja", "zoneinfo/America/Argentina/Mendoza", "zoneinfo/America/Argentina/Rio_Gallegos", "zoneinfo/America/Argentina/Salta", "zoneinfo/America/Argentina/San_Juan", "zoneinfo/America/Argentina/San_Luis", "zoneinfo/America/Argentina/Tucuman", "zoneinfo/America/Argentina/Ushuaia", "zoneinfo/America/Aruba", "zoneinfo/America/Asuncion", "zoneinfo/America/Atikokan", "zoneinfo/America/Atka", "zoneinfo/America/Bahia", "zoneinfo/America/Bahia_Banderas", "zoneinfo/America/Barbados", "zoneinfo/America/Belem", "zoneinfo/America/Belize", "zoneinfo/America/Blanc-Sablon", "zoneinfo/America/Boa_Vista", "zoneinfo/America/Bogota", "zoneinfo/America/Boise", "zoneinfo/America/Buenos_Aires", "zoneinfo/America/Cambridge_Bay", "zoneinfo/America/Campo_Grande", "zoneinfo/America/Cancun", "zoneinfo/America/Caracas", "zoneinfo/America/Catamarca", "zoneinfo/America/Cayenne", "zoneinfo/America/Cayman", "zoneinfo/America/Chicago", "zoneinfo/America/Chihuahua", "zoneinfo/America/Coral_Harbour", "zoneinfo/America/Cordoba", "zoneinfo/America/Costa_Rica", "zoneinfo/America/Creston", "zoneinfo/America/Cuiaba", "zoneinfo/America/Curacao", "zoneinfo/America/Danmarkshavn", "zoneinfo/America/Dawson", "zoneinfo/America/Dawson_Creek", "zoneinfo/America/Denver", "zoneinfo/America/Detroit", "zoneinfo/America/Dominica", "zoneinfo/America/Edmonton", "zoneinfo/America/Eirunepe", "zoneinfo/America/El_Salvador", "zoneinfo/America/Ensenada", "zoneinfo/America/Fort_Nelson", "zoneinfo/America/Fort_Wayne", "zoneinfo/America/Fortaleza", "zoneinfo/America/Glace_Bay", "zoneinfo/America/Godthab", "zoneinfo/America/Goose_Bay", "zoneinfo/America/Grand_Turk", "zoneinfo/America/Grenada", "zoneinfo/America/Guadeloupe", "zoneinfo/America/Guatemala", "zoneinfo/America/Guayaquil", "zoneinfo/America/Guyana", "zoneinfo/America/Halifax", "zoneinfo/America/Havana", "zoneinfo/America/Hermosillo", "zoneinfo/America/Indiana/Indianapolis", "zoneinfo/America/Indiana/Knox", "zoneinfo/America/Indiana/Marengo", "zoneinfo/America/Indiana/Petersburg", "zoneinfo/America/Indiana/Tell_City", "zoneinfo/America/Indiana/Vevay", "zoneinfo/America/Indiana/Vincennes", "zoneinfo/America/Indiana/Winamac", "zoneinfo/America/Indianapolis", "zoneinfo/America/Inuvik", "zoneinfo/America/Iqaluit", "zoneinfo/America/Jamaica", "zoneinfo/America/Jujuy", "zoneinfo/America/Juneau", "zoneinfo/America/Kentucky/Louisville", "zoneinfo/America/Kentucky/Monticello", "zoneinfo/America/Knox_IN", "zoneinfo/America/Kralendijk", "zoneinfo/America/La_Paz", "zoneinfo/America/Lima", "zoneinfo/America/Los_Angeles", "zoneinfo/America/Louisville", "zoneinfo/America/Lower_Princes", "zoneinfo/America/Maceio", "zoneinfo/America/Managua", "zoneinfo/America/Manaus", "zoneinfo/America/Marigot", "zoneinfo/America/Martinique", "zoneinfo/America/Matamoros", "zoneinfo/America/Mazatlan", "zoneinfo/America/Mendoza", "zoneinfo/America/Menominee", "zoneinfo/America/Merida", "zoneinfo/America/Metlakatla", "zoneinfo/America/Mexico_City", "zoneinfo/America/Miquelon", "zoneinfo/America/Moncton", "zoneinfo/America/Monterrey", "zoneinfo/America/Montevideo", "zoneinfo/America/Montreal", "zoneinfo/America/Montserrat", "zoneinfo/America/Nassau", "zoneinfo/America/New_York", "zoneinfo/America/Nipigon", "zoneinfo/America/Nome", "zoneinfo/America/Noronha", "zoneinfo/America/North_Dakota/Beulah", "zoneinfo/America/North_Dakota/Center", "zoneinfo/America/North_Dakota/New_Salem", "zoneinfo/America/Ojinaga", "zoneinfo/America/Panama", "zoneinfo/America/Pangnirtung", "zoneinfo/America/Paramaribo", "zoneinfo/America/Phoenix", "zoneinfo/America/Port-au-Prince", "zoneinfo/America/Port_of_Spain", "zoneinfo/America/Porto_Acre", "zoneinfo/America/Porto_Velho", "zoneinfo/America/Puerto_Rico", "zoneinfo/America/Punta_Arenas", "zoneinfo/America/Rainy_River", "zoneinfo/America/Rankin_Inlet", "zoneinfo/America/Recife", "zoneinfo/America/Regina", "zoneinfo/America/Resolute", "zoneinfo/America/Rio_Branco", "zoneinfo/America/Rosario", "zoneinfo/America/Santa_Isabel", "zoneinfo/America/Santarem", "zoneinfo/America/Santiago", "zoneinfo/America/Santo_Domingo", "zoneinfo/America/Sao_Paulo", "zoneinfo/America/Scoresbysund", "zoneinfo/America/Shiprock", "zoneinfo/America/Sitka", "zoneinfo/America/St_Barthelemy", "zoneinfo/America/St_Johns", "zoneinfo/America/St_Kitts", "zoneinfo/America/St_Lucia", "zoneinfo/America/St_Thomas", "zoneinfo/America/St_Vincent", "zoneinfo/America/Swift_Current", "zoneinfo/America/Tegucigalpa", "zoneinfo/America/Thule", "zoneinfo/America/Thunder_Bay", "zoneinfo/America/Tijuana", "zoneinfo/America/Toronto", "zoneinfo/America/Tortola", "zoneinfo/America/Vancouver", "zoneinfo/America/Virgin", "zoneinfo/America/Whitehorse", "zoneinfo/America/Winnipeg", "zoneinfo/America/Yakutat", "zoneinfo/America/Yellowknife", "zoneinfo/Antarctica/Casey", "zoneinfo/Antarctica/Davis", "zoneinfo/Antarctica/DumontDUrville", "zoneinfo/Antarctica/Macquarie", "zoneinfo/Antarctica/Mawson", "zoneinfo/Antarctica/McMurdo", "zoneinfo/Antarctica/Palmer", "zoneinfo/Antarctica/Rothera", "zoneinfo/Antarctica/South_Pole", "zoneinfo/Antarctica/Syowa", "zoneinfo/Antarctica/Troll", "zoneinfo/Antarctica/Vostok", "zoneinfo/Arctic/Longyearbyen", "zoneinfo/Asia/Aden", "zoneinfo/Asia/Almaty", "zoneinfo/Asia/Amman", "zoneinfo/Asia/Anadyr", "zoneinfo/Asia/Aqtau", "zoneinfo/Asia/Aqtobe", "zoneinfo/Asia/Ashgabat", "zoneinfo/Asia/Ashkhabad", "zoneinfo/Asia/Atyrau", "zoneinfo/Asia/Baghdad", "zoneinfo/Asia/Bahrain", "zoneinfo/Asia/Baku", "zoneinfo/Asia/Bangkok", "zoneinfo/Asia/Barnaul", "zoneinfo/Asia/Beirut", "zoneinfo/Asia/Bishkek", "zoneinfo/Asia/Brunei", "zoneinfo/Asia/Calcutta", "zoneinfo/Asia/Chita", "zoneinfo/Asia/Choibalsan", "zoneinfo/Asia/Chongqing", "zoneinfo/Asia/Chungking", "zoneinfo/Asia/Colombo", "zoneinfo/Asia/Dacca", "zoneinfo/Asia/Damascus", "zoneinfo/Asia/Dhaka", "zoneinfo/Asia/Dili", "zoneinfo/Asia/Dubai", "zoneinfo/Asia/Dushanbe", "zoneinfo/Asia/Famagusta", "zoneinfo/Asia/Gaza", "zoneinfo/Asia/Harbin", "zoneinfo/Asia/Hebron", "zoneinfo/Asia/Ho_Chi_Minh", "zoneinfo/Asia/Hong_Kong", "zoneinfo/Asia/Hovd", "zoneinfo/Asia/Irkutsk", "zoneinfo/Asia/Istanbul", "zoneinfo/Asia/Jakarta", "zoneinfo/Asia/Jayapura", "zoneinfo/Asia/Jerusalem", "zoneinfo/Asia/Kabul", "zoneinfo/Asia/Kamchatka", "zoneinfo/Asia/Karachi", "zoneinfo/Asia/Kashgar", "zoneinfo/Asia/Kathmandu", "zoneinfo/Asia/Katmandu", "zoneinfo/Asia/Khandyga", "zoneinfo/Asia/Kolkata", "zoneinfo/Asia/Krasnoyarsk", "zoneinfo/Asia/Kuala_Lumpur", "zoneinfo/Asia/Kuching", "zoneinfo/Asia/Kuwait", "zoneinfo/Asia/Macao", "zoneinfo/Asia/Macau", "zoneinfo/Asia/Magadan", "zoneinfo/Asia/Makassar", "zoneinfo/Asia/Manila", "zoneinfo/Asia/Muscat", "zoneinfo/Asia/Nicosia", "zoneinfo/Asia/Novokuznetsk", "zoneinfo/Asia/Novosibirsk", "zoneinfo/Asia/Omsk", "zoneinfo/Asia/Oral", "zoneinfo/Asia/Phnom_Penh", "zoneinfo/Asia/Pontianak", "zoneinfo/Asia/Pyongyang", "zoneinfo/Asia/Qatar", "zoneinfo/Asia/Qyzylorda", "zoneinfo/Asia/Rangoon", "zoneinfo/Asia/Riyadh", "zoneinfo/Asia/Saigon", "zoneinfo/Asia/Sakhalin", "zoneinfo/Asia/Samarkand", "zoneinfo/Asia/Seoul", "zoneinfo/Asia/Shanghai", "zoneinfo/Asia/Singapore", "zoneinfo/Asia/Srednekolymsk", "zoneinfo/Asia/Taipei", "zoneinfo/Asia/Tashkent", "zoneinfo/Asia/Tbilisi", "zoneinfo/Asia/Tehran", "zoneinfo/Asia/Tel_Aviv", "zoneinfo/Asia/Thimbu", "zoneinfo/Asia/Thimphu", "zoneinfo/Asia/Tokyo", "zoneinfo/Asia/Tomsk", "zoneinfo/Asia/Ujung_Pandang", "zoneinfo/Asia/Ulaanbaatar", "zoneinfo/Asia/Ulan_Bator", "zoneinfo/Asia/Urumqi", "zoneinfo/Asia/Ust-Nera", "zoneinfo/Asia/Vientiane", "zoneinfo/Asia/Vladivostok", "zoneinfo/Asia/Yakutsk", "zoneinfo/Asia/Yangon", "zoneinfo/Asia/Yekaterinburg", "zoneinfo/Asia/Yerevan", "zoneinfo/Atlantic/Azores", "zoneinfo/Atlantic/Bermuda", "zoneinfo/Atlantic/Canary", "zoneinfo/Atlantic/Cape_Verde", "zoneinfo/Atlantic/Faeroe", "zoneinfo/Atlantic/Faroe", "zoneinfo/Atlantic/Jan_Mayen", "zoneinfo/Atlantic/Madeira", "zoneinfo/Atlantic/Reykjavik", "zoneinfo/Atlantic/South_Georgia", "zoneinfo/Atlantic/St_Helena", "zoneinfo/Atlantic/Stanley", "zoneinfo/Australia/ACT", "zoneinfo/Australia/Adelaide", "zoneinfo/Australia/Brisbane", "zoneinfo/Australia/Broken_Hill", "zoneinfo/Australia/Canberra", "zoneinfo/Australia/Currie", "zoneinfo/Australia/Darwin", "zoneinfo/Australia/Eucla", "zoneinfo/Australia/Hobart", "zoneinfo/Australia/LHI", "zoneinfo/Australia/Lindeman", "zoneinfo/Australia/Lord_Howe", "zoneinfo/Australia/Melbourne", "zoneinfo/Australia/NSW", "zoneinfo/Australia/North", "zoneinfo/Australia/Perth", "zoneinfo/Australia/Queensland", "zoneinfo/Australia/South", "zoneinfo/Australia/Sydney", "zoneinfo/Australia/Tasmania", "zoneinfo/Australia/Victoria", "zoneinfo/Australia/West", "zoneinfo/Australia/Yancowinna", "zoneinfo/Brazil/Acre", "zoneinfo/Brazil/DeNoronha", "zoneinfo/Brazil/East", "zoneinfo/Brazil/West", "zoneinfo/CET", "zoneinfo/CST6CDT", "zoneinfo/Canada/Atlantic", "zoneinfo/Canada/Central", "zoneinfo/Canada/Eastern", "zoneinfo/Canada/Mountain", "zoneinfo/Canada/Newfoundland", "zoneinfo/Canada/Pacific", "zoneinfo/Canada/Saskatchewan", "zoneinfo/Canada/Yukon", "zoneinfo/Chile/Continental", "zoneinfo/Chile/EasterIsland", "zoneinfo/Cuba", "zoneinfo/EET", "zoneinfo/EST", "zoneinfo/EST5EDT", "zoneinfo/Egypt", "zoneinfo/Eire", "zoneinfo/Etc/GMT", "zoneinfo/Etc/GMT+0", "zoneinfo/Etc/GMT+1", "zoneinfo/Etc/GMT+10", "zoneinfo/Etc/GMT+11", "zoneinfo/Etc/GMT+12", "zoneinfo/Etc/GMT+2", "zoneinfo/Etc/GMT+3", "zoneinfo/Etc/GMT+4", "zoneinfo/Etc/GMT+5", "zoneinfo/Etc/GMT+6", "zoneinfo/Etc/GMT+7", "zoneinfo/Etc/GMT+8", "zoneinfo/Etc/GMT+9", "zoneinfo/Etc/GMT-0", "zoneinfo/Etc/GMT-1", "zoneinfo/Etc/GMT-10", "zoneinfo/Etc/GMT-11", "zoneinfo/Etc/GMT-12", "zoneinfo/Etc/GMT-13", "zoneinfo/Etc/GMT-14", "zoneinfo/Etc/GMT-2", "zoneinfo/Etc/GMT-3", "zoneinfo/Etc/GMT-4", "zoneinfo/Etc/GMT-5", "zoneinfo/Etc/GMT-6", "zoneinfo/Etc/GMT-7", "zoneinfo/Etc/GMT-8", "zoneinfo/Etc/GMT-9", "zoneinfo/Etc/GMT0", "zoneinfo/Etc/Greenwich", "zoneinfo/Etc/UCT", "zoneinfo/Etc/UTC", "zoneinfo/Etc/Universal", "zoneinfo/Etc/Zulu", "zoneinfo/Europe/Amsterdam", "zoneinfo/Europe/Andorra", "zoneinfo/Europe/Astrakhan", "zoneinfo/Europe/Athens", "zoneinfo/Europe/Belfast", "zoneinfo/Europe/Belgrade", "zoneinfo/Europe/Berlin", "zoneinfo/Europe/Bratislava", "zoneinfo/Europe/Brussels", "zoneinfo/Europe/Bucharest", "zoneinfo/Europe/Budapest", "zoneinfo/Europe/Busingen", "zoneinfo/Europe/Chisinau", "zoneinfo/Europe/Copenhagen", "zoneinfo/Europe/Dublin", "zoneinfo/Europe/Gibraltar", "zoneinfo/Europe/Guernsey", "zoneinfo/Europe/Helsinki", "zoneinfo/Europe/Isle_of_Man", "zoneinfo/Europe/Istanbul", "zoneinfo/Europe/Jersey", "zoneinfo/Europe/Kaliningrad", "zoneinfo/Europe/Kiev", "zoneinfo/Europe/Kirov", "zoneinfo/Europe/Lisbon", "zoneinfo/Europe/Ljubljana", "zoneinfo/Europe/London", "zoneinfo/Europe/Luxembourg", "zoneinfo/Europe/Madrid", "zoneinfo/Europe/Malta", "zoneinfo/Europe/Mariehamn", "zoneinfo/Europe/Minsk", "zoneinfo/Europe/Monaco", "zoneinfo/Europe/Moscow", "zoneinfo/Europe/Nicosia", "zoneinfo/Europe/Oslo", "zoneinfo/Europe/Paris", "zoneinfo/Europe/Podgorica", "zoneinfo/Europe/Prague", "zoneinfo/Europe/Riga", "zoneinfo/Europe/Rome", "zoneinfo/Europe/Samara", "zoneinfo/Europe/San_Marino", "zoneinfo/Europe/Sarajevo", "zoneinfo/Europe/Saratov", "zoneinfo/Europe/Simferopol", "zoneinfo/Europe/Skopje", "zoneinfo/Europe/Sofia", "zoneinfo/Europe/Stockholm", "zoneinfo/Europe/Tallinn", "zoneinfo/Europe/Tirane", "zoneinfo/Europe/Tiraspol", "zoneinfo/Europe/Ulyanovsk", "zoneinfo/Europe/Uzhgorod", "zoneinfo/Europe/Vaduz", "zoneinfo/Europe/Vatican", "zoneinfo/Europe/Vienna", "zoneinfo/Europe/Vilnius", "zoneinfo/Europe/Volgograd", "zoneinfo/Europe/Warsaw", "zoneinfo/Europe/Zagreb", "zoneinfo/Europe/Zaporozhye", "zoneinfo/Europe/Zurich", "zoneinfo/Factory", "zoneinfo/GB", "zoneinfo/GB-Eire", "zoneinfo/GMT", "zoneinfo/GMT+0", "zoneinfo/GMT-0", "zoneinfo/GMT0", "zoneinfo/Greenwich", "zoneinfo/HST", "zoneinfo/Hongkong", "zoneinfo/Iceland", "zoneinfo/Indian/Antananarivo", "zoneinfo/Indian/Chagos", "zoneinfo/Indian/Christmas", "zoneinfo/Indian/Cocos", "zoneinfo/Indian/Comoro", "zoneinfo/Indian/Kerguelen", "zoneinfo/Indian/Mahe", "zoneinfo/Indian/Maldives", "zoneinfo/Indian/Mauritius", "zoneinfo/Indian/Mayotte", "zoneinfo/Indian/Reunion", "zoneinfo/Iran", "zoneinfo/Israel", "zoneinfo/Jamaica", "zoneinfo/Japan", "zoneinfo/Kwajalein", "zoneinfo/Libya", "zoneinfo/MET", "zoneinfo/MST", "zoneinfo/MST7MDT", "zoneinfo/Mexico/BajaNorte", "zoneinfo/Mexico/BajaSur", "zoneinfo/Mexico/General", "zoneinfo/NZ", "zoneinfo/NZ-CHAT", "zoneinfo/Navajo", "zoneinfo/PRC", "zoneinfo/PST8PDT", "zoneinfo/Pacific/Apia", "zoneinfo/Pacific/Auckland", "zoneinfo/Pacific/Bougainville", "zoneinfo/Pacific/Chatham", "zoneinfo/Pacific/Chuuk", "zoneinfo/Pacific/Easter", "zoneinfo/Pacific/Efate", "zoneinfo/Pacific/Enderbury", "zoneinfo/Pacific/Fakaofo", "zoneinfo/Pacific/Fiji", "zoneinfo/Pacific/Funafuti", "zoneinfo/Pacific/Galapagos", "zoneinfo/Pacific/Gambier", "zoneinfo/Pacific/Guadalcanal", "zoneinfo/Pacific/Guam", "zoneinfo/Pacific/Honolulu", "zoneinfo/Pacific/Johnston", "zoneinfo/Pacific/Kiritimati", "zoneinfo/Pacific/Kosrae", "zoneinfo/Pacific/Kwajalein", "zoneinfo/Pacific/Majuro", "zoneinfo/Pacific/Marquesas", "zoneinfo/Pacific/Midway", "zoneinfo/Pacific/Nauru", "zoneinfo/Pacific/Niue", "zoneinfo/Pacific/Norfolk", "zoneinfo/Pacific/Noumea", "zoneinfo/Pacific/Pago_Pago", "zoneinfo/Pacific/Palau", "zoneinfo/Pacific/Pitcairn", "zoneinfo/Pacific/Pohnpei", "zoneinfo/Pacific/Ponape", "zoneinfo/Pacific/Port_Moresby", "zoneinfo/Pacific/Rarotonga", "zoneinfo/Pacific/Saipan", "zoneinfo/Pacific/Samoa", "zoneinfo/Pacific/Tahiti", "zoneinfo/Pacific/Tarawa", "zoneinfo/Pacific/Tongatapu", "zoneinfo/Pacific/Truk", "zoneinfo/Pacific/Wake", "zoneinfo/Pacific/Wallis", "zoneinfo/Pacific/Yap", "zoneinfo/Poland", "zoneinfo/Portugal", "zoneinfo/ROC", "zoneinfo/ROK", "zoneinfo/Singapore", "zoneinfo/Turkey", "zoneinfo/UCT", "zoneinfo/US/Alaska", "zoneinfo/US/Aleutian", "zoneinfo/US/Arizona", "zoneinfo/US/Central", "zoneinfo/US/East-Indiana", "zoneinfo/US/Eastern", "zoneinfo/US/Hawaii", "zoneinfo/US/Indiana-Starke", "zoneinfo/US/Michigan", "zoneinfo/US/Mountain", "zoneinfo/US/Pacific", "zoneinfo/US/Samoa", "zoneinfo/UTC", "zoneinfo/Universal", "zoneinfo/W-SU", "zoneinfo/WET", "zoneinfo/Zulu"} + +var files = map[string][]byte{ + + "zoneinfo/Africa/Abidjan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 146, 230, 146, 72, 0, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Accra": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 158, 48, 102, 180, 163, 52, 123, 128, 163, 211, 252, 80, 165, 21, 175, 0, 165, 181, 47, 208, 166, 246, 226, 128, 167, 150, 99, 80, 168, 216, 22, 0, 169, 119, 150, 208, 170, 186, 155, 0, 171, 90, 27, 208, 172, 155, 206, 128, 173, 59, 79, 80, 174, 125, 2, 0, 175, 28, 130, 208, 176, 94, 53, 128, 176, 253, 182, 80, 178, 64, 186, 128, 178, 224, 59, 80, 180, 33, 238, 0, 180, 193, 110, 208, 182, 3, 33, 128, 182, 162, 162, 80, 183, 228, 85, 0, 184, 131, 213, 208, 185, 198, 218, 0, 186, 102, 90, 208, 187, 168, 13, 128, 188, 71, 142, 80, 189, 137, 65, 0, 190, 40, 193, 208, 191, 106, 116, 128, 192, 9, 245, 80, 193, 76, 249, 128, 193, 236, 122, 80, 195, 46, 45, 0, 195, 205, 173, 208, 197, 15, 96, 128, 197, 174, 225, 80, 198, 240, 148, 0, 199, 144, 20, 208, 200, 211, 25, 0, 201, 114, 153, 208, 202, 180, 76, 128, 203, 83, 205, 80, 204, 149, 128, 0, 205, 53, 0, 208, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 255, 204, 0, 0, 0, 0, 4, 176, 1, 4, 0, 0, 0, 0, 0, 10, 76, 77, 84, 0, 43, 48, 48, 50, 48, 0, 71, 77, 84, 0, 0, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Addis_Ababa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 0, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + + "zoneinfo/Africa/Algiers": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 26, 128, 0, 0, 0, 145, 96, 80, 79, 155, 71, 120, 240, 155, 215, 44, 112, 156, 188, 145, 112, 157, 192, 72, 240, 158, 137, 254, 112, 159, 160, 42, 240, 160, 96, 165, 240, 161, 128, 12, 240, 162, 46, 18, 240, 163, 122, 76, 240, 164, 53, 129, 240, 164, 184, 6, 112, 198, 255, 6, 112, 199, 88, 186, 128, 199, 218, 9, 160, 207, 146, 52, 16, 208, 138, 0, 0, 209, 114, 22, 16, 210, 78, 36, 112, 212, 75, 7, 112, 229, 206, 211, 0, 243, 92, 176, 240, 2, 120, 193, 240, 3, 67, 200, 240, 13, 207, 215, 0, 14, 173, 68, 240, 15, 120, 90, 0, 16, 104, 89, 16, 18, 118, 67, 112, 19, 102, 66, 128, 20, 95, 124, 16, 21, 79, 95, 0, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 6, 5, 6, 5, 6, 4, 6, 4, 2, 3, 7, 6, 5, 6, 4, 7, 4, 6, 0, 0, 2, 220, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 13, 0, 0, 28, 32, 1, 17, 0, 0, 14, 16, 0, 22, 0, 0, 14, 16, 1, 8, 76, 77, 84, 0, 80, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 69, 84, 45, 49, 10}, + + "zoneinfo/Africa/Asmara": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 0, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + + "zoneinfo/Africa/Asmera": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 0, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + + "zoneinfo/Africa/Bamako": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 146, 230, 146, 72, 0, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Bangui": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 161, 81, 243, 80, 0, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + + "zoneinfo/Africa/Banjul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 146, 230, 146, 72, 0, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Bissau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 146, 230, 157, 28, 9, 103, 97, 16, 0, 1, 2, 255, 255, 241, 100, 0, 0, 255, 255, 241, 240, 0, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 71, 77, 84, 0, 0, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Blantyre": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 130, 70, 197, 244, 0, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + + "zoneinfo/Africa/Brazzaville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 161, 81, 243, 80, 0, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + + "zoneinfo/Africa/Bujumbura": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 130, 70, 197, 244, 0, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + + "zoneinfo/Africa/Cairo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 4, 0, 0, 0, 13, 128, 0, 0, 0, 200, 147, 180, 224, 200, 250, 123, 208, 201, 252, 239, 224, 202, 199, 232, 208, 203, 203, 174, 96, 204, 223, 41, 208, 205, 172, 225, 224, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 173, 80, 232, 54, 99, 96, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 250, 240, 236, 181, 109, 0, 237, 207, 127, 240, 238, 151, 242, 0, 239, 176, 179, 112, 240, 121, 37, 128, 241, 145, 230, 240, 242, 90, 89, 0, 243, 115, 26, 112, 244, 59, 140, 128, 245, 85, 159, 112, 246, 30, 17, 128, 247, 54, 210, 240, 247, 255, 69, 0, 249, 24, 6, 112, 249, 225, 202, 0, 250, 249, 57, 240, 251, 194, 253, 128, 252, 219, 190, 240, 253, 165, 130, 128, 254, 188, 242, 112, 255, 134, 182, 0, 0, 158, 37, 240, 1, 103, 233, 128, 2, 127, 89, 112, 3, 73, 29, 0, 4, 97, 222, 112, 5, 43, 162, 0, 6, 67, 17, 240, 7, 12, 213, 128, 8, 36, 69, 112, 8, 238, 9, 0, 10, 5, 120, 240, 10, 207, 60, 128, 11, 231, 253, 240, 12, 177, 193, 128, 13, 201, 49, 112, 14, 146, 245, 0, 15, 170, 100, 240, 16, 116, 40, 128, 17, 139, 152, 112, 18, 85, 92, 0, 19, 110, 29, 112, 20, 55, 225, 0, 21, 79, 80, 240, 22, 25, 20, 128, 23, 160, 147, 240, 23, 250, 72, 0, 25, 112, 163, 240, 25, 219, 123, 128, 26, 244, 60, 240, 27, 190, 0, 128, 28, 213, 112, 112, 29, 159, 52, 0, 30, 182, 163, 240, 31, 128, 103, 128, 32, 151, 215, 112, 33, 97, 155, 0, 34, 122, 92, 112, 35, 68, 32, 0, 36, 98, 39, 112, 37, 37, 83, 128, 38, 60, 195, 112, 39, 6, 135, 0, 40, 29, 246, 240, 40, 231, 186, 128, 42, 0, 123, 240, 42, 202, 63, 128, 43, 225, 175, 112, 44, 171, 115, 0, 45, 194, 226, 240, 46, 140, 166, 128, 47, 160, 19, 224, 48, 107, 12, 208, 49, 127, 245, 224, 50, 74, 238, 208, 51, 95, 215, 224, 52, 42, 208, 208, 53, 63, 185, 224, 54, 10, 178, 208, 55, 40, 214, 96, 55, 243, 207, 80, 57, 8, 184, 96, 57, 211, 177, 80, 58, 232, 154, 96, 59, 179, 147, 80, 60, 200, 124, 96, 61, 147, 117, 80, 62, 168, 94, 96, 63, 115, 87, 80, 64, 145, 122, 224, 65, 92, 115, 208, 66, 113, 92, 224, 67, 60, 85, 208, 68, 81, 62, 224, 69, 18, 253, 80, 70, 49, 32, 224, 70, 224, 106, 80, 72, 17, 2, 224, 72, 183, 17, 208, 73, 240, 228, 224, 74, 141, 185, 80, 75, 218, 1, 96, 76, 97, 189, 208, 76, 137, 88, 224, 76, 164, 250, 80, 83, 117, 56, 224, 83, 172, 137, 208, 83, 218, 188, 96, 84, 36, 130, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 1, 2, 1, 2, 1, 2, 0, 0, 29, 85, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 10}, + + "zoneinfo/Africa/Casablanca": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 5, 0, 0, 0, 17, 128, 0, 0, 0, 150, 81, 249, 156, 198, 255, 20, 128, 199, 88, 172, 112, 199, 217, 237, 128, 210, 161, 50, 240, 219, 53, 164, 0, 219, 238, 39, 240, 251, 37, 114, 64, 251, 194, 239, 112, 8, 107, 132, 128, 8, 198, 109, 240, 11, 232, 12, 0, 12, 97, 71, 240, 13, 201, 63, 128, 14, 142, 242, 112, 15, 211, 81, 128, 16, 39, 163, 112, 26, 183, 166, 0, 30, 24, 111, 240, 72, 65, 230, 128, 72, 187, 34, 112, 74, 35, 26, 0, 74, 141, 213, 112, 75, 220, 192, 128, 76, 93, 229, 112, 77, 151, 184, 128, 78, 52, 140, 240, 79, 156, 160, 160, 80, 8, 187, 160, 80, 49, 154, 32, 80, 103, 167, 160, 81, 124, 130, 160, 81, 216, 203, 160, 82, 5, 158, 160, 82, 108, 115, 160, 83, 55, 122, 160, 83, 174, 33, 160, 83, 220, 70, 32, 84, 76, 85, 160, 85, 23, 92, 160, 85, 124, 224, 32, 85, 171, 4, 160, 86, 44, 55, 160, 86, 247, 62, 160, 87, 83, 135, 160, 87, 129, 172, 32, 88, 21, 84, 32, 88, 215, 32, 160, 89, 32, 244, 160, 89, 88, 83, 160, 89, 245, 54, 32, 90, 183, 2, 160, 90, 247, 156, 32, 91, 37, 192, 160, 91, 213, 24, 32, 92, 160, 31, 32, 92, 206, 67, 160, 92, 252, 104, 32, 93, 180, 250, 32, 94, 128, 1, 32, 94, 155, 176, 160, 94, 201, 213, 32, 95, 148, 220, 32, 96, 95, 227, 32, 96, 114, 88, 32, 96, 160, 124, 160, 97, 125, 248, 160, 98, 119, 36, 32, 99, 93, 218, 160, 100, 68, 145, 32, 101, 61, 188, 160, 102, 27, 56, 160, 103, 29, 158, 160, 103, 241, 224, 32, 104, 253, 128, 160, 105, 200, 135, 160, 106, 221, 98, 160, 107, 168, 105, 160, 108, 198, 127, 32, 109, 136, 75, 160, 110, 166, 97, 32, 111, 104, 45, 160, 112, 134, 67, 32, 113, 81, 74, 32, 114, 102, 37, 32, 115, 49, 44, 32, 116, 70, 7, 32, 117, 17, 14, 32, 118, 47, 35, 160, 118, 240, 240, 32, 120, 15, 5, 160, 120, 208, 210, 32, 121, 238, 231, 160, 122, 176, 180, 32, 123, 206, 201, 160, 124, 153, 208, 160, 125, 165, 113, 32, 126, 121, 178, 160, 127, 114, 222, 32, 127, 142, 155, 176, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 248, 228, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 0, 13, 0, 0, 0, 0, 0, 9, 76, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 67, 69, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Africa/Ceuta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 7, 0, 0, 0, 22, 128, 0, 0, 0, 158, 214, 117, 112, 159, 161, 110, 96, 170, 5, 239, 112, 170, 231, 110, 0, 173, 201, 167, 240, 174, 167, 50, 0, 175, 160, 79, 112, 176, 135, 20, 0, 177, 137, 122, 0, 178, 112, 48, 128, 178, 225, 145, 128, 251, 37, 114, 64, 251, 194, 239, 112, 8, 107, 132, 128, 8, 198, 109, 240, 11, 232, 12, 0, 12, 97, 71, 240, 13, 201, 63, 128, 14, 142, 242, 112, 15, 211, 81, 128, 16, 39, 163, 112, 26, 183, 166, 0, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 251, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 17, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Africa/Conakry": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 146, 230, 146, 72, 0, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Dakar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 146, 230, 146, 72, 0, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Dar_es_Salaam": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 0, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + + "zoneinfo/Africa/Djibouti": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 0, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + + "zoneinfo/Africa/Douala": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 161, 81, 243, 80, 0, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + + "zoneinfo/Africa/El_Aaiun": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 4, 0, 0, 0, 17, 128, 0, 0, 0, 188, 72, 240, 224, 11, 209, 176, 144, 11, 232, 12, 0, 12, 97, 71, 240, 13, 201, 63, 128, 14, 142, 242, 112, 15, 211, 81, 128, 16, 39, 163, 112, 72, 65, 230, 128, 72, 187, 34, 112, 74, 35, 26, 0, 74, 141, 213, 112, 75, 220, 192, 128, 76, 93, 229, 112, 77, 151, 184, 128, 78, 52, 140, 240, 79, 156, 160, 160, 80, 8, 187, 160, 80, 49, 154, 32, 80, 103, 167, 160, 81, 124, 130, 160, 81, 216, 203, 160, 82, 5, 158, 160, 82, 108, 115, 160, 83, 55, 122, 160, 83, 174, 33, 160, 83, 220, 70, 32, 84, 76, 85, 160, 85, 23, 92, 160, 85, 124, 224, 32, 85, 171, 4, 160, 86, 44, 55, 160, 86, 247, 62, 160, 87, 83, 135, 160, 87, 129, 172, 32, 88, 21, 84, 32, 88, 215, 32, 160, 89, 32, 244, 160, 89, 88, 83, 160, 89, 245, 54, 32, 90, 183, 2, 160, 90, 247, 156, 32, 91, 37, 192, 160, 91, 213, 24, 32, 92, 160, 31, 32, 92, 206, 67, 160, 92, 252, 104, 32, 93, 180, 250, 32, 94, 128, 1, 32, 94, 155, 176, 160, 94, 201, 213, 32, 95, 148, 220, 32, 96, 95, 227, 32, 96, 114, 88, 32, 96, 160, 124, 160, 97, 125, 248, 160, 98, 119, 36, 32, 99, 93, 218, 160, 100, 68, 145, 32, 101, 61, 188, 160, 102, 27, 56, 160, 103, 29, 158, 160, 103, 241, 224, 32, 104, 253, 128, 160, 105, 200, 135, 160, 106, 221, 98, 160, 107, 168, 105, 160, 108, 198, 127, 32, 109, 136, 75, 160, 110, 166, 97, 32, 111, 104, 45, 160, 112, 134, 67, 32, 113, 81, 74, 32, 114, 102, 37, 32, 115, 49, 44, 32, 116, 70, 7, 32, 117, 17, 14, 32, 118, 47, 35, 160, 118, 240, 240, 32, 120, 15, 5, 160, 120, 208, 210, 32, 121, 238, 231, 160, 122, 176, 180, 32, 123, 206, 201, 160, 124, 153, 208, 160, 125, 165, 113, 32, 126, 121, 178, 160, 127, 114, 222, 32, 127, 142, 155, 176, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 255, 255, 243, 160, 0, 0, 255, 255, 241, 240, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 76, 77, 84, 0, 45, 48, 49, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Africa/Freetown": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 146, 230, 146, 72, 0, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Gaborone": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 130, 70, 197, 244, 0, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + + "zoneinfo/Africa/Harare": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 130, 70, 197, 244, 0, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + + "zoneinfo/Africa/Johannesburg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 9, 128, 0, 0, 0, 130, 70, 207, 104, 204, 174, 140, 128, 205, 158, 111, 112, 206, 142, 110, 128, 207, 126, 81, 112, 1, 3, 2, 3, 2, 3, 0, 0, 26, 64, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 83, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 83, 65, 83, 84, 45, 50, 10}, + + "zoneinfo/Africa/Juba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 17, 128, 0, 0, 0, 182, 163, 218, 220, 0, 158, 23, 224, 1, 122, 52, 80, 2, 125, 249, 224, 3, 91, 103, 208, 4, 96, 126, 224, 5, 61, 236, 208, 6, 64, 96, 224, 7, 31, 32, 80, 8, 32, 66, 224, 9, 0, 83, 208, 10, 0, 36, 224, 10, 225, 135, 80, 11, 224, 6, 224, 12, 196, 12, 80, 13, 191, 232, 224, 14, 165, 63, 208, 15, 169, 5, 96, 16, 134, 115, 80, 17, 136, 231, 96, 18, 103, 166, 208, 19, 104, 201, 96, 20, 74, 43, 208, 21, 72, 171, 96, 22, 43, 95, 80, 23, 40, 141, 96, 24, 12, 146, 208, 25, 8, 111, 96, 25, 237, 198, 80, 26, 241, 139, 224, 27, 208, 75, 80, 28, 209, 109, 224, 29, 177, 126, 208, 56, 128, 69, 32, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 0, 0, 29, 164, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 0, 13, 76, 77, 84, 0, 67, 65, 83, 84, 0, 67, 65, 84, 0, 69, 65, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + + "zoneinfo/Africa/Kampala": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 0, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + + "zoneinfo/Africa/Khartoum": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 5, 0, 0, 0, 17, 128, 0, 0, 0, 182, 163, 218, 0, 0, 158, 23, 224, 1, 122, 52, 80, 2, 125, 249, 224, 3, 91, 103, 208, 4, 96, 126, 224, 5, 61, 236, 208, 6, 64, 96, 224, 7, 31, 32, 80, 8, 32, 66, 224, 9, 0, 83, 208, 10, 0, 36, 224, 10, 225, 135, 80, 11, 224, 6, 224, 12, 196, 12, 80, 13, 191, 232, 224, 14, 165, 63, 208, 15, 169, 5, 96, 16, 134, 115, 80, 17, 136, 231, 96, 18, 103, 166, 208, 19, 104, 201, 96, 20, 74, 43, 208, 21, 72, 171, 96, 22, 43, 95, 80, 23, 40, 141, 96, 24, 12, 146, 208, 25, 8, 111, 96, 25, 237, 198, 80, 26, 241, 139, 224, 27, 208, 75, 80, 28, 209, 109, 224, 29, 177, 126, 208, 56, 128, 69, 32, 89, 248, 228, 80, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 0, 0, 30, 128, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 0, 13, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 67, 65, 83, 84, 0, 67, 65, 84, 0, 69, 65, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + + "zoneinfo/Africa/Kigali": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 130, 70, 197, 244, 0, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + + "zoneinfo/Africa/Kinshasa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 161, 81, 243, 80, 0, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + + "zoneinfo/Africa/Lagos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 161, 81, 243, 80, 0, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + + "zoneinfo/Africa/Libreville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 161, 81, 243, 80, 0, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + + "zoneinfo/Africa/Lome": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 146, 230, 146, 72, 0, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Luanda": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 161, 81, 243, 80, 0, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + + "zoneinfo/Africa/Lubumbashi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 130, 70, 197, 244, 0, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + + "zoneinfo/Africa/Lusaka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 130, 70, 197, 244, 0, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + + "zoneinfo/Africa/Malabo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 161, 81, 243, 80, 0, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + + "zoneinfo/Africa/Maputo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 130, 70, 197, 244, 0, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + + "zoneinfo/Africa/Maseru": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 9, 128, 0, 0, 0, 130, 70, 207, 104, 204, 174, 140, 128, 205, 158, 111, 112, 206, 142, 110, 128, 207, 126, 81, 112, 1, 3, 2, 3, 2, 3, 0, 0, 26, 64, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 83, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 83, 65, 83, 84, 45, 50, 10}, + + "zoneinfo/Africa/Mbabane": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 9, 128, 0, 0, 0, 130, 70, 207, 104, 204, 174, 140, 128, 205, 158, 111, 112, 206, 142, 110, 128, 207, 126, 81, 112, 1, 3, 2, 3, 2, 3, 0, 0, 26, 64, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 83, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 83, 65, 83, 84, 45, 50, 10}, + + "zoneinfo/Africa/Mogadishu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 0, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + + "zoneinfo/Africa/Monrovia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 160, 95, 108, 156, 3, 202, 90, 110, 1, 2, 3, 255, 255, 245, 228, 0, 0, 255, 255, 245, 228, 0, 4, 255, 255, 245, 146, 0, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Nairobi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 0, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + + "zoneinfo/Africa/Ndjamena": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 13, 128, 0, 0, 0, 146, 230, 128, 100, 18, 102, 113, 112, 19, 38, 222, 96, 0, 1, 2, 1, 0, 0, 14, 28, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 76, 77, 84, 0, 87, 65, 84, 0, 87, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + + "zoneinfo/Africa/Niamey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 161, 81, 243, 80, 0, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + + "zoneinfo/Africa/Nouakchott": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 146, 230, 146, 72, 0, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Ouagadougou": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 146, 230, 146, 72, 0, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Porto-Novo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 161, 81, 243, 80, 0, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + + "zoneinfo/Africa/Sao_Tome": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 146, 230, 146, 72, 0, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Timbuktu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 146, 230, 146, 72, 0, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Africa/Tripoli": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 4, 0, 0, 0, 17, 128, 0, 0, 0, 161, 242, 193, 36, 221, 187, 177, 16, 222, 35, 173, 96, 225, 120, 210, 16, 225, 231, 101, 224, 229, 47, 63, 112, 229, 169, 204, 224, 235, 78, 198, 240, 22, 146, 66, 96, 23, 8, 247, 112, 23, 250, 43, 224, 24, 234, 42, 240, 25, 219, 95, 96, 26, 204, 175, 240, 27, 189, 228, 96, 28, 180, 122, 240, 29, 159, 23, 224, 30, 147, 11, 112, 31, 130, 238, 96, 32, 112, 74, 112, 33, 97, 126, 224, 34, 82, 207, 112, 35, 68, 3, 224, 36, 52, 2, 240, 37, 37, 55, 96, 38, 64, 183, 240, 50, 78, 241, 96, 51, 68, 54, 112, 52, 53, 106, 224, 80, 157, 153, 0, 81, 84, 217, 128, 82, 105, 180, 128, 0, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 3, 2, 1, 3, 0, 0, 12, 92, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 10}, + + "zoneinfo/Africa/Tunis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 17, 128, 0, 0, 0, 145, 96, 80, 79, 198, 58, 136, 224, 199, 88, 158, 96, 199, 219, 34, 224, 202, 226, 84, 224, 203, 173, 105, 240, 204, 231, 75, 16, 205, 169, 23, 144, 205, 194, 22, 0, 205, 204, 176, 16, 206, 162, 53, 0, 207, 146, 52, 16, 208, 137, 227, 224, 209, 114, 22, 16, 210, 78, 22, 96, 13, 199, 223, 240, 14, 137, 172, 112, 15, 170, 100, 240, 16, 116, 26, 112, 34, 163, 58, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 60, 195, 112, 39, 5, 39, 112, 66, 116, 13, 240, 67, 60, 128, 0, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 1, 4, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 9, 140, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 76, 77, 84, 0, 80, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 69, 84, 45, 49, 10}, + + "zoneinfo/Africa/Windhoek": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 8, 0, 0, 0, 28, 128, 0, 0, 0, 130, 70, 207, 104, 204, 174, 140, 128, 205, 158, 111, 112, 38, 6, 167, 224, 45, 140, 199, 96, 46, 105, 28, 16, 47, 125, 233, 0, 48, 72, 254, 16, 49, 103, 5, 128, 50, 40, 224, 16, 51, 70, 231, 128, 52, 17, 252, 144, 53, 38, 201, 128, 53, 241, 222, 144, 55, 6, 171, 128, 55, 209, 192, 144, 56, 230, 141, 128, 57, 177, 162, 144, 58, 198, 111, 128, 59, 145, 132, 144, 60, 175, 140, 0, 61, 113, 102, 144, 62, 143, 110, 0, 63, 90, 131, 16, 64, 111, 80, 0, 65, 58, 101, 16, 66, 79, 50, 0, 67, 26, 71, 16, 68, 47, 20, 0, 68, 250, 41, 16, 70, 14, 246, 0, 70, 218, 11, 16, 71, 248, 18, 128, 72, 195, 39, 144, 73, 215, 244, 128, 74, 163, 9, 144, 75, 183, 214, 128, 76, 130, 235, 144, 77, 151, 184, 128, 78, 98, 205, 144, 79, 119, 154, 128, 80, 66, 175, 144, 81, 96, 183, 0, 82, 34, 145, 144, 83, 64, 153, 0, 84, 11, 174, 16, 85, 32, 123, 0, 85, 235, 144, 16, 87, 0, 93, 0, 87, 203, 114, 16, 88, 224, 63, 0, 89, 171, 84, 16, 1, 2, 3, 2, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 4, 0, 0, 16, 8, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 28, 32, 0, 10, 0, 0, 42, 48, 1, 10, 0, 0, 28, 32, 0, 15, 0, 0, 14, 16, 0, 19, 0, 0, 28, 32, 1, 23, 0, 0, 28, 32, 0, 15, 76, 77, 84, 0, 43, 48, 49, 51, 48, 0, 83, 65, 83, 84, 0, 67, 65, 84, 0, 87, 65, 84, 0, 87, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + + "zoneinfo/America/Adak": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 33, 128, 0, 0, 0, 203, 137, 68, 208, 210, 35, 244, 112, 210, 97, 80, 64, 250, 210, 85, 176, 254, 184, 113, 80, 255, 168, 84, 64, 0, 152, 83, 80, 1, 136, 54, 64, 2, 120, 53, 80, 3, 113, 82, 192, 4, 97, 81, 208, 5, 81, 52, 192, 6, 65, 51, 208, 7, 49, 22, 192, 7, 141, 109, 208, 9, 16, 248, 192, 9, 173, 233, 80, 10, 240, 218, 192, 11, 224, 217, 208, 12, 217, 247, 64, 13, 192, 187, 208, 14, 185, 217, 64, 15, 169, 216, 80, 16, 153, 187, 64, 17, 137, 186, 80, 18, 121, 157, 64, 19, 105, 156, 80, 20, 89, 127, 64, 21, 73, 126, 80, 22, 57, 97, 64, 23, 41, 96, 80, 24, 34, 125, 192, 25, 9, 66, 80, 26, 2, 95, 192, 26, 43, 34, 32, 26, 242, 80, 192, 27, 226, 51, 176, 28, 210, 50, 192, 29, 194, 21, 176, 30, 178, 20, 192, 31, 161, 247, 176, 32, 118, 71, 64, 33, 129, 217, 176, 34, 86, 41, 64, 35, 106, 246, 48, 36, 54, 11, 64, 37, 74, 216, 48, 38, 21, 237, 64, 39, 42, 186, 48, 39, 255, 9, 192, 41, 10, 156, 48, 41, 222, 235, 192, 42, 234, 126, 48, 43, 190, 205, 192, 44, 211, 154, 176, 45, 158, 175, 192, 46, 179, 124, 176, 47, 126, 145, 192, 48, 147, 94, 176, 49, 103, 174, 64, 50, 115, 64, 176, 51, 71, 144, 64, 52, 83, 34, 176, 53, 39, 114, 64, 54, 51, 4, 176, 55, 7, 84, 64, 56, 28, 33, 48, 56, 231, 54, 64, 57, 252, 3, 48, 58, 199, 24, 64, 59, 219, 229, 48, 60, 176, 52, 192, 61, 187, 199, 48, 62, 144, 22, 192, 63, 155, 169, 48, 64, 111, 248, 192, 65, 132, 197, 176, 66, 79, 218, 192, 67, 100, 167, 176, 68, 47, 188, 192, 69, 68, 137, 176, 69, 243, 239, 64, 71, 45, 166, 48, 71, 211, 209, 64, 73, 13, 136, 48, 73, 179, 179, 64, 74, 237, 106, 48, 75, 156, 207, 192, 76, 214, 134, 176, 77, 124, 177, 192, 78, 182, 104, 176, 79, 92, 147, 192, 80, 150, 74, 176, 81, 60, 117, 192, 82, 118, 44, 176, 83, 28, 87, 192, 84, 86, 14, 176, 84, 252, 57, 192, 86, 53, 240, 176, 86, 229, 86, 64, 88, 31, 13, 48, 88, 197, 56, 64, 89, 254, 239, 48, 90, 165, 26, 64, 91, 222, 209, 48, 92, 132, 252, 64, 93, 190, 179, 48, 94, 100, 222, 64, 95, 158, 149, 48, 96, 77, 250, 192, 97, 135, 177, 176, 98, 45, 220, 192, 99, 103, 147, 176, 100, 13, 190, 192, 101, 71, 117, 176, 101, 237, 160, 192, 103, 39, 87, 176, 103, 205, 130, 192, 105, 7, 57, 176, 105, 173, 100, 192, 106, 231, 27, 176, 107, 150, 129, 64, 108, 208, 56, 48, 109, 118, 99, 64, 110, 176, 26, 48, 111, 86, 69, 64, 112, 143, 252, 48, 113, 54, 39, 64, 114, 111, 222, 48, 115, 22, 9, 64, 116, 79, 192, 48, 116, 255, 37, 192, 118, 56, 220, 176, 118, 223, 7, 192, 120, 24, 190, 176, 120, 190, 233, 192, 121, 248, 160, 176, 122, 158, 203, 192, 123, 216, 130, 176, 124, 126, 173, 192, 125, 184, 100, 176, 126, 94, 143, 192, 127, 152, 70, 176, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 255, 255, 90, 98, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 115, 96, 0, 24, 255, 255, 129, 112, 1, 29, 255, 255, 115, 96, 0, 25, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 65, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 72, 83, 84, 49, 48, 72, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Anchorage": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 40, 128, 0, 0, 0, 203, 137, 54, 192, 210, 35, 244, 112, 210, 97, 66, 48, 250, 210, 71, 160, 254, 184, 99, 64, 255, 168, 70, 48, 0, 152, 69, 64, 1, 136, 40, 48, 2, 120, 39, 64, 3, 113, 68, 176, 4, 97, 67, 192, 5, 81, 38, 176, 6, 65, 37, 192, 7, 49, 8, 176, 7, 141, 95, 192, 9, 16, 234, 176, 9, 173, 219, 64, 10, 240, 204, 176, 11, 224, 203, 192, 12, 217, 233, 48, 13, 192, 173, 192, 14, 185, 203, 48, 15, 169, 202, 64, 16, 153, 173, 48, 17, 137, 172, 64, 18, 121, 143, 48, 19, 105, 142, 64, 20, 89, 113, 48, 21, 73, 112, 64, 22, 57, 83, 48, 23, 41, 82, 64, 24, 34, 111, 176, 25, 9, 52, 64, 26, 2, 81, 176, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 255, 255, 115, 120, 0, 0, 255, 255, 115, 96, 0, 4, 255, 255, 129, 112, 1, 8, 255, 255, 129, 112, 1, 12, 255, 255, 115, 96, 0, 16, 255, 255, 129, 112, 1, 21, 255, 255, 129, 112, 0, 26, 255, 255, 143, 128, 1, 30, 255, 255, 129, 112, 0, 35, 76, 77, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 65, 72, 83, 84, 0, 65, 72, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Anguilla": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Antigua": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Araguaina": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 116, 48, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 48, 128, 121, 48, 49, 29, 77, 160, 50, 87, 32, 176, 51, 6, 106, 32, 52, 56, 84, 48, 52, 248, 193, 32, 54, 32, 31, 48, 54, 207, 104, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 58, 143, 44, 160, 59, 200, 255, 176, 60, 111, 14, 160, 61, 196, 145, 48, 62, 78, 240, 160, 80, 131, 101, 48, 81, 32, 57, 160, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 210, 208, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Argentina/Buenos_Aires": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 201, 52, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Argentina/Catamarca": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 194, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Argentina/ComodRivadavia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 194, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Argentina/Cordoba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 195, 208, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Argentina/Jujuy": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 42, 87, 192, 39, 226, 219, 176, 40, 238, 138, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 4, 5, 4, 5, 3, 5, 4, 5, 5, 255, 255, 194, 200, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Argentina/La_Rioja": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 205, 181, 160, 40, 38, 38, 64, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 193, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Argentina/Mendoza": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 25, 52, 64, 39, 205, 195, 176, 40, 250, 103, 192, 41, 176, 72, 176, 42, 224, 225, 64, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 176, 19, 176, 65, 86, 62, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 3, 2, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 124, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Argentina/Rio_Gallegos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 28, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Argentina/Salta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 5, 255, 255, 194, 172, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Argentina/San_Juan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 205, 181, 160, 40, 38, 38, 64, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 186, 159, 176, 65, 3, 48, 64, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 196, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Argentina/San_Luis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 253, 165, 160, 39, 25, 52, 64, 39, 205, 195, 176, 40, 71, 27, 192, 55, 246, 198, 176, 56, 191, 42, 176, 64, 186, 159, 176, 65, 3, 48, 64, 71, 119, 9, 176, 71, 147, 252, 160, 71, 211, 82, 176, 72, 241, 118, 64, 73, 179, 52, 176, 74, 209, 88, 64, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 5, 3, 5, 2, 5, 4, 3, 2, 3, 2, 5, 5, 255, 255, 193, 204, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 255, 255, 213, 208, 1, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Argentina/Tucuman": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 203, 209, 64, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 4, 5, 5, 255, 255, 194, 220, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Argentina/Ushuaia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 185, 78, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 248, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Aruba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 147, 30, 46, 35, 246, 152, 236, 72, 0, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Asuncion": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 184, 23, 245, 144, 5, 43, 218, 64, 7, 252, 240, 176, 10, 207, 116, 192, 11, 151, 202, 176, 12, 177, 249, 192, 13, 120, 254, 48, 14, 147, 45, 64, 15, 90, 49, 176, 16, 116, 96, 192, 17, 100, 67, 176, 18, 85, 148, 64, 19, 70, 200, 176, 20, 56, 25, 64, 21, 39, 252, 48, 22, 25, 76, 192, 23, 9, 47, 176, 23, 250, 128, 64, 24, 234, 99, 48, 25, 219, 179, 192, 26, 204, 232, 48, 27, 190, 56, 192, 28, 174, 27, 176, 29, 159, 108, 64, 30, 143, 79, 48, 31, 128, 159, 192, 32, 112, 130, 176, 33, 97, 211, 64, 34, 83, 7, 176, 35, 68, 88, 64, 36, 52, 59, 48, 37, 65, 59, 64, 38, 21, 110, 176, 39, 6, 191, 64, 39, 246, 162, 48, 40, 238, 138, 64, 41, 176, 72, 176, 42, 207, 189, 192, 43, 185, 9, 48, 44, 171, 171, 64, 45, 112, 12, 176, 46, 140, 222, 192, 47, 79, 238, 176, 48, 110, 18, 64, 49, 54, 104, 48, 50, 87, 46, 192, 51, 15, 178, 176, 52, 55, 16, 192, 52, 248, 207, 48, 54, 22, 242, 192, 54, 225, 235, 176, 55, 246, 212, 192, 56, 193, 205, 176, 57, 214, 182, 192, 58, 161, 175, 176, 59, 191, 211, 64, 60, 175, 182, 48, 61, 113, 144, 192, 62, 143, 152, 48, 63, 90, 173, 64, 64, 111, 122, 48, 65, 113, 238, 64, 66, 51, 172, 176, 67, 81, 208, 64, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 26, 206, 192, 71, 211, 82, 176, 72, 250, 176, 192, 73, 179, 52, 176, 74, 218, 146, 192, 75, 193, 59, 48, 76, 167, 255, 192, 77, 161, 29, 48, 78, 135, 225, 192, 79, 128, 255, 48, 80, 112, 254, 64, 81, 78, 108, 48, 82, 80, 224, 64, 83, 46, 78, 48, 84, 48, 194, 64, 85, 14, 48, 48, 86, 16, 164, 64, 86, 247, 76, 176, 87, 240, 134, 64, 88, 215, 46, 176, 89, 208, 104, 64, 90, 183, 16, 176, 91, 185, 132, 192, 92, 150, 242, 176, 93, 153, 102, 192, 94, 118, 212, 176, 95, 121, 72, 192, 96, 95, 241, 48, 97, 89, 42, 192, 98, 63, 211, 48, 99, 57, 12, 192, 100, 31, 181, 48, 101, 24, 238, 192, 101, 255, 151, 48, 103, 2, 11, 64, 103, 223, 121, 48, 104, 225, 237, 64, 105, 191, 91, 48, 106, 193, 207, 64, 107, 168, 119, 176, 108, 161, 177, 64, 109, 136, 89, 176, 110, 129, 147, 64, 111, 104, 59, 176, 112, 106, 175, 192, 113, 72, 29, 176, 114, 74, 145, 192, 115, 39, 255, 176, 116, 42, 115, 192, 117, 17, 28, 48, 118, 10, 85, 192, 118, 240, 254, 48, 119, 234, 55, 192, 120, 208, 224, 48, 121, 202, 25, 192, 122, 176, 194, 48, 123, 179, 54, 64, 124, 144, 164, 48, 125, 147, 24, 64, 126, 112, 134, 48, 127, 114, 250, 64, 127, 255, 255, 255, 1, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 4, 255, 255, 201, 240, 0, 0, 255, 255, 201, 240, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 0, 12, 255, 255, 213, 208, 1, 12, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 65, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 60, 45, 48, 51, 62, 44, 77, 49, 48, 46, 49, 46, 48, 47, 48, 44, 77, 51, 46, 52, 46, 48, 47, 48, 10}, + + "zoneinfo/America/Atikokan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 158, 184, 161, 128, 159, 186, 249, 112, 200, 248, 87, 96, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 2, 1, 2, 1, 3, 4, 5, 255, 255, 170, 28, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 10}, + + "zoneinfo/America/Atka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 33, 128, 0, 0, 0, 203, 137, 68, 208, 210, 35, 244, 112, 210, 97, 80, 64, 250, 210, 85, 176, 254, 184, 113, 80, 255, 168, 84, 64, 0, 152, 83, 80, 1, 136, 54, 64, 2, 120, 53, 80, 3, 113, 82, 192, 4, 97, 81, 208, 5, 81, 52, 192, 6, 65, 51, 208, 7, 49, 22, 192, 7, 141, 109, 208, 9, 16, 248, 192, 9, 173, 233, 80, 10, 240, 218, 192, 11, 224, 217, 208, 12, 217, 247, 64, 13, 192, 187, 208, 14, 185, 217, 64, 15, 169, 216, 80, 16, 153, 187, 64, 17, 137, 186, 80, 18, 121, 157, 64, 19, 105, 156, 80, 20, 89, 127, 64, 21, 73, 126, 80, 22, 57, 97, 64, 23, 41, 96, 80, 24, 34, 125, 192, 25, 9, 66, 80, 26, 2, 95, 192, 26, 43, 34, 32, 26, 242, 80, 192, 27, 226, 51, 176, 28, 210, 50, 192, 29, 194, 21, 176, 30, 178, 20, 192, 31, 161, 247, 176, 32, 118, 71, 64, 33, 129, 217, 176, 34, 86, 41, 64, 35, 106, 246, 48, 36, 54, 11, 64, 37, 74, 216, 48, 38, 21, 237, 64, 39, 42, 186, 48, 39, 255, 9, 192, 41, 10, 156, 48, 41, 222, 235, 192, 42, 234, 126, 48, 43, 190, 205, 192, 44, 211, 154, 176, 45, 158, 175, 192, 46, 179, 124, 176, 47, 126, 145, 192, 48, 147, 94, 176, 49, 103, 174, 64, 50, 115, 64, 176, 51, 71, 144, 64, 52, 83, 34, 176, 53, 39, 114, 64, 54, 51, 4, 176, 55, 7, 84, 64, 56, 28, 33, 48, 56, 231, 54, 64, 57, 252, 3, 48, 58, 199, 24, 64, 59, 219, 229, 48, 60, 176, 52, 192, 61, 187, 199, 48, 62, 144, 22, 192, 63, 155, 169, 48, 64, 111, 248, 192, 65, 132, 197, 176, 66, 79, 218, 192, 67, 100, 167, 176, 68, 47, 188, 192, 69, 68, 137, 176, 69, 243, 239, 64, 71, 45, 166, 48, 71, 211, 209, 64, 73, 13, 136, 48, 73, 179, 179, 64, 74, 237, 106, 48, 75, 156, 207, 192, 76, 214, 134, 176, 77, 124, 177, 192, 78, 182, 104, 176, 79, 92, 147, 192, 80, 150, 74, 176, 81, 60, 117, 192, 82, 118, 44, 176, 83, 28, 87, 192, 84, 86, 14, 176, 84, 252, 57, 192, 86, 53, 240, 176, 86, 229, 86, 64, 88, 31, 13, 48, 88, 197, 56, 64, 89, 254, 239, 48, 90, 165, 26, 64, 91, 222, 209, 48, 92, 132, 252, 64, 93, 190, 179, 48, 94, 100, 222, 64, 95, 158, 149, 48, 96, 77, 250, 192, 97, 135, 177, 176, 98, 45, 220, 192, 99, 103, 147, 176, 100, 13, 190, 192, 101, 71, 117, 176, 101, 237, 160, 192, 103, 39, 87, 176, 103, 205, 130, 192, 105, 7, 57, 176, 105, 173, 100, 192, 106, 231, 27, 176, 107, 150, 129, 64, 108, 208, 56, 48, 109, 118, 99, 64, 110, 176, 26, 48, 111, 86, 69, 64, 112, 143, 252, 48, 113, 54, 39, 64, 114, 111, 222, 48, 115, 22, 9, 64, 116, 79, 192, 48, 116, 255, 37, 192, 118, 56, 220, 176, 118, 223, 7, 192, 120, 24, 190, 176, 120, 190, 233, 192, 121, 248, 160, 176, 122, 158, 203, 192, 123, 216, 130, 176, 124, 126, 173, 192, 125, 184, 100, 176, 126, 94, 143, 192, 127, 152, 70, 176, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 255, 255, 90, 98, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 115, 96, 0, 24, 255, 255, 129, 112, 1, 29, 255, 255, 115, 96, 0, 25, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 65, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 72, 83, 84, 49, 48, 72, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Bahia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 107, 28, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 39, 33, 15, 48, 39, 189, 227, 160, 41, 0, 241, 48, 41, 148, 139, 32, 42, 234, 13, 176, 43, 107, 50, 160, 44, 192, 181, 48, 45, 102, 196, 32, 46, 160, 151, 48, 47, 70, 166, 32, 48, 128, 121, 48, 49, 29, 77, 160, 50, 87, 32, 176, 51, 6, 106, 32, 52, 56, 84, 48, 52, 248, 193, 32, 54, 32, 31, 48, 54, 207, 104, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 58, 143, 44, 160, 59, 200, 255, 176, 60, 111, 14, 160, 61, 196, 145, 48, 62, 78, 240, 160, 78, 154, 72, 176, 79, 73, 146, 32, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 219, 228, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Bahia_Banderas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 203, 234, 113, 96, 216, 145, 180, 240, 0, 0, 112, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 184, 85, 16, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 0, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 157, 84, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/America/Barbados": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 169, 121, 36, 229, 184, 133, 99, 229, 14, 0, 242, 224, 14, 148, 140, 208, 15, 151, 0, 224, 16, 116, 110, 208, 17, 118, 226, 224, 18, 84, 80, 208, 19, 95, 255, 96, 20, 48, 62, 80, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 200, 27, 0, 0, 255, 255, 200, 27, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 66, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Belem": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 116, 116, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 210, 140, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Belize": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 147, 94, 217, 176, 159, 159, 59, 224, 160, 69, 81, 216, 161, 127, 29, 224, 162, 46, 110, 88, 163, 94, 255, 224, 164, 14, 80, 88, 165, 62, 225, 224, 165, 238, 50, 88, 167, 39, 254, 96, 167, 206, 20, 88, 169, 7, 224, 96, 169, 173, 246, 88, 170, 231, 194, 96, 171, 151, 18, 216, 172, 199, 164, 96, 173, 118, 244, 216, 174, 167, 134, 96, 175, 86, 214, 216, 176, 135, 104, 96, 177, 54, 184, 216, 178, 112, 132, 224, 179, 22, 154, 216, 180, 80, 102, 224, 180, 246, 124, 216, 182, 48, 72, 224, 182, 223, 153, 88, 184, 16, 42, 224, 184, 191, 123, 88, 185, 240, 12, 224, 186, 159, 93, 88, 187, 217, 41, 96, 188, 127, 63, 88, 189, 185, 11, 96, 190, 95, 33, 88, 191, 152, 237, 96, 192, 63, 3, 88, 193, 120, 207, 96, 194, 40, 31, 216, 195, 88, 177, 96, 196, 8, 1, 216, 197, 56, 147, 96, 197, 231, 227, 216, 199, 33, 175, 224, 199, 199, 197, 216, 201, 1, 145, 224, 201, 167, 167, 216, 202, 225, 115, 224, 203, 144, 196, 88, 204, 193, 85, 224, 205, 112, 166, 88, 7, 98, 219, 96, 7, 185, 208, 80, 24, 97, 113, 96, 24, 171, 55, 80, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 255, 255, 173, 80, 0, 0, 255, 255, 178, 168, 1, 4, 255, 255, 171, 160, 0, 10, 255, 255, 185, 176, 1, 14, 76, 77, 84, 0, 45, 48, 53, 51, 48, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 10}, + + "zoneinfo/America/Blanc-Sablon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 133, 96, 159, 186, 221, 80, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 2, 1, 2, 3, 4, 2, 255, 255, 202, 116, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Boa_Vista": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 127, 224, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 55, 246, 212, 192, 56, 184, 147, 48, 57, 223, 241, 64, 57, 233, 29, 176, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 199, 32, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + + "zoneinfo/America/Bogota": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 152, 88, 85, 112, 42, 3, 115, 80, 43, 190, 93, 64, 127, 255, 255, 255, 1, 3, 2, 3, 3, 255, 255, 186, 144, 0, 0, 255, 255, 186, 144, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 76, 77, 84, 0, 66, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + + "zoneinfo/America/Boise": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 72, 160, 159, 187, 21, 144, 160, 134, 42, 160, 161, 154, 247, 144, 168, 70, 76, 32, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 178, 31, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 5, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 147, 15, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 20, 255, 255, 171, 160, 1, 24, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 77, 83, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Buenos_Aires": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 201, 52, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Cambridge_Bay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 11, 0, 0, 0, 37, 128, 0, 0, 0, 161, 242, 205, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 90, 112, 248, 40, 133, 240, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 230, 254, 0, 57, 251, 202, 240, 58, 4, 233, 80, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 0, 3, 1, 2, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 7, 6, 8, 7, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 0, 0, 0, 0, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 171, 160, 1, 21, 255, 255, 185, 176, 1, 25, 255, 255, 171, 160, 0, 29, 255, 255, 185, 176, 0, 33, 255, 255, 171, 160, 1, 21, 255, 255, 157, 144, 0, 12, 45, 48, 48, 0, 77, 87, 84, 0, 77, 80, 84, 0, 77, 83, 84, 0, 77, 68, 68, 84, 0, 77, 68, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Campo_Grande": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 122, 52, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 35, 88, 30, 192, 35, 226, 126, 48, 37, 56, 0, 192, 37, 212, 213, 48, 39, 33, 29, 64, 39, 189, 241, 176, 41, 0, 255, 64, 41, 148, 153, 48, 42, 234, 27, 192, 43, 107, 64, 176, 44, 192, 195, 64, 45, 102, 210, 48, 46, 160, 165, 64, 47, 70, 180, 48, 48, 128, 135, 64, 49, 29, 91, 176, 50, 87, 46, 192, 51, 6, 120, 48, 52, 56, 98, 64, 52, 248, 207, 48, 54, 32, 45, 64, 54, 207, 118, 176, 55, 246, 212, 192, 56, 184, 147, 48, 57, 223, 241, 64, 58, 143, 58, 176, 59, 201, 13, 192, 60, 111, 28, 176, 61, 196, 159, 64, 62, 78, 254, 176, 63, 146, 12, 64, 64, 46, 224, 176, 65, 135, 6, 64, 66, 23, 253, 48, 67, 81, 208, 64, 67, 247, 223, 48, 69, 77, 97, 192, 69, 224, 251, 176, 71, 17, 148, 64, 71, 183, 163, 48, 72, 250, 176, 192, 73, 151, 133, 48, 74, 218, 146, 192, 75, 128, 161, 176, 76, 186, 116, 192, 77, 96, 131, 176, 78, 154, 86, 192, 79, 73, 160, 48, 80, 131, 115, 64, 81, 32, 71, 176, 82, 99, 85, 64, 83, 0, 41, 176, 84, 67, 55, 64, 84, 233, 70, 48, 86, 35, 25, 64, 86, 201, 40, 48, 88, 2, 251, 64, 88, 169, 10, 48, 89, 226, 221, 64, 90, 136, 236, 48, 91, 203, 249, 192, 92, 104, 206, 48, 93, 171, 219, 192, 94, 72, 176, 48, 95, 139, 189, 192, 96, 49, 204, 176, 97, 107, 159, 192, 98, 17, 174, 176, 99, 75, 129, 192, 99, 250, 203, 48, 101, 43, 99, 192, 101, 209, 114, 176, 103, 20, 128, 64, 103, 177, 84, 176, 104, 244, 98, 64, 105, 154, 113, 48, 106, 212, 68, 64, 107, 122, 83, 48, 108, 180, 38, 64, 109, 90, 53, 48, 110, 148, 8, 64, 111, 58, 23, 48, 112, 125, 36, 192, 113, 25, 249, 48, 114, 93, 6, 192, 114, 249, 219, 48, 116, 60, 232, 192, 116, 217, 189, 48, 118, 28, 202, 192, 118, 194, 217, 176, 119, 252, 172, 192, 120, 171, 246, 48, 121, 220, 142, 192, 122, 130, 157, 176, 123, 197, 171, 64, 124, 98, 127, 176, 125, 165, 141, 64, 126, 75, 156, 48, 127, 133, 111, 64, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 204, 204, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 60, 45, 48, 51, 62, 44, 77, 49, 48, 46, 51, 46, 48, 47, 48, 44, 77, 50, 46, 51, 46, 48, 47, 48, 10}, + + "zoneinfo/America/Cancun": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 165, 182, 218, 96, 22, 134, 213, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 53, 196, 0, 96, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 84, 205, 221, 0, 0, 1, 3, 2, 3, 2, 3, 2, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 3, 255, 255, 174, 168, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 67, 83, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 10}, + + "zoneinfo/America/Caracas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 147, 30, 44, 60, 246, 152, 236, 72, 71, 91, 146, 112, 87, 37, 169, 112, 127, 255, 255, 255, 1, 2, 3, 2, 3, 3, 255, 255, 193, 64, 0, 0, 255, 255, 193, 68, 0, 4, 255, 255, 192, 184, 0, 8, 255, 255, 199, 192, 0, 14, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 51, 48, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + + "zoneinfo/America/Catamarca": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 194, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Cayenne": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 145, 244, 43, 144, 251, 195, 53, 192, 127, 255, 255, 255, 0, 1, 2, 2, 255, 255, 206, 240, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Cayman": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 139, 244, 97, 232, 1, 2, 255, 255, 181, 112, 0, 0, 255, 255, 181, 24, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 67, 77, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 10}, + + "zoneinfo/America/Chicago": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 162, 203, 116, 0, 163, 131, 247, 240, 164, 69, 210, 128, 165, 99, 217, 240, 166, 83, 217, 0, 167, 21, 151, 112, 168, 51, 187, 0, 168, 254, 179, 240, 170, 19, 157, 0, 170, 222, 149, 240, 171, 243, 127, 0, 172, 190, 119, 240, 173, 211, 97, 0, 174, 158, 89, 240, 175, 179, 67, 0, 176, 126, 59, 240, 177, 156, 95, 128, 178, 103, 88, 112, 179, 124, 65, 128, 180, 71, 58, 112, 181, 92, 35, 128, 182, 39, 28, 112, 183, 60, 5, 128, 184, 6, 254, 112, 185, 27, 231, 128, 185, 230, 224, 112, 187, 5, 4, 0, 187, 198, 194, 112, 188, 228, 230, 0, 189, 175, 222, 240, 190, 196, 200, 0, 191, 143, 192, 240, 192, 90, 214, 0, 193, 176, 60, 112, 194, 132, 140, 0, 195, 79, 132, 240, 196, 100, 110, 0, 197, 47, 102, 240, 198, 77, 138, 128, 199, 15, 72, 240, 200, 45, 108, 128, 200, 248, 101, 112, 202, 13, 78, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 233, 23, 0, 240, 234, 7, 0, 0, 234, 246, 226, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 246, 63, 105, 112, 247, 47, 104, 128, 248, 40, 133, 240, 249, 15, 74, 128, 250, 8, 103, 240, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 212, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Chihuahua": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 184, 85, 16, 76, 205, 34, 0, 77, 152, 55, 16, 78, 173, 4, 0, 79, 120, 25, 16, 80, 140, 230, 0, 81, 97, 53, 144, 82, 108, 200, 0, 83, 65, 23, 144, 84, 76, 170, 0, 85, 32, 249, 144, 86, 44, 140, 0, 87, 0, 219, 144, 88, 21, 168, 128, 88, 224, 189, 144, 89, 245, 138, 128, 90, 192, 159, 144, 91, 213, 108, 128, 92, 169, 188, 16, 93, 181, 78, 128, 94, 137, 158, 16, 95, 149, 48, 128, 96, 105, 128, 16, 97, 126, 77, 0, 98, 73, 98, 16, 99, 94, 47, 0, 100, 41, 68, 16, 101, 62, 17, 0, 102, 18, 96, 144, 103, 29, 243, 0, 103, 242, 66, 144, 104, 253, 213, 0, 105, 210, 36, 144, 106, 221, 183, 0, 107, 178, 6, 144, 108, 198, 211, 128, 109, 145, 232, 144, 110, 166, 181, 128, 111, 113, 202, 144, 112, 134, 151, 128, 113, 90, 231, 16, 114, 102, 121, 128, 115, 58, 201, 16, 116, 70, 91, 128, 117, 26, 171, 16, 118, 47, 120, 0, 118, 250, 141, 16, 120, 15, 90, 0, 120, 218, 111, 16, 121, 239, 60, 0, 122, 186, 81, 16, 123, 207, 30, 0, 124, 163, 109, 144, 125, 175, 0, 0, 126, 131, 79, 144, 127, 142, 226, 0, 0, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 156, 140, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/America/Coral_Harbour": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 158, 184, 161, 128, 159, 186, 249, 112, 200, 248, 87, 96, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 2, 1, 2, 1, 3, 4, 5, 255, 255, 170, 28, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 10}, + + "zoneinfo/America/Cordoba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 195, 208, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Costa_Rica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 17, 128, 0, 0, 0, 163, 232, 22, 77, 17, 54, 73, 96, 17, 183, 110, 80, 19, 22, 43, 96, 19, 151, 80, 80, 39, 151, 224, 96, 40, 110, 182, 208, 41, 119, 194, 96, 41, 194, 217, 208, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 177, 51, 0, 0, 255, 255, 177, 51, 0, 4, 255, 255, 185, 176, 1, 9, 255, 255, 171, 160, 0, 13, 76, 77, 84, 0, 83, 74, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 10}, + + "zoneinfo/America/Creston": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 155, 214, 75, 112, 158, 249, 59, 0, 1, 2, 1, 255, 255, 146, 196, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 10}, + + "zoneinfo/America/Cuiaba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 123, 148, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 35, 88, 30, 192, 35, 226, 126, 48, 37, 56, 0, 192, 37, 212, 213, 48, 39, 33, 29, 64, 39, 189, 241, 176, 41, 0, 255, 64, 41, 148, 153, 48, 42, 234, 27, 192, 43, 107, 64, 176, 44, 192, 195, 64, 45, 102, 210, 48, 46, 160, 165, 64, 47, 70, 180, 48, 48, 128, 135, 64, 49, 29, 91, 176, 50, 87, 46, 192, 51, 6, 120, 48, 52, 56, 98, 64, 52, 248, 207, 48, 54, 32, 45, 64, 54, 207, 118, 176, 55, 246, 212, 192, 56, 184, 147, 48, 57, 223, 241, 64, 58, 143, 58, 176, 59, 201, 13, 192, 60, 111, 28, 176, 61, 196, 159, 64, 62, 78, 254, 176, 65, 135, 6, 64, 66, 23, 253, 48, 67, 81, 208, 64, 67, 247, 223, 48, 69, 77, 97, 192, 69, 224, 251, 176, 71, 17, 148, 64, 71, 183, 163, 48, 72, 250, 176, 192, 73, 151, 133, 48, 74, 218, 146, 192, 75, 128, 161, 176, 76, 186, 116, 192, 77, 96, 131, 176, 78, 154, 86, 192, 79, 73, 160, 48, 80, 131, 115, 64, 81, 32, 71, 176, 82, 99, 85, 64, 83, 0, 41, 176, 84, 67, 55, 64, 84, 233, 70, 48, 86, 35, 25, 64, 86, 201, 40, 48, 88, 2, 251, 64, 88, 169, 10, 48, 89, 226, 221, 64, 90, 136, 236, 48, 91, 203, 249, 192, 92, 104, 206, 48, 93, 171, 219, 192, 94, 72, 176, 48, 95, 139, 189, 192, 96, 49, 204, 176, 97, 107, 159, 192, 98, 17, 174, 176, 99, 75, 129, 192, 99, 250, 203, 48, 101, 43, 99, 192, 101, 209, 114, 176, 103, 20, 128, 64, 103, 177, 84, 176, 104, 244, 98, 64, 105, 154, 113, 48, 106, 212, 68, 64, 107, 122, 83, 48, 108, 180, 38, 64, 109, 90, 53, 48, 110, 148, 8, 64, 111, 58, 23, 48, 112, 125, 36, 192, 113, 25, 249, 48, 114, 93, 6, 192, 114, 249, 219, 48, 116, 60, 232, 192, 116, 217, 189, 48, 118, 28, 202, 192, 118, 194, 217, 176, 119, 252, 172, 192, 120, 171, 246, 48, 121, 220, 142, 192, 122, 130, 157, 176, 123, 197, 171, 64, 124, 98, 127, 176, 125, 165, 141, 64, 126, 75, 156, 48, 127, 133, 111, 64, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 203, 108, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 60, 45, 48, 51, 62, 44, 77, 49, 48, 46, 51, 46, 48, 47, 48, 44, 77, 50, 46, 51, 46, 48, 47, 48, 10}, + + "zoneinfo/America/Curacao": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 147, 30, 46, 35, 246, 152, 236, 72, 0, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Danmarkshavn": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 155, 128, 73, 0, 19, 77, 124, 80, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 48, 231, 78, 48, 0, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 255, 255, 238, 128, 0, 0, 255, 255, 213, 208, 0, 4, 255, 255, 213, 208, 0, 4, 255, 255, 227, 224, 1, 8, 255, 255, 227, 224, 1, 8, 0, 0, 0, 0, 0, 12, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 50, 0, 71, 77, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/America/Dawson": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 8, 0, 0, 0, 33, 128, 0, 0, 0, 158, 184, 203, 176, 159, 187, 35, 160, 160, 208, 12, 176, 161, 162, 210, 128, 203, 137, 40, 176, 210, 35, 244, 112, 210, 97, 52, 32, 247, 47, 118, 144, 248, 40, 162, 16, 7, 48, 236, 144, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 5, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 125, 76, 0, 0, 255, 255, 143, 128, 1, 4, 255, 255, 129, 112, 0, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 157, 144, 1, 20, 255, 255, 143, 128, 0, 25, 255, 255, 157, 144, 1, 29, 76, 77, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 68, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Dawson_Creek": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 158, 184, 189, 160, 159, 187, 21, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 213, 85, 241, 32, 214, 32, 234, 16, 215, 53, 211, 32, 216, 0, 204, 16, 217, 21, 181, 32, 217, 224, 174, 16, 218, 254, 209, 160, 219, 192, 144, 16, 220, 222, 179, 160, 221, 169, 172, 144, 222, 190, 149, 160, 223, 137, 142, 144, 224, 158, 119, 160, 225, 105, 112, 144, 226, 126, 89, 160, 227, 73, 82, 144, 228, 94, 59, 160, 229, 41, 52, 144, 230, 71, 88, 32, 231, 18, 81, 16, 232, 39, 58, 32, 232, 242, 51, 16, 234, 7, 28, 32, 234, 210, 21, 16, 235, 230, 254, 32, 236, 177, 247, 16, 237, 198, 224, 32, 238, 145, 217, 16, 239, 175, 252, 160, 240, 113, 187, 16, 241, 143, 222, 160, 242, 127, 193, 144, 243, 111, 192, 160, 244, 95, 163, 144, 245, 79, 162, 160, 246, 63, 133, 144, 247, 47, 132, 160, 248, 40, 162, 16, 249, 15, 102, 160, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 1, 240, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 255, 255, 143, 72, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 0, 20, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 77, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 77, 83, 84, 55, 10}, + + "zoneinfo/America/Denver": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 162, 101, 254, 144, 163, 132, 6, 0, 164, 69, 224, 144, 164, 143, 166, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 118, 144, 248, 40, 148, 0, 249, 15, 88, 144, 250, 8, 118, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Detroit": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 133, 189, 34, 91, 153, 60, 148, 0, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 215, 53, 168, 240, 216, 0, 161, 224, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 0, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 178, 37, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 255, 255, 199, 192, 1, 20, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Dominica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Edmonton": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 136, 222, 206, 224, 158, 184, 175, 144, 159, 187, 7, 128, 160, 152, 145, 144, 160, 210, 133, 128, 162, 138, 232, 144, 163, 132, 6, 0, 164, 106, 202, 144, 165, 53, 195, 128, 166, 83, 231, 16, 167, 21, 165, 128, 168, 51, 201, 16, 168, 254, 194, 0, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 213, 85, 227, 16, 214, 32, 220, 0, 250, 248, 117, 16, 251, 232, 88, 0, 254, 184, 57, 16, 255, 168, 28, 0, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 8, 32, 221, 144, 9, 16, 192, 128, 10, 0, 191, 144, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 149, 160, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Eirunepe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 136, 128, 184, 15, 102, 0, 184, 253, 92, 192, 185, 241, 80, 80, 186, 222, 144, 64, 218, 56, 202, 80, 218, 236, 22, 80, 220, 25, 253, 208, 220, 185, 117, 64, 221, 251, 49, 80, 222, 155, 250, 64, 223, 221, 182, 80, 224, 84, 79, 64, 244, 152, 27, 208, 245, 5, 122, 64, 246, 192, 128, 80, 247, 14, 58, 192, 248, 81, 72, 80, 248, 199, 225, 64, 250, 10, 238, 208, 250, 169, 20, 192, 251, 236, 34, 80, 252, 139, 153, 192, 29, 201, 170, 80, 30, 120, 243, 192, 31, 160, 81, 208, 32, 51, 235, 192, 33, 129, 133, 80, 34, 11, 228, 192, 44, 192, 209, 80, 45, 102, 224, 64, 72, 96, 127, 80, 82, 127, 4, 192, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 190, 128, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + + "zoneinfo/America/El_Salvador": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 163, 213, 166, 32, 32, 154, 220, 224, 33, 92, 155, 80, 34, 122, 190, 224, 35, 60, 125, 80, 0, 2, 1, 2, 1, 2, 255, 255, 172, 96, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 10}, + + "zoneinfo/America/Ensenada": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 165, 182, 246, 128, 169, 121, 79, 112, 175, 242, 124, 240, 182, 102, 100, 112, 183, 27, 16, 0, 184, 10, 242, 240, 203, 234, 141, 128, 210, 35, 244, 112, 210, 153, 186, 112, 215, 27, 89, 0, 216, 145, 180, 240, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 70, 15, 130, 160, 71, 36, 79, 144, 71, 248, 159, 32, 73, 4, 49, 144, 73, 216, 129, 32, 74, 228, 19, 144, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 0, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Fort_Nelson": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 158, 184, 189, 160, 159, 187, 21, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 213, 85, 241, 32, 214, 32, 234, 16, 215, 53, 211, 32, 216, 0, 204, 16, 217, 21, 181, 32, 217, 224, 174, 16, 218, 254, 209, 160, 219, 192, 144, 16, 220, 222, 179, 160, 221, 169, 172, 144, 222, 190, 149, 160, 223, 137, 142, 144, 224, 158, 119, 160, 225, 105, 112, 144, 226, 126, 89, 160, 227, 73, 82, 144, 228, 94, 59, 160, 229, 41, 52, 144, 230, 71, 88, 32, 231, 18, 81, 16, 232, 39, 58, 32, 232, 242, 51, 16, 234, 7, 28, 32, 234, 210, 21, 16, 235, 230, 254, 32, 236, 177, 247, 16, 237, 198, 224, 32, 238, 145, 217, 16, 239, 175, 252, 160, 240, 113, 187, 16, 241, 143, 222, 160, 242, 127, 193, 144, 243, 111, 192, 160, 244, 95, 163, 144, 245, 79, 162, 160, 246, 63, 133, 144, 247, 47, 132, 160, 248, 40, 162, 16, 249, 15, 102, 160, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 8, 32, 235, 160, 9, 16, 206, 144, 10, 0, 205, 160, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 140, 249, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 0, 20, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 77, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 77, 83, 84, 55, 10}, + + "zoneinfo/America/Fort_Wayne": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 202, 87, 34, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 232, 242, 22, 240, 234, 7, 0, 0, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Fortaleza": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 107, 24, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 57, 242, 74, 32, 59, 200, 255, 176, 60, 111, 14, 160, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 219, 232, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Glace_Bay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 128, 241, 168, 52, 158, 184, 133, 96, 159, 186, 221, 80, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 224, 158, 63, 96, 225, 105, 56, 80, 4, 96, 239, 96, 5, 80, 210, 80, 6, 64, 209, 96, 7, 48, 180, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 0, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 199, 204, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Godthab": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 5, 0, 0, 0, 12, 128, 0, 0, 0, 155, 128, 104, 0, 19, 77, 124, 80, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 127, 255, 255, 255, 0, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 255, 255, 207, 128, 0, 0, 255, 255, 213, 208, 0, 4, 255, 255, 213, 208, 0, 4, 255, 255, 227, 224, 1, 8, 255, 255, 227, 224, 1, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 10, 60, 45, 48, 51, 62, 51, 60, 45, 48, 50, 62, 44, 77, 51, 46, 53, 46, 48, 47, 45, 50, 44, 77, 49, 48, 46, 53, 46, 48, 47, 45, 49, 10}, + + "zoneinfo/America/Goose_Bay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 11, 0, 0, 0, 33, 128, 0, 0, 0, 158, 184, 126, 140, 159, 186, 214, 124, 190, 158, 77, 108, 192, 184, 49, 56, 193, 121, 239, 168, 194, 152, 19, 56, 195, 89, 209, 168, 196, 119, 245, 56, 197, 57, 179, 168, 198, 97, 17, 184, 199, 25, 149, 168, 200, 64, 243, 184, 201, 2, 178, 40, 202, 32, 213, 184, 202, 226, 148, 40, 204, 0, 183, 184, 210, 35, 244, 112, 210, 96, 230, 200, 211, 136, 68, 216, 212, 74, 3, 72, 213, 104, 38, 216, 214, 41, 229, 72, 215, 72, 8, 216, 216, 9, 199, 72, 217, 39, 234, 216, 217, 233, 169, 72, 219, 17, 7, 88, 219, 210, 197, 200, 220, 222, 116, 88, 221, 169, 109, 72, 222, 190, 86, 88, 223, 137, 79, 72, 224, 158, 56, 88, 225, 105, 49, 72, 226, 126, 26, 88, 227, 73, 19, 72, 228, 93, 252, 88, 229, 40, 245, 72, 230, 71, 24, 216, 231, 18, 17, 200, 232, 38, 250, 216, 232, 241, 243, 200, 234, 6, 220, 216, 234, 209, 213, 200, 235, 230, 190, 216, 236, 177, 183, 200, 237, 198, 160, 216, 238, 191, 190, 72, 239, 175, 189, 88, 240, 159, 160, 72, 241, 143, 159, 88, 242, 127, 130, 72, 243, 111, 129, 88, 244, 95, 100, 72, 245, 79, 99, 88, 246, 63, 70, 72, 247, 47, 69, 88, 248, 40, 98, 200, 248, 218, 107, 88, 249, 15, 46, 96, 250, 8, 75, 208, 250, 248, 74, 224, 251, 232, 45, 208, 252, 216, 44, 224, 253, 200, 15, 208, 254, 184, 14, 224, 255, 167, 241, 208, 0, 151, 240, 224, 1, 135, 211, 208, 2, 119, 210, 224, 3, 112, 240, 80, 4, 96, 239, 96, 5, 80, 210, 80, 6, 64, 209, 96, 7, 48, 180, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 214, 252, 33, 129, 105, 108, 34, 85, 184, 252, 35, 106, 119, 220, 36, 53, 154, 252, 37, 74, 103, 236, 38, 21, 124, 252, 39, 42, 73, 236, 39, 254, 153, 124, 41, 10, 43, 236, 41, 222, 123, 124, 42, 234, 13, 236, 43, 190, 93, 124, 44, 211, 42, 108, 45, 158, 63, 124, 46, 179, 12, 108, 47, 126, 33, 124, 48, 146, 238, 108, 49, 103, 61, 252, 50, 114, 208, 108, 51, 71, 31, 252, 52, 82, 178, 108, 53, 39, 1, 252, 54, 50, 148, 108, 55, 6, 227, 252, 56, 27, 176, 236, 56, 230, 197, 252, 57, 251, 146, 236, 58, 198, 167, 252, 59, 219, 116, 236, 60, 175, 196, 124, 61, 187, 86, 236, 62, 143, 166, 124, 63, 155, 56, 236, 64, 111, 136, 124, 65, 132, 85, 108, 66, 79, 106, 124, 67, 100, 55, 108, 68, 47, 76, 124, 69, 68, 25, 108, 69, 243, 126, 252, 71, 45, 53, 236, 71, 211, 96, 252, 73, 13, 23, 236, 73, 179, 66, 252, 74, 236, 249, 236, 75, 156, 95, 124, 76, 214, 22, 108, 77, 124, 65, 124, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 6, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 9, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 255, 255, 199, 92, 0, 0, 255, 255, 206, 148, 0, 4, 255, 255, 220, 164, 1, 8, 255, 255, 206, 200, 0, 4, 255, 255, 220, 216, 1, 8, 255, 255, 220, 216, 1, 12, 255, 255, 220, 216, 1, 16, 255, 255, 213, 208, 1, 20, 255, 255, 199, 192, 0, 24, 255, 255, 227, 224, 1, 28, 255, 255, 213, 208, 1, 20, 76, 77, 84, 0, 78, 83, 84, 0, 78, 68, 84, 0, 78, 80, 84, 0, 78, 87, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 68, 68, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Grand_Turk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 147, 15, 180, 255, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 189, 80, 0, 0, 255, 255, 184, 1, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 0, 16, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 75, 77, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Grenada": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Guadeloupe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Guatemala": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 159, 157, 234, 220, 7, 85, 172, 96, 7, 205, 150, 208, 25, 44, 120, 96, 25, 207, 228, 80, 39, 234, 238, 224, 40, 200, 92, 208, 68, 84, 82, 96, 69, 31, 75, 80, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 171, 36, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 10}, + + "zoneinfo/America/Guayaquil": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 182, 164, 66, 24, 43, 22, 252, 208, 43, 113, 230, 64, 127, 255, 255, 255, 1, 3, 2, 3, 3, 255, 255, 181, 40, 0, 0, 255, 255, 182, 104, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 76, 77, 84, 0, 81, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + + "zoneinfo/America/Guyana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 152, 217, 121, 136, 10, 125, 180, 60, 39, 127, 251, 48, 127, 255, 255, 255, 0, 1, 2, 3, 3, 255, 255, 201, 120, 0, 0, 255, 255, 203, 68, 0, 4, 255, 255, 213, 208, 0, 10, 255, 255, 199, 192, 0, 14, 76, 77, 84, 0, 45, 48, 51, 52, 53, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + + "zoneinfo/America/Halifax": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 128, 241, 171, 160, 154, 228, 222, 192, 155, 214, 19, 48, 158, 184, 133, 96, 159, 186, 221, 80, 162, 157, 23, 64, 163, 48, 177, 48, 164, 122, 86, 64, 165, 27, 31, 48, 166, 83, 160, 192, 166, 252, 82, 176, 168, 60, 189, 64, 168, 220, 52, 176, 170, 28, 159, 64, 170, 205, 58, 48, 171, 252, 129, 64, 172, 191, 145, 48, 173, 238, 216, 64, 174, 140, 254, 48, 175, 188, 69, 64, 176, 127, 85, 48, 177, 174, 156, 64, 178, 75, 112, 176, 179, 142, 126, 64, 180, 36, 187, 48, 181, 110, 96, 64, 182, 21, 192, 176, 183, 78, 66, 64, 184, 8, 23, 176, 185, 36, 233, 192, 185, 231, 249, 176, 187, 4, 203, 192, 187, 209, 22, 48, 189, 0, 93, 64, 189, 157, 49, 176, 190, 242, 180, 64, 191, 144, 218, 48, 192, 211, 231, 192, 193, 94, 71, 48, 194, 141, 142, 64, 195, 80, 158, 48, 196, 109, 112, 64, 197, 48, 128, 48, 198, 114, 60, 64, 199, 16, 98, 48, 200, 54, 110, 192, 200, 249, 126, 176, 202, 22, 80, 192, 202, 217, 96, 176, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 211, 117, 214, 224, 212, 64, 207, 208, 213, 85, 184, 224, 214, 32, 177, 208, 215, 53, 154, 224, 216, 0, 147, 208, 217, 21, 124, 224, 217, 224, 117, 208, 220, 222, 123, 96, 221, 169, 116, 80, 222, 190, 93, 96, 223, 137, 86, 80, 224, 158, 63, 96, 225, 105, 56, 80, 226, 126, 33, 96, 227, 73, 26, 80, 230, 71, 31, 224, 231, 18, 24, 208, 232, 39, 1, 224, 232, 241, 250, 208, 234, 6, 227, 224, 234, 209, 220, 208, 235, 230, 197, 224, 236, 177, 190, 208, 241, 143, 166, 96, 242, 127, 137, 80, 243, 111, 136, 96, 244, 95, 107, 80, 245, 79, 106, 96, 246, 63, 77, 80, 247, 47, 76, 96, 248, 40, 105, 208, 249, 15, 46, 96, 250, 8, 75, 208, 250, 248, 74, 224, 251, 232, 45, 208, 252, 216, 44, 224, 253, 200, 15, 208, 254, 184, 14, 224, 255, 167, 241, 208, 0, 151, 240, 224, 1, 135, 211, 208, 2, 119, 210, 224, 3, 112, 240, 80, 4, 96, 239, 96, 5, 80, 210, 80, 6, 64, 209, 96, 7, 48, 180, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 196, 96, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Havana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 172, 98, 194, 128, 177, 211, 148, 80, 178, 116, 93, 64, 200, 91, 102, 208, 200, 211, 81, 64, 202, 59, 72, 208, 202, 188, 109, 192, 204, 36, 101, 80, 204, 156, 79, 192, 209, 196, 11, 80, 210, 59, 245, 192, 211, 163, 237, 80, 212, 27, 215, 192, 247, 96, 5, 208, 247, 255, 125, 64, 249, 61, 68, 208, 249, 227, 83, 192, 250, 219, 59, 208, 251, 167, 134, 64, 252, 197, 169, 208, 253, 135, 104, 64, 254, 184, 0, 208, 255, 167, 227, 192, 0, 151, 226, 208, 1, 135, 197, 192, 2, 119, 196, 208, 3, 112, 226, 64, 4, 96, 225, 80, 5, 53, 20, 192, 6, 64, 195, 80, 7, 22, 72, 64, 8, 32, 165, 80, 8, 247, 123, 192, 10, 0, 135, 80, 10, 240, 106, 64, 11, 224, 105, 80, 12, 217, 134, 192, 13, 192, 75, 80, 14, 185, 104, 192, 15, 178, 162, 80, 16, 125, 155, 64, 17, 81, 234, 208, 18, 102, 183, 192, 19, 49, 204, 208, 20, 70, 153, 192, 21, 91, 130, 208, 22, 38, 123, 192, 23, 59, 100, 208, 24, 6, 93, 192, 25, 27, 70, 208, 25, 230, 63, 192, 26, 251, 40, 208, 27, 207, 92, 64, 28, 219, 10, 208, 29, 175, 62, 64, 30, 122, 83, 80, 31, 143, 32, 64, 32, 90, 53, 80, 33, 111, 2, 64, 34, 67, 81, 208, 35, 78, 228, 64, 36, 35, 51, 208, 37, 46, 198, 64, 38, 21, 138, 208, 39, 23, 226, 192, 39, 254, 167, 80, 40, 247, 210, 208, 41, 222, 137, 80, 42, 215, 180, 208, 43, 190, 107, 80, 44, 183, 150, 208, 45, 158, 77, 80, 46, 151, 120, 208, 47, 126, 47, 80, 48, 119, 90, 208, 49, 103, 75, 208, 50, 87, 60, 208, 51, 71, 45, 208, 52, 64, 89, 80, 53, 29, 213, 80, 54, 50, 176, 80, 54, 253, 183, 80, 56, 27, 204, 208, 56, 230, 211, 208, 57, 251, 174, 208, 58, 198, 181, 208, 59, 219, 144, 208, 60, 175, 210, 80, 61, 187, 114, 208, 62, 143, 180, 80, 63, 155, 84, 208, 64, 102, 91, 208, 69, 68, 53, 80, 69, 243, 140, 208, 71, 36, 23, 80, 71, 220, 169, 80, 73, 3, 249, 80, 73, 179, 80, 208, 74, 227, 219, 80, 75, 156, 109, 80, 76, 204, 247, 208, 77, 133, 137, 208, 78, 191, 78, 208, 79, 119, 224, 208, 80, 149, 246, 80, 81, 60, 19, 80, 82, 117, 216, 80, 83, 27, 245, 80, 84, 85, 186, 80, 84, 251, 215, 80, 86, 53, 156, 80, 86, 228, 243, 208, 88, 30, 184, 208, 88, 196, 213, 208, 89, 254, 154, 208, 90, 164, 183, 208, 91, 222, 124, 208, 92, 132, 153, 208, 93, 190, 94, 208, 94, 100, 123, 208, 95, 158, 64, 208, 96, 77, 152, 80, 97, 135, 93, 80, 98, 45, 122, 80, 99, 103, 63, 80, 100, 13, 92, 80, 101, 71, 33, 80, 101, 237, 62, 80, 103, 39, 3, 80, 103, 205, 32, 80, 105, 6, 229, 80, 105, 173, 2, 80, 106, 230, 199, 80, 107, 150, 30, 208, 108, 207, 227, 208, 109, 118, 0, 208, 110, 175, 197, 208, 111, 85, 226, 208, 112, 143, 167, 208, 113, 53, 196, 208, 114, 111, 137, 208, 115, 21, 166, 208, 116, 79, 107, 208, 116, 254, 195, 80, 118, 56, 136, 80, 118, 222, 165, 80, 120, 24, 106, 80, 120, 190, 135, 80, 121, 248, 76, 80, 122, 158, 105, 80, 123, 216, 46, 80, 124, 126, 75, 80, 125, 184, 16, 80, 126, 94, 45, 80, 127, 151, 242, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 255, 255, 178, 200, 0, 0, 255, 255, 178, 192, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 0, 12, 255, 255, 199, 192, 1, 8, 76, 77, 84, 0, 72, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 53, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 47, 48, 44, 77, 49, 49, 46, 49, 46, 48, 47, 49, 10}, + + "zoneinfo/America/Hermosillo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 203, 234, 113, 96, 216, 145, 180, 240, 0, 0, 112, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 0, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 255, 255, 151, 248, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 10}, + + "zoneinfo/America/Indiana/Indianapolis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 202, 87, 34, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 232, 242, 22, 240, 234, 7, 0, 0, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Indiana/Knox": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 244, 95, 135, 112, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 202, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Indiana/Marengo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 220, 222, 151, 128, 221, 169, 144, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 145, 188, 240, 239, 175, 224, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 178, 112, 9, 173, 148, 240, 10, 240, 134, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 13, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Indiana/Petersburg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 228, 103, 61, 224, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 145, 188, 240, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 246, 63, 105, 112, 247, 47, 104, 128, 250, 8, 103, 240, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 174, 45, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Indiana/Tell_City": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 9, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 103, 61, 224, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 113, 158, 240, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 169, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Indiana/Vevay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 226, 126, 61, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 176, 64, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Indiana/Vincennes": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 103, 61, 224, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 113, 158, 240, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 173, 241, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Indiana/Winamac": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 145, 188, 240, 239, 175, 224, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 1, 2, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 174, 207, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Indianapolis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 202, 87, 34, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 232, 242, 22, 240, 234, 7, 0, 0, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Inuvik": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 5, 0, 0, 0, 21, 128, 0, 0, 0, 224, 6, 78, 128, 247, 47, 104, 128, 248, 40, 148, 0, 17, 137, 144, 32, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 0, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 0, 0, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 143, 128, 0, 9, 255, 255, 157, 144, 0, 13, 255, 255, 171, 160, 1, 17, 45, 48, 48, 0, 80, 68, 68, 84, 0, 80, 83, 84, 0, 77, 83, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Iqaluit": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 10, 0, 0, 0, 33, 128, 0, 0, 0, 204, 108, 161, 128, 210, 35, 244, 112, 210, 96, 251, 224, 247, 47, 62, 80, 248, 40, 105, 208, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 0, 5, 1, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 6, 7, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 199, 192, 1, 17, 255, 255, 199, 192, 1, 21, 255, 255, 171, 160, 0, 25, 255, 255, 185, 176, 1, 29, 255, 255, 199, 192, 1, 17, 255, 255, 185, 176, 0, 8, 45, 48, 48, 0, 69, 80, 84, 0, 69, 83, 84, 0, 69, 68, 68, 84, 0, 69, 68, 84, 0, 69, 87, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Jamaica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 147, 15, 180, 255, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 184, 1, 0, 0, 255, 255, 184, 1, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 76, 77, 84, 0, 75, 77, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 10}, + + "zoneinfo/America/Jujuy": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 42, 87, 192, 39, 226, 219, 176, 40, 238, 138, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 4, 5, 4, 5, 3, 5, 4, 5, 5, 255, 255, 194, 200, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Juneau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 9, 0, 0, 0, 38, 128, 0, 0, 0, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 99, 32, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 4, 1, 4, 1, 4, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 255, 255, 129, 251, 0, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 143, 128, 1, 20, 255, 255, 129, 112, 0, 24, 255, 255, 143, 128, 1, 28, 255, 255, 129, 112, 0, 33, 76, 77, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 80, 68, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Kentucky/Louisville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 164, 115, 247, 0, 165, 22, 17, 112, 202, 13, 78, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 210, 219, 151, 96, 211, 164, 9, 112, 213, 85, 213, 0, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 233, 23, 0, 240, 234, 7, 0, 0, 234, 246, 226, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 30, 144, 112, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 178, 112, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 154, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Kentucky/Monticello": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 176, 116, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 199, 192, 1, 20, 255, 255, 185, 176, 0, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Knox_IN": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 244, 95, 135, 112, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 202, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Kralendijk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 147, 30, 46, 35, 246, 152, 236, 72, 0, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/La_Paz": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 17, 128, 0, 0, 0, 184, 30, 150, 228, 184, 238, 213, 212, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 192, 28, 0, 0, 255, 255, 192, 28, 0, 4, 255, 255, 206, 44, 1, 8, 255, 255, 199, 192, 0, 13, 76, 77, 84, 0, 67, 77, 84, 0, 66, 79, 83, 84, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + + "zoneinfo/America/Lima": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 140, 116, 64, 212, 195, 207, 74, 80, 196, 69, 227, 64, 197, 47, 74, 208, 198, 31, 45, 192, 199, 15, 44, 208, 199, 255, 15, 192, 30, 24, 196, 80, 30, 143, 93, 64, 31, 249, 247, 208, 32, 112, 144, 192, 37, 158, 227, 208, 38, 21, 124, 192, 45, 37, 3, 80, 45, 155, 156, 64, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 255, 255, 183, 196, 0, 0, 255, 255, 183, 172, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + + "zoneinfo/America/Los_Angeles": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 72, 160, 159, 187, 21, 144, 160, 134, 42, 160, 161, 154, 247, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 214, 254, 116, 92, 216, 128, 173, 144, 218, 254, 195, 144, 219, 192, 144, 16, 220, 222, 165, 144, 221, 169, 172, 144, 222, 190, 135, 144, 223, 137, 142, 144, 224, 158, 105, 144, 225, 105, 112, 144, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 239, 175, 238, 144, 240, 113, 187, 16, 241, 143, 208, 144, 242, 127, 193, 144, 243, 111, 178, 144, 244, 95, 163, 144, 245, 79, 148, 144, 246, 63, 133, 144, 247, 47, 118, 144, 248, 40, 162, 16, 249, 15, 88, 144, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 145, 38, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Louisville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 164, 115, 247, 0, 165, 22, 17, 112, 202, 13, 78, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 210, 219, 151, 96, 211, 164, 9, 112, 213, 85, 213, 0, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 233, 23, 0, 240, 234, 7, 0, 0, 234, 246, 226, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 30, 144, 112, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 178, 112, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 154, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Lower_Princes": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 147, 30, 46, 35, 246, 152, 236, 72, 0, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Maceio": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 104, 124, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 48, 128, 121, 48, 49, 29, 77, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 57, 242, 74, 32, 59, 200, 255, 176, 60, 111, 14, 160, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 222, 132, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Managua": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 189, 45, 72, 232, 6, 67, 116, 96, 9, 164, 62, 80, 17, 81, 248, 224, 17, 212, 111, 80, 19, 49, 218, 224, 19, 180, 81, 80, 41, 97, 145, 32, 42, 193, 75, 80, 43, 67, 221, 224, 50, 201, 239, 80, 66, 88, 192, 224, 67, 63, 105, 80, 68, 84, 110, 128, 69, 31, 89, 96, 1, 2, 3, 2, 4, 2, 4, 2, 3, 2, 3, 2, 4, 2, 4, 2, 255, 255, 175, 28, 0, 0, 255, 255, 175, 24, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 10}, + + "zoneinfo/America/Manaus": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 127, 68, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 44, 192, 195, 64, 45, 102, 210, 48, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 199, 188, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + + "zoneinfo/America/Marigot": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Martinique": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 17, 128, 0, 0, 0, 145, 163, 200, 68, 19, 77, 110, 64, 20, 52, 22, 176, 1, 2, 3, 2, 255, 255, 198, 188, 0, 0, 255, 255, 198, 188, 0, 4, 255, 255, 199, 192, 0, 9, 255, 255, 213, 208, 1, 13, 76, 77, 84, 0, 70, 70, 77, 84, 0, 65, 83, 84, 0, 65, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Matamoros": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 165, 182, 218, 96, 34, 85, 241, 0, 35, 106, 189, 240, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 162, 64, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 1, 8, 76, 77, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Mazatlan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 203, 234, 113, 96, 216, 145, 180, 240, 0, 0, 112, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 184, 85, 16, 76, 205, 34, 0, 77, 152, 55, 16, 78, 173, 4, 0, 79, 120, 25, 16, 80, 140, 230, 0, 81, 97, 53, 144, 82, 108, 200, 0, 83, 65, 23, 144, 84, 76, 170, 0, 85, 32, 249, 144, 86, 44, 140, 0, 87, 0, 219, 144, 88, 21, 168, 128, 88, 224, 189, 144, 89, 245, 138, 128, 90, 192, 159, 144, 91, 213, 108, 128, 92, 169, 188, 16, 93, 181, 78, 128, 94, 137, 158, 16, 95, 149, 48, 128, 96, 105, 128, 16, 97, 126, 77, 0, 98, 73, 98, 16, 99, 94, 47, 0, 100, 41, 68, 16, 101, 62, 17, 0, 102, 18, 96, 144, 103, 29, 243, 0, 103, 242, 66, 144, 104, 253, 213, 0, 105, 210, 36, 144, 106, 221, 183, 0, 107, 178, 6, 144, 108, 198, 211, 128, 109, 145, 232, 144, 110, 166, 181, 128, 111, 113, 202, 144, 112, 134, 151, 128, 113, 90, 231, 16, 114, 102, 121, 128, 115, 58, 201, 16, 116, 70, 91, 128, 117, 26, 171, 16, 118, 47, 120, 0, 118, 250, 141, 16, 120, 15, 90, 0, 120, 218, 111, 16, 121, 239, 60, 0, 122, 186, 81, 16, 123, 207, 30, 0, 124, 163, 109, 144, 125, 175, 0, 0, 126, 131, 79, 144, 127, 142, 226, 0, 0, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 156, 60, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/America/Mendoza": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 25, 52, 64, 39, 205, 195, 176, 40, 250, 103, 192, 41, 176, 72, 176, 42, 224, 225, 64, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 176, 19, 176, 65, 86, 62, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 3, 2, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 124, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Menominee": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 249, 15, 74, 128, 250, 8, 103, 240, 254, 184, 43, 0, 6, 64, 223, 112, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 221, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Merida": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 165, 182, 218, 96, 22, 134, 213, 96, 24, 76, 75, 80, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 0, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 255, 255, 171, 252, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 0, 4, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/America/Metlakatla": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 7, 0, 0, 0, 30, 128, 0, 0, 0, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 132, 166, 0, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 129, 112, 0, 20, 255, 255, 143, 128, 1, 25, 76, 77, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 80, 68, 84, 0, 65, 75, 83, 84, 0, 65, 75, 68, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Mexico_City": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 197, 222, 176, 96, 198, 151, 52, 80, 201, 85, 241, 224, 201, 234, 221, 80, 207, 2, 198, 224, 207, 183, 86, 80, 218, 153, 21, 224, 219, 118, 131, 208, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 0, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 163, 12, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 67, 87, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/America/Miquelon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 145, 182, 56, 168, 19, 110, 99, 192, 32, 117, 228, 208, 33, 129, 119, 64, 34, 85, 198, 208, 35, 106, 147, 192, 36, 53, 168, 208, 37, 74, 117, 192, 38, 21, 138, 208, 39, 42, 87, 192, 39, 254, 167, 80, 41, 10, 57, 192, 41, 222, 137, 80, 42, 234, 27, 192, 43, 190, 107, 80, 44, 211, 56, 64, 45, 158, 77, 80, 46, 179, 26, 64, 47, 126, 47, 80, 48, 146, 252, 64, 49, 103, 75, 208, 50, 114, 222, 64, 51, 71, 45, 208, 52, 82, 192, 64, 53, 39, 15, 208, 54, 50, 162, 64, 55, 6, 241, 208, 56, 27, 190, 192, 56, 230, 211, 208, 57, 251, 160, 192, 58, 198, 181, 208, 59, 219, 130, 192, 60, 175, 210, 80, 61, 187, 100, 192, 62, 143, 180, 80, 63, 155, 70, 192, 64, 111, 150, 80, 65, 132, 99, 64, 66, 79, 120, 80, 67, 100, 69, 64, 68, 47, 90, 80, 69, 68, 39, 64, 69, 243, 140, 208, 71, 45, 67, 192, 71, 211, 110, 208, 73, 13, 37, 192, 73, 179, 80, 208, 74, 237, 7, 192, 75, 156, 109, 80, 76, 214, 36, 64, 77, 124, 79, 80, 78, 182, 6, 64, 79, 92, 49, 80, 80, 149, 232, 64, 81, 60, 19, 80, 82, 117, 202, 64, 83, 27, 245, 80, 84, 85, 172, 64, 84, 251, 215, 80, 86, 53, 142, 64, 86, 228, 243, 208, 88, 30, 170, 192, 88, 196, 213, 208, 89, 254, 140, 192, 90, 164, 183, 208, 91, 222, 110, 192, 92, 132, 153, 208, 93, 190, 80, 192, 94, 100, 123, 208, 95, 158, 50, 192, 96, 77, 152, 80, 97, 135, 79, 64, 98, 45, 122, 80, 99, 103, 49, 64, 100, 13, 92, 80, 101, 71, 19, 64, 101, 237, 62, 80, 103, 38, 245, 64, 103, 205, 32, 80, 105, 6, 215, 64, 105, 173, 2, 80, 106, 230, 185, 64, 107, 150, 30, 208, 108, 207, 213, 192, 109, 118, 0, 208, 110, 175, 183, 192, 111, 85, 226, 208, 112, 143, 153, 192, 113, 53, 196, 208, 114, 111, 123, 192, 115, 21, 166, 208, 116, 79, 93, 192, 116, 254, 195, 80, 118, 56, 122, 64, 118, 222, 165, 80, 120, 24, 92, 64, 120, 190, 135, 80, 121, 248, 62, 64, 122, 158, 105, 80, 123, 216, 32, 64, 124, 126, 75, 80, 125, 184, 2, 64, 126, 94, 45, 80, 127, 151, 228, 64, 127, 255, 255, 255, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 255, 255, 203, 88, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 0, 8, 255, 255, 227, 224, 1, 12, 76, 77, 84, 0, 65, 83, 84, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 60, 45, 48, 50, 62, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Moncton": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 128, 241, 182, 80, 158, 184, 133, 96, 159, 186, 221, 80, 187, 60, 56, 208, 187, 180, 35, 64, 189, 28, 26, 208, 189, 148, 5, 64, 190, 251, 252, 208, 191, 115, 231, 64, 192, 219, 222, 208, 193, 83, 201, 64, 194, 187, 192, 208, 195, 51, 171, 64, 196, 155, 162, 208, 197, 19, 141, 64, 198, 112, 248, 208, 199, 13, 205, 64, 200, 72, 241, 208, 200, 237, 175, 64, 202, 22, 94, 208, 202, 214, 203, 192, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 211, 117, 214, 224, 212, 64, 207, 208, 213, 85, 184, 224, 214, 32, 177, 208, 215, 53, 154, 224, 216, 0, 147, 208, 217, 21, 124, 224, 217, 224, 117, 208, 218, 254, 153, 96, 219, 192, 87, 208, 220, 222, 123, 96, 221, 169, 116, 80, 222, 190, 93, 96, 223, 137, 86, 80, 224, 158, 63, 96, 225, 105, 56, 80, 226, 126, 33, 96, 227, 73, 26, 80, 228, 94, 3, 96, 229, 40, 252, 80, 230, 71, 31, 224, 231, 18, 24, 208, 232, 39, 1, 224, 233, 22, 228, 208, 234, 6, 227, 224, 234, 246, 198, 208, 235, 230, 197, 224, 236, 214, 168, 208, 237, 198, 167, 224, 238, 191, 197, 80, 239, 175, 196, 96, 240, 159, 167, 80, 241, 143, 166, 96, 242, 127, 137, 80, 243, 111, 136, 96, 244, 95, 107, 80, 245, 79, 106, 96, 246, 63, 77, 80, 247, 47, 76, 96, 248, 40, 105, 208, 249, 15, 46, 96, 250, 8, 75, 208, 250, 248, 74, 224, 251, 232, 45, 208, 252, 216, 44, 224, 253, 200, 15, 208, 254, 184, 14, 224, 255, 167, 241, 208, 0, 151, 240, 224, 1, 135, 211, 208, 2, 119, 210, 224, 3, 112, 240, 80, 4, 96, 239, 96, 5, 80, 210, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 93, 124, 44, 211, 42, 108, 45, 158, 63, 124, 46, 179, 12, 108, 47, 126, 33, 124, 48, 146, 238, 108, 49, 103, 61, 252, 50, 114, 208, 108, 51, 71, 31, 252, 52, 82, 178, 108, 53, 39, 1, 252, 54, 50, 148, 108, 55, 6, 227, 252, 56, 27, 176, 236, 56, 230, 197, 252, 57, 251, 146, 236, 58, 198, 167, 252, 59, 219, 116, 236, 60, 175, 196, 124, 61, 187, 86, 236, 62, 143, 166, 124, 63, 155, 56, 236, 64, 111, 136, 124, 65, 132, 85, 108, 66, 79, 106, 124, 67, 100, 55, 108, 68, 47, 76, 124, 69, 68, 25, 108, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 195, 68, 0, 0, 255, 255, 185, 176, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 255, 255, 213, 208, 1, 16, 255, 255, 213, 208, 1, 20, 76, 77, 84, 0, 69, 83, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Monterrey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 165, 182, 218, 96, 34, 85, 241, 0, 35, 106, 189, 240, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 161, 244, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 1, 8, 76, 77, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/America/Montevideo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 9, 0, 0, 0, 28, 128, 0, 0, 0, 162, 146, 135, 172, 169, 1, 37, 184, 169, 241, 15, 176, 170, 226, 89, 56, 171, 210, 67, 48, 172, 195, 140, 184, 173, 179, 118, 176, 187, 244, 181, 184, 188, 191, 181, 176, 189, 212, 151, 184, 190, 159, 151, 176, 191, 180, 121, 184, 192, 127, 121, 176, 193, 157, 150, 56, 194, 95, 91, 176, 195, 125, 120, 56, 196, 63, 61, 176, 197, 93, 90, 56, 198, 31, 31, 176, 199, 61, 60, 56, 200, 8, 60, 48, 201, 29, 30, 56, 201, 232, 30, 48, 202, 139, 159, 56, 203, 85, 77, 176, 205, 30, 205, 56, 205, 149, 95, 32, 236, 11, 133, 176, 236, 242, 46, 32, 237, 69, 74, 176, 237, 133, 214, 32, 247, 19, 114, 176, 247, 250, 27, 32, 248, 243, 84, 176, 250, 9, 115, 32, 250, 211, 54, 176, 251, 234, 166, 160, 252, 254, 62, 48, 253, 247, 98, 168, 254, 223, 113, 176, 255, 216, 150, 40, 0, 192, 165, 48, 1, 185, 201, 168, 4, 88, 220, 48, 4, 237, 199, 160, 7, 223, 239, 176, 9, 90, 71, 40, 12, 177, 221, 160, 14, 231, 127, 48, 15, 131, 2, 32, 18, 85, 134, 48, 19, 110, 71, 160, 33, 195, 84, 48, 34, 59, 62, 160, 35, 161, 228, 176, 36, 25, 207, 32, 37, 74, 103, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 10, 43, 176, 41, 176, 58, 160, 42, 224, 211, 48, 43, 144, 28, 160, 65, 76, 246, 48, 66, 70, 47, 192, 67, 72, 163, 208, 68, 19, 156, 192, 69, 31, 75, 80, 69, 243, 126, 192, 71, 8, 103, 208, 71, 211, 96, 192, 72, 232, 73, 208, 73, 179, 66, 192, 74, 200, 43, 208, 75, 156, 95, 64, 76, 168, 13, 208, 77, 124, 65, 64, 78, 135, 239, 208, 79, 92, 35, 64, 80, 113, 12, 80, 81, 60, 5, 64, 82, 80, 238, 80, 83, 27, 231, 64, 84, 48, 208, 80, 84, 251, 201, 64, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 2, 4, 2, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 7, 5, 7, 5, 6, 5, 7, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 5, 255, 255, 203, 84, 0, 0, 255, 255, 203, 84, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 206, 200, 0, 12, 255, 255, 206, 200, 0, 12, 255, 255, 213, 208, 0, 8, 255, 255, 227, 224, 1, 18, 255, 255, 220, 216, 1, 22, 255, 255, 227, 224, 1, 18, 76, 77, 84, 0, 77, 77, 84, 0, 45, 48, 51, 0, 45, 48, 51, 51, 48, 0, 45, 48, 50, 0, 45, 48, 50, 51, 48, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Montreal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 147, 112, 159, 186, 235, 96, 160, 135, 46, 200, 161, 154, 177, 64, 162, 148, 6, 240, 163, 85, 169, 64, 164, 134, 93, 240, 165, 40, 120, 96, 166, 102, 63, 240, 167, 12, 78, 224, 168, 70, 33, 240, 168, 236, 48, 224, 170, 28, 201, 112, 170, 213, 77, 96, 171, 252, 171, 112, 172, 181, 47, 96, 173, 220, 141, 112, 174, 149, 17, 96, 175, 188, 111, 112, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 37, 19, 240, 185, 230, 210, 96, 187, 4, 245, 240, 187, 207, 238, 224, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 170, 208, 214, 32, 163, 192, 215, 53, 140, 208, 216, 0, 133, 192, 217, 21, 110, 208, 218, 51, 118, 64, 218, 254, 167, 112, 220, 19, 116, 96, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 41, 10, 96, 230, 71, 45, 240, 231, 18, 38, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 181, 148, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Montserrat": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Nassau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 147, 55, 66, 138, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 183, 118, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/New_York": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 30, 112, 159, 186, 235, 96, 160, 134, 0, 112, 161, 154, 205, 96, 162, 101, 226, 112, 163, 131, 233, 224, 164, 106, 174, 112, 165, 53, 167, 96, 166, 83, 202, 240, 167, 21, 137, 96, 168, 51, 172, 240, 168, 254, 165, 224, 170, 19, 142, 240, 170, 222, 135, 224, 171, 243, 112, 240, 172, 190, 105, 224, 173, 211, 82, 240, 174, 158, 75, 224, 175, 179, 52, 240, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 27, 217, 112, 185, 230, 210, 96, 187, 4, 245, 240, 187, 198, 180, 96, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 200, 248, 87, 96, 202, 13, 64, 112, 202, 216, 57, 96, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 198, 240, 214, 32, 191, 224, 215, 53, 168, 240, 216, 0, 161, 224, 217, 21, 138, 240, 217, 224, 131, 224, 218, 254, 167, 112, 219, 192, 101, 224, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 87, 46, 224, 230, 71, 45, 240, 231, 55, 16, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 186, 158, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Nipigon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 147, 112, 159, 186, 235, 96, 200, 248, 73, 80, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 64, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Nome": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 38, 128, 0, 0, 0, 203, 137, 68, 208, 210, 35, 244, 112, 210, 97, 80, 64, 250, 210, 85, 176, 254, 184, 113, 80, 255, 168, 84, 64, 0, 152, 83, 80, 1, 136, 54, 64, 2, 120, 53, 80, 3, 113, 82, 192, 4, 97, 81, 208, 5, 81, 52, 192, 6, 65, 51, 208, 7, 49, 22, 192, 7, 141, 109, 208, 9, 16, 248, 192, 9, 173, 233, 80, 10, 240, 218, 192, 11, 224, 217, 208, 12, 217, 247, 64, 13, 192, 187, 208, 14, 185, 217, 64, 15, 169, 216, 80, 16, 153, 187, 64, 17, 137, 186, 80, 18, 121, 157, 64, 19, 105, 156, 80, 20, 89, 127, 64, 21, 73, 126, 80, 22, 57, 97, 64, 23, 41, 96, 80, 24, 34, 125, 192, 25, 9, 66, 80, 26, 2, 95, 192, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 255, 255, 100, 238, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 129, 112, 0, 24, 255, 255, 143, 128, 1, 28, 255, 255, 129, 112, 0, 33, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Noronha": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 101, 100, 184, 15, 59, 208, 184, 253, 50, 144, 185, 241, 38, 32, 186, 222, 102, 16, 218, 56, 160, 32, 218, 235, 236, 32, 220, 25, 211, 160, 220, 185, 75, 16, 221, 251, 7, 32, 222, 155, 208, 16, 223, 221, 140, 32, 224, 84, 37, 16, 244, 151, 241, 160, 245, 5, 80, 16, 246, 192, 86, 32, 247, 14, 16, 144, 248, 81, 30, 32, 248, 199, 183, 16, 250, 10, 196, 160, 250, 168, 234, 144, 251, 235, 248, 32, 252, 139, 111, 144, 29, 201, 128, 32, 30, 120, 201, 144, 31, 160, 39, 160, 32, 51, 193, 144, 33, 129, 91, 32, 34, 11, 186, 144, 35, 88, 2, 160, 35, 226, 98, 16, 37, 55, 228, 160, 37, 212, 185, 16, 55, 246, 184, 160, 56, 184, 119, 16, 57, 223, 213, 32, 57, 233, 1, 144, 59, 200, 241, 160, 60, 111, 0, 144, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 225, 156, 0, 0, 255, 255, 241, 240, 1, 4, 255, 255, 227, 224, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 50, 62, 50, 10}, + + "zoneinfo/America/North_Dakota/Beulah": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 160, 149, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 24, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/North_Dakota/Center": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 161, 8, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 24, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/North_Dakota/New_Salem": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 160, 237, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 24, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Ojinaga": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 0, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 158, 28, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Panama": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 139, 244, 97, 232, 1, 2, 255, 255, 181, 112, 0, 0, 255, 255, 181, 24, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 67, 77, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 10}, + + "zoneinfo/America/Pangnirtung": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 12, 0, 0, 0, 41, 128, 0, 0, 0, 163, 213, 82, 128, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 247, 47, 48, 64, 248, 40, 91, 192, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 0, 3, 1, 2, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 8, 9, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 0, 0, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 1, 21, 255, 255, 199, 192, 1, 25, 255, 255, 185, 176, 0, 29, 255, 255, 171, 160, 0, 33, 255, 255, 185, 176, 1, 37, 255, 255, 199, 192, 1, 25, 255, 255, 185, 176, 0, 29, 45, 48, 48, 0, 65, 87, 84, 0, 65, 80, 84, 0, 65, 83, 84, 0, 65, 68, 68, 84, 0, 65, 68, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Paramaribo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 18, 128, 0, 0, 0, 145, 5, 142, 184, 190, 42, 75, 196, 210, 98, 44, 180, 27, 190, 49, 184, 127, 255, 255, 255, 0, 1, 2, 3, 4, 4, 255, 255, 204, 72, 0, 0, 255, 255, 204, 60, 0, 4, 255, 255, 204, 76, 0, 4, 255, 255, 206, 200, 0, 8, 255, 255, 213, 208, 0, 14, 76, 77, 84, 0, 80, 77, 84, 0, 45, 48, 51, 51, 48, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Phoenix": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 207, 23, 223, 28, 207, 143, 229, 172, 208, 129, 26, 28, 250, 248, 117, 16, 251, 232, 88, 0, 2, 1, 2, 1, 2, 3, 2, 3, 2, 1, 2, 255, 255, 150, 238, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 10}, + + "zoneinfo/America/Port-au-Prince": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 6, 0, 0, 0, 17, 128, 0, 0, 0, 156, 110, 113, 252, 25, 27, 70, 208, 26, 1, 239, 64, 26, 241, 238, 80, 27, 225, 209, 64, 28, 209, 208, 80, 29, 193, 179, 64, 30, 177, 178, 80, 31, 161, 149, 64, 32, 145, 148, 80, 33, 129, 119, 64, 34, 85, 212, 224, 35, 106, 175, 224, 36, 53, 182, 224, 37, 74, 145, 224, 38, 21, 152, 224, 39, 42, 115, 224, 39, 254, 181, 96, 41, 10, 85, 224, 41, 222, 151, 96, 42, 234, 55, 224, 43, 190, 121, 96, 44, 211, 84, 96, 45, 158, 91, 96, 46, 179, 54, 96, 47, 126, 61, 96, 48, 147, 24, 96, 49, 103, 89, 224, 50, 114, 250, 96, 51, 71, 59, 224, 52, 82, 220, 96, 66, 79, 120, 80, 67, 100, 69, 64, 68, 47, 90, 80, 69, 68, 39, 64, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 188, 48, 0, 0, 255, 255, 188, 68, 0, 4, 255, 255, 199, 192, 1, 9, 255, 255, 185, 176, 0, 13, 255, 255, 199, 192, 1, 9, 255, 255, 185, 176, 0, 13, 76, 77, 84, 0, 80, 80, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Port_of_Spain": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Porto_Acre": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 5, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 134, 144, 184, 15, 102, 0, 184, 253, 92, 192, 185, 241, 80, 80, 186, 222, 144, 64, 218, 56, 202, 80, 218, 236, 22, 80, 220, 25, 253, 208, 220, 185, 117, 64, 221, 251, 49, 80, 222, 155, 250, 64, 223, 221, 182, 80, 224, 84, 79, 64, 244, 152, 27, 208, 245, 5, 122, 64, 246, 192, 128, 80, 247, 14, 58, 192, 248, 81, 72, 80, 248, 199, 225, 64, 250, 10, 238, 208, 250, 169, 20, 192, 251, 236, 34, 80, 252, 139, 153, 192, 29, 201, 170, 80, 30, 120, 243, 192, 31, 160, 81, 208, 32, 51, 235, 192, 33, 129, 133, 80, 34, 11, 228, 192, 72, 96, 127, 80, 82, 127, 4, 192, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 192, 112, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + + "zoneinfo/America/Porto_Velho": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 130, 232, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 196, 24, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + + "zoneinfo/America/Puerto_Rico": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 203, 246, 50, 192, 210, 35, 244, 112, 210, 96, 237, 208, 1, 3, 2, 1, 255, 255, 194, 7, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 213, 208, 1, 12, 76, 77, 84, 0, 65, 83, 84, 0, 65, 80, 84, 0, 65, 87, 84, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Punta_Arenas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 8, 0, 0, 0, 20, 128, 0, 0, 0, 143, 48, 71, 70, 155, 92, 229, 80, 159, 124, 226, 198, 161, 0, 113, 192, 176, 94, 119, 198, 177, 119, 61, 64, 178, 65, 0, 208, 179, 88, 112, 192, 180, 34, 52, 80, 181, 57, 164, 64, 182, 3, 103, 208, 183, 26, 215, 192, 183, 228, 155, 80, 184, 253, 92, 192, 185, 199, 32, 80, 204, 28, 110, 64, 204, 108, 231, 208, 213, 51, 85, 192, 213, 118, 146, 64, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 88, 67, 134, 176, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 7, 255, 255, 189, 132, 0, 0, 255, 255, 189, 186, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 12, 255, 255, 199, 192, 1, 12, 255, 255, 213, 208, 1, 16, 255, 255, 199, 192, 0, 12, 255, 255, 213, 208, 0, 16, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 53, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Rainy_River": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 161, 128, 159, 186, 249, 112, 200, 248, 87, 96, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 8, 32, 207, 128, 9, 16, 178, 112, 10, 0, 177, 128, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 167, 88, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Rankin_Inlet": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 231, 140, 110, 0, 247, 47, 76, 96, 248, 40, 119, 224, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 0, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 171, 160, 0, 9, 255, 255, 185, 176, 1, 13, 255, 255, 185, 176, 0, 17, 255, 255, 171, 160, 0, 9, 45, 48, 48, 0, 67, 68, 68, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Recife": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 103, 184, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 57, 233, 15, 160, 59, 200, 255, 176, 60, 111, 14, 160, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 223, 72, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Regina": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 134, 253, 147, 28, 158, 184, 175, 144, 159, 187, 7, 128, 181, 101, 79, 240, 182, 48, 72, 224, 183, 69, 49, 240, 184, 16, 42, 224, 185, 37, 19, 240, 185, 240, 12, 224, 187, 14, 48, 112, 187, 207, 238, 224, 188, 238, 18, 112, 189, 185, 11, 96, 194, 114, 8, 240, 195, 97, 235, 224, 196, 81, 234, 240, 197, 56, 147, 96, 198, 49, 204, 240, 199, 33, 175, 224, 200, 26, 233, 112, 201, 10, 204, 96, 201, 250, 203, 112, 202, 234, 174, 96, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 211, 99, 140, 16, 212, 83, 111, 0, 213, 85, 227, 16, 214, 32, 220, 0, 215, 53, 197, 16, 216, 0, 190, 0, 217, 21, 167, 16, 217, 224, 160, 0, 218, 254, 195, 144, 219, 192, 130, 0, 220, 222, 165, 144, 221, 169, 158, 128, 222, 190, 135, 144, 223, 137, 128, 128, 224, 158, 105, 144, 225, 105, 98, 128, 226, 126, 75, 144, 227, 73, 68, 128, 228, 94, 45, 144, 229, 41, 38, 128, 230, 71, 74, 16, 231, 18, 67, 0, 232, 39, 44, 16, 232, 242, 37, 0, 235, 230, 240, 16, 236, 214, 211, 0, 237, 198, 210, 16, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 157, 228, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 171, 160, 0, 20, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 10}, + + "zoneinfo/America/Resolute": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 213, 251, 129, 128, 247, 47, 76, 96, 248, 40, 119, 224, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 0, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 171, 160, 0, 9, 255, 255, 185, 176, 1, 13, 255, 255, 185, 176, 0, 17, 255, 255, 171, 160, 0, 9, 45, 48, 48, 0, 67, 68, 68, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Rio_Branco": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 5, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 134, 144, 184, 15, 102, 0, 184, 253, 92, 192, 185, 241, 80, 80, 186, 222, 144, 64, 218, 56, 202, 80, 218, 236, 22, 80, 220, 25, 253, 208, 220, 185, 117, 64, 221, 251, 49, 80, 222, 155, 250, 64, 223, 221, 182, 80, 224, 84, 79, 64, 244, 152, 27, 208, 245, 5, 122, 64, 246, 192, 128, 80, 247, 14, 58, 192, 248, 81, 72, 80, 248, 199, 225, 64, 250, 10, 238, 208, 250, 169, 20, 192, 251, 236, 34, 80, 252, 139, 153, 192, 29, 201, 170, 80, 30, 120, 243, 192, 31, 160, 81, 208, 32, 51, 235, 192, 33, 129, 133, 80, 34, 11, 228, 192, 72, 96, 127, 80, 82, 127, 4, 192, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 192, 112, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + + "zoneinfo/America/Rosario": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 195, 208, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Santa_Isabel": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 165, 182, 246, 128, 169, 121, 79, 112, 175, 242, 124, 240, 182, 102, 100, 112, 183, 27, 16, 0, 184, 10, 242, 240, 203, 234, 141, 128, 210, 35, 244, 112, 210, 153, 186, 112, 215, 27, 89, 0, 216, 145, 180, 240, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 70, 15, 130, 160, 71, 36, 79, 144, 71, 248, 159, 32, 73, 4, 49, 144, 73, 216, 129, 32, 74, 228, 19, 144, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 0, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Santarem": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 122, 72, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 72, 96, 113, 64, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 3, 255, 255, 204, 184, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 0, 4, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/America/Santiago": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 8, 0, 0, 0, 20, 128, 0, 0, 0, 143, 48, 71, 70, 155, 92, 229, 80, 159, 124, 226, 198, 161, 0, 113, 192, 176, 94, 119, 198, 177, 119, 61, 64, 178, 65, 0, 208, 179, 88, 112, 192, 180, 34, 52, 80, 181, 57, 164, 64, 182, 3, 103, 208, 183, 26, 215, 192, 183, 228, 155, 80, 184, 253, 92, 192, 185, 199, 32, 80, 204, 28, 110, 64, 204, 108, 231, 208, 211, 220, 143, 192, 212, 27, 201, 176, 213, 51, 85, 192, 213, 118, 146, 64, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 89, 23, 200, 48, 89, 143, 206, 192, 90, 247, 170, 48, 91, 111, 176, 192, 92, 215, 140, 48, 93, 79, 146, 192, 94, 183, 110, 48, 95, 47, 116, 192, 96, 151, 80, 48, 97, 24, 145, 64, 98, 128, 108, 176, 98, 248, 115, 64, 100, 96, 78, 176, 100, 216, 85, 64, 102, 64, 48, 176, 102, 184, 55, 64, 104, 32, 18, 176, 104, 152, 25, 64, 105, 255, 244, 176, 106, 119, 251, 64, 107, 223, 214, 176, 108, 97, 23, 192, 109, 200, 243, 48, 110, 64, 249, 192, 111, 168, 213, 48, 112, 32, 219, 192, 113, 136, 183, 48, 114, 0, 189, 192, 115, 104, 153, 48, 115, 224, 159, 192, 117, 72, 123, 48, 117, 201, 188, 64, 119, 49, 151, 176, 119, 169, 158, 64, 121, 17, 121, 176, 121, 137, 128, 64, 122, 241, 91, 176, 123, 105, 98, 64, 124, 209, 61, 176, 125, 73, 68, 64, 126, 177, 31, 176, 127, 41, 38, 64, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 3, 2, 3, 5, 3, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 6, 255, 255, 189, 186, 0, 0, 255, 255, 189, 186, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 12, 255, 255, 199, 192, 1, 12, 255, 255, 213, 208, 1, 16, 255, 255, 213, 208, 1, 16, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 53, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 60, 45, 48, 52, 62, 52, 60, 45, 48, 51, 62, 44, 77, 56, 46, 50, 46, 54, 47, 50, 52, 44, 77, 53, 46, 50, 46, 54, 47, 50, 52, 10}, + + "zoneinfo/America/Santo_Domingo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 6, 0, 0, 0, 27, 128, 0, 0, 0, 186, 223, 66, 96, 250, 8, 75, 208, 250, 167, 195, 64, 255, 167, 241, 208, 0, 67, 123, 200, 1, 135, 211, 208, 1, 250, 127, 72, 3, 112, 240, 80, 3, 221, 4, 72, 5, 80, 210, 80, 5, 191, 137, 72, 7, 48, 180, 80, 7, 160, 188, 200, 9, 16, 150, 80, 57, 251, 188, 224, 58, 41, 225, 96, 1, 3, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 255, 255, 190, 120, 0, 0, 255, 255, 190, 96, 0, 4, 255, 255, 199, 192, 1, 9, 255, 255, 185, 176, 0, 13, 255, 255, 192, 184, 1, 17, 255, 255, 199, 192, 0, 23, 76, 77, 84, 0, 83, 68, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Sao_Paulo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 114, 180, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 90, 9, 48, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 39, 33, 15, 48, 39, 189, 227, 160, 41, 0, 241, 48, 41, 148, 139, 32, 42, 234, 13, 176, 43, 107, 50, 160, 44, 192, 181, 48, 45, 102, 196, 32, 46, 160, 151, 48, 47, 70, 166, 32, 48, 128, 121, 48, 49, 29, 77, 160, 50, 87, 32, 176, 51, 6, 106, 32, 52, 56, 84, 48, 52, 248, 193, 32, 54, 32, 31, 48, 54, 207, 104, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 58, 143, 44, 160, 59, 200, 255, 176, 60, 111, 14, 160, 61, 196, 145, 48, 62, 78, 240, 160, 63, 145, 254, 48, 64, 46, 210, 160, 65, 134, 248, 48, 66, 23, 239, 32, 67, 81, 194, 48, 67, 247, 209, 32, 69, 77, 83, 176, 69, 224, 237, 160, 71, 17, 134, 48, 71, 183, 149, 32, 72, 250, 162, 176, 73, 151, 119, 32, 74, 218, 132, 176, 75, 128, 147, 160, 76, 186, 102, 176, 77, 96, 117, 160, 78, 154, 72, 176, 79, 73, 146, 32, 80, 131, 101, 48, 81, 32, 57, 160, 82, 99, 71, 48, 83, 0, 27, 160, 84, 67, 41, 48, 84, 233, 56, 32, 86, 35, 11, 48, 86, 201, 26, 32, 88, 2, 237, 48, 88, 168, 252, 32, 89, 226, 207, 48, 90, 136, 222, 32, 91, 203, 235, 176, 92, 104, 192, 32, 93, 171, 205, 176, 94, 72, 162, 32, 95, 139, 175, 176, 96, 49, 190, 160, 97, 107, 145, 176, 98, 17, 160, 160, 99, 75, 115, 176, 99, 250, 189, 32, 101, 43, 85, 176, 101, 209, 100, 160, 103, 20, 114, 48, 103, 177, 70, 160, 104, 244, 84, 48, 105, 154, 99, 32, 106, 212, 54, 48, 107, 122, 69, 32, 108, 180, 24, 48, 109, 90, 39, 32, 110, 147, 250, 48, 111, 58, 9, 32, 112, 125, 22, 176, 113, 25, 235, 32, 114, 92, 248, 176, 114, 249, 205, 32, 116, 60, 218, 176, 116, 217, 175, 32, 118, 28, 188, 176, 118, 194, 203, 160, 119, 252, 158, 176, 120, 171, 232, 32, 121, 220, 128, 176, 122, 130, 143, 160, 123, 197, 157, 48, 124, 98, 113, 160, 125, 165, 127, 48, 126, 75, 142, 32, 127, 133, 97, 48, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 212, 76, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 60, 45, 48, 50, 62, 44, 77, 49, 48, 46, 51, 46, 48, 47, 48, 44, 77, 50, 46, 51, 46, 48, 47, 48, 10}, + + "zoneinfo/America/Scoresbysund": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 16, 128, 0, 0, 0, 155, 128, 76, 24, 19, 77, 110, 64, 20, 52, 36, 192, 21, 35, 249, 160, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 127, 255, 255, 255, 0, 1, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 255, 255, 235, 104, 0, 0, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 1, 12, 0, 0, 0, 0, 1, 12, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 49, 0, 43, 48, 48, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 45, 48, 49, 62, 49, 60, 43, 48, 48, 62, 44, 77, 51, 46, 53, 46, 48, 47, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 49, 10}, + + "zoneinfo/America/Shiprock": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 162, 101, 254, 144, 163, 132, 6, 0, 164, 69, 224, 144, 164, 143, 166, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 118, 144, 248, 40, 148, 0, 249, 15, 88, 144, 250, 8, 118, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Sitka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 8, 0, 0, 0, 34, 128, 0, 0, 0, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 255, 255, 129, 39, 0, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 129, 112, 0, 20, 255, 255, 143, 128, 1, 24, 255, 255, 129, 112, 0, 29, 76, 77, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 80, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/St_Barthelemy": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/St_Johns": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 9, 0, 0, 0, 25, 128, 0, 0, 0, 156, 207, 98, 12, 157, 164, 230, 252, 158, 184, 126, 140, 159, 186, 214, 124, 160, 182, 136, 220, 161, 56, 255, 76, 162, 149, 25, 92, 163, 132, 252, 76, 164, 116, 251, 92, 165, 100, 222, 76, 166, 94, 23, 220, 167, 68, 192, 76, 168, 61, 249, 220, 169, 36, 162, 76, 170, 29, 219, 220, 171, 4, 132, 76, 171, 253, 189, 220, 172, 228, 102, 76, 173, 221, 159, 220, 174, 205, 130, 204, 175, 189, 129, 220, 176, 173, 100, 204, 177, 166, 158, 92, 178, 141, 70, 204, 179, 134, 128, 92, 180, 109, 40, 204, 181, 102, 98, 92, 182, 77, 10, 204, 183, 70, 68, 92, 184, 44, 236, 204, 185, 38, 38, 92, 186, 22, 9, 76, 187, 15, 66, 220, 187, 245, 235, 76, 188, 239, 36, 220, 189, 213, 205, 76, 190, 158, 77, 108, 190, 207, 6, 168, 191, 181, 175, 24, 192, 184, 49, 56, 193, 121, 239, 168, 194, 152, 19, 56, 195, 89, 209, 168, 196, 119, 245, 56, 197, 57, 179, 168, 198, 97, 17, 184, 199, 25, 149, 168, 200, 64, 243, 184, 201, 2, 178, 40, 202, 32, 213, 184, 202, 226, 148, 40, 204, 0, 183, 184, 210, 35, 244, 112, 210, 96, 230, 200, 211, 136, 68, 216, 212, 74, 3, 72, 213, 104, 38, 216, 214, 41, 229, 72, 215, 72, 8, 216, 216, 9, 199, 72, 217, 39, 234, 216, 217, 233, 169, 72, 219, 17, 7, 88, 219, 210, 197, 200, 220, 222, 116, 88, 221, 169, 109, 72, 222, 190, 86, 88, 223, 137, 79, 72, 224, 158, 56, 88, 225, 105, 49, 72, 226, 126, 26, 88, 227, 73, 19, 72, 228, 93, 252, 88, 229, 40, 245, 72, 230, 71, 24, 216, 231, 18, 17, 200, 232, 38, 250, 216, 232, 241, 243, 200, 234, 6, 220, 216, 234, 209, 213, 200, 235, 230, 190, 216, 236, 177, 183, 200, 237, 198, 160, 216, 238, 191, 190, 72, 239, 175, 189, 88, 240, 159, 160, 72, 241, 143, 159, 88, 242, 127, 130, 72, 243, 111, 129, 88, 244, 95, 100, 72, 245, 79, 99, 88, 246, 63, 70, 72, 247, 47, 69, 88, 248, 40, 98, 200, 249, 15, 39, 88, 250, 8, 68, 200, 250, 248, 67, 216, 251, 232, 38, 200, 252, 216, 37, 216, 253, 200, 8, 200, 254, 184, 7, 216, 255, 167, 234, 200, 0, 151, 233, 216, 1, 135, 204, 200, 2, 119, 203, 216, 3, 112, 233, 72, 4, 96, 232, 88, 5, 80, 203, 72, 6, 64, 202, 88, 7, 48, 173, 72, 8, 32, 172, 88, 9, 16, 143, 72, 10, 0, 142, 88, 10, 240, 113, 72, 11, 224, 112, 88, 12, 217, 141, 200, 13, 192, 82, 88, 14, 185, 111, 200, 15, 169, 110, 216, 16, 153, 81, 200, 17, 137, 80, 216, 18, 121, 51, 200, 19, 105, 50, 216, 20, 89, 21, 200, 21, 73, 20, 216, 22, 56, 247, 200, 23, 40, 246, 216, 24, 34, 20, 72, 25, 8, 216, 216, 26, 1, 246, 72, 26, 241, 245, 88, 27, 225, 216, 72, 28, 209, 215, 88, 29, 193, 186, 72, 30, 177, 185, 88, 31, 161, 156, 72, 32, 117, 207, 244, 33, 129, 98, 100, 34, 85, 177, 244, 35, 106, 112, 212, 36, 53, 147, 244, 37, 74, 96, 228, 38, 21, 117, 244, 39, 42, 66, 228, 39, 254, 146, 116, 41, 10, 36, 228, 41, 222, 116, 116, 42, 234, 6, 228, 43, 190, 86, 116, 44, 211, 35, 100, 45, 158, 56, 116, 46, 179, 5, 100, 47, 126, 26, 116, 48, 146, 231, 100, 49, 103, 54, 244, 50, 114, 201, 100, 51, 71, 24, 244, 52, 82, 171, 100, 53, 38, 250, 244, 54, 50, 141, 100, 55, 6, 220, 244, 56, 27, 169, 228, 56, 230, 190, 244, 57, 251, 139, 228, 58, 198, 160, 244, 59, 219, 109, 228, 60, 175, 189, 116, 61, 187, 79, 228, 62, 143, 159, 116, 63, 155, 49, 228, 64, 111, 129, 116, 65, 132, 78, 100, 66, 79, 99, 116, 67, 100, 48, 100, 68, 47, 69, 116, 69, 68, 18, 100, 69, 243, 119, 244, 71, 45, 46, 228, 71, 211, 89, 244, 73, 13, 16, 228, 73, 179, 59, 244, 74, 236, 242, 228, 75, 156, 88, 116, 76, 214, 15, 100, 77, 124, 58, 116, 78, 182, 13, 72, 79, 92, 56, 88, 80, 149, 239, 72, 81, 60, 26, 88, 82, 117, 209, 72, 83, 27, 252, 88, 84, 85, 179, 72, 84, 251, 222, 88, 86, 53, 149, 72, 86, 228, 250, 216, 88, 30, 177, 200, 88, 196, 220, 216, 89, 254, 147, 200, 90, 164, 190, 216, 91, 222, 117, 200, 92, 132, 160, 216, 93, 190, 87, 200, 94, 100, 130, 216, 95, 158, 57, 200, 96, 77, 159, 88, 97, 135, 86, 72, 98, 45, 129, 88, 99, 103, 56, 72, 100, 13, 99, 88, 101, 71, 26, 72, 101, 237, 69, 88, 103, 38, 252, 72, 103, 205, 39, 88, 105, 6, 222, 72, 105, 173, 9, 88, 106, 230, 192, 72, 107, 150, 37, 216, 108, 207, 220, 200, 109, 118, 7, 216, 110, 175, 190, 200, 111, 85, 233, 216, 112, 143, 160, 200, 113, 53, 203, 216, 114, 111, 130, 200, 115, 21, 173, 216, 116, 79, 100, 200, 116, 254, 202, 88, 118, 56, 129, 72, 118, 222, 172, 88, 120, 24, 99, 72, 120, 190, 142, 88, 121, 248, 69, 72, 122, 158, 112, 88, 123, 216, 39, 72, 124, 126, 82, 88, 125, 184, 9, 72, 126, 94, 52, 88, 127, 151, 235, 72, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 255, 255, 206, 148, 0, 0, 255, 255, 220, 164, 1, 4, 255, 255, 206, 148, 0, 8, 255, 255, 220, 216, 1, 4, 255, 255, 206, 200, 0, 8, 255, 255, 220, 216, 1, 12, 255, 255, 220, 216, 1, 16, 255, 255, 234, 232, 1, 20, 255, 255, 220, 216, 1, 4, 76, 77, 84, 0, 78, 68, 84, 0, 78, 83, 84, 0, 78, 80, 84, 0, 78, 87, 84, 0, 78, 68, 68, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 78, 83, 84, 51, 58, 51, 48, 78, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/St_Kitts": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/St_Lucia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/St_Thomas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/St_Vincent": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Swift_Current": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 134, 253, 150, 24, 158, 184, 175, 144, 159, 187, 7, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 211, 118, 1, 16, 212, 83, 111, 0, 213, 85, 227, 16, 214, 32, 220, 0, 215, 53, 197, 16, 216, 0, 190, 0, 217, 21, 167, 16, 217, 224, 160, 0, 232, 39, 44, 16, 233, 23, 15, 0, 235, 230, 240, 16, 236, 214, 211, 0, 237, 198, 210, 16, 238, 145, 203, 0, 239, 175, 238, 144, 240, 113, 173, 0, 4, 97, 25, 144, 0, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 154, 232, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 171, 160, 0, 20, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 10}, + + "zoneinfo/America/Tegucigalpa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 164, 76, 75, 68, 32, 154, 220, 224, 33, 92, 155, 80, 34, 122, 190, 224, 35, 60, 125, 80, 68, 93, 140, 224, 68, 214, 200, 208, 0, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 60, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 10}, + + "zoneinfo/America/Thule": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 155, 128, 119, 252, 39, 245, 122, 224, 40, 229, 93, 208, 41, 213, 92, 224, 42, 197, 63, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 191, 132, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Thunder_Bay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 143, 36, 123, 224, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 172, 84, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 255, 255, 199, 192, 1, 20, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Tijuana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 165, 182, 246, 128, 169, 121, 79, 112, 175, 242, 124, 240, 182, 102, 100, 112, 183, 27, 16, 0, 184, 10, 242, 240, 203, 234, 141, 128, 210, 35, 244, 112, 210, 153, 186, 112, 215, 27, 89, 0, 216, 145, 180, 240, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 70, 15, 130, 160, 71, 36, 79, 144, 71, 248, 159, 32, 73, 4, 49, 144, 73, 216, 129, 32, 74, 228, 19, 144, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 0, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Toronto": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 147, 112, 159, 186, 235, 96, 160, 135, 46, 200, 161, 154, 177, 64, 162, 148, 6, 240, 163, 85, 169, 64, 164, 134, 93, 240, 165, 40, 120, 96, 166, 102, 63, 240, 167, 12, 78, 224, 168, 70, 33, 240, 168, 236, 48, 224, 170, 28, 201, 112, 170, 213, 77, 96, 171, 252, 171, 112, 172, 181, 47, 96, 173, 220, 141, 112, 174, 149, 17, 96, 175, 188, 111, 112, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 37, 19, 240, 185, 230, 210, 96, 187, 4, 245, 240, 187, 207, 238, 224, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 170, 208, 214, 32, 163, 192, 215, 53, 140, 208, 216, 0, 133, 192, 217, 21, 110, 208, 218, 51, 118, 64, 218, 254, 167, 112, 220, 19, 116, 96, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 41, 10, 96, 230, 71, 45, 240, 231, 18, 38, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 181, 148, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Tortola": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Vancouver": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 189, 160, 159, 187, 21, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 211, 118, 15, 32, 212, 83, 125, 16, 213, 85, 241, 32, 214, 32, 234, 16, 215, 53, 211, 32, 216, 0, 204, 16, 217, 21, 181, 32, 217, 224, 174, 16, 218, 254, 209, 160, 219, 192, 144, 16, 220, 222, 179, 160, 221, 169, 172, 144, 222, 190, 149, 160, 223, 137, 142, 144, 224, 158, 119, 160, 225, 105, 112, 144, 226, 126, 89, 160, 227, 73, 82, 144, 228, 94, 59, 160, 229, 41, 52, 144, 230, 71, 88, 32, 231, 18, 81, 16, 232, 39, 58, 32, 232, 242, 51, 16, 234, 7, 28, 32, 234, 210, 21, 16, 235, 230, 254, 32, 236, 177, 247, 16, 237, 198, 224, 32, 238, 145, 217, 16, 239, 175, 252, 160, 240, 113, 187, 16, 241, 143, 222, 160, 242, 127, 193, 144, 243, 111, 192, 160, 244, 95, 163, 144, 245, 79, 162, 160, 246, 63, 133, 144, 247, 47, 132, 160, 248, 40, 162, 16, 249, 15, 102, 160, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 8, 32, 235, 160, 9, 16, 206, 144, 10, 0, 205, 160, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 140, 148, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Virgin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 147, 55, 51, 172, 0, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + + "zoneinfo/America/Whitehorse": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 8, 0, 0, 0, 33, 128, 0, 0, 0, 158, 184, 203, 176, 159, 187, 35, 160, 160, 208, 12, 176, 161, 162, 210, 128, 203, 137, 40, 176, 210, 35, 244, 112, 210, 97, 52, 32, 247, 47, 118, 144, 248, 40, 162, 16, 251, 29, 95, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 5, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 129, 100, 0, 0, 255, 255, 143, 128, 1, 4, 255, 255, 129, 112, 0, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 157, 144, 1, 20, 255, 255, 143, 128, 0, 25, 255, 255, 157, 144, 1, 29, 76, 77, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 68, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Winnipeg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 155, 1, 251, 224, 155, 195, 186, 80, 158, 184, 161, 128, 159, 186, 249, 112, 194, 160, 59, 128, 195, 79, 132, 240, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 136, 104, 0, 212, 83, 96, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 219, 0, 7, 0, 219, 200, 92, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 145, 188, 240, 243, 111, 164, 128, 244, 49, 98, 240, 249, 15, 74, 128, 250, 8, 118, 0, 250, 248, 103, 0, 251, 232, 88, 0, 252, 216, 73, 0, 253, 200, 58, 0, 254, 184, 43, 0, 255, 168, 28, 0, 0, 152, 13, 0, 1, 135, 254, 0, 2, 119, 239, 0, 3, 113, 26, 128, 4, 97, 11, 128, 5, 80, 252, 128, 6, 64, 237, 128, 7, 48, 222, 128, 8, 32, 207, 128, 9, 16, 192, 128, 10, 0, 177, 128, 10, 240, 162, 128, 11, 224, 147, 128, 12, 217, 191, 0, 13, 192, 117, 128, 14, 185, 161, 0, 15, 169, 146, 0, 16, 153, 131, 0, 17, 137, 116, 0, 18, 121, 101, 0, 19, 105, 86, 0, 20, 89, 71, 0, 21, 73, 56, 0, 22, 57, 41, 0, 23, 41, 26, 0, 24, 34, 69, 128, 25, 8, 252, 0, 26, 2, 39, 128, 26, 242, 24, 128, 27, 226, 9, 128, 28, 209, 250, 128, 29, 193, 235, 128, 30, 177, 220, 128, 31, 161, 205, 128, 32, 118, 15, 0, 33, 129, 175, 128, 34, 85, 241, 0, 35, 106, 204, 0, 36, 53, 211, 0, 37, 74, 174, 0, 38, 21, 181, 0, 39, 42, 144, 0, 39, 254, 209, 128, 41, 10, 114, 0, 41, 222, 179, 128, 42, 234, 84, 0, 43, 190, 149, 128, 44, 211, 112, 128, 45, 158, 119, 128, 46, 179, 82, 128, 47, 126, 89, 128, 48, 147, 52, 128, 49, 103, 118, 0, 50, 115, 22, 128, 51, 71, 88, 0, 52, 82, 248, 128, 53, 39, 58, 0, 54, 50, 218, 128, 55, 7, 28, 0, 56, 27, 247, 0, 56, 230, 254, 0, 57, 251, 217, 0, 58, 198, 224, 0, 59, 219, 187, 0, 60, 175, 252, 128, 61, 187, 157, 0, 62, 143, 222, 128, 63, 155, 127, 0, 64, 111, 192, 128, 65, 132, 155, 128, 66, 79, 162, 128, 67, 100, 125, 128, 67, 183, 111, 224, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 164, 236, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Yakutat": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 7, 0, 0, 0, 30, 128, 0, 0, 0, 203, 137, 40, 176, 210, 35, 244, 112, 210, 97, 52, 32, 254, 184, 85, 48, 255, 168, 56, 32, 0, 152, 55, 48, 1, 136, 26, 32, 2, 120, 25, 48, 3, 113, 54, 160, 4, 97, 53, 176, 5, 81, 24, 160, 6, 65, 23, 176, 7, 48, 250, 160, 7, 141, 81, 176, 9, 16, 220, 160, 9, 173, 205, 48, 10, 240, 190, 160, 11, 224, 189, 176, 12, 217, 219, 32, 13, 192, 159, 176, 14, 185, 189, 32, 15, 169, 188, 48, 16, 153, 159, 32, 17, 137, 158, 48, 18, 121, 129, 32, 19, 105, 128, 48, 20, 89, 99, 32, 21, 73, 98, 48, 22, 57, 69, 32, 23, 41, 68, 48, 24, 34, 97, 160, 25, 9, 38, 48, 26, 2, 67, 160, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 125, 1, 0, 0, 255, 255, 129, 112, 0, 4, 255, 255, 143, 128, 1, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 143, 128, 1, 20, 255, 255, 129, 112, 0, 25, 76, 77, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/America/Yellowknife": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 6, 0, 0, 0, 25, 128, 0, 0, 0, 190, 42, 24, 0, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 90, 112, 248, 40, 133, 240, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 0, 3, 1, 2, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 0, 0, 0, 0, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 171, 160, 1, 21, 45, 48, 48, 0, 77, 87, 84, 0, 77, 80, 84, 0, 77, 83, 84, 0, 77, 68, 68, 84, 0, 77, 68, 84, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Antarctica/Casey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 12, 128, 0, 0, 0, 254, 30, 204, 128, 74, 218, 6, 32, 75, 143, 202, 240, 78, 169, 156, 32, 79, 67, 205, 144, 88, 10, 59, 128, 127, 255, 255, 255, 0, 1, 2, 1, 2, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 154, 176, 0, 8, 0, 0, 112, 128, 0, 4, 0, 0, 154, 176, 0, 8, 45, 48, 48, 0, 43, 48, 56, 0, 43, 49, 49, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Antarctica/Davis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 231, 156, 64, 0, 246, 71, 223, 16, 254, 71, 171, 0, 74, 218, 20, 48, 75, 151, 250, 64, 78, 169, 170, 48, 79, 67, 247, 192, 127, 255, 255, 255, 0, 1, 0, 1, 2, 3, 2, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 98, 112, 0, 4, 45, 48, 48, 0, 43, 48, 55, 0, 43, 48, 53, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Antarctica/DumontDUrville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 212, 188, 118, 128, 222, 52, 96, 96, 231, 60, 2, 128, 127, 255, 255, 255, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 140, 160, 0, 4, 45, 48, 48, 0, 43, 49, 48, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + + "zoneinfo/Antarctica/Macquarie": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 7, 0, 0, 0, 18, 128, 0, 0, 0, 155, 213, 120, 128, 156, 188, 32, 240, 160, 135, 180, 96, 215, 12, 104, 0, 251, 194, 141, 0, 252, 178, 126, 0, 253, 199, 89, 0, 254, 118, 176, 128, 255, 167, 59, 0, 0, 86, 146, 128, 1, 135, 29, 0, 2, 63, 175, 0, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 3, 79, 0, 24, 33, 100, 128, 24, 227, 49, 0, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 103, 39, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 244, 182, 0, 40, 237, 225, 128, 41, 212, 152, 0, 42, 205, 195, 128, 43, 180, 122, 0, 44, 173, 165, 128, 45, 148, 92, 0, 46, 141, 135, 128, 47, 116, 62, 0, 48, 109, 105, 128, 49, 93, 90, 128, 50, 86, 134, 0, 51, 61, 60, 128, 52, 54, 104, 0, 53, 29, 30, 128, 54, 22, 74, 0, 54, 253, 0, 128, 55, 246, 44, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 191, 42, 128, 60, 165, 225, 0, 61, 159, 12, 128, 62, 133, 195, 0, 63, 126, 238, 128, 64, 101, 165, 0, 65, 94, 208, 128, 66, 69, 135, 0, 67, 62, 178, 128, 68, 46, 163, 128, 69, 30, 148, 128, 70, 5, 75, 0, 71, 7, 177, 0, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 0, 14, 45, 48, 48, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 43, 49, 49, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Antarctica/Mawson": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 226, 32, 50, 128, 74, 218, 34, 64, 127, 255, 255, 255, 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 70, 80, 0, 8, 45, 48, 48, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Antarctica/McMurdo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 128, 0, 0, 0, 176, 180, 178, 232, 177, 81, 135, 88, 178, 120, 229, 104, 179, 67, 229, 96, 180, 88, 199, 104, 181, 35, 199, 96, 182, 56, 169, 104, 183, 3, 169, 96, 184, 24, 139, 104, 184, 236, 197, 224, 185, 248, 109, 104, 186, 204, 167, 224, 187, 216, 79, 104, 188, 227, 232, 224, 189, 174, 246, 232, 190, 195, 202, 224, 191, 142, 216, 232, 192, 163, 172, 224, 193, 110, 186, 232, 194, 131, 142, 224, 195, 78, 156, 232, 196, 99, 112, 224, 197, 46, 126, 232, 198, 76, 141, 96, 199, 14, 96, 232, 200, 44, 111, 96, 200, 247, 125, 104, 210, 218, 154, 64, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 78, 90, 83, 84, 45, 49, 50, 78, 90, 68, 84, 44, 77, 57, 46, 53, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Antarctica/Palmer": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 8, 0, 0, 0, 16, 128, 0, 0, 0, 246, 152, 173, 0, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 23, 48, 188, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 88, 67, 134, 176, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 3, 4, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 4, 4, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 227, 224, 1, 12, 255, 255, 213, 208, 0, 8, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 0, 8, 45, 48, 48, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/Antarctica/Rothera": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 13, 2, 45, 0, 127, 255, 255, 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 255, 255, 213, 208, 0, 4, 45, 48, 48, 0, 45, 48, 51, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/Antarctica/South_Pole": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 128, 0, 0, 0, 176, 180, 178, 232, 177, 81, 135, 88, 178, 120, 229, 104, 179, 67, 229, 96, 180, 88, 199, 104, 181, 35, 199, 96, 182, 56, 169, 104, 183, 3, 169, 96, 184, 24, 139, 104, 184, 236, 197, 224, 185, 248, 109, 104, 186, 204, 167, 224, 187, 216, 79, 104, 188, 227, 232, 224, 189, 174, 246, 232, 190, 195, 202, 224, 191, 142, 216, 232, 192, 163, 172, 224, 193, 110, 186, 232, 194, 131, 142, 224, 195, 78, 156, 232, 196, 99, 112, 224, 197, 46, 126, 232, 198, 76, 141, 96, 199, 14, 96, 232, 200, 44, 111, 96, 200, 247, 125, 104, 210, 218, 154, 64, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 78, 90, 83, 84, 45, 49, 50, 78, 90, 68, 84, 44, 77, 57, 46, 53, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Antarctica/Syowa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 231, 177, 88, 0, 127, 255, 255, 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 42, 48, 0, 4, 45, 48, 48, 0, 43, 48, 51, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/Antarctica/Troll": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 66, 13, 71, 0, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 127, 255, 255, 255, 0, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 45, 48, 48, 0, 43, 48, 50, 0, 43, 48, 48, 0, 0, 1, 1, 0, 0, 1, 1, 0, 10, 60, 43, 48, 48, 62, 48, 60, 43, 48, 50, 62, 45, 50, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Antarctica/Vostok": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 233, 88, 137, 128, 127, 255, 255, 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 84, 96, 0, 4, 45, 48, 48, 0, 43, 48, 54, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + + "zoneinfo/Arctic/Longyearbyen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 39, 227, 0, 155, 212, 123, 96, 200, 183, 77, 96, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 98, 7, 16, 235, 175, 32, 144, 236, 168, 76, 16, 237, 152, 61, 16, 238, 136, 46, 16, 239, 120, 31, 16, 240, 104, 16, 16, 241, 88, 1, 16, 242, 71, 242, 16, 243, 55, 227, 16, 244, 39, 212, 16, 245, 23, 197, 16, 246, 16, 240, 144, 247, 47, 6, 16, 247, 240, 210, 144, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 10, 20, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Asia/Aden": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 213, 27, 54, 180, 127, 255, 255, 255, 0, 1, 1, 0, 0, 43, 204, 0, 0, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/Asia/Almaty": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 10, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 123, 220, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 228, 237, 80, 41, 120, 149, 80, 41, 212, 208, 64, 42, 196, 193, 64, 43, 180, 178, 64, 44, 164, 163, 64, 45, 148, 148, 64, 46, 132, 133, 64, 47, 116, 118, 64, 48, 100, 103, 64, 49, 93, 146, 192, 50, 114, 109, 192, 51, 61, 116, 192, 52, 82, 79, 192, 53, 29, 86, 192, 54, 50, 49, 192, 54, 253, 56, 192, 56, 27, 78, 64, 56, 221, 26, 192, 57, 251, 48, 64, 58, 188, 252, 192, 59, 219, 18, 64, 60, 166, 25, 64, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 0, 0, 72, 36, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + + "zoneinfo/Asia/Amman": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 182, 163, 214, 208, 6, 114, 121, 224, 7, 12, 171, 80, 8, 36, 55, 96, 8, 237, 222, 208, 10, 5, 106, 224, 10, 207, 18, 80, 11, 231, 239, 224, 12, 218, 117, 208, 13, 201, 35, 96, 14, 146, 202, 208, 15, 169, 5, 96, 16, 114, 172, 208, 28, 173, 213, 96, 29, 159, 9, 208, 30, 146, 253, 96, 31, 130, 224, 80, 32, 114, 223, 96, 33, 98, 194, 80, 34, 82, 193, 96, 35, 75, 222, 208, 36, 100, 188, 96, 37, 43, 192, 208, 38, 55, 111, 96, 39, 11, 162, 208, 40, 11, 115, 224, 40, 226, 74, 80, 41, 228, 190, 96, 42, 203, 102, 208, 43, 187, 101, 224, 44, 171, 72, 208, 45, 155, 71, 224, 46, 120, 181, 208, 47, 132, 100, 96, 48, 88, 165, 224, 49, 100, 70, 96, 50, 65, 194, 96, 51, 68, 40, 96, 52, 33, 164, 96, 53, 36, 10, 96, 54, 1, 134, 96, 55, 122, 147, 96, 55, 234, 162, 224, 56, 226, 124, 224, 57, 211, 191, 96, 58, 194, 94, 224, 59, 179, 161, 96, 60, 163, 146, 96, 61, 147, 131, 96, 62, 131, 116, 96, 63, 152, 79, 96, 64, 99, 86, 96, 65, 110, 246, 224, 66, 76, 114, 224, 67, 60, 99, 224, 68, 44, 84, 224, 69, 65, 47, 224, 70, 12, 54, 224, 71, 33, 17, 224, 71, 236, 24, 224, 73, 10, 46, 96, 73, 203, 250, 224, 74, 234, 16, 96, 75, 171, 220, 224, 76, 201, 242, 96, 77, 148, 249, 96, 78, 169, 212, 96, 79, 116, 219, 96, 82, 179, 94, 80, 83, 52, 159, 96, 84, 82, 180, 224, 85, 20, 129, 96, 86, 50, 150, 224, 86, 253, 157, 224, 88, 18, 120, 224, 88, 221, 127, 224, 89, 242, 90, 224, 90, 189, 97, 224, 91, 210, 60, 224, 92, 157, 67, 224, 93, 178, 30, 224, 94, 125, 37, 224, 95, 155, 59, 96, 96, 93, 7, 224, 97, 123, 29, 96, 98, 70, 36, 96, 99, 90, 255, 96, 100, 38, 6, 96, 101, 58, 225, 96, 102, 5, 232, 96, 103, 26, 195, 96, 103, 229, 202, 96, 105, 3, 223, 224, 105, 197, 172, 96, 106, 227, 193, 224, 107, 165, 142, 96, 108, 195, 163, 224, 109, 142, 170, 224, 110, 163, 133, 224, 111, 110, 140, 224, 112, 131, 103, 224, 113, 78, 110, 224, 114, 99, 73, 224, 115, 46, 80, 224, 116, 76, 102, 96, 117, 14, 50, 224, 118, 44, 72, 96, 118, 247, 79, 96, 120, 12, 42, 96, 120, 215, 49, 96, 121, 236, 12, 96, 122, 183, 19, 96, 123, 203, 238, 96, 124, 150, 245, 96, 125, 181, 10, 224, 126, 118, 215, 96, 127, 148, 236, 224, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 4, 3, 4, 3, 4, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 0, 0, 33, 176, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 52, 47, 50, 52, 44, 77, 49, 48, 46, 53, 46, 53, 47, 49, 10}, + + "zoneinfo/Asia/Anadyr": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 10, 0, 0, 0, 20, 128, 0, 0, 0, 170, 25, 29, 156, 181, 163, 140, 192, 21, 39, 27, 48, 22, 24, 79, 160, 23, 8, 78, 176, 23, 249, 145, 48, 24, 233, 144, 64, 25, 218, 196, 176, 26, 204, 21, 64, 27, 188, 34, 96, 28, 172, 19, 96, 29, 156, 4, 96, 30, 139, 245, 96, 31, 123, 230, 96, 32, 107, 215, 96, 33, 91, 200, 96, 34, 75, 185, 96, 35, 59, 170, 96, 36, 43, 155, 96, 37, 27, 140, 96, 38, 11, 125, 96, 39, 4, 168, 224, 39, 244, 153, 224, 40, 228, 152, 240, 41, 120, 64, 240, 41, 212, 123, 224, 42, 196, 108, 224, 43, 180, 93, 224, 44, 164, 78, 224, 45, 148, 63, 224, 46, 132, 48, 224, 47, 116, 33, 224, 48, 100, 18, 224, 49, 93, 62, 96, 50, 114, 25, 96, 51, 61, 32, 96, 52, 81, 251, 96, 53, 29, 2, 96, 54, 49, 221, 96, 54, 252, 228, 96, 56, 26, 249, 224, 56, 220, 198, 96, 57, 250, 219, 224, 58, 188, 168, 96, 59, 218, 189, 224, 60, 165, 196, 224, 61, 186, 159, 224, 62, 133, 166, 224, 63, 154, 129, 224, 64, 101, 136, 224, 65, 131, 158, 96, 66, 69, 106, 224, 67, 99, 128, 96, 68, 37, 76, 224, 69, 67, 98, 96, 70, 5, 46, 224, 71, 35, 68, 96, 71, 238, 75, 96, 73, 3, 38, 96, 73, 206, 45, 96, 74, 227, 8, 96, 75, 174, 15, 96, 76, 204, 50, 240, 77, 141, 255, 112, 127, 255, 255, 255, 0, 1, 3, 2, 3, 4, 1, 4, 1, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 5, 0, 0, 166, 100, 0, 0, 0, 0, 168, 192, 0, 4, 0, 0, 196, 224, 1, 8, 0, 0, 182, 208, 0, 12, 0, 0, 182, 208, 1, 12, 0, 0, 168, 192, 0, 4, 0, 0, 182, 208, 1, 12, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 16, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 43, 49, 52, 0, 43, 49, 51, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + + "zoneinfo/Asia/Aqtau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 10, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 148, 224, 181, 163, 253, 64, 22, 24, 206, 48, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 131, 96, 49, 93, 174, 224, 50, 114, 137, 224, 51, 61, 144, 224, 52, 82, 107, 224, 53, 29, 114, 224, 54, 50, 77, 224, 54, 253, 84, 224, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 127, 255, 255, 255, 0, 1, 2, 3, 4, 2, 4, 2, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 5, 5, 0, 0, 47, 32, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Asia/Aqtobe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 11, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 142, 104, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 92, 80, 56, 221, 40, 208, 57, 251, 62, 80, 58, 189, 10, 208, 59, 219, 32, 80, 60, 166, 39, 80, 61, 187, 2, 80, 62, 134, 9, 80, 63, 154, 228, 80, 64, 101, 235, 80, 65, 132, 0, 208, 127, 255, 255, 255, 0, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 5, 0, 0, 53, 152, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Asia/Ashgabat": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 141, 68, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 191, 48, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 3, 3, 0, 0, 54, 188, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 0, 12, 0, 0, 70, 80, 0, 12, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Asia/Ashkhabad": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 141, 68, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 191, 48, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 3, 3, 0, 0, 54, 188, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 0, 12, 0, 0, 70, 80, 0, 12, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Asia/Atyrau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 10, 0, 0, 0, 20, 128, 0, 0, 0, 170, 25, 147, 80, 181, 164, 11, 80, 22, 24, 206, 48, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 127, 255, 255, 255, 0, 1, 2, 3, 4, 2, 4, 2, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 5, 5, 0, 0, 48, 176, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 16, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 54, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Asia/Baghdad": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 158, 48, 60, 224, 23, 48, 104, 80, 23, 250, 15, 192, 24, 232, 189, 80, 25, 219, 67, 64, 26, 204, 147, 208, 27, 189, 200, 64, 28, 173, 199, 80, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 246, 120, 0, 40, 231, 186, 128, 41, 216, 253, 0, 42, 202, 63, 128, 43, 186, 48, 128, 44, 171, 115, 0, 45, 155, 100, 0, 46, 140, 166, 128, 47, 124, 151, 128, 48, 109, 218, 0, 49, 95, 28, 128, 50, 80, 95, 0, 51, 64, 80, 0, 52, 49, 146, 128, 53, 33, 131, 128, 54, 18, 198, 0, 55, 2, 183, 0, 55, 243, 249, 128, 56, 229, 60, 0, 57, 214, 126, 128, 58, 198, 111, 128, 59, 183, 178, 0, 60, 167, 163, 0, 61, 152, 229, 128, 62, 136, 214, 128, 63, 122, 25, 0, 64, 107, 91, 128, 65, 92, 158, 0, 66, 76, 143, 0, 67, 61, 209, 128, 68, 45, 194, 128, 69, 31, 5, 0, 70, 14, 246, 0, 71, 0, 56, 128, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 0, 0, 41, 164, 0, 0, 0, 0, 41, 160, 0, 4, 0, 0, 42, 48, 0, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 8, 0, 0, 56, 64, 1, 12, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 51, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/Asia/Bahrain": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 161, 242, 157, 48, 4, 138, 146, 192, 127, 255, 255, 255, 0, 1, 2, 2, 0, 0, 48, 80, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 42, 48, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/Asia/Baku": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 10, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 149, 68, 231, 218, 12, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 245, 10, 96, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 48, 230, 235, 192, 49, 93, 217, 16, 50, 114, 180, 16, 50, 201, 112, 192, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 78, 172, 147, 128, 79, 110, 96, 0, 80, 140, 117, 128, 81, 87, 124, 128, 82, 108, 87, 128, 83, 55, 94, 128, 84, 76, 57, 128, 85, 23, 64, 128, 86, 44, 27, 128, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 4, 3, 8, 9, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 46, 188, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + + "zoneinfo/Asia/Bangkok": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 162, 106, 103, 196, 127, 255, 255, 255, 1, 2, 2, 0, 0, 94, 60, 0, 0, 0, 0, 94, 60, 0, 4, 0, 0, 98, 112, 0, 8, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Asia/Barnaul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 10, 0, 0, 0, 16, 128, 0, 0, 0, 161, 213, 125, 252, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 44, 164, 149, 48, 45, 148, 134, 48, 46, 132, 119, 48, 47, 116, 104, 48, 47, 199, 76, 128, 48, 100, 103, 64, 49, 93, 146, 192, 50, 114, 109, 192, 51, 61, 116, 192, 52, 82, 79, 192, 53, 29, 86, 192, 54, 50, 49, 192, 54, 253, 56, 192, 56, 27, 78, 64, 56, 221, 26, 192, 57, 251, 48, 64, 58, 188, 252, 192, 59, 219, 18, 64, 60, 166, 25, 64, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 66, 69, 191, 64, 67, 99, 212, 192, 68, 37, 161, 64, 69, 67, 182, 192, 70, 5, 131, 64, 71, 35, 152, 192, 71, 238, 159, 192, 73, 3, 122, 192, 73, 206, 129, 192, 74, 227, 92, 192, 75, 174, 99, 192, 76, 204, 121, 64, 77, 142, 69, 192, 84, 75, 243, 48, 86, 246, 234, 64, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 8, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 78, 132, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 1, 12, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Asia/Beirut": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 3, 0, 0, 0, 13, 128, 0, 0, 0, 162, 101, 99, 224, 163, 123, 130, 80, 164, 78, 128, 96, 165, 63, 180, 208, 166, 37, 39, 224, 167, 39, 127, 208, 168, 41, 243, 224, 168, 235, 178, 80, 232, 42, 133, 224, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 236, 224, 236, 182, 148, 80, 237, 207, 113, 224, 238, 153, 25, 80, 239, 176, 165, 96, 240, 122, 76, 208, 4, 166, 94, 96, 5, 43, 119, 208, 6, 67, 3, 224, 7, 12, 171, 80, 8, 36, 55, 96, 8, 237, 222, 208, 10, 5, 106, 224, 10, 207, 18, 80, 11, 231, 239, 224, 12, 177, 151, 80, 13, 201, 35, 96, 14, 146, 202, 208, 15, 169, 5, 96, 16, 114, 172, 208, 26, 244, 46, 224, 27, 209, 156, 208, 28, 213, 98, 96, 29, 178, 208, 80, 30, 182, 149, 224, 31, 148, 3, 208, 32, 151, 201, 96, 33, 117, 55, 80, 34, 163, 44, 224, 35, 87, 188, 80, 36, 103, 95, 96, 37, 56, 239, 208, 38, 60, 181, 96, 39, 26, 35, 80, 40, 29, 232, 224, 40, 251, 86, 208, 42, 0, 109, 224, 42, 206, 9, 208, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 77, 145, 208, 51, 61, 144, 224, 52, 45, 115, 208, 53, 29, 114, 224, 54, 13, 85, 208, 54, 253, 84, 224, 56, 27, 92, 80, 56, 221, 54, 224, 57, 251, 62, 80, 58, 189, 24, 224, 59, 219, 32, 80, 60, 166, 53, 96, 61, 187, 2, 80, 62, 134, 23, 96, 63, 154, 228, 80, 64, 101, 249, 96, 65, 132, 0, 208, 66, 69, 219, 96, 67, 99, 226, 208, 68, 37, 189, 96, 69, 67, 196, 208, 70, 5, 159, 96, 71, 35, 166, 208, 71, 238, 187, 224, 73, 3, 136, 208, 73, 206, 157, 224, 74, 227, 106, 208, 75, 174, 127, 224, 76, 204, 135, 80, 77, 142, 97, 224, 78, 172, 105, 80, 79, 110, 67, 224, 80, 140, 75, 80, 81, 87, 96, 96, 82, 108, 45, 80, 83, 55, 66, 96, 84, 76, 15, 80, 85, 23, 36, 96, 86, 43, 241, 80, 86, 247, 6, 96, 88, 21, 13, 208, 88, 214, 232, 96, 89, 244, 239, 208, 90, 182, 202, 96, 91, 212, 209, 208, 92, 159, 230, 224, 93, 180, 179, 208, 94, 127, 200, 224, 95, 148, 149, 208, 96, 95, 170, 224, 97, 125, 178, 80, 98, 63, 140, 224, 99, 93, 148, 80, 100, 31, 110, 224, 101, 61, 118, 80, 102, 8, 139, 96, 103, 29, 88, 80, 103, 232, 109, 96, 104, 253, 58, 80, 105, 200, 79, 96, 106, 221, 28, 80, 107, 168, 49, 96, 108, 198, 56, 208, 109, 136, 19, 96, 110, 166, 26, 208, 111, 103, 245, 96, 112, 133, 252, 208, 113, 81, 17, 224, 114, 101, 222, 208, 115, 48, 243, 224, 116, 69, 192, 208, 117, 16, 213, 224, 118, 46, 221, 80, 118, 240, 183, 224, 120, 14, 191, 80, 120, 208, 153, 224, 121, 238, 161, 80, 122, 176, 123, 224, 123, 206, 131, 80, 124, 153, 152, 96, 125, 174, 101, 80, 126, 121, 122, 96, 127, 142, 71, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 33, 72, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 48, 10}, + + "zoneinfo/Asia/Bishkek": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 10, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 126, 16, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 190, 163, 192, 41, 231, 55, 48, 42, 196, 165, 32, 43, 199, 25, 48, 44, 164, 135, 32, 45, 166, 251, 48, 46, 132, 105, 32, 47, 134, 221, 48, 48, 100, 75, 32, 49, 102, 191, 48, 50, 77, 103, 160, 51, 61, 137, 216, 52, 82, 86, 200, 53, 29, 107, 216, 54, 50, 56, 200, 54, 253, 77, 216, 56, 27, 85, 72, 56, 221, 47, 216, 57, 251, 55, 72, 58, 189, 17, 216, 59, 219, 25, 72, 60, 166, 46, 88, 61, 186, 251, 72, 62, 134, 16, 88, 63, 154, 221, 72, 64, 101, 242, 88, 65, 131, 249, 200, 66, 69, 212, 88, 66, 251, 146, 32, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 3, 0, 0, 69, 240, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + + "zoneinfo/Asia/Brunei": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 173, 138, 2, 68, 186, 103, 71, 136, 127, 255, 255, 255, 0, 1, 2, 2, 0, 0, 107, 188, 0, 0, 0, 0, 105, 120, 0, 4, 0, 0, 112, 128, 0, 10, 76, 77, 84, 0, 43, 48, 55, 51, 48, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + + "zoneinfo/Asia/Calcutta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 135, 157, 188, 186, 202, 219, 140, 40, 204, 5, 113, 24, 204, 149, 50, 168, 210, 116, 18, 152, 1, 2, 3, 2, 3, 2, 0, 0, 82, 208, 0, 0, 0, 0, 75, 70, 0, 4, 0, 0, 77, 88, 0, 8, 0, 0, 91, 104, 1, 12, 72, 77, 84, 0, 77, 77, 84, 0, 73, 83, 84, 0, 43, 48, 54, 51, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 73, 83, 84, 45, 53, 58, 51, 48, 10}, + + "zoneinfo/Asia/Chita": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 11, 0, 0, 0, 16, 128, 0, 0, 0, 161, 219, 249, 160, 181, 163, 197, 0, 21, 39, 83, 112, 22, 24, 135, 224, 23, 8, 134, 240, 23, 249, 187, 96, 24, 233, 186, 112, 25, 218, 238, 224, 26, 204, 63, 112, 27, 188, 76, 144, 28, 172, 61, 144, 29, 156, 46, 144, 30, 140, 31, 144, 31, 124, 16, 144, 32, 108, 1, 144, 33, 91, 242, 144, 34, 75, 227, 144, 35, 59, 212, 144, 36, 43, 197, 144, 37, 27, 182, 144, 38, 11, 167, 144, 39, 4, 211, 16, 39, 244, 196, 16, 40, 228, 195, 32, 41, 120, 107, 32, 41, 212, 166, 16, 42, 196, 151, 16, 43, 180, 136, 16, 44, 164, 121, 16, 45, 148, 106, 16, 46, 132, 91, 16, 47, 116, 76, 16, 48, 100, 61, 16, 49, 93, 104, 144, 50, 114, 67, 144, 51, 61, 74, 144, 52, 82, 37, 144, 53, 29, 44, 144, 54, 50, 7, 144, 54, 253, 14, 144, 56, 27, 36, 16, 56, 220, 240, 144, 57, 251, 6, 16, 58, 188, 210, 144, 59, 218, 232, 16, 60, 165, 239, 16, 61, 186, 202, 16, 62, 133, 209, 16, 63, 154, 172, 16, 64, 101, 179, 16, 65, 131, 200, 144, 66, 69, 149, 16, 67, 99, 170, 144, 68, 37, 119, 16, 69, 67, 140, 144, 70, 5, 89, 16, 71, 35, 110, 144, 71, 238, 117, 144, 73, 3, 80, 144, 73, 206, 87, 144, 74, 227, 50, 144, 75, 174, 57, 144, 76, 204, 79, 16, 77, 142, 27, 144, 84, 75, 201, 0, 86, 246, 206, 32, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 7, 3, 3, 0, 0, 106, 96, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 76, 77, 84, 0, 43, 48, 56, 0, 43, 49, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, + + "zoneinfo/Asia/Choibalsan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 134, 211, 231, 40, 15, 11, 220, 144, 24, 233, 200, 128, 25, 218, 238, 224, 26, 204, 63, 112, 27, 188, 34, 96, 28, 172, 33, 112, 29, 156, 4, 96, 30, 140, 3, 112, 31, 123, 230, 96, 32, 107, 229, 112, 33, 91, 200, 96, 34, 75, 199, 112, 35, 59, 170, 96, 36, 43, 169, 112, 37, 27, 140, 96, 38, 11, 139, 112, 39, 4, 168, 224, 39, 244, 167, 240, 40, 228, 138, 224, 41, 212, 137, 240, 42, 196, 108, 224, 43, 180, 107, 240, 44, 164, 78, 224, 45, 148, 77, 240, 46, 132, 48, 224, 47, 116, 47, 240, 48, 100, 18, 224, 49, 93, 76, 112, 50, 77, 47, 96, 51, 61, 46, 112, 52, 45, 17, 96, 53, 29, 16, 112, 54, 12, 243, 96, 58, 233, 165, 144, 59, 180, 158, 128, 60, 164, 157, 144, 61, 148, 128, 128, 62, 132, 127, 144, 63, 116, 98, 128, 64, 100, 97, 144, 65, 84, 68, 128, 66, 68, 67, 144, 67, 52, 38, 128, 68, 36, 37, 144, 69, 29, 67, 0, 71, 239, 170, 240, 85, 21, 154, 160, 86, 5, 97, 112, 86, 245, 124, 160, 87, 229, 67, 112, 127, 255, 255, 255, 0, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 2, 5, 2, 2, 0, 0, 107, 88, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 16, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 56, 0, 43, 48, 57, 0, 43, 49, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + + "zoneinfo/Asia/Chongqing": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 92, 1, 128, 200, 250, 39, 112, 201, 213, 14, 128, 202, 219, 90, 240, 30, 186, 54, 0, 31, 105, 127, 112, 32, 126, 104, 128, 33, 73, 97, 112, 34, 94, 74, 128, 35, 41, 67, 112, 36, 71, 103, 0, 37, 18, 95, 240, 38, 39, 73, 0, 38, 242, 65, 240, 40, 7, 43, 0, 40, 210, 35, 240, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + + "zoneinfo/Asia/Chungking": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 92, 1, 128, 200, 250, 39, 112, 201, 213, 14, 128, 202, 219, 90, 240, 30, 186, 54, 0, 31, 105, 127, 112, 32, 126, 104, 128, 33, 73, 97, 112, 34, 94, 74, 128, 35, 41, 67, 112, 36, 71, 103, 0, 37, 18, 95, 240, 38, 39, 73, 0, 38, 242, 65, 240, 40, 7, 43, 0, 40, 210, 35, 240, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + + "zoneinfo/Asia/Colombo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 24, 128, 0, 0, 0, 135, 157, 189, 28, 203, 90, 28, 40, 204, 149, 43, 160, 210, 117, 128, 56, 49, 166, 0, 40, 50, 113, 0, 32, 68, 63, 234, 40, 127, 255, 255, 255, 1, 2, 3, 4, 2, 5, 6, 2, 2, 0, 0, 74, 220, 0, 0, 0, 0, 74, 228, 0, 4, 0, 0, 77, 88, 0, 8, 0, 0, 84, 96, 1, 14, 0, 0, 91, 104, 1, 18, 0, 0, 91, 104, 0, 18, 0, 0, 84, 96, 0, 14, 0, 0, 77, 88, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 43, 48, 54, 51, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 51, 48, 62, 45, 53, 58, 51, 48, 10}, + + "zoneinfo/Asia/Dacca": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 28, 128, 0, 0, 0, 202, 219, 134, 176, 204, 5, 113, 24, 204, 149, 50, 168, 221, 168, 210, 152, 74, 59, 196, 16, 75, 60, 216, 144, 127, 255, 255, 255, 1, 2, 3, 2, 4, 5, 4, 4, 0, 0, 84, 196, 0, 0, 0, 0, 82, 208, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 77, 88, 0, 14, 0, 0, 84, 96, 0, 20, 0, 0, 98, 112, 1, 24, 76, 77, 84, 0, 72, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 43, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + + "zoneinfo/Asia/Damascus": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 3, 0, 0, 0, 13, 128, 0, 0, 0, 161, 242, 171, 120, 162, 129, 47, 128, 163, 94, 157, 112, 164, 97, 17, 128, 165, 62, 127, 112, 166, 64, 243, 128, 167, 30, 97, 112, 168, 32, 213, 128, 169, 7, 125, 240, 241, 143, 82, 0, 242, 91, 156, 112, 243, 115, 40, 128, 244, 59, 126, 112, 245, 85, 173, 128, 246, 31, 84, 240, 247, 54, 225, 0, 247, 255, 54, 240, 249, 14, 218, 0, 249, 225, 187, 240, 250, 249, 72, 0, 251, 194, 239, 112, 252, 219, 205, 0, 253, 165, 116, 112, 254, 189, 0, 128, 255, 134, 167, 240, 0, 158, 52, 0, 1, 103, 219, 112, 2, 127, 103, 128, 3, 73, 14, 240, 4, 97, 236, 128, 5, 43, 147, 240, 6, 67, 32, 0, 7, 12, 199, 112, 8, 36, 83, 128, 8, 237, 250, 240, 10, 5, 135, 0, 10, 207, 46, 112, 11, 232, 12, 0, 12, 177, 179, 112, 13, 201, 63, 128, 14, 107, 89, 240, 15, 170, 115, 0, 16, 76, 141, 112, 24, 244, 197, 0, 25, 219, 109, 112, 26, 215, 74, 0, 27, 189, 242, 112, 30, 85, 35, 0, 31, 138, 229, 112, 32, 71, 122, 0, 33, 137, 25, 240, 34, 60, 116, 0, 35, 107, 158, 240, 36, 50, 191, 128, 37, 37, 69, 112, 38, 21, 68, 128, 39, 5, 39, 112, 39, 246, 91, 224, 40, 231, 144, 80, 41, 226, 27, 96, 42, 202, 21, 80, 43, 178, 43, 96, 44, 163, 95, 208, 45, 155, 71, 224, 46, 140, 124, 80, 47, 124, 123, 96, 48, 109, 175, 208, 49, 95, 0, 96, 50, 80, 52, 208, 51, 62, 226, 96, 52, 49, 104, 80, 53, 30, 196, 96, 54, 18, 155, 208, 55, 2, 154, 224, 55, 243, 207, 80, 56, 229, 31, 224, 57, 214, 84, 80, 58, 198, 83, 96, 59, 183, 135, 208, 60, 167, 134, 224, 61, 152, 187, 80, 62, 136, 186, 96, 63, 121, 238, 208, 64, 107, 63, 96, 65, 92, 115, 208, 66, 76, 114, 224, 67, 61, 167, 80, 68, 45, 166, 96, 69, 18, 253, 80, 70, 12, 54, 224, 71, 42, 62, 80, 71, 245, 83, 96, 73, 11, 113, 208, 73, 203, 250, 224, 74, 234, 2, 80, 75, 181, 23, 96, 76, 201, 228, 80, 77, 148, 249, 96, 78, 169, 198, 80, 79, 116, 219, 96, 80, 137, 168, 80, 81, 84, 189, 96, 82, 105, 138, 80, 83, 52, 159, 96, 84, 82, 166, 208, 85, 20, 129, 96, 86, 50, 136, 208, 86, 244, 99, 96, 88, 18, 106, 208, 88, 221, 127, 224, 89, 242, 76, 208, 90, 189, 97, 224, 91, 210, 46, 208, 92, 157, 67, 224, 93, 178, 16, 208, 94, 125, 37, 224, 95, 155, 45, 80, 96, 93, 7, 224, 97, 123, 15, 80, 98, 60, 233, 224, 99, 90, 241, 80, 100, 38, 6, 96, 101, 58, 211, 80, 102, 5, 232, 96, 103, 26, 181, 80, 103, 229, 202, 96, 105, 3, 209, 208, 105, 197, 172, 96, 106, 227, 179, 208, 107, 165, 142, 96, 108, 195, 149, 208, 109, 142, 170, 224, 110, 163, 119, 208, 111, 110, 140, 224, 112, 131, 89, 208, 113, 78, 110, 224, 114, 99, 59, 208, 115, 46, 80, 224, 116, 76, 88, 80, 117, 14, 50, 224, 118, 44, 58, 80, 118, 238, 20, 224, 120, 12, 28, 80, 120, 215, 49, 96, 121, 235, 254, 80, 122, 183, 19, 96, 123, 203, 224, 80, 124, 150, 245, 96, 125, 180, 252, 208, 126, 118, 215, 96, 127, 148, 222, 208, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 34, 8, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 53, 47, 48, 44, 77, 49, 48, 46, 53, 46, 53, 47, 48, 10}, + + "zoneinfo/Asia/Dhaka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 28, 128, 0, 0, 0, 202, 219, 134, 176, 204, 5, 113, 24, 204, 149, 50, 168, 221, 168, 210, 152, 74, 59, 196, 16, 75, 60, 216, 144, 127, 255, 255, 255, 1, 2, 3, 2, 4, 5, 4, 4, 0, 0, 84, 196, 0, 0, 0, 0, 82, 208, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 77, 88, 0, 14, 0, 0, 84, 96, 0, 20, 0, 0, 98, 112, 1, 24, 76, 77, 84, 0, 72, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 43, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + + "zoneinfo/Asia/Dili": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 146, 230, 24, 196, 203, 153, 50, 240, 11, 234, 48, 112, 57, 195, 153, 0, 127, 255, 255, 255, 0, 1, 2, 1, 2, 2, 0, 0, 117, 188, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 76, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, + + "zoneinfo/Asia/Dubai": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 161, 242, 153, 168, 127, 255, 255, 255, 0, 1, 1, 0, 0, 51, 216, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + + "zoneinfo/Asia/Dushanbe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 8, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 131, 128, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 202, 143, 80, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 7, 0, 0, 64, 128, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Asia/Famagusta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 7, 0, 0, 0, 17, 128, 0, 0, 0, 165, 119, 30, 44, 9, 237, 175, 224, 10, 221, 146, 208, 11, 250, 100, 224, 12, 190, 198, 80, 13, 164, 57, 96, 14, 138, 225, 208, 15, 132, 27, 96, 16, 117, 79, 208, 17, 99, 253, 96, 18, 83, 224, 80, 19, 77, 25, 224, 20, 51, 194, 80, 21, 35, 193, 96, 22, 19, 164, 80, 23, 3, 163, 96, 23, 243, 134, 80, 24, 227, 133, 96, 25, 211, 104, 80, 26, 195, 103, 96, 27, 188, 132, 208, 28, 172, 131, 224, 29, 156, 102, 208, 30, 140, 101, 224, 31, 124, 72, 208, 32, 108, 71, 224, 33, 92, 42, 208, 34, 76, 41, 224, 35, 60, 12, 208, 36, 44, 11, 224, 37, 27, 238, 208, 38, 11, 237, 224, 39, 5, 11, 80, 39, 245, 10, 96, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 77, 145, 208, 51, 61, 144, 224, 52, 45, 115, 208, 53, 29, 114, 224, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 87, 208, 127, 208, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 31, 212, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 0, 0, 42, 48, 0, 13, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 51, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Asia/Gaza": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 232, 54, 99, 96, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 250, 240, 236, 181, 109, 0, 237, 207, 127, 240, 238, 151, 242, 0, 239, 176, 179, 112, 240, 121, 37, 128, 241, 145, 230, 240, 242, 90, 89, 0, 243, 115, 26, 112, 244, 59, 140, 128, 245, 85, 159, 112, 246, 30, 17, 128, 247, 54, 210, 240, 247, 255, 69, 0, 249, 24, 6, 112, 249, 225, 202, 0, 250, 249, 57, 240, 251, 39, 66, 80, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 48, 231, 7, 224, 49, 100, 70, 96, 50, 65, 194, 96, 51, 68, 40, 96, 52, 33, 164, 96, 53, 36, 10, 96, 54, 1, 134, 96, 54, 139, 243, 224, 55, 22, 97, 96, 56, 6, 68, 80, 56, 255, 125, 224, 57, 239, 96, 208, 58, 223, 95, 224, 59, 207, 66, 208, 60, 191, 65, 224, 61, 175, 36, 208, 62, 159, 35, 224, 63, 143, 6, 208, 64, 127, 5, 224, 65, 92, 129, 224, 66, 94, 231, 224, 67, 65, 183, 240, 68, 45, 166, 96, 69, 18, 253, 80, 70, 14, 217, 224, 70, 232, 111, 112, 71, 236, 24, 224, 72, 183, 17, 208, 73, 203, 250, 224, 74, 160, 60, 96, 75, 173, 46, 156, 76, 97, 189, 208, 77, 148, 249, 156, 78, 53, 194, 80, 79, 116, 219, 96, 80, 91, 145, 224, 81, 84, 189, 96, 82, 68, 160, 80, 83, 52, 159, 96, 84, 73, 108, 80, 85, 21, 210, 224, 86, 41, 78, 80, 86, 245, 194, 240, 88, 19, 202, 96, 88, 213, 164, 240, 89, 243, 172, 96, 90, 190, 193, 112, 91, 211, 142, 96, 92, 158, 163, 112, 93, 179, 112, 96, 94, 126, 133, 112, 95, 156, 140, 224, 96, 94, 103, 112, 97, 124, 110, 224, 98, 62, 73, 112, 99, 92, 80, 224, 100, 30, 43, 112, 101, 60, 50, 224, 102, 7, 71, 240, 103, 28, 20, 224, 103, 231, 41, 240, 104, 251, 246, 224, 105, 199, 11, 240, 106, 229, 19, 96, 107, 166, 237, 240, 108, 196, 245, 96, 109, 134, 207, 240, 110, 164, 215, 96, 111, 111, 236, 112, 112, 132, 185, 96, 113, 79, 206, 112, 114, 100, 155, 96, 115, 47, 176, 112, 116, 68, 125, 96, 117, 15, 146, 112, 118, 45, 153, 224, 118, 239, 116, 112, 120, 13, 123, 224, 120, 207, 86, 112, 121, 237, 93, 224, 122, 184, 114, 240, 123, 205, 63, 224, 124, 152, 84, 240, 125, 173, 33, 224, 126, 120, 54, 240, 127, 150, 62, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 2, 1, 5, 1, 5, 1, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 32, 80, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 13, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 54, 47, 49, 44, 77, 49, 48, 46, 53, 46, 54, 47, 49, 10}, + + "zoneinfo/Asia/Harbin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 92, 1, 128, 200, 250, 39, 112, 201, 213, 14, 128, 202, 219, 90, 240, 30, 186, 54, 0, 31, 105, 127, 112, 32, 126, 104, 128, 33, 73, 97, 112, 34, 94, 74, 128, 35, 41, 67, 112, 36, 71, 103, 0, 37, 18, 95, 240, 38, 39, 73, 0, 38, 242, 65, 240, 40, 7, 43, 0, 40, 210, 35, 240, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + + "zoneinfo/Asia/Hebron": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 232, 54, 99, 96, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 250, 240, 236, 181, 109, 0, 237, 207, 127, 240, 238, 151, 242, 0, 239, 176, 179, 112, 240, 121, 37, 128, 241, 145, 230, 240, 242, 90, 89, 0, 243, 115, 26, 112, 244, 59, 140, 128, 245, 85, 159, 112, 246, 30, 17, 128, 247, 54, 210, 240, 247, 255, 69, 0, 249, 24, 6, 112, 249, 225, 202, 0, 250, 249, 57, 240, 251, 39, 66, 80, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 48, 231, 7, 224, 49, 100, 70, 96, 50, 65, 194, 96, 51, 68, 40, 96, 52, 33, 164, 96, 53, 36, 10, 96, 54, 1, 134, 96, 54, 139, 243, 224, 55, 22, 97, 96, 56, 6, 68, 80, 56, 255, 125, 224, 57, 239, 96, 208, 58, 223, 95, 224, 59, 207, 66, 208, 60, 191, 65, 224, 61, 175, 36, 208, 62, 159, 35, 224, 63, 143, 6, 208, 64, 127, 5, 224, 65, 92, 129, 224, 66, 94, 231, 224, 67, 65, 183, 240, 68, 45, 166, 96, 69, 18, 253, 80, 70, 14, 217, 224, 70, 232, 111, 112, 71, 236, 24, 224, 72, 187, 6, 80, 73, 203, 250, 224, 74, 160, 60, 96, 75, 171, 220, 224, 76, 97, 189, 208, 77, 148, 249, 156, 78, 53, 194, 80, 78, 92, 11, 224, 78, 132, 220, 80, 79, 116, 219, 96, 80, 91, 145, 224, 81, 84, 189, 96, 82, 68, 160, 80, 83, 52, 159, 96, 84, 73, 108, 80, 85, 21, 210, 224, 86, 41, 78, 80, 86, 245, 194, 240, 88, 19, 202, 96, 88, 213, 164, 240, 89, 243, 172, 96, 90, 190, 193, 112, 91, 211, 142, 96, 92, 158, 163, 112, 93, 179, 112, 96, 94, 126, 133, 112, 95, 156, 140, 224, 96, 94, 103, 112, 97, 124, 110, 224, 98, 62, 73, 112, 99, 92, 80, 224, 100, 30, 43, 112, 101, 60, 50, 224, 102, 7, 71, 240, 103, 28, 20, 224, 103, 231, 41, 240, 104, 251, 246, 224, 105, 199, 11, 240, 106, 229, 19, 96, 107, 166, 237, 240, 108, 196, 245, 96, 109, 134, 207, 240, 110, 164, 215, 96, 111, 111, 236, 112, 112, 132, 185, 96, 113, 79, 206, 112, 114, 100, 155, 96, 115, 47, 176, 112, 116, 68, 125, 96, 117, 15, 146, 112, 118, 45, 153, 224, 118, 239, 116, 112, 120, 13, 123, 224, 120, 207, 86, 112, 121, 237, 93, 224, 122, 184, 114, 240, 123, 205, 63, 224, 124, 152, 84, 240, 125, 173, 33, 224, 126, 120, 54, 240, 127, 150, 62, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 2, 1, 5, 1, 5, 1, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 32, 231, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 13, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 54, 47, 49, 44, 77, 49, 48, 46, 53, 46, 54, 47, 49, 10}, + + "zoneinfo/Asia/Ho_Chi_Minh": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 136, 140, 67, 128, 145, 163, 43, 10, 205, 53, 230, 128, 209, 89, 206, 112, 210, 59, 62, 240, 213, 50, 187, 16, 228, 182, 228, 128, 237, 47, 152, 0, 10, 61, 199, 0, 127, 255, 255, 255, 0, 1, 2, 3, 4, 2, 3, 2, 3, 2, 2, 0, 0, 100, 0, 0, 0, 0, 0, 99, 246, 0, 4, 0, 0, 98, 112, 0, 9, 0, 0, 112, 128, 0, 13, 0, 0, 126, 144, 0, 17, 0, 0, 98, 112, 0, 9, 76, 77, 84, 0, 80, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 56, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Asia/Hong_Kong": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 5, 0, 0, 0, 17, 128, 0, 0, 0, 133, 105, 90, 246, 201, 234, 87, 184, 202, 218, 58, 168, 203, 75, 120, 128, 210, 76, 98, 112, 211, 106, 183, 56, 212, 147, 74, 168, 213, 66, 176, 56, 214, 154, 185, 168, 215, 62, 65, 184, 216, 46, 36, 168, 216, 249, 57, 184, 218, 14, 6, 168, 218, 217, 27, 184, 219, 237, 232, 168, 220, 184, 253, 184, 221, 205, 202, 168, 222, 162, 26, 56, 223, 172, 91, 40, 224, 129, 252, 56, 225, 150, 201, 40, 226, 79, 105, 56, 227, 118, 171, 40, 228, 47, 75, 56, 229, 95, 199, 168, 230, 15, 45, 56, 231, 63, 169, 168, 231, 248, 73, 184, 233, 31, 139, 168, 233, 216, 43, 184, 234, 255, 109, 168, 235, 184, 13, 184, 236, 223, 79, 168, 237, 151, 239, 184, 238, 200, 108, 40, 239, 119, 209, 184, 240, 168, 78, 40, 241, 87, 179, 184, 242, 136, 48, 40, 243, 64, 208, 56, 244, 104, 18, 40, 245, 32, 178, 56, 246, 71, 244, 40, 247, 37, 126, 56, 248, 21, 97, 40, 249, 5, 96, 56, 249, 245, 67, 40, 250, 229, 66, 56, 251, 222, 95, 168, 252, 206, 94, 184, 253, 190, 65, 168, 254, 174, 64, 184, 255, 158, 35, 168, 0, 142, 34, 184, 1, 126, 5, 168, 2, 110, 4, 184, 3, 93, 231, 168, 4, 77, 230, 184, 5, 71, 4, 40, 6, 55, 3, 56, 7, 38, 230, 40, 7, 131, 61, 56, 9, 6, 200, 40, 9, 246, 199, 56, 10, 230, 170, 40, 11, 214, 169, 56, 12, 198, 140, 40, 17, 155, 57, 56, 18, 111, 108, 168, 0, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 107, 10, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 0, 0, 126, 144, 0, 13, 0, 0, 112, 128, 0, 9, 76, 77, 84, 0, 72, 75, 83, 84, 0, 72, 75, 84, 0, 74, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 72, 75, 84, 45, 56, 10}, + + "zoneinfo/Asia/Hovd": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 134, 211, 252, 148, 15, 11, 234, 160, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 62, 128, 28, 172, 61, 144, 29, 156, 32, 128, 30, 140, 31, 144, 31, 124, 2, 128, 32, 108, 1, 144, 33, 91, 228, 128, 34, 75, 227, 144, 35, 59, 198, 128, 36, 43, 197, 144, 37, 27, 168, 128, 38, 11, 167, 144, 39, 4, 197, 0, 39, 244, 196, 16, 40, 228, 167, 0, 41, 212, 166, 16, 42, 196, 137, 0, 43, 180, 136, 16, 44, 164, 107, 0, 45, 148, 106, 16, 46, 132, 77, 0, 47, 116, 76, 16, 48, 100, 47, 0, 49, 93, 104, 144, 50, 77, 75, 128, 51, 61, 74, 144, 52, 45, 45, 128, 53, 29, 44, 144, 54, 13, 15, 128, 58, 233, 193, 176, 59, 180, 186, 160, 60, 164, 185, 176, 61, 148, 156, 160, 62, 132, 155, 176, 63, 116, 126, 160, 64, 100, 125, 176, 65, 84, 96, 160, 66, 68, 95, 176, 67, 52, 66, 160, 68, 36, 65, 176, 69, 29, 95, 32, 85, 21, 168, 176, 86, 5, 111, 128, 86, 245, 138, 176, 87, 229, 81, 128, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 85, 236, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Asia/Irkutsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 12, 0, 0, 0, 20, 128, 0, 0, 0, 162, 18, 15, 191, 181, 163, 211, 16, 21, 39, 97, 128, 22, 24, 149, 240, 23, 8, 149, 0, 23, 249, 201, 112, 24, 233, 200, 128, 25, 218, 252, 240, 26, 204, 77, 128, 27, 188, 90, 160, 28, 172, 75, 160, 29, 156, 60, 160, 30, 140, 45, 160, 31, 124, 30, 160, 32, 108, 15, 160, 33, 92, 0, 160, 34, 75, 241, 160, 35, 59, 226, 160, 36, 43, 211, 160, 37, 27, 196, 160, 38, 11, 181, 160, 39, 4, 225, 32, 39, 244, 210, 32, 40, 228, 209, 48, 41, 120, 121, 48, 41, 212, 180, 32, 42, 196, 165, 32, 43, 180, 150, 32, 44, 164, 135, 32, 45, 148, 120, 32, 46, 132, 105, 32, 47, 116, 90, 32, 48, 100, 75, 32, 49, 93, 118, 160, 50, 114, 81, 160, 51, 61, 88, 160, 52, 82, 51, 160, 53, 29, 58, 160, 54, 50, 21, 160, 54, 253, 28, 160, 56, 27, 50, 32, 56, 220, 254, 160, 57, 251, 20, 32, 58, 188, 224, 160, 59, 218, 246, 32, 60, 165, 253, 32, 61, 186, 216, 32, 62, 133, 223, 32, 63, 154, 186, 32, 64, 101, 193, 32, 65, 131, 214, 160, 66, 69, 163, 32, 67, 99, 184, 160, 68, 37, 133, 32, 69, 67, 154, 160, 70, 5, 103, 32, 71, 35, 124, 160, 71, 238, 131, 160, 73, 3, 94, 160, 73, 206, 101, 160, 74, 227, 64, 160, 75, 174, 71, 160, 76, 204, 93, 32, 77, 142, 41, 160, 84, 75, 215, 16, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 9, 5, 5, 0, 0, 97, 193, 0, 0, 0, 0, 97, 193, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 16, 0, 0, 112, 128, 0, 16, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 1, 16, 0, 0, 98, 112, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 73, 77, 84, 0, 43, 48, 55, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + + "zoneinfo/Asia/Istanbul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 11, 0, 0, 0, 25, 128, 0, 0, 0, 144, 139, 245, 152, 155, 12, 23, 96, 155, 213, 190, 208, 162, 101, 99, 224, 163, 123, 130, 80, 164, 78, 128, 96, 165, 63, 180, 208, 166, 37, 39, 224, 167, 39, 127, 208, 170, 40, 40, 96, 170, 225, 253, 208, 171, 249, 137, 224, 172, 195, 49, 80, 200, 127, 238, 96, 200, 255, 193, 208, 201, 74, 245, 96, 202, 206, 128, 80, 203, 203, 174, 96, 204, 229, 193, 80, 209, 113, 235, 224, 210, 107, 9, 80, 211, 162, 57, 96, 212, 67, 2, 80, 213, 76, 13, 224, 214, 41, 123, 208, 215, 43, 239, 224, 216, 9, 93, 208, 217, 2, 151, 96, 217, 233, 63, 208, 218, 239, 168, 96, 219, 210, 92, 80, 220, 212, 208, 96, 221, 179, 143, 208, 241, 244, 185, 96, 242, 100, 186, 208, 245, 104, 6, 96, 246, 31, 56, 208, 0, 160, 186, 224, 1, 107, 179, 208, 2, 128, 156, 224, 3, 75, 149, 208, 4, 105, 185, 96, 5, 52, 178, 80, 6, 110, 147, 112, 7, 57, 168, 128, 7, 251, 117, 0, 9, 25, 166, 160, 9, 219, 58, 224, 10, 240, 7, 208, 12, 16, 206, 96, 12, 217, 36, 80, 13, 164, 57, 96, 14, 166, 145, 80, 15, 132, 27, 96, 16, 134, 115, 80, 18, 103, 152, 192, 19, 77, 54, 0, 20, 71, 122, 192, 21, 35, 221, 128, 22, 39, 92, 192, 23, 3, 191, 128, 24, 7, 62, 192, 25, 137, 148, 80, 25, 220, 148, 192, 28, 198, 211, 208, 29, 155, 21, 80, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 139, 131, 240, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 69, 152, 50, 224, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 143, 221, 144, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 56, 190, 16, 84, 76, 71, 144, 85, 23, 78, 144, 86, 62, 158, 144, 86, 247, 48, 144, 87, 207, 46, 80, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 3, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 5, 5, 0, 0, 27, 40, 0, 0, 0, 0, 27, 104, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 73, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/Asia/Jakarta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 32, 128, 0, 0, 0, 169, 120, 133, 224, 186, 22, 222, 96, 203, 191, 131, 136, 210, 86, 238, 112, 215, 60, 198, 8, 218, 255, 38, 0, 244, 181, 190, 136, 1, 2, 3, 4, 3, 5, 3, 6, 0, 0, 100, 32, 0, 0, 0, 0, 100, 32, 0, 4, 0, 0, 103, 32, 0, 8, 0, 0, 105, 120, 0, 14, 0, 0, 126, 144, 0, 20, 0, 0, 112, 128, 0, 24, 0, 0, 98, 112, 0, 28, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 87, 73, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 87, 73, 66, 45, 55, 10}, + + "zoneinfo/Asia/Jayapura": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 186, 22, 193, 152, 208, 88, 185, 240, 244, 181, 162, 104, 0, 1, 2, 3, 0, 0, 131, 232, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 133, 152, 0, 8, 0, 0, 126, 144, 0, 14, 76, 77, 84, 0, 43, 48, 57, 0, 43, 48, 57, 51, 48, 0, 87, 73, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 87, 73, 84, 45, 57, 10}, + + "zoneinfo/Asia/Jerusalem": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 158, 48, 69, 136, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 215, 90, 20, 96, 215, 223, 31, 192, 216, 47, 181, 112, 217, 30, 70, 224, 218, 16, 232, 240, 218, 235, 179, 224, 219, 180, 52, 0, 220, 185, 32, 224, 221, 224, 141, 0, 222, 180, 206, 128, 223, 164, 191, 128, 224, 139, 118, 0, 225, 86, 125, 0, 226, 190, 74, 96, 227, 54, 52, 208, 228, 156, 247, 0, 229, 22, 22, 208, 230, 116, 211, 224, 231, 17, 210, 128, 232, 39, 255, 0, 232, 232, 79, 208, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 49, 72, 150, 224, 50, 60, 110, 80, 51, 49, 179, 96, 52, 26, 254, 208, 53, 17, 149, 96, 53, 241, 166, 80, 55, 4, 8, 128, 55, 207, 1, 112, 56, 246, 95, 128, 57, 220, 249, 224, 58, 208, 237, 112, 59, 174, 91, 96, 60, 163, 160, 112, 61, 160, 178, 96, 62, 131, 130, 112, 63, 124, 159, 224, 64, 115, 54, 112, 65, 80, 164, 96, 66, 76, 143, 0, 67, 72, 79, 112, 68, 44, 113, 0, 69, 30, 246, 240, 70, 12, 83, 0, 70, 236, 99, 240, 71, 236, 53, 0, 72, 231, 245, 112, 73, 204, 23, 0, 74, 190, 156, 240, 75, 171, 249, 0, 76, 140, 9, 240, 77, 149, 21, 128, 78, 135, 155, 112, 79, 116, 247, 128, 80, 94, 66, 240, 81, 84, 217, 128, 82, 108, 73, 112, 83, 52, 187, 128, 84, 76, 43, 112, 85, 20, 157, 128, 86, 44, 13, 112, 86, 244, 127, 128, 88, 21, 41, 240, 88, 212, 97, 128, 89, 245, 11, 240, 90, 180, 67, 128, 91, 212, 237, 240, 92, 157, 96, 0, 93, 180, 207, 240, 94, 125, 66, 0, 95, 148, 177, 240, 96, 93, 36, 0, 97, 125, 206, 112, 98, 61, 6, 0, 99, 93, 176, 112, 100, 28, 232, 0, 101, 61, 146, 112, 102, 6, 4, 128, 103, 29, 116, 112, 103, 229, 230, 128, 104, 253, 86, 112, 105, 197, 200, 128, 106, 221, 56, 112, 107, 165, 170, 128, 108, 198, 84, 240, 109, 133, 140, 128, 110, 166, 54, 240, 111, 101, 110, 128, 112, 134, 24, 240, 113, 78, 139, 0, 114, 101, 250, 240, 115, 46, 109, 0, 116, 69, 220, 240, 117, 14, 79, 0, 118, 46, 249, 112, 118, 238, 49, 0, 120, 14, 219, 112, 120, 206, 19, 0, 121, 238, 189, 112, 122, 173, 245, 0, 123, 206, 159, 112, 124, 151, 17, 128, 125, 174, 129, 112, 126, 118, 243, 128, 127, 142, 99, 112, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 33, 6, 0, 0, 0, 0, 32, 248, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 56, 64, 1, 16, 0, 0, 42, 48, 1, 8, 76, 77, 84, 0, 74, 77, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 73, 68, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 73, 83, 84, 45, 50, 73, 68, 84, 44, 77, 51, 46, 52, 46, 52, 47, 50, 54, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Asia/Kabul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 208, 249, 215, 64, 127, 255, 255, 255, 1, 2, 2, 0, 0, 64, 224, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 63, 72, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 52, 51, 48, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 51, 48, 62, 45, 52, 58, 51, 48, 10}, + + "zoneinfo/Asia/Kamchatka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 9, 0, 0, 0, 16, 128, 0, 0, 0, 167, 82, 150, 196, 181, 163, 154, 208, 21, 39, 41, 64, 22, 24, 93, 176, 23, 8, 92, 192, 23, 249, 145, 48, 24, 233, 144, 64, 25, 218, 196, 176, 26, 204, 21, 64, 27, 188, 34, 96, 28, 172, 19, 96, 29, 156, 4, 96, 30, 139, 245, 96, 31, 123, 230, 96, 32, 107, 215, 96, 33, 91, 200, 96, 34, 75, 185, 96, 35, 59, 170, 96, 36, 43, 155, 96, 37, 27, 140, 96, 38, 11, 125, 96, 39, 4, 168, 224, 39, 244, 153, 224, 40, 228, 152, 240, 41, 120, 64, 240, 41, 212, 123, 224, 42, 196, 108, 224, 43, 180, 93, 224, 44, 164, 78, 224, 45, 148, 63, 224, 46, 132, 48, 224, 47, 116, 33, 224, 48, 100, 18, 224, 49, 93, 62, 96, 50, 114, 25, 96, 51, 61, 32, 96, 52, 81, 251, 96, 53, 29, 2, 96, 54, 49, 221, 96, 54, 252, 228, 96, 56, 26, 249, 224, 56, 220, 198, 96, 57, 250, 219, 224, 58, 188, 168, 96, 59, 218, 189, 224, 60, 165, 196, 224, 61, 186, 159, 224, 62, 133, 166, 224, 63, 154, 129, 224, 64, 101, 136, 224, 65, 131, 158, 96, 66, 69, 106, 224, 67, 99, 128, 96, 68, 37, 76, 224, 69, 67, 98, 96, 70, 5, 46, 224, 71, 35, 68, 96, 71, 238, 75, 96, 73, 3, 38, 96, 73, 206, 45, 96, 74, 227, 8, 96, 75, 174, 15, 96, 76, 204, 50, 240, 77, 141, 255, 112, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 4, 0, 0, 148, 188, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 182, 208, 1, 8, 0, 0, 168, 192, 0, 12, 0, 0, 168, 192, 0, 12, 0, 0, 182, 208, 1, 8, 0, 0, 168, 192, 1, 12, 0, 0, 154, 176, 0, 4, 0, 0, 168, 192, 0, 12, 76, 77, 84, 0, 43, 49, 49, 0, 43, 49, 51, 0, 43, 49, 50, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + + "zoneinfo/Asia/Karachi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 29, 128, 0, 0, 0, 137, 126, 252, 164, 204, 149, 50, 168, 210, 116, 18, 152, 221, 168, 224, 168, 2, 79, 171, 48, 60, 175, 69, 176, 61, 159, 40, 160, 72, 65, 160, 48, 73, 11, 71, 160, 73, 228, 221, 48, 74, 236, 123, 32, 0, 1, 2, 1, 3, 5, 4, 5, 4, 5, 4, 5, 0, 0, 62, 220, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 91, 104, 1, 10, 0, 0, 70, 80, 0, 16, 0, 0, 84, 96, 1, 20, 0, 0, 70, 80, 0, 25, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 51, 48, 0, 43, 48, 53, 0, 80, 75, 83, 84, 0, 80, 75, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 80, 75, 84, 45, 53, 10}, + + "zoneinfo/Asia/Kashgar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 176, 254, 186, 100, 127, 255, 255, 255, 0, 1, 1, 0, 0, 82, 28, 0, 0, 0, 0, 84, 96, 0, 4, 76, 77, 84, 0, 43, 48, 54, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + + "zoneinfo/Asia/Kathmandu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 16, 128, 0, 0, 0, 161, 242, 125, 132, 30, 24, 48, 168, 127, 255, 255, 255, 0, 1, 2, 2, 0, 0, 79, 252, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 80, 220, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 53, 52, 53, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 52, 53, 62, 45, 53, 58, 52, 53, 10}, + + "zoneinfo/Asia/Katmandu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 16, 128, 0, 0, 0, 161, 242, 125, 132, 30, 24, 48, 168, 127, 255, 255, 255, 0, 1, 2, 2, 0, 0, 79, 252, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 80, 220, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 53, 52, 53, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 52, 53, 62, 45, 53, 58, 52, 53, 10}, + + "zoneinfo/Asia/Khandyga": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 13, 0, 0, 0, 20, 128, 0, 0, 0, 161, 219, 228, 235, 181, 163, 197, 0, 21, 39, 83, 112, 22, 24, 135, 224, 23, 8, 134, 240, 23, 249, 187, 96, 24, 233, 186, 112, 25, 218, 238, 224, 26, 204, 63, 112, 27, 188, 76, 144, 28, 172, 61, 144, 29, 156, 46, 144, 30, 140, 31, 144, 31, 124, 16, 144, 32, 108, 1, 144, 33, 91, 242, 144, 34, 75, 227, 144, 35, 59, 212, 144, 36, 43, 197, 144, 37, 27, 182, 144, 38, 11, 167, 144, 39, 4, 211, 16, 39, 244, 196, 16, 40, 228, 195, 32, 41, 120, 107, 32, 41, 212, 166, 16, 42, 196, 151, 16, 43, 180, 136, 16, 44, 164, 121, 16, 45, 148, 106, 16, 46, 132, 91, 16, 47, 116, 76, 16, 48, 100, 61, 16, 49, 93, 104, 144, 50, 114, 67, 144, 51, 61, 74, 144, 52, 82, 37, 144, 53, 29, 44, 144, 54, 50, 7, 144, 54, 253, 14, 144, 56, 27, 36, 16, 56, 220, 240, 144, 57, 251, 6, 16, 58, 188, 210, 144, 59, 218, 232, 16, 60, 165, 239, 16, 61, 186, 202, 16, 62, 133, 209, 16, 63, 154, 172, 16, 63, 242, 228, 112, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 37, 105, 0, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 238, 103, 128, 73, 3, 66, 128, 73, 206, 73, 128, 74, 227, 36, 128, 75, 174, 43, 128, 76, 204, 65, 0, 77, 142, 13, 128, 78, 110, 2, 80, 84, 75, 201, 0, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 10, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 11, 9, 4, 4, 0, 0, 127, 21, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 0, 0, 154, 176, 1, 16, 0, 0, 140, 160, 0, 8, 0, 0, 140, 160, 0, 8, 0, 0, 154, 176, 0, 16, 0, 0, 126, 144, 0, 12, 76, 77, 84, 0, 43, 48, 56, 0, 43, 49, 48, 0, 43, 48, 57, 0, 43, 49, 49, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, + + "zoneinfo/Asia/Kolkata": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 135, 157, 188, 186, 202, 219, 140, 40, 204, 5, 113, 24, 204, 149, 50, 168, 210, 116, 18, 152, 1, 2, 3, 2, 3, 2, 0, 0, 82, 208, 0, 0, 0, 0, 75, 70, 0, 4, 0, 0, 77, 88, 0, 8, 0, 0, 91, 104, 1, 12, 72, 77, 84, 0, 77, 77, 84, 0, 73, 83, 84, 0, 43, 48, 54, 51, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 73, 83, 84, 45, 53, 58, 51, 48, 10}, + + "zoneinfo/Asia/Krasnoyarsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 11, 0, 0, 0, 16, 128, 0, 0, 0, 161, 249, 13, 242, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 44, 164, 149, 48, 45, 148, 134, 48, 46, 132, 119, 48, 47, 116, 104, 48, 48, 100, 89, 48, 49, 93, 132, 176, 50, 114, 95, 176, 51, 61, 102, 176, 52, 82, 65, 176, 53, 29, 72, 176, 54, 50, 35, 176, 54, 253, 42, 176, 56, 27, 64, 48, 56, 221, 12, 176, 57, 251, 34, 48, 58, 188, 238, 176, 59, 219, 4, 48, 60, 166, 11, 48, 61, 186, 230, 48, 62, 133, 237, 48, 63, 154, 200, 48, 64, 101, 207, 48, 65, 131, 228, 176, 66, 69, 177, 48, 67, 99, 198, 176, 68, 37, 147, 48, 69, 67, 168, 176, 70, 5, 117, 48, 71, 35, 138, 176, 71, 238, 145, 176, 73, 3, 108, 176, 73, 206, 115, 176, 74, 227, 78, 176, 75, 174, 85, 176, 76, 204, 107, 48, 77, 142, 55, 176, 84, 75, 229, 32, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 87, 14, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Asia/Kuala_Lumpur": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 32, 128, 0, 0, 0, 134, 131, 133, 163, 186, 103, 78, 144, 192, 10, 228, 96, 202, 179, 229, 96, 203, 145, 95, 8, 210, 72, 109, 240, 22, 145, 245, 8, 127, 255, 255, 255, 1, 2, 3, 4, 5, 6, 5, 7, 7, 0, 0, 95, 86, 0, 0, 0, 0, 97, 93, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 103, 32, 1, 12, 0, 0, 103, 32, 0, 12, 0, 0, 105, 120, 0, 18, 0, 0, 126, 144, 0, 24, 0, 0, 112, 128, 0, 28, 76, 77, 84, 0, 83, 77, 84, 0, 43, 48, 55, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + + "zoneinfo/Asia/Kuching": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 173, 138, 6, 144, 186, 103, 71, 136, 191, 123, 39, 128, 191, 243, 27, 80, 193, 93, 172, 128, 193, 213, 160, 80, 195, 62, 224, 0, 195, 182, 211, 208, 197, 32, 19, 128, 197, 152, 7, 80, 199, 1, 71, 0, 199, 121, 58, 208, 200, 227, 204, 0, 201, 91, 191, 208, 202, 196, 255, 128, 203, 60, 243, 80, 203, 145, 88, 0, 210, 72, 109, 240, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 3, 0, 0, 103, 112, 0, 0, 0, 0, 105, 120, 0, 4, 0, 0, 117, 48, 1, 10, 0, 0, 112, 128, 0, 16, 0, 0, 126, 144, 0, 20, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 43, 48, 55, 51, 48, 0, 43, 48, 56, 50, 48, 0, 43, 48, 56, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + + "zoneinfo/Asia/Kuwait": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 213, 27, 54, 180, 127, 255, 255, 255, 0, 1, 1, 0, 0, 43, 204, 0, 0, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/Asia/Macao": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 146, 230, 36, 4, 239, 119, 209, 184, 240, 168, 78, 40, 241, 87, 179, 184, 242, 136, 48, 40, 243, 55, 100, 128, 244, 104, 18, 40, 245, 32, 178, 56, 246, 71, 244, 40, 247, 0, 99, 0, 248, 39, 164, 240, 249, 5, 96, 56, 249, 245, 67, 40, 250, 229, 66, 56, 251, 222, 95, 168, 252, 206, 94, 184, 253, 190, 65, 168, 254, 174, 64, 184, 255, 158, 35, 168, 0, 142, 34, 184, 1, 126, 5, 168, 2, 110, 4, 184, 3, 93, 231, 168, 4, 77, 181, 128, 5, 61, 152, 112, 6, 45, 151, 128, 7, 38, 180, 240, 8, 22, 180, 0, 9, 6, 200, 40, 9, 246, 199, 56, 10, 230, 170, 40, 11, 214, 169, 56, 12, 198, 140, 40, 13, 182, 139, 56, 14, 166, 110, 40, 15, 150, 60, 0, 16, 134, 30, 240, 17, 118, 30, 0, 18, 111, 59, 112, 19, 95, 58, 128, 20, 79, 29, 112, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 106, 124, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + + "zoneinfo/Asia/Macau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 146, 230, 36, 4, 239, 119, 209, 184, 240, 168, 78, 40, 241, 87, 179, 184, 242, 136, 48, 40, 243, 55, 100, 128, 244, 104, 18, 40, 245, 32, 178, 56, 246, 71, 244, 40, 247, 0, 99, 0, 248, 39, 164, 240, 249, 5, 96, 56, 249, 245, 67, 40, 250, 229, 66, 56, 251, 222, 95, 168, 252, 206, 94, 184, 253, 190, 65, 168, 254, 174, 64, 184, 255, 158, 35, 168, 0, 142, 34, 184, 1, 126, 5, 168, 2, 110, 4, 184, 3, 93, 231, 168, 4, 77, 181, 128, 5, 61, 152, 112, 6, 45, 151, 128, 7, 38, 180, 240, 8, 22, 180, 0, 9, 6, 200, 40, 9, 246, 199, 56, 10, 230, 170, 40, 11, 214, 169, 56, 12, 198, 140, 40, 13, 182, 139, 56, 14, 166, 110, 40, 15, 150, 60, 0, 16, 134, 30, 240, 17, 118, 30, 0, 18, 111, 59, 112, 19, 95, 58, 128, 20, 79, 29, 112, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 106, 124, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + + "zoneinfo/Asia/Magadan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 11, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 54, 160, 181, 163, 168, 224, 21, 39, 55, 80, 22, 24, 107, 192, 23, 8, 106, 208, 23, 249, 159, 64, 24, 233, 158, 80, 25, 218, 210, 192, 26, 204, 35, 80, 27, 188, 48, 112, 28, 172, 33, 112, 29, 156, 18, 112, 30, 140, 3, 112, 31, 123, 244, 112, 32, 107, 229, 112, 33, 91, 214, 112, 34, 75, 199, 112, 35, 59, 184, 112, 36, 43, 169, 112, 37, 27, 154, 112, 38, 11, 139, 112, 39, 4, 182, 240, 39, 244, 167, 240, 40, 228, 167, 0, 41, 120, 79, 0, 41, 212, 137, 240, 42, 196, 122, 240, 43, 180, 107, 240, 44, 164, 92, 240, 45, 148, 77, 240, 46, 132, 62, 240, 47, 116, 47, 240, 48, 100, 32, 240, 49, 93, 76, 112, 50, 114, 39, 112, 51, 61, 46, 112, 52, 82, 9, 112, 53, 29, 16, 112, 54, 49, 235, 112, 54, 252, 242, 112, 56, 27, 7, 240, 56, 220, 212, 112, 57, 250, 233, 240, 58, 188, 182, 112, 59, 218, 203, 240, 60, 165, 210, 240, 61, 186, 173, 240, 62, 133, 180, 240, 63, 154, 143, 240, 64, 101, 150, 240, 65, 131, 172, 112, 66, 69, 120, 240, 67, 99, 142, 112, 68, 37, 90, 240, 69, 67, 112, 112, 70, 5, 60, 240, 71, 35, 82, 112, 71, 238, 89, 112, 73, 3, 52, 112, 73, 206, 59, 112, 74, 227, 22, 112, 75, 174, 29, 112, 76, 204, 50, 240, 77, 141, 255, 112, 84, 75, 172, 224, 87, 27, 156, 0, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 7, 4, 4, 0, 0, 141, 96, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 0, 8, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 49, 48, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Asia/Makassar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 21, 128, 0, 0, 0, 161, 242, 93, 144, 186, 22, 213, 144, 203, 136, 29, 128, 210, 86, 238, 112, 0, 1, 2, 3, 4, 0, 0, 111, 240, 0, 0, 0, 0, 111, 240, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 87, 73, 84, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 87, 73, 84, 65, 45, 56, 10}, + + "zoneinfo/Asia/Manila": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 5, 0, 0, 0, 12, 128, 0, 0, 0, 193, 156, 244, 128, 194, 22, 48, 112, 203, 242, 231, 0, 208, 169, 37, 112, 226, 108, 57, 0, 226, 213, 162, 240, 15, 117, 70, 128, 16, 102, 122, 240, 127, 255, 255, 255, 2, 1, 2, 3, 2, 1, 2, 1, 2, 2, 0, 0, 113, 112, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + + "zoneinfo/Asia/Muscat": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 161, 242, 153, 168, 127, 255, 255, 255, 0, 1, 1, 0, 0, 51, 216, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + + "zoneinfo/Asia/Nicosia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 165, 119, 30, 184, 9, 237, 175, 224, 10, 221, 146, 208, 11, 250, 100, 224, 12, 190, 198, 80, 13, 164, 57, 96, 14, 138, 225, 208, 15, 132, 27, 96, 16, 117, 79, 208, 17, 99, 253, 96, 18, 83, 224, 80, 19, 77, 25, 224, 20, 51, 194, 80, 21, 35, 193, 96, 22, 19, 164, 80, 23, 3, 163, 96, 23, 243, 134, 80, 24, 227, 133, 96, 25, 211, 104, 80, 26, 195, 103, 96, 27, 188, 132, 208, 28, 172, 131, 224, 29, 156, 102, 208, 30, 140, 101, 224, 31, 124, 72, 208, 32, 108, 71, 224, 33, 92, 42, 208, 34, 76, 41, 224, 35, 60, 12, 208, 36, 44, 11, 224, 37, 27, 238, 208, 38, 11, 237, 224, 39, 5, 11, 80, 39, 245, 10, 96, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 77, 145, 208, 51, 61, 144, 224, 52, 45, 115, 208, 53, 29, 114, 224, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 31, 72, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Asia/Novokuznetsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 9, 0, 0, 0, 16, 128, 0, 0, 0, 170, 24, 32, 192, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 44, 164, 149, 48, 45, 148, 134, 48, 46, 132, 119, 48, 47, 116, 104, 48, 48, 100, 89, 48, 49, 93, 132, 176, 50, 114, 95, 176, 51, 61, 102, 176, 52, 82, 65, 176, 53, 29, 72, 176, 54, 50, 35, 176, 54, 253, 42, 176, 56, 27, 64, 48, 56, 221, 12, 176, 57, 251, 34, 48, 58, 188, 238, 176, 59, 219, 4, 48, 60, 166, 11, 48, 61, 186, 230, 48, 62, 133, 237, 48, 63, 154, 200, 48, 64, 101, 207, 48, 65, 131, 228, 176, 66, 69, 177, 48, 67, 99, 198, 176, 68, 37, 147, 48, 69, 67, 168, 176, 70, 5, 117, 48, 71, 35, 138, 176, 71, 238, 145, 176, 73, 3, 108, 176, 73, 206, 115, 176, 74, 227, 78, 176, 75, 174, 85, 176, 76, 204, 121, 64, 77, 142, 69, 192, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 4, 0, 0, 81, 192, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Asia/Novosibirsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 10, 0, 0, 0, 16, 128, 0, 0, 0, 161, 219, 25, 36, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 43, 254, 78, 0, 44, 164, 163, 64, 45, 148, 148, 64, 46, 132, 133, 64, 47, 116, 118, 64, 48, 100, 103, 64, 49, 93, 146, 192, 50, 114, 109, 192, 51, 61, 116, 192, 52, 82, 79, 192, 53, 29, 86, 192, 54, 50, 49, 192, 54, 253, 56, 192, 56, 27, 78, 64, 56, 221, 26, 192, 57, 251, 48, 64, 58, 188, 252, 192, 59, 219, 18, 64, 60, 166, 25, 64, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 66, 69, 191, 64, 67, 99, 212, 192, 68, 37, 161, 64, 69, 67, 182, 192, 70, 5, 131, 64, 71, 35, 152, 192, 71, 238, 159, 192, 73, 3, 122, 192, 73, 206, 129, 192, 74, 227, 92, 192, 75, 174, 99, 192, 76, 204, 121, 64, 77, 142, 69, 192, 84, 75, 243, 48, 87, 147, 204, 192, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 8, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 77, 188, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 1, 12, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Asia/Omsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 11, 0, 0, 0, 16, 128, 0, 0, 0, 161, 179, 64, 182, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 228, 237, 80, 41, 120, 149, 80, 41, 212, 208, 64, 42, 196, 193, 64, 43, 180, 178, 64, 44, 164, 163, 64, 45, 148, 148, 64, 46, 132, 133, 64, 47, 116, 118, 64, 48, 100, 103, 64, 49, 93, 146, 192, 50, 114, 109, 192, 51, 61, 116, 192, 52, 82, 79, 192, 53, 29, 86, 192, 54, 50, 49, 192, 54, 253, 56, 192, 56, 27, 78, 64, 56, 221, 26, 192, 57, 251, 48, 64, 58, 188, 252, 192, 59, 219, 18, 64, 60, 166, 25, 64, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 66, 69, 191, 64, 67, 99, 212, 192, 68, 37, 161, 64, 69, 67, 182, 192, 70, 5, 131, 64, 71, 35, 152, 192, 71, 238, 159, 192, 73, 3, 122, 192, 73, 206, 129, 192, 74, 227, 92, 192, 75, 174, 99, 192, 76, 204, 121, 64, 77, 142, 69, 192, 84, 75, 243, 48, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 68, 202, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + + "zoneinfo/Asia/Oral": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 10, 0, 0, 0, 20, 128, 0, 0, 0, 170, 25, 147, 220, 181, 164, 11, 80, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 245, 10, 96, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 221, 96, 43, 180, 206, 96, 44, 164, 191, 96, 45, 148, 176, 96, 46, 132, 161, 96, 47, 116, 146, 96, 48, 100, 131, 96, 49, 93, 174, 224, 50, 114, 137, 224, 51, 61, 144, 224, 52, 82, 107, 224, 53, 29, 114, 224, 54, 50, 77, 224, 54, 253, 84, 224, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 127, 255, 255, 255, 0, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 5, 5, 0, 0, 48, 36, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 16, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 54, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Asia/Phnom_Penh": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 162, 106, 103, 196, 127, 255, 255, 255, 1, 2, 2, 0, 0, 94, 60, 0, 0, 0, 0, 94, 60, 0, 4, 0, 0, 98, 112, 0, 8, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Asia/Pontianak": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 7, 0, 0, 0, 31, 128, 0, 0, 0, 139, 255, 142, 0, 186, 22, 223, 0, 203, 121, 164, 8, 210, 86, 238, 112, 215, 60, 198, 8, 218, 255, 38, 0, 244, 181, 190, 136, 33, 218, 116, 128, 0, 1, 2, 3, 2, 4, 2, 5, 6, 0, 0, 102, 128, 0, 0, 0, 0, 102, 128, 0, 4, 0, 0, 105, 120, 0, 8, 0, 0, 126, 144, 0, 14, 0, 0, 112, 128, 0, 18, 0, 0, 112, 128, 0, 22, 0, 0, 98, 112, 0, 27, 76, 77, 84, 0, 80, 77, 84, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 87, 73, 84, 65, 0, 87, 73, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 87, 73, 66, 45, 55, 10}, + + "zoneinfo/Asia/Pyongyang": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 12, 128, 0, 0, 0, 139, 215, 241, 156, 146, 230, 22, 248, 210, 47, 97, 112, 85, 206, 2, 112, 0, 1, 2, 3, 1, 0, 0, 117, 228, 0, 0, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 4, 0, 0, 119, 136, 0, 4, 76, 77, 84, 0, 75, 83, 84, 0, 74, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 75, 83, 84, 45, 56, 58, 51, 48, 10}, + + "zoneinfo/Asia/Qatar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 161, 242, 157, 48, 4, 138, 146, 192, 127, 255, 255, 255, 0, 1, 2, 2, 0, 0, 48, 80, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 42, 48, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/Asia/Qyzylorda": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 11, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 134, 160, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 149, 80, 41, 212, 208, 64, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 92, 80, 56, 221, 40, 208, 57, 251, 62, 80, 58, 189, 10, 208, 59, 219, 32, 80, 60, 166, 39, 80, 61, 187, 2, 80, 62, 134, 9, 80, 63, 154, 228, 80, 64, 101, 235, 80, 65, 132, 0, 208, 127, 255, 255, 255, 0, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 9, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 9, 9, 0, 0, 61, 96, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + + "zoneinfo/Asia/Rangoon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 18, 128, 0, 0, 0, 161, 242, 115, 81, 203, 242, 252, 24, 209, 154, 103, 240, 127, 255, 255, 255, 1, 2, 3, 2, 2, 0, 0, 90, 47, 0, 0, 0, 0, 90, 47, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 126, 144, 0, 14, 0, 0, 91, 104, 0, 8, 76, 77, 84, 0, 82, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 51, 48, 62, 45, 54, 58, 51, 48, 10}, + + "zoneinfo/Asia/Riyadh": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 213, 27, 54, 180, 127, 255, 255, 255, 0, 1, 1, 0, 0, 43, 204, 0, 0, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/Asia/Saigon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 136, 140, 67, 128, 145, 163, 43, 10, 205, 53, 230, 128, 209, 89, 206, 112, 210, 59, 62, 240, 213, 50, 187, 16, 228, 182, 228, 128, 237, 47, 152, 0, 10, 61, 199, 0, 127, 255, 255, 255, 0, 1, 2, 3, 4, 2, 3, 2, 3, 2, 2, 0, 0, 100, 0, 0, 0, 0, 0, 99, 246, 0, 4, 0, 0, 98, 112, 0, 9, 0, 0, 112, 128, 0, 13, 0, 0, 126, 144, 0, 17, 0, 0, 98, 112, 0, 9, 76, 77, 84, 0, 80, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 56, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Asia/Sakhalin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 9, 0, 0, 0, 20, 128, 0, 0, 0, 134, 240, 205, 184, 210, 48, 178, 240, 21, 39, 55, 80, 22, 24, 107, 192, 23, 8, 106, 208, 23, 249, 159, 64, 24, 233, 158, 80, 25, 218, 210, 192, 26, 204, 35, 80, 27, 188, 48, 112, 28, 172, 33, 112, 29, 156, 18, 112, 30, 140, 3, 112, 31, 123, 244, 112, 32, 107, 229, 112, 33, 91, 214, 112, 34, 75, 199, 112, 35, 59, 184, 112, 36, 43, 169, 112, 37, 27, 154, 112, 38, 11, 139, 112, 39, 4, 182, 240, 39, 244, 167, 240, 40, 228, 167, 0, 41, 120, 79, 0, 41, 212, 137, 240, 42, 196, 122, 240, 43, 180, 107, 240, 44, 164, 92, 240, 45, 148, 77, 240, 46, 132, 62, 240, 47, 116, 47, 240, 48, 100, 32, 240, 49, 93, 76, 112, 50, 114, 39, 112, 51, 61, 46, 112, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 250, 248, 0, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 37, 105, 0, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 238, 103, 128, 73, 3, 66, 128, 73, 206, 73, 128, 74, 227, 36, 128, 75, 174, 43, 128, 76, 204, 65, 0, 77, 142, 13, 128, 84, 75, 186, 240, 86, 246, 178, 0, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 133, 200, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 16, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 48, 57, 0, 43, 49, 50, 0, 43, 49, 49, 0, 43, 49, 48, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Asia/Samarkand": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 7, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 133, 55, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 237, 80, 41, 96, 190, 48, 127, 255, 255, 255, 0, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 2, 2, 0, 0, 62, 201, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Asia/Seoul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 139, 215, 240, 120, 146, 230, 22, 248, 210, 67, 39, 240, 226, 79, 41, 240, 228, 107, 183, 248, 229, 19, 24, 104, 230, 98, 3, 120, 231, 17, 76, 232, 232, 47, 112, 120, 232, 231, 244, 104, 234, 15, 82, 120, 234, 199, 214, 104, 235, 239, 52, 120, 236, 167, 184, 104, 237, 207, 22, 120, 238, 135, 154, 104, 240, 53, 113, 120, 32, 163, 96, 144, 33, 110, 103, 144, 34, 131, 66, 144, 35, 78, 73, 144, 0, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 3, 5, 3, 5, 3, 0, 0, 119, 8, 0, 0, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 4, 0, 0, 133, 152, 1, 12, 0, 0, 140, 160, 1, 12, 76, 77, 84, 0, 75, 83, 84, 0, 74, 83, 84, 0, 75, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 75, 83, 84, 45, 57, 10}, + + "zoneinfo/Asia/Shanghai": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 92, 1, 128, 200, 250, 39, 112, 201, 213, 14, 128, 202, 219, 90, 240, 30, 186, 54, 0, 31, 105, 127, 112, 32, 126, 104, 128, 33, 73, 97, 112, 34, 94, 74, 128, 35, 41, 67, 112, 36, 71, 103, 0, 37, 18, 95, 240, 38, 39, 73, 0, 38, 242, 65, 240, 40, 7, 43, 0, 40, 210, 35, 240, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + + "zoneinfo/Asia/Singapore": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 32, 128, 0, 0, 0, 134, 131, 133, 163, 186, 103, 78, 144, 192, 10, 228, 96, 202, 179, 229, 96, 203, 145, 95, 8, 210, 72, 109, 240, 22, 145, 245, 8, 127, 255, 255, 255, 1, 2, 3, 4, 5, 6, 5, 7, 7, 0, 0, 97, 93, 0, 0, 0, 0, 97, 93, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 103, 32, 1, 12, 0, 0, 103, 32, 0, 12, 0, 0, 105, 120, 0, 18, 0, 0, 126, 144, 0, 24, 0, 0, 112, 128, 0, 28, 76, 77, 84, 0, 83, 77, 84, 0, 43, 48, 55, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + + "zoneinfo/Asia/Srednekolymsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 11, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 51, 228, 181, 163, 168, 224, 21, 39, 55, 80, 22, 24, 107, 192, 23, 8, 106, 208, 23, 249, 159, 64, 24, 233, 158, 80, 25, 218, 210, 192, 26, 204, 35, 80, 27, 188, 48, 112, 28, 172, 33, 112, 29, 156, 18, 112, 30, 140, 3, 112, 31, 123, 244, 112, 32, 107, 229, 112, 33, 91, 214, 112, 34, 75, 199, 112, 35, 59, 184, 112, 36, 43, 169, 112, 37, 27, 154, 112, 38, 11, 139, 112, 39, 4, 182, 240, 39, 244, 167, 240, 40, 228, 167, 0, 41, 120, 79, 0, 41, 212, 137, 240, 42, 196, 122, 240, 43, 180, 107, 240, 44, 164, 92, 240, 45, 148, 77, 240, 46, 132, 62, 240, 47, 116, 47, 240, 48, 100, 32, 240, 49, 93, 76, 112, 50, 114, 39, 112, 51, 61, 46, 112, 52, 82, 9, 112, 53, 29, 16, 112, 54, 49, 235, 112, 54, 252, 242, 112, 56, 27, 7, 240, 56, 220, 212, 112, 57, 250, 233, 240, 58, 188, 182, 112, 59, 218, 203, 240, 60, 165, 210, 240, 61, 186, 173, 240, 62, 133, 180, 240, 63, 154, 143, 240, 64, 101, 150, 240, 65, 131, 172, 112, 66, 69, 120, 240, 67, 99, 142, 112, 68, 37, 90, 240, 69, 67, 112, 112, 70, 5, 60, 240, 71, 35, 82, 112, 71, 238, 89, 112, 73, 3, 52, 112, 73, 206, 59, 112, 74, 227, 22, 112, 75, 174, 29, 112, 76, 204, 50, 240, 77, 141, 255, 112, 84, 75, 172, 224, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 144, 28, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 0, 8, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 49, 48, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Asia/Taipei": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 195, 85, 73, 128, 210, 84, 89, 128, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 231, 153, 240, 218, 255, 38, 0, 219, 200, 205, 112, 220, 224, 89, 128, 221, 170, 0, 240, 222, 114, 115, 0, 223, 181, 100, 112, 224, 124, 133, 0, 225, 150, 151, 240, 226, 93, 184, 128, 227, 119, 203, 112, 228, 62, 236, 0, 229, 48, 32, 112, 230, 33, 113, 0, 231, 18, 165, 112, 232, 2, 164, 128, 232, 243, 216, 240, 233, 227, 216, 0, 234, 213, 12, 112, 235, 197, 11, 128, 236, 182, 63, 240, 237, 247, 252, 0, 238, 152, 196, 240, 239, 217, 47, 128, 240, 121, 248, 112, 7, 252, 86, 0, 8, 237, 138, 112, 9, 221, 137, 128, 10, 206, 189, 240, 17, 219, 161, 128, 18, 84, 221, 112, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 0, 0, 113, 232, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 76, 77, 84, 0, 67, 83, 84, 0, 74, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + + "zoneinfo/Asia/Tashkent": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 8, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 131, 9, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 228, 237, 80, 41, 96, 190, 48, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 1, 1, 0, 0, 64, 247, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Asia/Tbilisi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 11, 0, 0, 0, 21, 128, 0, 0, 0, 170, 25, 154, 1, 231, 218, 12, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 245, 10, 96, 40, 229, 9, 112, 41, 96, 218, 80, 41, 212, 222, 80, 42, 196, 193, 64, 43, 180, 192, 80, 44, 164, 163, 64, 45, 148, 162, 80, 46, 132, 133, 64, 47, 116, 118, 64, 48, 100, 89, 48, 49, 93, 146, 192, 51, 61, 102, 176, 52, 82, 65, 176, 53, 29, 86, 192, 54, 50, 35, 176, 54, 253, 56, 192, 56, 27, 64, 48, 56, 221, 26, 192, 57, 251, 34, 48, 58, 188, 252, 192, 59, 219, 4, 48, 60, 166, 25, 64, 61, 186, 230, 48, 62, 133, 251, 64, 63, 154, 200, 48, 64, 101, 221, 64, 64, 221, 199, 176, 65, 132, 28, 240, 66, 69, 233, 112, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 2, 9, 2, 9, 2, 9, 4, 3, 4, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 9, 8, 4, 4, 0, 0, 41, 255, 0, 0, 0, 0, 41, 255, 0, 4, 0, 0, 42, 48, 0, 9, 0, 0, 70, 80, 1, 13, 0, 0, 56, 64, 0, 17, 0, 0, 56, 64, 0, 17, 0, 0, 70, 80, 1, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 9, 0, 0, 56, 64, 1, 17, 0, 0, 56, 64, 0, 17, 76, 77, 84, 0, 84, 66, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + + "zoneinfo/Asia/Tehran": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 154, 108, 125, 200, 210, 219, 18, 200, 14, 187, 162, 72, 15, 116, 45, 64, 16, 142, 64, 48, 16, 237, 58, 64, 17, 85, 103, 200, 18, 69, 74, 184, 19, 55, 236, 200, 20, 45, 21, 184, 40, 32, 118, 200, 40, 219, 157, 184, 41, 203, 156, 200, 42, 190, 34, 184, 43, 172, 208, 72, 44, 159, 86, 56, 45, 142, 3, 200, 46, 128, 137, 184, 47, 111, 55, 72, 48, 97, 189, 56, 49, 80, 106, 200, 50, 66, 240, 184, 51, 50, 239, 200, 52, 37, 117, 184, 53, 20, 35, 72, 54, 6, 169, 56, 54, 245, 86, 200, 55, 231, 220, 184, 56, 214, 138, 72, 57, 201, 16, 56, 58, 185, 15, 72, 59, 171, 149, 56, 60, 154, 66, 200, 61, 140, 200, 184, 62, 123, 118, 72, 63, 109, 252, 56, 64, 92, 169, 200, 65, 79, 47, 184, 66, 63, 46, 200, 67, 49, 180, 184, 71, 226, 201, 72, 72, 213, 79, 56, 73, 197, 78, 72, 74, 183, 212, 56, 75, 166, 129, 200, 76, 153, 7, 184, 77, 135, 181, 72, 78, 122, 59, 56, 79, 104, 232, 200, 80, 91, 110, 184, 81, 75, 109, 200, 82, 61, 243, 184, 83, 44, 161, 72, 84, 31, 39, 56, 85, 13, 212, 200, 86, 0, 90, 184, 86, 239, 8, 72, 87, 225, 142, 56, 88, 209, 141, 72, 89, 196, 19, 56, 90, 178, 192, 200, 91, 165, 70, 184, 92, 147, 244, 72, 93, 134, 122, 56, 94, 117, 39, 200, 95, 103, 173, 184, 96, 87, 172, 200, 97, 74, 50, 184, 98, 56, 224, 72, 99, 43, 102, 56, 100, 26, 19, 200, 101, 12, 153, 184, 101, 251, 71, 72, 102, 237, 205, 56, 103, 221, 204, 72, 104, 208, 82, 56, 105, 190, 255, 200, 106, 177, 133, 184, 107, 160, 51, 72, 108, 146, 185, 56, 109, 129, 102, 200, 110, 115, 236, 184, 111, 98, 154, 72, 112, 85, 32, 56, 113, 69, 31, 72, 114, 55, 165, 56, 115, 38, 82, 200, 116, 24, 216, 184, 117, 7, 134, 72, 117, 250, 12, 56, 118, 232, 185, 200, 119, 219, 63, 184, 120, 203, 62, 200, 121, 189, 196, 184, 122, 172, 114, 72, 123, 158, 248, 56, 124, 141, 165, 200, 125, 128, 43, 184, 126, 110, 217, 72, 127, 97, 95, 56, 127, 255, 255, 255, 0, 1, 2, 4, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 2, 0, 0, 48, 56, 0, 0, 0, 0, 48, 56, 0, 4, 0, 0, 49, 56, 0, 8, 0, 0, 70, 80, 1, 14, 0, 0, 56, 64, 0, 18, 0, 0, 63, 72, 1, 22, 0, 0, 49, 56, 0, 8, 76, 77, 84, 0, 84, 77, 84, 0, 43, 48, 51, 51, 48, 0, 43, 48, 53, 0, 43, 48, 52, 0, 43, 48, 52, 51, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 51, 48, 62, 45, 51, 58, 51, 48, 60, 43, 48, 52, 51, 48, 62, 44, 74, 56, 48, 47, 48, 44, 74, 50, 54, 52, 47, 48, 10}, + + "zoneinfo/Asia/Tel_Aviv": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 158, 48, 69, 136, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 215, 90, 20, 96, 215, 223, 31, 192, 216, 47, 181, 112, 217, 30, 70, 224, 218, 16, 232, 240, 218, 235, 179, 224, 219, 180, 52, 0, 220, 185, 32, 224, 221, 224, 141, 0, 222, 180, 206, 128, 223, 164, 191, 128, 224, 139, 118, 0, 225, 86, 125, 0, 226, 190, 74, 96, 227, 54, 52, 208, 228, 156, 247, 0, 229, 22, 22, 208, 230, 116, 211, 224, 231, 17, 210, 128, 232, 39, 255, 0, 232, 232, 79, 208, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 49, 72, 150, 224, 50, 60, 110, 80, 51, 49, 179, 96, 52, 26, 254, 208, 53, 17, 149, 96, 53, 241, 166, 80, 55, 4, 8, 128, 55, 207, 1, 112, 56, 246, 95, 128, 57, 220, 249, 224, 58, 208, 237, 112, 59, 174, 91, 96, 60, 163, 160, 112, 61, 160, 178, 96, 62, 131, 130, 112, 63, 124, 159, 224, 64, 115, 54, 112, 65, 80, 164, 96, 66, 76, 143, 0, 67, 72, 79, 112, 68, 44, 113, 0, 69, 30, 246, 240, 70, 12, 83, 0, 70, 236, 99, 240, 71, 236, 53, 0, 72, 231, 245, 112, 73, 204, 23, 0, 74, 190, 156, 240, 75, 171, 249, 0, 76, 140, 9, 240, 77, 149, 21, 128, 78, 135, 155, 112, 79, 116, 247, 128, 80, 94, 66, 240, 81, 84, 217, 128, 82, 108, 73, 112, 83, 52, 187, 128, 84, 76, 43, 112, 85, 20, 157, 128, 86, 44, 13, 112, 86, 244, 127, 128, 88, 21, 41, 240, 88, 212, 97, 128, 89, 245, 11, 240, 90, 180, 67, 128, 91, 212, 237, 240, 92, 157, 96, 0, 93, 180, 207, 240, 94, 125, 66, 0, 95, 148, 177, 240, 96, 93, 36, 0, 97, 125, 206, 112, 98, 61, 6, 0, 99, 93, 176, 112, 100, 28, 232, 0, 101, 61, 146, 112, 102, 6, 4, 128, 103, 29, 116, 112, 103, 229, 230, 128, 104, 253, 86, 112, 105, 197, 200, 128, 106, 221, 56, 112, 107, 165, 170, 128, 108, 198, 84, 240, 109, 133, 140, 128, 110, 166, 54, 240, 111, 101, 110, 128, 112, 134, 24, 240, 113, 78, 139, 0, 114, 101, 250, 240, 115, 46, 109, 0, 116, 69, 220, 240, 117, 14, 79, 0, 118, 46, 249, 112, 118, 238, 49, 0, 120, 14, 219, 112, 120, 206, 19, 0, 121, 238, 189, 112, 122, 173, 245, 0, 123, 206, 159, 112, 124, 151, 17, 128, 125, 174, 129, 112, 126, 118, 243, 128, 127, 142, 99, 112, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 33, 6, 0, 0, 0, 0, 32, 248, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 56, 64, 1, 16, 0, 0, 42, 48, 1, 8, 76, 77, 84, 0, 74, 77, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 73, 68, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 73, 83, 84, 45, 50, 73, 68, 84, 44, 77, 51, 46, 52, 46, 52, 47, 50, 54, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Asia/Thimbu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 213, 230, 21, 116, 33, 97, 77, 168, 127, 255, 255, 255, 0, 1, 2, 2, 0, 0, 84, 12, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 84, 96, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + + "zoneinfo/Asia/Thimphu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 213, 230, 21, 116, 33, 97, 77, 168, 127, 255, 255, 255, 0, 1, 2, 2, 0, 0, 84, 12, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 84, 96, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + + "zoneinfo/Asia/Tokyo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 215, 62, 30, 144, 215, 236, 22, 128, 216, 249, 22, 144, 217, 203, 248, 128, 219, 7, 29, 16, 219, 171, 218, 128, 220, 230, 255, 16, 221, 139, 188, 128, 3, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 131, 3, 0, 0, 0, 0, 140, 160, 1, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 8, 76, 77, 84, 0, 74, 68, 84, 0, 74, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 74, 83, 84, 45, 57, 10}, + + "zoneinfo/Asia/Tomsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 10, 0, 0, 0, 16, 128, 0, 0, 0, 161, 229, 78, 217, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 44, 164, 149, 48, 45, 148, 134, 48, 46, 132, 119, 48, 47, 116, 104, 48, 48, 100, 89, 48, 49, 93, 132, 176, 50, 114, 95, 176, 51, 61, 102, 176, 52, 82, 65, 176, 53, 29, 72, 176, 54, 50, 35, 176, 54, 253, 42, 176, 56, 27, 64, 48, 56, 221, 12, 176, 57, 251, 34, 48, 58, 188, 238, 176, 59, 219, 4, 48, 60, 166, 11, 48, 60, 206, 233, 176, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 66, 69, 191, 64, 67, 99, 212, 192, 68, 37, 161, 64, 69, 67, 182, 192, 70, 5, 131, 64, 71, 35, 152, 192, 71, 238, 159, 192, 73, 3, 122, 192, 73, 206, 129, 192, 74, 227, 92, 192, 75, 174, 99, 192, 76, 204, 121, 64, 77, 142, 69, 192, 84, 75, 243, 48, 87, 73, 248, 192, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 8, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 79, 167, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 1, 12, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Asia/Ujung_Pandang": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 21, 128, 0, 0, 0, 161, 242, 93, 144, 186, 22, 213, 144, 203, 136, 29, 128, 210, 86, 238, 112, 0, 1, 2, 3, 4, 0, 0, 111, 240, 0, 0, 0, 0, 111, 240, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 87, 73, 84, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 87, 73, 84, 65, 45, 56, 10}, + + "zoneinfo/Asia/Ulaanbaatar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 134, 211, 238, 76, 15, 11, 220, 144, 24, 233, 200, 128, 25, 218, 252, 240, 26, 204, 77, 128, 27, 188, 48, 112, 28, 172, 47, 128, 29, 156, 18, 112, 30, 140, 17, 128, 31, 123, 244, 112, 32, 107, 243, 128, 33, 91, 214, 112, 34, 75, 213, 128, 35, 59, 184, 112, 36, 43, 183, 128, 37, 27, 154, 112, 38, 11, 153, 128, 39, 4, 182, 240, 39, 244, 182, 0, 40, 228, 152, 240, 41, 212, 152, 0, 42, 196, 122, 240, 43, 180, 122, 0, 44, 164, 92, 240, 45, 148, 92, 0, 46, 132, 62, 240, 47, 116, 62, 0, 48, 100, 32, 240, 49, 93, 90, 128, 50, 77, 61, 112, 51, 61, 60, 128, 52, 45, 31, 112, 53, 29, 30, 128, 54, 13, 1, 112, 58, 233, 179, 160, 59, 180, 172, 144, 60, 164, 171, 160, 61, 148, 142, 144, 62, 132, 141, 160, 63, 116, 112, 144, 64, 100, 111, 160, 65, 84, 82, 144, 66, 68, 81, 160, 67, 52, 52, 144, 68, 36, 51, 160, 69, 29, 81, 16, 85, 21, 154, 160, 86, 5, 97, 112, 86, 245, 124, 160, 87, 229, 67, 112, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 100, 52, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 112, 128, 0, 12, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + + "zoneinfo/Asia/Ulan_Bator": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 134, 211, 238, 76, 15, 11, 220, 144, 24, 233, 200, 128, 25, 218, 252, 240, 26, 204, 77, 128, 27, 188, 48, 112, 28, 172, 47, 128, 29, 156, 18, 112, 30, 140, 17, 128, 31, 123, 244, 112, 32, 107, 243, 128, 33, 91, 214, 112, 34, 75, 213, 128, 35, 59, 184, 112, 36, 43, 183, 128, 37, 27, 154, 112, 38, 11, 153, 128, 39, 4, 182, 240, 39, 244, 182, 0, 40, 228, 152, 240, 41, 212, 152, 0, 42, 196, 122, 240, 43, 180, 122, 0, 44, 164, 92, 240, 45, 148, 92, 0, 46, 132, 62, 240, 47, 116, 62, 0, 48, 100, 32, 240, 49, 93, 90, 128, 50, 77, 61, 112, 51, 61, 60, 128, 52, 45, 31, 112, 53, 29, 30, 128, 54, 13, 1, 112, 58, 233, 179, 160, 59, 180, 172, 144, 60, 164, 171, 160, 61, 148, 142, 144, 62, 132, 141, 160, 63, 116, 112, 144, 64, 100, 111, 160, 65, 84, 82, 144, 66, 68, 81, 160, 67, 52, 52, 144, 68, 36, 51, 160, 69, 29, 81, 16, 85, 21, 154, 160, 86, 5, 97, 112, 86, 245, 124, 160, 87, 229, 67, 112, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 100, 52, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 112, 128, 0, 12, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + + "zoneinfo/Asia/Urumqi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 176, 254, 186, 100, 127, 255, 255, 255, 0, 1, 1, 0, 0, 82, 28, 0, 0, 0, 0, 84, 96, 0, 4, 76, 77, 84, 0, 43, 48, 54, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + + "zoneinfo/Asia/Ust-Nera": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 12, 0, 0, 0, 24, 128, 0, 0, 0, 161, 219, 221, 186, 181, 163, 197, 0, 21, 39, 83, 112, 22, 24, 107, 192, 23, 8, 106, 208, 23, 249, 159, 64, 24, 233, 158, 80, 25, 218, 210, 192, 26, 204, 35, 80, 27, 188, 48, 112, 28, 172, 33, 112, 29, 156, 18, 112, 30, 140, 3, 112, 31, 123, 244, 112, 32, 107, 229, 112, 33, 91, 214, 112, 34, 75, 199, 112, 35, 59, 184, 112, 36, 43, 169, 112, 37, 27, 154, 112, 38, 11, 139, 112, 39, 4, 182, 240, 39, 244, 167, 240, 40, 228, 167, 0, 41, 120, 79, 0, 41, 212, 137, 240, 42, 196, 122, 240, 43, 180, 107, 240, 44, 164, 92, 240, 45, 148, 77, 240, 46, 132, 62, 240, 47, 116, 47, 240, 48, 100, 32, 240, 49, 93, 76, 112, 50, 114, 39, 112, 51, 61, 46, 112, 52, 82, 9, 112, 53, 29, 16, 112, 54, 49, 235, 112, 54, 252, 242, 112, 56, 27, 7, 240, 56, 220, 212, 112, 57, 250, 233, 240, 58, 188, 182, 112, 59, 218, 203, 240, 60, 165, 210, 240, 61, 186, 173, 240, 62, 133, 180, 240, 63, 154, 143, 240, 64, 101, 150, 240, 65, 131, 172, 112, 66, 69, 120, 240, 67, 99, 142, 112, 68, 37, 90, 240, 69, 67, 112, 112, 70, 5, 60, 240, 71, 35, 82, 112, 71, 238, 89, 112, 73, 3, 52, 112, 73, 206, 59, 112, 74, 227, 22, 112, 75, 174, 29, 112, 76, 204, 50, 240, 77, 141, 255, 112, 78, 109, 244, 64, 84, 75, 186, 240, 127, 255, 255, 255, 0, 1, 2, 4, 3, 4, 3, 4, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 9, 5, 8, 8, 0, 0, 134, 70, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 16, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 16, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 20, 0, 0, 168, 192, 0, 16, 0, 0, 168, 192, 1, 16, 0, 0, 140, 160, 0, 20, 76, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 43, 49, 49, 0, 43, 49, 50, 0, 43, 49, 48, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + + "zoneinfo/Asia/Vientiane": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 162, 106, 103, 196, 127, 255, 255, 255, 1, 2, 2, 0, 0, 94, 60, 0, 0, 0, 0, 94, 60, 0, 4, 0, 0, 98, 112, 0, 8, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Asia/Vladivostok": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 11, 0, 0, 0, 16, 128, 0, 0, 0, 167, 89, 71, 93, 181, 163, 182, 240, 21, 39, 69, 96, 22, 24, 121, 208, 23, 8, 120, 224, 23, 249, 173, 80, 24, 233, 172, 96, 25, 218, 224, 208, 26, 204, 49, 96, 27, 188, 62, 128, 28, 172, 47, 128, 29, 156, 32, 128, 30, 140, 17, 128, 31, 124, 2, 128, 32, 107, 243, 128, 33, 91, 228, 128, 34, 75, 213, 128, 35, 59, 198, 128, 36, 43, 183, 128, 37, 27, 168, 128, 38, 11, 153, 128, 39, 4, 197, 0, 39, 244, 182, 0, 40, 228, 181, 16, 41, 120, 93, 16, 41, 212, 152, 0, 42, 196, 137, 0, 43, 180, 122, 0, 44, 164, 107, 0, 45, 148, 92, 0, 46, 132, 77, 0, 47, 116, 62, 0, 48, 100, 47, 0, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 250, 248, 0, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 37, 105, 0, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 238, 103, 128, 73, 3, 66, 128, 73, 206, 73, 128, 74, 227, 36, 128, 75, 174, 43, 128, 76, 204, 65, 0, 77, 142, 13, 128, 84, 75, 186, 240, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 123, 163, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 154, 176, 1, 8, 0, 0, 140, 160, 0, 12, 0, 0, 140, 160, 0, 12, 0, 0, 154, 176, 1, 8, 0, 0, 140, 160, 1, 12, 0, 0, 126, 144, 0, 4, 0, 0, 154, 176, 0, 8, 0, 0, 154, 176, 1, 8, 0, 0, 140, 160, 0, 12, 76, 77, 84, 0, 43, 48, 57, 0, 43, 49, 49, 0, 43, 49, 48, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + + "zoneinfo/Asia/Yakutsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 11, 0, 0, 0, 16, 128, 0, 0, 0, 161, 219, 234, 94, 181, 163, 197, 0, 21, 39, 83, 112, 22, 24, 135, 224, 23, 8, 134, 240, 23, 249, 187, 96, 24, 233, 186, 112, 25, 218, 238, 224, 26, 204, 63, 112, 27, 188, 76, 144, 28, 172, 61, 144, 29, 156, 46, 144, 30, 140, 31, 144, 31, 124, 16, 144, 32, 108, 1, 144, 33, 91, 242, 144, 34, 75, 227, 144, 35, 59, 212, 144, 36, 43, 197, 144, 37, 27, 182, 144, 38, 11, 167, 144, 39, 4, 211, 16, 39, 244, 196, 16, 40, 228, 195, 32, 41, 120, 107, 32, 41, 212, 166, 16, 42, 196, 151, 16, 43, 180, 136, 16, 44, 164, 121, 16, 45, 148, 106, 16, 46, 132, 91, 16, 47, 116, 76, 16, 48, 100, 61, 16, 49, 93, 104, 144, 50, 114, 67, 144, 51, 61, 74, 144, 52, 82, 37, 144, 53, 29, 44, 144, 54, 50, 7, 144, 54, 253, 14, 144, 56, 27, 36, 16, 56, 220, 240, 144, 57, 251, 6, 16, 58, 188, 210, 144, 59, 218, 232, 16, 60, 165, 239, 16, 61, 186, 202, 16, 62, 133, 209, 16, 63, 154, 172, 16, 64, 101, 179, 16, 65, 131, 200, 144, 66, 69, 149, 16, 67, 99, 170, 144, 68, 37, 119, 16, 69, 67, 140, 144, 70, 5, 89, 16, 71, 35, 110, 144, 71, 238, 117, 144, 73, 3, 80, 144, 73, 206, 87, 144, 74, 227, 50, 144, 75, 174, 57, 144, 76, 204, 79, 16, 77, 142, 27, 144, 84, 75, 201, 0, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 121, 162, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 76, 77, 84, 0, 43, 48, 56, 0, 43, 49, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, + + "zoneinfo/Asia/Yangon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 18, 128, 0, 0, 0, 161, 242, 115, 81, 203, 242, 252, 24, 209, 154, 103, 240, 127, 255, 255, 255, 1, 2, 3, 2, 2, 0, 0, 90, 47, 0, 0, 0, 0, 90, 47, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 126, 144, 0, 14, 0, 0, 91, 104, 0, 8, 76, 77, 84, 0, 82, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 51, 48, 62, 45, 54, 58, 51, 48, 10}, + + "zoneinfo/Asia/Yekaterinburg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 12, 0, 0, 0, 20, 128, 0, 0, 0, 155, 95, 9, 39, 161, 18, 177, 255, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 191, 48, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 92, 80, 56, 221, 40, 208, 57, 251, 62, 80, 58, 189, 10, 208, 59, 219, 32, 80, 60, 166, 39, 80, 61, 187, 2, 80, 62, 134, 9, 80, 63, 154, 228, 80, 64, 101, 235, 80, 65, 132, 0, 208, 66, 69, 205, 80, 67, 99, 226, 208, 68, 37, 175, 80, 69, 67, 196, 208, 70, 5, 145, 80, 71, 35, 166, 208, 71, 238, 173, 208, 73, 3, 136, 208, 73, 206, 143, 208, 74, 227, 106, 208, 75, 174, 113, 208, 76, 204, 135, 80, 77, 142, 83, 208, 84, 76, 1, 64, 127, 255, 255, 255, 0, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 9, 5, 5, 0, 0, 56, 217, 0, 0, 0, 0, 52, 193, 0, 4, 0, 0, 56, 64, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 16, 0, 0, 70, 80, 0, 16, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 16, 0, 0, 56, 64, 0, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 16, 76, 77, 84, 0, 80, 77, 84, 0, 43, 48, 52, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Asia/Yerevan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 10, 0, 0, 0, 16, 128, 0, 0, 0, 170, 25, 154, 72, 231, 218, 12, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 245, 10, 96, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 50, 201, 112, 192, 51, 61, 144, 224, 52, 82, 107, 224, 53, 29, 114, 224, 54, 50, 77, 224, 54, 253, 84, 224, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 66, 69, 219, 96, 67, 99, 240, 224, 68, 37, 189, 96, 69, 67, 210, 224, 70, 5, 159, 96, 71, 35, 180, 224, 71, 238, 187, 224, 73, 3, 150, 224, 73, 206, 157, 224, 74, 227, 120, 224, 75, 174, 127, 224, 76, 204, 149, 96, 77, 30, 54, 64, 77, 142, 97, 224, 78, 172, 119, 96, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 4, 3, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 3, 5, 4, 4, 0, 0, 41, 184, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + + "zoneinfo/Atlantic/Azores": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 12, 0, 0, 0, 24, 128, 0, 0, 0, 146, 230, 169, 88, 155, 75, 137, 144, 155, 254, 227, 160, 156, 157, 9, 144, 157, 201, 159, 144, 158, 127, 142, 144, 159, 170, 211, 16, 160, 95, 112, 144, 161, 140, 6, 144, 162, 65, 245, 144, 163, 110, 139, 144, 164, 35, 41, 16, 165, 79, 191, 16, 170, 6, 11, 144, 170, 244, 171, 16, 173, 201, 196, 16, 174, 167, 64, 16, 175, 160, 107, 144, 176, 135, 34, 16, 177, 137, 136, 16, 178, 112, 62, 144, 179, 114, 164, 144, 180, 80, 32, 144, 183, 50, 104, 144, 184, 15, 228, 144, 184, 255, 213, 144, 185, 239, 198, 144, 188, 200, 212, 16, 189, 184, 197, 16, 190, 159, 123, 144, 191, 152, 167, 16, 192, 155, 13, 16, 193, 120, 137, 16, 194, 104, 122, 16, 195, 88, 107, 16, 196, 63, 33, 144, 197, 56, 77, 16, 198, 58, 179, 16, 199, 88, 200, 144, 199, 217, 251, 144, 201, 1, 75, 144, 201, 241, 60, 144, 202, 226, 127, 16, 203, 181, 111, 16, 203, 236, 192, 0, 204, 128, 104, 0, 204, 220, 191, 16, 205, 149, 81, 16, 205, 195, 103, 128, 206, 114, 191, 0, 206, 197, 219, 144, 207, 117, 51, 16, 207, 172, 132, 0, 208, 82, 161, 0, 208, 165, 189, 144, 209, 85, 21, 16, 209, 140, 102, 0, 210, 50, 131, 0, 210, 133, 159, 144, 211, 89, 225, 16, 212, 73, 210, 16, 213, 57, 237, 64, 214, 41, 222, 64, 215, 25, 207, 64, 216, 9, 192, 64, 216, 249, 177, 64, 217, 233, 162, 64, 220, 185, 117, 64, 221, 178, 160, 192, 222, 162, 145, 192, 223, 146, 130, 192, 224, 130, 115, 192, 225, 114, 100, 192, 226, 98, 85, 192, 227, 82, 70, 192, 228, 66, 55, 192, 229, 50, 40, 192, 230, 34, 25, 192, 231, 27, 69, 64, 232, 11, 54, 64, 232, 251, 39, 64, 233, 235, 24, 64, 234, 219, 9, 64, 235, 202, 250, 64, 236, 186, 235, 64, 237, 170, 220, 64, 238, 154, 205, 64, 239, 138, 190, 64, 240, 122, 175, 64, 241, 106, 160, 64, 242, 99, 203, 192, 243, 83, 188, 192, 244, 67, 173, 192, 245, 51, 158, 192, 246, 35, 143, 192, 247, 19, 128, 192, 248, 3, 113, 192, 248, 243, 98, 192, 13, 155, 41, 16, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 38, 160, 19, 68, 9, 144, 20, 52, 8, 160, 21, 35, 249, 160, 22, 19, 234, 160, 23, 3, 219, 160, 23, 243, 204, 160, 24, 227, 203, 176, 25, 211, 174, 160, 26, 195, 159, 160, 27, 188, 203, 32, 28, 172, 188, 32, 29, 156, 173, 32, 30, 140, 158, 32, 31, 124, 143, 32, 32, 108, 128, 32, 33, 92, 113, 32, 34, 76, 98, 32, 35, 60, 83, 32, 36, 44, 68, 32, 37, 28, 53, 32, 38, 12, 38, 32, 39, 5, 81, 160, 39, 245, 66, 160, 40, 229, 51, 160, 41, 213, 36, 160, 42, 197, 21, 160, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 127, 255, 255, 255, 1, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 4, 5, 4, 6, 4, 5, 4, 6, 4, 5, 4, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 8, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 9, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 11, 255, 255, 231, 240, 0, 0, 255, 255, 229, 40, 0, 4, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 12, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 12, 0, 0, 0, 0, 1, 16, 255, 255, 241, 240, 0, 8, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 1, 16, 255, 255, 241, 240, 0, 8, 76, 77, 84, 0, 72, 77, 84, 0, 45, 48, 49, 0, 45, 48, 50, 0, 43, 48, 48, 0, 87, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 60, 45, 48, 49, 62, 49, 60, 43, 48, 48, 62, 44, 77, 51, 46, 53, 46, 48, 47, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 49, 10}, + + "zoneinfo/Atlantic/Bermuda": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 180, 195, 29, 230, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 195, 58, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 1, 8, 76, 77, 84, 0, 65, 83, 84, 0, 65, 68, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Atlantic/Canary": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 6, 0, 0, 0, 17, 128, 0, 0, 0, 166, 4, 92, 240, 212, 65, 247, 32, 19, 77, 54, 0, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 1, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 255, 255, 241, 144, 0, 0, 255, 255, 241, 240, 0, 4, 0, 0, 0, 0, 0, 8, 0, 0, 14, 16, 1, 12, 0, 0, 0, 0, 0, 8, 0, 0, 14, 16, 1, 12, 76, 77, 84, 0, 45, 48, 49, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Atlantic/Cape_Verde": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 137, 127, 81, 140, 204, 149, 156, 32, 210, 116, 124, 16, 11, 23, 247, 64, 127, 255, 255, 255, 0, 1, 2, 1, 3, 3, 255, 255, 233, 244, 0, 0, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 1, 8, 255, 255, 241, 240, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 49, 62, 49, 10}, + + "zoneinfo/Atlantic/Faeroe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 4, 0, 0, 0, 13, 128, 0, 0, 0, 139, 109, 164, 88, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 249, 168, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Atlantic/Faroe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 4, 0, 0, 0, 13, 128, 0, 0, 0, 139, 109, 164, 88, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 249, 168, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Atlantic/Jan_Mayen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 39, 227, 0, 155, 212, 123, 96, 200, 183, 77, 96, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 98, 7, 16, 235, 175, 32, 144, 236, 168, 76, 16, 237, 152, 61, 16, 238, 136, 46, 16, 239, 120, 31, 16, 240, 104, 16, 16, 241, 88, 1, 16, 242, 71, 242, 16, 243, 55, 227, 16, 244, 39, 212, 16, 245, 23, 197, 16, 246, 16, 240, 144, 247, 47, 6, 16, 247, 240, 210, 144, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 10, 20, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Atlantic/Madeira": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 221, 0, 0, 0, 12, 0, 0, 0, 29, 128, 0, 0, 0, 146, 230, 158, 88, 155, 75, 123, 128, 155, 254, 213, 144, 156, 156, 251, 128, 157, 201, 145, 128, 158, 127, 128, 128, 159, 170, 197, 0, 160, 95, 98, 128, 161, 139, 248, 128, 162, 65, 231, 128, 163, 110, 125, 128, 164, 35, 27, 0, 165, 79, 177, 0, 170, 5, 253, 128, 170, 244, 157, 0, 173, 201, 182, 0, 174, 167, 50, 0, 175, 160, 93, 128, 176, 135, 20, 0, 177, 137, 122, 0, 178, 112, 48, 128, 179, 114, 150, 128, 180, 80, 18, 128, 183, 50, 90, 128, 184, 15, 214, 128, 184, 255, 199, 128, 185, 239, 184, 128, 188, 200, 198, 0, 189, 184, 183, 0, 190, 159, 109, 128, 191, 152, 153, 0, 192, 154, 255, 0, 193, 120, 123, 0, 194, 104, 108, 0, 195, 88, 93, 0, 196, 63, 19, 128, 197, 56, 63, 0, 198, 58, 165, 0, 199, 88, 186, 128, 199, 217, 237, 128, 201, 1, 61, 128, 201, 241, 46, 128, 202, 226, 113, 0, 203, 181, 97, 0, 203, 236, 177, 240, 204, 128, 89, 240, 204, 220, 177, 0, 205, 149, 67, 0, 205, 195, 89, 112, 206, 114, 176, 240, 206, 197, 205, 128, 207, 117, 37, 0, 207, 172, 117, 240, 208, 82, 146, 240, 208, 165, 175, 128, 209, 85, 7, 0, 209, 140, 87, 240, 210, 50, 116, 240, 210, 133, 145, 128, 211, 89, 211, 0, 212, 73, 196, 0, 213, 57, 223, 48, 214, 41, 208, 48, 215, 25, 193, 48, 216, 9, 178, 48, 216, 249, 163, 48, 217, 233, 148, 48, 220, 185, 103, 48, 221, 178, 146, 176, 222, 162, 131, 176, 223, 146, 116, 176, 224, 130, 101, 176, 225, 114, 86, 176, 226, 98, 71, 176, 227, 82, 56, 176, 228, 66, 41, 176, 229, 50, 26, 176, 230, 34, 11, 176, 231, 27, 55, 48, 232, 11, 40, 48, 232, 251, 25, 48, 233, 235, 10, 48, 234, 218, 251, 48, 235, 202, 236, 48, 236, 186, 221, 48, 237, 170, 206, 48, 238, 154, 191, 48, 239, 138, 176, 48, 240, 122, 161, 48, 241, 106, 146, 48, 242, 99, 189, 176, 243, 83, 174, 176, 244, 67, 159, 176, 245, 51, 144, 176, 246, 35, 129, 176, 247, 19, 114, 176, 248, 3, 99, 176, 248, 243, 84, 176, 13, 155, 27, 0, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 24, 144, 19, 67, 251, 128, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 189, 160, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 4, 5, 4, 6, 4, 5, 4, 6, 4, 5, 4, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 9, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 255, 255, 240, 40, 0, 0, 255, 255, 240, 40, 0, 4, 0, 0, 0, 0, 1, 8, 255, 255, 241, 240, 0, 12, 0, 0, 0, 0, 1, 8, 255, 255, 241, 240, 0, 12, 0, 0, 14, 16, 1, 16, 0, 0, 14, 16, 1, 20, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 25, 0, 0, 14, 16, 1, 20, 76, 77, 84, 0, 70, 77, 84, 0, 43, 48, 48, 0, 45, 48, 49, 0, 43, 48, 49, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Atlantic/Reykjavik": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 139, 96, 131, 160, 156, 145, 30, 0, 157, 209, 136, 144, 158, 114, 81, 128, 159, 213, 3, 16, 160, 83, 133, 0, 161, 182, 54, 144, 164, 60, 39, 128, 164, 185, 116, 16, 198, 77, 26, 0, 199, 61, 39, 32, 199, 218, 23, 176, 201, 38, 67, 160, 201, 195, 38, 32, 203, 6, 37, 160, 203, 172, 66, 160, 204, 220, 205, 32, 205, 140, 36, 160, 206, 188, 175, 32, 207, 108, 6, 160, 208, 156, 145, 32, 209, 75, 232, 160, 210, 133, 173, 160, 211, 43, 202, 160, 212, 101, 143, 160, 213, 57, 209, 32, 214, 69, 113, 160, 215, 25, 179, 32, 216, 37, 83, 160, 216, 249, 149, 32, 218, 14, 112, 32, 218, 217, 119, 32, 219, 229, 23, 160, 220, 185, 89, 32, 221, 206, 52, 32, 222, 162, 117, 160, 223, 174, 22, 32, 224, 130, 87, 160, 225, 141, 248, 32, 226, 98, 57, 160, 227, 109, 218, 32, 228, 66, 27, 160, 229, 77, 188, 32, 230, 33, 253, 160, 231, 54, 216, 160, 232, 11, 26, 32, 233, 22, 186, 160, 233, 234, 252, 32, 234, 246, 156, 160, 235, 202, 222, 32, 236, 214, 126, 160, 237, 170, 192, 32, 238, 182, 96, 160, 239, 138, 162, 32, 240, 150, 66, 160, 241, 106, 132, 32, 242, 127, 95, 32, 243, 83, 160, 160, 244, 95, 65, 32, 245, 51, 130, 160, 246, 63, 35, 32, 247, 19, 100, 160, 248, 31, 5, 32, 248, 243, 70, 160, 249, 254, 231, 32, 250, 211, 40, 160, 251, 232, 3, 160, 252, 188, 69, 32, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 255, 255, 235, 96, 0, 0, 0, 0, 0, 0, 1, 4, 255, 255, 241, 240, 0, 8, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 12, 76, 77, 84, 0, 43, 48, 48, 0, 45, 48, 49, 0, 71, 77, 84, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Atlantic/South_Georgia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 255, 255, 221, 192, 0, 0, 255, 255, 227, 224, 0, 4, 76, 77, 84, 0, 45, 48, 50, 0, 0, 0, 0, 0, 10, 60, 45, 48, 50, 62, 50, 10}, + + "zoneinfo/Atlantic/St_Helena": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 146, 230, 146, 72, 0, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Atlantic/Stanley": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 147, 68, 95, 60, 195, 79, 90, 192, 196, 54, 3, 48, 197, 47, 60, 192, 198, 21, 229, 48, 199, 24, 89, 64, 199, 255, 1, 176, 200, 248, 59, 64, 201, 222, 227, 176, 202, 216, 29, 64, 203, 190, 197, 176, 204, 183, 255, 64, 205, 54, 129, 48, 25, 17, 254, 64, 25, 211, 188, 176, 26, 241, 196, 32, 27, 170, 100, 48, 28, 209, 166, 32, 29, 138, 70, 48, 30, 168, 91, 176, 31, 106, 54, 64, 32, 136, 61, 176, 33, 74, 24, 64, 34, 104, 31, 176, 35, 41, 250, 64, 36, 72, 1, 176, 37, 9, 220, 64, 38, 49, 30, 48, 38, 233, 190, 64, 40, 17, 0, 48, 40, 210, 218, 192, 41, 240, 226, 48, 42, 178, 188, 192, 43, 208, 196, 48, 44, 146, 158, 192, 45, 176, 166, 48, 46, 114, 128, 192, 47, 144, 136, 48, 48, 82, 98, 192, 49, 121, 164, 176, 50, 59, 127, 64, 51, 89, 134, 176, 52, 27, 97, 64, 53, 57, 104, 176, 53, 251, 67, 64, 55, 25, 74, 176, 55, 219, 37, 64, 56, 249, 44, 176, 57, 187, 7, 64, 58, 217, 42, 208, 59, 145, 202, 224, 60, 194, 71, 80, 61, 113, 172, 224, 62, 162, 41, 80, 63, 90, 201, 96, 64, 130, 11, 80, 65, 58, 171, 96, 66, 97, 237, 80, 67, 26, 141, 96, 68, 65, 207, 80, 68, 250, 111, 96, 70, 33, 177, 80, 70, 218, 81, 96, 72, 10, 205, 208, 72, 195, 109, 224, 73, 234, 175, 208, 74, 163, 79, 224, 75, 202, 145, 208, 76, 131, 49, 224, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 5, 4, 5, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 5, 5, 255, 255, 201, 196, 0, 0, 255, 255, 201, 196, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 8, 255, 255, 213, 208, 1, 8, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/Australia/ACT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 12, 137, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 88, 142, 128, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Australia/Adelaide": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 10, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 3, 112, 64, 136, 4, 13, 35, 8, 5, 80, 34, 136, 5, 246, 63, 136, 7, 48, 4, 136, 7, 214, 33, 136, 9, 15, 230, 136, 9, 182, 3, 136, 10, 239, 200, 136, 11, 159, 32, 8, 12, 216, 229, 8, 13, 127, 2, 8, 14, 184, 199, 8, 15, 94, 228, 8, 16, 152, 169, 8, 17, 62, 198, 8, 18, 120, 139, 8, 19, 30, 168, 8, 20, 88, 109, 8, 20, 254, 138, 8, 22, 56, 79, 8, 22, 231, 166, 136, 24, 33, 107, 136, 24, 199, 136, 136, 26, 1, 77, 136, 26, 167, 106, 136, 27, 225, 47, 136, 28, 135, 76, 136, 29, 193, 17, 136, 30, 121, 163, 136, 31, 151, 185, 8, 32, 89, 133, 136, 33, 128, 213, 136, 34, 66, 162, 8, 35, 105, 242, 8, 36, 34, 132, 8, 37, 73, 212, 8, 38, 2, 102, 8, 39, 41, 182, 8, 39, 207, 211, 8, 41, 9, 152, 8, 41, 203, 100, 136, 42, 233, 122, 8, 43, 152, 209, 136, 44, 210, 150, 136, 45, 139, 40, 136, 46, 178, 120, 136, 47, 116, 69, 8, 48, 146, 90, 136, 49, 93, 97, 136, 50, 114, 60, 136, 51, 61, 67, 136, 52, 82, 30, 136, 53, 29, 37, 136, 54, 50, 0, 136, 54, 253, 7, 136, 56, 27, 29, 8, 56, 220, 233, 136, 57, 250, 255, 8, 58, 188, 203, 136, 59, 218, 225, 8, 60, 165, 232, 8, 61, 186, 195, 8, 62, 133, 202, 8, 63, 154, 165, 8, 64, 101, 172, 8, 65, 131, 193, 136, 66, 69, 142, 8, 67, 99, 163, 136, 68, 46, 170, 136, 69, 67, 133, 136, 70, 5, 82, 8, 71, 35, 103, 136, 71, 247, 169, 8, 72, 231, 154, 8, 73, 215, 139, 8, 74, 199, 124, 8, 75, 183, 109, 8, 76, 167, 94, 8, 77, 151, 79, 8, 78, 135, 64, 8, 79, 119, 49, 8, 80, 112, 92, 136, 81, 96, 77, 136, 82, 80, 62, 136, 83, 64, 47, 136, 84, 48, 32, 136, 85, 32, 17, 136, 86, 16, 2, 136, 86, 255, 243, 136, 87, 239, 228, 136, 88, 223, 213, 136, 89, 207, 198, 136, 90, 191, 183, 136, 91, 184, 227, 8, 92, 168, 212, 8, 93, 152, 197, 8, 94, 136, 182, 8, 95, 120, 167, 8, 96, 104, 152, 8, 97, 88, 137, 8, 98, 72, 122, 8, 99, 56, 107, 8, 100, 40, 92, 8, 101, 24, 77, 8, 102, 17, 120, 136, 103, 1, 105, 136, 103, 241, 90, 136, 104, 225, 75, 136, 105, 209, 60, 136, 106, 193, 45, 136, 107, 177, 30, 136, 108, 161, 15, 136, 109, 145, 0, 136, 110, 128, 241, 136, 111, 112, 226, 136, 112, 106, 14, 8, 113, 89, 255, 8, 114, 73, 240, 8, 115, 57, 225, 8, 116, 41, 210, 8, 117, 25, 195, 8, 118, 9, 180, 8, 118, 249, 165, 8, 119, 233, 150, 8, 120, 217, 135, 8, 121, 201, 120, 8, 122, 185, 105, 8, 123, 178, 148, 136, 124, 162, 133, 136, 125, 146, 118, 136, 126, 130, 103, 136, 127, 114, 88, 136, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 126, 144, 0, 0, 0, 0, 147, 168, 1, 5, 0, 0, 133, 152, 0, 0, 0, 0, 147, 168, 1, 5, 0, 0, 133, 152, 0, 0, 65, 67, 83, 84, 0, 65, 67, 68, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 65, 67, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Australia/Brisbane": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 143, 120, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 10}, + + "zoneinfo/Australia/Broken_Hill": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 5, 0, 0, 0, 10, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 3, 112, 64, 136, 4, 13, 35, 8, 5, 80, 34, 136, 5, 246, 63, 136, 7, 48, 4, 136, 7, 214, 33, 136, 9, 15, 230, 136, 9, 182, 3, 136, 10, 239, 200, 136, 11, 159, 32, 8, 12, 216, 229, 8, 13, 127, 2, 8, 14, 184, 199, 8, 15, 94, 228, 8, 16, 152, 169, 8, 17, 62, 198, 8, 18, 120, 139, 8, 19, 30, 168, 8, 20, 88, 109, 8, 20, 254, 138, 8, 22, 56, 79, 8, 23, 12, 144, 136, 24, 33, 107, 136, 24, 199, 136, 136, 26, 1, 77, 136, 26, 167, 106, 136, 27, 225, 47, 136, 28, 135, 76, 136, 29, 193, 17, 136, 30, 121, 163, 136, 31, 151, 185, 8, 32, 89, 133, 136, 33, 128, 213, 136, 34, 66, 162, 8, 35, 105, 242, 8, 36, 34, 132, 8, 37, 73, 212, 8, 37, 239, 241, 8, 39, 41, 182, 8, 39, 207, 211, 8, 41, 9, 152, 8, 41, 175, 181, 8, 42, 233, 122, 8, 43, 152, 209, 136, 44, 210, 150, 136, 45, 120, 179, 136, 46, 178, 120, 136, 47, 88, 149, 136, 48, 146, 90, 136, 49, 93, 97, 136, 50, 114, 60, 136, 51, 61, 67, 136, 52, 82, 30, 136, 53, 29, 37, 136, 54, 50, 0, 136, 54, 253, 7, 136, 56, 27, 29, 8, 56, 108, 175, 216, 56, 220, 233, 136, 57, 250, 255, 8, 58, 188, 203, 136, 59, 218, 225, 8, 60, 165, 232, 8, 61, 186, 195, 8, 62, 133, 202, 8, 63, 154, 165, 8, 64, 101, 172, 8, 65, 131, 193, 136, 66, 69, 142, 8, 67, 99, 163, 136, 68, 46, 170, 136, 69, 67, 133, 136, 70, 5, 82, 8, 71, 35, 103, 136, 71, 247, 169, 8, 72, 231, 154, 8, 73, 215, 139, 8, 74, 199, 124, 8, 75, 183, 109, 8, 76, 167, 94, 8, 77, 151, 79, 8, 78, 135, 64, 8, 79, 119, 49, 8, 80, 112, 92, 136, 81, 96, 77, 136, 82, 80, 62, 136, 83, 64, 47, 136, 84, 48, 32, 136, 85, 32, 17, 136, 86, 16, 2, 136, 86, 255, 243, 136, 87, 239, 228, 136, 88, 223, 213, 136, 89, 207, 198, 136, 90, 191, 183, 136, 91, 184, 227, 8, 92, 168, 212, 8, 93, 152, 197, 8, 94, 136, 182, 8, 95, 120, 167, 8, 96, 104, 152, 8, 97, 88, 137, 8, 98, 72, 122, 8, 99, 56, 107, 8, 100, 40, 92, 8, 101, 24, 77, 8, 102, 17, 120, 136, 103, 1, 105, 136, 103, 241, 90, 136, 104, 225, 75, 136, 105, 209, 60, 136, 106, 193, 45, 136, 107, 177, 30, 136, 108, 161, 15, 136, 109, 145, 0, 136, 110, 128, 241, 136, 111, 112, 226, 136, 112, 106, 14, 8, 113, 89, 255, 8, 114, 73, 240, 8, 115, 57, 225, 8, 116, 41, 210, 8, 117, 25, 195, 8, 118, 9, 180, 8, 118, 249, 165, 8, 119, 233, 150, 8, 120, 217, 135, 8, 121, 201, 120, 8, 122, 185, 105, 8, 123, 178, 148, 136, 124, 162, 133, 136, 125, 146, 118, 136, 126, 130, 103, 136, 127, 114, 88, 136, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 1, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 126, 144, 0, 0, 0, 0, 147, 168, 1, 5, 0, 0, 133, 152, 0, 0, 0, 0, 147, 168, 1, 5, 0, 0, 133, 152, 0, 0, 65, 67, 83, 84, 0, 65, 67, 68, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 65, 67, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Australia/Canberra": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 12, 137, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 88, 142, 128, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Australia/Currie": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 155, 213, 120, 128, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 3, 79, 0, 24, 33, 100, 128, 24, 227, 49, 0, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 103, 39, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 244, 182, 0, 40, 237, 225, 128, 41, 212, 152, 0, 42, 205, 195, 128, 43, 180, 122, 0, 44, 173, 165, 128, 45, 148, 92, 0, 46, 141, 135, 128, 47, 116, 62, 0, 48, 109, 105, 128, 49, 93, 90, 128, 50, 86, 134, 0, 51, 61, 60, 128, 52, 54, 104, 0, 53, 29, 30, 128, 54, 22, 74, 0, 54, 253, 0, 128, 55, 246, 44, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 191, 42, 128, 60, 165, 225, 0, 61, 159, 12, 128, 62, 133, 195, 0, 63, 126, 238, 128, 64, 101, 165, 0, 65, 94, 208, 128, 66, 69, 135, 0, 67, 62, 178, 128, 68, 46, 163, 128, 69, 30, 148, 128, 70, 5, 75, 0, 71, 7, 177, 0, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 134, 224, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Australia/Darwin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 10, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 126, 144, 0, 0, 0, 0, 147, 168, 1, 5, 0, 0, 133, 152, 0, 0, 65, 67, 83, 84, 0, 65, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 10}, + + "zoneinfo/Australia/Eucla": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 156, 78, 184, 48, 156, 188, 50, 132, 203, 84, 196, 148, 203, 199, 105, 4, 204, 183, 104, 20, 205, 167, 75, 4, 9, 15, 241, 20, 9, 182, 14, 20, 26, 1, 88, 20, 26, 167, 117, 20, 41, 37, 82, 20, 41, 175, 191, 148, 69, 113, 180, 148, 70, 5, 92, 148, 71, 35, 114, 20, 71, 238, 121, 20, 73, 3, 84, 20, 73, 206, 91, 20, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 4, 0, 0, 120, 208, 0, 0, 0, 0, 137, 28, 1, 4, 0, 0, 123, 12, 0, 10, 0, 0, 137, 28, 1, 4, 0, 0, 123, 12, 0, 10, 76, 77, 84, 0, 43, 48, 57, 52, 53, 0, 43, 48, 56, 52, 53, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 52, 53, 62, 45, 56, 58, 52, 53, 10}, + + "zoneinfo/Australia/Hobart": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 155, 213, 120, 128, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 251, 194, 141, 0, 252, 178, 126, 0, 253, 199, 89, 0, 254, 118, 176, 128, 255, 167, 59, 0, 0, 86, 146, 128, 1, 135, 29, 0, 2, 63, 175, 0, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 3, 79, 0, 24, 33, 100, 128, 24, 227, 49, 0, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 103, 39, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 244, 182, 0, 40, 237, 225, 128, 41, 212, 152, 0, 42, 205, 195, 128, 43, 180, 122, 0, 44, 173, 165, 128, 45, 148, 92, 0, 46, 141, 135, 128, 47, 116, 62, 0, 48, 109, 105, 128, 49, 93, 90, 128, 50, 86, 134, 0, 51, 61, 60, 128, 52, 54, 104, 0, 53, 29, 30, 128, 54, 22, 74, 0, 54, 253, 0, 128, 55, 246, 44, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 191, 42, 128, 60, 165, 225, 0, 61, 159, 12, 128, 62, 133, 195, 0, 63, 126, 238, 128, 64, 101, 165, 0, 65, 94, 208, 128, 66, 69, 135, 0, 67, 62, 178, 128, 68, 46, 163, 128, 69, 30, 148, 128, 70, 5, 75, 0, 71, 7, 177, 0, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 138, 28, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Australia/LHI": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 5, 0, 0, 0, 25, 128, 0, 0, 0, 20, 254, 102, 224, 22, 56, 64, 248, 22, 231, 138, 104, 24, 33, 93, 120, 24, 199, 108, 104, 26, 1, 63, 120, 26, 167, 78, 104, 27, 225, 33, 120, 28, 135, 48, 104, 29, 193, 3, 120, 30, 121, 142, 112, 31, 151, 170, 248, 32, 89, 112, 112, 33, 128, 199, 120, 34, 66, 140, 240, 35, 105, 227, 248, 36, 34, 110, 240, 37, 73, 197, 248, 37, 239, 219, 240, 39, 41, 167, 248, 39, 207, 189, 240, 41, 9, 137, 248, 41, 175, 159, 240, 42, 233, 107, 248, 43, 152, 188, 112, 44, 210, 136, 120, 45, 120, 158, 112, 46, 178, 106, 120, 47, 88, 128, 112, 48, 146, 76, 120, 49, 93, 76, 112, 50, 114, 46, 120, 51, 61, 46, 112, 52, 82, 16, 120, 53, 29, 16, 112, 54, 49, 242, 120, 54, 252, 242, 112, 56, 27, 14, 248, 56, 220, 212, 112, 57, 167, 226, 120, 58, 188, 182, 112, 59, 218, 210, 248, 60, 165, 210, 240, 61, 186, 180, 248, 62, 133, 180, 240, 63, 154, 150, 248, 64, 101, 150, 240, 65, 131, 179, 120, 66, 69, 120, 240, 67, 99, 149, 120, 68, 46, 149, 112, 69, 67, 119, 120, 70, 5, 60, 240, 71, 35, 89, 120, 71, 247, 147, 240, 72, 231, 139, 248, 73, 215, 117, 240, 74, 199, 109, 248, 75, 183, 87, 240, 76, 167, 79, 248, 77, 151, 57, 240, 78, 135, 49, 248, 79, 119, 27, 240, 80, 112, 78, 120, 81, 96, 56, 112, 82, 80, 48, 120, 83, 64, 26, 112, 84, 48, 18, 120, 85, 31, 252, 112, 86, 15, 244, 120, 86, 255, 222, 112, 87, 239, 214, 120, 88, 223, 192, 112, 89, 207, 184, 120, 90, 191, 162, 112, 91, 184, 212, 248, 92, 168, 190, 240, 93, 152, 182, 248, 94, 136, 160, 240, 95, 120, 152, 248, 96, 104, 130, 240, 97, 88, 122, 248, 98, 72, 100, 240, 99, 56, 92, 248, 100, 40, 70, 240, 101, 24, 62, 248, 102, 17, 99, 112, 103, 1, 91, 120, 103, 241, 69, 112, 104, 225, 61, 120, 105, 209, 39, 112, 106, 193, 31, 120, 107, 177, 9, 112, 108, 161, 1, 120, 109, 144, 235, 112, 110, 128, 227, 120, 111, 112, 205, 112, 112, 105, 255, 248, 113, 89, 233, 240, 114, 73, 225, 248, 115, 57, 203, 240, 116, 41, 195, 248, 117, 25, 173, 240, 118, 9, 165, 248, 118, 249, 143, 240, 119, 233, 135, 248, 120, 217, 113, 240, 121, 201, 105, 248, 122, 185, 83, 240, 123, 178, 134, 120, 124, 162, 112, 112, 125, 146, 104, 120, 126, 130, 82, 112, 127, 114, 74, 120, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 4, 0, 0, 149, 36, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 161, 184, 1, 9, 0, 0, 147, 168, 0, 15, 0, 0, 154, 176, 1, 21, 76, 77, 84, 0, 65, 69, 83, 84, 0, 43, 49, 49, 51, 48, 0, 43, 49, 48, 51, 48, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 51, 48, 62, 45, 49, 48, 58, 51, 48, 60, 43, 49, 49, 62, 45, 49, 49, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 10}, + + "zoneinfo/Australia/Lindeman": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 80, 104, 224, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 2, 3, 4, 3, 4, 0, 0, 139, 172, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 10}, + + "zoneinfo/Australia/Lord_Howe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 5, 0, 0, 0, 25, 128, 0, 0, 0, 20, 254, 102, 224, 22, 56, 64, 248, 22, 231, 138, 104, 24, 33, 93, 120, 24, 199, 108, 104, 26, 1, 63, 120, 26, 167, 78, 104, 27, 225, 33, 120, 28, 135, 48, 104, 29, 193, 3, 120, 30, 121, 142, 112, 31, 151, 170, 248, 32, 89, 112, 112, 33, 128, 199, 120, 34, 66, 140, 240, 35, 105, 227, 248, 36, 34, 110, 240, 37, 73, 197, 248, 37, 239, 219, 240, 39, 41, 167, 248, 39, 207, 189, 240, 41, 9, 137, 248, 41, 175, 159, 240, 42, 233, 107, 248, 43, 152, 188, 112, 44, 210, 136, 120, 45, 120, 158, 112, 46, 178, 106, 120, 47, 88, 128, 112, 48, 146, 76, 120, 49, 93, 76, 112, 50, 114, 46, 120, 51, 61, 46, 112, 52, 82, 16, 120, 53, 29, 16, 112, 54, 49, 242, 120, 54, 252, 242, 112, 56, 27, 14, 248, 56, 220, 212, 112, 57, 167, 226, 120, 58, 188, 182, 112, 59, 218, 210, 248, 60, 165, 210, 240, 61, 186, 180, 248, 62, 133, 180, 240, 63, 154, 150, 248, 64, 101, 150, 240, 65, 131, 179, 120, 66, 69, 120, 240, 67, 99, 149, 120, 68, 46, 149, 112, 69, 67, 119, 120, 70, 5, 60, 240, 71, 35, 89, 120, 71, 247, 147, 240, 72, 231, 139, 248, 73, 215, 117, 240, 74, 199, 109, 248, 75, 183, 87, 240, 76, 167, 79, 248, 77, 151, 57, 240, 78, 135, 49, 248, 79, 119, 27, 240, 80, 112, 78, 120, 81, 96, 56, 112, 82, 80, 48, 120, 83, 64, 26, 112, 84, 48, 18, 120, 85, 31, 252, 112, 86, 15, 244, 120, 86, 255, 222, 112, 87, 239, 214, 120, 88, 223, 192, 112, 89, 207, 184, 120, 90, 191, 162, 112, 91, 184, 212, 248, 92, 168, 190, 240, 93, 152, 182, 248, 94, 136, 160, 240, 95, 120, 152, 248, 96, 104, 130, 240, 97, 88, 122, 248, 98, 72, 100, 240, 99, 56, 92, 248, 100, 40, 70, 240, 101, 24, 62, 248, 102, 17, 99, 112, 103, 1, 91, 120, 103, 241, 69, 112, 104, 225, 61, 120, 105, 209, 39, 112, 106, 193, 31, 120, 107, 177, 9, 112, 108, 161, 1, 120, 109, 144, 235, 112, 110, 128, 227, 120, 111, 112, 205, 112, 112, 105, 255, 248, 113, 89, 233, 240, 114, 73, 225, 248, 115, 57, 203, 240, 116, 41, 195, 248, 117, 25, 173, 240, 118, 9, 165, 248, 118, 249, 143, 240, 119, 233, 135, 248, 120, 217, 113, 240, 121, 201, 105, 248, 122, 185, 83, 240, 123, 178, 134, 120, 124, 162, 112, 112, 125, 146, 104, 120, 126, 130, 82, 112, 127, 114, 74, 120, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 4, 0, 0, 149, 36, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 161, 184, 1, 9, 0, 0, 147, 168, 0, 15, 0, 0, 154, 176, 1, 21, 76, 77, 84, 0, 65, 69, 83, 84, 0, 43, 49, 49, 51, 48, 0, 43, 49, 48, 51, 48, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 51, 48, 62, 45, 49, 48, 58, 51, 48, 60, 43, 49, 49, 62, 45, 49, 49, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 10}, + + "zoneinfo/Australia/Melbourne": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 22, 231, 159, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 119, 148, 0, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 116, 62, 0, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 135, 232, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Australia/NSW": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 12, 137, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 88, 142, 128, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Australia/North": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 10, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 126, 144, 0, 0, 0, 0, 147, 168, 1, 5, 0, 0, 133, 152, 0, 0, 65, 67, 83, 84, 0, 65, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 10}, + + "zoneinfo/Australia/Perth": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 194, 188, 156, 188, 61, 16, 203, 84, 207, 32, 203, 199, 115, 144, 204, 183, 114, 160, 205, 167, 85, 144, 9, 15, 251, 160, 9, 182, 24, 160, 26, 1, 98, 160, 26, 167, 127, 160, 41, 37, 92, 160, 41, 175, 202, 32, 69, 113, 191, 32, 70, 5, 103, 32, 71, 35, 124, 160, 71, 238, 131, 160, 73, 3, 94, 160, 73, 206, 101, 160, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 108, 156, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 76, 77, 84, 0, 65, 87, 68, 84, 0, 65, 87, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 87, 83, 84, 45, 56, 10}, + + "zoneinfo/Australia/Queensland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 143, 120, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 10}, + + "zoneinfo/Australia/South": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 10, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 3, 112, 64, 136, 4, 13, 35, 8, 5, 80, 34, 136, 5, 246, 63, 136, 7, 48, 4, 136, 7, 214, 33, 136, 9, 15, 230, 136, 9, 182, 3, 136, 10, 239, 200, 136, 11, 159, 32, 8, 12, 216, 229, 8, 13, 127, 2, 8, 14, 184, 199, 8, 15, 94, 228, 8, 16, 152, 169, 8, 17, 62, 198, 8, 18, 120, 139, 8, 19, 30, 168, 8, 20, 88, 109, 8, 20, 254, 138, 8, 22, 56, 79, 8, 22, 231, 166, 136, 24, 33, 107, 136, 24, 199, 136, 136, 26, 1, 77, 136, 26, 167, 106, 136, 27, 225, 47, 136, 28, 135, 76, 136, 29, 193, 17, 136, 30, 121, 163, 136, 31, 151, 185, 8, 32, 89, 133, 136, 33, 128, 213, 136, 34, 66, 162, 8, 35, 105, 242, 8, 36, 34, 132, 8, 37, 73, 212, 8, 38, 2, 102, 8, 39, 41, 182, 8, 39, 207, 211, 8, 41, 9, 152, 8, 41, 203, 100, 136, 42, 233, 122, 8, 43, 152, 209, 136, 44, 210, 150, 136, 45, 139, 40, 136, 46, 178, 120, 136, 47, 116, 69, 8, 48, 146, 90, 136, 49, 93, 97, 136, 50, 114, 60, 136, 51, 61, 67, 136, 52, 82, 30, 136, 53, 29, 37, 136, 54, 50, 0, 136, 54, 253, 7, 136, 56, 27, 29, 8, 56, 220, 233, 136, 57, 250, 255, 8, 58, 188, 203, 136, 59, 218, 225, 8, 60, 165, 232, 8, 61, 186, 195, 8, 62, 133, 202, 8, 63, 154, 165, 8, 64, 101, 172, 8, 65, 131, 193, 136, 66, 69, 142, 8, 67, 99, 163, 136, 68, 46, 170, 136, 69, 67, 133, 136, 70, 5, 82, 8, 71, 35, 103, 136, 71, 247, 169, 8, 72, 231, 154, 8, 73, 215, 139, 8, 74, 199, 124, 8, 75, 183, 109, 8, 76, 167, 94, 8, 77, 151, 79, 8, 78, 135, 64, 8, 79, 119, 49, 8, 80, 112, 92, 136, 81, 96, 77, 136, 82, 80, 62, 136, 83, 64, 47, 136, 84, 48, 32, 136, 85, 32, 17, 136, 86, 16, 2, 136, 86, 255, 243, 136, 87, 239, 228, 136, 88, 223, 213, 136, 89, 207, 198, 136, 90, 191, 183, 136, 91, 184, 227, 8, 92, 168, 212, 8, 93, 152, 197, 8, 94, 136, 182, 8, 95, 120, 167, 8, 96, 104, 152, 8, 97, 88, 137, 8, 98, 72, 122, 8, 99, 56, 107, 8, 100, 40, 92, 8, 101, 24, 77, 8, 102, 17, 120, 136, 103, 1, 105, 136, 103, 241, 90, 136, 104, 225, 75, 136, 105, 209, 60, 136, 106, 193, 45, 136, 107, 177, 30, 136, 108, 161, 15, 136, 109, 145, 0, 136, 110, 128, 241, 136, 111, 112, 226, 136, 112, 106, 14, 8, 113, 89, 255, 8, 114, 73, 240, 8, 115, 57, 225, 8, 116, 41, 210, 8, 117, 25, 195, 8, 118, 9, 180, 8, 118, 249, 165, 8, 119, 233, 150, 8, 120, 217, 135, 8, 121, 201, 120, 8, 122, 185, 105, 8, 123, 178, 148, 136, 124, 162, 133, 136, 125, 146, 118, 136, 126, 130, 103, 136, 127, 114, 88, 136, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 126, 144, 0, 0, 0, 0, 147, 168, 1, 5, 0, 0, 133, 152, 0, 0, 0, 0, 147, 168, 1, 5, 0, 0, 133, 152, 0, 0, 65, 67, 83, 84, 0, 65, 67, 68, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 65, 67, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Australia/Sydney": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 12, 137, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 88, 142, 128, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Australia/Tasmania": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 155, 213, 120, 128, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 251, 194, 141, 0, 252, 178, 126, 0, 253, 199, 89, 0, 254, 118, 176, 128, 255, 167, 59, 0, 0, 86, 146, 128, 1, 135, 29, 0, 2, 63, 175, 0, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 3, 79, 0, 24, 33, 100, 128, 24, 227, 49, 0, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 103, 39, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 244, 182, 0, 40, 237, 225, 128, 41, 212, 152, 0, 42, 205, 195, 128, 43, 180, 122, 0, 44, 173, 165, 128, 45, 148, 92, 0, 46, 141, 135, 128, 47, 116, 62, 0, 48, 109, 105, 128, 49, 93, 90, 128, 50, 86, 134, 0, 51, 61, 60, 128, 52, 54, 104, 0, 53, 29, 30, 128, 54, 22, 74, 0, 54, 253, 0, 128, 55, 246, 44, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 191, 42, 128, 60, 165, 225, 0, 61, 159, 12, 128, 62, 133, 195, 0, 63, 126, 238, 128, 64, 101, 165, 0, 65, 94, 208, 128, 66, 69, 135, 0, 67, 62, 178, 128, 68, 46, 163, 128, 69, 30, 148, 128, 70, 5, 75, 0, 71, 7, 177, 0, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 138, 28, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Australia/Victoria": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 22, 231, 159, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 119, 148, 0, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 116, 62, 0, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 135, 232, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Australia/West": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 194, 188, 156, 188, 61, 16, 203, 84, 207, 32, 203, 199, 115, 144, 204, 183, 114, 160, 205, 167, 85, 144, 9, 15, 251, 160, 9, 182, 24, 160, 26, 1, 98, 160, 26, 167, 127, 160, 41, 37, 92, 160, 41, 175, 202, 32, 69, 113, 191, 32, 70, 5, 103, 32, 71, 35, 124, 160, 71, 238, 131, 160, 73, 3, 94, 160, 73, 206, 101, 160, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 108, 156, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 76, 77, 84, 0, 65, 87, 68, 84, 0, 65, 87, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 87, 83, 84, 45, 56, 10}, + + "zoneinfo/Australia/Yancowinna": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 5, 0, 0, 0, 10, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 3, 112, 64, 136, 4, 13, 35, 8, 5, 80, 34, 136, 5, 246, 63, 136, 7, 48, 4, 136, 7, 214, 33, 136, 9, 15, 230, 136, 9, 182, 3, 136, 10, 239, 200, 136, 11, 159, 32, 8, 12, 216, 229, 8, 13, 127, 2, 8, 14, 184, 199, 8, 15, 94, 228, 8, 16, 152, 169, 8, 17, 62, 198, 8, 18, 120, 139, 8, 19, 30, 168, 8, 20, 88, 109, 8, 20, 254, 138, 8, 22, 56, 79, 8, 23, 12, 144, 136, 24, 33, 107, 136, 24, 199, 136, 136, 26, 1, 77, 136, 26, 167, 106, 136, 27, 225, 47, 136, 28, 135, 76, 136, 29, 193, 17, 136, 30, 121, 163, 136, 31, 151, 185, 8, 32, 89, 133, 136, 33, 128, 213, 136, 34, 66, 162, 8, 35, 105, 242, 8, 36, 34, 132, 8, 37, 73, 212, 8, 37, 239, 241, 8, 39, 41, 182, 8, 39, 207, 211, 8, 41, 9, 152, 8, 41, 175, 181, 8, 42, 233, 122, 8, 43, 152, 209, 136, 44, 210, 150, 136, 45, 120, 179, 136, 46, 178, 120, 136, 47, 88, 149, 136, 48, 146, 90, 136, 49, 93, 97, 136, 50, 114, 60, 136, 51, 61, 67, 136, 52, 82, 30, 136, 53, 29, 37, 136, 54, 50, 0, 136, 54, 253, 7, 136, 56, 27, 29, 8, 56, 108, 175, 216, 56, 220, 233, 136, 57, 250, 255, 8, 58, 188, 203, 136, 59, 218, 225, 8, 60, 165, 232, 8, 61, 186, 195, 8, 62, 133, 202, 8, 63, 154, 165, 8, 64, 101, 172, 8, 65, 131, 193, 136, 66, 69, 142, 8, 67, 99, 163, 136, 68, 46, 170, 136, 69, 67, 133, 136, 70, 5, 82, 8, 71, 35, 103, 136, 71, 247, 169, 8, 72, 231, 154, 8, 73, 215, 139, 8, 74, 199, 124, 8, 75, 183, 109, 8, 76, 167, 94, 8, 77, 151, 79, 8, 78, 135, 64, 8, 79, 119, 49, 8, 80, 112, 92, 136, 81, 96, 77, 136, 82, 80, 62, 136, 83, 64, 47, 136, 84, 48, 32, 136, 85, 32, 17, 136, 86, 16, 2, 136, 86, 255, 243, 136, 87, 239, 228, 136, 88, 223, 213, 136, 89, 207, 198, 136, 90, 191, 183, 136, 91, 184, 227, 8, 92, 168, 212, 8, 93, 152, 197, 8, 94, 136, 182, 8, 95, 120, 167, 8, 96, 104, 152, 8, 97, 88, 137, 8, 98, 72, 122, 8, 99, 56, 107, 8, 100, 40, 92, 8, 101, 24, 77, 8, 102, 17, 120, 136, 103, 1, 105, 136, 103, 241, 90, 136, 104, 225, 75, 136, 105, 209, 60, 136, 106, 193, 45, 136, 107, 177, 30, 136, 108, 161, 15, 136, 109, 145, 0, 136, 110, 128, 241, 136, 111, 112, 226, 136, 112, 106, 14, 8, 113, 89, 255, 8, 114, 73, 240, 8, 115, 57, 225, 8, 116, 41, 210, 8, 117, 25, 195, 8, 118, 9, 180, 8, 118, 249, 165, 8, 119, 233, 150, 8, 120, 217, 135, 8, 121, 201, 120, 8, 122, 185, 105, 8, 123, 178, 148, 136, 124, 162, 133, 136, 125, 146, 118, 136, 126, 130, 103, 136, 127, 114, 88, 136, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 1, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 126, 144, 0, 0, 0, 0, 147, 168, 1, 5, 0, 0, 133, 152, 0, 0, 0, 0, 147, 168, 1, 5, 0, 0, 133, 152, 0, 0, 65, 67, 83, 84, 0, 65, 67, 68, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 65, 67, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Brazil/Acre": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 5, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 134, 144, 184, 15, 102, 0, 184, 253, 92, 192, 185, 241, 80, 80, 186, 222, 144, 64, 218, 56, 202, 80, 218, 236, 22, 80, 220, 25, 253, 208, 220, 185, 117, 64, 221, 251, 49, 80, 222, 155, 250, 64, 223, 221, 182, 80, 224, 84, 79, 64, 244, 152, 27, 208, 245, 5, 122, 64, 246, 192, 128, 80, 247, 14, 58, 192, 248, 81, 72, 80, 248, 199, 225, 64, 250, 10, 238, 208, 250, 169, 20, 192, 251, 236, 34, 80, 252, 139, 153, 192, 29, 201, 170, 80, 30, 120, 243, 192, 31, 160, 81, 208, 32, 51, 235, 192, 33, 129, 133, 80, 34, 11, 228, 192, 72, 96, 127, 80, 82, 127, 4, 192, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 192, 112, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + + "zoneinfo/Brazil/DeNoronha": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 101, 100, 184, 15, 59, 208, 184, 253, 50, 144, 185, 241, 38, 32, 186, 222, 102, 16, 218, 56, 160, 32, 218, 235, 236, 32, 220, 25, 211, 160, 220, 185, 75, 16, 221, 251, 7, 32, 222, 155, 208, 16, 223, 221, 140, 32, 224, 84, 37, 16, 244, 151, 241, 160, 245, 5, 80, 16, 246, 192, 86, 32, 247, 14, 16, 144, 248, 81, 30, 32, 248, 199, 183, 16, 250, 10, 196, 160, 250, 168, 234, 144, 251, 235, 248, 32, 252, 139, 111, 144, 29, 201, 128, 32, 30, 120, 201, 144, 31, 160, 39, 160, 32, 51, 193, 144, 33, 129, 91, 32, 34, 11, 186, 144, 35, 88, 2, 160, 35, 226, 98, 16, 37, 55, 228, 160, 37, 212, 185, 16, 55, 246, 184, 160, 56, 184, 119, 16, 57, 223, 213, 32, 57, 233, 1, 144, 59, 200, 241, 160, 60, 111, 0, 144, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 225, 156, 0, 0, 255, 255, 241, 240, 1, 4, 255, 255, 227, 224, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 50, 62, 50, 10}, + + "zoneinfo/Brazil/East": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 114, 180, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 90, 9, 48, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 39, 33, 15, 48, 39, 189, 227, 160, 41, 0, 241, 48, 41, 148, 139, 32, 42, 234, 13, 176, 43, 107, 50, 160, 44, 192, 181, 48, 45, 102, 196, 32, 46, 160, 151, 48, 47, 70, 166, 32, 48, 128, 121, 48, 49, 29, 77, 160, 50, 87, 32, 176, 51, 6, 106, 32, 52, 56, 84, 48, 52, 248, 193, 32, 54, 32, 31, 48, 54, 207, 104, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 58, 143, 44, 160, 59, 200, 255, 176, 60, 111, 14, 160, 61, 196, 145, 48, 62, 78, 240, 160, 63, 145, 254, 48, 64, 46, 210, 160, 65, 134, 248, 48, 66, 23, 239, 32, 67, 81, 194, 48, 67, 247, 209, 32, 69, 77, 83, 176, 69, 224, 237, 160, 71, 17, 134, 48, 71, 183, 149, 32, 72, 250, 162, 176, 73, 151, 119, 32, 74, 218, 132, 176, 75, 128, 147, 160, 76, 186, 102, 176, 77, 96, 117, 160, 78, 154, 72, 176, 79, 73, 146, 32, 80, 131, 101, 48, 81, 32, 57, 160, 82, 99, 71, 48, 83, 0, 27, 160, 84, 67, 41, 48, 84, 233, 56, 32, 86, 35, 11, 48, 86, 201, 26, 32, 88, 2, 237, 48, 88, 168, 252, 32, 89, 226, 207, 48, 90, 136, 222, 32, 91, 203, 235, 176, 92, 104, 192, 32, 93, 171, 205, 176, 94, 72, 162, 32, 95, 139, 175, 176, 96, 49, 190, 160, 97, 107, 145, 176, 98, 17, 160, 160, 99, 75, 115, 176, 99, 250, 189, 32, 101, 43, 85, 176, 101, 209, 100, 160, 103, 20, 114, 48, 103, 177, 70, 160, 104, 244, 84, 48, 105, 154, 99, 32, 106, 212, 54, 48, 107, 122, 69, 32, 108, 180, 24, 48, 109, 90, 39, 32, 110, 147, 250, 48, 111, 58, 9, 32, 112, 125, 22, 176, 113, 25, 235, 32, 114, 92, 248, 176, 114, 249, 205, 32, 116, 60, 218, 176, 116, 217, 175, 32, 118, 28, 188, 176, 118, 194, 203, 160, 119, 252, 158, 176, 120, 171, 232, 32, 121, 220, 128, 176, 122, 130, 143, 160, 123, 197, 157, 48, 124, 98, 113, 160, 125, 165, 127, 48, 126, 75, 142, 32, 127, 133, 97, 48, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 212, 76, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 60, 45, 48, 50, 62, 44, 77, 49, 48, 46, 51, 46, 48, 47, 48, 44, 77, 50, 46, 51, 46, 48, 47, 48, 10}, + + "zoneinfo/Brazil/West": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 150, 170, 127, 68, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 44, 192, 195, 64, 45, 102, 210, 48, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 199, 188, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + + "zoneinfo/CET": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 4, 0, 0, 0, 9, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 78, 64, 144, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 28, 32, 1, 0, 0, 0, 14, 16, 0, 5, 0, 0, 28, 32, 1, 0, 0, 0, 14, 16, 0, 5, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/CST6CDT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 4, 0, 0, 0, 16, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 0, 1, 0, 1, 2, 3, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 255, 255, 185, 176, 1, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 1, 8, 255, 255, 185, 176, 1, 12, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Canada/Atlantic": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 128, 241, 171, 160, 154, 228, 222, 192, 155, 214, 19, 48, 158, 184, 133, 96, 159, 186, 221, 80, 162, 157, 23, 64, 163, 48, 177, 48, 164, 122, 86, 64, 165, 27, 31, 48, 166, 83, 160, 192, 166, 252, 82, 176, 168, 60, 189, 64, 168, 220, 52, 176, 170, 28, 159, 64, 170, 205, 58, 48, 171, 252, 129, 64, 172, 191, 145, 48, 173, 238, 216, 64, 174, 140, 254, 48, 175, 188, 69, 64, 176, 127, 85, 48, 177, 174, 156, 64, 178, 75, 112, 176, 179, 142, 126, 64, 180, 36, 187, 48, 181, 110, 96, 64, 182, 21, 192, 176, 183, 78, 66, 64, 184, 8, 23, 176, 185, 36, 233, 192, 185, 231, 249, 176, 187, 4, 203, 192, 187, 209, 22, 48, 189, 0, 93, 64, 189, 157, 49, 176, 190, 242, 180, 64, 191, 144, 218, 48, 192, 211, 231, 192, 193, 94, 71, 48, 194, 141, 142, 64, 195, 80, 158, 48, 196, 109, 112, 64, 197, 48, 128, 48, 198, 114, 60, 64, 199, 16, 98, 48, 200, 54, 110, 192, 200, 249, 126, 176, 202, 22, 80, 192, 202, 217, 96, 176, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 211, 117, 214, 224, 212, 64, 207, 208, 213, 85, 184, 224, 214, 32, 177, 208, 215, 53, 154, 224, 216, 0, 147, 208, 217, 21, 124, 224, 217, 224, 117, 208, 220, 222, 123, 96, 221, 169, 116, 80, 222, 190, 93, 96, 223, 137, 86, 80, 224, 158, 63, 96, 225, 105, 56, 80, 226, 126, 33, 96, 227, 73, 26, 80, 230, 71, 31, 224, 231, 18, 24, 208, 232, 39, 1, 224, 232, 241, 250, 208, 234, 6, 227, 224, 234, 209, 220, 208, 235, 230, 197, 224, 236, 177, 190, 208, 241, 143, 166, 96, 242, 127, 137, 80, 243, 111, 136, 96, 244, 95, 107, 80, 245, 79, 106, 96, 246, 63, 77, 80, 247, 47, 76, 96, 248, 40, 105, 208, 249, 15, 46, 96, 250, 8, 75, 208, 250, 248, 74, 224, 251, 232, 45, 208, 252, 216, 44, 224, 253, 200, 15, 208, 254, 184, 14, 224, 255, 167, 241, 208, 0, 151, 240, 224, 1, 135, 211, 208, 2, 119, 210, 224, 3, 112, 240, 80, 4, 96, 239, 96, 5, 80, 210, 80, 6, 64, 209, 96, 7, 48, 180, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 196, 96, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Canada/Central": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 155, 1, 251, 224, 155, 195, 186, 80, 158, 184, 161, 128, 159, 186, 249, 112, 194, 160, 59, 128, 195, 79, 132, 240, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 136, 104, 0, 212, 83, 96, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 219, 0, 7, 0, 219, 200, 92, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 145, 188, 240, 243, 111, 164, 128, 244, 49, 98, 240, 249, 15, 74, 128, 250, 8, 118, 0, 250, 248, 103, 0, 251, 232, 88, 0, 252, 216, 73, 0, 253, 200, 58, 0, 254, 184, 43, 0, 255, 168, 28, 0, 0, 152, 13, 0, 1, 135, 254, 0, 2, 119, 239, 0, 3, 113, 26, 128, 4, 97, 11, 128, 5, 80, 252, 128, 6, 64, 237, 128, 7, 48, 222, 128, 8, 32, 207, 128, 9, 16, 192, 128, 10, 0, 177, 128, 10, 240, 162, 128, 11, 224, 147, 128, 12, 217, 191, 0, 13, 192, 117, 128, 14, 185, 161, 0, 15, 169, 146, 0, 16, 153, 131, 0, 17, 137, 116, 0, 18, 121, 101, 0, 19, 105, 86, 0, 20, 89, 71, 0, 21, 73, 56, 0, 22, 57, 41, 0, 23, 41, 26, 0, 24, 34, 69, 128, 25, 8, 252, 0, 26, 2, 39, 128, 26, 242, 24, 128, 27, 226, 9, 128, 28, 209, 250, 128, 29, 193, 235, 128, 30, 177, 220, 128, 31, 161, 205, 128, 32, 118, 15, 0, 33, 129, 175, 128, 34, 85, 241, 0, 35, 106, 204, 0, 36, 53, 211, 0, 37, 74, 174, 0, 38, 21, 181, 0, 39, 42, 144, 0, 39, 254, 209, 128, 41, 10, 114, 0, 41, 222, 179, 128, 42, 234, 84, 0, 43, 190, 149, 128, 44, 211, 112, 128, 45, 158, 119, 128, 46, 179, 82, 128, 47, 126, 89, 128, 48, 147, 52, 128, 49, 103, 118, 0, 50, 115, 22, 128, 51, 71, 88, 0, 52, 82, 248, 128, 53, 39, 58, 0, 54, 50, 218, 128, 55, 7, 28, 0, 56, 27, 247, 0, 56, 230, 254, 0, 57, 251, 217, 0, 58, 198, 224, 0, 59, 219, 187, 0, 60, 175, 252, 128, 61, 187, 157, 0, 62, 143, 222, 128, 63, 155, 127, 0, 64, 111, 192, 128, 65, 132, 155, 128, 66, 79, 162, 128, 67, 100, 125, 128, 67, 183, 111, 224, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 164, 236, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Canada/Eastern": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 147, 112, 159, 186, 235, 96, 160, 135, 46, 200, 161, 154, 177, 64, 162, 148, 6, 240, 163, 85, 169, 64, 164, 134, 93, 240, 165, 40, 120, 96, 166, 102, 63, 240, 167, 12, 78, 224, 168, 70, 33, 240, 168, 236, 48, 224, 170, 28, 201, 112, 170, 213, 77, 96, 171, 252, 171, 112, 172, 181, 47, 96, 173, 220, 141, 112, 174, 149, 17, 96, 175, 188, 111, 112, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 37, 19, 240, 185, 230, 210, 96, 187, 4, 245, 240, 187, 207, 238, 224, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 170, 208, 214, 32, 163, 192, 215, 53, 140, 208, 216, 0, 133, 192, 217, 21, 110, 208, 218, 51, 118, 64, 218, 254, 167, 112, 220, 19, 116, 96, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 41, 10, 96, 230, 71, 45, 240, 231, 18, 38, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 181, 148, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Canada/Mountain": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 136, 222, 206, 224, 158, 184, 175, 144, 159, 187, 7, 128, 160, 152, 145, 144, 160, 210, 133, 128, 162, 138, 232, 144, 163, 132, 6, 0, 164, 106, 202, 144, 165, 53, 195, 128, 166, 83, 231, 16, 167, 21, 165, 128, 168, 51, 201, 16, 168, 254, 194, 0, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 213, 85, 227, 16, 214, 32, 220, 0, 250, 248, 117, 16, 251, 232, 88, 0, 254, 184, 57, 16, 255, 168, 28, 0, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 8, 32, 221, 144, 9, 16, 192, 128, 10, 0, 191, 144, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 149, 160, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Canada/Newfoundland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 9, 0, 0, 0, 25, 128, 0, 0, 0, 156, 207, 98, 12, 157, 164, 230, 252, 158, 184, 126, 140, 159, 186, 214, 124, 160, 182, 136, 220, 161, 56, 255, 76, 162, 149, 25, 92, 163, 132, 252, 76, 164, 116, 251, 92, 165, 100, 222, 76, 166, 94, 23, 220, 167, 68, 192, 76, 168, 61, 249, 220, 169, 36, 162, 76, 170, 29, 219, 220, 171, 4, 132, 76, 171, 253, 189, 220, 172, 228, 102, 76, 173, 221, 159, 220, 174, 205, 130, 204, 175, 189, 129, 220, 176, 173, 100, 204, 177, 166, 158, 92, 178, 141, 70, 204, 179, 134, 128, 92, 180, 109, 40, 204, 181, 102, 98, 92, 182, 77, 10, 204, 183, 70, 68, 92, 184, 44, 236, 204, 185, 38, 38, 92, 186, 22, 9, 76, 187, 15, 66, 220, 187, 245, 235, 76, 188, 239, 36, 220, 189, 213, 205, 76, 190, 158, 77, 108, 190, 207, 6, 168, 191, 181, 175, 24, 192, 184, 49, 56, 193, 121, 239, 168, 194, 152, 19, 56, 195, 89, 209, 168, 196, 119, 245, 56, 197, 57, 179, 168, 198, 97, 17, 184, 199, 25, 149, 168, 200, 64, 243, 184, 201, 2, 178, 40, 202, 32, 213, 184, 202, 226, 148, 40, 204, 0, 183, 184, 210, 35, 244, 112, 210, 96, 230, 200, 211, 136, 68, 216, 212, 74, 3, 72, 213, 104, 38, 216, 214, 41, 229, 72, 215, 72, 8, 216, 216, 9, 199, 72, 217, 39, 234, 216, 217, 233, 169, 72, 219, 17, 7, 88, 219, 210, 197, 200, 220, 222, 116, 88, 221, 169, 109, 72, 222, 190, 86, 88, 223, 137, 79, 72, 224, 158, 56, 88, 225, 105, 49, 72, 226, 126, 26, 88, 227, 73, 19, 72, 228, 93, 252, 88, 229, 40, 245, 72, 230, 71, 24, 216, 231, 18, 17, 200, 232, 38, 250, 216, 232, 241, 243, 200, 234, 6, 220, 216, 234, 209, 213, 200, 235, 230, 190, 216, 236, 177, 183, 200, 237, 198, 160, 216, 238, 191, 190, 72, 239, 175, 189, 88, 240, 159, 160, 72, 241, 143, 159, 88, 242, 127, 130, 72, 243, 111, 129, 88, 244, 95, 100, 72, 245, 79, 99, 88, 246, 63, 70, 72, 247, 47, 69, 88, 248, 40, 98, 200, 249, 15, 39, 88, 250, 8, 68, 200, 250, 248, 67, 216, 251, 232, 38, 200, 252, 216, 37, 216, 253, 200, 8, 200, 254, 184, 7, 216, 255, 167, 234, 200, 0, 151, 233, 216, 1, 135, 204, 200, 2, 119, 203, 216, 3, 112, 233, 72, 4, 96, 232, 88, 5, 80, 203, 72, 6, 64, 202, 88, 7, 48, 173, 72, 8, 32, 172, 88, 9, 16, 143, 72, 10, 0, 142, 88, 10, 240, 113, 72, 11, 224, 112, 88, 12, 217, 141, 200, 13, 192, 82, 88, 14, 185, 111, 200, 15, 169, 110, 216, 16, 153, 81, 200, 17, 137, 80, 216, 18, 121, 51, 200, 19, 105, 50, 216, 20, 89, 21, 200, 21, 73, 20, 216, 22, 56, 247, 200, 23, 40, 246, 216, 24, 34, 20, 72, 25, 8, 216, 216, 26, 1, 246, 72, 26, 241, 245, 88, 27, 225, 216, 72, 28, 209, 215, 88, 29, 193, 186, 72, 30, 177, 185, 88, 31, 161, 156, 72, 32, 117, 207, 244, 33, 129, 98, 100, 34, 85, 177, 244, 35, 106, 112, 212, 36, 53, 147, 244, 37, 74, 96, 228, 38, 21, 117, 244, 39, 42, 66, 228, 39, 254, 146, 116, 41, 10, 36, 228, 41, 222, 116, 116, 42, 234, 6, 228, 43, 190, 86, 116, 44, 211, 35, 100, 45, 158, 56, 116, 46, 179, 5, 100, 47, 126, 26, 116, 48, 146, 231, 100, 49, 103, 54, 244, 50, 114, 201, 100, 51, 71, 24, 244, 52, 82, 171, 100, 53, 38, 250, 244, 54, 50, 141, 100, 55, 6, 220, 244, 56, 27, 169, 228, 56, 230, 190, 244, 57, 251, 139, 228, 58, 198, 160, 244, 59, 219, 109, 228, 60, 175, 189, 116, 61, 187, 79, 228, 62, 143, 159, 116, 63, 155, 49, 228, 64, 111, 129, 116, 65, 132, 78, 100, 66, 79, 99, 116, 67, 100, 48, 100, 68, 47, 69, 116, 69, 68, 18, 100, 69, 243, 119, 244, 71, 45, 46, 228, 71, 211, 89, 244, 73, 13, 16, 228, 73, 179, 59, 244, 74, 236, 242, 228, 75, 156, 88, 116, 76, 214, 15, 100, 77, 124, 58, 116, 78, 182, 13, 72, 79, 92, 56, 88, 80, 149, 239, 72, 81, 60, 26, 88, 82, 117, 209, 72, 83, 27, 252, 88, 84, 85, 179, 72, 84, 251, 222, 88, 86, 53, 149, 72, 86, 228, 250, 216, 88, 30, 177, 200, 88, 196, 220, 216, 89, 254, 147, 200, 90, 164, 190, 216, 91, 222, 117, 200, 92, 132, 160, 216, 93, 190, 87, 200, 94, 100, 130, 216, 95, 158, 57, 200, 96, 77, 159, 88, 97, 135, 86, 72, 98, 45, 129, 88, 99, 103, 56, 72, 100, 13, 99, 88, 101, 71, 26, 72, 101, 237, 69, 88, 103, 38, 252, 72, 103, 205, 39, 88, 105, 6, 222, 72, 105, 173, 9, 88, 106, 230, 192, 72, 107, 150, 37, 216, 108, 207, 220, 200, 109, 118, 7, 216, 110, 175, 190, 200, 111, 85, 233, 216, 112, 143, 160, 200, 113, 53, 203, 216, 114, 111, 130, 200, 115, 21, 173, 216, 116, 79, 100, 200, 116, 254, 202, 88, 118, 56, 129, 72, 118, 222, 172, 88, 120, 24, 99, 72, 120, 190, 142, 88, 121, 248, 69, 72, 122, 158, 112, 88, 123, 216, 39, 72, 124, 126, 82, 88, 125, 184, 9, 72, 126, 94, 52, 88, 127, 151, 235, 72, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 255, 255, 206, 148, 0, 0, 255, 255, 220, 164, 1, 4, 255, 255, 206, 148, 0, 8, 255, 255, 220, 216, 1, 4, 255, 255, 206, 200, 0, 8, 255, 255, 220, 216, 1, 12, 255, 255, 220, 216, 1, 16, 255, 255, 234, 232, 1, 20, 255, 255, 220, 216, 1, 4, 76, 77, 84, 0, 78, 68, 84, 0, 78, 83, 84, 0, 78, 80, 84, 0, 78, 87, 84, 0, 78, 68, 68, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 78, 83, 84, 51, 58, 51, 48, 78, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Canada/Pacific": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 189, 160, 159, 187, 21, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 211, 118, 15, 32, 212, 83, 125, 16, 213, 85, 241, 32, 214, 32, 234, 16, 215, 53, 211, 32, 216, 0, 204, 16, 217, 21, 181, 32, 217, 224, 174, 16, 218, 254, 209, 160, 219, 192, 144, 16, 220, 222, 179, 160, 221, 169, 172, 144, 222, 190, 149, 160, 223, 137, 142, 144, 224, 158, 119, 160, 225, 105, 112, 144, 226, 126, 89, 160, 227, 73, 82, 144, 228, 94, 59, 160, 229, 41, 52, 144, 230, 71, 88, 32, 231, 18, 81, 16, 232, 39, 58, 32, 232, 242, 51, 16, 234, 7, 28, 32, 234, 210, 21, 16, 235, 230, 254, 32, 236, 177, 247, 16, 237, 198, 224, 32, 238, 145, 217, 16, 239, 175, 252, 160, 240, 113, 187, 16, 241, 143, 222, 160, 242, 127, 193, 144, 243, 111, 192, 160, 244, 95, 163, 144, 245, 79, 162, 160, 246, 63, 133, 144, 247, 47, 132, 160, 248, 40, 162, 16, 249, 15, 102, 160, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 8, 32, 235, 160, 9, 16, 206, 144, 10, 0, 205, 160, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 140, 148, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Canada/Saskatchewan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 134, 253, 147, 28, 158, 184, 175, 144, 159, 187, 7, 128, 181, 101, 79, 240, 182, 48, 72, 224, 183, 69, 49, 240, 184, 16, 42, 224, 185, 37, 19, 240, 185, 240, 12, 224, 187, 14, 48, 112, 187, 207, 238, 224, 188, 238, 18, 112, 189, 185, 11, 96, 194, 114, 8, 240, 195, 97, 235, 224, 196, 81, 234, 240, 197, 56, 147, 96, 198, 49, 204, 240, 199, 33, 175, 224, 200, 26, 233, 112, 201, 10, 204, 96, 201, 250, 203, 112, 202, 234, 174, 96, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 211, 99, 140, 16, 212, 83, 111, 0, 213, 85, 227, 16, 214, 32, 220, 0, 215, 53, 197, 16, 216, 0, 190, 0, 217, 21, 167, 16, 217, 224, 160, 0, 218, 254, 195, 144, 219, 192, 130, 0, 220, 222, 165, 144, 221, 169, 158, 128, 222, 190, 135, 144, 223, 137, 128, 128, 224, 158, 105, 144, 225, 105, 98, 128, 226, 126, 75, 144, 227, 73, 68, 128, 228, 94, 45, 144, 229, 41, 38, 128, 230, 71, 74, 16, 231, 18, 67, 0, 232, 39, 44, 16, 232, 242, 37, 0, 235, 230, 240, 16, 236, 214, 211, 0, 237, 198, 210, 16, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 157, 228, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 171, 160, 0, 20, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 10}, + + "zoneinfo/Canada/Yukon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 8, 0, 0, 0, 33, 128, 0, 0, 0, 158, 184, 203, 176, 159, 187, 35, 160, 160, 208, 12, 176, 161, 162, 210, 128, 203, 137, 40, 176, 210, 35, 244, 112, 210, 97, 52, 32, 247, 47, 118, 144, 248, 40, 162, 16, 251, 29, 95, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 5, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 129, 100, 0, 0, 255, 255, 143, 128, 1, 4, 255, 255, 129, 112, 0, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 157, 144, 1, 20, 255, 255, 143, 128, 0, 25, 255, 255, 157, 144, 1, 29, 76, 77, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 68, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Chile/Continental": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 8, 0, 0, 0, 20, 128, 0, 0, 0, 143, 48, 71, 70, 155, 92, 229, 80, 159, 124, 226, 198, 161, 0, 113, 192, 176, 94, 119, 198, 177, 119, 61, 64, 178, 65, 0, 208, 179, 88, 112, 192, 180, 34, 52, 80, 181, 57, 164, 64, 182, 3, 103, 208, 183, 26, 215, 192, 183, 228, 155, 80, 184, 253, 92, 192, 185, 199, 32, 80, 204, 28, 110, 64, 204, 108, 231, 208, 211, 220, 143, 192, 212, 27, 201, 176, 213, 51, 85, 192, 213, 118, 146, 64, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 89, 23, 200, 48, 89, 143, 206, 192, 90, 247, 170, 48, 91, 111, 176, 192, 92, 215, 140, 48, 93, 79, 146, 192, 94, 183, 110, 48, 95, 47, 116, 192, 96, 151, 80, 48, 97, 24, 145, 64, 98, 128, 108, 176, 98, 248, 115, 64, 100, 96, 78, 176, 100, 216, 85, 64, 102, 64, 48, 176, 102, 184, 55, 64, 104, 32, 18, 176, 104, 152, 25, 64, 105, 255, 244, 176, 106, 119, 251, 64, 107, 223, 214, 176, 108, 97, 23, 192, 109, 200, 243, 48, 110, 64, 249, 192, 111, 168, 213, 48, 112, 32, 219, 192, 113, 136, 183, 48, 114, 0, 189, 192, 115, 104, 153, 48, 115, 224, 159, 192, 117, 72, 123, 48, 117, 201, 188, 64, 119, 49, 151, 176, 119, 169, 158, 64, 121, 17, 121, 176, 121, 137, 128, 64, 122, 241, 91, 176, 123, 105, 98, 64, 124, 209, 61, 176, 125, 73, 68, 64, 126, 177, 31, 176, 127, 41, 38, 64, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 3, 2, 3, 5, 3, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 6, 255, 255, 189, 186, 0, 0, 255, 255, 189, 186, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 12, 255, 255, 199, 192, 1, 12, 255, 255, 213, 208, 1, 16, 255, 255, 213, 208, 1, 16, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 53, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 60, 45, 48, 52, 62, 52, 60, 45, 48, 51, 62, 44, 77, 56, 46, 50, 46, 54, 47, 50, 52, 44, 77, 53, 46, 50, 46, 54, 47, 50, 52, 10}, + + "zoneinfo/Chile/EasterIsland": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 185, 199, 64, 136, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 89, 23, 200, 48, 89, 143, 206, 192, 90, 247, 170, 48, 91, 111, 176, 192, 92, 215, 140, 48, 93, 79, 146, 192, 94, 183, 110, 48, 95, 47, 116, 192, 96, 151, 80, 48, 97, 24, 145, 64, 98, 128, 108, 176, 98, 248, 115, 64, 100, 96, 78, 176, 100, 216, 85, 64, 102, 64, 48, 176, 102, 184, 55, 64, 104, 32, 18, 176, 104, 152, 25, 64, 105, 255, 244, 176, 106, 119, 251, 64, 107, 223, 214, 176, 108, 97, 23, 192, 109, 200, 243, 48, 110, 64, 249, 192, 111, 168, 213, 48, 112, 32, 219, 192, 113, 136, 183, 48, 114, 0, 189, 192, 115, 104, 153, 48, 115, 224, 159, 192, 117, 72, 123, 48, 117, 201, 188, 64, 119, 49, 151, 176, 119, 169, 158, 64, 121, 17, 121, 176, 121, 137, 128, 64, 122, 241, 91, 176, 123, 105, 98, 64, 124, 209, 61, 176, 125, 73, 68, 64, 126, 177, 31, 176, 127, 41, 38, 64, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 255, 255, 153, 120, 0, 0, 255, 255, 153, 120, 0, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 157, 144, 0, 12, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 69, 77, 84, 0, 45, 48, 54, 0, 45, 48, 55, 0, 45, 48, 53, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 10, 60, 45, 48, 54, 62, 54, 60, 45, 48, 53, 62, 44, 77, 56, 46, 50, 46, 54, 47, 50, 50, 44, 77, 53, 46, 50, 46, 54, 47, 50, 50, 10}, + + "zoneinfo/Cuba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 172, 98, 194, 128, 177, 211, 148, 80, 178, 116, 93, 64, 200, 91, 102, 208, 200, 211, 81, 64, 202, 59, 72, 208, 202, 188, 109, 192, 204, 36, 101, 80, 204, 156, 79, 192, 209, 196, 11, 80, 210, 59, 245, 192, 211, 163, 237, 80, 212, 27, 215, 192, 247, 96, 5, 208, 247, 255, 125, 64, 249, 61, 68, 208, 249, 227, 83, 192, 250, 219, 59, 208, 251, 167, 134, 64, 252, 197, 169, 208, 253, 135, 104, 64, 254, 184, 0, 208, 255, 167, 227, 192, 0, 151, 226, 208, 1, 135, 197, 192, 2, 119, 196, 208, 3, 112, 226, 64, 4, 96, 225, 80, 5, 53, 20, 192, 6, 64, 195, 80, 7, 22, 72, 64, 8, 32, 165, 80, 8, 247, 123, 192, 10, 0, 135, 80, 10, 240, 106, 64, 11, 224, 105, 80, 12, 217, 134, 192, 13, 192, 75, 80, 14, 185, 104, 192, 15, 178, 162, 80, 16, 125, 155, 64, 17, 81, 234, 208, 18, 102, 183, 192, 19, 49, 204, 208, 20, 70, 153, 192, 21, 91, 130, 208, 22, 38, 123, 192, 23, 59, 100, 208, 24, 6, 93, 192, 25, 27, 70, 208, 25, 230, 63, 192, 26, 251, 40, 208, 27, 207, 92, 64, 28, 219, 10, 208, 29, 175, 62, 64, 30, 122, 83, 80, 31, 143, 32, 64, 32, 90, 53, 80, 33, 111, 2, 64, 34, 67, 81, 208, 35, 78, 228, 64, 36, 35, 51, 208, 37, 46, 198, 64, 38, 21, 138, 208, 39, 23, 226, 192, 39, 254, 167, 80, 40, 247, 210, 208, 41, 222, 137, 80, 42, 215, 180, 208, 43, 190, 107, 80, 44, 183, 150, 208, 45, 158, 77, 80, 46, 151, 120, 208, 47, 126, 47, 80, 48, 119, 90, 208, 49, 103, 75, 208, 50, 87, 60, 208, 51, 71, 45, 208, 52, 64, 89, 80, 53, 29, 213, 80, 54, 50, 176, 80, 54, 253, 183, 80, 56, 27, 204, 208, 56, 230, 211, 208, 57, 251, 174, 208, 58, 198, 181, 208, 59, 219, 144, 208, 60, 175, 210, 80, 61, 187, 114, 208, 62, 143, 180, 80, 63, 155, 84, 208, 64, 102, 91, 208, 69, 68, 53, 80, 69, 243, 140, 208, 71, 36, 23, 80, 71, 220, 169, 80, 73, 3, 249, 80, 73, 179, 80, 208, 74, 227, 219, 80, 75, 156, 109, 80, 76, 204, 247, 208, 77, 133, 137, 208, 78, 191, 78, 208, 79, 119, 224, 208, 80, 149, 246, 80, 81, 60, 19, 80, 82, 117, 216, 80, 83, 27, 245, 80, 84, 85, 186, 80, 84, 251, 215, 80, 86, 53, 156, 80, 86, 228, 243, 208, 88, 30, 184, 208, 88, 196, 213, 208, 89, 254, 154, 208, 90, 164, 183, 208, 91, 222, 124, 208, 92, 132, 153, 208, 93, 190, 94, 208, 94, 100, 123, 208, 95, 158, 64, 208, 96, 77, 152, 80, 97, 135, 93, 80, 98, 45, 122, 80, 99, 103, 63, 80, 100, 13, 92, 80, 101, 71, 33, 80, 101, 237, 62, 80, 103, 39, 3, 80, 103, 205, 32, 80, 105, 6, 229, 80, 105, 173, 2, 80, 106, 230, 199, 80, 107, 150, 30, 208, 108, 207, 227, 208, 109, 118, 0, 208, 110, 175, 197, 208, 111, 85, 226, 208, 112, 143, 167, 208, 113, 53, 196, 208, 114, 111, 137, 208, 115, 21, 166, 208, 116, 79, 107, 208, 116, 254, 195, 80, 118, 56, 136, 80, 118, 222, 165, 80, 120, 24, 106, 80, 120, 190, 135, 80, 121, 248, 76, 80, 122, 158, 105, 80, 123, 216, 46, 80, 124, 126, 75, 80, 125, 184, 16, 80, 126, 94, 45, 80, 127, 151, 242, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 255, 255, 178, 200, 0, 0, 255, 255, 178, 192, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 0, 12, 255, 255, 199, 192, 1, 8, 76, 77, 84, 0, 72, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 53, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 47, 48, 44, 77, 49, 49, 46, 49, 46, 48, 47, 49, 10}, + + "zoneinfo/EET": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 2, 0, 0, 0, 9, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 42, 48, 1, 0, 0, 0, 28, 32, 0, 5, 69, 69, 83, 84, 0, 69, 69, 84, 0, 1, 1, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/EST": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 185, 176, 0, 0, 69, 83, 84, 0, 0, 0, 10, 69, 83, 84, 53, 10}, + + "zoneinfo/EST5EDT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 4, 0, 0, 0, 16, 158, 166, 30, 112, 159, 186, 235, 96, 160, 134, 0, 112, 161, 154, 205, 96, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 0, 1, 0, 1, 2, 3, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 255, 255, 199, 192, 1, 0, 255, 255, 185, 176, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 199, 192, 1, 12, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Egypt": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 4, 0, 0, 0, 13, 128, 0, 0, 0, 200, 147, 180, 224, 200, 250, 123, 208, 201, 252, 239, 224, 202, 199, 232, 208, 203, 203, 174, 96, 204, 223, 41, 208, 205, 172, 225, 224, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 173, 80, 232, 54, 99, 96, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 250, 240, 236, 181, 109, 0, 237, 207, 127, 240, 238, 151, 242, 0, 239, 176, 179, 112, 240, 121, 37, 128, 241, 145, 230, 240, 242, 90, 89, 0, 243, 115, 26, 112, 244, 59, 140, 128, 245, 85, 159, 112, 246, 30, 17, 128, 247, 54, 210, 240, 247, 255, 69, 0, 249, 24, 6, 112, 249, 225, 202, 0, 250, 249, 57, 240, 251, 194, 253, 128, 252, 219, 190, 240, 253, 165, 130, 128, 254, 188, 242, 112, 255, 134, 182, 0, 0, 158, 37, 240, 1, 103, 233, 128, 2, 127, 89, 112, 3, 73, 29, 0, 4, 97, 222, 112, 5, 43, 162, 0, 6, 67, 17, 240, 7, 12, 213, 128, 8, 36, 69, 112, 8, 238, 9, 0, 10, 5, 120, 240, 10, 207, 60, 128, 11, 231, 253, 240, 12, 177, 193, 128, 13, 201, 49, 112, 14, 146, 245, 0, 15, 170, 100, 240, 16, 116, 40, 128, 17, 139, 152, 112, 18, 85, 92, 0, 19, 110, 29, 112, 20, 55, 225, 0, 21, 79, 80, 240, 22, 25, 20, 128, 23, 160, 147, 240, 23, 250, 72, 0, 25, 112, 163, 240, 25, 219, 123, 128, 26, 244, 60, 240, 27, 190, 0, 128, 28, 213, 112, 112, 29, 159, 52, 0, 30, 182, 163, 240, 31, 128, 103, 128, 32, 151, 215, 112, 33, 97, 155, 0, 34, 122, 92, 112, 35, 68, 32, 0, 36, 98, 39, 112, 37, 37, 83, 128, 38, 60, 195, 112, 39, 6, 135, 0, 40, 29, 246, 240, 40, 231, 186, 128, 42, 0, 123, 240, 42, 202, 63, 128, 43, 225, 175, 112, 44, 171, 115, 0, 45, 194, 226, 240, 46, 140, 166, 128, 47, 160, 19, 224, 48, 107, 12, 208, 49, 127, 245, 224, 50, 74, 238, 208, 51, 95, 215, 224, 52, 42, 208, 208, 53, 63, 185, 224, 54, 10, 178, 208, 55, 40, 214, 96, 55, 243, 207, 80, 57, 8, 184, 96, 57, 211, 177, 80, 58, 232, 154, 96, 59, 179, 147, 80, 60, 200, 124, 96, 61, 147, 117, 80, 62, 168, 94, 96, 63, 115, 87, 80, 64, 145, 122, 224, 65, 92, 115, 208, 66, 113, 92, 224, 67, 60, 85, 208, 68, 81, 62, 224, 69, 18, 253, 80, 70, 49, 32, 224, 70, 224, 106, 80, 72, 17, 2, 224, 72, 183, 17, 208, 73, 240, 228, 224, 74, 141, 185, 80, 75, 218, 1, 96, 76, 97, 189, 208, 76, 137, 88, 224, 76, 164, 250, 80, 83, 117, 56, 224, 83, 172, 137, 208, 83, 218, 188, 96, 84, 36, 130, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 1, 2, 1, 2, 1, 2, 0, 0, 29, 85, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 10}, + + "zoneinfo/Eire": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 10, 0, 0, 0, 20, 128, 0, 0, 0, 155, 38, 179, 145, 155, 214, 11, 17, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 165, 148, 63, 0, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 212, 73, 224, 32, 213, 30, 33, 160, 214, 78, 172, 32, 215, 44, 40, 32, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 7, 9, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 6, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 255, 255, 250, 36, 0, 0, 255, 255, 250, 15, 0, 4, 0, 0, 8, 31, 1, 8, 0, 0, 14, 16, 1, 12, 0, 0, 0, 0, 0, 16, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 16, 0, 0, 14, 16, 0, 8, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 16, 76, 77, 84, 0, 68, 77, 84, 0, 73, 83, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 71, 77, 84, 48, 73, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Etc/GMT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Etc/GMT+0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Etc/GMT+1": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 255, 255, 241, 240, 0, 0, 45, 48, 49, 0, 0, 0, 10, 60, 45, 48, 49, 62, 49, 10}, + + "zoneinfo/Etc/GMT+10": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 255, 255, 115, 96, 0, 0, 45, 49, 48, 0, 0, 0, 10, 60, 45, 49, 48, 62, 49, 48, 10}, + + "zoneinfo/Etc/GMT+11": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 255, 255, 101, 80, 0, 0, 45, 49, 49, 0, 0, 0, 10, 60, 45, 49, 49, 62, 49, 49, 10}, + + "zoneinfo/Etc/GMT+12": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 255, 255, 87, 64, 0, 0, 45, 49, 50, 0, 0, 0, 10, 60, 45, 49, 50, 62, 49, 50, 10}, + + "zoneinfo/Etc/GMT+2": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 255, 255, 227, 224, 0, 0, 45, 48, 50, 0, 0, 0, 10, 60, 45, 48, 50, 62, 50, 10}, + + "zoneinfo/Etc/GMT+3": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 255, 255, 213, 208, 0, 0, 45, 48, 51, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + + "zoneinfo/Etc/GMT+4": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 255, 255, 199, 192, 0, 0, 45, 48, 52, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + + "zoneinfo/Etc/GMT+5": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 255, 255, 185, 176, 0, 0, 45, 48, 53, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + + "zoneinfo/Etc/GMT+6": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 255, 255, 171, 160, 0, 0, 45, 48, 54, 0, 0, 0, 10, 60, 45, 48, 54, 62, 54, 10}, + + "zoneinfo/Etc/GMT+7": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 255, 255, 157, 144, 0, 0, 45, 48, 55, 0, 0, 0, 10, 60, 45, 48, 55, 62, 55, 10}, + + "zoneinfo/Etc/GMT+8": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 255, 255, 143, 128, 0, 0, 45, 48, 56, 0, 0, 0, 10, 60, 45, 48, 56, 62, 56, 10}, + + "zoneinfo/Etc/GMT+9": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 255, 255, 129, 112, 0, 0, 45, 48, 57, 0, 0, 0, 10, 60, 45, 48, 57, 62, 57, 10}, + + "zoneinfo/Etc/GMT-0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Etc/GMT-1": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 14, 16, 0, 0, 43, 48, 49, 0, 0, 0, 10, 60, 43, 48, 49, 62, 45, 49, 10}, + + "zoneinfo/Etc/GMT-10": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 140, 160, 0, 0, 43, 49, 48, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + + "zoneinfo/Etc/GMT-11": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 154, 176, 0, 0, 43, 49, 49, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Etc/GMT-12": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 168, 192, 0, 0, 43, 49, 50, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + + "zoneinfo/Etc/GMT-13": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 182, 208, 0, 0, 43, 49, 51, 0, 0, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 10}, + + "zoneinfo/Etc/GMT-14": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 196, 224, 0, 0, 43, 49, 52, 0, 0, 0, 10, 60, 43, 49, 52, 62, 45, 49, 52, 10}, + + "zoneinfo/Etc/GMT-2": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 28, 32, 0, 0, 43, 48, 50, 0, 0, 0, 10, 60, 43, 48, 50, 62, 45, 50, 10}, + + "zoneinfo/Etc/GMT-3": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 42, 48, 0, 0, 43, 48, 51, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/Etc/GMT-4": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 56, 64, 0, 0, 43, 48, 52, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + + "zoneinfo/Etc/GMT-5": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 70, 80, 0, 0, 43, 48, 53, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Etc/GMT-6": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 84, 96, 0, 0, 43, 48, 54, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + + "zoneinfo/Etc/GMT-7": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 98, 112, 0, 0, 43, 48, 55, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Etc/GMT-8": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 112, 128, 0, 0, 43, 48, 56, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + + "zoneinfo/Etc/GMT-9": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 126, 144, 0, 0, 43, 48, 57, 0, 0, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, + + "zoneinfo/Etc/GMT0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Etc/Greenwich": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Etc/UCT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 67, 84, 0, 0, 0, 10, 85, 67, 84, 48, 10}, + + "zoneinfo/Etc/UTC": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 0, 0, 10, 85, 84, 67, 48, 10}, + + "zoneinfo/Etc/Universal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 0, 0, 10, 85, 84, 67, 48, 10}, + + "zoneinfo/Etc/Zulu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 0, 0, 10, 85, 84, 67, 48, 10}, + + "zoneinfo/Europe/Amsterdam": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 14, 0, 0, 0, 33, 128, 0, 0, 0, 155, 12, 46, 236, 155, 213, 214, 92, 156, 217, 184, 12, 157, 164, 191, 12, 158, 167, 37, 12, 159, 151, 22, 12, 160, 144, 65, 140, 161, 118, 248, 12, 162, 112, 35, 140, 163, 86, 218, 12, 164, 80, 5, 140, 165, 54, 188, 12, 166, 37, 91, 140, 167, 39, 193, 140, 168, 94, 227, 140, 169, 7, 163, 140, 169, 238, 90, 12, 170, 231, 133, 140, 172, 39, 226, 12, 172, 199, 103, 140, 173, 237, 102, 12, 174, 167, 73, 140, 175, 206, 153, 140, 176, 135, 43, 140, 177, 177, 30, 140, 178, 112, 72, 12, 179, 146, 82, 12, 180, 80, 42, 12, 181, 115, 133, 140, 182, 48, 12, 12, 183, 84, 185, 12, 184, 15, 238, 12, 185, 64, 120, 140, 185, 239, 208, 12, 187, 24, 113, 140, 187, 216, 236, 140, 188, 249, 165, 12, 189, 184, 206, 140, 190, 218, 216, 140, 191, 152, 176, 140, 192, 189, 93, 140, 193, 120, 146, 140, 194, 167, 203, 140, 194, 220, 93, 92, 195, 88, 116, 112, 196, 127, 196, 112, 197, 56, 86, 112, 198, 96, 247, 240, 199, 33, 114, 240, 200, 68, 178, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 78, 64, 144, 13, 42, 253, 112, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 7, 5, 6, 5, 6, 5, 10, 8, 9, 8, 9, 8, 9, 8, 13, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 4, 148, 0, 0, 0, 0, 18, 164, 1, 4, 0, 0, 4, 148, 0, 8, 0, 0, 18, 164, 1, 4, 0, 0, 4, 148, 0, 8, 0, 0, 4, 176, 0, 12, 0, 0, 18, 192, 1, 18, 0, 0, 18, 192, 1, 18, 0, 0, 14, 16, 0, 24, 0, 0, 28, 32, 1, 28, 0, 0, 28, 32, 1, 28, 0, 0, 28, 32, 1, 28, 0, 0, 14, 16, 0, 24, 0, 0, 14, 16, 0, 24, 76, 77, 84, 0, 78, 83, 84, 0, 65, 77, 84, 0, 43, 48, 48, 50, 48, 0, 43, 48, 49, 50, 48, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Andorra": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 5, 0, 0, 0, 17, 128, 0, 0, 0, 212, 65, 219, 0, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 1, 108, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 87, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Astrakhan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 9, 0, 0, 0, 16, 128, 0, 0, 0, 170, 24, 69, 116, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 41, 212, 236, 96, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 86, 247, 20, 112, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 45, 12, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + + "zoneinfo/Europe/Athens": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 10, 0, 0, 0, 26, 128, 0, 0, 0, 155, 128, 33, 128, 185, 124, 233, 224, 185, 198, 175, 208, 201, 242, 99, 224, 202, 16, 168, 80, 204, 231, 75, 16, 205, 170, 76, 240, 206, 162, 24, 224, 207, 147, 105, 112, 223, 19, 158, 96, 223, 183, 10, 80, 9, 236, 94, 96, 11, 24, 244, 96, 11, 205, 174, 0, 12, 189, 159, 0, 13, 164, 85, 128, 14, 140, 93, 128, 15, 132, 55, 128, 16, 106, 252, 16, 17, 100, 123, 240, 18, 82, 170, 240, 19, 70, 130, 96, 20, 51, 194, 80, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 2, 5, 4, 5, 4, 3, 2, 3, 6, 7, 6, 7, 6, 7, 6, 3, 2, 3, 2, 3, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 22, 60, 0, 0, 0, 0, 22, 60, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 65, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Europe/Belfast": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Europe/Belgrade": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 161, 140, 16, 210, 78, 64, 144, 24, 69, 95, 112, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 1, 3, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Berlin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 9, 0, 0, 0, 18, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 209, 182, 150, 0, 210, 88, 190, 128, 210, 161, 79, 16, 210, 219, 52, 240, 211, 99, 27, 144, 212, 75, 35, 144, 213, 57, 209, 32, 213, 103, 231, 144, 213, 168, 115, 0, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 2, 193, 144, 217, 233, 120, 16, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 1, 4, 2, 3, 4, 3, 6, 1, 4, 3, 4, 3, 4, 2, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 12, 136, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 42, 48, 1, 13, 0, 0, 42, 48, 1, 13, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 67, 69, 77, 84, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Bratislava": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 110, 94, 144, 209, 121, 255, 16, 210, 161, 79, 16, 211, 128, 28, 144, 212, 73, 210, 16, 213, 76, 56, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 1, 112, 16, 217, 233, 120, 16, 16, 237, 100, 112, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 13, 136, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 80, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Brussels": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 11, 0, 0, 0, 22, 128, 0, 0, 0, 152, 68, 73, 128, 155, 12, 37, 112, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 159, 206, 248, 48, 160, 96, 165, 240, 161, 126, 187, 112, 162, 46, 18, 240, 163, 122, 76, 240, 164, 53, 129, 240, 165, 94, 35, 112, 166, 37, 53, 240, 167, 39, 155, 240, 168, 42, 1, 240, 169, 7, 125, 240, 169, 238, 52, 112, 170, 231, 95, 240, 171, 215, 80, 240, 172, 199, 65, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 184, 255, 227, 160, 185, 239, 212, 160, 186, 214, 139, 32, 187, 216, 241, 32, 188, 200, 226, 32, 189, 184, 211, 32, 190, 159, 137, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 104, 136, 32, 195, 88, 121, 32, 196, 63, 47, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 200, 74, 25, 32, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 91, 191, 96, 208, 110, 94, 144, 209, 114, 22, 16, 210, 78, 64, 144, 211, 145, 64, 16, 212, 75, 35, 144, 13, 42, 253, 112, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 5, 2, 3, 4, 3, 4, 8, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 3, 4, 3, 4, 3, 5, 4, 3, 4, 3, 4, 2, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 4, 26, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 1, 17, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 8, 66, 77, 84, 0, 87, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 87, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Bucharest": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 183, 176, 210, 8, 185, 62, 243, 96, 185, 239, 156, 96, 186, 223, 141, 96, 187, 207, 126, 96, 188, 200, 169, 224, 189, 184, 154, 224, 190, 168, 139, 224, 191, 152, 124, 224, 192, 136, 109, 224, 193, 120, 94, 224, 194, 104, 79, 224, 195, 88, 64, 224, 196, 72, 49, 224, 197, 56, 34, 224, 198, 40, 19, 224, 199, 24, 4, 224, 17, 173, 209, 96, 18, 83, 224, 80, 19, 77, 11, 208, 20, 51, 208, 96, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 161, 128, 25, 211, 146, 128, 26, 195, 131, 128, 27, 188, 175, 0, 28, 172, 160, 0, 29, 156, 145, 0, 30, 140, 130, 0, 31, 124, 115, 0, 32, 108, 100, 0, 33, 92, 85, 0, 34, 76, 70, 0, 35, 60, 55, 0, 36, 44, 40, 0, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 127, 180, 224, 39, 245, 10, 96, 40, 228, 251, 96, 41, 212, 236, 96, 42, 196, 221, 96, 43, 180, 206, 96, 44, 164, 191, 96, 45, 36, 160, 224, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 114, 123, 208, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 5, 2, 3, 2, 3, 2, 3, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 24, 120, 0, 0, 0, 0, 24, 120, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 66, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Europe/Budapest": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 48, 88, 112, 158, 167, 41, 160, 159, 132, 151, 144, 160, 154, 210, 32, 161, 192, 194, 144, 201, 243, 195, 112, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 153, 120, 224, 210, 138, 187, 96, 211, 80, 166, 144, 212, 73, 210, 16, 213, 57, 195, 16, 214, 41, 180, 16, 215, 25, 165, 16, 216, 9, 150, 16, 217, 2, 193, 144, 217, 233, 120, 16, 218, 237, 47, 144, 219, 230, 91, 16, 226, 162, 168, 240, 227, 81, 242, 96, 228, 131, 220, 112, 229, 51, 37, 224, 230, 116, 225, 240, 231, 17, 182, 96, 232, 84, 210, 0, 232, 241, 194, 144, 19, 77, 54, 0, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 4, 3, 4, 3, 4, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 17, 228, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Busingen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 202, 23, 106, 0, 202, 226, 113, 0, 203, 247, 76, 0, 204, 194, 83, 0, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 6, 250, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 66, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Chisinau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 16, 0, 0, 0, 38, 128, 0, 0, 0, 158, 107, 159, 12, 183, 176, 210, 8, 185, 62, 243, 96, 185, 239, 156, 96, 186, 223, 141, 96, 187, 207, 126, 96, 188, 200, 169, 224, 189, 184, 154, 224, 190, 168, 139, 224, 191, 152, 124, 224, 192, 136, 109, 224, 193, 120, 94, 224, 194, 104, 79, 224, 195, 88, 64, 224, 196, 72, 49, 224, 197, 56, 34, 224, 198, 40, 19, 224, 199, 24, 4, 224, 200, 188, 147, 96, 202, 119, 125, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 78, 144, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 38, 67, 76, 224, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 96, 232, 96, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 114, 123, 208, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 78, 172, 147, 128, 79, 110, 96, 0, 80, 140, 117, 128, 81, 87, 124, 128, 82, 108, 87, 128, 83, 55, 94, 128, 84, 76, 57, 128, 85, 23, 64, 128, 86, 44, 27, 128, 86, 247, 34, 128, 88, 21, 56, 0, 88, 215, 4, 128, 89, 245, 26, 0, 90, 182, 230, 128, 91, 212, 252, 0, 92, 160, 3, 0, 93, 180, 222, 0, 94, 127, 229, 0, 95, 148, 192, 0, 96, 95, 199, 0, 97, 125, 220, 128, 98, 63, 169, 0, 99, 93, 190, 128, 100, 31, 139, 0, 101, 61, 160, 128, 102, 8, 167, 128, 103, 29, 130, 128, 103, 232, 137, 128, 104, 253, 100, 128, 105, 200, 107, 128, 106, 221, 70, 128, 107, 168, 77, 128, 108, 198, 99, 0, 109, 136, 47, 128, 110, 166, 69, 0, 111, 104, 17, 128, 112, 134, 39, 0, 113, 81, 46, 0, 114, 102, 9, 0, 115, 49, 16, 0, 116, 69, 235, 0, 117, 16, 242, 0, 118, 47, 7, 128, 118, 240, 212, 0, 120, 14, 233, 128, 120, 208, 182, 0, 121, 238, 203, 128, 122, 176, 152, 0, 123, 206, 173, 128, 124, 153, 180, 128, 125, 174, 143, 128, 126, 121, 150, 128, 127, 142, 113, 128, 1, 2, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 9, 7, 8, 7, 8, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 6, 4, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 27, 8, 0, 0, 0, 0, 26, 244, 0, 4, 0, 0, 24, 120, 0, 8, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 1, 12, 0, 0, 14, 16, 0, 21, 0, 0, 28, 32, 1, 25, 0, 0, 28, 32, 1, 25, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 0, 34, 0, 0, 42, 48, 0, 34, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 76, 77, 84, 0, 67, 77, 84, 0, 66, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Copenhagen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 30, 140, 96, 155, 213, 190, 208, 200, 67, 87, 112, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 36, 16, 144, 211, 121, 133, 16, 212, 27, 173, 144, 213, 94, 173, 16, 213, 223, 224, 16, 215, 71, 201, 144, 215, 191, 194, 16, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 11, 204, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 67, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Dublin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 10, 0, 0, 0, 20, 128, 0, 0, 0, 155, 38, 179, 145, 155, 214, 11, 17, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 165, 148, 63, 0, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 212, 73, 224, 32, 213, 30, 33, 160, 214, 78, 172, 32, 215, 44, 40, 32, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 7, 9, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 6, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 255, 255, 250, 36, 0, 0, 255, 255, 250, 15, 0, 4, 0, 0, 8, 31, 1, 8, 0, 0, 14, 16, 1, 12, 0, 0, 0, 0, 0, 16, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 16, 0, 0, 14, 16, 0, 8, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 16, 76, 77, 84, 0, 68, 77, 84, 0, 73, 83, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 71, 77, 84, 48, 73, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Europe/Gibraltar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 7, 0, 0, 0, 26, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 250, 252, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 14, 16, 0, 17, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Guernsey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Europe/Helsinki": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 6, 0, 0, 0, 17, 128, 0, 0, 0, 164, 115, 111, 27, 203, 206, 81, 96, 204, 192, 229, 96, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 23, 101, 0, 0, 0, 0, 23, 101, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 72, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Europe/Isle_of_Man": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Europe/Istanbul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 11, 0, 0, 0, 25, 128, 0, 0, 0, 144, 139, 245, 152, 155, 12, 23, 96, 155, 213, 190, 208, 162, 101, 99, 224, 163, 123, 130, 80, 164, 78, 128, 96, 165, 63, 180, 208, 166, 37, 39, 224, 167, 39, 127, 208, 170, 40, 40, 96, 170, 225, 253, 208, 171, 249, 137, 224, 172, 195, 49, 80, 200, 127, 238, 96, 200, 255, 193, 208, 201, 74, 245, 96, 202, 206, 128, 80, 203, 203, 174, 96, 204, 229, 193, 80, 209, 113, 235, 224, 210, 107, 9, 80, 211, 162, 57, 96, 212, 67, 2, 80, 213, 76, 13, 224, 214, 41, 123, 208, 215, 43, 239, 224, 216, 9, 93, 208, 217, 2, 151, 96, 217, 233, 63, 208, 218, 239, 168, 96, 219, 210, 92, 80, 220, 212, 208, 96, 221, 179, 143, 208, 241, 244, 185, 96, 242, 100, 186, 208, 245, 104, 6, 96, 246, 31, 56, 208, 0, 160, 186, 224, 1, 107, 179, 208, 2, 128, 156, 224, 3, 75, 149, 208, 4, 105, 185, 96, 5, 52, 178, 80, 6, 110, 147, 112, 7, 57, 168, 128, 7, 251, 117, 0, 9, 25, 166, 160, 9, 219, 58, 224, 10, 240, 7, 208, 12, 16, 206, 96, 12, 217, 36, 80, 13, 164, 57, 96, 14, 166, 145, 80, 15, 132, 27, 96, 16, 134, 115, 80, 18, 103, 152, 192, 19, 77, 54, 0, 20, 71, 122, 192, 21, 35, 221, 128, 22, 39, 92, 192, 23, 3, 191, 128, 24, 7, 62, 192, 25, 137, 148, 80, 25, 220, 148, 192, 28, 198, 211, 208, 29, 155, 21, 80, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 139, 131, 240, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 69, 152, 50, 224, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 143, 221, 144, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 56, 190, 16, 84, 76, 71, 144, 85, 23, 78, 144, 86, 62, 158, 144, 86, 247, 48, 144, 87, 207, 46, 80, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 3, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 5, 5, 0, 0, 27, 40, 0, 0, 0, 0, 27, 104, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 73, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/Europe/Jersey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Europe/Kaliningrad": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 15, 0, 0, 0, 34, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 149, 132, 96, 210, 138, 173, 80, 210, 219, 38, 224, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 114, 166, 0, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 84, 76, 43, 112, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 9, 10, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 13, 12, 0, 0, 19, 56, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 56, 64, 1, 13, 0, 0, 42, 48, 0, 17, 0, 0, 42, 48, 0, 17, 0, 0, 56, 64, 1, 13, 0, 0, 42, 48, 1, 21, 0, 0, 28, 32, 0, 26, 0, 0, 42, 48, 0, 30, 0, 0, 28, 32, 0, 26, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 51, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 10}, + + "zoneinfo/Europe/Kiev": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 13, 0, 0, 0, 34, 128, 0, 0, 0, 170, 25, 167, 100, 181, 164, 25, 96, 202, 205, 46, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 206, 205, 168, 112, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 38, 141, 32, 224, 40, 229, 23, 128, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 6, 4, 5, 4, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 10, 2, 10, 2, 10, 2, 10, 2, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 28, 156, 0, 0, 0, 0, 28, 156, 0, 4, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 12, 0, 0, 14, 16, 0, 16, 0, 0, 28, 32, 1, 20, 0, 0, 28, 32, 1, 20, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 12, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 8, 76, 77, 84, 0, 75, 77, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Europe/Kirov": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 8, 0, 0, 0, 16, 128, 0, 0, 0, 161, 0, 57, 128, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 41, 212, 236, 96, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 7, 0, 0, 46, 152, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/Europe/Lisbon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 11, 0, 0, 0, 27, 128, 0, 0, 0, 146, 230, 151, 29, 155, 75, 109, 112, 155, 254, 199, 128, 156, 156, 237, 112, 157, 201, 131, 112, 158, 127, 114, 112, 159, 170, 182, 240, 160, 95, 84, 112, 161, 139, 234, 112, 162, 65, 217, 112, 163, 110, 111, 112, 164, 35, 12, 240, 165, 79, 162, 240, 170, 5, 239, 112, 170, 244, 142, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 34, 112, 179, 114, 136, 112, 180, 80, 4, 112, 183, 50, 76, 112, 184, 15, 200, 112, 184, 255, 185, 112, 185, 239, 170, 112, 188, 200, 183, 240, 189, 184, 168, 240, 190, 159, 95, 112, 191, 152, 138, 240, 192, 154, 240, 240, 193, 120, 108, 240, 194, 104, 93, 240, 195, 88, 78, 240, 196, 63, 5, 112, 197, 56, 48, 240, 198, 58, 150, 240, 199, 88, 172, 112, 199, 217, 223, 112, 201, 1, 47, 112, 201, 241, 32, 112, 202, 226, 98, 240, 203, 181, 82, 240, 203, 236, 163, 224, 204, 128, 75, 224, 204, 220, 162, 240, 205, 149, 52, 240, 205, 195, 75, 96, 206, 114, 162, 224, 206, 197, 191, 112, 207, 117, 22, 240, 207, 172, 103, 224, 208, 82, 132, 224, 208, 165, 161, 112, 209, 84, 248, 240, 209, 140, 73, 224, 210, 50, 102, 224, 210, 133, 131, 112, 211, 89, 196, 240, 212, 73, 181, 240, 213, 57, 209, 32, 214, 41, 194, 32, 215, 25, 179, 32, 216, 9, 164, 32, 216, 249, 149, 32, 217, 233, 134, 32, 220, 185, 89, 32, 221, 178, 132, 160, 222, 162, 117, 160, 223, 146, 102, 160, 224, 130, 87, 160, 225, 114, 72, 160, 226, 98, 57, 160, 227, 82, 42, 160, 228, 66, 27, 160, 229, 50, 12, 160, 230, 33, 253, 160, 231, 27, 41, 32, 232, 11, 26, 32, 232, 251, 11, 32, 233, 234, 252, 32, 234, 218, 237, 32, 235, 202, 222, 32, 236, 186, 207, 32, 237, 170, 192, 32, 238, 154, 177, 32, 239, 138, 162, 32, 240, 122, 147, 32, 241, 106, 132, 32, 242, 99, 175, 160, 243, 83, 160, 160, 244, 67, 145, 160, 245, 51, 130, 160, 246, 35, 115, 160, 247, 19, 100, 160, 248, 3, 85, 160, 248, 243, 70, 160, 12, 171, 42, 0, 13, 155, 27, 0, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 24, 144, 19, 67, 251, 128, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 189, 160, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 7, 8, 7, 8, 7, 8, 7, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 255, 255, 247, 99, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 13, 0, 0, 14, 16, 0, 18, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 76, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Europe/Ljubljana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 161, 140, 16, 210, 78, 64, 144, 24, 69, 95, 112, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 1, 3, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/London": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Europe/Luxembourg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 185, 0, 0, 0, 14, 0, 0, 0, 22, 128, 0, 0, 0, 132, 162, 173, 188, 155, 30, 140, 96, 155, 213, 218, 240, 156, 234, 167, 224, 157, 164, 153, 112, 158, 185, 144, 144, 159, 132, 151, 144, 159, 224, 196, 112, 160, 96, 165, 240, 161, 126, 229, 160, 162, 46, 18, 240, 163, 122, 105, 16, 164, 53, 129, 240, 165, 94, 63, 144, 166, 37, 53, 240, 167, 39, 170, 0, 168, 42, 1, 240, 169, 7, 154, 16, 169, 238, 52, 112, 170, 231, 110, 0, 171, 216, 162, 112, 172, 199, 80, 0, 173, 201, 167, 240, 174, 167, 50, 0, 175, 160, 79, 112, 176, 135, 20, 0, 177, 137, 107, 240, 178, 112, 48, 128, 179, 114, 136, 112, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 184, 255, 227, 160, 185, 239, 212, 160, 186, 214, 139, 32, 187, 216, 241, 32, 188, 200, 226, 32, 189, 184, 211, 32, 190, 159, 137, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 104, 136, 32, 195, 88, 121, 32, 196, 63, 47, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 200, 66, 48, 32, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 111, 176, 16, 209, 114, 22, 16, 210, 78, 64, 144, 211, 145, 64, 16, 212, 75, 35, 144, 13, 42, 253, 112, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 2, 1, 2, 1, 2, 3, 4, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 11, 9, 10, 9, 10, 2, 3, 4, 3, 4, 2, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 0, 0, 5, 196, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 1, 13, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 18, 0, 0, 14, 16, 1, 13, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 13, 0, 0, 28, 32, 1, 13, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Madrid": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 11, 0, 0, 0, 27, 128, 0, 0, 0, 158, 186, 197, 240, 159, 160, 57, 0, 160, 144, 27, 240, 161, 129, 108, 128, 170, 5, 239, 112, 170, 231, 110, 0, 173, 201, 167, 240, 174, 167, 50, 0, 175, 160, 79, 112, 176, 135, 20, 0, 177, 137, 122, 0, 178, 112, 48, 128, 179, 114, 136, 112, 180, 80, 18, 128, 194, 201, 236, 240, 195, 88, 93, 0, 196, 72, 63, 240, 196, 109, 27, 224, 197, 57, 116, 96, 199, 33, 91, 128, 199, 245, 142, 240, 203, 245, 222, 96, 204, 149, 113, 240, 205, 195, 75, 96, 206, 160, 213, 112, 207, 163, 45, 96, 208, 128, 183, 112, 209, 131, 15, 96, 210, 96, 153, 112, 211, 98, 241, 96, 212, 64, 123, 112, 217, 30, 70, 224, 217, 233, 91, 240, 8, 13, 205, 224, 8, 244, 146, 112, 9, 237, 175, 224, 10, 212, 116, 112, 11, 187, 28, 224, 12, 171, 27, 240, 13, 164, 57, 96, 14, 138, 253, 240, 15, 132, 69, 144, 16, 116, 54, 144, 16, 237, 100, 112, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 4, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 2, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 8, 6, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 255, 255, 252, 140, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 13, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 18, 0, 0, 14, 16, 0, 23, 0, 0, 28, 32, 1, 18, 0, 0, 14, 16, 0, 23, 0, 0, 28, 32, 1, 18, 0, 0, 14, 16, 0, 23, 76, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Malta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 56, 248, 112, 155, 213, 204, 224, 156, 197, 203, 240, 157, 183, 0, 96, 158, 137, 254, 112, 159, 160, 28, 224, 160, 96, 165, 240, 161, 126, 173, 96, 162, 92, 55, 112, 163, 76, 26, 96, 200, 108, 53, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 210, 76, 210, 240, 211, 62, 49, 144, 212, 73, 210, 16, 213, 29, 247, 112, 214, 41, 151, 240, 214, 235, 128, 144, 216, 9, 150, 16, 249, 51, 181, 240, 249, 217, 196, 224, 251, 28, 210, 112, 251, 185, 180, 240, 252, 252, 180, 112, 253, 153, 150, 240, 254, 229, 208, 240, 255, 130, 179, 112, 0, 197, 178, 240, 1, 98, 149, 112, 2, 156, 90, 112, 3, 66, 119, 112, 4, 133, 118, 240, 5, 43, 147, 240, 6, 26, 51, 112, 7, 10, 36, 112, 8, 23, 22, 112, 8, 218, 52, 112, 9, 247, 20, 144, 10, 194, 13, 128, 11, 214, 246, 144, 12, 161, 239, 128, 13, 182, 216, 144, 14, 129, 209, 128, 15, 150, 186, 144, 16, 97, 179, 128, 17, 118, 156, 144, 18, 65, 149, 128, 19, 69, 91, 16, 20, 42, 178, 0, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 1, 2, 4, 3, 4, 3, 4, 3, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 13, 156, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Mariehamn": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 6, 0, 0, 0, 17, 128, 0, 0, 0, 164, 115, 111, 27, 203, 206, 81, 96, 204, 192, 229, 96, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 23, 101, 0, 0, 0, 0, 23, 101, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 72, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Europe/Minsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 13, 0, 0, 0, 38, 128, 0, 0, 0, 170, 25, 170, 56, 181, 164, 25, 96, 202, 94, 112, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 10, 2, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 37, 158, 115, 80, 39, 245, 24, 112, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 114, 166, 0, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 127, 255, 255, 255, 1, 2, 3, 6, 4, 5, 4, 5, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 3, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 12, 12, 0, 0, 25, 216, 0, 0, 0, 0, 25, 200, 0, 4, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 12, 0, 0, 14, 16, 0, 16, 0, 0, 28, 32, 1, 20, 0, 0, 28, 32, 1, 20, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 12, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 34, 76, 77, 84, 0, 77, 77, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 43, 48, 51, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/Europe/Monaco": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 185, 0, 0, 0, 11, 0, 0, 0, 31, 128, 0, 0, 0, 145, 96, 80, 79, 155, 71, 120, 240, 155, 215, 44, 112, 156, 188, 145, 112, 157, 192, 72, 240, 158, 137, 254, 112, 159, 160, 42, 240, 160, 96, 165, 240, 161, 128, 12, 240, 162, 46, 18, 240, 163, 122, 76, 240, 164, 53, 129, 240, 165, 94, 35, 112, 166, 37, 53, 240, 167, 39, 155, 240, 168, 88, 38, 112, 169, 7, 125, 240, 169, 238, 52, 112, 170, 231, 95, 240, 171, 215, 80, 240, 172, 199, 65, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 34, 112, 179, 114, 136, 112, 180, 80, 4, 112, 181, 73, 47, 240, 182, 47, 230, 112, 183, 50, 76, 112, 184, 15, 200, 112, 184, 255, 185, 112, 185, 239, 170, 112, 186, 214, 96, 240, 187, 216, 198, 240, 188, 200, 183, 240, 189, 184, 168, 240, 190, 159, 95, 112, 191, 152, 138, 240, 192, 154, 240, 240, 193, 120, 108, 240, 194, 104, 93, 240, 195, 88, 78, 240, 196, 63, 5, 112, 197, 56, 48, 240, 198, 58, 150, 240, 199, 88, 172, 112, 199, 218, 9, 160, 202, 23, 91, 240, 202, 226, 84, 224, 203, 173, 105, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 137, 241, 240, 209, 114, 22, 16, 210, 78, 64, 144, 11, 187, 57, 0, 12, 171, 27, 240, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 6, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 8, 7, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 6, 236, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 14, 16, 1, 8, 0, 0, 28, 32, 1, 17, 0, 0, 0, 0, 0, 13, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 0, 27, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 0, 27, 76, 77, 84, 0, 80, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Moscow": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 17, 0, 0, 0, 38, 128, 0, 0, 0, 155, 95, 30, 199, 157, 62, 242, 121, 158, 42, 238, 249, 158, 247, 57, 105, 159, 132, 87, 249, 160, 216, 108, 233, 161, 0, 57, 128, 161, 60, 166, 64, 164, 16, 109, 192, 164, 61, 50, 176, 165, 21, 104, 176, 165, 61, 3, 192, 167, 30, 69, 80, 181, 164, 25, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 23, 128, 41, 120, 191, 128, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 1, 3, 2, 3, 4, 2, 4, 5, 6, 7, 8, 7, 6, 9, 6, 7, 6, 7, 6, 7, 6, 7, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 14, 10, 0, 0, 35, 57, 0, 0, 0, 0, 35, 57, 0, 4, 0, 0, 49, 135, 1, 8, 0, 0, 35, 119, 0, 4, 0, 0, 63, 151, 1, 12, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 70, 80, 1, 25, 0, 0, 28, 32, 0, 29, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 29, 0, 0, 56, 64, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 77, 77, 84, 0, 77, 83, 84, 0, 77, 68, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 43, 48, 53, 0, 69, 69, 84, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 75, 45, 51, 10}, + + "zoneinfo/Europe/Nicosia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 165, 119, 30, 184, 9, 237, 175, 224, 10, 221, 146, 208, 11, 250, 100, 224, 12, 190, 198, 80, 13, 164, 57, 96, 14, 138, 225, 208, 15, 132, 27, 96, 16, 117, 79, 208, 17, 99, 253, 96, 18, 83, 224, 80, 19, 77, 25, 224, 20, 51, 194, 80, 21, 35, 193, 96, 22, 19, 164, 80, 23, 3, 163, 96, 23, 243, 134, 80, 24, 227, 133, 96, 25, 211, 104, 80, 26, 195, 103, 96, 27, 188, 132, 208, 28, 172, 131, 224, 29, 156, 102, 208, 30, 140, 101, 224, 31, 124, 72, 208, 32, 108, 71, 224, 33, 92, 42, 208, 34, 76, 41, 224, 35, 60, 12, 208, 36, 44, 11, 224, 37, 27, 238, 208, 38, 11, 237, 224, 39, 5, 11, 80, 39, 245, 10, 96, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 77, 145, 208, 51, 61, 144, 224, 52, 45, 115, 208, 53, 29, 114, 224, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 31, 72, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Europe/Oslo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 39, 227, 0, 155, 212, 123, 96, 200, 183, 77, 96, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 98, 7, 16, 235, 175, 32, 144, 236, 168, 76, 16, 237, 152, 61, 16, 238, 136, 46, 16, 239, 120, 31, 16, 240, 104, 16, 16, 241, 88, 1, 16, 242, 71, 242, 16, 243, 55, 227, 16, 244, 39, 212, 16, 245, 23, 197, 16, 246, 16, 240, 144, 247, 47, 6, 16, 247, 240, 210, 144, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 10, 20, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Paris": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, 0, 13, 0, 0, 0, 31, 128, 0, 0, 0, 145, 96, 80, 139, 155, 71, 120, 240, 155, 215, 44, 112, 156, 188, 145, 112, 157, 192, 72, 240, 158, 137, 254, 112, 159, 160, 42, 240, 160, 96, 165, 240, 161, 128, 12, 240, 162, 46, 18, 240, 163, 122, 76, 240, 164, 53, 129, 240, 165, 94, 35, 112, 166, 37, 53, 240, 167, 39, 155, 240, 168, 88, 38, 112, 169, 7, 125, 240, 169, 238, 52, 112, 170, 231, 95, 240, 171, 215, 80, 240, 172, 199, 65, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 34, 112, 179, 114, 136, 112, 180, 80, 4, 112, 181, 73, 47, 240, 182, 47, 230, 112, 183, 50, 76, 112, 184, 15, 200, 112, 184, 255, 185, 112, 185, 239, 170, 112, 186, 214, 96, 240, 187, 216, 198, 240, 188, 200, 183, 240, 189, 184, 168, 240, 190, 159, 95, 112, 191, 152, 138, 240, 192, 154, 240, 240, 193, 120, 108, 240, 194, 104, 93, 240, 195, 88, 78, 240, 196, 63, 5, 112, 197, 56, 48, 240, 198, 58, 150, 240, 199, 88, 172, 112, 199, 218, 9, 160, 200, 108, 39, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 79, 225, 224, 208, 137, 241, 240, 209, 114, 22, 16, 210, 78, 64, 144, 11, 187, 57, 0, 12, 171, 27, 240, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 8, 6, 7, 6, 7, 9, 4, 9, 10, 8, 10, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 2, 49, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 28, 32, 1, 21, 0, 0, 28, 32, 1, 26, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 14, 16, 0, 17, 76, 77, 84, 0, 80, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 87, 69, 77, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Podgorica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 161, 140, 16, 210, 78, 64, 144, 24, 69, 95, 112, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 1, 3, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Prague": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 110, 94, 144, 209, 121, 255, 16, 210, 161, 79, 16, 211, 128, 28, 144, 212, 73, 210, 16, 213, 76, 56, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 1, 112, 16, 217, 233, 120, 16, 16, 237, 100, 112, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 13, 136, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 80, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Riga": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 15, 0, 0, 0, 38, 128, 0, 0, 0, 158, 185, 135, 254, 159, 132, 142, 254, 160, 136, 70, 126, 160, 203, 130, 254, 173, 231, 241, 222, 200, 175, 100, 96, 202, 98, 101, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 144, 137, 112, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 77, 188, 0, 50, 227, 234, 224, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 186, 239, 224, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 1, 2, 1, 3, 4, 7, 5, 6, 5, 6, 5, 4, 8, 4, 8, 4, 8, 4, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 3, 13, 14, 13, 14, 13, 14, 3, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 0, 0, 22, 162, 0, 0, 0, 0, 22, 162, 0, 4, 0, 0, 36, 178, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 42, 48, 0, 16, 0, 0, 14, 16, 0, 20, 0, 0, 28, 32, 1, 24, 0, 0, 28, 32, 1, 24, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 0, 16, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 12, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 12, 76, 77, 84, 0, 82, 77, 84, 0, 76, 83, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Europe/Rome": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 56, 248, 112, 155, 213, 204, 224, 156, 197, 203, 240, 157, 183, 0, 96, 158, 137, 254, 112, 159, 160, 28, 224, 160, 96, 165, 240, 161, 126, 173, 96, 162, 92, 55, 112, 163, 76, 26, 96, 200, 108, 53, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 130, 116, 224, 206, 162, 67, 16, 207, 146, 52, 16, 207, 227, 198, 224, 208, 110, 94, 144, 209, 114, 22, 16, 210, 76, 210, 240, 211, 62, 49, 144, 212, 73, 210, 16, 213, 29, 247, 112, 214, 41, 151, 240, 214, 235, 128, 144, 216, 9, 150, 16, 249, 51, 181, 240, 249, 217, 196, 224, 251, 28, 210, 112, 251, 185, 180, 240, 252, 252, 180, 112, 253, 153, 150, 240, 254, 229, 208, 240, 255, 130, 179, 112, 0, 197, 178, 240, 1, 98, 149, 112, 2, 156, 90, 112, 3, 66, 119, 112, 4, 133, 118, 240, 5, 43, 147, 240, 6, 110, 147, 112, 7, 11, 117, 240, 8, 69, 58, 240, 8, 235, 87, 240, 10, 46, 87, 112, 10, 203, 57, 240, 12, 14, 57, 112, 12, 171, 27, 240, 13, 228, 224, 240, 14, 138, 253, 240, 15, 205, 253, 112, 16, 116, 26, 112, 17, 173, 223, 112, 18, 83, 252, 112, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 1, 3, 4, 1, 3, 1, 2, 4, 3, 4, 3, 4, 3, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 11, 180, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 82, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Samara": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 12, 0, 0, 0, 20, 128, 0, 0, 0, 161, 0, 57, 128, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 23, 128, 41, 0, 199, 0, 41, 212, 236, 96, 42, 196, 221, 96, 43, 180, 206, 96, 44, 164, 191, 96, 45, 148, 176, 96, 46, 132, 161, 96, 47, 116, 146, 96, 48, 100, 131, 96, 49, 93, 174, 224, 50, 114, 137, 224, 51, 61, 144, 224, 52, 82, 107, 224, 53, 29, 114, 224, 54, 50, 77, 224, 54, 253, 84, 224, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 66, 69, 219, 96, 67, 99, 240, 224, 68, 37, 189, 96, 69, 67, 210, 224, 70, 5, 159, 96, 71, 35, 180, 224, 71, 238, 187, 224, 73, 3, 150, 224, 73, 206, 157, 224, 74, 227, 120, 224, 75, 174, 127, 224, 76, 204, 163, 112, 77, 142, 111, 240, 127, 255, 255, 255, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 8, 7, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 4, 0, 0, 46, 244, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 1, 8, 0, 0, 42, 48, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 16, 0, 0, 56, 64, 1, 8, 0, 0, 56, 64, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 50, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + + "zoneinfo/Europe/San_Marino": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 56, 248, 112, 155, 213, 204, 224, 156, 197, 203, 240, 157, 183, 0, 96, 158, 137, 254, 112, 159, 160, 28, 224, 160, 96, 165, 240, 161, 126, 173, 96, 162, 92, 55, 112, 163, 76, 26, 96, 200, 108, 53, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 130, 116, 224, 206, 162, 67, 16, 207, 146, 52, 16, 207, 227, 198, 224, 208, 110, 94, 144, 209, 114, 22, 16, 210, 76, 210, 240, 211, 62, 49, 144, 212, 73, 210, 16, 213, 29, 247, 112, 214, 41, 151, 240, 214, 235, 128, 144, 216, 9, 150, 16, 249, 51, 181, 240, 249, 217, 196, 224, 251, 28, 210, 112, 251, 185, 180, 240, 252, 252, 180, 112, 253, 153, 150, 240, 254, 229, 208, 240, 255, 130, 179, 112, 0, 197, 178, 240, 1, 98, 149, 112, 2, 156, 90, 112, 3, 66, 119, 112, 4, 133, 118, 240, 5, 43, 147, 240, 6, 110, 147, 112, 7, 11, 117, 240, 8, 69, 58, 240, 8, 235, 87, 240, 10, 46, 87, 112, 10, 203, 57, 240, 12, 14, 57, 112, 12, 171, 27, 240, 13, 228, 224, 240, 14, 138, 253, 240, 15, 205, 253, 112, 16, 116, 26, 112, 17, 173, 223, 112, 18, 83, 252, 112, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 1, 3, 4, 1, 3, 1, 2, 4, 3, 4, 3, 4, 3, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 11, 180, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 82, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Sarajevo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 161, 140, 16, 210, 78, 64, 144, 24, 69, 95, 112, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 1, 3, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Saratov": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 9, 0, 0, 0, 16, 128, 0, 0, 0, 161, 0, 57, 128, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 41, 212, 236, 96, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 88, 67, 78, 112, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 43, 50, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + + "zoneinfo/Europe/Simferopol": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 15, 0, 0, 0, 34, 128, 0, 0, 0, 170, 25, 164, 32, 181, 164, 25, 96, 203, 4, 141, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 207, 159, 56, 224, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 37, 158, 115, 80, 38, 141, 46, 240, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 45, 194, 198, 208, 46, 132, 133, 64, 47, 116, 132, 80, 48, 100, 103, 64, 49, 93, 160, 208, 50, 114, 166, 0, 50, 201, 126, 208, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 94, 128, 84, 76, 29, 96, 1, 2, 3, 6, 4, 5, 4, 5, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 3, 2, 10, 2, 10, 2, 10, 7, 3, 7, 3, 9, 8, 3, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 13, 8, 0, 0, 31, 248, 0, 0, 0, 0, 31, 224, 0, 4, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 12, 0, 0, 14, 16, 0, 16, 0, 0, 28, 32, 1, 20, 0, 0, 28, 32, 1, 20, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 12, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 8, 0, 0, 56, 64, 0, 12, 0, 0, 42, 48, 0, 12, 76, 77, 84, 0, 83, 77, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 10, 77, 83, 75, 45, 51, 10}, + + "zoneinfo/Europe/Skopje": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 161, 140, 16, 210, 78, 64, 144, 24, 69, 95, 112, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 1, 3, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Sofia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 10, 0, 0, 0, 22, 128, 0, 0, 0, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 114, 36, 32, 17, 99, 239, 80, 18, 85, 63, 224, 19, 77, 11, 208, 20, 53, 33, 224, 21, 44, 237, 208, 22, 19, 192, 112, 23, 12, 207, 208, 23, 243, 176, 128, 24, 227, 161, 128, 25, 211, 146, 128, 26, 195, 131, 128, 27, 188, 175, 0, 28, 172, 160, 0, 29, 156, 145, 0, 30, 140, 130, 0, 31, 124, 115, 0, 32, 108, 100, 0, 33, 92, 85, 0, 34, 76, 70, 0, 35, 60, 55, 0, 36, 44, 40, 0, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 127, 180, 224, 39, 245, 10, 96, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 114, 123, 208, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 2, 3, 2, 4, 1, 5, 1, 5, 1, 5, 1, 5, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 27, 104, 0, 0, 0, 0, 28, 32, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 8, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 4, 0, 0, 42, 48, 1, 17, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 4, 73, 77, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 69, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Europe/Stockholm": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 155, 30, 140, 96, 155, 213, 218, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 14, 30, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 83, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Tallinn": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 16, 0, 0, 0, 34, 128, 0, 0, 0, 158, 89, 45, 204, 158, 185, 144, 144, 159, 132, 151, 144, 161, 0, 43, 112, 164, 115, 111, 76, 200, 176, 181, 224, 202, 198, 151, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 116, 203, 224, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 114, 166, 0, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 6, 190, 80, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 1, 5, 6, 7, 3, 2, 3, 2, 6, 8, 6, 8, 6, 8, 6, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 15, 13, 14, 5, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 0, 0, 23, 52, 0, 0, 0, 0, 23, 52, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 0, 21, 0, 0, 28, 32, 1, 8, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 1, 29, 0, 0, 42, 48, 1, 29, 76, 77, 84, 0, 84, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Europe/Tirane": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 150, 170, 52, 104, 200, 109, 135, 112, 204, 231, 75, 16, 205, 169, 23, 144, 205, 184, 233, 144, 8, 40, 57, 240, 8, 239, 62, 96, 10, 5, 120, 240, 10, 208, 113, 224, 11, 233, 79, 112, 12, 180, 72, 96, 13, 210, 107, 240, 14, 148, 42, 96, 15, 176, 252, 112, 16, 116, 12, 96, 17, 144, 222, 112, 18, 83, 238, 96, 19, 112, 192, 112, 20, 59, 185, 96, 21, 72, 185, 112, 22, 19, 178, 96, 23, 49, 213, 240, 23, 252, 206, 224, 25, 0, 148, 112, 25, 219, 95, 96, 26, 204, 175, 240, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 18, 152, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Tiraspol": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 16, 0, 0, 0, 38, 128, 0, 0, 0, 158, 107, 159, 12, 183, 176, 210, 8, 185, 62, 243, 96, 185, 239, 156, 96, 186, 223, 141, 96, 187, 207, 126, 96, 188, 200, 169, 224, 189, 184, 154, 224, 190, 168, 139, 224, 191, 152, 124, 224, 192, 136, 109, 224, 193, 120, 94, 224, 194, 104, 79, 224, 195, 88, 64, 224, 196, 72, 49, 224, 197, 56, 34, 224, 198, 40, 19, 224, 199, 24, 4, 224, 200, 188, 147, 96, 202, 119, 125, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 78, 144, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 38, 67, 76, 224, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 96, 232, 96, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 114, 123, 208, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 78, 172, 147, 128, 79, 110, 96, 0, 80, 140, 117, 128, 81, 87, 124, 128, 82, 108, 87, 128, 83, 55, 94, 128, 84, 76, 57, 128, 85, 23, 64, 128, 86, 44, 27, 128, 86, 247, 34, 128, 88, 21, 56, 0, 88, 215, 4, 128, 89, 245, 26, 0, 90, 182, 230, 128, 91, 212, 252, 0, 92, 160, 3, 0, 93, 180, 222, 0, 94, 127, 229, 0, 95, 148, 192, 0, 96, 95, 199, 0, 97, 125, 220, 128, 98, 63, 169, 0, 99, 93, 190, 128, 100, 31, 139, 0, 101, 61, 160, 128, 102, 8, 167, 128, 103, 29, 130, 128, 103, 232, 137, 128, 104, 253, 100, 128, 105, 200, 107, 128, 106, 221, 70, 128, 107, 168, 77, 128, 108, 198, 99, 0, 109, 136, 47, 128, 110, 166, 69, 0, 111, 104, 17, 128, 112, 134, 39, 0, 113, 81, 46, 0, 114, 102, 9, 0, 115, 49, 16, 0, 116, 69, 235, 0, 117, 16, 242, 0, 118, 47, 7, 128, 118, 240, 212, 0, 120, 14, 233, 128, 120, 208, 182, 0, 121, 238, 203, 128, 122, 176, 152, 0, 123, 206, 173, 128, 124, 153, 180, 128, 125, 174, 143, 128, 126, 121, 150, 128, 127, 142, 113, 128, 1, 2, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 9, 7, 8, 7, 8, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 6, 4, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 27, 8, 0, 0, 0, 0, 26, 244, 0, 4, 0, 0, 24, 120, 0, 8, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 1, 12, 0, 0, 14, 16, 0, 21, 0, 0, 28, 32, 1, 25, 0, 0, 28, 32, 1, 25, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 0, 34, 0, 0, 42, 48, 0, 34, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 76, 77, 84, 0, 67, 77, 84, 0, 66, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Ulyanovsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 12, 0, 0, 0, 20, 128, 0, 0, 0, 161, 0, 57, 128, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 23, 128, 41, 120, 191, 128, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 86, 247, 20, 112, 127, 255, 255, 255, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 8, 9, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 45, 96, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 16, 0, 0, 56, 64, 1, 12, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 43, 48, 50, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + + "zoneinfo/Europe/Uzhgorod": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 13, 0, 0, 0, 30, 128, 0, 0, 0, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 128, 169, 96, 208, 161, 158, 224, 209, 229, 253, 240, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 37, 158, 115, 80, 38, 141, 46, 240, 39, 245, 66, 160, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 2, 3, 2, 4, 1, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 6, 1, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 20, 232, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 56, 64, 1, 13, 0, 0, 42, 48, 0, 17, 0, 0, 42, 48, 0, 17, 0, 0, 56, 64, 1, 13, 0, 0, 28, 32, 0, 21, 0, 0, 42, 48, 1, 25, 0, 0, 42, 48, 1, 25, 0, 0, 28, 32, 0, 21, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 69, 69, 84, 0, 69, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Europe/Vaduz": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 202, 23, 106, 0, 202, 226, 113, 0, 203, 247, 76, 0, 204, 194, 83, 0, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 6, 250, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 66, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Vatican": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 56, 248, 112, 155, 213, 204, 224, 156, 197, 203, 240, 157, 183, 0, 96, 158, 137, 254, 112, 159, 160, 28, 224, 160, 96, 165, 240, 161, 126, 173, 96, 162, 92, 55, 112, 163, 76, 26, 96, 200, 108, 53, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 130, 116, 224, 206, 162, 67, 16, 207, 146, 52, 16, 207, 227, 198, 224, 208, 110, 94, 144, 209, 114, 22, 16, 210, 76, 210, 240, 211, 62, 49, 144, 212, 73, 210, 16, 213, 29, 247, 112, 214, 41, 151, 240, 214, 235, 128, 144, 216, 9, 150, 16, 249, 51, 181, 240, 249, 217, 196, 224, 251, 28, 210, 112, 251, 185, 180, 240, 252, 252, 180, 112, 253, 153, 150, 240, 254, 229, 208, 240, 255, 130, 179, 112, 0, 197, 178, 240, 1, 98, 149, 112, 2, 156, 90, 112, 3, 66, 119, 112, 4, 133, 118, 240, 5, 43, 147, 240, 6, 110, 147, 112, 7, 11, 117, 240, 8, 69, 58, 240, 8, 235, 87, 240, 10, 46, 87, 112, 10, 203, 57, 240, 12, 14, 57, 112, 12, 171, 27, 240, 13, 228, 224, 240, 14, 138, 253, 240, 15, 205, 253, 112, 16, 116, 26, 112, 17, 173, 223, 112, 18, 83, 252, 112, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 1, 3, 4, 1, 3, 1, 2, 4, 3, 4, 3, 4, 3, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 11, 180, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 82, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Vienna": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 161, 242, 191, 112, 162, 112, 26, 16, 163, 68, 91, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 209, 127, 69, 16, 210, 219, 52, 240, 211, 99, 27, 144, 212, 73, 210, 16, 213, 57, 195, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 19, 77, 39, 240, 20, 51, 208, 96, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 2, 3, 4, 3, 4, 3, 4, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 15, 81, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Vilnius": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 18, 0, 0, 0, 38, 128, 0, 0, 0, 156, 79, 31, 80, 161, 133, 74, 152, 162, 241, 48, 240, 163, 102, 120, 96, 200, 172, 207, 112, 202, 89, 42, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 48, 61, 224, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 114, 166, 0, 51, 61, 173, 0, 52, 82, 136, 0, 52, 170, 192, 96, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 62, 18, 19, 96, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 4, 3, 5, 8, 6, 7, 6, 7, 5, 9, 5, 9, 5, 9, 5, 9, 10, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 4, 14, 15, 14, 16, 4, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 0, 0, 23, 188, 0, 0, 0, 0, 19, 176, 0, 4, 0, 0, 22, 104, 0, 8, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 0, 16, 0, 0, 42, 48, 0, 20, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 1, 24, 0, 0, 28, 32, 1, 24, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 0, 20, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 16, 0, 0, 28, 32, 1, 24, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 0, 16, 0, 0, 42, 48, 1, 33, 76, 77, 84, 0, 87, 77, 84, 0, 75, 77, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Europe/Volgograd": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 8, 0, 0, 0, 16, 128, 0, 0, 0, 161, 245, 70, 220, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 41, 212, 236, 96, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 127, 255, 255, 255, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 7, 0, 0, 41, 164, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 1, 8, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 52, 0, 43, 48, 53, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/Europe/Warsaw": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 11, 0, 0, 0, 26, 128, 0, 0, 0, 153, 168, 42, 208, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 160, 154, 182, 0, 161, 101, 189, 0, 166, 125, 124, 96, 200, 118, 222, 16, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 128, 169, 96, 208, 132, 186, 0, 209, 149, 146, 112, 210, 138, 187, 96, 211, 98, 255, 112, 212, 75, 35, 144, 213, 94, 173, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 2, 193, 144, 217, 233, 120, 16, 232, 84, 210, 0, 232, 241, 180, 128, 233, 225, 165, 128, 234, 209, 150, 128, 236, 20, 150, 0, 236, 186, 179, 0, 237, 170, 164, 0, 238, 154, 149, 0, 239, 212, 90, 0, 240, 122, 119, 0, 241, 180, 60, 0, 242, 90, 89, 0, 243, 148, 30, 0, 244, 58, 59, 0, 245, 125, 58, 128, 246, 26, 29, 0, 13, 42, 253, 112, 13, 164, 85, 128, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 10, 128, 19, 77, 54, 0, 20, 51, 236, 128, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 161, 128, 25, 211, 146, 128, 26, 195, 131, 128, 27, 188, 175, 0, 28, 172, 160, 0, 29, 156, 145, 0, 30, 140, 130, 0, 31, 124, 115, 0, 32, 108, 100, 0, 33, 92, 85, 0, 33, 218, 214, 240, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 4, 5, 4, 8, 6, 7, 3, 2, 5, 4, 5, 4, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 19, 176, 0, 0, 0, 0, 19, 176, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 87, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Zagreb": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 161, 140, 16, 210, 78, 64, 144, 24, 69, 95, 112, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 1, 3, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Europe/Zaporozhye": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 13, 0, 0, 0, 36, 128, 0, 0, 0, 170, 25, 163, 48, 181, 164, 25, 96, 202, 170, 231, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 206, 189, 214, 112, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 6, 4, 5, 4, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 10, 2, 10, 2, 10, 2, 10, 2, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 32, 248, 0, 0, 0, 0, 32, 208, 0, 4, 0, 0, 28, 32, 0, 10, 0, 0, 42, 48, 0, 14, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 22, 0, 0, 28, 32, 1, 22, 0, 0, 56, 64, 1, 27, 0, 0, 42, 48, 0, 14, 0, 0, 56, 64, 1, 27, 0, 0, 42, 48, 1, 31, 0, 0, 42, 48, 1, 31, 0, 0, 28, 32, 0, 10, 76, 77, 84, 0, 43, 48, 50, 50, 48, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + + "zoneinfo/Europe/Zurich": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 202, 23, 106, 0, 202, 226, 113, 0, 203, 247, 76, 0, 204, 194, 83, 0, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 6, 250, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 66, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Factory": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 4, 128, 0, 0, 0, 127, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 45, 48, 48, 0, 0, 0, 10, 60, 45, 48, 48, 62, 48, 10}, + + "zoneinfo/GB": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/GB-Eire": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/GMT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/GMT+0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/GMT-0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/GMT0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Greenwich": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/HST": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 115, 96, 0, 0, 72, 83, 84, 0, 0, 0, 10, 72, 83, 84, 49, 48, 10}, + + "zoneinfo/Hongkong": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 5, 0, 0, 0, 17, 128, 0, 0, 0, 133, 105, 90, 246, 201, 234, 87, 184, 202, 218, 58, 168, 203, 75, 120, 128, 210, 76, 98, 112, 211, 106, 183, 56, 212, 147, 74, 168, 213, 66, 176, 56, 214, 154, 185, 168, 215, 62, 65, 184, 216, 46, 36, 168, 216, 249, 57, 184, 218, 14, 6, 168, 218, 217, 27, 184, 219, 237, 232, 168, 220, 184, 253, 184, 221, 205, 202, 168, 222, 162, 26, 56, 223, 172, 91, 40, 224, 129, 252, 56, 225, 150, 201, 40, 226, 79, 105, 56, 227, 118, 171, 40, 228, 47, 75, 56, 229, 95, 199, 168, 230, 15, 45, 56, 231, 63, 169, 168, 231, 248, 73, 184, 233, 31, 139, 168, 233, 216, 43, 184, 234, 255, 109, 168, 235, 184, 13, 184, 236, 223, 79, 168, 237, 151, 239, 184, 238, 200, 108, 40, 239, 119, 209, 184, 240, 168, 78, 40, 241, 87, 179, 184, 242, 136, 48, 40, 243, 64, 208, 56, 244, 104, 18, 40, 245, 32, 178, 56, 246, 71, 244, 40, 247, 37, 126, 56, 248, 21, 97, 40, 249, 5, 96, 56, 249, 245, 67, 40, 250, 229, 66, 56, 251, 222, 95, 168, 252, 206, 94, 184, 253, 190, 65, 168, 254, 174, 64, 184, 255, 158, 35, 168, 0, 142, 34, 184, 1, 126, 5, 168, 2, 110, 4, 184, 3, 93, 231, 168, 4, 77, 230, 184, 5, 71, 4, 40, 6, 55, 3, 56, 7, 38, 230, 40, 7, 131, 61, 56, 9, 6, 200, 40, 9, 246, 199, 56, 10, 230, 170, 40, 11, 214, 169, 56, 12, 198, 140, 40, 17, 155, 57, 56, 18, 111, 108, 168, 0, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 107, 10, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 0, 0, 126, 144, 0, 13, 0, 0, 112, 128, 0, 9, 76, 77, 84, 0, 72, 75, 83, 84, 0, 72, 75, 84, 0, 74, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 72, 75, 84, 45, 56, 10}, + + "zoneinfo/Iceland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 139, 96, 131, 160, 156, 145, 30, 0, 157, 209, 136, 144, 158, 114, 81, 128, 159, 213, 3, 16, 160, 83, 133, 0, 161, 182, 54, 144, 164, 60, 39, 128, 164, 185, 116, 16, 198, 77, 26, 0, 199, 61, 39, 32, 199, 218, 23, 176, 201, 38, 67, 160, 201, 195, 38, 32, 203, 6, 37, 160, 203, 172, 66, 160, 204, 220, 205, 32, 205, 140, 36, 160, 206, 188, 175, 32, 207, 108, 6, 160, 208, 156, 145, 32, 209, 75, 232, 160, 210, 133, 173, 160, 211, 43, 202, 160, 212, 101, 143, 160, 213, 57, 209, 32, 214, 69, 113, 160, 215, 25, 179, 32, 216, 37, 83, 160, 216, 249, 149, 32, 218, 14, 112, 32, 218, 217, 119, 32, 219, 229, 23, 160, 220, 185, 89, 32, 221, 206, 52, 32, 222, 162, 117, 160, 223, 174, 22, 32, 224, 130, 87, 160, 225, 141, 248, 32, 226, 98, 57, 160, 227, 109, 218, 32, 228, 66, 27, 160, 229, 77, 188, 32, 230, 33, 253, 160, 231, 54, 216, 160, 232, 11, 26, 32, 233, 22, 186, 160, 233, 234, 252, 32, 234, 246, 156, 160, 235, 202, 222, 32, 236, 214, 126, 160, 237, 170, 192, 32, 238, 182, 96, 160, 239, 138, 162, 32, 240, 150, 66, 160, 241, 106, 132, 32, 242, 127, 95, 32, 243, 83, 160, 160, 244, 95, 65, 32, 245, 51, 130, 160, 246, 63, 35, 32, 247, 19, 100, 160, 248, 31, 5, 32, 248, 243, 70, 160, 249, 254, 231, 32, 250, 211, 40, 160, 251, 232, 3, 160, 252, 188, 69, 32, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 255, 255, 235, 96, 0, 0, 0, 0, 0, 0, 1, 4, 255, 255, 241, 240, 0, 8, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 12, 76, 77, 84, 0, 43, 48, 48, 0, 45, 48, 49, 0, 71, 77, 84, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + + "zoneinfo/Indian/Antananarivo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 0, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + + "zoneinfo/Indian/Chagos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 137, 126, 247, 156, 48, 230, 221, 176, 127, 255, 255, 255, 0, 1, 2, 2, 0, 0, 67, 228, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 84, 96, 0, 8, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + + "zoneinfo/Indian/Christmas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 99, 28, 0, 0, 0, 0, 98, 112, 0, 4, 76, 77, 84, 0, 43, 48, 55, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + + "zoneinfo/Indian/Cocos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 10, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 90, 220, 0, 0, 0, 0, 91, 104, 0, 4, 76, 77, 84, 0, 43, 48, 54, 51, 48, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 51, 48, 62, 45, 54, 58, 51, 48, 10}, + + "zoneinfo/Indian/Comoro": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 0, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + + "zoneinfo/Indian/Kerguelen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 218, 97, 98, 128, 127, 255, 255, 255, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 70, 80, 0, 4, 45, 48, 48, 0, 43, 48, 53, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Indian/Mahe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 136, 100, 230, 132, 127, 255, 255, 255, 0, 1, 1, 0, 0, 51, 252, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + + "zoneinfo/Indian/Maldives": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 237, 47, 195, 152, 127, 255, 255, 255, 1, 2, 2, 0, 0, 68, 232, 0, 0, 0, 0, 68, 232, 0, 4, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 53, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + + "zoneinfo/Indian/Mauritius": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 137, 127, 5, 152, 24, 5, 237, 64, 24, 219, 114, 48, 73, 3, 150, 224, 73, 206, 143, 208, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 2, 0, 0, 53, 232, 0, 0, 0, 0, 70, 80, 1, 4, 0, 0, 56, 64, 0, 8, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + + "zoneinfo/Indian/Mayotte": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 0, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + + "zoneinfo/Indian/Reunion": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 145, 204, 57, 128, 127, 255, 255, 255, 0, 1, 1, 0, 0, 52, 0, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + + "zoneinfo/Iran": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 154, 108, 125, 200, 210, 219, 18, 200, 14, 187, 162, 72, 15, 116, 45, 64, 16, 142, 64, 48, 16, 237, 58, 64, 17, 85, 103, 200, 18, 69, 74, 184, 19, 55, 236, 200, 20, 45, 21, 184, 40, 32, 118, 200, 40, 219, 157, 184, 41, 203, 156, 200, 42, 190, 34, 184, 43, 172, 208, 72, 44, 159, 86, 56, 45, 142, 3, 200, 46, 128, 137, 184, 47, 111, 55, 72, 48, 97, 189, 56, 49, 80, 106, 200, 50, 66, 240, 184, 51, 50, 239, 200, 52, 37, 117, 184, 53, 20, 35, 72, 54, 6, 169, 56, 54, 245, 86, 200, 55, 231, 220, 184, 56, 214, 138, 72, 57, 201, 16, 56, 58, 185, 15, 72, 59, 171, 149, 56, 60, 154, 66, 200, 61, 140, 200, 184, 62, 123, 118, 72, 63, 109, 252, 56, 64, 92, 169, 200, 65, 79, 47, 184, 66, 63, 46, 200, 67, 49, 180, 184, 71, 226, 201, 72, 72, 213, 79, 56, 73, 197, 78, 72, 74, 183, 212, 56, 75, 166, 129, 200, 76, 153, 7, 184, 77, 135, 181, 72, 78, 122, 59, 56, 79, 104, 232, 200, 80, 91, 110, 184, 81, 75, 109, 200, 82, 61, 243, 184, 83, 44, 161, 72, 84, 31, 39, 56, 85, 13, 212, 200, 86, 0, 90, 184, 86, 239, 8, 72, 87, 225, 142, 56, 88, 209, 141, 72, 89, 196, 19, 56, 90, 178, 192, 200, 91, 165, 70, 184, 92, 147, 244, 72, 93, 134, 122, 56, 94, 117, 39, 200, 95, 103, 173, 184, 96, 87, 172, 200, 97, 74, 50, 184, 98, 56, 224, 72, 99, 43, 102, 56, 100, 26, 19, 200, 101, 12, 153, 184, 101, 251, 71, 72, 102, 237, 205, 56, 103, 221, 204, 72, 104, 208, 82, 56, 105, 190, 255, 200, 106, 177, 133, 184, 107, 160, 51, 72, 108, 146, 185, 56, 109, 129, 102, 200, 110, 115, 236, 184, 111, 98, 154, 72, 112, 85, 32, 56, 113, 69, 31, 72, 114, 55, 165, 56, 115, 38, 82, 200, 116, 24, 216, 184, 117, 7, 134, 72, 117, 250, 12, 56, 118, 232, 185, 200, 119, 219, 63, 184, 120, 203, 62, 200, 121, 189, 196, 184, 122, 172, 114, 72, 123, 158, 248, 56, 124, 141, 165, 200, 125, 128, 43, 184, 126, 110, 217, 72, 127, 97, 95, 56, 127, 255, 255, 255, 0, 1, 2, 4, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 2, 0, 0, 48, 56, 0, 0, 0, 0, 48, 56, 0, 4, 0, 0, 49, 56, 0, 8, 0, 0, 70, 80, 1, 14, 0, 0, 56, 64, 0, 18, 0, 0, 63, 72, 1, 22, 0, 0, 49, 56, 0, 8, 76, 77, 84, 0, 84, 77, 84, 0, 43, 48, 51, 51, 48, 0, 43, 48, 53, 0, 43, 48, 52, 0, 43, 48, 52, 51, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 51, 48, 62, 45, 51, 58, 51, 48, 60, 43, 48, 52, 51, 48, 62, 44, 74, 56, 48, 47, 48, 44, 74, 50, 54, 52, 47, 48, 10}, + + "zoneinfo/Israel": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 158, 48, 69, 136, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 215, 90, 20, 96, 215, 223, 31, 192, 216, 47, 181, 112, 217, 30, 70, 224, 218, 16, 232, 240, 218, 235, 179, 224, 219, 180, 52, 0, 220, 185, 32, 224, 221, 224, 141, 0, 222, 180, 206, 128, 223, 164, 191, 128, 224, 139, 118, 0, 225, 86, 125, 0, 226, 190, 74, 96, 227, 54, 52, 208, 228, 156, 247, 0, 229, 22, 22, 208, 230, 116, 211, 224, 231, 17, 210, 128, 232, 39, 255, 0, 232, 232, 79, 208, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 49, 72, 150, 224, 50, 60, 110, 80, 51, 49, 179, 96, 52, 26, 254, 208, 53, 17, 149, 96, 53, 241, 166, 80, 55, 4, 8, 128, 55, 207, 1, 112, 56, 246, 95, 128, 57, 220, 249, 224, 58, 208, 237, 112, 59, 174, 91, 96, 60, 163, 160, 112, 61, 160, 178, 96, 62, 131, 130, 112, 63, 124, 159, 224, 64, 115, 54, 112, 65, 80, 164, 96, 66, 76, 143, 0, 67, 72, 79, 112, 68, 44, 113, 0, 69, 30, 246, 240, 70, 12, 83, 0, 70, 236, 99, 240, 71, 236, 53, 0, 72, 231, 245, 112, 73, 204, 23, 0, 74, 190, 156, 240, 75, 171, 249, 0, 76, 140, 9, 240, 77, 149, 21, 128, 78, 135, 155, 112, 79, 116, 247, 128, 80, 94, 66, 240, 81, 84, 217, 128, 82, 108, 73, 112, 83, 52, 187, 128, 84, 76, 43, 112, 85, 20, 157, 128, 86, 44, 13, 112, 86, 244, 127, 128, 88, 21, 41, 240, 88, 212, 97, 128, 89, 245, 11, 240, 90, 180, 67, 128, 91, 212, 237, 240, 92, 157, 96, 0, 93, 180, 207, 240, 94, 125, 66, 0, 95, 148, 177, 240, 96, 93, 36, 0, 97, 125, 206, 112, 98, 61, 6, 0, 99, 93, 176, 112, 100, 28, 232, 0, 101, 61, 146, 112, 102, 6, 4, 128, 103, 29, 116, 112, 103, 229, 230, 128, 104, 253, 86, 112, 105, 197, 200, 128, 106, 221, 56, 112, 107, 165, 170, 128, 108, 198, 84, 240, 109, 133, 140, 128, 110, 166, 54, 240, 111, 101, 110, 128, 112, 134, 24, 240, 113, 78, 139, 0, 114, 101, 250, 240, 115, 46, 109, 0, 116, 69, 220, 240, 117, 14, 79, 0, 118, 46, 249, 112, 118, 238, 49, 0, 120, 14, 219, 112, 120, 206, 19, 0, 121, 238, 189, 112, 122, 173, 245, 0, 123, 206, 159, 112, 124, 151, 17, 128, 125, 174, 129, 112, 126, 118, 243, 128, 127, 142, 99, 112, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 33, 6, 0, 0, 0, 0, 32, 248, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 56, 64, 1, 16, 0, 0, 42, 48, 1, 8, 76, 77, 84, 0, 74, 77, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 73, 68, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 73, 83, 84, 45, 50, 73, 68, 84, 44, 77, 51, 46, 52, 46, 52, 47, 50, 54, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Jamaica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 147, 15, 180, 255, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 184, 1, 0, 0, 255, 255, 184, 1, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 76, 77, 84, 0, 75, 77, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 10}, + + "zoneinfo/Japan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 215, 62, 30, 144, 215, 236, 22, 128, 216, 249, 22, 144, 217, 203, 248, 128, 219, 7, 29, 16, 219, 171, 218, 128, 220, 230, 255, 16, 221, 139, 188, 128, 3, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 131, 3, 0, 0, 0, 0, 140, 160, 1, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 8, 76, 77, 84, 0, 74, 68, 84, 0, 74, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 74, 83, 84, 45, 57, 10}, + + "zoneinfo/Kwajalein": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 255, 134, 27, 80, 44, 116, 188, 192, 127, 255, 255, 255, 1, 2, 3, 3, 0, 0, 156, 224, 0, 0, 0, 0, 154, 176, 0, 4, 255, 255, 87, 64, 0, 8, 0, 0, 168, 192, 0, 12, 76, 77, 84, 0, 43, 49, 49, 0, 45, 49, 50, 0, 43, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + + "zoneinfo/Libya": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 4, 0, 0, 0, 17, 128, 0, 0, 0, 161, 242, 193, 36, 221, 187, 177, 16, 222, 35, 173, 96, 225, 120, 210, 16, 225, 231, 101, 224, 229, 47, 63, 112, 229, 169, 204, 224, 235, 78, 198, 240, 22, 146, 66, 96, 23, 8, 247, 112, 23, 250, 43, 224, 24, 234, 42, 240, 25, 219, 95, 96, 26, 204, 175, 240, 27, 189, 228, 96, 28, 180, 122, 240, 29, 159, 23, 224, 30, 147, 11, 112, 31, 130, 238, 96, 32, 112, 74, 112, 33, 97, 126, 224, 34, 82, 207, 112, 35, 68, 3, 224, 36, 52, 2, 240, 37, 37, 55, 96, 38, 64, 183, 240, 50, 78, 241, 96, 51, 68, 54, 112, 52, 53, 106, 224, 80, 157, 153, 0, 81, 84, 217, 128, 82, 105, 180, 128, 0, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 3, 2, 1, 3, 0, 0, 12, 92, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 10}, + + "zoneinfo/MET": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 4, 0, 0, 0, 9, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 78, 64, 144, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 28, 32, 1, 0, 0, 0, 14, 16, 0, 5, 0, 0, 28, 32, 1, 0, 0, 0, 14, 16, 0, 5, 77, 69, 83, 84, 0, 77, 69, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 10, 77, 69, 84, 45, 49, 77, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/MST": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 157, 144, 0, 0, 77, 83, 84, 0, 0, 0, 10, 77, 83, 84, 55, 10}, + + "zoneinfo/MST7MDT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 4, 0, 0, 0, 16, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 0, 1, 0, 1, 2, 3, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 255, 255, 171, 160, 1, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 1, 8, 255, 255, 171, 160, 1, 12, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Mexico/BajaNorte": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 165, 182, 246, 128, 169, 121, 79, 112, 175, 242, 124, 240, 182, 102, 100, 112, 183, 27, 16, 0, 184, 10, 242, 240, 203, 234, 141, 128, 210, 35, 244, 112, 210, 153, 186, 112, 215, 27, 89, 0, 216, 145, 180, 240, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 70, 15, 130, 160, 71, 36, 79, 144, 71, 248, 159, 32, 73, 4, 49, 144, 73, 216, 129, 32, 74, 228, 19, 144, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 0, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Mexico/BajaSur": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 203, 234, 113, 96, 216, 145, 180, 240, 0, 0, 112, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 184, 85, 16, 76, 205, 34, 0, 77, 152, 55, 16, 78, 173, 4, 0, 79, 120, 25, 16, 80, 140, 230, 0, 81, 97, 53, 144, 82, 108, 200, 0, 83, 65, 23, 144, 84, 76, 170, 0, 85, 32, 249, 144, 86, 44, 140, 0, 87, 0, 219, 144, 88, 21, 168, 128, 88, 224, 189, 144, 89, 245, 138, 128, 90, 192, 159, 144, 91, 213, 108, 128, 92, 169, 188, 16, 93, 181, 78, 128, 94, 137, 158, 16, 95, 149, 48, 128, 96, 105, 128, 16, 97, 126, 77, 0, 98, 73, 98, 16, 99, 94, 47, 0, 100, 41, 68, 16, 101, 62, 17, 0, 102, 18, 96, 144, 103, 29, 243, 0, 103, 242, 66, 144, 104, 253, 213, 0, 105, 210, 36, 144, 106, 221, 183, 0, 107, 178, 6, 144, 108, 198, 211, 128, 109, 145, 232, 144, 110, 166, 181, 128, 111, 113, 202, 144, 112, 134, 151, 128, 113, 90, 231, 16, 114, 102, 121, 128, 115, 58, 201, 16, 116, 70, 91, 128, 117, 26, 171, 16, 118, 47, 120, 0, 118, 250, 141, 16, 120, 15, 90, 0, 120, 218, 111, 16, 121, 239, 60, 0, 122, 186, 81, 16, 123, 207, 30, 0, 124, 163, 109, 144, 125, 175, 0, 0, 126, 131, 79, 144, 127, 142, 226, 0, 0, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 156, 60, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Mexico/General": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 197, 222, 176, 96, 198, 151, 52, 80, 201, 85, 241, 224, 201, 234, 221, 80, 207, 2, 198, 224, 207, 183, 86, 80, 218, 153, 21, 224, 219, 118, 131, 208, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 0, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 163, 12, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 67, 87, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/NZ": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 128, 0, 0, 0, 176, 180, 178, 232, 177, 81, 135, 88, 178, 120, 229, 104, 179, 67, 229, 96, 180, 88, 199, 104, 181, 35, 199, 96, 182, 56, 169, 104, 183, 3, 169, 96, 184, 24, 139, 104, 184, 236, 197, 224, 185, 248, 109, 104, 186, 204, 167, 224, 187, 216, 79, 104, 188, 227, 232, 224, 189, 174, 246, 232, 190, 195, 202, 224, 191, 142, 216, 232, 192, 163, 172, 224, 193, 110, 186, 232, 194, 131, 142, 224, 195, 78, 156, 232, 196, 99, 112, 224, 197, 46, 126, 232, 198, 76, 141, 96, 199, 14, 96, 232, 200, 44, 111, 96, 200, 247, 125, 104, 210, 218, 154, 64, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 78, 90, 83, 84, 45, 49, 50, 78, 90, 68, 84, 44, 77, 57, 46, 53, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/NZ-CHAT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 5, 0, 0, 0, 22, 128, 0, 0, 0, 210, 218, 150, 188, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 0, 0, 171, 252, 0, 0, 0, 0, 172, 68, 0, 4, 0, 0, 193, 92, 1, 10, 0, 0, 179, 76, 0, 16, 0, 0, 179, 76, 0, 16, 76, 77, 84, 0, 43, 49, 50, 49, 53, 0, 43, 49, 51, 52, 53, 0, 43, 49, 50, 52, 53, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 52, 53, 62, 45, 49, 50, 58, 52, 53, 60, 43, 49, 51, 52, 53, 62, 44, 77, 57, 46, 53, 46, 48, 47, 50, 58, 52, 53, 44, 77, 52, 46, 49, 46, 48, 47, 51, 58, 52, 53, 10}, + + "zoneinfo/Navajo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 162, 101, 254, 144, 163, 132, 6, 0, 164, 69, 224, 144, 164, 143, 166, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 118, 144, 248, 40, 148, 0, 249, 15, 88, 144, 250, 8, 118, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/PRC": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 92, 1, 128, 200, 250, 39, 112, 201, 213, 14, 128, 202, 219, 90, 240, 30, 186, 54, 0, 31, 105, 127, 112, 32, 126, 104, 128, 33, 73, 97, 112, 34, 94, 74, 128, 35, 41, 67, 112, 36, 71, 103, 0, 37, 18, 95, 240, 38, 39, 73, 0, 38, 242, 65, 240, 40, 7, 43, 0, 40, 210, 35, 240, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + + "zoneinfo/PST8PDT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 4, 0, 0, 0, 16, 158, 166, 72, 160, 159, 187, 21, 144, 160, 134, 42, 160, 161, 154, 247, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 0, 1, 0, 1, 2, 3, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 255, 255, 157, 144, 1, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/Pacific/Apia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 7, 0, 0, 0, 26, 128, 0, 0, 0, 145, 5, 252, 0, 218, 98, 4, 56, 76, 159, 39, 176, 77, 151, 43, 224, 78, 125, 226, 96, 78, 253, 139, 160, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 0, 0, 176, 128, 0, 0, 255, 255, 95, 0, 0, 0, 255, 255, 94, 72, 0, 4, 255, 255, 115, 96, 1, 10, 255, 255, 101, 80, 0, 14, 0, 0, 182, 208, 0, 18, 0, 0, 196, 224, 1, 22, 76, 77, 84, 0, 45, 49, 49, 51, 48, 0, 45, 49, 48, 0, 45, 49, 49, 0, 43, 49, 51, 0, 43, 49, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 60, 43, 49, 52, 62, 44, 77, 57, 46, 53, 46, 48, 47, 51, 44, 77, 52, 46, 49, 46, 48, 47, 52, 10}, + + "zoneinfo/Pacific/Auckland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 128, 0, 0, 0, 176, 180, 178, 232, 177, 81, 135, 88, 178, 120, 229, 104, 179, 67, 229, 96, 180, 88, 199, 104, 181, 35, 199, 96, 182, 56, 169, 104, 183, 3, 169, 96, 184, 24, 139, 104, 184, 236, 197, 224, 185, 248, 109, 104, 186, 204, 167, 224, 187, 216, 79, 104, 188, 227, 232, 224, 189, 174, 246, 232, 190, 195, 202, 224, 191, 142, 216, 232, 192, 163, 172, 224, 193, 110, 186, 232, 194, 131, 142, 224, 195, 78, 156, 232, 196, 99, 112, 224, 197, 46, 126, 232, 198, 76, 141, 96, 199, 14, 96, 232, 200, 44, 111, 96, 200, 247, 125, 104, 210, 218, 154, 64, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 78, 90, 83, 84, 45, 49, 50, 78, 90, 68, 84, 44, 77, 57, 46, 53, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + + "zoneinfo/Pacific/Bougainville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 17, 128, 0, 0, 0, 204, 67, 54, 96, 210, 43, 108, 240, 84, 158, 215, 128, 127, 255, 255, 255, 1, 2, 1, 3, 3, 0, 0, 137, 240, 0, 0, 0, 0, 140, 160, 0, 5, 0, 0, 126, 144, 0, 9, 0, 0, 154, 176, 0, 13, 80, 77, 77, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Pacific/Chatham": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 5, 0, 0, 0, 22, 128, 0, 0, 0, 210, 218, 150, 188, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 0, 0, 171, 252, 0, 0, 0, 0, 172, 68, 0, 4, 0, 0, 193, 92, 1, 10, 0, 0, 179, 76, 0, 16, 0, 0, 179, 76, 0, 16, 76, 77, 84, 0, 43, 49, 50, 49, 53, 0, 43, 49, 51, 52, 53, 0, 43, 49, 50, 52, 53, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 52, 53, 62, 45, 49, 50, 58, 52, 53, 60, 43, 49, 51, 52, 53, 62, 44, 77, 57, 46, 53, 46, 48, 47, 50, 58, 52, 53, 44, 77, 52, 46, 49, 46, 48, 47, 51, 58, 52, 53, 10}, + + "zoneinfo/Pacific/Chuuk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 142, 76, 0, 0, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + + "zoneinfo/Pacific/Easter": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 185, 199, 64, 136, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 89, 23, 200, 48, 89, 143, 206, 192, 90, 247, 170, 48, 91, 111, 176, 192, 92, 215, 140, 48, 93, 79, 146, 192, 94, 183, 110, 48, 95, 47, 116, 192, 96, 151, 80, 48, 97, 24, 145, 64, 98, 128, 108, 176, 98, 248, 115, 64, 100, 96, 78, 176, 100, 216, 85, 64, 102, 64, 48, 176, 102, 184, 55, 64, 104, 32, 18, 176, 104, 152, 25, 64, 105, 255, 244, 176, 106, 119, 251, 64, 107, 223, 214, 176, 108, 97, 23, 192, 109, 200, 243, 48, 110, 64, 249, 192, 111, 168, 213, 48, 112, 32, 219, 192, 113, 136, 183, 48, 114, 0, 189, 192, 115, 104, 153, 48, 115, 224, 159, 192, 117, 72, 123, 48, 117, 201, 188, 64, 119, 49, 151, 176, 119, 169, 158, 64, 121, 17, 121, 176, 121, 137, 128, 64, 122, 241, 91, 176, 123, 105, 98, 64, 124, 209, 61, 176, 125, 73, 68, 64, 126, 177, 31, 176, 127, 41, 38, 64, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 255, 255, 153, 120, 0, 0, 255, 255, 153, 120, 0, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 157, 144, 0, 12, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 69, 77, 84, 0, 45, 48, 54, 0, 45, 48, 55, 0, 45, 48, 53, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 10, 60, 45, 48, 54, 62, 54, 60, 45, 48, 53, 62, 44, 77, 56, 46, 50, 46, 54, 47, 50, 50, 44, 77, 53, 46, 50, 46, 54, 47, 50, 50, 10}, + + "zoneinfo/Pacific/Efate": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 146, 245, 194, 180, 25, 210, 247, 208, 26, 194, 218, 192, 27, 218, 102, 208, 28, 162, 188, 192, 29, 155, 246, 80, 30, 130, 158, 192, 31, 123, 216, 80, 32, 107, 187, 64, 33, 91, 186, 80, 34, 75, 157, 64, 35, 59, 156, 80, 36, 43, 127, 64, 37, 27, 126, 80, 38, 11, 97, 64, 38, 251, 96, 80, 39, 235, 67, 64, 40, 228, 124, 208, 41, 129, 81, 64, 42, 233, 72, 208, 43, 97, 51, 64, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 0, 0, 157, 204, 0, 0, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 8, 76, 77, 84, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Pacific/Enderbury": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 18, 86, 4, 192, 47, 6, 139, 48, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 95, 156, 0, 0, 255, 255, 87, 64, 0, 4, 255, 255, 101, 80, 0, 8, 0, 0, 182, 208, 0, 12, 76, 77, 84, 0, 45, 49, 50, 0, 45, 49, 49, 0, 43, 49, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 10}, + + "zoneinfo/Pacific/Fakaofo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 78, 253, 153, 176, 127, 255, 255, 255, 1, 2, 2, 255, 255, 95, 120, 0, 0, 255, 255, 101, 80, 0, 4, 0, 0, 182, 208, 0, 8, 76, 77, 84, 0, 45, 49, 49, 0, 43, 49, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 10}, + + "zoneinfo/Pacific/Fiji": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 154, 19, 177, 192, 54, 59, 23, 224, 54, 215, 250, 96, 56, 36, 52, 96, 56, 183, 220, 96, 75, 17, 44, 224, 75, 174, 15, 96, 76, 194, 234, 96, 77, 114, 65, 224, 78, 162, 204, 96, 79, 26, 196, 224, 80, 130, 174, 96, 80, 250, 166, 224, 82, 107, 202, 224, 82, 218, 122, 208, 84, 84, 231, 96, 84, 186, 106, 224, 86, 52, 201, 96, 86, 154, 76, 224, 88, 29, 229, 224, 88, 122, 46, 224, 89, 253, 199, 224, 90, 90, 16, 224, 91, 221, 169, 224, 92, 67, 45, 96, 93, 189, 139, 224, 94, 35, 15, 96, 95, 157, 109, 224, 96, 2, 241, 96, 97, 134, 138, 96, 97, 226, 211, 96, 99, 102, 108, 96, 99, 194, 181, 96, 101, 70, 78, 96, 101, 162, 151, 96, 103, 38, 48, 96, 103, 139, 179, 224, 105, 6, 18, 96, 105, 107, 149, 224, 106, 229, 244, 96, 107, 75, 119, 224, 108, 207, 16, 224, 109, 43, 89, 224, 110, 174, 242, 224, 111, 11, 59, 224, 112, 142, 212, 224, 112, 244, 88, 96, 114, 110, 182, 224, 114, 212, 58, 96, 116, 78, 152, 224, 116, 180, 28, 96, 118, 55, 181, 96, 118, 147, 254, 96, 120, 23, 151, 96, 120, 115, 224, 96, 121, 247, 121, 96, 122, 83, 194, 96, 123, 215, 91, 96, 124, 60, 222, 224, 125, 183, 61, 96, 126, 28, 192, 224, 127, 151, 31, 96, 127, 252, 162, 224, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 0, 0, 167, 192, 0, 0, 0, 0, 182, 208, 1, 4, 0, 0, 168, 192, 0, 8, 76, 77, 84, 0, 43, 49, 51, 0, 43, 49, 50, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 60, 43, 49, 51, 62, 44, 77, 49, 49, 46, 49, 46, 48, 44, 77, 49, 46, 50, 46, 49, 47, 49, 52, 55, 10}, + + "zoneinfo/Pacific/Funafuti": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 168, 4, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + + "zoneinfo/Pacific/Galapagos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 182, 164, 76, 128, 30, 24, 196, 80, 43, 23, 10, 224, 43, 113, 244, 80, 127, 255, 255, 255, 0, 1, 3, 2, 3, 3, 255, 255, 172, 0, 0, 0, 255, 255, 185, 176, 0, 4, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 45, 48, 53, 0, 45, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 54, 62, 54, 10}, + + "zoneinfo/Pacific/Gambier": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 148, 80, 72, 4, 127, 255, 255, 255, 0, 1, 1, 255, 255, 129, 124, 0, 0, 255, 255, 129, 112, 0, 4, 76, 77, 84, 0, 45, 48, 57, 0, 0, 0, 0, 0, 10, 60, 45, 48, 57, 62, 57, 10}, + + "zoneinfo/Pacific/Guadalcanal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 148, 79, 51, 140, 127, 255, 255, 255, 0, 1, 1, 0, 0, 149, 244, 0, 0, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Pacific/Guam": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 13, 128, 0, 0, 0, 58, 67, 94, 96, 1, 2, 0, 0, 135, 180, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 140, 160, 0, 8, 76, 77, 84, 0, 71, 83, 84, 0, 67, 104, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 104, 83, 84, 45, 49, 48, 10}, + + "zoneinfo/Pacific/Honolulu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 187, 5, 67, 72, 187, 33, 113, 88, 203, 137, 61, 200, 210, 97, 73, 56, 213, 141, 115, 72, 1, 2, 1, 2, 1, 3, 255, 255, 108, 2, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 122, 104, 1, 8, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 72, 83, 84, 49, 48, 10}, + + "zoneinfo/Pacific/Johnston": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 187, 5, 67, 72, 187, 33, 113, 88, 203, 137, 61, 200, 210, 97, 73, 56, 213, 141, 115, 72, 1, 2, 1, 2, 1, 3, 255, 255, 108, 2, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 122, 104, 1, 8, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 72, 83, 84, 49, 48, 10}, + + "zoneinfo/Pacific/Kiritimati": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 18, 85, 242, 0, 47, 6, 125, 32, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 108, 128, 0, 0, 255, 255, 106, 0, 0, 4, 255, 255, 115, 96, 0, 10, 0, 0, 196, 224, 0, 14, 76, 77, 84, 0, 45, 49, 48, 52, 48, 0, 45, 49, 48, 0, 43, 49, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 52, 62, 45, 49, 52, 10}, + + "zoneinfo/Pacific/Kosrae": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 255, 134, 27, 80, 54, 139, 103, 64, 127, 255, 255, 255, 1, 2, 1, 1, 0, 0, 152, 204, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 168, 192, 0, 8, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 43, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Pacific/Kwajalein": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 255, 134, 27, 80, 44, 116, 188, 192, 127, 255, 255, 255, 1, 2, 3, 3, 0, 0, 156, 224, 0, 0, 0, 0, 154, 176, 0, 4, 255, 255, 87, 64, 0, 8, 0, 0, 168, 192, 0, 12, 76, 77, 84, 0, 43, 49, 49, 0, 45, 49, 50, 0, 43, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + + "zoneinfo/Pacific/Majuro": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 255, 134, 27, 80, 127, 255, 255, 255, 1, 2, 2, 0, 0, 160, 128, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 168, 192, 0, 8, 76, 77, 84, 0, 43, 49, 49, 0, 43, 49, 50, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + + "zoneinfo/Pacific/Marquesas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 10, 128, 0, 0, 0, 148, 80, 76, 72, 127, 255, 255, 255, 0, 1, 1, 255, 255, 125, 56, 0, 0, 255, 255, 122, 104, 0, 4, 76, 77, 84, 0, 45, 48, 57, 51, 48, 0, 0, 0, 0, 0, 10, 60, 45, 48, 57, 51, 48, 62, 57, 58, 51, 48, 10}, + + "zoneinfo/Pacific/Midway": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 128, 0, 0, 0, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 83, 83, 84, 49, 49, 10}, + + "zoneinfo/Pacific/Nauru": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 163, 231, 43, 4, 203, 180, 191, 72, 208, 66, 80, 112, 17, 139, 4, 200, 127, 255, 255, 255, 0, 1, 2, 1, 3, 3, 0, 0, 156, 124, 0, 0, 0, 0, 161, 184, 0, 4, 0, 0, 126, 144, 0, 10, 0, 0, 168, 192, 0, 14, 76, 77, 84, 0, 43, 49, 49, 51, 48, 0, 43, 48, 57, 0, 43, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + + "zoneinfo/Pacific/Niue": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 20, 128, 0, 0, 0, 220, 67, 53, 96, 16, 116, 202, 56, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 96, 180, 0, 0, 255, 255, 96, 160, 0, 4, 255, 255, 94, 72, 0, 10, 255, 255, 101, 80, 0, 16, 76, 77, 84, 0, 45, 49, 49, 50, 48, 0, 45, 49, 49, 51, 48, 0, 45, 49, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 49, 49, 62, 49, 49, 10}, + + "zoneinfo/Pacific/Norfolk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 26, 128, 0, 0, 0, 220, 65, 248, 128, 9, 15, 202, 104, 9, 181, 217, 88, 86, 15, 230, 104, 127, 255, 255, 255, 1, 2, 3, 2, 4, 4, 0, 0, 157, 120, 0, 0, 0, 0, 157, 128, 0, 4, 0, 0, 161, 184, 0, 10, 0, 0, 175, 200, 1, 16, 0, 0, 154, 176, 0, 22, 76, 77, 84, 0, 43, 49, 49, 49, 50, 0, 43, 49, 49, 51, 48, 0, 43, 49, 50, 51, 48, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Pacific/Noumea": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 5, 0, 0, 0, 12, 128, 0, 0, 0, 146, 245, 196, 116, 14, 230, 186, 80, 15, 86, 187, 192, 16, 198, 156, 80, 17, 55, 239, 64, 50, 160, 75, 240, 51, 24, 68, 112, 127, 255, 255, 255, 0, 2, 1, 2, 1, 2, 3, 4, 4, 0, 0, 156, 12, 0, 0, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 8, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 8, 76, 77, 84, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Pacific/Pago_Pago": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 128, 0, 0, 0, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 83, 83, 84, 49, 49, 10}, + + "zoneinfo/Pacific/Palau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 126, 20, 0, 0, 0, 0, 126, 144, 0, 4, 76, 77, 84, 0, 43, 48, 57, 0, 0, 0, 0, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, + + "zoneinfo/Pacific/Pitcairn": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 53, 68, 66, 8, 127, 255, 255, 255, 1, 2, 2, 255, 255, 134, 12, 0, 0, 255, 255, 136, 120, 0, 4, 255, 255, 143, 128, 0, 10, 76, 77, 84, 0, 45, 48, 56, 51, 48, 0, 45, 48, 56, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 56, 62, 56, 10}, + + "zoneinfo/Pacific/Pohnpei": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 148, 84, 0, 0, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Pacific/Ponape": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 148, 84, 0, 0, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + + "zoneinfo/Pacific/Port_Moresby": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 9, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 137, 240, 0, 0, 0, 0, 140, 160, 0, 5, 80, 77, 77, 84, 0, 43, 49, 48, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + + "zoneinfo/Pacific/Rarotonga": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 4, 0, 0, 0, 20, 128, 0, 0, 0, 16, 172, 27, 40, 17, 63, 181, 24, 18, 121, 129, 32, 19, 31, 151, 24, 20, 89, 99, 32, 20, 255, 121, 24, 22, 57, 69, 32, 22, 232, 149, 152, 24, 34, 97, 160, 24, 200, 119, 152, 26, 2, 67, 160, 26, 168, 89, 152, 27, 226, 37, 160, 28, 136, 59, 152, 29, 194, 7, 160, 30, 104, 29, 152, 31, 161, 233, 160, 32, 71, 255, 152, 33, 129, 203, 160, 34, 49, 28, 24, 35, 106, 232, 32, 36, 16, 254, 24, 37, 74, 202, 32, 37, 240, 224, 24, 39, 42, 172, 32, 39, 208, 194, 24, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 255, 255, 106, 56, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 115, 96, 0, 10, 255, 255, 122, 104, 1, 14, 76, 77, 84, 0, 45, 49, 48, 51, 48, 0, 45, 49, 48, 0, 45, 48, 57, 51, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 49, 48, 62, 49, 48, 10}, + + "zoneinfo/Pacific/Saipan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 13, 128, 0, 0, 0, 58, 67, 94, 96, 1, 2, 0, 0, 135, 180, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 140, 160, 0, 8, 76, 77, 84, 0, 71, 83, 84, 0, 67, 104, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 104, 83, 84, 45, 49, 48, 10}, + + "zoneinfo/Pacific/Samoa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 128, 0, 0, 0, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 83, 83, 84, 49, 49, 10}, + + "zoneinfo/Pacific/Tahiti": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 148, 80, 85, 184, 127, 255, 255, 255, 0, 1, 1, 255, 255, 115, 200, 0, 0, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 45, 49, 48, 0, 0, 0, 0, 0, 10, 60, 45, 49, 48, 62, 49, 48, 10}, + + "zoneinfo/Pacific/Tarawa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 162, 52, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + + "zoneinfo/Pacific/Tongatapu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 6, 0, 0, 0, 18, 128, 0, 0, 0, 201, 115, 66, 144, 55, 251, 71, 208, 56, 211, 125, 208, 58, 4, 8, 80, 58, 114, 184, 64, 59, 227, 234, 80, 60, 82, 154, 64, 88, 29, 215, 208, 88, 122, 32, 208, 127, 255, 255, 255, 1, 2, 3, 4, 5, 2, 5, 2, 5, 2, 2, 0, 0, 173, 72, 0, 0, 0, 0, 173, 112, 0, 4, 0, 0, 182, 208, 0, 10, 0, 0, 196, 224, 1, 14, 0, 0, 182, 208, 0, 10, 0, 0, 196, 224, 1, 14, 76, 77, 84, 0, 43, 49, 50, 50, 48, 0, 43, 49, 51, 0, 43, 49, 52, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 10}, + + "zoneinfo/Pacific/Truk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 142, 76, 0, 0, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + + "zoneinfo/Pacific/Wake": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 156, 52, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + + "zoneinfo/Pacific/Wallis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 172, 88, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + + "zoneinfo/Pacific/Yap": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 142, 76, 0, 0, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + + "zoneinfo/Poland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 11, 0, 0, 0, 26, 128, 0, 0, 0, 153, 168, 42, 208, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 160, 154, 182, 0, 161, 101, 189, 0, 166, 125, 124, 96, 200, 118, 222, 16, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 128, 169, 96, 208, 132, 186, 0, 209, 149, 146, 112, 210, 138, 187, 96, 211, 98, 255, 112, 212, 75, 35, 144, 213, 94, 173, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 2, 193, 144, 217, 233, 120, 16, 232, 84, 210, 0, 232, 241, 180, 128, 233, 225, 165, 128, 234, 209, 150, 128, 236, 20, 150, 0, 236, 186, 179, 0, 237, 170, 164, 0, 238, 154, 149, 0, 239, 212, 90, 0, 240, 122, 119, 0, 241, 180, 60, 0, 242, 90, 89, 0, 243, 148, 30, 0, 244, 58, 59, 0, 245, 125, 58, 128, 246, 26, 29, 0, 13, 42, 253, 112, 13, 164, 85, 128, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 10, 128, 19, 77, 54, 0, 20, 51, 236, 128, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 161, 128, 25, 211, 146, 128, 26, 195, 131, 128, 27, 188, 175, 0, 28, 172, 160, 0, 29, 156, 145, 0, 30, 140, 130, 0, 31, 124, 115, 0, 32, 108, 100, 0, 33, 92, 85, 0, 33, 218, 214, 240, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 4, 5, 4, 8, 6, 7, 3, 2, 5, 4, 5, 4, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 19, 176, 0, 0, 0, 0, 19, 176, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 87, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + + "zoneinfo/Portugal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 11, 0, 0, 0, 27, 128, 0, 0, 0, 146, 230, 151, 29, 155, 75, 109, 112, 155, 254, 199, 128, 156, 156, 237, 112, 157, 201, 131, 112, 158, 127, 114, 112, 159, 170, 182, 240, 160, 95, 84, 112, 161, 139, 234, 112, 162, 65, 217, 112, 163, 110, 111, 112, 164, 35, 12, 240, 165, 79, 162, 240, 170, 5, 239, 112, 170, 244, 142, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 34, 112, 179, 114, 136, 112, 180, 80, 4, 112, 183, 50, 76, 112, 184, 15, 200, 112, 184, 255, 185, 112, 185, 239, 170, 112, 188, 200, 183, 240, 189, 184, 168, 240, 190, 159, 95, 112, 191, 152, 138, 240, 192, 154, 240, 240, 193, 120, 108, 240, 194, 104, 93, 240, 195, 88, 78, 240, 196, 63, 5, 112, 197, 56, 48, 240, 198, 58, 150, 240, 199, 88, 172, 112, 199, 217, 223, 112, 201, 1, 47, 112, 201, 241, 32, 112, 202, 226, 98, 240, 203, 181, 82, 240, 203, 236, 163, 224, 204, 128, 75, 224, 204, 220, 162, 240, 205, 149, 52, 240, 205, 195, 75, 96, 206, 114, 162, 224, 206, 197, 191, 112, 207, 117, 22, 240, 207, 172, 103, 224, 208, 82, 132, 224, 208, 165, 161, 112, 209, 84, 248, 240, 209, 140, 73, 224, 210, 50, 102, 224, 210, 133, 131, 112, 211, 89, 196, 240, 212, 73, 181, 240, 213, 57, 209, 32, 214, 41, 194, 32, 215, 25, 179, 32, 216, 9, 164, 32, 216, 249, 149, 32, 217, 233, 134, 32, 220, 185, 89, 32, 221, 178, 132, 160, 222, 162, 117, 160, 223, 146, 102, 160, 224, 130, 87, 160, 225, 114, 72, 160, 226, 98, 57, 160, 227, 82, 42, 160, 228, 66, 27, 160, 229, 50, 12, 160, 230, 33, 253, 160, 231, 27, 41, 32, 232, 11, 26, 32, 232, 251, 11, 32, 233, 234, 252, 32, 234, 218, 237, 32, 235, 202, 222, 32, 236, 186, 207, 32, 237, 170, 192, 32, 238, 154, 177, 32, 239, 138, 162, 32, 240, 122, 147, 32, 241, 106, 132, 32, 242, 99, 175, 160, 243, 83, 160, 160, 244, 67, 145, 160, 245, 51, 130, 160, 246, 35, 115, 160, 247, 19, 100, 160, 248, 3, 85, 160, 248, 243, 70, 160, 12, 171, 42, 0, 13, 155, 27, 0, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 24, 144, 19, 67, 251, 128, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 189, 160, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 7, 8, 7, 8, 7, 8, 7, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 255, 255, 247, 99, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 13, 0, 0, 14, 16, 0, 18, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 76, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/ROC": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 195, 85, 73, 128, 210, 84, 89, 128, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 231, 153, 240, 218, 255, 38, 0, 219, 200, 205, 112, 220, 224, 89, 128, 221, 170, 0, 240, 222, 114, 115, 0, 223, 181, 100, 112, 224, 124, 133, 0, 225, 150, 151, 240, 226, 93, 184, 128, 227, 119, 203, 112, 228, 62, 236, 0, 229, 48, 32, 112, 230, 33, 113, 0, 231, 18, 165, 112, 232, 2, 164, 128, 232, 243, 216, 240, 233, 227, 216, 0, 234, 213, 12, 112, 235, 197, 11, 128, 236, 182, 63, 240, 237, 247, 252, 0, 238, 152, 196, 240, 239, 217, 47, 128, 240, 121, 248, 112, 7, 252, 86, 0, 8, 237, 138, 112, 9, 221, 137, 128, 10, 206, 189, 240, 17, 219, 161, 128, 18, 84, 221, 112, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 0, 0, 113, 232, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 76, 77, 84, 0, 67, 83, 84, 0, 74, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + + "zoneinfo/ROK": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 139, 215, 240, 120, 146, 230, 22, 248, 210, 67, 39, 240, 226, 79, 41, 240, 228, 107, 183, 248, 229, 19, 24, 104, 230, 98, 3, 120, 231, 17, 76, 232, 232, 47, 112, 120, 232, 231, 244, 104, 234, 15, 82, 120, 234, 199, 214, 104, 235, 239, 52, 120, 236, 167, 184, 104, 237, 207, 22, 120, 238, 135, 154, 104, 240, 53, 113, 120, 32, 163, 96, 144, 33, 110, 103, 144, 34, 131, 66, 144, 35, 78, 73, 144, 0, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 3, 5, 3, 5, 3, 0, 0, 119, 8, 0, 0, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 4, 0, 0, 133, 152, 1, 12, 0, 0, 140, 160, 1, 12, 76, 77, 84, 0, 75, 83, 84, 0, 74, 83, 84, 0, 75, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 75, 83, 84, 45, 57, 10}, + + "zoneinfo/Singapore": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 32, 128, 0, 0, 0, 134, 131, 133, 163, 186, 103, 78, 144, 192, 10, 228, 96, 202, 179, 229, 96, 203, 145, 95, 8, 210, 72, 109, 240, 22, 145, 245, 8, 127, 255, 255, 255, 1, 2, 3, 4, 5, 6, 5, 7, 7, 0, 0, 97, 93, 0, 0, 0, 0, 97, 93, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 103, 32, 1, 12, 0, 0, 103, 32, 0, 12, 0, 0, 105, 120, 0, 18, 0, 0, 126, 144, 0, 24, 0, 0, 112, 128, 0, 28, 76, 77, 84, 0, 83, 77, 84, 0, 43, 48, 55, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + + "zoneinfo/Turkey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 11, 0, 0, 0, 25, 128, 0, 0, 0, 144, 139, 245, 152, 155, 12, 23, 96, 155, 213, 190, 208, 162, 101, 99, 224, 163, 123, 130, 80, 164, 78, 128, 96, 165, 63, 180, 208, 166, 37, 39, 224, 167, 39, 127, 208, 170, 40, 40, 96, 170, 225, 253, 208, 171, 249, 137, 224, 172, 195, 49, 80, 200, 127, 238, 96, 200, 255, 193, 208, 201, 74, 245, 96, 202, 206, 128, 80, 203, 203, 174, 96, 204, 229, 193, 80, 209, 113, 235, 224, 210, 107, 9, 80, 211, 162, 57, 96, 212, 67, 2, 80, 213, 76, 13, 224, 214, 41, 123, 208, 215, 43, 239, 224, 216, 9, 93, 208, 217, 2, 151, 96, 217, 233, 63, 208, 218, 239, 168, 96, 219, 210, 92, 80, 220, 212, 208, 96, 221, 179, 143, 208, 241, 244, 185, 96, 242, 100, 186, 208, 245, 104, 6, 96, 246, 31, 56, 208, 0, 160, 186, 224, 1, 107, 179, 208, 2, 128, 156, 224, 3, 75, 149, 208, 4, 105, 185, 96, 5, 52, 178, 80, 6, 110, 147, 112, 7, 57, 168, 128, 7, 251, 117, 0, 9, 25, 166, 160, 9, 219, 58, 224, 10, 240, 7, 208, 12, 16, 206, 96, 12, 217, 36, 80, 13, 164, 57, 96, 14, 166, 145, 80, 15, 132, 27, 96, 16, 134, 115, 80, 18, 103, 152, 192, 19, 77, 54, 0, 20, 71, 122, 192, 21, 35, 221, 128, 22, 39, 92, 192, 23, 3, 191, 128, 24, 7, 62, 192, 25, 137, 148, 80, 25, 220, 148, 192, 28, 198, 211, 208, 29, 155, 21, 80, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 139, 131, 240, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 69, 152, 50, 224, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 143, 221, 144, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 56, 190, 16, 84, 76, 71, 144, 85, 23, 78, 144, 86, 62, 158, 144, 86, 247, 48, 144, 87, 207, 46, 80, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 3, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 5, 5, 0, 0, 27, 40, 0, 0, 0, 0, 27, 104, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 73, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + + "zoneinfo/UCT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 67, 84, 0, 0, 0, 10, 85, 67, 84, 48, 10}, + + "zoneinfo/US/Alaska": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 40, 128, 0, 0, 0, 203, 137, 54, 192, 210, 35, 244, 112, 210, 97, 66, 48, 250, 210, 71, 160, 254, 184, 99, 64, 255, 168, 70, 48, 0, 152, 69, 64, 1, 136, 40, 48, 2, 120, 39, 64, 3, 113, 68, 176, 4, 97, 67, 192, 5, 81, 38, 176, 6, 65, 37, 192, 7, 49, 8, 176, 7, 141, 95, 192, 9, 16, 234, 176, 9, 173, 219, 64, 10, 240, 204, 176, 11, 224, 203, 192, 12, 217, 233, 48, 13, 192, 173, 192, 14, 185, 203, 48, 15, 169, 202, 64, 16, 153, 173, 48, 17, 137, 172, 64, 18, 121, 143, 48, 19, 105, 142, 64, 20, 89, 113, 48, 21, 73, 112, 64, 22, 57, 83, 48, 23, 41, 82, 64, 24, 34, 111, 176, 25, 9, 52, 64, 26, 2, 81, 176, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 255, 255, 115, 120, 0, 0, 255, 255, 115, 96, 0, 4, 255, 255, 129, 112, 1, 8, 255, 255, 129, 112, 1, 12, 255, 255, 115, 96, 0, 16, 255, 255, 129, 112, 1, 21, 255, 255, 129, 112, 0, 26, 255, 255, 143, 128, 1, 30, 255, 255, 129, 112, 0, 35, 76, 77, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 65, 72, 83, 84, 0, 65, 72, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/US/Aleutian": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 33, 128, 0, 0, 0, 203, 137, 68, 208, 210, 35, 244, 112, 210, 97, 80, 64, 250, 210, 85, 176, 254, 184, 113, 80, 255, 168, 84, 64, 0, 152, 83, 80, 1, 136, 54, 64, 2, 120, 53, 80, 3, 113, 82, 192, 4, 97, 81, 208, 5, 81, 52, 192, 6, 65, 51, 208, 7, 49, 22, 192, 7, 141, 109, 208, 9, 16, 248, 192, 9, 173, 233, 80, 10, 240, 218, 192, 11, 224, 217, 208, 12, 217, 247, 64, 13, 192, 187, 208, 14, 185, 217, 64, 15, 169, 216, 80, 16, 153, 187, 64, 17, 137, 186, 80, 18, 121, 157, 64, 19, 105, 156, 80, 20, 89, 127, 64, 21, 73, 126, 80, 22, 57, 97, 64, 23, 41, 96, 80, 24, 34, 125, 192, 25, 9, 66, 80, 26, 2, 95, 192, 26, 43, 34, 32, 26, 242, 80, 192, 27, 226, 51, 176, 28, 210, 50, 192, 29, 194, 21, 176, 30, 178, 20, 192, 31, 161, 247, 176, 32, 118, 71, 64, 33, 129, 217, 176, 34, 86, 41, 64, 35, 106, 246, 48, 36, 54, 11, 64, 37, 74, 216, 48, 38, 21, 237, 64, 39, 42, 186, 48, 39, 255, 9, 192, 41, 10, 156, 48, 41, 222, 235, 192, 42, 234, 126, 48, 43, 190, 205, 192, 44, 211, 154, 176, 45, 158, 175, 192, 46, 179, 124, 176, 47, 126, 145, 192, 48, 147, 94, 176, 49, 103, 174, 64, 50, 115, 64, 176, 51, 71, 144, 64, 52, 83, 34, 176, 53, 39, 114, 64, 54, 51, 4, 176, 55, 7, 84, 64, 56, 28, 33, 48, 56, 231, 54, 64, 57, 252, 3, 48, 58, 199, 24, 64, 59, 219, 229, 48, 60, 176, 52, 192, 61, 187, 199, 48, 62, 144, 22, 192, 63, 155, 169, 48, 64, 111, 248, 192, 65, 132, 197, 176, 66, 79, 218, 192, 67, 100, 167, 176, 68, 47, 188, 192, 69, 68, 137, 176, 69, 243, 239, 64, 71, 45, 166, 48, 71, 211, 209, 64, 73, 13, 136, 48, 73, 179, 179, 64, 74, 237, 106, 48, 75, 156, 207, 192, 76, 214, 134, 176, 77, 124, 177, 192, 78, 182, 104, 176, 79, 92, 147, 192, 80, 150, 74, 176, 81, 60, 117, 192, 82, 118, 44, 176, 83, 28, 87, 192, 84, 86, 14, 176, 84, 252, 57, 192, 86, 53, 240, 176, 86, 229, 86, 64, 88, 31, 13, 48, 88, 197, 56, 64, 89, 254, 239, 48, 90, 165, 26, 64, 91, 222, 209, 48, 92, 132, 252, 64, 93, 190, 179, 48, 94, 100, 222, 64, 95, 158, 149, 48, 96, 77, 250, 192, 97, 135, 177, 176, 98, 45, 220, 192, 99, 103, 147, 176, 100, 13, 190, 192, 101, 71, 117, 176, 101, 237, 160, 192, 103, 39, 87, 176, 103, 205, 130, 192, 105, 7, 57, 176, 105, 173, 100, 192, 106, 231, 27, 176, 107, 150, 129, 64, 108, 208, 56, 48, 109, 118, 99, 64, 110, 176, 26, 48, 111, 86, 69, 64, 112, 143, 252, 48, 113, 54, 39, 64, 114, 111, 222, 48, 115, 22, 9, 64, 116, 79, 192, 48, 116, 255, 37, 192, 118, 56, 220, 176, 118, 223, 7, 192, 120, 24, 190, 176, 120, 190, 233, 192, 121, 248, 160, 176, 122, 158, 203, 192, 123, 216, 130, 176, 124, 126, 173, 192, 125, 184, 100, 176, 126, 94, 143, 192, 127, 152, 70, 176, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 255, 255, 90, 98, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 115, 96, 0, 24, 255, 255, 129, 112, 1, 29, 255, 255, 115, 96, 0, 25, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 65, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 72, 83, 84, 49, 48, 72, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/US/Arizona": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 207, 23, 223, 28, 207, 143, 229, 172, 208, 129, 26, 28, 250, 248, 117, 16, 251, 232, 88, 0, 2, 1, 2, 1, 2, 3, 2, 3, 2, 1, 2, 255, 255, 150, 238, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 10}, + + "zoneinfo/US/Central": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 162, 203, 116, 0, 163, 131, 247, 240, 164, 69, 210, 128, 165, 99, 217, 240, 166, 83, 217, 0, 167, 21, 151, 112, 168, 51, 187, 0, 168, 254, 179, 240, 170, 19, 157, 0, 170, 222, 149, 240, 171, 243, 127, 0, 172, 190, 119, 240, 173, 211, 97, 0, 174, 158, 89, 240, 175, 179, 67, 0, 176, 126, 59, 240, 177, 156, 95, 128, 178, 103, 88, 112, 179, 124, 65, 128, 180, 71, 58, 112, 181, 92, 35, 128, 182, 39, 28, 112, 183, 60, 5, 128, 184, 6, 254, 112, 185, 27, 231, 128, 185, 230, 224, 112, 187, 5, 4, 0, 187, 198, 194, 112, 188, 228, 230, 0, 189, 175, 222, 240, 190, 196, 200, 0, 191, 143, 192, 240, 192, 90, 214, 0, 193, 176, 60, 112, 194, 132, 140, 0, 195, 79, 132, 240, 196, 100, 110, 0, 197, 47, 102, 240, 198, 77, 138, 128, 199, 15, 72, 240, 200, 45, 108, 128, 200, 248, 101, 112, 202, 13, 78, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 233, 23, 0, 240, 234, 7, 0, 0, 234, 246, 226, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 246, 63, 105, 112, 247, 47, 104, 128, 248, 40, 133, 240, 249, 15, 74, 128, 250, 8, 103, 240, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 212, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/US/East-Indiana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 202, 87, 34, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 232, 242, 22, 240, 234, 7, 0, 0, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/US/Eastern": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 30, 112, 159, 186, 235, 96, 160, 134, 0, 112, 161, 154, 205, 96, 162, 101, 226, 112, 163, 131, 233, 224, 164, 106, 174, 112, 165, 53, 167, 96, 166, 83, 202, 240, 167, 21, 137, 96, 168, 51, 172, 240, 168, 254, 165, 224, 170, 19, 142, 240, 170, 222, 135, 224, 171, 243, 112, 240, 172, 190, 105, 224, 173, 211, 82, 240, 174, 158, 75, 224, 175, 179, 52, 240, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 27, 217, 112, 185, 230, 210, 96, 187, 4, 245, 240, 187, 198, 180, 96, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 200, 248, 87, 96, 202, 13, 64, 112, 202, 216, 57, 96, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 198, 240, 214, 32, 191, 224, 215, 53, 168, 240, 216, 0, 161, 224, 217, 21, 138, 240, 217, 224, 131, 224, 218, 254, 167, 112, 219, 192, 101, 224, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 87, 46, 224, 230, 71, 45, 240, 231, 55, 16, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 186, 158, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/US/Hawaii": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 187, 5, 67, 72, 187, 33, 113, 88, 203, 137, 61, 200, 210, 97, 73, 56, 213, 141, 115, 72, 1, 2, 1, 2, 1, 3, 255, 255, 108, 2, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 122, 104, 1, 8, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 72, 83, 84, 49, 48, 10}, + + "zoneinfo/US/Indiana-Starke": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 244, 95, 135, 112, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 202, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/US/Michigan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 133, 189, 34, 91, 153, 60, 148, 0, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 215, 53, 168, 240, 216, 0, 161, 224, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 0, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 178, 37, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 255, 255, 199, 192, 1, 20, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/US/Mountain": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 162, 101, 254, 144, 163, 132, 6, 0, 164, 69, 224, 144, 164, 143, 166, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 118, 144, 248, 40, 148, 0, 249, 15, 88, 144, 250, 8, 118, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/US/Pacific": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 72, 160, 159, 187, 21, 144, 160, 134, 42, 160, 161, 154, 247, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 214, 254, 116, 92, 216, 128, 173, 144, 218, 254, 195, 144, 219, 192, 144, 16, 220, 222, 165, 144, 221, 169, 172, 144, 222, 190, 135, 144, 223, 137, 142, 144, 224, 158, 105, 144, 225, 105, 112, 144, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 239, 175, 238, 144, 240, 113, 187, 16, 241, 143, 208, 144, 242, 127, 193, 144, 243, 111, 178, 144, 244, 95, 163, 144, 245, 79, 148, 144, 246, 63, 133, 144, 247, 47, 118, 144, 248, 40, 162, 16, 249, 15, 88, 144, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 145, 38, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + + "zoneinfo/US/Samoa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 128, 0, 0, 0, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 83, 83, 84, 49, 49, 10}, + + "zoneinfo/UTC": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 0, 0, 10, 85, 84, 67, 48, 10}, + + "zoneinfo/Universal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 0, 0, 10, 85, 84, 67, 48, 10}, + + "zoneinfo/W-SU": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 17, 0, 0, 0, 38, 128, 0, 0, 0, 155, 95, 30, 199, 157, 62, 242, 121, 158, 42, 238, 249, 158, 247, 57, 105, 159, 132, 87, 249, 160, 216, 108, 233, 161, 0, 57, 128, 161, 60, 166, 64, 164, 16, 109, 192, 164, 61, 50, 176, 165, 21, 104, 176, 165, 61, 3, 192, 167, 30, 69, 80, 181, 164, 25, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 23, 128, 41, 120, 191, 128, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 1, 3, 2, 3, 4, 2, 4, 5, 6, 7, 8, 7, 6, 9, 6, 7, 6, 7, 6, 7, 6, 7, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 14, 10, 0, 0, 35, 57, 0, 0, 0, 0, 35, 57, 0, 4, 0, 0, 49, 135, 1, 8, 0, 0, 35, 119, 0, 4, 0, 0, 63, 151, 1, 12, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 70, 80, 1, 25, 0, 0, 28, 32, 0, 29, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 29, 0, 0, 56, 64, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 77, 77, 84, 0, 77, 83, 84, 0, 77, 68, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 43, 48, 53, 0, 69, 69, 84, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 75, 45, 51, 10}, + + "zoneinfo/WET": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 2, 0, 0, 0, 9, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 14, 16, 1, 0, 0, 0, 0, 0, 0, 5, 87, 69, 83, 84, 0, 87, 69, 84, 0, 1, 1, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + + "zoneinfo/Zulu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 0, 0, 10, 85, 84, 67, 48, 10}, +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses/json_parser.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses/json_parser.go new file mode 100644 index 000000000..8ed3e9fa5 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses/json_parser.go @@ -0,0 +1,327 @@ +package responses + +import ( + "encoding/json" + "io" + "math" + "strconv" + "strings" + "sync" + "unsafe" + + "github.com/json-iterator/go" +) + +const maxUint = ^uint(0) +const maxInt = int(maxUint >> 1) +const minInt = -maxInt - 1 + +var jsonParser jsoniter.API +var initJson = &sync.Once{} + +func initJsonParserOnce() { + initJson.Do(func() { + registerBetterFuzzyDecoder() + jsonParser = jsoniter.ConfigCompatibleWithStandardLibrary + }) +} + +func registerBetterFuzzyDecoder() { + jsoniter.RegisterTypeDecoder("string", &nullableFuzzyStringDecoder{}) + jsoniter.RegisterTypeDecoder("bool", &fuzzyBoolDecoder{}) + jsoniter.RegisterTypeDecoder("float32", &nullableFuzzyFloat32Decoder{}) + jsoniter.RegisterTypeDecoder("float64", &nullableFuzzyFloat64Decoder{}) + jsoniter.RegisterTypeDecoder("int", &nullableFuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(maxInt) || val < float64(minInt) { + iter.ReportError("fuzzy decode int", "exceed range") + return + } + *((*int)(ptr)) = int(val) + } else { + *((*int)(ptr)) = iter.ReadInt() + } + }}) + jsoniter.RegisterTypeDecoder("uint", &nullableFuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(maxUint) || val < 0 { + iter.ReportError("fuzzy decode uint", "exceed range") + return + } + *((*uint)(ptr)) = uint(val) + } else { + *((*uint)(ptr)) = iter.ReadUint() + } + }}) + jsoniter.RegisterTypeDecoder("int8", &nullableFuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxInt8) || val < float64(math.MinInt8) { + iter.ReportError("fuzzy decode int8", "exceed range") + return + } + *((*int8)(ptr)) = int8(val) + } else { + *((*int8)(ptr)) = iter.ReadInt8() + } + }}) + jsoniter.RegisterTypeDecoder("uint8", &nullableFuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxUint8) || val < 0 { + iter.ReportError("fuzzy decode uint8", "exceed range") + return + } + *((*uint8)(ptr)) = uint8(val) + } else { + *((*uint8)(ptr)) = iter.ReadUint8() + } + }}) + jsoniter.RegisterTypeDecoder("int16", &nullableFuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxInt16) || val < float64(math.MinInt16) { + iter.ReportError("fuzzy decode int16", "exceed range") + return + } + *((*int16)(ptr)) = int16(val) + } else { + *((*int16)(ptr)) = iter.ReadInt16() + } + }}) + jsoniter.RegisterTypeDecoder("uint16", &nullableFuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxUint16) || val < 0 { + iter.ReportError("fuzzy decode uint16", "exceed range") + return + } + *((*uint16)(ptr)) = uint16(val) + } else { + *((*uint16)(ptr)) = iter.ReadUint16() + } + }}) + jsoniter.RegisterTypeDecoder("int32", &nullableFuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxInt32) || val < float64(math.MinInt32) { + iter.ReportError("fuzzy decode int32", "exceed range") + return + } + *((*int32)(ptr)) = int32(val) + } else { + *((*int32)(ptr)) = iter.ReadInt32() + } + }}) + jsoniter.RegisterTypeDecoder("uint32", &nullableFuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxUint32) || val < 0 { + iter.ReportError("fuzzy decode uint32", "exceed range") + return + } + *((*uint32)(ptr)) = uint32(val) + } else { + *((*uint32)(ptr)) = iter.ReadUint32() + } + }}) + jsoniter.RegisterTypeDecoder("int64", &nullableFuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxInt64) || val < float64(math.MinInt64) { + iter.ReportError("fuzzy decode int64", "exceed range") + return + } + *((*int64)(ptr)) = int64(val) + } else { + *((*int64)(ptr)) = iter.ReadInt64() + } + }}) + jsoniter.RegisterTypeDecoder("uint64", &nullableFuzzyIntegerDecoder{func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) { + if isFloat { + val := iter.ReadFloat64() + if val > float64(math.MaxUint64) || val < 0 { + iter.ReportError("fuzzy decode uint64", "exceed range") + return + } + *((*uint64)(ptr)) = uint64(val) + } else { + *((*uint64)(ptr)) = iter.ReadUint64() + } + }}) +} + +type nullableFuzzyStringDecoder struct { +} + +func (decoder *nullableFuzzyStringDecoder) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) { + valueType := iter.WhatIsNext() + switch valueType { + case jsoniter.NumberValue: + var number json.Number + iter.ReadVal(&number) + *((*string)(ptr)) = string(number) + case jsoniter.StringValue: + *((*string)(ptr)) = iter.ReadString() + case jsoniter.BoolValue: + *((*string)(ptr)) = strconv.FormatBool(iter.ReadBool()) + case jsoniter.NilValue: + iter.ReadNil() + *((*string)(ptr)) = "" + default: + iter.ReportError("fuzzyStringDecoder", "not number or string or bool") + } +} + +type fuzzyBoolDecoder struct { +} + +func (decoder *fuzzyBoolDecoder) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) { + valueType := iter.WhatIsNext() + switch valueType { + case jsoniter.BoolValue: + *((*bool)(ptr)) = iter.ReadBool() + case jsoniter.NumberValue: + var number json.Number + iter.ReadVal(&number) + num, err := number.Int64() + if err != nil { + iter.ReportError("fuzzyBoolDecoder", "get value from json.number failed") + } + if num == 0 { + *((*bool)(ptr)) = false + } else { + *((*bool)(ptr)) = true + } + case jsoniter.StringValue: + strValue := strings.ToLower(iter.ReadString()) + if strValue == "true" { + *((*bool)(ptr)) = true + } else if strValue == "false" || strValue == "" { + *((*bool)(ptr)) = false + } else { + iter.ReportError("fuzzyBoolDecoder", "unsupported bool value: "+strValue) + } + case jsoniter.NilValue: + iter.ReadNil() + *((*bool)(ptr)) = false + default: + iter.ReportError("fuzzyBoolDecoder", "not number or string or nil") + } +} + +type nullableFuzzyIntegerDecoder struct { + fun func(isFloat bool, ptr unsafe.Pointer, iter *jsoniter.Iterator) +} + +func (decoder *nullableFuzzyIntegerDecoder) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) { + valueType := iter.WhatIsNext() + var str string + switch valueType { + case jsoniter.NumberValue: + var number json.Number + iter.ReadVal(&number) + str = string(number) + case jsoniter.StringValue: + str = iter.ReadString() + // support empty string + if str == "" { + str = "0" + } + case jsoniter.BoolValue: + if iter.ReadBool() { + str = "1" + } else { + str = "0" + } + case jsoniter.NilValue: + iter.ReadNil() + str = "0" + default: + iter.ReportError("fuzzyIntegerDecoder", "not number or string") + } + newIter := iter.Pool().BorrowIterator([]byte(str)) + defer iter.Pool().ReturnIterator(newIter) + isFloat := strings.IndexByte(str, '.') != -1 + decoder.fun(isFloat, ptr, newIter) + if newIter.Error != nil && newIter.Error != io.EOF { + iter.Error = newIter.Error + } +} + +type nullableFuzzyFloat32Decoder struct { +} + +func (decoder *nullableFuzzyFloat32Decoder) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) { + valueType := iter.WhatIsNext() + var str string + switch valueType { + case jsoniter.NumberValue: + *((*float32)(ptr)) = iter.ReadFloat32() + case jsoniter.StringValue: + str = iter.ReadString() + // support empty string + if str == "" { + *((*float32)(ptr)) = 0 + return + } + newIter := iter.Pool().BorrowIterator([]byte(str)) + defer iter.Pool().ReturnIterator(newIter) + *((*float32)(ptr)) = newIter.ReadFloat32() + if newIter.Error != nil && newIter.Error != io.EOF { + iter.Error = newIter.Error + } + case jsoniter.BoolValue: + // support bool to float32 + if iter.ReadBool() { + *((*float32)(ptr)) = 1 + } else { + *((*float32)(ptr)) = 0 + } + case jsoniter.NilValue: + iter.ReadNil() + *((*float32)(ptr)) = 0 + default: + iter.ReportError("nullableFuzzyFloat32Decoder", "not number or string") + } +} + +type nullableFuzzyFloat64Decoder struct { +} + +func (decoder *nullableFuzzyFloat64Decoder) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) { + valueType := iter.WhatIsNext() + var str string + switch valueType { + case jsoniter.NumberValue: + *((*float64)(ptr)) = iter.ReadFloat64() + case jsoniter.StringValue: + str = iter.ReadString() + // support empty string + if str == "" { + *((*float64)(ptr)) = 0 + return + } + newIter := iter.Pool().BorrowIterator([]byte(str)) + defer iter.Pool().ReturnIterator(newIter) + *((*float64)(ptr)) = newIter.ReadFloat64() + if newIter.Error != nil && newIter.Error != io.EOF { + iter.Error = newIter.Error + } + case jsoniter.BoolValue: + // support bool to float64 + if iter.ReadBool() { + *((*float64)(ptr)) = 1 + } else { + *((*float64)(ptr)) = 0 + } + case jsoniter.NilValue: + // support empty string + iter.ReadNil() + *((*float64)(ptr)) = 0 + default: + iter.ReportError("nullableFuzzyFloat64Decoder", "not number or string") + } +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses/response.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses/response.go new file mode 100644 index 000000000..72514d56a --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses/response.go @@ -0,0 +1,145 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package responses + +import ( + "bytes" + "encoding/xml" + "fmt" + "io/ioutil" + "net/http" + "strings" + + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors" +) + +type AcsResponse interface { + IsSuccess() bool + GetHttpStatus() int + GetHttpHeaders() map[string][]string + GetHttpContentString() string + GetHttpContentBytes() []byte + GetOriginHttpResponse() *http.Response + parseFromHttpResponse(httpResponse *http.Response) error +} + +// Unmarshal object from http response body to target Response +func Unmarshal(response AcsResponse, httpResponse *http.Response, format string) (err error) { + err = response.parseFromHttpResponse(httpResponse) + if err != nil { + return + } + if !response.IsSuccess() { + err = errors.NewServerError(response.GetHttpStatus(), response.GetHttpContentString(), "") + return + } + + if _, isCommonResponse := response.(*CommonResponse); isCommonResponse { + // common response need not unmarshal + return + } + + if len(response.GetHttpContentBytes()) == 0 { + return + } + + if strings.ToUpper(format) == "JSON" { + initJsonParserOnce() + err = jsonParser.Unmarshal(response.GetHttpContentBytes(), response) + if err != nil { + err = errors.NewClientError(errors.JsonUnmarshalErrorCode, errors.JsonUnmarshalErrorMessage, err) + } + } else if strings.ToUpper(format) == "XML" { + err = xml.Unmarshal(response.GetHttpContentBytes(), response) + } + return +} + +type BaseResponse struct { + httpStatus int + httpHeaders map[string][]string + httpContentString string + httpContentBytes []byte + originHttpResponse *http.Response +} + +func (baseResponse *BaseResponse) GetHttpStatus() int { + return baseResponse.httpStatus +} + +func (baseResponse *BaseResponse) GetHttpHeaders() map[string][]string { + return baseResponse.httpHeaders +} + +func (baseResponse *BaseResponse) GetHttpContentString() string { + return baseResponse.httpContentString +} + +func (baseResponse *BaseResponse) GetHttpContentBytes() []byte { + return baseResponse.httpContentBytes +} + +func (baseResponse *BaseResponse) GetOriginHttpResponse() *http.Response { + return baseResponse.originHttpResponse +} + +func (baseResponse *BaseResponse) IsSuccess() bool { + if baseResponse.GetHttpStatus() >= 200 && baseResponse.GetHttpStatus() < 300 { + return true + } + + return false +} + +func (baseResponse *BaseResponse) parseFromHttpResponse(httpResponse *http.Response) (err error) { + defer httpResponse.Body.Close() + body, err := ioutil.ReadAll(httpResponse.Body) + if err != nil { + return + } + baseResponse.httpStatus = httpResponse.StatusCode + baseResponse.httpHeaders = httpResponse.Header + baseResponse.httpContentBytes = body + baseResponse.httpContentString = string(body) + baseResponse.originHttpResponse = httpResponse + return +} + +func (baseResponse *BaseResponse) String() string { + resultBuilder := bytes.Buffer{} + // statusCode + // resultBuilder.WriteString("\n") + resultBuilder.WriteString(fmt.Sprintf("%s %s\n", baseResponse.originHttpResponse.Proto, baseResponse.originHttpResponse.Status)) + // httpHeaders + //resultBuilder.WriteString("Headers:\n") + for key, value := range baseResponse.httpHeaders { + resultBuilder.WriteString(key + ": " + strings.Join(value, ";") + "\n") + } + resultBuilder.WriteString("\n") + // content + //resultBuilder.WriteString("Content:\n") + resultBuilder.WriteString(baseResponse.httpContentString + "\n") + return resultBuilder.String() +} + +type CommonResponse struct { + *BaseResponse +} + +func NewCommonResponse() (response *CommonResponse) { + return &CommonResponse{ + BaseResponse: &BaseResponse{}, + } +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils/debug.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils/debug.go new file mode 100644 index 000000000..09440d27b --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils/debug.go @@ -0,0 +1,36 @@ +package utils + +import ( + "fmt" + "os" + "strings" +) + +type Debug func(format string, v ...interface{}) + +var hookGetEnv = func() string { + return os.Getenv("DEBUG") +} + +var hookPrint = func(input string) { + fmt.Println(input) +} + +func Init(flag string) Debug { + enable := false + + env := hookGetEnv() + parts := strings.Split(env, ",") + for _, part := range parts { + if part == flag { + enable = true + break + } + } + + return func(format string, v ...interface{}) { + if enable { + hookPrint(fmt.Sprintf(format, v...)) + } + } +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils/utils.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils/utils.go new file mode 100644 index 000000000..068757d17 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils/utils.go @@ -0,0 +1,105 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package utils + +import ( + "crypto/md5" + "encoding/base64" + "encoding/hex" + "net/url" + "reflect" + "strconv" + "time" + + "github.com/satori/go.uuid" +) + +// if you use go 1.10 or higher, you can hack this util by these to avoid "TimeZone.zip not found" on Windows +var LoadLocationFromTZData func(name string, data []byte) (*time.Location, error) = nil +var TZData []byte = nil + +func GetUUIDV4() (uuidHex string) { + uuidV4 := uuid.NewV4() + uuidHex = hex.EncodeToString(uuidV4.Bytes()) + return +} + +func GetMD5Base64(bytes []byte) (base64Value string) { + md5Ctx := md5.New() + md5Ctx.Write(bytes) + md5Value := md5Ctx.Sum(nil) + base64Value = base64.StdEncoding.EncodeToString(md5Value) + return +} + +func GetGMTLocation() (*time.Location, error) { + if LoadLocationFromTZData != nil && TZData != nil { + return LoadLocationFromTZData("GMT", TZData) + } else { + return time.LoadLocation("GMT") + } +} + +func GetTimeInFormatISO8601() (timeStr string) { + gmt, err := GetGMTLocation() + + if err != nil { + panic(err) + } + return time.Now().In(gmt).Format("2006-01-02T15:04:05Z") +} + +func GetTimeInFormatRFC2616() (timeStr string) { + gmt, err := GetGMTLocation() + + if err != nil { + panic(err) + } + return time.Now().In(gmt).Format("Mon, 02 Jan 2006 15:04:05 GMT") +} + +func GetUrlFormedMap(source map[string]string) (urlEncoded string) { + urlEncoder := url.Values{} + for key, value := range source { + urlEncoder.Add(key, value) + } + urlEncoded = urlEncoder.Encode() + return +} + +func InitStructWithDefaultTag(bean interface{}) { + configType := reflect.TypeOf(bean) + for i := 0; i < configType.Elem().NumField(); i++ { + field := configType.Elem().Field(i) + defaultValue := field.Tag.Get("default") + if defaultValue == "" { + continue + } + setter := reflect.ValueOf(bean).Elem().Field(i) + switch field.Type.String() { + case "int": + intValue, _ := strconv.ParseInt(defaultValue, 10, 64) + setter.SetInt(intValue) + case "time.Duration": + intValue, _ := strconv.ParseInt(defaultValue, 10, 64) + setter.SetInt(intValue) + case "string": + setter.SetString(defaultValue) + case "bool": + boolValue, _ := strconv.ParseBool(defaultValue) + setter.SetBool(boolValue) + } + } +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/client.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/client.go new file mode 100644 index 000000000..64ae84c93 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/client.go @@ -0,0 +1,81 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "github.com/aliyun/alibaba-cloud-sdk-go/sdk" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth" +) + +// Client is the sdk client struct, each func corresponds to an OpenAPI +type Client struct { + sdk.Client +} + +// NewClient creates a sdk client with environment variables +func NewClient() (client *Client, err error) { + client = &Client{} + err = client.Init() + return +} + +// NewClientWithOptions creates a sdk client with regionId/sdkConfig/credential +// this is the common api to create a sdk client +func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.Credential) (client *Client, err error) { + client = &Client{} + err = client.InitWithOptions(regionId, config, credential) + return +} + +// NewClientWithAccessKey is a shortcut to create sdk client with accesskey +// usage: https://help.aliyun.com/document_detail/66217.html +func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) { + client = &Client{} + err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret) + return +} + +// NewClientWithStsToken is a shortcut to create sdk client with sts token +// usage: https://help.aliyun.com/document_detail/66222.html +func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken string) (client *Client, err error) { + client = &Client{} + err = client.InitWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken) + return +} + +// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn +// usage: https://help.aliyun.com/document_detail/66222.html +func NewClientWithRamRoleArn(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (client *Client, err error) { + client = &Client{} + err = client.InitWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName) + return +} + +// NewClientWithEcsRamRole is a shortcut to create sdk client with ecs ram role +// usage: https://help.aliyun.com/document_detail/66223.html +func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client, err error) { + client = &Client{} + err = client.InitWithEcsRamRole(regionId, roleName) + return +} + +// NewClientWithRsaKeyPair is a shortcut to create sdk client with rsa key pair +// attention: rsa key pair auth is only Japan regions available +func NewClientWithRsaKeyPair(regionId string, publicKeyId, privateKey string, sessionExpiration int) (client *Client, err error) { + client = &Client{} + err = client.InitWithRsaKeyPair(regionId, publicKeyId, privateKey, sessionExpiration) + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_endpoint.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_endpoint.go new file mode 100644 index 000000000..06b3d6ed2 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_endpoint.go @@ -0,0 +1,111 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" +) + +// DescribeEndpoint invokes the location.DescribeEndpoint API synchronously +// api document: https://help.aliyun.com/api/location/describeendpoint.html +func (client *Client) DescribeEndpoint(request *DescribeEndpointRequest) (response *DescribeEndpointResponse, err error) { + response = CreateDescribeEndpointResponse() + err = client.DoAction(request, response) + return +} + +// DescribeEndpointWithChan invokes the location.DescribeEndpoint API asynchronously +// api document: https://help.aliyun.com/api/location/describeendpoint.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) DescribeEndpointWithChan(request *DescribeEndpointRequest) (<-chan *DescribeEndpointResponse, <-chan error) { + responseChan := make(chan *DescribeEndpointResponse, 1) + errChan := make(chan error, 1) + err := client.AddAsyncTask(func() { + defer close(responseChan) + defer close(errChan) + response, err := client.DescribeEndpoint(request) + if err != nil { + errChan <- err + } else { + responseChan <- response + } + }) + if err != nil { + errChan <- err + close(responseChan) + close(errChan) + } + return responseChan, errChan +} + +// DescribeEndpointWithCallback invokes the location.DescribeEndpoint API asynchronously +// api document: https://help.aliyun.com/api/location/describeendpoint.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) DescribeEndpointWithCallback(request *DescribeEndpointRequest, callback func(response *DescribeEndpointResponse, err error)) <-chan int { + result := make(chan int, 1) + err := client.AddAsyncTask(func() { + var response *DescribeEndpointResponse + var err error + defer close(result) + response, err = client.DescribeEndpoint(request) + callback(response, err) + result <- 1 + }) + if err != nil { + defer close(result) + callback(nil, err) + result <- 0 + } + return result +} + +// DescribeEndpointRequest is the request struct for api DescribeEndpoint +type DescribeEndpointRequest struct { + *requests.RpcRequest + Password string `position:"Query" name:"Password"` + ServiceCode string `position:"Query" name:"ServiceCode"` + Id string `position:"Query" name:"Id"` +} + +// DescribeEndpointResponse is the response struct for api DescribeEndpoint +type DescribeEndpointResponse struct { + *responses.BaseResponse + RequestId string `json:"RequestId" xml:"RequestId"` + Endpoint string `json:"Endpoint" xml:"Endpoint"` + Id string `json:"Id" xml:"Id"` + Namespace string `json:"Namespace" xml:"Namespace"` + SerivceCode string `json:"SerivceCode" xml:"SerivceCode"` + Type string `json:"Type" xml:"Type"` + Protocols ProtocolsInDescribeEndpoint `json:"Protocols" xml:"Protocols"` +} + +// CreateDescribeEndpointRequest creates a request to invoke DescribeEndpoint API +func CreateDescribeEndpointRequest() (request *DescribeEndpointRequest) { + request = &DescribeEndpointRequest{ + RpcRequest: &requests.RpcRequest{}, + } + request.InitWithApiInfo("Location", "2015-06-12", "DescribeEndpoint", "location", "openAPI") + return +} + +// CreateDescribeEndpointResponse creates a response to parse from DescribeEndpoint response +func CreateDescribeEndpointResponse() (response *DescribeEndpointResponse) { + response = &DescribeEndpointResponse{ + BaseResponse: &responses.BaseResponse{}, + } + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_endpoints.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_endpoints.go new file mode 100644 index 000000000..95c6e7873 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_endpoints.go @@ -0,0 +1,107 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" +) + +// DescribeEndpoints invokes the location.DescribeEndpoints API synchronously +// api document: https://help.aliyun.com/api/location/describeendpoints.html +func (client *Client) DescribeEndpoints(request *DescribeEndpointsRequest) (response *DescribeEndpointsResponse, err error) { + response = CreateDescribeEndpointsResponse() + err = client.DoAction(request, response) + return +} + +// DescribeEndpointsWithChan invokes the location.DescribeEndpoints API asynchronously +// api document: https://help.aliyun.com/api/location/describeendpoints.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) DescribeEndpointsWithChan(request *DescribeEndpointsRequest) (<-chan *DescribeEndpointsResponse, <-chan error) { + responseChan := make(chan *DescribeEndpointsResponse, 1) + errChan := make(chan error, 1) + err := client.AddAsyncTask(func() { + defer close(responseChan) + defer close(errChan) + response, err := client.DescribeEndpoints(request) + if err != nil { + errChan <- err + } else { + responseChan <- response + } + }) + if err != nil { + errChan <- err + close(responseChan) + close(errChan) + } + return responseChan, errChan +} + +// DescribeEndpointsWithCallback invokes the location.DescribeEndpoints API asynchronously +// api document: https://help.aliyun.com/api/location/describeendpoints.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) DescribeEndpointsWithCallback(request *DescribeEndpointsRequest, callback func(response *DescribeEndpointsResponse, err error)) <-chan int { + result := make(chan int, 1) + err := client.AddAsyncTask(func() { + var response *DescribeEndpointsResponse + var err error + defer close(result) + response, err = client.DescribeEndpoints(request) + callback(response, err) + result <- 1 + }) + if err != nil { + defer close(result) + callback(nil, err) + result <- 0 + } + return result +} + +// DescribeEndpointsRequest is the request struct for api DescribeEndpoints +type DescribeEndpointsRequest struct { + *requests.RpcRequest + ServiceCode string `position:"Query" name:"ServiceCode"` + Id string `position:"Query" name:"Id"` + Type string `position:"Query" name:"Type"` +} + +// DescribeEndpointsResponse is the response struct for api DescribeEndpoints +type DescribeEndpointsResponse struct { + *responses.BaseResponse + RequestId string `json:"RequestId" xml:"RequestId"` + Success bool `json:"Success" xml:"Success"` + Endpoints Endpoints `json:"Endpoints" xml:"Endpoints"` +} + +// CreateDescribeEndpointsRequest creates a request to invoke DescribeEndpoints API +func CreateDescribeEndpointsRequest() (request *DescribeEndpointsRequest) { + request = &DescribeEndpointsRequest{ + RpcRequest: &requests.RpcRequest{}, + } + request.InitWithApiInfo("Location", "2015-06-12", "DescribeEndpoints", "location", "openAPI") + return +} + +// CreateDescribeEndpointsResponse creates a response to parse from DescribeEndpoints response +func CreateDescribeEndpointsResponse() (response *DescribeEndpointsResponse) { + response = &DescribeEndpointsResponse{ + BaseResponse: &responses.BaseResponse{}, + } + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_regions.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_regions.go new file mode 100644 index 000000000..824829dc7 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_regions.go @@ -0,0 +1,105 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" +) + +// DescribeRegions invokes the location.DescribeRegions API synchronously +// api document: https://help.aliyun.com/api/location/describeregions.html +func (client *Client) DescribeRegions(request *DescribeRegionsRequest) (response *DescribeRegionsResponse, err error) { + response = CreateDescribeRegionsResponse() + err = client.DoAction(request, response) + return +} + +// DescribeRegionsWithChan invokes the location.DescribeRegions API asynchronously +// api document: https://help.aliyun.com/api/location/describeregions.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) DescribeRegionsWithChan(request *DescribeRegionsRequest) (<-chan *DescribeRegionsResponse, <-chan error) { + responseChan := make(chan *DescribeRegionsResponse, 1) + errChan := make(chan error, 1) + err := client.AddAsyncTask(func() { + defer close(responseChan) + defer close(errChan) + response, err := client.DescribeRegions(request) + if err != nil { + errChan <- err + } else { + responseChan <- response + } + }) + if err != nil { + errChan <- err + close(responseChan) + close(errChan) + } + return responseChan, errChan +} + +// DescribeRegionsWithCallback invokes the location.DescribeRegions API asynchronously +// api document: https://help.aliyun.com/api/location/describeregions.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) DescribeRegionsWithCallback(request *DescribeRegionsRequest, callback func(response *DescribeRegionsResponse, err error)) <-chan int { + result := make(chan int, 1) + err := client.AddAsyncTask(func() { + var response *DescribeRegionsResponse + var err error + defer close(result) + response, err = client.DescribeRegions(request) + callback(response, err) + result <- 1 + }) + if err != nil { + defer close(result) + callback(nil, err) + result <- 0 + } + return result +} + +// DescribeRegionsRequest is the request struct for api DescribeRegions +type DescribeRegionsRequest struct { + *requests.RpcRequest + Password string `position:"Query" name:"Password"` +} + +// DescribeRegionsResponse is the response struct for api DescribeRegions +type DescribeRegionsResponse struct { + *responses.BaseResponse + RequestId string `json:"RequestId" xml:"RequestId"` + TotalCount int `json:"TotalCount" xml:"TotalCount"` + RegionIds RegionIds `json:"RegionIds" xml:"RegionIds"` +} + +// CreateDescribeRegionsRequest creates a request to invoke DescribeRegions API +func CreateDescribeRegionsRequest() (request *DescribeRegionsRequest) { + request = &DescribeRegionsRequest{ + RpcRequest: &requests.RpcRequest{}, + } + request.InitWithApiInfo("Location", "2015-06-12", "DescribeRegions", "location", "openAPI") + return +} + +// CreateDescribeRegionsResponse creates a response to parse from DescribeRegions response +func CreateDescribeRegionsResponse() (response *DescribeRegionsResponse) { + response = &DescribeRegionsResponse{ + BaseResponse: &responses.BaseResponse{}, + } + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_services.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_services.go new file mode 100644 index 000000000..af185ecfe --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/describe_services.go @@ -0,0 +1,105 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" +) + +// DescribeServices invokes the location.DescribeServices API synchronously +// api document: https://help.aliyun.com/api/location/describeservices.html +func (client *Client) DescribeServices(request *DescribeServicesRequest) (response *DescribeServicesResponse, err error) { + response = CreateDescribeServicesResponse() + err = client.DoAction(request, response) + return +} + +// DescribeServicesWithChan invokes the location.DescribeServices API asynchronously +// api document: https://help.aliyun.com/api/location/describeservices.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) DescribeServicesWithChan(request *DescribeServicesRequest) (<-chan *DescribeServicesResponse, <-chan error) { + responseChan := make(chan *DescribeServicesResponse, 1) + errChan := make(chan error, 1) + err := client.AddAsyncTask(func() { + defer close(responseChan) + defer close(errChan) + response, err := client.DescribeServices(request) + if err != nil { + errChan <- err + } else { + responseChan <- response + } + }) + if err != nil { + errChan <- err + close(responseChan) + close(errChan) + } + return responseChan, errChan +} + +// DescribeServicesWithCallback invokes the location.DescribeServices API asynchronously +// api document: https://help.aliyun.com/api/location/describeservices.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) DescribeServicesWithCallback(request *DescribeServicesRequest, callback func(response *DescribeServicesResponse, err error)) <-chan int { + result := make(chan int, 1) + err := client.AddAsyncTask(func() { + var response *DescribeServicesResponse + var err error + defer close(result) + response, err = client.DescribeServices(request) + callback(response, err) + result <- 1 + }) + if err != nil { + defer close(result) + callback(nil, err) + result <- 0 + } + return result +} + +// DescribeServicesRequest is the request struct for api DescribeServices +type DescribeServicesRequest struct { + *requests.RpcRequest + Password string `position:"Query" name:"Password"` +} + +// DescribeServicesResponse is the response struct for api DescribeServices +type DescribeServicesResponse struct { + *responses.BaseResponse + RequestId string `json:"RequestId" xml:"RequestId"` + TotalCount int `json:"TotalCount" xml:"TotalCount"` + Services Services `json:"Services" xml:"Services"` +} + +// CreateDescribeServicesRequest creates a request to invoke DescribeServices API +func CreateDescribeServicesRequest() (request *DescribeServicesRequest) { + request = &DescribeServicesRequest{ + RpcRequest: &requests.RpcRequest{}, + } + request.InitWithApiInfo("Location", "2015-06-12", "DescribeServices", "location", "openAPI") + return +} + +// CreateDescribeServicesResponse creates a response to parse from DescribeServices response +func CreateDescribeServicesResponse() (response *DescribeServicesResponse) { + response = &DescribeServicesResponse{ + BaseResponse: &responses.BaseResponse{}, + } + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/list_endpoints.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/list_endpoints.go new file mode 100644 index 000000000..6b11d0303 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/list_endpoints.go @@ -0,0 +1,107 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" +) + +// ListEndpoints invokes the location.ListEndpoints API synchronously +// api document: https://help.aliyun.com/api/location/listendpoints.html +func (client *Client) ListEndpoints(request *ListEndpointsRequest) (response *ListEndpointsResponse, err error) { + response = CreateListEndpointsResponse() + err = client.DoAction(request, response) + return +} + +// ListEndpointsWithChan invokes the location.ListEndpoints API asynchronously +// api document: https://help.aliyun.com/api/location/listendpoints.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) ListEndpointsWithChan(request *ListEndpointsRequest) (<-chan *ListEndpointsResponse, <-chan error) { + responseChan := make(chan *ListEndpointsResponse, 1) + errChan := make(chan error, 1) + err := client.AddAsyncTask(func() { + defer close(responseChan) + defer close(errChan) + response, err := client.ListEndpoints(request) + if err != nil { + errChan <- err + } else { + responseChan <- response + } + }) + if err != nil { + errChan <- err + close(responseChan) + close(errChan) + } + return responseChan, errChan +} + +// ListEndpointsWithCallback invokes the location.ListEndpoints API asynchronously +// api document: https://help.aliyun.com/api/location/listendpoints.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) ListEndpointsWithCallback(request *ListEndpointsRequest, callback func(response *ListEndpointsResponse, err error)) <-chan int { + result := make(chan int, 1) + err := client.AddAsyncTask(func() { + var response *ListEndpointsResponse + var err error + defer close(result) + response, err = client.ListEndpoints(request) + callback(response, err) + result <- 1 + }) + if err != nil { + defer close(result) + callback(nil, err) + result <- 0 + } + return result +} + +// ListEndpointsRequest is the request struct for api ListEndpoints +type ListEndpointsRequest struct { + *requests.RpcRequest + Namespace string `position:"Query" name:"Namespace"` + Id string `position:"Query" name:"Id"` + SerivceCode string `position:"Query" name:"SerivceCode"` +} + +// ListEndpointsResponse is the response struct for api ListEndpoints +type ListEndpointsResponse struct { + *responses.BaseResponse + RequestId string `json:"RequestId" xml:"RequestId"` + Success bool `json:"Success" xml:"Success"` + EndpointList EndpointListInListEndpoints `json:"EndpointList" xml:"EndpointList"` +} + +// CreateListEndpointsRequest creates a request to invoke ListEndpoints API +func CreateListEndpointsRequest() (request *ListEndpointsRequest) { + request = &ListEndpointsRequest{ + RpcRequest: &requests.RpcRequest{}, + } + request.InitWithApiInfo("Location", "2015-06-12", "ListEndpoints", "location", "openAPI") + return +} + +// CreateListEndpointsResponse creates a response to parse from ListEndpoints response +func CreateListEndpointsResponse() (response *ListEndpointsResponse) { + response = &ListEndpointsResponse{ + BaseResponse: &responses.BaseResponse{}, + } + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/list_endpoints_by_ip.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/list_endpoints_by_ip.go new file mode 100644 index 000000000..e5d753038 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/list_endpoints_by_ip.go @@ -0,0 +1,105 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests" + "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" +) + +// ListEndpointsByIp invokes the location.ListEndpointsByIp API synchronously +// api document: https://help.aliyun.com/api/location/listendpointsbyip.html +func (client *Client) ListEndpointsByIp(request *ListEndpointsByIpRequest) (response *ListEndpointsByIpResponse, err error) { + response = CreateListEndpointsByIpResponse() + err = client.DoAction(request, response) + return +} + +// ListEndpointsByIpWithChan invokes the location.ListEndpointsByIp API asynchronously +// api document: https://help.aliyun.com/api/location/listendpointsbyip.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) ListEndpointsByIpWithChan(request *ListEndpointsByIpRequest) (<-chan *ListEndpointsByIpResponse, <-chan error) { + responseChan := make(chan *ListEndpointsByIpResponse, 1) + errChan := make(chan error, 1) + err := client.AddAsyncTask(func() { + defer close(responseChan) + defer close(errChan) + response, err := client.ListEndpointsByIp(request) + if err != nil { + errChan <- err + } else { + responseChan <- response + } + }) + if err != nil { + errChan <- err + close(responseChan) + close(errChan) + } + return responseChan, errChan +} + +// ListEndpointsByIpWithCallback invokes the location.ListEndpointsByIp API asynchronously +// api document: https://help.aliyun.com/api/location/listendpointsbyip.html +// asynchronous document: https://help.aliyun.com/document_detail/66220.html +func (client *Client) ListEndpointsByIpWithCallback(request *ListEndpointsByIpRequest, callback func(response *ListEndpointsByIpResponse, err error)) <-chan int { + result := make(chan int, 1) + err := client.AddAsyncTask(func() { + var response *ListEndpointsByIpResponse + var err error + defer close(result) + response, err = client.ListEndpointsByIp(request) + callback(response, err) + result <- 1 + }) + if err != nil { + defer close(result) + callback(nil, err) + result <- 0 + } + return result +} + +// ListEndpointsByIpRequest is the request struct for api ListEndpointsByIp +type ListEndpointsByIpRequest struct { + *requests.RpcRequest + Ip string `position:"Query" name:"Ip"` +} + +// ListEndpointsByIpResponse is the response struct for api ListEndpointsByIp +type ListEndpointsByIpResponse struct { + *responses.BaseResponse + RequestId string `json:"RequestId" xml:"RequestId"` + Success bool `json:"Success" xml:"Success"` + EndpointList EndpointListInListEndpointsByIp `json:"EndpointList" xml:"EndpointList"` +} + +// CreateListEndpointsByIpRequest creates a request to invoke ListEndpointsByIp API +func CreateListEndpointsByIpRequest() (request *ListEndpointsByIpRequest) { + request = &ListEndpointsByIpRequest{ + RpcRequest: &requests.RpcRequest{}, + } + request.InitWithApiInfo("Location", "2015-06-12", "ListEndpointsByIp", "location", "openAPI") + return +} + +// CreateListEndpointsByIpResponse creates a response to parse from ListEndpointsByIp response +func CreateListEndpointsByIpResponse() (response *ListEndpointsByIpResponse) { + response = &ListEndpointsByIpResponse{ + BaseResponse: &responses.BaseResponse{}, + } + return +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoint.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoint.go new file mode 100644 index 000000000..1856a795a --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoint.go @@ -0,0 +1,26 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// Endpoint is a nested struct in location response +type Endpoint struct { + Endpoint string `json:"Endpoint" xml:"Endpoint"` + Id string `json:"Id" xml:"Id"` + Namespace string `json:"Namespace" xml:"Namespace"` + SerivceCode string `json:"SerivceCode" xml:"SerivceCode"` + Type string `json:"Type" xml:"Type"` + Protocols ProtocolsInDescribeEndpoints `json:"Protocols" xml:"Protocols"` +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoint_list_in_list_endpoints.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoint_list_in_list_endpoints.go new file mode 100644 index 000000000..b41f43f54 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoint_list_in_list_endpoints.go @@ -0,0 +1,21 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// EndpointListInListEndpoints is a nested struct in location response +type EndpointListInListEndpoints struct { + ItemEndpoint []ItemEndpoint `json:"ItemEndpoint" xml:"ItemEndpoint"` +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoint_list_in_list_endpoints_by_ip.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoint_list_in_list_endpoints_by_ip.go new file mode 100644 index 000000000..75a1ea0cb --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoint_list_in_list_endpoints_by_ip.go @@ -0,0 +1,21 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// EndpointListInListEndpointsByIp is a nested struct in location response +type EndpointListInListEndpointsByIp struct { + ItemEndpoint []ItemEndpoint `json:"ItemEndpoint" xml:"ItemEndpoint"` +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoints.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoints.go new file mode 100644 index 000000000..e55882a65 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_endpoints.go @@ -0,0 +1,21 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// Endpoints is a nested struct in location response +type Endpoints struct { + Endpoint []Endpoint `json:"Endpoint" xml:"Endpoint"` +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_item_endpoint.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_item_endpoint.go new file mode 100644 index 000000000..099768f1d --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_item_endpoint.go @@ -0,0 +1,26 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// ItemEndpoint is a nested struct in location response +type ItemEndpoint struct { + Endpoint string `json:"Endpoint" xml:"Endpoint"` + Product string `json:"Product" xml:"Product"` + Namespace string `json:"Namespace" xml:"Namespace"` + Id string `json:"Id" xml:"Id"` + Type string `json:"Type" xml:"Type"` + Protocols ProtocolsInListEndpointsByIp `json:"Protocols" xml:"Protocols"` +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_describe_endpoint.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_describe_endpoint.go new file mode 100644 index 000000000..d1d2d794d --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_describe_endpoint.go @@ -0,0 +1,21 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// ProtocolsInDescribeEndpoint is a nested struct in location response +type ProtocolsInDescribeEndpoint struct { + Protocols []string `json:"Protocols" xml:"Protocols"` +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_describe_endpoints.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_describe_endpoints.go new file mode 100644 index 000000000..c79d4da87 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_describe_endpoints.go @@ -0,0 +1,21 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// ProtocolsInDescribeEndpoints is a nested struct in location response +type ProtocolsInDescribeEndpoints struct { + Protocols []string `json:"Protocols" xml:"Protocols"` +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_list_endpoints.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_list_endpoints.go new file mode 100644 index 000000000..610069146 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_list_endpoints.go @@ -0,0 +1,21 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// ProtocolsInListEndpoints is a nested struct in location response +type ProtocolsInListEndpoints struct { + Protocols []string `json:"Protocols" xml:"Protocols"` +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_list_endpoints_by_ip.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_list_endpoints_by_ip.go new file mode 100644 index 000000000..962d2c04c --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_protocols_in_list_endpoints_by_ip.go @@ -0,0 +1,21 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// ProtocolsInListEndpointsByIp is a nested struct in location response +type ProtocolsInListEndpointsByIp struct { + Protocols []string `json:"Protocols" xml:"Protocols"` +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_region_ids.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_region_ids.go new file mode 100644 index 000000000..0f1fbe3bd --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_region_ids.go @@ -0,0 +1,21 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// RegionIds is a nested struct in location response +type RegionIds struct { + RegionIds []string `json:"RegionIds" xml:"RegionIds"` +} diff --git a/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_services.go b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_services.go new file mode 100644 index 000000000..b3e934c59 --- /dev/null +++ b/vendor/github.com/aliyun/alibaba-cloud-sdk-go/services/location/struct_services.go @@ -0,0 +1,21 @@ +package location + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +// +// Code generated by Alibaba Cloud SDK Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// Services is a nested struct in location response +type Services struct { + Services []string `json:"Services" xml:"Services"` +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/auth.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/auth.go new file mode 100644 index 000000000..ee90591b2 --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/auth.go @@ -0,0 +1,97 @@ +package oss + +import ( + "bytes" + "crypto/hmac" + "crypto/sha1" + "encoding/base64" + "hash" + "io" + "net/http" + "sort" + "strings" +) + +// headerSorter defines the key-value structure for storing the sorted data in signHeader. +type headerSorter struct { + Keys []string + Vals []string +} + +// signHeader signs the header and sets it as the authorization header. +func (conn Conn) signHeader(req *http.Request, canonicalizedResource string) { + // Get the final authorization string + authorizationStr := "OSS " + conn.config.AccessKeyID + ":" + conn.getSignedStr(req, canonicalizedResource) + + // Give the parameter "Authorization" value + req.Header.Set(HTTPHeaderAuthorization, authorizationStr) +} + +func (conn Conn) getSignedStr(req *http.Request, canonicalizedResource string) string { + // Find out the "x-oss-"'s address in header of the request + temp := make(map[string]string) + + for k, v := range req.Header { + if strings.HasPrefix(strings.ToLower(k), "x-oss-") { + temp[strings.ToLower(k)] = v[0] + } + } + hs := newHeaderSorter(temp) + + // Sort the temp by the ascending order + hs.Sort() + + // Get the canonicalizedOSSHeaders + canonicalizedOSSHeaders := "" + for i := range hs.Keys { + canonicalizedOSSHeaders += hs.Keys[i] + ":" + hs.Vals[i] + "\n" + } + + // Give other parameters values + // when sign URL, date is expires + date := req.Header.Get(HTTPHeaderDate) + contentType := req.Header.Get(HTTPHeaderContentType) + contentMd5 := req.Header.Get(HTTPHeaderContentMD5) + + signStr := req.Method + "\n" + contentMd5 + "\n" + contentType + "\n" + date + "\n" + canonicalizedOSSHeaders + canonicalizedResource + h := hmac.New(func() hash.Hash { return sha1.New() }, []byte(conn.config.AccessKeySecret)) + io.WriteString(h, signStr) + signedStr := base64.StdEncoding.EncodeToString(h.Sum(nil)) + + return signedStr +} + +// newHeaderSorter is an additional function for function SignHeader. +func newHeaderSorter(m map[string]string) *headerSorter { + hs := &headerSorter{ + Keys: make([]string, 0, len(m)), + Vals: make([]string, 0, len(m)), + } + + for k, v := range m { + hs.Keys = append(hs.Keys, k) + hs.Vals = append(hs.Vals, v) + } + return hs +} + +// Sort is an additional function for function SignHeader. +func (hs *headerSorter) Sort() { + sort.Sort(hs) +} + +// Len is an additional function for function SignHeader. +func (hs *headerSorter) Len() int { + return len(hs.Vals) +} + +// Less is an additional function for function SignHeader. +func (hs *headerSorter) Less(i, j int) bool { + return bytes.Compare([]byte(hs.Keys[i]), []byte(hs.Keys[j])) < 0 +} + +// Swap is an additional function for function SignHeader. +func (hs *headerSorter) Swap(i, j int) { + hs.Vals[i], hs.Vals[j] = hs.Vals[j], hs.Vals[i] + hs.Keys[i], hs.Keys[j] = hs.Keys[j], hs.Keys[i] +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/bucket.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/bucket.go new file mode 100644 index 000000000..067855e09 --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/bucket.go @@ -0,0 +1,973 @@ +package oss + +import ( + "bytes" + "crypto/md5" + "encoding/base64" + "encoding/xml" + "fmt" + "hash" + "hash/crc64" + "io" + "net/http" + "net/url" + "os" + "strconv" + "strings" + "time" +) + +// Bucket implements the operations of object. +type Bucket struct { + Client Client + BucketName string +} + +// PutObject creates a new object and it will overwrite the original one if it exists already. +// +// objectKey the object key in UTF-8 encoding. The length must be between 1 and 1023, and cannot start with "/" or "\". +// reader io.Reader instance for reading the data for uploading +// options the options for uploading the object. The valid options here are CacheControl, ContentDisposition, ContentEncoding +// Expires, ServerSideEncryption, ObjectACL and Meta. Refer to the link below for more details. +// https://help.aliyun.com/document_detail/oss/api-reference/object/PutObject.html +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) PutObject(objectKey string, reader io.Reader, options ...Option) error { + opts := addContentType(options, objectKey) + + request := &PutObjectRequest{ + ObjectKey: objectKey, + Reader: reader, + } + resp, err := bucket.DoPutObject(request, opts) + if err != nil { + return err + } + defer resp.Body.Close() + + return err +} + +// PutObjectFromFile creates a new object from the local file. +// +// objectKey object key. +// filePath the local file path to upload. +// options the options for uploading the object. Refer to the parameter options in PutObject for more details. +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) PutObjectFromFile(objectKey, filePath string, options ...Option) error { + fd, err := os.Open(filePath) + if err != nil { + return err + } + defer fd.Close() + + opts := addContentType(options, filePath, objectKey) + + request := &PutObjectRequest{ + ObjectKey: objectKey, + Reader: fd, + } + resp, err := bucket.DoPutObject(request, opts) + if err != nil { + return err + } + defer resp.Body.Close() + + return err +} + +// DoPutObject does the actual upload work. +// +// request the request instance for uploading an object. +// options the options for uploading an object. +// +// Response the response from OSS. +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) DoPutObject(request *PutObjectRequest, options []Option) (*Response, error) { + isOptSet, _, _ := isOptionSet(options, HTTPHeaderContentType) + if !isOptSet { + options = addContentType(options, request.ObjectKey) + } + + listener := getProgressListener(options) + + params := map[string]interface{}{} + resp, err := bucket.do("PUT", request.ObjectKey, params, options, request.Reader, listener) + if err != nil { + return nil, err + } + + if bucket.getConfig().IsEnableCRC { + err = checkCRC(resp, "DoPutObject") + if err != nil { + return resp, err + } + } + + err = checkRespCode(resp.StatusCode, []int{http.StatusOK}) + + return resp, err +} + +// GetObject downloads the object. +// +// objectKey the object key. +// options the options for downloading the object. The valid values are: Range, IfModifiedSince, IfUnmodifiedSince, IfMatch, +// IfNoneMatch, AcceptEncoding. For more details, please check out: +// https://help.aliyun.com/document_detail/oss/api-reference/object/GetObject.html +// +// io.ReadCloser reader instance for reading data from response. It must be called close() after the usage and only valid when error is nil. +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) GetObject(objectKey string, options ...Option) (io.ReadCloser, error) { + result, err := bucket.DoGetObject(&GetObjectRequest{objectKey}, options) + if err != nil { + return nil, err + } + + return result.Response, nil +} + +// GetObjectToFile downloads the data to a local file. +// +// objectKey the object key to download. +// filePath the local file to store the object data. +// options the options for downloading the object. Refer to the parameter options in method GetObject for more details. +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) GetObjectToFile(objectKey, filePath string, options ...Option) error { + tempFilePath := filePath + TempFileSuffix + + // Calls the API to actually download the object. Returns the result instance. + result, err := bucket.DoGetObject(&GetObjectRequest{objectKey}, options) + if err != nil { + return err + } + defer result.Response.Close() + + // If the local file does not exist, create a new one. If it exists, overwrite it. + fd, err := os.OpenFile(tempFilePath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, FilePermMode) + if err != nil { + return err + } + + // Copy the data to the local file path. + _, err = io.Copy(fd, result.Response.Body) + fd.Close() + if err != nil { + return err + } + + // Compares the CRC value + hasRange, _, _ := isOptionSet(options, HTTPHeaderRange) + encodeOpt, _ := findOption(options, HTTPHeaderAcceptEncoding, nil) + acceptEncoding := "" + if encodeOpt != nil { + acceptEncoding = encodeOpt.(string) + } + if bucket.getConfig().IsEnableCRC && !hasRange && acceptEncoding != "gzip" { + result.Response.ClientCRC = result.ClientCRC.Sum64() + err = checkCRC(result.Response, "GetObjectToFile") + if err != nil { + os.Remove(tempFilePath) + return err + } + } + + return os.Rename(tempFilePath, filePath) +} + +// DoGetObject is the actual API that gets the object. It's the internal function called by other public APIs. +// +// request the request to download the object. +// options the options for downloading the file. Checks out the parameter options in method GetObject. +// +// GetObjectResult the result instance of getting the object. +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) DoGetObject(request *GetObjectRequest, options []Option) (*GetObjectResult, error) { + params, _ := getRawParams(options) + resp, err := bucket.do("GET", request.ObjectKey, params, options, nil, nil) + if err != nil { + return nil, err + } + + result := &GetObjectResult{ + Response: resp, + } + + // CRC + var crcCalc hash.Hash64 + hasRange, _, _ := isOptionSet(options, HTTPHeaderRange) + if bucket.getConfig().IsEnableCRC && !hasRange { + crcCalc = crc64.New(crcTable()) + result.ServerCRC = resp.ServerCRC + result.ClientCRC = crcCalc + } + + // Progress + listener := getProgressListener(options) + + contentLen, _ := strconv.ParseInt(resp.Headers.Get(HTTPHeaderContentLength), 10, 64) + resp.Body = TeeReader(resp.Body, crcCalc, contentLen, listener, nil) + + return result, nil +} + +// CopyObject copies the object inside the bucket. +// +// srcObjectKey the source object to copy. +// destObjectKey the target object to copy. +// options options for copying an object. You can specify the conditions of copy. The valid conditions are CopySourceIfMatch, +// CopySourceIfNoneMatch, CopySourceIfModifiedSince, CopySourceIfUnmodifiedSince, MetadataDirective. +// Also you can specify the target object's attributes, such as CacheControl, ContentDisposition, ContentEncoding, Expires, +// ServerSideEncryption, ObjectACL, Meta. Refer to the link below for more details : +// https://help.aliyun.com/document_detail/oss/api-reference/object/CopyObject.html +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) CopyObject(srcObjectKey, destObjectKey string, options ...Option) (CopyObjectResult, error) { + var out CopyObjectResult + options = append(options, CopySource(bucket.BucketName, url.QueryEscape(srcObjectKey))) + params := map[string]interface{}{} + resp, err := bucket.do("PUT", destObjectKey, params, options, nil, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + return out, err +} + +// CopyObjectTo copies the object to another bucket. +// +// srcObjectKey source object key. The source bucket is Bucket.BucketName . +// destBucketName target bucket name. +// destObjectKey target object name. +// options copy options, check out parameter options in function CopyObject for more details. +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) CopyObjectTo(destBucketName, destObjectKey, srcObjectKey string, options ...Option) (CopyObjectResult, error) { + return bucket.copy(srcObjectKey, destBucketName, destObjectKey, options...) +} + +// +// CopyObjectFrom copies the object to another bucket. +// +// srcBucketName source bucket name. +// srcObjectKey source object name. +// destObjectKey target object name. The target bucket name is Bucket.BucketName. +// options copy options. Check out parameter options in function CopyObject. +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) CopyObjectFrom(srcBucketName, srcObjectKey, destObjectKey string, options ...Option) (CopyObjectResult, error) { + destBucketName := bucket.BucketName + var out CopyObjectResult + srcBucket, err := bucket.Client.Bucket(srcBucketName) + if err != nil { + return out, err + } + + return srcBucket.copy(srcObjectKey, destBucketName, destObjectKey, options...) +} + +func (bucket Bucket) copy(srcObjectKey, destBucketName, destObjectKey string, options ...Option) (CopyObjectResult, error) { + var out CopyObjectResult + options = append(options, CopySource(bucket.BucketName, url.QueryEscape(srcObjectKey))) + headers := make(map[string]string) + err := handleOptions(headers, options) + if err != nil { + return out, err + } + params := map[string]interface{}{} + resp, err := bucket.Client.Conn.Do("PUT", destBucketName, destObjectKey, params, headers, nil, 0, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + return out, err +} + +// AppendObject uploads the data in the way of appending an existing or new object. +// +// AppendObject the parameter appendPosition specifies which postion (in the target object) to append. For the first append (to a non-existing file), +// the appendPosition should be 0. The appendPosition in the subsequent calls will be the current object length. +// For example, the first appendObject's appendPosition is 0 and it uploaded 65536 bytes data, then the second call's position is 65536. +// The response header x-oss-next-append-position after each successful request also specifies the next call's append position (so the caller need not to maintain this information). +// +// objectKey the target object to append to. +// reader io.Reader. The read instance for reading the data to append. +// appendPosition the start position to append. +// destObjectProperties the options for the first appending, such as CacheControl, ContentDisposition, ContentEncoding, +// Expires, ServerSideEncryption, ObjectACL. +// +// int64 the next append position, it's valid when error is nil. +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) AppendObject(objectKey string, reader io.Reader, appendPosition int64, options ...Option) (int64, error) { + request := &AppendObjectRequest{ + ObjectKey: objectKey, + Reader: reader, + Position: appendPosition, + } + + result, err := bucket.DoAppendObject(request, options) + if err != nil { + return appendPosition, err + } + + return result.NextPosition, err +} + +// DoAppendObject is the actual API that does the object append. +// +// request the request object for appending object. +// options the options for appending object. +// +// AppendObjectResult the result object for appending object. +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) DoAppendObject(request *AppendObjectRequest, options []Option) (*AppendObjectResult, error) { + params := map[string]interface{}{} + params["append"] = nil + params["position"] = strconv.FormatInt(request.Position, 10) + headers := make(map[string]string) + + opts := addContentType(options, request.ObjectKey) + handleOptions(headers, opts) + + var initCRC uint64 + isCRCSet, initCRCOpt, _ := isOptionSet(options, initCRC64) + if isCRCSet { + initCRC = initCRCOpt.(uint64) + } + + listener := getProgressListener(options) + + handleOptions(headers, opts) + resp, err := bucket.Client.Conn.Do("POST", bucket.BucketName, request.ObjectKey, params, headers, + request.Reader, initCRC, listener) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + nextPosition, _ := strconv.ParseInt(resp.Headers.Get(HTTPHeaderOssNextAppendPosition), 10, 64) + result := &AppendObjectResult{ + NextPosition: nextPosition, + CRC: resp.ServerCRC, + } + + if bucket.getConfig().IsEnableCRC && isCRCSet { + err = checkCRC(resp, "AppendObject") + if err != nil { + return result, err + } + } + + return result, nil +} + +// DeleteObject deletes the object. +// +// objectKey the object key to delete. +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) DeleteObject(objectKey string) error { + params := map[string]interface{}{} + resp, err := bucket.do("DELETE", objectKey, params, nil, nil, nil) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusNoContent}) +} + +// DeleteObjects deletes multiple objects. +// +// objectKeys the object keys to delete. +// options the options for deleting objects. +// Supported option is DeleteObjectsQuiet which means it will not return error even deletion failed (not recommended). By default it's not used. +// +// DeleteObjectsResult the result object. +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) DeleteObjects(objectKeys []string, options ...Option) (DeleteObjectsResult, error) { + out := DeleteObjectsResult{} + dxml := deleteXML{} + for _, key := range objectKeys { + dxml.Objects = append(dxml.Objects, DeleteObject{Key: key}) + } + isQuiet, _ := findOption(options, deleteObjectsQuiet, false) + dxml.Quiet = isQuiet.(bool) + + bs, err := xml.Marshal(dxml) + if err != nil { + return out, err + } + buffer := new(bytes.Buffer) + buffer.Write(bs) + + contentType := http.DetectContentType(buffer.Bytes()) + options = append(options, ContentType(contentType)) + sum := md5.Sum(bs) + b64 := base64.StdEncoding.EncodeToString(sum[:]) + options = append(options, ContentMD5(b64)) + + params := map[string]interface{}{} + params["delete"] = nil + params["encoding-type"] = "url" + + resp, err := bucket.do("POST", "", params, options, buffer, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + if !dxml.Quiet { + if err = xmlUnmarshal(resp.Body, &out); err == nil { + err = decodeDeleteObjectsResult(&out) + } + } + return out, err +} + +// IsObjectExist checks if the object exists. +// +// bool flag of object's existence (true:exists; false:non-exist) when error is nil. +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) IsObjectExist(objectKey string) (bool, error) { + _, err := bucket.GetObjectMeta(objectKey) + if err == nil { + return true, nil + } + + switch err.(type) { + case ServiceError: + if err.(ServiceError).StatusCode == 404 { + return false, nil + } + } + + return false, err +} + +// ListObjects lists the objects under the current bucket. +// +// options it contains all the filters for listing objects. +// It could specify a prefix filter on object keys, the max keys count to return and the object key marker and the delimiter for grouping object names. +// The key marker means the returned objects' key must be greater than it in lexicographic order. +// +// For example, if the bucket has 8 objects, my-object-1, my-object-11, my-object-2, my-object-21, +// my-object-22, my-object-3, my-object-31, my-object-32. If the prefix is my-object-2 (no other filters), then it returns +// my-object-2, my-object-21, my-object-22 three objects. If the marker is my-object-22 (no other filters), then it returns +// my-object-3, my-object-31, my-object-32 three objects. If the max keys is 5, then it returns 5 objects. +// The three filters could be used together to achieve filter and paging functionality. +// If the prefix is the folder name, then it could list all files under this folder (including the files under its subfolders). +// But if the delimiter is specified with '/', then it only returns that folder's files (no subfolder's files). The direct subfolders are in the commonPrefixes properties. +// For example, if the bucket has three objects fun/test.jpg, fun/movie/001.avi, fun/movie/007.avi. And if the prefix is "fun/", then it returns all three objects. +// But if the delimiter is '/', then only "fun/test.jpg" is returned as files and fun/movie/ is returned as common prefix. +// +// For common usage scenario, check out sample/list_object.go. +// +// ListObjectsResponse the return value after operation succeeds (only valid when error is nil). +// +func (bucket Bucket) ListObjects(options ...Option) (ListObjectsResult, error) { + var out ListObjectsResult + + options = append(options, EncodingType("url")) + params, err := getRawParams(options) + if err != nil { + return out, err + } + + resp, err := bucket.do("GET", "", params, options, nil, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + if err != nil { + return out, err + } + + err = decodeListObjectsResult(&out) + return out, err +} + +// SetObjectMeta sets the metadata of the Object. +// +// objectKey object +// options options for setting the metadata. The valid options are CacheControl, ContentDisposition, ContentEncoding, Expires, +// ServerSideEncryption, and custom metadata. +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) SetObjectMeta(objectKey string, options ...Option) error { + options = append(options, MetadataDirective(MetaReplace)) + _, err := bucket.CopyObject(objectKey, objectKey, options...) + return err +} + +// GetObjectDetailedMeta gets the object's detailed metadata +// +// objectKey object key. +// options the constraints of the object. Only when the object meets the requirements this method will return the metadata. Otherwise returns error. Valid options are IfModifiedSince, IfUnmodifiedSince, +// IfMatch, IfNoneMatch. For more details check out https://help.aliyun.com/document_detail/oss/api-reference/object/HeadObject.html +// +// http.Header object meta when error is nil. +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) GetObjectDetailedMeta(objectKey string, options ...Option) (http.Header, error) { + params := map[string]interface{}{} + resp, err := bucket.do("HEAD", objectKey, params, options, nil, nil) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + return resp.Headers, nil +} + +// GetObjectMeta gets object metadata. +// +// GetObjectMeta is more lightweight than GetObjectDetailedMeta as it only returns basic metadata including ETag +// size, LastModified. The size information is in the HTTP header Content-Length. +// +// objectKey object key +// +// http.Header the object's metadata, valid when error is nil. +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) GetObjectMeta(objectKey string, options ...Option) (http.Header, error) { + params := map[string]interface{}{} + params["objectMeta"] = nil + //resp, err := bucket.do("GET", objectKey, "?objectMeta", "", nil, nil, nil) + resp, err := bucket.do("HEAD", objectKey, params, options, nil, nil) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + return resp.Headers, nil +} + +// SetObjectACL updates the object's ACL. +// +// Only the bucket's owner could update object's ACL which priority is higher than bucket's ACL. +// For example, if the bucket ACL is private and object's ACL is public-read-write. +// Then object's ACL is used and it means all users could read or write that object. +// When the object's ACL is not set, then bucket's ACL is used as the object's ACL. +// +// Object read operations include GetObject, HeadObject, CopyObject and UploadPartCopy on the source object; +// Object write operations include PutObject, PostObject, AppendObject, DeleteObject, DeleteMultipleObjects, +// CompleteMultipartUpload and CopyObject on target object. +// +// objectKey the target object key (to set the ACL on) +// objectAcl object ACL. Valid options are PrivateACL, PublicReadACL, PublicReadWriteACL. +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) SetObjectACL(objectKey string, objectACL ACLType) error { + options := []Option{ObjectACL(objectACL)} + params := map[string]interface{}{} + params["acl"] = nil + resp, err := bucket.do("PUT", objectKey, params, options, nil, nil) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusOK}) +} + +// GetObjectACL gets object's ACL +// +// objectKey the object to get ACL from. +// +// GetObjectACLResult the result object when error is nil. GetObjectACLResult.Acl is the object ACL. +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) GetObjectACL(objectKey string) (GetObjectACLResult, error) { + var out GetObjectACLResult + params := map[string]interface{}{} + params["acl"] = nil + resp, err := bucket.do("GET", objectKey, params, nil, nil, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + return out, err +} + +// PutSymlink creates a symlink (to point to an existing object) +// +// Symlink cannot point to another symlink. +// When creating a symlink, it does not check the existence of the target file, and does not check if the target file is symlink. +// Neither it checks the caller's permission on the target file. All these checks are deferred to the actual GetObject call via this symlink. +// If trying to add an existing file, as long as the caller has the write permission, the existing one will be overwritten. +// If the x-oss-meta- is specified, it will be added as the metadata of the symlink file. +// +// symObjectKey the symlink object's key. +// targetObjectKey the target object key to point to. +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) PutSymlink(symObjectKey string, targetObjectKey string, options ...Option) error { + options = append(options, symlinkTarget(url.QueryEscape(targetObjectKey))) + params := map[string]interface{}{} + params["symlink"] = nil + resp, err := bucket.do("PUT", symObjectKey, params, options, nil, nil) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusOK}) +} + +// GetSymlink gets the symlink object with the specified key. +// If the symlink object does not exist, returns 404. +// +// objectKey the symlink object's key. +// +// error it's nil if no error, otherwise it's an error object. +// When error is nil, the target file key is in the X-Oss-Symlink-Target header of the returned object. +// +func (bucket Bucket) GetSymlink(objectKey string) (http.Header, error) { + params := map[string]interface{}{} + params["symlink"] = nil + resp, err := bucket.do("GET", objectKey, params, nil, nil, nil) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + targetObjectKey := resp.Headers.Get(HTTPHeaderOssSymlinkTarget) + targetObjectKey, err = url.QueryUnescape(targetObjectKey) + if err != nil { + return resp.Headers, err + } + resp.Headers.Set(HTTPHeaderOssSymlinkTarget, targetObjectKey) + return resp.Headers, err +} + +// RestoreObject restores the object from the archive storage. +// +// An archive object is in cold status by default and it cannot be accessed. +// When restore is called on the cold object, it will become available for access after some time. +// If multiple restores are called on the same file when the object is being restored, server side does nothing for additional calls but returns success. +// By default, the restored object is available for access for one day. After that it will be unavailable again. +// But if another RestoreObject are called after the file is restored, then it will extend one day's access time of that object, up to 7 days. +// +// objectKey object key to restore. +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) RestoreObject(objectKey string) error { + params := map[string]interface{}{} + params["restore"] = nil + resp, err := bucket.do("POST", objectKey, params, nil, nil, nil) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusOK, http.StatusAccepted}) +} + +// SignURL signs the URL. Users could access the object directly with this URL without getting the AK. +// +// objectKey the target object to sign. +// signURLConfig the configuration for the signed URL +// +// string returns the signed URL, when error is nil. +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) SignURL(objectKey string, method HTTPMethod, expiredInSec int64, options ...Option) (string, error) { + if expiredInSec < 0 { + return "", fmt.Errorf("invalid expires: %d, expires must bigger than 0", expiredInSec) + } + expiration := time.Now().Unix() + expiredInSec + + params, err := getRawParams(options) + if err != nil { + return "", err + } + + headers := make(map[string]string) + err = handleOptions(headers, options) + if err != nil { + return "", err + } + + return bucket.Client.Conn.signURL(method, bucket.BucketName, objectKey, expiration, params, headers), nil +} + +// PutObjectWithURL uploads an object with the URL. If the object exists, it will be overwritten. +// PutObjectWithURL It will not generate minetype according to the key name. +// +// signedURL signed URL. +// reader io.Reader the read instance for reading the data for the upload. +// options the options for uploading the data. The valid options are CacheControl, ContentDisposition, ContentEncoding, +// Expires, ServerSideEncryption, ObjectACL and custom metadata. Check out the following link for details: +// https://help.aliyun.com/document_detail/oss/api-reference/object/PutObject.html +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) PutObjectWithURL(signedURL string, reader io.Reader, options ...Option) error { + resp, err := bucket.DoPutObjectWithURL(signedURL, reader, options) + if err != nil { + return err + } + defer resp.Body.Close() + + return err +} + +// PutObjectFromFileWithURL uploads an object from a local file with the signed URL. +// PutObjectFromFileWithURL It does not generate mimetype according to object key's name or the local file name. +// +// signedURL the signed URL. +// filePath local file path, such as dirfile.txt, for uploading. +// options options for uploading, same as the options in PutObject function. +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) PutObjectFromFileWithURL(signedURL, filePath string, options ...Option) error { + fd, err := os.Open(filePath) + if err != nil { + return err + } + defer fd.Close() + + resp, err := bucket.DoPutObjectWithURL(signedURL, fd, options) + if err != nil { + return err + } + defer resp.Body.Close() + + return err +} + +// DoPutObjectWithURL is the actual API that does the upload with URL work(internal for SDK) +// +// signedURL the signed URL. +// reader io.Reader the read instance for getting the data to upload. +// options options for uploading. +// +// Response the response object which contains the HTTP response. +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) DoPutObjectWithURL(signedURL string, reader io.Reader, options []Option) (*Response, error) { + listener := getProgressListener(options) + + params := map[string]interface{}{} + resp, err := bucket.doURL("PUT", signedURL, params, options, reader, listener) + if err != nil { + return nil, err + } + + if bucket.getConfig().IsEnableCRC { + err = checkCRC(resp, "DoPutObjectWithURL") + if err != nil { + return resp, err + } + } + + err = checkRespCode(resp.StatusCode, []int{http.StatusOK}) + + return resp, err +} + +// GetObjectWithURL downloads the object and returns the reader instance, with the signed URL. +// +// signedURL the signed URL. +// options options for downloading the object. Valid options are IfModifiedSince, IfUnmodifiedSince, IfMatch, +// IfNoneMatch, AcceptEncoding. For more information, check out the following link: +// https://help.aliyun.com/document_detail/oss/api-reference/object/GetObject.html +// +// io.ReadCloser the reader object for getting the data from response. It needs be closed after the usage. It's only valid when error is nil. +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) GetObjectWithURL(signedURL string, options ...Option) (io.ReadCloser, error) { + result, err := bucket.DoGetObjectWithURL(signedURL, options) + if err != nil { + return nil, err + } + return result.Response, nil +} + +// GetObjectToFileWithURL downloads the object into a local file with the signed URL. +// +// signedURL the signed URL +// filePath the local file path to download to. +// options the options for downloading object. Check out the parameter options in function GetObject for the reference. +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) GetObjectToFileWithURL(signedURL, filePath string, options ...Option) error { + tempFilePath := filePath + TempFileSuffix + + // Get the object's content + result, err := bucket.DoGetObjectWithURL(signedURL, options) + if err != nil { + return err + } + defer result.Response.Close() + + // If the file does not exist, create one. If exists, then overwrite it. + fd, err := os.OpenFile(tempFilePath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, FilePermMode) + if err != nil { + return err + } + + // Save the data to the file. + _, err = io.Copy(fd, result.Response.Body) + fd.Close() + if err != nil { + return err + } + + // Compare the CRC value. If CRC values do not match, return error. + hasRange, _, _ := isOptionSet(options, HTTPHeaderRange) + encodeOpt, _ := findOption(options, HTTPHeaderAcceptEncoding, nil) + acceptEncoding := "" + if encodeOpt != nil { + acceptEncoding = encodeOpt.(string) + } + + if bucket.getConfig().IsEnableCRC && !hasRange && acceptEncoding != "gzip" { + result.Response.ClientCRC = result.ClientCRC.Sum64() + err = checkCRC(result.Response, "GetObjectToFileWithURL") + if err != nil { + os.Remove(tempFilePath) + return err + } + } + + return os.Rename(tempFilePath, filePath) +} + +// DoGetObjectWithURL is the actual API that downloads the file with the signed URL. +// +// signedURL the signed URL. +// options the options for getting object. Check out parameter options in GetObject for the reference. +// +// GetObjectResult the result object when the error is nil. +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) DoGetObjectWithURL(signedURL string, options []Option) (*GetObjectResult, error) { + params, _ := getRawParams(options) + resp, err := bucket.doURL("GET", signedURL, params, options, nil, nil) + if err != nil { + return nil, err + } + + result := &GetObjectResult{ + Response: resp, + } + + // CRC + var crcCalc hash.Hash64 + hasRange, _, _ := isOptionSet(options, HTTPHeaderRange) + if bucket.getConfig().IsEnableCRC && !hasRange { + crcCalc = crc64.New(crcTable()) + result.ServerCRC = resp.ServerCRC + result.ClientCRC = crcCalc + } + + // Progress + listener := getProgressListener(options) + + contentLen, _ := strconv.ParseInt(resp.Headers.Get(HTTPHeaderContentLength), 10, 64) + resp.Body = TeeReader(resp.Body, crcCalc, contentLen, listener, nil) + + return result, nil +} + +// +// ProcessObject apply process on the specified image file. +// +// The supported process includes resize, rotate, crop, watermark, format, +// udf, customized style, etc. +// +// +// objectKey object key to process. +// process process string, such as "image/resize,w_100|sys/saveas,o_dGVzdC5qcGc,b_dGVzdA" +// +// error it's nil if no error, otherwise it's an error object. +// +func (bucket Bucket) ProcessObject(objectKey string, process string) (ProcessObjectResult, error) { + var out ProcessObjectResult + params := map[string]interface{}{} + params["x-oss-process"] = nil + processData := fmt.Sprintf("%v=%v", "x-oss-process", process) + data := strings.NewReader(processData) + resp, err := bucket.do("POST", objectKey, params, nil, data, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = jsonUnmarshal(resp.Body, &out) + return out, err +} + +// Private +func (bucket Bucket) do(method, objectName string, params map[string]interface{}, options []Option, + data io.Reader, listener ProgressListener) (*Response, error) { + headers := make(map[string]string) + err := handleOptions(headers, options) + if err != nil { + return nil, err + } + return bucket.Client.Conn.Do(method, bucket.BucketName, objectName, + params, headers, data, 0, listener) +} + +func (bucket Bucket) doURL(method HTTPMethod, signedURL string, params map[string]interface{}, options []Option, + data io.Reader, listener ProgressListener) (*Response, error) { + headers := make(map[string]string) + err := handleOptions(headers, options) + if err != nil { + return nil, err + } + return bucket.Client.Conn.DoURL(method, signedURL, headers, data, 0, listener) +} + +func (bucket Bucket) getConfig() *Config { + return bucket.Client.Config +} + +func addContentType(options []Option, keys ...string) []Option { + typ := TypeByExtension("") + for _, key := range keys { + typ = TypeByExtension(key) + if typ != "" { + break + } + } + + if typ == "" { + typ = "application/octet-stream" + } + + opts := []Option{ContentType(typ)} + opts = append(opts, options...) + + return opts +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/client.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/client.go new file mode 100644 index 000000000..d29351c87 --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/client.go @@ -0,0 +1,775 @@ +// Package oss implements functions for access oss service. +// It has two main struct Client and Bucket. +package oss + +import ( + "bytes" + "encoding/xml" + "io" + "net/http" + "strings" + "time" +) + +// Client SDK's entry point. It's for bucket related options such as create/delete/set bucket (such as set/get ACL/lifecycle/referer/logging/website). +// Object related operations are done by Bucket class. +// Users use oss.New to create Client instance. +// +type ( + // Client OSS client + Client struct { + Config *Config // OSS client configuration + Conn *Conn // Send HTTP request + HTTPClient *http.Client //http.Client to use - if nil will make its own + } + + // ClientOption client option such as UseCname, Timeout, SecurityToken. + ClientOption func(*Client) +) + +// New creates a new client. +// +// endpoint the OSS datacenter endpoint such as http://oss-cn-hangzhou.aliyuncs.com . +// accessKeyId access key Id. +// accessKeySecret access key secret. +// +// Client creates the new client instance, the returned value is valid when error is nil. +// error it's nil if no error, otherwise it's an error object. +// +func New(endpoint, accessKeyID, accessKeySecret string, options ...ClientOption) (*Client, error) { + // Configuration + config := getDefaultOssConfig() + config.Endpoint = endpoint + config.AccessKeyID = accessKeyID + config.AccessKeySecret = accessKeySecret + + // URL parse + url := &urlMaker{} + url.Init(config.Endpoint, config.IsCname, config.IsUseProxy) + + // HTTP connect + conn := &Conn{config: config, url: url} + + // OSS client + client := &Client{ + Config: config, + Conn: conn, + } + + // Client options parse + for _, option := range options { + option(client) + } + + // Create HTTP connection + err := conn.init(config, url, client.HTTPClient) + + return client, err +} + +// Bucket gets the bucket instance. +// +// bucketName the bucket name. +// Bucket the bucket object, when error is nil. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) Bucket(bucketName string) (*Bucket, error) { + return &Bucket{ + client, + bucketName, + }, nil +} + +// CreateBucket creates a bucket. +// +// bucketName the bucket name, it's globably unique and immutable. The bucket name can only consist of lowercase letters, numbers and dash ('-'). +// It must start with lowercase letter or number and the length can only be between 3 and 255. +// options options for creating the bucket, with optional ACL. The ACL could be ACLPrivate, ACLPublicRead, and ACLPublicReadWrite. By default it's ACLPrivate. +// It could also be specified with StorageClass option, which supports StorageStandard, StorageIA(infrequent access), StorageArchive. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) CreateBucket(bucketName string, options ...Option) error { + headers := make(map[string]string) + handleOptions(headers, options) + + buffer := new(bytes.Buffer) + + isOptSet, val, _ := isOptionSet(options, storageClass) + if isOptSet { + cbConfig := createBucketConfiguration{StorageClass: val.(StorageClassType)} + bs, err := xml.Marshal(cbConfig) + if err != nil { + return err + } + buffer.Write(bs) + + contentType := http.DetectContentType(buffer.Bytes()) + headers[HTTPHeaderContentType] = contentType + } + + params := map[string]interface{}{} + resp, err := client.do("PUT", bucketName, params, headers, buffer) + if err != nil { + return err + } + + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusOK}) +} + +// ListBuckets lists buckets of the current account under the given endpoint, with optional filters. +// +// options specifies the filters such as Prefix, Marker and MaxKeys. Prefix is the bucket name's prefix filter. +// And marker makes sure the returned buckets' name are greater than it in lexicographic order. +// Maxkeys limits the max keys to return, and by default it's 100 and up to 1000. +// For the common usage scenario, please check out list_bucket.go in the sample. +// ListBucketsResponse the response object if error is nil. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) ListBuckets(options ...Option) (ListBucketsResult, error) { + var out ListBucketsResult + + params, err := getRawParams(options) + if err != nil { + return out, err + } + + resp, err := client.do("GET", "", params, nil, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + return out, err +} + +// IsBucketExist checks if the bucket exists +// +// bucketName the bucket name. +// +// bool true if it exists, and it's only valid when error is nil. +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) IsBucketExist(bucketName string) (bool, error) { + listRes, err := client.ListBuckets(Prefix(bucketName), MaxKeys(1)) + if err != nil { + return false, err + } + + if len(listRes.Buckets) == 1 && listRes.Buckets[0].Name == bucketName { + return true, nil + } + return false, nil +} + +// DeleteBucket deletes the bucket. Only empty bucket can be deleted (no object and parts). +// +// bucketName the bucket name. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) DeleteBucket(bucketName string) error { + params := map[string]interface{}{} + resp, err := client.do("DELETE", bucketName, params, nil, nil) + if err != nil { + return err + } + + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusNoContent}) +} + +// GetBucketLocation gets the bucket location. +// +// Checks out the following link for more information : +// https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html +// +// bucketName the bucket name +// +// string bucket's datacenter location +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) GetBucketLocation(bucketName string) (string, error) { + params := map[string]interface{}{} + params["location"] = nil + resp, err := client.do("GET", bucketName, params, nil, nil) + if err != nil { + return "", err + } + defer resp.Body.Close() + + var LocationConstraint string + err = xmlUnmarshal(resp.Body, &LocationConstraint) + return LocationConstraint, err +} + +// SetBucketACL sets bucket's ACL. +// +// bucketName the bucket name +// bucketAcl the bucket ACL: ACLPrivate, ACLPublicRead and ACLPublicReadWrite. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) SetBucketACL(bucketName string, bucketACL ACLType) error { + headers := map[string]string{HTTPHeaderOssACL: string(bucketACL)} + params := map[string]interface{}{} + resp, err := client.do("PUT", bucketName, params, headers, nil) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusOK}) +} + +// GetBucketACL gets the bucket ACL. +// +// bucketName the bucket name. +// +// GetBucketAclResponse the result object, and it's only valid when error is nil. +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) GetBucketACL(bucketName string) (GetBucketACLResult, error) { + var out GetBucketACLResult + params := map[string]interface{}{} + params["acl"] = nil + resp, err := client.do("GET", bucketName, params, nil, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + return out, err +} + +// SetBucketLifecycle sets the bucket's lifecycle. +// +// For more information, checks out following link: +// https://help.aliyun.com/document_detail/oss/user_guide/manage_object/object_lifecycle.html +// +// bucketName the bucket name. +// rules the lifecycle rules. There're two kind of rules: absolute time expiration and relative time expiration in days and day/month/year respectively. +// Check out sample/bucket_lifecycle.go for more details. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) SetBucketLifecycle(bucketName string, rules []LifecycleRule) error { + lxml := lifecycleXML{Rules: convLifecycleRule(rules)} + bs, err := xml.Marshal(lxml) + if err != nil { + return err + } + buffer := new(bytes.Buffer) + buffer.Write(bs) + + contentType := http.DetectContentType(buffer.Bytes()) + headers := map[string]string{} + headers[HTTPHeaderContentType] = contentType + + params := map[string]interface{}{} + params["lifecycle"] = nil + resp, err := client.do("PUT", bucketName, params, headers, buffer) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusOK}) +} + +// DeleteBucketLifecycle deletes the bucket's lifecycle. +// +// +// bucketName the bucket name. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) DeleteBucketLifecycle(bucketName string) error { + params := map[string]interface{}{} + params["lifecycle"] = nil + resp, err := client.do("DELETE", bucketName, params, nil, nil) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusNoContent}) +} + +// GetBucketLifecycle gets the bucket's lifecycle settings. +// +// bucketName the bucket name. +// +// GetBucketLifecycleResponse the result object upon successful request. It's only valid when error is nil. +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) GetBucketLifecycle(bucketName string) (GetBucketLifecycleResult, error) { + var out GetBucketLifecycleResult + params := map[string]interface{}{} + params["lifecycle"] = nil + resp, err := client.do("GET", bucketName, params, nil, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + return out, err +} + +// SetBucketReferer sets the bucket's referer whitelist and the flag if allowing empty referrer. +// +// To avoid stealing link on OSS data, OSS supports the HTTP referrer header. A whitelist referrer could be set either by API or web console, as well as +// the allowing empty referrer flag. Note that this applies to requests from webbrowser only. +// For example, for a bucket os-example and its referrer http://www.aliyun.com, all requests from this URL could access the bucket. +// For more information, please check out this link : +// https://help.aliyun.com/document_detail/oss/user_guide/security_management/referer.html +// +// bucketName the bucket name. +// referers the referrer white list. A bucket could have a referrer list and each referrer supports one '*' and multiple '?' as wildcards. +// The sample could be found in sample/bucket_referer.go +// allowEmptyReferer the flag of allowing empty referrer. By default it's true. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) SetBucketReferer(bucketName string, referers []string, allowEmptyReferer bool) error { + rxml := RefererXML{} + rxml.AllowEmptyReferer = allowEmptyReferer + if referers == nil { + rxml.RefererList = append(rxml.RefererList, "") + } else { + for _, referer := range referers { + rxml.RefererList = append(rxml.RefererList, referer) + } + } + + bs, err := xml.Marshal(rxml) + if err != nil { + return err + } + buffer := new(bytes.Buffer) + buffer.Write(bs) + + contentType := http.DetectContentType(buffer.Bytes()) + headers := map[string]string{} + headers[HTTPHeaderContentType] = contentType + + params := map[string]interface{}{} + params["referer"] = nil + resp, err := client.do("PUT", bucketName, params, headers, buffer) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusOK}) +} + +// GetBucketReferer gets the bucket's referrer white list. +// +// bucketName the bucket name. +// +// GetBucketRefererResponse the result object upon successful request. It's only valid when error is nil. +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) GetBucketReferer(bucketName string) (GetBucketRefererResult, error) { + var out GetBucketRefererResult + params := map[string]interface{}{} + params["referer"] = nil + resp, err := client.do("GET", bucketName, params, nil, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + return out, err +} + +// SetBucketLogging sets the bucket logging settings. +// +// OSS could automatically store the access log. Only the bucket owner could enable the logging. +// Once enabled, OSS would save all the access log into hourly log files in a specified bucket. +// For more information, please check out https://help.aliyun.com/document_detail/oss/user_guide/security_management/logging.html +// +// bucketName bucket name to enable the log. +// targetBucket the target bucket name to store the log files. +// targetPrefix the log files' prefix. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) SetBucketLogging(bucketName, targetBucket, targetPrefix string, + isEnable bool) error { + var err error + var bs []byte + if isEnable { + lxml := LoggingXML{} + lxml.LoggingEnabled.TargetBucket = targetBucket + lxml.LoggingEnabled.TargetPrefix = targetPrefix + bs, err = xml.Marshal(lxml) + } else { + lxml := loggingXMLEmpty{} + bs, err = xml.Marshal(lxml) + } + + if err != nil { + return err + } + + buffer := new(bytes.Buffer) + buffer.Write(bs) + + contentType := http.DetectContentType(buffer.Bytes()) + headers := map[string]string{} + headers[HTTPHeaderContentType] = contentType + + params := map[string]interface{}{} + params["logging"] = nil + resp, err := client.do("PUT", bucketName, params, headers, buffer) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusOK}) +} + +// DeleteBucketLogging deletes the logging configuration to disable the logging on the bucket. +// +// bucketName the bucket name to disable the logging. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) DeleteBucketLogging(bucketName string) error { + params := map[string]interface{}{} + params["logging"] = nil + resp, err := client.do("DELETE", bucketName, params, nil, nil) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusNoContent}) +} + +// GetBucketLogging gets the bucket's logging settings +// +// bucketName the bucket name +// GetBucketLoggingResponse the result object upon successful request. It's only valid when error is nil. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) GetBucketLogging(bucketName string) (GetBucketLoggingResult, error) { + var out GetBucketLoggingResult + params := map[string]interface{}{} + params["logging"] = nil + resp, err := client.do("GET", bucketName, params, nil, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + return out, err +} + +// SetBucketWebsite sets the bucket's static website's index and error page. +// +// OSS supports static web site hosting for the bucket data. When the bucket is enabled with that, you can access the file in the bucket like the way to access a static website. +// For more information, please check out: https://help.aliyun.com/document_detail/oss/user_guide/static_host_website.html +// +// bucketName the bucket name to enable static web site. +// indexDocument index page. +// errorDocument error page. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) SetBucketWebsite(bucketName, indexDocument, errorDocument string) error { + wxml := WebsiteXML{} + wxml.IndexDocument.Suffix = indexDocument + wxml.ErrorDocument.Key = errorDocument + + bs, err := xml.Marshal(wxml) + if err != nil { + return err + } + buffer := new(bytes.Buffer) + buffer.Write(bs) + + contentType := http.DetectContentType(buffer.Bytes()) + headers := make(map[string]string) + headers[HTTPHeaderContentType] = contentType + + params := map[string]interface{}{} + params["website"] = nil + resp, err := client.do("PUT", bucketName, params, headers, buffer) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusOK}) +} + +// DeleteBucketWebsite deletes the bucket's static web site settings. +// +// bucketName the bucket name. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) DeleteBucketWebsite(bucketName string) error { + params := map[string]interface{}{} + params["website"] = nil + resp, err := client.do("DELETE", bucketName, params, nil, nil) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusNoContent}) +} + +// GetBucketWebsite gets the bucket's default page (index page) and the error page. +// +// bucketName the bucket name +// +// GetBucketWebsiteResponse the result object upon successful request. It's only valid when error is nil. +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) GetBucketWebsite(bucketName string) (GetBucketWebsiteResult, error) { + var out GetBucketWebsiteResult + params := map[string]interface{}{} + params["website"] = nil + resp, err := client.do("GET", bucketName, params, nil, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + return out, err +} + +// SetBucketCORS sets the bucket's CORS rules +// +// For more information, please check out https://help.aliyun.com/document_detail/oss/user_guide/security_management/cors.html +// +// bucketName the bucket name +// corsRules the CORS rules to set. The related sample code is in sample/bucket_cors.go. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) SetBucketCORS(bucketName string, corsRules []CORSRule) error { + corsxml := CORSXML{} + for _, v := range corsRules { + cr := CORSRule{} + cr.AllowedMethod = v.AllowedMethod + cr.AllowedOrigin = v.AllowedOrigin + cr.AllowedHeader = v.AllowedHeader + cr.ExposeHeader = v.ExposeHeader + cr.MaxAgeSeconds = v.MaxAgeSeconds + corsxml.CORSRules = append(corsxml.CORSRules, cr) + } + + bs, err := xml.Marshal(corsxml) + if err != nil { + return err + } + buffer := new(bytes.Buffer) + buffer.Write(bs) + + contentType := http.DetectContentType(buffer.Bytes()) + headers := map[string]string{} + headers[HTTPHeaderContentType] = contentType + + params := map[string]interface{}{} + params["cors"] = nil + resp, err := client.do("PUT", bucketName, params, headers, buffer) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusOK}) +} + +// DeleteBucketCORS deletes the bucket's static website settings. +// +// bucketName the bucket name. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) DeleteBucketCORS(bucketName string) error { + params := map[string]interface{}{} + params["cors"] = nil + resp, err := client.do("DELETE", bucketName, params, nil, nil) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusNoContent}) +} + +// GetBucketCORS gets the bucket's CORS settings. +// +// bucketName the bucket name. +// GetBucketCORSResult the result object upon successful request. It's only valid when error is nil. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) GetBucketCORS(bucketName string) (GetBucketCORSResult, error) { + var out GetBucketCORSResult + params := map[string]interface{}{} + params["cors"] = nil + resp, err := client.do("GET", bucketName, params, nil, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + return out, err +} + +// GetBucketInfo gets the bucket information. +// +// bucketName the bucket name. +// GetBucketInfoResult the result object upon successful request. It's only valid when error is nil. +// +// error it's nil if no error, otherwise it's an error object. +// +func (client Client) GetBucketInfo(bucketName string) (GetBucketInfoResult, error) { + var out GetBucketInfoResult + params := map[string]interface{}{} + params["bucketInfo"] = nil + resp, err := client.do("GET", bucketName, params, nil, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + return out, err +} + +// UseCname sets the flag of using CName. By default it's false. +// +// isUseCname true: the endpoint has the CName, false: the endpoint does not have cname. Default is false. +// +func UseCname(isUseCname bool) ClientOption { + return func(client *Client) { + client.Config.IsCname = isUseCname + client.Conn.url.Init(client.Config.Endpoint, client.Config.IsCname, client.Config.IsUseProxy) + } +} + +// Timeout sets the HTTP timeout in seconds. +// +// connectTimeoutSec HTTP timeout in seconds. Default is 10 seconds. 0 means infinite (not recommended) +// readWriteTimeout HTTP read or write's timeout in seconds. Default is 20 seconds. 0 means infinite. +// +func Timeout(connectTimeoutSec, readWriteTimeout int64) ClientOption { + return func(client *Client) { + client.Config.HTTPTimeout.ConnectTimeout = + time.Second * time.Duration(connectTimeoutSec) + client.Config.HTTPTimeout.ReadWriteTimeout = + time.Second * time.Duration(readWriteTimeout) + client.Config.HTTPTimeout.HeaderTimeout = + time.Second * time.Duration(readWriteTimeout) + client.Config.HTTPTimeout.IdleConnTimeout = + time.Second * time.Duration(readWriteTimeout) + client.Config.HTTPTimeout.LongTimeout = + time.Second * time.Duration(readWriteTimeout*10) + } +} + +// SecurityToken sets the temporary user's SecurityToken. +// +// token STS token +// +func SecurityToken(token string) ClientOption { + return func(client *Client) { + client.Config.SecurityToken = strings.TrimSpace(token) + } +} + +// EnableMD5 enables MD5 validation. +// +// isEnableMD5 true: enable MD5 validation; false: disable MD5 validation. +// +func EnableMD5(isEnableMD5 bool) ClientOption { + return func(client *Client) { + client.Config.IsEnableMD5 = isEnableMD5 + } +} + +// MD5ThresholdCalcInMemory sets the memory usage threshold for computing the MD5, default is 16MB. +// +// threshold the memory threshold in bytes. When the uploaded content is more than 16MB, the temp file is used for computing the MD5. +// +func MD5ThresholdCalcInMemory(threshold int64) ClientOption { + return func(client *Client) { + client.Config.MD5Threshold = threshold + } +} + +// EnableCRC enables the CRC checksum. Default is true. +// +// isEnableCRC true: enable CRC checksum; false: disable the CRC checksum. +// +func EnableCRC(isEnableCRC bool) ClientOption { + return func(client *Client) { + client.Config.IsEnableCRC = isEnableCRC + } +} + +// UserAgent specifies UserAgent. The default is aliyun-sdk-go/1.2.0 (windows/-/amd64;go1.5.2). +// +// userAgent the user agent string. +// +func UserAgent(userAgent string) ClientOption { + return func(client *Client) { + client.Config.UserAgent = userAgent + } +} + +// Proxy sets the proxy (optional). The default is not using proxy. +// +// proxyHost the proxy host in the format "host:port". For example, proxy.com:80 . +// +func Proxy(proxyHost string) ClientOption { + return func(client *Client) { + client.Config.IsUseProxy = true + client.Config.ProxyHost = proxyHost + client.Conn.url.Init(client.Config.Endpoint, client.Config.IsCname, client.Config.IsUseProxy) + } +} + +// AuthProxy sets the proxy information with user name and password. +// +// proxyHost the proxy host in the format "host:port". For example, proxy.com:80 . +// proxyUser the proxy user name. +// proxyPassword the proxy password. +// +func AuthProxy(proxyHost, proxyUser, proxyPassword string) ClientOption { + return func(client *Client) { + client.Config.IsUseProxy = true + client.Config.ProxyHost = proxyHost + client.Config.IsAuthProxy = true + client.Config.ProxyUser = proxyUser + client.Config.ProxyPassword = proxyPassword + client.Conn.url.Init(client.Config.Endpoint, client.Config.IsCname, client.Config.IsUseProxy) + } +} + +// +// HTTPClient sets the http.Client in use to the one passed in +// +func HTTPClient(HTTPClient *http.Client) ClientOption { + return func(client *Client) { + client.HTTPClient = HTTPClient + } +} + +// Private +func (client Client) do(method, bucketName string, params map[string]interface{}, + headers map[string]string, data io.Reader) (*Response, error) { + return client.Conn.Do(method, bucketName, "", params, + headers, data, 0, nil) +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/conf.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/conf.go new file mode 100644 index 000000000..f5db93e24 --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/conf.go @@ -0,0 +1,77 @@ +package oss + +import ( + "time" +) + +// HTTPTimeout defines HTTP timeout. +type HTTPTimeout struct { + ConnectTimeout time.Duration + ReadWriteTimeout time.Duration + HeaderTimeout time.Duration + LongTimeout time.Duration + IdleConnTimeout time.Duration +} + +type HTTPMaxConns struct { + MaxIdleConns int + MaxIdleConnsPerHost int +} + +// Config defines oss configuration +type Config struct { + Endpoint string // OSS endpoint + AccessKeyID string // AccessId + AccessKeySecret string // AccessKey + RetryTimes uint // Retry count by default it's 5. + UserAgent string // SDK name/version/system information + IsDebug bool // Enable debug mode. Default is false. + Timeout uint // Timeout in seconds. By default it's 60. + SecurityToken string // STS Token + IsCname bool // If cname is in the endpoint. + HTTPTimeout HTTPTimeout // HTTP timeout + HTTPMaxConns HTTPMaxConns // Http max connections + IsUseProxy bool // Flag of using proxy. + ProxyHost string // Flag of using proxy host. + IsAuthProxy bool // Flag of needing authentication. + ProxyUser string // Proxy user + ProxyPassword string // Proxy password + IsEnableMD5 bool // Flag of enabling MD5 for upload. + MD5Threshold int64 // Memory footprint threshold for each MD5 computation (16MB is the default), in byte. When the data is more than that, temp file is used. + IsEnableCRC bool // Flag of enabling CRC for upload. +} + +// getDefaultOssConfig gets the default configuration. +func getDefaultOssConfig() *Config { + config := Config{} + + config.Endpoint = "" + config.AccessKeyID = "" + config.AccessKeySecret = "" + config.RetryTimes = 5 + config.IsDebug = false + config.UserAgent = userAgent() + config.Timeout = 60 // Seconds + config.SecurityToken = "" + config.IsCname = false + + config.HTTPTimeout.ConnectTimeout = time.Second * 30 // 30s + config.HTTPTimeout.ReadWriteTimeout = time.Second * 60 // 60s + config.HTTPTimeout.HeaderTimeout = time.Second * 60 // 60s + config.HTTPTimeout.LongTimeout = time.Second * 300 // 300s + config.HTTPTimeout.IdleConnTimeout = time.Second * 50 // 50s + config.HTTPMaxConns.MaxIdleConns = 100 + config.HTTPMaxConns.MaxIdleConnsPerHost = 100 + + config.IsUseProxy = false + config.ProxyHost = "" + config.IsAuthProxy = false + config.ProxyUser = "" + config.ProxyPassword = "" + + config.MD5Threshold = 16 * 1024 * 1024 // 16MB + config.IsEnableMD5 = false + config.IsEnableCRC = true + + return &config +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/conn.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/conn.go new file mode 100644 index 000000000..74f768e5a --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/conn.go @@ -0,0 +1,620 @@ +package oss + +import ( + "bytes" + "crypto/md5" + "encoding/base64" + "encoding/json" + "encoding/xml" + "fmt" + "hash" + "io" + "io/ioutil" + "net" + "net/http" + "net/url" + "os" + "sort" + "strconv" + "strings" + "time" +) + +// Conn defines OSS Conn +type Conn struct { + config *Config + url *urlMaker + client *http.Client +} + +var signKeyList = []string{"acl", "uploads", "location", "cors", "logging", "website", "referer", "lifecycle", "delete", "append", "tagging", "objectMeta", "uploadId", "partNumber", "security-token", "position", "img", "style", "styleName", "replication", "replicationProgress", "replicationLocation", "cname", "bucketInfo", "comp", "qos", "live", "status", "vod", "startTime", "endTime", "symlink", "x-oss-process", "response-content-type", "response-content-language", "response-expires", "response-cache-control", "response-content-disposition", "response-content-encoding", "udf", "udfName", "udfImage", "udfId", "udfImageDesc", "udfApplication", "comp", "udfApplicationLog", "restore", "callback", "callback-var"} + +// init initializes Conn +func (conn *Conn) init(config *Config, urlMaker *urlMaker, client *http.Client) error { + if client == nil { + // New transport + transport := newTransport(conn, config) + + // Proxy + if conn.config.IsUseProxy { + proxyURL, err := url.Parse(config.ProxyHost) + if err != nil { + return err + } + transport.Proxy = http.ProxyURL(proxyURL) + } + client = &http.Client{Transport: transport} + } + + conn.config = config + conn.url = urlMaker + conn.client = client + + return nil +} + +// Do sends request and returns the response +func (conn Conn) Do(method, bucketName, objectName string, params map[string]interface{}, headers map[string]string, + data io.Reader, initCRC uint64, listener ProgressListener) (*Response, error) { + urlParams := conn.getURLParams(params) + subResource := conn.getSubResource(params) + uri := conn.url.getURL(bucketName, objectName, urlParams) + resource := conn.url.getResource(bucketName, objectName, subResource) + return conn.doRequest(method, uri, resource, headers, data, initCRC, listener) +} + +// DoURL sends the request with signed URL and returns the response result. +func (conn Conn) DoURL(method HTTPMethod, signedURL string, headers map[string]string, + data io.Reader, initCRC uint64, listener ProgressListener) (*Response, error) { + // Get URI from signedURL + uri, err := url.ParseRequestURI(signedURL) + if err != nil { + return nil, err + } + + m := strings.ToUpper(string(method)) + req := &http.Request{ + Method: m, + URL: uri, + Proto: "HTTP/1.1", + ProtoMajor: 1, + ProtoMinor: 1, + Header: make(http.Header), + Host: uri.Host, + } + + tracker := &readerTracker{completedBytes: 0} + fd, crc := conn.handleBody(req, data, initCRC, listener, tracker) + if fd != nil { + defer func() { + fd.Close() + os.Remove(fd.Name()) + }() + } + + if conn.config.IsAuthProxy { + auth := conn.config.ProxyUser + ":" + conn.config.ProxyPassword + basic := "Basic " + base64.StdEncoding.EncodeToString([]byte(auth)) + req.Header.Set("Proxy-Authorization", basic) + } + + req.Header.Set(HTTPHeaderHost, conn.config.Endpoint) + req.Header.Set(HTTPHeaderUserAgent, conn.config.UserAgent) + + if headers != nil { + for k, v := range headers { + req.Header.Set(k, v) + } + } + + // Transfer started + event := newProgressEvent(TransferStartedEvent, 0, req.ContentLength) + publishProgress(listener, event) + + resp, err := conn.client.Do(req) + if err != nil { + // Transfer failed + event = newProgressEvent(TransferFailedEvent, tracker.completedBytes, req.ContentLength) + publishProgress(listener, event) + return nil, err + } + + // Transfer completed + event = newProgressEvent(TransferCompletedEvent, tracker.completedBytes, req.ContentLength) + publishProgress(listener, event) + + return conn.handleResponse(resp, crc) +} + +func (conn Conn) getURLParams(params map[string]interface{}) string { + // Sort + keys := make([]string, 0, len(params)) + for k := range params { + keys = append(keys, k) + } + sort.Strings(keys) + + // Serialize + var buf bytes.Buffer + for _, k := range keys { + if buf.Len() > 0 { + buf.WriteByte('&') + } + buf.WriteString(url.QueryEscape(k)) + if params[k] != nil { + buf.WriteString("=" + url.QueryEscape(params[k].(string))) + } + } + + return buf.String() +} + +func (conn Conn) getSubResource(params map[string]interface{}) string { + // Sort + keys := make([]string, 0, len(params)) + for k := range params { + if conn.isParamSign(k) { + keys = append(keys, k) + } + } + sort.Strings(keys) + + // Serialize + var buf bytes.Buffer + for _, k := range keys { + if buf.Len() > 0 { + buf.WriteByte('&') + } + buf.WriteString(k) + if params[k] != nil { + buf.WriteString("=" + params[k].(string)) + } + } + + return buf.String() +} + +func (conn Conn) isParamSign(paramKey string) bool { + for _, k := range signKeyList { + if paramKey == k { + return true + } + } + return false +} + +func (conn Conn) doRequest(method string, uri *url.URL, canonicalizedResource string, headers map[string]string, + data io.Reader, initCRC uint64, listener ProgressListener) (*Response, error) { + method = strings.ToUpper(method) + req := &http.Request{ + Method: method, + URL: uri, + Proto: "HTTP/1.1", + ProtoMajor: 1, + ProtoMinor: 1, + Header: make(http.Header), + Host: uri.Host, + } + + tracker := &readerTracker{completedBytes: 0} + fd, crc := conn.handleBody(req, data, initCRC, listener, tracker) + if fd != nil { + defer func() { + fd.Close() + os.Remove(fd.Name()) + }() + } + + if conn.config.IsAuthProxy { + auth := conn.config.ProxyUser + ":" + conn.config.ProxyPassword + basic := "Basic " + base64.StdEncoding.EncodeToString([]byte(auth)) + req.Header.Set("Proxy-Authorization", basic) + } + + date := time.Now().UTC().Format(http.TimeFormat) + req.Header.Set(HTTPHeaderDate, date) + req.Header.Set(HTTPHeaderHost, conn.config.Endpoint) + req.Header.Set(HTTPHeaderUserAgent, conn.config.UserAgent) + if conn.config.SecurityToken != "" { + req.Header.Set(HTTPHeaderOssSecurityToken, conn.config.SecurityToken) + } + + if headers != nil { + for k, v := range headers { + req.Header.Set(k, v) + } + } + + conn.signHeader(req, canonicalizedResource) + + // Transfer started + event := newProgressEvent(TransferStartedEvent, 0, req.ContentLength) + publishProgress(listener, event) + + resp, err := conn.client.Do(req) + if err != nil { + // Transfer failed + event = newProgressEvent(TransferFailedEvent, tracker.completedBytes, req.ContentLength) + publishProgress(listener, event) + return nil, err + } + + // Transfer completed + event = newProgressEvent(TransferCompletedEvent, tracker.completedBytes, req.ContentLength) + publishProgress(listener, event) + + return conn.handleResponse(resp, crc) +} + +func (conn Conn) signURL(method HTTPMethod, bucketName, objectName string, expiration int64, params map[string]interface{}, headers map[string]string) string { + if conn.config.SecurityToken != "" { + params[HTTPParamSecurityToken] = conn.config.SecurityToken + } + subResource := conn.getSubResource(params) + canonicalizedResource := conn.url.getResource(bucketName, objectName, subResource) + + m := strings.ToUpper(string(method)) + req := &http.Request{ + Method: m, + Header: make(http.Header), + } + + if conn.config.IsAuthProxy { + auth := conn.config.ProxyUser + ":" + conn.config.ProxyPassword + basic := "Basic " + base64.StdEncoding.EncodeToString([]byte(auth)) + req.Header.Set("Proxy-Authorization", basic) + } + + req.Header.Set(HTTPHeaderDate, strconv.FormatInt(expiration, 10)) + req.Header.Set(HTTPHeaderHost, conn.config.Endpoint) + req.Header.Set(HTTPHeaderUserAgent, conn.config.UserAgent) + + if headers != nil { + for k, v := range headers { + req.Header.Set(k, v) + } + } + + signedStr := conn.getSignedStr(req, canonicalizedResource) + + params[HTTPParamExpires] = strconv.FormatInt(expiration, 10) + params[HTTPParamAccessKeyID] = conn.config.AccessKeyID + params[HTTPParamSignature] = signedStr + + urlParams := conn.getURLParams(params) + return conn.url.getSignURL(bucketName, objectName, urlParams) +} + +// handleBody handles request body +func (conn Conn) handleBody(req *http.Request, body io.Reader, initCRC uint64, + listener ProgressListener, tracker *readerTracker) (*os.File, hash.Hash64) { + var file *os.File + var crc hash.Hash64 + reader := body + + // Length + switch v := body.(type) { + case *bytes.Buffer: + req.ContentLength = int64(v.Len()) + case *bytes.Reader: + req.ContentLength = int64(v.Len()) + case *strings.Reader: + req.ContentLength = int64(v.Len()) + case *os.File: + req.ContentLength = tryGetFileSize(v) + case *io.LimitedReader: + req.ContentLength = int64(v.N) + } + req.Header.Set(HTTPHeaderContentLength, strconv.FormatInt(req.ContentLength, 10)) + + // MD5 + if body != nil && conn.config.IsEnableMD5 && req.Header.Get(HTTPHeaderContentMD5) == "" { + md5 := "" + reader, md5, file, _ = calcMD5(body, req.ContentLength, conn.config.MD5Threshold) + req.Header.Set(HTTPHeaderContentMD5, md5) + } + + // CRC + if reader != nil && conn.config.IsEnableCRC { + crc = NewCRC(crcTable(), initCRC) + reader = TeeReader(reader, crc, req.ContentLength, listener, tracker) + } + + // HTTP body + rc, ok := reader.(io.ReadCloser) + if !ok && reader != nil { + rc = ioutil.NopCloser(reader) + } + req.Body = rc + + return file, crc +} + +func tryGetFileSize(f *os.File) int64 { + fInfo, _ := f.Stat() + return fInfo.Size() +} + +// handleResponse handles response +func (conn Conn) handleResponse(resp *http.Response, crc hash.Hash64) (*Response, error) { + var cliCRC uint64 + var srvCRC uint64 + + statusCode := resp.StatusCode + if statusCode >= 400 && statusCode <= 505 { + // 4xx and 5xx indicate that the operation has error occurred + var respBody []byte + respBody, err := readResponseBody(resp) + if err != nil { + return nil, err + } + + if len(respBody) == 0 { + err = ServiceError{ + StatusCode: statusCode, + RequestID: resp.Header.Get(HTTPHeaderOssRequestID), + } + } else { + // Response contains storage service error object, unmarshal + srvErr, errIn := serviceErrFromXML(respBody, resp.StatusCode, + resp.Header.Get(HTTPHeaderOssRequestID)) + if errIn != nil { // error unmarshaling the error response + err = fmt.Errorf("oss: service returned invalid response body, status = %s, RequestId = %s", resp.Status, resp.Header.Get(HTTPHeaderOssRequestID)) + } else { + err = srvErr + } + } + + return &Response{ + StatusCode: resp.StatusCode, + Headers: resp.Header, + Body: ioutil.NopCloser(bytes.NewReader(respBody)), // restore the body + }, err + } else if statusCode >= 300 && statusCode <= 307 { + // OSS use 3xx, but response has no body + err := fmt.Errorf("oss: service returned %d,%s", resp.StatusCode, resp.Status) + return &Response{ + StatusCode: resp.StatusCode, + Headers: resp.Header, + Body: resp.Body, + }, err + } + + if conn.config.IsEnableCRC && crc != nil { + cliCRC = crc.Sum64() + } + srvCRC, _ = strconv.ParseUint(resp.Header.Get(HTTPHeaderOssCRC64), 10, 64) + + // 2xx, successful + return &Response{ + StatusCode: resp.StatusCode, + Headers: resp.Header, + Body: resp.Body, + ClientCRC: cliCRC, + ServerCRC: srvCRC, + }, nil +} + +func calcMD5(body io.Reader, contentLen, md5Threshold int64) (reader io.Reader, b64 string, tempFile *os.File, err error) { + if contentLen == 0 || contentLen > md5Threshold { + // Huge body, use temporary file + tempFile, err = ioutil.TempFile(os.TempDir(), TempFilePrefix) + if tempFile != nil { + io.Copy(tempFile, body) + tempFile.Seek(0, os.SEEK_SET) + md5 := md5.New() + io.Copy(md5, tempFile) + sum := md5.Sum(nil) + b64 = base64.StdEncoding.EncodeToString(sum[:]) + tempFile.Seek(0, os.SEEK_SET) + reader = tempFile + } + } else { + // Small body, use memory + buf, _ := ioutil.ReadAll(body) + sum := md5.Sum(buf) + b64 = base64.StdEncoding.EncodeToString(sum[:]) + reader = bytes.NewReader(buf) + } + return +} + +func readResponseBody(resp *http.Response) ([]byte, error) { + defer resp.Body.Close() + out, err := ioutil.ReadAll(resp.Body) + if err == io.EOF { + err = nil + } + return out, err +} + +func serviceErrFromXML(body []byte, statusCode int, requestID string) (ServiceError, error) { + var storageErr ServiceError + + if err := xml.Unmarshal(body, &storageErr); err != nil { + return storageErr, err + } + + storageErr.StatusCode = statusCode + storageErr.RequestID = requestID + storageErr.RawMessage = string(body) + return storageErr, nil +} + +func xmlUnmarshal(body io.Reader, v interface{}) error { + data, err := ioutil.ReadAll(body) + if err != nil { + return err + } + return xml.Unmarshal(data, v) +} + +func jsonUnmarshal(body io.Reader, v interface{}) error { + data, err := ioutil.ReadAll(body) + if err != nil { + return err + } + return json.Unmarshal(data, v) +} + +// timeoutConn handles HTTP timeout +type timeoutConn struct { + conn net.Conn + timeout time.Duration + longTimeout time.Duration +} + +func newTimeoutConn(conn net.Conn, timeout time.Duration, longTimeout time.Duration) *timeoutConn { + conn.SetReadDeadline(time.Now().Add(longTimeout)) + return &timeoutConn{ + conn: conn, + timeout: timeout, + longTimeout: longTimeout, + } +} + +func (c *timeoutConn) Read(b []byte) (n int, err error) { + c.SetReadDeadline(time.Now().Add(c.timeout)) + n, err = c.conn.Read(b) + c.SetReadDeadline(time.Now().Add(c.longTimeout)) + return n, err +} + +func (c *timeoutConn) Write(b []byte) (n int, err error) { + c.SetWriteDeadline(time.Now().Add(c.timeout)) + n, err = c.conn.Write(b) + c.SetReadDeadline(time.Now().Add(c.longTimeout)) + return n, err +} + +func (c *timeoutConn) Close() error { + return c.conn.Close() +} + +func (c *timeoutConn) LocalAddr() net.Addr { + return c.conn.LocalAddr() +} + +func (c *timeoutConn) RemoteAddr() net.Addr { + return c.conn.RemoteAddr() +} + +func (c *timeoutConn) SetDeadline(t time.Time) error { + return c.conn.SetDeadline(t) +} + +func (c *timeoutConn) SetReadDeadline(t time.Time) error { + return c.conn.SetReadDeadline(t) +} + +func (c *timeoutConn) SetWriteDeadline(t time.Time) error { + return c.conn.SetWriteDeadline(t) +} + +// UrlMaker builds URL and resource +const ( + urlTypeCname = 1 + urlTypeIP = 2 + urlTypeAliyun = 3 +) + +type urlMaker struct { + Scheme string // HTTP or HTTPS + NetLoc string // Host or IP + Type int // 1 CNAME, 2 IP, 3 ALIYUN + IsProxy bool // Proxy +} + +// Init parses endpoint +func (um *urlMaker) Init(endpoint string, isCname bool, isProxy bool) { + if strings.HasPrefix(endpoint, "http://") { + um.Scheme = "http" + um.NetLoc = endpoint[len("http://"):] + } else if strings.HasPrefix(endpoint, "https://") { + um.Scheme = "https" + um.NetLoc = endpoint[len("https://"):] + } else { + um.Scheme = "http" + um.NetLoc = endpoint + } + + host, _, err := net.SplitHostPort(um.NetLoc) + if err != nil { + host = um.NetLoc + if host[0] == '[' && host[len(host)-1] == ']' { + host = host[1 : len(host)-1] + } + } + + ip := net.ParseIP(host) + if ip != nil { + um.Type = urlTypeIP + } else if isCname { + um.Type = urlTypeCname + } else { + um.Type = urlTypeAliyun + } + um.IsProxy = isProxy +} + +// getURL gets URL +func (um urlMaker) getURL(bucket, object, params string) *url.URL { + host, path := um.buildURL(bucket, object) + addr := "" + if params == "" { + addr = fmt.Sprintf("%s://%s%s", um.Scheme, host, path) + } else { + addr = fmt.Sprintf("%s://%s%s?%s", um.Scheme, host, path, params) + } + uri, _ := url.ParseRequestURI(addr) + return uri +} + +// getSignURL gets sign URL +func (um urlMaker) getSignURL(bucket, object, params string) string { + host, path := um.buildURL(bucket, object) + return fmt.Sprintf("%s://%s%s?%s", um.Scheme, host, path, params) +} + +// buildURL builds URL +func (um urlMaker) buildURL(bucket, object string) (string, string) { + var host = "" + var path = "" + + object = url.QueryEscape(object) + object = strings.Replace(object, "+", "%20", -1) + + if um.Type == urlTypeCname { + host = um.NetLoc + path = "/" + object + } else if um.Type == urlTypeIP { + if bucket == "" { + host = um.NetLoc + path = "/" + } else { + host = um.NetLoc + path = fmt.Sprintf("/%s/%s", bucket, object) + } + } else { + if bucket == "" { + host = um.NetLoc + path = "/" + } else { + host = bucket + "." + um.NetLoc + path = "/" + object + } + } + + return host, path +} + +// getResource gets canonicalized resource +func (um urlMaker) getResource(bucketName, objectName, subResource string) string { + if subResource != "" { + subResource = "?" + subResource + } + if bucketName == "" { + return fmt.Sprintf("/%s%s", bucketName, subResource) + } + return fmt.Sprintf("/%s/%s%s", bucketName, objectName, subResource) +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/const.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/const.go new file mode 100644 index 000000000..b5ee30bdf --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/const.go @@ -0,0 +1,145 @@ +package oss + +import "os" + +// ACLType bucket/object ACL +type ACLType string + +const ( + // ACLPrivate definition : private read and write + ACLPrivate ACLType = "private" + + // ACLPublicRead definition : public read and private write + ACLPublicRead ACLType = "public-read" + + // ACLPublicReadWrite definition : public read and public write + ACLPublicReadWrite ACLType = "public-read-write" + + // ACLDefault Object. It's only applicable for object. + ACLDefault ACLType = "default" +) + +// MetadataDirectiveType specifying whether use the metadata of source object when copying object. +type MetadataDirectiveType string + +const ( + // MetaCopy the target object's metadata is copied from the source one + MetaCopy MetadataDirectiveType = "COPY" + + // MetaReplace the target object's metadata is created as part of the copy request (not same as the source one) + MetaReplace MetadataDirectiveType = "REPLACE" +) + +// StorageClassType bucket storage type +type StorageClassType string + +const ( + // StorageStandard standard + StorageStandard StorageClassType = "Standard" + + // StorageIA infrequent access + StorageIA StorageClassType = "IA" + + // StorageArchive archive + StorageArchive StorageClassType = "Archive" +) + +// PayerType the type of request payer +type PayerType string + +const ( + // Requester the requester who send the request + Requester PayerType = "requester" +) + +// HTTPMethod HTTP request method +type HTTPMethod string + +const ( + // HTTPGet HTTP GET + HTTPGet HTTPMethod = "GET" + + // HTTPPut HTTP PUT + HTTPPut HTTPMethod = "PUT" + + // HTTPHead HTTP HEAD + HTTPHead HTTPMethod = "HEAD" + + // HTTPPost HTTP POST + HTTPPost HTTPMethod = "POST" + + // HTTPDelete HTTP DELETE + HTTPDelete HTTPMethod = "DELETE" +) + +// HTTP headers +const ( + HTTPHeaderAcceptEncoding string = "Accept-Encoding" + HTTPHeaderAuthorization = "Authorization" + HTTPHeaderCacheControl = "Cache-Control" + HTTPHeaderContentDisposition = "Content-Disposition" + HTTPHeaderContentEncoding = "Content-Encoding" + HTTPHeaderContentLength = "Content-Length" + HTTPHeaderContentMD5 = "Content-MD5" + HTTPHeaderContentType = "Content-Type" + HTTPHeaderContentLanguage = "Content-Language" + HTTPHeaderDate = "Date" + HTTPHeaderEtag = "ETag" + HTTPHeaderExpires = "Expires" + HTTPHeaderHost = "Host" + HTTPHeaderLastModified = "Last-Modified" + HTTPHeaderRange = "Range" + HTTPHeaderLocation = "Location" + HTTPHeaderOrigin = "Origin" + HTTPHeaderServer = "Server" + HTTPHeaderUserAgent = "User-Agent" + HTTPHeaderIfModifiedSince = "If-Modified-Since" + HTTPHeaderIfUnmodifiedSince = "If-Unmodified-Since" + HTTPHeaderIfMatch = "If-Match" + HTTPHeaderIfNoneMatch = "If-None-Match" + + HTTPHeaderOssACL = "X-Oss-Acl" + HTTPHeaderOssMetaPrefix = "X-Oss-Meta-" + HTTPHeaderOssObjectACL = "X-Oss-Object-Acl" + HTTPHeaderOssSecurityToken = "X-Oss-Security-Token" + HTTPHeaderOssServerSideEncryption = "X-Oss-Server-Side-Encryption" + HTTPHeaderOssServerSideEncryptionKeyID = "X-Oss-Server-Side-Encryption-Key-Id" + HTTPHeaderOssCopySource = "X-Oss-Copy-Source" + HTTPHeaderOssCopySourceRange = "X-Oss-Copy-Source-Range" + HTTPHeaderOssCopySourceIfMatch = "X-Oss-Copy-Source-If-Match" + HTTPHeaderOssCopySourceIfNoneMatch = "X-Oss-Copy-Source-If-None-Match" + HTTPHeaderOssCopySourceIfModifiedSince = "X-Oss-Copy-Source-If-Modified-Since" + HTTPHeaderOssCopySourceIfUnmodifiedSince = "X-Oss-Copy-Source-If-Unmodified-Since" + HTTPHeaderOssMetadataDirective = "X-Oss-Metadata-Directive" + HTTPHeaderOssNextAppendPosition = "X-Oss-Next-Append-Position" + HTTPHeaderOssRequestID = "X-Oss-Request-Id" + HTTPHeaderOssCRC64 = "X-Oss-Hash-Crc64ecma" + HTTPHeaderOssSymlinkTarget = "X-Oss-Symlink-Target" + HTTPHeaderOssStorageClass = "X-Oss-Storage-Class" + HTTPHeaderOssCallback = "X-Oss-Callback" + HTTPHeaderOssCallbackVar = "X-Oss-Callback-Var" + HTTPHeaderOSSRequester = "X-Oss-Request-Payer" +) + +// HTTP Param +const ( + HTTPParamExpires = "Expires" + HTTPParamAccessKeyID = "OSSAccessKeyId" + HTTPParamSignature = "Signature" + HTTPParamSecurityToken = "security-token" +) + +// Other constants +const ( + MaxPartSize = 5 * 1024 * 1024 * 1024 // Max part size, 5GB + MinPartSize = 100 * 1024 // Min part size, 100KB + + FilePermMode = os.FileMode(0664) // Default file permission + + TempFilePrefix = "oss-go-temp-" // Temp file prefix + TempFileSuffix = ".temp" // Temp file suffix + + CheckpointFileSuffix = ".cp" // Checkpoint file suffix + + Version = "1.9.2" // Go SDK version +) diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/crc.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/crc.go new file mode 100644 index 000000000..c96694f28 --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/crc.go @@ -0,0 +1,123 @@ +package oss + +import ( + "hash" + "hash/crc64" +) + +// digest represents the partial evaluation of a checksum. +type digest struct { + crc uint64 + tab *crc64.Table +} + +// NewCRC creates a new hash.Hash64 computing the CRC64 checksum +// using the polynomial represented by the Table. +func NewCRC(tab *crc64.Table, init uint64) hash.Hash64 { return &digest{init, tab} } + +// Size returns the number of bytes sum will return. +func (d *digest) Size() int { return crc64.Size } + +// BlockSize returns the hash's underlying block size. +// The Write method must be able to accept any amount +// of data, but it may operate more efficiently if all writes +// are a multiple of the block size. +func (d *digest) BlockSize() int { return 1 } + +// Reset resets the hash to its initial state. +func (d *digest) Reset() { d.crc = 0 } + +// Write (via the embedded io.Writer interface) adds more data to the running hash. +// It never returns an error. +func (d *digest) Write(p []byte) (n int, err error) { + d.crc = crc64.Update(d.crc, d.tab, p) + return len(p), nil +} + +// Sum64 returns CRC64 value. +func (d *digest) Sum64() uint64 { return d.crc } + +// Sum returns hash value. +func (d *digest) Sum(in []byte) []byte { + s := d.Sum64() + return append(in, byte(s>>56), byte(s>>48), byte(s>>40), byte(s>>32), byte(s>>24), byte(s>>16), byte(s>>8), byte(s)) +} + +// gf2Dim dimension of GF(2) vectors (length of CRC) +const gf2Dim int = 64 + +func gf2MatrixTimes(mat []uint64, vec uint64) uint64 { + var sum uint64 + for i := 0; vec != 0; i++ { + if vec&1 != 0 { + sum ^= mat[i] + } + + vec >>= 1 + } + return sum +} + +func gf2MatrixSquare(square []uint64, mat []uint64) { + for n := 0; n < gf2Dim; n++ { + square[n] = gf2MatrixTimes(mat, mat[n]) + } +} + +// CRC64Combine combines CRC64 +func CRC64Combine(crc1 uint64, crc2 uint64, len2 uint64) uint64 { + var even [gf2Dim]uint64 // Even-power-of-two zeros operator + var odd [gf2Dim]uint64 // Odd-power-of-two zeros operator + + // Degenerate case + if len2 == 0 { + return crc1 + } + + // Put operator for one zero bit in odd + odd[0] = crc64.ECMA // CRC64 polynomial + var row uint64 = 1 + for n := 1; n < gf2Dim; n++ { + odd[n] = row + row <<= 1 + } + + // Put operator for two zero bits in even + gf2MatrixSquare(even[:], odd[:]) + + // Put operator for four zero bits in odd + gf2MatrixSquare(odd[:], even[:]) + + // Apply len2 zeros to crc1, first square will put the operator for one zero byte, eight zero bits, in even + for { + // Apply zeros operator for this bit of len2 + gf2MatrixSquare(even[:], odd[:]) + + if len2&1 != 0 { + crc1 = gf2MatrixTimes(even[:], crc1) + } + + len2 >>= 1 + + // If no more bits set, then done + if len2 == 0 { + break + } + + // Another iteration of the loop with odd and even swapped + gf2MatrixSquare(odd[:], even[:]) + if len2&1 != 0 { + crc1 = gf2MatrixTimes(odd[:], crc1) + } + len2 >>= 1 + + // If no more bits set, then done + if len2 == 0 { + break + } + } + + // Return combined CRC + crc1 ^= crc2 + return crc1 +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/download.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/download.go new file mode 100644 index 000000000..f0f0857bd --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/download.go @@ -0,0 +1,568 @@ +package oss + +import ( + "crypto/md5" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "hash" + "hash/crc64" + "io" + "io/ioutil" + "net/http" + "os" + "path/filepath" + "strconv" +) + +// DownloadFile downloads files with multipart download. +// +// objectKey the object key. +// filePath the local file to download from objectKey in OSS. +// partSize the part size in bytes. +// options object's constraints, check out GetObject for the reference. +// +// error it's nil when the call succeeds, otherwise it's an error object. +// +func (bucket Bucket) DownloadFile(objectKey, filePath string, partSize int64, options ...Option) error { + if partSize < 1 { + return errors.New("oss: part size smaller than 1") + } + + uRange, err := getRangeConfig(options) + if err != nil { + return err + } + + cpConf := getCpConfig(options) + routines := getRoutines(options) + + if cpConf != nil && cpConf.IsEnable { + cpFilePath := getDownloadCpFilePath(cpConf, bucket.BucketName, objectKey, filePath) + if cpFilePath != "" { + return bucket.downloadFileWithCp(objectKey, filePath, partSize, options, cpFilePath, routines, uRange) + } + } + + return bucket.downloadFile(objectKey, filePath, partSize, options, routines, uRange) +} + +func getDownloadCpFilePath(cpConf *cpConfig, srcBucket, srcObject, destFile string) string { + if cpConf.FilePath == "" && cpConf.DirPath != "" { + src := fmt.Sprintf("oss://%v/%v", srcBucket, srcObject) + absPath, _ := filepath.Abs(destFile) + cpFileName := getCpFileName(src, absPath) + cpConf.FilePath = cpConf.DirPath + string(os.PathSeparator) + cpFileName + } + return cpConf.FilePath +} + +// getRangeConfig gets the download range from the options. +func getRangeConfig(options []Option) (*unpackedRange, error) { + rangeOpt, err := findOption(options, HTTPHeaderRange, nil) + if err != nil || rangeOpt == nil { + return nil, err + } + return parseRange(rangeOpt.(string)) +} + +// ----- concurrent download without checkpoint ----- + +// downloadWorkerArg is download worker's parameters +type downloadWorkerArg struct { + bucket *Bucket + key string + filePath string + options []Option + hook downloadPartHook + enableCRC bool +} + +// downloadPartHook is hook for test +type downloadPartHook func(part downloadPart) error + +var downloadPartHooker downloadPartHook = defaultDownloadPartHook + +func defaultDownloadPartHook(part downloadPart) error { + return nil +} + +// defaultDownloadProgressListener defines default ProgressListener, shields the ProgressListener in options of GetObject. +type defaultDownloadProgressListener struct { +} + +// ProgressChanged no-ops +func (listener *defaultDownloadProgressListener) ProgressChanged(event *ProgressEvent) { +} + +// downloadWorker +func downloadWorker(id int, arg downloadWorkerArg, jobs <-chan downloadPart, results chan<- downloadPart, failed chan<- error, die <-chan bool) { + for part := range jobs { + if err := arg.hook(part); err != nil { + failed <- err + break + } + + // Resolve options + r := Range(part.Start, part.End) + p := Progress(&defaultDownloadProgressListener{}) + opts := make([]Option, len(arg.options)+2) + // Append orderly, can not be reversed! + opts = append(opts, arg.options...) + opts = append(opts, r, p) + + rd, err := arg.bucket.GetObject(arg.key, opts...) + if err != nil { + failed <- err + break + } + defer rd.Close() + + var crcCalc hash.Hash64 + if arg.enableCRC { + crcCalc = crc64.New(crcTable()) + contentLen := part.End - part.Start + 1 + rd = ioutil.NopCloser(TeeReader(rd, crcCalc, contentLen, nil, nil)) + } + defer rd.Close() + + select { + case <-die: + return + default: + } + + fd, err := os.OpenFile(arg.filePath, os.O_WRONLY, FilePermMode) + if err != nil { + failed <- err + break + } + + _, err = fd.Seek(part.Start-part.Offset, os.SEEK_SET) + if err != nil { + fd.Close() + failed <- err + break + } + + _, err = io.Copy(fd, rd) + if err != nil { + fd.Close() + failed <- err + break + } + + if arg.enableCRC { + part.CRC64 = crcCalc.Sum64() + } + + fd.Close() + results <- part + } +} + +// downloadScheduler +func downloadScheduler(jobs chan downloadPart, parts []downloadPart) { + for _, part := range parts { + jobs <- part + } + close(jobs) +} + +// downloadPart defines download part +type downloadPart struct { + Index int // Part number, starting from 0 + Start int64 // Start index + End int64 // End index + Offset int64 // Offset + CRC64 uint64 // CRC check value of part +} + +// getDownloadParts gets download parts +func getDownloadParts(objectSize, partSize int64, uRange *unpackedRange) []downloadPart { + parts := []downloadPart{} + part := downloadPart{} + i := 0 + start, end := adjustRange(uRange, objectSize) + for offset := start; offset < end; offset += partSize { + part.Index = i + part.Start = offset + part.End = GetPartEnd(offset, end, partSize) + part.Offset = start + part.CRC64 = 0 + parts = append(parts, part) + i++ + } + return parts +} + +// getObjectBytes gets object bytes length +func getObjectBytes(parts []downloadPart) int64 { + var ob int64 + for _, part := range parts { + ob += (part.End - part.Start + 1) + } + return ob +} + +// combineCRCInParts caculates the total CRC of continuous parts +func combineCRCInParts(dps []downloadPart) uint64 { + if dps == nil || len(dps) == 0 { + return 0 + } + + crc := dps[0].CRC64 + for i := 1; i < len(dps); i++ { + crc = CRC64Combine(crc, dps[i].CRC64, (uint64)(dps[i].End-dps[i].Start+1)) + } + + return crc +} + +// downloadFile downloads file concurrently without checkpoint. +func (bucket Bucket) downloadFile(objectKey, filePath string, partSize int64, options []Option, routines int, uRange *unpackedRange) error { + tempFilePath := filePath + TempFileSuffix + listener := getProgressListener(options) + + payerOptions := []Option{} + payer := getPayer(options) + if payer != "" { + payerOptions = append(payerOptions, RequestPayer(PayerType(payer))) + } + + // If the file does not exist, create one. If exists, the download will overwrite it. + fd, err := os.OpenFile(tempFilePath, os.O_WRONLY|os.O_CREATE, FilePermMode) + if err != nil { + return err + } + fd.Close() + + meta, err := bucket.GetObjectDetailedMeta(objectKey, payerOptions...) + if err != nil { + return err + } + + objectSize, err := strconv.ParseInt(meta.Get(HTTPHeaderContentLength), 10, 0) + if err != nil { + return err + } + + enableCRC := false + expectedCRC := (uint64)(0) + if bucket.getConfig().IsEnableCRC && meta.Get(HTTPHeaderOssCRC64) != "" { + if uRange == nil || (!uRange.hasStart && !uRange.hasEnd) { + enableCRC = true + expectedCRC, _ = strconv.ParseUint(meta.Get(HTTPHeaderOssCRC64), 10, 0) + } + } + + // Get the parts of the file + parts := getDownloadParts(objectSize, partSize, uRange) + jobs := make(chan downloadPart, len(parts)) + results := make(chan downloadPart, len(parts)) + failed := make(chan error) + die := make(chan bool) + + var completedBytes int64 + totalBytes := getObjectBytes(parts) + event := newProgressEvent(TransferStartedEvent, 0, totalBytes) + publishProgress(listener, event) + + // Start the download workers + arg := downloadWorkerArg{&bucket, objectKey, tempFilePath, options, downloadPartHooker, enableCRC} + for w := 1; w <= routines; w++ { + go downloadWorker(w, arg, jobs, results, failed, die) + } + + // Download parts concurrently + go downloadScheduler(jobs, parts) + + // Waiting for parts download finished + completed := 0 + for completed < len(parts) { + select { + case part := <-results: + completed++ + completedBytes += (part.End - part.Start + 1) + parts[part.Index].CRC64 = part.CRC64 + event = newProgressEvent(TransferDataEvent, completedBytes, totalBytes) + publishProgress(listener, event) + case err := <-failed: + close(die) + event = newProgressEvent(TransferFailedEvent, completedBytes, totalBytes) + publishProgress(listener, event) + return err + } + + if completed >= len(parts) { + break + } + } + + event = newProgressEvent(TransferCompletedEvent, completedBytes, totalBytes) + publishProgress(listener, event) + + if enableCRC { + actualCRC := combineCRCInParts(parts) + err = checkDownloadCRC(actualCRC, expectedCRC) + if err != nil { + return err + } + } + + return os.Rename(tempFilePath, filePath) +} + +// ----- Concurrent download with chcekpoint ----- + +const downloadCpMagic = "92611BED-89E2-46B6-89E5-72F273D4B0A3" + +type downloadCheckpoint struct { + Magic string // Magic + MD5 string // Checkpoint content MD5 + FilePath string // Local file + Object string // Key + ObjStat objectStat // Object status + Parts []downloadPart // All download parts + PartStat []bool // Parts' download status + Start int64 // Start point of the file + End int64 // End point of the file + enableCRC bool // Whether has CRC check + CRC uint64 // CRC check value +} + +type objectStat struct { + Size int64 // Object size + LastModified string // Last modified time + Etag string // Etag +} + +// isValid flags of checkpoint data is valid. It returns true when the data is valid and the checkpoint is valid and the object is not updated. +func (cp downloadCheckpoint) isValid(meta http.Header, uRange *unpackedRange) (bool, error) { + // Compare the CP's Magic and the MD5 + cpb := cp + cpb.MD5 = "" + js, _ := json.Marshal(cpb) + sum := md5.Sum(js) + b64 := base64.StdEncoding.EncodeToString(sum[:]) + + if cp.Magic != downloadCpMagic || b64 != cp.MD5 { + return false, nil + } + + objectSize, err := strconv.ParseInt(meta.Get(HTTPHeaderContentLength), 10, 0) + if err != nil { + return false, err + } + + // Compare the object size, last modified time and etag + if cp.ObjStat.Size != objectSize || + cp.ObjStat.LastModified != meta.Get(HTTPHeaderLastModified) || + cp.ObjStat.Etag != meta.Get(HTTPHeaderEtag) { + return false, nil + } + + // Check the download range + if uRange != nil { + start, end := adjustRange(uRange, objectSize) + if start != cp.Start || end != cp.End { + return false, nil + } + } + + return true, nil +} + +// load checkpoint from local file +func (cp *downloadCheckpoint) load(filePath string) error { + contents, err := ioutil.ReadFile(filePath) + if err != nil { + return err + } + + err = json.Unmarshal(contents, cp) + return err +} + +// dump funciton dumps to file +func (cp *downloadCheckpoint) dump(filePath string) error { + bcp := *cp + + // Calculate MD5 + bcp.MD5 = "" + js, err := json.Marshal(bcp) + if err != nil { + return err + } + sum := md5.Sum(js) + b64 := base64.StdEncoding.EncodeToString(sum[:]) + bcp.MD5 = b64 + + // Serialize + js, err = json.Marshal(bcp) + if err != nil { + return err + } + + // Dump + return ioutil.WriteFile(filePath, js, FilePermMode) +} + +// todoParts gets unfinished parts +func (cp downloadCheckpoint) todoParts() []downloadPart { + dps := []downloadPart{} + for i, ps := range cp.PartStat { + if !ps { + dps = append(dps, cp.Parts[i]) + } + } + return dps +} + +// getCompletedBytes gets completed size +func (cp downloadCheckpoint) getCompletedBytes() int64 { + var completedBytes int64 + for i, part := range cp.Parts { + if cp.PartStat[i] { + completedBytes += (part.End - part.Start + 1) + } + } + return completedBytes +} + +// prepare initiates download tasks +func (cp *downloadCheckpoint) prepare(meta http.Header, bucket *Bucket, objectKey, filePath string, partSize int64, uRange *unpackedRange) error { + // CP + cp.Magic = downloadCpMagic + cp.FilePath = filePath + cp.Object = objectKey + + objectSize, err := strconv.ParseInt(meta.Get(HTTPHeaderContentLength), 10, 0) + if err != nil { + return err + } + + cp.ObjStat.Size = objectSize + cp.ObjStat.LastModified = meta.Get(HTTPHeaderLastModified) + cp.ObjStat.Etag = meta.Get(HTTPHeaderEtag) + + if bucket.getConfig().IsEnableCRC && meta.Get(HTTPHeaderOssCRC64) != "" { + if uRange == nil || (!uRange.hasStart && !uRange.hasEnd) { + cp.enableCRC = true + cp.CRC, _ = strconv.ParseUint(meta.Get(HTTPHeaderOssCRC64), 10, 0) + } + } + + // Parts + cp.Parts = getDownloadParts(objectSize, partSize, uRange) + cp.PartStat = make([]bool, len(cp.Parts)) + for i := range cp.PartStat { + cp.PartStat[i] = false + } + + return nil +} + +func (cp *downloadCheckpoint) complete(cpFilePath, downFilepath string) error { + os.Remove(cpFilePath) + return os.Rename(downFilepath, cp.FilePath) +} + +// downloadFileWithCp downloads files with checkpoint. +func (bucket Bucket) downloadFileWithCp(objectKey, filePath string, partSize int64, options []Option, cpFilePath string, routines int, uRange *unpackedRange) error { + tempFilePath := filePath + TempFileSuffix + listener := getProgressListener(options) + + payerOptions := []Option{} + payer := getPayer(options) + if payer != "" { + payerOptions = append(payerOptions, RequestPayer(PayerType(payer))) + } + + // Load checkpoint data. + dcp := downloadCheckpoint{} + err := dcp.load(cpFilePath) + if err != nil { + os.Remove(cpFilePath) + } + + // Get the object detailed meta. + meta, err := bucket.GetObjectDetailedMeta(objectKey, payerOptions...) + if err != nil { + return err + } + + // Load error or data invalid. Re-initialize the download. + valid, err := dcp.isValid(meta, uRange) + if err != nil || !valid { + if err = dcp.prepare(meta, &bucket, objectKey, filePath, partSize, uRange); err != nil { + return err + } + os.Remove(cpFilePath) + } + + // Create the file if not exists. Otherwise the parts download will overwrite it. + fd, err := os.OpenFile(tempFilePath, os.O_WRONLY|os.O_CREATE, FilePermMode) + if err != nil { + return err + } + fd.Close() + + // Unfinished parts + parts := dcp.todoParts() + jobs := make(chan downloadPart, len(parts)) + results := make(chan downloadPart, len(parts)) + failed := make(chan error) + die := make(chan bool) + + completedBytes := dcp.getCompletedBytes() + event := newProgressEvent(TransferStartedEvent, completedBytes, dcp.ObjStat.Size) + publishProgress(listener, event) + + // Start the download workers routine + arg := downloadWorkerArg{&bucket, objectKey, tempFilePath, options, downloadPartHooker, dcp.enableCRC} + for w := 1; w <= routines; w++ { + go downloadWorker(w, arg, jobs, results, failed, die) + } + + // Concurrently downloads parts + go downloadScheduler(jobs, parts) + + // Wait for the parts download finished + completed := 0 + for completed < len(parts) { + select { + case part := <-results: + completed++ + dcp.PartStat[part.Index] = true + dcp.Parts[part.Index].CRC64 = part.CRC64 + dcp.dump(cpFilePath) + completedBytes += (part.End - part.Start + 1) + event = newProgressEvent(TransferDataEvent, completedBytes, dcp.ObjStat.Size) + publishProgress(listener, event) + case err := <-failed: + close(die) + event = newProgressEvent(TransferFailedEvent, completedBytes, dcp.ObjStat.Size) + publishProgress(listener, event) + return err + } + + if completed >= len(parts) { + break + } + } + + event = newProgressEvent(TransferCompletedEvent, completedBytes, dcp.ObjStat.Size) + publishProgress(listener, event) + + if dcp.enableCRC { + actualCRC := combineCRCInParts(dcp.Parts) + err = checkDownloadCRC(actualCRC, dcp.CRC) + if err != nil { + return err + } + } + + return dcp.complete(cpFilePath, tempFilePath) +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/error.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/error.go new file mode 100644 index 000000000..6d7b4e0fa --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/error.go @@ -0,0 +1,94 @@ +package oss + +import ( + "encoding/xml" + "fmt" + "net/http" + "strings" +) + +// ServiceError contains fields of the error response from Oss Service REST API. +type ServiceError struct { + XMLName xml.Name `xml:"Error"` + Code string `xml:"Code"` // The error code returned from OSS to the caller + Message string `xml:"Message"` // The detail error message from OSS + RequestID string `xml:"RequestId"` // The UUID used to uniquely identify the request + HostID string `xml:"HostId"` // The OSS server cluster's Id + Endpoint string `xml:"Endpoint"` + RawMessage string // The raw messages from OSS + StatusCode int // HTTP status code +} + +// Error implements interface error +func (e ServiceError) Error() string { + if e.Endpoint == "" { + return fmt.Sprintf("oss: service returned error: StatusCode=%d, ErrorCode=%s, ErrorMessage=\"%s\", RequestId=%s", + e.StatusCode, e.Code, e.Message, e.RequestID) + } + return fmt.Sprintf("oss: service returned error: StatusCode=%d, ErrorCode=%s, ErrorMessage=\"%s\", RequestId=%s, Endpoint=%s", + e.StatusCode, e.Code, e.Message, e.RequestID, e.Endpoint) +} + +// UnexpectedStatusCodeError is returned when a storage service responds with neither an error +// nor with an HTTP status code indicating success. +type UnexpectedStatusCodeError struct { + allowed []int // The expected HTTP stats code returned from OSS + got int // The actual HTTP status code from OSS +} + +// Error implements interface error +func (e UnexpectedStatusCodeError) Error() string { + s := func(i int) string { return fmt.Sprintf("%d %s", i, http.StatusText(i)) } + + got := s(e.got) + expected := []string{} + for _, v := range e.allowed { + expected = append(expected, s(v)) + } + return fmt.Sprintf("oss: status code from service response is %s; was expecting %s", + got, strings.Join(expected, " or ")) +} + +// Got is the actual status code returned by oss. +func (e UnexpectedStatusCodeError) Got() int { + return e.got +} + +// checkRespCode returns UnexpectedStatusError if the given response code is not +// one of the allowed status codes; otherwise nil. +func checkRespCode(respCode int, allowed []int) error { + for _, v := range allowed { + if respCode == v { + return nil + } + } + return UnexpectedStatusCodeError{allowed, respCode} +} + +// CRCCheckError is returned when crc check is inconsistent between client and server +type CRCCheckError struct { + clientCRC uint64 // Calculated CRC64 in client + serverCRC uint64 // Calculated CRC64 in server + operation string // Upload operations such as PutObject/AppendObject/UploadPart, etc + requestID string // The request id of this operation +} + +// Error implements interface error +func (e CRCCheckError) Error() string { + return fmt.Sprintf("oss: the crc of %s is inconsistent, client %d but server %d; request id is %s", + e.operation, e.clientCRC, e.serverCRC, e.requestID) +} + +func checkDownloadCRC(clientCRC, serverCRC uint64) error { + if clientCRC == serverCRC { + return nil + } + return CRCCheckError{clientCRC, serverCRC, "DownloadFile", ""} +} + +func checkCRC(resp *Response, operation string) error { + if resp.Headers.Get(HTTPHeaderOssCRC64) == "" || resp.ClientCRC == resp.ServerCRC { + return nil + } + return CRCCheckError{resp.ClientCRC, resp.ServerCRC, operation, resp.Headers.Get(HTTPHeaderOssRequestID)} +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/mime.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/mime.go new file mode 100644 index 000000000..11485973d --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/mime.go @@ -0,0 +1,245 @@ +package oss + +import ( + "mime" + "path" + "strings" +) + +var extToMimeType = map[string]string{ + ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + ".xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template", + ".potx": "application/vnd.openxmlformats-officedocument.presentationml.template", + ".ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow", + ".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation", + ".sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide", + ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + ".dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template", + ".xlam": "application/vnd.ms-excel.addin.macroEnabled.12", + ".xlsb": "application/vnd.ms-excel.sheet.binary.macroEnabled.12", + ".apk": "application/vnd.android.package-archive", + ".hqx": "application/mac-binhex40", + ".cpt": "application/mac-compactpro", + ".doc": "application/msword", + ".ogg": "application/ogg", + ".pdf": "application/pdf", + ".rtf": "text/rtf", + ".mif": "application/vnd.mif", + ".xls": "application/vnd.ms-excel", + ".ppt": "application/vnd.ms-powerpoint", + ".odc": "application/vnd.oasis.opendocument.chart", + ".odb": "application/vnd.oasis.opendocument.database", + ".odf": "application/vnd.oasis.opendocument.formula", + ".odg": "application/vnd.oasis.opendocument.graphics", + ".otg": "application/vnd.oasis.opendocument.graphics-template", + ".odi": "application/vnd.oasis.opendocument.image", + ".odp": "application/vnd.oasis.opendocument.presentation", + ".otp": "application/vnd.oasis.opendocument.presentation-template", + ".ods": "application/vnd.oasis.opendocument.spreadsheet", + ".ots": "application/vnd.oasis.opendocument.spreadsheet-template", + ".odt": "application/vnd.oasis.opendocument.text", + ".odm": "application/vnd.oasis.opendocument.text-master", + ".ott": "application/vnd.oasis.opendocument.text-template", + ".oth": "application/vnd.oasis.opendocument.text-web", + ".sxw": "application/vnd.sun.xml.writer", + ".stw": "application/vnd.sun.xml.writer.template", + ".sxc": "application/vnd.sun.xml.calc", + ".stc": "application/vnd.sun.xml.calc.template", + ".sxd": "application/vnd.sun.xml.draw", + ".std": "application/vnd.sun.xml.draw.template", + ".sxi": "application/vnd.sun.xml.impress", + ".sti": "application/vnd.sun.xml.impress.template", + ".sxg": "application/vnd.sun.xml.writer.global", + ".sxm": "application/vnd.sun.xml.math", + ".sis": "application/vnd.symbian.install", + ".wbxml": "application/vnd.wap.wbxml", + ".wmlc": "application/vnd.wap.wmlc", + ".wmlsc": "application/vnd.wap.wmlscriptc", + ".bcpio": "application/x-bcpio", + ".torrent": "application/x-bittorrent", + ".bz2": "application/x-bzip2", + ".vcd": "application/x-cdlink", + ".pgn": "application/x-chess-pgn", + ".cpio": "application/x-cpio", + ".csh": "application/x-csh", + ".dvi": "application/x-dvi", + ".spl": "application/x-futuresplash", + ".gtar": "application/x-gtar", + ".hdf": "application/x-hdf", + ".jar": "application/x-java-archive", + ".jnlp": "application/x-java-jnlp-file", + ".js": "application/x-javascript", + ".ksp": "application/x-kspread", + ".chrt": "application/x-kchart", + ".kil": "application/x-killustrator", + ".latex": "application/x-latex", + ".rpm": "application/x-rpm", + ".sh": "application/x-sh", + ".shar": "application/x-shar", + ".swf": "application/x-shockwave-flash", + ".sit": "application/x-stuffit", + ".sv4cpio": "application/x-sv4cpio", + ".sv4crc": "application/x-sv4crc", + ".tar": "application/x-tar", + ".tcl": "application/x-tcl", + ".tex": "application/x-tex", + ".man": "application/x-troff-man", + ".me": "application/x-troff-me", + ".ms": "application/x-troff-ms", + ".ustar": "application/x-ustar", + ".src": "application/x-wais-source", + ".zip": "application/zip", + ".m3u": "audio/x-mpegurl", + ".ra": "audio/x-pn-realaudio", + ".wav": "audio/x-wav", + ".wma": "audio/x-ms-wma", + ".wax": "audio/x-ms-wax", + ".pdb": "chemical/x-pdb", + ".xyz": "chemical/x-xyz", + ".bmp": "image/bmp", + ".gif": "image/gif", + ".ief": "image/ief", + ".png": "image/png", + ".wbmp": "image/vnd.wap.wbmp", + ".ras": "image/x-cmu-raster", + ".pnm": "image/x-portable-anymap", + ".pbm": "image/x-portable-bitmap", + ".pgm": "image/x-portable-graymap", + ".ppm": "image/x-portable-pixmap", + ".rgb": "image/x-rgb", + ".xbm": "image/x-xbitmap", + ".xpm": "image/x-xpixmap", + ".xwd": "image/x-xwindowdump", + ".css": "text/css", + ".rtx": "text/richtext", + ".tsv": "text/tab-separated-values", + ".jad": "text/vnd.sun.j2me.app-descriptor", + ".wml": "text/vnd.wap.wml", + ".wmls": "text/vnd.wap.wmlscript", + ".etx": "text/x-setext", + ".mxu": "video/vnd.mpegurl", + ".flv": "video/x-flv", + ".wm": "video/x-ms-wm", + ".wmv": "video/x-ms-wmv", + ".wmx": "video/x-ms-wmx", + ".wvx": "video/x-ms-wvx", + ".avi": "video/x-msvideo", + ".movie": "video/x-sgi-movie", + ".ice": "x-conference/x-cooltalk", + ".3gp": "video/3gpp", + ".ai": "application/postscript", + ".aif": "audio/x-aiff", + ".aifc": "audio/x-aiff", + ".aiff": "audio/x-aiff", + ".asc": "text/plain", + ".atom": "application/atom+xml", + ".au": "audio/basic", + ".bin": "application/octet-stream", + ".cdf": "application/x-netcdf", + ".cgm": "image/cgm", + ".class": "application/octet-stream", + ".dcr": "application/x-director", + ".dif": "video/x-dv", + ".dir": "application/x-director", + ".djv": "image/vnd.djvu", + ".djvu": "image/vnd.djvu", + ".dll": "application/octet-stream", + ".dmg": "application/octet-stream", + ".dms": "application/octet-stream", + ".dtd": "application/xml-dtd", + ".dv": "video/x-dv", + ".dxr": "application/x-director", + ".eps": "application/postscript", + ".exe": "application/octet-stream", + ".ez": "application/andrew-inset", + ".gram": "application/srgs", + ".grxml": "application/srgs+xml", + ".gz": "application/x-gzip", + ".htm": "text/html", + ".html": "text/html", + ".ico": "image/x-icon", + ".ics": "text/calendar", + ".ifb": "text/calendar", + ".iges": "model/iges", + ".igs": "model/iges", + ".jp2": "image/jp2", + ".jpe": "image/jpeg", + ".jpeg": "image/jpeg", + ".jpg": "image/jpeg", + ".kar": "audio/midi", + ".lha": "application/octet-stream", + ".lzh": "application/octet-stream", + ".m4a": "audio/mp4a-latm", + ".m4p": "audio/mp4a-latm", + ".m4u": "video/vnd.mpegurl", + ".m4v": "video/x-m4v", + ".mac": "image/x-macpaint", + ".mathml": "application/mathml+xml", + ".mesh": "model/mesh", + ".mid": "audio/midi", + ".midi": "audio/midi", + ".mov": "video/quicktime", + ".mp2": "audio/mpeg", + ".mp3": "audio/mpeg", + ".mp4": "video/mp4", + ".mpe": "video/mpeg", + ".mpeg": "video/mpeg", + ".mpg": "video/mpeg", + ".mpga": "audio/mpeg", + ".msh": "model/mesh", + ".nc": "application/x-netcdf", + ".oda": "application/oda", + ".ogv": "video/ogv", + ".pct": "image/pict", + ".pic": "image/pict", + ".pict": "image/pict", + ".pnt": "image/x-macpaint", + ".pntg": "image/x-macpaint", + ".ps": "application/postscript", + ".qt": "video/quicktime", + ".qti": "image/x-quicktime", + ".qtif": "image/x-quicktime", + ".ram": "audio/x-pn-realaudio", + ".rdf": "application/rdf+xml", + ".rm": "application/vnd.rn-realmedia", + ".roff": "application/x-troff", + ".sgm": "text/sgml", + ".sgml": "text/sgml", + ".silo": "model/mesh", + ".skd": "application/x-koan", + ".skm": "application/x-koan", + ".skp": "application/x-koan", + ".skt": "application/x-koan", + ".smi": "application/smil", + ".smil": "application/smil", + ".snd": "audio/basic", + ".so": "application/octet-stream", + ".svg": "image/svg+xml", + ".t": "application/x-troff", + ".texi": "application/x-texinfo", + ".texinfo": "application/x-texinfo", + ".tif": "image/tiff", + ".tiff": "image/tiff", + ".tr": "application/x-troff", + ".txt": "text/plain", + ".vrml": "model/vrml", + ".vxml": "application/voicexml+xml", + ".webm": "video/webm", + ".wrl": "model/vrml", + ".xht": "application/xhtml+xml", + ".xhtml": "application/xhtml+xml", + ".xml": "application/xml", + ".xsl": "application/xml", + ".xslt": "application/xslt+xml", + ".xul": "application/vnd.mozilla.xul+xml", +} + +// TypeByExtension returns the MIME type associated with the file extension ext. +// gets the file's MIME type for HTTP header Content-Type +func TypeByExtension(filePath string) string { + typ := mime.TypeByExtension(path.Ext(filePath)) + if typ == "" { + typ = extToMimeType[strings.ToLower(path.Ext(filePath))] + } + return typ +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/model.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/model.go new file mode 100644 index 000000000..51f1c31e3 --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/model.go @@ -0,0 +1,68 @@ +package oss + +import ( + "hash" + "io" + "net/http" +) + +// Response defines HTTP response from OSS +type Response struct { + StatusCode int + Headers http.Header + Body io.ReadCloser + ClientCRC uint64 + ServerCRC uint64 +} + +func (r *Response) Read(p []byte) (n int, err error) { + return r.Body.Read(p) +} + +func (r *Response) Close() error { + return r.Body.Close() +} + +// PutObjectRequest is the request of DoPutObject +type PutObjectRequest struct { + ObjectKey string + Reader io.Reader +} + +// GetObjectRequest is the request of DoGetObject +type GetObjectRequest struct { + ObjectKey string +} + +// GetObjectResult is the result of DoGetObject +type GetObjectResult struct { + Response *Response + ClientCRC hash.Hash64 + ServerCRC uint64 +} + +// AppendObjectRequest is the requtest of DoAppendObject +type AppendObjectRequest struct { + ObjectKey string + Reader io.Reader + Position int64 +} + +// AppendObjectResult is the result of DoAppendObject +type AppendObjectResult struct { + NextPosition int64 + CRC uint64 +} + +// UploadPartRequest is the request of DoUploadPart +type UploadPartRequest struct { + InitResult *InitiateMultipartUploadResult + Reader io.Reader + PartSize int64 + PartNumber int +} + +// UploadPartResult is the result of DoUploadPart +type UploadPartResult struct { + Part UploadPart +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/multicopy.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/multicopy.go new file mode 100644 index 000000000..e2597c24e --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/multicopy.go @@ -0,0 +1,468 @@ +package oss + +import ( + "crypto/md5" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "io/ioutil" + "net/http" + "os" + "strconv" +) + +// CopyFile is multipart copy object +// +// srcBucketName source bucket name +// srcObjectKey source object name +// destObjectKey target object name in the form of bucketname.objectkey +// partSize the part size in byte. +// options object's contraints. Check out function InitiateMultipartUpload. +// +// error it's nil if the operation succeeds, otherwise it's an error object. +// +func (bucket Bucket) CopyFile(srcBucketName, srcObjectKey, destObjectKey string, partSize int64, options ...Option) error { + destBucketName := bucket.BucketName + if partSize < MinPartSize || partSize > MaxPartSize { + return errors.New("oss: part size invalid range (1024KB, 5GB]") + } + + cpConf := getCpConfig(options) + routines := getRoutines(options) + + if cpConf != nil && cpConf.IsEnable { + cpFilePath := getCopyCpFilePath(cpConf, srcBucketName, srcObjectKey, destBucketName, destObjectKey) + if cpFilePath != "" { + return bucket.copyFileWithCp(srcBucketName, srcObjectKey, destBucketName, destObjectKey, partSize, options, cpFilePath, routines) + } + } + + return bucket.copyFile(srcBucketName, srcObjectKey, destBucketName, destObjectKey, + partSize, options, routines) +} + +func getCopyCpFilePath(cpConf *cpConfig, srcBucket, srcObject, destBucket, destObject string) string { + if cpConf.FilePath == "" && cpConf.DirPath != "" { + dest := fmt.Sprintf("oss://%v/%v", destBucket, destObject) + src := fmt.Sprintf("oss://%v/%v", srcBucket, srcObject) + cpFileName := getCpFileName(src, dest) + cpConf.FilePath = cpConf.DirPath + string(os.PathSeparator) + cpFileName + } + return cpConf.FilePath +} + +// ----- Concurrently copy without checkpoint --------- + +// copyWorkerArg defines the copy worker arguments +type copyWorkerArg struct { + bucket *Bucket + imur InitiateMultipartUploadResult + srcBucketName string + srcObjectKey string + options []Option + hook copyPartHook +} + +// copyPartHook is the hook for testing purpose +type copyPartHook func(part copyPart) error + +var copyPartHooker copyPartHook = defaultCopyPartHook + +func defaultCopyPartHook(part copyPart) error { + return nil +} + +// copyWorker copies worker +func copyWorker(id int, arg copyWorkerArg, jobs <-chan copyPart, results chan<- UploadPart, failed chan<- error, die <-chan bool) { + for chunk := range jobs { + if err := arg.hook(chunk); err != nil { + failed <- err + break + } + chunkSize := chunk.End - chunk.Start + 1 + part, err := arg.bucket.UploadPartCopy(arg.imur, arg.srcBucketName, arg.srcObjectKey, + chunk.Start, chunkSize, chunk.Number, arg.options...) + if err != nil { + failed <- err + break + } + select { + case <-die: + return + default: + } + results <- part + } +} + +// copyScheduler +func copyScheduler(jobs chan copyPart, parts []copyPart) { + for _, part := range parts { + jobs <- part + } + close(jobs) +} + +// copyPart structure +type copyPart struct { + Number int // Part number (from 1 to 10,000) + Start int64 // The start index in the source file. + End int64 // The end index in the source file +} + +// getCopyParts calculates copy parts +func getCopyParts(objectSize, partSize int64) []copyPart { + parts := []copyPart{} + part := copyPart{} + i := 0 + for offset := int64(0); offset < objectSize; offset += partSize { + part.Number = i + 1 + part.Start = offset + part.End = GetPartEnd(offset, objectSize, partSize) + parts = append(parts, part) + i++ + } + return parts +} + +// getSrcObjectBytes gets the source file size +func getSrcObjectBytes(parts []copyPart) int64 { + var ob int64 + for _, part := range parts { + ob += (part.End - part.Start + 1) + } + return ob +} + +// copyFile is a concurrently copy without checkpoint +func (bucket Bucket) copyFile(srcBucketName, srcObjectKey, destBucketName, destObjectKey string, + partSize int64, options []Option, routines int) error { + descBucket, err := bucket.Client.Bucket(destBucketName) + srcBucket, err := bucket.Client.Bucket(srcBucketName) + listener := getProgressListener(options) + + payerOptions := []Option{} + payer := getPayer(options) + if payer != "" { + payerOptions = append(payerOptions, RequestPayer(PayerType(payer))) + } + + meta, err := srcBucket.GetObjectDetailedMeta(srcObjectKey, payerOptions...) + if err != nil { + return err + } + + objectSize, err := strconv.ParseInt(meta.Get(HTTPHeaderContentLength), 10, 0) + if err != nil { + return err + } + + // Get copy parts + parts := getCopyParts(objectSize, partSize) + // Initialize the multipart upload + imur, err := descBucket.InitiateMultipartUpload(destObjectKey, options...) + if err != nil { + return err + } + + jobs := make(chan copyPart, len(parts)) + results := make(chan UploadPart, len(parts)) + failed := make(chan error) + die := make(chan bool) + + var completedBytes int64 + totalBytes := getSrcObjectBytes(parts) + event := newProgressEvent(TransferStartedEvent, 0, totalBytes) + publishProgress(listener, event) + + // Start to copy workers + arg := copyWorkerArg{descBucket, imur, srcBucketName, srcObjectKey, payerOptions, copyPartHooker} + for w := 1; w <= routines; w++ { + go copyWorker(w, arg, jobs, results, failed, die) + } + + // Start the scheduler + go copyScheduler(jobs, parts) + + // Wait for the parts finished. + completed := 0 + ups := make([]UploadPart, len(parts)) + for completed < len(parts) { + select { + case part := <-results: + completed++ + ups[part.PartNumber-1] = part + completedBytes += (parts[part.PartNumber-1].End - parts[part.PartNumber-1].Start + 1) + event = newProgressEvent(TransferDataEvent, completedBytes, totalBytes) + publishProgress(listener, event) + case err := <-failed: + close(die) + descBucket.AbortMultipartUpload(imur, payerOptions...) + event = newProgressEvent(TransferFailedEvent, completedBytes, totalBytes) + publishProgress(listener, event) + return err + } + + if completed >= len(parts) { + break + } + } + + event = newProgressEvent(TransferCompletedEvent, completedBytes, totalBytes) + publishProgress(listener, event) + + // Complete the multipart upload + _, err = descBucket.CompleteMultipartUpload(imur, ups, payerOptions...) + if err != nil { + bucket.AbortMultipartUpload(imur, payerOptions...) + return err + } + return nil +} + +// ----- Concurrently copy with checkpoint ----- + +const copyCpMagic = "84F1F18C-FF1D-403B-A1D8-9DEB5F65910A" + +type copyCheckpoint struct { + Magic string // Magic + MD5 string // CP content MD5 + SrcBucketName string // Source bucket + SrcObjectKey string // Source object + DestBucketName string // Target bucket + DestObjectKey string // Target object + CopyID string // Copy ID + ObjStat objectStat // Object stat + Parts []copyPart // Copy parts + CopyParts []UploadPart // The uploaded parts + PartStat []bool // The part status +} + +// isValid checks if the data is valid which means CP is valid and object is not updated. +func (cp copyCheckpoint) isValid(meta http.Header) (bool, error) { + // Compare CP's magic number and the MD5. + cpb := cp + cpb.MD5 = "" + js, _ := json.Marshal(cpb) + sum := md5.Sum(js) + b64 := base64.StdEncoding.EncodeToString(sum[:]) + + if cp.Magic != downloadCpMagic || b64 != cp.MD5 { + return false, nil + } + + objectSize, err := strconv.ParseInt(meta.Get(HTTPHeaderContentLength), 10, 0) + if err != nil { + return false, err + } + + // Compare the object size and last modified time and etag. + if cp.ObjStat.Size != objectSize || + cp.ObjStat.LastModified != meta.Get(HTTPHeaderLastModified) || + cp.ObjStat.Etag != meta.Get(HTTPHeaderEtag) { + return false, nil + } + + return true, nil +} + +// load loads from the checkpoint file +func (cp *copyCheckpoint) load(filePath string) error { + contents, err := ioutil.ReadFile(filePath) + if err != nil { + return err + } + + err = json.Unmarshal(contents, cp) + return err +} + +// update updates the parts status +func (cp *copyCheckpoint) update(part UploadPart) { + cp.CopyParts[part.PartNumber-1] = part + cp.PartStat[part.PartNumber-1] = true +} + +// dump dumps the CP to the file +func (cp *copyCheckpoint) dump(filePath string) error { + bcp := *cp + + // Calculate MD5 + bcp.MD5 = "" + js, err := json.Marshal(bcp) + if err != nil { + return err + } + sum := md5.Sum(js) + b64 := base64.StdEncoding.EncodeToString(sum[:]) + bcp.MD5 = b64 + + // Serialization + js, err = json.Marshal(bcp) + if err != nil { + return err + } + + // Dump + return ioutil.WriteFile(filePath, js, FilePermMode) +} + +// todoParts returns unfinished parts +func (cp copyCheckpoint) todoParts() []copyPart { + dps := []copyPart{} + for i, ps := range cp.PartStat { + if !ps { + dps = append(dps, cp.Parts[i]) + } + } + return dps +} + +// getCompletedBytes returns finished bytes count +func (cp copyCheckpoint) getCompletedBytes() int64 { + var completedBytes int64 + for i, part := range cp.Parts { + if cp.PartStat[i] { + completedBytes += (part.End - part.Start + 1) + } + } + return completedBytes +} + +// prepare initializes the multipart upload +func (cp *copyCheckpoint) prepare(meta http.Header, srcBucket *Bucket, srcObjectKey string, destBucket *Bucket, destObjectKey string, + partSize int64, options []Option) error { + // CP + cp.Magic = copyCpMagic + cp.SrcBucketName = srcBucket.BucketName + cp.SrcObjectKey = srcObjectKey + cp.DestBucketName = destBucket.BucketName + cp.DestObjectKey = destObjectKey + + objectSize, err := strconv.ParseInt(meta.Get(HTTPHeaderContentLength), 10, 0) + if err != nil { + return err + } + + cp.ObjStat.Size = objectSize + cp.ObjStat.LastModified = meta.Get(HTTPHeaderLastModified) + cp.ObjStat.Etag = meta.Get(HTTPHeaderEtag) + + // Parts + cp.Parts = getCopyParts(objectSize, partSize) + cp.PartStat = make([]bool, len(cp.Parts)) + for i := range cp.PartStat { + cp.PartStat[i] = false + } + cp.CopyParts = make([]UploadPart, len(cp.Parts)) + + // Init copy + imur, err := destBucket.InitiateMultipartUpload(destObjectKey, options...) + if err != nil { + return err + } + cp.CopyID = imur.UploadID + + return nil +} + +func (cp *copyCheckpoint) complete(bucket *Bucket, parts []UploadPart, cpFilePath string, options []Option) error { + imur := InitiateMultipartUploadResult{Bucket: cp.DestBucketName, + Key: cp.DestObjectKey, UploadID: cp.CopyID} + _, err := bucket.CompleteMultipartUpload(imur, parts, options...) + if err != nil { + return err + } + os.Remove(cpFilePath) + return err +} + +// copyFileWithCp is concurrently copy with checkpoint +func (bucket Bucket) copyFileWithCp(srcBucketName, srcObjectKey, destBucketName, destObjectKey string, + partSize int64, options []Option, cpFilePath string, routines int) error { + descBucket, err := bucket.Client.Bucket(destBucketName) + srcBucket, err := bucket.Client.Bucket(srcBucketName) + listener := getProgressListener(options) + + payerOptions := []Option{} + payer := getPayer(options) + if payer != "" { + payerOptions = append(payerOptions, RequestPayer(PayerType(payer))) + } + + // Load CP data + ccp := copyCheckpoint{} + err = ccp.load(cpFilePath) + if err != nil { + os.Remove(cpFilePath) + } + + // Make sure the object is not updated. + meta, err := srcBucket.GetObjectDetailedMeta(srcObjectKey, payerOptions...) + if err != nil { + return err + } + + // Load error or the CP data is invalid---reinitialize + valid, err := ccp.isValid(meta) + if err != nil || !valid { + if err = ccp.prepare(meta, srcBucket, srcObjectKey, descBucket, destObjectKey, partSize, options); err != nil { + return err + } + os.Remove(cpFilePath) + } + + // Unfinished parts + parts := ccp.todoParts() + imur := InitiateMultipartUploadResult{ + Bucket: destBucketName, + Key: destObjectKey, + UploadID: ccp.CopyID} + + jobs := make(chan copyPart, len(parts)) + results := make(chan UploadPart, len(parts)) + failed := make(chan error) + die := make(chan bool) + + completedBytes := ccp.getCompletedBytes() + event := newProgressEvent(TransferStartedEvent, completedBytes, ccp.ObjStat.Size) + publishProgress(listener, event) + + // Start the worker coroutines + arg := copyWorkerArg{descBucket, imur, srcBucketName, srcObjectKey, payerOptions, copyPartHooker} + for w := 1; w <= routines; w++ { + go copyWorker(w, arg, jobs, results, failed, die) + } + + // Start the scheduler + go copyScheduler(jobs, parts) + + // Wait for the parts completed. + completed := 0 + for completed < len(parts) { + select { + case part := <-results: + completed++ + ccp.update(part) + ccp.dump(cpFilePath) + completedBytes += (parts[part.PartNumber-1].End - parts[part.PartNumber-1].Start + 1) + event = newProgressEvent(TransferDataEvent, completedBytes, ccp.ObjStat.Size) + publishProgress(listener, event) + case err := <-failed: + close(die) + event = newProgressEvent(TransferFailedEvent, completedBytes, ccp.ObjStat.Size) + publishProgress(listener, event) + return err + } + + if completed >= len(parts) { + break + } + } + + event = newProgressEvent(TransferCompletedEvent, completedBytes, ccp.ObjStat.Size) + publishProgress(listener, event) + + return ccp.complete(descBucket, ccp.CopyParts, cpFilePath, payerOptions) +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/multipart.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/multipart.go new file mode 100644 index 000000000..b5a3a05b5 --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/multipart.go @@ -0,0 +1,290 @@ +package oss + +import ( + "bytes" + "encoding/xml" + "io" + "net/http" + "net/url" + "os" + "sort" + "strconv" +) + +// InitiateMultipartUpload initializes multipart upload +// +// objectKey object name +// options the object constricts for upload. The valid options are CacheControl, ContentDisposition, ContentEncoding, Expires, +// ServerSideEncryption, Meta, check out the following link: +// https://help.aliyun.com/document_detail/oss/api-reference/multipart-upload/InitiateMultipartUpload.html +// +// InitiateMultipartUploadResult the return value of the InitiateMultipartUpload, which is used for calls later on such as UploadPartFromFile,UploadPartCopy. +// error it's nil if the operation succeeds, otherwise it's an error object. +// +func (bucket Bucket) InitiateMultipartUpload(objectKey string, options ...Option) (InitiateMultipartUploadResult, error) { + var imur InitiateMultipartUploadResult + opts := addContentType(options, objectKey) + params := map[string]interface{}{} + params["uploads"] = nil + resp, err := bucket.do("POST", objectKey, params, opts, nil, nil) + if err != nil { + return imur, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &imur) + return imur, err +} + +// UploadPart uploads parts +// +// After initializing a Multipart Upload, the upload Id and object key could be used for uploading the parts. +// Each part has its part number (ranges from 1 to 10,000). And for each upload Id, the part number identifies the position of the part in the whole file. +// And thus with the same part number and upload Id, another part upload will overwrite the data. +// Except the last one, minimal part size is 100KB. There's no limit on the last part size. +// +// imur the returned value of InitiateMultipartUpload. +// reader io.Reader the reader for the part's data. +// size the part size. +// partNumber the part number (ranges from 1 to 10,000). Invalid part number will lead to InvalidArgument error. +// +// UploadPart the return value of the upload part. It consists of PartNumber and ETag. It's valid when error is nil. +// error it's nil if the operation succeeds, otherwise it's an error object. +// +func (bucket Bucket) UploadPart(imur InitiateMultipartUploadResult, reader io.Reader, + partSize int64, partNumber int, options ...Option) (UploadPart, error) { + request := &UploadPartRequest{ + InitResult: &imur, + Reader: reader, + PartSize: partSize, + PartNumber: partNumber, + } + + result, err := bucket.DoUploadPart(request, options) + + return result.Part, err +} + +// UploadPartFromFile uploads part from the file. +// +// imur the return value of a successful InitiateMultipartUpload. +// filePath the local file path to upload. +// startPosition the start position in the local file. +// partSize the part size. +// partNumber the part number (from 1 to 10,000) +// +// UploadPart the return value consists of PartNumber and ETag. +// error it's nil if the operation succeeds, otherwise it's an error object. +// +func (bucket Bucket) UploadPartFromFile(imur InitiateMultipartUploadResult, filePath string, + startPosition, partSize int64, partNumber int, options ...Option) (UploadPart, error) { + var part = UploadPart{} + fd, err := os.Open(filePath) + if err != nil { + return part, err + } + defer fd.Close() + fd.Seek(startPosition, os.SEEK_SET) + + request := &UploadPartRequest{ + InitResult: &imur, + Reader: fd, + PartSize: partSize, + PartNumber: partNumber, + } + + result, err := bucket.DoUploadPart(request, options) + + return result.Part, err +} + +// DoUploadPart does the actual part upload. +// +// request part upload request +// +// UploadPartResult the result of uploading part. +// error it's nil if the operation succeeds, otherwise it's an error object. +// +func (bucket Bucket) DoUploadPart(request *UploadPartRequest, options []Option) (*UploadPartResult, error) { + listener := getProgressListener(options) + options = append(options, ContentLength(request.PartSize)) + params := map[string]interface{}{} + params["partNumber"] = strconv.Itoa(request.PartNumber) + params["uploadId"] = request.InitResult.UploadID + resp, err := bucket.do("PUT", request.InitResult.Key, params, options, + &io.LimitedReader{R: request.Reader, N: request.PartSize}, listener) + if err != nil { + return &UploadPartResult{}, err + } + defer resp.Body.Close() + + part := UploadPart{ + ETag: resp.Headers.Get(HTTPHeaderEtag), + PartNumber: request.PartNumber, + } + + if bucket.getConfig().IsEnableCRC { + err = checkCRC(resp, "DoUploadPart") + if err != nil { + return &UploadPartResult{part}, err + } + } + + return &UploadPartResult{part}, nil +} + +// UploadPartCopy uploads part copy +// +// imur the return value of InitiateMultipartUpload +// copySrc source Object name +// startPosition the part's start index in the source file +// partSize the part size +// partNumber the part number, ranges from 1 to 10,000. If it exceeds the range OSS returns InvalidArgument error. +// options the constraints of source object for the copy. The copy happens only when these contraints are met. Otherwise it returns error. +// CopySourceIfNoneMatch, CopySourceIfModifiedSince CopySourceIfUnmodifiedSince, check out the following link for the detail +// https://help.aliyun.com/document_detail/oss/api-reference/multipart-upload/UploadPartCopy.html +// +// UploadPart the return value consists of PartNumber and ETag. +// error it's nil if the operation succeeds, otherwise it's an error object. +// +func (bucket Bucket) UploadPartCopy(imur InitiateMultipartUploadResult, srcBucketName, srcObjectKey string, + startPosition, partSize int64, partNumber int, options ...Option) (UploadPart, error) { + var out UploadPartCopyResult + var part UploadPart + + opts := []Option{CopySource(srcBucketName, url.QueryEscape(srcObjectKey)), + CopySourceRange(startPosition, partSize)} + opts = append(opts, options...) + params := map[string]interface{}{} + params["partNumber"] = strconv.Itoa(partNumber) + params["uploadId"] = imur.UploadID + resp, err := bucket.do("PUT", imur.Key, params, opts, nil, nil) + if err != nil { + return part, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + if err != nil { + return part, err + } + part.ETag = out.ETag + part.PartNumber = partNumber + + return part, nil +} + +// CompleteMultipartUpload completes the multipart upload. +// +// imur the return value of InitiateMultipartUpload. +// parts the array of return value of UploadPart/UploadPartFromFile/UploadPartCopy. +// +// CompleteMultipartUploadResponse the return value when the call succeeds. Only valid when the error is nil. +// error it's nil if the operation succeeds, otherwise it's an error object. +// +func (bucket Bucket) CompleteMultipartUpload(imur InitiateMultipartUploadResult, + parts []UploadPart, options ...Option) (CompleteMultipartUploadResult, error) { + var out CompleteMultipartUploadResult + + sort.Sort(uploadParts(parts)) + cxml := completeMultipartUploadXML{} + cxml.Part = parts + bs, err := xml.Marshal(cxml) + if err != nil { + return out, err + } + buffer := new(bytes.Buffer) + buffer.Write(bs) + + params := map[string]interface{}{} + params["uploadId"] = imur.UploadID + resp, err := bucket.do("POST", imur.Key, params, options, buffer, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + return out, err +} + +// AbortMultipartUpload aborts the multipart upload. +// +// imur the return value of InitiateMultipartUpload. +// +// error it's nil if the operation succeeds, otherwise it's an error object. +// +func (bucket Bucket) AbortMultipartUpload(imur InitiateMultipartUploadResult, options ...Option) error { + params := map[string]interface{}{} + params["uploadId"] = imur.UploadID + resp, err := bucket.do("DELETE", imur.Key, params, options, nil, nil) + if err != nil { + return err + } + defer resp.Body.Close() + return checkRespCode(resp.StatusCode, []int{http.StatusNoContent}) +} + +// ListUploadedParts lists the uploaded parts. +// +// imur the return value of InitiateMultipartUpload. +// +// ListUploadedPartsResponse the return value if it succeeds, only valid when error is nil. +// error it's nil if the operation succeeds, otherwise it's an error object. +// +func (bucket Bucket) ListUploadedParts(imur InitiateMultipartUploadResult, options ...Option) (ListUploadedPartsResult, error) { + var out ListUploadedPartsResult + options = append(options, EncodingType("url")) + + params := map[string]interface{}{} + params, err := getRawParams(options) + if err != nil { + return out, err + } + + params["uploadId"] = imur.UploadID + resp, err := bucket.do("GET", imur.Key, params, nil, nil, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + if err != nil { + return out, err + } + err = decodeListUploadedPartsResult(&out) + return out, err +} + +// ListMultipartUploads lists all ongoing multipart upload tasks +// +// options listObject's filter. Prefix specifies the returned object's prefix; KeyMarker specifies the returned object's start point in lexicographic order; +// MaxKeys specifies the max entries to return; Delimiter is the character for grouping object keys. +// +// ListMultipartUploadResponse the return value if it succeeds, only valid when error is nil. +// error it's nil if the operation succeeds, otherwise it's an error object. +// +func (bucket Bucket) ListMultipartUploads(options ...Option) (ListMultipartUploadResult, error) { + var out ListMultipartUploadResult + + options = append(options, EncodingType("url")) + params, err := getRawParams(options) + if err != nil { + return out, err + } + params["uploads"] = nil + + resp, err := bucket.do("GET", "", params, options, nil, nil) + if err != nil { + return out, err + } + defer resp.Body.Close() + + err = xmlUnmarshal(resp.Body, &out) + if err != nil { + return out, err + } + err = decodeListMultipartUploadResult(&out) + return out, err +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/option.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/option.go new file mode 100644 index 000000000..5952f8ae3 --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/option.go @@ -0,0 +1,433 @@ +package oss + +import ( + "fmt" + "net/http" + "strconv" + "strings" + "time" +) + +type optionType string + +const ( + optionParam optionType = "HTTPParameter" // URL parameter + optionHTTP optionType = "HTTPHeader" // HTTP header + optionArg optionType = "FuncArgument" // Function argument +) + +const ( + deleteObjectsQuiet = "delete-objects-quiet" + routineNum = "x-routine-num" + checkpointConfig = "x-cp-config" + initCRC64 = "init-crc64" + progressListener = "x-progress-listener" + storageClass = "storage-class" +) + +type ( + optionValue struct { + Value interface{} + Type optionType + } + + // Option HTTP option + Option func(map[string]optionValue) error +) + +// ACL is an option to set X-Oss-Acl header +func ACL(acl ACLType) Option { + return setHeader(HTTPHeaderOssACL, string(acl)) +} + +// ContentType is an option to set Content-Type header +func ContentType(value string) Option { + return setHeader(HTTPHeaderContentType, value) +} + +// ContentLength is an option to set Content-Length header +func ContentLength(length int64) Option { + return setHeader(HTTPHeaderContentLength, strconv.FormatInt(length, 10)) +} + +// CacheControl is an option to set Cache-Control header +func CacheControl(value string) Option { + return setHeader(HTTPHeaderCacheControl, value) +} + +// ContentDisposition is an option to set Content-Disposition header +func ContentDisposition(value string) Option { + return setHeader(HTTPHeaderContentDisposition, value) +} + +// ContentEncoding is an option to set Content-Encoding header +func ContentEncoding(value string) Option { + return setHeader(HTTPHeaderContentEncoding, value) +} + +// ContentLanguage is an option to set Content-Language header +func ContentLanguage(value string) Option { + return setHeader(HTTPHeaderContentLanguage, value) +} + +// ContentMD5 is an option to set Content-MD5 header +func ContentMD5(value string) Option { + return setHeader(HTTPHeaderContentMD5, value) +} + +// Expires is an option to set Expires header +func Expires(t time.Time) Option { + return setHeader(HTTPHeaderExpires, t.Format(http.TimeFormat)) +} + +// Meta is an option to set Meta header +func Meta(key, value string) Option { + return setHeader(HTTPHeaderOssMetaPrefix+key, value) +} + +// Range is an option to set Range header, [start, end] +func Range(start, end int64) Option { + return setHeader(HTTPHeaderRange, fmt.Sprintf("bytes=%d-%d", start, end)) +} + +// NormalizedRange is an option to set Range header, such as 1024-2048 or 1024- or -2048 +func NormalizedRange(nr string) Option { + return setHeader(HTTPHeaderRange, fmt.Sprintf("bytes=%s", strings.TrimSpace(nr))) +} + +// AcceptEncoding is an option to set Accept-Encoding header +func AcceptEncoding(value string) Option { + return setHeader(HTTPHeaderAcceptEncoding, value) +} + +// IfModifiedSince is an option to set If-Modified-Since header +func IfModifiedSince(t time.Time) Option { + return setHeader(HTTPHeaderIfModifiedSince, t.Format(http.TimeFormat)) +} + +// IfUnmodifiedSince is an option to set If-Unmodified-Since header +func IfUnmodifiedSince(t time.Time) Option { + return setHeader(HTTPHeaderIfUnmodifiedSince, t.Format(http.TimeFormat)) +} + +// IfMatch is an option to set If-Match header +func IfMatch(value string) Option { + return setHeader(HTTPHeaderIfMatch, value) +} + +// IfNoneMatch is an option to set IfNoneMatch header +func IfNoneMatch(value string) Option { + return setHeader(HTTPHeaderIfNoneMatch, value) +} + +// CopySource is an option to set X-Oss-Copy-Source header +func CopySource(sourceBucket, sourceObject string) Option { + return setHeader(HTTPHeaderOssCopySource, "/"+sourceBucket+"/"+sourceObject) +} + +// CopySourceRange is an option to set X-Oss-Copy-Source header +func CopySourceRange(startPosition, partSize int64) Option { + val := "bytes=" + strconv.FormatInt(startPosition, 10) + "-" + + strconv.FormatInt((startPosition+partSize-1), 10) + return setHeader(HTTPHeaderOssCopySourceRange, val) +} + +// CopySourceIfMatch is an option to set X-Oss-Copy-Source-If-Match header +func CopySourceIfMatch(value string) Option { + return setHeader(HTTPHeaderOssCopySourceIfMatch, value) +} + +// CopySourceIfNoneMatch is an option to set X-Oss-Copy-Source-If-None-Match header +func CopySourceIfNoneMatch(value string) Option { + return setHeader(HTTPHeaderOssCopySourceIfNoneMatch, value) +} + +// CopySourceIfModifiedSince is an option to set X-Oss-CopySource-If-Modified-Since header +func CopySourceIfModifiedSince(t time.Time) Option { + return setHeader(HTTPHeaderOssCopySourceIfModifiedSince, t.Format(http.TimeFormat)) +} + +// CopySourceIfUnmodifiedSince is an option to set X-Oss-Copy-Source-If-Unmodified-Since header +func CopySourceIfUnmodifiedSince(t time.Time) Option { + return setHeader(HTTPHeaderOssCopySourceIfUnmodifiedSince, t.Format(http.TimeFormat)) +} + +// MetadataDirective is an option to set X-Oss-Metadata-Directive header +func MetadataDirective(directive MetadataDirectiveType) Option { + return setHeader(HTTPHeaderOssMetadataDirective, string(directive)) +} + +// ServerSideEncryption is an option to set X-Oss-Server-Side-Encryption header +func ServerSideEncryption(value string) Option { + return setHeader(HTTPHeaderOssServerSideEncryption, value) +} + +// ServerSideEncryptionKeyID is an option to set X-Oss-Server-Side-Encryption-Key-Id header +func ServerSideEncryptionKeyID(value string) Option { + return setHeader(HTTPHeaderOssServerSideEncryptionKeyID, value) +} + +// ObjectACL is an option to set X-Oss-Object-Acl header +func ObjectACL(acl ACLType) Option { + return setHeader(HTTPHeaderOssObjectACL, string(acl)) +} + +// symlinkTarget is an option to set X-Oss-Symlink-Target +func symlinkTarget(targetObjectKey string) Option { + return setHeader(HTTPHeaderOssSymlinkTarget, targetObjectKey) +} + +// Origin is an option to set Origin header +func Origin(value string) Option { + return setHeader(HTTPHeaderOrigin, value) +} + +// ObjectStorageClass is an option to set the storage class of object +func ObjectStorageClass(storageClass StorageClassType) Option { + return setHeader(HTTPHeaderOssStorageClass, string(storageClass)) +} + +// Callback is an option to set callback values +func Callback(callback string) Option { + return setHeader(HTTPHeaderOssCallback, callback) +} + +// CallbackVar is an option to set callback user defined values +func CallbackVar(callbackVar string) Option { + return setHeader(HTTPHeaderOssCallbackVar, callbackVar) +} + +// RequestPayer is an option to set payer who pay for the request +func RequestPayer(payerType PayerType) Option { + return setHeader(HTTPHeaderOSSRequester, string(payerType)) +} + +// Delimiter is an option to set delimiler parameter +func Delimiter(value string) Option { + return addParam("delimiter", value) +} + +// Marker is an option to set marker parameter +func Marker(value string) Option { + return addParam("marker", value) +} + +// MaxKeys is an option to set maxkeys parameter +func MaxKeys(value int) Option { + return addParam("max-keys", strconv.Itoa(value)) +} + +// Prefix is an option to set prefix parameter +func Prefix(value string) Option { + return addParam("prefix", value) +} + +// EncodingType is an option to set encoding-type parameter +func EncodingType(value string) Option { + return addParam("encoding-type", value) +} + +// MaxUploads is an option to set max-uploads parameter +func MaxUploads(value int) Option { + return addParam("max-uploads", strconv.Itoa(value)) +} + +// KeyMarker is an option to set key-marker parameter +func KeyMarker(value string) Option { + return addParam("key-marker", value) +} + +// UploadIDMarker is an option to set upload-id-marker parameter +func UploadIDMarker(value string) Option { + return addParam("upload-id-marker", value) +} + +// MaxParts is an option to set max-parts parameter +func MaxParts(value int) Option { + return addParam("max-parts", strconv.Itoa(value)) +} + +// PartNumberMarker is an option to set part-number-marker parameter +func PartNumberMarker(value int) Option { + return addParam("part-number-marker", strconv.Itoa(value)) +} + +// DeleteObjectsQuiet false:DeleteObjects in verbose mode; true:DeleteObjects in quite mode. Default is false. +func DeleteObjectsQuiet(isQuiet bool) Option { + return addArg(deleteObjectsQuiet, isQuiet) +} + +// StorageClass bucket storage class +func StorageClass(value StorageClassType) Option { + return addArg(storageClass, value) +} + +// Checkpoint configuration +type cpConfig struct { + IsEnable bool + FilePath string + DirPath string +} + +// Checkpoint sets the isEnable flag and checkpoint file path for DownloadFile/UploadFile. +func Checkpoint(isEnable bool, filePath string) Option { + return addArg(checkpointConfig, &cpConfig{IsEnable: isEnable, FilePath: filePath}) +} + +// CheckpointDir sets the isEnable flag and checkpoint dir path for DownloadFile/UploadFile. +func CheckpointDir(isEnable bool, dirPath string) Option { + return addArg(checkpointConfig, &cpConfig{IsEnable: isEnable, DirPath: dirPath}) +} + +// Routines DownloadFile/UploadFile routine count +func Routines(n int) Option { + return addArg(routineNum, n) +} + +// InitCRC Init AppendObject CRC +func InitCRC(initCRC uint64) Option { + return addArg(initCRC64, initCRC) +} + +// Progress set progress listener +func Progress(listener ProgressListener) Option { + return addArg(progressListener, listener) +} + +// ResponseContentType is an option to set response-content-type param +func ResponseContentType(value string) Option { + return addParam("response-content-type", value) +} + +// ResponseContentLanguage is an option to set response-content-language param +func ResponseContentLanguage(value string) Option { + return addParam("response-content-language", value) +} + +// ResponseExpires is an option to set response-expires param +func ResponseExpires(value string) Option { + return addParam("response-expires", value) +} + +// ResponseCacheControl is an option to set response-cache-control param +func ResponseCacheControl(value string) Option { + return addParam("response-cache-control", value) +} + +// ResponseContentDisposition is an option to set response-content-disposition param +func ResponseContentDisposition(value string) Option { + return addParam("response-content-disposition", value) +} + +// ResponseContentEncoding is an option to set response-content-encoding param +func ResponseContentEncoding(value string) Option { + return addParam("response-content-encoding", value) +} + +// Process is an option to set x-oss-process param +func Process(value string) Option { + return addParam("x-oss-process", value) +} + +func setHeader(key string, value interface{}) Option { + return func(params map[string]optionValue) error { + if value == nil { + return nil + } + params[key] = optionValue{value, optionHTTP} + return nil + } +} + +func addParam(key string, value interface{}) Option { + return func(params map[string]optionValue) error { + if value == nil { + return nil + } + params[key] = optionValue{value, optionParam} + return nil + } +} + +func addArg(key string, value interface{}) Option { + return func(params map[string]optionValue) error { + if value == nil { + return nil + } + params[key] = optionValue{value, optionArg} + return nil + } +} + +func handleOptions(headers map[string]string, options []Option) error { + params := map[string]optionValue{} + for _, option := range options { + if option != nil { + if err := option(params); err != nil { + return err + } + } + } + + for k, v := range params { + if v.Type == optionHTTP { + headers[k] = v.Value.(string) + } + } + return nil +} + +func getRawParams(options []Option) (map[string]interface{}, error) { + // Option + params := map[string]optionValue{} + for _, option := range options { + if option != nil { + if err := option(params); err != nil { + return nil, err + } + } + } + + paramsm := map[string]interface{}{} + // Serialize + for k, v := range params { + if v.Type == optionParam { + vs := params[k] + paramsm[k] = vs.Value.(string) + } + } + + return paramsm, nil +} + +func findOption(options []Option, param string, defaultVal interface{}) (interface{}, error) { + params := map[string]optionValue{} + for _, option := range options { + if option != nil { + if err := option(params); err != nil { + return nil, err + } + } + } + + if val, ok := params[param]; ok { + return val.Value, nil + } + return defaultVal, nil +} + +func isOptionSet(options []Option, option string) (bool, interface{}, error) { + params := map[string]optionValue{} + for _, option := range options { + if option != nil { + if err := option(params); err != nil { + return false, nil, err + } + } + } + + if val, ok := params[option]; ok { + return true, val.Value, nil + } + return false, nil, nil +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/progress.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/progress.go new file mode 100644 index 000000000..b38d803fe --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/progress.go @@ -0,0 +1,112 @@ +package oss + +import "io" + +// ProgressEventType defines transfer progress event type +type ProgressEventType int + +const ( + // TransferStartedEvent transfer started, set TotalBytes + TransferStartedEvent ProgressEventType = 1 + iota + // TransferDataEvent transfer data, set ConsumedBytes anmd TotalBytes + TransferDataEvent + // TransferCompletedEvent transfer completed + TransferCompletedEvent + // TransferFailedEvent transfer encounters an error + TransferFailedEvent +) + +// ProgressEvent defines progress event +type ProgressEvent struct { + ConsumedBytes int64 + TotalBytes int64 + EventType ProgressEventType +} + +// ProgressListener listens progress change +type ProgressListener interface { + ProgressChanged(event *ProgressEvent) +} + +// -------------------- Private -------------------- + +func newProgressEvent(eventType ProgressEventType, consumed, total int64) *ProgressEvent { + return &ProgressEvent{ + ConsumedBytes: consumed, + TotalBytes: total, + EventType: eventType} +} + +// publishProgress +func publishProgress(listener ProgressListener, event *ProgressEvent) { + if listener != nil && event != nil { + listener.ProgressChanged(event) + } +} + +type readerTracker struct { + completedBytes int64 +} + +type teeReader struct { + reader io.Reader + writer io.Writer + listener ProgressListener + consumedBytes int64 + totalBytes int64 + tracker *readerTracker +} + +// TeeReader returns a Reader that writes to w what it reads from r. +// All reads from r performed through it are matched with +// corresponding writes to w. There is no internal buffering - +// the write must complete before the read completes. +// Any error encountered while writing is reported as a read error. +func TeeReader(reader io.Reader, writer io.Writer, totalBytes int64, listener ProgressListener, tracker *readerTracker) io.ReadCloser { + return &teeReader{ + reader: reader, + writer: writer, + listener: listener, + consumedBytes: 0, + totalBytes: totalBytes, + tracker: tracker, + } +} + +func (t *teeReader) Read(p []byte) (n int, err error) { + n, err = t.reader.Read(p) + + // Read encountered error + if err != nil && err != io.EOF { + event := newProgressEvent(TransferFailedEvent, t.consumedBytes, t.totalBytes) + publishProgress(t.listener, event) + } + + if n > 0 { + t.consumedBytes += int64(n) + // CRC + if t.writer != nil { + if n, err := t.writer.Write(p[:n]); err != nil { + return n, err + } + } + // Progress + if t.listener != nil { + event := newProgressEvent(TransferDataEvent, t.consumedBytes, t.totalBytes) + publishProgress(t.listener, event) + } + // Track + if t.tracker != nil { + t.tracker.completedBytes = t.consumedBytes + } + } + + return +} + +func (t *teeReader) Close() error { + if rc, ok := t.reader.(io.ReadCloser); ok { + return rc.Close() + } + return nil +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/transport_1_6.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/transport_1_6.go new file mode 100644 index 000000000..e6de4cdd2 --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/transport_1_6.go @@ -0,0 +1,26 @@ +// +build !go1.7 + +package oss + +import ( + "net" + "net/http" +) + +func newTransport(conn *Conn, config *Config) *http.Transport { + httpTimeOut := conn.config.HTTPTimeout + httpMaxConns := conn.config.HTTPMaxConns + // New Transport + transport := &http.Transport{ + Dial: func(netw, addr string) (net.Conn, error) { + conn, err := net.DialTimeout(netw, addr, httpTimeOut.ConnectTimeout) + if err != nil { + return nil, err + } + return newTimeoutConn(conn, httpTimeOut.ReadWriteTimeout, httpTimeOut.LongTimeout), nil + }, + MaxIdleConnsPerHost: httpMaxConns.MaxIdleConnsPerHost, + ResponseHeaderTimeout: httpTimeOut.HeaderTimeout, + } + return transport +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/transport_1_7.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/transport_1_7.go new file mode 100644 index 000000000..006ea47a0 --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/transport_1_7.go @@ -0,0 +1,28 @@ +// +build go1.7 + +package oss + +import ( + "net" + "net/http" +) + +func newTransport(conn *Conn, config *Config) *http.Transport { + httpTimeOut := conn.config.HTTPTimeout + httpMaxConns := conn.config.HTTPMaxConns + // New Transport + transport := &http.Transport{ + Dial: func(netw, addr string) (net.Conn, error) { + conn, err := net.DialTimeout(netw, addr, httpTimeOut.ConnectTimeout) + if err != nil { + return nil, err + } + return newTimeoutConn(conn, httpTimeOut.ReadWriteTimeout, httpTimeOut.LongTimeout), nil + }, + MaxIdleConns: httpMaxConns.MaxIdleConns, + MaxIdleConnsPerHost: httpMaxConns.MaxIdleConnsPerHost, + IdleConnTimeout: httpTimeOut.IdleConnTimeout, + ResponseHeaderTimeout: httpTimeOut.HeaderTimeout, + } + return transport +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/type.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/type.go new file mode 100644 index 000000000..794f28231 --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/type.go @@ -0,0 +1,468 @@ +package oss + +import ( + "encoding/xml" + "net/url" + "time" +) + +// ListBucketsResult defines the result object from ListBuckets request +type ListBucketsResult struct { + XMLName xml.Name `xml:"ListAllMyBucketsResult"` + Prefix string `xml:"Prefix"` // The prefix in this query + Marker string `xml:"Marker"` // The marker filter + MaxKeys int `xml:"MaxKeys"` // The max entry count to return. This information is returned when IsTruncated is true. + IsTruncated bool `xml:"IsTruncated"` // Flag true means there's remaining buckets to return. + NextMarker string `xml:"NextMarker"` // The marker filter for the next list call + Owner Owner `xml:"Owner"` // The owner information + Buckets []BucketProperties `xml:"Buckets>Bucket"` // The bucket list +} + +// BucketProperties defines bucket properties +type BucketProperties struct { + XMLName xml.Name `xml:"Bucket"` + Name string `xml:"Name"` // Bucket name + Location string `xml:"Location"` // Bucket datacenter + CreationDate time.Time `xml:"CreationDate"` // Bucket create time + StorageClass string `xml:"StorageClass"` // Bucket storage class +} + +// GetBucketACLResult defines GetBucketACL request's result +type GetBucketACLResult struct { + XMLName xml.Name `xml:"AccessControlPolicy"` + ACL string `xml:"AccessControlList>Grant"` // Bucket ACL + Owner Owner `xml:"Owner"` // Bucket owner +} + +// LifecycleConfiguration is the Bucket Lifecycle configuration +type LifecycleConfiguration struct { + XMLName xml.Name `xml:"LifecycleConfiguration"` + Rules []LifecycleRule `xml:"Rule"` +} + +// LifecycleRule defines Lifecycle rules +type LifecycleRule struct { + XMLName xml.Name `xml:"Rule"` + ID string `xml:"ID"` // The rule ID + Prefix string `xml:"Prefix"` // The object key prefix + Status string `xml:"Status"` // The rule status (enabled or not) + Expiration LifecycleExpiration `xml:"Expiration"` // The expiration property +} + +// LifecycleExpiration defines the rule's expiration property +type LifecycleExpiration struct { + XMLName xml.Name `xml:"Expiration"` + Days int `xml:"Days,omitempty"` // Relative expiration time: The expiration time in days after the last modified time + Date time.Time `xml:"Date,omitempty"` // Absolute expiration time: The expiration time in date. +} + +type lifecycleXML struct { + XMLName xml.Name `xml:"LifecycleConfiguration"` + Rules []lifecycleRule `xml:"Rule"` +} + +type lifecycleRule struct { + XMLName xml.Name `xml:"Rule"` + ID string `xml:"ID"` + Prefix string `xml:"Prefix"` + Status string `xml:"Status"` + Expiration lifecycleExpiration `xml:"Expiration"` +} + +type lifecycleExpiration struct { + XMLName xml.Name `xml:"Expiration"` + Days int `xml:"Days,omitempty"` + Date string `xml:"Date,omitempty"` +} + +const expirationDateFormat = "2006-01-02T15:04:05.000Z" + +func convLifecycleRule(rules []LifecycleRule) []lifecycleRule { + rs := []lifecycleRule{} + for _, rule := range rules { + r := lifecycleRule{} + r.ID = rule.ID + r.Prefix = rule.Prefix + r.Status = rule.Status + if rule.Expiration.Date.IsZero() { + r.Expiration.Days = rule.Expiration.Days + } else { + r.Expiration.Date = rule.Expiration.Date.Format(expirationDateFormat) + } + rs = append(rs, r) + } + return rs +} + +// BuildLifecycleRuleByDays builds a lifecycle rule with specified expiration days +func BuildLifecycleRuleByDays(id, prefix string, status bool, days int) LifecycleRule { + var statusStr = "Enabled" + if !status { + statusStr = "Disabled" + } + return LifecycleRule{ID: id, Prefix: prefix, Status: statusStr, + Expiration: LifecycleExpiration{Days: days}} +} + +// BuildLifecycleRuleByDate builds a lifecycle rule with specified expiration time. +func BuildLifecycleRuleByDate(id, prefix string, status bool, year, month, day int) LifecycleRule { + var statusStr = "Enabled" + if !status { + statusStr = "Disabled" + } + date := time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.UTC) + return LifecycleRule{ID: id, Prefix: prefix, Status: statusStr, + Expiration: LifecycleExpiration{Date: date}} +} + +// GetBucketLifecycleResult defines GetBucketLifecycle's result object +type GetBucketLifecycleResult LifecycleConfiguration + +// RefererXML defines Referer configuration +type RefererXML struct { + XMLName xml.Name `xml:"RefererConfiguration"` + AllowEmptyReferer bool `xml:"AllowEmptyReferer"` // Allow empty referrer + RefererList []string `xml:"RefererList>Referer"` // Referer whitelist +} + +// GetBucketRefererResult defines result object for GetBucketReferer request +type GetBucketRefererResult RefererXML + +// LoggingXML defines logging configuration +type LoggingXML struct { + XMLName xml.Name `xml:"BucketLoggingStatus"` + LoggingEnabled LoggingEnabled `xml:"LoggingEnabled"` // The logging configuration information +} + +type loggingXMLEmpty struct { + XMLName xml.Name `xml:"BucketLoggingStatus"` +} + +// LoggingEnabled defines the logging configuration information +type LoggingEnabled struct { + XMLName xml.Name `xml:"LoggingEnabled"` + TargetBucket string `xml:"TargetBucket"` // The bucket name for storing the log files + TargetPrefix string `xml:"TargetPrefix"` // The log file prefix +} + +// GetBucketLoggingResult defines the result from GetBucketLogging request +type GetBucketLoggingResult LoggingXML + +// WebsiteXML defines Website configuration +type WebsiteXML struct { + XMLName xml.Name `xml:"WebsiteConfiguration"` + IndexDocument IndexDocument `xml:"IndexDocument"` // The index page + ErrorDocument ErrorDocument `xml:"ErrorDocument"` // The error page +} + +// IndexDocument defines the index page info +type IndexDocument struct { + XMLName xml.Name `xml:"IndexDocument"` + Suffix string `xml:"Suffix"` // The file name for the index page +} + +// ErrorDocument defines the 404 error page info +type ErrorDocument struct { + XMLName xml.Name `xml:"ErrorDocument"` + Key string `xml:"Key"` // 404 error file name +} + +// GetBucketWebsiteResult defines the result from GetBucketWebsite request. +type GetBucketWebsiteResult WebsiteXML + +// CORSXML defines CORS configuration +type CORSXML struct { + XMLName xml.Name `xml:"CORSConfiguration"` + CORSRules []CORSRule `xml:"CORSRule"` // CORS rules +} + +// CORSRule defines CORS rules +type CORSRule struct { + XMLName xml.Name `xml:"CORSRule"` + AllowedOrigin []string `xml:"AllowedOrigin"` // Allowed origins. By default it's wildcard '*' + AllowedMethod []string `xml:"AllowedMethod"` // Allowed methods + AllowedHeader []string `xml:"AllowedHeader"` // Allowed headers + ExposeHeader []string `xml:"ExposeHeader"` // Allowed response headers + MaxAgeSeconds int `xml:"MaxAgeSeconds"` // Max cache ages in seconds +} + +// GetBucketCORSResult defines the result from GetBucketCORS request. +type GetBucketCORSResult CORSXML + +// GetBucketInfoResult defines the result from GetBucketInfo request. +type GetBucketInfoResult struct { + XMLName xml.Name `xml:"BucketInfo"` + BucketInfo BucketInfo `xml:"Bucket"` +} + +// BucketInfo defines Bucket information +type BucketInfo struct { + XMLName xml.Name `xml:"Bucket"` + Name string `xml:"Name"` // Bucket name + Location string `xml:"Location"` // Bucket datacenter + CreationDate time.Time `xml:"CreationDate"` // Bucket creation time + ExtranetEndpoint string `xml:"ExtranetEndpoint"` // Bucket external endpoint + IntranetEndpoint string `xml:"IntranetEndpoint"` // Bucket internal endpoint + ACL string `xml:"AccessControlList>Grant"` // Bucket ACL + Owner Owner `xml:"Owner"` // Bucket owner + StorageClass string `xml:"StorageClass"` // Bucket storage class +} + +// ListObjectsResult defines the result from ListObjects request +type ListObjectsResult struct { + XMLName xml.Name `xml:"ListBucketResult"` + Prefix string `xml:"Prefix"` // The object prefix + Marker string `xml:"Marker"` // The marker filter. + MaxKeys int `xml:"MaxKeys"` // Max keys to return + Delimiter string `xml:"Delimiter"` // The delimiter for grouping objects' name + IsTruncated bool `xml:"IsTruncated"` // Flag indicates if all results are returned (when it's false) + NextMarker string `xml:"NextMarker"` // The start point of the next query + Objects []ObjectProperties `xml:"Contents"` // Object list + CommonPrefixes []string `xml:"CommonPrefixes>Prefix"` // You can think of commonprefixes as "folders" whose names end with the delimiter +} + +// ObjectProperties defines Objecct properties +type ObjectProperties struct { + XMLName xml.Name `xml:"Contents"` + Key string `xml:"Key"` // Object key + Type string `xml:"Type"` // Object type + Size int64 `xml:"Size"` // Object size + ETag string `xml:"ETag"` // Object ETag + Owner Owner `xml:"Owner"` // Object owner information + LastModified time.Time `xml:"LastModified"` // Object last modified time + StorageClass string `xml:"StorageClass"` // Object storage class (Standard, IA, Archive) +} + +// Owner defines Bucket/Object's owner +type Owner struct { + XMLName xml.Name `xml:"Owner"` + ID string `xml:"ID"` // Owner ID + DisplayName string `xml:"DisplayName"` // Owner's display name +} + +// CopyObjectResult defines result object of CopyObject +type CopyObjectResult struct { + XMLName xml.Name `xml:"CopyObjectResult"` + LastModified time.Time `xml:"LastModified"` // New object's last modified time. + ETag string `xml:"ETag"` // New object's ETag +} + +// GetObjectACLResult defines result of GetObjectACL request +type GetObjectACLResult GetBucketACLResult + +type deleteXML struct { + XMLName xml.Name `xml:"Delete"` + Objects []DeleteObject `xml:"Object"` // Objects to delete + Quiet bool `xml:"Quiet"` // Flag of quiet mode. +} + +// DeleteObject defines the struct for deleting object +type DeleteObject struct { + XMLName xml.Name `xml:"Object"` + Key string `xml:"Key"` // Object name +} + +// DeleteObjectsResult defines result of DeleteObjects request +type DeleteObjectsResult struct { + XMLName xml.Name `xml:"DeleteResult"` + DeletedObjects []string `xml:"Deleted>Key"` // Deleted object list +} + +// InitiateMultipartUploadResult defines result of InitiateMultipartUpload request +type InitiateMultipartUploadResult struct { + XMLName xml.Name `xml:"InitiateMultipartUploadResult"` + Bucket string `xml:"Bucket"` // Bucket name + Key string `xml:"Key"` // Object name to upload + UploadID string `xml:"UploadId"` // Generated UploadId +} + +// UploadPart defines the upload/copy part +type UploadPart struct { + XMLName xml.Name `xml:"Part"` + PartNumber int `xml:"PartNumber"` // Part number + ETag string `xml:"ETag"` // ETag value of the part's data +} + +type uploadParts []UploadPart + +func (slice uploadParts) Len() int { + return len(slice) +} + +func (slice uploadParts) Less(i, j int) bool { + return slice[i].PartNumber < slice[j].PartNumber +} + +func (slice uploadParts) Swap(i, j int) { + slice[i], slice[j] = slice[j], slice[i] +} + +// UploadPartCopyResult defines result object of multipart copy request. +type UploadPartCopyResult struct { + XMLName xml.Name `xml:"CopyPartResult"` + LastModified time.Time `xml:"LastModified"` // Last modified time + ETag string `xml:"ETag"` // ETag +} + +type completeMultipartUploadXML struct { + XMLName xml.Name `xml:"CompleteMultipartUpload"` + Part []UploadPart `xml:"Part"` +} + +// CompleteMultipartUploadResult defines result object of CompleteMultipartUploadRequest +type CompleteMultipartUploadResult struct { + XMLName xml.Name `xml:"CompleteMultipartUploadResult"` + Location string `xml:"Location"` // Object URL + Bucket string `xml:"Bucket"` // Bucket name + ETag string `xml:"ETag"` // Object ETag + Key string `xml:"Key"` // Object name +} + +// ListUploadedPartsResult defines result object of ListUploadedParts +type ListUploadedPartsResult struct { + XMLName xml.Name `xml:"ListPartsResult"` + Bucket string `xml:"Bucket"` // Bucket name + Key string `xml:"Key"` // Object name + UploadID string `xml:"UploadId"` // Upload ID + NextPartNumberMarker string `xml:"NextPartNumberMarker"` // Next part number + MaxParts int `xml:"MaxParts"` // Max parts count + IsTruncated bool `xml:"IsTruncated"` // Flag indicates all entries returned.false: all entries returned. + UploadedParts []UploadedPart `xml:"Part"` // Uploaded parts +} + +// UploadedPart defines uploaded part +type UploadedPart struct { + XMLName xml.Name `xml:"Part"` + PartNumber int `xml:"PartNumber"` // Part number + LastModified time.Time `xml:"LastModified"` // Last modified time + ETag string `xml:"ETag"` // ETag cache + Size int `xml:"Size"` // Part size +} + +// ListMultipartUploadResult defines result object of ListMultipartUpload +type ListMultipartUploadResult struct { + XMLName xml.Name `xml:"ListMultipartUploadsResult"` + Bucket string `xml:"Bucket"` // Bucket name + Delimiter string `xml:"Delimiter"` // Delimiter for grouping object. + Prefix string `xml:"Prefix"` // Object prefix + KeyMarker string `xml:"KeyMarker"` // Object key marker + UploadIDMarker string `xml:"UploadIdMarker"` // UploadId marker + NextKeyMarker string `xml:"NextKeyMarker"` // Next key marker, if not all entries returned. + NextUploadIDMarker string `xml:"NextUploadIdMarker"` // Next uploadId marker, if not all entries returned. + MaxUploads int `xml:"MaxUploads"` // Max uploads to return + IsTruncated bool `xml:"IsTruncated"` // Flag indicates all entries are returned. + Uploads []UncompletedUpload `xml:"Upload"` // Ongoing uploads (not completed, not aborted) + CommonPrefixes []string `xml:"CommonPrefixes>Prefix"` // Common prefixes list. +} + +// UncompletedUpload structure wraps an uncompleted upload task +type UncompletedUpload struct { + XMLName xml.Name `xml:"Upload"` + Key string `xml:"Key"` // Object name + UploadID string `xml:"UploadId"` // The UploadId + Initiated time.Time `xml:"Initiated"` // Initialization time in the format such as 2012-02-23T04:18:23.000Z +} + +// ProcessObjectResult defines result object of ProcessObject +type ProcessObjectResult struct { + Bucket string `json:"bucket"` + FileSize int `json:"fileSize"` + Object string `json:"object"` + Status string `json:"status"` +} + +// decodeDeleteObjectsResult decodes deleting objects result in URL encoding +func decodeDeleteObjectsResult(result *DeleteObjectsResult) error { + var err error + for i := 0; i < len(result.DeletedObjects); i++ { + result.DeletedObjects[i], err = url.QueryUnescape(result.DeletedObjects[i]) + if err != nil { + return err + } + } + return nil +} + +// decodeListObjectsResult decodes list objects result in URL encoding +func decodeListObjectsResult(result *ListObjectsResult) error { + var err error + result.Prefix, err = url.QueryUnescape(result.Prefix) + if err != nil { + return err + } + result.Marker, err = url.QueryUnescape(result.Marker) + if err != nil { + return err + } + result.Delimiter, err = url.QueryUnescape(result.Delimiter) + if err != nil { + return err + } + result.NextMarker, err = url.QueryUnescape(result.NextMarker) + if err != nil { + return err + } + for i := 0; i < len(result.Objects); i++ { + result.Objects[i].Key, err = url.QueryUnescape(result.Objects[i].Key) + if err != nil { + return err + } + } + for i := 0; i < len(result.CommonPrefixes); i++ { + result.CommonPrefixes[i], err = url.QueryUnescape(result.CommonPrefixes[i]) + if err != nil { + return err + } + } + return nil +} + +// decodeListUploadedPartsResult decodes +func decodeListUploadedPartsResult(result *ListUploadedPartsResult) error { + var err error + result.Key, err = url.QueryUnescape(result.Key) + if err != nil { + return err + } + return nil +} + +// decodeListMultipartUploadResult decodes list multipart upload result in URL encoding +func decodeListMultipartUploadResult(result *ListMultipartUploadResult) error { + var err error + result.Prefix, err = url.QueryUnescape(result.Prefix) + if err != nil { + return err + } + result.Delimiter, err = url.QueryUnescape(result.Delimiter) + if err != nil { + return err + } + result.KeyMarker, err = url.QueryUnescape(result.KeyMarker) + if err != nil { + return err + } + result.NextKeyMarker, err = url.QueryUnescape(result.NextKeyMarker) + if err != nil { + return err + } + for i := 0; i < len(result.Uploads); i++ { + result.Uploads[i].Key, err = url.QueryUnescape(result.Uploads[i].Key) + if err != nil { + return err + } + } + for i := 0; i < len(result.CommonPrefixes); i++ { + result.CommonPrefixes[i], err = url.QueryUnescape(result.CommonPrefixes[i]) + if err != nil { + return err + } + } + return nil +} + +// createBucketConfiguration defines the configuration for creating a bucket. +type createBucketConfiguration struct { + XMLName xml.Name `xml:"CreateBucketConfiguration"` + StorageClass StorageClassType `xml:"StorageClass,omitempty"` +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/upload.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/upload.go new file mode 100644 index 000000000..80371447d --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/upload.go @@ -0,0 +1,526 @@ +package oss + +import ( + "crypto/md5" + "encoding/base64" + "encoding/hex" + "encoding/json" + "errors" + "fmt" + "io/ioutil" + "os" + "path/filepath" + "time" +) + +// UploadFile is multipart file upload. +// +// objectKey the object name. +// filePath the local file path to upload. +// partSize the part size in byte. +// options the options for uploading object. +// +// error it's nil if the operation succeeds, otherwise it's an error object. +// +func (bucket Bucket) UploadFile(objectKey, filePath string, partSize int64, options ...Option) error { + if partSize < MinPartSize || partSize > MaxPartSize { + return errors.New("oss: part size invalid range (100KB, 5GB]") + } + + cpConf := getCpConfig(options) + routines := getRoutines(options) + + if cpConf != nil && cpConf.IsEnable { + cpFilePath := getUploadCpFilePath(cpConf, filePath, bucket.BucketName, objectKey) + if cpFilePath != "" { + return bucket.uploadFileWithCp(objectKey, filePath, partSize, options, cpFilePath, routines) + } + } + + return bucket.uploadFile(objectKey, filePath, partSize, options, routines) +} + +func getUploadCpFilePath(cpConf *cpConfig, srcFile, destBucket, destObject string) string { + if cpConf.FilePath == "" && cpConf.DirPath != "" { + dest := fmt.Sprintf("oss://%v/%v", destBucket, destObject) + absPath, _ := filepath.Abs(srcFile) + cpFileName := getCpFileName(absPath, dest) + cpConf.FilePath = cpConf.DirPath + string(os.PathSeparator) + cpFileName + } + return cpConf.FilePath +} + +// ----- concurrent upload without checkpoint ----- + +// getCpConfig gets checkpoint configuration +func getCpConfig(options []Option) *cpConfig { + cpcOpt, err := findOption(options, checkpointConfig, nil) + if err != nil || cpcOpt == nil { + return nil + } + + return cpcOpt.(*cpConfig) +} + +// getCpFileName return the name of the checkpoint file +func getCpFileName(src, dest string) string { + md5Ctx := md5.New() + md5Ctx.Write([]byte(src)) + srcCheckSum := hex.EncodeToString(md5Ctx.Sum(nil)) + + md5Ctx.Reset() + md5Ctx.Write([]byte(dest)) + destCheckSum := hex.EncodeToString(md5Ctx.Sum(nil)) + + return fmt.Sprintf("%v-%v.cp", srcCheckSum, destCheckSum) +} + +// getRoutines gets the routine count. by default it's 1. +func getRoutines(options []Option) int { + rtnOpt, err := findOption(options, routineNum, nil) + if err != nil || rtnOpt == nil { + return 1 + } + + rs := rtnOpt.(int) + if rs < 1 { + rs = 1 + } else if rs > 100 { + rs = 100 + } + + return rs +} + +// getPayer return the payer of the request +func getPayer(options []Option) string { + payerOpt, err := findOption(options, HTTPHeaderOSSRequester, nil) + if err != nil || payerOpt == nil { + return "" + } + + return payerOpt.(string) +} + +// getProgressListener gets the progress callback +func getProgressListener(options []Option) ProgressListener { + isSet, listener, _ := isOptionSet(options, progressListener) + if !isSet { + return nil + } + return listener.(ProgressListener) +} + +// uploadPartHook is for testing usage +type uploadPartHook func(id int, chunk FileChunk) error + +var uploadPartHooker uploadPartHook = defaultUploadPart + +func defaultUploadPart(id int, chunk FileChunk) error { + return nil +} + +// workerArg defines worker argument structure +type workerArg struct { + bucket *Bucket + filePath string + imur InitiateMultipartUploadResult + options []Option + hook uploadPartHook +} + +// worker is the worker coroutine function +func worker(id int, arg workerArg, jobs <-chan FileChunk, results chan<- UploadPart, failed chan<- error, die <-chan bool) { + for chunk := range jobs { + if err := arg.hook(id, chunk); err != nil { + failed <- err + break + } + part, err := arg.bucket.UploadPartFromFile(arg.imur, arg.filePath, chunk.Offset, chunk.Size, chunk.Number, arg.options...) + if err != nil { + failed <- err + break + } + select { + case <-die: + return + default: + } + results <- part + } +} + +// scheduler function +func scheduler(jobs chan FileChunk, chunks []FileChunk) { + for _, chunk := range chunks { + jobs <- chunk + } + close(jobs) +} + +func getTotalBytes(chunks []FileChunk) int64 { + var tb int64 + for _, chunk := range chunks { + tb += chunk.Size + } + return tb +} + +// uploadFile is a concurrent upload, without checkpoint +func (bucket Bucket) uploadFile(objectKey, filePath string, partSize int64, options []Option, routines int) error { + listener := getProgressListener(options) + + chunks, err := SplitFileByPartSize(filePath, partSize) + if err != nil { + return err + } + + payerOptions := []Option{} + payer := getPayer(options) + if payer != "" { + payerOptions = append(payerOptions, RequestPayer(PayerType(payer))) + } + + // Initialize the multipart upload + imur, err := bucket.InitiateMultipartUpload(objectKey, options...) + if err != nil { + return err + } + + jobs := make(chan FileChunk, len(chunks)) + results := make(chan UploadPart, len(chunks)) + failed := make(chan error) + die := make(chan bool) + + var completedBytes int64 + totalBytes := getTotalBytes(chunks) + event := newProgressEvent(TransferStartedEvent, 0, totalBytes) + publishProgress(listener, event) + + // Start the worker coroutine + arg := workerArg{&bucket, filePath, imur, payerOptions, uploadPartHooker} + for w := 1; w <= routines; w++ { + go worker(w, arg, jobs, results, failed, die) + } + + // Schedule the jobs + go scheduler(jobs, chunks) + + // Waiting for the upload finished + completed := 0 + parts := make([]UploadPart, len(chunks)) + for completed < len(chunks) { + select { + case part := <-results: + completed++ + parts[part.PartNumber-1] = part + completedBytes += chunks[part.PartNumber-1].Size + event = newProgressEvent(TransferDataEvent, completedBytes, totalBytes) + publishProgress(listener, event) + case err := <-failed: + close(die) + event = newProgressEvent(TransferFailedEvent, completedBytes, totalBytes) + publishProgress(listener, event) + bucket.AbortMultipartUpload(imur, payerOptions...) + return err + } + + if completed >= len(chunks) { + break + } + } + + event = newProgressEvent(TransferStartedEvent, completedBytes, totalBytes) + publishProgress(listener, event) + + // Complete the multpart upload + _, err = bucket.CompleteMultipartUpload(imur, parts, payerOptions...) + if err != nil { + bucket.AbortMultipartUpload(imur, payerOptions...) + return err + } + return nil +} + +// ----- concurrent upload with checkpoint ----- +const uploadCpMagic = "FE8BB4EA-B593-4FAC-AD7A-2459A36E2E62" + +type uploadCheckpoint struct { + Magic string // Magic + MD5 string // Checkpoint file content's MD5 + FilePath string // Local file path + FileStat cpStat // File state + ObjectKey string // Key + UploadID string // Upload ID + Parts []cpPart // All parts of the local file +} + +type cpStat struct { + Size int64 // File size + LastModified time.Time // File's last modified time + MD5 string // Local file's MD5 +} + +type cpPart struct { + Chunk FileChunk // File chunk + Part UploadPart // Uploaded part + IsCompleted bool // Upload complete flag +} + +// isValid checks if the uploaded data is valid---it's valid when the file is not updated and the checkpoint data is valid. +func (cp uploadCheckpoint) isValid(filePath string) (bool, error) { + // Compare the CP's magic number and MD5. + cpb := cp + cpb.MD5 = "" + js, _ := json.Marshal(cpb) + sum := md5.Sum(js) + b64 := base64.StdEncoding.EncodeToString(sum[:]) + + if cp.Magic != uploadCpMagic || b64 != cp.MD5 { + return false, nil + } + + // Make sure if the local file is updated. + fd, err := os.Open(filePath) + if err != nil { + return false, err + } + defer fd.Close() + + st, err := fd.Stat() + if err != nil { + return false, err + } + + md, err := calcFileMD5(filePath) + if err != nil { + return false, err + } + + // Compare the file size, file's last modified time and file's MD5 + if cp.FileStat.Size != st.Size() || + cp.FileStat.LastModified != st.ModTime() || + cp.FileStat.MD5 != md { + return false, nil + } + + return true, nil +} + +// load loads from the file +func (cp *uploadCheckpoint) load(filePath string) error { + contents, err := ioutil.ReadFile(filePath) + if err != nil { + return err + } + + err = json.Unmarshal(contents, cp) + return err +} + +// dump dumps to the local file +func (cp *uploadCheckpoint) dump(filePath string) error { + bcp := *cp + + // Calculate MD5 + bcp.MD5 = "" + js, err := json.Marshal(bcp) + if err != nil { + return err + } + sum := md5.Sum(js) + b64 := base64.StdEncoding.EncodeToString(sum[:]) + bcp.MD5 = b64 + + // Serialization + js, err = json.Marshal(bcp) + if err != nil { + return err + } + + // Dump + return ioutil.WriteFile(filePath, js, FilePermMode) +} + +// updatePart updates the part status +func (cp *uploadCheckpoint) updatePart(part UploadPart) { + cp.Parts[part.PartNumber-1].Part = part + cp.Parts[part.PartNumber-1].IsCompleted = true +} + +// todoParts returns unfinished parts +func (cp *uploadCheckpoint) todoParts() []FileChunk { + fcs := []FileChunk{} + for _, part := range cp.Parts { + if !part.IsCompleted { + fcs = append(fcs, part.Chunk) + } + } + return fcs +} + +// allParts returns all parts +func (cp *uploadCheckpoint) allParts() []UploadPart { + ps := []UploadPart{} + for _, part := range cp.Parts { + ps = append(ps, part.Part) + } + return ps +} + +// getCompletedBytes returns completed bytes count +func (cp *uploadCheckpoint) getCompletedBytes() int64 { + var completedBytes int64 + for _, part := range cp.Parts { + if part.IsCompleted { + completedBytes += part.Chunk.Size + } + } + return completedBytes +} + +// calcFileMD5 calculates the MD5 for the specified local file +func calcFileMD5(filePath string) (string, error) { + return "", nil +} + +// prepare initializes the multipart upload +func prepare(cp *uploadCheckpoint, objectKey, filePath string, partSize int64, bucket *Bucket, options []Option) error { + // CP + cp.Magic = uploadCpMagic + cp.FilePath = filePath + cp.ObjectKey = objectKey + + // Local file + fd, err := os.Open(filePath) + if err != nil { + return err + } + defer fd.Close() + + st, err := fd.Stat() + if err != nil { + return err + } + cp.FileStat.Size = st.Size() + cp.FileStat.LastModified = st.ModTime() + md, err := calcFileMD5(filePath) + if err != nil { + return err + } + cp.FileStat.MD5 = md + + // Chunks + parts, err := SplitFileByPartSize(filePath, partSize) + if err != nil { + return err + } + + cp.Parts = make([]cpPart, len(parts)) + for i, part := range parts { + cp.Parts[i].Chunk = part + cp.Parts[i].IsCompleted = false + } + + // Init load + imur, err := bucket.InitiateMultipartUpload(objectKey, options...) + if err != nil { + return err + } + cp.UploadID = imur.UploadID + + return nil +} + +// complete completes the multipart upload and deletes the local CP files +func complete(cp *uploadCheckpoint, bucket *Bucket, parts []UploadPart, cpFilePath string, options []Option) error { + imur := InitiateMultipartUploadResult{Bucket: bucket.BucketName, + Key: cp.ObjectKey, UploadID: cp.UploadID} + _, err := bucket.CompleteMultipartUpload(imur, parts, options...) + if err != nil { + return err + } + os.Remove(cpFilePath) + return err +} + +// uploadFileWithCp handles concurrent upload with checkpoint +func (bucket Bucket) uploadFileWithCp(objectKey, filePath string, partSize int64, options []Option, cpFilePath string, routines int) error { + listener := getProgressListener(options) + + payerOptions := []Option{} + payer := getPayer(options) + if payer != "" { + payerOptions = append(payerOptions, RequestPayer(PayerType(payer))) + } + + // Load CP data + ucp := uploadCheckpoint{} + err := ucp.load(cpFilePath) + if err != nil { + os.Remove(cpFilePath) + } + + // Load error or the CP data is invalid. + valid, err := ucp.isValid(filePath) + if err != nil || !valid { + if err = prepare(&ucp, objectKey, filePath, partSize, &bucket, options); err != nil { + return err + } + os.Remove(cpFilePath) + } + + chunks := ucp.todoParts() + imur := InitiateMultipartUploadResult{ + Bucket: bucket.BucketName, + Key: objectKey, + UploadID: ucp.UploadID} + + jobs := make(chan FileChunk, len(chunks)) + results := make(chan UploadPart, len(chunks)) + failed := make(chan error) + die := make(chan bool) + + completedBytes := ucp.getCompletedBytes() + event := newProgressEvent(TransferStartedEvent, completedBytes, ucp.FileStat.Size) + publishProgress(listener, event) + + // Start the workers + arg := workerArg{&bucket, filePath, imur, payerOptions, uploadPartHooker} + for w := 1; w <= routines; w++ { + go worker(w, arg, jobs, results, failed, die) + } + + // Schedule jobs + go scheduler(jobs, chunks) + + // Waiting for the job finished + completed := 0 + for completed < len(chunks) { + select { + case part := <-results: + completed++ + ucp.updatePart(part) + ucp.dump(cpFilePath) + completedBytes += ucp.Parts[part.PartNumber-1].Chunk.Size + event = newProgressEvent(TransferDataEvent, completedBytes, ucp.FileStat.Size) + publishProgress(listener, event) + case err := <-failed: + close(die) + event = newProgressEvent(TransferFailedEvent, completedBytes, ucp.FileStat.Size) + publishProgress(listener, event) + return err + } + + if completed >= len(chunks) { + break + } + } + + event = newProgressEvent(TransferCompletedEvent, completedBytes, ucp.FileStat.Size) + publishProgress(listener, event) + + // Complete the multipart upload + err = complete(&ucp, &bucket, ucp.allParts(), cpFilePath, payerOptions) + return err +} diff --git a/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/utils.go b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/utils.go new file mode 100644 index 000000000..c0e7b2b1b --- /dev/null +++ b/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss/utils.go @@ -0,0 +1,265 @@ +package oss + +import ( + "bytes" + "errors" + "fmt" + "hash/crc64" + "net/http" + "os" + "os/exec" + "runtime" + "strconv" + "strings" + "time" +) + +// userAgent gets user agent +// It has the SDK version information, OS information and GO version +func userAgent() string { + sys := getSysInfo() + return fmt.Sprintf("aliyun-sdk-go/%s (%s/%s/%s;%s)", Version, sys.name, + sys.release, sys.machine, runtime.Version()) +} + +type sysInfo struct { + name string // OS name such as windows/Linux + release string // OS version 2.6.32-220.23.2.ali1089.el5.x86_64 etc + machine string // CPU type amd64/x86_64 +} + +// getSysInfo gets system info +// gets the OS information and CPU type +func getSysInfo() sysInfo { + name := runtime.GOOS + release := "-" + machine := runtime.GOARCH + if out, err := exec.Command("uname", "-s").CombinedOutput(); err == nil { + name = string(bytes.TrimSpace(out)) + } + if out, err := exec.Command("uname", "-r").CombinedOutput(); err == nil { + release = string(bytes.TrimSpace(out)) + } + if out, err := exec.Command("uname", "-m").CombinedOutput(); err == nil { + machine = string(bytes.TrimSpace(out)) + } + return sysInfo{name: name, release: release, machine: machine} +} + +// unpackedRange +type unpackedRange struct { + hasStart bool // Flag indicates if the start point is specified + hasEnd bool // Flag indicates if the end point is specified + start int64 // Start point + end int64 // End point +} + +// invalidRangeError returns invalid range error +func invalidRangeError(r string) error { + return fmt.Errorf("InvalidRange %s", r) +} + +// parseRange parse various styles of range such as bytes=M-N +func parseRange(normalizedRange string) (*unpackedRange, error) { + var err error + hasStart := false + hasEnd := false + var start int64 + var end int64 + + // Bytes==M-N or ranges=M-N + nrSlice := strings.Split(normalizedRange, "=") + if len(nrSlice) != 2 || nrSlice[0] != "bytes" { + return nil, invalidRangeError(normalizedRange) + } + + // Bytes=M-N,X-Y + rSlice := strings.Split(nrSlice[1], ",") + rStr := rSlice[0] + + if strings.HasSuffix(rStr, "-") { // M- + startStr := rStr[:len(rStr)-1] + start, err = strconv.ParseInt(startStr, 10, 64) + if err != nil { + return nil, invalidRangeError(normalizedRange) + } + hasStart = true + } else if strings.HasPrefix(rStr, "-") { // -N + len := rStr[1:] + end, err = strconv.ParseInt(len, 10, 64) + if err != nil { + return nil, invalidRangeError(normalizedRange) + } + if end == 0 { // -0 + return nil, invalidRangeError(normalizedRange) + } + hasEnd = true + } else { // M-N + valSlice := strings.Split(rStr, "-") + if len(valSlice) != 2 { + return nil, invalidRangeError(normalizedRange) + } + start, err = strconv.ParseInt(valSlice[0], 10, 64) + if err != nil { + return nil, invalidRangeError(normalizedRange) + } + hasStart = true + end, err = strconv.ParseInt(valSlice[1], 10, 64) + if err != nil { + return nil, invalidRangeError(normalizedRange) + } + hasEnd = true + } + + return &unpackedRange{hasStart, hasEnd, start, end}, nil +} + +// adjustRange returns adjusted range, adjust the range according to the length of the file +func adjustRange(ur *unpackedRange, size int64) (start, end int64) { + if ur == nil { + return 0, size + } + + if ur.hasStart && ur.hasEnd { + start = ur.start + end = ur.end + 1 + if ur.start < 0 || ur.start >= size || ur.end > size || ur.start > ur.end { + start = 0 + end = size + } + } else if ur.hasStart { + start = ur.start + end = size + if ur.start < 0 || ur.start >= size { + start = 0 + } + } else if ur.hasEnd { + start = size - ur.end + end = size + if ur.end < 0 || ur.end > size { + start = 0 + end = size + } + } + return +} + +// GetNowSec returns Unix time, the number of seconds elapsed since January 1, 1970 UTC. +// gets the current time in Unix time, in seconds. +func GetNowSec() int64 { + return time.Now().Unix() +} + +// GetNowNanoSec returns t as a Unix time, the number of nanoseconds elapsed +// since January 1, 1970 UTC. The result is undefined if the Unix time +// in nanoseconds cannot be represented by an int64. Note that this +// means the result of calling UnixNano on the zero Time is undefined. +// gets the current time in Unix time, in nanoseconds. +func GetNowNanoSec() int64 { + return time.Now().UnixNano() +} + +// GetNowGMT gets the current time in GMT format. +func GetNowGMT() string { + return time.Now().UTC().Format(http.TimeFormat) +} + +// FileChunk is the file chunk definition +type FileChunk struct { + Number int // Chunk number + Offset int64 // Chunk offset + Size int64 // Chunk size. +} + +// SplitFileByPartNum splits big file into parts by the num of parts. +// Split the file with specified parts count, returns the split result when error is nil. +func SplitFileByPartNum(fileName string, chunkNum int) ([]FileChunk, error) { + if chunkNum <= 0 || chunkNum > 10000 { + return nil, errors.New("chunkNum invalid") + } + + file, err := os.Open(fileName) + if err != nil { + return nil, err + } + defer file.Close() + + stat, err := file.Stat() + if err != nil { + return nil, err + } + + if int64(chunkNum) > stat.Size() { + return nil, errors.New("oss: chunkNum invalid") + } + + var chunks []FileChunk + var chunk = FileChunk{} + var chunkN = (int64)(chunkNum) + for i := int64(0); i < chunkN; i++ { + chunk.Number = int(i + 1) + chunk.Offset = i * (stat.Size() / chunkN) + if i == chunkN-1 { + chunk.Size = stat.Size()/chunkN + stat.Size()%chunkN + } else { + chunk.Size = stat.Size() / chunkN + } + chunks = append(chunks, chunk) + } + + return chunks, nil +} + +// SplitFileByPartSize splits big file into parts by the size of parts. +// Splits the file by the part size. Returns the FileChunk when error is nil. +func SplitFileByPartSize(fileName string, chunkSize int64) ([]FileChunk, error) { + if chunkSize <= 0 { + return nil, errors.New("chunkSize invalid") + } + + file, err := os.Open(fileName) + if err != nil { + return nil, err + } + defer file.Close() + + stat, err := file.Stat() + if err != nil { + return nil, err + } + var chunkN = stat.Size() / chunkSize + if chunkN >= 10000 { + return nil, errors.New("Too many parts, please increase part size") + } + + var chunks []FileChunk + var chunk = FileChunk{} + for i := int64(0); i < chunkN; i++ { + chunk.Number = int(i + 1) + chunk.Offset = i * chunkSize + chunk.Size = chunkSize + chunks = append(chunks, chunk) + } + + if stat.Size()%chunkSize > 0 { + chunk.Number = len(chunks) + 1 + chunk.Offset = int64(len(chunks)) * chunkSize + chunk.Size = stat.Size() % chunkSize + chunks = append(chunks, chunk) + } + + return chunks, nil +} + +// GetPartEnd calculates the end position +func GetPartEnd(begin int64, total int64, per int64) int64 { + if begin+per > total { + return total - 1 + } + return begin + per - 1 +} + +// crcTable returns the table constructed from the specified polynomial +var crcTable = func() *crc64.Table { + return crc64.MakeTable(crc64.ECMA) +} diff --git a/vendor/github.com/json-iterator/go/.codecov.yml b/vendor/github.com/json-iterator/go/.codecov.yml new file mode 100644 index 000000000..955dc0be5 --- /dev/null +++ b/vendor/github.com/json-iterator/go/.codecov.yml @@ -0,0 +1,3 @@ +ignore: + - "output_tests/.*" + diff --git a/vendor/github.com/json-iterator/go/.gitignore b/vendor/github.com/json-iterator/go/.gitignore new file mode 100644 index 000000000..15556530a --- /dev/null +++ b/vendor/github.com/json-iterator/go/.gitignore @@ -0,0 +1,4 @@ +/vendor +/bug_test.go +/coverage.txt +/.idea diff --git a/vendor/github.com/json-iterator/go/.travis.yml b/vendor/github.com/json-iterator/go/.travis.yml new file mode 100644 index 000000000..449e67cd0 --- /dev/null +++ b/vendor/github.com/json-iterator/go/.travis.yml @@ -0,0 +1,14 @@ +language: go + +go: + - 1.8.x + - 1.x + +before_install: + - go get -t -v ./... + +script: + - ./test.sh + +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/json-iterator/go/Gopkg.lock b/vendor/github.com/json-iterator/go/Gopkg.lock new file mode 100644 index 000000000..c8a9fbb38 --- /dev/null +++ b/vendor/github.com/json-iterator/go/Gopkg.lock @@ -0,0 +1,21 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/modern-go/concurrent" + packages = ["."] + revision = "e0a39a4cb4216ea8db28e22a69f4ec25610d513a" + version = "1.0.0" + +[[projects]] + name = "github.com/modern-go/reflect2" + packages = ["."] + revision = "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd" + version = "1.0.1" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "ea54a775e5a354cb015502d2e7aa4b74230fc77e894f34a838b268c25ec8eeb8" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/vendor/github.com/json-iterator/go/Gopkg.toml b/vendor/github.com/json-iterator/go/Gopkg.toml new file mode 100644 index 000000000..313a0f887 --- /dev/null +++ b/vendor/github.com/json-iterator/go/Gopkg.toml @@ -0,0 +1,26 @@ +# Gopkg.toml example +# +# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md +# for detailed Gopkg.toml documentation. +# +# required = ["github.com/user/thing/cmd/thing"] +# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] +# +# [[constraint]] +# name = "github.com/user/project" +# version = "1.0.0" +# +# [[constraint]] +# name = "github.com/user/project2" +# branch = "dev" +# source = "github.com/myfork/project2" +# +# [[override]] +# name = "github.com/x/y" +# version = "2.4.0" + +ignored = ["github.com/davecgh/go-spew*","github.com/google/gofuzz*","github.com/stretchr/testify*"] + +[[constraint]] + name = "github.com/modern-go/reflect2" + version = "1.0.1" diff --git a/vendor/github.com/json-iterator/go/LICENSE b/vendor/github.com/json-iterator/go/LICENSE new file mode 100644 index 000000000..2cf4f5ab2 --- /dev/null +++ b/vendor/github.com/json-iterator/go/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 json-iterator + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/json-iterator/go/README.md b/vendor/github.com/json-iterator/go/README.md new file mode 100644 index 000000000..54d5afe95 --- /dev/null +++ b/vendor/github.com/json-iterator/go/README.md @@ -0,0 +1,91 @@ +[![Sourcegraph](https://sourcegraph.com/github.com/json-iterator/go/-/badge.svg)](https://sourcegraph.com/github.com/json-iterator/go?badge) +[![GoDoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](http://godoc.org/github.com/json-iterator/go) +[![Build Status](https://travis-ci.org/json-iterator/go.svg?branch=master)](https://travis-ci.org/json-iterator/go) +[![codecov](https://codecov.io/gh/json-iterator/go/branch/master/graph/badge.svg)](https://codecov.io/gh/json-iterator/go) +[![rcard](https://goreportcard.com/badge/github.com/json-iterator/go)](https://goreportcard.com/report/github.com/json-iterator/go) +[![License](http://img.shields.io/badge/license-mit-blue.svg?style=flat-square)](https://raw.githubusercontent.com/json-iterator/go/master/LICENSE) +[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/json-iterator/Lobby) + +A high-performance 100% compatible drop-in replacement of "encoding/json" + +You can also use thrift like JSON using [thrift-iterator](https://github.com/thrift-iterator/go) + +``` +Go开发者们请加入我们,滴滴出行平台技术部 taowen@didichuxing.com +``` + +# Benchmark + +![benchmark](http://jsoniter.com/benchmarks/go-benchmark.png) + +Source code: https://github.com/json-iterator/go-benchmark/blob/master/src/github.com/json-iterator/go-benchmark/benchmark_medium_payload_test.go + +Raw Result (easyjson requires static code generation) + +| | ns/op | allocation bytes | allocation times | +| --- | --- | --- | --- | +| std decode | 35510 ns/op | 1960 B/op | 99 allocs/op | +| easyjson decode | 8499 ns/op | 160 B/op | 4 allocs/op | +| jsoniter decode | 5623 ns/op | 160 B/op | 3 allocs/op | +| std encode | 2213 ns/op | 712 B/op | 5 allocs/op | +| easyjson encode | 883 ns/op | 576 B/op | 3 allocs/op | +| jsoniter encode | 837 ns/op | 384 B/op | 4 allocs/op | + +Always benchmark with your own workload. +The result depends heavily on the data input. + +# Usage + +100% compatibility with standard lib + +Replace + +```go +import "encoding/json" +json.Marshal(&data) +``` + +with + +```go +import "github.com/json-iterator/go" + +var json = jsoniter.ConfigCompatibleWithStandardLibrary +json.Marshal(&data) +``` + +Replace + +```go +import "encoding/json" +json.Unmarshal(input, &data) +``` + +with + +```go +import "github.com/json-iterator/go" + +var json = jsoniter.ConfigCompatibleWithStandardLibrary +json.Unmarshal(input, &data) +``` + +[More documentation](http://jsoniter.com/migrate-from-go-std.html) + +# How to get + +``` +go get github.com/json-iterator/go +``` + +# Contribution Welcomed ! + +Contributors + +* [thockin](https://github.com/thockin) +* [mattn](https://github.com/mattn) +* [cch123](https://github.com/cch123) +* [Oleg Shaldybin](https://github.com/olegshaldybin) +* [Jason Toffaletti](https://github.com/toffaletti) + +Report issue or pull request, or email taowen@gmail.com, or [![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/json-iterator/Lobby) diff --git a/vendor/github.com/json-iterator/go/adapter.go b/vendor/github.com/json-iterator/go/adapter.go new file mode 100644 index 000000000..e674d0f39 --- /dev/null +++ b/vendor/github.com/json-iterator/go/adapter.go @@ -0,0 +1,150 @@ +package jsoniter + +import ( + "bytes" + "io" +) + +// RawMessage to make replace json with jsoniter +type RawMessage []byte + +// Unmarshal adapts to json/encoding Unmarshal API +// +// Unmarshal parses the JSON-encoded data and stores the result in the value pointed to by v. +// Refer to https://godoc.org/encoding/json#Unmarshal for more information +func Unmarshal(data []byte, v interface{}) error { + return ConfigDefault.Unmarshal(data, v) +} + +// UnmarshalFromString convenient method to read from string instead of []byte +func UnmarshalFromString(str string, v interface{}) error { + return ConfigDefault.UnmarshalFromString(str, v) +} + +// Get quick method to get value from deeply nested JSON structure +func Get(data []byte, path ...interface{}) Any { + return ConfigDefault.Get(data, path...) +} + +// Marshal adapts to json/encoding Marshal API +// +// Marshal returns the JSON encoding of v, adapts to json/encoding Marshal API +// Refer to https://godoc.org/encoding/json#Marshal for more information +func Marshal(v interface{}) ([]byte, error) { + return ConfigDefault.Marshal(v) +} + +// MarshalIndent same as json.MarshalIndent. Prefix is not supported. +func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) { + return ConfigDefault.MarshalIndent(v, prefix, indent) +} + +// MarshalToString convenient method to write as string instead of []byte +func MarshalToString(v interface{}) (string, error) { + return ConfigDefault.MarshalToString(v) +} + +// NewDecoder adapts to json/stream NewDecoder API. +// +// NewDecoder returns a new decoder that reads from r. +// +// Instead of a json/encoding Decoder, an Decoder is returned +// Refer to https://godoc.org/encoding/json#NewDecoder for more information +func NewDecoder(reader io.Reader) *Decoder { + return ConfigDefault.NewDecoder(reader) +} + +// Decoder reads and decodes JSON values from an input stream. +// Decoder provides identical APIs with json/stream Decoder (Token() and UseNumber() are in progress) +type Decoder struct { + iter *Iterator +} + +// Decode decode JSON into interface{} +func (adapter *Decoder) Decode(obj interface{}) error { + if adapter.iter.head == adapter.iter.tail && adapter.iter.reader != nil { + if !adapter.iter.loadMore() { + return io.EOF + } + } + adapter.iter.ReadVal(obj) + err := adapter.iter.Error + if err == io.EOF { + return nil + } + return adapter.iter.Error +} + +// More is there more? +func (adapter *Decoder) More() bool { + iter := adapter.iter + if iter.Error != nil { + return false + } + c := iter.nextToken() + if c == 0 { + return false + } + iter.unreadByte() + return c != ']' && c != '}' +} + +// Buffered remaining buffer +func (adapter *Decoder) Buffered() io.Reader { + remaining := adapter.iter.buf[adapter.iter.head:adapter.iter.tail] + return bytes.NewReader(remaining) +} + +// UseNumber causes the Decoder to unmarshal a number into an interface{} as a +// Number instead of as a float64. +func (adapter *Decoder) UseNumber() { + cfg := adapter.iter.cfg.configBeforeFrozen + cfg.UseNumber = true + adapter.iter.cfg = cfg.frozeWithCacheReuse(adapter.iter.cfg.extraExtensions) +} + +// DisallowUnknownFields causes the Decoder to return an error when the destination +// is a struct and the input contains object keys which do not match any +// non-ignored, exported fields in the destination. +func (adapter *Decoder) DisallowUnknownFields() { + cfg := adapter.iter.cfg.configBeforeFrozen + cfg.DisallowUnknownFields = true + adapter.iter.cfg = cfg.frozeWithCacheReuse(adapter.iter.cfg.extraExtensions) +} + +// NewEncoder same as json.NewEncoder +func NewEncoder(writer io.Writer) *Encoder { + return ConfigDefault.NewEncoder(writer) +} + +// Encoder same as json.Encoder +type Encoder struct { + stream *Stream +} + +// Encode encode interface{} as JSON to io.Writer +func (adapter *Encoder) Encode(val interface{}) error { + adapter.stream.WriteVal(val) + adapter.stream.WriteRaw("\n") + adapter.stream.Flush() + return adapter.stream.Error +} + +// SetIndent set the indention. Prefix is not supported +func (adapter *Encoder) SetIndent(prefix, indent string) { + config := adapter.stream.cfg.configBeforeFrozen + config.IndentionStep = len(indent) + adapter.stream.cfg = config.frozeWithCacheReuse(adapter.stream.cfg.extraExtensions) +} + +// SetEscapeHTML escape html by default, set to false to disable +func (adapter *Encoder) SetEscapeHTML(escapeHTML bool) { + config := adapter.stream.cfg.configBeforeFrozen + config.EscapeHTML = escapeHTML + adapter.stream.cfg = config.frozeWithCacheReuse(adapter.stream.cfg.extraExtensions) +} + +// Valid reports whether data is a valid JSON encoding. +func Valid(data []byte) bool { + return ConfigDefault.Valid(data) +} diff --git a/vendor/github.com/json-iterator/go/any.go b/vendor/github.com/json-iterator/go/any.go new file mode 100644 index 000000000..daecfed61 --- /dev/null +++ b/vendor/github.com/json-iterator/go/any.go @@ -0,0 +1,321 @@ +package jsoniter + +import ( + "errors" + "fmt" + "github.com/modern-go/reflect2" + "io" + "reflect" + "strconv" + "unsafe" +) + +// Any generic object representation. +// The lazy json implementation holds []byte and parse lazily. +type Any interface { + LastError() error + ValueType() ValueType + MustBeValid() Any + ToBool() bool + ToInt() int + ToInt32() int32 + ToInt64() int64 + ToUint() uint + ToUint32() uint32 + ToUint64() uint64 + ToFloat32() float32 + ToFloat64() float64 + ToString() string + ToVal(val interface{}) + Get(path ...interface{}) Any + Size() int + Keys() []string + GetInterface() interface{} + WriteTo(stream *Stream) +} + +type baseAny struct{} + +func (any *baseAny) Get(path ...interface{}) Any { + return &invalidAny{baseAny{}, fmt.Errorf("GetIndex %v from simple value", path)} +} + +func (any *baseAny) Size() int { + return 0 +} + +func (any *baseAny) Keys() []string { + return []string{} +} + +func (any *baseAny) ToVal(obj interface{}) { + panic("not implemented") +} + +// WrapInt32 turn int32 into Any interface +func WrapInt32(val int32) Any { + return &int32Any{baseAny{}, val} +} + +// WrapInt64 turn int64 into Any interface +func WrapInt64(val int64) Any { + return &int64Any{baseAny{}, val} +} + +// WrapUint32 turn uint32 into Any interface +func WrapUint32(val uint32) Any { + return &uint32Any{baseAny{}, val} +} + +// WrapUint64 turn uint64 into Any interface +func WrapUint64(val uint64) Any { + return &uint64Any{baseAny{}, val} +} + +// WrapFloat64 turn float64 into Any interface +func WrapFloat64(val float64) Any { + return &floatAny{baseAny{}, val} +} + +// WrapString turn string into Any interface +func WrapString(val string) Any { + return &stringAny{baseAny{}, val} +} + +// Wrap turn a go object into Any interface +func Wrap(val interface{}) Any { + if val == nil { + return &nilAny{} + } + asAny, isAny := val.(Any) + if isAny { + return asAny + } + typ := reflect2.TypeOf(val) + switch typ.Kind() { + case reflect.Slice: + return wrapArray(val) + case reflect.Struct: + return wrapStruct(val) + case reflect.Map: + return wrapMap(val) + case reflect.String: + return WrapString(val.(string)) + case reflect.Int: + if strconv.IntSize == 32 { + return WrapInt32(int32(val.(int))) + } + return WrapInt64(int64(val.(int))) + case reflect.Int8: + return WrapInt32(int32(val.(int8))) + case reflect.Int16: + return WrapInt32(int32(val.(int16))) + case reflect.Int32: + return WrapInt32(val.(int32)) + case reflect.Int64: + return WrapInt64(val.(int64)) + case reflect.Uint: + if strconv.IntSize == 32 { + return WrapUint32(uint32(val.(uint))) + } + return WrapUint64(uint64(val.(uint))) + case reflect.Uintptr: + if ptrSize == 32 { + return WrapUint32(uint32(val.(uintptr))) + } + return WrapUint64(uint64(val.(uintptr))) + case reflect.Uint8: + return WrapUint32(uint32(val.(uint8))) + case reflect.Uint16: + return WrapUint32(uint32(val.(uint16))) + case reflect.Uint32: + return WrapUint32(uint32(val.(uint32))) + case reflect.Uint64: + return WrapUint64(val.(uint64)) + case reflect.Float32: + return WrapFloat64(float64(val.(float32))) + case reflect.Float64: + return WrapFloat64(val.(float64)) + case reflect.Bool: + if val.(bool) == true { + return &trueAny{} + } + return &falseAny{} + } + return &invalidAny{baseAny{}, fmt.Errorf("unsupported type: %v", typ)} +} + +// ReadAny read next JSON element as an Any object. It is a better json.RawMessage. +func (iter *Iterator) ReadAny() Any { + return iter.readAny() +} + +func (iter *Iterator) readAny() Any { + c := iter.nextToken() + switch c { + case '"': + iter.unreadByte() + return &stringAny{baseAny{}, iter.ReadString()} + case 'n': + iter.skipThreeBytes('u', 'l', 'l') // null + return &nilAny{} + case 't': + iter.skipThreeBytes('r', 'u', 'e') // true + return &trueAny{} + case 'f': + iter.skipFourBytes('a', 'l', 's', 'e') // false + return &falseAny{} + case '{': + return iter.readObjectAny() + case '[': + return iter.readArrayAny() + case '-': + return iter.readNumberAny(false) + case 0: + return &invalidAny{baseAny{}, errors.New("input is empty")} + default: + return iter.readNumberAny(true) + } +} + +func (iter *Iterator) readNumberAny(positive bool) Any { + iter.startCapture(iter.head - 1) + iter.skipNumber() + lazyBuf := iter.stopCapture() + return &numberLazyAny{baseAny{}, iter.cfg, lazyBuf, nil} +} + +func (iter *Iterator) readObjectAny() Any { + iter.startCapture(iter.head - 1) + iter.skipObject() + lazyBuf := iter.stopCapture() + return &objectLazyAny{baseAny{}, iter.cfg, lazyBuf, nil} +} + +func (iter *Iterator) readArrayAny() Any { + iter.startCapture(iter.head - 1) + iter.skipArray() + lazyBuf := iter.stopCapture() + return &arrayLazyAny{baseAny{}, iter.cfg, lazyBuf, nil} +} + +func locateObjectField(iter *Iterator, target string) []byte { + var found []byte + iter.ReadObjectCB(func(iter *Iterator, field string) bool { + if field == target { + found = iter.SkipAndReturnBytes() + return false + } + iter.Skip() + return true + }) + return found +} + +func locateArrayElement(iter *Iterator, target int) []byte { + var found []byte + n := 0 + iter.ReadArrayCB(func(iter *Iterator) bool { + if n == target { + found = iter.SkipAndReturnBytes() + return false + } + iter.Skip() + n++ + return true + }) + return found +} + +func locatePath(iter *Iterator, path []interface{}) Any { + for i, pathKeyObj := range path { + switch pathKey := pathKeyObj.(type) { + case string: + valueBytes := locateObjectField(iter, pathKey) + if valueBytes == nil { + return newInvalidAny(path[i:]) + } + iter.ResetBytes(valueBytes) + case int: + valueBytes := locateArrayElement(iter, pathKey) + if valueBytes == nil { + return newInvalidAny(path[i:]) + } + iter.ResetBytes(valueBytes) + case int32: + if '*' == pathKey { + return iter.readAny().Get(path[i:]...) + } + return newInvalidAny(path[i:]) + default: + return newInvalidAny(path[i:]) + } + } + if iter.Error != nil && iter.Error != io.EOF { + return &invalidAny{baseAny{}, iter.Error} + } + return iter.readAny() +} + +var anyType = reflect2.TypeOfPtr((*Any)(nil)).Elem() + +func createDecoderOfAny(ctx *ctx, typ reflect2.Type) ValDecoder { + if typ == anyType { + return &directAnyCodec{} + } + if typ.Implements(anyType) { + return &anyCodec{ + valType: typ, + } + } + return nil +} + +func createEncoderOfAny(ctx *ctx, typ reflect2.Type) ValEncoder { + if typ == anyType { + return &directAnyCodec{} + } + if typ.Implements(anyType) { + return &anyCodec{ + valType: typ, + } + } + return nil +} + +type anyCodec struct { + valType reflect2.Type +} + +func (codec *anyCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + panic("not implemented") +} + +func (codec *anyCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + obj := codec.valType.UnsafeIndirect(ptr) + any := obj.(Any) + any.WriteTo(stream) +} + +func (codec *anyCodec) IsEmpty(ptr unsafe.Pointer) bool { + obj := codec.valType.UnsafeIndirect(ptr) + any := obj.(Any) + return any.Size() == 0 +} + +type directAnyCodec struct { +} + +func (codec *directAnyCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *(*Any)(ptr) = iter.readAny() +} + +func (codec *directAnyCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + any := *(*Any)(ptr) + any.WriteTo(stream) +} + +func (codec *directAnyCodec) IsEmpty(ptr unsafe.Pointer) bool { + any := *(*Any)(ptr) + return any.Size() == 0 +} diff --git a/vendor/github.com/json-iterator/go/any_array.go b/vendor/github.com/json-iterator/go/any_array.go new file mode 100644 index 000000000..0449e9aa4 --- /dev/null +++ b/vendor/github.com/json-iterator/go/any_array.go @@ -0,0 +1,278 @@ +package jsoniter + +import ( + "reflect" + "unsafe" +) + +type arrayLazyAny struct { + baseAny + cfg *frozenConfig + buf []byte + err error +} + +func (any *arrayLazyAny) ValueType() ValueType { + return ArrayValue +} + +func (any *arrayLazyAny) MustBeValid() Any { + return any +} + +func (any *arrayLazyAny) LastError() error { + return any.err +} + +func (any *arrayLazyAny) ToBool() bool { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + return iter.ReadArray() +} + +func (any *arrayLazyAny) ToInt() int { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToInt32() int32 { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToInt64() int64 { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToUint() uint { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToUint32() uint32 { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToUint64() uint64 { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToFloat32() float32 { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToFloat64() float64 { + if any.ToBool() { + return 1 + } + return 0 +} + +func (any *arrayLazyAny) ToString() string { + return *(*string)(unsafe.Pointer(&any.buf)) +} + +func (any *arrayLazyAny) ToVal(val interface{}) { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + iter.ReadVal(val) +} + +func (any *arrayLazyAny) Get(path ...interface{}) Any { + if len(path) == 0 { + return any + } + switch firstPath := path[0].(type) { + case int: + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + valueBytes := locateArrayElement(iter, firstPath) + if valueBytes == nil { + return newInvalidAny(path) + } + iter.ResetBytes(valueBytes) + return locatePath(iter, path[1:]) + case int32: + if '*' == firstPath { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + arr := make([]Any, 0) + iter.ReadArrayCB(func(iter *Iterator) bool { + found := iter.readAny().Get(path[1:]...) + if found.ValueType() != InvalidValue { + arr = append(arr, found) + } + return true + }) + return wrapArray(arr) + } + return newInvalidAny(path) + default: + return newInvalidAny(path) + } +} + +func (any *arrayLazyAny) Size() int { + size := 0 + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + iter.ReadArrayCB(func(iter *Iterator) bool { + size++ + iter.Skip() + return true + }) + return size +} + +func (any *arrayLazyAny) WriteTo(stream *Stream) { + stream.Write(any.buf) +} + +func (any *arrayLazyAny) GetInterface() interface{} { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + return iter.Read() +} + +type arrayAny struct { + baseAny + val reflect.Value +} + +func wrapArray(val interface{}) *arrayAny { + return &arrayAny{baseAny{}, reflect.ValueOf(val)} +} + +func (any *arrayAny) ValueType() ValueType { + return ArrayValue +} + +func (any *arrayAny) MustBeValid() Any { + return any +} + +func (any *arrayAny) LastError() error { + return nil +} + +func (any *arrayAny) ToBool() bool { + return any.val.Len() != 0 +} + +func (any *arrayAny) ToInt() int { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToInt32() int32 { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToInt64() int64 { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToUint() uint { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToUint32() uint32 { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToUint64() uint64 { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToFloat32() float32 { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToFloat64() float64 { + if any.val.Len() == 0 { + return 0 + } + return 1 +} + +func (any *arrayAny) ToString() string { + str, _ := MarshalToString(any.val.Interface()) + return str +} + +func (any *arrayAny) Get(path ...interface{}) Any { + if len(path) == 0 { + return any + } + switch firstPath := path[0].(type) { + case int: + if firstPath < 0 || firstPath >= any.val.Len() { + return newInvalidAny(path) + } + return Wrap(any.val.Index(firstPath).Interface()) + case int32: + if '*' == firstPath { + mappedAll := make([]Any, 0) + for i := 0; i < any.val.Len(); i++ { + mapped := Wrap(any.val.Index(i).Interface()).Get(path[1:]...) + if mapped.ValueType() != InvalidValue { + mappedAll = append(mappedAll, mapped) + } + } + return wrapArray(mappedAll) + } + return newInvalidAny(path) + default: + return newInvalidAny(path) + } +} + +func (any *arrayAny) Size() int { + return any.val.Len() +} + +func (any *arrayAny) WriteTo(stream *Stream) { + stream.WriteVal(any.val) +} + +func (any *arrayAny) GetInterface() interface{} { + return any.val.Interface() +} diff --git a/vendor/github.com/json-iterator/go/any_bool.go b/vendor/github.com/json-iterator/go/any_bool.go new file mode 100644 index 000000000..9452324af --- /dev/null +++ b/vendor/github.com/json-iterator/go/any_bool.go @@ -0,0 +1,137 @@ +package jsoniter + +type trueAny struct { + baseAny +} + +func (any *trueAny) LastError() error { + return nil +} + +func (any *trueAny) ToBool() bool { + return true +} + +func (any *trueAny) ToInt() int { + return 1 +} + +func (any *trueAny) ToInt32() int32 { + return 1 +} + +func (any *trueAny) ToInt64() int64 { + return 1 +} + +func (any *trueAny) ToUint() uint { + return 1 +} + +func (any *trueAny) ToUint32() uint32 { + return 1 +} + +func (any *trueAny) ToUint64() uint64 { + return 1 +} + +func (any *trueAny) ToFloat32() float32 { + return 1 +} + +func (any *trueAny) ToFloat64() float64 { + return 1 +} + +func (any *trueAny) ToString() string { + return "true" +} + +func (any *trueAny) WriteTo(stream *Stream) { + stream.WriteTrue() +} + +func (any *trueAny) Parse() *Iterator { + return nil +} + +func (any *trueAny) GetInterface() interface{} { + return true +} + +func (any *trueAny) ValueType() ValueType { + return BoolValue +} + +func (any *trueAny) MustBeValid() Any { + return any +} + +type falseAny struct { + baseAny +} + +func (any *falseAny) LastError() error { + return nil +} + +func (any *falseAny) ToBool() bool { + return false +} + +func (any *falseAny) ToInt() int { + return 0 +} + +func (any *falseAny) ToInt32() int32 { + return 0 +} + +func (any *falseAny) ToInt64() int64 { + return 0 +} + +func (any *falseAny) ToUint() uint { + return 0 +} + +func (any *falseAny) ToUint32() uint32 { + return 0 +} + +func (any *falseAny) ToUint64() uint64 { + return 0 +} + +func (any *falseAny) ToFloat32() float32 { + return 0 +} + +func (any *falseAny) ToFloat64() float64 { + return 0 +} + +func (any *falseAny) ToString() string { + return "false" +} + +func (any *falseAny) WriteTo(stream *Stream) { + stream.WriteFalse() +} + +func (any *falseAny) Parse() *Iterator { + return nil +} + +func (any *falseAny) GetInterface() interface{} { + return false +} + +func (any *falseAny) ValueType() ValueType { + return BoolValue +} + +func (any *falseAny) MustBeValid() Any { + return any +} diff --git a/vendor/github.com/json-iterator/go/any_float.go b/vendor/github.com/json-iterator/go/any_float.go new file mode 100644 index 000000000..35fdb0949 --- /dev/null +++ b/vendor/github.com/json-iterator/go/any_float.go @@ -0,0 +1,83 @@ +package jsoniter + +import ( + "strconv" +) + +type floatAny struct { + baseAny + val float64 +} + +func (any *floatAny) Parse() *Iterator { + return nil +} + +func (any *floatAny) ValueType() ValueType { + return NumberValue +} + +func (any *floatAny) MustBeValid() Any { + return any +} + +func (any *floatAny) LastError() error { + return nil +} + +func (any *floatAny) ToBool() bool { + return any.ToFloat64() != 0 +} + +func (any *floatAny) ToInt() int { + return int(any.val) +} + +func (any *floatAny) ToInt32() int32 { + return int32(any.val) +} + +func (any *floatAny) ToInt64() int64 { + return int64(any.val) +} + +func (any *floatAny) ToUint() uint { + if any.val > 0 { + return uint(any.val) + } + return 0 +} + +func (any *floatAny) ToUint32() uint32 { + if any.val > 0 { + return uint32(any.val) + } + return 0 +} + +func (any *floatAny) ToUint64() uint64 { + if any.val > 0 { + return uint64(any.val) + } + return 0 +} + +func (any *floatAny) ToFloat32() float32 { + return float32(any.val) +} + +func (any *floatAny) ToFloat64() float64 { + return any.val +} + +func (any *floatAny) ToString() string { + return strconv.FormatFloat(any.val, 'E', -1, 64) +} + +func (any *floatAny) WriteTo(stream *Stream) { + stream.WriteFloat64(any.val) +} + +func (any *floatAny) GetInterface() interface{} { + return any.val +} diff --git a/vendor/github.com/json-iterator/go/any_int32.go b/vendor/github.com/json-iterator/go/any_int32.go new file mode 100644 index 000000000..1b56f3991 --- /dev/null +++ b/vendor/github.com/json-iterator/go/any_int32.go @@ -0,0 +1,74 @@ +package jsoniter + +import ( + "strconv" +) + +type int32Any struct { + baseAny + val int32 +} + +func (any *int32Any) LastError() error { + return nil +} + +func (any *int32Any) ValueType() ValueType { + return NumberValue +} + +func (any *int32Any) MustBeValid() Any { + return any +} + +func (any *int32Any) ToBool() bool { + return any.val != 0 +} + +func (any *int32Any) ToInt() int { + return int(any.val) +} + +func (any *int32Any) ToInt32() int32 { + return any.val +} + +func (any *int32Any) ToInt64() int64 { + return int64(any.val) +} + +func (any *int32Any) ToUint() uint { + return uint(any.val) +} + +func (any *int32Any) ToUint32() uint32 { + return uint32(any.val) +} + +func (any *int32Any) ToUint64() uint64 { + return uint64(any.val) +} + +func (any *int32Any) ToFloat32() float32 { + return float32(any.val) +} + +func (any *int32Any) ToFloat64() float64 { + return float64(any.val) +} + +func (any *int32Any) ToString() string { + return strconv.FormatInt(int64(any.val), 10) +} + +func (any *int32Any) WriteTo(stream *Stream) { + stream.WriteInt32(any.val) +} + +func (any *int32Any) Parse() *Iterator { + return nil +} + +func (any *int32Any) GetInterface() interface{} { + return any.val +} diff --git a/vendor/github.com/json-iterator/go/any_int64.go b/vendor/github.com/json-iterator/go/any_int64.go new file mode 100644 index 000000000..c440d72b6 --- /dev/null +++ b/vendor/github.com/json-iterator/go/any_int64.go @@ -0,0 +1,74 @@ +package jsoniter + +import ( + "strconv" +) + +type int64Any struct { + baseAny + val int64 +} + +func (any *int64Any) LastError() error { + return nil +} + +func (any *int64Any) ValueType() ValueType { + return NumberValue +} + +func (any *int64Any) MustBeValid() Any { + return any +} + +func (any *int64Any) ToBool() bool { + return any.val != 0 +} + +func (any *int64Any) ToInt() int { + return int(any.val) +} + +func (any *int64Any) ToInt32() int32 { + return int32(any.val) +} + +func (any *int64Any) ToInt64() int64 { + return any.val +} + +func (any *int64Any) ToUint() uint { + return uint(any.val) +} + +func (any *int64Any) ToUint32() uint32 { + return uint32(any.val) +} + +func (any *int64Any) ToUint64() uint64 { + return uint64(any.val) +} + +func (any *int64Any) ToFloat32() float32 { + return float32(any.val) +} + +func (any *int64Any) ToFloat64() float64 { + return float64(any.val) +} + +func (any *int64Any) ToString() string { + return strconv.FormatInt(any.val, 10) +} + +func (any *int64Any) WriteTo(stream *Stream) { + stream.WriteInt64(any.val) +} + +func (any *int64Any) Parse() *Iterator { + return nil +} + +func (any *int64Any) GetInterface() interface{} { + return any.val +} diff --git a/vendor/github.com/json-iterator/go/any_invalid.go b/vendor/github.com/json-iterator/go/any_invalid.go new file mode 100644 index 000000000..1d859eac3 --- /dev/null +++ b/vendor/github.com/json-iterator/go/any_invalid.go @@ -0,0 +1,82 @@ +package jsoniter + +import "fmt" + +type invalidAny struct { + baseAny + err error +} + +func newInvalidAny(path []interface{}) *invalidAny { + return &invalidAny{baseAny{}, fmt.Errorf("%v not found", path)} +} + +func (any *invalidAny) LastError() error { + return any.err +} + +func (any *invalidAny) ValueType() ValueType { + return InvalidValue +} + +func (any *invalidAny) MustBeValid() Any { + panic(any.err) +} + +func (any *invalidAny) ToBool() bool { + return false +} + +func (any *invalidAny) ToInt() int { + return 0 +} + +func (any *invalidAny) ToInt32() int32 { + return 0 +} + +func (any *invalidAny) ToInt64() int64 { + return 0 +} + +func (any *invalidAny) ToUint() uint { + return 0 +} + +func (any *invalidAny) ToUint32() uint32 { + return 0 +} + +func (any *invalidAny) ToUint64() uint64 { + return 0 +} + +func (any *invalidAny) ToFloat32() float32 { + return 0 +} + +func (any *invalidAny) ToFloat64() float64 { + return 0 +} + +func (any *invalidAny) ToString() string { + return "" +} + +func (any *invalidAny) WriteTo(stream *Stream) { +} + +func (any *invalidAny) Get(path ...interface{}) Any { + if any.err == nil { + return &invalidAny{baseAny{}, fmt.Errorf("get %v from invalid", path)} + } + return &invalidAny{baseAny{}, fmt.Errorf("%v, get %v from invalid", any.err, path)} +} + +func (any *invalidAny) Parse() *Iterator { + return nil +} + +func (any *invalidAny) GetInterface() interface{} { + return nil +} diff --git a/vendor/github.com/json-iterator/go/any_nil.go b/vendor/github.com/json-iterator/go/any_nil.go new file mode 100644 index 000000000..d04cb54c1 --- /dev/null +++ b/vendor/github.com/json-iterator/go/any_nil.go @@ -0,0 +1,69 @@ +package jsoniter + +type nilAny struct { + baseAny +} + +func (any *nilAny) LastError() error { + return nil +} + +func (any *nilAny) ValueType() ValueType { + return NilValue +} + +func (any *nilAny) MustBeValid() Any { + return any +} + +func (any *nilAny) ToBool() bool { + return false +} + +func (any *nilAny) ToInt() int { + return 0 +} + +func (any *nilAny) ToInt32() int32 { + return 0 +} + +func (any *nilAny) ToInt64() int64 { + return 0 +} + +func (any *nilAny) ToUint() uint { + return 0 +} + +func (any *nilAny) ToUint32() uint32 { + return 0 +} + +func (any *nilAny) ToUint64() uint64 { + return 0 +} + +func (any *nilAny) ToFloat32() float32 { + return 0 +} + +func (any *nilAny) ToFloat64() float64 { + return 0 +} + +func (any *nilAny) ToString() string { + return "" +} + +func (any *nilAny) WriteTo(stream *Stream) { + stream.WriteNil() +} + +func (any *nilAny) Parse() *Iterator { + return nil +} + +func (any *nilAny) GetInterface() interface{} { + return nil +} diff --git a/vendor/github.com/json-iterator/go/any_number.go b/vendor/github.com/json-iterator/go/any_number.go new file mode 100644 index 000000000..9d1e901a6 --- /dev/null +++ b/vendor/github.com/json-iterator/go/any_number.go @@ -0,0 +1,123 @@ +package jsoniter + +import ( + "io" + "unsafe" +) + +type numberLazyAny struct { + baseAny + cfg *frozenConfig + buf []byte + err error +} + +func (any *numberLazyAny) ValueType() ValueType { + return NumberValue +} + +func (any *numberLazyAny) MustBeValid() Any { + return any +} + +func (any *numberLazyAny) LastError() error { + return any.err +} + +func (any *numberLazyAny) ToBool() bool { + return any.ToFloat64() != 0 +} + +func (any *numberLazyAny) ToInt() int { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadInt() + if iter.Error != nil && iter.Error != io.EOF { + any.err = iter.Error + } + return val +} + +func (any *numberLazyAny) ToInt32() int32 { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadInt32() + if iter.Error != nil && iter.Error != io.EOF { + any.err = iter.Error + } + return val +} + +func (any *numberLazyAny) ToInt64() int64 { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadInt64() + if iter.Error != nil && iter.Error != io.EOF { + any.err = iter.Error + } + return val +} + +func (any *numberLazyAny) ToUint() uint { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadUint() + if iter.Error != nil && iter.Error != io.EOF { + any.err = iter.Error + } + return val +} + +func (any *numberLazyAny) ToUint32() uint32 { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadUint32() + if iter.Error != nil && iter.Error != io.EOF { + any.err = iter.Error + } + return val +} + +func (any *numberLazyAny) ToUint64() uint64 { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadUint64() + if iter.Error != nil && iter.Error != io.EOF { + any.err = iter.Error + } + return val +} + +func (any *numberLazyAny) ToFloat32() float32 { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadFloat32() + if iter.Error != nil && iter.Error != io.EOF { + any.err = iter.Error + } + return val +} + +func (any *numberLazyAny) ToFloat64() float64 { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + val := iter.ReadFloat64() + if iter.Error != nil && iter.Error != io.EOF { + any.err = iter.Error + } + return val +} + +func (any *numberLazyAny) ToString() string { + return *(*string)(unsafe.Pointer(&any.buf)) +} + +func (any *numberLazyAny) WriteTo(stream *Stream) { + stream.Write(any.buf) +} + +func (any *numberLazyAny) GetInterface() interface{} { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + return iter.Read() +} diff --git a/vendor/github.com/json-iterator/go/any_object.go b/vendor/github.com/json-iterator/go/any_object.go new file mode 100644 index 000000000..c44ef5c98 --- /dev/null +++ b/vendor/github.com/json-iterator/go/any_object.go @@ -0,0 +1,374 @@ +package jsoniter + +import ( + "reflect" + "unsafe" +) + +type objectLazyAny struct { + baseAny + cfg *frozenConfig + buf []byte + err error +} + +func (any *objectLazyAny) ValueType() ValueType { + return ObjectValue +} + +func (any *objectLazyAny) MustBeValid() Any { + return any +} + +func (any *objectLazyAny) LastError() error { + return any.err +} + +func (any *objectLazyAny) ToBool() bool { + return true +} + +func (any *objectLazyAny) ToInt() int { + return 0 +} + +func (any *objectLazyAny) ToInt32() int32 { + return 0 +} + +func (any *objectLazyAny) ToInt64() int64 { + return 0 +} + +func (any *objectLazyAny) ToUint() uint { + return 0 +} + +func (any *objectLazyAny) ToUint32() uint32 { + return 0 +} + +func (any *objectLazyAny) ToUint64() uint64 { + return 0 +} + +func (any *objectLazyAny) ToFloat32() float32 { + return 0 +} + +func (any *objectLazyAny) ToFloat64() float64 { + return 0 +} + +func (any *objectLazyAny) ToString() string { + return *(*string)(unsafe.Pointer(&any.buf)) +} + +func (any *objectLazyAny) ToVal(obj interface{}) { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + iter.ReadVal(obj) +} + +func (any *objectLazyAny) Get(path ...interface{}) Any { + if len(path) == 0 { + return any + } + switch firstPath := path[0].(type) { + case string: + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + valueBytes := locateObjectField(iter, firstPath) + if valueBytes == nil { + return newInvalidAny(path) + } + iter.ResetBytes(valueBytes) + return locatePath(iter, path[1:]) + case int32: + if '*' == firstPath { + mappedAll := map[string]Any{} + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + iter.ReadMapCB(func(iter *Iterator, field string) bool { + mapped := locatePath(iter, path[1:]) + if mapped.ValueType() != InvalidValue { + mappedAll[field] = mapped + } + return true + }) + return wrapMap(mappedAll) + } + return newInvalidAny(path) + default: + return newInvalidAny(path) + } +} + +func (any *objectLazyAny) Keys() []string { + keys := []string{} + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + iter.ReadMapCB(func(iter *Iterator, field string) bool { + iter.Skip() + keys = append(keys, field) + return true + }) + return keys +} + +func (any *objectLazyAny) Size() int { + size := 0 + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + iter.ReadObjectCB(func(iter *Iterator, field string) bool { + iter.Skip() + size++ + return true + }) + return size +} + +func (any *objectLazyAny) WriteTo(stream *Stream) { + stream.Write(any.buf) +} + +func (any *objectLazyAny) GetInterface() interface{} { + iter := any.cfg.BorrowIterator(any.buf) + defer any.cfg.ReturnIterator(iter) + return iter.Read() +} + +type objectAny struct { + baseAny + err error + val reflect.Value +} + +func wrapStruct(val interface{}) *objectAny { + return &objectAny{baseAny{}, nil, reflect.ValueOf(val)} +} + +func (any *objectAny) ValueType() ValueType { + return ObjectValue +} + +func (any *objectAny) MustBeValid() Any { + return any +} + +func (any *objectAny) Parse() *Iterator { + return nil +} + +func (any *objectAny) LastError() error { + return any.err +} + +func (any *objectAny) ToBool() bool { + return any.val.NumField() != 0 +} + +func (any *objectAny) ToInt() int { + return 0 +} + +func (any *objectAny) ToInt32() int32 { + return 0 +} + +func (any *objectAny) ToInt64() int64 { + return 0 +} + +func (any *objectAny) ToUint() uint { + return 0 +} + +func (any *objectAny) ToUint32() uint32 { + return 0 +} + +func (any *objectAny) ToUint64() uint64 { + return 0 +} + +func (any *objectAny) ToFloat32() float32 { + return 0 +} + +func (any *objectAny) ToFloat64() float64 { + return 0 +} + +func (any *objectAny) ToString() string { + str, err := MarshalToString(any.val.Interface()) + any.err = err + return str +} + +func (any *objectAny) Get(path ...interface{}) Any { + if len(path) == 0 { + return any + } + switch firstPath := path[0].(type) { + case string: + field := any.val.FieldByName(firstPath) + if !field.IsValid() { + return newInvalidAny(path) + } + return Wrap(field.Interface()) + case int32: + if '*' == firstPath { + mappedAll := map[string]Any{} + for i := 0; i < any.val.NumField(); i++ { + field := any.val.Field(i) + if field.CanInterface() { + mapped := Wrap(field.Interface()).Get(path[1:]...) + if mapped.ValueType() != InvalidValue { + mappedAll[any.val.Type().Field(i).Name] = mapped + } + } + } + return wrapMap(mappedAll) + } + return newInvalidAny(path) + default: + return newInvalidAny(path) + } +} + +func (any *objectAny) Keys() []string { + keys := make([]string, 0, any.val.NumField()) + for i := 0; i < any.val.NumField(); i++ { + keys = append(keys, any.val.Type().Field(i).Name) + } + return keys +} + +func (any *objectAny) Size() int { + return any.val.NumField() +} + +func (any *objectAny) WriteTo(stream *Stream) { + stream.WriteVal(any.val) +} + +func (any *objectAny) GetInterface() interface{} { + return any.val.Interface() +} + +type mapAny struct { + baseAny + err error + val reflect.Value +} + +func wrapMap(val interface{}) *mapAny { + return &mapAny{baseAny{}, nil, reflect.ValueOf(val)} +} + +func (any *mapAny) ValueType() ValueType { + return ObjectValue +} + +func (any *mapAny) MustBeValid() Any { + return any +} + +func (any *mapAny) Parse() *Iterator { + return nil +} + +func (any *mapAny) LastError() error { + return any.err +} + +func (any *mapAny) ToBool() bool { + return true +} + +func (any *mapAny) ToInt() int { + return 0 +} + +func (any *mapAny) ToInt32() int32 { + return 0 +} + +func (any *mapAny) ToInt64() int64 { + return 0 +} + +func (any *mapAny) ToUint() uint { + return 0 +} + +func (any *mapAny) ToUint32() uint32 { + return 0 +} + +func (any *mapAny) ToUint64() uint64 { + return 0 +} + +func (any *mapAny) ToFloat32() float32 { + return 0 +} + +func (any *mapAny) ToFloat64() float64 { + return 0 +} + +func (any *mapAny) ToString() string { + str, err := MarshalToString(any.val.Interface()) + any.err = err + return str +} + +func (any *mapAny) Get(path ...interface{}) Any { + if len(path) == 0 { + return any + } + switch firstPath := path[0].(type) { + case int32: + if '*' == firstPath { + mappedAll := map[string]Any{} + for _, key := range any.val.MapKeys() { + keyAsStr := key.String() + element := Wrap(any.val.MapIndex(key).Interface()) + mapped := element.Get(path[1:]...) + if mapped.ValueType() != InvalidValue { + mappedAll[keyAsStr] = mapped + } + } + return wrapMap(mappedAll) + } + return newInvalidAny(path) + default: + value := any.val.MapIndex(reflect.ValueOf(firstPath)) + if !value.IsValid() { + return newInvalidAny(path) + } + return Wrap(value.Interface()) + } +} + +func (any *mapAny) Keys() []string { + keys := make([]string, 0, any.val.Len()) + for _, key := range any.val.MapKeys() { + keys = append(keys, key.String()) + } + return keys +} + +func (any *mapAny) Size() int { + return any.val.Len() +} + +func (any *mapAny) WriteTo(stream *Stream) { + stream.WriteVal(any.val) +} + +func (any *mapAny) GetInterface() interface{} { + return any.val.Interface() +} diff --git a/vendor/github.com/json-iterator/go/any_str.go b/vendor/github.com/json-iterator/go/any_str.go new file mode 100644 index 000000000..a4b93c78c --- /dev/null +++ b/vendor/github.com/json-iterator/go/any_str.go @@ -0,0 +1,166 @@ +package jsoniter + +import ( + "fmt" + "strconv" +) + +type stringAny struct { + baseAny + val string +} + +func (any *stringAny) Get(path ...interface{}) Any { + if len(path) == 0 { + return any + } + return &invalidAny{baseAny{}, fmt.Errorf("GetIndex %v from simple value", path)} +} + +func (any *stringAny) Parse() *Iterator { + return nil +} + +func (any *stringAny) ValueType() ValueType { + return StringValue +} + +func (any *stringAny) MustBeValid() Any { + return any +} + +func (any *stringAny) LastError() error { + return nil +} + +func (any *stringAny) ToBool() bool { + str := any.ToString() + if str == "0" { + return false + } + for _, c := range str { + switch c { + case ' ', '\n', '\r', '\t': + default: + return true + } + } + return false +} + +func (any *stringAny) ToInt() int { + return int(any.ToInt64()) + +} + +func (any *stringAny) ToInt32() int32 { + return int32(any.ToInt64()) +} + +func (any *stringAny) ToInt64() int64 { + if any.val == "" { + return 0 + } + + flag := 1 + startPos := 0 + endPos := 0 + if any.val[0] == '+' || any.val[0] == '-' { + startPos = 1 + } + + if any.val[0] == '-' { + flag = -1 + } + + for i := startPos; i < len(any.val); i++ { + if any.val[i] >= '0' && any.val[i] <= '9' { + endPos = i + 1 + } else { + break + } + } + parsed, _ := strconv.ParseInt(any.val[startPos:endPos], 10, 64) + return int64(flag) * parsed +} + +func (any *stringAny) ToUint() uint { + return uint(any.ToUint64()) +} + +func (any *stringAny) ToUint32() uint32 { + return uint32(any.ToUint64()) +} + +func (any *stringAny) ToUint64() uint64 { + if any.val == "" { + return 0 + } + + startPos := 0 + endPos := 0 + + if any.val[0] == '-' { + return 0 + } + if any.val[0] == '+' { + startPos = 1 + } + + for i := startPos; i < len(any.val); i++ { + if any.val[i] >= '0' && any.val[i] <= '9' { + endPos = i + 1 + } else { + break + } + } + parsed, _ := strconv.ParseUint(any.val[startPos:endPos], 10, 64) + return parsed +} + +func (any *stringAny) ToFloat32() float32 { + return float32(any.ToFloat64()) +} + +func (any *stringAny) ToFloat64() float64 { + if len(any.val) == 0 { + return 0 + } + + // first char invalid + if any.val[0] != '+' && any.val[0] != '-' && (any.val[0] > '9' || any.val[0] < '0') { + return 0 + } + + // extract valid num expression from string + // eg 123true => 123, -12.12xxa => -12.12 + endPos := 1 + for i := 1; i < len(any.val); i++ { + if any.val[i] == '.' || any.val[i] == 'e' || any.val[i] == 'E' || any.val[i] == '+' || any.val[i] == '-' { + endPos = i + 1 + continue + } + + // end position is the first char which is not digit + if any.val[i] >= '0' && any.val[i] <= '9' { + endPos = i + 1 + } else { + endPos = i + break + } + } + parsed, _ := strconv.ParseFloat(any.val[:endPos], 64) + return parsed +} + +func (any *stringAny) ToString() string { + return any.val +} + +func (any *stringAny) WriteTo(stream *Stream) { + stream.WriteString(any.val) +} + +func (any *stringAny) GetInterface() interface{} { + return any.val +} diff --git a/vendor/github.com/json-iterator/go/any_uint32.go b/vendor/github.com/json-iterator/go/any_uint32.go new file mode 100644 index 000000000..656bbd33d --- /dev/null +++ b/vendor/github.com/json-iterator/go/any_uint32.go @@ -0,0 +1,74 @@ +package jsoniter + +import ( + "strconv" +) + +type uint32Any struct { + baseAny + val uint32 +} + +func (any *uint32Any) LastError() error { + return nil +} + +func (any *uint32Any) ValueType() ValueType { + return NumberValue +} + +func (any *uint32Any) MustBeValid() Any { + return any +} + +func (any *uint32Any) ToBool() bool { + return any.val != 0 +} + +func (any *uint32Any) ToInt() int { + return int(any.val) +} + +func (any *uint32Any) ToInt32() int32 { + return int32(any.val) +} + +func (any *uint32Any) ToInt64() int64 { + return int64(any.val) +} + +func (any *uint32Any) ToUint() uint { + return uint(any.val) +} + +func (any *uint32Any) ToUint32() uint32 { + return any.val +} + +func (any *uint32Any) ToUint64() uint64 { + return uint64(any.val) +} + +func (any *uint32Any) ToFloat32() float32 { + return float32(any.val) +} + +func (any *uint32Any) ToFloat64() float64 { + return float64(any.val) +} + +func (any *uint32Any) ToString() string { + return strconv.FormatInt(int64(any.val), 10) +} + +func (any *uint32Any) WriteTo(stream *Stream) { + stream.WriteUint32(any.val) +} + +func (any *uint32Any) Parse() *Iterator { + return nil +} + +func (any *uint32Any) GetInterface() interface{} { + return any.val +} diff --git a/vendor/github.com/json-iterator/go/any_uint64.go b/vendor/github.com/json-iterator/go/any_uint64.go new file mode 100644 index 000000000..7df2fce33 --- /dev/null +++ b/vendor/github.com/json-iterator/go/any_uint64.go @@ -0,0 +1,74 @@ +package jsoniter + +import ( + "strconv" +) + +type uint64Any struct { + baseAny + val uint64 +} + +func (any *uint64Any) LastError() error { + return nil +} + +func (any *uint64Any) ValueType() ValueType { + return NumberValue +} + +func (any *uint64Any) MustBeValid() Any { + return any +} + +func (any *uint64Any) ToBool() bool { + return any.val != 0 +} + +func (any *uint64Any) ToInt() int { + return int(any.val) +} + +func (any *uint64Any) ToInt32() int32 { + return int32(any.val) +} + +func (any *uint64Any) ToInt64() int64 { + return int64(any.val) +} + +func (any *uint64Any) ToUint() uint { + return uint(any.val) +} + +func (any *uint64Any) ToUint32() uint32 { + return uint32(any.val) +} + +func (any *uint64Any) ToUint64() uint64 { + return any.val +} + +func (any *uint64Any) ToFloat32() float32 { + return float32(any.val) +} + +func (any *uint64Any) ToFloat64() float64 { + return float64(any.val) +} + +func (any *uint64Any) ToString() string { + return strconv.FormatUint(any.val, 10) +} + +func (any *uint64Any) WriteTo(stream *Stream) { + stream.WriteUint64(any.val) +} + +func (any *uint64Any) Parse() *Iterator { + return nil +} + +func (any *uint64Any) GetInterface() interface{} { + return any.val +} diff --git a/vendor/github.com/json-iterator/go/build.sh b/vendor/github.com/json-iterator/go/build.sh new file mode 100644 index 000000000..b45ef6883 --- /dev/null +++ b/vendor/github.com/json-iterator/go/build.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e +set -x + +if [ ! -d /tmp/build-golang/src/github.com/json-iterator ]; then + mkdir -p /tmp/build-golang/src/github.com/json-iterator + ln -s $PWD /tmp/build-golang/src/github.com/json-iterator/go +fi +export GOPATH=/tmp/build-golang +go get -u github.com/golang/dep/cmd/dep +cd /tmp/build-golang/src/github.com/json-iterator/go +exec $GOPATH/bin/dep ensure -update diff --git a/vendor/github.com/json-iterator/go/config.go b/vendor/github.com/json-iterator/go/config.go new file mode 100644 index 000000000..8c58fcba5 --- /dev/null +++ b/vendor/github.com/json-iterator/go/config.go @@ -0,0 +1,375 @@ +package jsoniter + +import ( + "encoding/json" + "io" + "reflect" + "sync" + "unsafe" + + "github.com/modern-go/concurrent" + "github.com/modern-go/reflect2" +) + +// Config customize how the API should behave. +// The API is created from Config by Froze. +type Config struct { + IndentionStep int + MarshalFloatWith6Digits bool + EscapeHTML bool + SortMapKeys bool + UseNumber bool + DisallowUnknownFields bool + TagKey string + OnlyTaggedField bool + ValidateJsonRawMessage bool + ObjectFieldMustBeSimpleString bool + CaseSensitive bool +} + +// API the public interface of this package. +// Primary Marshal and Unmarshal. +type API interface { + IteratorPool + StreamPool + MarshalToString(v interface{}) (string, error) + Marshal(v interface{}) ([]byte, error) + MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) + UnmarshalFromString(str string, v interface{}) error + Unmarshal(data []byte, v interface{}) error + Get(data []byte, path ...interface{}) Any + NewEncoder(writer io.Writer) *Encoder + NewDecoder(reader io.Reader) *Decoder + Valid(data []byte) bool + RegisterExtension(extension Extension) + DecoderOf(typ reflect2.Type) ValDecoder + EncoderOf(typ reflect2.Type) ValEncoder +} + +// ConfigDefault the default API +var ConfigDefault = Config{ + EscapeHTML: true, +}.Froze() + +// ConfigCompatibleWithStandardLibrary tries to be 100% compatible with standard library behavior +var ConfigCompatibleWithStandardLibrary = Config{ + EscapeHTML: true, + SortMapKeys: true, + ValidateJsonRawMessage: true, +}.Froze() + +// ConfigFastest marshals float with only 6 digits precision +var ConfigFastest = Config{ + EscapeHTML: false, + MarshalFloatWith6Digits: true, // will lose precession + ObjectFieldMustBeSimpleString: true, // do not unescape object field +}.Froze() + +type frozenConfig struct { + configBeforeFrozen Config + sortMapKeys bool + indentionStep int + objectFieldMustBeSimpleString bool + onlyTaggedField bool + disallowUnknownFields bool + decoderCache *concurrent.Map + encoderCache *concurrent.Map + encoderExtension Extension + decoderExtension Extension + extraExtensions []Extension + streamPool *sync.Pool + iteratorPool *sync.Pool + caseSensitive bool +} + +func (cfg *frozenConfig) initCache() { + cfg.decoderCache = concurrent.NewMap() + cfg.encoderCache = concurrent.NewMap() +} + +func (cfg *frozenConfig) addDecoderToCache(cacheKey uintptr, decoder ValDecoder) { + cfg.decoderCache.Store(cacheKey, decoder) +} + +func (cfg *frozenConfig) addEncoderToCache(cacheKey uintptr, encoder ValEncoder) { + cfg.encoderCache.Store(cacheKey, encoder) +} + +func (cfg *frozenConfig) getDecoderFromCache(cacheKey uintptr) ValDecoder { + decoder, found := cfg.decoderCache.Load(cacheKey) + if found { + return decoder.(ValDecoder) + } + return nil +} + +func (cfg *frozenConfig) getEncoderFromCache(cacheKey uintptr) ValEncoder { + encoder, found := cfg.encoderCache.Load(cacheKey) + if found { + return encoder.(ValEncoder) + } + return nil +} + +var cfgCache = concurrent.NewMap() + +func getFrozenConfigFromCache(cfg Config) *frozenConfig { + obj, found := cfgCache.Load(cfg) + if found { + return obj.(*frozenConfig) + } + return nil +} + +func addFrozenConfigToCache(cfg Config, frozenConfig *frozenConfig) { + cfgCache.Store(cfg, frozenConfig) +} + +// Froze forge API from config +func (cfg Config) Froze() API { + api := &frozenConfig{ + sortMapKeys: cfg.SortMapKeys, + indentionStep: cfg.IndentionStep, + objectFieldMustBeSimpleString: cfg.ObjectFieldMustBeSimpleString, + onlyTaggedField: cfg.OnlyTaggedField, + disallowUnknownFields: cfg.DisallowUnknownFields, + caseSensitive: cfg.CaseSensitive, + } + api.streamPool = &sync.Pool{ + New: func() interface{} { + return NewStream(api, nil, 512) + }, + } + api.iteratorPool = &sync.Pool{ + New: func() interface{} { + return NewIterator(api) + }, + } + api.initCache() + encoderExtension := EncoderExtension{} + decoderExtension := DecoderExtension{} + if cfg.MarshalFloatWith6Digits { + api.marshalFloatWith6Digits(encoderExtension) + } + if cfg.EscapeHTML { + api.escapeHTML(encoderExtension) + } + if cfg.UseNumber { + api.useNumber(decoderExtension) + } + if cfg.ValidateJsonRawMessage { + api.validateJsonRawMessage(encoderExtension) + } + api.encoderExtension = encoderExtension + api.decoderExtension = decoderExtension + api.configBeforeFrozen = cfg + return api +} + +func (cfg Config) frozeWithCacheReuse(extraExtensions []Extension) *frozenConfig { + api := getFrozenConfigFromCache(cfg) + if api != nil { + return api + } + api = cfg.Froze().(*frozenConfig) + for _, extension := range extraExtensions { + api.RegisterExtension(extension) + } + addFrozenConfigToCache(cfg, api) + return api +} + +func (cfg *frozenConfig) validateJsonRawMessage(extension EncoderExtension) { + encoder := &funcEncoder{func(ptr unsafe.Pointer, stream *Stream) { + rawMessage := *(*json.RawMessage)(ptr) + iter := cfg.BorrowIterator([]byte(rawMessage)) + iter.Read() + if iter.Error != nil { + stream.WriteRaw("null") + } else { + cfg.ReturnIterator(iter) + stream.WriteRaw(string(rawMessage)) + } + }, func(ptr unsafe.Pointer) bool { + return len(*((*json.RawMessage)(ptr))) == 0 + }} + extension[reflect2.TypeOfPtr((*json.RawMessage)(nil)).Elem()] = encoder + extension[reflect2.TypeOfPtr((*RawMessage)(nil)).Elem()] = encoder +} + +func (cfg *frozenConfig) useNumber(extension DecoderExtension) { + extension[reflect2.TypeOfPtr((*interface{})(nil)).Elem()] = &funcDecoder{func(ptr unsafe.Pointer, iter *Iterator) { + exitingValue := *((*interface{})(ptr)) + if exitingValue != nil && reflect.TypeOf(exitingValue).Kind() == reflect.Ptr { + iter.ReadVal(exitingValue) + return + } + if iter.WhatIsNext() == NumberValue { + *((*interface{})(ptr)) = json.Number(iter.readNumberAsString()) + } else { + *((*interface{})(ptr)) = iter.Read() + } + }} +} +func (cfg *frozenConfig) getTagKey() string { + tagKey := cfg.configBeforeFrozen.TagKey + if tagKey == "" { + return "json" + } + return tagKey +} + +func (cfg *frozenConfig) RegisterExtension(extension Extension) { + cfg.extraExtensions = append(cfg.extraExtensions, extension) + copied := cfg.configBeforeFrozen + cfg.configBeforeFrozen = copied +} + +type lossyFloat32Encoder struct { +} + +func (encoder *lossyFloat32Encoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteFloat32Lossy(*((*float32)(ptr))) +} + +func (encoder *lossyFloat32Encoder) IsEmpty(ptr unsafe.Pointer) bool { + return *((*float32)(ptr)) == 0 +} + +type lossyFloat64Encoder struct { +} + +func (encoder *lossyFloat64Encoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteFloat64Lossy(*((*float64)(ptr))) +} + +func (encoder *lossyFloat64Encoder) IsEmpty(ptr unsafe.Pointer) bool { + return *((*float64)(ptr)) == 0 +} + +// EnableLossyFloatMarshalling keeps 10**(-6) precision +// for float variables for better performance. +func (cfg *frozenConfig) marshalFloatWith6Digits(extension EncoderExtension) { + // for better performance + extension[reflect2.TypeOfPtr((*float32)(nil)).Elem()] = &lossyFloat32Encoder{} + extension[reflect2.TypeOfPtr((*float64)(nil)).Elem()] = &lossyFloat64Encoder{} +} + +type htmlEscapedStringEncoder struct { +} + +func (encoder *htmlEscapedStringEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + str := *((*string)(ptr)) + stream.WriteStringWithHTMLEscaped(str) +} + +func (encoder *htmlEscapedStringEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return *((*string)(ptr)) == "" +} + +func (cfg *frozenConfig) escapeHTML(encoderExtension EncoderExtension) { + encoderExtension[reflect2.TypeOfPtr((*string)(nil)).Elem()] = &htmlEscapedStringEncoder{} +} + +func (cfg *frozenConfig) cleanDecoders() { + typeDecoders = map[string]ValDecoder{} + fieldDecoders = map[string]ValDecoder{} + *cfg = *(cfg.configBeforeFrozen.Froze().(*frozenConfig)) +} + +func (cfg *frozenConfig) cleanEncoders() { + typeEncoders = map[string]ValEncoder{} + fieldEncoders = map[string]ValEncoder{} + *cfg = *(cfg.configBeforeFrozen.Froze().(*frozenConfig)) +} + +func (cfg *frozenConfig) MarshalToString(v interface{}) (string, error) { + stream := cfg.BorrowStream(nil) + defer cfg.ReturnStream(stream) + stream.WriteVal(v) + if stream.Error != nil { + return "", stream.Error + } + return string(stream.Buffer()), nil +} + +func (cfg *frozenConfig) Marshal(v interface{}) ([]byte, error) { + stream := cfg.BorrowStream(nil) + defer cfg.ReturnStream(stream) + stream.WriteVal(v) + if stream.Error != nil { + return nil, stream.Error + } + result := stream.Buffer() + copied := make([]byte, len(result)) + copy(copied, result) + return copied, nil +} + +func (cfg *frozenConfig) MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) { + if prefix != "" { + panic("prefix is not supported") + } + for _, r := range indent { + if r != ' ' { + panic("indent can only be space") + } + } + newCfg := cfg.configBeforeFrozen + newCfg.IndentionStep = len(indent) + return newCfg.frozeWithCacheReuse(cfg.extraExtensions).Marshal(v) +} + +func (cfg *frozenConfig) UnmarshalFromString(str string, v interface{}) error { + data := []byte(str) + iter := cfg.BorrowIterator(data) + defer cfg.ReturnIterator(iter) + iter.ReadVal(v) + c := iter.nextToken() + if c == 0 { + if iter.Error == io.EOF { + return nil + } + return iter.Error + } + iter.ReportError("Unmarshal", "there are bytes left after unmarshal") + return iter.Error +} + +func (cfg *frozenConfig) Get(data []byte, path ...interface{}) Any { + iter := cfg.BorrowIterator(data) + defer cfg.ReturnIterator(iter) + return locatePath(iter, path) +} + +func (cfg *frozenConfig) Unmarshal(data []byte, v interface{}) error { + iter := cfg.BorrowIterator(data) + defer cfg.ReturnIterator(iter) + iter.ReadVal(v) + c := iter.nextToken() + if c == 0 { + if iter.Error == io.EOF { + return nil + } + return iter.Error + } + iter.ReportError("Unmarshal", "there are bytes left after unmarshal") + return iter.Error +} + +func (cfg *frozenConfig) NewEncoder(writer io.Writer) *Encoder { + stream := NewStream(cfg, writer, 512) + return &Encoder{stream} +} + +func (cfg *frozenConfig) NewDecoder(reader io.Reader) *Decoder { + iter := Parse(cfg, reader, 512) + return &Decoder{iter} +} + +func (cfg *frozenConfig) Valid(data []byte) bool { + iter := cfg.BorrowIterator(data) + defer cfg.ReturnIterator(iter) + iter.Skip() + return iter.Error == nil +} diff --git a/vendor/github.com/json-iterator/go/fuzzy_mode_convert_table.md b/vendor/github.com/json-iterator/go/fuzzy_mode_convert_table.md new file mode 100644 index 000000000..3095662b0 --- /dev/null +++ b/vendor/github.com/json-iterator/go/fuzzy_mode_convert_table.md @@ -0,0 +1,7 @@ +| json type \ dest type | bool | int | uint | float |string| +| --- | --- | --- | --- |--|--| +| number | positive => true
negative => true
zero => false| 23.2 => 23
-32.1 => -32| 12.1 => 12
-12.1 => 0|as normal|same as origin| +| string | empty string => false
string "0" => false
other strings => true | "123.32" => 123
"-123.4" => -123
"123.23xxxw" => 123
"abcde12" => 0
"-32.1" => -32| 13.2 => 13
-1.1 => 0 |12.1 => 12.1
-12.3 => -12.3
12.4xxa => 12.4
+1.1e2 =>110 |same as origin| +| bool | true => true
false => false| true => 1
false => 0 | true => 1
false => 0 |true => 1
false => 0|true => "true"
false => "false"| +| object | true | 0 | 0 |0|originnal json| +| array | empty array => false
nonempty array => true| [] => 0
[1,2] => 1 | [] => 0
[1,2] => 1 |[] => 0
[1,2] => 1|original json| \ No newline at end of file diff --git a/vendor/github.com/json-iterator/go/iter.go b/vendor/github.com/json-iterator/go/iter.go new file mode 100644 index 000000000..95ae54fbf --- /dev/null +++ b/vendor/github.com/json-iterator/go/iter.go @@ -0,0 +1,322 @@ +package jsoniter + +import ( + "encoding/json" + "fmt" + "io" +) + +// ValueType the type for JSON element +type ValueType int + +const ( + // InvalidValue invalid JSON element + InvalidValue ValueType = iota + // StringValue JSON element "string" + StringValue + // NumberValue JSON element 100 or 0.10 + NumberValue + // NilValue JSON element null + NilValue + // BoolValue JSON element true or false + BoolValue + // ArrayValue JSON element [] + ArrayValue + // ObjectValue JSON element {} + ObjectValue +) + +var hexDigits []byte +var valueTypes []ValueType + +func init() { + hexDigits = make([]byte, 256) + for i := 0; i < len(hexDigits); i++ { + hexDigits[i] = 255 + } + for i := '0'; i <= '9'; i++ { + hexDigits[i] = byte(i - '0') + } + for i := 'a'; i <= 'f'; i++ { + hexDigits[i] = byte((i - 'a') + 10) + } + for i := 'A'; i <= 'F'; i++ { + hexDigits[i] = byte((i - 'A') + 10) + } + valueTypes = make([]ValueType, 256) + for i := 0; i < len(valueTypes); i++ { + valueTypes[i] = InvalidValue + } + valueTypes['"'] = StringValue + valueTypes['-'] = NumberValue + valueTypes['0'] = NumberValue + valueTypes['1'] = NumberValue + valueTypes['2'] = NumberValue + valueTypes['3'] = NumberValue + valueTypes['4'] = NumberValue + valueTypes['5'] = NumberValue + valueTypes['6'] = NumberValue + valueTypes['7'] = NumberValue + valueTypes['8'] = NumberValue + valueTypes['9'] = NumberValue + valueTypes['t'] = BoolValue + valueTypes['f'] = BoolValue + valueTypes['n'] = NilValue + valueTypes['['] = ArrayValue + valueTypes['{'] = ObjectValue +} + +// Iterator is a io.Reader like object, with JSON specific read functions. +// Error is not returned as return value, but stored as Error member on this iterator instance. +type Iterator struct { + cfg *frozenConfig + reader io.Reader + buf []byte + head int + tail int + captureStartedAt int + captured []byte + Error error + Attachment interface{} // open for customized decoder +} + +// NewIterator creates an empty Iterator instance +func NewIterator(cfg API) *Iterator { + return &Iterator{ + cfg: cfg.(*frozenConfig), + reader: nil, + buf: nil, + head: 0, + tail: 0, + } +} + +// Parse creates an Iterator instance from io.Reader +func Parse(cfg API, reader io.Reader, bufSize int) *Iterator { + return &Iterator{ + cfg: cfg.(*frozenConfig), + reader: reader, + buf: make([]byte, bufSize), + head: 0, + tail: 0, + } +} + +// ParseBytes creates an Iterator instance from byte array +func ParseBytes(cfg API, input []byte) *Iterator { + return &Iterator{ + cfg: cfg.(*frozenConfig), + reader: nil, + buf: input, + head: 0, + tail: len(input), + } +} + +// ParseString creates an Iterator instance from string +func ParseString(cfg API, input string) *Iterator { + return ParseBytes(cfg, []byte(input)) +} + +// Pool returns a pool can provide more iterator with same configuration +func (iter *Iterator) Pool() IteratorPool { + return iter.cfg +} + +// Reset reuse iterator instance by specifying another reader +func (iter *Iterator) Reset(reader io.Reader) *Iterator { + iter.reader = reader + iter.head = 0 + iter.tail = 0 + return iter +} + +// ResetBytes reuse iterator instance by specifying another byte array as input +func (iter *Iterator) ResetBytes(input []byte) *Iterator { + iter.reader = nil + iter.buf = input + iter.head = 0 + iter.tail = len(input) + return iter +} + +// WhatIsNext gets ValueType of relatively next json element +func (iter *Iterator) WhatIsNext() ValueType { + valueType := valueTypes[iter.nextToken()] + iter.unreadByte() + return valueType +} + +func (iter *Iterator) skipWhitespacesWithoutLoadMore() bool { + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + switch c { + case ' ', '\n', '\t', '\r': + continue + } + iter.head = i + return false + } + return true +} + +func (iter *Iterator) isObjectEnd() bool { + c := iter.nextToken() + if c == ',' { + return false + } + if c == '}' { + return true + } + iter.ReportError("isObjectEnd", "object ended prematurely, unexpected char "+string([]byte{c})) + return true +} + +func (iter *Iterator) nextToken() byte { + // a variation of skip whitespaces, returning the next non-whitespace token + for { + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + switch c { + case ' ', '\n', '\t', '\r': + continue + } + iter.head = i + 1 + return c + } + if !iter.loadMore() { + return 0 + } + } +} + +// ReportError record a error in iterator instance with current position. +func (iter *Iterator) ReportError(operation string, msg string) { + if iter.Error != nil { + if iter.Error != io.EOF { + return + } + } + peekStart := iter.head - 10 + if peekStart < 0 { + peekStart = 0 + } + peekEnd := iter.head + 10 + if peekEnd > iter.tail { + peekEnd = iter.tail + } + parsing := string(iter.buf[peekStart:peekEnd]) + contextStart := iter.head - 50 + if contextStart < 0 { + contextStart = 0 + } + contextEnd := iter.head + 50 + if contextEnd > iter.tail { + contextEnd = iter.tail + } + context := string(iter.buf[contextStart:contextEnd]) + iter.Error = fmt.Errorf("%s: %s, error found in #%v byte of ...|%s|..., bigger context ...|%s|...", + operation, msg, iter.head-peekStart, parsing, context) +} + +// CurrentBuffer gets current buffer as string for debugging purpose +func (iter *Iterator) CurrentBuffer() string { + peekStart := iter.head - 10 + if peekStart < 0 { + peekStart = 0 + } + return fmt.Sprintf("parsing #%v byte, around ...|%s|..., whole buffer ...|%s|...", iter.head, + string(iter.buf[peekStart:iter.head]), string(iter.buf[0:iter.tail])) +} + +func (iter *Iterator) readByte() (ret byte) { + if iter.head == iter.tail { + if iter.loadMore() { + ret = iter.buf[iter.head] + iter.head++ + return ret + } + return 0 + } + ret = iter.buf[iter.head] + iter.head++ + return ret +} + +func (iter *Iterator) loadMore() bool { + if iter.reader == nil { + if iter.Error == nil { + iter.head = iter.tail + iter.Error = io.EOF + } + return false + } + if iter.captured != nil { + iter.captured = append(iter.captured, + iter.buf[iter.captureStartedAt:iter.tail]...) + iter.captureStartedAt = 0 + } + for { + n, err := iter.reader.Read(iter.buf) + if n == 0 { + if err != nil { + if iter.Error == nil { + iter.Error = err + } + return false + } + } else { + iter.head = 0 + iter.tail = n + return true + } + } +} + +func (iter *Iterator) unreadByte() { + if iter.Error != nil { + return + } + iter.head-- + return +} + +// Read read the next JSON element as generic interface{}. +func (iter *Iterator) Read() interface{} { + valueType := iter.WhatIsNext() + switch valueType { + case StringValue: + return iter.ReadString() + case NumberValue: + if iter.cfg.configBeforeFrozen.UseNumber { + return json.Number(iter.readNumberAsString()) + } + return iter.ReadFloat64() + case NilValue: + iter.skipFourBytes('n', 'u', 'l', 'l') + return nil + case BoolValue: + return iter.ReadBool() + case ArrayValue: + arr := []interface{}{} + iter.ReadArrayCB(func(iter *Iterator) bool { + var elem interface{} + iter.ReadVal(&elem) + arr = append(arr, elem) + return true + }) + return arr + case ObjectValue: + obj := map[string]interface{}{} + iter.ReadMapCB(func(Iter *Iterator, field string) bool { + var elem interface{} + iter.ReadVal(&elem) + obj[field] = elem + return true + }) + return obj + default: + iter.ReportError("Read", fmt.Sprintf("unexpected value type: %v", valueType)) + return nil + } +} diff --git a/vendor/github.com/json-iterator/go/iter_array.go b/vendor/github.com/json-iterator/go/iter_array.go new file mode 100644 index 000000000..6188cb457 --- /dev/null +++ b/vendor/github.com/json-iterator/go/iter_array.go @@ -0,0 +1,58 @@ +package jsoniter + +// ReadArray read array element, tells if the array has more element to read. +func (iter *Iterator) ReadArray() (ret bool) { + c := iter.nextToken() + switch c { + case 'n': + iter.skipThreeBytes('u', 'l', 'l') + return false // null + case '[': + c = iter.nextToken() + if c != ']' { + iter.unreadByte() + return true + } + return false + case ']': + return false + case ',': + return true + default: + iter.ReportError("ReadArray", "expect [ or , or ] or n, but found "+string([]byte{c})) + return + } +} + +// ReadArrayCB read array with callback +func (iter *Iterator) ReadArrayCB(callback func(*Iterator) bool) (ret bool) { + c := iter.nextToken() + if c == '[' { + c = iter.nextToken() + if c != ']' { + iter.unreadByte() + if !callback(iter) { + return false + } + c = iter.nextToken() + for c == ',' { + if !callback(iter) { + return false + } + c = iter.nextToken() + } + if c != ']' { + iter.ReportError("ReadArrayCB", "expect ] in the end, but found "+string([]byte{c})) + return false + } + return true + } + return true + } + if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') + return true // null + } + iter.ReportError("ReadArrayCB", "expect [ or n, but found "+string([]byte{c})) + return false +} diff --git a/vendor/github.com/json-iterator/go/iter_float.go b/vendor/github.com/json-iterator/go/iter_float.go new file mode 100644 index 000000000..4f883c095 --- /dev/null +++ b/vendor/github.com/json-iterator/go/iter_float.go @@ -0,0 +1,347 @@ +package jsoniter + +import ( + "encoding/json" + "io" + "math/big" + "strconv" + "strings" + "unsafe" +) + +var floatDigits []int8 + +const invalidCharForNumber = int8(-1) +const endOfNumber = int8(-2) +const dotInNumber = int8(-3) + +func init() { + floatDigits = make([]int8, 256) + for i := 0; i < len(floatDigits); i++ { + floatDigits[i] = invalidCharForNumber + } + for i := int8('0'); i <= int8('9'); i++ { + floatDigits[i] = i - int8('0') + } + floatDigits[','] = endOfNumber + floatDigits[']'] = endOfNumber + floatDigits['}'] = endOfNumber + floatDigits[' '] = endOfNumber + floatDigits['\t'] = endOfNumber + floatDigits['\n'] = endOfNumber + floatDigits['.'] = dotInNumber +} + +// ReadBigFloat read big.Float +func (iter *Iterator) ReadBigFloat() (ret *big.Float) { + str := iter.readNumberAsString() + if iter.Error != nil && iter.Error != io.EOF { + return nil + } + prec := 64 + if len(str) > prec { + prec = len(str) + } + val, _, err := big.ParseFloat(str, 10, uint(prec), big.ToZero) + if err != nil { + iter.Error = err + return nil + } + return val +} + +// ReadBigInt read big.Int +func (iter *Iterator) ReadBigInt() (ret *big.Int) { + str := iter.readNumberAsString() + if iter.Error != nil && iter.Error != io.EOF { + return nil + } + ret = big.NewInt(0) + var success bool + ret, success = ret.SetString(str, 10) + if !success { + iter.ReportError("ReadBigInt", "invalid big int") + return nil + } + return ret +} + +//ReadFloat32 read float32 +func (iter *Iterator) ReadFloat32() (ret float32) { + c := iter.nextToken() + if c == '-' { + return -iter.readPositiveFloat32() + } + iter.unreadByte() + return iter.readPositiveFloat32() +} + +func (iter *Iterator) readPositiveFloat32() (ret float32) { + value := uint64(0) + c := byte(' ') + i := iter.head + // first char + if i == iter.tail { + return iter.readFloat32SlowPath() + } + c = iter.buf[i] + i++ + ind := floatDigits[c] + switch ind { + case invalidCharForNumber: + return iter.readFloat32SlowPath() + case endOfNumber: + iter.ReportError("readFloat32", "empty number") + return + case dotInNumber: + iter.ReportError("readFloat32", "leading dot is invalid") + return + case 0: + if i == iter.tail { + return iter.readFloat32SlowPath() + } + c = iter.buf[i] + switch c { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + iter.ReportError("readFloat32", "leading zero is invalid") + return + } + } + value = uint64(ind) + // chars before dot +non_decimal_loop: + for ; i < iter.tail; i++ { + c = iter.buf[i] + ind := floatDigits[c] + switch ind { + case invalidCharForNumber: + return iter.readFloat32SlowPath() + case endOfNumber: + iter.head = i + return float32(value) + case dotInNumber: + break non_decimal_loop + } + if value > uint64SafeToMultiple10 { + return iter.readFloat32SlowPath() + } + value = (value << 3) + (value << 1) + uint64(ind) // value = value * 10 + ind; + } + // chars after dot + if c == '.' { + i++ + decimalPlaces := 0 + if i == iter.tail { + return iter.readFloat32SlowPath() + } + for ; i < iter.tail; i++ { + c = iter.buf[i] + ind := floatDigits[c] + switch ind { + case endOfNumber: + if decimalPlaces > 0 && decimalPlaces < len(pow10) { + iter.head = i + return float32(float64(value) / float64(pow10[decimalPlaces])) + } + // too many decimal places + return iter.readFloat32SlowPath() + case invalidCharForNumber: + fallthrough + case dotInNumber: + return iter.readFloat32SlowPath() + } + decimalPlaces++ + if value > uint64SafeToMultiple10 { + return iter.readFloat32SlowPath() + } + value = (value << 3) + (value << 1) + uint64(ind) + } + } + return iter.readFloat32SlowPath() +} + +func (iter *Iterator) readNumberAsString() (ret string) { + strBuf := [16]byte{} + str := strBuf[0:0] +load_loop: + for { + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + switch c { + case '+', '-', '.', 'e', 'E', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + str = append(str, c) + continue + default: + iter.head = i + break load_loop + } + } + if !iter.loadMore() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + return + } + if len(str) == 0 { + iter.ReportError("readNumberAsString", "invalid number") + } + return *(*string)(unsafe.Pointer(&str)) +} + +func (iter *Iterator) readFloat32SlowPath() (ret float32) { + str := iter.readNumberAsString() + if iter.Error != nil && iter.Error != io.EOF { + return + } + errMsg := validateFloat(str) + if errMsg != "" { + iter.ReportError("readFloat32SlowPath", errMsg) + return + } + val, err := strconv.ParseFloat(str, 32) + if err != nil { + iter.Error = err + return + } + return float32(val) +} + +// ReadFloat64 read float64 +func (iter *Iterator) ReadFloat64() (ret float64) { + c := iter.nextToken() + if c == '-' { + return -iter.readPositiveFloat64() + } + iter.unreadByte() + return iter.readPositiveFloat64() +} + +func (iter *Iterator) readPositiveFloat64() (ret float64) { + value := uint64(0) + c := byte(' ') + i := iter.head + // first char + if i == iter.tail { + return iter.readFloat64SlowPath() + } + c = iter.buf[i] + i++ + ind := floatDigits[c] + switch ind { + case invalidCharForNumber: + return iter.readFloat64SlowPath() + case endOfNumber: + iter.ReportError("readFloat64", "empty number") + return + case dotInNumber: + iter.ReportError("readFloat64", "leading dot is invalid") + return + case 0: + if i == iter.tail { + return iter.readFloat64SlowPath() + } + c = iter.buf[i] + switch c { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + iter.ReportError("readFloat64", "leading zero is invalid") + return + } + } + value = uint64(ind) + // chars before dot +non_decimal_loop: + for ; i < iter.tail; i++ { + c = iter.buf[i] + ind := floatDigits[c] + switch ind { + case invalidCharForNumber: + return iter.readFloat64SlowPath() + case endOfNumber: + iter.head = i + return float64(value) + case dotInNumber: + break non_decimal_loop + } + if value > uint64SafeToMultiple10 { + return iter.readFloat64SlowPath() + } + value = (value << 3) + (value << 1) + uint64(ind) // value = value * 10 + ind; + } + // chars after dot + if c == '.' { + i++ + decimalPlaces := 0 + if i == iter.tail { + return iter.readFloat64SlowPath() + } + for ; i < iter.tail; i++ { + c = iter.buf[i] + ind := floatDigits[c] + switch ind { + case endOfNumber: + if decimalPlaces > 0 && decimalPlaces < len(pow10) { + iter.head = i + return float64(value) / float64(pow10[decimalPlaces]) + } + // too many decimal places + return iter.readFloat64SlowPath() + case invalidCharForNumber: + fallthrough + case dotInNumber: + return iter.readFloat64SlowPath() + } + decimalPlaces++ + if value > uint64SafeToMultiple10 { + return iter.readFloat64SlowPath() + } + value = (value << 3) + (value << 1) + uint64(ind) + } + } + return iter.readFloat64SlowPath() +} + +func (iter *Iterator) readFloat64SlowPath() (ret float64) { + str := iter.readNumberAsString() + if iter.Error != nil && iter.Error != io.EOF { + return + } + errMsg := validateFloat(str) + if errMsg != "" { + iter.ReportError("readFloat64SlowPath", errMsg) + return + } + val, err := strconv.ParseFloat(str, 64) + if err != nil { + iter.Error = err + return + } + return val +} + +func validateFloat(str string) string { + // strconv.ParseFloat is not validating `1.` or `1.e1` + if len(str) == 0 { + return "empty number" + } + if str[0] == '-' { + return "-- is not valid" + } + dotPos := strings.IndexByte(str, '.') + if dotPos != -1 { + if dotPos == len(str)-1 { + return "dot can not be last character" + } + switch str[dotPos+1] { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + default: + return "missing digit after dot" + } + } + return "" +} + +// ReadNumber read json.Number +func (iter *Iterator) ReadNumber() (ret json.Number) { + return json.Number(iter.readNumberAsString()) +} diff --git a/vendor/github.com/json-iterator/go/iter_int.go b/vendor/github.com/json-iterator/go/iter_int.go new file mode 100644 index 000000000..214232035 --- /dev/null +++ b/vendor/github.com/json-iterator/go/iter_int.go @@ -0,0 +1,345 @@ +package jsoniter + +import ( + "math" + "strconv" +) + +var intDigits []int8 + +const uint32SafeToMultiply10 = uint32(0xffffffff)/10 - 1 +const uint64SafeToMultiple10 = uint64(0xffffffffffffffff)/10 - 1 + +func init() { + intDigits = make([]int8, 256) + for i := 0; i < len(intDigits); i++ { + intDigits[i] = invalidCharForNumber + } + for i := int8('0'); i <= int8('9'); i++ { + intDigits[i] = i - int8('0') + } +} + +// ReadUint read uint +func (iter *Iterator) ReadUint() uint { + if strconv.IntSize == 32 { + return uint(iter.ReadUint32()) + } + return uint(iter.ReadUint64()) +} + +// ReadInt read int +func (iter *Iterator) ReadInt() int { + if strconv.IntSize == 32 { + return int(iter.ReadInt32()) + } + return int(iter.ReadInt64()) +} + +// ReadInt8 read int8 +func (iter *Iterator) ReadInt8() (ret int8) { + c := iter.nextToken() + if c == '-' { + val := iter.readUint32(iter.readByte()) + if val > math.MaxInt8+1 { + iter.ReportError("ReadInt8", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return -int8(val) + } + val := iter.readUint32(c) + if val > math.MaxInt8 { + iter.ReportError("ReadInt8", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return int8(val) +} + +// ReadUint8 read uint8 +func (iter *Iterator) ReadUint8() (ret uint8) { + val := iter.readUint32(iter.nextToken()) + if val > math.MaxUint8 { + iter.ReportError("ReadUint8", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return uint8(val) +} + +// ReadInt16 read int16 +func (iter *Iterator) ReadInt16() (ret int16) { + c := iter.nextToken() + if c == '-' { + val := iter.readUint32(iter.readByte()) + if val > math.MaxInt16+1 { + iter.ReportError("ReadInt16", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return -int16(val) + } + val := iter.readUint32(c) + if val > math.MaxInt16 { + iter.ReportError("ReadInt16", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return int16(val) +} + +// ReadUint16 read uint16 +func (iter *Iterator) ReadUint16() (ret uint16) { + val := iter.readUint32(iter.nextToken()) + if val > math.MaxUint16 { + iter.ReportError("ReadUint16", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return uint16(val) +} + +// ReadInt32 read int32 +func (iter *Iterator) ReadInt32() (ret int32) { + c := iter.nextToken() + if c == '-' { + val := iter.readUint32(iter.readByte()) + if val > math.MaxInt32+1 { + iter.ReportError("ReadInt32", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return -int32(val) + } + val := iter.readUint32(c) + if val > math.MaxInt32 { + iter.ReportError("ReadInt32", "overflow: "+strconv.FormatInt(int64(val), 10)) + return + } + return int32(val) +} + +// ReadUint32 read uint32 +func (iter *Iterator) ReadUint32() (ret uint32) { + return iter.readUint32(iter.nextToken()) +} + +func (iter *Iterator) readUint32(c byte) (ret uint32) { + ind := intDigits[c] + if ind == 0 { + iter.assertInteger() + return 0 // single zero + } + if ind == invalidCharForNumber { + iter.ReportError("readUint32", "unexpected character: "+string([]byte{byte(ind)})) + return + } + value := uint32(ind) + if iter.tail-iter.head > 10 { + i := iter.head + ind2 := intDigits[iter.buf[i]] + if ind2 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value + } + i++ + ind3 := intDigits[iter.buf[i]] + if ind3 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value*10 + uint32(ind2) + } + //iter.head = i + 1 + //value = value * 100 + uint32(ind2) * 10 + uint32(ind3) + i++ + ind4 := intDigits[iter.buf[i]] + if ind4 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value*100 + uint32(ind2)*10 + uint32(ind3) + } + i++ + ind5 := intDigits[iter.buf[i]] + if ind5 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value*1000 + uint32(ind2)*100 + uint32(ind3)*10 + uint32(ind4) + } + i++ + ind6 := intDigits[iter.buf[i]] + if ind6 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value*10000 + uint32(ind2)*1000 + uint32(ind3)*100 + uint32(ind4)*10 + uint32(ind5) + } + i++ + ind7 := intDigits[iter.buf[i]] + if ind7 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value*100000 + uint32(ind2)*10000 + uint32(ind3)*1000 + uint32(ind4)*100 + uint32(ind5)*10 + uint32(ind6) + } + i++ + ind8 := intDigits[iter.buf[i]] + if ind8 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value*1000000 + uint32(ind2)*100000 + uint32(ind3)*10000 + uint32(ind4)*1000 + uint32(ind5)*100 + uint32(ind6)*10 + uint32(ind7) + } + i++ + ind9 := intDigits[iter.buf[i]] + value = value*10000000 + uint32(ind2)*1000000 + uint32(ind3)*100000 + uint32(ind4)*10000 + uint32(ind5)*1000 + uint32(ind6)*100 + uint32(ind7)*10 + uint32(ind8) + iter.head = i + if ind9 == invalidCharForNumber { + iter.assertInteger() + return value + } + } + for { + for i := iter.head; i < iter.tail; i++ { + ind = intDigits[iter.buf[i]] + if ind == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value + } + if value > uint32SafeToMultiply10 { + value2 := (value << 3) + (value << 1) + uint32(ind) + if value2 < value { + iter.ReportError("readUint32", "overflow") + return + } + value = value2 + continue + } + value = (value << 3) + (value << 1) + uint32(ind) + } + if !iter.loadMore() { + iter.assertInteger() + return value + } + } +} + +// ReadInt64 read int64 +func (iter *Iterator) ReadInt64() (ret int64) { + c := iter.nextToken() + if c == '-' { + val := iter.readUint64(iter.readByte()) + if val > math.MaxInt64+1 { + iter.ReportError("ReadInt64", "overflow: "+strconv.FormatUint(uint64(val), 10)) + return + } + return -int64(val) + } + val := iter.readUint64(c) + if val > math.MaxInt64 { + iter.ReportError("ReadInt64", "overflow: "+strconv.FormatUint(uint64(val), 10)) + return + } + return int64(val) +} + +// ReadUint64 read uint64 +func (iter *Iterator) ReadUint64() uint64 { + return iter.readUint64(iter.nextToken()) +} + +func (iter *Iterator) readUint64(c byte) (ret uint64) { + ind := intDigits[c] + if ind == 0 { + iter.assertInteger() + return 0 // single zero + } + if ind == invalidCharForNumber { + iter.ReportError("readUint64", "unexpected character: "+string([]byte{byte(ind)})) + return + } + value := uint64(ind) + if iter.tail-iter.head > 10 { + i := iter.head + ind2 := intDigits[iter.buf[i]] + if ind2 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value + } + i++ + ind3 := intDigits[iter.buf[i]] + if ind3 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value*10 + uint64(ind2) + } + //iter.head = i + 1 + //value = value * 100 + uint32(ind2) * 10 + uint32(ind3) + i++ + ind4 := intDigits[iter.buf[i]] + if ind4 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value*100 + uint64(ind2)*10 + uint64(ind3) + } + i++ + ind5 := intDigits[iter.buf[i]] + if ind5 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value*1000 + uint64(ind2)*100 + uint64(ind3)*10 + uint64(ind4) + } + i++ + ind6 := intDigits[iter.buf[i]] + if ind6 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value*10000 + uint64(ind2)*1000 + uint64(ind3)*100 + uint64(ind4)*10 + uint64(ind5) + } + i++ + ind7 := intDigits[iter.buf[i]] + if ind7 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value*100000 + uint64(ind2)*10000 + uint64(ind3)*1000 + uint64(ind4)*100 + uint64(ind5)*10 + uint64(ind6) + } + i++ + ind8 := intDigits[iter.buf[i]] + if ind8 == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value*1000000 + uint64(ind2)*100000 + uint64(ind3)*10000 + uint64(ind4)*1000 + uint64(ind5)*100 + uint64(ind6)*10 + uint64(ind7) + } + i++ + ind9 := intDigits[iter.buf[i]] + value = value*10000000 + uint64(ind2)*1000000 + uint64(ind3)*100000 + uint64(ind4)*10000 + uint64(ind5)*1000 + uint64(ind6)*100 + uint64(ind7)*10 + uint64(ind8) + iter.head = i + if ind9 == invalidCharForNumber { + iter.assertInteger() + return value + } + } + for { + for i := iter.head; i < iter.tail; i++ { + ind = intDigits[iter.buf[i]] + if ind == invalidCharForNumber { + iter.head = i + iter.assertInteger() + return value + } + if value > uint64SafeToMultiple10 { + value2 := (value << 3) + (value << 1) + uint64(ind) + if value2 < value { + iter.ReportError("readUint64", "overflow") + return + } + value = value2 + continue + } + value = (value << 3) + (value << 1) + uint64(ind) + } + if !iter.loadMore() { + iter.assertInteger() + return value + } + } +} + +func (iter *Iterator) assertInteger() { + if iter.head < len(iter.buf) && iter.buf[iter.head] == '.' { + iter.ReportError("assertInteger", "can not decode float as int") + } +} diff --git a/vendor/github.com/json-iterator/go/iter_object.go b/vendor/github.com/json-iterator/go/iter_object.go new file mode 100644 index 000000000..1c5757671 --- /dev/null +++ b/vendor/github.com/json-iterator/go/iter_object.go @@ -0,0 +1,251 @@ +package jsoniter + +import ( + "fmt" + "strings" +) + +// ReadObject read one field from object. +// If object ended, returns empty string. +// Otherwise, returns the field name. +func (iter *Iterator) ReadObject() (ret string) { + c := iter.nextToken() + switch c { + case 'n': + iter.skipThreeBytes('u', 'l', 'l') + return "" // null + case '{': + c = iter.nextToken() + if c == '"' { + iter.unreadByte() + field := iter.ReadString() + c = iter.nextToken() + if c != ':' { + iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c})) + } + return field + } + if c == '}' { + return "" // end of object + } + iter.ReportError("ReadObject", `expect " after {, but found `+string([]byte{c})) + return + case ',': + field := iter.ReadString() + c = iter.nextToken() + if c != ':' { + iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c})) + } + return field + case '}': + return "" // end of object + default: + iter.ReportError("ReadObject", fmt.Sprintf(`expect { or , or } or n, but found %s`, string([]byte{c}))) + return + } +} + +// CaseInsensitive +func (iter *Iterator) readFieldHash() int64 { + hash := int64(0x811c9dc5) + c := iter.nextToken() + if c != '"' { + iter.ReportError("readFieldHash", `expect ", but found `+string([]byte{c})) + return 0 + } + for { + for i := iter.head; i < iter.tail; i++ { + // require ascii string and no escape + b := iter.buf[i] + if b == '\\' { + iter.head = i + for _, b := range iter.readStringSlowPath() { + if 'A' <= b && b <= 'Z' && !iter.cfg.caseSensitive { + b += 'a' - 'A' + } + hash ^= int64(b) + hash *= 0x1000193 + } + c = iter.nextToken() + if c != ':' { + iter.ReportError("readFieldHash", `expect :, but found `+string([]byte{c})) + return 0 + } + return hash + } + if b == '"' { + iter.head = i + 1 + c = iter.nextToken() + if c != ':' { + iter.ReportError("readFieldHash", `expect :, but found `+string([]byte{c})) + return 0 + } + return hash + } + if 'A' <= b && b <= 'Z' && !iter.cfg.caseSensitive { + b += 'a' - 'A' + } + hash ^= int64(b) + hash *= 0x1000193 + } + if !iter.loadMore() { + iter.ReportError("readFieldHash", `incomplete field name`) + return 0 + } + } +} + +func calcHash(str string, caseSensitive bool) int64 { + if !caseSensitive { + str = strings.ToLower(str) + } + hash := int64(0x811c9dc5) + for _, b := range []byte(str) { + hash ^= int64(b) + hash *= 0x1000193 + } + return int64(hash) +} + +// ReadObjectCB read object with callback, the key is ascii only and field name not copied +func (iter *Iterator) ReadObjectCB(callback func(*Iterator, string) bool) bool { + c := iter.nextToken() + var field string + if c == '{' { + c = iter.nextToken() + if c == '"' { + iter.unreadByte() + field = iter.ReadString() + c = iter.nextToken() + if c != ':' { + iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c})) + } + if !callback(iter, field) { + return false + } + c = iter.nextToken() + for c == ',' { + field = iter.ReadString() + c = iter.nextToken() + if c != ':' { + iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c})) + } + if !callback(iter, field) { + return false + } + c = iter.nextToken() + } + if c != '}' { + iter.ReportError("ReadObjectCB", `object not ended with }`) + return false + } + return true + } + if c == '}' { + return true + } + iter.ReportError("ReadObjectCB", `expect " after }, but found `+string([]byte{c})) + return false + } + if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') + return true // null + } + iter.ReportError("ReadObjectCB", `expect { or n, but found `+string([]byte{c})) + return false +} + +// ReadMapCB read map with callback, the key can be any string +func (iter *Iterator) ReadMapCB(callback func(*Iterator, string) bool) bool { + c := iter.nextToken() + if c == '{' { + c = iter.nextToken() + if c == '"' { + iter.unreadByte() + field := iter.ReadString() + if iter.nextToken() != ':' { + iter.ReportError("ReadMapCB", "expect : after object field, but found "+string([]byte{c})) + return false + } + if !callback(iter, field) { + return false + } + c = iter.nextToken() + for c == ',' { + field = iter.ReadString() + if iter.nextToken() != ':' { + iter.ReportError("ReadMapCB", "expect : after object field, but found "+string([]byte{c})) + return false + } + if !callback(iter, field) { + return false + } + c = iter.nextToken() + } + if c != '}' { + iter.ReportError("ReadMapCB", `object not ended with }`) + return false + } + return true + } + if c == '}' { + return true + } + iter.ReportError("ReadMapCB", `expect " after }, but found `+string([]byte{c})) + return false + } + if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') + return true // null + } + iter.ReportError("ReadMapCB", `expect { or n, but found `+string([]byte{c})) + return false +} + +func (iter *Iterator) readObjectStart() bool { + c := iter.nextToken() + if c == '{' { + c = iter.nextToken() + if c == '}' { + return false + } + iter.unreadByte() + return true + } else if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') + return false + } + iter.ReportError("readObjectStart", "expect { or n, but found "+string([]byte{c})) + return false +} + +func (iter *Iterator) readObjectFieldAsBytes() (ret []byte) { + str := iter.ReadStringAsSlice() + if iter.skipWhitespacesWithoutLoadMore() { + if ret == nil { + ret = make([]byte, len(str)) + copy(ret, str) + } + if !iter.loadMore() { + return + } + } + if iter.buf[iter.head] != ':' { + iter.ReportError("readObjectFieldAsBytes", "expect : after object field, but found "+string([]byte{iter.buf[iter.head]})) + return + } + iter.head++ + if iter.skipWhitespacesWithoutLoadMore() { + if ret == nil { + ret = make([]byte, len(str)) + copy(ret, str) + } + if !iter.loadMore() { + return + } + } + if ret == nil { + return str + } + return ret +} diff --git a/vendor/github.com/json-iterator/go/iter_skip.go b/vendor/github.com/json-iterator/go/iter_skip.go new file mode 100644 index 000000000..f58beb913 --- /dev/null +++ b/vendor/github.com/json-iterator/go/iter_skip.go @@ -0,0 +1,129 @@ +package jsoniter + +import "fmt" + +// ReadNil reads a json object as nil and +// returns whether it's a nil or not +func (iter *Iterator) ReadNil() (ret bool) { + c := iter.nextToken() + if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') // null + return true + } + iter.unreadByte() + return false +} + +// ReadBool reads a json object as BoolValue +func (iter *Iterator) ReadBool() (ret bool) { + c := iter.nextToken() + if c == 't' { + iter.skipThreeBytes('r', 'u', 'e') + return true + } + if c == 'f' { + iter.skipFourBytes('a', 'l', 's', 'e') + return false + } + iter.ReportError("ReadBool", "expect t or f, but found "+string([]byte{c})) + return +} + +// SkipAndReturnBytes skip next JSON element, and return its content as []byte. +// The []byte can be kept, it is a copy of data. +func (iter *Iterator) SkipAndReturnBytes() []byte { + iter.startCapture(iter.head) + iter.Skip() + return iter.stopCapture() +} + +type captureBuffer struct { + startedAt int + captured []byte +} + +func (iter *Iterator) startCapture(captureStartedAt int) { + if iter.captured != nil { + panic("already in capture mode") + } + iter.captureStartedAt = captureStartedAt + iter.captured = make([]byte, 0, 32) +} + +func (iter *Iterator) stopCapture() []byte { + if iter.captured == nil { + panic("not in capture mode") + } + captured := iter.captured + remaining := iter.buf[iter.captureStartedAt:iter.head] + iter.captureStartedAt = -1 + iter.captured = nil + if len(captured) == 0 { + copied := make([]byte, len(remaining)) + copy(copied, remaining) + return copied + } + captured = append(captured, remaining...) + return captured +} + +// Skip skips a json object and positions to relatively the next json object +func (iter *Iterator) Skip() { + c := iter.nextToken() + switch c { + case '"': + iter.skipString() + case 'n': + iter.skipThreeBytes('u', 'l', 'l') // null + case 't': + iter.skipThreeBytes('r', 'u', 'e') // true + case 'f': + iter.skipFourBytes('a', 'l', 's', 'e') // false + case '0': + iter.unreadByte() + iter.ReadFloat32() + case '-', '1', '2', '3', '4', '5', '6', '7', '8', '9': + iter.skipNumber() + case '[': + iter.skipArray() + case '{': + iter.skipObject() + default: + iter.ReportError("Skip", fmt.Sprintf("do not know how to skip: %v", c)) + return + } +} + +func (iter *Iterator) skipFourBytes(b1, b2, b3, b4 byte) { + if iter.readByte() != b1 { + iter.ReportError("skipFourBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3, b4}))) + return + } + if iter.readByte() != b2 { + iter.ReportError("skipFourBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3, b4}))) + return + } + if iter.readByte() != b3 { + iter.ReportError("skipFourBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3, b4}))) + return + } + if iter.readByte() != b4 { + iter.ReportError("skipFourBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3, b4}))) + return + } +} + +func (iter *Iterator) skipThreeBytes(b1, b2, b3 byte) { + if iter.readByte() != b1 { + iter.ReportError("skipThreeBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3}))) + return + } + if iter.readByte() != b2 { + iter.ReportError("skipThreeBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3}))) + return + } + if iter.readByte() != b3 { + iter.ReportError("skipThreeBytes", fmt.Sprintf("expect %s", string([]byte{b1, b2, b3}))) + return + } +} diff --git a/vendor/github.com/json-iterator/go/iter_skip_sloppy.go b/vendor/github.com/json-iterator/go/iter_skip_sloppy.go new file mode 100644 index 000000000..8fcdc3b69 --- /dev/null +++ b/vendor/github.com/json-iterator/go/iter_skip_sloppy.go @@ -0,0 +1,144 @@ +//+build jsoniter_sloppy + +package jsoniter + +// sloppy but faster implementation, do not validate the input json + +func (iter *Iterator) skipNumber() { + for { + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + switch c { + case ' ', '\n', '\r', '\t', ',', '}', ']': + iter.head = i + return + } + } + if !iter.loadMore() { + return + } + } +} + +func (iter *Iterator) skipArray() { + level := 1 + for { + for i := iter.head; i < iter.tail; i++ { + switch iter.buf[i] { + case '"': // If inside string, skip it + iter.head = i + 1 + iter.skipString() + i = iter.head - 1 // it will be i++ soon + case '[': // If open symbol, increase level + level++ + case ']': // If close symbol, increase level + level-- + + // If we have returned to the original level, we're done + if level == 0 { + iter.head = i + 1 + return + } + } + } + if !iter.loadMore() { + iter.ReportError("skipObject", "incomplete array") + return + } + } +} + +func (iter *Iterator) skipObject() { + level := 1 + for { + for i := iter.head; i < iter.tail; i++ { + switch iter.buf[i] { + case '"': // If inside string, skip it + iter.head = i + 1 + iter.skipString() + i = iter.head - 1 // it will be i++ soon + case '{': // If open symbol, increase level + level++ + case '}': // If close symbol, increase level + level-- + + // If we have returned to the original level, we're done + if level == 0 { + iter.head = i + 1 + return + } + } + } + if !iter.loadMore() { + iter.ReportError("skipObject", "incomplete object") + return + } + } +} + +func (iter *Iterator) skipString() { + for { + end, escaped := iter.findStringEnd() + if end == -1 { + if !iter.loadMore() { + iter.ReportError("skipString", "incomplete string") + return + } + if escaped { + iter.head = 1 // skip the first char as last char read is \ + } + } else { + iter.head = end + return + } + } +} + +// adapted from: https://github.com/buger/jsonparser/blob/master/parser.go +// Tries to find the end of string +// Support if string contains escaped quote symbols. +func (iter *Iterator) findStringEnd() (int, bool) { + escaped := false + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + if c == '"' { + if !escaped { + return i + 1, false + } + j := i - 1 + for { + if j < iter.head || iter.buf[j] != '\\' { + // even number of backslashes + // either end of buffer, or " found + return i + 1, true + } + j-- + if j < iter.head || iter.buf[j] != '\\' { + // odd number of backslashes + // it is \" or \\\" + break + } + j-- + } + } else if c == '\\' { + escaped = true + } + } + j := iter.tail - 1 + for { + if j < iter.head || iter.buf[j] != '\\' { + // even number of backslashes + // either end of buffer, or " found + return -1, false // do not end with \ + } + j-- + if j < iter.head || iter.buf[j] != '\\' { + // odd number of backslashes + // it is \" or \\\" + break + } + j-- + + } + return -1, true // end with \ +} diff --git a/vendor/github.com/json-iterator/go/iter_skip_strict.go b/vendor/github.com/json-iterator/go/iter_skip_strict.go new file mode 100644 index 000000000..f67bc2e83 --- /dev/null +++ b/vendor/github.com/json-iterator/go/iter_skip_strict.go @@ -0,0 +1,89 @@ +//+build !jsoniter_sloppy + +package jsoniter + +import "fmt" + +func (iter *Iterator) skipNumber() { + if !iter.trySkipNumber() { + iter.unreadByte() + iter.ReadFloat32() + } +} + +func (iter *Iterator) trySkipNumber() bool { + dotFound := false + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + switch c { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + case '.': + if dotFound { + iter.ReportError("validateNumber", `more than one dot found in number`) + return true // already failed + } + if i+1 == iter.tail { + return false + } + c = iter.buf[i+1] + switch c { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + default: + iter.ReportError("validateNumber", `missing digit after dot`) + return true // already failed + } + dotFound = true + default: + switch c { + case ',', ']', '}', ' ', '\t', '\n', '\r': + if iter.head == i { + return false // if - without following digits + } + iter.head = i + return true // must be valid + } + return false // may be invalid + } + } + return false +} + +func (iter *Iterator) skipString() { + if !iter.trySkipString() { + iter.unreadByte() + iter.ReadString() + } +} + +func (iter *Iterator) trySkipString() bool { + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + if c == '"' { + iter.head = i + 1 + return true // valid + } else if c == '\\' { + return false + } else if c < ' ' { + iter.ReportError("trySkipString", + fmt.Sprintf(`invalid control character found: %d`, c)) + return true // already failed + } + } + return false +} + +func (iter *Iterator) skipObject() { + iter.unreadByte() + iter.ReadObjectCB(func(iter *Iterator, field string) bool { + iter.Skip() + return true + }) +} + +func (iter *Iterator) skipArray() { + iter.unreadByte() + iter.ReadArrayCB(func(iter *Iterator) bool { + iter.Skip() + return true + }) +} diff --git a/vendor/github.com/json-iterator/go/iter_str.go b/vendor/github.com/json-iterator/go/iter_str.go new file mode 100644 index 000000000..adc487ea8 --- /dev/null +++ b/vendor/github.com/json-iterator/go/iter_str.go @@ -0,0 +1,215 @@ +package jsoniter + +import ( + "fmt" + "unicode/utf16" +) + +// ReadString read string from iterator +func (iter *Iterator) ReadString() (ret string) { + c := iter.nextToken() + if c == '"' { + for i := iter.head; i < iter.tail; i++ { + c := iter.buf[i] + if c == '"' { + ret = string(iter.buf[iter.head:i]) + iter.head = i + 1 + return ret + } else if c == '\\' { + break + } else if c < ' ' { + iter.ReportError("ReadString", + fmt.Sprintf(`invalid control character found: %d`, c)) + return + } + } + return iter.readStringSlowPath() + } else if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') + return "" + } + iter.ReportError("ReadString", `expects " or n, but found `+string([]byte{c})) + return +} + +func (iter *Iterator) readStringSlowPath() (ret string) { + var str []byte + var c byte + for iter.Error == nil { + c = iter.readByte() + if c == '"' { + return string(str) + } + if c == '\\' { + c = iter.readByte() + str = iter.readEscapedChar(c, str) + } else { + str = append(str, c) + } + } + iter.ReportError("readStringSlowPath", "unexpected end of input") + return +} + +func (iter *Iterator) readEscapedChar(c byte, str []byte) []byte { + switch c { + case 'u': + r := iter.readU4() + if utf16.IsSurrogate(r) { + c = iter.readByte() + if iter.Error != nil { + return nil + } + if c != '\\' { + iter.unreadByte() + str = appendRune(str, r) + return str + } + c = iter.readByte() + if iter.Error != nil { + return nil + } + if c != 'u' { + str = appendRune(str, r) + return iter.readEscapedChar(c, str) + } + r2 := iter.readU4() + if iter.Error != nil { + return nil + } + combined := utf16.DecodeRune(r, r2) + if combined == '\uFFFD' { + str = appendRune(str, r) + str = appendRune(str, r2) + } else { + str = appendRune(str, combined) + } + } else { + str = appendRune(str, r) + } + case '"': + str = append(str, '"') + case '\\': + str = append(str, '\\') + case '/': + str = append(str, '/') + case 'b': + str = append(str, '\b') + case 'f': + str = append(str, '\f') + case 'n': + str = append(str, '\n') + case 'r': + str = append(str, '\r') + case 't': + str = append(str, '\t') + default: + iter.ReportError("readEscapedChar", + `invalid escape char after \`) + return nil + } + return str +} + +// ReadStringAsSlice read string from iterator without copying into string form. +// The []byte can not be kept, as it will change after next iterator call. +func (iter *Iterator) ReadStringAsSlice() (ret []byte) { + c := iter.nextToken() + if c == '"' { + for i := iter.head; i < iter.tail; i++ { + // require ascii string and no escape + // for: field name, base64, number + if iter.buf[i] == '"' { + // fast path: reuse the underlying buffer + ret = iter.buf[iter.head:i] + iter.head = i + 1 + return ret + } + } + readLen := iter.tail - iter.head + copied := make([]byte, readLen, readLen*2) + copy(copied, iter.buf[iter.head:iter.tail]) + iter.head = iter.tail + for iter.Error == nil { + c := iter.readByte() + if c == '"' { + return copied + } + copied = append(copied, c) + } + return copied + } + iter.ReportError("ReadStringAsSlice", `expects " or n, but found `+string([]byte{c})) + return +} + +func (iter *Iterator) readU4() (ret rune) { + for i := 0; i < 4; i++ { + c := iter.readByte() + if iter.Error != nil { + return + } + if c >= '0' && c <= '9' { + ret = ret*16 + rune(c-'0') + } else if c >= 'a' && c <= 'f' { + ret = ret*16 + rune(c-'a'+10) + } else if c >= 'A' && c <= 'F' { + ret = ret*16 + rune(c-'A'+10) + } else { + iter.ReportError("readU4", "expects 0~9 or a~f, but found "+string([]byte{c})) + return + } + } + return ret +} + +const ( + t1 = 0x00 // 0000 0000 + tx = 0x80 // 1000 0000 + t2 = 0xC0 // 1100 0000 + t3 = 0xE0 // 1110 0000 + t4 = 0xF0 // 1111 0000 + t5 = 0xF8 // 1111 1000 + + maskx = 0x3F // 0011 1111 + mask2 = 0x1F // 0001 1111 + mask3 = 0x0F // 0000 1111 + mask4 = 0x07 // 0000 0111 + + rune1Max = 1<<7 - 1 + rune2Max = 1<<11 - 1 + rune3Max = 1<<16 - 1 + + surrogateMin = 0xD800 + surrogateMax = 0xDFFF + + maxRune = '\U0010FFFF' // Maximum valid Unicode code point. + runeError = '\uFFFD' // the "error" Rune or "Unicode replacement character" +) + +func appendRune(p []byte, r rune) []byte { + // Negative values are erroneous. Making it unsigned addresses the problem. + switch i := uint32(r); { + case i <= rune1Max: + p = append(p, byte(r)) + return p + case i <= rune2Max: + p = append(p, t2|byte(r>>6)) + p = append(p, tx|byte(r)&maskx) + return p + case i > maxRune, surrogateMin <= i && i <= surrogateMax: + r = runeError + fallthrough + case i <= rune3Max: + p = append(p, t3|byte(r>>12)) + p = append(p, tx|byte(r>>6)&maskx) + p = append(p, tx|byte(r)&maskx) + return p + default: + p = append(p, t4|byte(r>>18)) + p = append(p, tx|byte(r>>12)&maskx) + p = append(p, tx|byte(r>>6)&maskx) + p = append(p, tx|byte(r)&maskx) + return p + } +} diff --git a/vendor/github.com/json-iterator/go/jsoniter.go b/vendor/github.com/json-iterator/go/jsoniter.go new file mode 100644 index 000000000..c2934f916 --- /dev/null +++ b/vendor/github.com/json-iterator/go/jsoniter.go @@ -0,0 +1,18 @@ +// Package jsoniter implements encoding and decoding of JSON as defined in +// RFC 4627 and provides interfaces with identical syntax of standard lib encoding/json. +// Converting from encoding/json to jsoniter is no more than replacing the package with jsoniter +// and variable type declarations (if any). +// jsoniter interfaces gives 100% compatibility with code using standard lib. +// +// "JSON and Go" +// (https://golang.org/doc/articles/json_and_go.html) +// gives a description of how Marshal/Unmarshal operate +// between arbitrary or predefined json objects and bytes, +// and it applies to jsoniter.Marshal/Unmarshal as well. +// +// Besides, jsoniter.Iterator provides a different set of interfaces +// iterating given bytes/string/reader +// and yielding parsed elements one by one. +// This set of interfaces reads input as required and gives +// better performance. +package jsoniter diff --git a/vendor/github.com/json-iterator/go/pool.go b/vendor/github.com/json-iterator/go/pool.go new file mode 100644 index 000000000..e2389b56c --- /dev/null +++ b/vendor/github.com/json-iterator/go/pool.go @@ -0,0 +1,42 @@ +package jsoniter + +import ( + "io" +) + +// IteratorPool a thread safe pool of iterators with same configuration +type IteratorPool interface { + BorrowIterator(data []byte) *Iterator + ReturnIterator(iter *Iterator) +} + +// StreamPool a thread safe pool of streams with same configuration +type StreamPool interface { + BorrowStream(writer io.Writer) *Stream + ReturnStream(stream *Stream) +} + +func (cfg *frozenConfig) BorrowStream(writer io.Writer) *Stream { + stream := cfg.streamPool.Get().(*Stream) + stream.Reset(writer) + return stream +} + +func (cfg *frozenConfig) ReturnStream(stream *Stream) { + stream.out = nil + stream.Error = nil + stream.Attachment = nil + cfg.streamPool.Put(stream) +} + +func (cfg *frozenConfig) BorrowIterator(data []byte) *Iterator { + iter := cfg.iteratorPool.Get().(*Iterator) + iter.ResetBytes(data) + return iter +} + +func (cfg *frozenConfig) ReturnIterator(iter *Iterator) { + iter.Error = nil + iter.Attachment = nil + cfg.iteratorPool.Put(iter) +} diff --git a/vendor/github.com/json-iterator/go/reflect.go b/vendor/github.com/json-iterator/go/reflect.go new file mode 100644 index 000000000..4459e203f --- /dev/null +++ b/vendor/github.com/json-iterator/go/reflect.go @@ -0,0 +1,332 @@ +package jsoniter + +import ( + "fmt" + "reflect" + "unsafe" + + "github.com/modern-go/reflect2" +) + +// ValDecoder is an internal type registered to cache as needed. +// Don't confuse jsoniter.ValDecoder with json.Decoder. +// For json.Decoder's adapter, refer to jsoniter.AdapterDecoder(todo link). +// +// Reflection on type to create decoders, which is then cached +// Reflection on value is avoided as we can, as the reflect.Value itself will allocate, with following exceptions +// 1. create instance of new value, for example *int will need a int to be allocated +// 2. append to slice, if the existing cap is not enough, allocate will be done using Reflect.New +// 3. assignment to map, both key and value will be reflect.Value +// For a simple struct binding, it will be reflect.Value free and allocation free +type ValDecoder interface { + Decode(ptr unsafe.Pointer, iter *Iterator) +} + +// ValEncoder is an internal type registered to cache as needed. +// Don't confuse jsoniter.ValEncoder with json.Encoder. +// For json.Encoder's adapter, refer to jsoniter.AdapterEncoder(todo godoc link). +type ValEncoder interface { + IsEmpty(ptr unsafe.Pointer) bool + Encode(ptr unsafe.Pointer, stream *Stream) +} + +type checkIsEmpty interface { + IsEmpty(ptr unsafe.Pointer) bool +} + +type ctx struct { + *frozenConfig + prefix string + encoders map[reflect2.Type]ValEncoder + decoders map[reflect2.Type]ValDecoder +} + +func (b *ctx) caseSensitive() bool { + if b.frozenConfig == nil { + // default is case-insensitive + return false + } + return b.frozenConfig.caseSensitive +} + +func (b *ctx) append(prefix string) *ctx { + return &ctx{ + frozenConfig: b.frozenConfig, + prefix: b.prefix + " " + prefix, + encoders: b.encoders, + decoders: b.decoders, + } +} + +// ReadVal copy the underlying JSON into go interface, same as json.Unmarshal +func (iter *Iterator) ReadVal(obj interface{}) { + cacheKey := reflect2.RTypeOf(obj) + decoder := iter.cfg.getDecoderFromCache(cacheKey) + if decoder == nil { + typ := reflect2.TypeOf(obj) + if typ.Kind() != reflect.Ptr { + iter.ReportError("ReadVal", "can only unmarshal into pointer") + return + } + decoder = iter.cfg.DecoderOf(typ) + } + ptr := reflect2.PtrOf(obj) + if ptr == nil { + iter.ReportError("ReadVal", "can not read into nil pointer") + return + } + decoder.Decode(ptr, iter) +} + +// WriteVal copy the go interface into underlying JSON, same as json.Marshal +func (stream *Stream) WriteVal(val interface{}) { + if nil == val { + stream.WriteNil() + return + } + cacheKey := reflect2.RTypeOf(val) + encoder := stream.cfg.getEncoderFromCache(cacheKey) + if encoder == nil { + typ := reflect2.TypeOf(val) + encoder = stream.cfg.EncoderOf(typ) + } + encoder.Encode(reflect2.PtrOf(val), stream) +} + +func (cfg *frozenConfig) DecoderOf(typ reflect2.Type) ValDecoder { + cacheKey := typ.RType() + decoder := cfg.getDecoderFromCache(cacheKey) + if decoder != nil { + return decoder + } + ctx := &ctx{ + frozenConfig: cfg, + prefix: "", + decoders: map[reflect2.Type]ValDecoder{}, + encoders: map[reflect2.Type]ValEncoder{}, + } + ptrType := typ.(*reflect2.UnsafePtrType) + decoder = decoderOfType(ctx, ptrType.Elem()) + cfg.addDecoderToCache(cacheKey, decoder) + return decoder +} + +func decoderOfType(ctx *ctx, typ reflect2.Type) ValDecoder { + decoder := getTypeDecoderFromExtension(ctx, typ) + if decoder != nil { + return decoder + } + decoder = createDecoderOfType(ctx, typ) + for _, extension := range extensions { + decoder = extension.DecorateDecoder(typ, decoder) + } + decoder = ctx.decoderExtension.DecorateDecoder(typ, decoder) + for _, extension := range ctx.extraExtensions { + decoder = extension.DecorateDecoder(typ, decoder) + } + return decoder +} + +func createDecoderOfType(ctx *ctx, typ reflect2.Type) ValDecoder { + decoder := ctx.decoders[typ] + if decoder != nil { + return decoder + } + placeholder := &placeholderDecoder{} + ctx.decoders[typ] = placeholder + decoder = _createDecoderOfType(ctx, typ) + placeholder.decoder = decoder + return decoder +} + +func _createDecoderOfType(ctx *ctx, typ reflect2.Type) ValDecoder { + decoder := createDecoderOfJsonRawMessage(ctx, typ) + if decoder != nil { + return decoder + } + decoder = createDecoderOfJsonNumber(ctx, typ) + if decoder != nil { + return decoder + } + decoder = createDecoderOfMarshaler(ctx, typ) + if decoder != nil { + return decoder + } + decoder = createDecoderOfAny(ctx, typ) + if decoder != nil { + return decoder + } + decoder = createDecoderOfNative(ctx, typ) + if decoder != nil { + return decoder + } + switch typ.Kind() { + case reflect.Interface: + ifaceType, isIFace := typ.(*reflect2.UnsafeIFaceType) + if isIFace { + return &ifaceDecoder{valType: ifaceType} + } + return &efaceDecoder{} + case reflect.Struct: + return decoderOfStruct(ctx, typ) + case reflect.Array: + return decoderOfArray(ctx, typ) + case reflect.Slice: + return decoderOfSlice(ctx, typ) + case reflect.Map: + return decoderOfMap(ctx, typ) + case reflect.Ptr: + return decoderOfOptional(ctx, typ) + default: + return &lazyErrorDecoder{err: fmt.Errorf("%s%s is unsupported type", ctx.prefix, typ.String())} + } +} + +func (cfg *frozenConfig) EncoderOf(typ reflect2.Type) ValEncoder { + cacheKey := typ.RType() + encoder := cfg.getEncoderFromCache(cacheKey) + if encoder != nil { + return encoder + } + ctx := &ctx{ + frozenConfig: cfg, + prefix: "", + decoders: map[reflect2.Type]ValDecoder{}, + encoders: map[reflect2.Type]ValEncoder{}, + } + encoder = encoderOfType(ctx, typ) + if typ.LikePtr() { + encoder = &onePtrEncoder{encoder} + } + cfg.addEncoderToCache(cacheKey, encoder) + return encoder +} + +type onePtrEncoder struct { + encoder ValEncoder +} + +func (encoder *onePtrEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.encoder.IsEmpty(unsafe.Pointer(&ptr)) +} + +func (encoder *onePtrEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + encoder.encoder.Encode(unsafe.Pointer(&ptr), stream) +} + +func encoderOfType(ctx *ctx, typ reflect2.Type) ValEncoder { + encoder := getTypeEncoderFromExtension(ctx, typ) + if encoder != nil { + return encoder + } + encoder = createEncoderOfType(ctx, typ) + for _, extension := range extensions { + encoder = extension.DecorateEncoder(typ, encoder) + } + encoder = ctx.encoderExtension.DecorateEncoder(typ, encoder) + for _, extension := range ctx.extraExtensions { + encoder = extension.DecorateEncoder(typ, encoder) + } + return encoder +} + +func createEncoderOfType(ctx *ctx, typ reflect2.Type) ValEncoder { + encoder := ctx.encoders[typ] + if encoder != nil { + return encoder + } + placeholder := &placeholderEncoder{} + ctx.encoders[typ] = placeholder + encoder = _createEncoderOfType(ctx, typ) + placeholder.encoder = encoder + return encoder +} +func _createEncoderOfType(ctx *ctx, typ reflect2.Type) ValEncoder { + encoder := createEncoderOfJsonRawMessage(ctx, typ) + if encoder != nil { + return encoder + } + encoder = createEncoderOfJsonNumber(ctx, typ) + if encoder != nil { + return encoder + } + encoder = createEncoderOfMarshaler(ctx, typ) + if encoder != nil { + return encoder + } + encoder = createEncoderOfAny(ctx, typ) + if encoder != nil { + return encoder + } + encoder = createEncoderOfNative(ctx, typ) + if encoder != nil { + return encoder + } + kind := typ.Kind() + switch kind { + case reflect.Interface: + return &dynamicEncoder{typ} + case reflect.Struct: + return encoderOfStruct(ctx, typ) + case reflect.Array: + return encoderOfArray(ctx, typ) + case reflect.Slice: + return encoderOfSlice(ctx, typ) + case reflect.Map: + return encoderOfMap(ctx, typ) + case reflect.Ptr: + return encoderOfOptional(ctx, typ) + default: + return &lazyErrorEncoder{err: fmt.Errorf("%s%s is unsupported type", ctx.prefix, typ.String())} + } +} + +type lazyErrorDecoder struct { + err error +} + +func (decoder *lazyErrorDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if iter.WhatIsNext() != NilValue { + if iter.Error == nil { + iter.Error = decoder.err + } + } else { + iter.Skip() + } +} + +type lazyErrorEncoder struct { + err error +} + +func (encoder *lazyErrorEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + if ptr == nil { + stream.WriteNil() + } else if stream.Error == nil { + stream.Error = encoder.err + } +} + +func (encoder *lazyErrorEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return false +} + +type placeholderDecoder struct { + decoder ValDecoder +} + +func (decoder *placeholderDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + decoder.decoder.Decode(ptr, iter) +} + +type placeholderEncoder struct { + encoder ValEncoder +} + +func (encoder *placeholderEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + encoder.encoder.Encode(ptr, stream) +} + +func (encoder *placeholderEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.encoder.IsEmpty(ptr) +} diff --git a/vendor/github.com/json-iterator/go/reflect_array.go b/vendor/github.com/json-iterator/go/reflect_array.go new file mode 100644 index 000000000..13a0b7b08 --- /dev/null +++ b/vendor/github.com/json-iterator/go/reflect_array.go @@ -0,0 +1,104 @@ +package jsoniter + +import ( + "fmt" + "github.com/modern-go/reflect2" + "io" + "unsafe" +) + +func decoderOfArray(ctx *ctx, typ reflect2.Type) ValDecoder { + arrayType := typ.(*reflect2.UnsafeArrayType) + decoder := decoderOfType(ctx.append("[arrayElem]"), arrayType.Elem()) + return &arrayDecoder{arrayType, decoder} +} + +func encoderOfArray(ctx *ctx, typ reflect2.Type) ValEncoder { + arrayType := typ.(*reflect2.UnsafeArrayType) + if arrayType.Len() == 0 { + return emptyArrayEncoder{} + } + encoder := encoderOfType(ctx.append("[arrayElem]"), arrayType.Elem()) + return &arrayEncoder{arrayType, encoder} +} + +type emptyArrayEncoder struct{} + +func (encoder emptyArrayEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteEmptyArray() +} + +func (encoder emptyArrayEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return true +} + +type arrayEncoder struct { + arrayType *reflect2.UnsafeArrayType + elemEncoder ValEncoder +} + +func (encoder *arrayEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteArrayStart() + elemPtr := unsafe.Pointer(ptr) + encoder.elemEncoder.Encode(elemPtr, stream) + for i := 1; i < encoder.arrayType.Len(); i++ { + stream.WriteMore() + elemPtr = encoder.arrayType.UnsafeGetIndex(ptr, i) + encoder.elemEncoder.Encode(elemPtr, stream) + } + stream.WriteArrayEnd() + if stream.Error != nil && stream.Error != io.EOF { + stream.Error = fmt.Errorf("%v: %s", encoder.arrayType, stream.Error.Error()) + } +} + +func (encoder *arrayEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return false +} + +type arrayDecoder struct { + arrayType *reflect2.UnsafeArrayType + elemDecoder ValDecoder +} + +func (decoder *arrayDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + decoder.doDecode(ptr, iter) + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.arrayType, iter.Error.Error()) + } +} + +func (decoder *arrayDecoder) doDecode(ptr unsafe.Pointer, iter *Iterator) { + c := iter.nextToken() + arrayType := decoder.arrayType + if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') + return + } + if c != '[' { + iter.ReportError("decode array", "expect [ or n, but found "+string([]byte{c})) + return + } + c = iter.nextToken() + if c == ']' { + return + } + iter.unreadByte() + elemPtr := arrayType.UnsafeGetIndex(ptr, 0) + decoder.elemDecoder.Decode(elemPtr, iter) + length := 1 + for c = iter.nextToken(); c == ','; c = iter.nextToken() { + if length >= arrayType.Len() { + iter.Skip() + continue + } + idx := length + length += 1 + elemPtr = arrayType.UnsafeGetIndex(ptr, idx) + decoder.elemDecoder.Decode(elemPtr, iter) + } + if c != ']' { + iter.ReportError("decode array", "expect ], but found "+string([]byte{c})) + return + } +} diff --git a/vendor/github.com/json-iterator/go/reflect_dynamic.go b/vendor/github.com/json-iterator/go/reflect_dynamic.go new file mode 100644 index 000000000..8b6bc8b43 --- /dev/null +++ b/vendor/github.com/json-iterator/go/reflect_dynamic.go @@ -0,0 +1,70 @@ +package jsoniter + +import ( + "github.com/modern-go/reflect2" + "reflect" + "unsafe" +) + +type dynamicEncoder struct { + valType reflect2.Type +} + +func (encoder *dynamicEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + obj := encoder.valType.UnsafeIndirect(ptr) + stream.WriteVal(obj) +} + +func (encoder *dynamicEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.valType.UnsafeIndirect(ptr) == nil +} + +type efaceDecoder struct { +} + +func (decoder *efaceDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + pObj := (*interface{})(ptr) + obj := *pObj + if obj == nil { + *pObj = iter.Read() + return + } + typ := reflect2.TypeOf(obj) + if typ.Kind() != reflect.Ptr { + *pObj = iter.Read() + return + } + ptrType := typ.(*reflect2.UnsafePtrType) + ptrElemType := ptrType.Elem() + if iter.WhatIsNext() == NilValue { + if ptrElemType.Kind() != reflect.Ptr { + iter.skipFourBytes('n', 'u', 'l', 'l') + *pObj = nil + return + } + } + if reflect2.IsNil(obj) { + obj := ptrElemType.New() + iter.ReadVal(obj) + *pObj = obj + return + } + iter.ReadVal(obj) +} + +type ifaceDecoder struct { + valType *reflect2.UnsafeIFaceType +} + +func (decoder *ifaceDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if iter.ReadNil() { + decoder.valType.UnsafeSet(ptr, decoder.valType.UnsafeNew()) + return + } + obj := decoder.valType.UnsafeIndirect(ptr) + if reflect2.IsNil(obj) { + iter.ReportError("decode non empty interface", "can not unmarshal into nil") + return + } + iter.ReadVal(obj) +} diff --git a/vendor/github.com/json-iterator/go/reflect_extension.go b/vendor/github.com/json-iterator/go/reflect_extension.go new file mode 100644 index 000000000..04f68756b --- /dev/null +++ b/vendor/github.com/json-iterator/go/reflect_extension.go @@ -0,0 +1,483 @@ +package jsoniter + +import ( + "fmt" + "github.com/modern-go/reflect2" + "reflect" + "sort" + "strings" + "unicode" + "unsafe" +) + +var typeDecoders = map[string]ValDecoder{} +var fieldDecoders = map[string]ValDecoder{} +var typeEncoders = map[string]ValEncoder{} +var fieldEncoders = map[string]ValEncoder{} +var extensions = []Extension{} + +// StructDescriptor describe how should we encode/decode the struct +type StructDescriptor struct { + Type reflect2.Type + Fields []*Binding +} + +// GetField get one field from the descriptor by its name. +// Can not use map here to keep field orders. +func (structDescriptor *StructDescriptor) GetField(fieldName string) *Binding { + for _, binding := range structDescriptor.Fields { + if binding.Field.Name() == fieldName { + return binding + } + } + return nil +} + +// Binding describe how should we encode/decode the struct field +type Binding struct { + levels []int + Field reflect2.StructField + FromNames []string + ToNames []string + Encoder ValEncoder + Decoder ValDecoder +} + +// Extension the one for all SPI. Customize encoding/decoding by specifying alternate encoder/decoder. +// Can also rename fields by UpdateStructDescriptor. +type Extension interface { + UpdateStructDescriptor(structDescriptor *StructDescriptor) + CreateMapKeyDecoder(typ reflect2.Type) ValDecoder + CreateMapKeyEncoder(typ reflect2.Type) ValEncoder + CreateDecoder(typ reflect2.Type) ValDecoder + CreateEncoder(typ reflect2.Type) ValEncoder + DecorateDecoder(typ reflect2.Type, decoder ValDecoder) ValDecoder + DecorateEncoder(typ reflect2.Type, encoder ValEncoder) ValEncoder +} + +// DummyExtension embed this type get dummy implementation for all methods of Extension +type DummyExtension struct { +} + +// UpdateStructDescriptor No-op +func (extension *DummyExtension) UpdateStructDescriptor(structDescriptor *StructDescriptor) { +} + +// CreateMapKeyDecoder No-op +func (extension *DummyExtension) CreateMapKeyDecoder(typ reflect2.Type) ValDecoder { + return nil +} + +// CreateMapKeyEncoder No-op +func (extension *DummyExtension) CreateMapKeyEncoder(typ reflect2.Type) ValEncoder { + return nil +} + +// CreateDecoder No-op +func (extension *DummyExtension) CreateDecoder(typ reflect2.Type) ValDecoder { + return nil +} + +// CreateEncoder No-op +func (extension *DummyExtension) CreateEncoder(typ reflect2.Type) ValEncoder { + return nil +} + +// DecorateDecoder No-op +func (extension *DummyExtension) DecorateDecoder(typ reflect2.Type, decoder ValDecoder) ValDecoder { + return decoder +} + +// DecorateEncoder No-op +func (extension *DummyExtension) DecorateEncoder(typ reflect2.Type, encoder ValEncoder) ValEncoder { + return encoder +} + +type EncoderExtension map[reflect2.Type]ValEncoder + +// UpdateStructDescriptor No-op +func (extension EncoderExtension) UpdateStructDescriptor(structDescriptor *StructDescriptor) { +} + +// CreateDecoder No-op +func (extension EncoderExtension) CreateDecoder(typ reflect2.Type) ValDecoder { + return nil +} + +// CreateEncoder get encoder from map +func (extension EncoderExtension) CreateEncoder(typ reflect2.Type) ValEncoder { + return extension[typ] +} + +// CreateMapKeyDecoder No-op +func (extension EncoderExtension) CreateMapKeyDecoder(typ reflect2.Type) ValDecoder { + return nil +} + +// CreateMapKeyEncoder No-op +func (extension EncoderExtension) CreateMapKeyEncoder(typ reflect2.Type) ValEncoder { + return nil +} + +// DecorateDecoder No-op +func (extension EncoderExtension) DecorateDecoder(typ reflect2.Type, decoder ValDecoder) ValDecoder { + return decoder +} + +// DecorateEncoder No-op +func (extension EncoderExtension) DecorateEncoder(typ reflect2.Type, encoder ValEncoder) ValEncoder { + return encoder +} + +type DecoderExtension map[reflect2.Type]ValDecoder + +// UpdateStructDescriptor No-op +func (extension DecoderExtension) UpdateStructDescriptor(structDescriptor *StructDescriptor) { +} + +// CreateMapKeyDecoder No-op +func (extension DecoderExtension) CreateMapKeyDecoder(typ reflect2.Type) ValDecoder { + return nil +} + +// CreateMapKeyEncoder No-op +func (extension DecoderExtension) CreateMapKeyEncoder(typ reflect2.Type) ValEncoder { + return nil +} + +// CreateDecoder get decoder from map +func (extension DecoderExtension) CreateDecoder(typ reflect2.Type) ValDecoder { + return extension[typ] +} + +// CreateEncoder No-op +func (extension DecoderExtension) CreateEncoder(typ reflect2.Type) ValEncoder { + return nil +} + +// DecorateDecoder No-op +func (extension DecoderExtension) DecorateDecoder(typ reflect2.Type, decoder ValDecoder) ValDecoder { + return decoder +} + +// DecorateEncoder No-op +func (extension DecoderExtension) DecorateEncoder(typ reflect2.Type, encoder ValEncoder) ValEncoder { + return encoder +} + +type funcDecoder struct { + fun DecoderFunc +} + +func (decoder *funcDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + decoder.fun(ptr, iter) +} + +type funcEncoder struct { + fun EncoderFunc + isEmptyFunc func(ptr unsafe.Pointer) bool +} + +func (encoder *funcEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + encoder.fun(ptr, stream) +} + +func (encoder *funcEncoder) IsEmpty(ptr unsafe.Pointer) bool { + if encoder.isEmptyFunc == nil { + return false + } + return encoder.isEmptyFunc(ptr) +} + +// DecoderFunc the function form of TypeDecoder +type DecoderFunc func(ptr unsafe.Pointer, iter *Iterator) + +// EncoderFunc the function form of TypeEncoder +type EncoderFunc func(ptr unsafe.Pointer, stream *Stream) + +// RegisterTypeDecoderFunc register TypeDecoder for a type with function +func RegisterTypeDecoderFunc(typ string, fun DecoderFunc) { + typeDecoders[typ] = &funcDecoder{fun} +} + +// RegisterTypeDecoder register TypeDecoder for a typ +func RegisterTypeDecoder(typ string, decoder ValDecoder) { + typeDecoders[typ] = decoder +} + +// RegisterFieldDecoderFunc register TypeDecoder for a struct field with function +func RegisterFieldDecoderFunc(typ string, field string, fun DecoderFunc) { + RegisterFieldDecoder(typ, field, &funcDecoder{fun}) +} + +// RegisterFieldDecoder register TypeDecoder for a struct field +func RegisterFieldDecoder(typ string, field string, decoder ValDecoder) { + fieldDecoders[fmt.Sprintf("%s/%s", typ, field)] = decoder +} + +// RegisterTypeEncoderFunc register TypeEncoder for a type with encode/isEmpty function +func RegisterTypeEncoderFunc(typ string, fun EncoderFunc, isEmptyFunc func(unsafe.Pointer) bool) { + typeEncoders[typ] = &funcEncoder{fun, isEmptyFunc} +} + +// RegisterTypeEncoder register TypeEncoder for a type +func RegisterTypeEncoder(typ string, encoder ValEncoder) { + typeEncoders[typ] = encoder +} + +// RegisterFieldEncoderFunc register TypeEncoder for a struct field with encode/isEmpty function +func RegisterFieldEncoderFunc(typ string, field string, fun EncoderFunc, isEmptyFunc func(unsafe.Pointer) bool) { + RegisterFieldEncoder(typ, field, &funcEncoder{fun, isEmptyFunc}) +} + +// RegisterFieldEncoder register TypeEncoder for a struct field +func RegisterFieldEncoder(typ string, field string, encoder ValEncoder) { + fieldEncoders[fmt.Sprintf("%s/%s", typ, field)] = encoder +} + +// RegisterExtension register extension +func RegisterExtension(extension Extension) { + extensions = append(extensions, extension) +} + +func getTypeDecoderFromExtension(ctx *ctx, typ reflect2.Type) ValDecoder { + decoder := _getTypeDecoderFromExtension(ctx, typ) + if decoder != nil { + for _, extension := range extensions { + decoder = extension.DecorateDecoder(typ, decoder) + } + decoder = ctx.decoderExtension.DecorateDecoder(typ, decoder) + for _, extension := range ctx.extraExtensions { + decoder = extension.DecorateDecoder(typ, decoder) + } + } + return decoder +} +func _getTypeDecoderFromExtension(ctx *ctx, typ reflect2.Type) ValDecoder { + for _, extension := range extensions { + decoder := extension.CreateDecoder(typ) + if decoder != nil { + return decoder + } + } + decoder := ctx.decoderExtension.CreateDecoder(typ) + if decoder != nil { + return decoder + } + for _, extension := range ctx.extraExtensions { + decoder := extension.CreateDecoder(typ) + if decoder != nil { + return decoder + } + } + typeName := typ.String() + decoder = typeDecoders[typeName] + if decoder != nil { + return decoder + } + if typ.Kind() == reflect.Ptr { + ptrType := typ.(*reflect2.UnsafePtrType) + decoder := typeDecoders[ptrType.Elem().String()] + if decoder != nil { + return &OptionalDecoder{ptrType.Elem(), decoder} + } + } + return nil +} + +func getTypeEncoderFromExtension(ctx *ctx, typ reflect2.Type) ValEncoder { + encoder := _getTypeEncoderFromExtension(ctx, typ) + if encoder != nil { + for _, extension := range extensions { + encoder = extension.DecorateEncoder(typ, encoder) + } + encoder = ctx.encoderExtension.DecorateEncoder(typ, encoder) + for _, extension := range ctx.extraExtensions { + encoder = extension.DecorateEncoder(typ, encoder) + } + } + return encoder +} + +func _getTypeEncoderFromExtension(ctx *ctx, typ reflect2.Type) ValEncoder { + for _, extension := range extensions { + encoder := extension.CreateEncoder(typ) + if encoder != nil { + return encoder + } + } + encoder := ctx.encoderExtension.CreateEncoder(typ) + if encoder != nil { + return encoder + } + for _, extension := range ctx.extraExtensions { + encoder := extension.CreateEncoder(typ) + if encoder != nil { + return encoder + } + } + typeName := typ.String() + encoder = typeEncoders[typeName] + if encoder != nil { + return encoder + } + if typ.Kind() == reflect.Ptr { + typePtr := typ.(*reflect2.UnsafePtrType) + encoder := typeEncoders[typePtr.Elem().String()] + if encoder != nil { + return &OptionalEncoder{encoder} + } + } + return nil +} + +func describeStruct(ctx *ctx, typ reflect2.Type) *StructDescriptor { + structType := typ.(*reflect2.UnsafeStructType) + embeddedBindings := []*Binding{} + bindings := []*Binding{} + for i := 0; i < structType.NumField(); i++ { + field := structType.Field(i) + tag, hastag := field.Tag().Lookup(ctx.getTagKey()) + if ctx.onlyTaggedField && !hastag { + continue + } + tagParts := strings.Split(tag, ",") + if tag == "-" { + continue + } + if field.Anonymous() && (tag == "" || tagParts[0] == "") { + if field.Type().Kind() == reflect.Struct { + structDescriptor := describeStruct(ctx, field.Type()) + for _, binding := range structDescriptor.Fields { + binding.levels = append([]int{i}, binding.levels...) + omitempty := binding.Encoder.(*structFieldEncoder).omitempty + binding.Encoder = &structFieldEncoder{field, binding.Encoder, omitempty} + binding.Decoder = &structFieldDecoder{field, binding.Decoder} + embeddedBindings = append(embeddedBindings, binding) + } + continue + } else if field.Type().Kind() == reflect.Ptr { + ptrType := field.Type().(*reflect2.UnsafePtrType) + if ptrType.Elem().Kind() == reflect.Struct { + structDescriptor := describeStruct(ctx, ptrType.Elem()) + for _, binding := range structDescriptor.Fields { + binding.levels = append([]int{i}, binding.levels...) + omitempty := binding.Encoder.(*structFieldEncoder).omitempty + binding.Encoder = &dereferenceEncoder{binding.Encoder} + binding.Encoder = &structFieldEncoder{field, binding.Encoder, omitempty} + binding.Decoder = &dereferenceDecoder{ptrType.Elem(), binding.Decoder} + binding.Decoder = &structFieldDecoder{field, binding.Decoder} + embeddedBindings = append(embeddedBindings, binding) + } + continue + } + } + } + fieldNames := calcFieldNames(field.Name(), tagParts[0], tag) + fieldCacheKey := fmt.Sprintf("%s/%s", typ.String(), field.Name()) + decoder := fieldDecoders[fieldCacheKey] + if decoder == nil { + decoder = decoderOfType(ctx.append(field.Name()), field.Type()) + } + encoder := fieldEncoders[fieldCacheKey] + if encoder == nil { + encoder = encoderOfType(ctx.append(field.Name()), field.Type()) + } + binding := &Binding{ + Field: field, + FromNames: fieldNames, + ToNames: fieldNames, + Decoder: decoder, + Encoder: encoder, + } + binding.levels = []int{i} + bindings = append(bindings, binding) + } + return createStructDescriptor(ctx, typ, bindings, embeddedBindings) +} +func createStructDescriptor(ctx *ctx, typ reflect2.Type, bindings []*Binding, embeddedBindings []*Binding) *StructDescriptor { + structDescriptor := &StructDescriptor{ + Type: typ, + Fields: bindings, + } + for _, extension := range extensions { + extension.UpdateStructDescriptor(structDescriptor) + } + ctx.encoderExtension.UpdateStructDescriptor(structDescriptor) + ctx.decoderExtension.UpdateStructDescriptor(structDescriptor) + for _, extension := range ctx.extraExtensions { + extension.UpdateStructDescriptor(structDescriptor) + } + processTags(structDescriptor, ctx.frozenConfig) + // merge normal & embedded bindings & sort with original order + allBindings := sortableBindings(append(embeddedBindings, structDescriptor.Fields...)) + sort.Sort(allBindings) + structDescriptor.Fields = allBindings + return structDescriptor +} + +type sortableBindings []*Binding + +func (bindings sortableBindings) Len() int { + return len(bindings) +} + +func (bindings sortableBindings) Less(i, j int) bool { + left := bindings[i].levels + right := bindings[j].levels + k := 0 + for { + if left[k] < right[k] { + return true + } else if left[k] > right[k] { + return false + } + k++ + } +} + +func (bindings sortableBindings) Swap(i, j int) { + bindings[i], bindings[j] = bindings[j], bindings[i] +} + +func processTags(structDescriptor *StructDescriptor, cfg *frozenConfig) { + for _, binding := range structDescriptor.Fields { + shouldOmitEmpty := false + tagParts := strings.Split(binding.Field.Tag().Get(cfg.getTagKey()), ",") + for _, tagPart := range tagParts[1:] { + if tagPart == "omitempty" { + shouldOmitEmpty = true + } else if tagPart == "string" { + if binding.Field.Type().Kind() == reflect.String { + binding.Decoder = &stringModeStringDecoder{binding.Decoder, cfg} + binding.Encoder = &stringModeStringEncoder{binding.Encoder, cfg} + } else { + binding.Decoder = &stringModeNumberDecoder{binding.Decoder} + binding.Encoder = &stringModeNumberEncoder{binding.Encoder} + } + } + } + binding.Decoder = &structFieldDecoder{binding.Field, binding.Decoder} + binding.Encoder = &structFieldEncoder{binding.Field, binding.Encoder, shouldOmitEmpty} + } +} + +func calcFieldNames(originalFieldName string, tagProvidedFieldName string, wholeTag string) []string { + // ignore? + if wholeTag == "-" { + return []string{} + } + // rename? + var fieldNames []string + if tagProvidedFieldName == "" { + fieldNames = []string{originalFieldName} + } else { + fieldNames = []string{tagProvidedFieldName} + } + // private? + isNotExported := unicode.IsLower(rune(originalFieldName[0])) + if isNotExported { + fieldNames = []string{} + } + return fieldNames +} diff --git a/vendor/github.com/json-iterator/go/reflect_json_number.go b/vendor/github.com/json-iterator/go/reflect_json_number.go new file mode 100644 index 000000000..98d45c1ec --- /dev/null +++ b/vendor/github.com/json-iterator/go/reflect_json_number.go @@ -0,0 +1,112 @@ +package jsoniter + +import ( + "encoding/json" + "github.com/modern-go/reflect2" + "strconv" + "unsafe" +) + +type Number string + +// String returns the literal text of the number. +func (n Number) String() string { return string(n) } + +// Float64 returns the number as a float64. +func (n Number) Float64() (float64, error) { + return strconv.ParseFloat(string(n), 64) +} + +// Int64 returns the number as an int64. +func (n Number) Int64() (int64, error) { + return strconv.ParseInt(string(n), 10, 64) +} + +func CastJsonNumber(val interface{}) (string, bool) { + switch typedVal := val.(type) { + case json.Number: + return string(typedVal), true + case Number: + return string(typedVal), true + } + return "", false +} + +var jsonNumberType = reflect2.TypeOfPtr((*json.Number)(nil)).Elem() +var jsoniterNumberType = reflect2.TypeOfPtr((*Number)(nil)).Elem() + +func createDecoderOfJsonNumber(ctx *ctx, typ reflect2.Type) ValDecoder { + if typ.AssignableTo(jsonNumberType) { + return &jsonNumberCodec{} + } + if typ.AssignableTo(jsoniterNumberType) { + return &jsoniterNumberCodec{} + } + return nil +} + +func createEncoderOfJsonNumber(ctx *ctx, typ reflect2.Type) ValEncoder { + if typ.AssignableTo(jsonNumberType) { + return &jsonNumberCodec{} + } + if typ.AssignableTo(jsoniterNumberType) { + return &jsoniterNumberCodec{} + } + return nil +} + +type jsonNumberCodec struct { +} + +func (codec *jsonNumberCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + switch iter.WhatIsNext() { + case StringValue: + *((*json.Number)(ptr)) = json.Number(iter.ReadString()) + case NilValue: + iter.skipFourBytes('n', 'u', 'l', 'l') + *((*json.Number)(ptr)) = "" + default: + *((*json.Number)(ptr)) = json.Number([]byte(iter.readNumberAsString())) + } +} + +func (codec *jsonNumberCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + number := *((*json.Number)(ptr)) + if len(number) == 0 { + stream.writeByte('0') + } else { + stream.WriteRaw(string(number)) + } +} + +func (codec *jsonNumberCodec) IsEmpty(ptr unsafe.Pointer) bool { + return len(*((*json.Number)(ptr))) == 0 +} + +type jsoniterNumberCodec struct { +} + +func (codec *jsoniterNumberCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + switch iter.WhatIsNext() { + case StringValue: + *((*Number)(ptr)) = Number(iter.ReadString()) + case NilValue: + iter.skipFourBytes('n', 'u', 'l', 'l') + *((*Number)(ptr)) = "" + default: + *((*Number)(ptr)) = Number([]byte(iter.readNumberAsString())) + } +} + +func (codec *jsoniterNumberCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + number := *((*Number)(ptr)) + if len(number) == 0 { + stream.writeByte('0') + } else { + stream.WriteRaw(string(number)) + } +} + +func (codec *jsoniterNumberCodec) IsEmpty(ptr unsafe.Pointer) bool { + return len(*((*Number)(ptr))) == 0 +} diff --git a/vendor/github.com/json-iterator/go/reflect_json_raw_message.go b/vendor/github.com/json-iterator/go/reflect_json_raw_message.go new file mode 100644 index 000000000..f2619936c --- /dev/null +++ b/vendor/github.com/json-iterator/go/reflect_json_raw_message.go @@ -0,0 +1,60 @@ +package jsoniter + +import ( + "encoding/json" + "github.com/modern-go/reflect2" + "unsafe" +) + +var jsonRawMessageType = reflect2.TypeOfPtr((*json.RawMessage)(nil)).Elem() +var jsoniterRawMessageType = reflect2.TypeOfPtr((*RawMessage)(nil)).Elem() + +func createEncoderOfJsonRawMessage(ctx *ctx, typ reflect2.Type) ValEncoder { + if typ == jsonRawMessageType { + return &jsonRawMessageCodec{} + } + if typ == jsoniterRawMessageType { + return &jsoniterRawMessageCodec{} + } + return nil +} + +func createDecoderOfJsonRawMessage(ctx *ctx, typ reflect2.Type) ValDecoder { + if typ == jsonRawMessageType { + return &jsonRawMessageCodec{} + } + if typ == jsoniterRawMessageType { + return &jsoniterRawMessageCodec{} + } + return nil +} + +type jsonRawMessageCodec struct { +} + +func (codec *jsonRawMessageCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*json.RawMessage)(ptr)) = json.RawMessage(iter.SkipAndReturnBytes()) +} + +func (codec *jsonRawMessageCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteRaw(string(*((*json.RawMessage)(ptr)))) +} + +func (codec *jsonRawMessageCodec) IsEmpty(ptr unsafe.Pointer) bool { + return len(*((*json.RawMessage)(ptr))) == 0 +} + +type jsoniterRawMessageCodec struct { +} + +func (codec *jsoniterRawMessageCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*RawMessage)(ptr)) = RawMessage(iter.SkipAndReturnBytes()) +} + +func (codec *jsoniterRawMessageCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteRaw(string(*((*RawMessage)(ptr)))) +} + +func (codec *jsoniterRawMessageCodec) IsEmpty(ptr unsafe.Pointer) bool { + return len(*((*RawMessage)(ptr))) == 0 +} diff --git a/vendor/github.com/json-iterator/go/reflect_map.go b/vendor/github.com/json-iterator/go/reflect_map.go new file mode 100644 index 000000000..7f66a88b0 --- /dev/null +++ b/vendor/github.com/json-iterator/go/reflect_map.go @@ -0,0 +1,326 @@ +package jsoniter + +import ( + "fmt" + "github.com/modern-go/reflect2" + "io" + "reflect" + "sort" + "unsafe" +) + +func decoderOfMap(ctx *ctx, typ reflect2.Type) ValDecoder { + mapType := typ.(*reflect2.UnsafeMapType) + keyDecoder := decoderOfMapKey(ctx.append("[mapKey]"), mapType.Key()) + elemDecoder := decoderOfType(ctx.append("[mapElem]"), mapType.Elem()) + return &mapDecoder{ + mapType: mapType, + keyType: mapType.Key(), + elemType: mapType.Elem(), + keyDecoder: keyDecoder, + elemDecoder: elemDecoder, + } +} + +func encoderOfMap(ctx *ctx, typ reflect2.Type) ValEncoder { + mapType := typ.(*reflect2.UnsafeMapType) + if ctx.sortMapKeys { + return &sortKeysMapEncoder{ + mapType: mapType, + keyEncoder: encoderOfMapKey(ctx.append("[mapKey]"), mapType.Key()), + elemEncoder: encoderOfType(ctx.append("[mapElem]"), mapType.Elem()), + } + } + return &mapEncoder{ + mapType: mapType, + keyEncoder: encoderOfMapKey(ctx.append("[mapKey]"), mapType.Key()), + elemEncoder: encoderOfType(ctx.append("[mapElem]"), mapType.Elem()), + } +} + +func decoderOfMapKey(ctx *ctx, typ reflect2.Type) ValDecoder { + decoder := ctx.decoderExtension.CreateMapKeyDecoder(typ) + if decoder != nil { + return decoder + } + for _, extension := range ctx.extraExtensions { + decoder := extension.CreateMapKeyDecoder(typ) + if decoder != nil { + return decoder + } + } + switch typ.Kind() { + case reflect.String: + return decoderOfType(ctx, reflect2.DefaultTypeOfKind(reflect.String)) + case reflect.Bool, + reflect.Uint8, reflect.Int8, + reflect.Uint16, reflect.Int16, + reflect.Uint32, reflect.Int32, + reflect.Uint64, reflect.Int64, + reflect.Uint, reflect.Int, + reflect.Float32, reflect.Float64, + reflect.Uintptr: + typ = reflect2.DefaultTypeOfKind(typ.Kind()) + return &numericMapKeyDecoder{decoderOfType(ctx, typ)} + default: + ptrType := reflect2.PtrTo(typ) + if ptrType.Implements(textMarshalerType) { + return &referenceDecoder{ + &textUnmarshalerDecoder{ + valType: ptrType, + }, + } + } + if typ.Implements(textMarshalerType) { + return &textUnmarshalerDecoder{ + valType: typ, + } + } + return &lazyErrorDecoder{err: fmt.Errorf("unsupported map key type: %v", typ)} + } +} + +func encoderOfMapKey(ctx *ctx, typ reflect2.Type) ValEncoder { + encoder := ctx.encoderExtension.CreateMapKeyEncoder(typ) + if encoder != nil { + return encoder + } + for _, extension := range ctx.extraExtensions { + encoder := extension.CreateMapKeyEncoder(typ) + if encoder != nil { + return encoder + } + } + switch typ.Kind() { + case reflect.String: + return encoderOfType(ctx, reflect2.DefaultTypeOfKind(reflect.String)) + case reflect.Bool, + reflect.Uint8, reflect.Int8, + reflect.Uint16, reflect.Int16, + reflect.Uint32, reflect.Int32, + reflect.Uint64, reflect.Int64, + reflect.Uint, reflect.Int, + reflect.Float32, reflect.Float64, + reflect.Uintptr: + typ = reflect2.DefaultTypeOfKind(typ.Kind()) + return &numericMapKeyEncoder{encoderOfType(ctx, typ)} + default: + if typ == textMarshalerType { + return &directTextMarshalerEncoder{ + stringEncoder: ctx.EncoderOf(reflect2.TypeOf("")), + } + } + if typ.Implements(textMarshalerType) { + return &textMarshalerEncoder{ + valType: typ, + stringEncoder: ctx.EncoderOf(reflect2.TypeOf("")), + } + } + if typ.Kind() == reflect.Interface { + return &dynamicMapKeyEncoder{ctx, typ} + } + return &lazyErrorEncoder{err: fmt.Errorf("unsupported map key type: %v", typ)} + } +} + +type mapDecoder struct { + mapType *reflect2.UnsafeMapType + keyType reflect2.Type + elemType reflect2.Type + keyDecoder ValDecoder + elemDecoder ValDecoder +} + +func (decoder *mapDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + mapType := decoder.mapType + c := iter.nextToken() + if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') + *(*unsafe.Pointer)(ptr) = nil + mapType.UnsafeSet(ptr, mapType.UnsafeNew()) + return + } + if mapType.UnsafeIsNil(ptr) { + mapType.UnsafeSet(ptr, mapType.UnsafeMakeMap(0)) + } + if c != '{' { + iter.ReportError("ReadMapCB", `expect { or n, but found `+string([]byte{c})) + return + } + c = iter.nextToken() + if c == '}' { + return + } + if c != '"' { + iter.ReportError("ReadMapCB", `expect " after }, but found `+string([]byte{c})) + return + } + iter.unreadByte() + key := decoder.keyType.UnsafeNew() + decoder.keyDecoder.Decode(key, iter) + c = iter.nextToken() + if c != ':' { + iter.ReportError("ReadMapCB", "expect : after object field, but found "+string([]byte{c})) + return + } + elem := decoder.elemType.UnsafeNew() + decoder.elemDecoder.Decode(elem, iter) + decoder.mapType.UnsafeSetIndex(ptr, key, elem) + for c = iter.nextToken(); c == ','; c = iter.nextToken() { + key := decoder.keyType.UnsafeNew() + decoder.keyDecoder.Decode(key, iter) + c = iter.nextToken() + if c != ':' { + iter.ReportError("ReadMapCB", "expect : after object field, but found "+string([]byte{c})) + return + } + elem := decoder.elemType.UnsafeNew() + decoder.elemDecoder.Decode(elem, iter) + decoder.mapType.UnsafeSetIndex(ptr, key, elem) + } + if c != '}' { + iter.ReportError("ReadMapCB", `expect }, but found `+string([]byte{c})) + } +} + +type numericMapKeyDecoder struct { + decoder ValDecoder +} + +func (decoder *numericMapKeyDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + c := iter.nextToken() + if c != '"' { + iter.ReportError("ReadMapCB", `expect ", but found `+string([]byte{c})) + return + } + decoder.decoder.Decode(ptr, iter) + c = iter.nextToken() + if c != '"' { + iter.ReportError("ReadMapCB", `expect ", but found `+string([]byte{c})) + return + } +} + +type numericMapKeyEncoder struct { + encoder ValEncoder +} + +func (encoder *numericMapKeyEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.writeByte('"') + encoder.encoder.Encode(ptr, stream) + stream.writeByte('"') +} + +func (encoder *numericMapKeyEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return false +} + +type dynamicMapKeyEncoder struct { + ctx *ctx + valType reflect2.Type +} + +func (encoder *dynamicMapKeyEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + obj := encoder.valType.UnsafeIndirect(ptr) + encoderOfMapKey(encoder.ctx, reflect2.TypeOf(obj)).Encode(reflect2.PtrOf(obj), stream) +} + +func (encoder *dynamicMapKeyEncoder) IsEmpty(ptr unsafe.Pointer) bool { + obj := encoder.valType.UnsafeIndirect(ptr) + return encoderOfMapKey(encoder.ctx, reflect2.TypeOf(obj)).IsEmpty(reflect2.PtrOf(obj)) +} + +type mapEncoder struct { + mapType *reflect2.UnsafeMapType + keyEncoder ValEncoder + elemEncoder ValEncoder +} + +func (encoder *mapEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteObjectStart() + iter := encoder.mapType.UnsafeIterate(ptr) + for i := 0; iter.HasNext(); i++ { + if i != 0 { + stream.WriteMore() + } + key, elem := iter.UnsafeNext() + encoder.keyEncoder.Encode(key, stream) + if stream.indention > 0 { + stream.writeTwoBytes(byte(':'), byte(' ')) + } else { + stream.writeByte(':') + } + encoder.elemEncoder.Encode(elem, stream) + } + stream.WriteObjectEnd() +} + +func (encoder *mapEncoder) IsEmpty(ptr unsafe.Pointer) bool { + iter := encoder.mapType.UnsafeIterate(ptr) + return !iter.HasNext() +} + +type sortKeysMapEncoder struct { + mapType *reflect2.UnsafeMapType + keyEncoder ValEncoder + elemEncoder ValEncoder +} + +func (encoder *sortKeysMapEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + if *(*unsafe.Pointer)(ptr) == nil { + stream.WriteNil() + return + } + stream.WriteObjectStart() + mapIter := encoder.mapType.UnsafeIterate(ptr) + subStream := stream.cfg.BorrowStream(nil) + subIter := stream.cfg.BorrowIterator(nil) + keyValues := encodedKeyValues{} + for mapIter.HasNext() { + subStream.buf = make([]byte, 0, 64) + key, elem := mapIter.UnsafeNext() + encoder.keyEncoder.Encode(key, subStream) + if subStream.Error != nil && subStream.Error != io.EOF && stream.Error == nil { + stream.Error = subStream.Error + } + encodedKey := subStream.Buffer() + subIter.ResetBytes(encodedKey) + decodedKey := subIter.ReadString() + if stream.indention > 0 { + subStream.writeTwoBytes(byte(':'), byte(' ')) + } else { + subStream.writeByte(':') + } + encoder.elemEncoder.Encode(elem, subStream) + keyValues = append(keyValues, encodedKV{ + key: decodedKey, + keyValue: subStream.Buffer(), + }) + } + sort.Sort(keyValues) + for i, keyValue := range keyValues { + if i != 0 { + stream.WriteMore() + } + stream.Write(keyValue.keyValue) + } + stream.WriteObjectEnd() + stream.cfg.ReturnStream(subStream) + stream.cfg.ReturnIterator(subIter) +} + +func (encoder *sortKeysMapEncoder) IsEmpty(ptr unsafe.Pointer) bool { + iter := encoder.mapType.UnsafeIterate(ptr) + return !iter.HasNext() +} + +type encodedKeyValues []encodedKV + +type encodedKV struct { + key string + keyValue []byte +} + +func (sv encodedKeyValues) Len() int { return len(sv) } +func (sv encodedKeyValues) Swap(i, j int) { sv[i], sv[j] = sv[j], sv[i] } +func (sv encodedKeyValues) Less(i, j int) bool { return sv[i].key < sv[j].key } diff --git a/vendor/github.com/json-iterator/go/reflect_marshaler.go b/vendor/github.com/json-iterator/go/reflect_marshaler.go new file mode 100644 index 000000000..58ac959ad --- /dev/null +++ b/vendor/github.com/json-iterator/go/reflect_marshaler.go @@ -0,0 +1,218 @@ +package jsoniter + +import ( + "encoding" + "encoding/json" + "github.com/modern-go/reflect2" + "unsafe" +) + +var marshalerType = reflect2.TypeOfPtr((*json.Marshaler)(nil)).Elem() +var unmarshalerType = reflect2.TypeOfPtr((*json.Unmarshaler)(nil)).Elem() +var textMarshalerType = reflect2.TypeOfPtr((*encoding.TextMarshaler)(nil)).Elem() +var textUnmarshalerType = reflect2.TypeOfPtr((*encoding.TextUnmarshaler)(nil)).Elem() + +func createDecoderOfMarshaler(ctx *ctx, typ reflect2.Type) ValDecoder { + ptrType := reflect2.PtrTo(typ) + if ptrType.Implements(unmarshalerType) { + return &referenceDecoder{ + &unmarshalerDecoder{ptrType}, + } + } + if ptrType.Implements(textUnmarshalerType) { + return &referenceDecoder{ + &textUnmarshalerDecoder{ptrType}, + } + } + return nil +} + +func createEncoderOfMarshaler(ctx *ctx, typ reflect2.Type) ValEncoder { + if typ == marshalerType { + checkIsEmpty := createCheckIsEmpty(ctx, typ) + var encoder ValEncoder = &directMarshalerEncoder{ + checkIsEmpty: checkIsEmpty, + } + return encoder + } + if typ.Implements(marshalerType) { + checkIsEmpty := createCheckIsEmpty(ctx, typ) + var encoder ValEncoder = &marshalerEncoder{ + valType: typ, + checkIsEmpty: checkIsEmpty, + } + return encoder + } + ptrType := reflect2.PtrTo(typ) + if ctx.prefix != "" && ptrType.Implements(marshalerType) { + checkIsEmpty := createCheckIsEmpty(ctx, ptrType) + var encoder ValEncoder = &marshalerEncoder{ + valType: ptrType, + checkIsEmpty: checkIsEmpty, + } + return &referenceEncoder{encoder} + } + if typ == textMarshalerType { + checkIsEmpty := createCheckIsEmpty(ctx, typ) + var encoder ValEncoder = &directTextMarshalerEncoder{ + checkIsEmpty: checkIsEmpty, + stringEncoder: ctx.EncoderOf(reflect2.TypeOf("")), + } + return encoder + } + if typ.Implements(textMarshalerType) { + checkIsEmpty := createCheckIsEmpty(ctx, typ) + var encoder ValEncoder = &textMarshalerEncoder{ + valType: typ, + stringEncoder: ctx.EncoderOf(reflect2.TypeOf("")), + checkIsEmpty: checkIsEmpty, + } + return encoder + } + // if prefix is empty, the type is the root type + if ctx.prefix != "" && ptrType.Implements(textMarshalerType) { + checkIsEmpty := createCheckIsEmpty(ctx, ptrType) + var encoder ValEncoder = &textMarshalerEncoder{ + valType: ptrType, + stringEncoder: ctx.EncoderOf(reflect2.TypeOf("")), + checkIsEmpty: checkIsEmpty, + } + return &referenceEncoder{encoder} + } + return nil +} + +type marshalerEncoder struct { + checkIsEmpty checkIsEmpty + valType reflect2.Type +} + +func (encoder *marshalerEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + obj := encoder.valType.UnsafeIndirect(ptr) + if encoder.valType.IsNullable() && reflect2.IsNil(obj) { + stream.WriteNil() + return + } + marshaler := obj.(json.Marshaler) + bytes, err := marshaler.MarshalJSON() + if err != nil { + stream.Error = err + } else { + stream.Write(bytes) + } +} + +func (encoder *marshalerEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.checkIsEmpty.IsEmpty(ptr) +} + +type directMarshalerEncoder struct { + checkIsEmpty checkIsEmpty +} + +func (encoder *directMarshalerEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + marshaler := *(*json.Marshaler)(ptr) + if marshaler == nil { + stream.WriteNil() + return + } + bytes, err := marshaler.MarshalJSON() + if err != nil { + stream.Error = err + } else { + stream.Write(bytes) + } +} + +func (encoder *directMarshalerEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.checkIsEmpty.IsEmpty(ptr) +} + +type textMarshalerEncoder struct { + valType reflect2.Type + stringEncoder ValEncoder + checkIsEmpty checkIsEmpty +} + +func (encoder *textMarshalerEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + obj := encoder.valType.UnsafeIndirect(ptr) + if encoder.valType.IsNullable() && reflect2.IsNil(obj) { + stream.WriteNil() + return + } + marshaler := (obj).(encoding.TextMarshaler) + bytes, err := marshaler.MarshalText() + if err != nil { + stream.Error = err + } else { + str := string(bytes) + encoder.stringEncoder.Encode(unsafe.Pointer(&str), stream) + } +} + +func (encoder *textMarshalerEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.checkIsEmpty.IsEmpty(ptr) +} + +type directTextMarshalerEncoder struct { + stringEncoder ValEncoder + checkIsEmpty checkIsEmpty +} + +func (encoder *directTextMarshalerEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + marshaler := *(*encoding.TextMarshaler)(ptr) + if marshaler == nil { + stream.WriteNil() + return + } + bytes, err := marshaler.MarshalText() + if err != nil { + stream.Error = err + } else { + str := string(bytes) + encoder.stringEncoder.Encode(unsafe.Pointer(&str), stream) + } +} + +func (encoder *directTextMarshalerEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.checkIsEmpty.IsEmpty(ptr) +} + +type unmarshalerDecoder struct { + valType reflect2.Type +} + +func (decoder *unmarshalerDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + valType := decoder.valType + obj := valType.UnsafeIndirect(ptr) + unmarshaler := obj.(json.Unmarshaler) + iter.nextToken() + iter.unreadByte() // skip spaces + bytes := iter.SkipAndReturnBytes() + err := unmarshaler.UnmarshalJSON(bytes) + if err != nil { + iter.ReportError("unmarshalerDecoder", err.Error()) + } +} + +type textUnmarshalerDecoder struct { + valType reflect2.Type +} + +func (decoder *textUnmarshalerDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + valType := decoder.valType + obj := valType.UnsafeIndirect(ptr) + if reflect2.IsNil(obj) { + ptrType := valType.(*reflect2.UnsafePtrType) + elemType := ptrType.Elem() + elem := elemType.UnsafeNew() + ptrType.UnsafeSet(ptr, unsafe.Pointer(&elem)) + obj = valType.UnsafeIndirect(ptr) + } + unmarshaler := (obj).(encoding.TextUnmarshaler) + str := iter.ReadString() + err := unmarshaler.UnmarshalText([]byte(str)) + if err != nil { + iter.ReportError("textUnmarshalerDecoder", err.Error()) + } +} diff --git a/vendor/github.com/json-iterator/go/reflect_native.go b/vendor/github.com/json-iterator/go/reflect_native.go new file mode 100644 index 000000000..9042eb0cb --- /dev/null +++ b/vendor/github.com/json-iterator/go/reflect_native.go @@ -0,0 +1,451 @@ +package jsoniter + +import ( + "encoding/base64" + "reflect" + "strconv" + "unsafe" + + "github.com/modern-go/reflect2" +) + +const ptrSize = 32 << uintptr(^uintptr(0)>>63) + +func createEncoderOfNative(ctx *ctx, typ reflect2.Type) ValEncoder { + if typ.Kind() == reflect.Slice && typ.(reflect2.SliceType).Elem().Kind() == reflect.Uint8 { + sliceDecoder := decoderOfSlice(ctx, typ) + return &base64Codec{sliceDecoder: sliceDecoder} + } + typeName := typ.String() + kind := typ.Kind() + switch kind { + case reflect.String: + if typeName != "string" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*string)(nil)).Elem()) + } + return &stringCodec{} + case reflect.Int: + if typeName != "int" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*int)(nil)).Elem()) + } + if strconv.IntSize == 32 { + return &int32Codec{} + } + return &int64Codec{} + case reflect.Int8: + if typeName != "int8" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*int8)(nil)).Elem()) + } + return &int8Codec{} + case reflect.Int16: + if typeName != "int16" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*int16)(nil)).Elem()) + } + return &int16Codec{} + case reflect.Int32: + if typeName != "int32" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*int32)(nil)).Elem()) + } + return &int32Codec{} + case reflect.Int64: + if typeName != "int64" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*int64)(nil)).Elem()) + } + return &int64Codec{} + case reflect.Uint: + if typeName != "uint" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*uint)(nil)).Elem()) + } + if strconv.IntSize == 32 { + return &uint32Codec{} + } + return &uint64Codec{} + case reflect.Uint8: + if typeName != "uint8" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*uint8)(nil)).Elem()) + } + return &uint8Codec{} + case reflect.Uint16: + if typeName != "uint16" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*uint16)(nil)).Elem()) + } + return &uint16Codec{} + case reflect.Uint32: + if typeName != "uint32" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*uint32)(nil)).Elem()) + } + return &uint32Codec{} + case reflect.Uintptr: + if typeName != "uintptr" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*uintptr)(nil)).Elem()) + } + if ptrSize == 32 { + return &uint32Codec{} + } + return &uint64Codec{} + case reflect.Uint64: + if typeName != "uint64" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*uint64)(nil)).Elem()) + } + return &uint64Codec{} + case reflect.Float32: + if typeName != "float32" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*float32)(nil)).Elem()) + } + return &float32Codec{} + case reflect.Float64: + if typeName != "float64" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*float64)(nil)).Elem()) + } + return &float64Codec{} + case reflect.Bool: + if typeName != "bool" { + return encoderOfType(ctx, reflect2.TypeOfPtr((*bool)(nil)).Elem()) + } + return &boolCodec{} + } + return nil +} + +func createDecoderOfNative(ctx *ctx, typ reflect2.Type) ValDecoder { + if typ.Kind() == reflect.Slice && typ.(reflect2.SliceType).Elem().Kind() == reflect.Uint8 { + sliceDecoder := decoderOfSlice(ctx, typ) + return &base64Codec{sliceDecoder: sliceDecoder} + } + typeName := typ.String() + switch typ.Kind() { + case reflect.String: + if typeName != "string" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*string)(nil)).Elem()) + } + return &stringCodec{} + case reflect.Int: + if typeName != "int" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*int)(nil)).Elem()) + } + if strconv.IntSize == 32 { + return &int32Codec{} + } + return &int64Codec{} + case reflect.Int8: + if typeName != "int8" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*int8)(nil)).Elem()) + } + return &int8Codec{} + case reflect.Int16: + if typeName != "int16" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*int16)(nil)).Elem()) + } + return &int16Codec{} + case reflect.Int32: + if typeName != "int32" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*int32)(nil)).Elem()) + } + return &int32Codec{} + case reflect.Int64: + if typeName != "int64" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*int64)(nil)).Elem()) + } + return &int64Codec{} + case reflect.Uint: + if typeName != "uint" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*uint)(nil)).Elem()) + } + if strconv.IntSize == 32 { + return &uint32Codec{} + } + return &uint64Codec{} + case reflect.Uint8: + if typeName != "uint8" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*uint8)(nil)).Elem()) + } + return &uint8Codec{} + case reflect.Uint16: + if typeName != "uint16" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*uint16)(nil)).Elem()) + } + return &uint16Codec{} + case reflect.Uint32: + if typeName != "uint32" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*uint32)(nil)).Elem()) + } + return &uint32Codec{} + case reflect.Uintptr: + if typeName != "uintptr" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*uintptr)(nil)).Elem()) + } + if ptrSize == 32 { + return &uint32Codec{} + } + return &uint64Codec{} + case reflect.Uint64: + if typeName != "uint64" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*uint64)(nil)).Elem()) + } + return &uint64Codec{} + case reflect.Float32: + if typeName != "float32" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*float32)(nil)).Elem()) + } + return &float32Codec{} + case reflect.Float64: + if typeName != "float64" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*float64)(nil)).Elem()) + } + return &float64Codec{} + case reflect.Bool: + if typeName != "bool" { + return decoderOfType(ctx, reflect2.TypeOfPtr((*bool)(nil)).Elem()) + } + return &boolCodec{} + } + return nil +} + +type stringCodec struct { +} + +func (codec *stringCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + *((*string)(ptr)) = iter.ReadString() +} + +func (codec *stringCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + str := *((*string)(ptr)) + stream.WriteString(str) +} + +func (codec *stringCodec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*string)(ptr)) == "" +} + +type int8Codec struct { +} + +func (codec *int8Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.ReadNil() { + *((*int8)(ptr)) = iter.ReadInt8() + } +} + +func (codec *int8Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteInt8(*((*int8)(ptr))) +} + +func (codec *int8Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*int8)(ptr)) == 0 +} + +type int16Codec struct { +} + +func (codec *int16Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.ReadNil() { + *((*int16)(ptr)) = iter.ReadInt16() + } +} + +func (codec *int16Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteInt16(*((*int16)(ptr))) +} + +func (codec *int16Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*int16)(ptr)) == 0 +} + +type int32Codec struct { +} + +func (codec *int32Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.ReadNil() { + *((*int32)(ptr)) = iter.ReadInt32() + } +} + +func (codec *int32Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteInt32(*((*int32)(ptr))) +} + +func (codec *int32Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*int32)(ptr)) == 0 +} + +type int64Codec struct { +} + +func (codec *int64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.ReadNil() { + *((*int64)(ptr)) = iter.ReadInt64() + } +} + +func (codec *int64Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteInt64(*((*int64)(ptr))) +} + +func (codec *int64Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*int64)(ptr)) == 0 +} + +type uint8Codec struct { +} + +func (codec *uint8Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.ReadNil() { + *((*uint8)(ptr)) = iter.ReadUint8() + } +} + +func (codec *uint8Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteUint8(*((*uint8)(ptr))) +} + +func (codec *uint8Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*uint8)(ptr)) == 0 +} + +type uint16Codec struct { +} + +func (codec *uint16Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.ReadNil() { + *((*uint16)(ptr)) = iter.ReadUint16() + } +} + +func (codec *uint16Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteUint16(*((*uint16)(ptr))) +} + +func (codec *uint16Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*uint16)(ptr)) == 0 +} + +type uint32Codec struct { +} + +func (codec *uint32Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.ReadNil() { + *((*uint32)(ptr)) = iter.ReadUint32() + } +} + +func (codec *uint32Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteUint32(*((*uint32)(ptr))) +} + +func (codec *uint32Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*uint32)(ptr)) == 0 +} + +type uint64Codec struct { +} + +func (codec *uint64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.ReadNil() { + *((*uint64)(ptr)) = iter.ReadUint64() + } +} + +func (codec *uint64Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteUint64(*((*uint64)(ptr))) +} + +func (codec *uint64Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*uint64)(ptr)) == 0 +} + +type float32Codec struct { +} + +func (codec *float32Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.ReadNil() { + *((*float32)(ptr)) = iter.ReadFloat32() + } +} + +func (codec *float32Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteFloat32(*((*float32)(ptr))) +} + +func (codec *float32Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*float32)(ptr)) == 0 +} + +type float64Codec struct { +} + +func (codec *float64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.ReadNil() { + *((*float64)(ptr)) = iter.ReadFloat64() + } +} + +func (codec *float64Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteFloat64(*((*float64)(ptr))) +} + +func (codec *float64Codec) IsEmpty(ptr unsafe.Pointer) bool { + return *((*float64)(ptr)) == 0 +} + +type boolCodec struct { +} + +func (codec *boolCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.ReadNil() { + *((*bool)(ptr)) = iter.ReadBool() + } +} + +func (codec *boolCodec) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteBool(*((*bool)(ptr))) +} + +func (codec *boolCodec) IsEmpty(ptr unsafe.Pointer) bool { + return !(*((*bool)(ptr))) +} + +type base64Codec struct { + sliceType *reflect2.UnsafeSliceType + sliceDecoder ValDecoder +} + +func (codec *base64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { + if iter.ReadNil() { + codec.sliceType.UnsafeSetNil(ptr) + return + } + switch iter.WhatIsNext() { + case StringValue: + src := iter.ReadString() + dst, err := base64.StdEncoding.DecodeString(src) + if err != nil { + iter.ReportError("decode base64", err.Error()) + } else { + codec.sliceType.UnsafeSet(ptr, unsafe.Pointer(&dst)) + } + case ArrayValue: + codec.sliceDecoder.Decode(ptr, iter) + default: + iter.ReportError("base64Codec", "invalid input") + } +} + +func (codec *base64Codec) Encode(ptr unsafe.Pointer, stream *Stream) { + src := *((*[]byte)(ptr)) + if len(src) == 0 { + stream.WriteNil() + return + } + encoding := base64.StdEncoding + stream.writeByte('"') + size := encoding.EncodedLen(len(src)) + buf := make([]byte, size) + encoding.Encode(buf, src) + stream.buf = append(stream.buf, buf...) + stream.writeByte('"') +} + +func (codec *base64Codec) IsEmpty(ptr unsafe.Pointer) bool { + return len(*((*[]byte)(ptr))) == 0 +} diff --git a/vendor/github.com/json-iterator/go/reflect_optional.go b/vendor/github.com/json-iterator/go/reflect_optional.go new file mode 100644 index 000000000..43ec71d6d --- /dev/null +++ b/vendor/github.com/json-iterator/go/reflect_optional.go @@ -0,0 +1,133 @@ +package jsoniter + +import ( + "github.com/modern-go/reflect2" + "reflect" + "unsafe" +) + +func decoderOfOptional(ctx *ctx, typ reflect2.Type) ValDecoder { + ptrType := typ.(*reflect2.UnsafePtrType) + elemType := ptrType.Elem() + decoder := decoderOfType(ctx, elemType) + if ctx.prefix == "" && elemType.Kind() == reflect.Ptr { + return &dereferenceDecoder{elemType, decoder} + } + return &OptionalDecoder{elemType, decoder} +} + +func encoderOfOptional(ctx *ctx, typ reflect2.Type) ValEncoder { + ptrType := typ.(*reflect2.UnsafePtrType) + elemType := ptrType.Elem() + elemEncoder := encoderOfType(ctx, elemType) + encoder := &OptionalEncoder{elemEncoder} + return encoder +} + +type OptionalDecoder struct { + ValueType reflect2.Type + ValueDecoder ValDecoder +} + +func (decoder *OptionalDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if iter.ReadNil() { + *((*unsafe.Pointer)(ptr)) = nil + } else { + if *((*unsafe.Pointer)(ptr)) == nil { + //pointer to null, we have to allocate memory to hold the value + newPtr := decoder.ValueType.UnsafeNew() + decoder.ValueDecoder.Decode(newPtr, iter) + *((*unsafe.Pointer)(ptr)) = newPtr + } else { + //reuse existing instance + decoder.ValueDecoder.Decode(*((*unsafe.Pointer)(ptr)), iter) + } + } +} + +type dereferenceDecoder struct { + // only to deference a pointer + valueType reflect2.Type + valueDecoder ValDecoder +} + +func (decoder *dereferenceDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if *((*unsafe.Pointer)(ptr)) == nil { + //pointer to null, we have to allocate memory to hold the value + newPtr := decoder.valueType.UnsafeNew() + decoder.valueDecoder.Decode(newPtr, iter) + *((*unsafe.Pointer)(ptr)) = newPtr + } else { + //reuse existing instance + decoder.valueDecoder.Decode(*((*unsafe.Pointer)(ptr)), iter) + } +} + +type OptionalEncoder struct { + ValueEncoder ValEncoder +} + +func (encoder *OptionalEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + if *((*unsafe.Pointer)(ptr)) == nil { + stream.WriteNil() + } else { + encoder.ValueEncoder.Encode(*((*unsafe.Pointer)(ptr)), stream) + } +} + +func (encoder *OptionalEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return *((*unsafe.Pointer)(ptr)) == nil +} + +type dereferenceEncoder struct { + ValueEncoder ValEncoder +} + +func (encoder *dereferenceEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + if *((*unsafe.Pointer)(ptr)) == nil { + stream.WriteNil() + } else { + encoder.ValueEncoder.Encode(*((*unsafe.Pointer)(ptr)), stream) + } +} + +func (encoder *dereferenceEncoder) IsEmpty(ptr unsafe.Pointer) bool { + dePtr := *((*unsafe.Pointer)(ptr)) + if dePtr == nil { + return true + } + return encoder.ValueEncoder.IsEmpty(dePtr) +} + +func (encoder *dereferenceEncoder) IsEmbeddedPtrNil(ptr unsafe.Pointer) bool { + deReferenced := *((*unsafe.Pointer)(ptr)) + if deReferenced == nil { + return true + } + isEmbeddedPtrNil, converted := encoder.ValueEncoder.(IsEmbeddedPtrNil) + if !converted { + return false + } + fieldPtr := unsafe.Pointer(deReferenced) + return isEmbeddedPtrNil.IsEmbeddedPtrNil(fieldPtr) +} + +type referenceEncoder struct { + encoder ValEncoder +} + +func (encoder *referenceEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + encoder.encoder.Encode(unsafe.Pointer(&ptr), stream) +} + +func (encoder *referenceEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.encoder.IsEmpty(unsafe.Pointer(&ptr)) +} + +type referenceDecoder struct { + decoder ValDecoder +} + +func (decoder *referenceDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + decoder.decoder.Decode(unsafe.Pointer(&ptr), iter) +} diff --git a/vendor/github.com/json-iterator/go/reflect_slice.go b/vendor/github.com/json-iterator/go/reflect_slice.go new file mode 100644 index 000000000..9441d79df --- /dev/null +++ b/vendor/github.com/json-iterator/go/reflect_slice.go @@ -0,0 +1,99 @@ +package jsoniter + +import ( + "fmt" + "github.com/modern-go/reflect2" + "io" + "unsafe" +) + +func decoderOfSlice(ctx *ctx, typ reflect2.Type) ValDecoder { + sliceType := typ.(*reflect2.UnsafeSliceType) + decoder := decoderOfType(ctx.append("[sliceElem]"), sliceType.Elem()) + return &sliceDecoder{sliceType, decoder} +} + +func encoderOfSlice(ctx *ctx, typ reflect2.Type) ValEncoder { + sliceType := typ.(*reflect2.UnsafeSliceType) + encoder := encoderOfType(ctx.append("[sliceElem]"), sliceType.Elem()) + return &sliceEncoder{sliceType, encoder} +} + +type sliceEncoder struct { + sliceType *reflect2.UnsafeSliceType + elemEncoder ValEncoder +} + +func (encoder *sliceEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + if encoder.sliceType.UnsafeIsNil(ptr) { + stream.WriteNil() + return + } + length := encoder.sliceType.UnsafeLengthOf(ptr) + if length == 0 { + stream.WriteEmptyArray() + return + } + stream.WriteArrayStart() + encoder.elemEncoder.Encode(encoder.sliceType.UnsafeGetIndex(ptr, 0), stream) + for i := 1; i < length; i++ { + stream.WriteMore() + elemPtr := encoder.sliceType.UnsafeGetIndex(ptr, i) + encoder.elemEncoder.Encode(elemPtr, stream) + } + stream.WriteArrayEnd() + if stream.Error != nil && stream.Error != io.EOF { + stream.Error = fmt.Errorf("%v: %s", encoder.sliceType, stream.Error.Error()) + } +} + +func (encoder *sliceEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.sliceType.UnsafeLengthOf(ptr) == 0 +} + +type sliceDecoder struct { + sliceType *reflect2.UnsafeSliceType + elemDecoder ValDecoder +} + +func (decoder *sliceDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + decoder.doDecode(ptr, iter) + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v: %s", decoder.sliceType, iter.Error.Error()) + } +} + +func (decoder *sliceDecoder) doDecode(ptr unsafe.Pointer, iter *Iterator) { + c := iter.nextToken() + sliceType := decoder.sliceType + if c == 'n' { + iter.skipThreeBytes('u', 'l', 'l') + sliceType.UnsafeSetNil(ptr) + return + } + if c != '[' { + iter.ReportError("decode slice", "expect [ or n, but found "+string([]byte{c})) + return + } + c = iter.nextToken() + if c == ']' { + sliceType.UnsafeSet(ptr, sliceType.UnsafeMakeSlice(0, 0)) + return + } + iter.unreadByte() + sliceType.UnsafeGrow(ptr, 1) + elemPtr := sliceType.UnsafeGetIndex(ptr, 0) + decoder.elemDecoder.Decode(elemPtr, iter) + length := 1 + for c = iter.nextToken(); c == ','; c = iter.nextToken() { + idx := length + length += 1 + sliceType.UnsafeGrow(ptr, length) + elemPtr = sliceType.UnsafeGetIndex(ptr, idx) + decoder.elemDecoder.Decode(elemPtr, iter) + } + if c != ']' { + iter.ReportError("decode slice", "expect ], but found "+string([]byte{c})) + return + } +} diff --git a/vendor/github.com/json-iterator/go/reflect_struct_decoder.go b/vendor/github.com/json-iterator/go/reflect_struct_decoder.go new file mode 100644 index 000000000..355d2d116 --- /dev/null +++ b/vendor/github.com/json-iterator/go/reflect_struct_decoder.go @@ -0,0 +1,1048 @@ +package jsoniter + +import ( + "fmt" + "io" + "strings" + "unsafe" + + "github.com/modern-go/reflect2" +) + +func decoderOfStruct(ctx *ctx, typ reflect2.Type) ValDecoder { + bindings := map[string]*Binding{} + structDescriptor := describeStruct(ctx, typ) + for _, binding := range structDescriptor.Fields { + for _, fromName := range binding.FromNames { + old := bindings[fromName] + if old == nil { + bindings[fromName] = binding + continue + } + ignoreOld, ignoreNew := resolveConflictBinding(ctx.frozenConfig, old, binding) + if ignoreOld { + delete(bindings, fromName) + } + if !ignoreNew { + bindings[fromName] = binding + } + } + } + fields := map[string]*structFieldDecoder{} + for k, binding := range bindings { + fields[k] = binding.Decoder.(*structFieldDecoder) + } + + if !ctx.caseSensitive() { + for k, binding := range bindings { + if _, found := fields[strings.ToLower(k)]; !found { + fields[strings.ToLower(k)] = binding.Decoder.(*structFieldDecoder) + } + } + } + + return createStructDecoder(ctx, typ, fields) +} + +func createStructDecoder(ctx *ctx, typ reflect2.Type, fields map[string]*structFieldDecoder) ValDecoder { + if ctx.disallowUnknownFields { + return &generalStructDecoder{typ: typ, fields: fields, disallowUnknownFields: true} + } + knownHash := map[int64]struct{}{ + 0: {}, + } + + switch len(fields) { + case 0: + return &skipObjectDecoder{typ} + case 1: + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName, ctx.caseSensitive()) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields, false} + } + knownHash[fieldHash] = struct{}{} + return &oneFieldStructDecoder{typ, fieldHash, fieldDecoder} + } + case 2: + var fieldHash1 int64 + var fieldHash2 int64 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName, ctx.caseSensitive()) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields, false} + } + knownHash[fieldHash] = struct{}{} + if fieldHash1 == 0 { + fieldHash1 = fieldHash + fieldDecoder1 = fieldDecoder + } else { + fieldHash2 = fieldHash + fieldDecoder2 = fieldDecoder + } + } + return &twoFieldsStructDecoder{typ, fieldHash1, fieldDecoder1, fieldHash2, fieldDecoder2} + case 3: + var fieldName1 int64 + var fieldName2 int64 + var fieldName3 int64 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName, ctx.caseSensitive()) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields, false} + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } + } + return &threeFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, + fieldName2, fieldDecoder2, + fieldName3, fieldDecoder3} + case 4: + var fieldName1 int64 + var fieldName2 int64 + var fieldName3 int64 + var fieldName4 int64 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName, ctx.caseSensitive()) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields, false} + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } + } + return &fourFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, + fieldName2, fieldDecoder2, + fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4} + case 5: + var fieldName1 int64 + var fieldName2 int64 + var fieldName3 int64 + var fieldName4 int64 + var fieldName5 int64 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + var fieldDecoder5 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName, ctx.caseSensitive()) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields, false} + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else if fieldName4 == 0 { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } else { + fieldName5 = fieldHash + fieldDecoder5 = fieldDecoder + } + } + return &fiveFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, + fieldName2, fieldDecoder2, + fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4, + fieldName5, fieldDecoder5} + case 6: + var fieldName1 int64 + var fieldName2 int64 + var fieldName3 int64 + var fieldName4 int64 + var fieldName5 int64 + var fieldName6 int64 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + var fieldDecoder5 *structFieldDecoder + var fieldDecoder6 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName, ctx.caseSensitive()) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields, false} + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else if fieldName4 == 0 { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } else if fieldName5 == 0 { + fieldName5 = fieldHash + fieldDecoder5 = fieldDecoder + } else { + fieldName6 = fieldHash + fieldDecoder6 = fieldDecoder + } + } + return &sixFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, + fieldName2, fieldDecoder2, + fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4, + fieldName5, fieldDecoder5, + fieldName6, fieldDecoder6} + case 7: + var fieldName1 int64 + var fieldName2 int64 + var fieldName3 int64 + var fieldName4 int64 + var fieldName5 int64 + var fieldName6 int64 + var fieldName7 int64 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + var fieldDecoder5 *structFieldDecoder + var fieldDecoder6 *structFieldDecoder + var fieldDecoder7 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName, ctx.caseSensitive()) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields, false} + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else if fieldName4 == 0 { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } else if fieldName5 == 0 { + fieldName5 = fieldHash + fieldDecoder5 = fieldDecoder + } else if fieldName6 == 0 { + fieldName6 = fieldHash + fieldDecoder6 = fieldDecoder + } else { + fieldName7 = fieldHash + fieldDecoder7 = fieldDecoder + } + } + return &sevenFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, + fieldName2, fieldDecoder2, + fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4, + fieldName5, fieldDecoder5, + fieldName6, fieldDecoder6, + fieldName7, fieldDecoder7} + case 8: + var fieldName1 int64 + var fieldName2 int64 + var fieldName3 int64 + var fieldName4 int64 + var fieldName5 int64 + var fieldName6 int64 + var fieldName7 int64 + var fieldName8 int64 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + var fieldDecoder5 *structFieldDecoder + var fieldDecoder6 *structFieldDecoder + var fieldDecoder7 *structFieldDecoder + var fieldDecoder8 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName, ctx.caseSensitive()) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields, false} + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else if fieldName4 == 0 { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } else if fieldName5 == 0 { + fieldName5 = fieldHash + fieldDecoder5 = fieldDecoder + } else if fieldName6 == 0 { + fieldName6 = fieldHash + fieldDecoder6 = fieldDecoder + } else if fieldName7 == 0 { + fieldName7 = fieldHash + fieldDecoder7 = fieldDecoder + } else { + fieldName8 = fieldHash + fieldDecoder8 = fieldDecoder + } + } + return &eightFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, + fieldName2, fieldDecoder2, + fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4, + fieldName5, fieldDecoder5, + fieldName6, fieldDecoder6, + fieldName7, fieldDecoder7, + fieldName8, fieldDecoder8} + case 9: + var fieldName1 int64 + var fieldName2 int64 + var fieldName3 int64 + var fieldName4 int64 + var fieldName5 int64 + var fieldName6 int64 + var fieldName7 int64 + var fieldName8 int64 + var fieldName9 int64 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + var fieldDecoder5 *structFieldDecoder + var fieldDecoder6 *structFieldDecoder + var fieldDecoder7 *structFieldDecoder + var fieldDecoder8 *structFieldDecoder + var fieldDecoder9 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName, ctx.caseSensitive()) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields, false} + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else if fieldName4 == 0 { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } else if fieldName5 == 0 { + fieldName5 = fieldHash + fieldDecoder5 = fieldDecoder + } else if fieldName6 == 0 { + fieldName6 = fieldHash + fieldDecoder6 = fieldDecoder + } else if fieldName7 == 0 { + fieldName7 = fieldHash + fieldDecoder7 = fieldDecoder + } else if fieldName8 == 0 { + fieldName8 = fieldHash + fieldDecoder8 = fieldDecoder + } else { + fieldName9 = fieldHash + fieldDecoder9 = fieldDecoder + } + } + return &nineFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, + fieldName2, fieldDecoder2, + fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4, + fieldName5, fieldDecoder5, + fieldName6, fieldDecoder6, + fieldName7, fieldDecoder7, + fieldName8, fieldDecoder8, + fieldName9, fieldDecoder9} + case 10: + var fieldName1 int64 + var fieldName2 int64 + var fieldName3 int64 + var fieldName4 int64 + var fieldName5 int64 + var fieldName6 int64 + var fieldName7 int64 + var fieldName8 int64 + var fieldName9 int64 + var fieldName10 int64 + var fieldDecoder1 *structFieldDecoder + var fieldDecoder2 *structFieldDecoder + var fieldDecoder3 *structFieldDecoder + var fieldDecoder4 *structFieldDecoder + var fieldDecoder5 *structFieldDecoder + var fieldDecoder6 *structFieldDecoder + var fieldDecoder7 *structFieldDecoder + var fieldDecoder8 *structFieldDecoder + var fieldDecoder9 *structFieldDecoder + var fieldDecoder10 *structFieldDecoder + for fieldName, fieldDecoder := range fields { + fieldHash := calcHash(fieldName, ctx.caseSensitive()) + _, known := knownHash[fieldHash] + if known { + return &generalStructDecoder{typ, fields, false} + } + knownHash[fieldHash] = struct{}{} + if fieldName1 == 0 { + fieldName1 = fieldHash + fieldDecoder1 = fieldDecoder + } else if fieldName2 == 0 { + fieldName2 = fieldHash + fieldDecoder2 = fieldDecoder + } else if fieldName3 == 0 { + fieldName3 = fieldHash + fieldDecoder3 = fieldDecoder + } else if fieldName4 == 0 { + fieldName4 = fieldHash + fieldDecoder4 = fieldDecoder + } else if fieldName5 == 0 { + fieldName5 = fieldHash + fieldDecoder5 = fieldDecoder + } else if fieldName6 == 0 { + fieldName6 = fieldHash + fieldDecoder6 = fieldDecoder + } else if fieldName7 == 0 { + fieldName7 = fieldHash + fieldDecoder7 = fieldDecoder + } else if fieldName8 == 0 { + fieldName8 = fieldHash + fieldDecoder8 = fieldDecoder + } else if fieldName9 == 0 { + fieldName9 = fieldHash + fieldDecoder9 = fieldDecoder + } else { + fieldName10 = fieldHash + fieldDecoder10 = fieldDecoder + } + } + return &tenFieldsStructDecoder{typ, + fieldName1, fieldDecoder1, + fieldName2, fieldDecoder2, + fieldName3, fieldDecoder3, + fieldName4, fieldDecoder4, + fieldName5, fieldDecoder5, + fieldName6, fieldDecoder6, + fieldName7, fieldDecoder7, + fieldName8, fieldDecoder8, + fieldName9, fieldDecoder9, + fieldName10, fieldDecoder10} + } + return &generalStructDecoder{typ, fields, false} +} + +type generalStructDecoder struct { + typ reflect2.Type + fields map[string]*structFieldDecoder + disallowUnknownFields bool +} + +func (decoder *generalStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + var c byte + for c = ','; c == ','; c = iter.nextToken() { + decoder.decodeOneField(ptr, iter) + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) + } + if c != '}' { + iter.ReportError("struct Decode", `expect }, but found `+string([]byte{c})) + } +} + +func (decoder *generalStructDecoder) decodeOneField(ptr unsafe.Pointer, iter *Iterator) { + var field string + var fieldDecoder *structFieldDecoder + if iter.cfg.objectFieldMustBeSimpleString { + fieldBytes := iter.ReadStringAsSlice() + field = *(*string)(unsafe.Pointer(&fieldBytes)) + fieldDecoder = decoder.fields[field] + if fieldDecoder == nil && !iter.cfg.caseSensitive { + fieldDecoder = decoder.fields[strings.ToLower(field)] + } + } else { + field = iter.ReadString() + fieldDecoder = decoder.fields[field] + if fieldDecoder == nil && !iter.cfg.caseSensitive { + fieldDecoder = decoder.fields[strings.ToLower(field)] + } + } + if fieldDecoder == nil { + msg := "found unknown field: " + field + if decoder.disallowUnknownFields { + iter.ReportError("ReadObject", msg) + } + c := iter.nextToken() + if c != ':' { + iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c})) + } + iter.Skip() + return + } + c := iter.nextToken() + if c != ':' { + iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c})) + } + fieldDecoder.Decode(ptr, iter) +} + +type skipObjectDecoder struct { + typ reflect2.Type +} + +func (decoder *skipObjectDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + valueType := iter.WhatIsNext() + if valueType != ObjectValue && valueType != NilValue { + iter.ReportError("skipObjectDecoder", "expect object or null") + return + } + iter.Skip() +} + +type oneFieldStructDecoder struct { + typ reflect2.Type + fieldHash int64 + fieldDecoder *structFieldDecoder +} + +func (decoder *oneFieldStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + if iter.readFieldHash() == decoder.fieldHash { + decoder.fieldDecoder.Decode(ptr, iter) + } else { + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) + } +} + +type twoFieldsStructDecoder struct { + typ reflect2.Type + fieldHash1 int64 + fieldDecoder1 *structFieldDecoder + fieldHash2 int64 + fieldDecoder2 *structFieldDecoder +} + +func (decoder *twoFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) + } +} + +type threeFieldsStructDecoder struct { + typ reflect2.Type + fieldHash1 int64 + fieldDecoder1 *structFieldDecoder + fieldHash2 int64 + fieldDecoder2 *structFieldDecoder + fieldHash3 int64 + fieldDecoder3 *structFieldDecoder +} + +func (decoder *threeFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) + } +} + +type fourFieldsStructDecoder struct { + typ reflect2.Type + fieldHash1 int64 + fieldDecoder1 *structFieldDecoder + fieldHash2 int64 + fieldDecoder2 *structFieldDecoder + fieldHash3 int64 + fieldDecoder3 *structFieldDecoder + fieldHash4 int64 + fieldDecoder4 *structFieldDecoder +} + +func (decoder *fourFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) + } +} + +type fiveFieldsStructDecoder struct { + typ reflect2.Type + fieldHash1 int64 + fieldDecoder1 *structFieldDecoder + fieldHash2 int64 + fieldDecoder2 *structFieldDecoder + fieldHash3 int64 + fieldDecoder3 *structFieldDecoder + fieldHash4 int64 + fieldDecoder4 *structFieldDecoder + fieldHash5 int64 + fieldDecoder5 *structFieldDecoder +} + +func (decoder *fiveFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + case decoder.fieldHash5: + decoder.fieldDecoder5.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) + } +} + +type sixFieldsStructDecoder struct { + typ reflect2.Type + fieldHash1 int64 + fieldDecoder1 *structFieldDecoder + fieldHash2 int64 + fieldDecoder2 *structFieldDecoder + fieldHash3 int64 + fieldDecoder3 *structFieldDecoder + fieldHash4 int64 + fieldDecoder4 *structFieldDecoder + fieldHash5 int64 + fieldDecoder5 *structFieldDecoder + fieldHash6 int64 + fieldDecoder6 *structFieldDecoder +} + +func (decoder *sixFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + case decoder.fieldHash5: + decoder.fieldDecoder5.Decode(ptr, iter) + case decoder.fieldHash6: + decoder.fieldDecoder6.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) + } +} + +type sevenFieldsStructDecoder struct { + typ reflect2.Type + fieldHash1 int64 + fieldDecoder1 *structFieldDecoder + fieldHash2 int64 + fieldDecoder2 *structFieldDecoder + fieldHash3 int64 + fieldDecoder3 *structFieldDecoder + fieldHash4 int64 + fieldDecoder4 *structFieldDecoder + fieldHash5 int64 + fieldDecoder5 *structFieldDecoder + fieldHash6 int64 + fieldDecoder6 *structFieldDecoder + fieldHash7 int64 + fieldDecoder7 *structFieldDecoder +} + +func (decoder *sevenFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + case decoder.fieldHash5: + decoder.fieldDecoder5.Decode(ptr, iter) + case decoder.fieldHash6: + decoder.fieldDecoder6.Decode(ptr, iter) + case decoder.fieldHash7: + decoder.fieldDecoder7.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) + } +} + +type eightFieldsStructDecoder struct { + typ reflect2.Type + fieldHash1 int64 + fieldDecoder1 *structFieldDecoder + fieldHash2 int64 + fieldDecoder2 *structFieldDecoder + fieldHash3 int64 + fieldDecoder3 *structFieldDecoder + fieldHash4 int64 + fieldDecoder4 *structFieldDecoder + fieldHash5 int64 + fieldDecoder5 *structFieldDecoder + fieldHash6 int64 + fieldDecoder6 *structFieldDecoder + fieldHash7 int64 + fieldDecoder7 *structFieldDecoder + fieldHash8 int64 + fieldDecoder8 *structFieldDecoder +} + +func (decoder *eightFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + case decoder.fieldHash5: + decoder.fieldDecoder5.Decode(ptr, iter) + case decoder.fieldHash6: + decoder.fieldDecoder6.Decode(ptr, iter) + case decoder.fieldHash7: + decoder.fieldDecoder7.Decode(ptr, iter) + case decoder.fieldHash8: + decoder.fieldDecoder8.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) + } +} + +type nineFieldsStructDecoder struct { + typ reflect2.Type + fieldHash1 int64 + fieldDecoder1 *structFieldDecoder + fieldHash2 int64 + fieldDecoder2 *structFieldDecoder + fieldHash3 int64 + fieldDecoder3 *structFieldDecoder + fieldHash4 int64 + fieldDecoder4 *structFieldDecoder + fieldHash5 int64 + fieldDecoder5 *structFieldDecoder + fieldHash6 int64 + fieldDecoder6 *structFieldDecoder + fieldHash7 int64 + fieldDecoder7 *structFieldDecoder + fieldHash8 int64 + fieldDecoder8 *structFieldDecoder + fieldHash9 int64 + fieldDecoder9 *structFieldDecoder +} + +func (decoder *nineFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + case decoder.fieldHash5: + decoder.fieldDecoder5.Decode(ptr, iter) + case decoder.fieldHash6: + decoder.fieldDecoder6.Decode(ptr, iter) + case decoder.fieldHash7: + decoder.fieldDecoder7.Decode(ptr, iter) + case decoder.fieldHash8: + decoder.fieldDecoder8.Decode(ptr, iter) + case decoder.fieldHash9: + decoder.fieldDecoder9.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) + } +} + +type tenFieldsStructDecoder struct { + typ reflect2.Type + fieldHash1 int64 + fieldDecoder1 *structFieldDecoder + fieldHash2 int64 + fieldDecoder2 *structFieldDecoder + fieldHash3 int64 + fieldDecoder3 *structFieldDecoder + fieldHash4 int64 + fieldDecoder4 *structFieldDecoder + fieldHash5 int64 + fieldDecoder5 *structFieldDecoder + fieldHash6 int64 + fieldDecoder6 *structFieldDecoder + fieldHash7 int64 + fieldDecoder7 *structFieldDecoder + fieldHash8 int64 + fieldDecoder8 *structFieldDecoder + fieldHash9 int64 + fieldDecoder9 *structFieldDecoder + fieldHash10 int64 + fieldDecoder10 *structFieldDecoder +} + +func (decoder *tenFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + if !iter.readObjectStart() { + return + } + for { + switch iter.readFieldHash() { + case decoder.fieldHash1: + decoder.fieldDecoder1.Decode(ptr, iter) + case decoder.fieldHash2: + decoder.fieldDecoder2.Decode(ptr, iter) + case decoder.fieldHash3: + decoder.fieldDecoder3.Decode(ptr, iter) + case decoder.fieldHash4: + decoder.fieldDecoder4.Decode(ptr, iter) + case decoder.fieldHash5: + decoder.fieldDecoder5.Decode(ptr, iter) + case decoder.fieldHash6: + decoder.fieldDecoder6.Decode(ptr, iter) + case decoder.fieldHash7: + decoder.fieldDecoder7.Decode(ptr, iter) + case decoder.fieldHash8: + decoder.fieldDecoder8.Decode(ptr, iter) + case decoder.fieldHash9: + decoder.fieldDecoder9.Decode(ptr, iter) + case decoder.fieldHash10: + decoder.fieldDecoder10.Decode(ptr, iter) + default: + iter.Skip() + } + if iter.isObjectEnd() { + break + } + } + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) + } +} + +type structFieldDecoder struct { + field reflect2.StructField + fieldDecoder ValDecoder +} + +func (decoder *structFieldDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + fieldPtr := decoder.field.UnsafeGet(ptr) + decoder.fieldDecoder.Decode(fieldPtr, iter) + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = fmt.Errorf("%s: %s", decoder.field.Name(), iter.Error.Error()) + } +} + +type stringModeStringDecoder struct { + elemDecoder ValDecoder + cfg *frozenConfig +} + +func (decoder *stringModeStringDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + decoder.elemDecoder.Decode(ptr, iter) + str := *((*string)(ptr)) + tempIter := decoder.cfg.BorrowIterator([]byte(str)) + defer decoder.cfg.ReturnIterator(tempIter) + *((*string)(ptr)) = tempIter.ReadString() +} + +type stringModeNumberDecoder struct { + elemDecoder ValDecoder +} + +func (decoder *stringModeNumberDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { + c := iter.nextToken() + if c != '"' { + iter.ReportError("stringModeNumberDecoder", `expect ", but found `+string([]byte{c})) + return + } + decoder.elemDecoder.Decode(ptr, iter) + if iter.Error != nil { + return + } + c = iter.readByte() + if c != '"' { + iter.ReportError("stringModeNumberDecoder", `expect ", but found `+string([]byte{c})) + return + } +} diff --git a/vendor/github.com/json-iterator/go/reflect_struct_encoder.go b/vendor/github.com/json-iterator/go/reflect_struct_encoder.go new file mode 100644 index 000000000..d0759cf64 --- /dev/null +++ b/vendor/github.com/json-iterator/go/reflect_struct_encoder.go @@ -0,0 +1,210 @@ +package jsoniter + +import ( + "fmt" + "github.com/modern-go/reflect2" + "io" + "reflect" + "unsafe" +) + +func encoderOfStruct(ctx *ctx, typ reflect2.Type) ValEncoder { + type bindingTo struct { + binding *Binding + toName string + ignored bool + } + orderedBindings := []*bindingTo{} + structDescriptor := describeStruct(ctx, typ) + for _, binding := range structDescriptor.Fields { + for _, toName := range binding.ToNames { + new := &bindingTo{ + binding: binding, + toName: toName, + } + for _, old := range orderedBindings { + if old.toName != toName { + continue + } + old.ignored, new.ignored = resolveConflictBinding(ctx.frozenConfig, old.binding, new.binding) + } + orderedBindings = append(orderedBindings, new) + } + } + if len(orderedBindings) == 0 { + return &emptyStructEncoder{} + } + finalOrderedFields := []structFieldTo{} + for _, bindingTo := range orderedBindings { + if !bindingTo.ignored { + finalOrderedFields = append(finalOrderedFields, structFieldTo{ + encoder: bindingTo.binding.Encoder.(*structFieldEncoder), + toName: bindingTo.toName, + }) + } + } + return &structEncoder{typ, finalOrderedFields} +} + +func createCheckIsEmpty(ctx *ctx, typ reflect2.Type) checkIsEmpty { + encoder := createEncoderOfNative(ctx, typ) + if encoder != nil { + return encoder + } + kind := typ.Kind() + switch kind { + case reflect.Interface: + return &dynamicEncoder{typ} + case reflect.Struct: + return &structEncoder{typ: typ} + case reflect.Array: + return &arrayEncoder{} + case reflect.Slice: + return &sliceEncoder{} + case reflect.Map: + return encoderOfMap(ctx, typ) + case reflect.Ptr: + return &OptionalEncoder{} + default: + return &lazyErrorEncoder{err: fmt.Errorf("unsupported type: %v", typ)} + } +} + +func resolveConflictBinding(cfg *frozenConfig, old, new *Binding) (ignoreOld, ignoreNew bool) { + newTagged := new.Field.Tag().Get(cfg.getTagKey()) != "" + oldTagged := old.Field.Tag().Get(cfg.getTagKey()) != "" + if newTagged { + if oldTagged { + if len(old.levels) > len(new.levels) { + return true, false + } else if len(new.levels) > len(old.levels) { + return false, true + } else { + return true, true + } + } else { + return true, false + } + } else { + if oldTagged { + return true, false + } + if len(old.levels) > len(new.levels) { + return true, false + } else if len(new.levels) > len(old.levels) { + return false, true + } else { + return true, true + } + } +} + +type structFieldEncoder struct { + field reflect2.StructField + fieldEncoder ValEncoder + omitempty bool +} + +func (encoder *structFieldEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + fieldPtr := encoder.field.UnsafeGet(ptr) + encoder.fieldEncoder.Encode(fieldPtr, stream) + if stream.Error != nil && stream.Error != io.EOF { + stream.Error = fmt.Errorf("%s: %s", encoder.field.Name(), stream.Error.Error()) + } +} + +func (encoder *structFieldEncoder) IsEmpty(ptr unsafe.Pointer) bool { + fieldPtr := encoder.field.UnsafeGet(ptr) + return encoder.fieldEncoder.IsEmpty(fieldPtr) +} + +func (encoder *structFieldEncoder) IsEmbeddedPtrNil(ptr unsafe.Pointer) bool { + isEmbeddedPtrNil, converted := encoder.fieldEncoder.(IsEmbeddedPtrNil) + if !converted { + return false + } + fieldPtr := encoder.field.UnsafeGet(ptr) + return isEmbeddedPtrNil.IsEmbeddedPtrNil(fieldPtr) +} + +type IsEmbeddedPtrNil interface { + IsEmbeddedPtrNil(ptr unsafe.Pointer) bool +} + +type structEncoder struct { + typ reflect2.Type + fields []structFieldTo +} + +type structFieldTo struct { + encoder *structFieldEncoder + toName string +} + +func (encoder *structEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteObjectStart() + isNotFirst := false + for _, field := range encoder.fields { + if field.encoder.omitempty && field.encoder.IsEmpty(ptr) { + continue + } + if field.encoder.IsEmbeddedPtrNil(ptr) { + continue + } + if isNotFirst { + stream.WriteMore() + } + stream.WriteObjectField(field.toName) + field.encoder.Encode(ptr, stream) + isNotFirst = true + } + stream.WriteObjectEnd() + if stream.Error != nil && stream.Error != io.EOF { + stream.Error = fmt.Errorf("%v.%s", encoder.typ, stream.Error.Error()) + } +} + +func (encoder *structEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return false +} + +type emptyStructEncoder struct { +} + +func (encoder *emptyStructEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.WriteEmptyObject() +} + +func (encoder *emptyStructEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return false +} + +type stringModeNumberEncoder struct { + elemEncoder ValEncoder +} + +func (encoder *stringModeNumberEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + stream.writeByte('"') + encoder.elemEncoder.Encode(ptr, stream) + stream.writeByte('"') +} + +func (encoder *stringModeNumberEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.elemEncoder.IsEmpty(ptr) +} + +type stringModeStringEncoder struct { + elemEncoder ValEncoder + cfg *frozenConfig +} + +func (encoder *stringModeStringEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + tempStream := encoder.cfg.BorrowStream(nil) + defer encoder.cfg.ReturnStream(tempStream) + encoder.elemEncoder.Encode(ptr, tempStream) + stream.WriteString(string(tempStream.Buffer())) +} + +func (encoder *stringModeStringEncoder) IsEmpty(ptr unsafe.Pointer) bool { + return encoder.elemEncoder.IsEmpty(ptr) +} diff --git a/vendor/github.com/json-iterator/go/stream.go b/vendor/github.com/json-iterator/go/stream.go new file mode 100644 index 000000000..17662fded --- /dev/null +++ b/vendor/github.com/json-iterator/go/stream.go @@ -0,0 +1,211 @@ +package jsoniter + +import ( + "io" +) + +// stream is a io.Writer like object, with JSON specific write functions. +// Error is not returned as return value, but stored as Error member on this stream instance. +type Stream struct { + cfg *frozenConfig + out io.Writer + buf []byte + Error error + indention int + Attachment interface{} // open for customized encoder +} + +// NewStream create new stream instance. +// cfg can be jsoniter.ConfigDefault. +// out can be nil if write to internal buffer. +// bufSize is the initial size for the internal buffer in bytes. +func NewStream(cfg API, out io.Writer, bufSize int) *Stream { + return &Stream{ + cfg: cfg.(*frozenConfig), + out: out, + buf: make([]byte, 0, bufSize), + Error: nil, + indention: 0, + } +} + +// Pool returns a pool can provide more stream with same configuration +func (stream *Stream) Pool() StreamPool { + return stream.cfg +} + +// Reset reuse this stream instance by assign a new writer +func (stream *Stream) Reset(out io.Writer) { + stream.out = out + stream.buf = stream.buf[:0] +} + +// Available returns how many bytes are unused in the buffer. +func (stream *Stream) Available() int { + return cap(stream.buf) - len(stream.buf) +} + +// Buffered returns the number of bytes that have been written into the current buffer. +func (stream *Stream) Buffered() int { + return len(stream.buf) +} + +// Buffer if writer is nil, use this method to take the result +func (stream *Stream) Buffer() []byte { + return stream.buf +} + +// SetBuffer allows to append to the internal buffer directly +func (stream *Stream) SetBuffer(buf []byte) { + stream.buf = buf +} + +// Write writes the contents of p into the buffer. +// It returns the number of bytes written. +// If nn < len(p), it also returns an error explaining +// why the write is short. +func (stream *Stream) Write(p []byte) (nn int, err error) { + stream.buf = append(stream.buf, p...) + if stream.out != nil { + nn, err = stream.out.Write(stream.buf) + stream.buf = stream.buf[nn:] + return + } + return len(p), nil +} + +// WriteByte writes a single byte. +func (stream *Stream) writeByte(c byte) { + stream.buf = append(stream.buf, c) +} + +func (stream *Stream) writeTwoBytes(c1 byte, c2 byte) { + stream.buf = append(stream.buf, c1, c2) +} + +func (stream *Stream) writeThreeBytes(c1 byte, c2 byte, c3 byte) { + stream.buf = append(stream.buf, c1, c2, c3) +} + +func (stream *Stream) writeFourBytes(c1 byte, c2 byte, c3 byte, c4 byte) { + stream.buf = append(stream.buf, c1, c2, c3, c4) +} + +func (stream *Stream) writeFiveBytes(c1 byte, c2 byte, c3 byte, c4 byte, c5 byte) { + stream.buf = append(stream.buf, c1, c2, c3, c4, c5) +} + +// Flush writes any buffered data to the underlying io.Writer. +func (stream *Stream) Flush() error { + if stream.out == nil { + return nil + } + if stream.Error != nil { + return stream.Error + } + n, err := stream.out.Write(stream.buf) + if err != nil { + if stream.Error == nil { + stream.Error = err + } + return err + } + stream.buf = stream.buf[n:] + return nil +} + +// WriteRaw write string out without quotes, just like []byte +func (stream *Stream) WriteRaw(s string) { + stream.buf = append(stream.buf, s...) +} + +// WriteNil write null to stream +func (stream *Stream) WriteNil() { + stream.writeFourBytes('n', 'u', 'l', 'l') +} + +// WriteTrue write true to stream +func (stream *Stream) WriteTrue() { + stream.writeFourBytes('t', 'r', 'u', 'e') +} + +// WriteFalse write false to stream +func (stream *Stream) WriteFalse() { + stream.writeFiveBytes('f', 'a', 'l', 's', 'e') +} + +// WriteBool write true or false into stream +func (stream *Stream) WriteBool(val bool) { + if val { + stream.WriteTrue() + } else { + stream.WriteFalse() + } +} + +// WriteObjectStart write { with possible indention +func (stream *Stream) WriteObjectStart() { + stream.indention += stream.cfg.indentionStep + stream.writeByte('{') + stream.writeIndention(0) +} + +// WriteObjectField write "field": with possible indention +func (stream *Stream) WriteObjectField(field string) { + stream.WriteString(field) + if stream.indention > 0 { + stream.writeTwoBytes(':', ' ') + } else { + stream.writeByte(':') + } +} + +// WriteObjectEnd write } with possible indention +func (stream *Stream) WriteObjectEnd() { + stream.writeIndention(stream.cfg.indentionStep) + stream.indention -= stream.cfg.indentionStep + stream.writeByte('}') +} + +// WriteEmptyObject write {} +func (stream *Stream) WriteEmptyObject() { + stream.writeByte('{') + stream.writeByte('}') +} + +// WriteMore write , with possible indention +func (stream *Stream) WriteMore() { + stream.writeByte(',') + stream.writeIndention(0) + stream.Flush() +} + +// WriteArrayStart write [ with possible indention +func (stream *Stream) WriteArrayStart() { + stream.indention += stream.cfg.indentionStep + stream.writeByte('[') + stream.writeIndention(0) +} + +// WriteEmptyArray write [] +func (stream *Stream) WriteEmptyArray() { + stream.writeTwoBytes('[', ']') +} + +// WriteArrayEnd write ] with possible indention +func (stream *Stream) WriteArrayEnd() { + stream.writeIndention(stream.cfg.indentionStep) + stream.indention -= stream.cfg.indentionStep + stream.writeByte(']') +} + +func (stream *Stream) writeIndention(delta int) { + if stream.indention == 0 { + return + } + stream.writeByte('\n') + toWrite := stream.indention - delta + for i := 0; i < toWrite; i++ { + stream.buf = append(stream.buf, ' ') + } +} diff --git a/vendor/github.com/json-iterator/go/stream_float.go b/vendor/github.com/json-iterator/go/stream_float.go new file mode 100644 index 000000000..f318d2c59 --- /dev/null +++ b/vendor/github.com/json-iterator/go/stream_float.go @@ -0,0 +1,94 @@ +package jsoniter + +import ( + "math" + "strconv" +) + +var pow10 []uint64 + +func init() { + pow10 = []uint64{1, 10, 100, 1000, 10000, 100000, 1000000} +} + +// WriteFloat32 write float32 to stream +func (stream *Stream) WriteFloat32(val float32) { + abs := math.Abs(float64(val)) + fmt := byte('f') + // Note: Must use float32 comparisons for underlying float32 value to get precise cutoffs right. + if abs != 0 { + if float32(abs) < 1e-6 || float32(abs) >= 1e21 { + fmt = 'e' + } + } + stream.buf = strconv.AppendFloat(stream.buf, float64(val), fmt, -1, 32) +} + +// WriteFloat32Lossy write float32 to stream with ONLY 6 digits precision although much much faster +func (stream *Stream) WriteFloat32Lossy(val float32) { + if val < 0 { + stream.writeByte('-') + val = -val + } + if val > 0x4ffffff { + stream.WriteFloat32(val) + return + } + precision := 6 + exp := uint64(1000000) // 6 + lval := uint64(float64(val)*float64(exp) + 0.5) + stream.WriteUint64(lval / exp) + fval := lval % exp + if fval == 0 { + return + } + stream.writeByte('.') + for p := precision - 1; p > 0 && fval < pow10[p]; p-- { + stream.writeByte('0') + } + stream.WriteUint64(fval) + for stream.buf[len(stream.buf)-1] == '0' { + stream.buf = stream.buf[:len(stream.buf)-1] + } +} + +// WriteFloat64 write float64 to stream +func (stream *Stream) WriteFloat64(val float64) { + abs := math.Abs(val) + fmt := byte('f') + // Note: Must use float32 comparisons for underlying float32 value to get precise cutoffs right. + if abs != 0 { + if abs < 1e-6 || abs >= 1e21 { + fmt = 'e' + } + } + stream.buf = strconv.AppendFloat(stream.buf, float64(val), fmt, -1, 64) +} + +// WriteFloat64Lossy write float64 to stream with ONLY 6 digits precision although much much faster +func (stream *Stream) WriteFloat64Lossy(val float64) { + if val < 0 { + stream.writeByte('-') + val = -val + } + if val > 0x4ffffff { + stream.WriteFloat64(val) + return + } + precision := 6 + exp := uint64(1000000) // 6 + lval := uint64(val*float64(exp) + 0.5) + stream.WriteUint64(lval / exp) + fval := lval % exp + if fval == 0 { + return + } + stream.writeByte('.') + for p := precision - 1; p > 0 && fval < pow10[p]; p-- { + stream.writeByte('0') + } + stream.WriteUint64(fval) + for stream.buf[len(stream.buf)-1] == '0' { + stream.buf = stream.buf[:len(stream.buf)-1] + } +} diff --git a/vendor/github.com/json-iterator/go/stream_int.go b/vendor/github.com/json-iterator/go/stream_int.go new file mode 100644 index 000000000..d1059ee4c --- /dev/null +++ b/vendor/github.com/json-iterator/go/stream_int.go @@ -0,0 +1,190 @@ +package jsoniter + +var digits []uint32 + +func init() { + digits = make([]uint32, 1000) + for i := uint32(0); i < 1000; i++ { + digits[i] = (((i / 100) + '0') << 16) + ((((i / 10) % 10) + '0') << 8) + i%10 + '0' + if i < 10 { + digits[i] += 2 << 24 + } else if i < 100 { + digits[i] += 1 << 24 + } + } +} + +func writeFirstBuf(space []byte, v uint32) []byte { + start := v >> 24 + if start == 0 { + space = append(space, byte(v>>16), byte(v>>8)) + } else if start == 1 { + space = append(space, byte(v>>8)) + } + space = append(space, byte(v)) + return space +} + +func writeBuf(buf []byte, v uint32) []byte { + return append(buf, byte(v>>16), byte(v>>8), byte(v)) +} + +// WriteUint8 write uint8 to stream +func (stream *Stream) WriteUint8(val uint8) { + stream.buf = writeFirstBuf(stream.buf, digits[val]) +} + +// WriteInt8 write int8 to stream +func (stream *Stream) WriteInt8(nval int8) { + var val uint8 + if nval < 0 { + val = uint8(-nval) + stream.buf = append(stream.buf, '-') + } else { + val = uint8(nval) + } + stream.buf = writeFirstBuf(stream.buf, digits[val]) +} + +// WriteUint16 write uint16 to stream +func (stream *Stream) WriteUint16(val uint16) { + q1 := val / 1000 + if q1 == 0 { + stream.buf = writeFirstBuf(stream.buf, digits[val]) + return + } + r1 := val - q1*1000 + stream.buf = writeFirstBuf(stream.buf, digits[q1]) + stream.buf = writeBuf(stream.buf, digits[r1]) + return +} + +// WriteInt16 write int16 to stream +func (stream *Stream) WriteInt16(nval int16) { + var val uint16 + if nval < 0 { + val = uint16(-nval) + stream.buf = append(stream.buf, '-') + } else { + val = uint16(nval) + } + stream.WriteUint16(val) +} + +// WriteUint32 write uint32 to stream +func (stream *Stream) WriteUint32(val uint32) { + q1 := val / 1000 + if q1 == 0 { + stream.buf = writeFirstBuf(stream.buf, digits[val]) + return + } + r1 := val - q1*1000 + q2 := q1 / 1000 + if q2 == 0 { + stream.buf = writeFirstBuf(stream.buf, digits[q1]) + stream.buf = writeBuf(stream.buf, digits[r1]) + return + } + r2 := q1 - q2*1000 + q3 := q2 / 1000 + if q3 == 0 { + stream.buf = writeFirstBuf(stream.buf, digits[q2]) + } else { + r3 := q2 - q3*1000 + stream.buf = append(stream.buf, byte(q3+'0')) + stream.buf = writeBuf(stream.buf, digits[r3]) + } + stream.buf = writeBuf(stream.buf, digits[r2]) + stream.buf = writeBuf(stream.buf, digits[r1]) +} + +// WriteInt32 write int32 to stream +func (stream *Stream) WriteInt32(nval int32) { + var val uint32 + if nval < 0 { + val = uint32(-nval) + stream.buf = append(stream.buf, '-') + } else { + val = uint32(nval) + } + stream.WriteUint32(val) +} + +// WriteUint64 write uint64 to stream +func (stream *Stream) WriteUint64(val uint64) { + q1 := val / 1000 + if q1 == 0 { + stream.buf = writeFirstBuf(stream.buf, digits[val]) + return + } + r1 := val - q1*1000 + q2 := q1 / 1000 + if q2 == 0 { + stream.buf = writeFirstBuf(stream.buf, digits[q1]) + stream.buf = writeBuf(stream.buf, digits[r1]) + return + } + r2 := q1 - q2*1000 + q3 := q2 / 1000 + if q3 == 0 { + stream.buf = writeFirstBuf(stream.buf, digits[q2]) + stream.buf = writeBuf(stream.buf, digits[r2]) + stream.buf = writeBuf(stream.buf, digits[r1]) + return + } + r3 := q2 - q3*1000 + q4 := q3 / 1000 + if q4 == 0 { + stream.buf = writeFirstBuf(stream.buf, digits[q3]) + stream.buf = writeBuf(stream.buf, digits[r3]) + stream.buf = writeBuf(stream.buf, digits[r2]) + stream.buf = writeBuf(stream.buf, digits[r1]) + return + } + r4 := q3 - q4*1000 + q5 := q4 / 1000 + if q5 == 0 { + stream.buf = writeFirstBuf(stream.buf, digits[q4]) + stream.buf = writeBuf(stream.buf, digits[r4]) + stream.buf = writeBuf(stream.buf, digits[r3]) + stream.buf = writeBuf(stream.buf, digits[r2]) + stream.buf = writeBuf(stream.buf, digits[r1]) + return + } + r5 := q4 - q5*1000 + q6 := q5 / 1000 + if q6 == 0 { + stream.buf = writeFirstBuf(stream.buf, digits[q5]) + } else { + stream.buf = writeFirstBuf(stream.buf, digits[q6]) + r6 := q5 - q6*1000 + stream.buf = writeBuf(stream.buf, digits[r6]) + } + stream.buf = writeBuf(stream.buf, digits[r5]) + stream.buf = writeBuf(stream.buf, digits[r4]) + stream.buf = writeBuf(stream.buf, digits[r3]) + stream.buf = writeBuf(stream.buf, digits[r2]) + stream.buf = writeBuf(stream.buf, digits[r1]) +} + +// WriteInt64 write int64 to stream +func (stream *Stream) WriteInt64(nval int64) { + var val uint64 + if nval < 0 { + val = uint64(-nval) + stream.buf = append(stream.buf, '-') + } else { + val = uint64(nval) + } + stream.WriteUint64(val) +} + +// WriteInt write int to stream +func (stream *Stream) WriteInt(val int) { + stream.WriteInt64(int64(val)) +} + +// WriteUint write uint to stream +func (stream *Stream) WriteUint(val uint) { + stream.WriteUint64(uint64(val)) +} diff --git a/vendor/github.com/json-iterator/go/stream_str.go b/vendor/github.com/json-iterator/go/stream_str.go new file mode 100644 index 000000000..54c2ba0b3 --- /dev/null +++ b/vendor/github.com/json-iterator/go/stream_str.go @@ -0,0 +1,372 @@ +package jsoniter + +import ( + "unicode/utf8" +) + +// htmlSafeSet holds the value true if the ASCII character with the given +// array position can be safely represented inside a JSON string, embedded +// inside of HTML