[automerger skipped] DO NOT MERGE Track tzdb 2023d update. [SC_V2 CTS] am: 9c14af3c90 -s ours am: 25d9d020f2 -s ours am: 1117be9642 -s ours

am skip reason: contains skip directive

Original change: https://android-review.googlesource.com/c/platform/external/icu/+/2985516

Change-Id: Ia9317605c147fe661153ed901698d49da9929470
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Android.bp b/Android.bp
index f1c850e..8abda73 100644
--- a/Android.bp
+++ b/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     default_applicable_licenses: ["external_icu_license"],
 }
 
@@ -62,10 +63,12 @@
         "-Wall",
         "-Werror",
         // Make all warnings into errors, but ignore a set of warnings used in headers by default.
+        "-Wno-ambiguous-reversed-operator",
+        "-Wno-deprecated-declarations",
         "-Wno-unused-parameter",
         "-Wno-unused-const-variable",
         "-Wno-unneeded-internal-declaration",
-        "-Wno-deprecated-declarations",
+        "-DUCONFIG_USE_ML_PHRASE_BREAKING=1",
     ],
     target: {
         android: {
@@ -80,3 +83,30 @@
         },
     },
 }
+
+aconfig_declarations {
+    name: "icu_aconfig_flags",
+    package: "com.android.icu",
+    container: "system",
+    srcs: [
+        "icu.aconfig",
+    ],
+}
+
+java_aconfig_library {
+    name: "icu_aconfig_flags_lib",
+    aconfig_declarations: "icu_aconfig_flags",
+    host_supported: true,
+    // "fake_device_config" is needed for the host.
+    libs: [
+        "fake_device_config",
+        "aconfig-annotations-lib-sdk-none",
+        "unsupportedappusage-sdk-none",
+    ],
+    apex_available: [
+        "//apex_available:platform",
+        "com.android.i18n",
+    ],
+    sdk_version: "none",
+    system_modules: "core-all-system-modules",
+}
diff --git a/OWNERS b/OWNERS
index 5737ec8..2a49be3 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,8 +1,6 @@
 # Default reviewers
 vichang@google.com
 mingaleev@google.com
-mscherer@google.com
-oth@google.com
 
 # Bug component: 24949
 # libcore team is the larger team owning the library.
@@ -11,7 +9,4 @@
 libcore-bugs-triage@google.com
 # g2.corp.android-icu-maintainers@google.com
 # android-libcore-team+review@google.com
-# icu-team+reviews@google.com
 
-# Others in the ICU team
-roubert@google.com
diff --git a/android_icu4c/Android.bp b/android_icu4c/Android.bp
index 2a8e8bd..0cc0405 100644
--- a/android_icu4c/Android.bp
+++ b/android_icu4c/Android.bp
@@ -12,6 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 package {
+    default_team: "trendy_team_java_core_libraries",
     default_visibility: ["//external/icu:__subpackages__"],
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
diff --git a/android_icu4j/Android.bp b/android_icu4j/Android.bp
index e0e2851..43b66e6 100644
--- a/android_icu4j/Android.bp
+++ b/android_icu4j/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     default_visibility: ["//visibility:private"],
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
@@ -96,7 +97,16 @@
     name: "core-repackaged-icu4j",
     installable: false,
     srcs: [":android_icu4j_repackaged_src_files"],
-    libs: ["unsupportedappusage"],
+    libs: [
+        "unsupportedappusage",
+        // Need framework-api-annotations-lib for @FlaggedApi.
+        // Put framework-api-annotations into libs to avoid exposing the definition of framework's
+        // annotations from ICU (wrong place) instead of framework (correct place).
+        "framework-annotations-lib",
+        // We only need the aconfig library for @FlaggedApi. We can move it to static_libs
+        // if we need it for flagging features in the future.
+        "icu_aconfig_flags_lib",
+    ],
     // The resource files are generated in the downstream branch master-icu-dev.
     java_resource_dirs: ["resources"],
 
@@ -172,6 +182,9 @@
 platform_compat_config {
     name: "icu4j-platform-compat-config",
     src: ":core-icu4j",
+    visibility: [
+        "//frameworks/base",
+    ],
 }
 
 java_sdk_library {
@@ -187,9 +200,16 @@
         // locations.
         "//prebuilts:__subpackages__",
     ],
+    // Added to make sure that no private classes leak out in stubs.
+    defaults: ["libcore_icu_bridge_defaults"],
     srcs: [
+        // Added to make sure that no private classes leak out in stubs.
+        ":android_icu4j_repackaged_src_files",
         ":android_icu4j_public_api_files",
     ],
+    libs: [
+        "icu_aconfig_flags_lib",
+    ],
     droiddoc_options: [
         "--force-convert-to-warning-nullability-annotations +*:-android.*:+android.icu.*:-dalvik.* ",
     ],
@@ -228,6 +248,9 @@
     // version of the API.
     dist_stem: "runtime-i18n",
     dist_group: "android",
+    aconfig_declarations: [
+        "icu_aconfig_flags",
+    ],
 }
 
 // Generates stub source files for the intra-core API of the I18N module.
@@ -467,30 +490,3 @@
         ],
     },
 }
