<?php

declare(strict_types=1);

namespace App\Rules;

use Closure;
use Illuminate\Contracts\Validation\ValidationRule;

final readonly class ValidTimezone implements ValidationRule
{
    /**
     * Run the validation rule.
     *
     * @param  Closure(string): \Illuminate\Translation\PotentiallyTranslatedString  $fail
     */
    public function validate(string $attribute, mixed $value, Closure $fail): void
    {
        $value = type($value)->asString();

        if (! array_key_exists($value, $this->getTimezones())) {
            $fail(__('The :attribute must be a valid timezone.'));
        }
    }

    /**
     * Get the list of valid timezones.
     *
     * @return array<string, string>
     */
    private function getTimezones(): array
    {
        return [
            null => 'Select a timezone',
            'Pacific/Midway' => 'Midway (UTC-11:00)',
            'Pacific/Niue' => 'Niue (UTC-11:00)',
            'Pacific/Pago_Pago' => 'Pago Pago (UTC-11:00)',
            'America/Adak' => 'Adak (UTC-10:00)',
            'Pacific/Honolulu' => 'Honolulu (UTC-10:00)',
            'Pacific/Johnston' => 'Johnston (UTC-10:00)',
            'Pacific/Rarotonga' => 'Rarotonga (UTC-10:00)',
            'Pacific/Tahiti' => 'Tahiti (UTC-10:00)',
            'Pacific/Marquesas' => 'Marquesas (UTC-09:30)',
            'America/Anchorage' => 'Anchorage (UTC-09:00)',
            'Pacific/Gambier' => 'Gambier (UTC-09:00)',
            'America/Juneau' => 'Juneau (UTC-09:00)',
            'America/Nome' => 'Nome (UTC-09:00)',
            'America/Sitka' => 'Sitka (UTC-09:00)',
            'America/Yakutat' => 'Yakutat (UTC-09:00)',
            'America/Dawson' => 'Dawson (UTC-08:00)',
            'America/Los_Angeles' => 'Los Angeles (UTC-08:00)',
            'America/Metlakatla' => 'Metlakatla (UTC-08:00)',
            'Pacific/Pitcairn' => 'Pitcairn (UTC-08:00)',
            'America/Santa_Isabel' => 'Santa Isabel (UTC-08:00)',
            'America/Tijuana' => 'Tijuana (UTC-08:00)',
            'America/Vancouver' => 'Vancouver (UTC-08:00)',
            'America/Whitehorse' => 'Whitehorse (UTC-08:00)',
            'America/Boise' => 'Boise (UTC-07:00)',
            'America/Cambridge_Bay' => 'Cambridge Bay (UTC-07:00)',
            'America/Chihuahua' => 'Chihuahua (UTC-07:00)',
            'America/Creston' => 'Creston (UTC-07:00)',
            'America/Dawson_Creek' => 'Dawson Creek (UTC-07:00)',
            'America/Denver' => 'Denver (UTC-07:00)',
            'America/Edmonton' => 'Edmonton (UTC-07:00)',
            'America/Hermosillo' => 'Hermosillo (UTC-07:00)',
            'America/Inuvik' => 'Inuvik (UTC-07:00)',
            'America/Mazatlan' => 'Mazatlan (UTC-07:00)',
            'America/Ojinaga' => 'Ojinaga (UTC-07:00)',
            'America/Phoenix' => 'Phoenix (UTC-07:00)',
            'America/Shiprock' => 'Shiprock (UTC-07:00)',
            'America/Yellowknife' => 'Yellowknife (UTC-07:00)',
            'America/Bahia_Banderas' => 'Bahia Banderas (UTC-06:00)',
            'America/Belize' => 'Belize (UTC-06:00)',
            'America/North_Dakota/Beulah' => 'Beulah (UTC-06:00)',
            'America/Cancun' => 'Cancun (UTC-06:00)',
            'America/North_Dakota/Center' => 'Center (UTC-06:00)',
            'America/Chicago' => 'Chicago (UTC-06:00)',
            'America/Costa_Rica' => 'Costa Rica (UTC-06:00)',
            'Pacific/Easter' => 'Easter (UTC-06:00)',
            'America/El_Salvador' => 'El Salvador (UTC-06:00)',
            'Pacific/Galapagos' => 'Galapagos (UTC-06:00)',
            'America/Guatemala' => 'Guatemala (UTC-06:00)',
            'America/Indiana/Knox' => 'Knox (UTC-06:00)',
            'America/Managua' => 'Managua (UTC-06:00)',
            'America/Matamoros' => 'Matamoros (UTC-06:00)',
            'America/Menominee' => 'Menominee (UTC-06:00)',
            'America/Merida' => 'Merida (UTC-06:00)',
            'America/Mexico_City' => 'Mexico City (UTC-06:00)',
            'America/Monterrey' => 'Monterrey (UTC-06:00)',
            'America/North_Dakota/New_Salem' => 'New Salem (UTC-06:00)',
            'America/Rainy_River' => 'Rainy River (UTC-06:00)',
            'America/Rankin_Inlet' => 'Rankin Inlet (UTC-06:00)',
            'America/Regina' => 'Regina (UTC-06:00)',
            'America/Resolute' => 'Resolute (UTC-06:00)',
            'America/Swift_Current' => 'Swift Current (UTC-06:00)',
            'America/Tegucigalpa' => 'Tegucigalpa (UTC-06:00)',
            'America/Indiana/Tell_City' => 'Tell City (UTC-06:00)',
            'America/Winnipeg' => 'Winnipeg (UTC-06:00)',
            'America/Atikokan' => 'Atikokan (UTC-05:00)',
            'America/Bogota' => 'Bogota (UTC-05:00)',
            'America/Cayman' => 'Cayman (UTC-05:00)',
            'America/Detroit' => 'Detroit (UTC-05:00)',
            'America/Grand_Turk' => 'Grand Turk (UTC-05:00)',
            'America/Guayaquil' => 'Guayaquil (UTC-05:00)',
            'America/Havana' => 'Havana (UTC-05:00)',
            'America/Indiana/Indianapolis' => 'Indianapolis (UTC-05:00)',
            'America/Iqaluit' => 'Iqaluit (UTC-05:00)',
            'America/Jamaica' => 'Jamaica (UTC-05:00)',
            'America/Lima' => 'Lima (UTC-05:00)',
            'America/Kentucky/Louisville' => 'Louisville (UTC-05:00)',
            'America/Indiana/Marengo' => 'Marengo (UTC-05:00)',
            'America/Kentucky/Monticello' => 'Monticello (UTC-05:00)',
            'America/Montreal' => 'Montreal (UTC-05:00)',
            'America/Nassau' => 'Nassau (UTC-05:00)',
            'America/New_York' => 'New York (UTC-05:00)',
            'America/Nipigon' => 'Nipigon (UTC-05:00)',
            'America/Panama' => 'Panama (UTC-05:00)',
            'America/Pangnirtung' => 'Pangnirtung (UTC-05:00)',
            'America/Indiana/Petersburg' => 'Petersburg (UTC-05:00)',
            'America/Port-au-Prince' => 'Port-au-Prince (UTC-05:00)',
            'America/Thunder_Bay' => 'Thunder Bay (UTC-05:00)',
            'America/Toronto' => 'Toronto (UTC-05:00)',
            'America/Indiana/Vevay' => 'Vevay (UTC-05:00)',
            'America/Indiana/Vincennes' => 'Vincennes (UTC-05:00)',
            'America/Indiana/Winamac' => 'Winamac (UTC-05:00)',
            'America/Caracas' => 'Caracas (UTC-04:30)',
            'America/Anguilla' => 'Anguilla (UTC-04:00)',
            'America/Antigua' => 'Antigua (UTC-04:00)',
            'America/Aruba' => 'Aruba (UTC-04:00)',
            'America/Asuncion' => 'Asuncion (UTC-04:00)',
            'America/Barbados' => 'Barbados (UTC-04:00)',
            'Atlantic/Bermuda' => 'Bermuda (UTC-04:00)',
            'America/Blanc-Sablon' => 'Blanc-Sablon (UTC-04:00)',
            'America/Boa_Vista' => 'Boa Vista (UTC-04:00)',
            'America/Campo_Grande' => 'Campo Grande (UTC-04:00)',
            'America/Cuiaba' => 'Cuiaba (UTC-04:00)',
            'America/Curacao' => 'Curacao (UTC-04:00)',
            'America/Dominica' => 'Dominica (UTC-04:00)',
            'America/Eirunepe' => 'Eirunepe (UTC-04:00)',
            'America/Glace_Bay' => 'Glace Bay (UTC-04:00)',
            'America/Goose_Bay' => 'Goose Bay (UTC-04:00)',
            'America/Grenada' => 'Grenada (UTC-04:00)',
            'America/Guadeloupe' => 'Guadeloupe (UTC-04:00)',
            'America/Guyana' => 'Guyana (UTC-04:00)',
            'America/Halifax' => 'Halifax (UTC-04:00)',
            'America/Kralendijk' => 'Kralendijk (UTC-04:00)',
            'America/La_Paz' => 'La Paz (UTC-04:00)',
            'America/Lower_Princes' => 'Lower Princes (UTC-04:00)',
            'America/Manaus' => 'Manaus (UTC-04:00)',
            'America/Marigot' => 'Marigot (UTC-04:00)',
            'America/Martinique' => 'Martinique (UTC-04:00)',
            'America/Moncton' => 'Moncton (UTC-04:00)',
            'America/Montserrat' => 'Montserrat (UTC-04:00)',
            'Antarctica/Palmer' => 'Palmer (UTC-04:00)',
            'America/Port_of_Spain' => 'Port of Spain (UTC-04:00)',
            'America/Porto_Velho' => 'Porto Velho (UTC-04:00)',
            'America/Puerto_Rico' => 'Puerto Rico (UTC-04:00)',
            'America/Rio_Branco' => 'Rio Branco (UTC-04:00)',
            'America/Santiago' => 'Santiago (UTC-04:00)',
            'America/Santo_Domingo' => 'Santo Domingo (UTC-04:00)',
            'America/St_Barthelemy' => 'St. Barthelemy (UTC-04:00)',
            'America/St_Kitts' => 'St. Kitts (UTC-04:00)',
            'America/St_Lucia' => 'St. Lucia (UTC-04:00)',
            'America/St_Thomas' => 'St. Thomas (UTC-04:00)',
            'America/St_Vincent' => 'St. Vincent (UTC-04:00)',
            'America/Thule' => 'Thule (UTC-04:00)',
            'America/Tortola' => 'Tortola (UTC-04:00)',
            'America/St_Johns' => 'St. Johns (UTC-03:30)',
            'America/Araguaina' => 'Araguaina (UTC-03:00)',
            'America/Bahia' => 'Bahia (UTC-03:00)',
            'America/Belem' => 'Belem (UTC-03:00)',
            'America/Argentina/Buenos_Aires' => 'Buenos Aires (UTC-03:00)',
            'America/Argentina/Catamarca' => 'Catamarca (UTC-03:00)',
            'America/Cayenne' => 'Cayenne (UTC-03:00)',
            'America/Argentina/Cordoba' => 'Cordoba (UTC-03:00)',
            'America/Fortaleza' => 'Fortaleza (UTC-03:00)',
            'America/Godthab' => 'Godthab (UTC-03:00)',
            'America/Argentina/Jujuy' => 'Jujuy (UTC-03:00)',
            'America/Argentina/La_Rioja' => 'La Rioja (UTC-03:00)',
            'America/Maceio' => 'Maceio (UTC-03:00)',
            'America/Argentina/Mendoza' => 'Mendoza (UTC-03:00)',
            'America/Miquelon' => 'Miquelon (UTC-03:00)',
            'America/Montevideo' => 'Montevideo (UTC-03:00)',
            'America/Paramaribo' => 'Paramaribo (UTC-03:00)',
            'America/Recife' => 'Recife (UTC-03:00)',
            'America/Argentina/Rio_Gallegos' => 'Rio Gallegos (UTC-03:00)',
            'Antarctica/Rothera' => 'Rothera (UTC-03:00)',
            'America/Argentina/Salta' => 'Salta (UTC-03:00)',
            'America/Argentina/San_Juan' => 'San Juan (UTC-03:00)',
            'America/Argentina/San_Luis' => 'San Luis (UTC-03:00)',
            'America/Santarem' => 'Santarem (UTC-03:00)',
            'America/Sao_Paulo' => 'Sao Paulo (UTC-03:00)',
            'Atlantic/Stanley' => 'Stanley (UTC-03:00)',
            'America/Argentina/Tucuman' => 'Tucuman (UTC-03:00)',
            'America/Argentina/Ushuaia' => 'Ushuaia (UTC-03:00)',
            'America/Noronha' => 'Noronha (UTC-02:00)',
            'Atlantic/South_Georgia' => 'South Georgia (UTC-02:00)',
            'Atlantic/Azores' => 'Azores (UTC-01:00)',
            'Atlantic/Cape_Verde' => 'Cape Verde (UTC-01:00)',
            'America/Scoresbysund' => 'Scoresbysund (UTC-01:00)',
            'Africa/Abidjan' => 'Abidjan (UTC+00:00)',
            'Africa/Accra' => 'Accra (UTC+00:00)',
            'Africa/Bamako' => 'Bamako (UTC+00:00)',
            'Africa/Banjul' => 'Banjul (UTC+00:00)',
            'Africa/Bissau' => 'Bissau (UTC+00:00)',
            'Atlantic/Canary' => 'Canary (UTC+00:00)',
            'Africa/Casablanca' => 'Casablanca (UTC+00:00)',
            'Africa/Conakry' => 'Conakry (UTC+00:00)',
            'Africa/Dakar' => 'Dakar (UTC+00:00)',
            'America/Danmarkshavn' => 'Danmarkshavn (UTC+00:00)',
            'Europe/Dublin' => 'Dublin (UTC+00:00)',
            'Africa/El_Aaiun' => 'El Aaiun (UTC+00:00)',
            'Atlantic/Faroe' => 'Faroe (UTC+00:00)',
            'Africa/Freetown' => 'Freetown (UTC+00:00)',
            'Europe/Guernsey' => 'Guernsey (UTC+00:00)',
            'Europe/Isle_of_Man' => 'Isle of Man (UTC+00:00)',
            'Europe/Jersey' => 'Jersey (UTC+00:00)',
            'Europe/Lisbon' => 'Lisbon (UTC+00:00)',
            'Africa/Lome' => 'Lome (UTC+00:00)',
            'Europe/London' => 'London (UTC+00:00)',
            'Atlantic/Madeira' => 'Madeira (UTC+00:00)',
            'Africa/Monrovia' => 'Monrovia (UTC+00:00)',
            'Africa/Nouakchott' => 'Nouakchott (UTC+00:00)',
            'Africa/Ouagadougou' => 'Ouagadougou (UTC+00:00)',
            'Atlantic/Reykjavik' => 'Reykjavik (UTC+00:00)',
            'Africa/Sao_Tome' => 'Sao Tome (UTC+00:00)',
            'Atlantic/St_Helena' => 'St. Helena (UTC+00:00)',
            'UTC' => 'UTC (UTC+00:00)',
            'Africa/Algiers' => 'Algiers (UTC+01:00)',
            'Europe/Amsterdam' => 'Amsterdam (UTC+01:00)',
            'Europe/Andorra' => 'Andorra (UTC+01:00)',
            'Africa/Bangui' => 'Bangui (UTC+01:00)',
            'Europe/Belgrade' => 'Belgrade (UTC+01:00)',
            'Europe/Berlin' => 'Berlin (UTC+01:00)',
            'Europe/Bratislava' => 'Bratislava (UTC+01:00)',
            'Africa/Brazzaville' => 'Brazzaville (UTC+01:00)',
            'Europe/Brussels' => 'Brussels (UTC+01:00)',
            'Europe/Budapest' => 'Budapest (UTC+01:00)',
            'Europe/Busingen' => 'Busingen (UTC+01:00)',
            'Africa/Ceuta' => 'Ceuta (UTC+01:00)',
            'Europe/Copenhagen' => 'Copenhagen (UTC+01:00)',
            'Africa/Douala' => 'Douala (UTC+01:00)',
            'Europe/Gibraltar' => 'Gibraltar (UTC+01:00)',
            'Africa/Kinshasa' => 'Kinshasa (UTC+01:00)',
            'Africa/Lagos' => 'Lagos (UTC+01:00)',
            'Africa/Libreville' => 'Libreville (UTC+01:00)',
            'Europe/Ljubljana' => 'Ljubljana (UTC+01:00)',
            'Arctic/Longyearbyen' => 'Longyearbyen (UTC+01:00)',
            'Africa/Luanda' => 'Luanda (UTC+01:00)',
            'Europe/Luxembourg' => 'Luxembourg (UTC+01:00)',
            'Europe/Madrid' => 'Madrid (UTC+01:00)',
            'Africa/Malabo' => 'Malabo (UTC+01:00)',
            'Europe/Malta' => 'Malta (UTC+01:00)',
            'Europe/Monaco' => 'Monaco (UTC+01:00)',
            'Africa/Ndjamena' => 'Ndjamena (UTC+01:00)',
            'Africa/Niamey' => 'Niamey (UTC+01:00)',
            'Europe/Oslo' => 'Oslo (UTC+01:00)',
            'Europe/Paris' => 'Paris (UTC+01:00)',
            'Europe/Podgorica' => 'Podgorica (UTC+01:00)',
            'Africa/Porto-Novo' => 'Porto-Novo (UTC+01:00)',
            'Europe/Prague' => 'Prague (UTC+01:00)',
            'Europe/Rome' => 'Rome (UTC+01:00)',
            'Europe/San_Marino' => 'San Marino (UTC+01:00)',
            'Europe/Sarajevo' => 'Sarajevo (UTC+01:00)',
            'Europe/Skopje' => 'Skopje (UTC+01:00)',
            'Europe/Stockholm' => 'Stockholm (UTC+01:00)',
            'Europe/Tirane' => 'Tirane (UTC+01:00)',
            'Africa/Tripoli' => 'Tripoli (UTC+01:00)',
            'Africa/Tunis' => 'Tunis (UTC+01:00)',
            'Europe/Vaduz' => 'Vaduz (UTC+01:00)',
            'Europe/Vatican' => 'Vatican (UTC+01:00)',
            'Europe/Vienna' => 'Vienna (UTC+01:00)',
            'Europe/Warsaw' => 'Warsaw (UTC+01:00)',
            'Africa/Windhoek' => 'Windhoek (UTC+01:00)',
            'Europe/Zagreb' => 'Zagreb (UTC+01:00)',
            'Europe/Zurich' => 'Zurich (UTC+01:00)',
            'Europe/Athens' => 'Athens (UTC+02:00)',
            'Asia/Beirut' => 'Beirut (UTC+02:00)',
            'Africa/Blantyre' => 'Blantyre (UTC+02:00)',
            'Europe/Bucharest' => 'Bucharest (UTC+02:00)',
            'Africa/Bujumbura' => 'Bujumbura (UTC+02:00)',
            'Africa/Cairo' => 'Cairo (UTC+02:00)',
            'Europe/Chisinau' => 'Chisinau (UTC+02:00)',
            'Asia/Damascus' => 'Damascus (UTC+02:00)',
            'Africa/Gaborone' => 'Gaborone (UTC+02:00)',
            'Asia/Gaza' => 'Gaza (UTC+02:00)',
            'Africa/Harare' => 'Harare (UTC+02:00)',
            'Asia/Hebron' => 'Hebron (UTC+02:00)',
            'Europe/Helsinki' => 'Helsinki (UTC+02:00)',
            'Europe/Istanbul' => 'Istanbul (UTC+02:00)',
            'Asia/Jerusalem' => 'Jerusalem (UTC+02:00)',
            'Africa/Johannesburg' => 'Johannesburg (UTC+02:00)',
            'Europe/Kiev' => 'Kiev (UTC+02:00)',
            'Africa/Kigali' => 'Kigali (UTC+02:00)',
            'Africa/Lubumbashi' => 'Lubumbashi (UTC+02:00)',
            'Africa/Lusaka' => 'Lusaka (UTC+02:00)',
            'Africa/Maputo' => 'Maputo (UTC+02:00)',
            'Europe/Mariehamn' => 'Mariehamn (UTC+02:00)',
            'Africa/Maseru' => 'Maseru (UTC+02:00)',
            'Africa/Mbabane' => 'Mbabane (UTC+02:00)',
            'Asia/Nicosia' => 'Nicosia (UTC+02:00)',
            'Europe/Riga' => 'Riga (UTC+02:00)',
            'Europe/Simferopol' => 'Simferopol (UTC+02:00)',
            'Europe/Sofia' => 'Sofia (UTC+02:00)',
            'Europe/Tallinn' => 'Tallinn (UTC+02:00)',
            'Europe/Uzhgorod' => 'Uzhgorod (UTC+02:00)',
            'Europe/Vilnius' => 'Vilnius (UTC+02:00)',
            'Europe/Zaporozhye' => 'Zaporozhye (UTC+02:00)',
            'Africa/Addis_Ababa' => 'Addis Ababa (UTC+03:00)',
            'Asia/Aden' => 'Aden (UTC+03:00)',
            'Asia/Amman' => 'Amman (UTC+03:00)',
            'Indian/Antananarivo' => 'Antananarivo (UTC+03:00)',
            'Africa/Asmara' => 'Asmara (UTC+03:00)',
            'Asia/Baghdad' => 'Baghdad (UTC+03:00)',
            'Asia/Bahrain' => 'Bahrain (UTC+03:00)',
            'Indian/Comoro' => 'Comoro (UTC+03:00)',
            'Africa/Dar_es_Salaam' => 'Dar es Salaam (UTC+03:00)',
            'Africa/Djibouti' => 'Djibouti (UTC+03:00)',
            'Africa/Juba' => 'Juba (UTC+03:00)',
            'Europe/Kaliningrad' => 'Kaliningrad (UTC+03:00)',
            'Africa/Kampala' => 'Kampala (UTC+03:00)',
            'Africa/Khartoum' => 'Khartoum (UTC+03:00)',
            'Asia/Kuwait' => 'Kuwait (UTC+03:00)',
            'Indian/Mayotte' => 'Mayotte (UTC+03:00)',
            'Europe/Minsk' => 'Minsk (UTC+03:00)',
            'Africa/Mogadishu' => 'Mogadishu (UTC+03:00)',
            'Europe/Moscow' => 'Moscow (UTC+03:00)',
            'Africa/Nairobi' => 'Nairobi (UTC+03:00)',
            'Asia/Qatar' => 'Qatar (UTC+03:00)',
            'Asia/Riyadh' => 'Riyadh (UTC+03:00)',
            'Antarctica/Syowa' => 'Syowa (UTC+03:00)',
            'Asia/Tehran' => 'Tehran (UTC+03:30)',
            'Asia/Baku' => 'Baku (UTC+04:00)',
            'Asia/Dubai' => 'Dubai (UTC+04:00)',
            'Indian/Mahe' => 'Mahe (UTC+04:00)',
            'Indian/Mauritius' => 'Mauritius (UTC+04:00)',
            'Asia/Muscat' => 'Muscat (UTC+04:00)',
            'Indian/Reunion' => 'Reunion (UTC+04:00)',
            'Europe/Samara' => 'Samara (UTC+04:00)',
            'Asia/Tbilisi' => 'Tbilisi (UTC+04:00)',
            'Europe/Volgograd' => 'Volgograd (UTC+04:00)',
            'Asia/Yerevan' => 'Yerevan (UTC+04:00)',
            'Asia/Kabul' => 'Kabul (UTC+04:30)',
            'Asia/Aqtau' => 'Aqtau (UTC+05:00)',
            'Asia/Aqtobe' => 'Aqtobe (UTC+05:00)',
            'Asia/Ashgabat' => 'Ashgabat (UTC+05:00)',
            'Asia/Dushanbe' => 'Dushanbe (UTC+05:00)',
            'Asia/Karachi' => 'Karachi (UTC+05:00)',
            'Indian/Kerguelen' => 'Kerguelen (UTC+05:00)',
            'Indian/Maldives' => 'Maldives (UTC+05:00)',
            'Antarctica/Mawson' => 'Mawson (UTC+05:00)',
            'Asia/Oral' => 'Oral (UTC+05:00)',
            'Asia/Samarkand' => 'Samarkand (UTC+05:00)',
            'Asia/Tashkent' => 'Tashkent (UTC+05:00)',
            'Asia/Colombo' => 'Colombo (UTC+05:30)',
            'Asia/Kolkata' => 'Kolkata (UTC+05:30)',
            'Asia/Kathmandu' => 'Kathmandu (UTC+05:45)',
            'Asia/Almaty' => 'Almaty (UTC+06:00)',
            'Asia/Bishkek' => 'Bishkek (UTC+06:00)',
            'Indian/Chagos' => 'Chagos (UTC+06:00)',
            'Asia/Dhaka' => 'Dhaka (UTC+06:00)',
            'Asia/Qyzylorda' => 'Qyzylorda (UTC+06:00)',
            'Asia/Thimphu' => 'Thimphu (UTC+06:00)',
            'Antarctica/Vostok' => 'Vostok (UTC+06:00)',
            'Asia/Yekaterinburg' => 'Yekaterinburg (UTC+06:00)',
            'Indian/Cocos' => 'Cocos (UTC+06:30)',
            'Asia/Rangoon' => 'Rangoon (UTC+06:30)',
            'Asia/Bangkok' => 'Bangkok (UTC+07:00)',
            'Indian/Christmas' => 'Christmas (UTC+07:00)',
            'Antarctica/Davis' => 'Davis (UTC+07:00)',
            'Asia/Ho_Chi_Minh' => 'Ho Chi Minh (UTC+07:00)',
            'Asia/Hovd' => 'Hovd (UTC+07:00)',
            'Asia/Jakarta' => 'Jakarta (UTC+07:00)',
            'Asia/Novokuznetsk' => 'Novokuznetsk (UTC+07:00)',
            'Asia/Novosibirsk' => 'Novosibirsk (UTC+07:00)',
            'Asia/Omsk' => 'Omsk (UTC+07:00)',
            'Asia/Phnom_Penh' => 'Phnom Penh (UTC+07:00)',
            'Asia/Pontianak' => 'Pontianak (UTC+07:00)',
            'Asia/Vientiane' => 'Vientiane (UTC+07:00)',
            'Asia/Brunei' => 'Brunei (UTC+08:00)',
            'Antarctica/Casey' => 'Casey (UTC+08:00)',
            'Asia/Choibalsan' => 'Choibalsan (UTC+08:00)',
            'Asia/Chongqing' => 'Chongqing (UTC+08:00)',
            'Asia/Harbin' => 'Harbin (UTC+08:00)',
            'Asia/Hong_Kong' => 'Hong Kong (UTC+08:00)',
            'Asia/Kashgar' => 'Kashgar (UTC+08:00)',
            'Asia/Krasnoyarsk' => 'Krasnoyarsk (UTC+08:00)',
            'Asia/Kuala_Lumpur' => 'Kuala Lumpur (UTC+08:00)',
            'Asia/Kuching' => 'Kuching (UTC+08:00)',
            'Asia/Macau' => 'Macau (UTC+08:00)',
            'Asia/Makassar' => 'Makassar (UTC+08:00)',
            'Asia/Manila' => 'Manila (UTC+08:00)',
            'Australia/Perth' => 'Perth (UTC+08:00)',
            'Asia/Shanghai' => 'Shanghai (UTC+08:00)',
            'Asia/Singapore' => 'Singapore (UTC+08:00)',
            'Asia/Taipei' => 'Taipei (UTC+08:00)',
            'Asia/Ulaanbaatar' => 'Ulaanbaatar (UTC+08:00)',
            'Asia/Urumqi' => 'Urumqi (UTC+08:00)',
            'Australia/Eucla' => 'Eucla (UTC+08:45)',
            'Asia/Dili' => 'Dili (UTC+09:00)',
            'Asia/Irkutsk' => 'Irkutsk (UTC+09:00)',
            'Asia/Jayapura' => 'Jayapura (UTC+09:00)',
            'Pacific/Palau' => 'Palau (UTC+09:00)',
            'Asia/Pyongyang' => 'Pyongyang (UTC+09:00)',
            'Asia/Seoul' => 'Seoul (UTC+09:00)',
            'Asia/Tokyo' => 'Tokyo (UTC+09:00)',
            'Australia/Adelaide' => 'Adelaide (UTC+09:30)',
            'Australia/Broken_Hill' => 'Broken Hill (UTC+09:30)',
            'Australia/Darwin' => 'Darwin (UTC+09:30)',
            'Australia/Brisbane' => 'Brisbane (UTC+10:00)',
            'Pacific/Chuuk' => 'Chuuk (UTC+10:00)',
            'Australia/Currie' => 'Currie (UTC+10:00)',
            'Antarctica/DumontDUrville' => 'DumontDUrville (UTC+10:00)',
            'Pacific/Guam' => 'Guam (UTC+10:00)',
            'Australia/Hobart' => 'Hobart (UTC+10:00)',
            'Asia/Khandyga' => 'Khandyga (UTC+10:00)',
            'Australia/Lindeman' => 'Lindeman (UTC+10:00)',
            'Australia/Melbourne' => 'Melbourne (UTC+10:00)',
            'Pacific/Port_Moresby' => 'Port Moresby (UTC+10:00)',
            'Pacific/Saipan' => 'Saipan (UTC+10:00)',
            'Australia/Sydney' => 'Sydney (UTC+10:00)',
            'Asia/Yakutsk' => 'Yakutsk (UTC+10:00)',
            'Australia/Lord_Howe' => 'Lord Howe (UTC+10:30)',
            'Pacific/Efate' => 'Efate (UTC+11:00)',
            'Pacific/Guadalcanal' => 'Guadalcanal (UTC+11:00)',
            'Pacific/Kosrae' => 'Kosrae (UTC+11:00)',
            'Antarctica/Macquarie' => 'Macquarie (UTC+11:00)',
            'Pacific/Noumea' => 'Noumea (UTC+11:00)',
            'Pacific/Pohnpei' => 'Pohnpei (UTC+11:00)',
            'Asia/Sakhalin' => 'Sakhalin (UTC+11:00)',
            'Asia/Ust-Nera' => 'Ust-Nera (UTC+11:00)',
            'Asia/Vladivostok' => 'Vladivostok (UTC+11:00)',
            'Pacific/Norfolk' => 'Norfolk (UTC+11:30)',
            'Asia/Anadyr' => 'Anadyr (UTC+12:00)',
            'Pacific/Auckland' => 'Auckland (UTC+12:00)',
            'Pacific/Fiji' => 'Fiji (UTC+12:00)',
            'Pacific/Funafuti' => 'Funafuti (UTC+12:00)',
            'Asia/Kamchatka' => 'Kamchatka (UTC+12:00)',
            'Pacific/Kwajalein' => 'Kwajalein (UTC+12:00)',
            'Asia/Magadan' => 'Magadan (UTC+12:00)',
            'Pacific/Majuro' => 'Majuro (UTC+12:00)',
            'Antarctica/McMurdo' => 'McMurdo (UTC+12:00)',
            'Pacific/Nauru' => 'Nauru (UTC+12:00)',
            'Antarctica/South_Pole' => 'South Pole (UTC+12:00)',
            'Pacific/Tarawa' => 'Tarawa (UTC+12:00)',
            'Pacific/Wake' => 'Wake (UTC+12:00)',
            'Pacific/Wallis' => 'Wallis (UTC+12:00)',
            'Pacific/Chatham' => 'Chatham (UTC+12:45)',
            'Pacific/Apia' => 'Apia (UTC+13:00)',
            'Pacific/Enderbury' => 'Enderbury (UTC+13:00)',
            'Pacific/Fakaofo' => 'Fakaofo (UTC+13:00)',
            'Pacific/Tongatapu' => 'Tongatapu (UTC+13:00)',
        ];
    }
}
