From 1c1eef0e0bf7df57100af9dfd21813b1168f6803 Mon Sep 17 00:00:00 2001 From: jbwyatt4 Date: Sat, 19 May 2018 00:16:37 -0700 Subject: [PATCH 001/486] Link to license is broken; now linked to local copy of MPL --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eed7f74e3..9de21912d 100644 --- a/README.md +++ b/README.md @@ -167,4 +167,4 @@ docker run --rm -v $(pwd):/go/src/github.com/hashicorp/terraform -w /go/src/gith ## License -[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fhashicorp%2Fterraform.svg?type=large)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fhashicorp%2Fterraform?ref=badge_large) +[Mozilla Public License v2.0](https://github.com/hashicorp/terraform/blob/master/LICENSE) From 6c40b9520ec0b025db9b63aa68122a2bb1ccb32f Mon Sep 17 00:00:00 2001 From: Nathan McKinley Date: Mon, 18 Jun 2018 11:30:29 -0700 Subject: [PATCH 002/486] Minor docs tweak on ImportStateVerify ImportStateVerify does not respect DiffSuppressFunc or CustomizeDiff, which is worth documenting (and maybe, possibly, worth changing?). ImportStateVerifyIgnore is a list of prefixes, rather than a list of fields. --- helper/resource/testing.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/helper/resource/testing.go b/helper/resource/testing.go index 27bfc9b5a..9ae04a209 100644 --- a/helper/resource/testing.go +++ b/helper/resource/testing.go @@ -357,11 +357,12 @@ type TestStep struct { // ImportStateVerify, if true, will also check that the state values // that are finally put into the state after import match for all the - // IDs returned by the Import. + // IDs returned by the Import. Note that this checks for strict equality + // and does not respect DiffSuppressFunc or CustomizeDiff. // - // ImportStateVerifyIgnore are fields that should not be verified to - // be equal. These can be set to ephemeral fields or fields that can't - // be refreshed and don't matter. + // ImportStateVerifyIgnore is a list of prefixes of fields that should + // not be verified to be equal. These can be set to ephemeral fields or + // fields that can't be refreshed and don't matter. ImportStateVerify bool ImportStateVerifyIgnore []string } From db08ec448c1052b58802340fa266412011edae41 Mon Sep 17 00:00:00 2001 From: Sagar2366 Date: Sun, 9 Sep 2018 11:10:33 +0530 Subject: [PATCH 003/486] chnage from work to working directory Sentence correction --- website/docs/commands/init.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/commands/init.html.markdown b/website/docs/commands/init.html.markdown index 87e708c5c..ebb5ac5f7 100644 --- a/website/docs/commands/init.html.markdown +++ b/website/docs/commands/init.html.markdown @@ -63,7 +63,7 @@ run. This special mode of operation supports two use-cases: * Given a version control source, it can serve as a shorthand for checking out - a configuration from version control and then initializing the work directory + a configuration from version control and then initializing the working directory for it. * If the source refers to an _example_ configuration, it can be copied into From 7099b165e60dd8e4eba6868a44306f1c3cf01fef Mon Sep 17 00:00:00 2001 From: Manoj Date: Mon, 22 Oct 2018 23:33:07 +0530 Subject: [PATCH 004/486] Minor edits to improve the reading flow --- website/intro/getting-started/build.html.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/website/intro/getting-started/build.html.md b/website/intro/getting-started/build.html.md index de8f2123e..d38575e3b 100644 --- a/website/intro/getting-started/build.html.md +++ b/website/intro/getting-started/build.html.md @@ -12,7 +12,7 @@ With Terraform installed, let's dive right into it and start creating some infrastructure. We'll build infrastructure on -[AWS](https://aws.amazon.com) for the getting started guide +[AWS](https://aws.amazon.com) for this Getting Started guide since it is popular and generally understood, but Terraform can [manage many providers](/docs/providers/index.html), including multiple providers in a single configuration. @@ -25,9 +25,6 @@ For the getting started guide, we'll only be using resources which qualify under the AWS [free-tier](https://aws.amazon.com/free/), meaning it will be free. -If you already have an AWS account, you may be charged some -amount of money, but it shouldn't be more than a few dollars -at most. ~> **Warning!** If you're not using an account that qualifies under the AWS [free-tier](https://aws.amazon.com/free/), you may be charged to run these @@ -91,9 +88,8 @@ The general structure should be intuitive and straightforward. The `provider` block is used to configure the named provider, in our case "aws". A provider is responsible for creating and -managing resources. Multiple provider blocks can exist if a -Terraform configuration is composed of multiple providers, -which is a common situation. +managing resources. Multiple provider blocks can exist in a +Terraform configuration if the infrastructure needs them. The `resource` block defines a resource that exists within the infrastructure. A resource might be a physical component such @@ -239,7 +235,7 @@ Apply complete! Resources: 1 added, 0 changed, 0 destroyed. # ... ``` -After this, Terraform is all done! You can go to the EC2 console to see the +After this, Terraform is all done! You can go to the EC2 console to see the newly created EC2 instance. (Make sure you're looking at the same region that was configured in the provider configuration!) From 33e1839730aa7dd55f7c99b3f6b039d39aa64129 Mon Sep 17 00:00:00 2001 From: Masayuki Morita Date: Mon, 10 Sep 2018 00:21:24 +0900 Subject: [PATCH 005/486] command/hook_ui: Truncate the ID considering multibyte characters Fixes #18822 The `tuncatedId` function had been introduced in #12261 and increased the `maxIdLen` to 80 in #13317. Since the number of bytes itself seems to be unimportant, the ID should be truncated to 80 characters, not 80 bytes. --- command/hook_ui.go | 13 +++++++----- command/hook_ui_test.go | 45 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/command/hook_ui.go b/command/hook_ui.go index c56c886e2..adb2be19b 100644 --- a/command/hook_ui.go +++ b/command/hook_ui.go @@ -373,7 +373,10 @@ func dropCR(data []byte) []byte { } func truncateId(id string, maxLen int) string { - totalLength := len(id) + // Note that the id may contain multibyte characters. + // We need to truncate it to maxLen characters, not maxLen bytes. + rid := []rune(id) + totalLength := len(rid) if totalLength <= maxLen { return id } @@ -383,11 +386,11 @@ func truncateId(id string, maxLen int) string { maxLen = 5 } - dots := "..." + dots := []rune("...") partLen := maxLen / 2 leftIdx := partLen - 1 - leftPart := id[0:leftIdx] + leftPart := rid[0:leftIdx] rightIdx := totalLength - partLen - 1 @@ -396,7 +399,7 @@ func truncateId(id string, maxLen int) string { rightIdx -= overlap } - rightPart := id[rightIdx:] + rightPart := rid[rightIdx:] - return leftPart + dots + rightPart + return string(leftPart) + string(dots) + string(rightPart) } diff --git a/command/hook_ui_test.go b/command/hook_ui_test.go index 0a871cf6a..179e02547 100644 --- a/command/hook_ui_test.go +++ b/command/hook_ui_test.go @@ -252,6 +252,51 @@ func TestTruncateId(t *testing.T) { Expected: "Hello world", MaxLen: 12, }, + { + Input: "あいうえおかきくけこさ", + Expected: "あ...さ", + MaxLen: 3, + }, + { + Input: "あいうえおかきくけこさ", + Expected: "あ...さ", + MaxLen: 5, + }, + { + Input: "あいうえおかきくけこさ", + Expected: "あい...さ", + MaxLen: 6, + }, + { + Input: "あいうえおかきくけこさ", + Expected: "あい...こさ", + MaxLen: 7, + }, + { + Input: "あいうえおかきくけこさ", + Expected: "あいう...こさ", + MaxLen: 8, + }, + { + Input: "あいうえおかきくけこさ", + Expected: "あいう...けこさ", + MaxLen: 9, + }, + { + Input: "あいうえおかきくけこさ", + Expected: "あいうえ...けこさ", + MaxLen: 10, + }, + { + Input: "あいうえおかきくけこさ", + Expected: "あいうえおかきくけこさ", + MaxLen: 11, + }, + { + Input: "あいうえおかきくけこさ", + Expected: "あいうえおかきくけこさ", + MaxLen: 12, + }, } for i, tc := range testCases { testName := fmt.Sprintf("%d", i) From 22a09c2e3ad990e858afc1679afa7588dfdd1759 Mon Sep 17 00:00:00 2001 From: Garfield Freeman Date: Wed, 30 Jan 2019 11:32:36 -0800 Subject: [PATCH 006/486] add "part" to ConflictsWith validation error --- helper/schema/schema.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helper/schema/schema.go b/helper/schema/schema.go index 77c50de2b..b640e7512 100644 --- a/helper/schema/schema.go +++ b/helper/schema/schema.go @@ -674,7 +674,7 @@ func (m schemaMap) InternalValidate(topSchemaMap schemaMap) error { var ok bool if target, ok = sm[part]; !ok { - return fmt.Errorf("%s: ConflictsWith references unknown attribute (%s)", k, key) + return fmt.Errorf("%s: ConflictsWith references unknown attribute (%s) at part (%s)", k, key, part) } if subResource, ok := target.Elem.(*Resource); ok { From 58166ceaf5c5c48aa391c8229264fcb1ff73356f Mon Sep 17 00:00:00 2001 From: Ryan King Date: Tue, 12 Feb 2019 09:23:42 -0800 Subject: [PATCH 007/486] remove comment about nested schema.Resources having their own lifecycle This comment seems to imply that you can put CRUD functions on nested schema.Resource objects. The comment goes back to the first commit to this file, but AFAICT this functionality has never been implemented. --- helper/schema/schema.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/helper/schema/schema.go b/helper/schema/schema.go index 31b236072..2cc109a38 100644 --- a/helper/schema/schema.go +++ b/helper/schema/schema.go @@ -148,8 +148,7 @@ type Schema struct { // Elem represents the element type. For a TypeMap, it must be a *Schema // with a Type of TypeString, otherwise it may be either a *Schema or a // *Resource. If it is *Schema, the element type is just a simple value. - // If it is *Resource, the element type is a complex structure, - // potentially with its own lifecycle. + // If it is *Resource, the element type is a complex structure. Elem interface{} // The following fields are only set for a TypeList or TypeSet. From 43e7a7b55222b8dff9b6742f99a60138597929d2 Mon Sep 17 00:00:00 2001 From: Sergey Kondrashov Date: Tue, 5 Mar 2019 16:12:52 +0300 Subject: [PATCH 008/486] fix misspelling --- backend/local/backend.go | 2 +- config/loader_hcl2.go | 4 ++-- configs/variable_type_hint.go | 4 ++-- state/local.go | 2 +- svchost/svchost.go | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/local/backend.go b/backend/local/backend.go index 54cab6ecb..62c016c49 100644 --- a/backend/local/backend.go +++ b/backend/local/backend.go @@ -443,7 +443,7 @@ func (b *Local) ReportResult(op *backend.RunningOperation, diags tfdiags.Diagnos } // Colorize returns the Colorize structure that can be used for colorizing -// output. This is gauranteed to always return a non-nil value and so is useful +// output. This is guaranteed to always return a non-nil value and so is useful // as a helper to wrap any potentially colored strings. func (b *Local) Colorize() *colorstring.Colorize { if b.CLIColor != nil { diff --git a/config/loader_hcl2.go b/config/loader_hcl2.go index 4f9f129f2..c0b6f55c2 100644 --- a/config/loader_hcl2.go +++ b/config/loader_hcl2.go @@ -184,7 +184,7 @@ func (t *hcl2Configurable) Config() (*Config, error) { // caller than then type-assert if desired to recover the individual // diagnostics. // FIXME: The current API gives us no way to return warnings in the - // absense of any errors. + // absence of any errors. return config, diags } @@ -463,7 +463,7 @@ func (t *hcl2Configurable) Config() (*Config, error) { } // FIXME: The current API gives us no way to return warnings in the - // absense of any errors. + // absence of any errors. var err error if diags.HasErrors() { err = diags diff --git a/configs/variable_type_hint.go b/configs/variable_type_hint.go index 204efd120..458e75e14 100644 --- a/configs/variable_type_hint.go +++ b/configs/variable_type_hint.go @@ -21,11 +21,11 @@ type VariableTypeHint rune //go:generate stringer -type VariableTypeHint -// TypeHintNone indicates the absense of a type hint. Values specified in +// TypeHintNone indicates the absence of a type hint. Values specified in // ambiguous contexts will be treated as literal strings, as if TypeHintString // were selected, but no runtime value checks will be applied. This is reasonable // type hint for a module that is never intended to be used at the top-level -// of a configuration, since descendent modules never recieve values from +// of a configuration, since descendent modules never receive values from // ambiguous contexts. const TypeHintNone VariableTypeHint = 0 diff --git a/state/local.go b/state/local.go index 100feea1f..88cf2c7f5 100644 --- a/state/local.go +++ b/state/local.go @@ -34,7 +34,7 @@ type LocalState struct { lockID string // created is set to true if stateFileOut didn't exist before we created it. - // This is mostly so we can clean up emtpy files during tests, but doesn't + // This is mostly so we can clean up empty files during tests, but doesn't // hurt to remove file we never wrote to. created bool diff --git a/svchost/svchost.go b/svchost/svchost.go index 4eded142c..4060b767e 100644 --- a/svchost/svchost.go +++ b/svchost/svchost.go @@ -179,7 +179,7 @@ func (h Hostname) GoString() string { // If the port portion is invalid, the input string is returned verbatim along // with a non-nil error. // -// An empty string is a valid port portion representing the absense of a port. +// An empty string is a valid port portion representing the absence of a port. // If non-empty, the first character must be a colon. func normalizePortPortion(s string) (string, error) { if s == "" { From 1bd0f3512c3294746b512a683900b05c40077ea7 Mon Sep 17 00:00:00 2001 From: Sebastian Brandt <793580+sebbrandt87@users.noreply.github.com> Date: Tue, 2 Apr 2019 16:11:51 +0200 Subject: [PATCH 009/486] Removed -index from README There is no `-index` option, instead you need to set the index as additional describer to the resource. --- website/docs/commands/untaint.html.markdown | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/website/docs/commands/untaint.html.markdown b/website/docs/commands/untaint.html.markdown index 97c2507c8..1dfad9590 100644 --- a/website/docs/commands/untaint.html.markdown +++ b/website/docs/commands/untaint.html.markdown @@ -17,9 +17,7 @@ This command _will not_ modify infrastructure, but does modify the state file in order to unmark a resource as tainted. ~> **NOTE on Tainted Indexes:** In certain edge cases, more than one tainted -instance can be present for a single resource. When this happens, the `-index` -flag is required to select which of the tainted instances to restore as -primary. You can use the `terraform show` command to inspect the state and +instance can be present for a single resource. When this happens, you need to specify the index after the resources, e.g. `my-resource-example.2`. You can use the `terraform show` command to inspect the state and determine which index holds the instance you'd like to restore. In the vast majority of cases, there will only be one tainted instance, and the `-index` flag can be omitted. @@ -41,12 +39,6 @@ certain cases, see above note). The list of available flags are: * `-backup=path` - Path to the backup file. Defaults to `-state-out` with the ".backup" extension. Disabled by setting to "-". -* `-index=n` - Selects a single tainted instance when there are more than one - tainted instances present in the state for a given resource. This flag is - required when multiple tainted instances are present. The vast majority of the - time, there is a maximum of one tainted instance per resource, so this flag - can be safely omitted. - * `-lock=true` - Lock the state file when locking is supported. * `-lock-timeout=0s` - Duration to retry a state lock. From b887d4471274b5c58231e53a0dbe593148b1db90 Mon Sep 17 00:00:00 2001 From: He Guimin Date: Thu, 7 Mar 2019 18:31:36 +0800 Subject: [PATCH 010/486] 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