-
-java_api_contribution {
-    name: "i18n-intra-core-stubs",
-    api_surface: "intra-core",
-    api_file: "api/intra/current.txt",
-    visibility: [
-        "//build/orchestrator/apis",
-    ],
-}
-
-java_api_contribution {
-    name: "i18n-public-stubs",
-    api_surface: "public",
-    api_file: "api/public/current.txt",
-    visibility: [
-        "//build/orchestrator/apis",
-    ],
-}
-
-java_api_contribution {
-    name: "i18n-module-lib-stubs",
-    api_surface: "module-lib",
-    api_file: "api/stable_platform/current.txt",
-    visibility: [
-        "//build/orchestrator/apis",
-    ],
-}
diff --git a/android_icu4j/api/public/current.txt b/android_icu4j/api/public/current.txt
index fd2e6fe..ca5a60c 100644
--- a/android_icu4j/api/public/current.txt
+++ b/android_icu4j/api/public/current.txt
@@ -370,6 +370,9 @@
   }
 
   public static interface UCharacter.LineBreak {
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final int AKSARA = 43; // 0x2b
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final int AKSARA_PREBASE = 44; // 0x2c
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final int AKSARA_START = 45; // 0x2d
     field public static final int ALPHABETIC = 2; // 0x2
     field public static final int AMBIGUOUS = 1; // 0x1
     field public static final int BREAK_AFTER = 4; // 0x4
@@ -411,6 +414,8 @@
     field public static final int SPACE = 26; // 0x1a
     field public static final int SURROGATE = 25; // 0x19
     field public static final int UNKNOWN = 0; // 0x0
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final int VIRAMA = 47; // 0x2f
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final int VIRAMA_FINAL = 46; // 0x2e
     field public static final int WORD_JOINER = 30; // 0x1e
     field public static final int ZWJ = 42; // 0x2a
     field public static final int ZWSPACE = 28; // 0x1c
@@ -567,6 +572,8 @@
     field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G_ID = 302; // 0x12e
     field public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H;
     field public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H_ID = 322; // 0x142
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.lang.UCharacter.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I;
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_ID = 328; // 0x148
     field public static final int CJK_UNIFIED_IDEOGRAPHS_ID = 71; // 0x47
     field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_DIACRITICAL_MARKS;
     field public static final android.icu.lang.UCharacter.UnicodeBlock COMBINING_DIACRITICAL_MARKS_EXTENDED;
@@ -1709,12 +1716,14 @@
   public class FormattedNumber implements android.icu.text.FormattedValue {
     method public <A extends java.lang.Appendable> A appendTo(A);
     method public char charAt(int);
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.NounClass getNounClass();
     method public android.icu.util.MeasureUnit getOutputUnit();
     method public int length();
     method public boolean nextPosition(android.icu.text.ConstrainedFieldPosition);
     method public CharSequence subSequence(int, int);
     method public java.math.BigDecimal toBigDecimal();
     method public java.text.AttributedCharacterIterator toCharacterIterator();
+    method public String toString();
   }
 
   public class FormattedNumberRange implements android.icu.text.FormattedValue {
@@ -1727,6 +1736,7 @@
     method public boolean nextPosition(android.icu.text.ConstrainedFieldPosition);
     method public CharSequence subSequence(int, int);
     method public java.text.AttributedCharacterIterator toCharacterIterator();
+    method public String toString();
   }
 
   public abstract class FractionPrecision extends android.icu.number.Precision {
@@ -1815,6 +1825,7 @@
 
   public abstract class NumberFormatterSettings<T extends android.icu.number.NumberFormatterSettings<?>> {
     method public T decimal(android.icu.number.NumberFormatter.DecimalSeparatorDisplay);
+    method @FlaggedApi("com.android.icu.icu_v_api") public T displayOptions(android.icu.text.DisplayOptions);
     method public T grouping(android.icu.number.NumberFormatter.GroupingStrategy);
     method public T integerWidth(android.icu.number.IntegerWidth);
     method public T notation(android.icu.number.Notation);
@@ -2199,6 +2210,7 @@
     method public android.icu.text.Collator cloneAsThawed();
     method public abstract int compare(String, String);
     method public int compare(Object, Object);
+    method public boolean equals(Object);
     method public boolean equals(String, String);
     method public android.icu.text.Collator freeze();
     method public static java.util.Locale[] getAvailableLocales();
@@ -2576,6 +2588,7 @@
     method public boolean nextPosition(android.icu.text.ConstrainedFieldPosition);
     method public CharSequence subSequence(int, int);
     method public java.text.AttributedCharacterIterator toCharacterIterator();
+    method public String toString();
   }
 
   public class DateIntervalInfo implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.DateIntervalInfo> java.io.Serializable {
@@ -2612,6 +2625,7 @@
     method public String getBestPattern(String);
     method public String getBestPattern(String, int);
     method public String getDateTimeFormat();
+    method @FlaggedApi("com.android.icu.icu_v_api") public String getDateTimeFormat(int);
     method public String getDecimal();
     method public android.icu.text.DateFormat.HourCycle getDefaultHourCycle();
     method public static android.icu.text.DateTimePatternGenerator getEmptyInstance();
@@ -2627,6 +2641,7 @@
     method public void setAppendItemFormat(int, String);
     method public void setAppendItemName(int, String);
     method public void setDateTimeFormat(String);
+    method @FlaggedApi("com.android.icu.icu_v_api") public void setDateTimeFormat(int, String);
     method public void setDecimal(String);
     field public static final int DAY = 7; // 0x7
     field public static final int DAYPERIOD = 10; // 0xa
@@ -2852,6 +2867,108 @@
     enum_constant public static final android.icu.text.DisplayContext.Type SUBSTITUTE_HANDLING;
   }
 
+  @FlaggedApi("com.android.icu.icu_v_api") public final class DisplayOptions {
+    method @FlaggedApi("com.android.icu.icu_v_api") public static android.icu.text.DisplayOptions.Builder builder();
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder copyToBuilder();
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Capitalization getCapitalization();
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.DisplayLength getDisplayLength();
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.GrammaticalCase getGrammaticalCase();
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.NameStyle getNameStyle();
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.NounClass getNounClass();
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.PluralCategory getPluralCategory();
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.SubstituteHandling getSubstituteHandling();
+  }
+
+  @FlaggedApi("com.android.icu.icu_v_api") public static class DisplayOptions.Builder {
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions build();
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setCapitalization(android.icu.text.DisplayOptions.Capitalization);
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setDisplayLength(android.icu.text.DisplayOptions.DisplayLength);
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setGrammaticalCase(android.icu.text.DisplayOptions.GrammaticalCase);
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setNameStyle(android.icu.text.DisplayOptions.NameStyle);
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setNounClass(android.icu.text.DisplayOptions.NounClass);
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setPluralCategory(android.icu.text.DisplayOptions.PluralCategory);
+    method @FlaggedApi("com.android.icu.icu_v_api") public android.icu.text.DisplayOptions.Builder setSubstituteHandling(android.icu.text.DisplayOptions.SubstituteHandling);
+  }
+
+  @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.Capitalization {
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.Capitalization BEGINNING_OF_SENTENCE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.Capitalization MIDDLE_OF_SENTENCE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.Capitalization STANDALONE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.Capitalization UI_LIST_OR_MENU;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.Capitalization UNDEFINED;
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.Capitalization> VALUES;
+  }
+
+  @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.DisplayLength {
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.DisplayLength LENGTH_FULL;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.DisplayLength LENGTH_SHORT;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.DisplayLength UNDEFINED;
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.DisplayLength> VALUES;
+  }
+
+  @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.GrammaticalCase {
+    method @FlaggedApi("com.android.icu.icu_v_api") public static android.icu.text.DisplayOptions.GrammaticalCase fromIdentifier(String);
+    method @FlaggedApi("com.android.icu.icu_v_api") public String getIdentifier();
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase ABLATIVE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase ACCUSATIVE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase COMITATIVE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase DATIVE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase ERGATIVE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase GENITIVE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase INSTRUMENTAL;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase LOCATIVE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase LOCATIVE_COPULATIVE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase NOMINATIVE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase OBLIQUE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase PREPOSITIONAL;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase SOCIATIVE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase UNDEFINED;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.GrammaticalCase VOCATIVE;
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.GrammaticalCase> VALUES;
+  }
+
+  @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.NameStyle {
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NameStyle DIALECT_NAMES;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NameStyle STANDARD_NAMES;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NameStyle UNDEFINED;
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.NameStyle> VALUES;
+  }
+
+  @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.NounClass {
+    method @FlaggedApi("com.android.icu.icu_v_api") public static android.icu.text.DisplayOptions.NounClass fromIdentifier(String);
+    method @FlaggedApi("com.android.icu.icu_v_api") public String getIdentifier();
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass ANIMATE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass COMMON;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass FEMININE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass INANIMATE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass MASCULINE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass NEUTER;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass OTHER;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass PERSONAL;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.NounClass UNDEFINED;
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.NounClass> VALUES;
+  }
+
+  @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.PluralCategory {
+    method @FlaggedApi("com.android.icu.icu_v_api") public static android.icu.text.DisplayOptions.PluralCategory fromIdentifier(String);
+    method @FlaggedApi("com.android.icu.icu_v_api") public String getIdentifier();
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory FEW;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory MANY;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory ONE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory OTHER;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory TWO;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory UNDEFINED;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.PluralCategory ZERO;
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.PluralCategory> VALUES;
+  }
+
+  @FlaggedApi("com.android.icu.icu_v_api") public enum DisplayOptions.SubstituteHandling {
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.SubstituteHandling NO_SUBSTITUTE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.SubstituteHandling SUBSTITUTE;
+    enum_constant @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.DisplayOptions.SubstituteHandling UNDEFINED;
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final java.util.List<android.icu.text.DisplayOptions.SubstituteHandling> VALUES;
+  }
+
   public final class Edits {
     ctor public Edits();
     method public void addReplace(int, int);
@@ -2947,6 +3064,7 @@
     method public boolean nextPosition(android.icu.text.ConstrainedFieldPosition);
     method public CharSequence subSequence(int, int);
     method public java.text.AttributedCharacterIterator toCharacterIterator();
+    method public String toString();
   }
 
   public enum ListFormatter.Type {
@@ -3272,6 +3390,7 @@
 
   public static class NumberFormat.Field extends java.text.Format.Field {
     ctor protected NumberFormat.Field(String);
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.text.NumberFormat.Field APPROXIMATELY_SIGN;
     field public static final android.icu.text.NumberFormat.Field COMPACT;
     field public static final android.icu.text.NumberFormat.Field CURRENCY;
     field public static final android.icu.text.NumberFormat.Field DECIMAL_SEPARATOR;
@@ -3412,6 +3531,7 @@
     method public boolean nextPosition(android.icu.text.ConstrainedFieldPosition);
     method public CharSequence subSequence(int, int);
     method public java.text.AttributedCharacterIterator toCharacterIterator();
+    method public String toString();
   }
 
   public enum RelativeDateTimeFormatter.RelativeDateTimeUnit {
@@ -4663,6 +4783,7 @@
     field public static final android.icu.util.MeasureUnit POUND;
     field public static final android.icu.util.MeasureUnit POUND_PER_SQUARE_INCH;
     field public static final android.icu.util.MeasureUnit QUART;
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.util.MeasureUnit QUARTER;
     field public static final android.icu.util.MeasureUnit RADIAN;
     field public static final android.icu.util.MeasureUnit REVOLUTION_ANGLE;
     field public static final android.icu.util.TimeUnit SECOND;
@@ -4679,6 +4800,7 @@
     field public static final android.icu.util.MeasureUnit TERABIT;
     field public static final android.icu.util.MeasureUnit TERABYTE;
     field public static final android.icu.util.MeasureUnit TON;
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.util.MeasureUnit TONNE;
     field public static final android.icu.util.MeasureUnit VOLT;
     field public static final android.icu.util.MeasureUnit WATT;
     field public static final android.icu.util.TimeUnit WEEK;
@@ -5035,6 +5157,7 @@
     field public static final android.icu.util.VersionInfo UNICODE_13_0;
     field public static final android.icu.util.VersionInfo UNICODE_14_0;
     field public static final android.icu.util.VersionInfo UNICODE_15_0;
+    field @FlaggedApi("com.android.icu.icu_v_api") public static final android.icu.util.VersionInfo UNICODE_15_1;
     field public static final android.icu.util.VersionInfo UNICODE_1_0;
     field public static final android.icu.util.VersionInfo UNICODE_1_0_1;
     field public static final android.icu.util.VersionInfo UNICODE_1_1_0;
diff --git a/android_icu4j/libcore_bridge/src/java/com/android/i18n/system/ZygoteHooks.java b/android_icu4j/libcore_bridge/src/java/com/android/i18n/system/ZygoteHooks.java
index 8e88c1d..166389f 100644
--- a/android_icu4j/libcore_bridge/src/java/com/android/i18n/system/ZygoteHooks.java
+++ b/android_icu4j/libcore_bridge/src/java/com/android/i18n/system/ZygoteHooks.java
@@ -19,6 +19,7 @@
 import android.compat.Compatibility;
 import android.compat.annotation.ChangeId;
 import android.compat.annotation.EnabledAfter;
+import android.icu.impl.ZoneMeta;
 import android.icu.platform.AndroidDataFiles;
 import android.icu.impl.CacheValue;
 import android.icu.text.DateFormatSymbols;
@@ -63,6 +64,9 @@
         // Framework's LocalLog is used during app start-up. It indirectly uses the current ICU time
         // zone. Pre-loading the current time zone in ICU improves app startup time. b/150605074
         TimeZone.getDefault();
+
+        // Preload the String[] ZoneMeta#ZONEIDS. See http://b/73282298
+        ZoneMeta.getAvailableIDs(TimeZone.SystemTimeZoneType.ANY, null, null);
     }
 
     /**
diff --git a/android_icu4j/libcore_bridge/src/java/com/android/i18n/timezone/internal/ByteBufferIterator.java b/android_icu4j/libcore_bridge/src/java/com/android/i18n/timezone/internal/ByteBufferIterator.java
index e3cf9e4..dae3bec 100644
--- a/android_icu4j/libcore_bridge/src/java/com/android/i18n/timezone/internal/ByteBufferIterator.java
+++ b/android_icu4j/libcore_bridge/src/java/com/android/i18n/timezone/internal/ByteBufferIterator.java
@@ -20,6 +20,8 @@
 
 /**
  * A {@link BufferIterator} that wraps a {@link ByteBuffer}.
+ *
+ * @hide
  */
 public class ByteBufferIterator extends BufferIterator {
 
diff --git a/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/CharsetICU.java b/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/CharsetICU.java
index 21fee8e..f6be66c 100644
--- a/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/CharsetICU.java
+++ b/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/CharsetICU.java
@@ -15,6 +15,8 @@
 
 /**
  * This class is used from native code associated with {@link NativeConverter}.
+ *
+ * @hide
  */
 public final class CharsetICU extends Charset {
     private final String icuCanonicalName;
diff --git a/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/NativeConverter.java b/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/NativeConverter.java
index 1159e68..4d02056 100644
--- a/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/NativeConverter.java
+++ b/android_icu4j/libcore_bridge/src/java/com/android/icu/charset/NativeConverter.java
@@ -16,6 +16,9 @@
 import java.nio.charset.CharsetEncoder;
 import java.nio.charset.CodingErrorAction;
 
+/**
+ * @hide
+ */
 public final class NativeConverter {
 
     private static final NativeAllocationRegistry registry = NativeAllocationRegistry
diff --git a/android_icu4j/libcore_bridge/src/java/com/android/icu/text/DateSorterBridge.java b/android_icu4j/libcore_bridge/src/java/com/android/icu/text/DateSorterBridge.java
index 804054e..f373717 100644
--- a/android_icu4j/libcore_bridge/src/java/com/android/icu/text/DateSorterBridge.java
+++ b/android_icu4j/libcore_bridge/src/java/com/android/icu/text/DateSorterBridge.java
@@ -26,6 +26,8 @@
 
 /**
  * This class is used by android.webkit.DateSorter.
+ *
+ * @hide
  */
 @libcore.api.CorePlatformApi
 public class DateSorterBridge {
@@ -34,6 +36,8 @@
 
     /**
      * @throws AssertionError for the legacy behavior when the ICU data is missing
+     *
+     * @hide
      */
     @libcore.api.CorePlatformApi
     public static DateSorterBridge createInstance(Locale locale) throws AssertionError {
@@ -62,11 +66,17 @@
         today = caseMap.apply(locale, breakIterator, todayStr);
     }
 
+    /**
+     * @hide
+     */
     @libcore.api.CorePlatformApi
     public String getYesterday() {
         return yesterday;
     }
 
+    /**
+     * @hide
+     */
     @libcore.api.CorePlatformApi
     public String getToday() {
         return today;
diff --git a/android_icu4j/libcore_bridge/src/java/com/android/icu/util/Icu4cMetadata.java b/android_icu4j/libcore_bridge/src/java/com/android/icu/util/Icu4cMetadata.java
index 8d2cb1f..a7d7050 100644
--- a/android_icu4j/libcore_bridge/src/java/com/android/icu/util/Icu4cMetadata.java
+++ b/android_icu4j/libcore_bridge/src/java/com/android/icu/util/Icu4cMetadata.java
@@ -16,6 +16,9 @@
 
 package com.android.icu.util;
 
+/**
+ * @hide
+ */
 public class Icu4cMetadata {
 
     /** Returns the TZData version as reported by ICU4C. */
diff --git a/android_icu4j/libcore_bridge/src/native/Android.bp b/android_icu4j/libcore_bridge/src/native/Android.bp
index 28642cc..cd4833f 100644
--- a/android_icu4j/libcore_bridge/src/native/Android.bp
+++ b/android_icu4j/libcore_bridge/src/native/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 //
 package {
+    default_team: "trendy_team_java_core_libraries",
     default_visibility: [
         "//packages/modules/RuntimeI18n/apex",
     ],
diff --git a/android_icu4j/libcore_bridge/src/native/TEST_MAPPING b/android_icu4j/libcore_bridge/src/native/TEST_MAPPING
index 18d7bf5..7671338 100644
--- a/android_icu4j/libcore_bridge/src/native/TEST_MAPPING
+++ b/android_icu4j/libcore_bridge/src/native/TEST_MAPPING
@@ -1,7 +1,7 @@
 {
   "imports": [
     {
-      "path": "external/icu/android_icu4j/src/main/java/com/android/icu/util/regex"
+      "path": "external/icu/android_icu4j/libcore_bridge/src/java/com/android/icu/util/regex"
     }
   ]
 }
diff --git a/android_icu4j/libcore_bridge/src/native/com_android_i18n_util_Log.cpp b/android_icu4j/libcore_bridge/src/native/com_android_i18n_util_Log.cpp
index a5a2d61..9e23c39 100644
--- a/android_icu4j/libcore_bridge/src/native/com_android_i18n_util_Log.cpp
+++ b/android_icu4j/libcore_bridge/src/native/com_android_i18n_util_Log.cpp
@@ -16,6 +16,7 @@
 
 #define LOG_TAG "Log"
 
+#include <functional>
 #include <memory>
 
 #include "jni.h"
diff --git a/android_icu4j/resources/android/icu/ICUConfig.properties b/android_icu4j/resources/android/icu/ICUConfig.properties
index ae97732..959b662 100644
--- a/android_icu4j/resources/android/icu/ICUConfig.properties
+++ b/android_icu4j/resources/android/icu/ICUConfig.properties
@@ -69,4 +69,4 @@
 # Enable ML phrase breaking
 # Android patch, http://b/219529457, for ML-based phrase line breaking
 # @internal
-android.icu.impl.breakiter.useMLPhraseBreaking = false
+android.icu.impl.breakiter.useMLPhraseBreaking = true
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUService.java b/android_icu4j/src/main/java/android/icu/impl/ICUService.java
index 4ece905..d6ebaa4 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUService.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUService.java
@@ -597,13 +597,15 @@
                         Factory f = lIter.previous();
                         f.updateVisibleIDs(mutableMap);
                     }
-                    this.idcache = Collections.unmodifiableMap(mutableMap);
+                    Map<String, Factory> result = Collections.unmodifiableMap(mutableMap);
+                    this.idcache = result;
+                    return result;
                 } finally {
                     factoryLock.releaseRead();
                 }
             }
+            return idcache;
         }
-        return idcache;
     }
     private Map<String, Factory> idcache;
 
diff --git a/android_icu4j/src/main/java/android/icu/lang/UCharacter.java b/android_icu4j/src/main/java/android/icu/lang/UCharacter.java
index f2da2c6..8dc245a 100644
--- a/android_icu4j/src/main/java/android/icu/lang/UCharacter.java
+++ b/android_icu4j/src/main/java/android/icu/lang/UCharacter.java
@@ -1118,6 +1118,12 @@
         /***/
         public static final int NAG_MUNDARI_ID = 327; /*[1E4D0]*/
 
+        // New block in Unicode 15.1
+
+        /***/
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_ID = 328; /*[2EBF0]*/
+
         /**
          * One more than the highest normal UnicodeBlock value.
          * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.BLOCK).
@@ -2383,6 +2389,14 @@
         public static final UnicodeBlock NAG_MUNDARI =
                 new UnicodeBlock("NAG_MUNDARI", NAG_MUNDARI_ID); /*[1E4D0]*/
 
+        // New block in Unicode 15.1
+
+        /***/
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I =
+                new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I",
+                        CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_ID); /*[2EBF0]*/
+
         /**
          */
         public static final UnicodeBlock INVALID_CODE
@@ -2505,7 +2519,9 @@
         {
             super(name);
             m_id_ = id;
-            if (id >= 0) {
+            // Android-changed: Avoid leaking flagged UnicodeBlock until ICU 74 data is integrated.
+            // if (id >= 0) {
+            if (id >= 0 && id < BLOCKS_.length) {
                 BLOCKS_[id] = this;
             }
         }
@@ -3275,6 +3291,21 @@
         public static final int E_MODIFIER = 41;  /*[EM]*/
         /***/
         public static final int ZWJ = 42;  /*[ZWJ]*/
+        /***/
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+        public static final int AKSARA = 43;  /*[AK]*/ /* from here on: new in Unicode 15.1/ICU 74 */
+        /***/
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+        public static final int AKSARA_PREBASE = 44;  /*[AP]*/
+        /***/
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+        public static final int AKSARA_START = 45;  /*[AS]*/
+        /***/
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+        public static final int VIRAMA_FINAL = 46;  /*[VF]*/
+        /***/
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+        public static final int VIRAMA = 47;  /*[VI]*/
         /**
          * One more than the highest normal LineBreak value.
          * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.LINE_BREAK).
diff --git a/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java b/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java
index 7855bbf..f4ea46a 100644
--- a/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java
+++ b/android_icu4j/src/main/java/android/icu/number/FormattedNumber.java
@@ -126,8 +126,8 @@
      * supported yet.
      *
      * @return NounClass
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public DisplayOptions.NounClass getNounClass() {
         return DisplayOptions.NounClass.fromIdentifier(this.gender);
     }
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java b/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java
index 76946f6..ccd403b 100644
--- a/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java
+++ b/android_icu4j/src/main/java/android/icu/number/NumberFormatterSettings.java
@@ -535,8 +535,8 @@
      * the desired case for a unit formatter's output (e.g. accusative, dative, genitive).
      *
      * @return The fluent chain.
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public T displayOptions(DisplayOptions displayOptions) {
         // `displayCase` does not recognise the `undefined`
         if (displayOptions.getGrammaticalCase() == GrammaticalCase.UNDEFINED) {
diff --git a/android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java b/android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java
index 1c51b1e..c6dd9c0 100644
--- a/android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java
+++ b/android_icu4j/src/main/java/android/icu/text/DateTimePatternGenerator.java
@@ -1089,8 +1089,8 @@
      *              be thrown if out of range.
      * @param dateTimeFormat
      *              the new dateTimeFormat to set for the specified style
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public void setDateTimeFormat(int style, String dateTimeFormat) {
         if (style < DateFormat.FULL || style > DateFormat.SHORT) {
             throw new IllegalArgumentException("Illegal style here: " + style);
@@ -1107,8 +1107,8 @@
      *              be thrown if out of range.
      * @return
      *              the current dateTimeFormat for the specified style.
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public String getDateTimeFormat(int style) {
         if (style < DateFormat.FULL || style > DateFormat.SHORT) {
             throw new IllegalArgumentException("Illegal style here: " + style);
diff --git a/android_icu4j/src/main/java/android/icu/text/DisplayOptions.java b/android_icu4j/src/main/java/android/icu/text/DisplayOptions.java
index 3f890e8..9089a64 100644
--- a/android_icu4j/src/main/java/android/icu/text/DisplayOptions.java
+++ b/android_icu4j/src/main/java/android/icu/text/DisplayOptions.java
@@ -21,10 +21,8 @@
  *                             .setPluralCategory(PluralCategory.FEW)
  *                             .build();
  *                             }
- *
- * @hide Only a subset of ICU is exposed in Android
- * @hide draft / provisional / internal are hidden on Android
  */
+@android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
 public final class DisplayOptions {
     private final GrammaticalCase grammaticalCase;
     private final NounClass nounClass;
@@ -48,8 +46,8 @@
      * Creates a builder with the {@code UNDEFINED} value for all the parameters.
      *
      * @return Builder
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public static Builder builder() {
         return new Builder();
     }
@@ -58,8 +56,8 @@
      * Creates a builder with the same parameters from this object.
      *
      * @return Builder
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public Builder copyToBuilder() {
         return new Builder(this);
     }
@@ -68,8 +66,8 @@
      * Gets the grammatical case.
      *
      * @return GrammaticalCase
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public GrammaticalCase getGrammaticalCase() {
         return this.grammaticalCase;
     }
@@ -78,8 +76,8 @@
      * Gets the noun class.
      *
      * @return NounClass
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public NounClass getNounClass() {
         return this.nounClass;
     }
@@ -88,8 +86,8 @@
      * Gets the plural category.
      *
      * @return PluralCategory
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public PluralCategory getPluralCategory() {
         return this.pluralCategory;
     }
@@ -98,8 +96,8 @@
      * Gets the capitalization.
      *
      * @return Capitalization
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public Capitalization getCapitalization() {
         return this.capitalization;
     }
@@ -108,8 +106,8 @@
      * Gets the name style.
      *
      * @return NameStyle
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public NameStyle getNameStyle() {
         return this.nameStyle;
     }
@@ -118,8 +116,8 @@
      * Gets the display length.
      *
      * @return DisplayLength
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public DisplayLength getDisplayLength() {
         return this.displayLength;
     }
@@ -128,18 +126,16 @@
      * Gets the substitute handling.
      *
      * @return SubstituteHandling
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public SubstituteHandling getSubstituteHandling() {
         return this.substituteHandling;
     }
 
     /**
      * Responsible for building {@code DisplayOptions}.
-     *
-     * @hide Only a subset of ICU is exposed in Android
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public static class Builder {
         private GrammaticalCase grammaticalCase;
         private NounClass nounClass;
@@ -151,8 +147,6 @@
 
         /**
          * Creates a {@code DisplayOptions.Builder} with the default values.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
         private Builder() {
             this.grammaticalCase = GrammaticalCase.UNDEFINED;
@@ -168,7 +162,6 @@
          * Creates a {@code Builder} with all the information from a {@code DisplayOptions}.
          *
          * @param displayOptions Options to be copied.
-         * @hide draft / provisional / internal are hidden on Android
          */
         private Builder(DisplayOptions displayOptions) {
             this.grammaticalCase = displayOptions.grammaticalCase;
@@ -185,8 +178,8 @@
          *
          * @param grammaticalCase The grammatical case.
          * @return Builder
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public Builder setGrammaticalCase(GrammaticalCase grammaticalCase) {
             this.grammaticalCase = grammaticalCase;
             return this;
@@ -197,8 +190,8 @@
          *
          * @param nounClass The noun class.
          * @return Builder
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public Builder setNounClass(NounClass nounClass) {
             this.nounClass = nounClass;
             return this;
@@ -209,8 +202,8 @@
          *
          * @param pluralCategory The plural category.
          * @return Builder
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public Builder setPluralCategory(PluralCategory pluralCategory) {
             this.pluralCategory = pluralCategory;
             return this;
@@ -221,8 +214,8 @@
          *
          * @param capitalization The capitalization.
          * @return Builder
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public Builder setCapitalization(Capitalization capitalization) {
             this.capitalization = capitalization;
             return this;
@@ -233,8 +226,8 @@
          *
          * @param nameStyle The name style.
          * @return Builder
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public Builder setNameStyle(NameStyle nameStyle) {
             this.nameStyle = nameStyle;
             return this;
@@ -245,8 +238,8 @@
          *
          * @param displayLength The display length.
          * @return Builder
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public Builder setDisplayLength(DisplayLength displayLength) {
             this.displayLength = displayLength;
             return this;
@@ -257,8 +250,8 @@
          *
          * @param substituteHandling The substitute handling.
          * @return Builder
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public Builder setSubstituteHandling(SubstituteHandling substituteHandling) {
             this.substituteHandling = substituteHandling;
             return this;
@@ -268,8 +261,8 @@
          * Builds the display options.
          *
          * @return DisplayOptions
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public DisplayOptions build() {
             DisplayOptions displayOptions = new DisplayOptions(this);
             return displayOptions;
@@ -278,49 +271,46 @@
 
     /**
      * Represents all the grammatical noun classes that are supported by CLDR.
-     *
-     * @hide Only a subset of ICU is exposed in Android
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public enum NounClass {
         /**
          * A possible setting for NounClass. The noun class context to be used is unknown (this is the
          * default value).
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         UNDEFINED("undefined"),
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         OTHER("other"),
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         NEUTER("neuter"),
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         FEMININE("feminine"),
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         MASCULINE("masculine"),
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         ANIMATE("animate"),
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         INANIMATE("inanimate"),
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         PERSONAL("personal"),
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         COMMON("common");
 
         private final String identifier;
@@ -331,16 +321,15 @@
 
         /**
          * Unmodifiable List of all noun classes constants. List version of {@link #values()}.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public static final List<NounClass> VALUES =
                 Collections.unmodifiableList(Arrays.asList(NounClass.values()));
 
         /**
          * @return the lowercase CLDR keyword string for the noun class.
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public final String getIdentifier() {
             return this.identifier;
         }
@@ -348,8 +337,8 @@
         /**
          * @param identifier in lower case such as "feminine" or "masculine"
          * @return the plural category corresponding to the identifier, or {@code UNDEFINED}
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public static final NounClass fromIdentifier(String identifier) {
             if (identifier == null) {
                 return NounClass.UNDEFINED;
@@ -367,217 +356,188 @@
 
     /**
      * Represents all the name styles.
-     *
-     * @hide Only a subset of ICU is exposed in Android
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public enum NameStyle {
         /**
          * A possible setting for NameStyle. The NameStyle context to be used is unknown (this is the
          * default value).
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         UNDEFINED,
         /**
          * Use standard names when generating a locale name, e.g. en_GB displays as 'English (United
          * Kingdom)'.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         STANDARD_NAMES,
 
         /**
          * Use dialect names, when generating a locale name, e.g. en_GB displays as 'British English'.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         DIALECT_NAMES;
 
         /**
          * Unmodifiable List of all name styles constants. List version of {@link #values()}.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public static final List<NameStyle> VALUES =
                 Collections.unmodifiableList(Arrays.asList(NameStyle.values()));
     }
 
     /**
      * Represents all the substitute handlings.
-     *
-     * @hide Only a subset of ICU is exposed in Android
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public enum SubstituteHandling {
         /**
          * A possible setting for SubstituteHandling. The SubstituteHandling context to be used is
          * unknown (this is the default value).
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         UNDEFINED,
         /**
          * Returns a fallback value (e.g., the input code) when no data is available. This is the
          * default behaviour.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         SUBSTITUTE,
 
         /**
          * Returns a null value when no data is available.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         NO_SUBSTITUTE;
 
         /**
          * Unmodifiable List of all substitute handlings constants. List version of {@link #values()}.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public static final List<SubstituteHandling> VALUES =
                 Collections.unmodifiableList(Arrays.asList(SubstituteHandling.values()));
     }
 
     /**
      * Represents all the display lengths.
-     *
-     * @hide Only a subset of ICU is exposed in Android
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public enum DisplayLength {
         /**
          * A possible setting for DisplayLength. The DisplayLength context to be used is unknown (this
          * is the default value).
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         UNDEFINED,
         /**
          * Uses full names when generating a locale name, e.g. "United States" for US.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         LENGTH_FULL,
 
         /**
          * Use short names when generating a locale name, e.g. "U.S." for US.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         LENGTH_SHORT;
 
         /**
          * Unmodifiable List of all display lengths constants. List version of {@link #values()}.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public static final List<DisplayLength> VALUES =
                 Collections.unmodifiableList(Arrays.asList(DisplayLength.values()));
     }
 
     /**
      * Represents all the capitalization options.
-     *
-     * @hide Only a subset of ICU is exposed in Android
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public enum Capitalization {
         /**
          * A possible setting for Capitalization. The capitalization context to be used is unknown (this
          * is the default value).
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         UNDEFINED,
 
         /**
          * The capitalization context if a date, date symbol or display name is to be formatted with
          * capitalization appropriate for the beginning of a sentence.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         BEGINNING_OF_SENTENCE,
 
         /**
          * The capitalization context if a date, date symbol or display name is to be formatted with
          * capitalization appropriate for the middle of a sentence.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         MIDDLE_OF_SENTENCE,
 
         /**
          * The capitalization context if a date, date symbol or display name is to be formatted with
          * capitalization appropriate for stand-alone usage such as an isolated name on a calendar
          * page.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         STANDALONE,
 
         /**
          * The capitalization context if a date, date symbol or display name is to be formatted with
          * capitalization appropriate for a user-interface list or menu item.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         UI_LIST_OR_MENU;
 
         /**
          * Unmodifiable List of all the capitalizations constants. List version of {@link #values()}.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public static final List<Capitalization> VALUES =
                 Collections.unmodifiableList(Arrays.asList(Capitalization.values()));
     }
 
     /**
      * Standard CLDR plural category constants. See http://www.unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules
-     *
-     * @hide Only a subset of ICU is exposed in Android
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public enum PluralCategory {
         /**
          * A possible setting for PluralCategory. The plural category context to be used is unknown
          * (this is the default value).
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         UNDEFINED("undefined"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         ZERO("zero"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         ONE("one"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         TWO("two"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         FEW("few"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         MANY("many"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         OTHER("other");
 
         private final String identifier;
@@ -588,16 +548,15 @@
 
         /**
          * Unmodifiable List of all plural categories constants. List version of {@link #values()}.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public static final List<PluralCategory> VALUES =
                 Collections.unmodifiableList(Arrays.asList(PluralCategory.values()));
 
         /**
          * @return the lowercase CLDR keyword string for the plural category
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public final String getIdentifier() {
             return this.identifier;
         }
@@ -605,8 +564,8 @@
         /**
          * @param identifier in lower case such as "few" or "other"
          * @return the plural category corresponding to the identifier, or {@code UNDEFINED}
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public static final PluralCategory fromIdentifier(String identifier) {
             if (identifier == null) {
                 return PluralCategory.UNDEFINED;
@@ -624,87 +583,84 @@
 
     /**
      * Represents all the grammatical cases that are supported by CLDR.
-     *
-     * @hide Only a subset of ICU is exposed in Android
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public enum GrammaticalCase {
         /**
          * A possible setting for GrammaticalCase. The grammatical case context to be used is unknown
          * (this is the default value).
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         UNDEFINED("undefined"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         ABLATIVE("ablative"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         ACCUSATIVE("accusative"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         COMITATIVE("comitative"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         DATIVE("dative"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         ERGATIVE("ergative"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         GENITIVE("genitive"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         INSTRUMENTAL("instrumental"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         LOCATIVE("locative"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         LOCATIVE_COPULATIVE("locative_copulative"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         NOMINATIVE("nominative"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         OBLIQUE("oblique"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         PREPOSITIONAL("prepositional"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         SOCIATIVE("sociative"),
 
         /**
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         VOCATIVE("vocative");
 
         private final String identifier;
@@ -715,16 +671,15 @@
 
         /**
          * Unmodifiable List of all grammatical cases constants. List version of {@link #values()}.
-         *
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public static final List<GrammaticalCase> VALUES =
                 Collections.unmodifiableList(Arrays.asList(GrammaticalCase.values()));
 
         /**
          * @return the lowercase CLDR keyword string for the grammatical case.
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public final String getIdentifier() {
             return this.identifier;
         }
@@ -732,8 +687,8 @@
         /**
          * @param identifier in lower case such as "dative" or "nominative"
          * @return the plural category corresponding to the identifier, or {@code UNDEFINED}
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public static final GrammaticalCase fromIdentifier(String identifier) {
             if (identifier == null) {
                 return GrammaticalCase.UNDEFINED;
diff --git a/android_icu4j/src/main/java/android/icu/text/NumberFormat.java b/android_icu4j/src/main/java/android/icu/text/NumberFormat.java
index c03bc08..0034e03 100644
--- a/android_icu4j/src/main/java/android/icu/text/NumberFormat.java
+++ b/android_icu4j/src/main/java/android/icu/text/NumberFormat.java
@@ -1867,8 +1867,8 @@
 
         /**
          * Approximately sign. In ICU 70, this was categorized under the generic SIGN field.
-         * @hide draft / provisional / internal are hidden on Android
          */
+        @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
         public static final Field APPROXIMATELY_SIGN = new Field("approximately sign");
 
         /**
diff --git a/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java b/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java
index e75a849..c9c4143 100644
--- a/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java
+++ b/android_icu4j/src/main/java/android/icu/util/MeasureUnit.java
@@ -1073,8 +1073,8 @@
 
     /**
      * Constant for unit of duration: quarter
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public static final MeasureUnit QUARTER = MeasureUnit.internalGetInstance("duration", "quarter");
 
     /**
@@ -1465,8 +1465,8 @@
 
     /**
      * Constant for unit of mass: tonne
-     * @hide draft / provisional / internal are hidden on Android
      */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
     public static final MeasureUnit TONNE = MeasureUnit.internalGetInstance("mass", "tonne");
 
     /**
diff --git a/android_icu4j/src/main/java/android/icu/util/VersionInfo.java b/android_icu4j/src/main/java/android/icu/util/VersionInfo.java
index 426aee7..0bb82e4 100644
--- a/android_icu4j/src/main/java/android/icu/util/VersionInfo.java
+++ b/android_icu4j/src/main/java/android/icu/util/VersionInfo.java
@@ -178,6 +178,12 @@
     public static final VersionInfo UNICODE_15_0;
 
     /**
+     * Unicode 15.1 version
+     */
+    @android.annotation.FlaggedApi(com.android.icu.Flags.FLAG_ICU_V_API)
+    public static final VersionInfo UNICODE_15_1;
+
+    /**
      * ICU4J current release version
      */
     public static final VersionInfo ICU_VERSION;
@@ -519,6 +525,7 @@
         UNICODE_13_0   = getInstance(13, 0, 0, 0);
         UNICODE_14_0   = getInstance(14, 0, 0, 0);
         UNICODE_15_0   = getInstance(15, 0, 0, 0);
+        UNICODE_15_1   = getInstance(15, 1, 0, 0);
 
         ICU_VERSION   = getInstance(72, 1, 0, 0);
         ICU_DATA_VERSION = ICU_VERSION;
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java
index c01440a..89f105f 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java
@@ -1481,11 +1481,6 @@
     }
 
     @Test
-    // Android-added: Ignore this test on CTS branches.
-    // This test is written is such a way that it is heavily coupled with
-    // tzdata. Keeping it passing with system image tzdata and a newer one, which changes
-    // canonicality rules (i.e. 2023d), would probably mean re-writing this test.
-    @org.junit.Ignore
     public void TestCanonicalID() {
         // Olson (IANA) tzdata used to have very few "Link"s long time ago.
         // This test case was written when most of CLDR canonical time zones are
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/util/TestLocaleValidity.java b/android_icu4j/src/main/tests/android/icu/dev/test/util/TestLocaleValidity.java
index a7841f5..87c1633 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/util/TestLocaleValidity.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/util/TestLocaleValidity.java
@@ -93,8 +93,7 @@
                 {"OK", "en-u-ss-none"},
                 {"OK", "en-t-t0-und"},
                 {"OK", "en-t-x0-12345678"},
-                // Android-removed: Ignore en-u-tz-camtr. Behaviour is different after 2023d.
-                // {"OK", "en-u-tz-camtr"}, // CLDR 43 no longer deprecated, see CLDR-16489
+                {"OK", "en-u-tz-camtr"}, // CLDR 43 no longer deprecated, see CLDR-16489
 
                 // tests from LDML spec section on Hybrid Locale Identifiers
                 {"OK", "hi-t-en-h0-hybrid"},
@@ -184,7 +183,6 @@
                 //{"{u, ca-civil}", "en-u-ca-islamicc"}, // deprecated, but turns into valid
                 {"{u, co-direct}", "en-u-co-direct"}, // deprecated
                 {"{u, kh}", "en-u-kh-false"}, // deprecated
-                // Android-removed: Ignore en-u-tz-camtr. Behaviour is different after 2023d.
                 // {"{u, tz-camtr}", "en-u-tz-camtr"}, // CLDR 43 no longer deprecated, see CLDR-16489
                 {"{u, vt}", "en-u-vt-0020-0041"}, // deprecated
         };
diff --git a/android_icu4j/testing/src/com/android/i18n/test/timezone/TimeZoneIntegrationTest.java b/android_icu4j/testing/src/com/android/i18n/test/timezone/TimeZoneIntegrationTest.java
index fafbb7b..250b6cd 100644
--- a/android_icu4j/testing/src/com/android/i18n/test/timezone/TimeZoneIntegrationTest.java
+++ b/android_icu4j/testing/src/com/android/i18n/test/timezone/TimeZoneIntegrationTest.java
@@ -275,15 +275,12 @@
         String apexRootDir = TimeZoneDataFiles.getTimeZoneModuleFile("");
         List<String> dataModuleFiles =
                 createModuleTzFiles(TimeZoneDataFiles::getTimeZoneModuleTzFile);
-        String icuOverlayFile = AndroidDataFiles.getTimeZoneModuleIcuFile("icu_tzdata.dat");
         if (fileExists(apexRootDir)) {
             assertEquals("OK", tzModuleStatus);
             dataModuleFiles.forEach(TimeZoneIntegrationTest::assertFileExists);
-            assertFileExists(icuOverlayFile);
         } else {
             assertEquals("NOT_FOUND", tzModuleStatus);
             dataModuleFiles.forEach(TimeZoneIntegrationTest::assertFileDoesNotExist);
-            assertFileDoesNotExist(icuOverlayFile);
         }
 
         String icuDatFileName = "icudt" + VersionInfo.ICU_VERSION.getMajor() + "l.dat";
diff --git a/android_icu4j/testing/src/com/android/libcore/java/text/NumberFormatTest.java b/android_icu4j/testing/src/com/android/libcore/java/text/NumberFormatTest.java
index 1005b43..7a6e046 100644
--- a/android_icu4j/testing/src/com/android/libcore/java/text/NumberFormatTest.java
+++ b/android_icu4j/testing/src/com/android/libcore/java/text/NumberFormatTest.java
@@ -49,10 +49,10 @@
         // below assert statement.
         assertEquals('.', dfs.getGroupingSeparator());
         assertEquals(',', dfs.getDecimalSeparator());
-        // Disable this monetary separator check due to an intended bug fix in ART. http://b/318786838
-        // assertEquals(',', dfs.getMonetaryDecimalSeparator());
+        // TODO(b/322774673): Re-enable this test in 24Q3.
+        // assertEquals('.', dfs.getMonetaryDecimalSeparator());
         // assertEquals(',', dfs.getMonetaryGroupingSeparator());
         // Assert that the separators in DecimalFormatSymbols are used.
-        // assertEquals("€9,876,66",df.format(9876.66));
+        // assertEquals("€9,876.66",df.format(9876.66));
     }
 }
diff --git a/build/Android.bp b/build/Android.bp
index f6675e7..c1ab0ff 100644
--- a/build/Android.bp
+++ b/build/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_license"
diff --git a/icu.aconfig b/icu.aconfig
new file mode 100644
index 0000000..3d5c7f8
--- /dev/null
+++ b/icu.aconfig
@@ -0,0 +1,33 @@
+# Copyright (C) 2023 The Android Open Source Project
+#
+# 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: "com.android.icu"
+container: "system"
+
+flag {
+    namespace: "core_libraries"
+    name: "icu74"
+    description: "This flag is deprecated. Use icu_v_api flag instead."
+    bug: "312171264"
+}
+
+
+flag {
+    namespace: "core_libraries"
+    name: "icu_v_api"
+    description: "This flag controls whether exposing ICU 74 APIs and implementation"
+    bug: "312171264"
+    # ICU is used before SettingsProvider starts
+    is_fixed_read_only: true
+}
diff --git a/icu4c/Android.bp b/icu4c/Android.bp
index 11b315a..6c45893 100644
--- a/icu4c/Android.bp
+++ b/icu4c/Android.bp
@@ -14,6 +14,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     default_applicable_licenses: ["external_icu_icu4c_license"],
 }
 
diff --git a/icu4c/source/Android.bp b/icu4c/source/Android.bp
index e000efb..3c6c961 100644
--- a/icu4c/source/Android.bp
+++ b/icu4c/source/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_icu4c_license"
@@ -57,6 +58,7 @@
             dist: {
                 targets: ["layoutlib"],
                 dir: "layoutlib_native/windows",
+                tag: "stripped_all",
             },
         },
         android: {
diff --git a/icu4c/source/common/Android.bp b/icu4c/source/common/Android.bp
index d6f9931..88e05b2 100644
--- a/icu4c/source/common/Android.bp
+++ b/icu4c/source/common/Android.bp
@@ -17,6 +17,7 @@
 //
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_icu4c_license"
@@ -119,6 +120,7 @@
             dist: {
                 targets: ["layoutlib"],
                 dir: "layoutlib_native/windows",
+                tag: "stripped_all",
             },
         },
     },
diff --git a/icu4c/source/common/umapfile.cpp b/icu4c/source/common/umapfile.cpp
index 145582e..b5aa00e 100644
--- a/icu4c/source/common/umapfile.cpp
+++ b/icu4c/source/common/umapfile.cpp
@@ -249,7 +249,8 @@
         pData->map = (char *)data + length;
         pData->pHeader=(const DataHeader *)data;
         pData->mapAddr = data;
-#if U_PLATFORM == U_PF_IPHONE
+        // Android-changed: madvise on Android for performance reason.
+#if U_PLATFORM == U_PF_IPHONE || U_PLATFORM == U_PF_ANDROID
         posix_madvise(data, length, POSIX_MADV_RANDOM);
 #endif
         return true;
diff --git a/icu4c/source/data/locales/es_419.txt b/icu4c/source/data/locales/es_419.txt
index 2a22471..3d0bc54 100644
--- a/icu4c/source/data/locales/es_419.txt
+++ b/icu4c/source/data/locales/es_419.txt
@@ -13,12 +13,15 @@
             patternsLong{
                 decimalFormat{
                     1000000000000{
+                        one{"0 billón"}
                         other{"0 billón"}
                     }
                     10000000000000{
+                        one{"00 billones"}
                         other{"00 billones"}
                     }
                     100000000000000{
+                        one{"000 billones"}
                         other{"000 billones"}
                     }
                 }
diff --git a/icu4c/source/data/locales/es_MX.txt b/icu4c/source/data/locales/es_MX.txt
index 4046f5b..3cc0680 100644
--- a/icu4c/source/data/locales/es_MX.txt
+++ b/icu4c/source/data/locales/es_MX.txt
@@ -12,12 +12,15 @@
             patternsLong{
                 decimalFormat{
                     1000000000000{
+                        one{"0 billón"}
                         other{"0 billones"}
                     }
                     10000000000000{
+                        one{"00 billones"}
                         other{"00 billones"}
                     }
                     100000000000000{
+                        one{"000 billones"}
                         other{"000 billones"}
                     }
                 }
diff --git a/icu4c/source/data/locales/km.txt b/icu4c/source/data/locales/km.txt
index 5beb590..3b85c22 100644
--- a/icu4c/source/data/locales/km.txt
+++ b/icu4c/source/data/locales/km.txt
@@ -25,6 +25,22 @@
     MoreInformation{"?"}
     NumberElements{
         default{"latn"}
+        khmr{
+            symbols{
+                decimal{","}
+                exponential{"E"}
+                group{"."}
+                infinity{"∞"}
+                list{";"}
+                minusSign{"-"}
+                nan{"NaN"}
+                perMille{"‰"}
+                percentSign{"%"}
+                plusSign{"+"}
+                superscriptingExponent{"×"}
+                timeSeparator{":"}
+            }
+        }
         latn{
             miscPatterns{
                 approximately{"~{0}"}
@@ -198,9 +214,9 @@
                 }
             }
             symbols{
-                decimal{","}
+                decimal{"."}
                 exponential{"E"}
-                group{"."}
+                group{","}
                 infinity{"∞"}
                 list{";"}
                 minusSign{"-"}
diff --git a/icu4c/source/data/misc/keyTypeData.txt b/icu4c/source/data/misc/keyTypeData.txt
index 75ff90f..ea27a45 100644
--- a/icu4c/source/data/misc/keyTypeData.txt
+++ b/icu4c/source/data/misc/keyTypeData.txt
@@ -72,9 +72,6 @@
             co{
                 direct{"true"}
             }
-            tz{
-                camtr{"true"}
-            }
         }
     }
     typeMap{
diff --git a/icu4c/source/data/misc/metaZones.txt b/icu4c/source/data/misc/metaZones.txt
index 3f74b39..6e70ca7 100644
--- a/icu4c/source/data/misc/metaZones.txt
+++ b/icu4c/source/data/misc/metaZones.txt
@@ -361,6 +361,9 @@
         Goose_Bay{
             001{"America/Goose_Bay"}
         }
+        Greenland{
+            001{"America/Godthab"}
+        }
         Greenland_Central{
             001{"America/Scoresbysund"}
         }
@@ -500,9 +503,6 @@
         Mawson{
             001{"Antarctica/Mawson"}
         }
-        Mexico_Northwest{
-            001{"America/Santa_Isabel"}
-        }
         Mexico_Pacific{
             001{"America/Mazatlan"}
         }
@@ -773,6 +773,7 @@
         geor{"Georgia"}
         giis{"Gilbert_Islands"}
         grea{"Greenland_Eastern"}
+        gree{"Greenland"}
         grwe{"Greenland_Western"}
         guam{"Guam"}
         gulf{"Gulf"}
@@ -809,7 +810,6 @@
         marq{"Marquesas"}
         maur{"Mauritius"}
         maws{"Mawson"}
-        meno{"Mexico_Northwest"}
         mepa{"Mexico_Pacific"}
         mgmt{"GMT"}
         mong{"Mongolia"}
@@ -1823,6 +1823,13 @@
         "America:Godthab"{
             {
                 "Greenland_Western",
+                "1970-01-01 00:00",
+                "2024-03-26 01:00",
+            }
+            {
+                "Greenland",
+                "2024-03-26 01:00",
+                "9999-12-31 23:59",
             }
         }
         "America:Goose_Bay"{
@@ -2324,11 +2331,6 @@
                 "America_Eastern",
             }
         }
-        "America:Nipigon"{
-            {
-                "America_Eastern",
-            }
-        }
         "America:Nome"{
             {
                 "Bering",
@@ -2404,23 +2406,6 @@
                 "America_Eastern",
             }
         }
-        "America:Pangnirtung"{
-            {
-                "America_Eastern",
-                "1970-01-01 00:00",
-                "1999-10-31 06:00",
-            }
-            {
-                "America_Central",
-                "1999-10-31 06:00",
-                "2000-10-29 07:00",
-            }
-            {
-                "America_Eastern",
-                "2000-10-29 07:00",
-                "9999-12-31 23:59",
-            }
-        }
         "America:Paramaribo"{
             {
                 "Dutch_Guiana",
@@ -2465,11 +2450,6 @@
                 "2016-12-03 23:00",
             }
         }
-        "America:Rainy_River"{
-            {
-                "America_Central",
-            }
-        }
         "America:Rankin_Inlet"{
             {
                 "America_Central",
@@ -2541,11 +2521,6 @@
                 "9999-12-31 23:59",
             }
         }
-        "America:Santa_Isabel"{
-            {
-                "Mexico_Northwest",
-            }
-        }
         "America:Santarem"{
             {
                 "Amazon",
@@ -2599,6 +2574,11 @@
             {
                 "Greenland_Eastern",
                 "1981-03-29 02:00",
+                "2024-03-31 01:00",
+            }
+            {
+                "Greenland",
+                "2024-03-31 01:00",
                 "9999-12-31 23:59",
             }
         }
@@ -2666,11 +2646,6 @@
                 "Atlantic",
             }
         }
-        "America:Thunder_Bay"{
-            {
-                "America_Eastern",
-            }
-        }
         "America:Tijuana"{
             {
                 "America_Pacific",
@@ -2715,11 +2690,6 @@
                 "9999-12-31 23:59",
             }
         }
-        "America:Yellowknife"{
-            {
-                "America_Mountain",
-            }
-        }
         "Antarctica:Casey"{
             {
                 "Australia_Western",
@@ -2779,6 +2749,31 @@
             {
                 "Casey",
                 "2020-10-03 16:01",
+                "2021-03-13 13:00",
+            }
+            {
+                "Australia_Western",
+                "2021-03-13 13:00",
+                "2021-10-02 16:01",
+            }
+            {
+                "Casey",
+                "2021-10-02 16:01",
+                "2022-03-12 13:00",
+            }
+            {
+                "Australia_Western",
+                "2022-03-12 13:00",
+                "2022-10-01 16:01",
+            }
+            {
+                "Casey",
+                "2022-10-01 16:01",
+                "2023-03-08 16:00",
+            }
+            {
+                "Australia_Western",
+                "2023-03-08 16:00",
                 "9999-12-31 23:59",
             }
         }
@@ -2858,6 +2853,11 @@
             {
                 "Kazakhstan_Eastern",
                 "2004-10-30 20:00",
+                "2024-02-29 18:00",
+            }
+            {
+                "Kazakhstan_Western",
+                "2024-02-29 18:00",
                 "9999-12-31 23:59",
             }
         }
@@ -3373,6 +3373,11 @@
             {
                 "Kazakhstan_Eastern",
                 "2004-10-30 21:00",
+                "2024-02-29 18:00",
+            }
+            {
+                "Kazakhstan_Western",
+                "2024-02-29 18:00",
                 "9999-12-31 23:59",
             }
         }
@@ -3658,11 +3663,6 @@
                 "Australia_Central",
             }
         }
-        "Australia:Currie"{
-            {
-                "Australia_Eastern",
-            }
-        }
         "Australia:Darwin"{
             {
                 "Australia_Central",
@@ -4158,18 +4158,6 @@
                 "2016-03-26 23:00",
             }
         }
-        "Europe:Uzhgorod"{
-            {
-                "Moscow",
-                "1970-01-01 00:00",
-                "1990-06-30 22:00",
-            }
-            {
-                "Europe_Eastern",
-                "1990-06-30 22:00",
-                "9999-12-31 23:59",
-            }
-        }
         "Europe:Vaduz"{
             {
                 "Europe_Central",
@@ -4222,18 +4210,6 @@
                 "Europe_Central",
             }
         }
-        "Europe:Zaporozhye"{
-            {
-                "Moscow",
-                "1970-01-01 00:00",
-                "1990-06-30 22:00",
-            }
-            {
-                "Europe_Eastern",
-                "1990-06-30 22:00",
-                "9999-12-31 23:59",
-            }
-        }
         "Europe:Zurich"{
             {
                 "Europe_Central",
@@ -4402,18 +4378,6 @@
                 "9999-12-31 23:59",
             }
         }
-        "Pacific:Johnston"{
-            {
-                "Alaska_Hawaii",
-                "1970-01-01 00:00",
-                "1983-10-30 11:00",
-            }
-            {
-                "Hawaii_Aleutian",
-                "1983-10-30 11:00",
-                "9999-12-31 23:59",
-            }
-        }
         "Pacific:Kiritimati"{
             {
                 "Line_Islands",
diff --git a/icu4c/source/data/misc/timezoneTypes.txt b/icu4c/source/data/misc/timezoneTypes.txt
index d46182c..23878b9 100644
--- a/icu4c/source/data/misc/timezoneTypes.txt
+++ b/icu4c/source/data/misc/timezoneTypes.txt
@@ -5,10 +5,21 @@
     bcpTypeAlias{
         tz{
             aqams{"nzakl"}
+            aukns{"auhba"}
+            caffs{"cawnp"}
+            camtr{"cator"}
+            canpg{"cator"}
+            capnt{"caiql"}
+            cathu{"cator"}
+            cayzf{"caedm"}
             cnckg{"cnsha"}
             cnhrb{"cnsha"}
             cnkhg{"cnurc"}
             gaza{"gazastrp"}
+            mxstis{"mxtij"}
+            uaozh{"uaiev"}
+            uauzh{"uaiev"}
+            umjon{"ushnl"}
             usnavajo{"usden"}
         }
     }
@@ -29,11 +40,18 @@
             "America:Indiana:Indianapolis"{"America/Indianapolis"}
             "America:Kentucky:Louisville"{"America/Louisville"}
             "America:Knox_IN"{"America/Indiana/Knox"}
+            "America:Montreal"{"America/Toronto"}
+            "America:Nipigon"{"America/Toronto"}
             "America:Nuuk"{"America/Godthab"}
+            "America:Pangnirtung"{"America/Iqaluit"}
             "America:Porto_Acre"{"America/Rio_Branco"}
+            "America:Rainy_River"{"America/Winnipeg"}
             "America:Rosario"{"America/Cordoba"}
+            "America:Santa_Isabel"{"America/Tijuana"}
             "America:Shiprock"{"America/Denver"}
+            "America:Thunder_Bay"{"America/Toronto"}
             "America:Virgin"{"America/St_Thomas"}
+            "America:Yellowknife"{"America/Edmonton"}
             "Antarctica:South_Pole"{"Pacific/Auckland"}
             "Asia:Ashkhabad"{"Asia/Ashgabat"}
             "Asia:Chongqing"{"Asia/Shanghai"}
@@ -55,6 +73,7 @@
             "Atlantic:Jan_Mayen"{"Arctic/Longyearbyen"}
             "Australia:ACT"{"Australia/Sydney"}
             "Australia:Canberra"{"Australia/Sydney"}
+            "Australia:Currie"{"Australia/Hobart"}
             "Australia:LHI"{"Australia/Lord_Howe"}
             "Australia:NSW"{"Australia/Sydney"}
             "Australia:North"{"Australia/Darwin"}
@@ -90,10 +109,13 @@
             "Europe:Kyiv"{"Europe/Kiev"}
             "Europe:Nicosia"{"Asia/Nicosia"}
             "Europe:Tiraspol"{"Europe/Chisinau"}
+            "Europe:Uzhgorod"{"Europe/Kiev"}
+            "Europe:Zaporozhye"{"Europe/Kiev"}
             "Mexico:BajaNorte"{"America/Tijuana"}
             "Mexico:BajaSur"{"America/Mazatlan"}
             "Mexico:General"{"America/Mexico_City"}
             "Pacific:Chuuk"{"Pacific/Truk"}
+            "Pacific:Johnston"{"Pacific/Honolulu"}
             "Pacific:Kanton"{"Pacific/Enderbury"}
             "Pacific:Pohnpei"{"Pacific/Ponape"}
             "Pacific:Samoa"{"Pacific/Pago_Pago"}
@@ -302,11 +324,9 @@
             "America:Moncton"{"camon"}
             "America:Monterrey"{"mxmty"}
             "America:Montevideo"{"uymvd"}
-            "America:Montreal"{"camtr"}
             "America:Montserrat"{"msmni"}
             "America:Nassau"{"bsnas"}
             "America:New_York"{"usnyc"}
-            "America:Nipigon"{"canpg"}
             "America:Nome"{"usome"}
             "America:Noronha"{"brfen"}
             "America:North_Dakota:Beulah"{"usxul"}
@@ -314,7 +334,6 @@
             "America:North_Dakota:New_Salem"{"usndnsl"}
             "America:Ojinaga"{"mxoji"}
             "America:Panama"{"papty"}
-            "America:Pangnirtung"{"capnt"}
             "America:Paramaribo"{"srpbm"}
             "America:Phoenix"{"usphx"}
             "America:Port-au-Prince"{"htpap"}
@@ -322,13 +341,11 @@
             "America:Porto_Velho"{"brpvh"}
             "America:Puerto_Rico"{"prsju"}
             "America:Punta_Arenas"{"clpuq"}
-            "America:Rainy_River"{"caffs"}
             "America:Rankin_Inlet"{"cayek"}
             "America:Recife"{"brrec"}
             "America:Regina"{"careg"}
             "America:Resolute"{"careb"}
             "America:Rio_Branco"{"brrbr"}
-            "America:Santa_Isabel"{"mxstis"}
             "America:Santarem"{"brstm"}
             "America:Santiago"{"clscl"}
             "America:Santo_Domingo"{"dosdq"}
@@ -344,7 +361,6 @@
             "America:Swift_Current"{"cayyn"}
             "America:Tegucigalpa"{"hntgu"}
             "America:Thule"{"glthu"}
-            "America:Thunder_Bay"{"cathu"}
             "America:Tijuana"{"mxtij"}
             "America:Toronto"{"cator"}
             "America:Tortola"{"vgtov"}
@@ -352,7 +368,6 @@
             "America:Whitehorse"{"cayxy"}
             "America:Winnipeg"{"cawnp"}
             "America:Yakutat"{"usyak"}
-            "America:Yellowknife"{"cayzf"}
             "Antarctica:Casey"{"aqcas"}
             "Antarctica:Davis"{"aqdav"}
             "Antarctica:DumontDUrville"{"aqddu"}
@@ -461,7 +476,6 @@
             "Australia:Adelaide"{"auadl"}
             "Australia:Brisbane"{"aubne"}
             "Australia:Broken_Hill"{"aubhq"}
-            "Australia:Currie"{"aukns"}
             "Australia:Darwin"{"audrw"}
             "Australia:Eucla"{"aueuc"}
             "Australia:Hobart"{"auhba"}
@@ -549,7 +563,6 @@
             "Europe:Tallinn"{"eetll"}
             "Europe:Tirane"{"altia"}
             "Europe:Ulyanovsk"{"ruuly"}
-            "Europe:Uzhgorod"{"uauzh"}
             "Europe:Vaduz"{"livdz"}
             "Europe:Vatican"{"vavat"}
             "Europe:Vienna"{"atvie"}
@@ -557,7 +570,6 @@
             "Europe:Volgograd"{"ruvog"}
             "Europe:Warsaw"{"plwaw"}
             "Europe:Zagreb"{"hrzag"}
-            "Europe:Zaporozhye"{"uaozh"}
             "Europe:Zurich"{"chzrh"}
             "Indian:Antananarivo"{"mgtnr"}
             "Indian:Chagos"{"iodga"}
@@ -585,7 +597,6 @@
             "Pacific:Guadalcanal"{"sbhir"}
             "Pacific:Guam"{"gugum"}
             "Pacific:Honolulu"{"ushnl"}
-            "Pacific:Johnston"{"umjon"}
             "Pacific:Kiritimati"{"kicxi"}
             "Pacific:Kosrae"{"fmksa"}
             "Pacific:Kwajalein"{"mhkwa"}
diff --git a/icu4c/source/data/misc/windowsZones.txt b/icu4c/source/data/misc/windowsZones.txt
index 1535e88..6ba9ca1 100644
--- a/icu4c/source/data/misc/windowsZones.txt
+++ b/icu4c/source/data/misc/windowsZones.txt
@@ -126,12 +126,11 @@
             ZZ{"Etc/GMT+6"}
         }
         "Central Asia Standard Time"{
-            001{"Asia/Almaty"}
+            001{"Asia/Bishkek"}
             AQ{"Antarctica/Vostok"}
             CN{"Asia/Urumqi"}
             IO{"Indian/Chagos"}
             KG{"Asia/Bishkek"}
-            KZ{"Asia/Almaty Asia/Qostanay"}
             ZZ{"Etc/GMT-6"}
         }
         "Central Brazilian Standard Time"{
@@ -168,16 +167,13 @@
             001{"America/Mexico_City"}
             MX{
                 "America/Mexico_City America/Bahia_Banderas America/Merida America/Mo"
-                "nterrey"
+                "nterrey America/Chihuahua "
             }
         }
         "Central Standard Time"{
             001{"America/Chicago"}
-            CA{
-                "America/Winnipeg America/Rainy_River America/Rankin_Inlet America/Re"
-                "solute"
-            }
-            MX{"America/Matamoros"}
+            CA{"America/Winnipeg America/Rankin_Inlet America/Resolute"}
+            MX{"America/Matamoros America/Ojinaga"}
             US{
                 "America/Chicago America/Indiana/Knox America/Indiana/Tell_City Ameri"
                 "ca/Menominee America/North_Dakota/Beulah America/North_Dakota/Center"
@@ -241,10 +237,7 @@
         "Eastern Standard Time"{
             001{"America/New_York"}
             BS{"America/Nassau"}
-            CA{
-                "America/Toronto America/Iqaluit America/Montreal America/Nipigon Ame"
-                "rica/Pangnirtung America/Thunder_Bay"
-            }
+            CA{"America/Toronto America/Iqaluit"}
             US{
                 "America/New_York America/Detroit America/Indiana/Petersburg America/"
                 "Indiana/Vincennes America/Indiana/Winamac America/Kentucky/Monticell"
@@ -268,7 +261,7 @@
             FI{"Europe/Helsinki"}
             LT{"Europe/Vilnius"}
             LV{"Europe/Riga"}
-            UA{"Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye"}
+            UA{"Europe/Kiev"}
         }
         "Fiji Standard Time"{
             001{"Pacific/Fiji"}
@@ -325,7 +318,6 @@
             001{"Pacific/Honolulu"}
             CK{"Pacific/Rarotonga"}
             PF{"Pacific/Tahiti"}
-            UM{"Pacific/Johnston"}
             US{"Pacific/Honolulu"}
             ZZ{"Etc/GMT+10"}
         }
@@ -398,16 +390,13 @@
             MA{"Africa/Casablanca"}
         }
         "Mountain Standard Time (Mexico)"{
-            001{"America/Chihuahua"}
-            MX{"America/Chihuahua America/Mazatlan"}
+            001{"America/Mazatlan"}
+            MX{"America/Mazatlan"}
         }
         "Mountain Standard Time"{
             001{"America/Denver"}
-            CA{
-                "America/Edmonton America/Cambridge_Bay America/Inuvik America/Yellow"
-                "knife"
-            }
-            MX{"America/Ojinaga"}
+            CA{"America/Edmonton America/Cambridge_Bay America/Inuvik"}
+            MX{"America/Ciudad_Juarez"}
             US{"America/Denver America/Boise"}
             ZZ{"MST7MDT"}
         }
@@ -463,7 +452,7 @@
         }
         "Pacific Standard Time (Mexico)"{
             001{"America/Tijuana"}
-            MX{"America/Tijuana America/Santa_Isabel"}
+            MX{"America/Tijuana"}
         }
         "Pacific Standard Time"{
             001{"America/Los_Angeles"}
@@ -638,7 +627,7 @@
         }
         "Tasmania Standard Time"{
             001{"Australia/Hobart"}
-            AU{"Australia/Hobart Australia/Currie Antarctica/Macquarie"}
+            AU{"Australia/Hobart Antarctica/Macquarie"}
         }
         "Tocantins Standard Time"{
             001{"America/Araguaina"}
@@ -789,7 +778,10 @@
         "West Asia Standard Time"{
             001{"Asia/Tashkent"}
             AQ{"Antarctica/Mawson"}
-            KZ{"Asia/Oral Asia/Aqtau Asia/Aqtobe Asia/Atyrau"}
+            KZ{
+                "Asia/Oral Asia/Almaty Asia/Aqtau Asia/Aqtobe Asia/Atyrau Asia/Qostan"
+                "ay"
+            }
             MV{"Indian/Maldives"}
             TF{"Indian/Kerguelen"}
             TJ{"Asia/Dushanbe"}
diff --git a/icu4c/source/data/misc/zoneinfo64.txt b/icu4c/source/data/misc/zoneinfo64.txt
index f007378..1d6242f 100644
--- a/icu4c/source/data/misc/zoneinfo64.txt
+++ b/icu4c/source/data/misc/zoneinfo64.txt
@@ -3,9 +3,9 @@
 // License & terms of use: http://www.unicode.org/copyright.html
 //---------------------------------------------------------
 // Build tool:  tz2icu
-// Build date:  Mon Mar 27 13:30:20 2023
+// Build date:  Fri Feb  9 16:46:01 2024
 // tz database: ftp://ftp.iana.org/tz/
-// tz version:  2023a
+// tz version:  2024a
 // ICU version: 72.1
 //---------------------------------------------------------
 // >> !!! >>   THIS IS A MACHINE-GENERATED FILE   << !!! <<
@@ -13,7 +13,7 @@
 //---------------------------------------------------------
 
 zoneinfo64:table(nofallback) {
- TZVersion { "2023a" }
+ TZVersion { "2024a" }
  Zones:array { 
   /* ACT */ :int { 357 } //Z#0
   /* AET */ :int { 369 } //Z#1
@@ -759,7 +759,7 @@
     links:intvector { 166, 542 }
   } //Z#166
   /* America/Miquelon */ :table {
-    trans:intvector { -1850328920, 326001600, 544597200, 562132800, 576046800, 594187200, 607496400, 625636800, 638946000, 657086400, 671000400, 688536000, 702450000, 719985600, 733899600, 752040000, 765349200, 783489600, 796798800, 814939200, 828853200, 846388800, 860302800, 877838400, 891752400, 909288000, 923202000, 941342400, 954651600, 972792000, 986101200, 1004241600, 1018155600, 1035691200, 1049605200, 1067140800, 1081054800, 1099195200, 1112504400, 1130644800, 1143954000, 1162094400, 1173589200, 1194148800 }
+    trans:intvector { -1847650520, 326001600, 544597200, 562132800, 576046800, 594187200, 607496400, 625636800, 638946000, 657086400, 671000400, 688536000, 702450000, 719985600, 733899600, 752040000, 765349200, 783489600, 796798800, 814939200, 828853200, 846388800, 860302800, 877838400, 891752400, 909288000, 923202000, 941342400, 954651600, 972792000, 986101200, 1004241600, 1018155600, 1035691200, 1049605200, 1067140800, 1081054800, 1099195200, 1112504400, 1130644800, 1143954000, 1162094400, 1173589200, 1194148800 }
     typeOffsets:intvector { -13480, 0, -14400, 0, -10800, 0, -10800, 3600 }
     typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
     finalRule { "Canada" }
@@ -842,9 +842,9 @@
     finalYear:int { 2008 }
   } //Z#180
   /* America/Nuuk */ :table {
-    trans:intvector { -1686083584, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1477789200, 1490490000, 1509238800, 1521939600, 1540688400, 1553994000, 1572138000, 1585443600, 1603587600, 1616893200, 1635642000, 1648342800, 1667091600, 1679792400, 1698541200, 1711846800, 1729990800 }
+    trans:intvector { -1686083584, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1477789200, 1490490000, 1509238800, 1521939600, 1540688400, 1553994000, 1572138000, 1585443600, 1603587600, 1616893200, 1635642000, 1648342800, 1667091600, 1679792400, 1711846800, 1729990800 }
     typeOffsets:intvector { -12416, 0, -10800, 0, -10800, 3600, -7200, 0, -7200, 3600 }
-    typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102030403" }
+    typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201030403" }
     finalRule { "EU" }
     finalRaw:int { -7200 }
     finalYear:int { 2025 }
@@ -970,12 +970,12 @@
     links:intvector { 204, 374, 378 }
   } //Z#204
   /* America/Scoresbysund */ :table {
-    trans:intvector { -1686090728, 323841600, 338961600, 354679200, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
+    trans:intvector { -1686090728, 323841600, 338961600, 354679200, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1477789200, 1490490000, 1509238800, 1521939600, 1540688400, 1553994000, 1572138000, 1585443600, 1603587600, 1616893200, 1635642000, 1648342800, 1667091600, 1679792400, 1698541200, 1711846800, 1729990800 }
     typeOffsets:intvector { -5272, 0, -7200, 0, -7200, 3600, -3600, 0, -3600, 3600 }
-    typeMap:bin { "0102010403040304030403040304030403040304030403040304030403040304030403" }
+    typeMap:bin { "01020104030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030201" }
     finalRule { "EU" }
-    finalRaw:int { -3600 }
-    finalYear:int { 1997 }
+    finalRaw:int { -7200 }
+    finalYear:int { 2025 }
   } //Z#205
   /* America/Shiprock */ :int { 110 } //Z#206
   /* America/Sitka */ :table {
@@ -1031,7 +1031,7 @@
   } //Z#218
   /* America/Toronto */ :table {
     transPre32:intvector { -1, 1928231148 }
-    trans:intvector { -1632070800, -1615140000, -1601753400, -1583697600, -1567357200, -1554667200, -1534698000, -1524074400, -1503248400, -1492365600, -1471798800, -1460916000, -1440954000, -1428861600, -1409504400, -1397412000, -1378054800, -1365962400, -1346605200, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1188752400, -1176055200, -1157302800, -1144000800, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -765396000, -747248400, -733946400, -715806000, -702504000, -684356400, -671054400, -652906800, -634161600, -620845200, -602704800, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -450295200, -431542800, -418240800, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
+    trans:intvector { -1632070800, -1615140000, -1601753400, -1583697600, -1567357200, -1554667200, -1534698000, -1524074400, -1503248400, -1492365600, -1471798800, -1460916000, -1440954000, -1428861600, -1409504400, -1397412000, -1378054800, -1365962400, -1346605200, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1188752400, -1176055200, -1157302800, -1144000800, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -765396000, -747248400, -733946400, -715798800, -702496800, -684349200, -671047200, -652899600, -634154400, -620845200, -602704800, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -450295200, -431542800, -418240800, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
     typeOffsets:intvector { -19052, 0, -18000, 0, -18000, 3600 }
     typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
     finalRule { "Canada" }
@@ -1079,9 +1079,9 @@
   } //Z#225
   /* America/Yellowknife */ :int { 113 } //Z#226
   /* Antarctica/Casey */ :table {
-    trans:intvector { -31536000, 1255802400, 1267714800, 1319738400, 1329843600, 1477065600, 1520701200, 1538856000, 1552752000, 1570129200, 1583596800, 1601740860 }
+    trans:intvector { -31536000, 1255802400, 1267714800, 1319738400, 1329843600, 1477065600, 1520701200, 1538856000, 1552752000, 1570129200, 1583596800, 1601740860, 1615640400, 1633190460, 1647090000, 1664640060, 1678291200 }
     typeOffsets:intvector { 0, 0, 28800, 0, 39600, 0 }
-    typeMap:bin { "010201020102010201020102" }
+    typeMap:bin { "0102010201020102010201020102010201" }
   } //Z#227
   /* Antarctica/Davis */ :table {
     trans:intvector { -409190400, -163062000, -28857600, 1255806000, 1268251200, 1319742000, 1329854400 }
@@ -1124,13 +1124,17 @@
     finalRaw:int { 0 }
     finalYear:int { 2006 }
   } //Z#237
-  /* Antarctica/Vostok */ :int { 331 } //Z#238
+  /* Antarctica/Vostok */ :table {
+    trans:intvector { -380073600, 760035600, 783648000, 1702839600 }
+    typeOffsets:intvector { 0, 0, 18000, 0, 25200, 0 }
+    typeMap:bin { "02000201" }
+  } //Z#238
   /* Arctic/Longyearbyen */ :int { 447 } //Z#239
   /* Asia/Aden */ :int { 311 } //Z#240
   /* Asia/Almaty */ :table {
-    trans:intvector { -1441170468, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701812800, 717537600, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400 }
+    trans:intvector { -1441170468, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701812800, 717537600, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1709229600 }
     typeOffsets:intvector { 18468, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
-    typeMap:bin { "010304030403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030403" }
+    typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040301" }
   } //Z#241
   /* Asia/Amman */ :table {
     trans:intvector { -1230776624, 108165600, 118270800, 136591200, 149806800, 168127200, 181342800, 199749600, 215643600, 231285600, 244501200, 262735200, 275950800, 481154400, 496962000, 512949600, 528670800, 544399200, 560120400, 575848800, 592174800, 610581600, 623624400, 641167200, 655074000, 671839200, 685918800, 702856800, 717973200, 733701600, 749422800, 765151200, 779662800, 797205600, 811116000, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 930780000, 938124000, 954367200, 970178400, 985816800, 1001628000, 1017352800, 1033077600, 1048802400, 1066946400, 1080252000, 1097791200, 1112306400, 1128031200, 1143756000, 1161900000, 1175205600, 1193349600, 1206655200, 1225404000, 1238104800, 1256853600, 1269554400, 1288303200, 1301608800, 1319752800, 1333058400, 1387486800, 1395957600, 1414706400, 1427407200, 1446156000, 1459461600, 1477605600, 1490911200, 1509055200, 1522360800, 1540504800, 1553810400, 1571954400, 1585260000, 1604008800, 1616709600, 1635458400, 1645740000, 1666908000 }
@@ -1260,10 +1264,10 @@
   } //Z#269
   /* Asia/Gaza */ :table {
     transPre32:intvector { -1, 2109557424 }
-    trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1712966400, 1729897200, 1743811200, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 }
-    transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2092112896, 0, -2091511696, 0, -2078807296, 0, -2064900496, 0, -2061268096, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2031028096, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -2000183296, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1969338496, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1939098496, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1908253696, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1877408896, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1847168896, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1816324096, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1786084096, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1755239296, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1724394496, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1694154496, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1663309696, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1632464896, 0, -1618558096, 0, -1602224896, 0, -1586503696, 0, -1571380096, 0, -1555054096, 0, -1541140096, 0, -1523604496, 0, -1510295296, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1051252096, 0, -1023434896, 0, -1020407296, 0, -993194896, 0, -989562496, 0, -962350096, 0, -959322496, 0, -955697296, 0, -942388096, 0, -932110096, 0, -928477696, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897632896, 0, -892193296, 0, -879488896, 0, -870420496, 0, -867392896, 0, -860743696, 0, -848039296, 0, -840180496, 0, -836548096, 0, -829294096, 0, -815984896, 0, -809335696, 0, -806308096, 0, -797844496, 0, -784535296, 0, -778490896, 0, -775463296, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744618496, 0, -734945296, 0, -721636096, 0, -717406096, 0, -714378496, 0, -702890896, 0, -690186496, 0, -687166096, 0, -683533696, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652688896, 0, -639991696, 0, -626682496, 0, -625476496, 0, -622448896, 0, -608542096, 0, -595232896, 0, -577092496 }
+    trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1713571200, 1729897200, 1744416000, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 }
+    transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2078807296, 0, -2064900496, 0, -2060663296, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2030423296, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -1999578496, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1968733696, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1938493696, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1907648896, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1876804096, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1846564096, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1815719296, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1785479296, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1754634496, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1723789696, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1693549696, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1662704896, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1631860096, 0, -1618558096, 0, -1601620096, 0, -1586503696, 0, -1570775296, 0, -1555054096, 0, -1540535296, 0, -1523604496, 0, -1509690496, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1050647296, 0, -1050046096, 0, -1037341696, 0, -1023434896, 0, -1019802496, 0, -1018596496, 0, -1005892096, 0, -993194896, 0, -988957696, 0, -987146896, 0, -973837696, 0, -962350096, 0, -958717696, 0, -955697296, 0, -942388096, 0, -932110096, 0, -927872896, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897028096, 0, -892193296, 0, -879488896, 0, -870420496, 0, -866788096, 0, -860743696, 0, -848039296, 0, -840180496, 0, -835943296, 0, -829294096, 0, -815984896, 0, -809335696, 0, -805703296, 0, -797844496, 0, -784535296, 0, -778490896, 0, -774858496, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744013696, 0, -734945296, 0, -721636096, 0, -717406096, 0, -713773696, 0, -702890896, 0, -690186496, 0, -687166096, 0, -682928896, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652084096, 0, -639991696, 0, -626682496, 0, -625476496, 0, -621844096, 0, -608542096, 0, -595232896, 0, -577092496 }
     typeOffsets:intvector { 8272, 0, 7200, 0, 7200, 3600 }
-    typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
+    typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
     finalRule { "Palestine" }
     finalRaw:int { 7200 }
     finalYear:int { 2088 }
@@ -1271,16 +1275,16 @@
   /* Asia/Harbin */ :int { 316 } //Z#271
   /* Asia/Hebron */ :table {
     transPre32:intvector { -1, 2109557273 }
-    trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1712966400, 1729897200, 1743811200, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 }
-    transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2092112896, 0, -2091511696, 0, -2078807296, 0, -2064900496, 0, -2061268096, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2031028096, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -2000183296, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1969338496, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1939098496, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1908253696, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1877408896, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1847168896, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1816324096, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1786084096, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1755239296, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1724394496, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1694154496, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1663309696, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1632464896, 0, -1618558096, 0, -1602224896, 0, -1586503696, 0, -1571380096, 0, -1555054096, 0, -1541140096, 0, -1523604496, 0, -1510295296, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1051252096, 0, -1023434896, 0, -1020407296, 0, -993194896, 0, -989562496, 0, -962350096, 0, -959322496, 0, -955697296, 0, -942388096, 0, -932110096, 0, -928477696, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897632896, 0, -892193296, 0, -879488896, 0, -870420496, 0, -867392896, 0, -860743696, 0, -848039296, 0, -840180496, 0, -836548096, 0, -829294096, 0, -815984896, 0, -809335696, 0, -806308096, 0, -797844496, 0, -784535296, 0, -778490896, 0, -775463296, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744618496, 0, -734945296, 0, -721636096, 0, -717406096, 0, -714378496, 0, -702890896, 0, -690186496, 0, -687166096, 0, -683533696, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652688896, 0, -639991696, 0, -626682496, 0, -625476496, 0, -622448896, 0, -608542096, 0, -595232896, 0, -577092496 }
+    trans:intvector { -933638400, -923097600, -919036800, -857347200, -844300800, -825811200, -812678400, -794188800, -779846400, -762652800, -748310400, -731116800, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334101600, 337730400, 452642400, 462319200, 482277600, 494370000, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445551200, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572037200, 1585346400, 1603490400, 1616796000, 1635458400, 1648332000, 1666998000, 1682726400, 1698447600, 1713571200, 1729897200, 1744416000, 1761346800, 1774656000, 1792796400, 1806105600, 1824850800, 1837555200, 1856300400, 1869004800, 1887750000, 1901059200, 1919199600, 1932508800, 1950649200, 1963958400, 1982703600, 1995408000, 2014153200, 2026857600, 2045602800, 2058307200, 2077052400, 2090361600, 2107897200, 2121811200, 2138742000 }
+    transPost32:intvector { 0, -2141706496, 0, -2125985296, 0, -2110256896, 0, -2095140496, 0, -2078807296, 0, -2064900496, 0, -2060663296, 0, -2060062096, 0, -2046752896, 0, -2034055696, 0, -2030423296, 0, -2028612496, 0, -2015303296, 0, -2003210896, 0, -1999578496, 0, -1997162896, 0, -1983853696, 0, -1972970896, 0, -1968733696, 0, -1965713296, 0, -1952404096, 0, -1942126096, 0, -1938493696, 0, -1933658896, 0, -1920954496, 0, -1911281296, 0, -1907648896, 0, -1902209296, 0, -1889504896, 0, -1881041296, 0, -1876804096, 0, -1870759696, 0, -1857450496, 0, -1850196496, 0, -1846564096, 0, -1839310096, 0, -1826000896, 0, -1819956496, 0, -1815719296, 0, -1807860496, 0, -1794551296, 0, -1789111696, 0, -1785479296, 0, -1775806096, 0, -1763101696, 0, -1758266896, 0, -1754634496, 0, -1744356496, 0, -1731652096, 0, -1728026896, 0, -1723789696, 0, -1712906896, 0, -1699597696, 0, -1697182096, 0, -1693549696, 0, -1681457296, 0, -1668148096, 0, -1666942096, 0, -1662704896, 0, -1650007696, 0, -1636698496, 0, -1636097296, 0, -1631860096, 0, -1618558096, 0, -1601620096, 0, -1586503696, 0, -1570775296, 0, -1555054096, 0, -1540535296, 0, -1523604496, 0, -1509690496, 0, -1492154896, 0, -1478845696, 0, -1460705296, 0, -1447396096, 0, -1428650896, 0, -1415946496, 0, -1397201296, 0, -1384496896, 0, -1365751696, 0, -1353047296, 0, -1334302096, 0, -1320992896, 0, -1302852496, 0, -1289543296, 0, -1271402896, 0, -1258093696, 0, -1239348496, 0, -1226644096, 0, -1207898896, 0, -1195194496, 0, -1177054096, 0, -1163140096, 0, -1146209296, 0, -1131690496, 0, -1115364496, 0, -1100240896, 0, -1085124496, 0, -1068791296, 0, -1054279696, 0, -1050647296, 0, -1050046096, 0, -1037341696, 0, -1023434896, 0, -1019802496, 0, -1018596496, 0, -1005892096, 0, -993194896, 0, -988957696, 0, -987146896, 0, -973837696, 0, -962350096, 0, -958717696, 0, -955697296, 0, -942388096, 0, -932110096, 0, -927872896, 0, -924247696, 0, -910938496, 0, -901265296, 0, -897028096, 0, -892193296, 0, -879488896, 0, -870420496, 0, -866788096, 0, -860743696, 0, -848039296, 0, -840180496, 0, -835943296, 0, -829294096, 0, -815984896, 0, -809335696, 0, -805703296, 0, -797844496, 0, -784535296, 0, -778490896, 0, -774858496, 0, -766394896, 0, -753085696, 0, -748250896, 0, -744013696, 0, -734945296, 0, -721636096, 0, -717406096, 0, -713773696, 0, -702890896, 0, -690186496, 0, -687166096, 0, -682928896, 0, -671441296, 0, -658736896, 0, -656321296, 0, -652084096, 0, -639991696, 0, -626682496, 0, -625476496, 0, -621844096, 0, -608542096, 0, -595232896, 0, -577092496 }
     typeOffsets:intvector { 8423, 0, 7200, 0, 7200, 3600 }
-    typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
+    typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
     finalRule { "Palestine" }
     finalRaw:int { 7200 }
     finalYear:int { 2088 }
   } //Z#272
   /* Asia/Ho_Chi_Minh */ :table {
-    trans:intvector { -1851577590, -852105600, -782643600, -767869200, -718095600, -457776000, -315648000, 171820800 }
+    trans:intvector { -1851577590, -852105600, -782643600, -767869200, -718095600, -457772400, -315648000, 171820800 }
     typeOffsets:intvector { 25590, 0, 25200, 0, 28800, 0, 32400, 0 }
     typeMap:bin { "0102030102010201" }
     links:intvector { 273, 312, 634 }
@@ -1444,9 +1448,9 @@
     links:intvector { 250, 307 }
   } //Z#307
   /* Asia/Qostanay */ :table {
-    trans:intvector { -1441167268, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000 }
+    trans:intvector { -1441167268, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701816400, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1709229600 }
     typeOffsets:intvector { 15268, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }
-    typeMap:bin { "010304050403040304030403040304030403040304030201030403040304030403040304030403040304030403040304030405" }
+    typeMap:bin { "01030405040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403040503" }
   } //Z#308
   /* Asia/Qyzylorda */ :table {
     trans:intvector { -1441167712, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695768400, 701812800, 717541200, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1545328800 }
@@ -1550,7 +1554,7 @@
     trans:intvector { -1325483420 }
     typeOffsets:intvector { 21020, 0, 21600, 0 }
     typeMap:bin { "01" }
-    links:intvector { 238, 284, 331 }
+    links:intvector { 284, 331 }
   } //Z#331
   /* Asia/Ust-Nera */ :table {
     trans:intvector { -1579426374, -1247558400, 354898800, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701794800, 717519600, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877791600, 891097200, 909241200, 922546800, 941295600, 953996400, 972745200, 985446000, 1004194800, 1017500400, 1035644400, 1048950000, 1067094000, 1080399600, 1099148400, 1111849200, 1130598000, 1143298800, 1162047600, 1174748400, 1193497200, 1206802800, 1224946800, 1238252400, 1256396400, 1269702000, 1288450800, 1301151600, 1315828800, 1414249200 }
@@ -2542,10 +2546,9 @@
     typeOffsets:intvector { -14400, 0 }
   } //Z#604
   /* SystemV/AST4ADT */ :table {
-    transPre32:intvector { -1, 2096195296, -1, 2111916496, -1, 2127644896, -1, 2143366096 }
     trans:intvector { -2135872800, -2120151600, -2104423200, -2088702000, -2072973600, -2056647600, -2040919200, -2025198000, -2009469600, -1993748400, -1978020000, -1962298800, -1946570400, -1930849200, -1915120800, -1898794800, -1883671200, -1867345200, -1851616800, -1835895600, -1820167200, -1804446000, -1788717600, -1772996400, -1757268000, -1741546800, -1725818400, -1709492400, -1693764000, -1678042800, -1662314400, -1646593200, -1630864800, -1615143600, -1599415200, -1583694000, -1567965600, -1551639600, -1536516000, -1520190000, -1504461600, -1488740400, -1473012000, -1457290800, -1441562400, -1425841200, -1410112800, -1394391600, -1378663200, -1362337200, -1347213600, -1330887600, -1315159200, -1299438000, -1283709600, -1267988400, -1252260000, -1236538800, -1220810400, -1205089200, -1189360800, -1173034800, -1157306400, -1141585200, -1125856800, -1110135600, -1094407200, -1078686000, -1062957600, -1047236400, -1031508000, -1015182000, -1000058400, -983732400, -968004000, -952282800, -936554400, -920833200, -905104800, -889383600, -873655200, -857934000, -842205600, -825879600, -810151200, -794430000, -778701600, -762980400, -747252000, -731530800, -715802400, -700081200, -684352800, -668026800, -652903200, -636577200, -620848800, -605127600, -589399200, -573678000, -557949600, -542228400, -526500000, -510778800, -495050400, -478724400, -463600800, -447274800, -431546400, -415825200, -400096800, -384375600, -368647200, -352926000, -337197600, -321476400, -305748000, -289422000, -273693600, -257972400, -242244000, -226522800, -210794400, -195073200, -179344800, -163623600, -147895200, -131569200, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 104911200, 120632400, 126684000, 154501200, 162367200, 183531600, 199260000, 215586000 }
     typeOffsets:intvector { -14400, 0, -14400, 3600 }
-    typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+    typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     finalRule { "SystemV" }
     finalRaw:int { -14400 }
     finalYear:int { 1977 }
@@ -2554,10 +2557,9 @@
     typeOffsets:intvector { -21600, 0 }
   } //Z#606
   /* SystemV/CST6CDT */ :table {
-    transPre32:intvector { -1, 2096202496, -1, 2111923696, -1, 2127652096, -1, 2143373296 }
     trans:intvector { -2135865600, -2120144400, -2104416000, -2088694800, -2072966400, -2056640400, -2040912000, -2025190800, -2009462400, -1993741200, -1978012800, -1962291600, -1946563200, -1930842000, -1915113600, -1898787600, -1883664000, -1867338000, -1851609600, -1835888400, -1820160000, -1804438800, -1788710400, -1772989200, -1757260800, -1741539600, -1725811200, -1709485200, -1693756800, -1678035600, -1662307200, -1646586000, -1630857600, -1615136400, -1599408000, -1583686800, -1567958400, -1551632400, -1536508800, -1520182800, -1504454400, -1488733200, -1473004800, -1457283600, -1441555200, -1425834000, -1410105600, -1394384400, -1378656000, -1362330000, -1347206400, -1330880400, -1315152000, -1299430800, -1283702400, -1267981200, -1252252800, -1236531600, -1220803200, -1205082000, -1189353600, -1173027600, -1157299200, -1141578000, -1125849600, -1110128400, -1094400000, -1078678800, -1062950400, -1047229200, -1031500800, -1015174800, -1000051200, -983725200, -967996800, -952275600, -936547200, -920826000, -905097600, -889376400, -873648000, -857926800, -842198400, -825872400, -810144000, -794422800, -778694400, -762973200, -747244800, -731523600, -715795200, -700074000, -684345600, -668019600, -652896000, -636570000, -620841600, -605120400, -589392000, -573670800, -557942400, -542221200, -526492800, -510771600, -495043200, -478717200, -463593600, -447267600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -163616400, -147888000, -131562000, -116438400, -100112400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 154508400, 162374400, 183538800, 199267200, 215593200 }
     typeOffsets:intvector { -21600, 0, -21600, 3600 }
-    typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+    typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     finalRule { "SystemV" }
     finalRaw:int { -21600 }
     finalYear:int { 1977 }
@@ -2566,10 +2568,9 @@
     typeOffsets:intvector { -18000, 0 }
   } //Z#608
   /* SystemV/EST5EDT */ :table {
-    transPre32:intvector { -1, 2096198896, -1, 2111920096, -1, 2127648496, -1, 2143369696 }
     trans:intvector { -2135869200, -2120148000, -2104419600, -2088698400, -2072970000, -2056644000, -2040915600, -2025194400, -2009466000, -1993744800, -1978016400, -1962295200, -1946566800, -1930845600, -1915117200, -1898791200, -1883667600, -1867341600, -1851613200, -1835892000, -1820163600, -1804442400, -1788714000, -1772992800, -1757264400, -1741543200, -1725814800, -1709488800, -1693760400, -1678039200, -1662310800, -1646589600, -1630861200, -1615140000, -1599411600, -1583690400, -1567962000, -1551636000, -1536512400, -1520186400, -1504458000, -1488736800, -1473008400, -1457287200, -1441558800, -1425837600, -1410109200, -1394388000, -1378659600, -1362333600, -1347210000, -1330884000, -1315155600, -1299434400, -1283706000, -1267984800, -1252256400, -1236535200, -1220806800, -1205085600, -1189357200, -1173031200, -1157302800, -1141581600, -1125853200, -1110132000, -1094403600, -1078682400, -1062954000, -1047232800, -1031504400, -1015178400, -1000054800, -983728800, -968000400, -952279200, -936550800, -920829600, -905101200, -889380000, -873651600, -857930400, -842202000, -825876000, -810147600, -794426400, -778698000, -762976800, -747248400, -731527200, -715798800, -700077600, -684349200, -668023200, -652899600, -636573600, -620845200, -605124000, -589395600, -573674400, -557946000, -542224800, -526496400, -510775200, -495046800, -478720800, -463597200, -447271200, -431542800, -415821600, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 154504800, 162370800, 183535200, 199263600, 215589600 }
     typeOffsets:intvector { -18000, 0, -18000, 3600 }
-    typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+    typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     finalRule { "SystemV" }
     finalRaw:int { -18000 }
     finalYear:int { 1977 }
@@ -2581,10 +2582,9 @@
     typeOffsets:intvector { -25200, 0 }
   } //Z#611
   /* SystemV/MST7MDT */ :table {
-    transPre32:intvector { -1, 2096206096, -1, 2111927296, -1, 2127655696, -1, 2143376896 }
     trans:intvector { -2135862000, -2120140800, -2104412400, -2088691200, -2072962800, -2056636800, -2040908400, -2025187200, -2009458800, -1993737600, -1978009200, -1962288000, -1946559600, -1930838400, -1915110000, -1898784000, -1883660400, -1867334400, -1851606000, -1835884800, -1820156400, -1804435200, -1788706800, -1772985600, -1757257200, -1741536000, -1725807600, -1709481600, -1693753200, -1678032000, -1662303600, -1646582400, -1630854000, -1615132800, -1599404400, -1583683200, -1567954800, -1551628800, -1536505200, -1520179200, -1504450800, -1488729600, -1473001200, -1457280000, -1441551600, -1425830400, -1410102000, -1394380800, -1378652400, -1362326400, -1347202800, -1330876800, -1315148400, -1299427200, -1283698800, -1267977600, -1252249200, -1236528000, -1220799600, -1205078400, -1189350000, -1173024000, -1157295600, -1141574400, -1125846000, -1110124800, -1094396400, -1078675200, -1062946800, -1047225600, -1031497200, -1015171200, -1000047600, -983721600, -967993200, -952272000, -936543600, -920822400, -905094000, -889372800, -873644400, -857923200, -842194800, -825868800, -810140400, -794419200, -778690800, -762969600, -747241200, -731520000, -715791600, -700070400, -684342000, -668016000, -652892400, -636566400, -620838000, -605116800, -589388400, -573667200, -557938800, -542217600, -526489200, -510768000, -495039600, -478713600, -463590000, -447264000, -431535600, -415814400, -400086000, -384364800, -368636400, -352915200, -337186800, -321465600, -305737200, -289411200, -273682800, -257961600, -242233200, -226512000, -210783600, -195062400, -179334000, -163612800, -147884400, -131558400, -116434800, -100108800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 154512000, 162378000, 183542400, 199270800, 215596800 }
     typeOffsets:intvector { -25200, 0, -25200, 3600 }
-    typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+    typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     finalRule { "SystemV" }
     finalRaw:int { -25200 }
     finalYear:int { 1977 }
@@ -2593,10 +2593,9 @@
     typeOffsets:intvector { -28800, 0 }
   } //Z#613
   /* SystemV/PST8PDT */ :table {
-    transPre32:intvector { -1, 2096209696, -1, 2111930896, -1, 2127659296, -1, 2143380496 }
     trans:intvector { -2135858400, -2120137200, -2104408800, -2088687600, -2072959200, -2056633200, -2040904800, -2025183600, -2009455200, -1993734000, -1978005600, -1962284400, -1946556000, -1930834800, -1915106400, -1898780400, -1883656800, -1867330800, -1851602400, -1835881200, -1820152800, -1804431600, -1788703200, -1772982000, -1757253600, -1741532400, -1725804000, -1709478000, -1693749600, -1678028400, -1662300000, -1646578800, -1630850400, -1615129200, -1599400800, -1583679600, -1567951200, -1551625200, -1536501600, -1520175600, -1504447200, -1488726000, -1472997600, -1457276400, -1441548000, -1425826800, -1410098400, -1394377200, -1378648800, -1362322800, -1347199200, -1330873200, -1315144800, -1299423600, -1283695200, -1267974000, -1252245600, -1236524400, -1220796000, -1205074800, -1189346400, -1173020400, -1157292000, -1141570800, -1125842400, -1110121200, -1094392800, -1078671600, -1062943200, -1047222000, -1031493600, -1015167600, -1000044000, -983718000, -967989600, -952268400, -936540000, -920818800, -905090400, -889369200, -873640800, -857919600, -842191200, -825865200, -810136800, -794415600, -778687200, -762966000, -747237600, -731516400, -715788000, -700066800, -684338400, -668012400, -652888800, -636562800, -620834400, -605113200, -589384800, -573663600, -557935200, -542214000, -526485600, -510764400, -495036000, -478710000, -463586400, -447260400, -431532000, -415810800, -400082400, -384361200, -368632800, -352911600, -337183200, -321462000, -305733600, -289407600, -273679200, -257958000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 154515600, 162381600, 183546000, 199274400, 215600400 }
     typeOffsets:intvector { -28800, 0, -28800, 3600 }
-    typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+    typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     finalRule { "SystemV" }
     finalRaw:int { -28800 }
     finalYear:int { 1977 }
@@ -2605,10 +2604,9 @@
     typeOffsets:intvector { -32400, 0 }
   } //Z#615
   /* SystemV/YST9YDT */ :table {
-    transPre32:intvector { -1, 2096213296, -1, 2111934496, -1, 2127662896, -1, 2143384096 }
     trans:intvector { -2135854800, -2120133600, -2104405200, -2088684000, -2072955600, -2056629600, -2040901200, -2025180000, -2009451600, -1993730400, -1978002000, -1962280800, -1946552400, -1930831200, -1915102800, -1898776800, -1883653200, -1867327200, -1851598800, -1835877600, -1820149200, -1804428000, -1788699600, -1772978400, -1757250000, -1741528800, -1725800400, -1709474400, -1693746000, -1678024800, -1662296400, -1646575200, -1630846800, -1615125600, -1599397200, -1583676000, -1567947600, -1551621600, -1536498000, -1520172000, -1504443600, -1488722400, -1472994000, -1457272800, -1441544400, -1425823200, -1410094800, -1394373600, -1378645200, -1362319200, -1347195600, -1330869600, -1315141200, -1299420000, -1283691600, -1267970400, -1252242000, -1236520800, -1220792400, -1205071200, -1189342800, -1173016800, -1157288400, -1141567200, -1125838800, -1110117600, -1094389200, -1078668000, -1062939600, -1047218400, -1031490000, -1015164000, -1000040400, -983714400, -967986000, -952264800, -936536400, -920815200, -905086800, -889365600, -873637200, -857916000, -842187600, -825861600, -810133200, -794412000, -778683600, -762962400, -747234000, -731512800, -715784400, -700063200, -684334800, -668008800, -652885200, -636559200, -620830800, -605109600, -589381200, -573660000, -557931600, -542210400, -526482000, -510760800, -495032400, -478706400, -463582800, -447256800, -431528400, -415807200, -400078800, -384357600, -368629200, -352908000, -337179600, -321458400, -305730000, -289404000, -273675600, -257954400, -242226000, -226504800, -210776400, -195055200, -179326800, -163605600, -147877200, -131551200, -116427600, -100101600, -84373200, -68652000, -52923600, -37202400, -21474000, -5752800, 9975600, 25696800, 41425200, 57751200, 73479600, 89200800, 104929200, 120650400, 126702000, 154519200, 162385200, 183549600, 199278000, 215604000 }
     typeOffsets:intvector { -32400, 0, -32400, 3600 }
-    typeMap:bin { "01000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+    typeMap:bin { "010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
     finalRule { "SystemV" }
     finalRaw:int { -32400 }
     finalYear:int { 1977 }
diff --git a/icu4c/source/i18n/Android.bp b/icu4c/source/i18n/Android.bp
index 05ce061..58861ff 100644
--- a/icu4c/source/i18n/Android.bp
+++ b/icu4c/source/i18n/Android.bp
@@ -17,6 +17,7 @@
 //
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/samples/break/Android.bp b/icu4c/source/samples/break/Android.bp
index 378d59b..0376c52 100644
--- a/icu4c/source/samples/break/Android.bp
+++ b/icu4c/source/samples/break/Android.bp
@@ -25,6 +25,7 @@
 
 */
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/stubdata/Android.bp b/icu4c/source/stubdata/Android.bp
index 3e008e6..071c4f0 100644
--- a/icu4c/source/stubdata/Android.bp
+++ b/icu4c/source/stubdata/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/stubdata/icudt72l.dat b/icu4c/source/stubdata/icudt72l.dat
index d3305ed..ae431ca 100644
--- a/icu4c/source/stubdata/icudt72l.dat
+++ b/icu4c/source/stubdata/icudt72l.dat
Binary files differ
diff --git a/icu4c/source/test/Android.bp b/icu4c/source/test/Android.bp
index 4531fb8..7216c7d 100644
--- a/icu4c/source/test/Android.bp
+++ b/icu4c/source/test/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_icu4c_license"
@@ -32,12 +33,15 @@
     name: "icu_test_defaults",
     gtest: false,
     rtti: true,
+    cpp_std: "gnu++17",
     cflags: [
         "-Wno-deprecated-declarations",
         "-Wno-missing-field-initializers",
+        "-Wno-tautological-undefined-compare",
         "-Wno-unused-function",
         "-Wno-unused-parameter",
         "-Wno-unused-variable",
+        "-DUCONFIG_USE_ML_PHRASE_BREAKING=1",
     ],
     shared_libs: [
         "libicu_cts_stub",
diff --git a/icu4c/source/test/cintltst/Android.bp b/icu4c/source/test/cintltst/Android.bp
index e05c72d..042e1cd 100644
--- a/icu4c/source/test/cintltst/Android.bp
+++ b/icu4c/source/test/cintltst/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/test/fuzzer/Android.bp b/icu4c/source/test/fuzzer/Android.bp
index d361b9d..e8b051f 100644
--- a/icu4c/source/test/fuzzer/Android.bp
+++ b/icu4c/source/test/fuzzer/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     default_visibility: [
         "//external/icu:__subpackages__",
     ],
diff --git a/icu4c/source/test/intltest/Android.bp b/icu4c/source/test/intltest/Android.bp
index cef26ba..50db89f 100644
--- a/icu4c/source/test/intltest/Android.bp
+++ b/icu4c/source/test/intltest/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/test/intltest/tztest.cpp b/icu4c/source/test/intltest/tztest.cpp
index 08cafb4..c675006 100644
--- a/icu4c/source/test/intltest/tztest.cpp
+++ b/icu4c/source/test/intltest/tztest.cpp
@@ -68,11 +68,7 @@
     TESTCASE_AUTO(TestFractionalDST);
     TESTCASE_AUTO(TestFebruary);
     TESTCASE_AUTO(TestCanonicalIDAPI);
-    // Android-changed: Ignore this test on CTS branches.
-    // This test is written is such a way that it is heavily coupled with
-    // tzdata. Keeping it passing with system image tzdata and a newer one, which changes
-    // canonicality rules (i.e. 2023d), would probably mean re-writing this test.
-    // TESTCASE_AUTO(TestCanonicalID);
+    TESTCASE_AUTO(TestCanonicalID);
     TESTCASE_AUTO(TestDisplayNamesMeta);
     TESTCASE_AUTO(TestGetRegion);
     TESTCASE_AUTO(TestGetAvailableIDsNew);
diff --git a/icu4c/source/tools/ctestfw/Android.bp b/icu4c/source/tools/ctestfw/Android.bp
index 929491e..57e770c 100644
--- a/icu4c/source/tools/ctestfw/Android.bp
+++ b/icu4c/source/tools/ctestfw/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/tools/toolutil/Android.bp b/icu4c/source/tools/toolutil/Android.bp
index 765461f..b37cc63 100644
--- a/icu4c/source/tools/toolutil/Android.bp
+++ b/icu4c/source/tools/toolutil/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_icu4c_license"
diff --git a/icu4c/source/tools/tzcode/Makefile.in b/icu4c/source/tools/tzcode/Makefile.in
index 4ba969f..d100842 100644
--- a/icu4c/source/tools/tzcode/Makefile.in
+++ b/icu4c/source/tools/tzcode/Makefile.in
@@ -101,7 +101,7 @@
 	sed -e '/if (line ~ \/^R SystemV \/) return/s/^/#/' $(TZORIG)/zishrink.awk.orig > $(TZORIG)/zishrink.awk
 #	-mv $(TZORIG)/Makefile $(TZORIG)/Makefile.orig
 #	sed -e "s/^BACKWARD=.*/BACKWARD= backward pacificnew/" $(TZORIG)/Makefile.orig > $(TZORIG)/Makefile
-	$(MAKE) -C $@ $(TZORIG_OPTS) zdump zones
+	$(MAKE) -C $@ $(TZORIG_OPTS) tzdir.h zdump zones
 
 $(ZDUMPOUT): tzorig
 	( cd $(TZORIG) ; ./zdump$(EXEEXT) $(ZDUMP_OPTS) )
diff --git a/icu4c/source/tools/tzcode/icuzones b/icu4c/source/tools/tzcode/icuzones
index 52f5698..940b055 100644
--- a/icu4c/source/tools/tzcode/icuzones
+++ b/icu4c/source/tools/tzcode/icuzones
@@ -31,13 +31,24 @@
 Rule	SystemV	1976	max	-	Apr	lastSun	2:00	1:00	D
 Rule	SystemV	1976	max	-	Oct	lastSun	2:00	0	S
 
+# Note: 1901 Dec 13 20:45:52u is the minimum value of int32 seconds.
+# A zone with infinite "min" year rule cannot be supported by 64 bit TZif,
+# so adding explicit transition to zones with SystemV rule at the minimum
+# int32 seconds.
+
 # Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
-Zone	SystemV/AST4ADT	-4:00	SystemV		A%sT
-Zone	SystemV/EST5EDT	-5:00	SystemV		E%sT
-Zone	SystemV/CST6CDT	-6:00	SystemV		C%sT
-Zone	SystemV/MST7MDT	-7:00	SystemV		M%sT
-Zone	SystemV/PST8PDT	-8:00	SystemV		P%sT
-Zone	SystemV/YST9YDT	-9:00	SystemV		Y%sT
+Zone	SystemV/AST4ADT	-4:00	-		AST	1901 Dec 13 20:45:52u
+			-4:00	SystemV		A%sT
+Zone	SystemV/EST5EDT	-5:00	-		EST	1901 Dec 13 20:45:52u
+			-5:00	SystemV		E%sT
+Zone	SystemV/CST6CDT	-6:00	-		CST	1901 Dec 13 20:45:52u
+			-6:00	SystemV		C%sT
+Zone	SystemV/MST7MDT	-7:00	-		MST	1901 Dec 13 20:45:52u
+			-7:00	SystemV		M%sT
+Zone	SystemV/PST8PDT	-8:00	-		PST	1901 Dec 13 20:45:52u
+			-8:00	SystemV		P%sT
+Zone	SystemV/YST9YDT	-9:00	-		YST	1901 Dec 13 20:45:52u
+			-9:00	SystemV		Y%sT
 Zone	SystemV/AST4	-4:00	-		AST
 Zone	SystemV/EST5	-5:00	-		EST
 Zone	SystemV/CST6	-6:00	-		CST
diff --git a/icu4c/source/tools/tzcode/zdump.c b/icu4c/source/tools/tzcode/zdump.c
index ebd7a5c..b9cab22 100644
--- a/icu4c/source/tools/tzcode/zdump.c
+++ b/icu4c/source/tools/tzcode/zdump.c
@@ -32,6 +32,7 @@
 #define ICU
 
 #ifdef ICU
+#include "tzdir.h"
 #include "dirent.h"
 #include "sys/stat.h"
 #endif
diff --git a/icu4c/source/tools/tzcode/zic.c b/icu4c/source/tools/tzcode/zic.c
index 5457678..ed3e792 100644
--- a/icu4c/source/tools/tzcode/zic.c
+++ b/icu4c/source/tools/tzcode/zic.c
@@ -3,6 +3,9 @@
 ** 2006-07-17 by Arthur David Olson.
 */
 
+/* https://man7.org/linux/man-pages/man2/symlink.2.html */
+#define _POSIX_C_SOURCE 200112L
+
 /* Enable extensions and modifications for ICU. */
 #define ICU
 
diff --git a/icu4j/Android.bp b/icu4j/Android.bp
index daa1a6b..2479211 100644
--- a/icu4j/Android.bp
+++ b/icu4j/Android.bp
@@ -15,6 +15,7 @@
 //
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     default_visibility: ["//visibility:private"],
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
@@ -55,6 +56,7 @@
             "-Xep:IdentityBinaryExpression:WARN",
         ],
     },
+    sdk_version: "core_current",
 }
 
 java_library {
@@ -71,6 +73,14 @@
         "//system/timezone/input_tools/android/tzlookup_generator",
     ],
     defaults: ["icu4j-defaults"],
+    libs: [
+        // Need the following shared libraries for @FlaggedApi. These libraries are only needed
+        // compile-time, not runtime, and it shouldn't need to be statically linked.
+        // framework-api-annotations are not static libs to avoid exposing the definition of
+        // framework's annotations from ICU (wrong place) instead of framework (correct place).
+        "framework-annotations-lib",
+        "icu_aconfig_flags_lib",
+    ],
 
     srcs: ["main/classes/**/*.java"],
     java_resource_dirs: ["main/classes/*/src"],
@@ -95,6 +105,7 @@
 java_library_static {
     name: "icu4j_calendar_astronomer",
     host_supported: false,
+    sdk_version: "core_current",
     srcs: ["main/classes/core/src/com/ibm/icu/impl/CalendarAstronomer.java"],
     visibility: [
         "//frameworks/base/services/core",
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/ICUConfig.properties b/icu4j/main/classes/core/src/com/ibm/icu/ICUConfig.properties
index 7c66c50..e64b2f3 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/ICUConfig.properties
+++ b/icu4j/main/classes/core/src/com/ibm/icu/ICUConfig.properties
@@ -69,4 +69,4 @@
 # Enable ML phrase breaking
 # Android patch, http://b/219529457, for ML-based phrase line breaking
 # @internal
-com.ibm.icu.impl.breakiter.useMLPhraseBreaking = false
+com.ibm.icu.impl.breakiter.useMLPhraseBreaking = true
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUService.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUService.java
index 2b6981d..4b6d929 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUService.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUService.java
@@ -592,13 +592,15 @@
                         Factory f = lIter.previous();
                         f.updateVisibleIDs(mutableMap);
                     }
-                    this.idcache = Collections.unmodifiableMap(mutableMap);
+                    Map<String, Factory> result = Collections.unmodifiableMap(mutableMap);
+                    this.idcache = result;
+                    return result;
                 } finally {
                     factoryLock.releaseRead();
                 }
             }
+            return idcache;
         }
-        return idcache;
     }
     private Map<String, Factory> idcache;
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacter.java b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacter.java
index 575eaeb..fbf544b 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/lang/UCharacter.java
@@ -1309,6 +1309,11 @@
         /** @stable ICU 72 */
         public static final int NAG_MUNDARI_ID = 327; /*[1E4D0]*/
 
+        // New block in Unicode 15.1
+
+        /** @stable ICU 74 */
+        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_ID = 328; /*[2EBF0]*/
+
         /**
          * One more than the highest normal UnicodeBlock value.
          * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.BLOCK).
@@ -2747,6 +2752,13 @@
         public static final UnicodeBlock NAG_MUNDARI =
                 new UnicodeBlock("NAG_MUNDARI", NAG_MUNDARI_ID); /*[1E4D0]*/
 
+        // New block in Unicode 15.1
+
+        /** @stable ICU 74 */
+        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I =
+                new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I",
+                        CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_ID); /*[2EBF0]*/
+
         /**
          * @stable ICU 2.4
          */
@@ -2874,7 +2886,9 @@
         {
             super(name);
             m_id_ = id;
-            if (id >= 0) {
+            // Android-changed: Avoid leaking flagged UnicodeBlock until ICU 74 data is integrated.
+            // if (id >= 0) {
+            if (id >= 0 && id < BLOCKS_.length) {
                 BLOCKS_[id] = this;
             }
         }
@@ -3807,6 +3821,16 @@
         public static final int E_MODIFIER = 41;  /*[EM]*/
         /** @stable ICU 58 */
         public static final int ZWJ = 42;  /*[ZWJ]*/
+        /** @stable ICU 74 */
+        public static final int AKSARA = 43;  /*[AK]*/ /* from here on: new in Unicode 15.1/ICU 74 */
+        /** @stable ICU 74 */
+        public static final int AKSARA_PREBASE = 44;  /*[AP]*/
+        /** @stable ICU 74 */
+        public static final int AKSARA_START = 45;  /*[AS]*/
+        /** @stable ICU 74 */
+        public static final int VIRAMA_FINAL = 46;  /*[VF]*/
+        /** @stable ICU 74 */
+        public static final int VIRAMA = 47;  /*[VI]*/
         /**
          * One more than the highest normal LineBreak value.
          * The highest value is available via UCharacter.getIntPropertyMaxValue(UProperty.LINE_BREAK).
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java b/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java
index 4c80c30..cf8b7c8 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java
@@ -142,7 +142,7 @@
      * supported yet.
      *
      * @return NounClass
-     * @draft ICU 71.
+     * @stable ICU 71.
      */
     public DisplayOptions.NounClass getNounClass() {
         return DisplayOptions.NounClass.fromIdentifier(this.gender);
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterSettings.java b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterSettings.java
index 1cdf5e6..cf89463 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterSettings.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatterSettings.java
@@ -559,7 +559,7 @@
      * the desired case for a unit formatter's output (e.g. accusative, dative, genitive).
      *
      * @return The fluent chain.
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public T displayOptions(DisplayOptions displayOptions) {
         // `displayCase` does not recognise the `undefined`
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
index 9b50307..6a361bc 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
@@ -1105,7 +1105,7 @@
      *              be thrown if out of range.
      * @param dateTimeFormat
      *              the new dateTimeFormat to set for the specified style
-     * @draft ICU 71
+     * @stable ICU 71
      */
     public void setDateTimeFormat(int style, String dateTimeFormat) {
         if (style < DateFormat.FULL || style > DateFormat.SHORT) {
@@ -1123,7 +1123,7 @@
      *              be thrown if out of range.
      * @return
      *              the current dateTimeFormat for the specified style.
-     * @draft ICU 71
+     * @stable ICU 71
      */
     public String getDateTimeFormat(int style) {
         if (style < DateFormat.FULL || style > DateFormat.SHORT) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayOptions.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayOptions.java
index ebf0fa7..ef9e7e1 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayOptions.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DisplayOptions.java
@@ -21,7 +21,7 @@
  *                             .build();
  *                             }
  *
- * @draft ICU 72
+ * @stable ICU 72
  */
 public final class DisplayOptions {
     private final GrammaticalCase grammaticalCase;
@@ -46,7 +46,7 @@
      * Creates a builder with the {@code UNDEFINED} value for all the parameters.
      *
      * @return Builder
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public static Builder builder() {
         return new Builder();
@@ -56,7 +56,7 @@
      * Creates a builder with the same parameters from this object.
      *
      * @return Builder
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public Builder copyToBuilder() {
         return new Builder(this);
@@ -66,7 +66,7 @@
      * Gets the grammatical case.
      *
      * @return GrammaticalCase
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public GrammaticalCase getGrammaticalCase() {
         return this.grammaticalCase;
@@ -76,7 +76,7 @@
      * Gets the noun class.
      *
      * @return NounClass
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public NounClass getNounClass() {
         return this.nounClass;
@@ -86,7 +86,7 @@
      * Gets the plural category.
      *
      * @return PluralCategory
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public PluralCategory getPluralCategory() {
         return this.pluralCategory;
@@ -96,7 +96,7 @@
      * Gets the capitalization.
      *
      * @return Capitalization
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public Capitalization getCapitalization() {
         return this.capitalization;
@@ -106,7 +106,7 @@
      * Gets the name style.
      *
      * @return NameStyle
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public NameStyle getNameStyle() {
         return this.nameStyle;
@@ -116,7 +116,7 @@
      * Gets the display length.
      *
      * @return DisplayLength
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public DisplayLength getDisplayLength() {
         return this.displayLength;
@@ -126,7 +126,7 @@
      * Gets the substitute handling.
      *
      * @return SubstituteHandling
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public SubstituteHandling getSubstituteHandling() {
         return this.substituteHandling;
@@ -135,7 +135,7 @@
     /**
      * Responsible for building {@code DisplayOptions}.
      *
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public static class Builder {
         private GrammaticalCase grammaticalCase;
@@ -149,7 +149,7 @@
         /**
          * Creates a {@code DisplayOptions.Builder} with the default values.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         private Builder() {
             this.grammaticalCase = GrammaticalCase.UNDEFINED;
@@ -165,7 +165,7 @@
          * Creates a {@code Builder} with all the information from a {@code DisplayOptions}.
          *
          * @param displayOptions Options to be copied.
-         * @draft ICU 72
+         * @stable ICU 72
          */
         private Builder(DisplayOptions displayOptions) {
             this.grammaticalCase = displayOptions.grammaticalCase;
@@ -182,7 +182,7 @@
          *
          * @param grammaticalCase The grammatical case.
          * @return Builder
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public Builder setGrammaticalCase(GrammaticalCase grammaticalCase) {
             this.grammaticalCase = grammaticalCase;
@@ -194,7 +194,7 @@
          *
          * @param nounClass The noun class.
          * @return Builder
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public Builder setNounClass(NounClass nounClass) {
             this.nounClass = nounClass;
@@ -206,7 +206,7 @@
          *
          * @param pluralCategory The plural category.
          * @return Builder
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public Builder setPluralCategory(PluralCategory pluralCategory) {
             this.pluralCategory = pluralCategory;
@@ -218,7 +218,7 @@
          *
          * @param capitalization The capitalization.
          * @return Builder
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public Builder setCapitalization(Capitalization capitalization) {
             this.capitalization = capitalization;
@@ -230,7 +230,7 @@
          *
          * @param nameStyle The name style.
          * @return Builder
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public Builder setNameStyle(NameStyle nameStyle) {
             this.nameStyle = nameStyle;
@@ -242,7 +242,7 @@
          *
          * @param displayLength The display length.
          * @return Builder
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public Builder setDisplayLength(DisplayLength displayLength) {
             this.displayLength = displayLength;
@@ -254,7 +254,7 @@
          *
          * @param substituteHandling The substitute handling.
          * @return Builder
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public Builder setSubstituteHandling(SubstituteHandling substituteHandling) {
             this.substituteHandling = substituteHandling;
@@ -265,7 +265,7 @@
          * Builds the display options.
          *
          * @return DisplayOptions
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public DisplayOptions build() {
             DisplayOptions displayOptions = new DisplayOptions(this);
@@ -276,46 +276,46 @@
     /**
      * Represents all the grammatical noun classes that are supported by CLDR.
      *
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public enum NounClass {
         /**
          * A possible setting for NounClass. The noun class context to be used is unknown (this is the
          * default value).
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         UNDEFINED("undefined"),
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         OTHER("other"),
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         NEUTER("neuter"),
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         FEMININE("feminine"),
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         MASCULINE("masculine"),
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         ANIMATE("animate"),
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         INANIMATE("inanimate"),
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         PERSONAL("personal"),
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         COMMON("common");
 
@@ -328,14 +328,14 @@
         /**
          * Unmodifiable List of all noun classes constants. List version of {@link #values()}.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public static final List<NounClass> VALUES =
                 Collections.unmodifiableList(Arrays.asList(NounClass.values()));
 
         /**
          * @return the lowercase CLDR keyword string for the noun class.
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public final String getIdentifier() {
             return this.identifier;
@@ -344,7 +344,7 @@
         /**
          * @param identifier in lower case such as "feminine" or "masculine"
          * @return the plural category corresponding to the identifier, or {@code UNDEFINED}
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public static final NounClass fromIdentifier(String identifier) {
             if (identifier == null) {
@@ -364,35 +364,35 @@
     /**
      * Represents all the name styles.
      *
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public enum NameStyle {
         /**
          * A possible setting for NameStyle. The NameStyle context to be used is unknown (this is the
          * default value).
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         UNDEFINED,
         /**
          * Use standard names when generating a locale name, e.g. en_GB displays as 'English (United
          * Kingdom)'.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         STANDARD_NAMES,
 
         /**
          * Use dialect names, when generating a locale name, e.g. en_GB displays as 'British English'.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         DIALECT_NAMES;
 
         /**
          * Unmodifiable List of all name styles constants. List version of {@link #values()}.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public static final List<NameStyle> VALUES =
                 Collections.unmodifiableList(Arrays.asList(NameStyle.values()));
@@ -401,35 +401,35 @@
     /**
      * Represents all the substitute handlings.
      *
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public enum SubstituteHandling {
         /**
          * A possible setting for SubstituteHandling. The SubstituteHandling context to be used is
          * unknown (this is the default value).
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         UNDEFINED,
         /**
          * Returns a fallback value (e.g., the input code) when no data is available. This is the
          * default behaviour.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         SUBSTITUTE,
 
         /**
          * Returns a null value when no data is available.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         NO_SUBSTITUTE;
 
         /**
          * Unmodifiable List of all substitute handlings constants. List version of {@link #values()}.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public static final List<SubstituteHandling> VALUES =
                 Collections.unmodifiableList(Arrays.asList(SubstituteHandling.values()));
@@ -438,34 +438,34 @@
     /**
      * Represents all the display lengths.
      *
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public enum DisplayLength {
         /**
          * A possible setting for DisplayLength. The DisplayLength context to be used is unknown (this
          * is the default value).
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         UNDEFINED,
         /**
          * Uses full names when generating a locale name, e.g. "United States" for US.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         LENGTH_FULL,
 
         /**
          * Use short names when generating a locale name, e.g. "U.S." for US.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         LENGTH_SHORT;
 
         /**
          * Unmodifiable List of all display lengths constants. List version of {@link #values()}.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public static final List<DisplayLength> VALUES =
                 Collections.unmodifiableList(Arrays.asList(DisplayLength.values()));
@@ -474,14 +474,14 @@
     /**
      * Represents all the capitalization options.
      *
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public enum Capitalization {
         /**
          * A possible setting for Capitalization. The capitalization context to be used is unknown (this
          * is the default value).
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         UNDEFINED,
 
@@ -489,7 +489,7 @@
          * The capitalization context if a date, date symbol or display name is to be formatted with
          * capitalization appropriate for the beginning of a sentence.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         BEGINNING_OF_SENTENCE,
 
@@ -497,7 +497,7 @@
          * The capitalization context if a date, date symbol or display name is to be formatted with
          * capitalization appropriate for the middle of a sentence.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         MIDDLE_OF_SENTENCE,
 
@@ -506,7 +506,7 @@
          * capitalization appropriate for stand-alone usage such as an isolated name on a calendar
          * page.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         STANDALONE,
 
@@ -514,14 +514,14 @@
          * The capitalization context if a date, date symbol or display name is to be formatted with
          * capitalization appropriate for a user-interface list or menu item.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         UI_LIST_OR_MENU;
 
         /**
          * Unmodifiable List of all the capitalizations constants. List version of {@link #values()}.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public static final List<Capitalization> VALUES =
                 Collections.unmodifiableList(Arrays.asList(Capitalization.values()));
@@ -530,44 +530,44 @@
     /**
      * Standard CLDR plural category constants. See http://www.unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules
      *
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public enum PluralCategory {
         /**
          * A possible setting for PluralCategory. The plural category context to be used is unknown
          * (this is the default value).
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         UNDEFINED("undefined"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         ZERO("zero"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         ONE("one"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         TWO("two"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         FEW("few"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         MANY("many"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         OTHER("other");
 
@@ -580,14 +580,14 @@
         /**
          * Unmodifiable List of all plural categories constants. List version of {@link #values()}.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public static final List<PluralCategory> VALUES =
                 Collections.unmodifiableList(Arrays.asList(PluralCategory.values()));
 
         /**
          * @return the lowercase CLDR keyword string for the plural category
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public final String getIdentifier() {
             return this.identifier;
@@ -596,7 +596,7 @@
         /**
          * @param identifier in lower case such as "few" or "other"
          * @return the plural category corresponding to the identifier, or {@code UNDEFINED}
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public static final PluralCategory fromIdentifier(String identifier) {
             if (identifier == null) {
@@ -616,84 +616,84 @@
     /**
      * Represents all the grammatical cases that are supported by CLDR.
      *
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public enum GrammaticalCase {
         /**
          * A possible setting for GrammaticalCase. The grammatical case context to be used is unknown
          * (this is the default value).
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         UNDEFINED("undefined"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         ABLATIVE("ablative"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         ACCUSATIVE("accusative"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         COMITATIVE("comitative"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         DATIVE("dative"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         ERGATIVE("ergative"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         GENITIVE("genitive"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         INSTRUMENTAL("instrumental"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         LOCATIVE("locative"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         LOCATIVE_COPULATIVE("locative_copulative"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         NOMINATIVE("nominative"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         OBLIQUE("oblique"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         PREPOSITIONAL("prepositional"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         SOCIATIVE("sociative"),
 
         /**
-         * @draft ICU 72
+         * @stable ICU 72
          */
         VOCATIVE("vocative");
 
@@ -706,14 +706,14 @@
         /**
          * Unmodifiable List of all grammatical cases constants. List version of {@link #values()}.
          *
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public static final List<GrammaticalCase> VALUES =
                 Collections.unmodifiableList(Arrays.asList(GrammaticalCase.values()));
 
         /**
          * @return the lowercase CLDR keyword string for the grammatical case.
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public final String getIdentifier() {
             return this.identifier;
@@ -722,7 +722,7 @@
         /**
          * @param identifier in lower case such as "dative" or "nominative"
          * @return the plural category corresponding to the identifier, or {@code UNDEFINED}
-         * @draft ICU 72
+         * @stable ICU 72
          */
         public static final GrammaticalCase fromIdentifier(String identifier) {
             if (identifier == null) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormat.java
index b9ba1d9..c5aaf51 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/NumberFormat.java
@@ -1971,7 +1971,7 @@
 
         /**
          * Approximately sign. In ICU 70, this was categorized under the generic SIGN field.
-         * @draft ICU 71
+         * @stable ICU 71
          */
         public static final Field APPROXIMATELY_SIGN = new Field("approximately sign");
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java b/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java
index 3ee12c4..9d021c4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java
@@ -1211,7 +1211,7 @@
 
     /**
      * Constant for unit of duration: quarter
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public static final MeasureUnit QUARTER = MeasureUnit.internalGetInstance("duration", "quarter");
 
@@ -1663,7 +1663,7 @@
 
     /**
      * Constant for unit of mass: tonne
-     * @draft ICU 72
+     * @stable ICU 72
      */
     public static final MeasureUnit TONNE = MeasureUnit.internalGetInstance("mass", "tonne");
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java b/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
index 3439098..b01d983 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
@@ -212,6 +212,12 @@
     public static final VersionInfo UNICODE_15_0;
 
     /**
+     * Unicode 15.1 version
+     * @stable ICU 74
+     */
+    public static final VersionInfo UNICODE_15_1;
+
+    /**
      * ICU4J current release version
      * @stable ICU 2.8
      */
@@ -566,6 +572,7 @@
         UNICODE_13_0   = getInstance(13, 0, 0, 0);
         UNICODE_14_0   = getInstance(14, 0, 0, 0);
         UNICODE_15_0   = getInstance(15, 0, 0, 0);
+        UNICODE_15_1   = getInstance(15, 1, 0, 0);
 
         ICU_VERSION   = getInstance(72, 1, 0, 0);
         ICU_DATA_VERSION = ICU_VERSION;
diff --git a/icu4j/main/shared/data/icudata.jar b/icu4j/main/shared/data/icudata.jar
index 2bcae34..3f5625f 100644
--- a/icu4j/main/shared/data/icudata.jar
+++ b/icu4j/main/shared/data/icudata.jar
Binary files differ
diff --git a/icu4j/main/shared/data/icutzdata.jar b/icu4j/main/shared/data/icutzdata.jar
index 6670a03..9232344 100644
--- a/icu4j/main/shared/data/icutzdata.jar
+++ b/icu4j/main/shared/data/icutzdata.jar
Binary files differ
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
index ba8e5d3..1d2a48a 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
@@ -1478,11 +1478,6 @@
     }
 
     @Test
-    // Android-added: Ignore this test on CTS branches.
-    // This test is written is such a way that it is heavily coupled with
-    // tzdata. Keeping it passing with system image tzdata and a newer one, which changes
-    // canonicality rules (i.e. 2023d), would probably mean re-writing this test.
-    @org.junit.Ignore
     public void TestCanonicalID() {
         // Olson (IANA) tzdata used to have very few "Link"s long time ago.
         // This test case was written when most of CLDR canonical time zones are
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TestLocaleValidity.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TestLocaleValidity.java
index 5d7c4978..60da0a9 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TestLocaleValidity.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/TestLocaleValidity.java
@@ -90,8 +90,7 @@
                 {"OK", "en-u-ss-none"},
                 {"OK", "en-t-t0-und"},
                 {"OK", "en-t-x0-12345678"},
-                // Android-removed: ignore en-u-tz-camtr. Behaviour is different after 2023d.
-                // {"OK", "en-u-tz-camtr"}, // CLDR 43 no longer deprecated, see CLDR-16489
+                {"OK", "en-u-tz-camtr"}, // CLDR 43 no longer deprecated, see CLDR-16489
 
                 // tests from LDML spec section on Hybrid Locale Identifiers
                 {"OK", "hi-t-en-h0-hybrid"},
@@ -181,7 +180,6 @@
                 //{"{u, ca-civil}", "en-u-ca-islamicc"}, // deprecated, but turns into valid
                 {"{u, co-direct}", "en-u-co-direct"}, // deprecated
                 {"{u, kh}", "en-u-kh-false"}, // deprecated
-                // Android-removed: Ignore en-u-tz-camtr. Behaviour is different after 2023d.
                 // {"{u, tz-camtr}", "en-u-tz-camtr"}, // CLDR 43 no longer deprecated, see CLDR-16489
                 {"{u, vt}", "en-u-vt-0020-0041"}, // deprecated
         };
diff --git a/icu_version_upgrade.md b/icu_version_upgrade.md
index 027e761..8ef4e7e 100644
--- a/icu_version_upgrade.md
+++ b/icu_version_upgrade.md
@@ -12,8 +12,8 @@
 2. Generate a github read-access token and setup a local ~/.m2/setting.xml
    * See http://cldr.unicode.org/development/maven. This is required to download
      the prebuilt ICU to break the circular dependency between CLDR and icu.
-3. Check out aosp/master
-   * http://go/repo-init/aosp-master-with-phones
+3. Check out aosp/main
+   * http://go/repo-init/aosp-main-with-phones
 
 # Steps
 1. Create a new branch in AOSP
@@ -21,11 +21,11 @@
    * See detailed instruction at http://g3doc/company/teams/android-build-team/playbook/create_branch#creating-new-git-branches.
    * **Choose a branch name**
      * Create aosp/icu{version} branch, e.g. `aosp/icu67` in the `external/icu` project
-       forked from `aosp/master`
+       forked from `aosp/main`
      * For the external/cldr project, we don't need a new branch.
        We use the **`aosp/upstream-release-cldr** as the mirror of the upstream release branch.
        We don’t modify this branch with Android patches, but merge this branch
-       into aosp/master where the Android patches are located.
+       into aosp/main where the Android patches are located.
 2. Configure the versions and temp directory
 
    2a. Customize the following environment variables.
@@ -75,13 +75,13 @@
     repo upload --cbr .
     ```
 
-   3b. Merge the upstream sources with patches in `aosp/master`
+   3b. Merge the upstream sources with patches in `aosp/main`
     ```shell
-    export CLDR_BRANCH=cldr${CLDR_VERSION}-master
-    git branch ${CLDR_BRANCH} --track aosp/master
+    export CLDR_BRANCH=cldr${CLDR_VERSION}-main
+    git branch ${CLDR_BRANCH} --track aosp/main
     git checkout ${CLDR_BRANCH}
     git merge ${CLDR_UPSTREAM_BRANCH} -m "
-    Merge CLDR ${CLDR_VERSION} in upstream-release-cldr into aosp/master
+    Merge CLDR ${CLDR_VERSION} in upstream-release-cldr into aosp/main
 
     Bug: ${ICU_UPGRADE_BUG}
     Test: external/icu/tools/updatecldrdata.py
@@ -94,7 +94,7 @@
     git merge --continue
     ```
 
-   3d. Upload the CL to master branch
+   3d. Upload the CL to main branch
     ```shell
     repo upload --cbr .
     ```
@@ -146,7 +146,7 @@
         ```
    5b. Cherry-pick the patches since the ICU upgrade
       * Find the patches with this query.
-           https://r.android.com/q/%2522Android+patch%2522+project:platform/external/icu+status:merged+-owner:automerger+-owner:android-build-coastguard-worker%2540google.com+branch:master
+           https://r.android.com/q/%2522Android+patch%2522+project:platform/external/icu+status:merged+-owner:automerger+-owner:android-build-coastguard-worker%2540google.com+branch:main
 
 6. Regenerate and commit the artifacts
 
@@ -264,7 +264,7 @@
       ```
 
    6g. [Not required for every ICU release] Increment Distro major version
-      * See https://android.googlesource.com/platform/system/timezone/+/master/README.android
+      * See https://android.googlesource.com/platform/system/timezone/+/main/README.android
         for details. Usually, it’s needed only when it’s the first ICU upgrade
         in the Android dessert release.
 
@@ -330,16 +330,20 @@
       * ICU4J host-side test `ant check`
       * ICU4C host-side test `make CINTLTST_OPTS=-w INTLTEST_OPTS=-w check`
          (Currently, it has some failing tests. No of failures?)
+
+   7d. If libcore/ tests are changed, verify the change
+      * To verify the test change in ART MTS, run `m mts && mts-tradefed run mts-art` on Android S.
+      * To verify the test change on LUCI bot, run `art/tools/run-libcore-tests.sh --mode=host`, because LUCI uses older ICU versions.
 8. Upload the CLs to gerrit for code reviews from `aosp/icu${ICU_VERSION}` in `external/icu` and `aosp/upstream-release-cldr` in `external/cldr`
 ```shell
 repo upload --cbr -o uploadvalidator~skip --no-verify .
 ```
-9. Merge `aosp/icu*` branch to aosp/master
+9. Merge `aosp/icu*` branch to aosp/main
 ```shell
 cd $ANDROID_BUILD_TOP/external/icu
-repo start icu${ICU_VERSION}-master .
+repo start icu${ICU_VERSION}-main .
 git merge --no-ff icu${ICU_VERSION} -m "
-Merge branch aosp/icu${ICU_VERSION} into aosp/master
+Merge branch aosp/icu${ICU_VERSION} into aosp/main
 
 Bug: ${ICU_UPGRADE_BUG}
 Test: atest CtsIcu4cTestCases CtsIcuTestCases CtsLibcoreTestCases CtsLibcoreOjTestCases CtsBionicTestCases CtsTextTestCases minikin_tests
@@ -354,7 +358,7 @@
           app compatibility issues if the app depends on them. However, app
          has been warned to check the availability before invoking them.
           https://developer.android.com/reference/android/icu/text/Transliterator#getAvailableIDs()
-11. After submitting all the CLs to aosp/master, expose the new stable ICU4J APIs to Android SDK
+11. After submitting all the CLs to aosp/main, expose the new stable ICU4J APIs to Android SDK
 ```shell
 rm tools/srcgen/allowlisted-public-api.txt
 ./tools/generate_android_icu4j.sh
@@ -378,7 +382,7 @@
    Hi, Libcore and ICU team,
 
    ICU <version> just landed Android AOSP.
-   https://android.googlesource.com/platform/external/icu/+/master/README.version
+   https://android.googlesource.com/platform/external/icu/+/main/README.version
    as well as Android S (or Android 12).
    https://googleplex-android.googlesource.com/platform/external/icu/+/sc-dev/README.version
 
diff --git a/libandroidicu/Android.bp b/libandroidicu/Android.bp
index 911848b..3224931 100644
--- a/libandroidicu/Android.bp
+++ b/libandroidicu/Android.bp
@@ -20,6 +20,7 @@
 // With the exception of a few special cases like host apex build targets,
 // host binaries should use libicuuc + libicui18n directly.
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_license"
diff --git a/libandroidicu/static_shim/Android.bp b/libandroidicu/static_shim/Android.bp
index 7e4820d..a027b0e 100644
--- a/libandroidicu/static_shim/Android.bp
+++ b/libandroidicu/static_shim/Android.bp
@@ -12,6 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 package {
+    default_team: "trendy_team_java_core_libraries",
     default_visibility: ["//external/icu:__subpackages__"],
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
diff --git a/libandroidicuinit/Android.bp b/libandroidicuinit/Android.bp
index dbd6898..4730b73 100644
--- a/libandroidicuinit/Android.bp
+++ b/libandroidicuinit/Android.bp
@@ -14,6 +14,7 @@
 
 // A library of shared initialization code for use by libicuuc.so only.
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_license"
diff --git a/libandroidicuinit/IcuRegistration.cpp b/libandroidicuinit/IcuRegistration.cpp
index ed076a4..63397fd 100644
--- a/libandroidicuinit/IcuRegistration.cpp
+++ b/libandroidicuinit/IcuRegistration.cpp
@@ -24,6 +24,7 @@
 #include <string.h>
 #include <unistd.h>
 
+#include <unicode/putil.h>
 #include <unicode/udata.h>
 #include <unicode/utypes.h>
 
@@ -211,24 +212,28 @@
 
 // Init ICU, configuring it and loading the data files.
 IcuRegistration::IcuRegistration() {
-  // Note: This logic below should match the logic for ICU4J in
-  // TimeZoneDataFiles.java in external/icu/ to ensure consistent behavior between
-  // ICU4C and ICU4J.
-
   // Check the timezone override file exists from a mounted APEX file.
   // If it does, map it so we use its data in preference to later ones.
+  // However, I18N apex is not expected to have the time zone data resources.
+  // http://b/171542040
   std::string tzModulePath = getTimeZoneModulePath();
-  if (pathExists(tzModulePath)) {
-    AICU_LOGD("Time zone APEX ICU file found: %s", tzModulePath.c_str());
-    icu_datamap_from_tz_module_ = impl::IcuDataMap::Create(tzModulePath);
+  std::string tzIcuDataPath = tzModulePath + "icu_tzdata.dat";
+  if (pathExists(tzIcuDataPath)) {
+    AICU_LOGD("Time zone APEX ICU file found: %s", tzIcuDataPath.c_str());
+    icu_datamap_from_tz_module_ = impl::IcuDataMap::Create(tzIcuDataPath);
     if (icu_datamap_from_tz_module_ == nullptr) {
-      AICU_LOGW(
-          "TZ module override file %s exists but could not be loaded. "
-          "Skipping.",
-          tzModulePath.c_str());
+      AICU_LOGW("TZ module .dat file %s exists but could not be loaded. Skipping.",
+          tzIcuDataPath.c_str());
     }
   } else {
-    AICU_LOGV("No time zone module override file found: %s", tzModulePath.c_str());
+    UErrorCode status = U_ZERO_ERROR;
+    u_setTimeZoneFilesDirectory(tzModulePath.c_str(), &status);
+    if (U_SUCCESS(status)) {
+      AICU_LOGD("u_setTimeZoneFilesDirectory(\"%s\") succeeded. ", tzModulePath.c_str());
+    } else {
+      AICU_LOGE("u_setTimeZoneFilesDirectory(\"%s\") failed: %s",
+          tzModulePath.c_str(), u_errorName(status));
+    }
   }
 
   // Use the ICU data files that shipped with the i18n module for everything
@@ -254,8 +259,8 @@
   return stat(path.c_str(), &sb) == 0;
 }
 
-// Returns a string containing the expected path of the (optional) /apex tz
-// module data file
+// Returns a string containing the expected path of the /apex tz
+// module ICU data directory
 std::string IcuRegistration::getTimeZoneModulePath() {
   const char* tzdataModulePathPrefix = getenv("ANDROID_TZDATA_ROOT");
   if (tzdataModulePathPrefix == NULL) {
@@ -265,7 +270,7 @@
 
   std::string tzdataModulePath;
   tzdataModulePath = tzdataModulePathPrefix;
-  tzdataModulePath += "/etc/icu/icu_tzdata.dat";
+  tzdataModulePath += "/etc/icu/";
   return tzdataModulePath;
 }
 
diff --git a/libicu/Android.bp b/libicu/Android.bp
index d9cb658..fb291fe 100644
--- a/libicu/Android.bp
+++ b/libicu/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_license"
diff --git a/libicu/src/Android.bp b/libicu/src/Android.bp
index 92a06d9..5f983dc 100644
--- a/libicu/src/Android.bp
+++ b/libicu/src/Android.bp
@@ -12,6 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 package {
+    default_team: "trendy_team_java_core_libraries",
     default_visibility: ["//external/icu:__subpackages__"],
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
diff --git a/libicu/test/Android.bp b/libicu/test/Android.bp
index f4e7f31..f078d5e 100644
--- a/libicu/test/Android.bp
+++ b/libicu/test/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     default_visibility: [
         "//external/icu:__subpackages__",
         "//cts/tests/tests/icu:__subpackages__",
diff --git a/tools/srcgen/Android.bp b/tools/srcgen/Android.bp
index f37cc68..6cb389e 100644
--- a/tools/srcgen/Android.bp
+++ b/tools/srcgen/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     default_visibility: ["//visibility:private"],
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
diff --git a/tools/srcgen/currysrc/Android.bp b/tools/srcgen/currysrc/Android.bp
index 934a41d..014a4ae 100644
--- a/tools/srcgen/currysrc/Android.bp
+++ b/tools/srcgen/currysrc/Android.bp
@@ -13,6 +13,7 @@
 // limitations under the License.
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     default_visibility: ["//visibility:private"],
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
diff --git a/tools/srcgen/flagged-api-list.txt b/tools/srcgen/flagged-api-list.txt
new file mode 100644
index 0000000..abb3a09
--- /dev/null
+++ b/tools/srcgen/flagged-api-list.txt
@@ -0,0 +1,99 @@
+method:android.icu.number.FormattedNumber#getNounClass()
+method:android.icu.number.NumberFormatterSettings#displayOptions(DisplayOptions)
+method:android.icu.text.DateTimePatternGenerator#setDateTimeFormat(int,String)
+method:android.icu.text.DateTimePatternGenerator#getDateTimeFormat(int)
+type:android.icu.text.DisplayOptions
+method:android.icu.text.DisplayOptions#builder()
+method:android.icu.text.DisplayOptions#copyToBuilder()
+method:android.icu.text.DisplayOptions#getGrammaticalCase()
+method:android.icu.text.DisplayOptions#getNounClass()
+method:android.icu.text.DisplayOptions#getPluralCategory()
+method:android.icu.text.DisplayOptions#getCapitalization()
+method:android.icu.text.DisplayOptions#getNameStyle()
+method:android.icu.text.DisplayOptions#getDisplayLength()
+method:android.icu.text.DisplayOptions#getSubstituteHandling()
+type:android.icu.text.DisplayOptions$Builder
+method:android.icu.text.DisplayOptions$Builder#setGrammaticalCase(GrammaticalCase)
+method:android.icu.text.DisplayOptions$Builder#setNounClass(NounClass)
+method:android.icu.text.DisplayOptions$Builder#setPluralCategory(PluralCategory)
+method:android.icu.text.DisplayOptions$Builder#setCapitalization(Capitalization)
+method:android.icu.text.DisplayOptions$Builder#setNameStyle(NameStyle)
+method:android.icu.text.DisplayOptions$Builder#setDisplayLength(DisplayLength)
+method:android.icu.text.DisplayOptions$Builder#setSubstituteHandling(SubstituteHandling)
+method:android.icu.text.DisplayOptions$Builder#build()
+type:android.icu.text.DisplayOptions$NounClass
+enumConstant:android.icu.text.DisplayOptions$NounClass#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$NounClass#OTHER
+enumConstant:android.icu.text.DisplayOptions$NounClass#NEUTER
+enumConstant:android.icu.text.DisplayOptions$NounClass#FEMININE
+enumConstant:android.icu.text.DisplayOptions$NounClass#MASCULINE
+enumConstant:android.icu.text.DisplayOptions$NounClass#ANIMATE
+enumConstant:android.icu.text.DisplayOptions$NounClass#INANIMATE
+enumConstant:android.icu.text.DisplayOptions$NounClass#PERSONAL
+enumConstant:android.icu.text.DisplayOptions$NounClass#COMMON
+field:android.icu.text.DisplayOptions$NounClass#VALUES
+method:android.icu.text.DisplayOptions$NounClass#getIdentifier()
+method:android.icu.text.DisplayOptions$NounClass#fromIdentifier(String)
+type:android.icu.text.DisplayOptions$NameStyle
+enumConstant:android.icu.text.DisplayOptions$NameStyle#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$NameStyle#STANDARD_NAMES
+enumConstant:android.icu.text.DisplayOptions$NameStyle#DIALECT_NAMES
+field:android.icu.text.DisplayOptions$NameStyle#VALUES
+type:android.icu.text.DisplayOptions$SubstituteHandling
+enumConstant:android.icu.text.DisplayOptions$SubstituteHandling#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$SubstituteHandling#SUBSTITUTE
+enumConstant:android.icu.text.DisplayOptions$SubstituteHandling#NO_SUBSTITUTE
+field:android.icu.text.DisplayOptions$SubstituteHandling#VALUES
+type:android.icu.text.DisplayOptions$DisplayLength
+enumConstant:android.icu.text.DisplayOptions$DisplayLength#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$DisplayLength#LENGTH_FULL
+enumConstant:android.icu.text.DisplayOptions$DisplayLength#LENGTH_SHORT
+field:android.icu.text.DisplayOptions$DisplayLength#VALUES
+type:android.icu.text.DisplayOptions$Capitalization
+enumConstant:android.icu.text.DisplayOptions$Capitalization#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$Capitalization#BEGINNING_OF_SENTENCE
+enumConstant:android.icu.text.DisplayOptions$Capitalization#MIDDLE_OF_SENTENCE
+enumConstant:android.icu.text.DisplayOptions$Capitalization#STANDALONE
+enumConstant:android.icu.text.DisplayOptions$Capitalization#UI_LIST_OR_MENU
+field:android.icu.text.DisplayOptions$Capitalization#VALUES
+type:android.icu.text.DisplayOptions$PluralCategory
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#ZERO
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#ONE
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#TWO
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#FEW
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#MANY
+enumConstant:android.icu.text.DisplayOptions$PluralCategory#OTHER
+field:android.icu.text.DisplayOptions$PluralCategory#VALUES
+method:android.icu.text.DisplayOptions$PluralCategory#getIdentifier()
+method:android.icu.text.DisplayOptions$PluralCategory#fromIdentifier(String)
+type:android.icu.text.DisplayOptions$GrammaticalCase
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#UNDEFINED
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#ABLATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#ACCUSATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#COMITATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#DATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#ERGATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#GENITIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#INSTRUMENTAL
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#LOCATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#LOCATIVE_COPULATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#NOMINATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#OBLIQUE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#PREPOSITIONAL
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#SOCIATIVE
+enumConstant:android.icu.text.DisplayOptions$GrammaticalCase#VOCATIVE
+field:android.icu.text.DisplayOptions$GrammaticalCase#VALUES
+method:android.icu.text.DisplayOptions$GrammaticalCase#getIdentifier()
+method:android.icu.text.DisplayOptions$GrammaticalCase#fromIdentifier(String)
+field:android.icu.text.NumberFormat$Field#APPROXIMATELY_SIGN
+field:android.icu.util.MeasureUnit#QUARTER
+field:android.icu.util.MeasureUnit#TONNE
+field:android.icu.lang.UCharacter$LineBreak#AKSARA
+field:android.icu.lang.UCharacter$LineBreak#AKSARA_PREBASE
+field:android.icu.lang.UCharacter$LineBreak#AKSARA_START
+field:android.icu.lang.UCharacter$LineBreak#VIRAMA
+field:android.icu.lang.UCharacter$LineBreak#VIRAMA_FINAL
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I
+field:android.icu.lang.UCharacter$UnicodeBlock#CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I_ID
+field:android.icu.util.VersionInfo#UNICODE_15_1
diff --git a/tools/srcgen/generate_android_icu4j.sh b/tools/srcgen/generate_android_icu4j.sh
index 3ababae..557e38f 100755
--- a/tools/srcgen/generate_android_icu4j.sh
+++ b/tools/srcgen/generate_android_icu4j.sh
@@ -45,6 +45,7 @@
 
 ALLOWLIST_API_FILE=${ICU_SRCGEN_DIR}/allowlisted-public-api.txt
 CORE_PLATFORM_API_FILE=${ICU_SRCGEN_DIR}/core-platform-api.txt
+FLAGGED_API_FILE=${ICU_SRCGEN_DIR}/flagged-api-list.txt
 INTRA_CORE_API_FILE=${ICU_SRCGEN_DIR}/intra-core-api.txt
 UNSUPPORTED_APP_USAGE_FILE=${ICU_SRCGEN_DIR}/unsupported-app-usage.json
 
@@ -60,11 +61,15 @@
 # Generate the source code needed by Android.
 # Branches used for testing new versions of ICU will have have the ${ALLOWLIST_API_FILE} file
 # that prevents new (stable) APIs being added to the Android public SDK API. The file should
-# not exist on "normal" release branches and master.
+# not exist on "normal" release branches and main.
 ICU4J_BASE_COMMAND="${SRCGEN_TOOL_BINARY} Icu4jTransform"
 if [ -e "${ALLOWLIST_API_FILE}" ]; then
   ICU4J_BASE_COMMAND+=" --hide-non-allowlisted-api ${ALLOWLIST_API_FILE}"
 fi
+if [ -e "${FLAGGED_API_FILE}" ]; then
+  ICU4J_BASE_COMMAND+=" --flagged-api-list ${FLAGGED_API_FILE}"
+fi
+
 ${ICU4J_BASE_COMMAND} ${INPUT_DIRS} ${DEST_SRC_DIR} ${CORE_PLATFORM_API_FILE} ${INTRA_CORE_API_FILE} ${UNSUPPORTED_APP_USAGE_FILE}
 
 # Copy / transform the resources needed by the android_icu4j code.
diff --git a/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java b/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java
index a435d43..cfb5340 100644
--- a/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java
+++ b/tools/srcgen/src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java
@@ -34,6 +34,7 @@
 import com.google.currysrc.api.process.ast.TypeLocator;
 import com.google.currysrc.processors.AddAnnotation;
 import com.google.currysrc.processors.AddDefaultConstructor;
+import com.google.currysrc.processors.AnnotationInfo;
 import com.google.currysrc.processors.HidePublicClasses;
 import com.google.currysrc.processors.InsertHeader;
 import com.google.currysrc.processors.ModifyQualifiedNames;
@@ -155,6 +156,15 @@
       "android.icu.text.DecimalFormatSymbols",
       "android.icu.text.DisplayContext",
       "android.icu.text.DisplayContext$Type",
+      "android.icu.text.DisplayOptions",
+      "android.icu.text.DisplayOptions$Builder",
+      "android.icu.text.DisplayOptions$Capitalization",
+      "android.icu.text.DisplayOptions$DisplayLength",
+      "android.icu.text.DisplayOptions$GrammaticalCase",
+      "android.icu.text.DisplayOptions$NameStyle",
+      "android.icu.text.DisplayOptions$NounClass",
+      "android.icu.text.DisplayOptions$PluralCategory",
+      "android.icu.text.DisplayOptions$SubstituteHandling",
       "android.icu.text.Edits",
       "android.icu.text.Edits$Iterator",
       "android.icu.text.FormattedValue",
@@ -893,6 +903,7 @@
     private static final String SOURCE_CODE_HEADER = "/* GENERATED SOURCE. DO NOT MODIFY. */\n";
     private static final String COMMAND_USAGE = "Usage: " + Icu4jTransform.class.getCanonicalName()
             + " [--hide-non-allowlisted-api <allowlisted-api-file>]"
+            + " [--flagged-api-list <flagged-api-file>]"
             + " <source-dir>+ <target-dir> <core-platform-api-file> <intra-core-api-file>"
             + " <unsupported-app-usage-file>";
 
@@ -901,20 +912,26 @@
     private final BasicOutputSourceFileGenerator outputSourceFileGenerator;
 
     public Icu4jRules(String[] args) {
-      if (args.length < 3) {
-        throw new IllegalArgumentException(COMMAND_USAGE);
-      }
       Path allowlistedApiPath = null;
       if ("--hide-non-allowlisted-api".equals(args[0])) {
         allowlistedApiPath = Paths.get(args[1]);
-        if (args.length < 6) {
-          throw new IllegalArgumentException(COMMAND_USAGE);
-        }
         String[] newArgs = new String[args.length - 2];
         System.arraycopy(args, 2, newArgs, 0, args.length - 2);
         args = newArgs;
       }
 
+      Path flaggedApiListPath = null;
+      if ("--flagged-api-list".equals(args[0])) {
+        flaggedApiListPath = Paths.get(args[1]);
+        String[] newArgs = new String[args.length - 2];
+        System.arraycopy(args, 2, newArgs, 0, args.length - 2);
+        args = newArgs;
+      }
+
+      if (args.length < 5) {
+          throw new IllegalArgumentException(COMMAND_USAGE);
+      }
+
       // Extract the source directories.
       String[] inputDirNames = new String[args.length - 4];
       System.arraycopy(args, 0, inputDirNames, 0, args.length - 4);
@@ -933,7 +950,7 @@
       }
 
       rules = createTransformRules(corePlatformApiFile, intraCoreApiFile,
-          unsupportedAppUsageFile, allowlistedApiPath);
+          unsupportedAppUsageFile, allowlistedApiPath, flaggedApiListPath);
       outputSourceFileGenerator = Icu4jTransformRules.createOutputFileGenerator(targetDir);
     }
 
@@ -972,7 +989,7 @@
     private static List<Rule> createTransformRules(Path corePlatformApiFile,
             Path intraCoreApiFile,
             Path unsupportedAppUsagePath,
-            Path allowlistedApiPath) {
+            Path allowlistedApiPath, Path flaggedApiListPath) {
       // The rules needed to repackage source code that declares or references com.ibm.icu code
       // so it references android.icu instead.
       Rule[] repackageRules = getRepackagingRules();
@@ -1030,7 +1047,7 @@
           createOptionalRule(AddAnnotation.markerAnnotationFromFlatFile(
               "libcore.api.CorePlatformApi", corePlatformApiFile)),
 
-          // AST change: Add CorePlatformApi to specified classes and members
+          // AST change: Add IntraCoreApi to specified classes and members
           createOptionalRule(AddAnnotation.markerAnnotationFromFlatFile(
               "libcore.api.IntraCoreApi", intraCoreApiFile)),
 
@@ -1048,6 +1065,10 @@
 
       List<Rule> rulesList = Lists.newArrayList(repackageRules);
       rulesList.addAll(Arrays.asList(apiDocsRules));
+      if (flaggedApiListPath != null) {
+          // AST change: Add FlaggedApi to specified classes and members
+          rulesList.add(createFlaggedApiRule(flaggedApiListPath));
+      }
       return rulesList;
     }
 
@@ -1121,4 +1142,14 @@
     return createOptionalRule(new HideNonAllowlistedDeclarations(bodyDeclarationLocators,
             "@hide Hide new API in Android temporarily"));
   }
+
+  private static Rule createFlaggedApiRule(Path flaggedApiListPath) {
+      return createOptionalRule(AddAnnotation.markerAnnotationWithPropertyFromFlatFile(
+              "android.annotation.FlaggedApi",
+              "value",
+              String.class,
+              new AnnotationInfo.Placeholder("com.android.icu.Flags.FLAG_ICU_V_API"),
+              flaggedApiListPath));
+  }
+
 }
diff --git a/tools/testing/test_harness/Android.bp b/tools/testing/test_harness/Android.bp
index 46b9f88..da7bb15 100644
--- a/tools/testing/test_harness/Android.bp
+++ b/tools/testing/test_harness/Android.bp
@@ -14,6 +14,7 @@
 //
 
 package {
+    default_team: "trendy_team_java_core_libraries",
     // See: http://go/android-license-faq
     // A large-scale-change added 'default_applicable_licenses' to import
     // all of the 'license_kinds' from "external_icu_license"