summaryrefslogtreecommitdiffstats
path: root/libGeoIP/timeZone.c
diff options
context:
space:
mode:
Diffstat (limited to 'libGeoIP/timeZone.c')
-rw-r--r--libGeoIP/timeZone.c1775
1 files changed, 1775 insertions, 0 deletions
diff --git a/libGeoIP/timeZone.c b/libGeoIP/timeZone.c
new file mode 100644
index 0000000..cc30619
--- /dev/null
+++ b/libGeoIP/timeZone.c
@@ -0,0 +1,1775 @@
+#include <string.h>
+const char *GeoIP_time_zone_by_country_and_region(const char *country,
+ const char *region) {
+ const char *timezone = NULL;
+ if (country == NULL) {
+ return NULL;
+ }
+ if (region == NULL) {
+ region = "";
+ }
+ if (strcmp(country, "AD") == 0) {
+ return "Europe/Andorra";
+ }
+ if (strcmp(country, "AE") == 0) {
+ return "Asia/Dubai";
+ }
+ if (strcmp(country, "AF") == 0) {
+ return "Asia/Kabul";
+ }
+ if (strcmp(country, "AG") == 0) {
+ return "America/Antigua";
+ }
+ if (strcmp(country, "AI") == 0) {
+ return "America/Anguilla";
+ }
+ if (strcmp(country, "AL") == 0) {
+ return "Europe/Tirane";
+ }
+ if (strcmp(country, "AM") == 0) {
+ return "Asia/Yerevan";
+ }
+ if (strcmp(country, "AN") == 0) {
+ return "America/Curacao";
+ }
+ if (strcmp(country, "AO") == 0) {
+ return "Africa/Luanda";
+ }
+ if (strcmp(country, "AQ") == 0) {
+ return "Antarctica/South_Pole";
+ }
+ if (strcmp(country, "AR") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "America/Argentina/Buenos_Aires";
+ } else if (strcmp(region, "02") == 0) {
+ return "America/Argentina/Catamarca";
+ } else if (strcmp(region, "03") == 0) {
+ return "America/Argentina/Tucuman";
+ } else if (strcmp(region, "04") == 0) {
+ return "America/Argentina/Rio_Gallegos";
+ } else if (strcmp(region, "05") == 0) {
+ return "America/Argentina/Cordoba";
+ } else if (strcmp(region, "06") == 0) {
+ return "America/Argentina/Tucuman";
+ } else if (strcmp(region, "07") == 0) {
+ return "America/Argentina/Buenos_Aires";
+ } else if (strcmp(region, "08") == 0) {
+ return "America/Argentina/Buenos_Aires";
+ } else if (strcmp(region, "09") == 0) {
+ return "America/Argentina/Tucuman";
+ } else if (strcmp(region, "10") == 0) {
+ return "America/Argentina/Jujuy";
+ } else if (strcmp(region, "11") == 0) {
+ return "America/Argentina/San_Luis";
+ } else if (strcmp(region, "12") == 0) {
+ return "America/Argentina/La_Rioja";
+ } else if (strcmp(region, "13") == 0) {
+ return "America/Argentina/Mendoza";
+ } else if (strcmp(region, "14") == 0) {
+ return "America/Argentina/Buenos_Aires";
+ } else if (strcmp(region, "15") == 0) {
+ return "America/Argentina/San_Luis";
+ } else if (strcmp(region, "16") == 0) {
+ return "America/Argentina/Buenos_Aires";
+ } else if (strcmp(region, "17") == 0) {
+ return "America/Argentina/Salta";
+ } else if (strcmp(region, "18") == 0) {
+ return "America/Argentina/San_Juan";
+ } else if (strcmp(region, "19") == 0) {
+ return "America/Argentina/San_Luis";
+ } else if (strcmp(region, "20") == 0) {
+ return "America/Argentina/Rio_Gallegos";
+ } else if (strcmp(region, "21") == 0) {
+ return "America/Argentina/Buenos_Aires";
+ } else if (strcmp(region, "22") == 0) {
+ return "America/Argentina/Catamarca";
+ } else if (strcmp(region, "23") == 0) {
+ return "America/Argentina/Ushuaia";
+ } else if (strcmp(region, "24") == 0) {
+ return "America/Argentina/Tucuman";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "AS") == 0) {
+ return "Pacific/Pago_Pago";
+ }
+ if (strcmp(country, "AT") == 0) {
+ return "Europe/Vienna";
+ }
+ if (strcmp(country, "AU") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "Australia/Sydney";
+ } else if (strcmp(region, "02") == 0) {
+ return "Australia/Sydney";
+ } else if (strcmp(region, "03") == 0) {
+ return "Australia/Darwin";
+ } else if (strcmp(region, "04") == 0) {
+ return "Australia/Brisbane";
+ } else if (strcmp(region, "05") == 0) {
+ return "Australia/Adelaide";
+ } else if (strcmp(region, "06") == 0) {
+ return "Australia/Hobart";
+ } else if (strcmp(region, "07") == 0) {
+ return "Australia/Melbourne";
+ } else if (strcmp(region, "08") == 0) {
+ return "Australia/Perth";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "AW") == 0) {
+ return "America/Aruba";
+ }
+ if (strcmp(country, "AX") == 0) {
+ return "Europe/Mariehamn";
+ }
+ if (strcmp(country, "AZ") == 0) {
+ return "Asia/Baku";
+ }
+ if (strcmp(country, "BA") == 0) {
+ return "Europe/Sarajevo";
+ }
+ if (strcmp(country, "BB") == 0) {
+ return "America/Barbados";
+ }
+ if (strcmp(country, "BD") == 0) {
+ return "Asia/Dhaka";
+ }
+ if (strcmp(country, "BE") == 0) {
+ return "Europe/Brussels";
+ }
+ if (strcmp(country, "BF") == 0) {
+ return "Africa/Ouagadougou";
+ }
+ if (strcmp(country, "BG") == 0) {
+ return "Europe/Sofia";
+ }
+ if (strcmp(country, "BH") == 0) {
+ return "Asia/Bahrain";
+ }
+ if (strcmp(country, "BI") == 0) {
+ return "Africa/Bujumbura";
+ }
+ if (strcmp(country, "BJ") == 0) {
+ return "Africa/Porto-Novo";
+ }
+ if (strcmp(country, "BL") == 0) {
+ return "America/St_Barthelemy";
+ }
+ if (strcmp(country, "BM") == 0) {
+ return "Atlantic/Bermuda";
+ }
+ if (strcmp(country, "BN") == 0) {
+ return "Asia/Brunei";
+ }
+ if (strcmp(country, "BO") == 0) {
+ return "America/La_Paz";
+ }
+ if (strcmp(country, "BQ") == 0) {
+ return "America/Curacao";
+ }
+ if (strcmp(country, "BR") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "America/Rio_Branco";
+ } else if (strcmp(region, "02") == 0) {
+ return "America/Maceio";
+ } else if (strcmp(region, "03") == 0) {
+ return "America/Sao_Paulo";
+ } else if (strcmp(region, "04") == 0) {
+ return "America/Manaus";
+ } else if (strcmp(region, "05") == 0) {
+ return "America/Bahia";
+ } else if (strcmp(region, "06") == 0) {
+ return "America/Fortaleza";
+ } else if (strcmp(region, "07") == 0) {
+ return "America/Sao_Paulo";
+ } else if (strcmp(region, "08") == 0) {
+ return "America/Sao_Paulo";
+ } else if (strcmp(region, "11") == 0) {
+ return "America/Campo_Grande";
+ } else if (strcmp(region, "13") == 0) {
+ return "America/Belem";
+ } else if (strcmp(region, "14") == 0) {
+ return "America/Cuiaba";
+ } else if (strcmp(region, "15") == 0) {
+ return "America/Sao_Paulo";
+ } else if (strcmp(region, "16") == 0) {
+ return "America/Belem";
+ } else if (strcmp(region, "17") == 0) {
+ return "America/Recife";
+ } else if (strcmp(region, "18") == 0) {
+ return "America/Sao_Paulo";
+ } else if (strcmp(region, "20") == 0) {
+ return "America/Fortaleza";
+ } else if (strcmp(region, "21") == 0) {
+ return "America/Sao_Paulo";
+ } else if (strcmp(region, "22") == 0) {
+ return "America/Recife";
+ } else if (strcmp(region, "23") == 0) {
+ return "America/Sao_Paulo";
+ } else if (strcmp(region, "24") == 0) {
+ return "America/Porto_Velho";
+ } else if (strcmp(region, "25") == 0) {
+ return "America/Boa_Vista";
+ } else if (strcmp(region, "26") == 0) {
+ return "America/Sao_Paulo";
+ } else if (strcmp(region, "27") == 0) {
+ return "America/Sao_Paulo";
+ } else if (strcmp(region, "28") == 0) {
+ return "America/Maceio";
+ } else if (strcmp(region, "29") == 0) {
+ return "America/Sao_Paulo";
+ } else if (strcmp(region, "30") == 0) {
+ return "America/Recife";
+ } else if (strcmp(region, "31") == 0) {
+ return "America/Araguaina";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "BS") == 0) {
+ return "America/Nassau";
+ }
+ if (strcmp(country, "BT") == 0) {
+ return "Asia/Thimphu";
+ }
+ if (strcmp(country, "BV") == 0) {
+ return "Antarctica/Syowa";
+ }
+ if (strcmp(country, "BW") == 0) {
+ return "Africa/Gaborone";
+ }
+ if (strcmp(country, "BY") == 0) {
+ return "Europe/Minsk";
+ }
+ if (strcmp(country, "BZ") == 0) {
+ return "America/Belize";
+ }
+ if (strcmp(country, "CA") == 0) {
+ if (strcmp(region, "AB") == 0) {
+ return "America/Edmonton";
+ } else if (strcmp(region, "BC") == 0) {
+ return "America/Vancouver";
+ } else if (strcmp(region, "MB") == 0) {
+ return "America/Winnipeg";
+ } else if (strcmp(region, "NB") == 0) {
+ return "America/Halifax";
+ } else if (strcmp(region, "NL") == 0) {
+ return "America/St_Johns";
+ } else if (strcmp(region, "NS") == 0) {
+ return "America/Halifax";
+ } else if (strcmp(region, "NT") == 0) {
+ return "America/Yellowknife";
+ } else if (strcmp(region, "NU") == 0) {
+ return "America/Rankin_Inlet";
+ } else if (strcmp(region, "ON") == 0) {
+ return "America/Toronto";
+ } else if (strcmp(region, "PE") == 0) {
+ return "America/Halifax";
+ } else if (strcmp(region, "QC") == 0) {
+ return "America/Montreal";
+ } else if (strcmp(region, "SK") == 0) {
+ return "America/Regina";
+ } else if (strcmp(region, "YT") == 0) {
+ return "America/Whitehorse";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "CC") == 0) {
+ return "Indian/Cocos";
+ }
+ if (strcmp(country, "CD") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "Africa/Kinshasa";
+ } else if (strcmp(region, "02") == 0) {
+ return "Africa/Kinshasa";
+ } else if (strcmp(region, "03") == 0) {
+ return "Africa/Kinshasa";
+ } else if (strcmp(region, "04") == 0) {
+ return "Africa/Lubumbashi";
+ } else if (strcmp(region, "05") == 0) {
+ return "Africa/Lubumbashi";
+ } else if (strcmp(region, "06") == 0) {
+ return "Africa/Kinshasa";
+ } else if (strcmp(region, "07") == 0) {
+ return "Africa/Lubumbashi";
+ } else if (strcmp(region, "08") == 0) {
+ return "Africa/Kinshasa";
+ } else if (strcmp(region, "09") == 0) {
+ return "Africa/Lubumbashi";
+ } else if (strcmp(region, "10") == 0) {
+ return "Africa/Lubumbashi";
+ } else if (strcmp(region, "11") == 0) {
+ return "Africa/Lubumbashi";
+ } else if (strcmp(region, "12") == 0) {
+ return "Africa/Lubumbashi";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "CF") == 0) {
+ return "Africa/Bangui";
+ }
+ if (strcmp(country, "CG") == 0) {
+ return "Africa/Brazzaville";
+ }
+ if (strcmp(country, "CH") == 0) {
+ return "Europe/Zurich";
+ }
+ if (strcmp(country, "CI") == 0) {
+ return "Africa/Abidjan";
+ }
+ if (strcmp(country, "CK") == 0) {
+ return "Pacific/Rarotonga";
+ }
+ if (strcmp(country, "CL") == 0) {
+ return "America/Santiago";
+ }
+ if (strcmp(country, "CM") == 0) {
+ return "Africa/Lagos";
+ }
+ if (strcmp(country, "CN") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "Asia/Shanghai";
+ } else if (strcmp(region, "02") == 0) {
+ return "Asia/Shanghai";
+ } else if (strcmp(region, "03") == 0) {
+ return "Asia/Shanghai";
+ } else if (strcmp(region, "04") == 0) {
+ return "Asia/Shanghai";
+ } else if (strcmp(region, "05") == 0) {
+ return "Asia/Harbin";
+ } else if (strcmp(region, "06") == 0) {
+ return "Asia/Chongqing";
+ } else if (strcmp(region, "07") == 0) {
+ return "Asia/Shanghai";
+ } else if (strcmp(region, "08") == 0) {
+ return "Asia/Harbin";
+ } else if (strcmp(region, "09") == 0) {
+ return "Asia/Shanghai";
+ } else if (strcmp(region, "10") == 0) {
+ return "Asia/Shanghai";
+ } else if (strcmp(region, "11") == 0) {
+ return "Asia/Chongqing";
+ } else if (strcmp(region, "12") == 0) {
+ return "Asia/Shanghai";
+ } else if (strcmp(region, "13") == 0) {
+ return "Asia/Urumqi";
+ } else if (strcmp(region, "14") == 0) {
+ return "Asia/Chongqing";
+ } else if (strcmp(region, "15") == 0) {
+ return "Asia/Chongqing";
+ } else if (strcmp(region, "16") == 0) {
+ return "Asia/Chongqing";
+ } else if (strcmp(region, "18") == 0) {
+ return "Asia/Chongqing";
+ } else if (strcmp(region, "19") == 0) {
+ return "Asia/Harbin";
+ } else if (strcmp(region, "20") == 0) {
+ return "Asia/Harbin";
+ } else if (strcmp(region, "21") == 0) {
+ return "Asia/Chongqing";
+ } else if (strcmp(region, "22") == 0) {
+ return "Asia/Harbin";
+ } else if (strcmp(region, "23") == 0) {
+ return "Asia/Shanghai";
+ } else if (strcmp(region, "24") == 0) {
+ return "Asia/Chongqing";
+ } else if (strcmp(region, "25") == 0) {
+ return "Asia/Shanghai";
+ } else if (strcmp(region, "26") == 0) {
+ return "Asia/Chongqing";
+ } else if (strcmp(region, "28") == 0) {
+ return "Asia/Shanghai";
+ } else if (strcmp(region, "29") == 0) {
+ return "Asia/Chongqing";
+ } else if (strcmp(region, "30") == 0) {
+ return "Asia/Chongqing";
+ } else if (strcmp(region, "31") == 0) {
+ return "Asia/Chongqing";
+ } else if (strcmp(region, "32") == 0) {
+ return "Asia/Chongqing";
+ } else if (strcmp(region, "33") == 0) {
+ return "Asia/Chongqing";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "CO") == 0) {
+ return "America/Bogota";
+ }
+ if (strcmp(country, "CR") == 0) {
+ return "America/Costa_Rica";
+ }
+ if (strcmp(country, "CU") == 0) {
+ return "America/Havana";
+ }
+ if (strcmp(country, "CV") == 0) {
+ return "Atlantic/Cape_Verde";
+ }
+ if (strcmp(country, "CW") == 0) {
+ return "America/Curacao";
+ }
+ if (strcmp(country, "CX") == 0) {
+ return "Indian/Christmas";
+ }
+ if (strcmp(country, "CY") == 0) {
+ return "Asia/Nicosia";
+ }
+ if (strcmp(country, "CZ") == 0) {
+ return "Europe/Prague";
+ }
+ if (strcmp(country, "DE") == 0) {
+ return "Europe/Berlin";
+ }
+ if (strcmp(country, "DJ") == 0) {
+ return "Africa/Djibouti";
+ }
+ if (strcmp(country, "DK") == 0) {
+ return "Europe/Copenhagen";
+ }
+ if (strcmp(country, "DM") == 0) {
+ return "America/Dominica";
+ }
+ if (strcmp(country, "DO") == 0) {
+ return "America/Santo_Domingo";
+ }
+ if (strcmp(country, "DZ") == 0) {
+ return "Africa/Algiers";
+ }
+ if (strcmp(country, "EC") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "Pacific/Galapagos";
+ } else if (strcmp(region, "02") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "03") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "04") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "05") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "06") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "07") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "08") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "09") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "10") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "11") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "12") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "13") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "14") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "15") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "17") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "18") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "19") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "20") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "22") == 0) {
+ return "America/Guayaquil";
+ } else if (strcmp(region, "24") == 0) {
+ return "America/Guayaquil";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "EE") == 0) {
+ return "Europe/Tallinn";
+ }
+ if (strcmp(country, "EG") == 0) {
+ return "Africa/Cairo";
+ }
+ if (strcmp(country, "EH") == 0) {
+ return "Africa/El_Aaiun";
+ }
+ if (strcmp(country, "ER") == 0) {
+ return "Africa/Asmara";
+ }
+ if (strcmp(country, "ES") == 0) {
+ if (strcmp(region, "07") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "27") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "29") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "31") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "32") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "34") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "39") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "51") == 0) {
+ return "Africa/Ceuta";
+ } else if (strcmp(region, "52") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "53") == 0) {
+ return "Atlantic/Canary";
+ } else if (strcmp(region, "54") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "55") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "56") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "57") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "58") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "59") == 0) {
+ return "Europe/Madrid";
+ } else if (strcmp(region, "60") == 0) {
+ return "Europe/Madrid";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "ET") == 0) {
+ return "Africa/Addis_Ababa";
+ }
+ if (strcmp(country, "FI") == 0) {
+ return "Europe/Helsinki";
+ }
+ if (strcmp(country, "FJ") == 0) {
+ return "Pacific/Fiji";
+ }
+ if (strcmp(country, "FK") == 0) {
+ return "Atlantic/Stanley";
+ }
+ if (strcmp(country, "FM") == 0) {
+ return "Pacific/Pohnpei";
+ }
+ if (strcmp(country, "FO") == 0) {
+ return "Atlantic/Faroe";
+ }
+ if (strcmp(country, "FR") == 0) {
+ return "Europe/Paris";
+ }
+ if (strcmp(country, "FX") == 0) {
+ return "Europe/Paris";
+ }
+ if (strcmp(country, "GA") == 0) {
+ return "Africa/Libreville";
+ }
+ if (strcmp(country, "GB") == 0) {
+ return "Europe/London";
+ }
+ if (strcmp(country, "GD") == 0) {
+ return "America/Grenada";
+ }
+ if (strcmp(country, "GE") == 0) {
+ return "Asia/Tbilisi";
+ }
+ if (strcmp(country, "GF") == 0) {
+ return "America/Cayenne";
+ }
+ if (strcmp(country, "GG") == 0) {
+ return "Europe/Guernsey";
+ }
+ if (strcmp(country, "GH") == 0) {
+ return "Africa/Accra";
+ }
+ if (strcmp(country, "GI") == 0) {
+ return "Europe/Gibraltar";
+ }
+ if (strcmp(country, "GL") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "America/Thule";
+ } else if (strcmp(region, "02") == 0) {
+ return "America/Godthab";
+ } else if (strcmp(region, "03") == 0) {
+ return "America/Godthab";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "GM") == 0) {
+ return "Africa/Banjul";
+ }
+ if (strcmp(country, "GN") == 0) {
+ return "Africa/Conakry";
+ }
+ if (strcmp(country, "GP") == 0) {
+ return "America/Guadeloupe";
+ }
+ if (strcmp(country, "GQ") == 0) {
+ return "Africa/Malabo";
+ }
+ if (strcmp(country, "GR") == 0) {
+ return "Europe/Athens";
+ }
+ if (strcmp(country, "GS") == 0) {
+ return "Atlantic/South_Georgia";
+ }
+ if (strcmp(country, "GT") == 0) {
+ return "America/Guatemala";
+ }
+ if (strcmp(country, "GU") == 0) {
+ return "Pacific/Guam";
+ }
+ if (strcmp(country, "GW") == 0) {
+ return "Africa/Bissau";
+ }
+ if (strcmp(country, "GY") == 0) {
+ return "America/Guyana";
+ }
+ if (strcmp(country, "HK") == 0) {
+ return "Asia/Hong_Kong";
+ }
+ if (strcmp(country, "HN") == 0) {
+ return "America/Tegucigalpa";
+ }
+ if (strcmp(country, "HR") == 0) {
+ return "Europe/Zagreb";
+ }
+ if (strcmp(country, "HT") == 0) {
+ return "America/Port-au-Prince";
+ }
+ if (strcmp(country, "HU") == 0) {
+ return "Europe/Budapest";
+ }
+ if (strcmp(country, "ID") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "Asia/Pontianak";
+ } else if (strcmp(region, "02") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "03") == 0) {
+ return "Asia/Jakarta";
+ } else if (strcmp(region, "04") == 0) {
+ return "Asia/Jakarta";
+ } else if (strcmp(region, "05") == 0) {
+ return "Asia/Jakarta";
+ } else if (strcmp(region, "06") == 0) {
+ return "Asia/Jakarta";
+ } else if (strcmp(region, "07") == 0) {
+ return "Asia/Jakarta";
+ } else if (strcmp(region, "08") == 0) {
+ return "Asia/Jakarta";
+ } else if (strcmp(region, "09") == 0) {
+ return "Asia/Jayapura";
+ } else if (strcmp(region, "10") == 0) {
+ return "Asia/Jakarta";
+ } else if (strcmp(region, "11") == 0) {
+ return "Asia/Pontianak";
+ } else if (strcmp(region, "12") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "13") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "14") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "15") == 0) {
+ return "Asia/Jakarta";
+ } else if (strcmp(region, "16") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "17") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "18") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "19") == 0) {
+ return "Asia/Pontianak";
+ } else if (strcmp(region, "20") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "21") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "22") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "23") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "24") == 0) {
+ return "Asia/Jakarta";
+ } else if (strcmp(region, "25") == 0) {
+ return "Asia/Pontianak";
+ } else if (strcmp(region, "26") == 0) {
+ return "Asia/Pontianak";
+ } else if (strcmp(region, "28") == 0) {
+ return "Asia/Jayapura";
+ } else if (strcmp(region, "29") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "30") == 0) {
+ return "Asia/Jakarta";
+ } else if (strcmp(region, "31") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "32") == 0) {
+ return "Asia/Jakarta";
+ } else if (strcmp(region, "33") == 0) {
+ return "Asia/Jakarta";
+ } else if (strcmp(region, "34") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "35") == 0) {
+ return "Asia/Pontianak";
+ } else if (strcmp(region, "36") == 0) {
+ return "Asia/Jayapura";
+ } else if (strcmp(region, "37") == 0) {
+ return "Asia/Pontianak";
+ } else if (strcmp(region, "38") == 0) {
+ return "Asia/Makassar";
+ } else if (strcmp(region, "39") == 0) {
+ return "Asia/Jayapura";
+ } else if (strcmp(region, "40") == 0) {
+ return "Asia/Pontianak";
+ } else if (strcmp(region, "41") == 0) {
+ return "Asia/Makassar";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "IE") == 0) {
+ return "Europe/Dublin";
+ }
+ if (strcmp(country, "IL") == 0) {
+ return "Asia/Jerusalem";
+ }
+ if (strcmp(country, "IM") == 0) {
+ return "Europe/Isle_of_Man";
+ }
+ if (strcmp(country, "IN") == 0) {
+ return "Asia/Kolkata";
+ }
+ if (strcmp(country, "IO") == 0) {
+ return "Indian/Chagos";
+ }
+ if (strcmp(country, "IQ") == 0) {
+ return "Asia/Baghdad";
+ }
+ if (strcmp(country, "IR") == 0) {
+ return "Asia/Tehran";
+ }
+ if (strcmp(country, "IS") == 0) {
+ return "Atlantic/Reykjavik";
+ }
+ if (strcmp(country, "IT") == 0) {
+ return "Europe/Rome";
+ }
+ if (strcmp(country, "JE") == 0) {
+ return "Europe/Jersey";
+ }
+ if (strcmp(country, "JM") == 0) {
+ return "America/Jamaica";
+ }
+ if (strcmp(country, "JO") == 0) {
+ return "Asia/Amman";
+ }
+ if (strcmp(country, "JP") == 0) {
+ return "Asia/Tokyo";
+ }
+ if (strcmp(country, "KE") == 0) {
+ return "Africa/Nairobi";
+ }
+ if (strcmp(country, "KG") == 0) {
+ return "Asia/Bishkek";
+ }
+ if (strcmp(country, "KH") == 0) {
+ return "Asia/Phnom_Penh";
+ }
+ if (strcmp(country, "KI") == 0) {
+ return "Pacific/Tarawa";
+ }
+ if (strcmp(country, "KM") == 0) {
+ return "Indian/Comoro";
+ }
+ if (strcmp(country, "KN") == 0) {
+ return "America/St_Kitts";
+ }
+ if (strcmp(country, "KP") == 0) {
+ return "Asia/Pyongyang";
+ }
+ if (strcmp(country, "KR") == 0) {
+ return "Asia/Seoul";
+ }
+ if (strcmp(country, "KW") == 0) {
+ return "Asia/Kuwait";
+ }
+ if (strcmp(country, "KY") == 0) {
+ return "America/Cayman";
+ }
+ if (strcmp(country, "KZ") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "Asia/Almaty";
+ } else if (strcmp(region, "02") == 0) {
+ return "Asia/Almaty";
+ } else if (strcmp(region, "03") == 0) {
+ return "Asia/Qyzylorda";
+ } else if (strcmp(region, "04") == 0) {
+ return "Asia/Aqtobe";
+ } else if (strcmp(region, "05") == 0) {
+ return "Asia/Qyzylorda";
+ } else if (strcmp(region, "06") == 0) {
+ return "Asia/Aqtau";
+ } else if (strcmp(region, "07") == 0) {
+ return "Asia/Oral";
+ } else if (strcmp(region, "08") == 0) {
+ return "Asia/Qyzylorda";
+ } else if (strcmp(region, "09") == 0) {
+ return "Asia/Aqtau";
+ } else if (strcmp(region, "10") == 0) {
+ return "Asia/Qyzylorda";
+ } else if (strcmp(region, "11") == 0) {
+ return "Asia/Almaty";
+ } else if (strcmp(region, "12") == 0) {
+ return "Asia/Qyzylorda";
+ } else if (strcmp(region, "13") == 0) {
+ return "Asia/Aqtobe";
+ } else if (strcmp(region, "14") == 0) {
+ return "Asia/Qyzylorda";
+ } else if (strcmp(region, "15") == 0) {
+ return "Asia/Almaty";
+ } else if (strcmp(region, "16") == 0) {
+ return "Asia/Aqtobe";
+ } else if (strcmp(region, "17") == 0) {
+ return "Asia/Almaty";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "LA") == 0) {
+ return "Asia/Vientiane";
+ }
+ if (strcmp(country, "LB") == 0) {
+ return "Asia/Beirut";
+ }
+ if (strcmp(country, "LC") == 0) {
+ return "America/St_Lucia";
+ }
+ if (strcmp(country, "LI") == 0) {
+ return "Europe/Vaduz";
+ }
+ if (strcmp(country, "LK") == 0) {
+ return "Asia/Colombo";
+ }
+ if (strcmp(country, "LR") == 0) {
+ return "Africa/Monrovia";
+ }
+ if (strcmp(country, "LS") == 0) {
+ return "Africa/Maseru";
+ }
+ if (strcmp(country, "LT") == 0) {
+ return "Europe/Vilnius";
+ }
+ if (strcmp(country, "LU") == 0) {
+ return "Europe/Luxembourg";
+ }
+ if (strcmp(country, "LV") == 0) {
+ return "Europe/Riga";
+ }
+ if (strcmp(country, "LY") == 0) {
+ return "Africa/Tripoli";
+ }
+ if (strcmp(country, "MA") == 0) {
+ return "Africa/Casablanca";
+ }
+ if (strcmp(country, "MC") == 0) {
+ return "Europe/Monaco";
+ }
+ if (strcmp(country, "MD") == 0) {
+ return "Europe/Chisinau";
+ }
+ if (strcmp(country, "ME") == 0) {
+ return "Europe/Podgorica";
+ }
+ if (strcmp(country, "MF") == 0) {
+ return "America/Marigot";
+ }
+ if (strcmp(country, "MG") == 0) {
+ return "Indian/Antananarivo";
+ }
+ if (strcmp(country, "MH") == 0) {
+ return "Pacific/Kwajalein";
+ }
+ if (strcmp(country, "MK") == 0) {
+ return "Europe/Skopje";
+ }
+ if (strcmp(country, "ML") == 0) {
+ return "Africa/Bamako";
+ }
+ if (strcmp(country, "MM") == 0) {
+ return "Asia/Rangoon";
+ }
+ if (strcmp(country, "MN") == 0) {
+ if (strcmp(region, "06") == 0) {
+ return "Asia/Choibalsan";
+ } else if (strcmp(region, "11") == 0) {
+ return "Asia/Ulaanbaatar";
+ } else if (strcmp(region, "17") == 0) {
+ return "Asia/Choibalsan";
+ } else if (strcmp(region, "19") == 0) {
+ return "Asia/Hovd";
+ } else if (strcmp(region, "20") == 0) {
+ return "Asia/Ulaanbaatar";
+ } else if (strcmp(region, "21") == 0) {
+ return "Asia/Ulaanbaatar";
+ } else if (strcmp(region, "25") == 0) {
+ return "Asia/Ulaanbaatar";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "MO") == 0) {
+ return "Asia/Macau";
+ }
+ if (strcmp(country, "MP") == 0) {
+ return "Pacific/Saipan";
+ }
+ if (strcmp(country, "MQ") == 0) {
+ return "America/Martinique";
+ }
+ if (strcmp(country, "MR") == 0) {
+ return "Africa/Nouakchott";
+ }
+ if (strcmp(country, "MS") == 0) {
+ return "America/Montserrat";
+ }
+ if (strcmp(country, "MT") == 0) {
+ return "Europe/Malta";
+ }
+ if (strcmp(country, "MU") == 0) {
+ return "Indian/Mauritius";
+ }
+ if (strcmp(country, "MV") == 0) {
+ return "Indian/Maldives";
+ }
+ if (strcmp(country, "MW") == 0) {
+ return "Africa/Blantyre";
+ }
+ if (strcmp(country, "MX") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "02") == 0) {
+ return "America/Tijuana";
+ } else if (strcmp(region, "03") == 0) {
+ return "America/Hermosillo";
+ } else if (strcmp(region, "04") == 0) {
+ return "America/Merida";
+ } else if (strcmp(region, "05") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "06") == 0) {
+ return "America/Chihuahua";
+ } else if (strcmp(region, "07") == 0) {
+ return "America/Monterrey";
+ } else if (strcmp(region, "08") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "09") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "10") == 0) {
+ return "America/Mazatlan";
+ } else if (strcmp(region, "11") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "12") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "13") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "14") == 0) {
+ return "America/Mazatlan";
+ } else if (strcmp(region, "15") == 0) {
+ return "America/Chihuahua";
+ } else if (strcmp(region, "16") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "17") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "18") == 0) {
+ return "America/Mazatlan";
+ } else if (strcmp(region, "19") == 0) {
+ return "America/Monterrey";
+ } else if (strcmp(region, "20") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "21") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "22") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "23") == 0) {
+ return "America/Cancun";
+ } else if (strcmp(region, "24") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "25") == 0) {
+ return "America/Mazatlan";
+ } else if (strcmp(region, "26") == 0) {
+ return "America/Hermosillo";
+ } else if (strcmp(region, "27") == 0) {
+ return "America/Merida";
+ } else if (strcmp(region, "28") == 0) {
+ return "America/Monterrey";
+ } else if (strcmp(region, "29") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "30") == 0) {
+ return "America/Mexico_City";
+ } else if (strcmp(region, "31") == 0) {
+ return "America/Merida";
+ } else if (strcmp(region, "32") == 0) {
+ return "America/Monterrey";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "MY") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "Asia/Kuala_Lumpur";
+ } else if (strcmp(region, "02") == 0) {
+ return "Asia/Kuala_Lumpur";
+ } else if (strcmp(region, "03") == 0) {
+ return "Asia/Kuala_Lumpur";
+ } else if (strcmp(region, "04") == 0) {
+ return "Asia/Kuala_Lumpur";
+ } else if (strcmp(region, "05") == 0) {
+ return "Asia/Kuala_Lumpur";
+ } else if (strcmp(region, "06") == 0) {
+ return "Asia/Kuala_Lumpur";
+ } else if (strcmp(region, "07") == 0) {
+ return "Asia/Kuala_Lumpur";
+ } else if (strcmp(region, "08") == 0) {
+ return "Asia/Kuala_Lumpur";
+ } else if (strcmp(region, "09") == 0) {
+ return "Asia/Kuala_Lumpur";
+ } else if (strcmp(region, "11") == 0) {
+ return "Asia/Kuching";
+ } else if (strcmp(region, "12") == 0) {
+ return "Asia/Kuala_Lumpur";
+ } else if (strcmp(region, "13") == 0) {
+ return "Asia/Kuala_Lumpur";
+ } else if (strcmp(region, "14") == 0) {
+ return "Asia/Kuala_Lumpur";
+ } else if (strcmp(region, "15") == 0) {
+ return "Asia/Kuching";
+ } else if (strcmp(region, "16") == 0) {
+ return "Asia/Kuching";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "MZ") == 0) {
+ return "Africa/Maputo";
+ }
+ if (strcmp(country, "NA") == 0) {
+ return "Africa/Windhoek";
+ }
+ if (strcmp(country, "NC") == 0) {
+ return "Pacific/Noumea";
+ }
+ if (strcmp(country, "NE") == 0) {
+ return "Africa/Niamey";
+ }
+ if (strcmp(country, "NF") == 0) {
+ return "Pacific/Norfolk";
+ }
+ if (strcmp(country, "NG") == 0) {
+ return "Africa/Lagos";
+ }
+ if (strcmp(country, "NI") == 0) {
+ return "America/Managua";
+ }
+ if (strcmp(country, "NL") == 0) {
+ return "Europe/Amsterdam";
+ }
+ if (strcmp(country, "NO") == 0) {
+ return "Europe/Oslo";
+ }
+ if (strcmp(country, "NP") == 0) {
+ return "Asia/Kathmandu";
+ }
+ if (strcmp(country, "NR") == 0) {
+ return "Pacific/Nauru";
+ }
+ if (strcmp(country, "NU") == 0) {
+ return "Pacific/Niue";
+ }
+ if (strcmp(country, "NZ") == 0) {
+ if (strcmp(region, "85") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "E7") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "E8") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "E9") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "F1") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "F2") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "F3") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "F4") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "F5") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "F6") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "F7") == 0) {
+ return "Pacific/Chatham";
+ } else if (strcmp(region, "F8") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "F9") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "G1") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "G2") == 0) {
+ return "Pacific/Auckland";
+ } else if (strcmp(region, "G3") == 0) {
+ return "Pacific/Auckland";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "OM") == 0) {
+ return "Asia/Muscat";
+ }
+ if (strcmp(country, "PA") == 0) {
+ return "America/Panama";
+ }
+ if (strcmp(country, "PE") == 0) {
+ return "America/Lima";
+ }
+ if (strcmp(country, "PF") == 0) {
+ return "Pacific/Marquesas";
+ }
+ if (strcmp(country, "PG") == 0) {
+ return "Pacific/Port_Moresby";
+ }
+ if (strcmp(country, "PH") == 0) {
+ return "Asia/Manila";
+ }
+ if (strcmp(country, "PK") == 0) {
+ return "Asia/Karachi";
+ }
+ if (strcmp(country, "PL") == 0) {
+ return "Europe/Warsaw";
+ }
+ if (strcmp(country, "PM") == 0) {
+ return "America/Miquelon";
+ }
+ if (strcmp(country, "PN") == 0) {
+ return "Pacific/Pitcairn";
+ }
+ if (strcmp(country, "PR") == 0) {
+ return "America/Puerto_Rico";
+ }
+ if (strcmp(country, "PS") == 0) {
+ return "Asia/Gaza";
+ }
+ if (strcmp(country, "PT") == 0) {
+ if (strcmp(region, "02") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "03") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "04") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "05") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "06") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "07") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "08") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "09") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "10") == 0) {
+ return "Atlantic/Madeira";
+ } else if (strcmp(region, "11") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "13") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "14") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "16") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "17") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "18") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "19") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "20") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "21") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "22") == 0) {
+ return "Europe/Lisbon";
+ } else if (strcmp(region, "23") == 0) {
+ return "Atlantic/Azores";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "PW") == 0) {
+ return "Pacific/Palau";
+ }
+ if (strcmp(country, "PY") == 0) {
+ return "America/Asuncion";
+ }
+ if (strcmp(country, "QA") == 0) {
+ return "Asia/Qatar";
+ }
+ if (strcmp(country, "RE") == 0) {
+ return "Indian/Reunion";
+ }
+ if (strcmp(country, "RO") == 0) {
+ return "Europe/Bucharest";
+ }
+ if (strcmp(country, "RS") == 0) {
+ return "Europe/Belgrade";
+ }
+ if (strcmp(country, "RU") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "Europe/Volgograd";
+ } else if (strcmp(region, "02") == 0) {
+ return "Asia/Irkutsk";
+ } else if (strcmp(region, "03") == 0) {
+ return "Asia/Novokuznetsk";
+ } else if (strcmp(region, "04") == 0) {
+ return "Asia/Novosibirsk";
+ } else if (strcmp(region, "05") == 0) {
+ return "Asia/Vladivostok";
+ } else if (strcmp(region, "06") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "07") == 0) {
+ return "Europe/Volgograd";
+ } else if (strcmp(region, "08") == 0) {
+ return "Europe/Samara";
+ } else if (strcmp(region, "09") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "10") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "11") == 0) {
+ return "Asia/Irkutsk";
+ } else if (strcmp(region, "12") == 0) {
+ return "Europe/Volgograd";
+ } else if (strcmp(region, "13") == 0) {
+ return "Asia/Yekaterinburg";
+ } else if (strcmp(region, "14") == 0) {
+ return "Asia/Irkutsk";
+ } else if (strcmp(region, "15") == 0) {
+ return "Asia/Anadyr";
+ } else if (strcmp(region, "16") == 0) {
+ return "Europe/Samara";
+ } else if (strcmp(region, "17") == 0) {
+ return "Europe/Volgograd";
+ } else if (strcmp(region, "18") == 0) {
+ return "Asia/Krasnoyarsk";
+ } else if (strcmp(region, "20") == 0) {
+ return "Asia/Irkutsk";
+ } else if (strcmp(region, "21") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "22") == 0) {
+ return "Europe/Volgograd";
+ } else if (strcmp(region, "23") == 0) {
+ return "Europe/Kaliningrad";
+ } else if (strcmp(region, "24") == 0) {
+ return "Europe/Volgograd";
+ } else if (strcmp(region, "25") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "26") == 0) {
+ return "Asia/Kamchatka";
+ } else if (strcmp(region, "27") == 0) {
+ return "Europe/Volgograd";
+ } else if (strcmp(region, "28") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "29") == 0) {
+ return "Asia/Novokuznetsk";
+ } else if (strcmp(region, "30") == 0) {
+ return "Asia/Vladivostok";
+ } else if (strcmp(region, "31") == 0) {
+ return "Asia/Krasnoyarsk";
+ } else if (strcmp(region, "32") == 0) {
+ return "Asia/Omsk";
+ } else if (strcmp(region, "33") == 0) {
+ return "Asia/Yekaterinburg";
+ } else if (strcmp(region, "34") == 0) {
+ return "Asia/Yekaterinburg";
+ } else if (strcmp(region, "35") == 0) {
+ return "Asia/Yekaterinburg";
+ } else if (strcmp(region, "36") == 0) {
+ return "Asia/Anadyr";
+ } else if (strcmp(region, "37") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "38") == 0) {
+ return "Europe/Volgograd";
+ } else if (strcmp(region, "39") == 0) {
+ return "Asia/Krasnoyarsk";
+ } else if (strcmp(region, "40") == 0) {
+ return "Asia/Yekaterinburg";
+ } else if (strcmp(region, "41") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "42") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "43") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "44") == 0) {
+ return "Asia/Magadan";
+ } else if (strcmp(region, "45") == 0) {
+ return "Europe/Samara";
+ } else if (strcmp(region, "46") == 0) {
+ return "Europe/Samara";
+ } else if (strcmp(region, "47") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "48") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "49") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "50") == 0) {
+ return "Asia/Yekaterinburg";
+ } else if (strcmp(region, "51") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "52") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "53") == 0) {
+ return "Asia/Novosibirsk";
+ } else if (strcmp(region, "54") == 0) {
+ return "Asia/Omsk";
+ } else if (strcmp(region, "55") == 0) {
+ return "Europe/Samara";
+ } else if (strcmp(region, "56") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "57") == 0) {
+ return "Europe/Samara";
+ } else if (strcmp(region, "58") == 0) {
+ return "Asia/Yekaterinburg";
+ } else if (strcmp(region, "59") == 0) {
+ return "Asia/Vladivostok";
+ } else if (strcmp(region, "60") == 0) {
+ return "Europe/Kaliningrad";
+ } else if (strcmp(region, "61") == 0) {
+ return "Europe/Volgograd";
+ } else if (strcmp(region, "62") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "63") == 0) {
+ return "Asia/Yakutsk";
+ } else if (strcmp(region, "64") == 0) {
+ return "Asia/Sakhalin";
+ } else if (strcmp(region, "65") == 0) {
+ return "Europe/Samara";
+ } else if (strcmp(region, "66") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "67") == 0) {
+ return "Europe/Samara";
+ } else if (strcmp(region, "68") == 0) {
+ return "Europe/Volgograd";
+ } else if (strcmp(region, "69") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "70") == 0) {
+ return "Europe/Volgograd";
+ } else if (strcmp(region, "71") == 0) {
+ return "Asia/Yekaterinburg";
+ } else if (strcmp(region, "72") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "73") == 0) {
+ return "Europe/Samara";
+ } else if (strcmp(region, "74") == 0) {
+ return "Asia/Krasnoyarsk";
+ } else if (strcmp(region, "75") == 0) {
+ return "Asia/Novosibirsk";
+ } else if (strcmp(region, "76") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "77") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "78") == 0) {
+ return "Asia/Yekaterinburg";
+ } else if (strcmp(region, "79") == 0) {
+ return "Asia/Irkutsk";
+ } else if (strcmp(region, "80") == 0) {
+ return "Asia/Yekaterinburg";
+ } else if (strcmp(region, "81") == 0) {
+ return "Europe/Samara";
+ } else if (strcmp(region, "82") == 0) {
+ return "Asia/Irkutsk";
+ } else if (strcmp(region, "83") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "84") == 0) {
+ return "Europe/Volgograd";
+ } else if (strcmp(region, "85") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "86") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "87") == 0) {
+ return "Asia/Novosibirsk";
+ } else if (strcmp(region, "88") == 0) {
+ return "Europe/Moscow";
+ } else if (strcmp(region, "89") == 0) {
+ return "Asia/Vladivostok";
+ } else if (strcmp(region, "90") == 0) {
+ return "Asia/Yekaterinburg";
+ } else if (strcmp(region, "91") == 0) {
+ return "Asia/Krasnoyarsk";
+ } else if (strcmp(region, "92") == 0) {
+ return "Asia/Anadyr";
+ } else if (strcmp(region, "93") == 0) {
+ return "Asia/Irkutsk";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "RW") == 0) {
+ return "Africa/Kigali";
+ }
+ if (strcmp(country, "SA") == 0) {
+ return "Asia/Riyadh";
+ }
+ if (strcmp(country, "SB") == 0) {
+ return "Pacific/Guadalcanal";
+ }
+ if (strcmp(country, "SC") == 0) {
+ return "Indian/Mahe";
+ }
+ if (strcmp(country, "SD") == 0) {
+ return "Africa/Khartoum";
+ }
+ if (strcmp(country, "SE") == 0) {
+ return "Europe/Stockholm";
+ }
+ if (strcmp(country, "SG") == 0) {
+ return "Asia/Singapore";
+ }
+ if (strcmp(country, "SH") == 0) {
+ return "Atlantic/St_Helena";
+ }
+ if (strcmp(country, "SI") == 0) {
+ return "Europe/Ljubljana";
+ }
+ if (strcmp(country, "SJ") == 0) {
+ return "Arctic/Longyearbyen";
+ }
+ if (strcmp(country, "SK") == 0) {
+ return "Europe/Bratislava";
+ }
+ if (strcmp(country, "SL") == 0) {
+ return "Africa/Freetown";
+ }
+ if (strcmp(country, "SM") == 0) {
+ return "Europe/San_Marino";
+ }
+ if (strcmp(country, "SN") == 0) {
+ return "Africa/Dakar";
+ }
+ if (strcmp(country, "SO") == 0) {
+ return "Africa/Mogadishu";
+ }
+ if (strcmp(country, "SR") == 0) {
+ return "America/Paramaribo";
+ }
+ if (strcmp(country, "SS") == 0) {
+ return "Africa/Juba";
+ }
+ if (strcmp(country, "ST") == 0) {
+ return "Africa/Sao_Tome";
+ }
+ if (strcmp(country, "SV") == 0) {
+ return "America/El_Salvador";
+ }
+ if (strcmp(country, "SX") == 0) {
+ return "America/Curacao";
+ }
+ if (strcmp(country, "SY") == 0) {
+ return "Asia/Damascus";
+ }
+ if (strcmp(country, "SZ") == 0) {
+ return "Africa/Mbabane";
+ }
+ if (strcmp(country, "TC") == 0) {
+ return "America/Grand_Turk";
+ }
+ if (strcmp(country, "TD") == 0) {
+ return "Africa/Ndjamena";
+ }
+ if (strcmp(country, "TF") == 0) {
+ return "Indian/Kerguelen";
+ }
+ if (strcmp(country, "TG") == 0) {
+ return "Africa/Lome";
+ }
+ if (strcmp(country, "TH") == 0) {
+ return "Asia/Bangkok";
+ }
+ if (strcmp(country, "TJ") == 0) {
+ return "Asia/Dushanbe";
+ }
+ if (strcmp(country, "TK") == 0) {
+ return "Pacific/Fakaofo";
+ }
+ if (strcmp(country, "TL") == 0) {
+ return "Asia/Dili";
+ }
+ if (strcmp(country, "TM") == 0) {
+ return "Asia/Ashgabat";
+ }
+ if (strcmp(country, "TN") == 0) {
+ return "Africa/Tunis";
+ }
+ if (strcmp(country, "TO") == 0) {
+ return "Pacific/Tongatapu";
+ }
+ if (strcmp(country, "TR") == 0) {
+ return "Asia/Istanbul";
+ }
+ if (strcmp(country, "TT") == 0) {
+ return "America/Port_of_Spain";
+ }
+ if (strcmp(country, "TV") == 0) {
+ return "Pacific/Funafuti";
+ }
+ if (strcmp(country, "TW") == 0) {
+ return "Asia/Taipei";
+ }
+ if (strcmp(country, "TZ") == 0) {
+ return "Africa/Dar_es_Salaam";
+ }
+ if (strcmp(country, "UA") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "Europe/Kiev";
+ } else if (strcmp(region, "02") == 0) {
+ return "Europe/Kiev";
+ } else if (strcmp(region, "03") == 0) {
+ return "Europe/Uzhgorod";
+ } else if (strcmp(region, "04") == 0) {
+ return "Europe/Zaporozhye";
+ } else if (strcmp(region, "05") == 0) {
+ return "Europe/Zaporozhye";
+ } else if (strcmp(region, "06") == 0) {
+ return "Europe/Uzhgorod";
+ } else if (strcmp(region, "07") == 0) {
+ return "Europe/Zaporozhye";
+ } else if (strcmp(region, "08") == 0) {
+ return "Europe/Simferopol";
+ } else if (strcmp(region, "09") == 0) {
+ return "Europe/Kiev";
+ } else if (strcmp(region, "10") == 0) {
+ return "Europe/Zaporozhye";
+ } else if (strcmp(region, "11") == 0) {
+ return "Europe/Simferopol";
+ } else if (strcmp(region, "12") == 0) {
+ return "Europe/Kiev";
+ } else if (strcmp(region, "13") == 0) {
+ return "Europe/Kiev";
+ } else if (strcmp(region, "14") == 0) {
+ return "Europe/Zaporozhye";
+ } else if (strcmp(region, "15") == 0) {
+ return "Europe/Uzhgorod";
+ } else if (strcmp(region, "16") == 0) {
+ return "Europe/Zaporozhye";
+ } else if (strcmp(region, "17") == 0) {
+ return "Europe/Simferopol";
+ } else if (strcmp(region, "18") == 0) {
+ return "Europe/Zaporozhye";
+ } else if (strcmp(region, "19") == 0) {
+ return "Europe/Kiev";
+ } else if (strcmp(region, "20") == 0) {
+ return "Europe/Simferopol";
+ } else if (strcmp(region, "21") == 0) {
+ return "Europe/Kiev";
+ } else if (strcmp(region, "22") == 0) {
+ return "Europe/Uzhgorod";
+ } else if (strcmp(region, "23") == 0) {
+ return "Europe/Kiev";
+ } else if (strcmp(region, "24") == 0) {
+ return "Europe/Uzhgorod";
+ } else if (strcmp(region, "25") == 0) {
+ return "Europe/Uzhgorod";
+ } else if (strcmp(region, "26") == 0) {
+ return "Europe/Zaporozhye";
+ } else if (strcmp(region, "27") == 0) {
+ return "Europe/Kiev";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "UG") == 0) {
+ return "Africa/Kampala";
+ }
+ if (strcmp(country, "UM") == 0) {
+ return "Pacific/Wake";
+ }
+ if (strcmp(country, "US") == 0) {
+ if (strcmp(region, "AK") == 0) {
+ return "America/Anchorage";
+ } else if (strcmp(region, "AL") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "AR") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "AZ") == 0) {
+ return "America/Phoenix";
+ } else if (strcmp(region, "CA") == 0) {
+ return "America/Los_Angeles";
+ } else if (strcmp(region, "CO") == 0) {
+ return "America/Denver";
+ } else if (strcmp(region, "CT") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "DC") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "DE") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "FL") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "GA") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "HI") == 0) {
+ return "Pacific/Honolulu";
+ } else if (strcmp(region, "IA") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "ID") == 0) {
+ return "America/Denver";
+ } else if (strcmp(region, "IL") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "IN") == 0) {
+ return "America/Indiana/Indianapolis";
+ } else if (strcmp(region, "KS") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "KY") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "LA") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "MA") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "MD") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "ME") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "MI") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "MN") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "MO") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "MS") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "MT") == 0) {
+ return "America/Denver";
+ } else if (strcmp(region, "NC") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "ND") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "NE") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "NH") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "NJ") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "NM") == 0) {
+ return "America/Denver";
+ } else if (strcmp(region, "NV") == 0) {
+ return "America/Los_Angeles";
+ } else if (strcmp(region, "NY") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "OH") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "OK") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "OR") == 0) {
+ return "America/Los_Angeles";
+ } else if (strcmp(region, "PA") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "RI") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "SC") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "SD") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "TN") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "TX") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "UT") == 0) {
+ return "America/Denver";
+ } else if (strcmp(region, "VA") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "VT") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "WA") == 0) {
+ return "America/Los_Angeles";
+ } else if (strcmp(region, "WI") == 0) {
+ return "America/Chicago";
+ } else if (strcmp(region, "WV") == 0) {
+ return "America/New_York";
+ } else if (strcmp(region, "WY") == 0) {
+ return "America/Denver";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "UY") == 0) {
+ return "America/Montevideo";
+ }
+ if (strcmp(country, "UZ") == 0) {
+ if (strcmp(region, "01") == 0) {
+ return "Asia/Tashkent";
+ } else if (strcmp(region, "02") == 0) {
+ return "Asia/Samarkand";
+ } else if (strcmp(region, "03") == 0) {
+ return "Asia/Tashkent";
+ } else if (strcmp(region, "05") == 0) {
+ return "Asia/Samarkand";
+ } else if (strcmp(region, "06") == 0) {
+ return "Asia/Tashkent";
+ } else if (strcmp(region, "07") == 0) {
+ return "Asia/Samarkand";
+ } else if (strcmp(region, "08") == 0) {
+ return "Asia/Samarkand";
+ } else if (strcmp(region, "09") == 0) {
+ return "Asia/Samarkand";
+ } else if (strcmp(region, "10") == 0) {
+ return "Asia/Samarkand";
+ } else if (strcmp(region, "12") == 0) {
+ return "Asia/Samarkand";
+ } else if (strcmp(region, "13") == 0) {
+ return "Asia/Tashkent";
+ } else if (strcmp(region, "14") == 0) {
+ return "Asia/Tashkent";
+ } else {
+ return NULL;
+ }
+ }
+ if (strcmp(country, "VA") == 0) {
+ return "Europe/Vatican";
+ }
+ if (strcmp(country, "VC") == 0) {
+ return "America/St_Vincent";
+ }
+ if (strcmp(country, "VE") == 0) {
+ return "America/Caracas";
+ }
+ if (strcmp(country, "VG") == 0) {
+ return "America/Tortola";
+ }
+ if (strcmp(country, "VI") == 0) {
+ return "America/St_Thomas";
+ }
+ if (strcmp(country, "VN") == 0) {
+ return "Asia/Phnom_Penh";
+ }
+ if (strcmp(country, "VU") == 0) {
+ return "Pacific/Efate";
+ }
+ if (strcmp(country, "WF") == 0) {
+ return "Pacific/Wallis";
+ }
+ if (strcmp(country, "WS") == 0) {
+ return "Pacific/Pago_Pago";
+ }
+ if (strcmp(country, "YE") == 0) {
+ return "Asia/Aden";
+ }
+ if (strcmp(country, "YT") == 0) {
+ return "Indian/Mayotte";
+ }
+ if (strcmp(country, "YU") == 0) {
+ return "Europe/Belgrade";
+ }
+ if (strcmp(country, "ZA") == 0) {
+ return "Africa/Johannesburg";
+ }
+ if (strcmp(country, "ZM") == 0) {
+ return "Africa/Lusaka";
+ }
+ if (strcmp(country, "ZW") == 0) {
+ return "Africa/Harare";
+ }
+ return timezone;
+}