######################################################################
# Copyright (C) 2007-2008, International Business Machines
# Corporation and others.  All Rights Reserved.
######################################################################
# This is an ICU-specific file with the same format as regular
# tzdata time zone files, for consistent parsing by the tools that
# turn "Olson" tzdata into ICU's zoneinfo.txt.
# The purpose of this file is to give ICU a superset of the time zones
# that are in CLDR and also include legacy ICU time zones originally
# in tz.alias for rataining backward compatibility.

# Add Etc/Unknown, defined by CLDR. Give it Etc/GMT behavior.

# Zone	NAME		GMTOFF	RULES	FORMAT
Zone	Etc/Unknown	0	-	Unknown

# Add SystemV/XXX time zones as aliases according to CLDR.
# The Olson systemv file has these commented out.
# An alternative to making these aliases according to CLDR would be
# to copy and un-comment the data from the systemv file.

# Link canonical alias
Link America/Halifax SystemV/AST4ADT
Link America/New_York SystemV/EST5EDT
Link America/Chicago SystemV/CST6CDT
Link America/Denver SystemV/MST7MDT
Link America/Los_Angeles SystemV/PST8PDT
Link America/Anchorage SystemV/YST9YDT
Link Etc/GMT+4 SystemV/AST4
Link Etc/GMT+5 SystemV/EST5
Link Etc/GMT+6 SystemV/CST6
Link Etc/GMT+7 SystemV/MST7
Link Etc/GMT+8 SystemV/PST8
Link Etc/GMT+9 SystemV/YST9
Link Etc/GMT+10 SystemV/HST10


# The list below is for supporting legacy ICU zone aliases.
# These definitions were originally defined in tz.alias.

#### Aliases that conflict with Olson compatibility Zone definition

Link Australia/Darwin ACT
Link Australia/Sydney AET
Link America/Argentina/Buenos_Aires AGT
Link Africa/Cairo ART
Link America/Anchorage AST
Link America/Sao_Paulo BET
Link Asia/Dhaka BST
Link Africa/Harare CAT
Link America/St_Johns CNT
Link America/Chicago CST
Link Asia/Shanghai CTT
Link Africa/Addis_Ababa EAT
Link Europe/Paris ECT
#Link Europe/Istanbul EET # EET is a standard UNIX zone
####Link EST America/New_York EST # Defined as -05:00
####Link Pacific/Honolulu HST # Defined as -10:00
Link America/Indiana/Indianapolis IET
Link Asia/Kolkata IST
Link Asia/Tokyo JST
#Link Asia/Tehran MET # MET is a standard UNIX zone
Link Pacific/Apia MIT
####Link America/Denver MST # Defined as -07:00
Link Asia/Yerevan NET
Link Pacific/Auckland NST
Link Asia/Karachi PLT
Link America/Phoenix PNT
Link America/Puerto_Rico PRT
Link America/Los_Angeles PST
Link Pacific/Guadalcanal SST
#Link Etc/UTC UTC # Olson LINK
Link Asia/Ho_Chi_Minh VST
