Update external/libphonenumber to v5.2.
Change-Id: I59b8bb26f106ecbdbaf4efd0d33f1142736aa031
diff --git a/README.android b/README.android
index c0cd643..a27771e 100644
--- a/README.android
+++ b/README.android
@@ -1,5 +1,5 @@
URL: http://code.google.com/p/libphonenumber/
-Version: 5.0 (r500)
+Version: 5.2 (r536)
License: Apache 2
Description: Google Phone Number Library.
Local Modification:
diff --git a/java/release_notes.txt b/java/release_notes.txt
index 43a4497..cf9539c 100644
--- a/java/release_notes.txt
+++ b/java/release_notes.txt
@@ -1,12 +1,73 @@
+Oct 10, 2012: libphonenumber-5.2
+* Code changes:
+ - Adds isNumberGeographical() method.
+ - Adds getRegionCodesForCountryCode() method.
+ - Fixing issue with getSupportedGlobalNetworkCallingCodes()
+ [http://code.google.com/p/libphonenumber/issues/detail?id=202]
+ - Ensures that returned collections are unmodifiable where necessary
+ [there is a very slight risk that this may break existing users who were relying on being able
+ to modify these collections, but doing so would be breaking lots of other assumptions that this
+ library makes - if you need to modify any affected collections you must copy them first]
+* Metadata changes:
+ - Updated metadata for region code(s): DE, GR, HR, OM, SB, ZA
+ - Removed metadata for region code: AN (Netherlands Antilles)
+ - Updated geocoding data for country calling code(s): 30 (el, en)
+
+Sep 27, 2012: libphonenumber-5.1.4
+* Metadata changes:
+ - Updated metadata for region code(s): AU, EC, KH, LB, TN, US
+
+Sep 17, 2012: libphonenumber-5.1.3
+* Metadata changes:
+ - Updated metadata for region code(s): EG, LA, LB, LI, PY
+ - Updated metadata for non-geographical calling codes: 800, 808, 888, 979
+ - Updated geocoding data for country calling code(s): 98 (en), 1 (en)
+
+Sep 11, 2010: libphonenumber-5.1.2
+* Bug fix:
+ - Fixing regression in AsYouTypeFormatter where it no longer worked for numbers entered in national
+ format for countries with no national prefix, e.g. Spain.
+
+Sep 5, 2010: libphonenumber-5.1.1
+* Code changes:
+ - Added better logging/exception handling for catching cases where metadata is invalid/missing.
+
+Sep 3, 2012: libphonenumber-5.1
+* Code changes:
+ - Inserting a space after the national prefix in the AsYouTypeFormatter when formatting numbers in
+ national format, if the formatting rules for that country dictate that a space is appropriate.
+ - Format emergency numbers and short-codes as a block in the AsYouTypeFormatter.
+* Metadata changes:
+ - Updated metadata for region code(s): BF, BG, DZ, GA, IT, JP, KW, PF
+
+Aug 20, 2012: libphonenumber-5.0.3
+* Metadata changes:
+ - New alternate formatting data for country calling code(s): 43
+ - Updated metadata for region code(s): AT, BF, JO, NG, RU, SL
+ - New geocoding data for country calling code(s): 62 (en, id), 98 (fa)
+
+Aug 07, 2012: libphonenumber-5.0.2
+* Metadata changes:
+ - Updated metadata for region code(s):
+ BF, CN, DJ, IL, JO, KH, KZ, MA, MT, MV, MY, NC, NG, SD, SK, SN, TL, UZ
+ - New geocoding data for country calling code(s): 7 (ru), 98 (en)
+ - Updated geocoding data for country calling code(s): 7 (en)
+
+July 26th, 2012: libphonenumber-5.0.1
+* Metadata changes
+ - CL, DE ,IN, KR, US
+ - New geocoding data for country calling codes 40, 57, 66, 82, 91.
+ - Fixed comments for 353 (IE).
+
July 12th, 2012: libphonenumber-5.0
* Code changes:
- - Support for alternate formats when finding phone numbers.
- - Allowing two-digit numbers to be parsed if they are entered in national-format with no
- punctuation
+ - Support for alternate formats when finding phone numbers.
+ - Allowing two-digit numbers to be parsed if they are entered in national-format with no
+ punctuation
* Metadata changes
- - IL, GA
+ - IL, GA
* Other
- - Reflowed this file to 100 char width to make it unambiguous as to what the standard should be.
+ - Reflowed this file to 100 char width to make it unambiguous as to what the standard should be.
July 6th, 2012: libphonenumber-4.9.1
* Metadata changes
diff --git a/java/src/com/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet.java b/java/src/com/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet.java
index 0b1de98..ad9bcfd 100644
--- a/java/src/com/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet.java
+++ b/java/src/com/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet.java
@@ -26,10 +26,11 @@
public class AlternateFormatsCountryCodeSet {
// A set of all country codes for which data is available.
static Set<Integer> getCountryCodeSet() {
- // The capacity is set to 6 as there are 5 different country codes,
+ // The capacity is set to 8 as there are 6 different country codes,
// and this offers a load factor of roughly 0.75.
- Set<Integer> countryCodeSet = new HashSet<Integer>(6);
+ Set<Integer> countryCodeSet = new HashSet<Integer>(8);
+ countryCodeSet.add(43);
countryCodeSet.add(44);
countryCodeSet.add(49);
countryCodeSet.add(55);
diff --git a/java/src/com/android/i18n/phonenumbers/AsYouTypeFormatter.java b/java/src/com/android/i18n/phonenumbers/AsYouTypeFormatter.java
index 7e6f4ed..2c8ac44 100644
--- a/java/src/com/android/i18n/phonenumbers/AsYouTypeFormatter.java
+++ b/java/src/com/android/i18n/phonenumbers/AsYouTypeFormatter.java
@@ -50,11 +50,17 @@
// Set to true when users enter their own formatting. AsYouTypeFormatter will do no formatting at
// all when this is set to true.
private boolean inputHasFormatting = false;
- private boolean isInternationalFormatting = false;
+ // This is set to true when we know the user is entering a full national significant number, since
+ // we have either detected a national prefix or an international dialing prefix. When this is
+ // true, we will no longer use local number formatting patterns.
+ private boolean isCompleteNumber = false;
private boolean isExpectingCountryCallingCode = false;
private final PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
private String defaultCountry;
+ // Character used when appropriate to separate a prefix, such as a long NDD or a country calling
+ // code, from the national number.
+ private static final char SEPARATOR_BEFORE_NATIONAL_NUMBER = ' ';
private static final PhoneMetadata EMPTY_METADATA =
new PhoneMetadata().setInternationalPrefix("NA");
private PhoneMetadata defaultMetaData;
@@ -78,6 +84,9 @@
private static final Pattern ELIGIBLE_FORMAT_PATTERN =
Pattern.compile("[" + PhoneNumberUtil.VALID_PUNCTUATION + "]*" +
"(\\$\\d" + "[" + PhoneNumberUtil.VALID_PUNCTUATION + "]*)+");
+ // A set of characters that, if found in a national prefix formatting rules, are an indicator to
+ // us that we should separate the national prefix from the number when formatting.
+ private static final Pattern NATIONAL_PREFIX_SEPARATORS_PATTERN = Pattern.compile("[- ]");
// This is the minimum length of national number accrued that is required to trigger the
// formatter. The first element of the leadingDigitsPattern of each numberFormat contains a
@@ -86,8 +95,8 @@
// The digits that have not been entered yet will be represented by a \u2008, the punctuation
// space.
- private String digitPlaceholder = "\u2008";
- private Pattern digitPattern = Pattern.compile(digitPlaceholder);
+ private static final String DIGIT_PLACEHOLDER = "\u2008";
+ private static final Pattern DIGIT_PATTERN = Pattern.compile(DIGIT_PLACEHOLDER);
private int lastMatchPosition = 0;
// The position of a digit upon which inputDigitAndRememberPosition is most recently invoked, as
// found in the original sequence of characters the user entered.
@@ -99,6 +108,7 @@
// and it is formatted (e.g. with space inserted). For example, this can contain IDD, country
// code, and/or NDD, etc.
private StringBuilder prefixBeforeNationalNumber = new StringBuilder();
+ private boolean shouldAddSpaceAfterNationalPrefix = false;
// This contains the national prefix that has been extracted. It contains only digits without
// formatting.
private String nationalPrefixExtracted = "";
@@ -147,6 +157,9 @@
}
if (createFormattingTemplate(numberFormat)) {
currentFormattingPattern = pattern;
+ shouldAddSpaceAfterNationalPrefix =
+ NATIONAL_PREFIX_SEPARATORS_PATTERN.matcher(
+ numberFormat.getNationalPrefixFormattingRule()).find();
// With a new formatting template, the matched position using the old template needs to be
// reset.
lastMatchPosition = 0;
@@ -161,12 +174,17 @@
private void getAvailableFormats(String leadingThreeDigits) {
List<NumberFormat> formatList =
- (isInternationalFormatting && currentMetaData.intlNumberFormatSize() > 0)
+ (isCompleteNumber && currentMetaData.intlNumberFormatSize() > 0)
? currentMetaData.intlNumberFormats()
: currentMetaData.numberFormats();
+ boolean nationalPrefixIsUsedByCountry = currentMetaData.hasNationalPrefix();
for (NumberFormat format : formatList) {
- if (isFormatEligible(format.getFormat())) {
- possibleFormats.add(format);
+ if (!nationalPrefixIsUsedByCountry || isCompleteNumber ||
+ format.isNationalPrefixOptionalWhenFormatting() ||
+ phoneUtil.formattingRuleHasFirstGroupOnly(format.getNationalPrefixFormattingRule())) {
+ if (isFormatEligible(format.getFormat())) {
+ possibleFormats.add(format);
+ }
}
}
narrowDownPossibleFormats(leadingThreeDigits);
@@ -233,8 +251,8 @@
}
// Formats the number according to numberFormat
String template = aPhoneNumber.replaceAll(numberPattern, numberFormat);
- // Replaces each digit with character digitPlaceholder
- template = template.replaceAll("9", digitPlaceholder);
+ // Replaces each digit with character DIGIT_PLACEHOLDER
+ template = template.replaceAll("9", DIGIT_PLACEHOLDER);
return template;
}
@@ -255,9 +273,10 @@
inputHasFormatting = false;
positionToRemember = 0;
originalPosition = 0;
- isInternationalFormatting = false;
+ isCompleteNumber = false;
isExpectingCountryCallingCode = false;
possibleFormats.clear();
+ shouldAddSpaceAfterNationalPrefix = false;
if (!currentMetaData.equals(defaultMetaData)) {
currentMetaData = getMetadataForRegion(defaultCountry);
}
@@ -314,8 +333,9 @@
}
} else if (ableToExtractLongerNdd()) {
// Add an additional space to separate long NDD and national significant number for
- // readability.
- prefixBeforeNationalNumber.append(" ");
+ // readability. We don't set shouldAddSpaceAfterNationalPrefix to true, since we don't want
+ // this to change later when we choose formatting templates.
+ prefixBeforeNationalNumber.append(SEPARATOR_BEFORE_NATIONAL_NUMBER);
return attemptToChoosePatternWithPrefixExtracted();
}
return accruedInput.toString();
@@ -355,7 +375,7 @@
return inputAccruedNationalNumber();
}
return ableToFormat
- ? prefixBeforeNationalNumber + tempNationalNumber
+ ? appendNationalNumber(tempNationalNumber)
: accruedInput.toString();
} else {
return attemptToChooseFormattingPattern();
@@ -391,12 +411,19 @@
PhoneNumberUtil.PLUS_CHARS_PATTERN.matcher(Character.toString(nextChar)).matches());
}
+ /**
+ * Check to see if there is an exact pattern match for these digits. If so, we should use this
+ * instead of any other formatting template whose leadingDigitsPattern also matches the input.
+ */
String attemptToFormatAccruedDigits() {
- for (NumberFormat numFormat : possibleFormats) {
- Matcher m = regexCache.getPatternForRegex(numFormat.getPattern()).matcher(nationalNumber);
+ for (NumberFormat numberFormat : possibleFormats) {
+ Matcher m = regexCache.getPatternForRegex(numberFormat.getPattern()).matcher(nationalNumber);
if (m.matches()) {
- String formattedNumber = m.replaceAll(numFormat.getFormat());
- return prefixBeforeNationalNumber + formattedNumber;
+ shouldAddSpaceAfterNationalPrefix =
+ NATIONAL_PREFIX_SEPARATORS_PATTERN.matcher(
+ numberFormat.getNationalPrefixFormattingRule()).find();
+ String formattedNumber = m.replaceAll(numberFormat.getFormat());
+ return appendNationalNumber(formattedNumber);
}
}
return "";
@@ -421,8 +448,30 @@
return currentOutputIndex;
}
- // Attempts to set the formatting template and returns a string which contains the formatted
- // version of the digits entered so far.
+ /**
+ * Combines the national number with any prefix (IDD/+ and country code or national prefix) that
+ * was collected. A space will be inserted between them if the current formatting template
+ * indicates this to be suitable.
+ */
+ private String appendNationalNumber(String nationalNumber) {
+ int prefixBeforeNationalNumberLength = prefixBeforeNationalNumber.length();
+ if (shouldAddSpaceAfterNationalPrefix && prefixBeforeNationalNumberLength > 0 &&
+ prefixBeforeNationalNumber.charAt(prefixBeforeNationalNumberLength - 1)
+ != SEPARATOR_BEFORE_NATIONAL_NUMBER) {
+ // We want to add a space after the national prefix if the national prefix formatting rule
+ // indicates that this would normally be done, with the exception of the case where we already
+ // appended a space because the NDD was surprisingly long.
+ return new String(prefixBeforeNationalNumber) + SEPARATOR_BEFORE_NATIONAL_NUMBER
+ + nationalNumber;
+ } else {
+ return prefixBeforeNationalNumber + nationalNumber;
+ }
+ }
+
+ /**
+ * Attempts to set the formatting template and returns a string which contains the formatted
+ * version of the digits entered so far.
+ */
private String attemptToChooseFormattingPattern() {
// We start to attempt to format only when as least MIN_LEADING_DIGITS_LENGTH digits of national
// number (excluding national prefix) have been entered.
@@ -430,12 +479,14 @@
getAvailableFormats(nationalNumber.substring(0, MIN_LEADING_DIGITS_LENGTH));
return maybeCreateNewTemplate() ? inputAccruedNationalNumber() : accruedInput.toString();
} else {
- return prefixBeforeNationalNumber + nationalNumber.toString();
+ return appendNationalNumber(nationalNumber.toString());
}
}
- // Invokes inputDigitHelper on each digit of the national number accrued, and returns a formatted
- // string in the end.
+ /**
+ * Invokes inputDigitHelper on each digit of the national number accrued, and returns a formatted
+ * string in the end.
+ */
private String inputAccruedNationalNumber() {
int lengthOfNationalNumber = nationalNumber.length();
if (lengthOfNationalNumber > 0) {
@@ -443,30 +494,41 @@
for (int i = 0; i < lengthOfNationalNumber; i++) {
tempNationalNumber = inputDigitHelper(nationalNumber.charAt(i));
}
- return ableToFormat
- ? prefixBeforeNationalNumber + tempNationalNumber
- : accruedInput.toString();
+ return ableToFormat ? appendNationalNumber(tempNationalNumber) : accruedInput.toString();
} else {
return prefixBeforeNationalNumber.toString();
}
}
+ /**
+ * Returns true if the current country is a NANPA country and the national number begins with
+ * the national prefix.
+ */
+ private boolean isNanpaNumberWithNationalPrefix() {
+ // For NANPA numbers beginning with 1[2-9], treat the 1 as the national prefix. The reason is
+ // that national significant numbers in NANPA always start with [2-9] after the national prefix.
+ // Numbers beginning with 1[01] can only be short/emergency numbers, which don't need the
+ // national prefix.
+ return (currentMetaData.getCountryCode() == 1) && (nationalNumber.charAt(0) == '1') &&
+ (nationalNumber.charAt(1) != '0') && (nationalNumber.charAt(1) != '1');
+ }
+
// Returns the national prefix extracted, or an empty string if it is not present.
private String removeNationalPrefixFromNationalNumber() {
int startOfNationalNumber = 0;
- if (currentMetaData.getCountryCode() == 1 && nationalNumber.charAt(0) == '1') {
+ if (isNanpaNumberWithNationalPrefix()) {
startOfNationalNumber = 1;
- prefixBeforeNationalNumber.append("1 ");
- isInternationalFormatting = true;
+ prefixBeforeNationalNumber.append('1').append(SEPARATOR_BEFORE_NATIONAL_NUMBER);
+ isCompleteNumber = true;
} else if (currentMetaData.hasNationalPrefixForParsing()) {
Pattern nationalPrefixForParsing =
- regexCache.getPatternForRegex(currentMetaData.getNationalPrefixForParsing());
+ regexCache.getPatternForRegex(currentMetaData.getNationalPrefixForParsing());
Matcher m = nationalPrefixForParsing.matcher(nationalNumber);
if (m.lookingAt()) {
// When the national prefix is detected, we use international formatting rules instead of
// national ones, because national formatting rules could contain local formatting rules
// for numbers entered without area code.
- isInternationalFormatting = true;
+ isCompleteNumber = true;
startOfNationalNumber = m.end();
prefixBeforeNationalNumber.append(nationalNumber.substring(0, startOfNationalNumber));
}
@@ -489,7 +551,7 @@
currentMetaData.getInternationalPrefix());
Matcher iddMatcher = internationalPrefix.matcher(accruedInputWithoutFormatting);
if (iddMatcher.lookingAt()) {
- isInternationalFormatting = true;
+ isCompleteNumber = true;
int startOfCountryCallingCode = iddMatcher.end();
nationalNumber.setLength(0);
nationalNumber.append(accruedInputWithoutFormatting.substring(startOfCountryCallingCode));
@@ -497,7 +559,7 @@
prefixBeforeNationalNumber.append(
accruedInputWithoutFormatting.substring(0, startOfCountryCallingCode));
if (accruedInputWithoutFormatting.charAt(0) != PhoneNumberUtil.PLUS_SIGN) {
- prefixBeforeNationalNumber.append(" ");
+ prefixBeforeNationalNumber.append(SEPARATOR_BEFORE_NATIONAL_NUMBER);
}
return true;
}
@@ -529,7 +591,7 @@
currentMetaData = getMetadataForRegion(newRegionCode);
}
String countryCodeString = Integer.toString(countryCode);
- prefixBeforeNationalNumber.append(countryCodeString).append(" ");
+ prefixBeforeNationalNumber.append(countryCodeString).append(SEPARATOR_BEFORE_NATIONAL_NUMBER);
return true;
}
@@ -556,7 +618,7 @@
}
private String inputDigitHelper(char nextChar) {
- Matcher digitMatcher = digitPattern.matcher(formattingTemplate);
+ Matcher digitMatcher = DIGIT_PATTERN.matcher(formattingTemplate);
if (digitMatcher.find(lastMatchPosition)) {
String tempTemplate = digitMatcher.replaceFirst(Character.toString(nextChar));
formattingTemplate.replace(0, tempTemplate.length(), tempTemplate);
diff --git a/java/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java b/java/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java
index 7e885bf..ab79a47 100644
--- a/java/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java
+++ b/java/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java
@@ -689,9 +689,8 @@
listWithRegionCode.add("UY");
countryCodeToRegionCodeMap.put(598, listWithRegionCode);
- listWithRegionCode = new ArrayList<String>(3);
+ listWithRegionCode = new ArrayList<String>(2);
listWithRegionCode.add("CW");
- listWithRegionCode.add("AN");
listWithRegionCode.add("BQ");
countryCodeToRegionCodeMap.put(599, listWithRegionCode);
diff --git a/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java b/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
index cea9860..5c54f61 100644
--- a/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
+++ b/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
@@ -107,8 +107,8 @@
private static final String RFC3966_ISDN_SUBADDRESS = ";isub=";
// A map that contains characters that are essential when dialling. That means any of the
- // characters in this map must not be removed from a number when dialing, otherwise the call will
- // not reach the intended destination.
+ // characters in this map must not be removed from a number when dialling, otherwise the call
+ // will not reach the intended destination.
private static final Map<Character, Character> DIALLABLE_CHAR_MAPPINGS;
// Only upper-case variants of alpha characters are stored.
@@ -348,6 +348,11 @@
private static final Pattern FG_PATTERN = Pattern.compile("\\$FG");
private static final Pattern CC_PATTERN = Pattern.compile("\\$CC");
+ // A pattern that is used to determine if the national prefix formatting rule has the first group
+ // only, i.e., does not start with the national prefix. Note that the pattern explicitly allows
+ // for unbalanced parentheses.
+ private static final Pattern FIRST_GROUP_ONLY_PREFIX_PATTERN = Pattern.compile("\\(?\\$1\\)?");
+
private static PhoneNumberUtil instance = null;
// A mapping from a region code to the PhoneMetadata for that region.
@@ -360,6 +365,10 @@
private final Map<Integer, PhoneMetadata> countryCodeToNonGeographicalMetadataMap =
Collections.synchronizedMap(new HashMap<Integer, PhoneMetadata>());
+ // The set of county calling codes that map to the non-geo entity region ("001"). This set
+ // currently contains < 12 elements so the default capacity of 16 (load factor=0.75) is fine.
+ private final Set<Integer> countryCodesForNonGeographicalRegion = new HashSet<Integer>();
+
// A cache for frequently used region-specific regular expressions.
// As most people use phone numbers primarily from one to two countries, and there are roughly 60
// regular expressions needed, the initial capacity of 100 offers a rough load factor of 0.75.
@@ -546,32 +555,60 @@
private void init(String filePrefix) {
currentFilePrefix = filePrefix;
- for (List<String> regionCodes : countryCallingCodeToRegionCodeMap.values()) {
- supportedRegions.addAll(regionCodes);
+ for (Map.Entry<Integer, List<String>> entry : countryCallingCodeToRegionCodeMap.entrySet()) {
+ List<String> regionCodes = entry.getValue();
+ // We can assume that if the county calling code maps to the non-geo entity region code then
+ // that's the only region code it maps to.
+ if (regionCodes.size() == 1 && REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCodes.get(0))) {
+ // This is the subset of all country codes that map to the non-geo entity region code.
+ countryCodesForNonGeographicalRegion.add(entry.getKey());
+ } else {
+ // The supported regions set does not include the "001" non-geo entity region code.
+ supportedRegions.addAll(regionCodes);
+ }
}
- supportedRegions.remove(REGION_CODE_FOR_NON_GEO_ENTITY);
+ // If the non-geo entity still got added to the set of supported regions it must be because
+ // there are entries that list the non-geo entity alongside normal regions (which is wrong).
+ // If we discover this, remove the non-geo entity from the set of supported regions and log.
+ if (supportedRegions.remove(REGION_CODE_FOR_NON_GEO_ENTITY)) {
+ LOGGER.log(Level.WARNING, "invalid metadata " +
+ "(country calling code was mapped to the non-geo entity as well as specific region(s))");
+ }
nanpaRegions.addAll(countryCallingCodeToRegionCodeMap.get(NANPA_COUNTRY_CODE));
}
- private void loadMetadataFromFile(String filePrefix, String regionCode, int countryCallingCode) {
+ // @VisibleForTesting
+ void loadMetadataFromFile(String filePrefix, String regionCode, int countryCallingCode) {
boolean isNonGeoRegion = REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCode);
- InputStream source = isNonGeoRegion
- ? PhoneNumberUtil.class.getResourceAsStream(filePrefix + "_" + countryCallingCode)
- : PhoneNumberUtil.class.getResourceAsStream(filePrefix + "_" + regionCode);
+ String fileName = filePrefix + "_" +
+ (isNonGeoRegion ? String.valueOf(countryCallingCode) : regionCode);
+ InputStream source = PhoneNumberUtil.class.getResourceAsStream(fileName);
+ if (source == null) {
+ LOGGER.log(Level.SEVERE, "missing metadata: " + fileName);
+ throw new RuntimeException("missing metadata: " + fileName);
+ }
ObjectInputStream in = null;
try {
in = new ObjectInputStream(source);
PhoneMetadataCollection metadataCollection = new PhoneMetadataCollection();
metadataCollection.readExternal(in);
- for (PhoneMetadata metadata : metadataCollection.getMetadataList()) {
- if (isNonGeoRegion) {
- countryCodeToNonGeographicalMetadataMap.put(countryCallingCode, metadata);
- } else {
- regionToMetadataMap.put(regionCode, metadata);
- }
+ List<PhoneMetadata> metadataList = metadataCollection.getMetadataList();
+ if (metadataList.isEmpty()) {
+ LOGGER.log(Level.SEVERE, "empty metadata: " + fileName);
+ throw new RuntimeException("empty metadata: " + fileName);
+ }
+ if (metadataList.size() > 1) {
+ LOGGER.log(Level.WARNING, "invalid metadata (too many entries): " + fileName);
+ }
+ PhoneMetadata metadata = metadataList.get(0);
+ if (isNonGeoRegion) {
+ countryCodeToNonGeographicalMetadataMap.put(countryCallingCode, metadata);
+ } else {
+ regionToMetadataMap.put(regionCode, metadata);
}
} catch (IOException e) {
- LOGGER.log(Level.WARNING, e.toString());
+ LOGGER.log(Level.SEVERE, "cannot load/parse metadata: " + fileName, e);
+ throw new RuntimeException("cannot load/parse metadata: " + fileName, e);
} finally {
close(in);
}
@@ -582,7 +619,7 @@
try {
in.close();
} catch (IOException e) {
- LOGGER.log(Level.WARNING, e.toString());
+ LOGGER.log(Level.WARNING, "error closing input stream (ignored)", e);
}
}
}
@@ -752,21 +789,17 @@
* @return the length of area code of the PhoneNumber object passed in.
*/
public int getLengthOfGeographicalAreaCode(PhoneNumber number) {
- String regionCode = getRegionCodeForNumber(number);
- if (!isValidRegionCode(regionCode)) {
+ PhoneMetadata metadata = getMetadataForRegion(getRegionCodeForNumber(number));
+ if (metadata == null) {
return 0;
}
- PhoneMetadata metadata = getMetadataForRegion(regionCode);
// If a country doesn't use a national prefix, and this number doesn't have an Italian leading
// zero, we assume it is a closed dialling plan with no area codes.
if (!metadata.hasNationalPrefix() && !number.isItalianLeadingZero()) {
return 0;
}
- PhoneNumberType type = getNumberTypeHelper(getNationalSignificantNumber(number),
- metadata);
- // Most numbers other than the two types below have to be dialled in full.
- if (type != PhoneNumberType.FIXED_LINE && type != PhoneNumberType.FIXED_LINE_OR_MOBILE) {
+ if (!isNumberGeographical(number)) {
return 0;
}
@@ -856,8 +889,8 @@
Map<Character, Character> normalizationReplacements,
boolean removeNonMatches) {
StringBuilder normalizedNumber = new StringBuilder(number.length());
- char[] numberAsCharArray = number.toCharArray();
- for (char character : numberAsCharArray) {
+ for (int i = 0; i < number.length(); i++) {
+ char character = number.charAt(i);
Character newDigit = normalizationReplacements.get(Character.toUpperCase(character));
if (newDigit != null) {
normalizedNumber.append(newDigit);
@@ -893,7 +926,7 @@
* Convenience method to get a list of what regions the library has metadata for.
*/
public Set<String> getSupportedRegions() {
- return supportedRegions;
+ return Collections.unmodifiableSet(supportedRegions);
}
/**
@@ -901,7 +934,7 @@
* for.
*/
public Set<Integer> getSupportedGlobalNetworkCallingCodes() {
- return countryCodeToNonGeographicalMetadataMap.keySet();
+ return Collections.unmodifiableSet(countryCodesForNonGeographicalRegion);
}
/**
@@ -923,6 +956,27 @@
}
/**
+ * Helper function to check if the national prefix formatting rule has the first group only, i.e.,
+ * does not start with the national prefix.
+ */
+ static boolean formattingRuleHasFirstGroupOnly(String nationalPrefixFormattingRule) {
+ return FIRST_GROUP_ONLY_PREFIX_PATTERN.matcher(nationalPrefixFormattingRule).matches();
+ }
+
+ /**
+ * Tests whether a phone number has a geographical association. It checks if the number is
+ * associated to a certain region in the country where it belongs to. Note that this doesn't
+ * verify if the number is actually in use.
+ */
+ boolean isNumberGeographical(PhoneNumber phoneNumber) {
+ PhoneNumberType numberType = getNumberType(phoneNumber);
+ // TODO: Include mobile phone numbers from countries like Indonesia, which has some
+ // mobile numbers that are geographical.
+ return numberType == PhoneNumberType.FIXED_LINE ||
+ numberType == PhoneNumberType.FIXED_LINE_OR_MOBILE;
+ }
+
+ /**
* Helper function to check region code is not unknown or null.
*/
private boolean isValidRegionCode(String regionCode) {
@@ -952,6 +1006,11 @@
*/
public String format(PhoneNumber number, PhoneNumberFormat numberFormat) {
if (number.getNationalNumber() == 0 && number.hasRawInput()) {
+ // Unparseable numbers that kept their raw input just use that.
+ // This is the only case where a number can be formatted as E164 without a
+ // leading '+' symbol (but the original number wasn't parseable anyway).
+ // TODO: Consider removing the 'if' above so that unparseable
+ // strings without raw input format to the empty string instead of "+00"
String rawInput = number.getRawInput();
if (rawInput.length() > 0) {
return rawInput;
@@ -973,22 +1032,23 @@
int countryCallingCode = number.getCountryCode();
String nationalSignificantNumber = getNationalSignificantNumber(number);
if (numberFormat == PhoneNumberFormat.E164) {
- // Early exit for E164 case since no formatting of the national number needs to be applied.
- // Extensions are not formatted.
+ // Early exit for E164 case (even if the country calling code is invalid) since no formatting
+ // of the national number needs to be applied. Extensions are not formatted.
formattedNumber.append(nationalSignificantNumber);
prefixNumberWithCountryCallingCode(countryCallingCode, PhoneNumberFormat.E164,
formattedNumber);
return;
}
+ if (!hasValidCountryCallingCode(countryCallingCode)) {
+ formattedNumber.append(nationalSignificantNumber);
+ return;
+ }
// Note getRegionCodeForCountryCode() is used because formatting information for regions which
// share a country calling code is contained by only one region for performance reasons. For
// example, for NANPA regions it will be contained in the metadata for US.
String regionCode = getRegionCodeForCountryCode(countryCallingCode);
- if (!hasValidCountryCallingCode(countryCallingCode)) {
- formattedNumber.append(nationalSignificantNumber);
- return;
- }
-
+ // Metadata cannot be null because the country calling code is valid (which means that the
+ // region code cannot be ZZ and must be one of our supported region codes).
PhoneMetadata metadata =
getMetadataForRegionOrCallingCode(countryCallingCode, regionCode);
formattedNumber.append(formatNsn(nationalSignificantNumber, metadata, numberFormat));
@@ -1012,13 +1072,14 @@
List<NumberFormat> userDefinedFormats) {
int countryCallingCode = number.getCountryCode();
String nationalSignificantNumber = getNationalSignificantNumber(number);
+ if (!hasValidCountryCallingCode(countryCallingCode)) {
+ return nationalSignificantNumber;
+ }
// Note getRegionCodeForCountryCode() is used because formatting information for regions which
// share a country calling code is contained by only one region for performance reasons. For
// example, for NANPA regions it will be contained in the metadata for US.
String regionCode = getRegionCodeForCountryCode(countryCallingCode);
- if (!hasValidCountryCallingCode(countryCallingCode)) {
- return nationalSignificantNumber;
- }
+ // Metadata cannot be null because the country calling code is valid
PhoneMetadata metadata =
getMetadataForRegionOrCallingCode(countryCallingCode, regionCode);
@@ -1072,16 +1133,18 @@
public String formatNationalNumberWithCarrierCode(PhoneNumber number, String carrierCode) {
int countryCallingCode = number.getCountryCode();
String nationalSignificantNumber = getNationalSignificantNumber(number);
- // Note getRegionCodeForCountryCode() is used because formatting information for regions which
- // share a country calling code is contained by only one region for performance reasons. For
- // example, for NANPA regions it will be contained in the metadata for US.
- String regionCode = getRegionCodeForCountryCode(countryCallingCode);
if (!hasValidCountryCallingCode(countryCallingCode)) {
return nationalSignificantNumber;
}
- StringBuilder formattedNumber = new StringBuilder(20);
+ // Note getRegionCodeForCountryCode() is used because formatting information for regions which
+ // share a country calling code is contained by only one region for performance reasons. For
+ // example, for NANPA regions it will be contained in the metadata for US.
+ String regionCode = getRegionCodeForCountryCode(countryCallingCode);
+ // Metadata cannot be null because the country calling code is valid.
PhoneMetadata metadata = getMetadataForRegionOrCallingCode(countryCallingCode, regionCode);
+
+ StringBuilder formattedNumber = new StringBuilder(20);
formattedNumber.append(formatNsn(nationalSignificantNumber, metadata,
PhoneNumberFormat.NATIONAL, carrierCode));
maybeAppendFormattedExtension(number, metadata, PhoneNumberFormat.NATIONAL, formattedNumber);
@@ -1216,7 +1279,7 @@
return countryCallingCode + " " + format(number, PhoneNumberFormat.NATIONAL);
}
} else if (countryCallingCode == getCountryCodeForValidRegion(regionCallingFrom)) {
- // For regions that share a country calling code, the country calling code need not be dialled.
+ // If regions share a country calling code, the country calling code need not be dialled.
// This also applies when dialling within a region, so this if clause covers both these cases.
// Technically this is the case for dialling from La Reunion to other overseas departments of
// France (French Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover this
@@ -1224,6 +1287,7 @@
// Details here: http://www.petitfute.com/voyage/225-info-pratiques-reunion
return format(number, PhoneNumberFormat.NATIONAL);
}
+ // Metadata cannot be null because we checked 'isValidRegionCode()' above.
PhoneMetadata metadataForRegionCallingFrom = getMetadataForRegion(regionCallingFrom);
String internationalPrefix = metadataForRegionCallingFrom.getInternationalPrefix();
@@ -1238,6 +1302,7 @@
}
String regionCode = getRegionCodeForCountryCode(countryCallingCode);
+ // Metadata cannot be null because the country calling code is valid.
PhoneMetadata metadataForRegion =
getMetadataForRegionOrCallingCode(countryCallingCode, regionCode);
String formattedNationalNumber =
@@ -1314,10 +1379,19 @@
formattedNumber = nationalFormat;
break;
}
+ // Metadata cannot be null here because getNddPrefixForRegion() (above) returns null if
+ // there is no metadata for the region.
PhoneMetadata metadata = getMetadataForRegion(regionCode);
String nationalNumber = getNationalSignificantNumber(number);
NumberFormat formatRule =
chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber);
+ // The format rule could still be null here if the national number was 0 and there was no
+ // raw input (this should not be possible for numbers generated by the phonenumber library
+ // as they would also not have a country calling code and we would have exited earlier).
+ if (formatRule == null) {
+ formattedNumber = nationalFormat;
+ break;
+ }
// When the format we apply to this number doesn't contain national prefix, we can just
// return the national format.
// TODO: Refactor the code below with the code in isNationalPrefixPresentIfRequired.
@@ -1348,12 +1422,16 @@
String rawInput = number.getRawInput();
// If no digit is inserted/removed/modified as a result of our formatting, we return the
// formatted phone number; otherwise we return the raw input the user entered.
- return (formattedNumber != null &&
- normalizeHelper(formattedNumber, DIALLABLE_CHAR_MAPPINGS, true /* remove non matches */)
- .equals(normalizeHelper(
- rawInput, DIALLABLE_CHAR_MAPPINGS, true /* remove non matches */)))
- ? formattedNumber
- : rawInput;
+ if (formattedNumber != null && rawInput.length() > 0) {
+ String normalizedFormattedNumber =
+ normalizeHelper(formattedNumber, DIALLABLE_CHAR_MAPPINGS, true /* remove non matches */);
+ String normalizedRawInput =
+ normalizeHelper(rawInput, DIALLABLE_CHAR_MAPPINGS, true /* remove non matches */);
+ if (!normalizedFormattedNumber.equals(normalizedRawInput)) {
+ formattedNumber = rawInput;
+ }
+ }
+ return formattedNumber;
}
// Check if rawInput, which is assumed to be in the national format, has a national prefix. The
@@ -1455,7 +1533,7 @@
if (isNANPACountry(regionCallingFrom)) {
return countryCode + " " + rawInput;
}
- } else if (isValidRegionCode(regionCallingFrom) &&
+ } else if (metadataForRegionCallingFrom != null &&
countryCode == getCountryCodeForValidRegion(regionCallingFrom)) {
NumberFormat formattingPattern =
chooseFormattingPatternForNumber(metadataForRegionCallingFrom.numberFormats(),
@@ -1490,6 +1568,7 @@
}
StringBuilder formattedNumber = new StringBuilder(rawInput);
String regionCode = getRegionCodeForCountryCode(countryCode);
+ // Metadata cannot be null because the country calling code is valid.
PhoneMetadata metadataForRegion = getMetadataForRegionOrCallingCode(countryCode, regionCode);
maybeAppendFormattedExtension(number, metadataForRegion,
PhoneNumberFormat.INTERNATIONAL, formattedNumber);
@@ -1596,7 +1675,7 @@
return formatNsnUsingPattern(nationalNumber, formattingPattern, numberFormat, null);
}
- // Note that carrierCode is optional - if NULL or an empty string, no carrier code replacement
+ // Note that carrierCode is optional - if null or an empty string, no carrier code replacement
// will take place.
private String formatNsnUsingPattern(String nationalNumber,
NumberFormat formattingPattern,
@@ -1764,11 +1843,11 @@
*/
public PhoneNumberType getNumberType(PhoneNumber number) {
String regionCode = getRegionCodeForNumber(number);
- if (!isValidRegionCode(regionCode) && !REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCode)) {
+ PhoneMetadata metadata = getMetadataForRegionOrCallingCode(number.getCountryCode(), regionCode);
+ if (metadata == null) {
return PhoneNumberType.UNKNOWN;
}
String nationalSignificantNumber = getNationalSignificantNumber(number);
- PhoneMetadata metadata = getMetadataForRegionOrCallingCode(number.getCountryCode(), regionCode);
return getNumberTypeHelper(nationalSignificantNumber, metadata);
}
@@ -1822,6 +1901,10 @@
return PhoneNumberType.UNKNOWN;
}
+ /**
+ * Returns the metadata for the given region code or {@code null} if the region code is invalid
+ * or unknown.
+ */
PhoneMetadata getMetadataForRegion(String regionCode) {
if (!isValidRegionCode(regionCode)) {
return null;
@@ -1877,6 +1960,10 @@
* immediately exits with false. After this, the specific number pattern rules for the region are
* examined. This is useful for determining for example whether a particular number is valid for
* Canada, rather than just a valid NANPA number.
+ * Warning: In most cases, you want to use {@link #isValidNumber} instead. For example, this
+ * method will mark numbers from British Crown dependencies such as the Isle of Man as invalid for
+ * the region "GB" (United Kingdom), since it has its own region code, "IM", which may be
+ * undesirable.
*
* @param number the phone number that we want to validate
* @param regionCode the region that we want to validate the phone number for
@@ -1934,6 +2021,7 @@
String nationalNumber = getNationalSignificantNumber(number);
for (String regionCode : regionCodes) {
// If leadingDigits is present, use this. Otherwise, do full validation.
+ // Metadata cannot be null because the region codes come from the country calling code map.
PhoneMetadata metadata = getMetadataForRegion(regionCode);
if (metadata.hasLeadingDigits()) {
if (regexCache.getPatternForRegex(metadata.getLeadingDigits())
@@ -1958,6 +2046,17 @@
}
/**
+ * Returns a list with the region codes that match the specific country calling code. For
+ * non-geographical country calling codes, the region code 001 is returned. Also, in the case
+ * of no region code being found, an empty list is returned.
+ */
+ public List<String> getRegionCodesForCountryCode(int countryCallingCode) {
+ List<String> regionCodes = countryCallingCodeToRegionCodeMap.get(countryCallingCode);
+ return Collections.unmodifiableList(regionCodes == null ? new ArrayList<String>(0)
+ : regionCodes);
+ }
+
+ /**
* Returns the country calling code for a specific region. For example, this would be 1 for the
* United States, and 64 for New Zealand.
*
@@ -1981,9 +2080,13 @@
*
* @param regionCode the region that we want to get the country calling code for
* @return the country calling code for the region denoted by regionCode
+ * @throws IllegalArgumentException if the region is invalid
*/
private int getCountryCodeForValidRegion(String regionCode) {
PhoneMetadata metadata = getMetadataForRegion(regionCode);
+ if (metadata == null) {
+ throw new IllegalArgumentException("Invalid region code: " + regionCode);
+ }
return metadata.getCountryCode();
}
@@ -2002,14 +2105,14 @@
* @return the dialling prefix for the region denoted by regionCode
*/
public String getNddPrefixForRegion(String regionCode, boolean stripNonDigits) {
- if (!isValidRegionCode(regionCode)) {
+ PhoneMetadata metadata = getMetadataForRegion(regionCode);
+ if (metadata == null) {
LOGGER.log(Level.WARNING,
"Invalid or missing region code ("
+ ((regionCode == null) ? "null" : regionCode)
+ ") provided.");
return null;
}
- PhoneMetadata metadata = getMetadataForRegion(regionCode);
String nationalPrefix = metadata.getNationalPrefix();
// If no national prefix was found, we return null.
if (nationalPrefix.length() == 0) {
@@ -2038,8 +2141,9 @@
* metadata for the country is found.
*/
boolean isLeadingZeroPossible(int countryCallingCode) {
- PhoneMetadata mainMetadataForCallingCode = getMetadataForRegion(
- getRegionCodeForCountryCode(countryCallingCode));
+ PhoneMetadata mainMetadataForCallingCode =
+ getMetadataForRegionOrCallingCode(countryCallingCode,
+ getRegionCodeForCountryCode(countryCallingCode));
if (mainMetadataForCallingCode == null) {
return false;
}
@@ -2111,7 +2215,7 @@
* numbers, that would most likely be area codes) and length (obviously includes the
* length of area codes for fixed line numbers), it will return false for the
* subscriber-number-only version.
- * </ol
+ * </ol>
* @param number the number that needs to be checked
* @return a ValidationResult object which indicates whether the number is possible
*/
@@ -2126,6 +2230,7 @@
return ValidationResult.INVALID_COUNTRY_CODE;
}
String regionCode = getRegionCodeForCountryCode(countryCode);
+ // Metadata cannot be null because the country calling code is valid.
PhoneMetadata metadata = getMetadataForRegionOrCallingCode(countryCode, regionCode);
PhoneNumberDesc generalNumDesc = metadata.getGeneralDesc();
// Handling case of numbers with no metadata.
@@ -2679,6 +2784,7 @@
if (countryCode != 0) {
String phoneNumberRegion = getRegionCodeForCountryCode(countryCode);
if (!phoneNumberRegion.equals(defaultRegion)) {
+ // Metadata cannot be null because the country calling code is valid.
regionMetadata = getMetadataForRegionOrCallingCode(countryCode, phoneNumberRegion);
}
} else {
@@ -2945,13 +3051,12 @@
*/
// @VisibleForTesting
boolean canBeInternationallyDialled(PhoneNumber number) {
- String regionCode = getRegionCodeForNumber(number);
- if (!isValidRegionCode(regionCode)) {
+ PhoneMetadata metadata = getMetadataForRegion(getRegionCodeForNumber(number));
+ if (metadata == null) {
// Note numbers belonging to non-geographical entities (e.g. +800 numbers) are always
// internationally diallable, and will be caught here.
return true;
}
- PhoneMetadata metadata = getMetadataForRegion(regionCode);
String nationalSignificantNumber = getNationalSignificantNumber(number);
return !isNumberMatchingDesc(nationalSignificantNumber, metadata.getNoInternationalDialling());
}
diff --git a/java/src/com/android/i18n/phonenumbers/Phonemetadata.java b/java/src/com/android/i18n/phonenumbers/Phonemetadata.java
index bcf8a79..18d0d69 100644
--- a/java/src/com/android/i18n/phonenumbers/Phonemetadata.java
+++ b/java/src/com/android/i18n/phonenumbers/Phonemetadata.java
@@ -43,6 +43,7 @@
return this;
}
}
+
public static Builder newBuilder() {
return new Builder();
}
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_800 b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_800
index e958189..6a88bff 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_800
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_800
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_808 b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_808
index 8662916..495ce1d 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_808
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_808
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_888 b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_888
index 7cc7cff..8a3fef8 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_888
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_888
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_979 b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_979
index 0c143ce..8149b9d 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_979
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_979
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR
index e6e7fbb..84ab554 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT
index 751674c..3efec28 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU
index 7ce9c1e..ce19e04 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF
index c3880ea..370c7ac 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG
index ce23073..8ddd937 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL
index ce8a36e..2e74d26 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN
index 2105a58..ae35d25 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO
index 60b58b8..2c6db02 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE
index 872ea55..76e9213 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ
index 6813305..17ea11d 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ
index 348a5c3..6162eed 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC
index 409cea8..a0a80ce 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG
index 89b83de..7cb3234 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA
index 1b49771..5147cb6 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR
index 82bd30b..ee3e671 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR
index 9a2fc4d..e97492a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL
index b01451a..28ec7e6 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN
index 1ec08ab..a3f78a7 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT
index 04ee2d5..ef9ee02 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO
index de03296..56053cb 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP
index e4032ea..9f73300 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH
index e5792b0..158a8c2 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR
index 894849e..d8344af 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW
index 27a156e..2f5c836 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ
index 0fe135a..19626c3 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA
index 5ee5bdc..fab4304 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB
index e8b1b4b..cf18619 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI
index 76ad067..3672094 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA
index 909ac3c..66f55b8 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT
index 400503e..ee1ab06 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV
index 7d100a3..68b2ea3 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX
index 18e6361..f530abf 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY
index 8c42456..2f1dbbd 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC
index 8404529..b6bb11c 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG
index d3a53ac..253b2ed 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM
index d07a300..b600fa2 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF
index 6990570..dbd1ebe 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY
index 28f0b07..a1f46ea 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU
index d0d6578..fd33ba0 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB
index 579e741..04c6361 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD
index 0b0ae8a..3d5b238 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK
index 621c4cc..67ca01a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL
index 8f73182..84fbd5f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM
index 0c4fbb3..451daa8 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN
index 0350bb9..b1f337c 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL
index f6ced14..6d3fe55 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN
index 4f71d89..97d4609 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US
index f067453..5df5740 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ
index a1816d9..33d4e7f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA
index 68279de..82fbcb3 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java b/java/src/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java
index f940e1b..561ee72 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java
@@ -17,6 +17,7 @@
package com.android.i18n.phonenumbers.geocoding;
import com.android.i18n.phonenumbers.PhoneNumberUtil;
+import com.android.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberType;
import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
import java.io.IOException;
@@ -148,7 +149,9 @@
* name of the geographical area the phone number is from if more detailed information is
* available.
*
- * <p>This method assumes the validity of the number passed in has already been checked.
+ * <p>This method assumes the validity of the number passed in has already been checked, and that
+ * the number is suitable for geocoding. We consider fixed-line and mobile numbers possible
+ * candidates for geocoding.
*
* @param number a valid phone number for which we want to get a text description
* @param languageCode the language code for which the description should be written
@@ -211,8 +214,11 @@
* string if the number passed in is invalid
*/
public String getDescriptionForNumber(PhoneNumber number, Locale languageCode) {
- if (!phoneUtil.isValidNumber(number)) {
+ PhoneNumberType numberType = phoneUtil.getNumberType(number);
+ if (numberType == PhoneNumberType.UNKNOWN) {
return "";
+ } else if (!canBeGeocoded(numberType)) {
+ return getCountryNameForNumber(number, languageCode);
}
return getDescriptionForValidNumber(number, languageCode);
}
@@ -231,13 +237,27 @@
*/
public String getDescriptionForNumber(PhoneNumber number, Locale languageCode,
String userRegion) {
- if (!phoneUtil.isValidNumber(number)) {
+ PhoneNumberType numberType = phoneUtil.getNumberType(number);
+ if (numberType == PhoneNumberType.UNKNOWN) {
return "";
+ } else if (!canBeGeocoded(numberType)) {
+ return getCountryNameForNumber(number, languageCode);
}
return getDescriptionForValidNumber(number, languageCode, userRegion);
}
/**
+ * A similar method is implemented as PhoneNumberUtil.isNumberGeographical, which performs a
+ * stricter check, as it determines if a number has a geographical association. Also, if new
+ * phone number types were added, we should check if this other method should be updated too.
+ */
+ private boolean canBeGeocoded(PhoneNumberType numberType) {
+ return (numberType == PhoneNumberType.FIXED_LINE ||
+ numberType == PhoneNumberType.MOBILE ||
+ numberType == PhoneNumberType.FIXED_LINE_OR_MOBILE);
+ }
+
+ /**
* Returns an area-level text description in the given language for the given phone number.
*
* @param number the phone number for which we want to get a text description
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1201_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1201_en
index bfb7284..b9f936f 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1201_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1201_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1203_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1203_en
index 6d49709..96a4f73 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1203_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1203_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1204_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1204_en
index 614c39d..97d49d1 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1204_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1204_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1205_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1205_en
index 3097e30..3237db5 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1205_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1205_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1206_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1206_en
index 816ec8d..b7b2e90 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1206_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1206_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1207_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1207_en
index 8a07093..4354fe4 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1207_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1207_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1208_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1208_en
index 919ab5f..0aea0b8 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1208_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1208_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1214_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1214_en
index be95d32..83e5626 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1214_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1214_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1215_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1215_en
index 1036ab1..72deff3 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1215_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1215_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1216_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1216_en
index f527d56..d5da91a 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1216_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1216_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1217_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1217_en
index a83682c..89c510c 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1217_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1217_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1218_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1218_en
index 1d7a05b..8793bd4 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1218_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1218_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1219_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1219_en
index 339e944..006ee34 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1219_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1219_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1231_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1231_en
index c993c36..dbd6fcd 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1231_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1231_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1239_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1239_en
index 042ce57..66b5df7 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1239_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1239_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1240_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1240_en
index 8b054e1..dcf998d 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1240_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1240_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1248_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1248_en
index d2ae6e2..ddbbf23 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1248_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1248_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1250_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1250_en
index 0c6ad86..23236a5 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1250_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1250_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1252_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1252_en
index 1bca80f..855af49 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1252_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1252_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1256_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1256_en
index ad4be8b..f8339e0 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1256_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1256_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1260_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1260_en
index aaba3a6..fb87487 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1260_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1260_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1262_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1262_en
index 46d7cc9..f01cd73 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1262_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1262_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1270_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1270_en
index 511cf8f..286475e 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1270_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1270_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1276_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1276_en
index 488106b..d1589cc 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1276_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1276_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1281_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1281_en
index 6bea3ed..e45f134 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1281_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1281_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1301_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1301_en
index 5e9fcbb..d2011d2 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1301_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1301_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1302_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1302_en
index b739c04..4bb2e5c 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1302_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1302_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1303_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1303_en
index e663f98..707c474 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1303_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1303_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1304_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1304_en
index 04a3c57..2300e19 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1304_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1304_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1305_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1305_en
index 69bb00a..506838b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1305_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1305_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1307_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1307_en
index 1fe1b0e..b785862 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1307_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1307_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1310_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1310_en
index 18fb6d1..178895d 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1310_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1310_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1313_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1313_en
index ccc2514..b1b4015 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1313_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1313_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1314_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1314_en
index d54665f..bc33a0d 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1314_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1314_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1316_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1316_en
index 3c7b03a..742fdef 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1316_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1316_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1317_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1317_en
index 61a443c..72e3888 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1317_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1317_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1318_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1318_en
index a52084b..94cabb4 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1318_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1318_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1321_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1321_en
index 7696e6b..463311d 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1321_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1321_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1330_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1330_en
index ce3078a..45939b5 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1330_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1330_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1334_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1334_en
index 1cec5ea..944f5a4 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1334_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1334_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1336_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1336_en
index 7c2e347..9a88e1c 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1336_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1336_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1345_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1345_en
new file mode 100644
index 0000000..829b666
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1345_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1352_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1352_en
index 47e5610..277ec22 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1352_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1352_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1360_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1360_en
index f741062..bf9f47f 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1360_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1360_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1386_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1386_en
index f81e4c0..d4f5237 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1386_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1386_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1402_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1402_en
index ef231cf..49917e5 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1402_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1402_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1404_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1404_en
index 6711a72..e091ad7 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1404_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1404_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1405_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1405_en
index 1da9a43..929ccfc 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1405_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1405_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1406_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1406_en
index 8a6c5b4..7cede7d 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1406_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1406_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1407_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1407_en
index 0f230ae..94b9f33 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1407_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1407_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1408_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1408_en
index e5fe7cf..077b03f 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1408_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1408_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1409_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1409_en
index f0bcc3c..606862c 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1409_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1409_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1410_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1410_en
index 8b97ebd..94b605e 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1410_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1410_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1412_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1412_en
index bf074a9..7494303 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1412_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1412_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1414_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1414_en
index eeea85a..3f0394d 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1414_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1414_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1415_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1415_en
index ee43626..55e0b1c 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1415_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1415_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1416_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1416_en
index b386925..456d76c 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1416_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1416_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1417_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1417_en
index 309b341..c917c2c 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1417_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1417_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1419_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1419_en
index 198fdd7..4b7d80a 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1419_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1419_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1423_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1423_en
index 0aad258..5f972ff 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1423_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1423_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1425_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1425_en
index 2563be7..b52fc9b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1425_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1425_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1434_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1434_en
index ed75d33..58e40d0 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1434_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1434_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1435_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1435_en
index ef84cd5..828a04b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1435_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1435_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1450_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1450_en
index 48fd1db..ff092a3 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1450_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1450_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1478_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1478_en
index 962478d..4c66626 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1478_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1478_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1479_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1479_en
index 475fcc1..1d9a2ca 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1479_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1479_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1480_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1480_en
index 2b91c33..ab0dfec 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1480_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1480_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1501_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1501_en
index c45bf8d..aaba372 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1501_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1501_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1503_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1503_en
index 281efad..f8faec9 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1503_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1503_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1504_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1504_en
index b57a1b6..eb9f4af 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1504_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1504_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1505_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1505_en
index c874e6d..cd31ba8 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1505_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1505_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1506_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1506_en
index 39704d7..4fd91ee 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1506_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1506_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1507_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1507_en
index 55c8ce5..f02103a 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1507_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1507_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1509_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1509_en
index 7a36f9a..d702198 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1509_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1509_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1510_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1510_en
index 8220a33..caa9cd8 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1510_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1510_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1513_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1513_en
index db2c54c..0205e1d 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1513_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1513_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1515_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1515_en
index 0547084..bc8ec69 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1515_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1515_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1518_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1518_en
index 17f4f39..e4e429a 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1518_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1518_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1519_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1519_en
index d942f22..1604d15 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1519_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1519_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1520_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1520_en
index 986969c..fe9b45f 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1520_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1520_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1540_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1540_en
index e143cc7..1610606 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1540_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1540_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1559_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1559_en
index 8ead4a9..af8ece3 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1559_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1559_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1561_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1561_en
index 64e0df5..b100300 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1561_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1561_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1573_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1573_en
index 6072681..3d4b824 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1573_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1573_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1575_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1575_en
index 8977a0c..4d9c7b6 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1575_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1575_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1580_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1580_en
index 1be41a7..b9e64d1 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1580_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1580_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1585_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1585_en
index 29c4ff2..1c60a05 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1585_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1585_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1602_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1602_en
index 6226a8d..ae2cb2e 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1602_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1602_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1603_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1603_en
index 5ffd46e..dd7419d 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1603_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1603_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1604_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1604_en
index 35486bd..101bfbc 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1604_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1604_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1605_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1605_en
index 039a97c..959b927 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1605_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1605_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1606_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1606_en
index a0b4a85..c546a4a 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1606_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1606_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1607_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1607_en
index bfb5611..af289ec 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1607_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1607_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1608_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1608_en
index 5946b93..0e92f28 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1608_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1608_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1609_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1609_en
index cb6ac31..bbadf10 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1609_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1609_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1610_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1610_en
index f177a7f..4f1dcaa 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1610_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1610_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1612_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1612_en
index 396c6fd..edfbcb0 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1612_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1612_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1613_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1613_en
index 4479bf2..44106d9 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1613_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1613_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1614_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1614_en
index 2082f0f..546855b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1614_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1614_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1615_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1615_en
index 767825a..aa67596 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1615_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1615_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1616_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1616_en
index f3a8432..4bf08fe 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1616_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1616_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1617_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1617_en
index 426df63..e774fe6 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1617_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1617_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1618_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1618_en
index b8749d1..67928b4 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1618_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1618_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1619_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1619_en
index 872b63a..9b9620c 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1619_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1619_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1630_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1630_en
index 8aa798d..75a8e81 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1630_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1630_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1631_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1631_en
index 464da02..ac5fd0f 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1631_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1631_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1636_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1636_en
index 481957a..2935ef0 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1636_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1636_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1641_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1641_en
index 5c33288..418ffc6 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1641_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1641_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1661_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1661_en
index 07ecf5f..5dbbe41 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1661_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1661_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1678_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1678_en
index 5e59450..0564d3d 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1678_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1678_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1682_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1682_en
index 150c61e..1fb2578 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1682_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1682_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1701_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1701_en
index 8c6bf6c..662c576 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1701_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1701_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1702_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1702_en
index f92724b..6fb5a6e 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1702_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1702_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1703_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1703_en
index 7db5cad..b183761 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1703_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1703_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1705_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1705_en
index 1389dd0..b93a8c5 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1705_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1705_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1706_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1706_en
index 5e79641..beebf4d 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1706_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1706_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1707_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1707_en
index 31c062b..23b3e9f 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1707_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1707_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1708_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1708_en
index 9b0cf4d..4769049 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1708_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1708_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1709_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1709_en
index ac9a808..ba72b87 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1709_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1709_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1714_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1714_en
index cfc609b..87b8364 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1714_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1714_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1715_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1715_en
index 8469e59..3eec5b5 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1715_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1715_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1716_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1716_en
index cccb935..5f236bc 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1716_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1716_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1718_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1718_en
index 8710319..b08a47b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1718_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1718_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1719_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1719_en
index a553d0b..b8d374a 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1719_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1719_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1720_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1720_en
index b99f8a4..9647b81 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1720_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1720_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1724_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1724_en
index 4a8e38a..3e61b8b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1724_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1724_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1727_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1727_en
index d61bfc2..c723c81 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1727_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1727_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1732_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1732_en
index 8d7e0b1..64fdccb 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1732_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1732_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1734_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1734_en
index 74bd262..d9628ea 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1734_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1734_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1740_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1740_en
index 7054b20..f4a452b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1740_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1740_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1757_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1757_en
index 9c1082d..52b510b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1757_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1757_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1760_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1760_en
index e02b6f4..26dd28b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1760_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1760_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1763_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1763_en
index 93e872b..aeb026a 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1763_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1763_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1765_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1765_en
index c43016a..3e7c710 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1765_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1765_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1770_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1770_en
index 322e453..a52387b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1770_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1770_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1772_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1772_en
index 523b2f1..aa4afea 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1772_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1772_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1780_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1780_en
index 69d9719..dd132f4 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1780_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1780_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1785_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1785_en
index c8900aa..05e93ff 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1785_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1785_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1801_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1801_en
index 5ff2628..fe0ac75 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1801_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1801_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1802_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1802_en
index 4d3faae..e995d92 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1802_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1802_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1803_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1803_en
index 43cbdf4..fc6b669 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1803_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1803_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1805_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1805_en
index 022a981..a714b49 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1805_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1805_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1808_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1808_en
index 74408f0..308ed58 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1808_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1808_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1810_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1810_en
index db3ba66..3971e7f 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1810_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1810_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1812_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1812_en
index af5c14e..ccfec3c 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1812_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1812_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1813_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1813_en
index 35aa8ee..d9b5c13 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1813_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1813_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1814_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1814_en
index ee8c48e..b693409 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1814_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1814_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1817_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1817_en
index c160bf5..abb2962 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1817_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1817_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1819_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1819_en
index ababd07..b6038a0 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1819_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1819_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1828_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1828_en
index 39ac69a..0e3ad35 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1828_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1828_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1832_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1832_en
index e42842c..66fb4ba 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1832_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1832_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1843_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1843_en
index e3dff31..76295a8 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1843_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1843_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1845_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1845_en
index 0a0da01..2b66eff 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1845_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1845_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1847_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1847_en
index d765fd1..150397f 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1847_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1847_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1850_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1850_en
index 6e7f105..ca7cf3a 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1850_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1850_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1856_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1856_en
index d04d220..0fa4d6f 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1856_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1856_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1858_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1858_en
index c4351db..6a48b4b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1858_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1858_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1859_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1859_en
index 1d13302..1841746 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1859_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1859_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1860_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1860_en
index c3cc31f..1beee46 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1860_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1860_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1863_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1863_en
index a8568fa..20b3cd0 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1863_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1863_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1864_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1864_en
index 73963f0..c1e5ef8 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1864_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1864_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1870_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1870_en
index a8fc86a..dce1621 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1870_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1870_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1902_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1902_en
index daae6ff..bd9e005 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1902_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1902_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1903_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1903_en
index 80ac3d5..df8ee08 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1903_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1903_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1905_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1905_en
index b29fbf0..4749ce8 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1905_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1905_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1907_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1907_en
index 7d7feda..a215f50 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1907_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1907_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1908_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1908_en
index 8428b04..36d2177 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1908_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1908_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1910_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1910_en
index a599b5c..f994341 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1910_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1910_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1912_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1912_en
index 569493c..913ca39 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1912_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1912_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1914_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1914_en
index 6a15d24..1632ad4 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1914_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1914_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1915_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1915_en
index 34b9a4c..85bea6d 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1915_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1915_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1918_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1918_en
index 4dc6d5e..1e99365 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1918_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1918_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1919_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1919_en
index 30231aa..f1f5bbb 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1919_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1919_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1920_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1920_en
index 25b9df2..6518b31 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1920_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1920_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1925_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1925_en
index 6e47351..82a7a84 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1925_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1925_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1931_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1931_en
index b60a94d..c112a5a 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1931_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1931_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1936_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1936_en
index 8964ddc..475e386 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1936_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1936_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1937_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1937_en
index 33b110f..590b421 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1937_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1937_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1941_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1941_en
index 08236c3..281f0a9 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1941_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1941_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1951_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1951_en
index 52070ee..43b1520 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1951_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1951_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1972_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1972_en
index 172c9b5..8480a58 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1972_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1972_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1973_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1973_en
index 78c7cde..fc398c2 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1973_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1973_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1978_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1978_en
index 6e85a73..404c6d6 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/1978_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1978_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/30_el b/java/src/com/android/i18n/phonenumbers/geocoding/data/30_el
index 3ae0b10..5f26cf5 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/30_el
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/30_el
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/30_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/30_en
index 8211506..4d7e219 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/30_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/30_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/353_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/353_en
new file mode 100644
index 0000000..b207f52
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/353_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/40_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/40_en
new file mode 100644
index 0000000..d5704a3
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/40_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/40_ro b/java/src/com/android/i18n/phonenumbers/geocoding/data/40_ro
new file mode 100644
index 0000000..6c56537
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/40_ro
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/57_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/57_en
new file mode 100644
index 0000000..347d96b
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/57_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/62_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/62_en
new file mode 100644
index 0000000..557ddf7
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/62_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/62_id b/java/src/com/android/i18n/phonenumbers/geocoding/data/62_id
new file mode 100644
index 0000000..b73d951
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/62_id
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/66_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/66_en
new file mode 100644
index 0000000..cb2807d
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/66_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/66_th b/java/src/com/android/i18n/phonenumbers/geocoding/data/66_th
new file mode 100644
index 0000000..5e86e0b
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/66_th
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/7_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/7_en
index 7ac3c1d..becd121 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/7_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/7_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/7_ru b/java/src/com/android/i18n/phonenumbers/geocoding/data/7_ru
new file mode 100644
index 0000000..746a1c6
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/7_ru
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/82_fr b/java/src/com/android/i18n/phonenumbers/geocoding/data/82_fr
new file mode 100644
index 0000000..ff3f632
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/82_fr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/91_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/91_en
new file mode 100644
index 0000000..b7da96a
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/91_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/98_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/98_en
new file mode 100644
index 0000000..e0c7504
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/98_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/98_fa b/java/src/com/android/i18n/phonenumbers/geocoding/data/98_fa
new file mode 100644
index 0000000..200e111
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/98_fa
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/config b/java/src/com/android/i18n/phonenumbers/geocoding/data/config
index 9c46be3..601c283 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/config
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/config
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/AsYouTypeFormatterTest.java b/java/test/com/android/i18n/phonenumbers/AsYouTypeFormatterTest.java
index e572fe0..1913cdb 100644
--- a/java/test/com/android/i18n/phonenumbers/AsYouTypeFormatterTest.java
+++ b/java/test/com/android/i18n/phonenumbers/AsYouTypeFormatterTest.java
@@ -88,6 +88,35 @@
assertEquals("+819012345678901", formatter.inputDigit('1'));
}
+ public void testCountryWithSpaceInNationalPrefixFormattingRule() {
+ AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.BY);
+ assertEquals("8", formatter.inputDigit('8'));
+ assertEquals("88", formatter.inputDigit('8'));
+ assertEquals("881", formatter.inputDigit('1'));
+ assertEquals("8 819", formatter.inputDigit('9'));
+ assertEquals("8 8190", formatter.inputDigit('0'));
+ // The formatting rule for 5 digit numbers states that no space should be present after the
+ // national prefix.
+ assertEquals("881 901", formatter.inputDigit('1'));
+ assertEquals("8 819 012", formatter.inputDigit('2'));
+ // Too long, no formatting rule applies.
+ assertEquals("88190123", formatter.inputDigit('3'));
+ }
+
+ public void testCountryWithSpaceInNationalPrefixFormattingRuleAndLongNdd() {
+ AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.BY);
+ assertEquals("9", formatter.inputDigit('9'));
+ assertEquals("99", formatter.inputDigit('9'));
+ assertEquals("999", formatter.inputDigit('9'));
+ assertEquals("9999", formatter.inputDigit('9'));
+ assertEquals("99999 ", formatter.inputDigit('9'));
+ assertEquals("99999 1", formatter.inputDigit('1'));
+ assertEquals("99999 12", formatter.inputDigit('2'));
+ assertEquals("99999 123", formatter.inputDigit('3'));
+ assertEquals("99999 1234", formatter.inputDigit('4'));
+ assertEquals("99999 12 345", formatter.inputDigit('5'));
+ }
+
public void testAYTFUS() {
AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US);
assertEquals("6", formatter.inputDigit('6'));
@@ -753,7 +782,7 @@
}
public void testAYTFLongIDD_AU() {
- AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("AU");
+ AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.AU);
// 0011 1 650 253 2250
assertEquals("0", formatter.inputDigit('0'));
assertEquals("00", formatter.inputDigit('0'));
@@ -810,7 +839,7 @@
}
public void testAYTFLongIDD_KR() {
- AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("KR");
+ AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.KR);
// 00300 1 650 253 2222
assertEquals("0", formatter.inputDigit('0'));
assertEquals("00", formatter.inputDigit('0'));
@@ -831,7 +860,7 @@
}
public void testAYTFLongNDD_KR() {
- AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("KR");
+ AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.KR);
// 08811-9876-7890
assertEquals("0", formatter.inputDigit('0'));
assertEquals("08", formatter.inputDigit('8'));
@@ -867,7 +896,7 @@
}
public void testAYTFLongNDD_SG() {
- AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("SG");
+ AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.SG);
// 777777 9876 7890
assertEquals("7", formatter.inputDigit('7'));
assertEquals("77", formatter.inputDigit('7'));
@@ -884,4 +913,194 @@
assertEquals("777777 9876 789", formatter.inputDigit('9'));
assertEquals("777777 9876 7890", formatter.inputDigit('0'));
}
+
+ public void testAYTFShortNumberFormattingFix_AU() {
+ // For Australia, the national prefix is not optional when formatting.
+ AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.AU);
+
+ // 1234567890 - For leading digit 1, the national prefix formatting rule has first group only.
+ assertEquals("1", formatter.inputDigit('1'));
+ assertEquals("12", formatter.inputDigit('2'));
+ assertEquals("123", formatter.inputDigit('3'));
+ assertEquals("1234", formatter.inputDigit('4'));
+ assertEquals("1234 5", formatter.inputDigit('5'));
+ assertEquals("1234 56", formatter.inputDigit('6'));
+ assertEquals("1234 567", formatter.inputDigit('7'));
+ assertEquals("1234 567 8", formatter.inputDigit('8'));
+ assertEquals("1234 567 89", formatter.inputDigit('9'));
+ assertEquals("1234 567 890", formatter.inputDigit('0'));
+
+ // +61 1234 567 890 - Test the same number, but with the country code.
+ formatter.clear();
+ assertEquals("+", formatter.inputDigit('+'));
+ assertEquals("+6", formatter.inputDigit('6'));
+ assertEquals("+61 ", formatter.inputDigit('1'));
+ assertEquals("+61 1", formatter.inputDigit('1'));
+ assertEquals("+61 12", formatter.inputDigit('2'));
+ assertEquals("+61 123", formatter.inputDigit('3'));
+ assertEquals("+61 1234", formatter.inputDigit('4'));
+ assertEquals("+61 1234 5", formatter.inputDigit('5'));
+ assertEquals("+61 1234 56", formatter.inputDigit('6'));
+ assertEquals("+61 1234 567", formatter.inputDigit('7'));
+ assertEquals("+61 1234 567 8", formatter.inputDigit('8'));
+ assertEquals("+61 1234 567 89", formatter.inputDigit('9'));
+ assertEquals("+61 1234 567 890", formatter.inputDigit('0'));
+
+ // 212345678 - For leading digit 2, the national prefix formatting rule puts the national prefix
+ // before the first group.
+ formatter.clear();
+ assertEquals("0", formatter.inputDigit('0'));
+ assertEquals("02", formatter.inputDigit('2'));
+ assertEquals("021", formatter.inputDigit('1'));
+ assertEquals("02 12", formatter.inputDigit('2'));
+ assertEquals("02 123", formatter.inputDigit('3'));
+ assertEquals("02 1234", formatter.inputDigit('4'));
+ assertEquals("02 1234 5", formatter.inputDigit('5'));
+ assertEquals("02 1234 56", formatter.inputDigit('6'));
+ assertEquals("02 1234 567", formatter.inputDigit('7'));
+ assertEquals("02 1234 5678", formatter.inputDigit('8'));
+
+ // 212345678 - Test the same number, but without the leading 0.
+ formatter.clear();
+ assertEquals("2", formatter.inputDigit('2'));
+ assertEquals("21", formatter.inputDigit('1'));
+ assertEquals("212", formatter.inputDigit('2'));
+ assertEquals("2123", formatter.inputDigit('3'));
+ assertEquals("21234", formatter.inputDigit('4'));
+ assertEquals("212345", formatter.inputDigit('5'));
+ assertEquals("2123456", formatter.inputDigit('6'));
+ assertEquals("21234567", formatter.inputDigit('7'));
+ assertEquals("212345678", formatter.inputDigit('8'));
+
+ // +61 2 1234 5678 - Test the same number, but with the country code.
+ formatter.clear();
+ assertEquals("+", formatter.inputDigit('+'));
+ assertEquals("+6", formatter.inputDigit('6'));
+ assertEquals("+61 ", formatter.inputDigit('1'));
+ assertEquals("+61 2", formatter.inputDigit('2'));
+ assertEquals("+61 21", formatter.inputDigit('1'));
+ assertEquals("+61 2 12", formatter.inputDigit('2'));
+ assertEquals("+61 2 123", formatter.inputDigit('3'));
+ assertEquals("+61 2 1234", formatter.inputDigit('4'));
+ assertEquals("+61 2 1234 5", formatter.inputDigit('5'));
+ assertEquals("+61 2 1234 56", formatter.inputDigit('6'));
+ assertEquals("+61 2 1234 567", formatter.inputDigit('7'));
+ assertEquals("+61 2 1234 5678", formatter.inputDigit('8'));
+ }
+
+ public void testAYTFShortNumberFormattingFix_KR() {
+ // For Korea, the national prefix is not optional when formatting, and the national prefix
+ // formatting rule doesn't consist of only the first group.
+ AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.KR);
+
+ // 111
+ assertEquals("1", formatter.inputDigit('1'));
+ assertEquals("11", formatter.inputDigit('1'));
+ assertEquals("111", formatter.inputDigit('1'));
+
+ // 114
+ formatter.clear();
+ assertEquals("1", formatter.inputDigit('1'));
+ assertEquals("11", formatter.inputDigit('1'));
+ assertEquals("114", formatter.inputDigit('4'));
+
+ // 13121234 - Test a mobile number without the national prefix. Even though it is not an
+ // emergency number, it should be formatted as a block.
+ formatter.clear();
+ assertEquals("1", formatter.inputDigit('1'));
+ assertEquals("13", formatter.inputDigit('3'));
+ assertEquals("131", formatter.inputDigit('1'));
+ assertEquals("1312", formatter.inputDigit('2'));
+ assertEquals("13121", formatter.inputDigit('1'));
+ assertEquals("131212", formatter.inputDigit('2'));
+ assertEquals("1312123", formatter.inputDigit('3'));
+ assertEquals("13121234", formatter.inputDigit('4'));
+
+ // +82 131-2-1234 - Test the same number, but with the country code.
+ formatter.clear();
+ assertEquals("+", formatter.inputDigit('+'));
+ assertEquals("+8", formatter.inputDigit('8'));
+ assertEquals("+82 ", formatter.inputDigit('2'));
+ assertEquals("+82 1", formatter.inputDigit('1'));
+ assertEquals("+82 13", formatter.inputDigit('3'));
+ assertEquals("+82 131", formatter.inputDigit('1'));
+ assertEquals("+82 131-2", formatter.inputDigit('2'));
+ assertEquals("+82 131-2-1", formatter.inputDigit('1'));
+ assertEquals("+82 131-2-12", formatter.inputDigit('2'));
+ assertEquals("+82 131-2-123", formatter.inputDigit('3'));
+ assertEquals("+82 131-2-1234", formatter.inputDigit('4'));
+ }
+
+ public void testAYTFShortNumberFormattingFix_MX() {
+ // For Mexico, the national prefix is optional when formatting.
+ AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.MX);
+
+ // 911
+ assertEquals("9", formatter.inputDigit('9'));
+ assertEquals("91", formatter.inputDigit('1'));
+ assertEquals("911", formatter.inputDigit('1'));
+
+ // 800 123 4567 - Test a toll-free number, which should have a formatting rule applied to it
+ // even though it doesn't begin with the national prefix.
+ formatter.clear();
+ assertEquals("8", formatter.inputDigit('8'));
+ assertEquals("80", formatter.inputDigit('0'));
+ assertEquals("800", formatter.inputDigit('0'));
+ assertEquals("800 1", formatter.inputDigit('1'));
+ assertEquals("800 12", formatter.inputDigit('2'));
+ assertEquals("800 123", formatter.inputDigit('3'));
+ assertEquals("800 123 4", formatter.inputDigit('4'));
+ assertEquals("800 123 45", formatter.inputDigit('5'));
+ assertEquals("800 123 456", formatter.inputDigit('6'));
+ assertEquals("800 123 4567", formatter.inputDigit('7'));
+
+ // +52 800 123 4567 - Test the same number, but with the country code.
+ formatter.clear();
+ assertEquals("+", formatter.inputDigit('+'));
+ assertEquals("+5", formatter.inputDigit('5'));
+ assertEquals("+52 ", formatter.inputDigit('2'));
+ assertEquals("+52 8", formatter.inputDigit('8'));
+ assertEquals("+52 80", formatter.inputDigit('0'));
+ assertEquals("+52 800", formatter.inputDigit('0'));
+ assertEquals("+52 800 1", formatter.inputDigit('1'));
+ assertEquals("+52 800 12", formatter.inputDigit('2'));
+ assertEquals("+52 800 123", formatter.inputDigit('3'));
+ assertEquals("+52 800 123 4", formatter.inputDigit('4'));
+ assertEquals("+52 800 123 45", formatter.inputDigit('5'));
+ assertEquals("+52 800 123 456", formatter.inputDigit('6'));
+ assertEquals("+52 800 123 4567", formatter.inputDigit('7'));
+ }
+
+ public void testAYTFNoNationalPrefix() {
+ AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.IT);
+
+ assertEquals("3", formatter.inputDigit('3'));
+ assertEquals("33", formatter.inputDigit('3'));
+ assertEquals("333", formatter.inputDigit('3'));
+ assertEquals("333 3", formatter.inputDigit('3'));
+ assertEquals("333 33", formatter.inputDigit('3'));
+ assertEquals("333 333", formatter.inputDigit('3'));
+ }
+
+ public void testAYTFShortNumberFormattingFix_US() {
+ // For the US, an initial 1 is treated specially.
+ AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US);
+
+ // 101 - Test that the initial 1 is not treated as a national prefix.
+ assertEquals("1", formatter.inputDigit('1'));
+ assertEquals("10", formatter.inputDigit('0'));
+ assertEquals("101", formatter.inputDigit('1'));
+
+ // 112 - Test that the initial 1 is not treated as a national prefix.
+ formatter.clear();
+ assertEquals("1", formatter.inputDigit('1'));
+ assertEquals("11", formatter.inputDigit('1'));
+ assertEquals("112", formatter.inputDigit('2'));
+
+ // 122 - Test that the initial 1 is treated as a national prefix.
+ formatter.clear();
+ assertEquals("1", formatter.inputDigit('1'));
+ assertEquals("12", formatter.inputDigit('2'));
+ assertEquals("1 22", formatter.inputDigit('2'));
+ }
}
diff --git a/java/test/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMapForTesting.java b/java/test/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMapForTesting.java
index 8f64e42..ada7c82 100644
--- a/java/test/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMapForTesting.java
+++ b/java/test/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMapForTesting.java
@@ -31,10 +31,10 @@
// countries sharing a calling code, such as the NANPA countries, the one
// indicated with "isMainCountryForCode" in the metadata should be first.
static Map<Integer, List<String>> getCountryCodeToRegionCodeMap() {
- // The capacity is set to 24 as there are 18 different country codes,
+ // The capacity is set to 25 as there are 19 different country codes,
// and this offers a load factor of roughly 0.75.
Map<Integer, List<String>> countryCodeToRegionCodeMap =
- new HashMap<Integer, List<String>>(24);
+ new HashMap<Integer, List<String>>(25);
ArrayList<String> listWithRegionCode;
@@ -101,6 +101,10 @@
countryCodeToRegionCodeMap.put(262, listWithRegionCode);
listWithRegionCode = new ArrayList<String>(1);
+ listWithRegionCode.add("BY");
+ countryCodeToRegionCodeMap.put(375, listWithRegionCode);
+
+ listWithRegionCode = new ArrayList<String>(1);
listWithRegionCode.add("AD");
countryCodeToRegionCodeMap.put(376, listWithRegionCode);
diff --git a/java/test/com/android/i18n/phonenumbers/PhoneNumberUtilTest.java b/java/test/com/android/i18n/phonenumbers/PhoneNumberUtilTest.java
index 8c3e57f..430a4c0 100644
--- a/java/test/com/android/i18n/phonenumbers/PhoneNumberUtilTest.java
+++ b/java/test/com/android/i18n/phonenumbers/PhoneNumberUtilTest.java
@@ -37,6 +37,8 @@
*/
public class PhoneNumberUtilTest extends TestMetadataTestCase {
// Set up some test numbers to re-use.
+ // TODO: Rewrite this as static functions that return new numbers each time to avoid
+ // any risk of accidental changes to mutable static state affecting many tests.
private static final PhoneNumber ALPHA_NUMERIC_NUMBER =
new PhoneNumber().setCountryCode(1).setNationalNumber(80074935247L);
private static final PhoneNumber AR_MOBILE =
@@ -106,11 +108,37 @@
new PhoneNumber().setCountryCode(800).setNationalNumber(123456789L);
private static final PhoneNumber UNIVERSAL_PREMIUM_RATE =
new PhoneNumber().setCountryCode(979).setNationalNumber(123456789L);
+ private static final PhoneNumber UNKNOWN_COUNTRY_CODE_NO_RAW_INPUT =
+ new PhoneNumber().setCountryCode(2).setNationalNumber(12345L);
public void testGetSupportedRegions() {
assertTrue(phoneUtil.getSupportedRegions().size() > 0);
}
+ public void testGetInstanceLoadBadMetadata() {
+ assertNull(phoneUtil.getMetadataForRegion("No Such Region"));
+ assertNull(phoneUtil.getMetadataForNonGeographicalRegion(-1));
+ }
+
+ public void testMissingMetadataFileThrowsRuntimeException() {
+ // In normal usage we should never get a state where we are asking to load metadata that doesn't
+ // exist. However if the library is packaged incorrectly in the jar, this could happen and the
+ // best we can do is make sure the exception has the file name in it.
+ try {
+ phoneUtil.loadMetadataFromFile("no/such/file", "XX", -1);
+ fail("expected exception");
+ } catch (RuntimeException e) {
+ assertTrue("Unexpected error: " + e, e.toString().contains("no/such/file_XX"));
+ }
+ try {
+ phoneUtil.loadMetadataFromFile(
+ "no/such/file", PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY, 123);
+ fail("expected exception");
+ } catch (RuntimeException e) {
+ assertTrue("Unexpected error: " + e, e.getMessage().contains("no/such/file_123"));
+ }
+ }
+
public void testGetInstanceLoadUSMetadata() {
PhoneMetadata metadata = phoneUtil.getMetadataForRegion(RegionCode.US);
assertEquals("US", metadata.getId());
@@ -178,10 +206,18 @@
assertEquals("12345678", metadata.getTollFree().getExampleNumber());
}
+ public void testIsNumberGeographical() {
+ assertFalse(phoneUtil.isNumberGeographical(BS_MOBILE)); // Bahamas, mobile phone number.
+ assertTrue(phoneUtil.isNumberGeographical(AU_NUMBER)); // Australian fixed line number.
+ assertFalse(phoneUtil.isNumberGeographical(INTERNATIONAL_TOLL_FREE)); // International toll
+ // free number.
+ }
+
public void testIsLeadingZeroPossible() {
assertTrue(phoneUtil.isLeadingZeroPossible(39)); // Italy
assertFalse(phoneUtil.isLeadingZeroPossible(1)); // USA
- assertFalse(phoneUtil.isLeadingZeroPossible(800)); // International toll free numbers
+ assertTrue(phoneUtil.isLeadingZeroPossible(800)); // International toll free
+ assertFalse(phoneUtil.isLeadingZeroPossible(979)); // International premium-rate
assertFalse(phoneUtil.isLeadingZeroPossible(888)); // Not in metadata file, just default to
// false.
}
@@ -615,6 +651,10 @@
assertEquals("+5492234654321", phoneUtil.format(arMobile, PhoneNumberFormat.E164));
// We don't support this for the US so there should be no change.
assertEquals("650 253 0000", phoneUtil.formatNationalNumberWithCarrierCode(US_NUMBER, "15"));
+
+ // Invalid country code should just get the NSN.
+ assertEquals("12345",
+ phoneUtil.formatNationalNumberWithCarrierCode(UNKNOWN_COUNTRY_CODE_NO_RAW_INPUT, "89"));
}
public void testFormatWithPreferredCarrierCode() {
@@ -880,6 +920,10 @@
assertEquals("*1234", phoneUtil.formatInOriginalFormat(starNumber, RegionCode.JP));
PhoneNumber numberWithoutStar = phoneUtil.parseAndKeepRawInput("1234", RegionCode.JP);
assertEquals("1234", phoneUtil.formatInOriginalFormat(numberWithoutStar, RegionCode.JP));
+
+ // Test an invalid national number without raw input is just formatted as the national number.
+ assertEquals("650253000",
+ phoneUtil.formatInOriginalFormat(US_SHORT_BY_ONE_NUMBER, RegionCode.US));
}
public void testIsPremiumRate() {
@@ -1088,6 +1132,17 @@
assertEquals(RegionCode.UN001, phoneUtil.getRegionCodeForNumber(UNIVERSAL_PREMIUM_RATE));
}
+ public void testGetRegionCodesForCountryCode() {
+ List<String> regionCodesForNANPA = phoneUtil.getRegionCodesForCountryCode(1);
+ assertTrue(regionCodesForNANPA.contains(RegionCode.US));
+ assertTrue(regionCodesForNANPA.contains(RegionCode.BS));
+ assertTrue(phoneUtil.getRegionCodesForCountryCode(44).contains(RegionCode.GB));
+ assertTrue(phoneUtil.getRegionCodesForCountryCode(49).contains(RegionCode.DE));
+ assertTrue(phoneUtil.getRegionCodesForCountryCode(800).contains(RegionCode.UN001));
+ // Test with invalid country calling code.
+ assertTrue(phoneUtil.getRegionCodesForCountryCode(-1).isEmpty());
+ }
+
public void testGetCountryCodeForRegion() {
assertEquals(1, phoneUtil.getCountryCodeForRegion(RegionCode.US));
assertEquals(64, phoneUtil.getCountryCodeForRegion(RegionCode.NZ));
@@ -2165,10 +2220,13 @@
phoneUtil.formatOutOfCountryCallingNumber(US_NUMBER, RegionCode.AD));
}
- public void testUnknownCountryCallingCodeForValidation() {
- PhoneNumber invalidNumber = new PhoneNumber();
- invalidNumber.setCountryCode(0).setNationalNumber(1234L);
- assertFalse(phoneUtil.isValidNumber(invalidNumber));
+ public void testUnknownCountryCallingCode() {
+ assertFalse(phoneUtil.isValidNumber(UNKNOWN_COUNTRY_CODE_NO_RAW_INPUT));
+ // It's not very well defined as to what the E164 representation for a number with an invalid
+ // country calling code is, but just prefixing the country code and national number is about
+ // the best we can do.
+ assertEquals("+212345",
+ phoneUtil.format(UNKNOWN_COUNTRY_CODE_NO_RAW_INPUT, PhoneNumberFormat.E164));
}
public void testIsNumberMatchMatches() throws Exception {
diff --git a/java/test/com/android/i18n/phonenumbers/RegionCode.java b/java/test/com/android/i18n/phonenumbers/RegionCode.java
index fc92b18..89b6817 100644
--- a/java/test/com/android/i18n/phonenumbers/RegionCode.java
+++ b/java/test/com/android/i18n/phonenumbers/RegionCode.java
@@ -29,6 +29,7 @@
static final String AU = "AU";
static final String BR = "BR";
static final String BS = "BS";
+ static final String BY = "BY";
static final String CA = "CA";
static final String CN = "CN";
static final String CS = "CS";
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_800 b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_800
index e958189..6a88bff 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_800
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_800
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AR b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AR
index d576581..c65e3dc 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AR
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AR
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BY b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BY
new file mode 100644
index 0000000..467bebe
--- /dev/null
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BY
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX
index 5fc1c36..cab73c8 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_US b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_US
index f819275..d587fbd 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_US
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_US
Binary files differ